From d2a3f1f4ff1f644b3505bb92d5565d6215dc6db6 Mon Sep 17 00:00:00 2001 From: torlus Date: Fri, 7 Mar 2014 21:03:00 +0000 Subject: [PATCH] IP migration and cleanup - again --- FPGA_by_Gregory_Estrade/DSP/DSP.vhd | 79 + FPGA_by_Gregory_Estrade/DSP/dsp56k.zip | Bin 0 -> 39208 bytes .../DSP/src/adgen_stage.vhd | 216 + .../DSP/src/constants_pkg.vhd | 62 + .../DSP/src/decode_stage.vhd | 1221 + .../DSP/src/exec_stage_alu.vhd | 603 + .../DSP/src/exec_stage_bit_modify.vhd | 79 + .../DSP/src/exec_stage_branch.vhd | 117 + .../DSP/src/exec_stage_cc_flag_calc.vhd | 75 + .../DSP/src/exec_stage_cr_mod.vhd | 72 + .../DSP/src/exec_stage_loops.vhd | 200 + .../DSP/src/fetch_stage.vhd | 60 + .../DSP/src/mem_control.vhd | 1519 + .../DSP/src/memory_management.vhd | 206 + .../DSP/src/parameter_pkg.vhd | 10 + FPGA_by_Gregory_Estrade/DSP/src/pipeline.vhd | 968 + FPGA_by_Gregory_Estrade/DSP/src/reg_file.vhd | 679 + FPGA_by_Gregory_Estrade/DSP/src/types_pkg.vhd | 167 + .../FalconIO_SDCard_IDE_CF.vhd | 971 + .../FalconIO_SDCard_IDE_CF_pgk.vhd | 406 + .../WF5380/wf5380_control.vhd | 631 + .../WF5380/wf5380_pkg.vhd | 139 + .../WF5380/wf5380_registers.vhd | 265 + .../WF5380/wf5380_soc_top.vhd | 300 + .../WF5380/wf5380_top.vhd | 275 + .../WF_FDC1772_IP/wf1772ip_am_detector.vhd | 253 + .../WF_FDC1772_IP/wf1772ip_control.vhd | 1463 + .../WF_FDC1772_IP/wf1772ip_crc_logic.vhd | 162 + .../WF_FDC1772_IP/wf1772ip_digital_pll.vhd | 426 + .../WF_FDC1772_IP/wf1772ip_pkg.vhd | 232 + .../WF_FDC1772_IP/wf1772ip_registers.vhd | 264 + .../WF_FDC1772_IP/wf1772ip_top.vhd | 154 + .../WF_FDC1772_IP/wf1772ip_top_soc.vhd | 333 + .../WF_FDC1772_IP/wf1772ip_transceiver.vhd | 517 + .../WF_MFP68901_IP/wf68901ip_gpio.vhd | 141 + .../WF_MFP68901_IP/wf68901ip_interrupts.vhd | 391 + .../WF_MFP68901_IP/wf68901ip_pkg.vhd | 263 + .../WF_MFP68901_IP/wf68901ip_timers.vhd | 533 + .../WF_MFP68901_IP/wf68901ip_top.vhd | 213 + .../WF_MFP68901_IP/wf68901ip_top_soc.vhd | 309 + .../WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd | 191 + .../WF_MFP68901_IP/wf68901ip_usart_rx.vhd | 590 + .../WF_MFP68901_IP/wf68901ip_usart_top.vhd | 238 + .../WF_MFP68901_IP/wf68901ip_usart_tx.vhd | 387 + .../WF_SDC_IF/sd-card-interface.vhd | 228 + .../WF_SDC_IF/sd-card-interface_soc.vhd | 240 + .../WF_SND2149_IP/wf2149ip_pkg.vhd | 84 + .../WF_SND2149_IP/wf2149ip_top.vhd | 170 + .../WF_SND2149_IP/wf2149ip_top_soc.vhd | 229 + .../WF_SND2149_IP/wf2149ip_wave.vhd | 533 + .../WF_UART6850_IP/wf6850ip_ctrl_status.vhd | 244 + .../WF_UART6850_IP/wf6850ip_receive.vhd | 415 + .../WF_UART6850_IP/wf6850ip_top.vhd | 135 + .../WF_UART6850_IP/wf6850ip_top_soc.vhd | 255 + .../WF_UART6850_IP/wf6850ip_transmit.vhd | 339 + .../Interrupt_Handler/interrupt_handler.tdf | 478 + .../Interrupt_Handler/interrupt_handler.v | 3619 + FPGA_by_Gregory_Estrade/PLLJ_PLLSPE_INFO.txt | 20 + .../Video/BLITTER/BLITTER.vhd | 75 + FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf | 659 + FPGA_by_Gregory_Estrade/Video/DDR_CTR.v | 1097 + .../Video/VIDEO_MOD_MUX_CLUTCTR.tdf | 675 + .../Video/VIDEO_MOD_MUX_CLUTCTR.v | 1500 + FPGA_by_Gregory_Estrade/Video/Video.bdf | 10651 +++ FPGA_by_Gregory_Estrade/Video/video.v | 1313 + FPGA_by_Gregory_Estrade/Video/video.vhd | 1755 + FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.tdf | 662 + FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.v | 1095 + .../ahdl2v/VIDEO_MOD_MUX_CLUTCTR.tdf | 684 + .../ahdl2v/VIDEO_MOD_MUX_CLUTCTR.v | 1474 + .../ahdl2v/interrupt_handler.tdf | 478 + .../ahdl2v/interrupt_handler.v | 3578 + FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri.tdf | 78 + .../ahdl2v/lpm_bustri_BYT.inc | 24 + .../ahdl2v/lpm_bustri_BYT.tdf | 72 + .../ahdl2v/lpm_bustri_BYT.v | 78 + .../ahdl2v/lpm_bustri_LONG.inc | 24 + .../ahdl2v/lpm_bustri_LONG.tdf | 72 + .../ahdl2v/lpm_bustri_LONG.v | 16 + .../ahdl2v/lpm_bustri_WORD.inc | 24 + .../ahdl2v/lpm_bustri_WORD.tdf | 72 + .../ahdl2v/lpm_bustri_WORD.v | 99 + FPGA_by_Gregory_Estrade/ahdl2v/xport.exe | Bin 0 -> 566272 bytes .../altip/altddio_bidir0.ppf | 16 + .../altip/altddio_bidir0.qip | 4 + .../altip/altddio_bidir0.v | 139 + .../altip/altddio_out0.ppf | 11 + .../altip/altddio_out0.qip | 4 + FPGA_by_Gregory_Estrade/altip/altddio_out0.v | 107 + .../altip/altddio_out1.ppf | 11 + .../altip/altddio_out1.qip | 4 + FPGA_by_Gregory_Estrade/altip/altddio_out1.v | 107 + .../altip/altddio_out2.ppf | 11 + .../altip/altddio_out2.qip | 4 + FPGA_by_Gregory_Estrade/altip/altddio_out2.v | 107 + .../altip/altddio_out3.ppf | 11 + .../altip/altddio_out3.qip | 4 + FPGA_by_Gregory_Estrade/altip/altddio_out3.v | 107 + FPGA_by_Gregory_Estrade/altip/altdpram0.qip | 3 + FPGA_by_Gregory_Estrade/altip/altdpram0.v | 244 + FPGA_by_Gregory_Estrade/altip/altdpram1.qip | 3 + FPGA_by_Gregory_Estrade/altip/altdpram1.v | 244 + FPGA_by_Gregory_Estrade/altip/altdpram2.qip | 3 + FPGA_by_Gregory_Estrade/altip/altdpram2.v | 244 + FPGA_by_Gregory_Estrade/altip/altpll0.ppf | 13 + FPGA_by_Gregory_Estrade/altip/altpll0.qip | 4 + FPGA_by_Gregory_Estrade/altip/altpll0.v | 411 + FPGA_by_Gregory_Estrade/altip/altpll1.ppf | 12 + FPGA_by_Gregory_Estrade/altip/altpll1.qip | 4 + FPGA_by_Gregory_Estrade/altip/altpll1.v | 363 + FPGA_by_Gregory_Estrade/altip/altpll2.ppf | 13 + FPGA_by_Gregory_Estrade/altip/altpll2.qip | 4 + FPGA_by_Gregory_Estrade/altip/altpll2.v | 411 + FPGA_by_Gregory_Estrade/altip/altpll3.ppf | 12 + FPGA_by_Gregory_Estrade/altip/altpll3.qip | 4 + FPGA_by_Gregory_Estrade/altip/altpll3.v | 383 + FPGA_by_Gregory_Estrade/altip/altpll4.mif | 174 + FPGA_by_Gregory_Estrade/altip/altpll4.ppf | 17 + FPGA_by_Gregory_Estrade/altip/altpll4.qip | 4 + FPGA_by_Gregory_Estrade/altip/altpll4.v | 352 + .../altip/altpll_reconfig1.qip | 3 + .../altip/altpll_reconfig1.v | 1465 + FPGA_by_Gregory_Estrade/altip/dcfifo0.qip | 3 + FPGA_by_Gregory_Estrade/altip/dcfifo0.v | 177 + FPGA_by_Gregory_Estrade/altip/dcfifo1.qip | 3 + FPGA_by_Gregory_Estrade/altip/dcfifo1.v | 177 + .../altip/lpm_compare1.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_compare1.v | 108 + .../altip/lpm_constant0.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_constant0.v | 82 + .../altip/lpm_constant1.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_constant1.v | 82 + .../altip/lpm_constant2.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_constant2.v | 82 + .../altip/lpm_constant3.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_constant3.v | 82 + .../altip/lpm_constant4.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_constant4.v | 82 + .../altip/lpm_counter0.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_counter0.v | 111 + FPGA_by_Gregory_Estrade/altip/lpm_fifoDZ.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_fifoDZ.v | 149 + .../altip/lpm_fifo_dc0.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_fifo_dc0.v | 179 + FPGA_by_Gregory_Estrade/altip/lpm_mux0.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_mux0.v | 117 + FPGA_by_Gregory_Estrade/altip/lpm_mux1.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_mux1.v | 137 + FPGA_by_Gregory_Estrade/altip/lpm_mux2.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_mux2.v | 177 + FPGA_by_Gregory_Estrade/altip/lpm_mux3.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_mux3.v | 104 + FPGA_by_Gregory_Estrade/altip/lpm_mux4.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_mux4.v | 103 + FPGA_by_Gregory_Estrade/altip/lpm_mux5.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_mux5.v | 111 + FPGA_by_Gregory_Estrade/altip/lpm_mux6.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_mux6.v | 137 + FPGA_by_Gregory_Estrade/altip/lpm_muxDZ.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_muxDZ.v | 120 + FPGA_by_Gregory_Estrade/altip/lpm_muxDZ2.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_muxDZ2.v | 104 + FPGA_by_Gregory_Estrade/altip/lpm_muxVDM.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_muxVDM.v | 171 + .../altip/lpm_shiftreg0.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_shiftreg0.v | 120 + .../altip/lpm_shiftreg1.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_shiftreg1.v | 112 + .../altip/lpm_shiftreg2.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_shiftreg2.v | 112 + .../altip/lpm_shiftreg3.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_shiftreg3.v | 112 + .../altip/lpm_shiftreg4.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_shiftreg4.v | 112 + .../altip/lpm_shiftreg5.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_shiftreg5.v | 112 + .../altip/lpm_shiftreg6.qip | 3 + FPGA_by_Gregory_Estrade/altip/lpm_shiftreg6.v | 112 + .../altip_orig/altddio_bidir0.bsf | 99 + .../altip_orig/altddio_bidir0.inc | 30 + .../altip_orig/altddio_bidir0.ppf | 16 + .../altip_orig/altddio_bidir0.qip | 7 + .../altip_orig/altddio_bidir0.vhd | 172 + .../altip_orig/altddio_out0.bsf | 64 + .../altip_orig/altddio_out0.inc | 25 + .../altip_orig/altddio_out0.ppf | 11 + .../altip_orig/altddio_out0.qip | 5 + .../altip_orig/altddio_out0.vhd | 146 + .../altip_orig/altddio_out1.bsf | 64 + .../altip_orig/altddio_out1.inc | 25 + .../altip_orig/altddio_out1.ppf | 11 + .../altip_orig/altddio_out1.qip | 7 + .../altip_orig/altddio_out1.vhd | 146 + .../altip_orig/altddio_out2.bsf | 64 + .../altip_orig/altddio_out2.inc | 25 + .../altip_orig/altddio_out2.ppf | 11 + .../altip_orig/altddio_out2.qip | 7 + .../altip_orig/altddio_out2.vhd | 136 + .../altip_orig/altddio_out3.bsf | 64 + .../altip_orig/altddio_out3.inc | 25 + .../altip_orig/altddio_out3.ppf | 11 + .../altip_orig/altddio_out3.qip | 4 + .../altip_orig/altddio_out3.vhd | 146 + .../altip_orig/altdpram0.bsf | 173 + .../altip_orig/altdpram0.inc | 31 + .../altip_orig/altdpram0.qip | 6 + .../altip_orig/altdpram0.vhd | 273 + .../altip_orig/altdpram1.bsf | 173 + .../altip_orig/altdpram1.inc | 31 + .../altip_orig/altdpram1.qip | 6 + .../altip_orig/altdpram1.vhd | 273 + .../altip_orig/altdpram2.bsf | 173 + .../altip_orig/altdpram2.inc | 31 + .../altip_orig/altdpram2.qip | 6 + .../altip_orig/altdpram2.vhd | 273 + .../altip_orig/altpll0.bsf | 117 + .../altip_orig/altpll0.inc | 27 + .../altip_orig/altpll0.ppf | 13 + .../altip_orig/altpll0.qip | 7 + .../altip_orig/altpll0.vhd | 477 + .../altip_orig/altpll1.bsf | 100 + .../altip_orig/altpll1.inc | 26 + .../altip_orig/altpll1.ppf | 12 + .../altip_orig/altpll1.qip | 7 + .../altip_orig/altpll1.vhd | 423 + .../altip_orig/altpll2.bsf | 117 + .../altip_orig/altpll2.inc | 27 + .../altip_orig/altpll2.ppf | 13 + .../altip_orig/altpll2.qip | 7 + .../altip_orig/altpll2.vhd | 477 + .../altip_orig/altpll3.bsf | 105 + .../altip_orig/altpll3.inc | 26 + .../altip_orig/altpll3.ppf | 12 + .../altip_orig/altpll3.qip | 7 + .../altip_orig/altpll3.vhd | 445 + .../altip_orig/altpll4.bsf | 125 + .../altip_orig/altpll4.inc | 31 + .../altip_orig/altpll4.mif | 174 + .../altip_orig/altpll4.ppf | 17 + .../altip_orig/altpll4.qip | 7 + .../altip_orig/altpll4.tdf | 298 + .../altip_orig/altpll_reconfig0.bsf | 162 + .../altip_orig/altpll_reconfig0.qip | 5 + .../altip_orig/altpll_reconfig1.bsf | 162 + .../altip_orig/altpll_reconfig1.inc | 39 + .../altip_orig/altpll_reconfig1.qip | 6 + .../altip_orig/altpll_reconfig1.tdf | 144 + .../altpll_reconfig1_pllrcfg_bju.tdf | 583 + .../altpll_reconfig1_pllrcfg_t4q.tdf | 582 + .../altip_orig/dcfifo0.bsf | 95 + .../altip_orig/dcfifo0.cmp | 28 + .../altip_orig/dcfifo0.qip | 5 + .../altip_orig/dcfifo0.vhd | 202 + .../altip_orig/dcfifo1.bsf | 95 + .../altip_orig/dcfifo1.cmp | 28 + .../altip_orig/dcfifo1.qip | 5 + .../altip_orig/dcfifo1.vhd | 202 + .../altip_orig/lpm_bustri0.bsf | 56 + .../altip_orig/lpm_bustri0.inc | 24 + .../altip_orig/lpm_bustri0.qip | 6 + .../altip_orig/lpm_bustri0.vhd | 107 + .../altip_orig/lpm_bustri1.bsf | 56 + .../altip_orig/lpm_bustri1.qip | 5 + .../altip_orig/lpm_bustri1.vhd | 107 + .../altip_orig/lpm_bustri2.bsf | 56 + .../altip_orig/lpm_bustri2.qip | 5 + .../altip_orig/lpm_bustri2.vhd | 107 + .../altip_orig/lpm_bustri3.bsf | 56 + .../altip_orig/lpm_bustri3.qip | 5 + .../altip_orig/lpm_bustri3.vhd | 107 + .../altip_orig/lpm_bustri4.bsf | 56 + .../altip_orig/lpm_bustri4.qip | 5 + .../altip_orig/lpm_bustri4.vhd | 107 + .../altip_orig/lpm_bustri5.bsf | 56 + .../altip_orig/lpm_bustri5.inc | 24 + .../altip_orig/lpm_bustri5.qip | 6 + .../altip_orig/lpm_bustri5.vhd | 107 + .../altip_orig/lpm_bustri6.bsf | 56 + .../altip_orig/lpm_bustri6.qip | 5 + .../altip_orig/lpm_bustri6.vhd | 107 + .../altip_orig/lpm_bustri7.bsf | 56 + .../altip_orig/lpm_bustri7.qip | 5 + .../altip_orig/lpm_bustri7.vhd | 107 + .../altip_orig/lpm_bustri_BYT.bsf | 56 + .../altip_orig/lpm_bustri_BYT.inc | 24 + .../altip_orig/lpm_bustri_BYT.qip | 6 + .../altip_orig/lpm_bustri_BYT.vhd | 107 + .../altip_orig/lpm_bustri_LONG.bsf | 56 + .../altip_orig/lpm_bustri_LONG.inc | 24 + .../altip_orig/lpm_bustri_LONG.qip | 6 + .../altip_orig/lpm_bustri_LONG.tdf | 72 + .../altip_orig/lpm_bustri_LONG.vhd | 107 + .../altip_orig/lpm_bustri_WORD.bsf | 56 + .../altip_orig/lpm_bustri_WORD.inc | 24 + .../altip_orig/lpm_bustri_WORD.qip | 6 + .../altip_orig/lpm_bustri_WORD.vhd | 107 + .../altip_orig/lpm_compare1.bsf | 54 + .../altip_orig/lpm_compare1.inc | 24 + .../altip_orig/lpm_compare1.qip | 6 + .../altip_orig/lpm_compare1.vhd | 127 + .../altip_orig/lpm_constant0.bsf | 42 + .../altip_orig/lpm_constant0.qip | 5 + .../altip_orig/lpm_constant0.vhd | 108 + .../altip_orig/lpm_constant1.bsf | 42 + .../altip_orig/lpm_constant1.inc | 23 + .../altip_orig/lpm_constant1.qip | 6 + .../altip_orig/lpm_constant1.vhd | 108 + .../altip_orig/lpm_constant2.bsf | 42 + .../altip_orig/lpm_constant2.qip | 5 + .../altip_orig/lpm_constant2.vhd | 108 + .../altip_orig/lpm_constant3.bsf | 42 + .../altip_orig/lpm_constant3.qip | 5 + .../altip_orig/lpm_constant3.vhd | 108 + .../altip_orig/lpm_constant4.bsf | 42 + .../altip_orig/lpm_constant4.inc | 23 + .../altip_orig/lpm_constant4.qip | 6 + .../altip_orig/lpm_constant4.vhd | 108 + .../altip_orig/lpm_counter0.bsf | 49 + .../altip_orig/lpm_counter0.qip | 5 + .../altip_orig/lpm_counter0.vhd | 126 + .../altip_orig/lpm_ff0.bsf | 63 + .../altip_orig/lpm_ff0.qip | 5 + .../altip_orig/lpm_ff0.vhd | 127 + .../altip_orig/lpm_ff1.bsf | 56 + .../altip_orig/lpm_ff1.qip | 5 + .../altip_orig/lpm_ff1.vhd | 122 + .../altip_orig/lpm_ff2.bsf | 56 + .../altip_orig/lpm_ff2.qip | 5 + .../altip_orig/lpm_ff2.vhd | 122 + .../altip_orig/lpm_ff3.bsf | 56 + .../altip_orig/lpm_ff3.qip | 5 + .../altip_orig/lpm_ff3.vhd | 122 + .../altip_orig/lpm_ff4.bsf | 56 + .../altip_orig/lpm_ff4.inc | 24 + .../altip_orig/lpm_ff4.qip | 6 + .../altip_orig/lpm_ff4.vhd | 122 + .../altip_orig/lpm_ff5.bsf | 56 + .../altip_orig/lpm_ff5.inc | 24 + .../altip_orig/lpm_ff5.qip | 6 + .../altip_orig/lpm_ff5.vhd | 122 + .../altip_orig/lpm_ff6.bsf | 63 + .../altip_orig/lpm_ff6.inc | 25 + .../altip_orig/lpm_ff6.qip | 6 + .../altip_orig/lpm_ff6.vhd | 127 + .../altip_orig/lpm_fifoDZ.bsf | 79 + .../altip_orig/lpm_fifoDZ.qip | 5 + .../altip_orig/lpm_fifoDZ.vhd | 178 + .../altip_orig/lpm_fifo_dc0.bsf | 102 + .../altip_orig/lpm_fifo_dc0.inc | 30 + .../altip_orig/lpm_fifo_dc0.qip | 6 + .../altip_orig/lpm_fifo_dc0.vhd | 203 + .../altip_orig/lpm_latch0.bsf | 53 + .../altip_orig/lpm_latch0.qip | 5 + .../altip_orig/lpm_latch0.vhd | 110 + .../altip_orig/lpm_latch1.bsf | 53 + .../altip_orig/lpm_latch1.qip | 5 + .../altip_orig/lpm_latch1.vhd | 110 + .../altip_orig/lpm_mux0.bsf | 83 + .../altip_orig/lpm_mux0.inc | 28 + .../altip_orig/lpm_mux0.qip | 6 + .../altip_orig/lpm_mux0.vhd | 251 + .../altip_orig/lpm_mux1.bsf | 111 + .../altip_orig/lpm_mux1.inc | 32 + .../altip_orig/lpm_mux1.qip | 6 + .../altip_orig/lpm_mux1.vhd | 271 + .../altip_orig/lpm_mux2.bsf | 167 + .../altip_orig/lpm_mux2.inc | 40 + .../altip_orig/lpm_mux2.qip | 6 + .../altip_orig/lpm_mux2.vhd | 311 + .../altip_orig/lpm_mux3.bsf | 60 + .../altip_orig/lpm_mux3.qip | 5 + .../altip_orig/lpm_mux3.vhd | 115 + .../altip_orig/lpm_mux4.bsf | 60 + .../altip_orig/lpm_mux4.qip | 5 + .../altip_orig/lpm_mux4.vhd | 125 + .../altip_orig/lpm_mux5.bsf | 74 + .../altip_orig/lpm_mux5.inc | 27 + .../altip_orig/lpm_mux5.qip | 6 + .../altip_orig/lpm_mux5.vhd | 373 + .../altip_orig/lpm_mux6.bsf | 111 + .../altip_orig/lpm_mux6.inc | 32 + .../altip_orig/lpm_mux6.qip | 6 + .../altip_orig/lpm_mux6.vhd | 335 + .../altip_orig/lpm_muxDZ.bsf | 76 + .../altip_orig/lpm_muxDZ.qip | 5 + .../altip_orig/lpm_muxDZ.vhd | 377 + .../altip_orig/lpm_muxDZ2.bsf | 60 + .../altip_orig/lpm_muxDZ2.qip | 5 + .../altip_orig/lpm_muxDZ2.vhd | 115 + .../altip_orig/lpm_muxVDM.bsf | 158 + .../altip_orig/lpm_muxVDM.qip | 5 + .../altip_orig/lpm_muxVDM.vhd | 2225 + .../altip_orig/lpm_shiftreg0.bsf | 70 + .../altip_orig/lpm_shiftreg0.inc | 26 + .../altip_orig/lpm_shiftreg0.qip | 6 + .../altip_orig/lpm_shiftreg0.vhd | 135 + .../altip_orig/lpm_shiftreg1.bsf | 56 + .../altip_orig/lpm_shiftreg1.qip | 5 + .../altip_orig/lpm_shiftreg1.vhd | 125 + .../altip_orig/lpm_shiftreg2.bsf | 56 + .../altip_orig/lpm_shiftreg2.qip | 5 + .../altip_orig/lpm_shiftreg2.vhd | 125 + .../altip_orig/lpm_shiftreg3.bsf | 56 + .../altip_orig/lpm_shiftreg3.inc | 24 + .../altip_orig/lpm_shiftreg3.qip | 6 + .../altip_orig/lpm_shiftreg3.vhd | 125 + .../altip_orig/lpm_shiftreg4.bsf | 56 + .../altip_orig/lpm_shiftreg4.inc | 24 + .../altip_orig/lpm_shiftreg4.qip | 6 + .../altip_orig/lpm_shiftreg4.vhd | 125 + .../altip_orig/lpm_shiftreg5.bsf | 56 + .../altip_orig/lpm_shiftreg5.inc | 24 + .../altip_orig/lpm_shiftreg5.qip | 6 + .../altip_orig/lpm_shiftreg5.vhd | 125 + .../altip_orig/lpm_shiftreg6.bsf | 56 + .../altip_orig/lpm_shiftreg6.inc | 24 + .../altip_orig/lpm_shiftreg6.qip | 6 + .../altip_orig/lpm_shiftreg6.vhd | 125 + .../altip_orig/root/altddio_out0.bsf | 64 + .../altip_orig/root/altddio_out0.inc | 25 + .../altip_orig/root/altddio_out0.ppf | 11 + .../altip_orig/root/altddio_out0.qip | 7 + .../altip_orig/root/altddio_out0.vhd | 136 + FPGA_by_Gregory_Estrade/altpll4.mif | 174 + FPGA_by_Gregory_Estrade/firebee1.bdf | 5837 ++ FPGA_by_Gregory_Estrade/firebee1.done | 1 + FPGA_by_Gregory_Estrade/firebee1.qpf | 30 + FPGA_by_Gregory_Estrade/firebee1.qsf | 826 + FPGA_by_Gregory_Estrade/firebee1.qws | Bin 0 -> 613 bytes FPGA_by_Gregory_Estrade/firebee1.rbf | Bin 0 -> 1191788 bytes FPGA_by_Gregory_Estrade/firebee1.sdc | 149 + FPGA_by_Gregory_Estrade/firebee1.sof | Bin 0 -> 1171602 bytes FPGA_by_Gregory_Estrade/firebee1.v | 707 + FPGA_by_Gregory_Estrade/firebee1.vhd | 861 + .../firebee1_assignment_defaults.qdf | 687 + FPGA_by_Gregory_Estrade/fpga.s19 | 74489 ++++++++++++++++ FPGA_by_Gregory_Estrade/lpm_ffs.v | 145 + FPGA_by_Gregory_Estrade/mkS19.bat | 2 + FPGA_by_Gregory_Estrade/mux41.v | 74 + FPGA_by_Gregory_Estrade/mux41.vhd | 90 + FPGA_by_Gregory_Estrade/objcopy.exe | Bin 0 -> 719360 bytes 441 files changed, 163358 insertions(+) create mode 100644 FPGA_by_Gregory_Estrade/DSP/DSP.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/dsp56k.zip create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/adgen_stage.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/constants_pkg.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/decode_stage.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_alu.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_bit_modify.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_branch.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cc_flag_calc.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cr_mod.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_loops.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/fetch_stage.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/mem_control.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/memory_management.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/parameter_pkg.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/pipeline.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/reg_file.vhd create mode 100644 FPGA_by_Gregory_Estrade/DSP/src/types_pkg.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd create mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd create mode 100644 FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.tdf create mode 100644 FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.v create mode 100644 FPGA_by_Gregory_Estrade/PLLJ_PLLSPE_INFO.txt create mode 100644 FPGA_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd create mode 100644 FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf create mode 100644 FPGA_by_Gregory_Estrade/Video/DDR_CTR.v create mode 100644 FPGA_by_Gregory_Estrade/Video/VIDEO_MOD_MUX_CLUTCTR.tdf create mode 100644 FPGA_by_Gregory_Estrade/Video/VIDEO_MOD_MUX_CLUTCTR.v create mode 100644 FPGA_by_Gregory_Estrade/Video/Video.bdf create mode 100644 FPGA_by_Gregory_Estrade/Video/video.v create mode 100644 FPGA_by_Gregory_Estrade/Video/video.vhd create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.tdf create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.v create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/VIDEO_MOD_MUX_CLUTCTR.tdf create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/VIDEO_MOD_MUX_CLUTCTR.v create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.tdf create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.v create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri.tdf create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.inc create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.tdf create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.v create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.inc create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.tdf create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.v create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.inc create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.tdf create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.v create mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/xport.exe create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_bidir0.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_bidir0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_bidir0.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out0.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out0.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out1.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out1.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out2.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out2.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out3.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altddio_out3.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altdpram0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altdpram0.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altdpram1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altdpram1.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altdpram2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altdpram2.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll0.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll0.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll1.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll1.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll2.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll2.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll3.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll3.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll4.mif create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll4.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll4.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll4.v create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll_reconfig1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/altpll_reconfig1.v create mode 100644 FPGA_by_Gregory_Estrade/altip/dcfifo0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/dcfifo0.v create mode 100644 FPGA_by_Gregory_Estrade/altip/dcfifo1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/dcfifo1.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_compare1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_compare1.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_constant0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_constant0.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_constant1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_constant1.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_constant2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_constant2.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_constant3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_constant3.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_constant4.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_constant4.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_counter0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_counter0.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_fifoDZ.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_fifoDZ.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_fifo_dc0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_fifo_dc0.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux0.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux1.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux2.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux3.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux4.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux4.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux5.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux5.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux6.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_mux6.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_muxDZ.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_muxDZ.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_muxDZ2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_muxDZ2.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_muxVDM.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_muxVDM.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg0.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg1.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg2.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg3.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg4.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg4.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg5.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg5.v create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg6.qip create mode 100644 FPGA_by_Gregory_Estrade/altip/lpm_shiftreg6.v create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram0.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram1.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram1.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram2.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram2.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altdpram2.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll0.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll0.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll1.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll1.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll1.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll2.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll2.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll2.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll2.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll3.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll3.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll3.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll3.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll4.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll4.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll4.mif create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll4.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll4.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll4.tdf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.tdf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1_pllrcfg_bju.tdf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1_pllrcfg_t4q.tdf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.cmp create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.cmp create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.tdf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.vhd create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.bsf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.inc create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.ppf create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.qip create mode 100644 FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.vhd create mode 100644 FPGA_by_Gregory_Estrade/altpll4.mif create mode 100644 FPGA_by_Gregory_Estrade/firebee1.bdf create mode 100644 FPGA_by_Gregory_Estrade/firebee1.done create mode 100644 FPGA_by_Gregory_Estrade/firebee1.qpf create mode 100644 FPGA_by_Gregory_Estrade/firebee1.qsf create mode 100644 FPGA_by_Gregory_Estrade/firebee1.qws create mode 100644 FPGA_by_Gregory_Estrade/firebee1.rbf create mode 100644 FPGA_by_Gregory_Estrade/firebee1.sdc create mode 100644 FPGA_by_Gregory_Estrade/firebee1.sof create mode 100644 FPGA_by_Gregory_Estrade/firebee1.v create mode 100644 FPGA_by_Gregory_Estrade/firebee1.vhd create mode 100644 FPGA_by_Gregory_Estrade/firebee1_assignment_defaults.qdf create mode 100644 FPGA_by_Gregory_Estrade/fpga.s19 create mode 100644 FPGA_by_Gregory_Estrade/lpm_ffs.v create mode 100644 FPGA_by_Gregory_Estrade/mkS19.bat create mode 100644 FPGA_by_Gregory_Estrade/mux41.v create mode 100644 FPGA_by_Gregory_Estrade/mux41.vhd create mode 100644 FPGA_by_Gregory_Estrade/objcopy.exe diff --git a/FPGA_by_Gregory_Estrade/DSP/DSP.vhd b/FPGA_by_Gregory_Estrade/DSP/DSP.vhd new file mode 100644 index 0000000..26f8e2e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/DSP.vhd @@ -0,0 +1,79 @@ +-- WARNING: Do NOT edit the input and output ports in this file in a text +-- editor if you plan to continue editing the block that represents it in +-- the Block Editor! File corruption is VERY likely to occur. + +-- Copyright (C) 1991-2008 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +-- Generated by Quartus II Version 8.1 (Build Build 163 10/28/2008) +-- Created on Tue Sep 08 16:24:57 2009 + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + + +-- Entity Declaration + +ENTITY DSP IS + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + PORT + ( + CLK33M : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + nFB_WR : IN STD_LOGIC; + nFB_CS1 : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + nFB_BURST : IN STD_LOGIC; + FB_ADR : IN STD_LOGIC_VECTOR(31 downto 0); + nRSTO : IN STD_LOGIC; + nFB_CS3 : IN STD_LOGIC; + nSRCS : INOUT STD_LOGIC; + nSRBLE : OUT STD_LOGIC; + nSRBHE : OUT STD_LOGIC; + nSRWE : OUT STD_LOGIC; + nSROE : OUT STD_LOGIC; + DSP_INT : OUT STD_LOGIC; + DSP_TA : OUT STD_LOGIC; + FB_AD : INOUT STD_LOGIC_VECTOR(31 downto 0); + IO : INOUT STD_LOGIC_VECTOR(17 downto 0); + SRD : INOUT STD_LOGIC_VECTOR(15 downto 0) + ); + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + +END DSP; + + +-- Architecture Body + +ARCHITECTURE DSP_architecture OF DSP IS + + +BEGIN + nSRCS <= '0' when nFB_CS2 = '0' and FB_ADR(27 downto 24) = x"4" else '1'; --nFB_CS3; + nSRBHE <= '0' when FB_ADR(0 downto 0) = "0" else '1'; + nSRBLE <= '1' when FB_ADR(0 downto 0) = "0" and FB_SIZE1 = '0' and FB_SIZE0 = '1' else '0'; + nSRWE <= '0' when nFB_WR = '0' and nSRCS = '0' and MAIN_CLK = '0' else '1'; + nSROE <= '0' when nFB_OE = '0' and nSRCS = '0' else '1'; + DSP_INT <= '0'; + DSP_TA <= '0'; + IO(17 downto 0) <= FB_ADR(18 downto 1); + SRD(15 downto 0) <= FB_AD(31 downto 16) when nFB_WR = '0' and nSRCS = '0' else "ZZZZZZZZZZZZZZZZ"; + FB_AD(31 downto 16) <= SRD(15 downto 0) when nFB_OE = '0' and nSRCS = '0' else "ZZZZZZZZZZZZZZZZ"; + + +END DSP_architecture; diff --git a/FPGA_by_Gregory_Estrade/DSP/dsp56k.zip b/FPGA_by_Gregory_Estrade/DSP/dsp56k.zip new file mode 100644 index 0000000000000000000000000000000000000000..6522299f5635ba5560150e498fbbdf0fde8328f5 GIT binary patch literal 39208 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%0DHs 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 jK{+bOV*50vsqm6_UbnR=_}C~*X)JJ% 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 literal 0 HcmV?d00001 diff --git a/FPGA_by_Gregory_Estrade/DSP/src/adgen_stage.vhd b/FPGA_by_Gregory_Estrade/DSP/src/adgen_stage.vhd new file mode 100644 index 0000000..1ff7e59 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/adgen_stage.vhd @@ -0,0 +1,216 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity adgen_stage is port( + activate_adgen : in std_logic; + activate_x_mem : in std_logic; + activate_y_mem : in std_logic; + activate_l_mem : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + optional_ea_word : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + adgen_mode_a : in adgen_mode_type; + adgen_mode_b : in adgen_mode_type; + address_out_x : out unsigned(BW_ADDRESS-1 downto 0); + address_out_y : out unsigned(BW_ADDRESS-1 downto 0); + wr_R_port_A_valid : out std_logic; + wr_R_port_A : out addr_wr_port_type; + wr_R_port_B_valid : out std_logic; + wr_R_port_B : out addr_wr_port_type +); +end entity; + + +architecture rtl of adgen_stage is + + signal address_out_x_int : unsigned(BW_ADDRESS-1 downto 0); + + +begin + + address_out_x <= address_out_x_int; + + address_generator_X: process(activate_adgen, instr_word, register_file, adgen_mode_a) is + variable r_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable n_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable m_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable op1 : unsigned(BW_ADDRESS-1 downto 0); + variable op2 : unsigned(BW_ADDRESS-1 downto 0); + variable addr_mod : unsigned(BW_ADDRESS-1 downto 0); + variable new_r_reg : unsigned(BW_ADDRESS-1 downto 0); + variable new_r_reg_interm : unsigned(BW_ADDRESS-1 downto 0); + variable modulo_bitmask : std_logic_vector(BW_ADDRESS-1 downto 0); + variable bit_set : std_logic; + begin + r_reg_local := register_file.addr_r(to_integer(unsigned(instr_word(10 downto 8)))); + n_reg_local := register_file.addr_n(to_integer(unsigned(instr_word(10 downto 8)))); + m_reg_local := register_file.addr_m(to_integer(unsigned(instr_word(10 downto 8)))); + + -- select the operands for the calculation + case adgen_mode_a is + -- (Rn) - Nn + when POST_MIN_N => addr_mod := unsigned(- signed(n_reg_local)); + -- (Rn) + Nn + when POST_PLUS_N => addr_mod := n_reg_local; + -- (Rn)- + when POST_MIN_1 => addr_mod := (others => '1'); -- -1 + -- (Rn)+ + when POST_PLUS_1 => addr_mod := to_unsigned(1, BW_ADDRESS); + -- (Rn) + when NOP => addr_mod := (others => '0'); + -- (Rn + Nn) + when INDEXED_N => addr_mod := n_reg_local; + -- -(Rn) + when PRE_MIN_1 => addr_mod := (others => '1'); -- - 1 + -- absolute address (appended to instruction word) + when ABSOLUTE => addr_mod := (others => '0'); + when IMMEDIATE => addr_mod := (others => '0'); + end case; + + op1 := r_reg_local; + op2 := addr_mod; + -- linear addressing + if m_reg_local = 2**BW_ADDRESS-1 then + op1 := r_reg_local; + op2 := addr_mod; + -- bit reverse operation + elsif m_reg_local = 0 then + -- reverse the input to the adder bit wise + -- so we just need to use a single adder + for i in 0 to BW_ADDRESS-1 loop + op1(BW_ADDRESS - 1 - i) := r_reg_local(i); + op2(BW_ADDRESS - 1 - i) := addr_mod(i); + end loop; + -- modulo arithmetic + else + bit_set := '0'; + for i in BW_ADDRESS-1 downto 0 loop + if m_reg_local(i) = '1' then + bit_set := '1'; + end if; + if bit_set = '1' then + modulo_bitmask(i) := '0'; + else + modulo_bitmask(i) := '1'; + end if; + end loop; + end if; + + new_r_reg_interm := op1 + op2; + + new_r_reg := new_r_reg_interm; + -- linear addressing + if m_reg_local = 2**BW_ADDRESS-1 then + new_r_reg := new_r_reg_interm; + -- bit reverse operation + elsif m_reg_local = 0 then + for i in 0 to BW_ADDRESS-1 loop + new_r_reg(BW_ADDRESS - 1 - i) := new_r_reg_interm(i); + end loop; + else + + end if; + + -- store the updated register in the global register file + -- do not store when we do nothing or there is nothing to update + -- LUA instructions DO NOT UPDATE the source register!! + if (adgen_mode_a = NOP or adgen_mode_a = ABSOLUTE or adgen_mode_a = IMMEDIATE or instr_array = INSTR_LUA) then + wr_R_port_A_valid <= '0'; + else + wr_R_port_A_valid <= '1'; + end if; + wr_R_port_A.reg_number <= unsigned(instr_word(10 downto 8)); + wr_R_port_A.reg_value <= new_r_reg; + + -- select the output of the AGU + case adgen_mode_a is + -- (Rn) - Nn + when POST_MIN_N => address_out_x_int <= r_reg_local; + -- (Rn) + Nn + when POST_PLUS_N => address_out_x_int <= r_reg_local; + -- (Rn)- + when POST_MIN_1 => address_out_x_int <= r_reg_local; + -- (Rn)+ + when POST_PLUS_1 => address_out_x_int <= r_reg_local; + -- (Rn) + when NOP => address_out_x_int <= r_reg_local; + -- (Rn + Nn) + when INDEXED_N => address_out_x_int <= new_r_reg; + -- -(Rn) + when PRE_MIN_1 => address_out_x_int <= new_r_reg; + -- absolute address (appended to instruction word) + when ABSOLUTE => address_out_x_int <= unsigned(optional_ea_word(BW_ADDRESS-1 downto 0)); + when IMMEDIATE => address_out_x_int <= r_reg_local; -- Done externally, value never used + end case; + -- LUA instructions only use the updated address! + if instr_array = INSTR_LUA then + address_out_x_int <= new_r_reg; + end if; + + end process address_generator_X; + + address_generator_Y: process(activate_adgen, activate_x_mem, activate_y_mem, activate_l_mem, instr_word, + register_file, adgen_mode_b, address_out_x_int) is + variable r_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable n_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable m_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable op2 : unsigned(BW_ADDRESS-1 downto 0); + variable new_r_reg : unsigned(BW_ADDRESS-1 downto 0); + begin + r_reg_local := register_file.addr_r(to_integer(unsigned((not instr_word(10)) & instr_word(14 downto 13)))); + n_reg_local := register_file.addr_n(to_integer(unsigned((not instr_word(10)) & instr_word(14 downto 13)))); + m_reg_local := register_file.addr_m(to_integer(unsigned((not instr_word(10)) & instr_word(14 downto 13)))); + + -- select the operands for the calculation + case adgen_mode_b is + -- (Rn) + Nn + when POST_PLUS_N => op2 := n_reg_local; + -- (Rn)- + when POST_MIN_1 => op2 := (others => '1'); -- -1 + -- (Rn)+ + when POST_PLUS_1 => op2 := to_unsigned(1, BW_ADDRESS); + -- (Rn) + when others => op2 := (others => '0'); + end case; + + new_r_reg := r_reg_local + op2; + -- TODO: USE modifier register! + + -- store the updated register in the global register file + -- do not store when we do nothing or there is nothing to update + if adgen_mode_b = NOP then + wr_R_port_B_valid <= '0'; + else + wr_R_port_B_valid <= '1'; + end if; + wr_R_port_B.reg_number <= unsigned((not instr_word(10)) & instr_word(14 downto 13)); + wr_R_port_B.reg_value <= new_r_reg; + + -- the address for the y memory is calculated in the first AGU if the x memory is not accessed! + -- so use the other output as address output for the y memory! + -- Furthermore, use the same address for L memory accesses (X and Y memory access the same address!) + if (activate_y_mem = '1' and activate_x_mem = '0') or activate_l_mem = '1' then + address_out_y <= address_out_x_int; + -- in any other case use the locally computed value + else + -- select the output of the AGU + case adgen_mode_b is + -- (Rn) + Nn + when POST_PLUS_N => address_out_y <= r_reg_local; + -- (Rn)- + when POST_MIN_1 => address_out_y <= r_reg_local; + -- (Rn)+ + when POST_PLUS_1 => address_out_y <= r_reg_local; + -- (Rn) + when others => address_out_y <= r_reg_local; + end case; + end if; + end process address_generator_Y; + +end architecture; diff --git a/FPGA_by_Gregory_Estrade/DSP/src/constants_pkg.vhd b/FPGA_by_Gregory_Estrade/DSP/src/constants_pkg.vhd new file mode 100644 index 0000000..4b8122d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/constants_pkg.vhd @@ -0,0 +1,62 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; + + +package constants_pkg is + + ------------------------- + -- Flags in CCR register + ------------------------- + constant C_FLAG : natural := 0; + constant V_FLAG : natural := 1; + constant Z_FLAG : natural := 2; + constant N_FLAG : natural := 3; + constant U_FLAG : natural := 4; + constant E_FLAG : natural := 5; + constant L_FLAG : natural := 6; + constant S_FLAG : natural := 7; + + ------------------- + -- Pipeline stages + ------------------- + constant ST_FETCH : natural := 0; + constant ST_FETCH2 : natural := 1; + constant ST_DECODE : natural := 2; + constant ST_ADGEN : natural := 3; + constant ST_EXEC : natural := 4; + + ---------------------- + -- Activation signals + ---------------------- + constant ACT_ADGEN : natural := 0; -- Run the address generator + constant ACT_ALU : natural := 1; -- Activation of ALU results in modification of the status register + constant ACT_EXEC_BRA : natural := 2; -- Branch (in execute stage) + constant ACT_EXEC_CR_MOD : natural := 3; -- Control Register Modification (in execute stage) + constant ACT_EXEC_LOOP : natural := 4; -- Loop instruction (REP, DO) + constant ACT_X_MEM_RD : natural := 5; -- Init read from X memory + constant ACT_Y_MEM_RD : natural := 6; -- Init read from Y memory + constant ACT_P_MEM_RD : natural := 7; -- Init read from P memory + constant ACT_X_MEM_WR : natural := 8; -- Init write to X memory + constant ACT_Y_MEM_WR : natural := 9; -- Init write to Y memory + constant ACT_P_MEM_WR : natural := 10; -- Init write to P memory + constant ACT_REG_RD : natural := 11; -- Read from register (6 bit addressing) + constant ACT_REG_WR : natural := 12; -- Write to register (6 bit addressing) + constant ACT_IMM_8BIT : natural := 13; -- 8 bit immediate operand (in instruction word) + constant ACT_IMM_12BIT : natural := 14; -- 12 bit immediate operand (in instruction word) + constant ACT_IMM_LONG : natural := 15; -- 24 bit immediate operant (in optional instruction word) + constant ACT_X_BUS_RD : natural := 16; -- Read data via X-bus (from x0,x1,a,b) + constant ACT_X_BUS_WR : natural := 17; -- Write data via X-bus (to x0,x1,a,b) + constant ACT_Y_BUS_RD : natural := 18; -- Read data via Y-bus (from y0,y1,a,b) + constant ACT_Y_BUS_WR : natural := 19; -- Write data via Y-bus (to y0,y1,a,b) + constant ACT_L_BUS_RD : natural := 20; -- Read data via L-bus (from a10, b10,x,y,a,b,ab,ba) + constant ACT_L_BUS_WR : natural := 21; -- Write data via L-bus (to a10, b10,x,y,a,b,ab,ba) + constant ACT_BIT_MOD_WR : natural := 22; -- Bit modify write (to set for BSET, BCLR, BCHG) + constant ACT_REG_WR_CC : natural := 23; -- Write to register file conditionally (Tcc) + constant ACT_ALU_WR_CC : natural := 24; -- Write ALU result conditionally (Tcc) + constant ACT_NORM : natural := 25; -- NORM instruction needs special handling + +end package constants_pkg; diff --git a/FPGA_by_Gregory_Estrade/DSP/src/decode_stage.vhd b/FPGA_by_Gregory_Estrade/DSP/src/decode_stage.vhd new file mode 100644 index 0000000..0c62149 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/decode_stage.vhd @@ -0,0 +1,1221 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity decode_stage is port( + activate_dec : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + dble_word_instr : out std_logic; + instr_array : out instructions_type; + act_array : out std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + reg_wr_addr : out std_logic_vector(5 downto 0); + reg_rd_addr : out std_logic_vector(5 downto 0); + x_bus_rd_addr : out std_logic_vector(1 downto 0); + x_bus_wr_addr : out std_logic_vector(1 downto 0); + y_bus_rd_addr : out std_logic_vector(1 downto 0); + y_bus_wr_addr : out std_logic_vector(1 downto 0); + l_bus_addr : out std_logic_vector(2 downto 0); + adgen_mode_a : out adgen_mode_type; + adgen_mode_b : out adgen_mode_type; + alu_ctrl : out alu_ctrl_type +); +end entity; + + +architecture rtl of decode_stage is + + signal instr_array_int : instructions_type; +-- signal activate_pm_int : std_logic; + type adgen_bittype_type is (NOP, SINGLE_X, SINGLE_X_SHORT, DOUBLE_X_Y); + -- SINGLE_X : MMMRRR + -- SINGLE_X_SHORT : MMRRR + -- DOUBLE_X_Y : mmrrMMRRR + signal adgen_bittype : adgen_bittype_type; + + signal ea_extension_available : std_logic; + + signal alu_tcc_decoded : std_logic; + signal alu_div_decoded : std_logic; + signal alu_norm_decoded : std_logic; + +begin + + + -- output the decoded instruction + instr_array <= instr_array_int; + + -- calculate whether this is a double word instruction + dble_word_instr <= '1' when ea_extension_available = '1' or + instr_array_int = INSTR_DO or + instr_array_int = INSTR_JCLR or + instr_array_int = INSTR_JSCLR or + instr_array_int = INSTR_JSET or + instr_array_int = INSTR_JSSET else + '0'; + + alu_instruction_decoder: process(instr_word, activate_dec, alu_tcc_decoded, + alu_div_decoded, alu_norm_decoded) is + variable instr_word_var : std_logic_vector(23 downto 0); + begin + if activate_dec = '1' then + instr_word_var := instr_word; + else + instr_word_var := (others => '0'); + end if; + + alu_ctrl.mul_op1 <= (others => '0'); + alu_ctrl.mul_op2 <= (others => '0'); + alu_ctrl.rotate <= '0'; + alu_ctrl.div_instr <= '0'; + alu_ctrl.norm_instr <= '0'; + alu_ctrl.shift_src <= '0'; + alu_ctrl.shift_src_sign <= (others => '0'); + alu_ctrl.shift_mode <= ZEROS; + alu_ctrl.add_src_stage_1 <= (others => '0'); + alu_ctrl.add_src_stage_2 <= (others => '0'); + alu_ctrl.add_src_sign <= (others => '0'); + alu_ctrl.logic_function <= (others => '0'); + alu_ctrl.word_24_update <= '0'; + alu_ctrl.rounding_used <= (others => '0'); + alu_ctrl.store_result <= '0'; + for i in 0 to 7 loop -- by default do not touch any of the ccr flags (L;E;U;N;Z;V;C) + alu_ctrl.ccr_flags_ctrl(i) <= DONT_TOUCH; + end loop; + alu_ctrl.dst_accu <= instr_word_var(3); -- default value for all alu operations + + -- check wether instruction that allows parallel moves + -- has to be decoded, then it is an ALU operation in the 8 LSBs + -- Only exceptions are DIV, NORM, and Tcc + if instr_word_var(23 downto 20) /= "0000" then + -- ABS + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- source/dst are the same register + alu_ctrl.shift_src_sign <= "10"; -- the sign of the operand depends on the operand + -- negative operand will negate the content of the accu as + -- needed by the ABS instruction + alu_ctrl.add_src_stage_2 <= "00"; -- select zero + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags but carry + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADC + if instr_word_var(7 downto 5) = "001" and instr_word_var(2 downto 0) = "001" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= "01" & instr_word_var(4); -- X or Y + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "10"; -- add carry to result of addition + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADD + if instr_word_var(7) = '0' and instr_word_var(2 downto 0) = "000" and instr_word_var(6 downto 4) /= "000" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADDL + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) (here: A,B) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADDR + if instr_word_var(7 downto 4) = "0000" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 5) & '1'; -- source register (JJJ encoding) (here: A,B) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- AND / OR / EOR + if instr_word_var(7 downto 6) = "01" and (instr_word_var(2 downto 0) = "110" or -- and + instr_word_var(2 downto 0) = "010" or -- or + instr_word_var(2 downto 0) = "011") then -- eor + alu_ctrl.logic_function <= instr_word_var(2 downto 0); -- 000: none, 110: and, 010: or, 011: eor, 111: not + alu_ctrl.word_24_update <= '1'; -- only accumulator bits 47 downto 24 affected? + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) (here: A,B) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set following flags + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + end if; + -- ASL + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ASR + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set following flags +-- alu_ctrl.ccr_flags_ctrl(S_FLAG) <= MODIFY; +-- alu_ctrl.ccr_flags_ctrl(E_FLAG) <= MODIFY; +-- alu_ctrl.ccr_flags_ctrl(U_FLAG) <= MODIFY; +-- alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; +-- alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; +-- alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; +-- alu_ctrl.ccr_flags_ctrl(C_FLAG) <= MODIFY; + -- set all flags, V-flag will be cleared due to shifting + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- CLR + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "011" then + -- Read accu + alu_ctrl.shift_mode <= ZEROS; + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set following flags + alu_ctrl.ccr_flags_ctrl(S_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(E_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(U_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + end if; + -- CMP + if instr_word_var(7) = '0' and instr_word_var(6 downto 5) /= "01" and + instr_word_var(2 downto 0) = "101" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) x0,x1,y0,y1 + else + alu_ctrl.add_src_stage_1 <= "001"; -- select opposite accu (JJJ encoding) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.store_result <= '0'; -- do not store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- CMPM + if instr_word_var(7) = '0' and instr_word_var(6 downto 5) /= "01" and + instr_word_var(2 downto 0) = "111" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "10"; -- with the sign dependant sign (magnitude!) + -- Read S + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) x0,x1,y0,y1 + else + alu_ctrl.add_src_stage_1 <= "001"; -- select opposite accu (JJJ encoding) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "10"; -- with sign dependant sign (magnitude!) + alu_ctrl.store_result <= '0'; -- do not store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- LSL + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "011" then + alu_ctrl.word_24_update <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set N,Z,V,C flags + for i in 0 to 3 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- LSR + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "011" then + alu_ctrl.word_24_update <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set N,Z,V,C flags + for i in 0 to 3 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- MPY, MPYR, MAC, MACR + if instr_word_var(7) = '1' then + case instr_word_var(6 downto 4) is + when "000" => alu_ctrl.mul_op1 <= "00"; alu_ctrl.mul_op2 <= "00"; -- x0,x0 + when "001" => alu_ctrl.mul_op1 <= "10"; alu_ctrl.mul_op2 <= "10"; -- y0,y0 + when "010" => alu_ctrl.mul_op1 <= "01"; alu_ctrl.mul_op2 <= "00"; -- x1,x0 + when "011" => alu_ctrl.mul_op1 <= "11"; alu_ctrl.mul_op2 <= "10"; -- y1,y0 + when "100" => alu_ctrl.mul_op1 <= "00"; alu_ctrl.mul_op2 <= "11"; -- x0,y1 + when "101" => alu_ctrl.mul_op1 <= "10"; alu_ctrl.mul_op2 <= "00"; -- y0,x0 + when "110" => alu_ctrl.mul_op1 <= "01"; alu_ctrl.mul_op2 <= "10"; -- x1,y0 + when others => alu_ctrl.mul_op1 <= "11"; alu_ctrl.mul_op2 <= "01"; -- y1,x1 + end case; + alu_ctrl.store_result <= '1'; -- store result in accu + alu_ctrl.add_src_stage_2 <= "10"; -- select mul out for adder! + alu_ctrl.add_src_sign <= '0' & instr_word_var(2); -- select +/- + alu_ctrl.rounding_used <= '0' & instr_word_var(0); -- rounding is determined by that bit! + if instr_word_var(1) = '0' then -- MPY(R) + alu_ctrl.shift_mode <= ZEROS; + else -- MAC(R) + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + end if; + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- NEG + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= ZEROS; +-- alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to +-- alu_ctrl.shift_src_sign <= "01"; -- with negative sign + -- Read Accu + alu_ctrl.add_src_stage_1 <= "000"; -- source register equal to dst_register + alu_ctrl.add_src_stage_2 <= "01"; -- select register as operand + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- NOT + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "111" then + alu_ctrl.word_24_update <= '1'; + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.logic_function <= instr_word_var(2 downto 0); -- select not operation + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set following flags + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + end if; + -- RND + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "001" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "01"; -- normal rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ROL + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "111" then + alu_ctrl.word_24_update <= '1'; + alu_ctrl.rotate <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set the following flags + alu_ctrl.ccr_flags_ctrl(C_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + end if; + -- ROR + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "111" then + alu_ctrl.word_24_update <= '1'; + alu_ctrl.rotate <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set the following flags + alu_ctrl.ccr_flags_ctrl(C_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + end if; + -- SBC + if instr_word_var(7 downto 5) = "001" and instr_word_var(2 downto 0) = "101" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) X,Y + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "11"; -- subtract carry + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- SUB + if instr_word_var(7) = '0' and instr_word_var(2 downto 0) = "100" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- SUBL + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- SUBR + if instr_word_var(7 downto 4) = "0000" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 5) & '1'; -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- TFR + if instr_word_var(7) = '0' and instr_word_var(6 downto 5) /= "01" and + instr_word_var(6 downto 4) /= "001" and instr_word_var(2 downto 0) = "001" then + -- do not read accu + alu_ctrl.shift_mode <= ZEROS; + -- Read S + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + else + alu_ctrl.add_src_stage_1 <= "001"; -- B,A or A,B (depending on dest. accu) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with positive sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- do not set any flag at all! + end if; + -- TST + if instr_word_var(7 downto 4) = "0000" and instr_word_var(2 downto 0) = "011" then + -- do not read accu + alu_ctrl.shift_mode <= NO_SHIFT; -- no shift + alu_ctrl.shift_src <= instr_word_var(3); -- read source accu + alu_ctrl.shift_src_sign <= "00"; -- sign unchanged + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero + alu_ctrl.add_src_sign <= "00"; -- with positive sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '0'; -- do not store the result + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + end if; -- Parallel move ALU instructions + + -- Tcc + if alu_tcc_decoded = '1' then + -- Read source + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + else + alu_ctrl.add_src_stage_1 <= "001"; -- B,A or A,B (depending on dest. accu) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the registers as source + -- The .store_result flag is generated in the execute stage + -- depending on the condition codes + -- do not set any flag at all! + end if; +--mul_op1 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 +--mul_op2 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 +--shift_src : std_logic; -- a,b +--shift_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: reserved +--shift_mode : alu_shift_mode; +--add_src_stage_1 : std_logic_vector(2 downto 0); -- x0,x1,y0,y1,x,y,a,b +--add_src_stage_2 : std_logic_vector(1 downto 0); -- 00: 0 , 01: add_src_1, 10: mul_result, 11: reserved +--add_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: div instruction! +--logic_function : std_logic_vector(2 downto 0); -- 000: none, 110: and, 010: or, 011: eor, 111: not +--word_24_update : std_logic; -- only accumulator bits 47 downto 24 affected? +--rounding_used : std_logic_vector(1 downto 0); -- 00: no rounding, 01: rounding, 10: add carry, 11: subtract carry +--store_result : std_logic; -- 0: do not update accumulator, 1: update accumulator +--dst_accu : std_logic; -- 0: a, 1: b + -- DIV + if alu_div_decoded = '1' then + alu_ctrl.store_result <= '1'; -- do store the result + -- shifter operation + alu_ctrl.shift_mode <= SHIFT_LEFT; -- shift left + alu_ctrl.shift_src <= instr_word_var(3); -- read source accu + alu_ctrl.div_instr <= '1'; -- this is THE div instruction, special handling needed + -- source operand loading + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the registers as source + alu_ctrl.add_src_sign <= "11"; -- div instruction, sign dependant on D[55] XOR S[23] + -- if 1: positive, if 0: negative + alu_ctrl.ccr_flags_ctrl(C_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(L_FLAG) <= MODIFY; + end if; + -- NORM + if alu_norm_decoded = '1' then + -- set all alu-ctrl signals to ASL/ASR already here + -- depending on the condition code registers the flags + -- will be completed in the execute stage + alu_ctrl.norm_instr <= '1'; + -- Read accu + --alu_ctrl.shift_mode <= SHIFT_RIGHT/SHIFT_LEFT/NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags, V-flag will be cleared due to shifting + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + + end if; + end process; + + + instruction_decoder: process(instr_word, activate_dec) is + variable instr_word_var : std_logic_vector(23 downto 0); + procedure activate_AGU is + begin + -- check for immediate long addressing + if instr_word_var(13 downto 8) = "110100" then + act_array(ACT_IMM_LONG) <= '1'; + act_array(ACT_X_MEM_RD) <= '0'; -- No memory accesses for Immediate addressing! + act_array(ACT_Y_MEM_RD) <= '0'; + act_array(ACT_X_MEM_WR) <= '0'; + act_array(ACT_Y_MEM_WR) <= '0'; + else + act_array(ACT_ADGEN) <= '1'; + end if; + end procedure activate_AGU; + begin + instr_array_int <= INSTR_NOP; + act_array <= (others => '0'); + adgen_bittype <= NOP; + reg_rd_addr <= (others => '0'); + reg_wr_addr <= (others => '0'); + x_bus_rd_addr <= (others => '0'); + x_bus_wr_addr <= (others => '0'); + y_bus_rd_addr <= (others => '0'); + y_bus_wr_addr <= (others => '0'); + l_bus_addr <= instr_word_var(19) & instr_word_var(17 downto 16); + + alu_tcc_decoded <= '0'; + alu_div_decoded <= '0'; + alu_norm_decoded <= '0'; + + -- in case the decoding is not activated we insert a nop + if activate_dec = '1' then + instr_word_var := instr_word; + else + instr_word_var := (others => '0'); + end if; + + if instr_word_var(23 downto 16) = X"00" then + case instr_word_var(15 downto 0) is + when X"0000" => instr_array_int <= INSTR_NOP; + when X"0004" => instr_array_int <= INSTR_RTI; act_array(ACT_EXEC_BRA) <= '1'; + when X"0005" => instr_array_int <= INSTR_ILLEGAL; + when X"0006" => instr_array_int <= INSTR_SWI; + when X"000C" => instr_array_int <= INSTR_RTS; act_array(ACT_EXEC_BRA) <= '1'; + when X"0084" => instr_array_int <= INSTR_RESET; + when X"0086" => instr_array_int <= INSTR_WAIT; + when X"0087" => instr_array_int <= INSTR_STOP; + when X"008C" => instr_array_int <= INSTR_ENDDO; + act_array(ACT_EXEC_LOOP) <= '1'; + when others => + act_array(ACT_EXEC_CR_MOD) <= '1'; -- modify control register + if instr_word_var(7 downto 2) = "101110" then + instr_array_int <= INSTR_ANDI; + elsif instr_word_var(7 downto 2) = "111110" then + instr_array_int <= INSTR_ORI; + end if; + end case; + end if; + --------------------------------------------------------- + -- DIV and NORM + --------------------------------------------------------- + if instr_word_var(23 downto 16) = X"01" then + -- DIV + if instr_word_var(15 downto 6) = "1000000001" and instr_word_var(2 downto 0) = "000" then + alu_div_decoded <= '1'; + act_array(ACT_ALU) <= '1'; -- force ALU to update status register + end if; + -- NORM + if instr_word_var(15 downto 11) = "11011" and instr_word_var(7 downto 4) = "0001" and + instr_word_var(2 downto 0) = "101" then + alu_norm_decoded <= '1'; + act_array(ACT_NORM) <= '1'; -- NORM instruction decoded, + -- special handling in exec-stage is caused + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= instr_word_var(13 downto 12) & '0' & instr_word_var(10 downto 8); -- Write same Rn + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(13 downto 12) & '0' & instr_word_var(10 downto 8); -- Write same Rn + end if; + end if; + --------------------------------------------------------- + -- Tcc + --------------------------------------------------------- + if instr_word_var(23 downto 16) = X"02" or instr_word_var(23 downto 16) = X"03" then + -- Tcc S1, D1 S2, D2 (ALU/Reg file) + if instr_word_var(16) = '0' and instr_word_var(11 downto 7) = "00000" and + instr_word_var(2 downto 0) = "000" then + act_array(ACT_ALU_WR_CC) <= '1'; + alu_tcc_decoded <= '1'; + -- Tcc S1, D1 S2, D2 (ALU/Reg file) + elsif instr_word_var(16) = '1' and instr_word_var(11) = '0' and + instr_word_var(7) = '0' then + act_array(ACT_ALU_WR_CC) <= '1'; + alu_tcc_decoded <= '1'; + act_array(ACT_REG_WR_CC) <= '1'; + reg_rd_addr <= "010" & instr_word_var(10 downto 8); -- Read Rn + reg_wr_addr <= "010" & instr_word_var( 2 downto 0); -- Write to other Rn + end if; + end if; + --------------------------------------------------------- + -- MOVEC and LUA instruction with registers + --------------------------------------------------------- + if instr_word_var(23 downto 16) = X"04" then + act_array(ACT_REG_WR) <= '1'; + -- LUA instruction + if instr_word_var(15 downto 13) = "010" and instr_word_var(7 downto 4) = "0001" then + instr_array_int <= INSTR_LUA; + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X_SHORT; + reg_wr_addr <= instr_word_var(5 downto 0); + end if; + -- MOVEC instruction (S1, D2) or (S2, D1) + if instr_word_var(14) = '1' and instr_word_var(7 downto 5) = "101" then + instr_array_int <= INSTR_MOVEC; + act_array(ACT_REG_RD) <= '1'; + -- Write D1 + if instr_word_var(15) = '1' then + reg_wr_addr <= instr_word_var(5 downto 0); + reg_rd_addr <= instr_word_var(13 downto 8); + -- Read S1 + else + reg_wr_addr <= instr_word_var(13 downto 8); + reg_rd_addr <= instr_word_var(5 downto 0); + end if; + end if; + end if; + ------------------------------------------------------------------------- + -- MOVEC instruction with memory access/absolute address + ------------------------------------------------------------------------- + if instr_word_var(23 downto 16) = X"05" and + instr_word_var(7) = '0' and instr_word_var(5) = '1' then + + instr_array_int <= INSTR_MOVEC; + -- read from memory, write to register + if instr_word_var(15) = '1' then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(5 downto 0); + -- X Memory read? + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + -- Y Memory read? + else + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + -- write to memory, read register + else + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= instr_word_var(5 downto 0); + -- X Memory write? + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_WR) <= '1'; + -- Y Memory write? + else + act_array(ACT_Y_MEM_WR) <= '1'; + end if; + end if; + -- AGU needed? + if instr_word_var(14) = '1' then + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- check for immediate long addressing + if instr_word_var(13 downto 8) = "110100" then + act_array(ACT_IMM_LONG) <= '1'; + act_array(ACT_X_MEM_RD) <= '0'; -- No memory accesses for Immediate addressing! + act_array(ACT_Y_MEM_RD) <= '0'; + act_array(ACT_X_MEM_WR) <= '0'; + act_array(ACT_Y_MEM_WR) <= '0'; + else + act_array(ACT_ADGEN) <= '1'; + end if; + else + -- X:/Y:aa short is done in the adgen-stage automatically + end if; + end if; + ------------------------------------------------------------------------- + -- MOVEC instruction with immediate + ------------------------------------------------------------------------- + if instr_word_var(23 downto 16) = X"05" and instr_word_var(7 downto 5) = "101" then + instr_array_int <= INSTR_MOVEC; + act_array(ACT_IMM_8BIT) <= '1'; + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(5 downto 0); + end if; + --------------------------------- + -- REP or DO loop? + --------------------------------- + if instr_word_var(23 downto 16) = X"06" then + -- Instruction encoding is the same for both except of this bit + if instr_word_var(5) = '1' then + instr_array_int <= INSTR_REP; + else + instr_array_int <= INSTR_DO; + end if; + act_array(ACT_EXEC_LOOP) <= '1'; + -- Init reading of loop counter from memory + if instr_word_var(15) = '0' and instr_word_var(7) = '0' then + -- X/Y: ea? + if instr_word_var(14) = '1' then + act_array(ACT_ADGEN) <= '1'; + end if; + -- X/Y: aa? + -- Done automatically in the ADGEN stage by testing whether the ADGEN unit activated or not! + -- If not the absolute address stored in the instruction word is used. + ------- + -- only a single memory access is required + adgen_bittype <= SINGLE_X; + -- X/Y as source? + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + else + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + elsif instr_word_var(15) = '1' and instr_word_var(7) = '0' then + -- S (register as source) + reg_rd_addr <= instr_word_var(13 downto 8); + act_array(ACT_REG_RD) <= '1'; + -- #xxx ,12 bit immediate + elsif instr_word_var(7 downto 6) = "10" and instr_word_var(4) = '0' then + act_array(ACT_IMM_12BIT) <= '1'; + end if; + end if; + -------------------------------- + -- MOVEM (Program memory move) + -------------------------------- + if instr_word_var(23 downto 16) = X"07" then + -- read memory, write reg + if instr_word_var(15) = '1' then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(5 downto 0); + act_array(ACT_P_MEM_RD) <= '1'; + -- read reg, write memory + elsif instr_word_var(15) = '0' then + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= instr_word_var(5 downto 0); + act_array(ACT_P_MEM_WR) <= '1'; + end if; + -- AGU needed? + if instr_word_var(14) = '1' and instr_word_var(7 downto 6) = "10" then + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + elsif instr_word_var(14) = '0' and instr_word_var(7 downto 6) = "00" then + -- X:/Y:aa short is done in the adgen-stage automatically + end if; + end if; + -------------------------------- + -- MOVEP (Peripheral memory move) + -------------------------------- + if instr_word_var(23 downto 16) = "0000100-" then + -- TODO?? Why parallel moves in software model?? + case instr_word_var(15 downto 0) is +-- when "-1------1-------" => instr_array_int(INSTR_MOVEP) <= '1'; +-- when "-1------01------" => instr_array_int(INSTR_MOVEP) <= '1'; +-- when "-1------00------" => instr_array_int(INSTR_MOVEP) <= '1'; + when others => + end case; + end if; + -- BSET, BCLR, BCHG, BTST, JCLR, JSET, JSCLR, JSSET, JMP, JCC, JSCC, JSR + if instr_word_var(23 downto 16) = X"0A" or instr_word_var(23 downto 16) = X"0B" then + + reg_rd_addr <= instr_word_var(13 downto 8); + reg_wr_addr <= instr_word_var(13 downto 8); + + if instr_word_var(16) = '0' then + if instr_word_var(7) = '0' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_BCLR; + elsif instr_word_var(7) = '0' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_BSET; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_JCLR; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_JSET; + end if; + elsif instr_word_var(16) = '1' then + if instr_word_var(7) = '0' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_BCHG; + elsif instr_word_var(7) = '0' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_BTST; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_JSCLR; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_JSSET; + end if; + end if; + if instr_word_var(7) = '1' then + act_array(ACT_EXEC_BRA) <= '1'; + end if; + + -- memory access? + if instr_word_var(15) = '0' then + -- X: + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + -- if not a jump instruction and not BTST write back the result + if instr_word_var(7) = '0' and not(instr_word_var(16) = '1' and instr_word_var(5) = '1') then + act_array(ACT_X_MEM_WR) <= '1'; + end if; + -- Y: + else + act_array(ACT_Y_MEM_RD) <= '1'; + -- if not a jump instruction and not BTST write back the result + if instr_word_var(7) = '0' and not(instr_word_var(16) = '1' and instr_word_var(5) = '1') then + act_array(ACT_Y_MEM_WR) <= '1'; + end if; + end if; + end if; + + case instr_word_var(15 downto 14) is + -- X:/Y: aa + when "00" => + + -- X:/Y: ea + when "01" => + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X; + + -- X:/Y: pp + -- TODO! + when "10" => + + when others => -- "11" + if instr_word_var(7 downto 0) = "10000000" then + -- JMP/JSR ea + act_array(ACT_EXEC_BRA) <= '1'; + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X; + if instr_word_var(16) = '0' then + instr_array_int <= INSTR_JMP; + elsif instr_word_var(16) = '1' then + instr_array_int <= INSTR_JSR; + end if; + elsif instr_word_var(7 downto 4) = "1010" then + -- JCC/JSCC ea + act_array(ACT_EXEC_BRA) <= '1'; + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X; + if instr_word_var(16) = '0' then + instr_array_int <= INSTR_JCC; + elsif instr_word_var(16) = '1' then + instr_array_int <= INSTR_JSCC; + end if; + -- JSCLR,JSET,JCLR,JSSET,BTST,BCLR,BSET,BCHG S/D + else + act_array(ACT_REG_RD) <= '1'; + -- if not a jump instruction and not BTST write back the result + if instr_word_var(7) = '0' and not(instr_word_var(16) = '1' and instr_word_var(5) = '1') then + act_array(ACT_REG_WR) <= '1'; + end if; + end if; + end case; + end if; + -- JMP xxx (absoulute short) + if instr_word_var(23 downto 16) = X"0C" then + if instr_word_var(15 downto 12) = "0000" then + instr_array_int <= INSTR_JMP; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + end if; + -- JSR xxx (absolute short) + if instr_word_var(23 downto 16) = X"0D" then + if instr_word_var(15 downto 12) = "0000" then + instr_array_int <= INSTR_JSR; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + end if; + -- JCC xxx (absolute short) + if instr_word_var(23 downto 16) = X"0E" then + instr_array_int <= INSTR_JCC; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + -- JSCC xxx (absolute short) + if instr_word_var(23 downto 16) = X"0F" then + instr_array_int <= INSTR_JSCC; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + + ------------------------------------------------ + -- PARALLEL MOVE SECTION!! + ------------------------------------------------ + -- Here are the ALU operations that allow for parallel moves + if instr_word_var(23 downto 20) /= "0000" then + act_array(ACT_ALU) <= '1'; -- force ALU to update status register + end if; + -- PM: I + if instr_word_var(23 downto 21) = "001" and instr_word_var(20 downto 18) /= "000" then + act_array(ACT_IMM_8BIT) <= '1'; + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= '0' & instr_word_var(20 downto 16); + end if; + -- PM: R + if instr_word_var(23 downto 18) = "001000" then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= '0' & instr_word_var(12 downto 8); + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= '0' & instr_word_var(17 downto 13); + end if; + -- PM: U + if instr_word_var(23 downto 13) = "00100000010" then + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X_SHORT; + end if; + -- PM: X or PM:Y + if instr_word_var(23 downto 22) = "01" and + -- Check whether L: type parallel move. If so do not enter this branch! + not (instr_word_var(21 downto 20) = "00" and instr_word_var(18) = '0') then + -- read memory, write reg + if instr_word_var(15) = '1' then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= '0' & instr_word_var(21 downto 20) & instr_word_var(18 downto 16); -- TODO: CHECK!! + -- X Memory read? + if instr_word_var(19) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + -- Y Memory read? + else + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + -- read reg, write memory + elsif instr_word_var(15) = '0' then + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= '0' & instr_word_var(21 downto 20) & instr_word_var(18 downto 16); -- TODO: CHECK!! + -- X Memory write? + if instr_word_var(19) = '0' then + act_array(ACT_X_MEM_WR) <= '1'; + -- Y Memory write? + else + act_array(ACT_Y_MEM_WR) <= '1'; + end if; + end if; + -- AGU needed? + if instr_word_var(14) = '1' then + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + else + -- X:/Y:aa short is done in the adgen-stage automatically + end if; + end if; + -- PM: X:R or R:Y (Class I) + if instr_word_var(23 downto 20) = "0001" then + adgen_bittype <= SINGLE_X; + -- X:R + if instr_word_var(14) = '0' then + x_bus_rd_addr <= instr_word_var(19 downto 18); + x_bus_wr_addr <= instr_word_var(19 downto 18); + y_bus_rd_addr <= '1' & instr_word_var(17); + y_bus_wr_addr <= '0' & instr_word_var(16); -- TODO: Check encoding, manual uses three fs! + -- S2,D2 in any case! + act_array(ACT_Y_BUS_RD) <= '1'; + act_array(ACT_Y_BUS_WR) <= '1'; + -- Write D1? + if instr_word_var(15) = '1' then + act_array(ACT_X_MEM_RD) <= '1'; + act_array(ACT_X_BUS_WR) <= '1'; + else + -- Read S1? + act_array(ACT_X_MEM_WR) <= '1'; + act_array(ACT_X_BUS_RD) <= '1'; + end if; + -- R:Y + elsif instr_word_var(14) = '1' then + x_bus_rd_addr <= '1' & instr_word_var(19); + x_bus_wr_addr <= '0' & instr_word_var(18); + y_bus_rd_addr <= instr_word_var(17 downto 16); + y_bus_wr_addr <= instr_word_var(17 downto 16); + -- S1,D1 in any case! + act_array(ACT_X_BUS_RD) <= '1'; + act_array(ACT_X_BUS_WR) <= '1'; + -- Write D1? + if instr_word_var(15) = '1' then + act_array(ACT_Y_MEM_RD) <= '1'; + act_array(ACT_Y_BUS_WR) <= '1'; + else + -- Read S1? + act_array(ACT_Y_MEM_WR) <= '1'; + act_array(ACT_Y_BUS_RD) <= '1'; + end if; + + end if; + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + end if; + -- PM: X:R or R:Y (Class II) + if instr_word_var(23 downto 17) = "0000100" and instr_word_var(14) = '0' then + act_array(ACT_REG_RD) <= '1'; + -- X:R + if instr_word_var(15) = '0' then + reg_rd_addr <= "00111" & instr_word_var(16); -- read A or B + act_array(ACT_X_MEM_WR) <= '1'; -- and store it in X memory + x_bus_rd_addr <= "00"; -- read x0 + x_bus_wr_addr <= '1' & instr_word_var(16); -- and write to A or B + act_array(ACT_X_BUS_RD) <= '1'; + act_array(ACT_X_BUS_WR) <= '1'; + -- R:Y + elsif instr_word_var(15) = '1' then + reg_rd_addr <= "00111" & instr_word_var(16); -- read A or B + act_array(ACT_Y_MEM_WR) <= '1'; -- and store it in Y memory + y_bus_rd_addr <= "00"; -- read y0 + y_bus_wr_addr <= '1' & instr_word_var(16); -- and write to A or B + act_array(ACT_Y_BUS_RD) <= '1'; + act_array(ACT_Y_BUS_WR) <= '1'; + end if; + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + end if; + -- PM: L: + l_bus_addr <= instr_word_var(19) & instr_word_var(17 downto 16); + if instr_word_var(23 downto 20) = "0100" and instr_word_var(18) = '0' then + -- Read S? + if instr_word_var(15) = '0' then + act_array(ACT_L_BUS_RD) <= '1'; + act_array(ACT_X_MEM_WR) <= '1'; + act_array(ACT_Y_MEM_WR) <= '1'; + else -- Write D + act_array(ACT_L_BUS_WR) <= '1'; + act_array(ACT_X_MEM_RD) <= '1'; + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + if instr_word_var(14) = '1' then + adgen_bittype <= SINGLE_X; + activate_AGU; + else + -- L:aa automatically performed in ADGEN stage + end if; + end if; + -- PM: X: Y: + if instr_word_var(23) = '1' then + adgen_bittype <= DOUBLE_X_Y; + -- No immediate value allowed, so activate in any case! + act_array(ACT_ADGEN) <= '1'; + -- S1, X: + if instr_word_var(15) = '0' then + act_array(ACT_X_BUS_RD) <= '1'; + x_bus_rd_addr <= instr_word_var(19 downto 18); + act_array(ACT_X_MEM_WR) <= '1'; + -- X:, D1 + else + act_array(ACT_X_BUS_WR) <= '1'; + x_bus_wr_addr <= instr_word_var(19 downto 18); + act_array(ACT_X_MEM_RD) <= '1'; + end if; + -- S2, Y: + if instr_word_var(22) = '0' then + act_array(ACT_Y_BUS_RD) <= '1'; + y_bus_rd_addr <= instr_word_var(17 downto 16); + act_array(ACT_Y_MEM_WR) <= '1'; + -- Y:, D2 + else + act_array(ACT_Y_BUS_WR) <= '1'; + y_bus_wr_addr <= instr_word_var(17 downto 16); + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + end if; + end process; + + adgen_decoder: process(adgen_bittype, instr_word) is + begin + adgen_mode_a <= NOP; + adgen_mode_b <= NOP; + ea_extension_available <= '0'; + + case adgen_bittype is + when SINGLE_X => + case instr_word(13 downto 11) is + when "000" => adgen_mode_a <= POST_MIN_N; + when "001" => adgen_mode_a <= POST_PLUS_N; + when "010" => adgen_mode_a <= POST_MIN_1; + when "011" => adgen_mode_a <= POST_PLUS_1; + when "100" => adgen_mode_a <= NOP; + when "101" => adgen_mode_a <= INDEXED_N; + when "111" => adgen_mode_a <= PRE_MIN_1; + when "110" => + if instr_word(10 downto 8) = "000" then + adgen_mode_a <= ABSOLUTE; + ea_extension_available <= '1'; + elsif instr_word(10 downto 8) = "100" then + adgen_mode_a <= IMMEDIATE; + ea_extension_available <= '1'; + else + adgen_mode_a <= NOP; -- INVALID OPCODE! + end if; + when others => + end case; + when SINGLE_X_SHORT => + case instr_word(12 downto 11) is + when "00" => adgen_mode_a <= POST_MIN_N; + when "01" => adgen_mode_a <= POST_PLUS_N; + when "10" => adgen_mode_a <= POST_MIN_1; + when "11" => adgen_mode_a <= POST_PLUS_1; + when others => + end case; + when DOUBLE_X_Y => + case instr_word(12 downto 11) is + when "00" => adgen_mode_a <= NOP; + when "01" => adgen_mode_a <= POST_PLUS_N; + when "10" => adgen_mode_a <= POST_MIN_1; + when "11" => adgen_mode_a <= POST_PLUS_1; + when others => + end case; + case instr_word(21 downto 20) is + when "00" => adgen_mode_b <= NOP; + when "01" => adgen_mode_b <= POST_PLUS_N; + when "10" => adgen_mode_b <= POST_MIN_1; + when "11" => adgen_mode_b <= POST_PLUS_1; + when others => + end case; + when others => + end case; + end process adgen_decoder; + +end architecture rtl; + diff --git a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_alu.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_alu.vhd new file mode 100644 index 0000000..9f3c3b9 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_alu.vhd @@ -0,0 +1,603 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_alu is port( + alu_activate : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + alu_ctrl : in alu_ctrl_type; + register_file : in register_file_type; + addr_r_in : in unsigned(BW_ADDRESS-1 downto 0); + addr_r_out : out unsigned(BW_ADDRESS-1 downto 0); + modify_accu : out std_logic; + dst_accu : out std_logic; + modified_accu : out signed(55 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + +architecture rtl of exec_stage_alu is + + signal alu_shifter_out : signed(55 downto 0); + signal alu_shifter_carry_out : std_logic; + signal alu_shifter_overflow_out : std_logic; + + signal alu_logic_conj : signed(55 downto 0); + signal alu_multiplier_out : signed(55 downto 0); + signal alu_src_op : signed(55 downto 0); + signal alu_add_result : signed(56 downto 0); + signal alu_add_carry_out : std_logic; + signal alu_post_adder_result : signed(56 downto 0); + + signal scaling_mode : std_logic_vector(1 downto 0); + + signal modified_accu_int : signed(55 downto 0); + + signal norm_instr_asl : std_logic; + signal norm_instr_asr : std_logic; + signal norm_instr_nop : std_logic; + signal norm_update_ccr : std_logic; + +begin + + + -- store calculated value? + modify_accu <= alu_ctrl.store_result; + modified_accu <= modified_accu_int; + -- for the norm instruction we first need to determine whether we have to + -- update the CCR register or not + modify_sr <= alu_activate when alu_ctrl.norm_instr = '0' else + norm_update_ccr; + dst_accu <= alu_ctrl.dst_accu; + + scaling_mode <= register_file.sr(11 downto 10); + + + calcule_ccr_flags: process(register_file, alu_ctrl, alu_shifter_carry_out, + alu_post_adder_result, modified_accu_int, alu_add_carry_out) is + begin + -- by default do not modify the flags in the status register + modified_sr <= register_file.sr; + + -- Carry flag generation + ------------------------- + case alu_ctrl.ccr_flags_ctrl(C_FLAG) is + when CLEAR => modified_sr(C_FLAG) <= '0'; + when SET => modified_sr(C_FLAG) <= '1'; + when MODIFY => + -- the carry flag can stem from the shifter or from the post adder + -- in case we shift and add only a zero to the shift result (ASL, ASR, LSL, LSR, ROL, ROR) + -- take the carry flag from the shifter, else from the post adder + if (alu_ctrl.shift_mode = SHIFT_LEFT or alu_ctrl.shift_mode = SHIFT_RIGHT) and + alu_ctrl.add_src_stage_2 = "00" then -- add zero after shifting? + modified_sr(C_FLAG) <= alu_shifter_carry_out; + elsif alu_ctrl.div_instr = '1' then + modified_sr(C_FLAG) <= not std_logic(alu_post_adder_result(55)); + else +-- modified_sr(C_FLAG) <= std_logic(alu_post_adder_result(57)); + modified_sr(C_FLAG) <= alu_add_carry_out; + end if; + when others => -- Don't touch + end case; + + -- Overflow flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(V_FLAG) is + when CLEAR => modified_sr(V_FLAG) <= '0'; + when SET => modified_sr(V_FLAG) <= '1'; + when MODIFY => + -- There are two sources for the overflow flag: + -- 1) + -- in case the result cannot be represented using 56 bits set + -- the overflow flag. this is the case when the two MSBs of + -- the 57 bit result are different + -- 2) + -- The shifter circuit performs a 56 bit left shift. In case the + -- two MSBs of the operand are different set the overflow flag as well + if (alu_ctrl.div_instr = '0' and alu_post_adder_result(56) /= alu_post_adder_result(55)) or + (alu_ctrl.shift_mode = SHIFT_LEFT and alu_ctrl.word_24_update = '0' and + alu_shifter_overflow_out = '1' ) then + modified_sr(V_FLAG) <= '1'; + else + modified_sr(V_FLAG) <= '0'; + end if; + when others => -- Don't touch + end case; + + -- Zero flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(Z_FLAG) is + when CLEAR => modified_sr(Z_FLAG) <= '0'; + when SET => modified_sr(Z_FLAG) <= '1'; + when MODIFY => + -- in case the result is zero set this flag + -- distinguish between 24 bit and 56 bit ALU operations + -- 24 bit instructions are LSL, LSR, ROR, ROL, OR, EOR, NOT, AND + if (alu_ctrl.word_24_update = '1' and modified_accu_int(47 downto 24) = 0) or + (alu_ctrl.word_24_update = '0' and modified_accu_int(55 downto 0) = 0) then + modified_sr(Z_FLAG) <= '1'; + else + modified_sr(Z_FLAG) <= '0'; + end if; + when others => -- Don't touch + end case; + + -- Negative flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(N_FLAG) is + when CLEAR => modified_sr(N_FLAG) <= '0'; + when SET => modified_sr(N_FLAG) <= '1'; + when MODIFY => + -- in case the result is negative set this flag + -- distinguish between 24 bit and 56 bit ALU operations + -- 24 bit instructions are LSL, LSR, ROR, ROL, OR, EOR, NOT, AND + if alu_ctrl.word_24_update = '1' then + modified_sr(N_FLAG) <= std_logic(modified_accu_int(47)); + else + modified_sr(N_FLAG) <= std_logic(modified_accu_int(55)); + end if; + when others => -- Don't touch + end case; + + -- Unnormalized flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(U_FLAG) is + when CLEAR => modified_sr(U_FLAG) <= '0'; + when SET => modified_sr(U_FLAG) <= '1'; + when MODIFY => + -- Set unnormalized bit according to the scaling mode + if (scaling_mode = "00" and alu_post_adder_result(47) = alu_post_adder_result(46)) or + (scaling_mode = "01" and alu_post_adder_result(48) = alu_post_adder_result(47)) or + (scaling_mode = "10" and alu_post_adder_result(46) = alu_post_adder_result(45)) then + modified_sr(U_FLAG) <= '1'; + else + modified_sr(U_FLAG) <= '0'; + end if; + when others => -- Don't touch + end case; + + -- Extension flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(E_FLAG) is + when CLEAR => modified_sr(E_FLAG) <= '0'; + when SET => modified_sr(E_FLAG) <= '1'; + when MODIFY => + -- Set extension flag by default + modified_sr(E_FLAG) <= '1'; + -- Clear extension flag according to the scaling mode + case scaling_mode is + when "00" => + if alu_post_adder_result(55 downto 47) = "111111111" or alu_post_adder_result(55 downto 47) = "000000000" then + modified_sr(E_FLAG) <= '0'; + end if; + when "01" => + if alu_post_adder_result(55 downto 48) = "11111111" or alu_post_adder_result(55 downto 48) = "00000000" then + modified_sr(E_FLAG) <= '0'; + end if; + when "10" => + if alu_post_adder_result(55 downto 46) = "1111111111" or alu_post_adder_result(55 downto 46) = "0000000000" then + modified_sr(E_FLAG) <= '0'; + end if; + when others => + modified_sr(E_FLAG) <= '0'; + end case; + when others => -- Don't touch + end case; + + -- Limit flag generation (equals overflow flag generaton!) + -- Clearing of the Limit flag has to be done by the user! + ----------------------------------------------------------- + case alu_ctrl.ccr_flags_ctrl(L_FLAG) is + when CLEAR => modified_sr(L_FLAG) <= '0'; + when SET => modified_sr(L_FLAG) <= '1'; + when MODIFY => + -- There are two sources for the overflow flag: + -- 1) + -- in case the result cannot be represented using 56 bits set + -- the overflow flag. this is the case when the two MSBs of + -- the 57 bit result are different + -- 2) + -- The shifter circuit performs a 56 bit left shift. In case the + -- two MSBs of the operand are different set the overflow flag as well + if (alu_ctrl.div_instr = '0' and alu_post_adder_result(56) /= alu_post_adder_result(55)) or + (alu_ctrl.shift_mode = SHIFT_LEFT and alu_ctrl.word_24_update = '0' and + alu_shifter_overflow_out = '1' ) then + modified_sr(L_FLAG) <= '1'; + end if; + when others => -- Don't touch + end case; + + -- Scaling flag generation (DSP56002 and up) + -------------------------------------------- + -- Scaling flag is not generated in the ALU, but when A or B are read to the XDB or YDB + + end process; + + + src_operand_select: process(register_file, alu_ctrl) is + begin + -- decoding according similar to JJJ representation + case alu_ctrl.add_src_stage_1 is + when "000" => + -- select depending on destination accu + if alu_ctrl.dst_accu = '0' then + alu_src_op <= register_file.a; + else + alu_src_op <= register_file.b; + end if; + when "001" => -- A,B or B,A + -- select depending on destination accu + if alu_ctrl.dst_accu = '0' then + alu_src_op <= register_file.b; + else + alu_src_op <= register_file.a; + end if; + when "010" => -- X + alu_src_op(55 downto 48) <= (others => register_file.x1(23)); + alu_src_op(47 downto 0) <= register_file.x1 & register_file.x0; + when "011" => -- Y + alu_src_op(55 downto 48) <= (others => register_file.y1(23)); + alu_src_op(47 downto 0) <= register_file.y1 & register_file.y0; + when "100" => -- x0 + alu_src_op(55 downto 48) <= (others => register_file.x0(23)); + alu_src_op(47 downto 24) <= register_file.x0; + alu_src_op(23 downto 0) <= (others => '0'); + when "101" => -- y0 + alu_src_op(55 downto 48) <= (others => register_file.y0(23)); + alu_src_op(47 downto 24) <= register_file.y0; + alu_src_op(23 downto 0) <= (others => '0'); + when "110" => -- x1 + alu_src_op(55 downto 48) <= (others => register_file.x1(23)); + alu_src_op(47 downto 24) <= register_file.x1; + alu_src_op(23 downto 0) <= (others => '0'); + when "111" => -- y1 + alu_src_op(55 downto 48) <= (others => register_file.y1(23)); + alu_src_op(47 downto 24) <= register_file.y1; + alu_src_op(23 downto 0) <= (others => '0'); + when others => + end case; + end process; + + alu_logical_functions: process(alu_ctrl, alu_src_op, alu_shifter_out) is + begin + alu_logic_conj <= alu_shifter_out; + case alu_ctrl.logic_function is + when "110" => + alu_logic_conj(47 downto 24) <= alu_shifter_out(47 downto 24) and alu_src_op(47 downto 24); + when "010" => + alu_logic_conj(47 downto 24) <= alu_shifter_out(47 downto 24) or alu_src_op(47 downto 24); + when "011" => + alu_logic_conj(47 downto 24) <= alu_shifter_out(47 downto 24) xor alu_src_op(47 downto 24); + when "111" => + alu_logic_conj(47 downto 24) <= not alu_shifter_out(47 downto 24); + when others => + end case; + end process; + + alu_adder : process(alu_ctrl, alu_src_op, alu_multiplier_out, alu_shifter_out) is + variable add_src_op_1 : signed(56 downto 0); + variable add_src_op_2 : signed(56 downto 0); + variable carry_const : signed(56 downto 0); + variable alu_shifter_out_57 : signed(56 downto 0); + variable alu_add_result_58 : signed(57 downto 0); + variable alu_add_result_interm : signed(56 downto 0); + variable invert_carry_flag : std_logic; + begin + + -- by default do not invert the carry + invert_carry_flag := '0'; + + -- determine whether to use multiplier output, the operand defined above, or zeros! + -- resizing is done here already. Like that we can see whether an overflow + -- occurs due to negating the source operand + case alu_ctrl.add_src_stage_2 is + when "00" => add_src_op_1 := (others => '0'); + when "10" => add_src_op_1 := resize(alu_multiplier_out, 57); + when others => add_src_op_1 := resize(alu_src_op, 57); + end case; + + -- determine the sign for the 1st operand! + case alu_ctrl.add_src_sign is + -- normal operation + when "00" => add_src_op_1 := add_src_op_1; + -- negative sign + when "01" => add_src_op_1 := - add_src_op_1; + invert_carry_flag := not invert_carry_flag; + -- change according to sign + -- performs - | accu | for the CMPM instruction + when "10" => + -- we subtract in any case, so invert the carry! + invert_carry_flag := not invert_carry_flag; + if add_src_op_1(55) = '0' then + add_src_op_1 := - add_src_op_1; + else + add_src_op_1 := add_src_op_1; + end if; + -- div instruction! + -- sign dependant of D[55] XOR S[23], if 1 => positive , if 0 => negative + -- add_src_op_1 holds S[23] (sign extension!) + when others => + if (alu_ctrl.shift_src = '0' and add_src_op_1(55) /= register_file.a(55)) or + (alu_ctrl.shift_src = '1' and add_src_op_1(55) /= register_file.b(55)) then + add_src_op_1 := add_src_op_1; + else + add_src_op_1 := - add_src_op_1; +-- invert_carry_flag := not invert_carry_flag; + end if; + end case; + + alu_shifter_out_57 := resize(alu_shifter_out, 57); + + -- determine the sign for the 2nd operand (coming from the shifter)! + case alu_ctrl.shift_src_sign is + -- negative sign + when "01" => + add_src_op_2 := - alu_shifter_out_57; + -- change according to sign + -- this allows to build the magnitude (ABS, CMPM) + when "10" => + if alu_shifter_out(55) = '1' then + add_src_op_2 := - alu_shifter_out_57; + else + add_src_op_2 := alu_shifter_out_57; + end if; + when others => + add_src_op_2 := alu_shifter_out_57; + end case; + + -- determine whether carry flag has to be added or subtracted + if alu_ctrl.rounding_used = "10" then + -- add carry flag + carry_const(0) := register_file.sr(C_FLAG); + elsif alu_ctrl.rounding_used = "11" then + -- subtract carry flag + carry_const := (others => register_file.sr(0)); -- carry flag + else + carry_const := (others => '0'); + end if; + + -- add the values and calculate the carry bit + alu_add_result_interm := ('0' & add_src_op_1(55 downto 0)) + + ('0' & add_src_op_2(55 downto 0)) + + ('0' & carry_const(55 downto 0)); + + -- here pops the new carry out of the adder + if invert_carry_flag = '0' then + alu_add_carry_out <= alu_add_result_interm(56); + else + alu_add_carry_out <= not alu_add_result_interm(56); + end if; + + -- calculate the last bit (56), in order to test for overflow later on + alu_add_result(55 downto 0) <= alu_add_result_interm(55 downto 0); +-- alu_add_result(56) <= add_src_op_1(56) xor add_src_op_2(56) xor alu_add_result_interm(56); + alu_add_result(56) <= add_src_op_1(56) xor add_src_op_2(56) + xor carry_const(56) xor alu_add_result_interm(56); + + end process alu_adder; + + + -- Adder after the normal arithmetic adder + -- This adder is responsible for +-- -- 1) carry addition +-- -- 2) carry subtration + -- 3) convergent rounding + alu_post_adder: process(alu_add_result, scaling_mode, alu_ctrl) is + variable post_adder_constant : signed(56 downto 0); + variable testing_constant : signed(24 downto 0); + begin + -- by default add nothing + post_adder_constant := (others => '0'); + + case alu_ctrl.rounding_used is + -- rounding dependant on scaling bits + when "01" => + case scaling_mode is + -- no scaling + when "00" => testing_constant := alu_add_result(23 downto 0) & '0'; + -- scale down + when "01" => testing_constant := alu_add_result(24 downto 0); + -- scale up + when "10" => testing_constant := alu_add_result(22 downto 0) & "00"; + when others => + testing_constant := alu_add_result(23 downto 0) & '0'; + end case; + + -- Special case! + if testing_constant(24) = '1' and testing_constant(23 downto 0) = X"000000" then + -- add depending on bit left to the rounding position + case scaling_mode is + -- no scaling + when "00" => post_adder_constant(23) := alu_add_result(24); + -- scale down + when "01" => post_adder_constant(24) := alu_add_result(25); + -- scale up + when "10" => post_adder_constant(22) := alu_add_result(23); + when others => + end case; + else -- testing_constant /= X"1000000" + -- add rounding constant depending on scaling mode + -- results in round up if MSB of testing constant is set, else nothing happens + case scaling_mode is + -- no scaling + when "00" => post_adder_constant(23) := '1'; + -- scale down + when "01" => post_adder_constant(24) := '1'; + -- scale up + when "10" => post_adder_constant(22) := '1'; + when others => + end case; + end if; + -- no rounding + when others => + post_adder_constant := (others => '0'); + + end case; + + -- Add the result of the first adder to the constant (e.g., carry flag) + alu_post_adder_result <= alu_add_result + post_adder_constant; + + -- When rounding is used set 24 LSBs to zero! + if alu_ctrl.rounding_used = "01" then + alu_post_adder_result(23 downto 0) <= (others => '0'); + end if; + end process; + + + + alu_select_new_accu: process(alu_post_adder_result, alu_logic_conj, alu_ctrl) is + begin + if alu_ctrl.logic_function /= "000" then + modified_accu_int <= alu_logic_conj; + else + modified_accu_int <= alu_post_adder_result(55 downto 0); + end if; + end process; + + + -- contains the 24*24 bit fractional multiplier + alu_multiplier : process(register_file, alu_ctrl) is + variable src_op1: signed(23 downto 0); + variable src_op2: signed(23 downto 0); + variable mul_result_interm : signed(47 downto 0); + begin + -- select source operands for multiplication + case alu_ctrl.mul_op1 is + when "00" => src_op1 := register_file.x0; + when "01" => src_op1 := register_file.x1; + when "10" => src_op1 := register_file.y0; + when others => src_op1 := register_file.y1; + end case; + case alu_ctrl.mul_op2 is + when "00" => src_op2 := register_file.x0; + when "01" => src_op2 := register_file.x1; + when "10" => src_op2 := register_file.y0; + when others => src_op2 := register_file.y1; + end case; + + -- perform integer multiplication + mul_result_interm := src_op1 * src_op2; + + -- sign extension of result + alu_multiplier_out(55 downto 48) <= (others => mul_result_interm(47)); + -- convert from two's complement representation to fractional format + -- signed integer multiplication delivers twice the sign bit, but only one is needed for the + -- fractional multiplication, so remove one and append a zero to the result + alu_multiplier_out(47 downto 0) <= mul_result_interm(46 downto 0) & '0'; + + end process alu_multiplier; + + + -- contains the data shifter + alu_shifter: process(register_file, alu_ctrl, norm_instr_asl, norm_instr_asr) is + variable src_accu : signed(55 downto 0); + variable shift_to_perform : alu_shift_mode; + begin + -- read source accumulator + if alu_ctrl.shift_src = '0' then + src_accu := register_file.a; + else + src_accu := register_file.b; + end if; + + alu_shifter_carry_out <= '0'; + alu_shifter_overflow_out <= '0'; + + -- NORM instruction determines the shift value just + -- in time, so overwrite the flag from the alu_ctrl + -- for this instruction by the calculated value + if alu_ctrl.norm_instr = '0' then + shift_to_perform := alu_ctrl.shift_mode; + else + if norm_instr_asl = '1' then + shift_to_perform := SHIFT_LEFT; + elsif norm_instr_asr = '1' then + shift_to_perform := SHIFT_RIGHT; + else + shift_to_perform := NO_SHIFT; + end if; + end if; + + case shift_to_perform is + when NO_SHIFT => + alu_shifter_out <= src_accu; + when SHIFT_LEFT => + -- ASL, ADDL, DIV? + if alu_ctrl.word_24_update = '0' then + -- special handling for div instruction required + if alu_ctrl.div_instr = '1' then + alu_shifter_out <= src_accu(54 downto 0) & register_file.sr(C_FLAG); + else + alu_shifter_out <= src_accu(54 downto 0) & '0'; + end if; + alu_shifter_carry_out <= src_accu(55); + -- detect overflow that results from left shifting + -- Needed for ASL, ADDL, DIV instructions + if src_accu(55) /= src_accu(54) then + alu_shifter_overflow_out <= '1'; + end if; + -- LSL/ROL? + elsif alu_ctrl.word_24_update = '1' then + alu_shifter_out(55 downto 48) <= src_accu(55 downto 48); + alu_shifter_out(23 downto 0) <= src_accu(23 downto 0); + alu_shifter_carry_out <= src_accu(47); + if alu_ctrl.rotate = '0' then -- LSL ? + alu_shifter_out(47 downto 24) <= src_accu(46 downto 24) & '0'; + else -- ROL ? + alu_shifter_out(47 downto 24) <= src_accu(46 downto 24) & register_file.sr(C_FLAG); + end if; + end if; + when SHIFT_RIGHT => + -- ASR? + if alu_ctrl.word_24_update = '0' then + alu_shifter_out <= src_accu(55) & src_accu(55 downto 1); + alu_shifter_carry_out <= src_accu(0); + -- LSR/ROR? + elsif alu_ctrl.word_24_update = '1' then + alu_shifter_out(55 downto 48) <= src_accu(55 downto 48); + alu_shifter_out(23 downto 0) <= src_accu(23 downto 0); + alu_shifter_carry_out <= src_accu(24); + if alu_ctrl.rotate = '0' then -- LSR + alu_shifter_out(47 downto 24) <= '0' & src_accu(47 downto 25); + else -- ROR + alu_shifter_out(47 downto 24) <= register_file.sr(C_FLAG) & src_accu(47 downto 25); + end if; + end if; + when ZEROS => + alu_shifter_out <= (others => '0'); + end case; + end process alu_shifter; + + + -- Special handling for NORM instruction + -- Determine which case occurs (see User's Manual for more information) + norm_instr_logic: process(register_file, addr_r_in) is + begin + norm_instr_asl <= '0'; + norm_instr_asr <= '0'; + + -- Either left shift + if register_file.sr(E_FLAG) = '0' and + register_file.sr(U_FLAG) = '1' and + register_file.sr(Z_FLAG) = '0' then + norm_instr_asl <= '1'; + norm_update_ccr <= '1'; + addr_r_out <= addr_r_in - 1; + -- Or right shift + elsif register_file.sr(E_FLAG) = '1' then + norm_instr_asr <= '1'; + norm_update_ccr <= '1'; + addr_r_out <= addr_r_in + 1; + -- Or do nothing! + else + norm_update_ccr <= '0'; + addr_r_out <= addr_r_in; + end if; + end process; + +end architecture; diff --git a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_bit_modify.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_bit_modify.vhd new file mode 100644 index 0000000..68fecbb --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_bit_modify.vhd @@ -0,0 +1,79 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_bit_modify is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + src_operand : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + dst_operand : out std_logic_vector(23 downto 0); + bit_cond_met : out std_logic; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + + +architecture rtl of exec_stage_bit_modify is + + signal operand_bit : std_logic; + signal src_operand_32 : std_logic_vector(31 downto 0); + +begin + + -- this is just a helper signal to prevent the simulator + -- to stop when accessing a bit > 23. + src_operand_32 <= "00000000" & src_operand; + -- read the bit we want to test (and modify) + operand_bit <= src_operand_32(to_integer(unsigned(instr_word(4 downto 0)))); + + -- modify the Carry flag only for the bit modify instructions! + modify_sr <= '1' when instr_array = INSTR_BCLR or instr_array = INSTR_BSET or instr_array = INSTR_BCHG or instr_array = INSTR_BTST else '0'; + modified_sr <= register_file.sr(15 downto 1) & operand_bit; + + bit_operation: process(instr_word, instr_array, src_operand, operand_bit) is + variable new_bit : std_logic; + begin + -- do nothing by default! + dst_operand <= src_operand; + bit_cond_met <= '0'; + + -- determine which bit to write + if instr_array = INSTR_BCLR then + new_bit := '0'; + elsif instr_array = INSTR_BSET then + new_bit := '1'; + else -- BCHG + new_bit := not operand_bit; + end if; + + if instr_array = INSTR_BCLR or instr_array = INSTR_BSET or instr_array = INSTR_BCHG then + dst_operand(to_integer(unsigned(instr_word(4 downto 0)))) <= new_bit; + end if; + + + -- check for the jump instructions whether condition is met or not! + if instr_array = INSTR_JCLR or instr_array = INSTR_JSCLR then + if operand_bit = '0' then + bit_cond_met <= '1'; + else + bit_cond_met <= '0'; + end if; + end if; + if instr_array = INSTR_JSET or instr_array = INSTR_JSSET then + if operand_bit = '0' then + bit_cond_met <= '0'; + else + bit_cond_met <= '1'; + end if; + end if; + + end process; + + +end architecture; diff --git a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_branch.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_branch.vhd new file mode 100644 index 0000000..9b07913 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_branch.vhd @@ -0,0 +1,117 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_branch is port( + activate_exec_bra : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + jump_address : in unsigned(BW_ADDRESS-1 downto 0); + bit_cond_met : in std_logic; + cc_flag_set : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + + +architecture rtl of exec_stage_branch is + + signal branch_condition_met : std_logic; + signal modify_pc_int : std_logic; + +begin + + modify_pc_int <= '1' when activate_exec_bra = '1' and branch_condition_met = '1' else '0'; + modify_pc <= modify_pc_int; + + calculate_branch_condition : process(instr_word, instr_array, register_file, bit_cond_met) + begin + branch_condition_met <= '0'; + + -- unconditional jumps + if instr_array = INSTR_JMP or + instr_array = INSTR_JSR or + instr_array = INSTR_RTI or + instr_array = INSTR_RTS then + -- jump always + branch_condition_met <= '1'; + end if; + -- then see whether the branch condition is satisfied + if instr_array = INSTR_JCC or instr_array = INSTR_JSCC then + branch_condition_met <= cc_flag_set; + end if; + -- jmp that is executed according to a certain bit condition + if instr_array = INSTR_JCLR or instr_array = INSTR_JSCLR or + instr_array = INSTR_JSET or instr_array = INSTR_JSSET then + branch_condition_met <= bit_cond_met; + end if; + end process calculate_branch_condition; + + + calculate_branch_target : process(instr_array, instr_word, jump_address) + begin + modified_pc <= jump_address; + + -- address calculation is the same for the following instructions + if instr_array = INSTR_JMP or + instr_array = INSTR_JCC or + instr_array = INSTR_JSCC or + instr_array = INSTR_JSR then + if instr_word(18) = '1' then + -- short jump address included in opcode (bits 11 downto 0) + modified_pc(11 downto 0) <= unsigned(instr_word(11 downto 0)); + elsif instr_word(18) = '0' then + -- effective address defined by opcode and coming from address generator unit + modified_pc <= jump_address; + end if; + end if; + + -- jump address contains the obligatory address of the second + -- instruction word + if instr_array = INSTR_JCLR or + instr_array = INSTR_JSET or + instr_array = INSTR_JSCLR or + instr_array = INSTR_JSSET then + modified_pc <= jump_address; + end if; + + -- target address is stored on the stack + if instr_array = INSTR_RTS or + instr_array = INSTR_RTI then + modified_pc <= unsigned(register_file.current_ssh); + end if; + end process calculate_branch_target; + + -- Subroutine functions need to store PC and SR on the stack + push_stack.valid <= '1' when modify_pc_int = '1' and (instr_array = INSTR_JSCC or instr_array = INSTR_JSR or + instr_array = INSTR_JSCLR or instr_array = INSTR_JSSET) else '0'; + push_stack.content <= PC_AND_SR; + -- pc is set externally! + push_stack.pc <= (others => '0'); + + -- RTI/RTS instructions need to read from the stack + pop_stack.valid <= '1' when modify_pc_int = '1' and (instr_array = INSTR_RTI or instr_array = INSTR_RTS) else '0'; + + -- some instructions require to set the SR + calculate_status_register : process(instr_array) + begin + modify_sr <= '0'; + modified_sr <= (others => '0'); + if instr_array = INSTR_RTI then + modify_sr <= '1'; + modified_sr <= register_file.current_ssl; + end if; + end process calculate_status_register; + + +end architecture rtl; diff --git a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cc_flag_calc.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cc_flag_calc.vhd new file mode 100644 index 0000000..63a0b2c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cc_flag_calc.vhd @@ -0,0 +1,75 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_cc_flag_calc is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + cc_flag_set : out std_logic +); +end entity; + + +architecture rtl of exec_stage_cc_flag_calc is + + +begin + + calculate_cc_flag : process(instr_word, instr_array, register_file) + + variable cc_select : std_logic_vector(3 downto 0); + + procedure calculate_cc_flag(cc: std_logic_vector(3 downto 0)) is + variable c_flag : std_logic := register_file.ccr(0); + variable v_flag : std_logic := register_file.ccr(1); + variable z_flag : std_logic := register_file.ccr(2); + variable n_flag : std_logic := register_file.ccr(3); + variable u_flag : std_logic := register_file.ccr(4); + variable e_flag : std_logic := register_file.ccr(5); + variable l_flag : std_logic := register_file.ccr(6); + + begin + if (cc = "0000" and c_flag = '0') or -- CC: carry clear + (cc = "1000" and c_flag = '1') or -- CS: carry set + (cc = "0101" and e_flag = '0') or -- EC: extension clear + (cc = "1010" and z_flag = '1') or -- EQ: equal + (cc = "1101" and e_flag = '1') or -- ES: extension set + (cc = "0001" and (n_flag = v_flag)) or -- GE: greater than or equal + (cc = "0001" and ((n_flag xor v_flag) or z_flag) = '0') or -- GT: greater than + (cc = "0110" and l_flag = '0') or -- LC: limit clear + (cc = "1111" and ((n_flag xor v_flag) or z_flag ) = '1') or -- LE: less or equal + (cc = "1110" and l_flag = '1') or -- LS: limit set + (cc = "1001" and (n_flag /= v_flag)) or -- LT: less than + (cc = "1011" and n_flag = '1') or -- MI: minus + (cc = "0010" and z_flag = '0') or -- NE: not equal + (cc = "1100" and (( not u_flag and not e_flag) or z_flag) = '1') or -- NR: normalized + (cc = "0011" and n_flag = '0') or -- PL: plus + (cc = "0100" and (( not u_flag and not e_flag ) or z_flag) = '0') -- NN: not normalized + then + cc_flag_set <= '1'; + end if; + end procedure; + + begin + + cc_flag_set <= '0'; + + -- Rip the flags we have to test for from the instruction word + if (instr_array = INSTR_JCC and instr_word(18) = '0') or + (instr_array = INSTR_JSCC) then + cc_select := instr_word(3 downto 0); + else + cc_select := instr_word(15 downto 12); + end if; + + calculate_cc_flag(cc_select); + + end process; + + +end architecture; diff --git a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cr_mod.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cr_mod.vhd new file mode 100644 index 0000000..c236db7 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cr_mod.vhd @@ -0,0 +1,72 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_cr_mod is port ( + activate_exec_cr_mod : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0); + modify_omr : out std_logic; + modified_omr : out std_logic_vector(7 downto 0) +); +end exec_stage_cr_mod; + + +architecture rtl of exec_stage_cr_mod is + +begin + + process(activate_exec_cr_mod, instr_word, instr_array, register_file) is + variable imm8 : std_logic_vector(7 downto 0); + variable op8 : std_logic_vector(7 downto 0); + variable res8 : std_logic_vector(7 downto 0); + begin + modify_sr <= '0'; + modify_omr <= '0'; + modified_sr <= (others => '0'); + modified_omr <= (others => '0'); + + imm8 := instr_word(15 downto 8); + if instr_word(1 downto 0) = "00" then + -- read MR + op8 := register_file.mr; + elsif instr_word(1 downto 0) = "01" then + -- read CCR + op8 := register_file.ccr; + else -- instr_word(1 downto 0) = "10" + -- read OMR + op8 := register_file.omr; + end if; + + if instr_array = INSTR_ANDI then + res8 := imm8 and op8; + else -- instr_array = INSTR_ORI + res8 := imm8 or op8; + end if; + + -- only write the result when activated + if activate_exec_cr_mod = '1' then + if instr_word(1 downto 0) = "00" then + -- update MR + modify_sr <= '1'; + modified_sr <= res8 & register_file.ccr; + elsif instr_word(1 downto 0) = "01" then + -- update CCR + modify_sr <= '1'; + modified_sr <= register_file.mr & res8; + elsif instr_word(1 downto 0) = "10" then + -- update OMR + modify_omr <= '1'; + modified_omr <= res8; + end if; + end if; + end process; + +end architecture; diff --git a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_loops.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_loops.vhd new file mode 100644 index 0000000..cc32692 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_loops.vhd @@ -0,0 +1,200 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_loop is port( + clk, rst : in std_logic; + activate_exec_loop : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + loop_iterations : in unsigned(15 downto 0); + loop_address : in unsigned(BW_ADDRESS-1 downto 0); + loop_start_address: in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + fetch_perform_enddo: in std_logic; + memory_stall : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + stall_rep : out std_logic; + stall_do : out std_logic; + decrement_lc : out std_logic; + modify_lc : out std_logic; + modified_lc : out unsigned(15 downto 0); + modify_la : out std_logic; + modified_la : out unsigned(15 downto 0); + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + + +architecture rtl of exec_stage_loop is + + signal rep_loop_polling : std_logic; + signal do_loop_polling : std_logic; + signal enddo_polling : std_logic; + signal lc_temp : unsigned(15 downto 0); + signal rf_lc_eq_1 : std_logic; + signal memory_stall_t : std_logic; + +begin + + modified_pc <= loop_start_address; + + + -- loop counter in register file equal to 1? + rf_lc_eq_1 <= '1' when register_file.lc = 1 else '0'; + + process(activate_exec_loop, instr_array, register_file, fetch_perform_enddo, + rep_loop_polling, loop_iterations, rf_lc_eq_1, loop_start_address) is + begin + stall_rep <= '0'; + stall_do <= '0'; + + modify_la <= '0'; + modify_lc <= '0'; + modify_pc <= '0'; + modify_sr <= '0'; + modified_la <= loop_address; + modified_lc <= loop_iterations; -- default + -- set the loop flag LF (bit 15) of Status register + modified_sr(15) <= '1'; + modified_sr(14 downto 0) <= register_file.sr(14 downto 0); + + push_stack.valid <= '0'; -- push PC and SR on the stack + push_stack.pc <= loop_start_address; + push_stack.content <= LA_AND_LC; + + pop_stack.valid <= '0'; + decrement_lc <= '0'; + ------------------ + -- DO instruction + ------------------ + if activate_exec_loop = '1' and instr_array = INSTR_DO then + -- first instruction of the do loop instruction? + if do_loop_polling = '0' then + stall_do <= '1'; + modify_lc <= '1'; -- store the new loop counter + modify_la <= '1'; -- store the new loop address + push_stack.valid <= '1'; -- push LA and LC on the stack + push_stack.content <= LA_AND_LC; + else -- second clock cycle of the do loop instruction ? + push_stack.valid <= '1'; -- push PC and SR on the stack + push_stack.pc <= loop_start_address; + push_stack.content <= PC_AND_SR; + -- set the PC to the first instruction of the loop + -- the already fetched instruction are flushed from the pipeline + -- this prevents problems, when the loop consists of only one or two instructions + modify_pc <= '1'; + -- set the loop flag + modify_sr <= '1'; + end if; + end if; + ----------------------------------------------- + -- ENDDO instruction / loop end in fetch stage + ----------------------------------------------- + if (activate_exec_loop = '1' and instr_array = INSTR_ENDDO) or fetch_perform_enddo = '1' or enddo_polling = '1' then + pop_stack.valid <= '1'; + if enddo_polling = '0' then + -- only restore the LF from the stack + modified_sr(15) <= register_file.current_ssl(15); + modify_sr <= '1'; + stall_do <= '1'; -- stall one clock cycle + else + -- restore loop counter and loop address in second clock cycle + modified_lc <= unsigned(register_file.current_ssl); + modify_lc <= '1'; + modified_la <= unsigned(register_file.current_ssh); + modify_la <= '1'; + end if; + end if; + ------------------- + -- REP instruction + ------------------- + if activate_exec_loop = '1' and instr_array = INSTR_REP then + -- only do something when there are more than 1 iterations + -- the first execution is already on the way + if loop_iterations /= 1 then + stall_rep <= '1'; -- stall the fetch and decode stages + modify_lc <= '1'; -- store the loop counter + modified_lc <= loop_iterations - 1; + end if; + end if; + + -- keep processing the single instruction + if rep_loop_polling = '1' then + stall_rep <= '1'; + -- if the REP instruction cause a stall do not modify the lc! + if memory_stall_t = '0' then + if rf_lc_eq_1 = '0' then + decrement_lc <= '1'; + -- when the instruction to repeat caused a memory stall + -- do not continue! + else + -- finish the REP instruction by restoring the LC + stall_rep <= '0'; + modify_lc <= '1'; + modified_lc <= lc_temp; + end if; + end if; + end if; + end process; + + + -- process that allows to remember that we are processing a REP/DO instruction + -- even though the REP instruction is not available in the pipeline anymore + -- also store the old loop counter + process(clk) is + begin + if rising_edge(clk) then + if rst = '1' then + rep_loop_polling <= '0'; + do_loop_polling <= '0'; + enddo_polling <= '0'; + lc_temp <= (others => '0'); + memory_stall_t <= '0'; + else + memory_stall_t <= memory_stall; + + if activate_exec_loop = '1' and instr_array = INSTR_REP then + -- only do something when there are more than 1 iterations + -- the first execution is already on the way + if loop_iterations /= 1 then + rep_loop_polling <= '1'; + lc_temp <= register_file.lc; + end if; + end if; + -- test whether the REP instruction has been executed + if rep_loop_polling = '1' and rf_lc_eq_1 = '1' and memory_stall_t = '0' then + rep_loop_polling <= '0'; + end if; + + -- do loop execution takes two clock cycles + -- in the first clock cycle we store loop address and loop counter on the stack + -- in the second clock cycle we store programm counter and status register on the stack + if activate_exec_loop = '1' and instr_array = INSTR_DO then + do_loop_polling <= '1'; + end if; + -- clear the flag immediately again (only two cycles execution time!) + if do_loop_polling = '1' then + do_loop_polling <= '0'; + end if; + + -- ENDDO instructions take two clock cycles as well! + if (activate_exec_loop = '1' and instr_array = INSTR_ENDDO) or fetch_perform_enddo = '1' then + enddo_polling <= '1'; + end if; + if enddo_polling = '1' then + enddo_polling <= '0'; + end if; + end if; + end if; + end process; + +end architecture; diff --git a/FPGA_by_Gregory_Estrade/DSP/src/fetch_stage.vhd b/FPGA_by_Gregory_Estrade/DSP/src/fetch_stage.vhd new file mode 100644 index 0000000..6b22f09 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/fetch_stage.vhd @@ -0,0 +1,60 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; + + +entity fetch_stage is port( + + pc_old : in unsigned(BW_ADDRESS-1 downto 0); + pc_new : out unsigned(BW_ADDRESS-1 downto 0); + modify_pc : in std_logic; + modified_pc : in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + decrement_lc : out std_logic; + perform_enddo : out std_logic + +); +end fetch_stage; + + +architecture rtl of fetch_stage is + + +begin + + pc_calculation: process(pc_old, modify_pc, modified_pc, register_file) is + begin + decrement_lc <= '0'; + perform_enddo <= '0'; + + -- by default increment pc by one + pc_new <= pc_old + 1; + if modify_pc = '1' then + pc_new <= modified_pc; + end if; + -- Loop Flag set? + if register_file.sr(15) = '1' then + if register_file.la = pc_old then + -- Loop not finished? + -- => start from the beginning if necessary + if register_file.lc /= 1 then + -- if the last address was LA and the loop is not finished yet, we have to + -- read now from the beginning of the loop again + pc_new <= unsigned(register_file.current_ssh(BW_ADDRESS-1 downto 0)); + -- decrement loop counter + decrement_lc <= '1'; + else + -- loop done! + -- => tell the loop controller in the exec stage to perform the enddo operation + -- (without flushing of the pipeline!) + perform_enddo <= '1'; + end if; + end if; + end if; + end process pc_calculation; + +end architecture rtl; + diff --git a/FPGA_by_Gregory_Estrade/DSP/src/mem_control.vhd b/FPGA_by_Gregory_Estrade/DSP/src/mem_control.vhd new file mode 100644 index 0000000..091fcf0 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/mem_control.vhd @@ -0,0 +1,1519 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; + +entity mem_control is + generic( + mem_type : memory_type := P_MEM + ); + port( + clk, rst : in std_logic; + rd_addr : in unsigned(BW_ADDRESS-1 downto 0); + rd_en : in std_logic; + data_out : out std_logic_vector(23 downto 0); + data_out_valid : out std_logic; + wr_addr : in unsigned(BW_ADDRESS-1 downto 0); + wr_en : in std_logic; + wr_accomplished : out std_logic; + data_in : in std_logic_vector(23 downto 0) + ); +end entity mem_control; + + +architecture rtl of mem_control is + + signal int_mem_rd_addr : std_logic_vector(7 downto 0); + type int_mem_type is array(0 to 255) of std_logic_vector(23 downto 0); + signal int_mem : int_mem_type; + signal int_pmem : int_mem_type := ( +-- ABS begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"200026", +--X"56F400", +--X"E00000", +--X"200026", +--X"56F400", +--X"000000", +--X"200026", +--X"52F400", +--X"000080", +--X"200026", +-- ABS end + +-- ADC begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"200039", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"200039", +-- ADC end + +-- ADD begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"200038", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"200038", +-- ADD end + +-- ADDL begin +--X"56F400", +--X"000055", +--X"20001B", +--X"51F400", +--X"000055", +--X"0000B9", +--X"20001A", +--X"56F400", +--X"0000AA", +--X"20001A", +--X"53F400", +--X"000080", +--X"20001A", +-- ADDL end + +-- ADDR begin +--X"56F400", +--X"000055", +--X"20001B", +--X"51F400", +--X"000055", +--X"0000B9", +--X"20000A", +--X"56F400", +--X"0000AA", +--X"20000A", +--X"53F400", +--X"000080", +--X"20000A", +-- ADDR end + +-- AND begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005E", +--X"46F400", +--X"FFF000", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005E", +--X"46F400", +--X"000000", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005E", +-- AND end + +-- EOR begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"FF00FF", +--X"0000B9", +--X"20005B", +--X"46F400", +--X"FFFFFF", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005B", +-- EOR end + +-- OR begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"FF00FF", +--X"0000B9", +--X"20005A", +--X"46F400", +--X"000000", +--X"57F400", +--X"000000", +--X"0000B9", +--X"20005A", +-- OR end + +-- NOT begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"7F00FF", +--X"0000B9", +--X"20001F", +--X"46F400", +--X"000000", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20001F", +-- NOT end + +-- ASL begin +--X"20001B", +--X"51F400", +--X"0000A5", +--X"55F400", +--X"0000A5", +--X"53F400", +--X"0000A5", +--X"0000B9", +--X"20003A", +-- ASL end + +-- ASR begin +--X"20001B", +--X"51F400", +--X"0000A5", +--X"55F400", +--X"0000A5", +--X"53F400", +--X"0000A5", +--X"0000B9", +--X"20002A", +-- ASR end + +-- CLR begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"200013", +--X"56F400", +--X"E00000", +--X"0000B9", +--X"0001F9", +--X"200013", +-- CLR end + +-- CMP begin +--X"2F2000", +--X"262400", +--X"0000B9", +--X"20005D", +--X"2F2000", +--X"262000", +--X"0000B9", +--X"20005D", +--X"2F2400", +--X"262000", +--X"0000B9", +--X"20005D", +--X"57F400", +--X"800AAA", +--X"262000", +--X"0000B9", +--X"20005D", +--X"46F400", +--X"800AAA", +--X"2F2000", +--X"0000B9", +--X"20005D", +-- CMP end + +-- CMPM begin +--X"2F2000", +--X"262400", +--X"0000B9", +--X"20005F", +--X"2F2000", +--X"262000", +--X"0000B9", +--X"20005F", +--X"2F2400", +--X"262000", +--X"0000B9", +--X"20005F", +--X"57F400", +--X"800AAA", +--X"262000", +--X"0000B9", +--X"20005F", +--X"46F400", +--X"800AAA", +--X"2F2000", +--X"0000B9", +--X"20005F", +-- CMPM end + +-- DIV begin +--X"00FEB9", +--X"44F400", +--X"600000", +--X"56F400", +--X"200000", +--X"0618A0", +--X"018040", +--X"210E00", +-- DIV end + +-- LSL begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200033", +-- LSL end + +-- LSR begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200023", +-- LSR end + +-- MPY begin +--X"0000B9", +--X"44F400", +--X"200000", +--X"46F400", +--X"400000", +--X"2000D0", +--X"44F400", +--X"E00000", +--X"46F400", +--X"B9999A", +--X"2000D0", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D0", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D4", +-- MPY end + +-- MAC begin +--X"0000B9", +--X"200013", +--X"2A8000", +--X"44F400", +--X"200000", +--X"46F400", +--X"400000", +--X"2000D6", +--X"44F400", +--X"E00000", +--X"46F400", +--X"B9999A", +--X"2000D2", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D2", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D6", +-- MAC end + +-- MACR begin +--X"0000B9", +--X"200013", +--X"2E1000", +--X"44F400", +--X"123456", +--X"46F400", +--X"123456", +--X"2000D3", +--X"56F400", +--X"100001", +--X"44F400", +--X"123456", +--X"46F400", +--X"123456", +--X"2000D3", +--X"2E1000", +--X"50F400", +--X"800000", +--X"44F400", +--X"123456", +--X"46F400", +--X"123456", +--X"2000D3", +-- MACR end + +-- MPYR begin +--X"0000B9", +--X"46F400", +--X"654321", +--X"200095", +-- MPYR end + +-- NEG begin +--X"0000B9", +--X"56F400", +--X"654321", +--X"200036", +--X"200013", +--X"52F400", +--X"000080", +--X"200036", +--X"56F400", +--X"800000", +--X"200036", +-- NEG end + +-- NORM begin +X"200013", +X"2C0100", +X"200003", +X"062FA0", +X"01DB15", +X"200013", +X"2EFF00", +X"2A8400", +X"200003", +X"062FA0", +X"01D915", +X"200013", +X"062FA0", +X"01DA15", +-- NORM end + +-- RND begin +--X"0000B9", +--X"54F400", +--X"123456", +--X"50F400", +--X"789ABC", +--X"200011", +--X"54F400", +--X"123456", +--X"50F400", +--X"800000", +--X"200011", +--X"54F400", +--X"123455", +--X"50F400", +--X"800000", +--X"200011", +-- RND end + +-- ROR begin +--X"0000B9", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200027", +-- ROR end + +-- ROL begin +--X"0000B9", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200037", +-- ROL end + + +-- SUB begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20003C", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20003C", +--X"20001B", +--X"53F400", +--X"000080", +--X"47F400", +--X"000001", +--X"20007C", +-- SUB end + +-- SUBL begin +--X"50F400", +--X"000000", +--X"54F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20001E", +--X"54F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20001E", +--X"20001B", +--X"53F400", +--X"000080", +--X"54F400", +--X"000001", +--X"20001E", +-- SUBL end + +-- SUBR begin +--X"50F400", +--X"000000", +--X"54F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20000E", +--X"54F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20000E", +--X"20001B", +--X"53F400", +--X"000080", +--X"54F400", +--X"000001", +--X"20000E", +-- SUBR end + +-- SBC begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20003D", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20003D", +--X"20001B", +--X"53F400", +--X"000080", +--X"47F400", +--X"000001", +--X"20003D", +-- SBC end + +-- TCC begin +--X"311400", +--X"44F400", +--X"ABCDEF", +--X"57F400", +--X"123456", +--X"0000B9", +--X"038143", +--X"03014A", +--X"0004F9", +--X"03A143", +--X"03214A", +-- TCC end + +-- TFR begin +--X"56F400", +--X"ABCDEF", +--X"57F400", +--X"123456", +--X"21EE09", +--X"44F400", +--X"555555", +--X"47F400", +--X"AAAAAA", +--X"21C441", +--X"21E679", +-- TFR end + +-- TST begin +--X"20001B", +--X"20000B", +--X"0000B9", +--X"0001F9", +--X"53F400", +--X"000080", +--X"20000B", +--X"53F400", +--X"00007F", +--X"20000B", +-- TST end + + +--X"2AFF00", +--X"54F400", +--X"FFFFFF", +--X"50F400", +--X"FFFFF2", +--X"200026", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +--X"44F400", +--X"100010", +--X"45F400", +--X"100011", +--X"0B5880", +--X"000017", +--X"46F400", +--X"100026", +--X"47F400", +--X"100027", +--X"425800", +--X"435800", +--X"420A00", +--X"431F00", +--X"437000", +--X"0000A0", +--X"427000", +--X"00004F", +-- X"42F800", +-- X"43F800", +-- X"428A00", +-- X"439F00", +-- "001100000100100000000000", -- 0 move #72,r0 +-- "001110000000100000000000", -- 1 move #8,n0 +-- "000001010000000010100000", -- 2 move #0,m0 +-- "000001010001000010100001", -- 3 move #16,m1 +-- "000001101110000100100000", -- 4 rep m1 +-- "010001001100100000000000", -- 5 move x:(r0)+n0,x0 +-- "000000000000000000000000", -- 6 +-- "000000000000000000000000", -- 7 +-- "000000000000000000000000", -- 8 +-- "000000000000000000000000", -- 9 +-- "000000000000000000000000", -- 10 +-- "000000000000000000000000", -- 11 +-- "000000000000000000000000", -- 12 +-- "000000000000000000000000", -- 13 +-- "000000000000000000000000", -- 14 +-- "000000000000000000000000", -- 15 +-- "000000000000000000000000", -- 16 +-- "000000000000000000000000", -- 17 +-- "000000000000000000000000", -- 18 +-- "000000000000000000000000", -- 19 +-- "000010101101101010000000", -- 20 -- JMP (r2)+ +-- "000000000000000000000000", -- 20 +-- "000000000000000000000000", -- 21 +-- "000000000000000000000000", -- 22 + "000000000000000000000000", -- 23 + "000000000000000000000000", -- 24 + "000000000000000000000000", -- 25 + "000000000000000000000000", -- 26 + "000000000000000000000000", -- 27 + "000000000000000000000000", -- 28 + "000000000000000000000000", -- 29 + "000000000000000000000000", -- 30 + "000000000000000000000000", -- 31 +-- "000000000000000000000000", -- 32 +-- "000011010000000000000000", -- 32 -- JSR #0 + "000010111111000010000000", -- 32 -- JSR absolute + "000000000000000001000000", -- 33 -- #64 + "000000000000000000000000", -- 34 + "000000000000000000000000", -- 35 + "000000000000000000000000", -- 36 + "000000000000000000000000", -- 37 + "000000000000000000000000", -- 38 + "000000000000000000000000", -- 39 + "000000000000000000000000", -- 40 + "000000000000000000000000", -- 41 + "000000000000000000000000", -- 42 + "000000000000000000000000", -- 43 + "000000000000000000000000", -- 44 + "000000000000000000000000", -- 45 + "000000000000000000000000", -- 46 + "000000000000000000000000", -- 47 + "000000000000000000000000", -- 48 + "000000000000000000000000", -- 49 + "000000000000000000000000", -- 50 + "000000000000000000000000", -- 51 + "000000000000000000000000", -- 52 + "000000000000000000000000", -- 53 + "000000000000000000000000", -- 54 + "000000000000000000000000", -- 55 + "000000000000000000000000", -- 56 + "000000000000000000000000", -- 57 + "000000000000000000000000", -- 58 + "000000000000000000000000", -- 59 + "000000000000000000000000", -- 60 + "000000000000000000000000", -- 61 + "000000000000000000000000", -- 62 + "000000000000000000000000", -- 63 + "000000000000000000000000", -- 64 + "000000000000000000000000", -- 65 + "000000000000000000000000", -- 66 + "000000000000000000000000", -- 67 + "000000000000000000000000", -- 68 + "000000000000000000000000", -- 69 + "000000000000000000000100", -- 70 -- RTI + "000000000000000000000000", -- 71 + "000000000000000000000000", -- 72 + "000000000000000000000000", -- 73 + "000000000000000000000000", -- 74 + "000000000000000000000000", -- 75 + "000000000000000000000000", -- 76 + "000000000000000000000000", -- 77 + "000000000000000000000000", -- 78 + "000000000000000000000000", -- 79 + "000000000000000000000000", -- 80 + "000000000000000000000000", -- 81 + "000000000000000000000000", -- 82 + "000000000000000000000000", -- 83 + "000000000000000000000000", -- 84 + "000000000000000000000000", -- 85 + "000000000000000000000000", -- 86 + "000000000000000000000000", -- 87 + "000000000000000000000000", -- 88 + "000000000000000000000000", -- 89 + "000000000000000000000000", -- 90 + "000000000000000000000000", -- 91 + "000000000000000000000000", -- 92 + "000000000000000000000000", -- 93 + "000000000000000000000000", -- 94 + "000000000000000000000000", -- 95 + "000000000000000000000000", -- 96 + "000000000000000000000000", -- 97 + "000000000000000000000000", -- 98 + "000000000000000000000000", -- 99 + "000000000000000000000000", -- 100 + "000000000000000000000000", -- 101 + "000000000000000000000000", -- 102 + "000000000000000000000000", -- 103 + "000000000000000000000000", -- 104 + "000000000000000000000000", -- 105 + "000000000000000000000000", -- 106 + "000000000000000000000000", -- 107 + "000000000000000000000000", -- 108 + "000000000000000000000000", -- 109 + "000000000000000000000000", -- 110 + "000000000000000000000000", -- 111 + "000000000000000000000000", -- 112 + "000000000000000000000000", -- 113 + "000000000000000000000000", -- 114 + "000000000000000000000000", -- 115 + "000000000000000000000000", -- 116 + "000000000000000000000000", -- 117 + "000000000000000000000000", -- 118 + "000000000000000000000000", -- 119 + "000000000000000000000000", -- 120 + "000000000000000000000000", -- 121 + "000000000000000000000000", -- 122 + "000000000000000000000000", -- 123 + "000000000000000000000000", -- 124 + "000000000000000000000000", -- 125 + "000000000000000000000000", -- 126 + "000000000000000000000000", -- 127 + "000000000000000000000000", -- 128 + "000000000000000000000000", -- 129 + "000000000000000000000000", -- 130 + "000000000000000000000000", -- 131 + "000000000000000000000000", -- 132 + "000000000000000000000000", -- 133 + "000000000000000000000000", -- 134 + "000000000000000000000000", -- 135 + "000000000000000000000000", -- 136 + "000000000000000000000000", -- 137 + "000000000000000000000000", -- 138 + "000000000000000000000000", -- 139 + "000000000000000000000000", -- 140 + "000000000000000000000000", -- 141 + "000000000000000000000000", -- 142 + "000000000000000000000000", -- 143 + "000000000000000000000000", -- 144 + "000000000000000000000000", -- 145 + "000000000000000000000000", -- 146 + "000000000000000000000000", -- 147 + "000000000000000000000000", -- 148 + "000000000000000000000000", -- 149 + "000000000000000000000000", -- 150 + "000000000000000000000000", -- 151 + "000000000000000000000000", -- 152 + "000000000000000000000000", -- 153 + "000000000000000000000000", -- 154 + "000000000000000000000000", -- 155 + "000000000000000000000000", -- 156 + "000000000000000000000000", -- 157 + "000000000000000000000000", -- 158 + "000000000000000000000000", -- 159 + "000000000000000000000000", -- 160 + "000000000000000000000000", -- 161 + "000000000000000000000000", -- 162 + "000000000000000000000000", -- 163 + "000000000000000000000000", -- 164 + "000000000000000000000000", -- 165 + "000000000000000000000000", -- 166 + "000000000000000000000000", -- 167 + "000000000000000000000000", -- 168 + "000000000000000000000000", -- 169 + "000000000000000000000000", -- 170 + "000000000000000000000000", -- 171 + "000000000000000000000000", -- 172 + "000000000000000000000000", -- 173 + "000000000000000000000000", -- 174 + "000000000000000000000000", -- 175 + "000000000000000000000000", -- 176 + "000000000000000000000000", -- 177 + "000000000000000000000000", -- 178 + "000000000000000000000000", -- 179 + "000000000000000000000000", -- 180 + "000000000000000000000000", -- 181 + "000000000000000000000000", -- 182 + "000000000000000000000000", -- 183 + "000000000000000000000000", -- 184 + "000000000000000000000000", -- 185 + "000000000000000000000000", -- 186 + "000000000000000000000000", -- 187 + "000000000000000000000000", -- 188 + "000000000000000000000000", -- 189 + "000000000000000000000000", -- 190 + "000000000000000000000000", -- 191 + "000000000000000000000000", -- 192 + "000000000000000000000000", -- 193 + "000000000000000000000000", -- 194 + "000000000000000000000000", -- 195 + "000000000000000000000000", -- 196 + "000000000000000000000000", -- 197 + "000000000000000000000000", -- 198 + "000000000000000000000000", -- 199 + "000000000000000000000000", -- 200 + "000000000000000000000000", -- 201 + "000000000000000000000000", -- 202 + "000000000000000000000000", -- 203 + "000000000000000000000000", -- 204 + "000000000000000000000000", -- 205 + "000000000000000000000000", -- 206 + "000000000000000000000000", -- 207 + "000000000000000000000000", -- 208 + "000000000000000000000000", -- 209 + "000000000000000000000000", -- 210 + "000000000000000000000000", -- 211 + "000000000000000000000000", -- 212 + "000000000000000000000000", -- 213 + "000000000000000000000000", -- 214 + "000000000000000000000000", -- 215 + "000000000000000000000000", -- 216 + "000000000000000000000000", -- 217 + "000000000000000000000000", -- 218 + "000000000000000000000000", -- 219 + "000000000000000000000000", -- 220 + "000000000000000000000000", -- 221 + "000000000000000000000000", -- 222 + "000000000000000000000000", -- 223 + "000000000000000000000000", -- 224 + "000000000000000000000000", -- 225 + "000000000000000000000000", -- 226 + "000000000000000000000000", -- 227 + "000000000000000000000000", -- 228 + "000000000000000000000000", -- 229 + "000000000000000000000000", -- 230 + "000000000000000000000000", -- 231 + "000000000000000000000000", -- 232 + "000000000000000000000000", -- 233 + "000000000000000000000000", -- 234 + "000000000000000000000000", -- 235 + "000000000000000000000000", -- 236 + "000000000000000000000000", -- 237 + "000000000000000000000000", -- 238 + "000000000000000000000000", -- 239 + "000000000000000000000000", -- 240 + "000000000000000000000000", -- 241 + "000000000000000000000000", -- 242 + "000000000000000000000000", -- 243 + "000000000000000000000000", -- 244 + "000000000000000000000000", -- 245 + "000000000000000000000000", -- 246 + "000000000000000000000000", -- 247 + "000000000000000000000000", -- 248 + "000000000000000000000000", -- 249 + "000000000000000000000000", -- 250 + "000000000000000000000000", -- 251 + "000000000000000000000000", -- 252 + "000000000000000000000000", -- 253 + "000000000000000000000000", -- 254 + "000000000000000000000000"); -- 255 + signal int_xmem : int_mem_type := ( +-- when "11------10000000" => instr_array(JMP_INSTR) <= '1'; +-- "000000000000111011111001", -- 0 -- ORI #$0E, CCR + "000000000000000000001100", -- 0 -- REP + "000000000000000000000101", -- 1 -- ORI #$0E, MR + "000000000000111011111010", -- 2 -- ORI #$0E, OMR + "000000000000100010111010", -- 3 -- ANDI #$08, OMR +-- "000010101111000010000000", -- 1 -- JMP absolute +-- "000000000000000000011111", -- 2 -- #31 +-- "000011000000000000010000", -- 3 -- JMP #16 + "000000000000000000000000", -- 4 + "000000000000000000000000", -- 5 + "000000000000000000000000", -- 6 + "000000000000000000000000", -- 7 + "000000000000000000000000", -- 8 + "000000000000000000000000", -- 9 + "000000000000000000000000", -- 10 + "000000000000000000000000", -- 11 + "000000000000000000000000", -- 12 + "000000000000000000000000", -- 13 + "000000000000000000000000", -- 14 + "000000000000000000000000", -- 15 + "000000000000000000000000", -- 16 +-- "000000000000000000000000", -- 17 + "000010101101010110100000", -- 17 -- JCC (r5)- + "000000000000000000000000", -- 18 + "000000000000000000000000", -- 19 + "000010101101101010000000", -- 20 -- JMP (r2)+ + "000000000000000000000000", -- 21 + "000000000000000000000000", -- 22 + "000000000000000000000000", -- 23 + "000000000000000000000000", -- 24 + "000000000000000000000000", -- 25 + "000000000000000000000000", -- 26 + "000000000000000000000000", -- 27 + "000000000000000000000000", -- 28 + "000000000000000000000000", -- 29 + "000000000000000000000000", -- 30 + "000000000000000000000000", -- 31 +-- "000000000000000000000000", -- 32 +-- "000011010000000000000000", -- 32 -- JSR #0 + "000010111111000010000000", -- 32 -- JSR absolute + "000000000000000001000000", -- 33 -- #64 + "000000000000000000000000", -- 34 + "000000000000000000000000", -- 35 + "000000000000000000000000", -- 36 + "000000000000000000000000", -- 37 + "000000000000000000000000", -- 38 + "000000000000000000000000", -- 39 + "000000000000000000000000", -- 40 + "000000000000000000000000", -- 41 + "000000000000000000000000", -- 42 + "000000000000000000000000", -- 43 + "000000000000000000000000", -- 44 + "000000000000000000000000", -- 45 + "000000000000000000000000", -- 46 + "000000000000000000000000", -- 47 + "000000000000000000000000", -- 48 + "000000000000000000000000", -- 49 + "000000000000000000000000", -- 50 + "000000000000000000000000", -- 51 + "000000000000000000000000", -- 52 + "000000000000000000000000", -- 53 + "000000000000000000000000", -- 54 + "000000000000000000000000", -- 55 + "000000000000000000000000", -- 56 + "000000000000000000000000", -- 57 + "000000000000000000000000", -- 58 + "000000000000000000000000", -- 59 + "000000000000000000000000", -- 60 + "000000000000000000000000", -- 61 + "000000000000000000000000", -- 62 + "000000000000000000000000", -- 63 + "000000000000000000000000", -- 64 + "000000000000000000000000", -- 65 + "000000000000000000000000", -- 66 + "000000000000000000000000", -- 67 + "000000000000000000000000", -- 68 + "000000000000000000000000", -- 69 + "000000000000000000000100", -- 70 -- RTI + "000000000000000000000000", -- 71 + "000000000000000000000000", -- 72 + "000000000000000000000000", -- 73 + "000000000000000000000000", -- 74 + "000000000000000000000000", -- 75 + "000000000000000000000000", -- 76 + "000000000000000000000000", -- 77 + "000000000000000000000000", -- 78 + "000000000000000000000000", -- 79 + "000000000000000000000000", -- 80 + "000000000000000000000000", -- 81 + "000000000000000000000000", -- 82 + "000000000000000000000000", -- 83 + "000000000000000000000000", -- 84 + "000000000000000000000000", -- 85 + "000000000000000000000000", -- 86 + "000000000000000000000000", -- 87 + "000000000000000000000000", -- 88 + "000000000000000000000000", -- 89 + "000000000000000000000000", -- 90 + "000000000000000000000000", -- 91 + "000000000000000000000000", -- 92 + "000000000000000000000000", -- 93 + "000000000000000000000000", -- 94 + "000000000000000000000000", -- 95 + "000000000000000000000000", -- 96 + "000000000000000000000000", -- 97 + "000000000000000000000000", -- 98 + "000000000000000000000000", -- 99 + "000000000000000000000000", -- 100 + "000000000000000000000000", -- 101 + "000000000000000000000000", -- 102 + "000000000000000000000000", -- 103 + "000000000000000000000000", -- 104 + "000000000000000000000000", -- 105 + "000000000000000000000000", -- 106 + "000000000000000000000000", -- 107 + "000000000000000000000000", -- 108 + "000000000000000000000000", -- 109 + "000000000000000000000000", -- 110 + "000000000000000000000000", -- 111 + "000000000000000000000000", -- 112 + "000000000000000000000000", -- 113 + "000000000000000000000000", -- 114 + "000000000000000000000000", -- 115 + "000000000000000000000000", -- 116 + "000000000000000000000000", -- 117 + "000000000000000000000000", -- 118 + "000000000000000000000000", -- 119 + "000000000000000000000000", -- 120 + "000000000000000000000000", -- 121 + "000000000000000000000000", -- 122 + "000000000000000000000000", -- 123 + "000000000000000000000000", -- 124 + "000000000000000000000000", -- 125 + "000000000000000000000000", -- 126 + "000000000000000000000000", -- 127 + "000000000000000000000000", -- 128 + "000000000000000000000000", -- 129 + "000000000000000000000000", -- 130 + "000000000000000000000000", -- 131 + "000000000000000000000000", -- 132 + "000000000000000000000000", -- 133 + "000000000000000000000000", -- 134 + "000000000000000000000000", -- 135 + "000000000000000000000000", -- 136 + "000000000000000000000000", -- 137 + "000000000000000000000000", -- 138 + "000000000000000000000000", -- 139 + "000000000000000000000000", -- 140 + "000000000000000000000000", -- 141 + "000000000000000000000000", -- 142 + "000000000000000000000000", -- 143 + "000000000000000000000000", -- 144 + "000000000000000000000000", -- 145 + "000000000000000000000000", -- 146 + "000000000000000000000000", -- 147 + "000000000000000000000000", -- 148 + "000000000000000000000000", -- 149 + "000000000000000000000000", -- 150 + "000000000000000000000000", -- 151 + "000000000000000000000000", -- 152 + "000000000000000000000000", -- 153 + "000000000000000000000000", -- 154 + "000000000000000000000000", -- 155 + "000000000000000000000000", -- 156 + "000000000000000000000000", -- 157 + "000000000000000000000000", -- 158 + "000000000000000000000000", -- 159 + "000000000000000000000000", -- 160 + "000000000000000000000000", -- 161 + "000000000000000000000000", -- 162 + "000000000000000000000000", -- 163 + "000000000000000000000000", -- 164 + "000000000000000000000000", -- 165 + "000000000000000000000000", -- 166 + "000000000000000000000000", -- 167 + "000000000000000000000000", -- 168 + "000000000000000000000000", -- 169 + "000000000000000000000000", -- 170 + "000000000000000000000000", -- 171 + "000000000000000000000000", -- 172 + "000000000000000000000000", -- 173 + "000000000000000000000000", -- 174 + "000000000000000000000000", -- 175 + "000000000000000000000000", -- 176 + "000000000000000000000000", -- 177 + "000000000000000000000000", -- 178 + "000000000000000000000000", -- 179 + "000000000000000000000000", -- 180 + "000000000000000000000000", -- 181 + "000000000000000000000000", -- 182 + "000000000000000000000000", -- 183 + "000000000000000000000000", -- 184 + "000000000000000000000000", -- 185 + "000000000000000000000000", -- 186 + "000000000000000000000000", -- 187 + "000000000000000000000000", -- 188 + "000000000000000000000000", -- 189 + "000000000000000000000000", -- 190 + "000000000000000000000000", -- 191 + "000000000000000000000000", -- 192 + "000000000000000000000000", -- 193 + "000000000000000000000000", -- 194 + "000000000000000000000000", -- 195 + "000000000000000000000000", -- 196 + "000000000000000000000000", -- 197 + "000000000000000000000000", -- 198 + "000000000000000000000000", -- 199 + "000000000000000000000000", -- 200 + "000000000000000000000000", -- 201 + "000000000000000000000000", -- 202 + "000000000000000000000000", -- 203 + "000000000000000000000000", -- 204 + "000000000000000000000000", -- 205 + "000000000000000000000000", -- 206 + "000000000000000000000000", -- 207 + "000000000000000000000000", -- 208 + "000000000000000000000000", -- 209 + "000000000000000000000000", -- 210 + "000000000000000000000000", -- 211 + "000000000000000000000000", -- 212 + "000000000000000000000000", -- 213 + "000000000000000000000000", -- 214 + "000000000000000000000000", -- 215 + "000000000000000000000000", -- 216 + "000000000000000000000000", -- 217 + "000000000000000000000000", -- 218 + "000000000000000000000000", -- 219 + "000000000000000000000000", -- 220 + "000000000000000000000000", -- 221 + "000000000000000000000000", -- 222 + "000000000000000000000000", -- 223 + "000000000000000000000000", -- 224 + "000000000000000000000000", -- 225 + "000000000000000000000000", -- 226 + "000000000000000000000000", -- 227 + "000000000000000000000000", -- 228 + "000000000000000000000000", -- 229 + "000000000000000000000000", -- 230 + "000000000000000000000000", -- 231 + "000000000000000000000000", -- 232 + "000000000000000000000000", -- 233 + "000000000000000000000000", -- 234 + "000000000000000000000000", -- 235 + "000000000000000000000000", -- 236 + "000000000000000000000000", -- 237 + "000000000000000000000000", -- 238 + "000000000000000000000000", -- 239 + "000000000000000000000000", -- 240 + "000000000000000000000000", -- 241 + "000000000000000000000000", -- 242 + "000000000000000000000000", -- 243 + "000000000000000000000000", -- 244 + "000000000000000000000000", -- 245 + "000000000000000000000000", -- 246 + "000000000000000000000000", -- 247 + "000000000000000000000000", -- 248 + "000000000000000000000000", -- 249 + "000000000000000000000000", -- 250 + "000000000000000000000000", -- 251 + "000000000000000000000000", -- 252 + "000000000000000000000000", -- 253 + "000000000000000000000000", -- 254 + "000000000000000000000000"); -- 255 + signal int_ymem : int_mem_type := ( +-- when "11------10000000" => instr_array(JMP_INSTR) <= '1'; +-- "000000000000111011111001", -- 0 -- ORI #$0E, CCR + "000000000000000000000001", -- 0 -- REP + "000000000000000000000010", -- 1 -- ORI #$0E, MR + "000000000000000000000011", -- 2 -- ORI #$0E, OMR + "000000000000000000000100", -- 3 -- ANDI #$08, OMR +-- "000010101111000010000000", -- 1 -- JMP absolute +-- "000000000000000000011111", -- 2 -- #31 +-- "000011000000000000010000", -- 3 -- JMP #16 + "000000000000000000000101", -- 4 + "000000000000000000000110", -- 5 + "000000000000000000000111", -- 6 + "000000000000000000001000", -- 7 + "000000000000000000001001", -- 8 + "000000000000000000001010", -- 9 + "000000000000000000001011", -- 10 + "000000000000000000001100", -- 11 + "000000000000000000001101", -- 12 + "000000000000000000001110", -- 13 + "000000000000000000001111", -- 14 + "000000000000000000010000", -- 15 + "000000000000000000010001", -- 16 +-- "000000000000000000000000", -- 17 + "000010101101010110100000", -- 17 -- JCC (r5)- + "000000000000000000000000", -- 18 + "000000000000000000000000", -- 19 + "000010101101101010000000", -- 20 -- JMP (r2)+ + "000000000000000000000000", -- 21 + "000000000000000000000000", -- 22 + "000000000000000000000000", -- 23 + "000000000000000000000000", -- 24 + "000000000000000000000000", -- 25 + "000000000000000000000000", -- 26 + "000000000000000000000000", -- 27 + "000000000000000000000000", -- 28 + "000000000000000000000000", -- 29 + "000000000000000000000000", -- 30 + "000000000000000000000000", -- 31 +-- "000000000000000000000000", -- 32 +-- "000011010000000000000000", -- 32 -- JSR #0 + "000010111111000010000000", -- 32 -- JSR absolute + "000000000000000001000000", -- 33 -- #64 + "000000000000000000000000", -- 34 + "000000000000000000000000", -- 35 + "000000000000000000000000", -- 36 + "000000000000000000000000", -- 37 + "000000000000000000000000", -- 38 + "000000000000000000000000", -- 39 + "000000000000000000000000", -- 40 + "000000000000000000000000", -- 41 + "000000000000000000000000", -- 42 + "000000000000000000000000", -- 43 + "000000000000000000000000", -- 44 + "000000000000000000000000", -- 45 + "000000000000000000000000", -- 46 + "000000000000000000000000", -- 47 + "000000000000000000000000", -- 48 + "000000000000000000000000", -- 49 + "000000000000000000000000", -- 50 + "000000000000000000000000", -- 51 + "000000000000000000000000", -- 52 + "000000000000000000000000", -- 53 + "000000000000000000000000", -- 54 + "000000000000000000000000", -- 55 + "000000000000000000000000", -- 56 + "000000000000000000000000", -- 57 + "000000000000000000000000", -- 58 + "000000000000000000000000", -- 59 + "000000000000000000000000", -- 60 + "000000000000000000000000", -- 61 + "000000000000000000000000", -- 62 + "000000000000000000000000", -- 63 + "000000000000000000000000", -- 64 + "000000000000000000000000", -- 65 + "000000000000000000000000", -- 66 + "000000000000000000000000", -- 67 + "000000000000000000000000", -- 68 + "000000000000000000000000", -- 69 + "000000000000000000000100", -- 70 -- RTI + "000000000000000000000000", -- 71 + "000000000000000000000000", -- 72 + "000000000000000000000000", -- 73 + "000000000000000000000000", -- 74 + "000000000000000000000000", -- 75 + "000000000000000000000000", -- 76 + "000000000000000000000000", -- 77 + "000000000000000000000000", -- 78 + "000000000000000000000000", -- 79 + "000000000000000000000000", -- 80 + "000000000000000000000000", -- 81 + "000000000000000000000000", -- 82 + "000000000000000000000000", -- 83 + "000000000000000000000000", -- 84 + "000000000000000000000000", -- 85 + "000000000000000000000000", -- 86 + "000000000000000000000000", -- 87 + "000000000000000000000000", -- 88 + "000000000000000000000000", -- 89 + "000000000000000000000000", -- 90 + "000000000000000000000000", -- 91 + "000000000000000000000000", -- 92 + "000000000000000000000000", -- 93 + "000000000000000000000000", -- 94 + "000000000000000000000000", -- 95 + "000000000000000000000000", -- 96 + "000000000000000000000000", -- 97 + "000000000000000000000000", -- 98 + "000000000000000000000000", -- 99 + "000000000000000000000000", -- 100 + "000000000000000000000000", -- 101 + "000000000000000000000000", -- 102 + "000000000000000000000000", -- 103 + "000000000000000000000000", -- 104 + "000000000000000000000000", -- 105 + "000000000000000000000000", -- 106 + "000000000000000000000000", -- 107 + "000000000000000000000000", -- 108 + "000000000000000000000000", -- 109 + "000000000000000000000000", -- 110 + "000000000000000000000000", -- 111 + "000000000000000000000000", -- 112 + "000000000000000000000000", -- 113 + "000000000000000000000000", -- 114 + "000000000000000000000000", -- 115 + "000000000000000000000000", -- 116 + "000000000000000000000000", -- 117 + "000000000000000000000000", -- 118 + "000000000000000000000000", -- 119 + "000000000000000000000000", -- 120 + "000000000000000000000000", -- 121 + "000000000000000000000000", -- 122 + "000000000000000000000000", -- 123 + "000000000000000000000000", -- 124 + "000000000000000000000000", -- 125 + "000000000000000000000000", -- 126 + "000000000000000000000000", -- 127 + "000000000000000000000000", -- 128 + "000000000000000000000000", -- 129 + "000000000000000000000000", -- 130 + "000000000000000000000000", -- 131 + "000000000000000000000000", -- 132 + "000000000000000000000000", -- 133 + "000000000000000000000000", -- 134 + "000000000000000000000000", -- 135 + "000000000000000000000000", -- 136 + "000000000000000000000000", -- 137 + "000000000000000000000000", -- 138 + "000000000000000000000000", -- 139 + "000000000000000000000000", -- 140 + "000000000000000000000000", -- 141 + "000000000000000000000000", -- 142 + "000000000000000000000000", -- 143 + "000000000000000000000000", -- 144 + "000000000000000000000000", -- 145 + "000000000000000000000000", -- 146 + "000000000000000000000000", -- 147 + "000000000000000000000000", -- 148 + "000000000000000000000000", -- 149 + "000000000000000000000000", -- 150 + "000000000000000000000000", -- 151 + "000000000000000000000000", -- 152 + "000000000000000000000000", -- 153 + "000000000000000000000000", -- 154 + "000000000000000000000000", -- 155 + "000000000000000000000000", -- 156 + "000000000000000000000000", -- 157 + "000000000000000000000000", -- 158 + "000000000000000000000000", -- 159 + "000000000000000000000000", -- 160 + "000000000000000000000000", -- 161 + "000000000000000000000000", -- 162 + "000000000000000000000000", -- 163 + "000000000000000000000000", -- 164 + "000000000000000000000000", -- 165 + "000000000000000000000000", -- 166 + "000000000000000000000000", -- 167 + "000000000000000000000000", -- 168 + "000000000000000000000000", -- 169 + "000000000000000000000000", -- 170 + "000000000000000000000000", -- 171 + "000000000000000000000000", -- 172 + "000000000000000000000000", -- 173 + "000000000000000000000000", -- 174 + "000000000000000000000000", -- 175 + "000000000000000000000000", -- 176 + "000000000000000000000000", -- 177 + "000000000000000000000000", -- 178 + "000000000000000000000000", -- 179 + "000000000000000000000000", -- 180 + "000000000000000000000000", -- 181 + "000000000000000000000000", -- 182 + "000000000000000000000000", -- 183 + "000000000000000000000000", -- 184 + "000000000000000000000000", -- 185 + "000000000000000000000000", -- 186 + "000000000000000000000000", -- 187 + "000000000000000000000000", -- 188 + "000000000000000000000000", -- 189 + "000000000000000000000000", -- 190 + "000000000000000000000000", -- 191 + "000000000000000000000000", -- 192 + "000000000000000000000000", -- 193 + "000000000000000000000000", -- 194 + "000000000000000000000000", -- 195 + "000000000000000000000000", -- 196 + "000000000000000000000000", -- 197 + "000000000000000000000000", -- 198 + "000000000000000000000000", -- 199 + "000000000000000000000000", -- 200 + "000000000000000000000000", -- 201 + "000000000000000000000000", -- 202 + "000000000000000000000000", -- 203 + "000000000000000000000000", -- 204 + "000000000000000000000000", -- 205 + "000000000000000000000000", -- 206 + "000000000000000000000000", -- 207 + "000000000000000000000000", -- 208 + "000000000000000000000000", -- 209 + "000000000000000000000000", -- 210 + "000000000000000000000000", -- 211 + "000000000000000000000000", -- 212 + "000000000000000000000000", -- 213 + "000000000000000000000000", -- 214 + "000000000000000000000000", -- 215 + "000000000000000000000000", -- 216 + "000000000000000000000000", -- 217 + "000000000000000000000000", -- 218 + "000000000000000000000000", -- 219 + "000000000000000000000000", -- 220 + "000000000000000000000000", -- 221 + "000000000000000000000000", -- 222 + "000000000000000000000000", -- 223 + "000000000000000000000000", -- 224 + "000000000000000000000000", -- 225 + "000000000000000000000000", -- 226 + "000000000000000000000000", -- 227 + "000000000000000000000000", -- 228 + "000000000000000000000000", -- 229 + "000000000000000000000000", -- 230 + "000000000000000000000000", -- 231 + "000000000000000000000000", -- 232 + "000000000000000000000000", -- 233 + "000000000000000000000000", -- 234 + "000000000000000000000000", -- 235 + "000000000000000000000000", -- 236 + "000000000000000000000000", -- 237 + "000000000000000000000000", -- 238 + "000000000000000000000000", -- 239 + "000000000000000000000000", -- 240 + "000000000000000000000000", -- 241 + "000000000000000000000000", -- 242 + "000000000000000000000000", -- 243 + "000000000000000000000000", -- 244 + "000000000000000000000000", -- 245 + "000000000000000000000000", -- 246 + "000000000000000000000000", -- 247 + "000000000000000000000000", -- 248 + "000000000000000000000000", -- 249 + "000000000000000000000000", -- 250 + "000000000000000000000000", -- 251 + "000000000000000000000000", -- 252 + "000000000000000000000000", -- 253 + "000000000000000000000000", -- 254 + "000000000000000000000000"); -- 255 + +begin + +-- int_mem <= int_pmem when mem_type = P_MEM else +-- int_xmem when mem_type = X_MEM else +-- int_ymem when mem_type = Y_MEM; + + wr_accomplished <= wr_en; + + PMEM_GEN: if mem_type = P_MEM generate + data_out <= int_pmem(to_integer(unsigned(int_mem_rd_addr))); + process(clk) is + begin + if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else + int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); + data_out_valid <= rd_en; + if wr_en = '1' then + int_pmem(to_integer(wr_addr)) <= data_in; + end if; +-- end if; + end if; + end process; + end generate; + + XMEM_GEN: if mem_type = X_MEM generate + data_out <= int_xmem(to_integer(unsigned(int_mem_rd_addr))); + process(clk) is + begin + if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else + int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); + data_out_valid <= rd_en; + if wr_en = '1' then + int_xmem(to_integer(wr_addr)) <= data_in; + end if; +-- end if; + end if; + end process; + end generate; + + YMEM_GEN: if mem_type = Y_MEM generate + data_out <= int_ymem(to_integer(unsigned(int_mem_rd_addr))); + process(clk) is + begin + if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else + int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); + data_out_valid <= rd_en; + if wr_en = '1' then + int_ymem(to_integer(wr_addr)) <= data_in; + end if; +-- end if; + end if; + end process; + end generate; +-- process(clk, rst) is +-- begin +-- if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else +-- int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); +-- data_out_valid <= rd_en; +-- if wr_en = '1' then +-- if mem_type = P_MEM then +-- int_pmem(to_integer(wr_addr)) <= data_in; +-- elsif mem_type = X_MEM then +-- int_xmem(to_integer(wr_addr)) <= data_in; +-- elsif mem_type = Y_MEM then +-- int_ymem(to_integer(wr_addr)) <= data_in; +-- end if; +-- end if; +-- end if; +-- end if; +-- end process; + +end architecture rtl; + diff --git a/FPGA_by_Gregory_Estrade/DSP/src/memory_management.vhd b/FPGA_by_Gregory_Estrade/DSP/src/memory_management.vhd new file mode 100644 index 0000000..6a25ac8 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/memory_management.vhd @@ -0,0 +1,206 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity memory_management is port ( + clk, rst : in std_logic; + stall_flags : in std_logic_vector(PIPELINE_DEPTH-1 downto 0); + memory_stall : out std_logic; + data_rom_enable: in std_logic; + pmem_ctrl_in : in mem_ctrl_type_in; + pmem_ctrl_out : out mem_ctrl_type_out; + xmem_ctrl_in : in mem_ctrl_type_in; + xmem_ctrl_out : out mem_ctrl_type_out; + ymem_ctrl_in : in mem_ctrl_type_in; + ymem_ctrl_out : out mem_ctrl_type_out +); +end memory_management; + + +architecture rtl of memory_management is + + + component mem_control is + generic( + mem_type : memory_type + ); + port( + clk, rst : in std_logic; + rd_addr : in unsigned(BW_ADDRESS-1 downto 0); + rd_en : in std_logic; + data_out : out std_logic_vector(23 downto 0); + data_out_valid : out std_logic; + wr_addr : in unsigned(BW_ADDRESS-1 downto 0); + wr_en : in std_logic; + wr_accomplished : out std_logic; + data_in : in std_logic_vector(23 downto 0) + ); + end component mem_control; + + signal pmem_data_out : std_logic_vector(23 downto 0); + signal pmem_data_out_valid : std_logic; + + signal pmem_rd_addr : unsigned(BW_ADDRESS-1 downto 0); + signal pmem_rd_en : std_logic; + + signal xmem_rd_en : std_logic; + signal xmem_data_out : std_logic_vector(23 downto 0); + signal xmem_data_out_valid : std_logic; + signal xmem_rd_polling : std_logic; + + signal ymem_rd_en : std_logic; + signal ymem_data_out : std_logic_vector(23 downto 0); + signal ymem_data_out_valid : std_logic; + signal ymem_rd_polling : std_logic; + + signal pmem_stall_buffer : std_logic_vector(23 downto 0); + signal pmem_stall_buffer_valid : std_logic; + signal xmem_stall_buffer : std_logic_vector(23 downto 0); + signal ymem_stall_buffer : std_logic_vector(23 downto 0); + + signal stall_flags_d : std_logic_vector(PIPELINE_DEPTH-1 downto 0); + +begin + + -- here it is necessary to store the output of the pmem/xmem/ymem when the pipeline enters a stall + -- when the pipeline wakes up, this temporal result is inserted into the pipeline + stall_buffer: process(clk) is + begin + if rising_edge(clk) then + if rst = '1' then + pmem_stall_buffer <= (others => '0'); + pmem_stall_buffer_valid <= '0'; + xmem_stall_buffer <= (others => '0'); + ymem_stall_buffer <= (others => '0'); + stall_flags_d <= (others => '0'); + else + stall_flags_d <= stall_flags; + if stall_flags(ST_FETCH2) = '1' and stall_flags_d(ST_FETCH2) = '0' then + if pmem_data_out_valid = '1' then + pmem_stall_buffer <= pmem_data_out; + pmem_stall_buffer_valid <= '1'; + end if; + end if; + if stall_flags(ST_FETCH2) = '0' and stall_flags_d(ST_FETCH2) = '1' then + pmem_stall_buffer_valid <= '0'; + end if; + + + end if; + end if; + end process stall_buffer; + + memory_stall <= '1' when ( xmem_rd_en = '1' or (xmem_rd_polling = '1' and xmem_data_out_valid = '0') ) or + ( ymem_rd_en = '1' or (ymem_rd_polling = '1' and ymem_data_out_valid = '0') ) else + '0'; + + ------------------------------- + -- PMEM CONTROLLER + ------------------------------- + inst_pmem_ctrl : mem_control + generic map( + mem_type => P_MEM + ) + port map( + clk => clk, + rst => rst, + rd_addr => pmem_ctrl_in.rd_addr, + rd_en => pmem_ctrl_in.rd_en, + data_out => pmem_data_out, + data_out_valid => pmem_data_out_valid, + wr_addr => pmem_ctrl_in.wr_addr, + wr_en => pmem_ctrl_in.wr_en, + data_in => pmem_ctrl_in.data_in + ); + + -- In case we wake up from a stall use the buffered value + pmem_ctrl_out.data_out <= pmem_stall_buffer when stall_flags(ST_FETCH2) = '0' and + stall_flags_d(ST_FETCH2) = '1' and + pmem_stall_buffer_valid = '1' else + pmem_data_out; + + pmem_ctrl_out.data_out_valid <= pmem_stall_buffer_valid when stall_flags(ST_FETCH2) = '0' and + stall_flags_d(ST_FETCH2) = '1' else + '0' when stall_flags(ST_FETCH2) = '1' else + pmem_data_out_valid; + + ------------------------------- + -- XMEM CONTROLLER + ------------------------------- + inst_xmem_ctrl : mem_control + generic map( + mem_type => X_MEM + ) + port map( + clk => clk, + rst => rst, + rd_addr => xmem_ctrl_in.rd_addr, + rd_en => xmem_rd_en, + data_out => xmem_data_out, + data_out_valid => xmem_data_out_valid, + wr_addr => xmem_ctrl_in.wr_addr, + wr_en => xmem_ctrl_in.wr_en, + data_in => xmem_ctrl_in.data_in + ); + + xmem_rd_en <= '1' when xmem_rd_polling = '0' and xmem_ctrl_in.rd_en = '1' else '0'; + + xmem_ctrl_out.data_out <= xmem_data_out; + xmem_ctrl_out.data_out_valid <= xmem_data_out_valid; + + ------------------------------- + -- YMEM CONTROLLER + ------------------------------- + inst_ymem_ctrl : mem_control + generic map( + mem_type => Y_MEM + ) + port map( + clk => clk, + rst => rst, + rd_addr => ymem_ctrl_in.rd_addr, + rd_en => ymem_rd_en, + data_out => ymem_data_out, + data_out_valid => ymem_data_out_valid, + wr_addr => ymem_ctrl_in.wr_addr, + wr_en => ymem_ctrl_in.wr_en, + data_in => ymem_ctrl_in.data_in + ); + + ymem_rd_en <= '1' when ymem_rd_polling = '0' and ymem_ctrl_in.rd_en = '1' else '0'; + + ymem_ctrl_out.data_out <= ymem_data_out; + ymem_ctrl_out.data_out_valid <= ymem_data_out_valid; + + mem_stall_control: process(clk) is + begin + if rising_edge(clk) then + if rst = '1' then + xmem_rd_polling <= '0'; + ymem_rd_polling <= '0'; + else + if xmem_rd_en = '1' then + xmem_rd_polling <= '1'; + end if; + + if xmem_data_out_valid = '1' then + xmem_rd_polling <= '0'; + end if; + + if ymem_rd_en = '1' then + ymem_rd_polling <= '1'; + end if; + + if ymem_data_out_valid = '1' then + ymem_rd_polling <= '0'; + end if; + + end if; + end if; + end process; +end architecture; + diff --git a/FPGA_by_Gregory_Estrade/DSP/src/parameter_pkg.vhd b/FPGA_by_Gregory_Estrade/DSP/src/parameter_pkg.vhd new file mode 100644 index 0000000..9e3c301 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/parameter_pkg.vhd @@ -0,0 +1,10 @@ + +package parameter_pkg is + + constant BW_ADDRESS : natural := 16; + + constant PIPELINE_DEPTH : natural := 5; + + constant NUM_ACT_SIGNALS : natural := 26; + +end package; diff --git a/FPGA_by_Gregory_Estrade/DSP/src/pipeline.vhd b/FPGA_by_Gregory_Estrade/DSP/src/pipeline.vhd new file mode 100644 index 0000000..5b5a98e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/pipeline.vhd @@ -0,0 +1,968 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity pipeline is port ( + clk, rst : in std_logic; + register_file_out : out register_file_type + +); +end pipeline; + +-- TODOs: +-- External memory accesses +-- ROM tables +-- Reading from SSH flag has to modify stack pointer +-- Memory access (x,y,p) and talling accordingly +-- Address Generator: ring buffers are not yet supported + +-- List of BUGS: +-- - Reading from address one clock cycle after writing to the same address might result in corrupted data!! +-- - SBC instruction has errorneous carry flag calculation + +-- List of probable issues: +-- - Reading from XMEM/YMEM with stalls probably results in corrupted data +-- - ENDDO instruction probably has to flush the pipeline afterwards +-- - Writing to memory occurs twice, when stalls occur + +-- Things to optimize: +-- - RTS/RTI could be executed in the ADGEN Stage already +-- - DO loops always flush the pipeline. This is necessary in case we have a very short loop. +-- The single instruction of the loop then has passed the fetch stage already without the branch + + +architecture rtl of pipeline is + + signal pipeline_regs : pipeline_type; + signal stall_flags : std_logic_vector(PIPELINE_DEPTH-1 downto 0); + + component fetch_stage is port( + pc_old : in unsigned(BW_ADDRESS-1 downto 0); + pc_new : out unsigned(BW_ADDRESS-1 downto 0); + modify_pc : in std_logic; + modified_pc : in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + decrement_lc : out std_logic; + perform_enddo : out std_logic + ); + end component fetch_stage; + + signal pc_old, pc_new : unsigned(BW_ADDRESS-1 downto 0); + signal fetch_modify_pc : std_logic; + signal fetch_modified_pc : unsigned(BW_ADDRESS-1 downto 0); + signal fetch_perform_enddo: std_logic; + signal fetch_decrement_lc: std_logic; + + + component decode_stage is port( + activate_dec : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + dble_word_instr : out std_logic; + instr_array : out instructions_type; + act_array : out std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + reg_wr_addr : out std_logic_vector(5 downto 0); + reg_rd_addr : out std_logic_vector(5 downto 0); + x_bus_rd_addr : out std_logic_vector(1 downto 0); + x_bus_wr_addr : out std_logic_vector(1 downto 0); + y_bus_rd_addr : out std_logic_vector(1 downto 0); + y_bus_wr_addr : out std_logic_vector(1 downto 0); + l_bus_addr : out std_logic_vector(2 downto 0); + adgen_mode_a : out adgen_mode_type; + adgen_mode_b : out adgen_mode_type; + alu_ctrl : out alu_ctrl_type + ); + end component decode_stage; + + signal dec_activate : std_logic; + signal dec_instr_word : std_logic_vector(23 downto 0); + signal dec_dble_word_instr : std_logic; + signal dec_instr_array : instructions_type; + signal dec_act_array : std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + signal dec_reg_wr_addr : std_logic_vector(5 downto 0); + signal dec_reg_rd_addr : std_logic_vector(5 downto 0); + signal dec_x_bus_wr_addr : std_logic_vector(1 downto 0); + signal dec_x_bus_rd_addr : std_logic_vector(1 downto 0); + signal dec_y_bus_wr_addr : std_logic_vector(1 downto 0); + signal dec_y_bus_rd_addr : std_logic_vector(1 downto 0); + signal dec_l_bus_addr : std_logic_vector(2 downto 0); + signal dec_adgen_mode_a : adgen_mode_type; + signal dec_adgen_mode_b : adgen_mode_type; + signal dec_alu_ctrl : alu_ctrl_type; + + component adgen_stage is port( + activate_adgen : in std_logic; + activate_x_mem : in std_logic; + activate_y_mem : in std_logic; + activate_l_mem : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + optional_ea_word : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + adgen_mode_a : in adgen_mode_type; + adgen_mode_b : in adgen_mode_type; + address_out_x : out unsigned(BW_ADDRESS-1 downto 0); + address_out_y : out unsigned(BW_ADDRESS-1 downto 0); + wr_R_port_A_valid : out std_logic; + wr_R_port_A : out addr_wr_port_type; + wr_R_port_B_valid : out std_logic; + wr_R_port_B : out addr_wr_port_type + ); + end component adgen_stage; + + signal adgen_activate : std_logic; + signal adgen_activate_x_mem : std_logic; + signal adgen_activate_y_mem : std_logic; + signal adgen_activate_l_mem : std_logic; + signal adgen_instr_word : std_logic_vector(23 downto 0); + signal adgen_instr_array : instructions_type; + signal adgen_optional_ea_word : std_logic_vector(23 downto 0); + signal adgen_register_file : register_file_type; + signal adgen_mode_a : adgen_mode_type; + signal adgen_mode_b : adgen_mode_type; + signal adgen_address_out_x : unsigned(BW_ADDRESS-1 downto 0); + signal adgen_address_out_y : unsigned(BW_ADDRESS-1 downto 0); + signal adgen_wr_R_port_A_valid : std_logic; + signal adgen_wr_R_port_A : addr_wr_port_type; + signal adgen_wr_R_port_B_valid : std_logic; + signal adgen_wr_R_port_B : addr_wr_port_type; + + component exec_stage_bit_modify is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + src_operand : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + dst_operand : out std_logic_vector(23 downto 0); + bit_cond_met : out std_logic; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_bit_modify; + + signal exec_bit_modify_instr_word : std_logic_vector(23 downto 0); + signal exec_bit_modify_instr_array : instructions_type; + signal exec_bit_modify_src_operand : std_logic_vector(23 downto 0); + signal exec_bit_modify_dst_operand : std_logic_vector(23 downto 0); + signal exec_bit_modify_bit_cond_met : std_logic; + signal exec_bit_modify_modify_sr : std_logic; + signal exec_bit_modify_modified_sr : std_logic_vector(15 downto 0); + + component exec_stage_branch is port( + activate_exec_bra : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + jump_address : in unsigned(BW_ADDRESS-1 downto 0); + bit_cond_met : in std_logic; + cc_flag_set : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_branch; + + signal exec_bra_activate : std_logic; + signal exec_bra_instr_word : std_logic_vector(23 downto 0); + signal exec_bra_instr_array : instructions_type; + signal exec_bra_jump_address : unsigned(BW_ADDRESS-1 downto 0); + signal exec_bra_bit_cond_met : std_logic; + signal exec_bra_push_stack : push_stack_type; + signal exec_bra_pop_stack : pop_stack_type; + signal exec_bra_modify_pc : std_logic; + signal exec_bra_modified_pc : unsigned(BW_ADDRESS-1 downto 0); + signal exec_bra_modify_sr : std_logic; + signal exec_bra_modified_sr : std_logic_vector(15 downto 0); + + component exec_stage_cr_mod is port( + activate_exec_cr_mod : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0); + modify_omr : out std_logic; + modified_omr : out std_logic_vector(7 downto 0) + ); + end component exec_stage_cr_mod; + + signal exec_cr_mod_activate : std_logic; + signal exec_cr_mod_instr_word : std_logic_vector(23 downto 0); + signal exec_cr_mod_instr_array : instructions_type; + signal exec_cr_mod_modify_sr : std_logic; + signal exec_cr_mod_modified_sr : std_logic_vector(15 downto 0); + signal exec_cr_mod_modify_omr : std_logic; + signal exec_cr_mod_modified_omr : std_logic_vector(7 downto 0); + + component exec_stage_loop is port( + clk, rst : in std_logic; + activate_exec_loop : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + loop_iterations : in unsigned(15 downto 0); + loop_address : in unsigned(BW_ADDRESS-1 downto 0); + loop_start_address: in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + fetch_perform_enddo: in std_logic; + memory_stall : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + stall_rep : out std_logic; + stall_do : out std_logic; + decrement_lc : out std_logic; + modify_lc : out std_logic; + modified_lc : out unsigned(15 downto 0); + modify_la : out std_logic; + modified_la : out unsigned(15 downto 0); + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_loop; + + signal exec_loop_activate : std_logic; + signal exec_loop_instr_word : std_logic_vector(23 downto 0); + signal exec_loop_instr_array : instructions_type; + signal exec_loop_iterations : unsigned(15 downto 0); + signal exec_loop_address : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_start_address : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_register_file : register_file_type; + signal exec_loop_push_stack : push_stack_type; + signal exec_loop_pop_stack : pop_stack_type; + signal exec_loop_stall_rep : std_logic; + signal exec_loop_stall_do : std_logic; + signal exec_loop_decrement_lc : std_logic; + signal exec_loop_modify_lc : std_logic; + signal exec_loop_modified_lc : unsigned(15 downto 0); + signal exec_loop_modify_la : std_logic; + signal exec_loop_modified_la : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_modify_pc : std_logic; + signal exec_loop_modified_pc : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_modify_sr : std_logic; + signal exec_loop_modified_sr : std_logic_vector(BW_ADDRESS-1 downto 0); + + component exec_stage_alu is port( + alu_activate : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + alu_ctrl : in alu_ctrl_type; + register_file : in register_file_type; + addr_r_in : in unsigned(BW_ADDRESS-1 downto 0); + addr_r_out : out unsigned(BW_ADDRESS-1 downto 0); + modify_accu : out std_logic; + dst_accu : out std_logic; + modified_accu : out signed(55 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_alu; + + signal exec_alu_activate : std_logic; + signal exec_alu_instr_word : std_logic_vector(23 downto 0); + signal exec_alu_ctrl : alu_ctrl_type; + signal exec_alu_addr_r_in : unsigned(BW_ADDRESS-1 downto 0); + signal exec_alu_addr_r_out : unsigned(BW_ADDRESS-1 downto 0); + signal exec_alu_modify_accu : std_logic; + signal exec_alu_dst_accu : std_logic; + signal exec_alu_modified_accu : signed(55 downto 0); + signal exec_alu_modify_sr : std_logic; + signal exec_alu_modified_sr : std_logic_vector(15 downto 0); + + signal exec_imm_8bit : std_logic_vector(23 downto 0); + signal exec_imm_12bit : std_logic_vector(23 downto 0); + signal exec_src_operand : std_logic_vector(23 downto 0); + signal exec_dst_operand : std_logic_vector(23 downto 0); + + component exec_stage_cc_flag_calc is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + cc_flag_set : out std_logic + ); + end component exec_stage_cc_flag_calc; + + signal exec_cc_flag_calc_instr_word : std_logic_vector(23 downto 0); + signal exec_cc_flag_calc_instr_array : instructions_type; + signal exec_cc_flag_set : std_logic; + + component reg_file is port( + clk, rst : in std_logic; + register_file : out register_file_type; + wr_R_port_A_valid : in std_logic; + wr_R_port_A : in addr_wr_port_type; + wr_R_port_B_valid : in std_logic; + wr_R_port_B : in addr_wr_port_type; + alu_wr_valid : in std_logic; + alu_wr_addr : in std_logic; + alu_wr_data : in signed(55 downto 0); + reg_wr_addr : in std_logic_vector(5 downto 0); + reg_wr_addr_valid : in std_logic; + reg_wr_data : in std_Logic_vector(23 downto 0); + reg_rd_addr : in std_logic_vector(5 downto 0); + reg_rd_data : out std_Logic_vector(23 downto 0); + X_bus_rd_addr : in std_logic_vector(1 downto 0); + X_bus_data_out : out std_logic_vector(23 downto 0); + X_bus_wr_addr : in std_logic_vector(1 downto 0); + X_bus_wr_valid : in std_logic; + X_bus_data_in : in std_logic_vector(23 downto 0); + Y_bus_rd_addr : in std_logic_vector(1 downto 0); + Y_bus_data_out : out std_logic_vector(23 downto 0); + Y_bus_wr_addr : in std_logic_vector(1 downto 0); + Y_bus_wr_valid : in std_logic; + Y_bus_data_in : in std_logic_vector(23 downto 0); + L_bus_rd_addr : in std_logic_vector(2 downto 0); + L_bus_rd_valid : in std_logic; + L_bus_wr_addr : in std_logic_vector(2 downto 0); + L_bus_wr_valid : in std_logic; + push_stack : in push_stack_type; + pop_stack : in pop_stack_type; + set_sr : in std_logic; + new_sr : in std_logic_vector(15 downto 0); + set_omr : in std_logic; + new_omr : in std_logic_vector(7 downto 0); + set_lc : in std_logic; + new_lc : in unsigned(15 downto 0); + dec_lc : in std_logic; + set_la : in std_logic; + new_la : in unsigned(BW_ADDRESS-1 downto 0) + ); + end component reg_file; + + signal register_file : register_file_type; + signal rf_wr_R_port_A_valid : std_logic; + signal rf_wr_R_port_B_valid : std_logic; + signal rf_reg_wr_addr : std_logic_vector(5 downto 0); + signal rf_reg_wr_addr_valid : std_logic; + signal rf_reg_wr_data : std_logic_vector(23 downto 0); + signal rf_reg_rd_addr : std_logic_vector(5 downto 0); + signal rf_reg_rd_data : std_logic_vector(23 downto 0); + signal rf_X_bus_rd_addr : std_logic_vector(1 downto 0); + signal rf_X_bus_data_out : std_logic_vector(23 downto 0); + signal rf_X_bus_wr_addr : std_logic_vector(1 downto 0); + signal rf_X_bus_wr_valid : std_logic; + signal rf_X_bus_data_in : std_logic_vector(23 downto 0); + signal rf_Y_bus_rd_addr : std_logic_vector(1 downto 0); + signal rf_Y_bus_data_out : std_logic_vector(23 downto 0); + signal rf_Y_bus_wr_addr : std_logic_vector(1 downto 0); + signal rf_Y_bus_wr_valid : std_logic; + signal rf_Y_bus_data_in : std_logic_vector(23 downto 0); + signal rf_L_bus_rd_addr : std_logic_vector(2 downto 0); + signal rf_L_bus_rd_valid : std_logic; + signal rf_L_bus_wr_addr : std_logic_vector(2 downto 0); + signal rf_L_bus_wr_valid : std_logic; + signal push_stack : push_stack_type; + signal pop_stack : pop_stack_type; + signal rf_set_sr : std_logic; + signal rf_new_sr : std_logic_vector(15 downto 0); + signal rf_set_omr : std_logic; + signal rf_new_omr : std_logic_vector(7 downto 0); + signal rf_dec_lc : std_logic; + signal rf_set_lc : std_logic; + signal rf_new_lc : unsigned(15 downto 0); + signal rf_set_la : std_logic; + signal rf_new_la : unsigned(BW_ADDRESS-1 downto 0); + signal rf_alu_wr_valid : std_logic; + + component memory_management is port ( + clk, rst : in std_logic; + stall_flags : in std_logic_vector(PIPELINE_DEPTH-1 downto 0); + memory_stall : out std_logic; + data_rom_enable: in std_logic; + pmem_ctrl_in : in mem_ctrl_type_in; + pmem_ctrl_out : out mem_ctrl_type_out; + xmem_ctrl_in : in mem_ctrl_type_in; + xmem_ctrl_out : out mem_ctrl_type_out; + ymem_ctrl_in : in mem_ctrl_type_in; + ymem_ctrl_out : out mem_ctrl_type_out + ); + end component memory_management; + + signal memory_stall : std_logic; + signal pmem_ctrl_in : mem_ctrl_type_in; + signal pmem_ctrl_out : mem_ctrl_type_out; + signal xmem_ctrl_in : mem_ctrl_type_in; + signal xmem_ctrl_out : mem_ctrl_type_out; + signal ymem_ctrl_in : mem_ctrl_type_in; + signal ymem_ctrl_out : mem_ctrl_type_out; + + signal pmem_data_out : std_logic_vector(23 downto 0); + signal pmem_data_out_valid : std_logic; + signal xmem_data_out : std_logic_vector(23 downto 0); + signal xmem_data_out_valid : std_logic; + signal ymem_data_out : std_logic_vector(23 downto 0); + signal ymem_data_out_valid : std_logic; + +begin + register_file_out <= register_file; + + -- merge all stall sources + stall_flags(ST_FETCH) <= '1' when exec_loop_stall_rep = '1' or + memory_stall = '1' or + exec_loop_stall_do = '1' else '0'; + stall_flags(ST_FETCH2) <= '1' when exec_loop_stall_rep = '1' or + memory_stall = '1' or + exec_loop_stall_do = '1' else '0'; + stall_flags(ST_DECODE) <= '1' when exec_loop_stall_rep = '1' or + memory_stall = '1' or + exec_loop_stall_do = '1' else '0'; + stall_flags(ST_ADGEN) <= exec_loop_stall_do; +-- stall_flags(ST_ADGEN) <= '1' when memory_stall = '1' or +-- exec_loop_stall_do = '1' else '0'; +-- stall_flags(ST_EXEC) <= '0'; + stall_flags(ST_EXEC) <= exec_loop_stall_do; +-- stall_flags(ST_EXEC) <= '1' when memory_stall = '1' or +-- exec_loop_stall_do = '1' else '0'; + + shift_pipeline: process(clk, rst) is + procedure flush_pipeline_stage(stage: natural) is + begin + pipeline_regs(stage).pc <= (others => '1'); + pipeline_regs(stage).instr_word <= (others => '0'); + pipeline_regs(stage).act_array <= (others => '0'); + pipeline_regs(stage).instr_array <= INSTR_NOP; + pipeline_regs(stage).dble_word_instr <= '0'; + pipeline_regs(stage).dec_activate <= '0'; + pipeline_regs(stage).adgen_mode_a <= NOP; + pipeline_regs(stage).adgen_mode_b <= NOP; + pipeline_regs(stage).reg_wr_addr <= (others => '0'); + pipeline_regs(stage).reg_rd_addr <= (others => '0'); + pipeline_regs(stage).x_bus_rd_addr <= (others => '0'); + pipeline_regs(stage).x_bus_wr_addr <= (others => '0'); + pipeline_regs(stage).y_bus_rd_addr <= (others => '0'); + pipeline_regs(stage).y_bus_wr_addr <= (others => '0'); + pipeline_regs(stage).l_bus_addr <= (others => '0'); + pipeline_regs(stage).adgen_address_x <= (others => '0'); + pipeline_regs(stage).adgen_address_y <= (others => '0'); + pipeline_regs(stage).RAM_out_x <= (others => '0'); + pipeline_regs(stage).RAM_out_y <= (others => '0'); + pipeline_regs(stage).alu_ctrl.store_result <= '0'; + end procedure flush_pipeline_stage; + begin + if rising_edge(clk) then + if rst = '1' then + for i in 0 to PIPELINE_DEPTH-1 loop + flush_pipeline_stage(i); + end loop; + else + -- shift the pipeline registers when no stall applies + for i in 1 to PIPELINE_DEPTH-1 loop + if stall_flags(i) = '0' then + -- do not copy the pipeline registers from a stalled pipeline stage + -- for REP we do not flush +-- if stall_flags(i-1) = '1' then + if (stall_flags(i-1) = '1' and exec_loop_stall_rep = '0') or + (i = ST_ADGEN and memory_stall = '1' and exec_loop_stall_rep = '1') then + flush_pipeline_stage(i); + else + pipeline_regs(i) <= pipeline_regs(i-1); + end if; + end if; + end loop; + -- FETCH Pipeline Registers + if stall_flags(ST_FETCH) = '0' then + pipeline_regs(ST_FETCH).pc <= pc_new; + pipeline_regs(ST_FETCH).dec_activate <= '1'; + end if; + + -- FETCH2 Pipeline Registers + if stall_flags(ST_FETCH2) = '0' then + -- Normal pipeline operation? + -- Buffering of RAM output when stalling is performed in the memory management + if pmem_data_out_valid = '1' then + pipeline_regs(ST_FETCH2).instr_word <= pmem_data_out; + end if; + end if; + + -- DECODE Pipeline registers + if stall_flags(ST_DECODE) = '0' then + pipeline_regs(ST_DECODE).act_array <= dec_act_array; + pipeline_regs(ST_DECODE).instr_array <= dec_instr_array; + pipeline_regs(ST_DECODE).dble_word_instr <= dec_dble_word_instr; + pipeline_regs(ST_DECODE).reg_wr_addr <= dec_reg_wr_addr; + pipeline_regs(ST_DECODE).reg_rd_addr <= dec_reg_rd_addr; + pipeline_regs(ST_DECODE).x_bus_wr_addr <= dec_x_bus_wr_addr; + pipeline_regs(ST_DECODE).x_bus_rd_addr <= dec_x_bus_rd_addr; + pipeline_regs(ST_DECODE).y_bus_wr_addr <= dec_y_bus_wr_addr; + pipeline_regs(ST_DECODE).y_bus_rd_addr <= dec_y_bus_rd_addr; + pipeline_regs(ST_DECODE).l_bus_addr <= dec_l_bus_addr; + pipeline_regs(ST_DECODE).adgen_mode_a <= dec_adgen_mode_a; + pipeline_regs(ST_DECODE).adgen_mode_b <= dec_adgen_mode_b; + pipeline_regs(ST_DECODE).alu_ctrl <= dec_alu_ctrl; + end if; + + -- ADGEN Pipeline registers + if stall_flags(ST_ADGEN) = '0' then + pipeline_regs(ST_ADGEN).adgen_address_x <= adgen_address_out_x; + pipeline_regs(ST_ADGEN).adgen_address_y <= adgen_address_out_y; + end if; + if xmem_data_out_valid = '1' then + pipeline_regs(ST_ADGEN).RAM_out_x <= xmem_data_out; + end if; + if ymem_data_out_valid = '1' then + pipeline_regs(ST_ADGEN).RAM_out_y <= ymem_data_out; + end if; + + -- EXEC Pipeline stuff + if exec_bra_modify_pc = '1' or exec_loop_modify_pc = '1' then + -- clear the following pipeline stages, + -- since we modified the pc. + -- Do not flush ST_FETCH - it will hold the correct pc. + flush_pipeline_stage(ST_FETCH2); + flush_pipeline_stage(ST_DECODE); + flush_pipeline_stage(ST_ADGEN); + end if; + end if; + end if; + end process shift_pipeline; + + ------------------------------- + -- FETCH STAGE INSTANTIATION + ------------------------------- + inst_fetch_stage: fetch_stage port map( + pc_old => pc_old, + pc_new => pc_new, + modify_pc => fetch_modify_pc, + modified_pc => fetch_modified_pc, + register_file => register_file, + decrement_lc => fetch_decrement_lc, + perform_enddo => fetch_perform_enddo + ); + + pc_old <= pipeline_regs(ST_FETCH).pc; + + fetch_modify_pc <= '1' when exec_bra_modify_pc = '1' or exec_loop_modify_pc = '1' else '0'; + fetch_modified_pc <= exec_bra_modified_pc when exec_bra_modify_pc = '1' else + exec_loop_modified_pc; + + ------------------------------- + -- DECODE STAGE INSTANTIATION + ------------------------------- + inst_decode_stage : decode_stage port map( + activate_dec => dec_activate, + instr_word => dec_instr_word, + dble_word_instr => dec_dble_word_instr, + instr_array => dec_instr_array, + act_array => dec_act_array, + reg_wr_addr => dec_reg_wr_addr, + reg_rd_addr => dec_reg_rd_addr, + x_bus_wr_addr => dec_x_bus_wr_addr, + x_bus_rd_addr => dec_x_bus_rd_addr, + y_bus_wr_addr => dec_y_bus_wr_addr, + y_bus_rd_addr => dec_y_bus_rd_addr, + l_bus_addr => dec_l_bus_addr, + adgen_mode_a => dec_adgen_mode_a, + adgen_mode_b => dec_adgen_mode_b, + alu_ctrl => dec_alu_ctrl + ); + + dec_instr_word <= pipeline_regs(ST_DECODE-1).instr_word; + -- do not decode, when we have no valid instruction. This can happen when + -- 1) the pipeline just started its operation + -- 2) the pipeline was flushed due to a jump + -- 3) we are processing a instruction that consists of two words + dec_activate <= '1' when pipeline_regs(ST_DECODE-1).dec_activate = '1' and pipeline_regs(ST_DECODE).dble_word_instr = '0' else '0'; + + ------------------------------- + -- AGU STAGE INSTANTIATION + ------------------------------- + inst_adgen_stage: adgen_stage port map( + activate_adgen => adgen_activate, + activate_x_mem => adgen_activate_x_mem, + activate_y_mem => adgen_activate_y_mem, + activate_l_mem => adgen_activate_l_mem, + instr_word => adgen_instr_word, + instr_array => adgen_instr_array, + optional_ea_word => adgen_optional_ea_word, + register_file => register_file, + adgen_mode_a => adgen_mode_a, + adgen_mode_b => adgen_mode_b, + address_out_x => adgen_address_out_x, + address_out_y => adgen_address_out_y, + wr_R_port_A_valid => adgen_wr_R_port_A_valid, + wr_R_port_A => adgen_wr_R_port_A, + wr_R_port_B_valid => adgen_wr_R_port_B_valid, + wr_R_port_B => adgen_wr_R_port_B + ); + + adgen_activate <= pipeline_regs(ST_ADGEN-1).act_array(ACT_ADGEN); + adgen_activate_x_mem <= '1' when pipeline_regs(ST_ADGEN-1).act_array(ACT_X_MEM_RD) = '1' or + pipeline_regs(ST_ADGEN-1).act_array(ACT_X_MEM_WR) = '1' else '0'; + adgen_activate_y_mem <= '1' when pipeline_regs(ST_ADGEN-1).act_array(ACT_Y_MEM_RD) = '1' or + pipeline_regs(ST_ADGEN-1).act_array(ACT_Y_MEM_WR) = '1' else '0'; + adgen_activate_l_mem <= '1' when pipeline_regs(ST_ADGEN-1).act_array(ACT_L_BUS_RD) = '1' or + pipeline_regs(ST_ADGEN-1).act_array(ACT_L_BUS_WR) = '1' else '0'; + adgen_instr_word <= pipeline_regs(ST_ADGEN-1).instr_word; + adgen_instr_array <= pipeline_regs(ST_ADGEN-1).instr_array; + adgen_optional_ea_word <= pipeline_regs(ST_ADGEN-2).instr_word; + adgen_mode_a <= pipeline_regs(ST_ADGEN-1).adgen_mode_a; + adgen_mode_b <= pipeline_regs(ST_ADGEN-1).adgen_mode_b; + + ------------------------------- + -- EXECUTE STAGE INSTANTIATIONS + ------------------------------- + inst_exec_stage_alu: exec_stage_alu port map( + alu_activate => exec_alu_activate, + instr_word => exec_alu_instr_word, + alu_ctrl => exec_alu_ctrl, + register_file => register_file, + addr_r_in => exec_alu_addr_r_in, + addr_r_out => exec_alu_addr_r_out, + modify_accu => exec_alu_modify_accu, + dst_accu => exec_alu_dst_accu, + modified_accu => exec_alu_modified_accu, + modify_sr => exec_alu_modify_sr, + modified_sr => exec_alu_modified_sr + ); + + exec_alu_activate <= pipeline_regs(ST_EXEC-1).act_array(ACT_ALU); + exec_alu_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_alu_ctrl <= pipeline_regs(ST_EXEC-1).alu_ctrl; + + exec_alu_addr_r_in <= unsigned(rf_reg_rd_data(BW_ADDRESS-1 downto 0)); + + inst_exec_stage_bit_modify: exec_stage_bit_modify port map( + instr_word => exec_bit_modify_instr_word, + instr_array => exec_bit_modify_instr_array, + src_operand => exec_bit_modify_src_operand, + register_file => register_file, + dst_operand => exec_bit_modify_dst_operand, + bit_cond_met => exec_bit_modify_bit_cond_met, + modify_sr => exec_bit_modify_modify_sr, + modified_sr => exec_bit_modify_modified_sr + ); + + exec_bit_modify_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_bit_modify_instr_array <= pipeline_regs(ST_EXEC-1).instr_array; + exec_bit_modify_src_operand <= exec_src_operand; + + -- Writing to the register file using the 6 bit addressing scheme + -- sources are: + -- 1) X-RAM output + -- 2) Y-RAM output + -- 3) register file itself + -- 4) short immediate value (8 bit stored in instruction word) + -- 5) long immediate value (from optional effective address extension) + -- 5) address generated by the address generation unit (LUA instr) + exec_src_operand <= pipeline_regs(ST_EXEC-1).RAM_out_x when pipeline_regs(ST_EXEC-1).act_array(ACT_X_MEM_RD) = '1' else + pipeline_regs(ST_EXEC-1).RAM_out_y when pipeline_regs(ST_EXEC-1).act_array(ACT_Y_MEM_RD) = '1' else + rf_reg_rd_data when pipeline_regs(ST_EXEC-1).act_array(ACT_REG_RD) = '1' else + exec_imm_8bit when pipeline_regs(ST_EXEC-1).act_array(ACT_IMM_8BIT) = '1' else + exec_imm_12bit when pipeline_regs(ST_EXEC-1).act_array(ACT_IMM_12BIT) = '1' else + pipeline_regs(ST_EXEC-2).instr_word when pipeline_regs(ST_EXEC-1).act_array(ACT_IMM_LONG) = '1' else + std_logic_vector(resize(pipeline_regs(ST_EXEC-1).adgen_address_x, 24)); -- for LUA instr. + + -- Destination for the register file using the 6 bit addressing scheme. + -- Either read the bit modified version of the read value + -- or use the modified Rn in case of a NORM instruction +-- exec_dst_operand <= exec_bit_modify_dst_operand; + exec_dst_operand <= exec_bit_modify_dst_operand when pipeline_regs(ST_EXEC-1).act_array(ACT_NORM) = '0' else + std_logic_vector(resize(exec_alu_addr_r_out,24)); + + -- Unit to check whether cc (in Jcc, JScc, Tcc, ...) is true + inst_exec_stage_cc_flag_calc: exec_stage_cc_flag_calc port map( + instr_word => exec_cc_flag_calc_instr_word, + instr_array => exec_cc_flag_calc_instr_array, + register_file => register_file, + cc_flag_set => exec_cc_flag_set + ); + + exec_cc_flag_calc_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_cc_flag_calc_instr_array <= pipeline_regs(ST_EXEC-1).instr_array; + + + inst_exec_stage_branch : exec_stage_branch port map( + activate_exec_bra => exec_bra_activate, + instr_word => exec_bra_instr_word, + instr_array => exec_bra_instr_array, + register_file => register_file, + jump_address => exec_bra_jump_address, + bit_cond_met => exec_bra_bit_cond_met, + cc_flag_set => exec_cc_flag_set, + push_stack => exec_bra_push_stack, + pop_stack => exec_bra_pop_stack, + modify_pc => exec_bra_modify_pc, + modified_pc => exec_bra_modified_pc, + modify_sr => exec_bra_modify_sr, + modified_sr => exec_bra_modified_sr + ); + + exec_bra_activate <= pipeline_regs(ST_EXEC-1).act_array(ACT_EXEC_BRA); + exec_bra_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_bra_instr_array <= pipeline_regs(ST_EXEC-1).instr_array; + exec_bra_jump_address <= pipeline_regs(ST_EXEC-1).adgen_address_x when pipeline_regs(ST_EXEC-1).dble_word_instr = '0' else + unsigned(pipeline_regs(ST_EXEC-2).instr_word(BW_ADDRESS-1 downto 0)); + exec_bra_bit_cond_met <= exec_bit_modify_bit_cond_met; + + inst_exec_stage_cr_mod : exec_stage_cr_mod port map( + activate_exec_cr_mod => exec_cr_mod_activate, + instr_word => exec_cr_mod_instr_word, + instr_array => exec_cr_mod_instr_array, + register_file => register_file, + modify_sr => exec_cr_mod_modify_sr, + modified_sr => exec_cr_mod_modified_sr, + modify_omr => exec_cr_mod_modify_omr, + modified_omr => exec_cr_mod_modified_omr + ); + + exec_cr_mod_activate <= pipeline_regs(ST_EXEC-1).act_array(ACT_EXEC_CR_MOD); + exec_cr_mod_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_cr_mod_instr_array <= pipeline_regs(ST_EXEC-1).instr_array; + + inst_exec_stage_loop: exec_stage_loop port map( + clk => clk, + rst => rst, + activate_exec_loop => exec_loop_activate, + instr_word => exec_loop_instr_word, + instr_array => exec_loop_instr_array, + loop_iterations => exec_loop_iterations, + loop_address => exec_loop_address, + loop_start_address => exec_loop_start_address, + register_file => register_file, + fetch_perform_enddo=> fetch_perform_enddo, + memory_stall => memory_stall, + push_stack => exec_loop_push_stack, + pop_stack => exec_loop_pop_stack, + stall_rep => exec_loop_stall_rep, + stall_do => exec_loop_stall_do, + modify_lc => exec_loop_modify_lc, + decrement_lc => exec_loop_decrement_lc, + modified_lc => exec_loop_modified_lc, + modify_la => exec_loop_modify_la, + modified_la => exec_loop_modified_la, + modify_pc => exec_loop_modify_pc, + modified_pc => exec_loop_modified_pc, + modify_sr => exec_loop_modify_sr, + modified_sr => exec_loop_modified_sr + ); + + exec_loop_activate <= pipeline_regs(ST_EXEC-1).act_array(ACT_EXEC_LOOP); + exec_loop_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_loop_instr_array <= pipeline_regs(ST_EXEC-1).instr_array; + exec_loop_iterations <= unsigned(exec_src_operand(15 downto 0)); + -- from which source is our operand? + -- - XMEM + -- - YMEM + -- - Any register + -- - Immediate (from instruction word) +-- exec_src_operand <= unsigned(pipeline_regs(ST_EXEC-1).RAM_out_x(BW_ADDRESS-1 downto 0)) when +-- pipeline_regs(ST_EXEC-1).act_array(ACT_X_MEM_RD) = '1' else +-- unsigned(pipeline_regs(ST_EXEC-1).RAM_out_y(BW_ADDRESS-1 downto 0)) when +-- pipeline_regs(ST_EXEC-1).act_array(ACT_Y_MEM_RD) = '1' else +-- unsigned(rf_reg_rd_data(15 downto 0)) when +-- pipeline_regs(ST_EXEC-1).act_array(ACT_REG_RD) = '1' else +-- "00000000" & unsigned(pipeline_regs(ST_EXEC-1).instr_word(15 downto 8)); + + -- Loop address is given by the second instruction word of the DO instruction. + -- This address is available one previous stage within the pipeline + exec_loop_address <= unsigned(pipeline_regs(ST_EXEC-2).instr_word(BW_ADDRESS-1 downto 0)) - 1; + -- one more stage before we find the programm counter of the first instruction to be executed in a DO loop + exec_loop_start_address <= unsigned(pipeline_regs(ST_EXEC-3).pc); + + -- For the 8 bit immediate is can be either a fractional (registers x0,x1,y0,y1,a,b) or an unsigned (the rest) + exec_imm_8bit(23 downto 16) <= (others => '0') when rf_reg_wr_addr(5 downto 2) /= "0001" and rf_reg_wr_addr(5 downto 1) /= "00111" else + pipeline_regs(ST_EXEC-1).instr_word(15 downto 8); + exec_imm_8bit(15 downto 8) <= (others => '0'); + exec_imm_8bit( 7 downto 0) <= (others => '0') when rf_reg_wr_addr(5 downto 2) = "0001" or rf_reg_wr_addr(5 downto 1) = "00111" else + pipeline_regs(ST_EXEC-1).instr_word(15 downto 8); + -- The 12 bit immediate stems from the instruction word + exec_imm_12bit(23 downto 12) <= (others => '0'); + exec_imm_12bit(11 downto 0) <= pipeline_regs(ST_EXEC-1).instr_word(3 downto 0) & pipeline_regs(ST_EXEC-1).instr_word(15 downto 8); + ----------------- + -- REGISTER FILE + ----------------- + inst_reg_file: reg_file port map( + clk => clk, + rst => rst, + register_file => register_file, + wr_R_port_A_valid => rf_wr_R_port_A_valid, + wr_R_port_A => adgen_wr_R_port_A, + wr_R_port_B_valid => rf_wr_R_port_B_valid, + wr_R_port_B => adgen_wr_R_port_B, + reg_wr_addr => rf_reg_wr_addr, + reg_wr_addr_valid => rf_reg_wr_addr_valid, + reg_wr_data => rf_reg_wr_data, + reg_rd_addr => rf_reg_rd_addr, + reg_rd_data => rf_reg_rd_data, + alu_wr_valid => rf_alu_wr_valid, + alu_wr_addr => exec_alu_dst_accu, + alu_wr_data => exec_alu_modified_accu, + X_bus_rd_addr => rf_X_bus_rd_addr, + X_bus_data_out => rf_X_bus_data_out, + X_bus_wr_addr => rf_X_bus_wr_addr , + X_bus_wr_valid => rf_X_bus_wr_valid, + X_bus_data_in => rf_X_bus_data_in , + Y_bus_rd_addr => rf_Y_bus_rd_addr , + Y_bus_data_out => rf_Y_bus_data_out, + Y_bus_wr_addr => rf_Y_bus_wr_addr , + Y_bus_wr_valid => rf_Y_bus_wr_valid, + Y_bus_data_in => rf_Y_bus_data_in , + L_bus_rd_addr => rf_L_bus_rd_addr , + L_bus_rd_valid => rf_L_bus_rd_valid, + L_bus_wr_addr => rf_L_bus_wr_addr , + L_bus_wr_valid => rf_L_bus_wr_valid, + push_stack => push_stack, + pop_stack => pop_stack, + set_sr => rf_set_sr, + new_sr => rf_new_sr, + set_omr => rf_set_omr, + new_omr => rf_new_omr, + set_la => rf_set_la, + new_la => rf_new_la, + dec_lc => rf_dec_lc, + set_lc => rf_set_lc, + new_lc => rf_new_lc + ); + + ----------------- + -- BUSES (X,Y,L) + ----------------- + rf_X_bus_wr_valid <= pipeline_regs(ST_EXEC-1).act_array(ACT_X_BUS_WR); + rf_X_bus_wr_addr <= pipeline_regs(ST_EXEC-1).x_bus_wr_addr; + rf_X_bus_rd_addr <= pipeline_regs(ST_EXEC-1).x_bus_rd_addr; + rf_X_bus_data_in <= rf_X_bus_data_out when pipeline_regs(ST_EXEC-1).act_array(ACT_X_BUS_RD) = '1' else + pipeline_regs(ST_EXEC-1).RAM_out_x; -- when pipeline_regs(ST_EXEC-1).act_array(ACT_X_MEM_RD) = '1' else + + rf_Y_bus_wr_valid <= pipeline_regs(ST_EXEC-1).act_array(ACT_Y_BUS_WR); + rf_Y_bus_wr_addr <= pipeline_regs(ST_EXEC-1).y_bus_wr_addr; + rf_Y_bus_rd_addr <= pipeline_regs(ST_EXEC-1).y_bus_rd_addr; + rf_Y_bus_data_in <= rf_Y_bus_data_out when pipeline_regs(ST_EXEC-1).act_array(ACT_Y_BUS_RD) = '1' else + pipeline_regs(ST_EXEC-1).RAM_out_y; -- when pipeline_regs(ST_EXEC-1).act_array(ACT_Y_MEM_RD) = '1' else + + rf_L_bus_wr_valid <= pipeline_regs(ST_EXEC-1).act_array(ACT_L_BUS_WR); + rf_L_bus_rd_valid <= pipeline_regs(ST_EXEC-1).act_array(ACT_L_BUS_RD); + rf_L_bus_wr_addr <= pipeline_regs(ST_EXEC-1).l_bus_addr; -- equal to bits in instruction word + rf_L_bus_rd_addr <= pipeline_regs(ST_EXEC-1).l_bus_addr; -- could be simplified by taking these bits.. + + -- writing to the R registers within the ADGEN stage has to be prevented when + -- 1) a jump is currently being executed (which is detected in the exec stage) + -- 2) stall cycles occur. In this case the write will happen in the last cycle, when we stop stalling. + -- 3) a memory access results in a stall (e.g. caused by the instruction to REP) + rf_wr_R_port_A_valid <= '0' when stall_flags(ST_ADGEN) = '1' or + exec_bra_modify_pc = '1' or + memory_stall = '1' else + adgen_wr_R_port_A_valid; + rf_wr_R_port_B_valid <= '0' when stall_flags(ST_ADGEN) = '1' or + exec_bra_modify_pc = '1' or + memory_stall = '1' else + adgen_wr_R_port_B_valid; + + + rf_reg_wr_addr <= pipeline_regs(ST_EXEC-1).reg_wr_addr; + -- can be set due to + -- 1) normal write operation (e.g., move) + -- 2) conditional move (Tcc) + rf_reg_wr_addr_valid <= '1' when pipeline_regs(ST_EXEC-1).act_array(ACT_REG_WR) = '1' else + exec_cc_flag_set when pipeline_regs(ST_EXEC-1).act_array(ACT_REG_WR_CC) = '1' else '0'; + rf_reg_wr_data <= exec_dst_operand; + + rf_reg_rd_addr <= pipeline_regs(ST_EXEC-1).reg_rd_addr; + + -- Writing from the ALU can depend on the condition code (Tcc) instruction + rf_alu_wr_valid <= exec_cc_flag_set when pipeline_regs(ST_EXEC-1).act_array(ACT_ALU_WR_CC) = '1' else + exec_alu_modify_accu; + + push_stack.valid <= '1' when exec_bra_push_stack.valid = '1' or exec_loop_push_stack.valid = '1' else '0'; + push_stack.content <= exec_bra_push_stack.content when exec_bra_push_stack.valid = '1' else + exec_loop_push_stack.content; + -- for jump to subroutine store the pc of the subsequent instruction + push_stack.pc <= pipeline_regs(ST_EXEC-2).pc when exec_bra_push_stack.valid = '1' and pipeline_regs(ST_EXEC-1).dble_word_instr = '0' else + pipeline_regs(ST_EXEC-3).pc when exec_bra_push_stack.valid = '1' and pipeline_regs(ST_EXEC-1).dble_word_instr = '1' else + exec_loop_push_stack.pc when exec_loop_push_stack.valid = '1' else + (others => '0'); + + pop_stack.valid <= '1' when exec_bra_pop_stack.valid = '1' or exec_loop_pop_stack.valid = '1' else '0'; + + rf_set_sr <= '1' when exec_bra_modify_sr = '1' or + exec_cr_mod_modify_sr = '1' or + exec_loop_modify_sr = '1' or + exec_alu_modify_sr = '1' or + exec_bit_modify_modify_sr = '1' else '0'; + rf_new_sr <= exec_bra_modified_sr when exec_bra_modify_sr = '1' else + exec_cr_mod_modified_sr when exec_cr_mod_modify_sr = '1' else + exec_loop_modified_sr when exec_loop_modify_sr = '1' else + exec_alu_modified_sr when exec_alu_modify_sr = '1' else + exec_bit_modify_modified_sr; -- when exec_bit_modify_modify_sr = '1' else + + rf_set_omr <= exec_cr_mod_modify_omr; + rf_new_omr <= exec_cr_mod_modified_omr; + rf_set_lc <= exec_loop_modify_lc; + rf_new_lc <= exec_loop_modified_lc; + rf_set_la <= exec_loop_modify_la; + rf_new_la <= exec_loop_modified_la; + + rf_dec_lc <= '1' when exec_loop_decrement_lc = '1' or fetch_decrement_lc = '1' else '0'; + + --------------------- + -- MEMORY MANAGEMENT + --------------------- + MMU_inst: memory_management port map ( + clk => clk, + rst => rst, + stall_flags => stall_flags, + memory_stall => memory_stall, + data_rom_enable => register_file.omr(2), + pmem_ctrl_in => pmem_ctrl_in, + pmem_ctrl_out => pmem_ctrl_out, + xmem_ctrl_in => xmem_ctrl_in, + xmem_ctrl_out => xmem_ctrl_out, + ymem_ctrl_in => ymem_ctrl_in, + ymem_ctrl_out => ymem_ctrl_out + ); + + ------------------ + -- Program Memory + ------------------ + pmem_ctrl_in.rd_addr <= pc_new; + pmem_ctrl_in.rd_en <= '1' when stall_flags(ST_FETCH) = '0' else '0'; + -- TODO: Writing to PMEM! + pmem_ctrl_in.wr_addr <= (others => '0'); + pmem_ctrl_in.wr_en <= '0'; + pmem_ctrl_in.data_in <= (others => '0'); + + pmem_data_out <= pmem_ctrl_out.data_out; + pmem_data_out_valid <= pmem_ctrl_out.data_out_valid; + + + ------------------ + -- X Memory + ------------------ + -- Either take the result of the AGU or use the short absolute value stored in the instruction word + xmem_ctrl_in.rd_addr <= adgen_address_out_x when pipeline_regs(ST_ADGEN-1).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_ADGEN-1).instr_word(13 downto 8)); + xmem_ctrl_in.rd_en <= '1' when pipeline_regs(ST_ADGEN-1).act_array(ACT_X_MEM_RD) = '1' else '0'; + -- Either take the result of the AGU or use the absolute value stored in the instruction word + xmem_ctrl_in.wr_addr <= pipeline_regs(ST_EXEC-1).adgen_address_x when pipeline_regs(ST_EXEC-1).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_EXEC-1).instr_word(13 downto 8)); + xmem_ctrl_in.wr_en <= '1' when pipeline_regs(ST_EXEC-1).act_array(ACT_X_MEM_WR) = '1' else '0'; + xmem_ctrl_in.data_in <= rf_X_bus_data_out when pipeline_regs(ST_EXEC-1).act_array(ACT_X_BUS_RD) = '1' or + pipeline_regs(ST_EXEC-1).act_array(ACT_L_BUS_RD) = '1' else + exec_dst_operand; + + xmem_data_out <= xmem_ctrl_out.data_out; + xmem_data_out_valid <= xmem_ctrl_out.data_out_valid; + + ------------------ + -- Y Memory + ------------------ + -- Either take the result of the AGU or use the absolute value stored in the instruction word + ymem_ctrl_in.rd_addr <= adgen_address_out_y when pipeline_regs(ST_ADGEN-1).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_ADGEN-1).instr_word(13 downto 8)); + ymem_ctrl_in.rd_en <= '1' when pipeline_regs(ST_ADGEN-1).act_array(ACT_Y_MEM_RD) = '1' else '0'; + -- Either take the result of the AGU or use the absolute value stored in the instruction word + ymem_ctrl_in.wr_addr <= pipeline_regs(ST_EXEC-1).adgen_address_y when pipeline_regs(ST_EXEC-1).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_EXEC-1).instr_word(13 downto 8)); + ymem_ctrl_in.wr_en <= '1' when pipeline_regs(ST_EXEC-1).act_array(ACT_Y_MEM_WR) = '1' else '0'; + ymem_ctrl_in.data_in <= rf_Y_bus_data_out when pipeline_regs(ST_EXEC-1).act_array(ACT_Y_BUS_RD) = '1' or + pipeline_regs(ST_EXEC-1).act_array(ACT_L_BUS_RD) = '1' else + exec_dst_operand; + + ymem_data_out <= ymem_ctrl_out.data_out; + ymem_data_out_valid <= ymem_ctrl_out.data_out_valid; + + +end architecture rtl; diff --git a/FPGA_by_Gregory_Estrade/DSP/src/reg_file.vhd b/FPGA_by_Gregory_Estrade/DSP/src/reg_file.vhd new file mode 100644 index 0000000..7f3244c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/reg_file.vhd @@ -0,0 +1,679 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity reg_file is port( + clk, rst : in std_logic; + register_file : out register_file_type; + wr_R_port_A_valid : in std_logic; + wr_R_port_A : in addr_wr_port_type; + wr_R_port_B_valid : in std_logic; + wr_R_port_B : in addr_wr_port_type; + alu_wr_valid : in std_logic; + alu_wr_addr : in std_logic; + alu_wr_data : in signed(55 downto 0); + reg_wr_addr : in std_logic_vector(5 downto 0); + reg_wr_addr_valid : in std_logic; + reg_wr_data : in std_Logic_vector(23 downto 0); + reg_rd_addr : in std_logic_vector(5 downto 0); + reg_rd_data : out std_Logic_vector(23 downto 0); + X_bus_rd_addr : in std_logic_vector(1 downto 0); + X_bus_data_out : out std_logic_vector(23 downto 0); + X_bus_wr_addr : in std_logic_vector(1 downto 0); + X_bus_wr_valid : in std_logic; + X_bus_data_in : in std_logic_vector(23 downto 0); + Y_bus_rd_addr : in std_logic_vector(1 downto 0); + Y_bus_data_out : out std_logic_vector(23 downto 0); + Y_bus_wr_addr : in std_logic_vector(1 downto 0); + Y_bus_wr_valid : in std_logic; + Y_bus_data_in : in std_logic_vector(23 downto 0); + L_bus_rd_addr : in std_logic_vector(2 downto 0); + L_bus_rd_valid : in std_logic; + L_bus_wr_addr : in std_logic_vector(2 downto 0); + L_bus_wr_valid : in std_logic; + push_stack : in push_stack_type; + pop_stack : in pop_stack_type; + set_sr : in std_logic; + new_sr : in std_logic_vector(15 downto 0); + set_omr : in std_logic; + new_omr : in std_logic_vector(7 downto 0); + dec_lc : in std_logic; + set_lc : in std_logic; + new_lc : in unsigned(15 downto 0); + set_la : in std_logic; + new_la : in unsigned(BW_ADDRESS-1 downto 0) +); +end entity; + + +architecture rtl of reg_file is + + signal addr_r : addr_array; + signal addr_m : addr_array; + signal addr_n : addr_array; + + signal loop_address : unsigned(BW_ADDRESS-1 downto 0); + signal loop_counter : unsigned(15 downto 0); + + -- condition code register + signal ccr : std_logic_vector(7 downto 0); + -- mode register + signal mr : std_logic_vector(7 downto 0); + -- status register = mode register + condition code register + signal sr : std_logic_vector(15 downto 0); + -- operation mode register + signal omr : std_logic_vector(7 downto 0); + + signal stack_pointer : unsigned(5 downto 0); + signal system_stack_ssh : stack_array_type; + signal system_stack_ssl : stack_array_type; + + signal x0 : signed(23 downto 0); + signal x1 : signed(23 downto 0); + signal y0 : signed(23 downto 0); + signal y1 : signed(23 downto 0); + + signal a0 : signed(23 downto 0); + signal a1 : signed(23 downto 0); + signal a2 : signed(7 downto 0); + + signal b0 : signed(23 downto 0); + signal b1 : signed(23 downto 0); + signal b2 : signed(7 downto 0); + + signal limited_a1 : signed(23 downto 0); + signal limited_b1 : signed(23 downto 0); + signal limited_a0 : signed(23 downto 0); + signal limited_b0 : signed(23 downto 0); + signal set_limiting_flag : std_logic; + signal X_bus_rd_limited_a : std_logic; + signal X_bus_rd_limited_b : std_logic; + signal Y_bus_rd_limited_a : std_logic; + signal Y_bus_rd_limited_b : std_logic; + signal reg_rd_limited_a : std_logic; + signal reg_rd_limited_b : std_logic; + signal rd_limited_a : std_logic; + signal rd_limited_b : std_logic; + +begin + + + + sr <= mr & ccr; + + register_file.addr_r <= addr_r; + register_file.addr_n <= addr_n; + register_file.addr_m <= addr_m; + register_file.lc <= loop_counter; + register_file.la <= loop_address; + register_file.ccr <= ccr; + register_file.mr <= mr; + register_file.sr <= sr; + register_file.omr <= omr; + register_file.stack_pointer <= stack_pointer; + register_file.current_ssh <= system_stack_ssh(to_integer(stack_pointer(3 downto 0))); + register_file.current_ssl <= system_stack_ssl(to_integer(stack_pointer(3 downto 0))); + register_file.a <= a2 & a1 & a0; + register_file.b <= b2 & b1 & b0; + register_file.x0 <= x0; + register_file.x1 <= x1; + register_file.y0 <= y0; + register_file.y1 <= y1; + + + global_register_file: process(clk) is + variable stack_pointer_plus_1 : unsigned(3 downto 0); + variable reg_addr : integer range 0 to 7; + begin + if rising_edge(clk) then + if rst = '1' then + addr_r <= (others => (others => '0')); + addr_n <= (others => (others => '0')); + addr_m <= (others => (others => '1')); + ccr <= (others => '0'); + mr <= (others => '0'); + omr <= (others => '0'); + system_stack_ssl <= (others => (others => '0')); + system_stack_ssh <= (others => (others => '0')); + stack_pointer <= (others => '0'); + loop_counter <= (others => '0'); + loop_address <= (others => '0'); + x0 <= (others => '0'); + x1 <= (others => '0'); + y0 <= (others => '0'); + y1 <= (others => '0'); + a0 <= (others => '0'); + a1 <= (others => '0'); + a2 <= (others => '0'); + b0 <= (others => '0'); + b1 <= (others => '0'); + b2 <= (others => '0'); + else + reg_addr := to_integer(unsigned(reg_wr_addr(2 downto 0))); + ----------------------------------------------------------------------- + -- General write port to register file using 6 bit addressing scheme + ----------------------------------------------------------------------- + if reg_wr_addr_valid = '1' then + case reg_wr_addr(5 downto 3) is + -- X0, X1, Y0, Y1 + when "000" => + case reg_wr_addr(2 downto 0) is + when "100" => + x0 <= signed(reg_wr_data); + when "101" => + x1 <= signed(reg_wr_data); + when "110" => + y0 <= signed(reg_wr_data); + when "111" => + y1 <= signed(reg_wr_data); + when others => + end case; + + -- A0, B0, A2, B2, A1, B1, A, B + when "001" => + case reg_wr_addr(2 downto 0) is + when "000" => + a0 <= signed(reg_wr_data); + when "001" => + b0 <= signed(reg_wr_data); + when "010" => + a2 <= signed(reg_wr_data(7 downto 0)); + when "011" => + b2 <= signed(reg_wr_data(7 downto 0)); + when "100" => + a1 <= signed(reg_wr_data); + when "101" => + b1 <= signed(reg_wr_data); + when "110" => + a2 <= (others => reg_wr_data(23)); + a1 <= signed(reg_wr_data); + a0 <= (others => '0'); + when "111" => + b2 <= (others => reg_wr_data(23)); + b1 <= signed(reg_wr_data); + b0 <= (others => '0'); + when others => + end case; + + -- R0-R7 + when "010" => + addr_r(reg_addr) <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- N0-N7 + when "011" => + addr_n(reg_addr) <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- M0-M7 + when "100" => + addr_m(reg_addr) <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- SR, OMR, SP, SSH, SSL, LA, LC + when "111" => + case reg_wr_addr(2 downto 0) is + -- SR + when "001" => + mr <= reg_wr_data(15 downto 8); + ccr <= reg_wr_data( 7 downto 0); + + -- OMR + when "010" => + omr <= reg_wr_data(7 downto 0); + + -- SP + when "011" => + stack_pointer <= unsigned(reg_wr_data(5 downto 0)); + + -- SSH + when "100" => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= reg_wr_data(BW_ADDRESS-1 downto 0); + -- increase stack after writing + stack_pointer(3 downto 0) <= stack_pointer_plus_1; + -- test whether stack is full, if so set the stack error flag (SE) + if stack_pointer(3 downto 0) = "1111" then + stack_pointer(4) <= '1'; + end if; + + -- SSL + when "101" => + system_stack_ssl(to_integer(stack_pointer)) <= reg_wr_data(BW_ADDRESS-1 downto 0); + + -- LA + when "110" => + loop_address <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- LC + when "111" => + loop_counter <= unsigned(reg_wr_data(15 downto 0)); + + when others => + end case; + when others => + end case; + end if; + + ---------------- + -- X BUS Write + ---------------- + if X_bus_wr_valid = '1' then + case X_bus_wr_addr is + when "00" => + x0 <= signed(X_bus_data_in); + when "01" => + x1 <= signed(X_bus_data_in); + when "10" => + a2 <= (others => X_bus_data_in(23)); + a1 <= signed(X_bus_data_in); + a0 <= (others => '0'); + when others => + b2 <= (others => X_bus_data_in(23)); + b1 <= signed(X_bus_data_in); + b0 <= (others => '0'); + end case; + end if; + ---------------- + -- Y BUS Write + ---------------- + if Y_bus_wr_valid = '1' then + case Y_bus_wr_addr is + when "00" => + y0 <= signed(Y_bus_data_in); + when "01" => + y1 <= signed(Y_bus_data_in); + when "10" => + a2 <= (others => Y_bus_data_in(23)); + a1 <= signed(Y_bus_data_in); + a0 <= (others => '0'); + when others => + b2 <= (others => Y_bus_data_in(23)); + b1 <= signed(Y_bus_data_in); + b0 <= (others => '0'); + end case; + end if; + ------------------ + -- L BUS Write + ------------------ + if L_bus_wr_valid = '1' then + case L_bus_wr_addr is + -- A10 + when "000" => + a1 <= signed(X_bus_data_in); + a0 <= signed(Y_bus_data_in); + -- B10 + when "001" => + b1 <= signed(X_bus_data_in); + b0 <= signed(Y_bus_data_in); + -- X + when "010" => + x1 <= signed(X_bus_data_in); + x0 <= signed(Y_bus_data_in); + -- Y + when "011" => + y1 <= signed(X_bus_data_in); + y0 <= signed(Y_bus_data_in); + -- A + when "100" => + a2 <= (others => X_bus_data_in(23)); + a1 <= signed(X_bus_data_in); + a0 <= signed(Y_bus_data_in); + -- B + when "101" => + b2 <= (others => X_bus_data_in(23)); + b1 <= signed(X_bus_data_in); + b0 <= signed(Y_bus_data_in); + -- AB + when "110" => + a2 <= (others => X_bus_data_in(23)); + a1 <= signed(X_bus_data_in); + a0 <= (others => '0'); + b2 <= (others => Y_bus_data_in(23)); + b1 <= signed(Y_bus_data_in); + b0 <= (others => '0'); + -- BA + when others => + a2 <= (others => Y_bus_data_in(23)); + a1 <= signed(Y_bus_data_in); + a0 <= (others => '0'); + b2 <= (others => X_bus_data_in(23)); + b1 <= signed(X_bus_data_in); + b0 <= (others => '0'); + end case; + end if; + + --------------------- + -- STATUS REGISTERS + --------------------- + if set_sr = '1' then + ccr <= new_sr( 7 downto 0); + mr <= new_sr(15 downto 8); + end if; + if set_omr = '1' then + omr <= new_omr; + end if; + -- data limiter active? + -- listing this statement after the set_sr test results + -- in the correct behaviour for ALU operations with parallel move + if set_limiting_flag = '1' then + ccr(6) <= '1'; + end if; + + -------------------- + -- LOOP REGISTERS + -------------------- + if set_la = '1' then + loop_address <= new_la; + end if; + if set_lc = '1' then + loop_counter <= new_lc; + end if; + if dec_lc = '1' then + loop_counter <= loop_counter - 1; + end if; + + --------------------- + -- ADDRESS REGISTER + --------------------- + if wr_R_port_A_valid = '1' then + addr_r(to_integer(wr_R_port_A.reg_number)) <= wr_R_port_A.reg_value; + end if; + if wr_R_port_B_valid = '1' then + addr_r(to_integer(wr_R_port_B.reg_number)) <= wr_R_port_B.reg_value; + end if; + + ------------------------- + -- ALU ACCUMULATOR WRITE + ------------------------- + if alu_wr_valid = '1' then + if alu_wr_addr = '0' then + a2 <= alu_wr_data(55 downto 48); + a1 <= alu_wr_data(47 downto 24); + a0 <= alu_wr_data(23 downto 0); + else + b2 <= alu_wr_data(55 downto 48); + b1 <= alu_wr_data(47 downto 24); + b0 <= alu_wr_data(23 downto 0); + end if; + end if; + + --------------------- + -- STACK CONTROLLER + --------------------- + stack_pointer_plus_1 := stack_pointer(3 downto 0) + 1; + if push_stack.valid = '1' then + -- increase stack after writing + stack_pointer(3 downto 0) <= stack_pointer_plus_1; + -- test whether stack is full, if so set the stack error flag (SE) + if stack_pointer(3 downto 0) = "1111" then + stack_pointer(4) <= '1'; + end if; + case push_stack.content is + when PC => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= std_logic_vector(push_stack.pc); + + when PC_AND_SR => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= std_logic_vector(push_stack.pc); + system_stack_ssl(to_integer(stack_pointer_plus_1)) <= SR; + + when LA_AND_LC => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= std_logic_vector(loop_address); + system_stack_ssl(to_integer(stack_pointer_plus_1)) <= std_logic_vector(loop_counter); + + end case; + end if; + + -- decrease stack pointer + if pop_stack.valid = '1' then + stack_pointer(3 downto 0) <= stack_pointer(3 downto 0) - 1; + -- if stack is empty set the underflow flag (bit 5, UF) and the stack error flag (bit 4, SE) + if stack_pointer(3 downto 0) = "0000" then + stack_pointer(5) <= '1'; + stack_pointer(4) <= '1'; + end if; + end if; + end if; + end if; + end process; + + + x_bus_rd_port: process(X_bus_rd_addr,x0,x1,a1,b1,limited_a1,limited_b1, + L_bus_rd_addr,L_bus_rd_valid,y1) is + begin + X_bus_rd_limited_a <= '0'; + X_bus_rd_limited_b <= '0'; + case X_bus_rd_addr is + when "00" => X_bus_data_out <= std_logic_vector(x0); + when "01" => X_bus_data_out <= std_logic_vector(x1); + when "10" => X_bus_data_out <= std_logic_vector(limited_a1); X_bus_rd_limited_a <= '1'; + when others => X_bus_data_out <= std_logic_vector(limited_b1); X_bus_rd_limited_b <= '1'; + end case; + if L_bus_rd_valid = '1' then + case L_bus_rd_addr is + when "000" => X_bus_data_out <= std_logic_vector(a1); + when "001" => X_bus_data_out <= std_logic_vector(b1); + when "010" => X_bus_data_out <= std_logic_vector(x1); + when "011" => X_bus_data_out <= std_logic_vector(y1); + when "100" => X_bus_data_out <= std_logic_vector(limited_a1); X_bus_rd_limited_a <= '1'; + when "101" => X_bus_data_out <= std_logic_vector(limited_b1); X_bus_rd_limited_b <= '1'; + when "110" => X_bus_data_out <= std_logic_vector(limited_a1); X_bus_rd_limited_a <= '1'; + when others => X_bus_data_out <= std_logic_vector(limited_b1); X_bus_rd_limited_b <= '1'; + end case; + end if; + end process x_bus_rd_port; + + y_bus_rd_port: process(Y_bus_rd_addr,y0,y1,a1,b1,limited_a1,limited_b1, + L_bus_rd_addr,L_bus_rd_valid,a0,b0,x0,limited_a0,limited_b0) is + begin + Y_bus_rd_limited_a <= '0'; + Y_bus_rd_limited_b <= '0'; + case Y_bus_rd_addr is + when "00" => Y_bus_data_out <= std_logic_vector(y0); + when "01" => Y_bus_data_out <= std_logic_vector(y1); + when "10" => Y_bus_data_out <= std_logic_vector(limited_a1); Y_bus_rd_limited_a <= '1'; + when others => Y_bus_data_out <= std_logic_vector(limited_b1); Y_bus_rd_limited_b <= '1'; + end case; + if L_bus_rd_valid = '1' then + case L_bus_rd_addr is + when "000" => Y_bus_data_out <= std_logic_vector(a0); + when "001" => Y_bus_data_out <= std_logic_vector(b0); + when "010" => Y_bus_data_out <= std_logic_vector(x0); + when "011" => Y_bus_data_out <= std_logic_vector(y0); + when "100" => Y_bus_data_out <= std_logic_vector(limited_a0); Y_bus_rd_limited_a <= '1'; + when "101" => Y_bus_data_out <= std_logic_vector(limited_b0); Y_bus_rd_limited_b <= '1'; + when "110" => Y_bus_data_out <= std_logic_vector(limited_b1); Y_bus_rd_limited_b <= '1'; + when others => Y_bus_data_out <= std_logic_vector(limited_a1); Y_bus_rd_limited_a <= '1'; + end case; + end if; + end process y_bus_rd_port; + + + reg_rd_port: process(reg_rd_addr, x0,x1,y0,y1,a0,a1,a2,b0,b1,b2, + omr,ccr,mr,addr_r,addr_n,addr_m,stack_pointer, + loop_address,loop_counter,system_stack_ssl,system_stack_ssh) is + variable reg_addr : integer range 0 to 7; + begin + reg_addr := to_integer(unsigned(reg_rd_addr(2 downto 0))); + reg_rd_data <= (others => '0'); + reg_rd_limited_a <= '0'; + reg_rd_limited_b <= '0'; + + case reg_rd_addr(5 downto 3) is + -- X0, X1, Y0, Y1 + when "000" => + case reg_rd_addr(2 downto 0) is + when "100" => + reg_rd_data <= std_logic_vector(x0); + when "101" => + reg_rd_data <= std_logic_vector(x1); + when "110" => + reg_rd_data <= std_logic_vector(y0); + when "111" => + reg_rd_data <= std_logic_vector(y1); + when others => + end case; + + -- A0, B0, A2, B2, A1, B1, A, B + when "001" => + case reg_rd_addr(2 downto 0) is + when "000" => + reg_rd_data <= std_logic_vector(a0); + when "001" => + reg_rd_data <= std_logic_vector(b0); + when "010" => + -- MSBs are read as zero! + reg_rd_data(23 downto 8) <= (others => '0'); + reg_rd_data(7 downto 0) <= std_logic_vector(a2); + when "011" => + -- MSBs are read as zero! + reg_rd_data(23 downto 8) <= (others => '0'); + reg_rd_data(7 downto 0) <= std_logic_vector(b2); + when "100" => + reg_rd_data <= std_logic_vector(a1); + when "101" => + reg_rd_data <= std_logic_vector(b1); + when "110" => + reg_rd_data <= std_logic_vector(limited_a1); + reg_rd_limited_a <= '1'; + when "111" => + reg_rd_data <= std_logic_vector(limited_b1); + reg_rd_limited_b <= '1'; + when others => + end case; + + -- R0-R7 + when "010" => + reg_rd_data <= std_logic_vector(resize(addr_r(reg_addr), 24)); + + -- N0-N7 + when "011" => + reg_rd_data <= std_logic_vector(resize(addr_n(reg_addr), 24)); + + -- M0-M7 + when "100" => + reg_rd_data <= std_logic_vector(resize(addr_m(reg_addr), 24)); + + -- SR, OMR, SP, SSH, SSL, LA, LC + when "111" => + case reg_wr_addr(2 downto 0) is + -- SR + when "001" => + reg_rd_data(23 downto 16) <= (others => '0'); + reg_rd_data(15 downto 0) <= mr & ccr; + + -- OMR + when "010" => + reg_rd_data(23 downto 8) <= (others => '0'); + reg_rd_data( 7 downto 0) <= omr; + + -- SP + when "011" => + reg_rd_data(23 downto 6) <= (others => '0'); + reg_rd_data(5 downto 0) <= std_logic_vector(stack_pointer); + + -- SSH + when "100" => +-- TODO! +-- system_stack_ssh(to_integer(stack_pointer_plus_1)) <= reg_wr_data(BW_ADDRESS-1 downto 0); +-- -- increase stack after writing +-- stack_pointer(3 downto 0) <= stack_pointer_plus_1; +-- -- test whether stack is full, if so set the stack error flag (SE) +-- if stack_pointer(3 downto 0) = "1111" then +-- stack_pointer(4) <= '1'; +-- end if; + + -- SSL + when "101" => + reg_rd_data <= (others => '0'); + reg_rd_data(BW_ADDRESS-1 downto 0) <= std_logic_vector(system_stack_ssl(to_integer(stack_pointer))); + + -- LA + when "110" => + reg_rd_data <= (others => '0'); + reg_rd_data(BW_ADDRESS-1 downto 0) <= std_logic_vector(loop_address); + + -- LC + when "111" => + reg_rd_data <= (others => '0'); + reg_rd_data(15 downto 0) <= std_logic_vector(loop_counter); + + when others => + end case; + when others => + end case; + end process; + + rd_limited_a <= '1' when reg_rd_limited_a = '1' or X_bus_rd_limited_a = '1' or Y_bus_rd_limited_a = '1' else '0'; + rd_limited_b <= '1' when reg_rd_limited_b = '1' or X_bus_rd_limited_b = '1' or Y_bus_rd_limited_b = '1' else '0'; + + data_shifter_limiter: process(a2,a1,a0,b2,b1,b0,sr,rd_limited_a,rd_limited_b) is + variable scaled_a : signed(55 downto 0); + variable scaled_b : signed(55 downto 0); + begin + + set_limiting_flag <= '0'; + ----------------- + -- DATA SCALING + ----------------- + -- test against scaling bits S1, S0 + case sr(11 downto 10) is + -- scale down (right shift) + when "01" => + scaled_a := a2(7) & a2 & a1 & a0(23 downto 1); + scaled_b := b2(7) & b2 & b1 & b0(23 downto 1); + -- scale up (arithmetic left shift) + when "10" => + scaled_a := a2(6 downto 0) & a1 & a0 & '0'; + scaled_b := b2(6 downto 0) & b1 & b0 & '0'; + -- "00" do not scale! + when others => + scaled_a := a2 & a1 & a0; + scaled_b := b2 & b1 & b0; + end case; + + -- only sign extension stored in a2? + -- Yes: No limiting needed! + if scaled_a(55 downto 47) = "111111111" or scaled_a(55 downto 47) = "000000000" then + limited_a1 <= scaled_a(47 downto 24); + limited_a0 <= scaled_a(23 downto 0); + else + -- positive value in a? + if scaled_a(55) = '0' then + limited_a1 <= X"7FFFFF"; + limited_a0 <= X"FFFFFF"; + -- negative value in a? + else + limited_a1 <= X"800000"; + limited_a0 <= X"000000"; + end if; + -- set the limit flag in the status register + if rd_limited_a = '1' then + set_limiting_flag <= '1'; + end if; + end if; + -- only sign extension stored in b2? + -- Yes: No limiting needed! + if scaled_b(55 downto 47) = "111111111" or scaled_b(55 downto 47) = "000000000" then + limited_b1 <= scaled_b(47 downto 24); + limited_b0 <= scaled_b(23 downto 0); + else + -- positive value in b? + if scaled_b(55) = '0' then + limited_b1 <= X"7FFFFF"; + limited_b0 <= X"FFFFFF"; + -- negative value in b? + else + limited_b1 <= X"800000"; + limited_b0 <= X"000000"; + end if; + -- set the limit flag in the status register + if rd_limited_b = '1' then + set_limiting_flag <= '1'; + end if; + end if; + + end process; + + +end architecture rtl; diff --git a/FPGA_by_Gregory_Estrade/DSP/src/types_pkg.vhd b/FPGA_by_Gregory_Estrade/DSP/src/types_pkg.vhd new file mode 100644 index 0000000..131f7fa --- /dev/null +++ b/FPGA_by_Gregory_Estrade/DSP/src/types_pkg.vhd @@ -0,0 +1,167 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; + + + +package types_pkg is + + -- the different addressing modes + type adgen_mode_type is (NOP, POST_MIN_N, POST_PLUS_N, POST_MIN_1, POST_PLUS_1, INDEXED_N, PRE_MIN_1, ABSOLUTE, IMMEDIATE); + ------------------------ + -- Decoded instructions + ------------------------ + type instructions_type is ( + INSTR_NOP , + INSTR_RTI , + INSTR_ILLEGAL , + INSTR_SWI , + INSTR_RTS , + INSTR_RESET , + INSTR_WAIT , + INSTR_STOP , + INSTR_ENDDO , + INSTR_ANDI , + INSTR_ORI , + INSTR_DIV , + INSTR_NORM , + INSTR_LUA , + INSTR_MOVEC , + INSTR_REP , + INSTR_DO , + INSTR_MOVEM , + INSTR_MOVEP , + INSTR_PM_MOVEM, + INSTR_BCLR , + INSTR_BSET , + INSTR_JCLR , + INSTR_JSET , + INSTR_JMP , + INSTR_JCC , + INSTR_BCHG , + INSTR_BTST , + INSTR_JSCLR , + INSTR_JSSET , + INSTR_JSR , + INSTR_JSCC ); + + type addr_array is array(0 to 7) of unsigned(BW_ADDRESS-1 downto 0); + + type alu_shift_mode is (NO_SHIFT, SHIFT_LEFT, SHIFT_RIGHT, ZEROS); + type alu_ccr_flag is (DONT_TOUCH, CLEAR, MODIFY, SET); + type alu_ccr_flag_array is array(7 downto 0) of alu_ccr_flag; + + type alu_ctrl_type is record + mul_op1 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 + mul_op2 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 + shift_src : std_logic; -- a,b + shift_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: reserved + shift_mode : alu_shift_mode; + rotate : std_logic; -- 0: logical shift, 1: rotate shift + add_src_stage_1 : std_logic_vector(2 downto 0); -- x0,x1,y0,y1,x,y,a,b + add_src_stage_2 : std_logic_vector(1 downto 0); -- 00: 0 , 01: add_src_1, 10: mul_result, 11: reserved + add_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: reserved + logic_function : std_logic_vector(2 downto 0); -- 000: none, 001: and, 010: or, 011: eor, 100: not + word_24_update : std_logic; -- only accumulator bits 47 downto 24 affected? + rounding_used : std_logic_vector(1 downto 0); -- 00: no rounding, 01: rounding, 10: add carry, 11: subtract carry + store_result : std_logic; -- 0: do not update accumulator, 1: update accumulator + dst_accu : std_logic; -- 0: a, 1: b + div_instr : std_logic; -- DIV instruction? Special ALU operations needed! + norm_instr : std_logic; -- NORM instruction? Special ALU operations needed! + ccr_flags_ctrl : alu_ccr_flag_array; + end record; + + type pipeline_signals is record + instr_word: std_logic_vector(23 downto 0); + pc : unsigned(BW_ADDRESS-1 downto 0); + dble_word_instr : std_logic; + instr_array : instructions_type; + act_array : std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + dec_activate : std_logic; + adgen_mode_a : adgen_mode_type; + adgen_mode_b : adgen_mode_type; + reg_wr_addr : std_logic_vector(5 downto 0); + reg_rd_addr : std_logic_vector(5 downto 0); + x_bus_rd_addr : std_logic_vector(1 downto 0); + x_bus_wr_addr : std_logic_vector(1 downto 0); + y_bus_rd_addr : std_logic_vector(1 downto 0); + y_bus_wr_addr : std_logic_vector(1 downto 0); + l_bus_addr : std_logic_vector(2 downto 0); + adgen_address_x : unsigned(BW_ADDRESS-1 downto 0); + adgen_address_y : unsigned(BW_ADDRESS-1 downto 0); + RAM_out_x : std_logic_vector(23 downto 0); + RAM_out_y : std_logic_vector(23 downto 0); + alu_ctrl : alu_ctrl_type; + end record; + + type pipeline_type is array(0 to PIPELINE_DEPTH-1) of pipeline_signals; + + + type register_file_type is record + a : signed(55 downto 0); + b : signed(55 downto 0); + x0 : signed(23 downto 0); + x1 : signed(23 downto 0); + y0 : signed(23 downto 0); + y1 : signed(23 downto 0); + la : unsigned(BW_ADDRESS-1 downto 0); + lc : unsigned(15 downto 0); + addr_r : addr_array; + addr_n : addr_array; + addr_m : addr_array; + ccr : std_logic_vector(7 downto 0); + mr : std_logic_vector(7 downto 0); + sr : std_logic_vector(15 downto 0); + omr : std_logic_vector(7 downto 0); + stack_pointer : unsigned(5 downto 0); +-- system_stack_ssh : stack_array_type; +-- system_stack_ssl : stack_array_type; + current_ssh : std_logic_vector(BW_ADDRESS-1 downto 0); + current_ssl : std_logic_vector(BW_ADDRESS-1 downto 0); + + end record; + + type addr_wr_port_type is record +-- write_valid : std_logic; + reg_number : unsigned(2 downto 0); + reg_value : unsigned(15 downto 0); + end record; + + type mem_ctrl_type_in is record + rd_addr : unsigned(BW_ADDRESS-1 downto 0); + rd_en : std_logic; + wr_addr : unsigned(BW_ADDRESS-1 downto 0); + wr_en : std_logic; + data_in : std_logic_vector(23 downto 0); + end record; + + type mem_ctrl_type_out is record + data_out : std_logic_vector(23 downto 0); + data_out_valid : std_logic; + end record; + + type memory_type is (X_MEM, Y_MEM, P_MEM); + --------------- + -- STACK TYPES + --------------- + type stack_array_type is array(0 to 15) of std_logic_vector(BW_ADDRESS-1 downto 0); + + type push_stack_content_type is (PC, PC_AND_SR, LA_AND_LC); + + type push_stack_type is record + valid : std_logic; + pc : unsigned(BW_ADDRESS-1 downto 0); + content : push_stack_content_type; + end record; + +-- type pop_stack_content_type is (PC, PC_AND_SR, SR, LA_AND_LC); + +-- type pop_stack_type is std_logic; + type pop_stack_type is record + valid : std_logic; +-- content : pop_stack_content_type; + end record; + +end package types_pkg; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd new file mode 100644 index 0000000..b2b8dbb --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd @@ -0,0 +1,971 @@ +-- WARNING: Do NOT edit the input and output ports in this file in a text +-- editor if you plan to continue editing the block that represents it in +-- the Block Editor! File corruption is VERY likely to occur. + +-- Copyright (C) 1991-2008 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +-- Generated by Quartus II Version 8.1 (Build Build 163 10/28/2008) +-- Created on Tue Sep 08 16:24:20 2009 + +library work; +use work.FalconIO_SDCard_IDE_CF_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + + +-- Entity Declaration + + +-- Entity Declaration + +ENTITY FalconIO_SDCard_IDE_CF IS + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + PORT + ( + CLK33M : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + CLK2M : IN STD_LOGIC; + CLK500k : IN STD_LOGIC; + nFB_CS1 : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + nFB_BURST : IN STD_LOGIC; + FB_ADR : IN STD_LOGIC_VECTOR(31 downto 0); + LP_BUSY : IN STD_LOGIC; + nACSI_DRQ : IN STD_LOGIC; + nACSI_INT : IN STD_LOGIC; + nSCSI_DRQ : IN STD_LOGIC; + nSCSI_MSG : IN STD_LOGIC; + MIDI_IN : IN STD_LOGIC; + RxD : IN STD_LOGIC; + CTS : IN STD_LOGIC; + RI : IN STD_LOGIC; + DCD : IN STD_LOGIC; + AMKB_RX : IN STD_LOGIC; + PIC_AMKB_RX : IN STD_LOGIC; + IDE_RDY : IN STD_LOGIC; + IDE_INT : IN STD_LOGIC; + WP_CS_CARD : IN STD_LOGIC; + nINDEX : IN STD_LOGIC; + TRACK00 : IN STD_LOGIC; + nRD_DATA : IN STD_LOGIC; + nDCHG : IN STD_LOGIC; + SD_DATA0 : IN STD_LOGIC; + SD_DATA1 : IN STD_LOGIC; + SD_DATA2 : IN STD_LOGIC; + SD_CARD_DEDECT : IN STD_LOGIC; + SD_WP : IN STD_LOGIC; + nDACK0 : IN STD_LOGIC; + nFB_WR : INOUT STD_LOGIC; + WP_CF_CARD : IN STD_LOGIC; + nWP : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + nRSTO : IN STD_LOGIC; + HD_DD : IN STD_LOGIC; + nSCSI_C_D : IN STD_LOGIC; + nSCSI_I_O : IN STD_LOGIC; + CLK2M4576 : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + VSYNC : IN STD_LOGIC; + HSYNC : IN STD_LOGIC; + DSP_INT : IN STD_LOGIC; + nBLANK : IN STD_LOGIC; + FDC_CLK : IN STD_LOGIC; + FB_ALE : IN STD_LOGIC; + ACP_CONF : IN STD_LOGIC_VECTOR(31 downto 24); + nIDE_CS1 : OUT STD_LOGIC; + nIDE_CS0 : OUT STD_LOGIC; + LP_STR : OUT STD_LOGIC; + LP_DIR : OUT STD_LOGIC; + nACSI_ACK : OUT STD_LOGIC; + nACSI_RESET : OUT STD_LOGIC; + nACSI_CS : OUT STD_LOGIC; + ACSI_DIR : OUT STD_LOGIC; + ACSI_A1 : OUT STD_LOGIC; + nSCSI_ACK : OUT STD_LOGIC; + nSCSI_ATN : OUT STD_LOGIC; + SCSI_DIR : OUT STD_LOGIC; + SD_CLK : OUT STD_LOGIC; + YM_QA : OUT STD_LOGIC; + YM_QC : OUT STD_LOGIC; + YM_QB : OUT STD_LOGIC; + nSDSEL : OUT STD_LOGIC; + STEP : OUT STD_LOGIC; + MOT_ON : OUT STD_LOGIC; + nRP_LDS : OUT STD_LOGIC; + nRP_UDS : OUT STD_LOGIC; + nROM4 : OUT STD_LOGIC; + nROM3 : OUT STD_LOGIC; + nCF_CS1 : OUT STD_LOGIC; + nCF_CS0 : OUT STD_LOGIC; + nIDE_RD : INOUT STD_LOGIC; + nIDE_WR : INOUT STD_LOGIC; + AMKB_TX : OUT STD_LOGIC; + IDE_RES : OUT STD_LOGIC; + DTR : OUT STD_LOGIC; + RTS : OUT STD_LOGIC; + TxD : OUT STD_LOGIC; + MIDI_OLR : OUT STD_LOGIC; + MIDI_TLR : OUT STD_LOGIC; + nDREQ0 : OUT STD_LOGIC; + DSA_D : OUT STD_LOGIC; + nMFP_INT : OUT STD_LOGIC; + FALCON_IO_TA : OUT STD_LOGIC; + STEP_DIR : OUT STD_LOGIC; + WR_DATA : OUT STD_LOGIC; + WR_GATE : OUT STD_LOGIC; + DMA_DRQ : OUT STD_LOGIC; + FB_AD : INOUT STD_LOGIC_VECTOR(31 downto 0); + LP_D : INOUT STD_LOGIC_VECTOR(7 downto 0); + ACSI_D : INOUT STD_LOGIC_VECTOR(7 downto 0); + SCSI_D : INOUT STD_LOGIC_VECTOR(7 downto 0); + SCSI_PAR : INOUT STD_LOGIC; + nSCSI_SEL : INOUT STD_LOGIC; + nSCSI_BUSY : INOUT STD_LOGIC; + nSCSI_RST : INOUT STD_LOGIC; + SD_CD_DATA3 : INOUT STD_LOGIC; + SD_CDM_D1 : INOUT STD_LOGIC + ); + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + +END FalconIO_SDCard_IDE_CF; + + +-- Architecture Body + +ARCHITECTURE FalconIO_SDCard_IDE_CF_architecture OF FalconIO_SDCard_IDE_CF IS +-- system +signal SYS_CLK : STD_LOGIC; +signal RESETn : STD_LOGIC; +signal FB_B0 : STD_LOGIC; -- UPPER BYT BEI 16BIT BUS +signal FB_B1 : STD_LOGIC; -- LOWER BYT BEI 16BIT BUS +signal BYT : STD_LOGIC; -- WENN BYT -> 1 +signal LONG : STD_LOGIC; -- WENN -> 1 +-- KEYBOARD MIDI +signal ACIA_CS_I : STD_LOGIC; +signal IRQ_KEYBDn : STD_LOGIC; +signal IRQ_MIDIn : STD_LOGIC; +signal KEYB_RxD : STD_LOGIC; +signal AMKB_REG : STD_LOGIC_VECTOR(4 downto 0); +signal MIDI_OUT : STD_LOGIC; +signal DATA_OUT_ACIA_I : STD_LOGIC_VECTOR(7 downto 0); +signal DATA_OUT_ACIA_II : STD_LOGIC_VECTOR(7 downto 0); +-- MFP +signal MFP_CS : STD_LOGIC; +signal MFP_INTACK : STD_LOGIC; +signal LDS : STD_LOGIC; +signal DTACK_OUT_MFPn : STD_LOGIC; +signal IRQ_ACIAn : STD_LOGIC; +signal DINTn : STD_LOGIC; +signal DATA_OUT_MFP : STD_LOGIC_VECTOR(7 downto 0); +signal TDO : STD_LOGIC; +-- SOUND +signal SNDCS : STD_LOGIC; +signal SNDCS_I : STD_LOGIC; +signal SNDIR_I : STD_LOGIC; +signal LP_DIR_X : STD_LOGIC; +signal DA_OUT_X : STD_LOGIC_VECTOR(7 downto 0); +signal LP_D_X : STD_LOGIC_VECTOR(7 downto 0); +-- DIV +signal SUB_BUS : STD_LOGIC; -- SUB BUS MIT ROM-PORT, CF UND IDE +signal ROM_CS : STD_LOGIC; +-- DMA UND FLOPPY +signal DMA_DATEN_CS : STD_LOGIC; +signal DMA_MODUS_CS : STD_LOGIC; +signal DMA_MODUS : STD_LOGIC_VECTOR(15 downto 0); +signal WDC_BSL_CS : STD_LOGIC; +signal WDC_BSL : STD_LOGIC_VECTOR(1 DOWNTO 0); +signal HD_DD_OUT : STD_LOGIC; +signal FDCS_In : STD_LOGIC; +signal CA0 : STD_LOGIC; +signal CA1 : STD_LOGIC; +signal CA2 : STD_LOGIC; +signal FDINT : STD_LOGIC; +signal FDRQ : STD_LOGIC; +signal CD_OUT_FDC : STD_LOGIC_VECTOR(7 downto 0); +signal CD_IN_FDC : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_TOP_CS : STD_LOGIC; +signal DMA_TOP : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_HIGH_CS : STD_LOGIC; +signal DMA_HIGH : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_MID_CS : STD_LOGIC; +signal DMA_MID : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_LOW_CS : STD_LOGIC; +signal DMA_LOW : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_DIRM_CS : STD_LOGIC; +signal DMA_ADR_CS : STD_LOGIC; +signal DMA_STATUS : STD_LOGIC_VECTOR(2 downto 0); +signal DMA_DIR_OLD : STD_LOGIC; +signal DMA_BYT_CNT_CS : STD_LOGIC; +signal DMA_BYT_CNT : STD_LOGIC_VECTOR(31 downto 0); +signal CLR_FIFO : STD_LOGIC; +signal DMA_DRQ_I : STD_LOGIC; +signal DMA_DRQ_REG : STD_LOGIC_VECTOR(1 downto 0); +signal DMA_DRQQ : STD_LOGIC; +signal DMA_DRQ_Q : STD_LOGIC; +signal RDF_DOUT : STD_LOGIC_VECTOR(31 downto 0); +signal RDF_AZ : STD_LOGIC_VECTOR(9 downto 0); +signal RDF_RDE : STD_LOGIC; +signal RDF_WRE : STD_LOGIC; +signal RDF_DIN : STD_LOGIC_VECTOR(7 downto 0); +signal WRF_DOUT : STD_LOGIC_VECTOR(7 downto 0); +signal WRF_AZ : STD_LOGIC_VECTOR(9 downto 0); +signal WRF_RDE : STD_LOGIC; +signal WRF_WRE : STD_LOGIC; +signal nFDC_WR : STD_LOGIC; +type FCF_STATES is( FCF_IDLE, FCF_T0, FCF_T1, FCF_T2, FCF_T3, FCF_T6, FCF_T7); +signal FCF_STATE : FCF_STATES; +signal NEXT_FCF_STATE : FCF_STATES; +signal DMA_REQ : STD_LOGIC; +signal FDC_CS : STD_LOGIC; +signal FCF_CS : STD_LOGIC; +signal FCF_APH : STD_LOGIC; +signal DMA_AZ_CS : STD_LOGIC; +signal DMA_ACTIV : STD_LOGIC; +signal DMA_ACTIV_NEW : STD_LOGIC; +signal FDC_OUT : STD_LOGIC_VECTOR(7 downto 0); +-- SCSI +signal SCSI_CS : STD_LOGIC; +signal SCSI_CSn : STD_LOGIC; +signal SCSI_DOUT : STD_LOGIC_VECTOR(7 downto 0); +signal nSCSI_DACK : STD_LOGIC; +signal SCSI_DRQ : STD_LOGIC; +signal SCSI_INT : STD_LOGIC; +signal DB_OUTn : STD_LOGIC_VECTOR(7 downto 0); +signal DB_EN : STD_LOGIC; +signal DBP_OUTn : STD_LOGIC; +signal DBP_EN : STD_LOGIC; +signal RST_OUTn : STD_LOGIC; +signal RST_EN : STD_LOGIC; +signal BSY_OUTn : STD_LOGIC; +signal BSY_EN : STD_LOGIC; +signal SEL_OUTn : STD_LOGIC; +signal SEL_EN : STD_LOGIC; +-- IDE +signal nnIDE_RES : STD_LOGIC; +signal IDE_CF_CS : STD_LOGIC; +signal IDE_CF_TA : STD_LOGIC; +signal NEXT_nIDE_RD : STD_LOGIC; +signal NEXT_nIDE_WR : STD_LOGIC; +type CMD_STATES is( IDLE, T1, T6, T7); +signal CMD_STATE : CMD_STATES; +signal NEXT_CMD_STATE : CMD_STATES; + + +BEGIN +LONG <= '1' when FB_SIZE1 = '0' and FB_SIZE0 = '0' else '0'; +BYT <= '1' when FB_SIZE1 = '0' and FB_SIZE0 = '1' else '0'; +FB_B0 <= '1' when FB_ADR(0) = '0' or BYT = '0' else '0'; +FB_B1 <= '1' when FB_ADR(0) = '1' or BYT = '0' else '0'; + +FALCON_IO_TA <= '1' when SNDCS = '1' or DTACK_OUT_MFPn = '0' or ACIA_CS_I = '1' or DMA_MODUS_CS ='1' + or DMA_ADR_CS = '1' or DMA_DIRM_CS = '1' or DMA_BYT_CNT_CS = '1' or FCF_CS = '1' or IDE_CF_TA = '1' else '0'; +SUB_BUS <= '1' when nFB_WR = '1' and ROM_CS = '1' ELSE + '1' when nFB_WR = '1' and IDE_CF_CS = '1' ELSE + '1' when nFB_WR = '0' and nIDE_WR = '0' ELSE '0'; +nRP_UDS <= '0' when SUB_BUS = '1' and FB_B0 = '1' else '1'; +nRP_LDS <= '0' when SUB_BUS = '1' and FB_B1 = '1' else '1'; +nDREQ0 <= '0'; +---------------------------------------------------------------------------- +-- SD +---------------------------------------------------------------------------- +SD_CLK <= 'Z'; +SD_CD_DATA3 <= 'Z'; +SD_CDM_D1 <= 'Z'; +---------------------------------------------------------------------------- +-- IDE +---------------------------------------------------------------------------- +CMD_REG: process(nRSTO, MAIN_CLK, CMD_STATE, NEXT_CMD_STATE) + begin + if nRSTO = '0' then + CMD_STATE <= IDLE; + elsif rising_edge(MAIN_CLK) then + CMD_STATE <= NEXT_CMD_STATE; -- go to next + nIDE_RD <= NEXT_nIDE_RD; -- go to next + nIDE_WR <= NEXT_nIDE_WR; -- go to next + else + CMD_STATE <= CMD_STATE; -- halten + nIDE_RD <= nIDE_RD; -- halten + nIDE_WR <= nIDE_WR; -- halten + end if; + end process CMD_REG; + + CMD_DECODER: process(CMD_STATE, NEXT_CMD_STATE, NEXT_nIDE_RD, NEXT_nIDE_WR, IDE_RDY, IDE_CF_TA) + begin + case CMD_STATE is + when IDLE => + IDE_CF_TA <= '0'; + if IDE_CF_CS = '1' then + NEXT_nIDE_RD <= not nFB_WR; + NEXT_nIDE_WR <= nFB_WR; + NEXT_CMD_STATE <= T1; + else + NEXT_nIDE_RD <= '1'; + NEXT_nIDE_WR <= '1'; + NEXT_CMD_STATE <= IDLE; + end if; + when T1 => + IDE_CF_TA <= '0'; + NEXT_nIDE_RD <= not nFB_WR; + NEXT_nIDE_WR <= nFB_WR; + NEXT_CMD_STATE <= T6; + when T6 => + IF IDE_RDY = '1' then + IDE_CF_TA <= '1'; + NEXT_nIDE_RD <= '1'; + NEXT_nIDE_WR <= '1'; + NEXT_CMD_STATE <= T7; + else + IDE_CF_TA <= '0'; + NEXT_nIDE_RD <= not nFB_WR; + NEXT_nIDE_WR <= nFB_WR; + NEXT_CMD_STATE <= T6; + end if; + when T7 => + IDE_CF_TA <= '0'; + NEXT_nIDE_RD <= '1'; + NEXT_nIDE_WR <= '1'; + NEXT_CMD_STATE <= IDLE; + end case; + end process CMD_DECODER; + +IDE_RES <= not nnIDE_RES and nRSTO; +IDE_CF_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 7) = x"0" else '0'; -- FFF0'0000/80 +nCF_CS0 <= '0' when ACP_CONF(31) = '0' and FB_ADR(19 downto 5) = x"0" else -- FFFO'0000-FFF0'001F + '0' when ACP_CONF(31) = '1' and FB_ADR(19 downto 5) = x"2" else '1'; -- FFFO'0040-FFF0'005F +nCF_CS1 <= '0' when ACP_CONF(31) = '0' and FB_ADR(19 downto 5) = x"1" else -- FFF0'0020-FFF0'003F + '0' when ACP_CONF(31) = '1' and FB_ADR(19 downto 5) = x"3" else '1'; -- FFFO'0060-FFF0'007F +nIDE_CS0 <= '0' when ACP_CONF(30) = '0' and FB_ADR(19 downto 5) = x"2" else -- FFF0'0040-FFF0'005F + '0' when ACP_CONF(30) = '1' and FB_ADR(19 downto 5) = x"0" else '1'; -- FFFO'0000-FFF0'001F +nIDE_CS1 <= '0' when ACP_CONF(30) = '0' and FB_ADR(19 downto 5) = x"3" else -- FFF0'0060-FFF0'007F + '0' when ACP_CONF(30) = '1' and FB_ADR(19 downto 5) = x"1" else '1'; -- FFFO'0020-FFF0'003F +----------------------------------------------------------------------------------------------------------------------------------------- +-- ACSI, SCSI UND FLOPPY WD1772 +------------------------------------------------------------------------------------------------------------------------------------------- +-- daten read fifo + RDF: dcfifo0 + port map( + aclr => CLR_FIFO, + data => RDF_DIN, + rdclk => MAIN_CLK, + rdreq => RDF_RDE, + wrclk => FDC_CLK, + wrreq => RDF_WRE, + q => RDF_DOUT, + wrusedw => RDF_AZ + ); +FCF_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"0020110" and LONG = '1' else '0'; -- F002'0110 LONG ONLY +FCF_APH <= '1' when FB_ALE = '1' and FB_AD(31 downto 0) = x"F0020110" and LONG = '1' else '0'; -- ADRESSPHASE F0020110 LONG ONLY +RDF_RDE <= '1' when FCF_APH = '1' and nFB_WR = '1' else '0'; -- AKTIVIEREN IN ADRESSPHASE +FB_AD <= RDF_DOUT(7 downto 0) & RDF_DOUT(15 downto 8) & RDF_DOUT(23 downto 16) & RDF_DOUT(31 downto 24) when FCF_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +RDF_DIN <= CD_OUT_FDC when DMA_MODUS(7) = '1' else SCSI_DOUT; +-- daten write fifo + WRF: dcfifo1 + port map( + aclr => CLR_FIFO, + data => FB_AD(7 downto 0) & FB_AD(15 downto 8) & FB_AD(23 downto 16) & FB_AD(31 downto 24), + rdclk => FDC_CLK, + rdreq => WRF_RDE, + wrclk => MAIN_CLK, + wrreq => WRF_WRE, + q => WRF_DOUT, + rdusedw => WRF_AZ + ); +CD_IN_FDC <= WRF_DOUT when DMA_ACTIV = '1' and DMA_MODUS(8) = '1' else FB_AD(23 downto 16); -- BEI DMA WRITE <-FIFO SONST <-FB +DMA_AZ_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"002010C" else '0'; -- F002'010C LONG +FB_AD <= DMA_DRQ_Q & DMA_DRQ_REG & IDE_INT & FDINT & SCSI_INT & RDF_AZ & "0" & DMA_STATUS & "00" & WRF_AZ when DMA_AZ_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +DMA_DRQ_Q <= '1' when DMA_DRQ_REG = "11" and DMA_MODUS(6) = '0' else '0'; +-- FIFO WRITE: GENAU 1 MAIN_CLK ------------------------------------------------------------------------- + process(MAIN_CLK, nRSTO, WRF_WRE, nFB_WR, FCF_APH) + begin + if nRSTO = '0' THEN + WRF_WRE <= '0'; + elsif rising_edge(MAIN_CLK) then + IF FCF_APH = '1' and nFB_WR = '0' then + WRF_WRE <= '1'; + else + WRF_WRE <= '0'; + end if; + else + WRF_WRE <= WRF_WRE; + end if; + END PROCESS; + +FCF_REG: process(nRSTO, FDC_CLK, FCF_STATE, NEXT_FCF_STATE, DMA_ACTIV) + begin + if nRSTO = '0' then + FCF_STATE <= FCF_IDLE; + DMA_ACTIV <= '0'; + elsif rising_edge(FDC_CLK) then + FCF_STATE <= NEXT_FCF_STATE; -- go to next + DMA_ACTIV <= DMA_ACTIV_NEW; + else + FCF_STATE <= FCF_STATE; -- halten + DMA_ACTIV <= DMA_ACTIV; + end if; + end process FCF_REG; + +FDC_REG: process(nRSTO, FDC_CLK, FDC_OUT, FDCS_In, CD_OUT_FDC) + begin + if nRSTO = '0' then + FDC_OUT <= x"00"; + elsif rising_edge(FDC_CLK) and FDCS_In = '0' then + FDC_OUT <= CD_OUT_FDC; -- set + else + FDC_OUT <= FDC_OUT; -- halten + end if; + end process FDC_REG; + +DMA_REQ <= '1' when ((DMA_DRQ_I = '1' and DMA_MODUS(7) = '1') or (SCSI_DRQ = '1' and DMA_MODUS(7) = '0')) and DMA_STATUS(1) = '1' and DMA_MODUS(6) = '0' and CLR_FIFO = '0' else '0'; +FDC_CS <= '1' when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "00" and FB_B1 = '1' else '0'; +SCSI_CS <= '1' when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "01" and FB_B1 = '1' else '0'; + + FCF_DECODER: process(FCF_STATE, NEXT_FCF_STATE, DMA_REQ,FDC_CS, RDF_WRE, WRF_RDE, SCSI_DRQ, nSCSI_DACK, DMA_MODUS, DMA_ACTIV, FDCS_In,SCSI_CS, SCSI_CSn) + begin + case FCF_STATE is + when FCF_IDLE => + SCSI_CSn <= '1'; + FDCS_In <= '1'; + RDF_WRE <= '0'; + WRF_RDE <= '0'; + nSCSI_DACK <= '1'; + if DMA_REQ = '1' or FDC_CS = '1' or SCSI_CS = '1' then + DMA_ACTIV_NEW <= DMA_REQ; + NEXT_FCF_STATE <= FCF_T0; + else + DMA_ACTIV_NEW <= '0'; + NEXT_FCF_STATE <= FCF_IDLE; + end if; + when FCF_T0 => + SCSI_CSn <= '1'; + FDCS_In <= '1'; + RDF_WRE <= '0'; + nSCSI_DACK <= '1'; + DMA_ACTIV_NEW <= DMA_REQ; + WRF_RDE <= DMA_MODUS(8) and DMA_REQ; -- WRITE -> READ FROM FIFO + if DMA_REQ = '0' and DMA_ACTIV = '1' THEN -- spike? + NEXT_FCF_STATE <= FCF_IDLE; -- ja -> zum start + else + NEXT_FCF_STATE <= FCF_T1; + end if; + when FCF_T1 => + RDF_WRE <= '0'; + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + NEXT_FCF_STATE <= FCF_T2; + when FCF_T2 => + RDF_WRE <= '0'; + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + NEXT_FCF_STATE <= FCF_T3; + when FCF_T3 => + RDF_WRE <= '0'; + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + NEXT_FCF_STATE <= FCF_T6; + when FCF_T6 => + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + RDF_WRE <= not DMA_MODUS(8) and DMA_ACTIV; -- READ -> WRITE IN FIFO + NEXT_FCF_STATE <= FCF_T7; + when FCF_T7 => + SCSI_CSn <= '1'; + FDCS_In <= '1'; + RDF_WRE <= '0'; + WRF_RDE <= '0'; + nSCSI_DACK <= '1'; + DMA_ACTIV_NEW <= '0'; + if FDC_CS = '1' and DMA_REQ = '0' then + NEXT_FCF_STATE <= FCF_T7; + else + NEXT_FCF_STATE <= FCF_IDLE; + end if; + end case; + end process FCF_DECODER; + + I_FDC: WF1772IP_TOP_SOC + port map( + CLK => FDC_CLK, + RESETn => nRSTO, + CSn => FDCS_In, + RWn => nFDC_WR, + A1 => CA2, + A0 => CA1, + DATA_IN => CD_IN_FDC, + DATA_OUT => CD_OUT_FDC, +-- DATA_EN => CD_EN_FDC, + RDn => nRD_DATA, + TR00n => TRACK00, + IPn => nINDEX, + WPRTn => nWP, + DDEn => '0', -- Fixed to MFM. + HDTYPE => HD_DD_OUT, + MO => MOT_ON, + WG => WR_GATE, + WD => WR_DATA, + STEP => STEP, + DIRC => STEP_DIR, + DRQ => DMA_DRQ_I, + INTRQ => FDINT + ); +DMA_DATEN_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C302" else '0'; -- F8604/2 +DMA_MODUS_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C303" else '0'; -- F8606/2 +WDC_BSL_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C307" else '0'; -- F860E/2 +HD_DD_OUT <= HD_DD WHEN ACP_CONF(29) = '0' ELSE WDC_BSL(0); +nFDC_WR <= (not DMA_MODUS(8)) when DMA_ACTIV = '1' else nFB_WR; +CA0 <= '1' when DMA_ACTIV = '1' ELSE DMA_MODUS(0); +CA1 <= '1' when DMA_ACTIV = '1' ELSE DMA_MODUS(1); +CA2 <= '1' when DMA_ACTIV = '1' ELSE DMA_MODUS(2); +FB_AD(23 downto 16) <= "0000" & (not DMA_STATUS(1)) & "0" & WDC_BSL(1) & HD_DD when WDC_BSL_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(31 downto 24) <= "00000000" when DMA_DATEN_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= FDC_OUT when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "00" and nFB_OE = '0' else + SCSI_DOUT when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "01" and nFB_OE = '0' else + DMA_BYT_CNT(16 downto 9) when DMA_DATEN_CS = '1' and DMA_MODUS(4) = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +--- WDC BSL REGISTER ------------------------------------------------------- + process(MAIN_CLK, nRSTO, WDC_BSL_CS, WDC_BSL, nFB_WR, FB_B0, FB_B1) + begin + if nRSTO = '0' THEN + WDC_BSL <= "00"; + elsif rising_edge(MAIN_CLK) and WDC_BSL_CS = '1' and nFB_WR = '0' then + IF FB_B0 = '1' THEN + WDC_BSL(1 DOWNTO 0) <= FB_AD(25 DOWNTO 24); + else + WDC_BSL(1 DOWNTO 0) <= WDC_BSL(1 DOWNTO 0); + end if; + end if; + END PROCESS; +--- DMA MODUS REGISTER ------------------------------------------------------- + process(MAIN_CLK, nRSTO, DMA_MODUS_CS, DMA_MODUS, nFB_WR, FB_B0, FB_B1) + begin + if nRSTO = '0' THEN + DMA_MODUS <= x"0000"; + elsif rising_edge(MAIN_CLK) and DMA_MODUS_CS = '1' and nFB_WR = '0' then + IF FB_B0 = '1' THEN + DMA_MODUS(15 downto 8) <= FB_AD(31 downto 24); + else + DMA_MODUS(15 downto 8) <= DMA_MODUS(15 downto 8); + end if; + IF FB_B1 = '1' THEN + DMA_MODUS(7 downto 0) <= FB_AD(23 downto 16); + else + DMA_MODUS(7 downto 0) <= DMA_MODUS(7 downto 0); + end if; + else + DMA_MODUS <= DMA_MODUS; + end if; + END PROCESS; +-- BYT COUNTER, SECTOR COUNTER ---------------------------------------------------- + process(MAIN_CLK, nRSTO, DMA_DATEN_CS, DMA_BYT_CNT_CS, DMA_BYT_CNT, nFB_WR, FB_B0, FB_B1, DMA_MODUS, CLR_FIFO) + begin + if nRSTO = '0' or CLR_FIFO = '1' THEN + DMA_BYT_CNT <= x"00000000"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and DMA_DATEN_CS = '1' and nFB_WR = '0' and DMA_MODUS(4) = '1' and FB_B1 = '1' then + DMA_BYT_CNT(31 downto 17) <= "000000000000000"; + DMA_BYT_CNT(16 downto 9) <= FB_AD(23 downto 16); + DMA_BYT_CNT(8 downto 0) <= "000000000"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and DMA_BYT_CNT_CS = '1' then + DMA_BYT_CNT <= FB_AD; + else + DMA_BYT_CNT <= DMA_BYT_CNT; + end if; + END PROCESS; +-------------------------------------------------------------------- +FB_AD(31 downto 16) <= "0000000000000" & DMA_STATUS when DMA_MODUS_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZ"; +DMA_STATUS(0) <= '1'; -- DMA OK +DMA_STATUS(1) <= '1' when DMA_BYT_CNT /= 0 and DMA_BYT_CNT(31) = '0' else '0'; -- WENN byts UND NICHT MINUS +DMA_STATUS(2) <= '0' when DMA_DRQ_I = '1' or SCSI_DRQ = '1' else '0'; +DMA_DRQQ <= '1' when DMA_STATUS(1) = '1' and DMA_MODUS(8) = '0' and RDF_AZ > 15 and DMA_MODUS(6) = '0' else + '1' when DMA_STATUS(1) = '1' and DMA_MODUS(8) = '1' and WRF_AZ < 512 and DMA_MODUS(6) = '0' else '0'; +DMA_DRQ <= '1' when DMA_DRQ_REG = "11" and DMA_MODUS(6) = '0' else '0'; +-- DMA REQUEST: SPIKES AUSFILTERN ------------------------------------------ + process(FDC_CLK, nRSTO, DMA_DRQ_REG) + begin + if nRSTO = '0' THEN + DMA_DRQ_REG <= "00"; + elsif rising_edge(FDC_CLK) then + DMA_DRQ_REG(0) <= DMA_DRQQ; + DMA_DRQ_REG(1) <= DMA_DRQ_REG(0) and DMA_DRQQ; + else + DMA_DRQ_REG <= DMA_DRQ_REG; + end if; + END PROCESS; +-- DMA ADRESSE ------------------------------------------------------ + process(MAIN_CLK, nRSTO, DMA_TOP_CS, DMA_TOP, nFB_WR, DMA_ADR_CS) + begin + if nRSTO = '0' THEN + DMA_TOP <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and (DMA_TOP_CS = '1' or DMA_ADR_CS = '1') then + DMA_TOP <= FB_AD(31 downto 24); + else + DMA_TOP <= DMA_TOP; + end if; + END PROCESS; + process(MAIN_CLK, nRSTO, DMA_HIGH_CS, DMA_HIGH, nFB_WR, DMA_ADR_CS) + begin + if nRSTO = '0' THEN + DMA_HIGH <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and (DMA_HIGH_CS = '1' or DMA_ADR_CS = '1') then + DMA_HIGH <= FB_AD(23 downto 16); + else + DMA_HIGH <= DMA_HIGH; + end if; + END PROCESS; + process(MAIN_CLK, nRSTO, DMA_MID_CS, DMA_MID, nFB_WR) + begin + DMA_MID <= DMA_MID; + if nRSTO = '0' THEN + DMA_MID <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' then + if DMA_MID_CS = '1' then + DMA_MID <= FB_AD(23 downto 16); + elsif DMA_ADR_CS = '1' then + DMA_MID <= FB_AD(15 downto 8); + end if; + end if; + END PROCESS; + process(MAIN_CLK, nRSTO, DMA_LOW_CS, DMA_LOW, nFB_WR) + begin + DMA_LOW <= DMA_LOW; + if nRSTO = '0' THEN + DMA_LOW <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' then + if DMA_LOW_CS = '1'then + DMA_LOW <= FB_AD(23 downto 16); + elsif DMA_ADR_CS = '1' then + DMA_LOW <= FB_AD(7 downto 0); + end if; + end if; + END PROCESS; +-------------------------------------------------------------------------------------------- +DMA_TOP_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C304" and FB_B0 = '1' else '0'; -- F8608/2 +DMA_HIGH_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C304" and FB_B1 = '1' else '0'; -- F8609/2 +DMA_MID_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C305" and FB_B1 = '1' else '0'; -- F860B/2 +DMA_LOW_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C306" and FB_B1 = '1' else '0'; -- F860D/2 +FB_AD(31 downto 24) <= DMA_TOP when DMA_TOP_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= DMA_HIGH when DMA_HIGH_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= DMA_MID when DMA_MID_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= DMA_LOW when DMA_LOW_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +-- DIRECTZUGRIFF +DMA_DIRM_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20100" else '0'; -- F002'0100 WORD +DMA_ADR_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20104" else '0'; -- F002'0104 LONG +DMA_BYT_CNT_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20108" else '0'; -- F002'0108 LONG +FB_AD <= DMA_TOP & DMA_HIGH & DMA_MID & DMA_LOW when DMA_ADR_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +FB_AD(31 downto 16) <= DMA_MODUS when DMA_DIRM_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZ"; +FB_AD <= DMA_BYT_CNT when DMA_BYT_CNT_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +-- DMA RW TOGGLE ------------------------------------------ + process(MAIN_CLK, nRSTO, DMA_MODUS_CS, DMA_MODUS, DMA_DIR_OLD) + begin + if nRSTO = '0' THEN + DMA_DIR_OLD <= '0'; + elsif rising_edge(MAIN_CLK) and DMA_MODUS_CS = '0' then + DMA_DIR_OLD <= DMA_MODUS(8); + else + DMA_DIR_OLD <= DMA_DIR_OLD; + end if; + END PROCESS; +CLR_FIFO <= DMA_MODUS(8) xor DMA_DIR_OLD; +-- SCSI ---------------------------------------------------------------------------------- + I_SCSI: WF5380_TOP_SOC + port map( + CLK => FDC_CLK, + RESETn => nRSTO, + ADR => CA2 & CA1 & CA0, + DATA_IN => CD_IN_FDC, + DATA_OUT => SCSI_DOUT, + --DATA_EN : out bit; + -- Bus and DMA controls: + CSn => '1', --SCSI_CSn, ABGESCHALTET + RDn => (not nFDC_WR) or (not SCSI_CS), + WRn => nFDC_WR or (not SCSI_CS), + EOPn => '1', + DACKn => nSCSI_DACK, + DRQ => SCSI_DRQ, + INT => SCSI_INT, +-- READY => + -- SCSI bus: + DB_INn => SCSI_D, + DB_OUTn => DB_OUTn, + DB_EN => DB_EN, + DBP_INn => SCSI_PAR, + DBP_OUTn => DBP_OUTn, + DBP_EN => DBP_EN, -- wenn 1 dann output + RST_INn => nSCSI_RST, + RST_OUTn => RST_OUTn, + RST_EN => RST_EN, + BSY_INn => nSCSI_BUSY, + BSY_OUTn => BSY_OUTn, + BSY_EN => BSY_EN, + SEL_INn => nSCSI_SEL, + SEL_OUTn => SEL_OUTn, + SEL_EN => SEL_EN, + ACK_INn => '1', + ACK_OUTn => nSCSI_ACK, +-- ACK_EN => ACK_EN, + ATN_INn => '1', + ATN_OUTn => nSCSI_ATN, +-- ATN_EN => ATN_EN, + REQ_INn => nSCSI_DRQ, +-- REQ_OUTn => REQ_OUTn, +-- REQ_EN => REQ_EN, + IOn_IN => nSCSI_I_O, +-- IOn_OUT => IOn_OUT, +-- IO_EN => IO_EN, + CDn_IN => nSCSI_C_D, +-- CDn_OUT => CDn_OUT, +-- CD_EN => CD_EN, + MSG_INn => nSCSI_MSG +-- MSG_OUTn => MSG_OUTn, +-- MSG_EN => MSG_EN + ); +-- SCSI ACSI --------------------------------------------------------------- +SCSI_D <= DB_OUTn when DB_EN = '1' else "ZZZZZZZZ"; +SCSI_DIR <= '1'; --'0' when DB_EN = '1' else '1'; --ABGESCHALTET +SCSI_PAR <= DBP_OUTn when DBP_EN = '1' else 'Z'; +nSCSI_RST <= RST_OUTn when RST_EN = '1' else 'Z'; +nSCSI_BUSY <= BSY_OUTn when BSY_EN = '1' else 'Z'; +nSCSI_SEL <= SEL_OUTn when SEL_EN = '1' else 'Z'; +ACSI_DIR <= '0'; +ACSI_D <= "ZZZZZZZZ"; +nACSI_CS <= '1'; +ACSI_A1 <= CA1; +nACSI_RESET <= nRSTO; +nACSI_ACK <= '1'; +---------------------------------------------------------------------------- +-- ROM-PORT TA KOMMT FROM DEFAULT TA = 16 BUSCYCLEN = 500ns +---------------------------------------------------------------------------- +ROM_CS <= '1' when nFB_CS1 = '0' and nFB_WR = '1' and FB_ADR(19 downto 17) = x"5" else '0'; -- FFF A'0000/2'0000 +nROM4 <= '0' when ROM_CS = '1' and FB_ADR(16) = '0' else '1'; +nROM3 <= '0' when ROM_CS = '1' and FB_ADR(16) = '1' else '1'; +---------------------------------------------------------------------------- +-- ACIA KEYBOARD +---------------------------------------------------------------------------- + I_ACIA_KEYBOARD: WF6850IP_TOP_SOC + port map( + CLK => MAIN_CLK, + RESETn => nRSTO, + + CS2n => FB_ADR(2), + CS1 => '1', + CS0 => ACIA_CS_I, + E => ACIA_CS_I, + RWn => nFB_WR, + RS => FB_ADR(1), + + DATA_IN => FB_AD(31 downto 24), + DATA_OUT => DATA_OUT_ACIA_I, +-- DATA_EN => DATA_EN_ACIA_I, + + TXCLK => CLK500k, + RXCLK => CLK500k, + RXDATA => KEYB_RxD, + + CTSn => '0', + DCDn => '0', + + IRQn => IRQ_KEYBDn, + TXDATA => AMKB_TX + --RTSn => -- Not used. + ); +ACIA_CS_I <= '1' when nFB_CS1 = '0'and FB_ADR(19 downto 3) = x"1FF80" else '0'; -- FFC00-FFC07 FFC00/8 +KEYB_RxD <= '1' when AMKB_REG(3) = '1' or PIC_AMKB_RX = '0' else '0'; -- TASTATUR DATEN VOM PIC(PS2) OR NORMAL +FB_AD(31 downto 24) <= DATA_OUT_ACIA_I when ACIA_CS_I = '1' and FB_ADR(2) = '0' and nFB_OE = '0' else "ZZZZZZZZ"; +-- AMKB_TX: SPIKES AUSFILTERN ------------------------------------------ + process(CLK2M, AMKB_RX, AMKB_REG) + begin + if rising_edge(CLK2M) then + IF AMKB_RX = '0' THEN + IF AMKB_REG < 16 THEN + AMKB_REG <= "00000"; + ELSE + AMKB_REG <= AMKB_REG - 1; + END IF; + ELSE + IF AMKB_REG > 15 THEN + AMKB_REG <= "11111"; + ELSE + AMKB_REG <= AMKB_REG + 1; + END IF; + END IF; + ELSE + AMKB_REG <= AMKB_REG; + end if; + END PROCESS; +---------------------------------------------------------------------------- +-- ACIA MIDI +---------------------------------------------------------------------------- + I_ACIA_MIDI: WF6850IP_TOP_SOC + port map( + CLK => MAIN_CLK, + RESETn => nRSTO, + + CS2n => '0', + CS1 => FB_ADR(2), + CS0 => ACIA_CS_I, + E => ACIA_CS_I, + RWn => nFB_WR, + RS => FB_ADR(1), + + DATA_IN => FB_AD(31 downto 24), + DATA_OUT => DATA_OUT_ACIA_II, +-- DATA_EN => DATA_EN_ACIA_II, + + TXCLK => CLK500k, + RXCLK => CLK500k, + RXDATA => MIDI_IN, + CTSn => '0', + DCDn => '0', + + IRQn => IRQ_MIDIn, + TXDATA => MIDI_OUT + --RTSn => -- Not used. + ); +MIDI_TLR <= MIDI_OUT; +MIDI_OLR <= MIDI_OUT; +FB_AD(31 downto 24) <= DATA_OUT_ACIA_II when ACIA_CS_I = '1' and FB_ADR(2) = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +---------------------------------------------------------------------------- +-- MFP +---------------------------------------------------------------------------- + I_MFP: WF68901IP_TOP_SOC + port map( + -- System control: + CLK => MAIN_CLK, + RESETn => nRSTO, + -- Asynchronous bus control: + DSn => not LDS, + CSn => not MFP_CS, + RWn => nFB_WR, + DTACKn => DTACK_OUT_MFPn, + -- Data and Adresses: + RS => FB_ADR(5 downto 1), + DATA_IN => FB_AD(23 downto 16), + DATA_OUT => DATA_OUT_MFP, +-- DATA_EN => DATA_EN_MFP, + GPIP_IN(7) => not DMA_DRQ_Q, + GPIP_IN(6) => not RI, + GPIP_IN(5) => DINTn, + GPIP_IN(4) => IRQ_ACIAn, + GPIP_IN(3) => DSP_INT, + GPIP_IN(2) => not CTS, + GPIP_IN(1) => not DCD, + GPIP_IN(0) => LP_BUSY, + -- GPIP_OUT =>, -- Not used; all GPIPs are direction input. + -- GPIP_EN =>, -- Not used; all GPIPs are direction input. + -- Interrupt control: + IACKn => not MFP_INTACK, + IEIn => '0', + -- IEOn =>, -- Not used. + IRQn => nMFP_INT, + -- Timers and timer control: + XTAL1 => CLK2M4576, + TAI => '0', + TBI => nBLANK, + -- TAO =>, + -- TBO =>, + -- TCO =>, + TDO => TDO, + -- Serial I/O control: + RC => TDO, + TC => TDO, + SI => RxD, + SO => TxD + -- SO_EN => MFP_SO_EN + -- DMA control: + -- RRn =>, + -- TRn => + ); + +MFP_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 6) = x"3FE8" else '0'; -- FFA00/40 +MFP_INTACK <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20000" else '0'; --F002'0000 +LDS <= '1' when MFP_CS = '1' or MFP_INTACK = '1' else '0'; +FB_AD(23 downto 16) <= DATA_OUT_MFP when MFP_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(31 downto 10) <= "0000000000000000000000" when MFP_INTACK = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZ"; +FB_AD(9 downto 2) <= DATA_OUT_MFP when MFP_INTACK = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(1 downto 0) <= "00" when MFP_INTACK = '1' and nFB_OE = '0' else "ZZ"; +DINTn <= '0' when IDE_INT = '1' AND ACP_CONF(28) = '1' else + '0' when FDINT = '1' else + '0' when SCSI_INT = '1' AND ACP_CONF(28) = '1' else '1'; +-- TASTATUR UND KEYBOARD INTERRUPT: SPIKES AUSFILTERN ------------------------------------------ + process(MAIN_CLK,nRSTO,IRQ_ACIAn,IRQ_KEYBDn,IRQ_MIDIn) + begin + if nRSTO = '0' THEN + IRQ_ACIAn <= '1'; + elsif rising_edge(MAIN_CLK) then + IRQ_ACIAn <= IRQ_KEYBDn and IRQ_MIDIn; + else + IRQ_ACIAn <= IRQ_ACIAn; + end if; + END PROCESS; +---------------------------------------------------------------------------- +-- Sound +---------------------------------------------------------------------------- + I_SOUND: WF2149IP_TOP_SOC + port map( + SYS_CLK => MAIN_CLK, + RESETn => nRSTO, + + WAV_CLK => CLK2M, + SELn => '1', + + BDIR => SNDIR_I, + BC2 => '1', + BC1 => SNDCS_I, + + A9n => '0', + A8 => '1', + DA_IN => FB_AD(31 downto 24), + DA_OUT => DA_OUT_X, + + IO_A_IN => x"00", -- All port pins are dedicated outputs. + IO_A_OUT(7) => nnIDE_RES, + IO_A_OUT(6) => LP_DIR_X, + IO_A_OUT(5) => LP_STR, + IO_A_OUT(4) => DTR, + IO_A_OUT(3) => RTS, +-- IO_A_OUT(2) => FDD_D1SEL, + IO_A_OUT(1) => DSA_D, + IO_A_OUT(0) => nSDSEL, + -- IO_A_EN =>, -- Not required. + IO_B_IN => LP_D, + IO_B_OUT => LP_D_X, + -- IO_B_EN => IO_B_EN, + + OUT_A => YM_QA, + OUT_B => YM_QB, + OUT_C => YM_QC + ); + +SNDCS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 2) = x"3E200" else '0'; -- 8800-8803 F8800/4 +SNDCS_I <= '1' when SNDCS = '1' and FB_ADR (1 downto 1) = "0" else '0'; +SNDIR_I <= '1' when SNDCS = '1' and nFB_WR = '0' else '0'; +FB_AD(31 downto 24) <= DA_OUT_X when SNDCS_I = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +LP_D <= LP_D_X when LP_DIR_X = '0' else "ZZZZZZZZ"; +LP_DIR <= LP_DIR_X; + +END FalconIO_SDCard_IDE_CF_architecture; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd new file mode 100644 index 0000000..edef447 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd @@ -0,0 +1,406 @@ +---------------------------------------------------------------------- +---- ---- +---- Atari Coldfire IP Core ---- +---- ---- +---- This file is part of the Atari Coldfire project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- ---- +---- ---- +---- ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- 1.0 Initial Release, 20090925. +-- + +library ieee; +use ieee.std_logic_1164.all; + +package FalconIO_SDCard_IDE_CF_PKG is + component WF25915IP_TOP_V1_SOC -- GLUE. + port ( + -- Clock system: + GL_CLK : in std_logic; -- Originally 8MHz. + GL_CLK_016 : in std_logic; -- One sixteenth of GL_CLK. + + -- Core address select: + GL_ROMSEL_FC_E0n : in std_logic; + EN_RAM_14MB : in std_logic; + -- Adress decoder outputs: + GL_ROM_6n : out std_logic; -- STE. + GL_ROM_5n : out std_logic; -- STE. + GL_ROM_4n : out std_logic; -- ST. + GL_ROM_3n : out std_logic; -- ST. + GL_ROM_2n : out std_logic; + GL_ROM_1n : out std_logic; + GL_ROM_0n : out std_logic; + + GL_ACIACS : out std_logic; + GL_MFPCSn : out std_logic; + GL_SNDCSn : out std_logic; + GL_FCSn : out std_logic; + + GL_STE_SNDCS : out std_logic; -- STE: Sound chip select. + GL_STE_SNDIR : out std_logic; -- STE: Data flow direction control. + + GL_STE_RTCCSn : out std_logic; --STE only. + GL_STE_RTC_WRn : out std_logic; --STE only. + GL_STE_RTC_RDn : out std_logic; --STE only. + + -- 6800 peripheral control, + GL_VPAn : out std_logic; + GL_VMAn : in std_logic; + + GL_DMA_SYNC : in std_logic; + GL_DEVn : out std_logic; + GL_RAMn : out std_logic; + GL_DMAn : out std_logic; + + -- Interrupt system: + -- Comment out GL_AVECn for CPUs which do not provide the VMAn signal. + GL_AVECn : out std_logic; + GL_STE_FDINT : in std_logic; -- Floppy disk interrupt; STE only. + GL_STE_HDINTn : in std_logic; -- Hard disk interrupt; STE only. + GL_MFPINTn : in std_logic; -- ST. + GL_STE_EINT3n : in std_logic; --STE only. + GL_STE_EINT5n : in std_logic; --STE only. + GL_STE_EINT7n : in std_logic; --STE only. + GL_STE_DINTn : out std_logic; -- Disk interrupt (floppy or hard disk); STE only. + GL_IACKn : out std_logic; -- ST. + GL_STE_IPL2n : out std_logic; --STE only. + GL_STE_IPL1n : out std_logic; --STE only. + GL_STE_IPL0n : out std_logic; --STE only. + + -- Video timing: + GL_BLANKn : out std_logic; + GL_DE : out std_logic; + GL_MULTISYNC : in std_logic_vector(3 downto 2); + GL_VIDEO_HIMODE : out std_logic; + GL_HSYNC_INn : in std_logic; + GL_HSYNC_OUTn : out std_logic; + GL_VSYNC_INn : in std_logic; + GL_VSYNC_OUTn : out std_logic; + GL_SYNC_OUT_EN : out std_logic; + + -- Bus arstd_logicration control: + GL_RDY_INn : in std_logic; + GL_RDY_OUTn : out std_logic; + GL_BRn : out std_logic; + GL_BGIn : in std_logic; + GL_BGOn : out std_logic; + GL_BGACK_INn : in std_logic; + GL_BGACK_OUTn : out std_logic; + + -- Adress and data bus: + GL_ADDRESS : in std_logic_vector(23 downto 1); + -- ST: put the data bus to 1 downto 0. + -- STE: put the data out bus to 15 downto 0. + GL_DATA_IN : in std_logic_vector(7 downto 0); + GL_DATA_OUT : out std_logic_vector(15 downto 0); + GL_DATA_EN : out std_logic; + + -- Asynchronous bus control: + GL_RWn_IN : in std_logic; + GL_RWn_OUT : out std_logic; + GL_AS_INn : in std_logic; + GL_AS_OUTn : out std_logic; + GL_UDS_INn : in std_logic; + GL_UDS_OUTn : out std_logic; + GL_LDS_INn : in std_logic; + GL_LDS_OUTn : out std_logic; + GL_DTACK_INn : in std_logic; + GL_DTACK_OUTn : out std_logic; + GL_CTRL_EN : out std_logic; + + -- System control: + GL_RESETn : in std_logic; + GL_BERRn : out std_logic; + + -- Processor function codes: + GL_FC : in std_logic_vector(2 downto 0); + + -- STE enhancements: + GL_STE_FDDS : out std_logic; -- Floppy type select (HD or DD). + GL_STE_FCCLK : out std_logic; -- Floppy controller clock select. + GL_STE_JOY_RHn : out std_logic; -- Read only FF9202 high byte. + GL_STE_JOY_RLn : out std_logic; -- Read only FF9202 low byte. + GL_STE_JOY_WL : out std_logic; -- Write only FF9202 low byte. + GL_STE_JOY_WEn : out std_logic; -- Write only FF9202 output enable. + GL_STE_BUTTONn : out std_logic; -- Read only FF9000 low byte. + GL_STE_PAD0Xn : in std_logic; -- Counter input for the Paddle 0X. + GL_STE_PAD0Yn : in std_logic; -- Counter input for the Paddle 0Y. + GL_STE_PAD1Xn : in std_logic; -- Counter input for the Paddle 1X. + GL_STE_PAD1Yn : in std_logic; -- Counter input for the Paddle 1Y. + GL_STE_PADRSTn : out std_logic; -- Paddle monoflops reset. + GL_STE_PENn : in std_logic; -- Input of the light pen. + GL_STE_SCCn : out std_logic; -- Select signal for the STE or TT SCC chip. + GL_STE_CPROGn : out std_logic -- Select signal for the STE's cache processor. + ); + end component WF25915IP_TOP_V1_SOC; + + component WF5380_TOP_SOC + port ( + CLK : in std_logic; + RESETn : in std_logic; + ADR : in std_logic_vector(2 downto 0); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + CSn : in std_logic; + RDn : in std_logic; + WRn : in std_logic; + EOPn : in std_logic; + DACKn : in std_logic; + DRQ : out std_logic; + INT : out std_logic; + READY : out std_logic; + DB_INn : in std_logic_vector(7 downto 0); + DB_OUTn : out std_logic_vector(7 downto 0); + DB_EN : out std_logic; + DBP_INn : in std_logic; + DBP_OUTn : out std_logic; + DBP_EN : out std_logic; + RST_INn : in std_logic; + RST_OUTn : out std_logic; + RST_EN : out std_logic; + BSY_INn : in std_logic; + BSY_OUTn : out std_logic; + BSY_EN : out std_logic; + SEL_INn : in std_logic; + SEL_OUTn : out std_logic; + SEL_EN : out std_logic; + ACK_INn : in std_logic; + ACK_OUTn : out std_logic; + ACK_EN : out std_logic; + ATN_INn : in std_logic; + ATN_OUTn : out std_logic; + ATN_EN : out std_logic; + REQ_INn : in std_logic; + REQ_OUTn : out std_logic; + REQ_EN : out std_logic; + IOn_IN : in std_logic; + IOn_OUT : out std_logic; + IO_EN : out std_logic; + CDn_IN : in std_logic; + CDn_OUT : out std_logic; + CD_EN : out std_logic; + MSG_INn : in std_logic; + MSG_OUTn : out std_logic; + MSG_EN : out std_logic + ); + end component WF5380_TOP_SOC; + + component WF1772IP_TOP_SOC -- FDC. + port ( + CLK : in std_logic; -- 16MHz clock! + RESETn : in std_logic; + CSn : in std_logic; + RWn : in std_logic; + A1, A0 : in std_logic; + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + RDn : in std_logic; + TR00n : in std_logic; + IPn : in std_logic; + WPRTn : in std_logic; + DDEn : in std_logic; + HDTYPE : in std_logic; -- '0' = DD disks, '1' = HD disks. + MO : out std_logic; + WG : out std_logic; + WD : out std_logic; + STEP : out std_logic; + DIRC : out std_logic; + DRQ : out std_logic; + INTRQ : out std_logic + ); + end component WF1772IP_TOP_SOC; + + component WF68901IP_TOP_SOC -- MFP. + port ( -- System control: + CLK : in std_logic; + RESETn : in std_logic; + + -- Asynchronous bus control: + DSn : in std_logic; + CSn : in std_logic; + RWn : in std_logic; + DTACKn : out std_logic; + + -- Data and Adresses: + RS : in std_logic_vector(5 downto 1); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + GPIP_IN : in std_logic_vector(7 downto 0); + GPIP_OUT : out std_logic_vector(7 downto 0); + GPIP_EN : out std_logic_vector(7 downto 0); + + -- Interrupt control: + IACKn : in std_logic; + IEIn : in std_logic; + IEOn : out std_logic; + IRQn : out std_logic; + + -- Timers and timer control: + XTAL1 : in std_logic; -- Use an oszillator instead of a quartz. + TAI : in std_logic; + TBI : in std_logic; + TAO : out std_logic; + TBO : out std_logic; + TCO : out std_logic; + TDO : out std_logic; + + -- Serial I/O control: + RC : in std_logic; + TC : in std_logic; + SI : in std_logic; + SO : out std_logic; + SO_EN : out std_logic; + + -- DMA control: + RRn : out std_logic; + TRn : out std_logic + ); + end component WF68901IP_TOP_SOC; + + component WF2149IP_TOP_SOC -- Sound. + port( + + SYS_CLK : in std_logic; -- Read the inforation in the header! + RESETn : in std_logic; + + WAV_CLK : in std_logic; -- Read the inforation in the header! + SELn : in std_logic; + + BDIR : in std_logic; + BC2, BC1 : in std_logic; + + A9n, A8 : in std_logic; + DA_IN : in std_logic_vector(7 downto 0); + DA_OUT : out std_logic_vector(7 downto 0); + DA_EN : out std_logic; + + IO_A_IN : in std_logic_vector(7 downto 0); + IO_A_OUT : out std_logic_vector(7 downto 0); + IO_A_EN : out std_logic; + IO_B_IN : in std_logic_vector(7 downto 0); + IO_B_OUT : out std_logic_vector(7 downto 0); + IO_B_EN : out std_logic; + + OUT_A : out std_logic; -- Analog (PWM) outputs. + OUT_B : out std_logic; + OUT_C : out std_logic + ); + end component WF2149IP_TOP_SOC; + + component WF6850IP_TOP_SOC -- ACIA. + port ( + CLK : in std_logic; + RESETn : in std_logic; + + CS2n, CS1, CS0 : in std_logic; + E : in std_logic; + RWn : in std_logic; + RS : in std_logic; + + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + + TXCLK : in std_logic; + RXCLK : in std_logic; + RXDATA : in std_logic; + CTSn : in std_logic; + DCDn : in std_logic; + + IRQn : out std_logic; + TXDATA : out std_logic; + RTSn : out std_logic + ); + end component WF6850IP_TOP_SOC; + + component WF_SD_CARD + port ( + RESETn : in std_logic; + CLK : in std_logic; + ACSI_A1 : in std_logic; + ACSI_CSn : in std_logic; + ACSI_ACKn : in std_logic; + ACSI_INTn : out std_logic; + ACSI_DRQn : out std_logic; + ACSI_D_IN : in std_logic_vector(7 downto 0); + ACSI_D_OUT : out std_logic_vector(7 downto 0); + ACSI_D_EN : out std_logic; + MC_DO : in std_logic; + MC_PIO_DMAn : in std_logic; + MC_RWn : in std_logic; + MC_CLR_CMD : in std_logic; + MC_DONE : out std_logic; + MC_GOT_CMD : out std_logic; + MC_D_IN : in std_logic_vector(7 downto 0); + MC_D_OUT : out std_logic_vector(7 downto 0); + MC_D_EN : out std_logic + ); + end component WF_SD_CARD; + + component dcfifo0 + PORT ( + aclr : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + wrusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); + end component dcfifo0; + + component dcfifo1 + PORT ( + aclr : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + rdusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); + end component; + + +end FalconIO_SDCard_IDE_CF_PKG; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd new file mode 100644 index 0000000..4453332 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd @@ -0,0 +1,631 @@ +---------------------------------------------------------------------- +---- ---- +---- WF5380 IP Core ---- +---- ---- +---- Description: ---- +---- This model provides an asynchronous SCSI interface compa- ---- +---- tible to the DP5380 from National Semiconductor and others. ---- +---- ---- +---- This file is the 5380's system controller. ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K9A 2009/06/20 WF +-- Initial Release. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF5380_CONTROL is + port ( + -- System controls: + CLK : in bit; + RESETn : in bit; -- System reset. + + -- System controls: + BSY_INn : in bit; -- SCSI BSY_INn bit. + BSY_OUTn : out bit; -- SCSI BSY_INn bit. + DATA_EN : out bit; -- Enable the SCSI data lines. + SEL_INn : in bit; -- SCSI SEL_INn bit. + ARB_EN : in bit; -- Arbitration enable. + BSY_DISn : in bit; -- BSY monitoring enable. + RSTn : in bit; -- SCSI reset. + + ARB : out bit; -- Arbitration flag. + AIP : out bit; -- Arbitration in progress flag. + LA : out bit; -- Lost arbitration flag. + + ACK_INn : in bit; + ACK_OUTn : out bit; + REQ_INn : in bit; + REQ_OUTn : out bit; + + DACKn : in bit; -- Data acknowledge. + READY : out bit; + DRQ : out bit; -- Data request. + + TARG : in bit; -- Target mode indicator. + BLK : in bit; -- Block mode indicator. + PINT_EN : in bit; -- Parity interrupt enable. + SPER : in bit; -- Parity error. + SER_ID : in bit; -- SER matches ODR bits. + RPI : in bit; -- Reset interrupts. + DMA_EN : in bit; -- DMA mode enable. + SDS : in bit; -- Start DMA send, write only. + SDT : in bit; -- Start DMA target receive, write only. + SDI : in bit; -- Start DMA initiator receive, write only. + EOP_EN : in bit; -- EOP interrupt enable. + EOPn : in bit; -- End of process indicator. + PHSM : in bit; -- Phase match flag. + + INT : out bit; -- Interrupt. + IDR_WR : out bit; -- Write input data register during DMA. + ODR_WR : out bit; -- Write output data register, during DMA. + CHK_PAR : out bit; -- Check Parity during DMA operation. + BSY_ERR : out bit; -- Busy monitoring error. + DMA_SND : out bit; -- Indicates direction of target DMA. + DMA_ACTIVE : out bit -- DMA is active. + ); +end entity WF5380_CONTROL; + +architecture BEHAVIOUR of WF5380_CONTROL is +type CTRL_STATES is (IDLE, WAIT_800ns, WAIT_2200ns, DMA_SEND, DMA_TARG_RCV, DMA_INIT_RCV); +type DMA_STATES is (IDLE, DMA_STEP_1, DMA_STEP_2, DMA_STEP_3, DMA_STEP_4); +signal CTRL_STATE : CTRL_STATES; +signal NEXT_CTRL_STATE : CTRL_STATES; +signal DMA_STATE : DMA_STATES; +signal NEXT_DMA_STATE : DMA_STATES; +signal BUS_FREE : bit; +signal DELAY_800ns : boolean; +signal DELAY_2200ns : boolean; +signal DMA_ACTIVE_I : bit; +signal EOP_In : bit; +begin + IN_BUFFER: process + -- This buffer shall prevent some signals against + -- setup hold effects and thus the state machine + -- against unpredictable behaviour. + begin + wait until CLK = '1' and CLK' event; + EOP_In <= EOPn; + end process IN_BUFFER; + + STATE_REGISTERS: process(RESETn, CLK) + -- This is the controller's state machine register. + variable BSY_LOCK : boolean; + begin + if RESETn = '0' then + CTRL_STATE <= IDLE; + DMA_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if RSTn = '0' then -- SCSI reset. + CTRL_STATE <= IDLE; + DMA_STATE <= IDLE; + else + CTRL_STATE <= NEXT_CTRL_STATE; + DMA_STATE <= NEXT_DMA_STATE; + end if; + -- + if DMA_EN = '0' then + DMA_STATE <= IDLE; + end if; + end if; + end process STATE_REGISTERS; + + CTRL_DECODER: process(CTRL_STATE, ARB_EN, BUS_FREE, DELAY_800ns, SEL_INn, DMA_ACTIVE_I, SDS, SDT, SDI) + -- This is the controller's state machine decoder. + variable BSY_LOCK : boolean; + begin + -- Defaults. + DMA_SND <= '0'; + -- + case CTRL_STATE is + when IDLE => + if ARB_EN = '1' and BUS_FREE = '1' then + NEXT_CTRL_STATE <= WAIT_800ns; + else + NEXT_CTRL_STATE <= IDLE; + end if; + when WAIT_800ns => + if DELAY_800ns = true then + NEXT_CTRL_STATE <= WAIT_2200ns; + else + NEXT_CTRL_STATE <= WAIT_800ns; + end if; + when WAIT_2200ns => + -- In this state the delay is provided by the + -- microprocessor and is at least 2.2us. The + -- delay is released by deasserting SELn. + if SEL_INn = '1' and SDS = '1' then + NEXT_CTRL_STATE <= DMA_SEND; + elsif SEL_INn = '1' and SDT = '1' then + NEXT_CTRL_STATE <= DMA_TARG_RCV; + elsif SEL_INn = '1' and SDI = '1' then + NEXT_CTRL_STATE <= DMA_INIT_RCV; + else + NEXT_CTRL_STATE <= WAIT_2200ns; + end if; + when DMA_SEND => + if DMA_ACTIVE_I = '0' then + NEXT_CTRL_STATE <= IDLE; + else + NEXT_CTRL_STATE <= DMA_SEND; + end if; + -- + DMA_SND <= '1'; + when DMA_TARG_RCV => + if DMA_ACTIVE_I = '0' then + NEXT_CTRL_STATE <= IDLE; + else + NEXT_CTRL_STATE <= DMA_TARG_RCV; + end if; + when DMA_INIT_RCV => + if DMA_ACTIVE_I = '0' then + NEXT_CTRL_STATE <= IDLE; + else + NEXT_CTRL_STATE <= DMA_INIT_RCV; + end if; + end case; + end process CTRL_DECODER; + + DMA_DECODER: process(CTRL_STATE, DMA_STATE, TARG, BLK, DACKn, REQ_INn, ACK_INn) + -- This is the DMA state machine decoder. + begin + -- Defaults: + IDR_WR <= '0'; + ODR_WR <= '0'; + CHK_PAR <= '0'; + -- + case DMA_STATE is + when IDLE => + if CTRL_STATE = DMA_SEND then + NEXT_DMA_STATE <= DMA_STEP_1; + elsif CTRL_STATE = DMA_INIT_RCV then + NEXT_DMA_STATE <= DMA_STEP_1; + elsif CTRL_STATE = DMA_TARG_RCV then + NEXT_DMA_STATE <= DMA_STEP_1; + else + NEXT_DMA_STATE <= IDLE; + end if; + when DMA_STEP_1 => + -- Initiator modes: + if CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for DACKn asserted. + ODR_WR <= '1'; + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for DACKn asserted. + ODR_WR <= '1'; + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '0' and REQ_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for REQn asserted. + IDR_WR <= '1'; + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '1' and REQ_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for REQn asserted. + IDR_WR <= '1'; + -- Target modes: + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for DACKn asserted. + ODR_WR <= '1'; + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for DACKn asserted. + ODR_WR <= '1'; + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '0' and ACK_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for ACKn asserted. + IDR_WR <= '1'; + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '1' and ACK_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for ACKn asserted. + IDR_WR <= '1'; + else + NEXT_DMA_STATE <= DMA_STEP_1; + end if; + when DMA_STEP_2 => + -- Initiator modes: + if CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for DACKn deasserted. + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for DACKn deasserted. + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '0' and REQ_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for REQn deasserted. + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '1' and REQ_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for REQn deasserted. + -- Target modes: + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for DACKn deasserted. + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for DACKn deasserted. + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '0' and ACK_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for ACKn deasserted. + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '1' and ACK_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for ACKn deasserted. + else + NEXT_DMA_STATE <= DMA_STEP_2; + end if; + when DMA_STEP_3 => + -- Initiator modes: + if CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' and REQ_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait REQn asserted. + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and REQ_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait REQn asserted. + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '0' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait DACKn asserted. + CHK_PAR <= '1'; + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '1' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait DACKn asserted. + CHK_PAR <= '1'; + -- Target modes: + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' and ACK_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait ACKn asserted. + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '1' and ACK_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait ACKn asserted. + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '0' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait DACKn asserted. + CHK_PAR <= '1'; + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '1' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait DACKn asserted. + CHK_PAR <= '1'; + else + NEXT_DMA_STATE <= DMA_STEP_3; + end if; + when DMA_STEP_4 => + -- Initiator modes: + if CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' and REQ_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait REQn deasserted. + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and REQ_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait REQn deasserted. + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '0' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait DACKn deasserted. + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '1' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait DACKn deasserted. + -- Target modes: + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' and ACK_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait ACKn deasserted. + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '1' and ACK_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait ACKn deasserted. + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '0' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait DACKn deasserted. + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '1' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait DACKn deasserted. + else + NEXT_DMA_STATE <= DMA_STEP_4; + end if; + end case; + end process DMA_DECODER; + + P_REQn: process(DMA_STATE, CTRL_STATE, TARG, BLK) + -- This logic controls the REQn output in target mode. + begin + if DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_TARG_RCV and BLK = '0' then + REQ_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_TARG_RCV and BLK = '1' then + REQ_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' then + REQ_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '1' then + REQ_OUTn <= '0'; + else + REQ_OUTn <= '1'; + end if; + end process P_REQn; + + P_ACKn: process(DMA_STATE, CTRL_STATE, TARG, BLK) + -- This logic controls the ACKn output in initiator mode. + begin + if DMA_STATE = DMA_STEP_2 and CTRL_STATE = DMA_INIT_RCV and BLK = '0' then + ACK_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_2 and CTRL_STATE = DMA_INIT_RCV and BLK = '1' then + ACK_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_4 and CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' then + ACK_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_4 and CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' then + ACK_OUTn <= '0'; + else + ACK_OUTn <= '1'; + end if; + end process P_ACKn; + + P_READY: process(DMA_STATE, CTRL_STATE, TARG, BLK) + -- This logic controls the READY output in initiator and target block mode. + begin + if DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '1' then + READY <= '1'; + elsif DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_TARG_RCV and BLK = '1' then + READY <= '1'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' then + READY <= '1'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_INIT_RCV and BLK = '1' then + READY <= '1'; + else + READY <= '0'; + end if; + end process P_READY; + + P_DRQ: process(RESETn, CLK) + -- This flip flop controls the DRQ flag during all initiator and all target modes + -- for both block mode and non block mode operation. + variable LOCK : boolean; + begin + if RESETn = '0' then + DRQ <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + -- Initiator modes: + if DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' then + DRQ <= '1'; + elsif DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and LOCK = false then + DRQ <= '1'; + LOCK := true; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_INIT_RCV and BLK = '0' then + DRQ <= '1'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_INIT_RCV and BLK = '1' then + DRQ <= '1'; + LOCK := true; + -- Target modes: + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' then + DRQ <= '1'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '1' then + DRQ <= '1'; + LOCK := true; + elsif DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_TARG_RCV and BLK = '0' then + DRQ <= '1'; + elsif DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_TARG_RCV and BLK = '1' then + DRQ <= '1'; + LOCK := true; + elsif DACKn = '0' and LOCK = false then + DRQ <= '0'; + elsif EOPn = '0' and DACKn = '0' then + DRQ <= '0'; + LOCK := false; + end if; + end if; + end process P_DRQ; + + P_BUSFREE: process(RESETn, CLK) + -- This is the logic for the bus free signal. + -- A bus free is valid if the BSY_INn signal is + -- at least 437.5ns inactive ans SEL_INn is inactive. + -- The delay are 7 clock cycles of 16MHz. + variable TMP : std_logic_vector(2 downto 0); + begin + if RESETn = '0' then + BUS_FREE <= '0'; + TMP := "000"; + elsif CLK = '1' and CLK' event then + if BSY_INn = '1' and TMP < x"111" then + TMP := TMP + '1'; + elsif BSY_INn = '0' then + TMP := "000"; + end if; + -- + if RSTn = '0' then -- SCSI reset. + BUS_FREE <= '0'; + elsif SEL_INn = '1' and TMP = "111" then + BUS_FREE <= '1'; + else + BUS_FREE <= '0'; + end if; + end if; + end process P_BUSFREE; + + DELAY_800: process(RESETn, CLK) + -- This is the delay of 812.5ns. + -- It is derived from 13 16MHz clock cycles. + variable TMP : std_logic_vector(3 downto 0); + begin + if RESETn = '0' then + DELAY_800ns <= false; + TMP := x"0"; + elsif CLK = '1' and CLK' event then + if CTRL_STATE /= WAIT_800ns then + TMP := x"0"; + elsif TMP <= x"D" then + TMP := TMP + '1'; + end if; + -- + if TMP = x"D" then + DELAY_800ns <= true; + else + DELAY_800ns <= false; + end if; + end if; + end process DELAY_800; + + P_ARB: process(RESETn, CLK) + -- This flip flop controls the ARB flag read back + -- by the microcontroller. + begin + if RESETn = '0' then + ARB <= '0'; + elsif CLK = '1' and CLK' event then + if CTRL_STATE /= WAIT_800ns and NEXT_CTRL_STATE = WAIT_800ns then + ARB <= '1'; + elsif ARB_EN = '0' then + ARB <= '0'; + end if; + end if; + end process P_ARB; + + P_AIP: process(RESETn, CLK) + -- This flip flop controls the AIP flag read back + -- by the microcontroller. + begin + if RESETn = '0' then + AIP <= '0'; + elsif CLK = '1' and CLK' event then + if CTRL_STATE = WAIT_800ns and NEXT_CTRL_STATE /= WAIT_800ns then + AIP <= '1'; + elsif ARB_EN = '0' then + AIP <= '0'; + end if; + end if; + end process P_AIP; + + P_BSY: process + -- This flip flop controls the BSYn output + -- to the SCSI bus. + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + BSY_OUTn <= '1'; + elsif CTRL_STATE = WAIT_800ns and NEXT_CTRL_STATE /= WAIT_800ns then + BSY_OUTn <= '0'; + elsif ARB_EN = '0' then + BSY_OUTn <= '1'; + end if; + end process P_BSY; + + P_DATA_EN: process(RESETn, CLK) + -- This flip flop controls the data enable + -- of the SCSI bus. + begin + if RESETn = '0' then + DATA_EN <= '0'; + elsif CLK = '1' and CLK' event then + if CTRL_STATE = WAIT_800ns and NEXT_CTRL_STATE /= WAIT_800ns then + DATA_EN <= '1'; + elsif ARB_EN = '0' then + DATA_EN <= '0'; + end if; + end if; + end process P_DATA_EN; + + P_LA: process(RESETn, CLK) + -- This flip flop controls the LA + -- (lost arbitration) flag. + begin + if RESETn = '0' then + LA <= '0'; + elsif CLK = '1' and CLK' event then + if (CTRL_STATE = WAIT_800ns or CTRL_STATE = WAIT_2200ns) and SEL_INn = '0' then + LA <= '1'; + elsif ARB_EN = '0' then + LA <= '0'; + end if; + end if; + end process P_LA; + + P_DMA_ACTIVE: process(RESETn, CLK, DMA_ACTIVE_I) + -- This is the Flip Flop indicating if there is DMA + -- operation. + begin + if RESETn = '0' then + DMA_ACTIVE_I <= '0'; + elsif CLK = '1' and CLK' event then + if DMA_EN = '1' and SDS = '1' then + DMA_ACTIVE_I <= '1'; -- Start DMA send. + elsif DMA_EN = '1' and SDT = '1' then + DMA_ACTIVE_I <= '1'; -- Start DMA target receive. + elsif DMA_EN = '1' and SDI = '1' then + DMA_ACTIVE_I <= '1'; -- Start DMA initiator receive. + elsif DMA_EN = '0' then + DMA_ACTIVE_I <= '0'; -- Halt DMA via DMA flag in MR2. + elsif EOP_In = '0' then + DMA_ACTIVE_I <= '0'; -- Halt DMA via EOPn. + elsif PHSM = '0' then + DMA_ACTIVE_I <= '0'; -- Halt DMA via phase mismatch. + end if; + end if; + -- + DMA_ACTIVE <= DMA_ACTIVE_I; + end process P_DMA_ACTIVE; + + INTERRUPTS: process(RESETn, CLK) + -- This is the logic for all DP5380's interrupt sources. + -- A busy interrupt occurs if the BSY_INn signal is at + -- least 437.5ns inactive. The delay are 7 clock cycles + -- of 16MHz. This logic also provides the respective + -- error flags for the BSR. + variable TMP : std_logic_vector(2 downto 0); + begin + if RESETn = '0' then + INT <= '0'; + BSY_ERR <= '0'; + TMP := "000"; + elsif CLK = '1' and CLK' event then + if SPER = '1' and PINT_EN = '1' then + INT <= '1'; -- Parity interrupt. + elsif RPI = '0' then -- Reset interrupts. + INT <= '0'; + end if; + -- + if EOP_In = '0' and CTRL_STATE = DMA_SEND then + BSY_ERR <= '1'; -- End of DMA error. + elsif EOP_In = '0' and CTRL_STATE = DMA_TARG_RCV then + BSY_ERR <= '1'; -- End of DMA error. + elsif EOP_In = '0' and CTRL_STATE = DMA_INIT_RCV then + BSY_ERR <= '1'; -- End of DMA error. + elsif DMA_EN = '0' then -- Reset error. + INT <= '0'; + end if; + -- + if EOP_EN = '1' and EOP_In = '0' and CTRL_STATE = DMA_SEND then + INT <= '1'; -- End of DMA interrupt. + elsif EOP_EN = '1' and EOP_In = '0' and CTRL_STATE = DMA_TARG_RCV then + INT <= '1'; -- End of DMA interrupt. + elsif EOP_EN = '1' and EOP_In = '0' and CTRL_STATE = DMA_INIT_RCV then + INT <= '1'; -- End of DMA interrupt. + elsif DMA_EN = '0' then -- Reset interrupt. + INT <= '0'; + end if; + + -- + if PHSM = '0' then + INT <= '1'; -- Phase mismatch interrupt. + elsif DMA_EN = '0' then -- Reset interrupts. + INT <= '0'; + end if; + -- + if SEL_INn = '0' and BSY_INn = '1' and SER_ID = '1' then + INT <= '1'; -- (Re)Selection interrupt. + elsif RPI = '1' then -- Reset interrupts. + INT <= '0'; + end if; + -- + if BSY_INn = '1' and TMP < x"111" then + TMP := TMP + '1'; -- Bus settle delay. + elsif BSY_INn = '0' then + TMP := "000"; + end if; + -- + if BSY_DISn = '1' and BSY_INn = '1' and TMP = x"111" then + INT <= '1'; -- Busy monitoring interrupt. + BSY_ERR <= '1'; + elsif RPI = '1' then -- Reset interrupts. + INT <= '0'; + BSY_ERR <= '0'; + end if; + -- + end if; + end process INTERRUPTS; +end BEHAVIOUR; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd new file mode 100644 index 0000000..57cf305 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd @@ -0,0 +1,139 @@ +---------------------------------------------------------------------- +---- ---- +---- WF5380 IP Core ---- +---- ---- +---- Description: ---- +---- This model provides an asynchronous SCSI interface compa- ---- +---- tible to the DP5380 from National Semiconductor and others. ---- +---- ---- +---- This file is the package file of the ip core. ---- +---- ---- +---- ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K9A 2009/06/20 WF +-- Initial Release. + +library ieee; +use ieee.std_logic_1164.all; + +package WF5380_PKG is + component WF5380_REGISTERS + port ( + CLK : in bit; + RESETn : in bit; + ADR : in bit_vector(2 downto 0); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + CSn : in bit; + RDn : in bit; + WRn : in bit; + RSTn : in bit; + RST : out bit; + ARB_EN : out bit; + DMA_ACTIVE : in bit; + DMA_EN : out bit; + BSY_DISn : out bit; + EOP_EN : out bit; + PINT_EN : out bit; + SPER : out bit; + TARG : out bit; + BLK : out bit; + DMA_DIS : in bit; + IDR_WR : in bit; + ODR_WR : in bit; + CHK_PAR : in bit; + AIP : in bit; + ARB : in bit; + LA : in bit; + CSD : in bit_vector(7 downto 0); + CSB : in bit_vector(7 downto 0); + BSR : in bit_vector(7 downto 0); + ODR_OUT : out bit_vector(7 downto 0); + ICR_OUT : out bit_vector(7 downto 0); + TCR_OUT : out bit_vector(3 downto 0); + SER_OUT : out bit_vector(7 downto 0); + SDS : out bit; + SDT : out bit; + SDI : out bit; + RPI : out bit + ); + end component; + + component WF5380_CONTROL + port ( + CLK : in bit; + RESETn : in bit; + BSY_INn : in bit; + BSY_OUTn : out bit; + DATA_EN : out bit; + SEL_INn : in bit; + ARB_EN : in bit; + BSY_DISn : in bit; + RSTn : in bit; + ARB : out bit; + AIP : out bit; + LA : out bit; + ACK_INn : in bit; + ACK_OUTn : out bit; + REQ_INn : in bit; + REQ_OUTn : out bit; + DACKn : in bit; + READY : out bit; + DRQ : out bit; + TARG : in bit; + BLK : in bit; + PINT_EN : in bit; + SPER : in bit; + SER_ID : in bit; + RPI : in bit; + DMA_EN : in bit; + SDS : in bit; + SDT : in bit; + SDI : in bit; + EOP_EN : in bit; + EOPn : in bit; + PHSM : in bit; + INT : out bit; + IDR_WR : out bit; + ODR_WR : out bit; + CHK_PAR : out bit; + BSY_ERR : out bit; + DMA_SND : out bit; + DMA_ACTIVE : out bit + ); + end component; +end WF5380_PKG; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd new file mode 100644 index 0000000..2c21c12 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd @@ -0,0 +1,265 @@ +---------------------------------------------------------------------- +---- ---- +---- WF5380 IP Core ---- +---- ---- +---- Description: ---- +---- This model provides an asynchronous SCSI interface compa- ---- +---- tible to the DP5380 from National Semiconductor and others. ---- +---- ---- +---- This file is the 5380's register model. ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Register description (for more information see the DP5380 ---- +---- data sheet: ---- +---- ODR (address 0) Output data register, write only. ---- +---- CSD (address 0) Current SCSI data, read only. ---- +---- ICR (address 1) Initiator command register, read/write. ---- +---- MR2 (address 2) Mode register 2, read/write. ---- +---- TCR (address 3) Target command register, read/write. ---- +---- SER (address 4) Select enable register, write only. ---- +---- CSB (address 4) Current SCSI bus status, read only. ---- +---- BSR (address 5) Start DMA send, write only. ---- +---- SDS (address 5) Bus and status, read only. ---- +---- SDT (address 6) Start DMA target receive, write only. ---- +---- IDR (address 6) Input data register, read only. ---- +---- SDI (address 7) Start DMA initiator recive, write only. ---- +---- RPI (address 7) Reset parity / interrupts, read only. ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K9A 2009/06/20 WF +-- Initial Release. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF5380_REGISTERS is + port ( + -- System controls: + CLK : in bit; + RESETn : in bit; -- System reset. + + -- Address and data: + ADR : in bit_vector(2 downto 0); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + + -- Bus and DMA controls: + CSn : in bit; + RDn : in bit; + WRn : in bit; + + -- Core controls: + RSTn : in bit; -- SCSI reset. + RST : out bit; -- Programmed SCSI reset. + ARB_EN : out bit; -- Arbitration enable. + DMA_ACTIVE : in bit; -- DMA is running. + DMA_EN : out bit; -- DMA mode enable. + BSY_DISn : out bit; -- BSY monitoring enable. + EOP_EN : out bit; -- EOP interrupt enable. + PINT_EN : out bit; -- Parity interrupt enable. + SPER : out bit; -- Parity error. + TARG : out bit; -- Target mode. + BLK : out bit; -- Block DMA mode. + DMA_DIS : in bit; -- Reset the DMA_EN by this signal. + IDR_WR : in bit; -- Write input data register during DMA. + ODR_WR : in bit; -- Write output data register, during DMA. + CHK_PAR : in bit; -- Check Parity during DMA operation. + AIP : in bit; -- Arbitration in progress. + ARB : in bit; -- Arbitration. + LA : in bit; -- Lost arbitration. + + CSD : in bit_vector(7 downto 0); -- SCSI data. + CSB : in bit_vector(7 downto 0); -- Current SCSI bus status. + BSR : in bit_vector(7 downto 0); -- Bus and status. + + ODR_OUT : out bit_vector(7 downto 0); -- This is the ODR register. + ICR_OUT : out bit_vector(7 downto 0); -- This is the ICR register. + TCR_OUT : out bit_vector(3 downto 0); -- This is the TCR register. + SER_OUT : out bit_vector(7 downto 0); -- This is the SER register. + + SDS : out bit; -- Start DMA send, write only. + SDT : out bit; -- Start DMA target receive, write only. + SDI : out bit; -- Start DMA initiator receive, write only. + RPI : out bit + ); +end entity WF5380_REGISTERS; + +architecture BEHAVIOUR of WF5380_REGISTERS is +signal ICR : bit_vector(7 downto 0); -- Initiator command register, read/write. +signal IDR : bit_vector(7 downto 0); -- Input data register. +signal MR2 : bit_vector(7 downto 0); -- Mode register 2, read/write. +signal ODR : bit_vector(7 downto 0); -- Output data register, write only. +signal SER : bit_vector(7 downto 0); -- Select enable register, write only. +signal TCR : bit_vector(3 downto 0); -- Target command register, read/write. +begin + REGISTERS: process(RESETn, CLK) + -- This process reflects all registers in the 5380. + variable BSY_LOCK : boolean; + begin + if RESETn = '0' then + ODR <= (others => '0'); + ICR <= (others => '0'); + MR2 <= (others => '0'); + TCR <= (others => '0'); + SER <= (others => '0'); + BSY_LOCK := false; + elsif CLK = '1' and CLK' event then + if RSTn = '0' then -- SCSI reset. + ODR <= (others => '0'); + ICR(6 downto 0) <= (others => '0'); + MR2(7) <= '0'; + MR2(5 downto 0) <= (others => '0'); + TCR <= (others => '0'); + SER <= (others => '0'); + BSY_LOCK := false; + elsif ADR = "000" and CSn = '0' and WRn = '0' then + ODR <= DATA_IN; + elsif ADR = "001" and CSn = '0' and WRn = '0' then + ICR <= DATA_IN; + elsif ADR = "010" and CSn = '0' and WRn = '0' then + MR2 <= DATA_IN; + elsif ADR = "011" and CSn = '0' and WRn = '0' then + TCR <= DATA_IN(3 downto 0); + elsif ADR = "100" and CSn = '0' and WRn = '0' then + SER <= DATA_IN; + end if; + -- + if ODR_WR = '1' then + ODR <= DATA_IN; + end if; + -- + -- This reset function is edge triggered on the 'Monitor Busy' + -- MR2(2). + if MR2(2) = '1' and BSY_LOCK = false then + ICR(5 downto 0) <= "000000"; + BSY_LOCK := true; + elsif MR2(2) = '0' then + BSY_LOCK := false; + end if; + -- + if DMA_DIS = '1' then + MR2(1) <= '0'; + end if; + end if; + end process REGISTERS; + + IDR_REGISTER: process(RESETn, CLK) + begin + if RESETn = '0' then + IDR <= x"00"; + elsif CLK = '1' and CLK' event then + if RSTn = '0' or ICR(7) = '1' then + IDR <= x"00"; -- SCSI reset. + elsif IDR_WR = '1' then + IDR <= CSD; + end if; + end if; + end process IDR_REGISTER; + + PARITY: process(RESETn, CLK) + -- This is the parity generating logic with it's related + -- error generation. + variable PAR_VAR : bit; + variable LOCK : boolean; + begin + if RESETn = '0' then + SPER <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + -- Parity checked during 'Read from CSD' + -- (registered I/O and selection/reselection): + if ADR = "000" and CSn = '0' and RDn = '0' and LOCK = false then + for i in 1 to 7 loop + PAR_VAR := CSD(i) xor CSD(i-1); + end loop; + SPER <= not PAR_VAR; + LOCK := true; + end if; + -- + -- Parity checking during DMA operation: + if DMA_ACTIVE = '1' and CHK_PAR = '1' then + for i in 1 to 7 loop + PAR_VAR := IDR(i) xor IDR(i-1); + end loop; + SPER <= not PAR_VAR; + LOCK := true; + end if; + -- + -- Reset parity flag: + if MR2(5) <= '0' then -- MR2(5) = PCHK (disabled). + SPER <= '0'; + elsif ADR = "111" and CSn = '0' and RDn = '0' then -- Reset parity/interrupts. + SPER <= '0'; + LOCK := false; + end if; + end if; + end process PARITY; + + DATA_EN <= '1' when ADR < "101" and CSn = '0' and WRn = '0' else '0'; + + SDS <= '1' when ADR = "101" and CSn = '0' and WRn = '0' else '0'; + SDT <= '1' when ADR = "110" and CSn = '0' and WRn = '0' else '0'; + SDI <= '1' when ADR = "111" and CSn = '0' and WRn = '0' else '0'; + + ICR_OUT <= ICR; + TCR_OUT <= TCR; + SER_OUT <= SER; + ODR_OUT <= ODR; + + ARB_EN <= MR2(0); + DMA_EN <= MR2(1); + BSY_DISn <= MR2(2); + EOP_EN <= MR2(3); + PINT_EN <= MR2(4); + TARG <= MR2(6); + BLK <= MR2(7); + + RST <= ICR(7); + + -- Readback, unused bit positions are read back zero. + DATA_OUT <= CSD when ADR = "000" and CSn = '0' and RDn = '0' else -- Current SCSI data. + ICR(7) & AIP & LA & ICR(4 downto 0) when ADR = "001" and CSn = '0' and RDn = '0' else + MR2 when ADR = "010" and CSn = '0' and RDn = '0' else + x"0" & TCR when ADR = "011" and CSn = '0' and RDn = '0' else + CSB when ADR = "100" and CSn = '0' and RDn = '0' else -- Current SCSI bus status. + BSR when ADR = "101" and CSn = '0' and RDn = '0' else -- Bus and status. + IDR when ADR = "110" and CSn = '0' and RDn = '0' else x"00"; -- Input data register. + + RPI <= '1' when ADR = "111" and CSn = '0' and RDn = '0' else '0'; -- Reset parity/interrupts. +end BEHAVIOUR; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd new file mode 100644 index 0000000..abc0400 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd @@ -0,0 +1,300 @@ +---------------------------------------------------------------------- +---- ---- +---- WF5380 IP Core ---- +---- ---- +---- Description: ---- +---- This model provides an asynchronous SCSI interface compa- ---- +---- tible to the DP5380 from National Semiconductor and others. ---- +---- ---- +---- Some remarks to the required input clock: ---- +---- This core is provided for a 16MHz input clock. To use other ---- +---- frequencies, it is necessary to modify the following proces- ---- +---- ses in the control file section: ---- +---- P_BUSFREE, DELAY_800, INTERRUPTS. ---- +---- ---- +---- This file is the top level file without tree state buses for ---- +---- use in 'systems on chip' designs. ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K9A 2009/06/20 WF +-- Initial Release. +-- + +library work; +use work.wf5380_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF5380_TOP_SOC is + port ( + -- System controls: + CLK : in bit; -- Use a 16MHz Clock. + RESETn : in bit; + + -- Address and data: + ADR : in bit_vector(2 downto 0); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + + -- Bus and DMA controls: + CSn : in bit; + RDn : in bit; + WRn : in bit; + EOPn : in bit; + DACKn : in bit; + DRQ : out bit; + INT : out bit; + READY : out bit; + + -- SCSI bus: + DB_INn : in bit_vector(7 downto 0); + DB_OUTn : out bit_vector(7 downto 0); + DB_EN : out bit; + DBP_INn : in bit; + DBP_OUTn : out bit; + DBP_EN : out bit; + RST_INn : in bit; + RST_OUTn : out bit; + RST_EN : out bit; + BSY_INn : in bit; + BSY_OUTn : out bit; + BSY_EN : out bit; + SEL_INn : in bit; + SEL_OUTn : out bit; + SEL_EN : out bit; + ACK_INn : in bit; + ACK_OUTn : out bit; + ACK_EN : out bit; + ATN_INn : in bit; + ATN_OUTn : out bit; + ATN_EN : out bit; + REQ_INn : in bit; + REQ_OUTn : out bit; + REQ_EN : out bit; + IOn_IN : in bit; + IOn_OUT : out bit; + IO_EN : out bit; + CDn_IN : in bit; + CDn_OUT : out bit; + CD_EN : out bit; + MSG_INn : in bit; + MSG_OUTn : out bit; + MSG_EN : out bit + ); +end entity WF5380_TOP_SOC; + +architecture STRUCTURE of WF5380_TOP_SOC is +signal ACK_OUT_CTRLn : bit; +signal AIP : bit; +signal ARB : bit; +signal ARB_EN : bit; +signal BLK : bit; +signal BSR : bit_vector(7 downto 0); +signal BSY_DISn : bit; +signal BSY_ERR : bit; +signal BSY_OUT_CTRLn : bit; +signal CHK_PAR : bit; +signal CSD : bit_vector(7 downto 0); +signal CSB : bit_vector(7 downto 0); +signal DATA_EN_CTRL : bit; +signal DB_EN_I : bit; +signal DMA_ACTIVE : bit; +signal DMA_EN : bit; +signal DMA_DIS : bit; +signal DMA_SND : bit; +signal DRQ_I : bit; +signal EDMA : bit; +signal EOP_EN : bit; +signal ICR : bit_vector(7 downto 0); +signal IDR_WR : bit; +signal INT_I : bit; +signal LA : bit; +signal ODR : bit_vector(7 downto 0); +signal ODR_WR : bit; +signal PCHK : bit; +signal PHSM : bit; +signal PINT_EN : bit; +signal REQ_OUT_CTRLn : bit; +signal RPI : bit; +signal RST : bit; +signal SDI : bit; +signal SDS : bit; +signal SDT : bit; +signal SER : bit_vector(7 downto 0); +signal SER_ID : bit; +signal SPER : bit; +signal TARG : bit; +signal TCR : bit_vector(3 downto 0); +begin + EDMA <= '1' when EOPn = '0' and DACKn = '0' and RDn = '0' else + '1' when EOPn = '0' and DACKn = '0' and WRn = '0' else '0'; + + PHSM <= '1' when DMA_ACTIVE = '0' else -- Always true, if there is no DMA. + '1' when DMA_ACTIVE = '1' and REQ_INn = '0' and CDn_In = TCR(1) and IOn_IN = TCR(0) and MSG_INn = TCR(2) else '0'; -- Phasematch. + + DMA_DIS <= '1' when DMA_ACTIVE = '1' and BSY_INn = '1' else '0'; + + SER_ID <= '1' when SER /= x"00" and SER = not CSD else '0'; + + DRQ <= DRQ_I; + INT <= INT_I; + + -- Pay attention: the SCSI bus is driven with inverted signals. + ACK_OUTn <= ACK_OUT_CTRLn when DMA_ACTIVE = '1' else not ICR(4); -- Valid in initiator mode. + REQ_OUTn <= REQ_OUT_CTRLn when DMA_ACTIVE = '1' else not TCR(3); -- Valid in Target mode. + BSY_OUTn <= '0' when BSY_OUT_CTRLn = '0' and TARG = '0' else -- Valid in initiator mode. + '0' when ICR(3) = '1' else '1'; + ATN_OUTn <= not ICR(1); -- Valid in initiator mode. + SEL_OUTn <= not ICR(2); -- Valid in initiator mode. + IOn_OUT <= not TCR(0); -- Valid in Target mode. + CDn_OUT <= not TCR(1); -- Valid in Target mode. + MSG_OUTn <= not TCR(2); -- Valid in Target mode. + RST_OUTn <= not RST; + + DB_OUTn <= not ODR; + DBP_OUTn <= not SPER; + + CSD <= not DB_INn; + CSB <= not RST_INn & not BSY_INn & not REQ_INn & not MSG_INn & not CDn_IN & not IOn_IN & not SEL_INn & not DBP_INn; + BSR <= EDMA & DRQ_I & SPER & INT_I & PHSM & BSY_ERR & not ATN_INn & not ACK_INn; + + -- Hi impedance control: + ATN_EN <= '1' when TARG = '0' else '0'; -- Initiator mode. + SEL_EN <= '1' when TARG = '0' else '0'; -- Initiator mode. + BSY_EN <= '1' when TARG = '0' else '0'; -- Initiator mode. + ACK_EN <= '1' when TARG = '0' else '0'; -- Initiator mode. + IO_EN <= '1' when TARG = '1' else '0'; -- Target mode. + CD_EN <= '1' when TARG = '1' else '0'; -- Target mode. + MSG_EN <= '1' when TARG = '1' else '0'; -- Target mode. + REQ_EN <= '1' when TARG = '1' else '0'; -- Target mode. + RST_EN <= '1' when RST = '1' else '0'; -- Open drain control. + + -- Data enables: + DB_EN_I <= '1' when DATA_EN_CTRL = '1' else -- During Arbitration. + '1' when ICR(0) = '1' and TARG = '1' and DMA_SND = '1' else -- Target 'Send' mode. + '1' when ICR(0) = '1' and TARG = '0' and IOn_IN = '0' and PHSM = '1' else + '1' when ICR(6) = '1' else '0'; -- Test mode enable. + + DB_EN <= DB_EN_I; + DBP_EN <= DB_EN_I; + + I_REGISTERS: WF5380_REGISTERS + port map( + CLK => CLK, + RESETn => RESETn, + ADR => ADR, + DATA_IN => DATA_IN, + DATA_OUT => DATA_OUT, + DATA_EN => DATA_EN, + CSn => CSn, + RDn => RDn, + WRn => WRn, + RSTn => RST_INn, + RST => RST, + ARB_EN => ARB_EN, + DMA_ACTIVE => DMA_ACTIVE, + DMA_EN => DMA_EN, + BSY_DISn => BSY_DISn, + EOP_EN => EOP_EN, + PINT_EN => PINT_EN, + SPER => SPER, + TARG => TARG, + BLK => BLK, + DMA_DIS => DMA_DIS, + IDR_WR => IDR_WR, + ODR_WR => ODR_WR, + CHK_PAR => CHK_PAR, + AIP => AIP, + ARB => ARB, + LA => LA, + CSD => CSD, + CSB => CSB, + BSR => BSR, + ODR_OUT => ODR, + ICR_OUT => ICR, + TCR_OUT => TCR, + SER_OUT => SER, + SDS => SDS, + SDT => SDT, + SDI => SDI, + RPI => RPI + ); + + I_CONTROL: WF5380_CONTROL + port map( + CLK => CLK, + RESETn => RESETn, + BSY_INn => BSY_INn, + BSY_OUTn => BSY_OUT_CTRLn, + DATA_EN => DATA_EN_CTRL, + SEL_INn => SEL_INn, + ARB_EN => ARB_EN, + BSY_DISn => BSY_DISn, + RSTn => RST_INn, + ARB => ARB, + AIP => AIP, + LA => LA, + ACK_INn => ACK_INn, + ACK_OUTn => ACK_OUT_CTRLn, + REQ_INn => REQ_INn, + REQ_OUTn => REQ_OUT_CTRLn, + DACKn => DACKn, + READY => READY, + DRQ => DRQ_I, + TARG => TARG, + BLK => BLK, + PINT_EN => PINT_EN, + SPER => SPER, + SER_ID => SER_ID, + RPI => RPI, + DMA_EN => DMA_EN, + SDS => SDS, + SDT => SDT, + SDI => SDI, + EOP_EN => EOP_EN, + EOPn => EOPn, + PHSM => PHSM, + INT => INT_I, + IDR_WR => IDR_WR, + ODR_WR => ODR_WR, + CHK_PAR => CHK_PAR, + BSY_ERR => BSY_ERR, + DMA_SND => DMA_SND, + DMA_ACTIVE => DMA_ACTIVE + ); +end STRUCTURE; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd new file mode 100644 index 0000000..bfb31fb --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd @@ -0,0 +1,275 @@ +---------------------------------------------------------------------- +---- ---- +---- WF5380 IP Core ---- +---- ---- +---- Description: ---- +---- This model provides an asynchronous SCSI interface compa- ---- +---- tible to the DP5380 from National Semiconductor and others. ---- +---- ---- +---- This file is the top level file with tree state buses. ---- +---- ---- +---- ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K9A 2009/06/20 WF +-- Initial Release. +-- + +library work; +use work.wf5380_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF5380_TOP is + port ( + -- System controls: + CLK : in bit; + RESETn : in bit; + + -- Address and data: + ADR : in std_logic_vector(2 downto 0); + DATA : inout std_logic_vector(7 downto 0); + + -- Bus and DMA controls: + CSn : in bit; + RDn : in bit; + WRn : in bit; + EOPn : in bit; + DACKn : in bit; + DRQ : out bit; + INT : out bit; + READY : out bit; + + -- SCSI bus: + DBn : inout std_logic_vector(7 downto 0); + DBPn : inout std_logic; + RSTn : inout std_logic; + BSYn : inout std_logic; + SELn : inout std_logic; + ACKn : inout std_logic; + ATNn : inout std_logic; + REQn : inout std_logic; + IOn : inout std_logic; + CDn : inout std_logic; + MSGn : inout std_logic + ); +end entity WF5380_TOP; + +architecture STRUCTURE of WF5380_TOP is +component WF5380_TOP_SOC + port ( + -- System controls: + CLK : in bit; + RESETn : in bit; + ADR : in bit_vector(2 downto 0); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + CSn : in bit; + RDn : in bit; + WRn : in bit; + EOPn : in bit; + DACKn : in bit; + DRQ : out bit; + INT : out bit; + READY : out bit; + DB_INn : in bit_vector(7 downto 0); + DB_OUTn : out bit_vector(7 downto 0); + DB_EN : out bit; + DBP_INn : in bit; + DBP_OUTn : out bit; + DBP_EN : out bit; + RST_INn : in bit; + RST_OUTn : out bit; + RST_EN : out bit; + BSY_INn : in bit; + BSY_OUTn : out bit; + BSY_EN : out bit; + SEL_INn : in bit; + SEL_OUTn : out bit; + SEL_EN : out bit; + ACK_INn : in bit; + ACK_OUTn : out bit; + ACK_EN : out bit; + ATN_INn : in bit; + ATN_OUTn : out bit; + ATN_EN : out bit; + REQ_INn : in bit; + REQ_OUTn : out bit; + REQ_EN : out bit; + IOn_IN : in bit; + IOn_OUT : out bit; + IO_EN : out bit; + CDn_IN : in bit; + CDn_OUT : out bit; + CD_EN : out bit; + MSG_INn : in bit; + MSG_OUTn : out bit; + MSG_EN : out bit + ); +end component; +-- +signal ADR_IN : bit_vector(2 downto 0); +signal DATA_IN : bit_vector(7 downto 0); +signal DATA_OUT : bit_vector(7 downto 0); +signal DATA_EN : bit; +signal DB_INn : bit_vector(7 downto 0); +signal DB_OUTn : bit_vector(7 downto 0); +signal DB_EN : bit; +signal DBP_INn : bit; +signal DBP_OUTn : bit; +signal DBP_EN : bit; +signal RST_INn : bit; +signal RST_OUTn : bit; +signal RST_EN : bit; +signal BSY_INn : bit; +signal BSY_OUTn : bit; +signal BSY_EN : bit; +signal SEL_INn : bit; +signal SEL_OUTn : bit; +signal SEL_EN : bit; +signal ACK_INn : bit; +signal ACK_OUTn : bit; +signal ACK_EN : bit; +signal ATN_INn : bit; +signal ATN_OUTn : bit; +signal ATN_EN : bit; +signal REQ_INn : bit; +signal REQ_OUTn : bit; +signal REQ_EN : bit; +signal IOn_IN : bit; +signal IOn_OUT : bit; +signal IO_EN : bit; +signal CDn_IN : bit; +signal CDn_OUT : bit; +signal CD_EN : bit; +signal MSG_INn : bit; +signal MSG_OUTn : bit; +signal MSG_EN : bit; +begin + ADR_IN <= To_BitVector(ADR); + + DATA_IN <= To_BitVector(DATA); + DATA <= To_StdLogicVector(DATA_OUT) when DATA_EN = '1' else (others => 'Z'); + + DB_INn <= To_BitVector(DBn); + DBn <= To_StdLogicVector(DB_OUTn) when DB_EN = '1' else (others => 'Z'); + + DBP_INn <= To_Bit(DBPn); + + RST_INn <= To_Bit(RSTn); + BSY_INn <= To_Bit(BSYn); + SEL_INn <= To_Bit(SELn); + ACK_INn <= To_Bit(ACKn); + ATN_INn <= To_Bit(ATNn); + REQ_INn <= To_Bit(REQn); + IOn_IN <= To_Bit(IOn); + CDn_IN <= To_Bit(CDn); + MSG_INn <= To_Bit(MSGn); + + DBPn <= '1' when DBP_OUTn = '1' and DBP_EN = '1' else + '0' when DBP_OUTn = '0' and DBP_EN = '1' else 'Z'; + RSTn <= '1' when RST_OUTn = '1' and RST_EN = '1'else + '0' when RST_OUTn = '0' and RST_EN = '1' else 'Z'; + BSYn <= '1' when BSY_OUTn = '1' and BSY_EN = '1' else + '0' when BSY_OUTn = '0' and BSY_EN = '1' else 'Z'; + SELn <= '1' when SEL_OUTn = '1' and SEL_EN = '1' else + '0' when SEL_OUTn = '0' and SEL_EN = '1' else 'Z'; + ACKn <= '1' when ACK_OUTn = '1' and ACK_EN = '1' else + '0' when ACK_OUTn = '0' and ACK_EN = '1' else 'Z'; + ATNn <= '1' when ATN_OUTn = '1' and ATN_EN = '1' else + '0' when ATN_OUTn = '0' and ATN_EN = '1' else 'Z'; + REQn <= '1' when REQ_OUTn = '1' and REQ_EN = '1' else + '0' when REQ_OUTn = '0' and REQ_EN = '1' else 'Z'; + IOn <= '1' when IOn_OUT = '1' and IO_EN = '1' else + '0' when IOn_OUT = '0' and IO_EN = '1' else 'Z'; + CDn <= '1' when CDn_OUT = '1' and CD_EN = '1' else + '0' when CDn_OUT = '0' and CD_EN = '1' else 'Z'; + MSGn <= '1' when MSG_OUTn = '1' and MSG_EN = '1' else + '0' when MSG_OUTn = '0' and MSG_EN = '1' else 'Z'; + + I_5380: WF5380_TOP_SOC + port map( + CLK => CLK, + RESETn => RESETn, + ADR => ADR_IN, + DATA_IN => DATA_IN, + DATA_OUT => DATA_OUT, + DATA_EN => DATA_EN, + CSn => CSn, + RDn => RDn, + WRn => WRn, + EOPn => EOPn, + DACKn => DACKn, + DRQ => DRQ, + INT => INT, + READY => READY, + DB_INn => DB_INn, + DB_OUTn => DB_OUTn, + DB_EN => DB_EN, + DBP_INn => DBP_INn, + DBP_OUTn => DBP_OUTn, + DBP_EN => DBP_EN, + RST_INn => RST_INn, + RST_OUTn => RST_OUTn, + RST_EN => RST_EN, + BSY_INn => BSY_INn, + BSY_OUTn => BSY_OUTn, + BSY_EN => BSY_EN, + SEL_INn => SEL_INn, + SEL_OUTn => SEL_OUTn, + SEL_EN => SEL_EN, + ACK_INn => ACK_INn, + ACK_OUTn => ACK_OUTn, + ACK_EN => ACK_EN, + ATN_INn => ATN_INn, + ATN_OUTn => ATN_OUTn, + ATN_EN => ATN_EN, + REQ_INn => REQ_INn, + REQ_OUTn => REQ_OUTn, + REQ_EN => REQ_EN, + IOn_IN => IOn_IN, + IOn_OUT => IOn_OUT, + IO_EN => IO_EN, + CDn_IN => CDn_IN, + CDn_OUT => CDn_OUT, + CD_EN => CD_EN, + MSG_INn => MSG_INn, + MSG_OUTn => MSG_OUTn, + MSG_EN => MSG_EN + ); +end STRUCTURE; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd new file mode 100644 index 0000000..10a86f9 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd @@ -0,0 +1,253 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- Address mark detector file. This part detects the address ---- +---- mark in the incoming data stream in FM and also in MFM mode ---- +---- and provides therewith synchronisation information for the ---- +---- control state machine and for the data separator in the ---- +---- transceiver unit. ---- +---- ---- +------------------------------- Some theory ------------------------------------- +---- Frequency modulation FM: ---- +---- The frequency modulation works as follows: ---- +---- 1. every first pulse of the clock and data line is a clock. ---- +---- 2. every second pulse is a data. ---- +---- 3. a logic 1 is represented by two consecutive pulses (clock and data). ---- +---- 4. a logic 0 is represented by one clock pulse and no data pulse. ---- +---- 5. Hence there are a maximum of two pulses per data bit. ---- +---- 6. one clock and one data pulse come together in one bit cell. ---- +---- 7. the duration of a bit cell in FM is 4 microseconds. ---- +---- 8. an ID address mark is represented as data FE with clock C7. ---- +---- 9. a DATA address mark is represented as data FB with clock C7. ---- +---- Examples: ---- +---- Binary data 1 1 0 0 1 0 1 1 is represented in FM as follows: ---- +---- 1111101011101111 ---- +---- the FE data 1 1 1 1 1 1 1 0 is represented as follows: ---- +---- 1111111111111110 ---- +---- with C7 clock mask 1 1 0 0 0 1 1 1 which masks the clock pulses there ---- +---- results: 1111010101111110 this is the ID address mark. ---- +---- the FB data 1 1 1 1 1 0 1 1 is represented as follows: ---- +---- 1111111111101111 ---- +---- with C7 clock mask 1 1 0 0 0 1 1 1 which masks the clock pulses there ---- +---- results: 1111010101101111 this is the DATA address mark. ---- +---- the F8 data 1 1 1 1 1 0 0 0 is represented as follows: ---- +---- 1111111111101010 ---- +---- with C7 clock mask 1 1 0 0 0 1 1 1 which masks the clock pulses there ---- +---- results: 1111010101101010 this is the deleted DATA mark. ---- +---- ---- +---- ---- +---- Modified frequency modulation MFM: ---- +---- The modified frequency modulation works as follows: ---- +---- 1. every first pulse of the clock and data line is a clock. ---- +---- 2. every second pulse is a data. ---- +---- 3. a logic 1 is represented by no clock but a data pulse. ---- +---- 4. a logic 0 is represented by a clock pulse and no data pulse if ---- +---- following a 0. ---- +---- 5. a logic 0 is represented by no pulse if following a 1. ---- +---- 6. Hence there are a maximum of one pulse per data bit. ---- +---- 7. one clock and one data pulse form together one bit cell. ---- +---- 8. the duration of a bit cell in MFM is 2 microseconds. ---- +---- 9. an address mark sync is represented as data A1 with missing clock ---- +---- pulse between bit 4 and 5. ---- +---- Examples: ---- +---- Binary data FE 1 1 1 1 1 1 1 0 is represented in MFM as follows: ---- +---- 0101010101010100 this is the ID address mark. ---- +---- Binary data FB 1 1 1 1 1 0 1 1 is represented in MFM as follows: ---- +---- 0101010101000101 this is the DATA address mark. ---- +---- Binary data F8 1 1 1 1 1 0 0 0 is represented in MFM as follows: ---- +---- 0101010101001010 this is the deleted DATA address mark. ---- +---- the A1 data 1 0 1 0 0 0 0 1 is represented as follows: ---- +---- 0100010010101001 ---- +---- with the missing clock pulse between bits 4 and 5 there results: ---- +---- results: 0100010010001001 this is the address mark sync. ---- +---- ---- +---- Both MFM and FM are during read and write shifted with most significant ---- +---- bit (MSB) first. During the FM address marks are written without a ---- +---- SYNC pulse the MFM coded data requires a synchronisation (A1 with ---- +---- missing clock pulse because at the beginning of the data stream it is ---- +---- not defined wether a clock pulse or a data pulse appears first. In FM ---- +---- coding the first pulse is in any case a clock pulse. ---- +--------------------------------------------------------------------------------- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_AM_DETECTOR is + port( + -- System control + CLK : in bit; + RESETn : in bit; + + -- Controls: + DDEn : in bit; + + -- Serial data and clock: + DATA : in bit; + DATA_STRB : in bit; + + -- Address mark detector: + ID_AM : out bit; -- ID address mark strobe. + DATA_AM : out bit; -- Data address mark strobe. + DDATA_AM : out bit -- Deleted data address mark strobe. + ); +end WF1772IP_AM_DETECTOR; + +architecture BEHAVIOR of WF1772IP_AM_DETECTOR is +signal SHIFT : bit_vector(15 downto 0); +signal SYNC : boolean; +signal ID_AM_I : bit; +signal DATA_AM_I : bit; +signal DDATA_AM_I : bit; +begin + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT <= (others => '0'); + elsif CLK = '1' and CLK' event then + if DATA_STRB = '1' then + -- MSB first leads to a shift left operation. + SHIFT <= SHIFT(14 downto 0) & DATA; + elsif DDEn = '0' and SHIFT = "0100010010001001" then -- This is the synchronisation in MFM. + SHIFT <= (others => '0'); + end if; + end if; + end process SHIFTREG; + + MFM_SYNCLOCK: process(RESETn, CLK) + -- The SYNC pulse is generated in MFM mode only when the sync character + -- appears in the shift register (A1 sync mark, see file header). + -- After the sync character is detected, the sync time counter is loaded + -- with a value of 17. During counting the following 17 read clock pulses + -- down, the SYNC is true. After exactly 16 pulses the address mark is + -- detected if the pattern in the shift register fits one of the address + -- marks. The address mark pulses are valid for one read clock cycle until + -- SYNC goes low again. This mechanism is used to detect the correct address + -- marks in the MFM data stream during the type III read track command. + -- This is an improvement over the original WD1772 chip. + variable TMP : std_logic_vector(4 downto 0); + begin + if RESETn = '0' then + TMP := "00000"; + elsif CLK = '1' and CLK' event then + if SHIFT = "0100010010001001" and DDEn = '0' then + TMP := "10001"; -- Load sync time counter. + elsif DATA_STRB = '1' and TMP > "00000" then + TMP := TMP - '1'; + end if; + end if; + case TMP is + when "00000" => SYNC <= false; + when others => SYNC <= true; + end case; + end process MFM_SYNCLOCK; + + -- The addressmark is nominally valid for one data pulse cycle (1us, 2us, 4us). + -- The pulse is shorter due to the fact that the detected address marks change the + -- state of the control state machine and so clear the address mark shift register... + ID_AM_I <= '1' when DDEn = '1' and SHIFT = "1111010101111110" else + '1' when DDEn = '0' and SHIFT = "0101010101010100" and SYNC = true else '0'; + DATA_AM_I <= '1' when DDEn = '1' and SHIFT = "1111010101101111" else + -- Normal data address mark... + '1' when DDEn = '0' and SHIFT = "0101010101000101" and SYNC = true else '0'; + DDATA_AM_I <= '1' when DDEn = '1' and SHIFT = "1111010101101010" else + -- ... and deleted address mark in MFM mode: + '1' when DDEn = '0' and SHIFT = "0101010101001010" and SYNC = true else '0'; + + ADRMARK_STROBES: process(RESETn, CLK) + -- ... nevertheless The controller and the transceiver require ID address mark strobes + -- and DATA address mark strobes. Therefore this process provides these strobe + -- signals independant of any 'feedbacks' like pulse shortening by the controller + -- state machine itself. + variable ID_AM_LOCK, DATA_AM_LOCK, DDATA_AM_LOCK : boolean; + begin + if RESETn = '0' then + ID_AM_LOCK := false; + DATA_AM_LOCK := false; + ID_AM <= '0'; + DATA_AM <= '0'; + elsif CLK = '1' and CLK' event then + -- ID address mark: + if ID_AM_I = '1' and ID_AM_LOCK = false then + ID_AM <= '1'; + ID_AM_LOCK := true; + elsif ID_AM_I = '0' then + ID_AM <= '0'; + ID_AM_LOCK := false; + else + ID_AM <= '0'; + end if; + -- Data address mark: + if DATA_AM_I = '1' and DATA_AM_LOCK = false then + DATA_AM <= '1'; + DATA_AM_LOCK := true; + elsif DATA_AM_I = '0' then + DATA_AM <= '0'; + DATA_AM_LOCK := false; + else + DATA_AM <= '0'; + end if; + -- Deleted data address mark: + if DDATA_AM_I = '1' and DDATA_AM_LOCK = false then + DDATA_AM <= '1'; + DDATA_AM_LOCK := true; + elsif DDATA_AM_I = '0' then + DDATA_AM <= '0'; + DDATA_AM_LOCK := false; + else + DDATA_AM <= '0'; + end if; + end if; + end process ADRMARK_STROBES; +end architecture BEHAVIOR; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd new file mode 100644 index 0000000..ce4c346 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd @@ -0,0 +1,1463 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- This is file the control unit providing all signals for the ---- +---- data processing units like registers, addressmark detector, ---- +---- data separator, CRC redundancy checker or transceiver. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Fixed the polarity of the precompensation flag. +-- The flag is no active '0'. Thanks to Jorma +-- Oksanen for the information. +-- Revision 2K8A 2008/02/26 WF +-- Fixed a bug in the 6ms delay. Thanks to Lyndon Amsdon. +-- Revision 2K8B 2008/12/24 WF +-- Bugfixes to avoid hanging state machine. +-- Changed DELAY_30MS to DELAY_15MS, which is the correct value. Thanks to L. Amsdon for the information. +-- Removed CRC_BUSY. +-- Fixed a bug in the Delay for the state T2_VERIFY_AM. +-- Revision 2K9A 2009/06/20 WF +-- Fix to provide correct LOST_DATA_TR00 flag during seek command. + + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_CONTROL is + port( + -- System control: + CLK : in bit; + RESETn : in bit; + + -- Chip control signals: + A1, A0 : in bit; + RWn : in bit; + CSn : in bit; + DDEn : in bit; + + -- Registers: + DR : in bit_vector(7 downto 0); -- Data register. + CMD : in std_logic_vector(7 downto 0); -- Command register. + DSR : in std_logic_vector(7 downto 0); -- Shift register. + TR : in std_logic_vector(7 downto 0); -- Track register. + SR : in std_logic_vector(7 downto 0); -- Sector register. + + -- Status flags: + MO : buffer bit; -- Motor on status flag. + WR_PR : out bit; -- Write protect status flag. + SPINUP_RECTYPE : out bit; -- Spin up / record type status flag. + SEEK_RNF : out bit; -- Seek error / record not found status flag. + CRC_ERRFLAG : out bit; -- CRC status flag. + LOST_DATA_TR00 : out bit; -- Status flag indicates lost data or track 00 position. + DRQ : out bit; -- Data request. + DRQ_IPn : out bit; -- Data request status flag. + BUSY : buffer bit; -- BUSY status flag. + + -- Address mark detector controls: + AM_2_DISK : out bit; -- Enables / disables the address mark detector. + ID_AM : in bit; -- Address mark of the ID field + DATA_AM : in bit; -- Address mark of the data field + DDATA_AM : in bit; -- Address mark of a deleted data field + + -- CRC unit controls: + CRC_ERR : in bit; -- CRC decoder's error. + CRC_PRES : out bit; -- Preset CRC during write operations. + + -- Track register controls: + TR_PRES : out bit; -- Set x"FF". + TR_CLR : out bit; -- Clear. + TR_INC : out bit; -- Increment. + TR_DEC : out bit; -- Decrement. + + -- Sector register control: + SR_LOAD : out bit; -- Load. + SR_INC : out bit; -- Increment. + -- The TRACK_NR is required during the type III command + -- 'Read Address'. TRACK_NR is the content of the TRACKMEM. + TRACK_NR : out std_logic_vector(7 downto 0); + + -- DATA register control: + DR_CLR : out bit; -- Clear. + DR_LOAD : out bit; -- LOAD. + + -- Shift register control: + SHFT_LOAD_ND : out bit; -- Load normal data. + SHFT_LOAD_SD : out bit; -- Load special data. + + -- Transceiver controls: + CRC_2_DISK : out bit; -- Cause the Transceiver to write out CRC data. + DSR_2_DISK : out bit; -- Cause the Transceiver to write normal data. + FF_2_DISK : out bit; -- Cause the Transceiver to write x"FF" bytes. + PRECOMP_EN : out bit; -- Enables the write precompensation. + + -- Miscellaneous Controls: + DATA_STRB : in bit; -- Data strobe (read and write operation) + WPRTn : in bit; -- Write protect flag + IPn : in bit; -- Index pulse flag + TRACK00n : in bit; -- Track zero flag + DISK_RWn : out bit; -- This signal reflects the data direction. + DIRC : out bit; -- Step direction control. + STEP : out bit; -- Step pulse. + WG : out bit; -- Write gate control. + INTRQ : out bit -- Interrupt request flag. + ); +end WF1772IP_CONTROL; + +architecture BEHAVIOR of WF1772IP_CONTROL is +-- The control state machine for the three command types I, II and III +-- (10 commands) has 73 states: +type CMD_STATES is( IDLE, INIT, SPINUP, DELAY_15MS, DECODE, T1_SEEK_RESTORE, T1_STEPPING, + T1_LOAD_SHFT, T1_COMP_TR_DSR, T1_CHECK_DIR, T1_HEAD_CTRL, T1_STEP, T1_TRAP, T1_STEP_DELAY, + T1_SPINDOWN, T1_SCAN_TRACK, T1_SCAN_CRC, T1_VERIFY_DELAY, T1_VERIFY_CRC, T2_RD_WR_SECT, + T2_INIT, T2_SCAN_TRACK, T2_SCAN_SECT, T2_SCAN_LEN, T2_VERIFY_CRC_1, T2_VERIFY_AM, T2_FIRSTBYTE, + T2_LOAD_DATA, T2_NEXTBYTE, T2_VERIFY_DRQ_1, T2_RDSTAT, T2_VERIFY_CRC_2, + T2_MULTISECT, T2_DELAY_B2, T2_SET_DRQ, T2_DELAY_B8, T2_VERIFY_DRQ_2, + T2_DELAY_B1, T2_CHECK_MODE, T2_DELAY_B11, T2_WR_LEADIN, T2_WR_AM, + T2_LOAD_SHFT, T2_WR_BYTE, T2_VERIFY_DRQ_3, T2_DATALOST, T2_WRSTAT, T2_WR_CRC, + T2_WR_FF, T3_WR, T3_DELAY_B3, T3_VERIFY_DRQ, T3_CHECK_INDEX_1, T3_LOAD_SHFT, + T3_WR_DATA, T3_CHECK_INDEX_2, T3_DATALOST, T3_RD_TRACK, T3_SHIFT, + T3_CHECK_INDEX_3, T3_DETECT_AM, T3_CHECK_BYTE, T3_CHECK_DR, T3_LOAD_DATA_1, + T3_SET_DRQ_1, T3_RD_ADR, T3_VERIFY_AM, T3_SHIFT_ADR, T3_LOAD_DATA_2, + T3_SET_DRQ_2, T3_CHECK_RD, T3_LOAD_SR, T3_VERIFY_CRC); +signal CMD_STATE : CMD_STATES; +signal NEXT_CMD_STATE : CMD_STATES; +signal DATA_WR : boolean; +signal DATA_RD : boolean; +signal CMD_WR : boolean; +signal STAT_RD : boolean; +signal DELAY : boolean; +signal DRQ_I : bit; +signal INDEX_CNT : boolean; +signal DIR : bit; +signal INDEX_MARK : bit; +signal STEP_TRAP : boolean; +signal TYPE_IV_BREAK : boolean; +signal BYTE_RDY : boolean; +signal SECT_LEN : std_logic_vector(10 downto 0); +signal TRACKMEM : std_logic_vector(7 downto 0); +signal T3_TRADR : boolean; +signal T3_DATATYPE : bit_vector(7 downto 0); +begin + -- The Forced interrupt stops any command at the end of an internal micro instruction. + -- Forced interrupt waits until ALU operations in progress are complete (CRC calculations, + -- compares etc.). the TYPE_IV_BREAK controls this behavior. + TYPE_IV_BREAK <= true when CMD(7 downto 4) = x"D" and DELAY = true else false; + + CMD_REG: process(RESETn, CLK) + begin + if RESETn = '0' then + CMD_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if TYPE_IV_BREAK = true then + CMD_STATE <= IDLE; -- Forced interrupt break. + else + CMD_STATE <= NEXT_CMD_STATE; -- Normal operation. + end if; + end if; + end process CMD_REG; + + CMD_DECODER: process(CMD_STATE, CMD, DSR, TR, SR, INDEX_CNT, IPn, INDEX_MARK, DELAY, DIR, MO, CMD_WR, DRQ_I, + DDEn, CRC_ERR, TRACK00n, STEP_TRAP, ID_AM, DATA_AM, DDATA_AM, WPRTn, SECT_LEN, BYTE_RDY, + T3_TRADR) + begin + case CMD_STATE is + -------------------------------------------------------------------- + ------------------ type1, -2, -3 command stuff --------------------- + -------------------------------------------------------------------- + when IDLE => + -- The write access to the command register indicates a new command. + -- Any command received (type1, -2 or -3 but not type4): + if CMD_WR = true and CMD /= x"FF" and CMD(7 downto 4) /= "1101" then + NEXT_CMD_STATE <= INIT; + else + NEXT_CMD_STATE <= IDLE; -- No CMD detected. + end if; + when INIT => + -- The process goes on when the CMD_WR flag is released. + if CMD_WR = false and CMD(3) = '0' and MO = '0' then + -- Do not enter the SPINUP sequence + -- when the motor is already on (MO = '1'). + NEXT_CMD_STATE <= SPINUP; + elsif CMD_WR = false then + -- Proceed with the DELAY_15MS when the motor was + -- already on or when the SPINUP sequence is + -- disabled (CMD(3) = '1'). + NEXT_CMD_STATE <= DELAY_15MS; + else + NEXT_CMD_STATE <= INIT; + end if; + when SPINUP => + if INDEX_CNT = true then -- proceed after 6 revolutions + NEXT_CMD_STATE <= DELAY_15MS; + else + NEXT_CMD_STATE <= SPINUP; + end if; + when DELAY_15MS => + if CMD(7) = '0' then -- No delay for type1 commands. + NEXT_CMD_STATE <= DECODE; + elsif CMD(7) = '1' and CMD(2) = '0' then -- Delay for type2 and -3 disabled. + NEXT_CMD_STATE <= DECODE; + elsif CMD(7) = '1' and CMD(2) = '1' and DELAY = true then -- Delay enabled by CMD(2). + NEXT_CMD_STATE <= DECODE; + else + NEXT_CMD_STATE <= DELAY_15MS; + end if; + when DECODE => + case CMD(7 downto 5) is + when "000" => -- 'restore', 'seek'. + NEXT_CMD_STATE <= T1_SEEK_RESTORE; + when "001" |"010" | "011" => -- 'step', 'step in', 'step out'. + NEXT_CMD_STATE <= T1_STEPPING; + when "100" | "101" => -- 'read sector', 'write sector' + NEXT_CMD_STATE <= T2_RD_WR_SECT; + when "110" => -- 'read address'. + -- "110" is also used by the 'force interrupt'. + -- There will result no wrong encoding because + -- the 'force intterrupt' is predecoded in IDLE. + NEXT_CMD_STATE <= T3_RD_ADR; + when "111" => -- 'read track', 'write track'. + case CMD(4) is + when '0' => NEXT_CMD_STATE <= T3_RD_TRACK; + when '1' => NEXT_CMD_STATE <= T3_WR; + when others => NEXT_CMD_STATE <= T3_WR; -- Dummy for U, X, Z, W, H, L, -. + end case; + when others => + -- The following NEXT_CMD_STATE is chosen to compile fine with + -- the Xilinx ISE not to produce a latch. + NEXT_CMD_STATE <= IDLE; -- Never true due to IDLE preselection. + end case; + -------------------------------------------------------------------- + ------------------ special type1 command stuff --------------------- + -------------------------------------------------------------------- + when T1_SEEK_RESTORE => + -- In this state, the data register and the track register are updated, if the + -- command is a RESTORE. The update is done further down with the track register + -- and the data register controls. + NEXT_CMD_STATE <= T1_LOAD_SHFT; + when T1_STEPPING => + if CMD(4) = '1' then -- '1' means update track register. + NEXT_CMD_STATE <= T1_CHECK_DIR; + else + NEXT_CMD_STATE <= T1_HEAD_CTRL; + end if; + when T1_LOAD_SHFT => + NEXT_CMD_STATE <= T1_COMP_TR_DSR; + when T1_COMP_TR_DSR => + if DSR = TR then + NEXT_CMD_STATE <= T1_VERIFY_DELAY; + else + -- The direction control is done further down. + NEXT_CMD_STATE <= T1_CHECK_DIR; + end if; + when T1_CHECK_DIR => + -- Track register modifications are done in + -- statements further down. + -- The delay is to provide the timing of the WD1772 which is DIR to step = + -- 24us in MFM mode and 48us in FM mode. + if DELAY = true then + NEXT_CMD_STATE <= T1_HEAD_CTRL; + else + NEXT_CMD_STATE <= T1_CHECK_DIR; + end if; + when T1_HEAD_CTRL => + if TRACK00n = '0' and DIR = '0' then + NEXT_CMD_STATE <= T1_VERIFY_DELAY; + else + NEXT_CMD_STATE <= T1_STEP; + end if; + when T1_STEP => + NEXT_CMD_STATE <= T1_TRAP; + when T1_TRAP => + if STEP_TRAP = true then + NEXT_CMD_STATE <= IDLE; -- Break due to seek error. + else + NEXT_CMD_STATE <= T1_STEP_DELAY; + end if; + when T1_STEP_DELAY => + -- The delay in here is according to the CMD(1 downto 0) as follows: + -- "11" = 3ms, "10" = 2ms, "01" = 12ms, "00" = 6ms. + if DELAY = true then + case CMD(7 downto 5) is + when "001" | "010" | "011" => -- STEP - STEP IN - STEP OUT. + NEXT_CMD_STATE <= T1_VERIFY_DELAY; + when others => -- Seek or restore command. + NEXT_CMD_STATE <= T1_LOAD_SHFT; + end case; + else + NEXT_CMD_STATE <= T1_STEP_DELAY; + end if; + when T1_VERIFY_DELAY => + if CMD(2) = '0' then -- No verify. + NEXT_CMD_STATE <= IDLE; + else + if DELAY = true then -- Wait, if verify is active. + NEXT_CMD_STATE <= T1_SPINDOWN; + else + NEXT_CMD_STATE <= T1_VERIFY_DELAY; + end if; + end if; + when T1_SPINDOWN => -- Detect ID address mark in here. + if INDEX_CNT = true then + NEXT_CMD_STATE <= IDLE; -- Break due to timeout. + elsif ID_AM = '1' then -- Addressmark found. + NEXT_CMD_STATE <= T1_SCAN_TRACK; + else + NEXT_CMD_STATE <= T1_SPINDOWN; + end if; + when T1_SCAN_TRACK => + if DELAY = true then + -- Track found if shift register (DSR) equals track register (TR). + if DSR = TR then + NEXT_CMD_STATE <= T1_SCAN_CRC; + else + NEXT_CMD_STATE <= T1_SPINDOWN; + end if; + else + NEXT_CMD_STATE <= T1_SCAN_TRACK; + end if; + when T1_SCAN_CRC => + -- Scan the rest of the data header for correct CRC generation (3 Bytes). + -- Sector number side select byte and data length byte. + if DELAY = true then + NEXT_CMD_STATE <= T1_VERIFY_CRC; + else + NEXT_CMD_STATE <= T1_SCAN_CRC; + end if; + when T1_VERIFY_CRC => + -- The CRC logic starts during T1_SPINDOWN (missing clock transitions). + if DELAY = true then + if CRC_ERR = '1' then + NEXT_CMD_STATE <= T1_SPINDOWN; -- CRC error. + else + NEXT_CMD_STATE <= IDLE; -- Operation finished. + end if; + else + NEXT_CMD_STATE <= T1_VERIFY_CRC; -- Wait until CRC logic is ready. + end if; + -------------------------------------------------------------------- + ------------------ special type2 command stuff --------------------- + -------------------------------------------------------------------- + when T2_RD_WR_SECT => + if CMD(7 downto 5) = "101" and WPRTn = '0' then + NEXT_CMD_STATE <= IDLE; -- Break due to write protected disk. + else + NEXT_CMD_STATE <= T2_INIT; + end if; + when T2_INIT => + if INDEX_CNT = true then + NEXT_CMD_STATE <= IDLE; -- Break due to timeout. + elsif ID_AM = '0' then + NEXT_CMD_STATE <= T2_INIT; -- Wait for address mark. + else -- INDEX_CNT = false and ID_AM = '1' -> ID address mark detected + NEXT_CMD_STATE <= T2_SCAN_TRACK; + end if; + when T2_SCAN_TRACK => + -- Track found if shift register (DSR) equals track register (TR). + if DELAY = true then + if DSR = TR then + NEXT_CMD_STATE <= T2_SCAN_SECT; + else + NEXT_CMD_STATE <= T2_INIT; + end if; + else + NEXT_CMD_STATE <= T2_SCAN_TRACK; + end if; + when T2_SCAN_SECT => + -- Sector found if shift register (DSR) equals sector register (SR). + if DELAY = true then + if DSR = SR then + NEXT_CMD_STATE <= T2_SCAN_LEN; + else + NEXT_CMD_STATE <= T2_INIT; + end if; + else + NEXT_CMD_STATE <= T2_SCAN_SECT; + end if; + when T2_SCAN_LEN => + if DELAY = true then + NEXT_CMD_STATE <= T2_VERIFY_CRC_1; + else + NEXT_CMD_STATE <= T2_SCAN_LEN; + end if; + when T2_VERIFY_CRC_1 => + -- The CRC logic starts after T2_INIT (missing clock transitions). + if DELAY = true then + if CRC_ERR = '1' then + NEXT_CMD_STATE <= T2_INIT; -- CRC error. + elsif CRC_ERR = '0' and CMD(7 downto 5) = "101" then + NEXT_CMD_STATE <= T2_DELAY_B2; -- Comand is a write. + else -- Command is a read. + NEXT_CMD_STATE <= T2_VERIFY_AM; + end if; + else + NEXT_CMD_STATE <= T2_VERIFY_CRC_1; -- Wait until CRC logic is ready. + end if; + when T2_VERIFY_AM => + if DATA_AM = '1' or DDATA_AM = '1' then -- Data address mark detected, go on. + NEXT_CMD_STATE <= T2_FIRSTBYTE; + elsif DELAY = false then -- Stay in this state. + NEXT_CMD_STATE <= T2_VERIFY_AM; + else + NEXT_CMD_STATE <= T2_INIT; -- No addressmark detected. + end if; + when T2_FIRSTBYTE => + if DELAY = true then + NEXT_CMD_STATE <= T2_LOAD_DATA; + else + NEXT_CMD_STATE <= T2_FIRSTBYTE; + end if; + when T2_LOAD_DATA => + NEXT_CMD_STATE <= T2_NEXTBYTE; + when T2_NEXTBYTE => + if DELAY = true then + NEXT_CMD_STATE <= T2_VERIFY_DRQ_1; + else + NEXT_CMD_STATE <= T2_NEXTBYTE; + end if; + when T2_VERIFY_DRQ_1 => + NEXT_CMD_STATE <= T2_RDSTAT; + when T2_RDSTAT => + if SECT_LEN = "00000000000" then + NEXT_CMD_STATE <= T2_VERIFY_CRC_2; + else + NEXT_CMD_STATE <= T2_LOAD_DATA; + end if; + when T2_VERIFY_CRC_2 => + -- The CRC logic starts after T2_VERIFY_AM (missing clock transitions). + if DELAY = true then + if CRC_ERR = '1' then + NEXT_CMD_STATE <= IDLE; -- Break due to CRC error. + else + NEXT_CMD_STATE <= T2_MULTISECT; + end if; + else + NEXT_CMD_STATE <= T2_VERIFY_CRC_2; -- Wait until CRC logic is ready. + end if; + when T2_MULTISECT => + if CMD(4) = '1' then + NEXT_CMD_STATE <= T2_RD_WR_SECT; + else + NEXT_CMD_STATE <= IDLE; -- Operation finished. + end if; + when T2_DELAY_B2 => + if DELAY = true then + NEXT_CMD_STATE <= T2_SET_DRQ; + else + NEXT_CMD_STATE <= T2_DELAY_B2; + end if; + when T2_SET_DRQ => + NEXT_CMD_STATE <= T2_DELAY_B8; + when T2_DELAY_B8 => + if DELAY = true then + NEXT_CMD_STATE <= T2_VERIFY_DRQ_2; + else + NEXT_CMD_STATE <= T2_DELAY_B8; + end if; + when T2_VERIFY_DRQ_2 => + if DRQ_I = '0' then + NEXT_CMD_STATE <= T2_DELAY_B1; + else + NEXT_CMD_STATE <= IDLE; -- Break due to lost data (no new data by host). + end if; + when T2_DELAY_B1 => + if DELAY = true then + NEXT_CMD_STATE <= T2_CHECK_MODE; + else + NEXT_CMD_STATE <= T2_DELAY_B1; + end if; + when T2_CHECK_MODE => + if DDEn = '1' then -- FM mode + NEXT_CMD_STATE <= T2_WR_LEADIN; + else + NEXT_CMD_STATE <= T2_DELAY_B11; + end if; + when T2_DELAY_B11 => + if DELAY = true then + NEXT_CMD_STATE <= T2_WR_LEADIN; + else + NEXT_CMD_STATE <= T2_DELAY_B11; + end if; + when T2_WR_LEADIN => + if DELAY = true then + NEXT_CMD_STATE <= T2_WR_AM; + else + NEXT_CMD_STATE <= T2_WR_LEADIN; + end if; + when T2_WR_AM => -- Write data address mark. + if DELAY = true then + NEXT_CMD_STATE <= T2_LOAD_SHFT; + else + NEXT_CMD_STATE <= T2_WR_AM; + end if; + when T2_LOAD_SHFT => + NEXT_CMD_STATE <= T2_WR_BYTE; + when T2_WR_BYTE => + if DELAY = true then + NEXT_CMD_STATE <= T2_VERIFY_DRQ_3; + else + NEXT_CMD_STATE <= T2_WR_BYTE; + end if; + when T2_VERIFY_DRQ_3 => + if DRQ_I = '0' then + NEXT_CMD_STATE <= T2_WRSTAT; + else + NEXT_CMD_STATE <= T2_DATALOST; + end if; + when T2_DATALOST => + if DELAY = true then + NEXT_CMD_STATE <= T2_WRSTAT; + else + NEXT_CMD_STATE <= T2_DATALOST; + end if; + when T2_WRSTAT => + if SECT_LEN = "00000000000" then + NEXT_CMD_STATE <= T2_WR_CRC; -- Write operation finished. + else + NEXT_CMD_STATE <= T2_LOAD_SHFT; + end if; + when T2_WR_CRC => + if DELAY = true then + NEXT_CMD_STATE <= T2_WR_FF; + else + NEXT_CMD_STATE <= T2_WR_CRC; + end if; + when T2_WR_FF => + if DELAY = true then + NEXT_CMD_STATE <= T2_MULTISECT; + else + NEXT_CMD_STATE <= T2_WR_FF; + end if; + -------------------------------------------------------------------- + ---------------- type3 write track command stuff ------------------- + -------------------------------------------------------------------- + when T3_WR => + if WPRTn = '0' then + NEXT_CMD_STATE <= IDLE; -- Break due to write protected disk. + else + NEXT_CMD_STATE <= T3_DELAY_B3; + end if; + when T3_DELAY_B3 => + if DELAY = true then + NEXT_CMD_STATE <= T3_VERIFY_DRQ; + else + NEXT_CMD_STATE <= T3_DELAY_B3; + end if; + when T3_VERIFY_DRQ => + if DRQ_I = '0' then + NEXT_CMD_STATE <= T3_CHECK_INDEX_1; + else + NEXT_CMD_STATE <= IDLE; -- Break due to lost data (no new data by host). + end if; + when T3_CHECK_INDEX_1 => + if IPn = '0' then + NEXT_CMD_STATE <= T3_LOAD_SHFT; + else + NEXT_CMD_STATE <= T3_CHECK_INDEX_1; + end if; + when T3_LOAD_SHFT => + NEXT_CMD_STATE <= T3_WR_DATA; + when T3_WR_DATA => + if DELAY = true then + NEXT_CMD_STATE <= T3_CHECK_INDEX_2; + else + NEXT_CMD_STATE <= T3_WR_DATA; + end if; + when T3_CHECK_INDEX_2 => + if INDEX_MARK = '1' then + NEXT_CMD_STATE <= IDLE; -- End of track reached. + elsif DRQ_I = '0' then -- New data has been loaded. + NEXT_CMD_STATE <= T3_LOAD_SHFT; -- Fetch new data. + else + NEXT_CMD_STATE <= T3_DATALOST; -- Fill in nullbyte. + end if; + when T3_DATALOST => + if DELAY = true then + NEXT_CMD_STATE <= T3_CHECK_INDEX_2; + else + NEXT_CMD_STATE <= T3_DATALOST; + end if; + -------------------------------------------------------------------- + --------------- type3 read track command stuff -------------------- + -------------------------------------------------------------------- + when T3_RD_TRACK => + -- wait for index pulse: + if IPn = '0' then + NEXT_CMD_STATE <= T3_SHIFT; + else + NEXT_CMD_STATE <= T3_RD_TRACK; + end if; + when T3_SHIFT => + if DELAY = true then + NEXT_CMD_STATE <= T3_CHECK_INDEX_3; + else + NEXT_CMD_STATE <= T3_SHIFT; + end if; + when T3_CHECK_INDEX_3 => + if INDEX_MARK = '1' then + NEXT_CMD_STATE <= IDLE; -- End of track reached. + else + NEXT_CMD_STATE <= T3_DETECT_AM; + end if; + when T3_DETECT_AM => -- Detect for ID address mark. + if ID_AM = '1' then + NEXT_CMD_STATE <= T3_CHECK_DR; + else + NEXT_CMD_STATE <= T3_CHECK_BYTE; + end if; + when T3_CHECK_BYTE => + if BYTE_RDY = true then + NEXT_CMD_STATE <= T3_CHECK_DR; + else + NEXT_CMD_STATE <= T3_SHIFT; + end if; + when T3_CHECK_DR => + NEXT_CMD_STATE <= T3_LOAD_DATA_1; + when T3_LOAD_DATA_1 => + NEXT_CMD_STATE <= T3_SET_DRQ_1; + when T3_SET_DRQ_1 => + NEXT_CMD_STATE <= T3_SHIFT; + -------------------------------------------------------------------- + ---------------- type3 read address command stuff ------------------ + -------------------------------------------------------------------- + when T3_RD_ADR => + -- check for 6 index holes + if INDEX_CNT = true then + NEXT_CMD_STATE <= IDLE; -- Break due to timeout. + else + NEXT_CMD_STATE <= T3_VERIFY_AM; + end if; + when T3_VERIFY_AM => -- Check for existing ID address mark + if ID_AM = '1' then + NEXT_CMD_STATE <= T3_SHIFT_ADR; + else + NEXT_CMD_STATE <= T3_RD_ADR; + end if; + when T3_SHIFT_ADR => + if DELAY = true then + NEXT_CMD_STATE <= T3_LOAD_DATA_2; + else + NEXT_CMD_STATE <= T3_SHIFT_ADR; + end if; + when T3_LOAD_DATA_2 => + NEXT_CMD_STATE <= T3_SET_DRQ_2; + when T3_SET_DRQ_2 => + NEXT_CMD_STATE <= T3_CHECK_RD; + when T3_CHECK_RD => + if T3_TRADR = true then + NEXT_CMD_STATE <= T3_LOAD_SR; + else + NEXT_CMD_STATE <= T3_SHIFT_ADR; + end if; + when T3_LOAD_SR => + NEXT_CMD_STATE <= T3_VERIFY_CRC; + when T3_VERIFY_CRC => + -- The CRC logic starts during T3_VERIFY_AM (missing clock transitions). + if DELAY = true then + NEXT_CMD_STATE <= IDLE; -- Operation finished (with or without CRC error). + else + NEXT_CMD_STATE <= T3_VERIFY_CRC; -- Wait until CRC logic is ready. + end if; + end case; + end process CMD_DECODER; + + P_DELAY: process(RESETn, CLK, CMD_STATE, T3_DATATYPE, DDEn, CMD) + -- This process is responsible to control the DELAY signal in the different command + -- states of the main state machine. These states finish, if the signal DELAY is + -- asserted. The condition for asserted DELAY is the correct number of data strobes + -- which are supervised by the DATA_STRB inputs. + -- Another condition is a time delay required in the following states: + -- In DELAY_15MS there is a delay of 30ms. + -- In T1_STEP_PULSE the delay is according to the CMD(1 downto 0) as follows: + -- "11" = 3ms, "10" = 2ms, "01" = 12ms, "00" = 6ms. + -- In T1_VERIFY_DELAY there is a delay of 30ms. + variable DELCNT : std_logic_vector(19 downto 0); + begin + if RESETn = '0' then + DELCNT := (others => '0'); + elsif CLK = '1' and CLK' event then + -- Reset the delay right after it occurs: + if DELAY = true then + DELCNT := (others => '0'); + elsif DATA_AM = '1' or DDATA_AM = '1' then -- Reset in command state T2_VERIFY_AM. + DELCNT := (others => '0'); + else + case CMD_STATE is + -- Time delays work on CLK edges. + when DELAY_15MS | T1_CHECK_DIR | T1_STEP_DELAY | T1_VERIFY_DELAY => + DELCNT := DELCNT + '1'; + -- Bit count delays work on data strobes. + -- Read from disk operation: + when T1_SCAN_TRACK | T1_SCAN_CRC | T1_VERIFY_CRC | T2_SCAN_TRACK | T2_SCAN_SECT | + T2_SCAN_LEN | T2_VERIFY_CRC_1 | T2_VERIFY_AM | T2_FIRSTBYTE | + T2_NEXTBYTE | T2_VERIFY_CRC_2 | T3_SHIFT | T3_SHIFT_ADR | T3_VERIFY_CRC => + if DATA_STRB = '1' then + DELCNT := DELCNT + '1'; + end if; + -- Write to disk operation: + when T2_DELAY_B2 | T2_DELAY_B8 | T2_WR_LEADIN | + T2_WR_AM | T2_DELAY_B1 |T2_DELAY_B11 | T2_WR_BYTE | T2_DATALOST | + T2_WR_CRC | T2_WR_FF | T3_DELAY_B3 | T3_WR_DATA | T3_DATALOST => + if DATA_STRB = '1' then + DELCNT := DELCNT + '1'; + end if; + when others => + DELCNT := (others => '0'); -- Clear the delay counter if not used. + end case; + end if; + end if; + + case CMD_STATE is + when DELAY_15MS | T1_VERIFY_DELAY => + case DELCNT is + --when x"75300" => DELAY <= true; -- 30ms + when x"3A980" => DELAY <= true; -- 15ms, thanks to L. Amsdon. + when others => DELAY <= false; + end case; + when T1_CHECK_DIR => + if DDEn = '1' and DELCNT = x"00300" then -- 48us in FM + DELAY <= true; + elsif DDEn = '0' and DELCNT = x"00180" then -- 24us in MFM. + DELAY <= true; + else + DELAY <= false; + end if; + when T1_STEP_DELAY => + if CMD(1 downto 0) = "11" and DELCNT >= x"0BB80" then -- 3ms + DELAY <= true; + elsif CMD(1 downto 0) = "10" and DELCNT >= x"07D00" then -- 2ms + DELAY <= true; + elsif CMD(1 downto 0) = "01" and DELCNT >= x"2EE00" then -- 12ms + DELAY <= true; + elsif CMD(1 downto 0) = "00" and DELCNT >= x"17700" then -- 6ms + DELAY <= true; + else + DELAY <= false; + end if; + when T1_SCAN_TRACK | T2_SCAN_TRACK | T2_SCAN_LEN | T2_FIRSTBYTE | T2_NEXTBYTE | + T2_WR_BYTE | T2_DATALOST | T2_WR_FF | T3_DATALOST | T3_SHIFT_ADR => + case DELCNT is + when x"00008" => DELAY <= true; -- The delay in this case is 8 bit times. + when others => DELAY <= false; + end case; + when T1_SCAN_CRC => + case DELCNT is + when x"00018" => DELAY <= true; -- Scan for 3 bytes. + when others => DELAY <= false; + end case; + when T2_WR_AM => + if DDEn = '1' and DELCNT = x"00008" then -- Wait for 8 address mark bits (FM mode). + DELAY <= true; + elsif DDEn = '0' and DELCNT = x"00020" then -- Wait for 32 sync and address mark bits (MFM mode). + DELAY <= true; + else + DELAY <= false; + end if; + when T2_VERIFY_AM => + if DDEn = '1' and DELCNT >= x"00148" then -- FM mode. + DELAY <= true; -- (11+6+1)+1 = 19 Byte Times, plus 10 Byte times uncertainty. + elsif DDEn = '0' and DELCNT >= x"00188" then -- MFM mode. + DELAY <= true; -- (22+12+3+1)+1 = 39 Byte Times, plus 10 Byte times uncertainty. + else + DELAY <= false; + end if; + when T2_WR_LEADIN => + if DDEn = '1' and DELCNT = x"00030" then -- Scan for 48 zero bits in FM mode. + DELAY <= true; + elsif DDEn = '0' and DELCNT = x"00060" then -- Scan for 96 zero bits in MFM mode. + DELAY <= true; + else + DELAY <= false; + end if; + when T2_DELAY_B1 => + case DELCNT is + when x"00008" => DELAY <= true; -- Delay is 1 byte. + when others => DELAY <= false; + end case; + when T3_DELAY_B3 => + case DELCNT is + when x"00018" => DELAY <= true; -- Delay is 3 bytes. + when others => DELAY <= false; + end case; + when T2_DELAY_B8 => + case DELCNT is + when x"00040" => DELAY <= true; -- Delay is 8 bytes. + when others => DELAY <= false; + end case; + when T2_DELAY_B11 => + case DELCNT is + when x"00058" => DELAY <= true; -- Delay is 11 bytes. + when others => DELAY <= false; + end case; + when T2_VERIFY_CRC_2 => + -- In this state the original WD1772 state machine causes the CRC data to appear 1 byte + -- too early. The reason is the construction of the states T2_LOAD_DATA and T2_NEXTBYTE + -- where the length counter and the DRQ flag are serviced in T2_LOAD_DATA. Therefore the + -- delay is only 1 byte instead of 2. + case DELCNT is + when x"00008" => DELAY <= true; -- Scan for 2 bytes but wait only 1 byte. + when others => DELAY <= false; + end case; + when T1_VERIFY_CRC | T2_SCAN_SECT | T2_VERIFY_CRC_1 | T2_DELAY_B2 | T2_WR_CRC | T3_VERIFY_CRC => + case DELCNT is + when x"00010" => DELAY <= true; -- Scan for 2 bytes (e. g. side and sector in T2_SCAN_SECT). + when others => DELAY <= false; + end case; + when T3_WR_DATA => + if T3_DATATYPE = x"F7" and DELCNT = x"00010" then -- Wait for 16 CRC bits. + DELAY <= true; + elsif T3_DATATYPE /= x"F7" and DELCNT = x"00008" then -- Wait for 8 data bits. + DELAY <= true; + else + DELAY <= false; + end if; + when T3_SHIFT => + case DELCNT is + when x"00001" => DELAY <= true; -- Scan just one data bit. + when others => DELAY <= false; + end case; + when others => + DELAY <= false; + end case; + end process P_DELAY; + + INDEX_COUNTER: process(RESETn, CLK, CMD_STATE) + -- This process is intended to control some command states via the index pulse behavior. + -- In the original WD177x there is foreseen a delay of several index pulses (about 1s). + -- It is achieved by counting the index pulses of the disk. This encounters problems, + -- if the disk is not inserted. For this reason there is additionally to the index counter + -- a timeout which is active if there are no index pulses. + variable CNT : std_logic_vector(3 downto 0); + variable TIMEOUT : std_logic_vector(27 downto 0); + variable LOCK : boolean; + begin + if RESETn = '0' then + CNT := x"0"; + TIMEOUT := (others => '0'); + LOCK := false; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + -- Be aware that there must sometimes checked several states for the presence of IPn! + when SPINUP | T1_SPINDOWN | T1_SCAN_TRACK | T1_SCAN_CRC | T1_VERIFY_CRC | + T2_INIT | T2_SCAN_TRACK | T2_SCAN_SECT |T2_SCAN_LEN | T2_VERIFY_CRC_1 | T3_RD_ADR | T3_VERIFY_AM => + if IPn = '0' and LOCK = false then -- Count the index pulses. + CNT := CNT + '1'; + LOCK := true; + elsif IPn = '1' then + LOCK := false; + end if; + -- + if TIMEOUT < x"17FFFFF" then -- Timeout of about 1.5s. + TIMEOUT := TIMEOUT + '1'; + end if; + when others => + CNT := x"0"; + TIMEOUT := (others => '0'); + end case; + end if; + -- + if CMD_STATE = SPINUP and (CNT = "110" or TIMEOUT = x"17FFFFF") then -- 6 pulses or timeout. + INDEX_CNT <= true; + elsif CMD_STATE = T1_SPINDOWN and (CNT = "110" or TIMEOUT = x"17FFFFF") then -- 6 pulses or timeout. + INDEX_CNT <= true; + elsif CMD_STATE = T2_INIT and (CNT = "101" or TIMEOUT = x"17FFFFF") then -- 5 pulses or timeout. + INDEX_CNT <= true; + elsif CMD_STATE = T3_RD_ADR and (CNT = "110" or TIMEOUT = x"17FFFFF") then -- 6 pulses or timeout. + INDEX_CNT <= true; + else + INDEX_CNT <= false; + end if; + end process INDEX_COUNTER; + + P_INDEX_MARK: process + -- This process controls the occurence of an index pulse during read track + -- and write track commands. The flag INDEX_MARK is cleared at the + -- beginning of these two commands during the first check for an index + -- pulse and is set right after the next index pulse occurs, which means + -- track processing has completed. + variable LOCK: boolean; + begin + wait until CLK = '1' and CLK' event; + if CMD_STATE = T3_RD_TRACK and IPn = '0' then + INDEX_MARK <= '0'; -- Reset the flag. + LOCK := true; + elsif CMD_STATE = T3_CHECK_INDEX_1 and IPn = '0' then + INDEX_MARK <= '0'; -- Reset the flag. + LOCK := true; + elsif IPn = '0' and LOCK = false then + INDEX_MARK <= '1'; -- Index pulse has passed. + LOCK := true; + elsif IPn = '1' then + LOCK := false; + end if; + end process P_INDEX_MARK; + + P_T3_DATATYPE: process(RESETn, CLK) + -- In type 3 write track command, it is necessary to store the information, which data + -- has to be written to disk (in command state T3_WR_DATA. This information is sampled + -- in the command state T3_LOAD_SHFT which preceeds the command state T3_WR_DATA. + begin + if RESETn = '0' then + T3_DATATYPE <= x"00"; + elsif CLK = '1' and CLK' event then + if CMD_STATE = T3_LOAD_SHFT then + T3_DATATYPE <= DR; + end if; + end if; + end process P_T3_DATATYPE; + + CNT_T3BYTES: process(RESETn, CLK, CMD_STATE) + -- This process counts the bytes read in the type III read address + -- command during the command states T3_SHIFT_ADR, T3_LOAD_DATA2, + -- T3_SET_DRQ_2 and T3_CHECK_RD. + variable CNT : std_logic_vector(2 downto 0); + begin + if RESETn = '0' then + CNT := "000"; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when T3_VERIFY_AM => + CNT := "000"; -- Clear the counter right befor the count operation. + when T3_SET_DRQ_2 => + CNT := CNT + '1'; -- Increment after each read cycle. + when others => + null; + end case; + end if; + case CNT is + when "100" => T3_TRADR <= true; + when others => T3_TRADR <= false; + end case; + end process CNT_T3BYTES; + + BYTEASMBLY: process(RESETn, CLK) + -- This process controls the condition in the CMD_STATE T3_CHECK_DR. + -- Therefore the bits shifted into the DSR in command state T3_SHIFT are counted. + -- The count condition is entering the command state T3_CHECK_INDEX_3. The clear + -- condition is either the command state IDLE or the command state T3_CHECK_DR. + variable CNT : std_logic_vector(3 downto 0); + begin + if RESETn = '0' then + CNT := x"0"; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when IDLE => CNT := x"0"; + when T3_CHECK_INDEX_3 => CNT := CNT + '1'; + when T3_CHECK_DR => CNT := (others => '0'); + when others => null; + end case; + end if; + case CNT is + when x"8" => BYTE_RDY <= true; + when others => BYTE_RDY <= false; + end case; + end process BYTEASMBLY; + + P_DIR: process(RESETn, CLK, DIR) + -- This portion of code is responsible to control the right stepping + -- direction in type I commands. + begin + if RESETn = '0' then + DIR <= '0'; + elsif CLK = '1' and CLK' event then + if CMD_STATE = DECODE and CMD(7 downto 5) = "010" then -- Step in. + DIR <= '1'; + elsif CMD_STATE = DECODE and CMD(7 downto 5) = "011" then -- Step out. + DIR <= '0'; + elsif CMD_STATE = T1_COMP_TR_DSR and DSR > TR then -- Seek. + DIR <= '1'; + elsif CMD_STATE = T1_COMP_TR_DSR and DSR < TR then -- Seek. + DIR <= '0'; + end if; + end if; + DIRC <= DIR; -- Copy signal to the output. + end process P_DIR; + + P_DRQ: process(RESETn, CLK, DRQ_I) + begin + if RESETn = '0' then + DRQ_I <= '0'; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when INIT => + DRQ_I <= '0'; + when T2_LOAD_DATA | T2_SET_DRQ | T2_LOAD_SHFT => + DRQ_I <= '1'; + when T3_WR | T3_LOAD_SHFT | T3_SET_DRQ_1 | T3_SET_DRQ_2 => + DRQ_I <= '1'; + when others => + null; + end case; + -- The data request bit is also cleared by reading or writing the + -- data register (direct memory access operation). + if (DATA_RD = true or DATA_WR = true) then + DRQ_I <= '0'; + end if; + end if; + -- + DRQ <= DRQ_I; -- Copy to entity. + -- + end process P_DRQ; + + -- The DRQ_IPn detects the index pulse during type I commands and a forced interrupt or + -- DRQ during type II and III commands. + -- The index pulse flag is active high and can be used for the detection of an inserted disk. + DRQ_IPn <= not IPn when CMD(7) = '0' else + not IPn when CMD(7 downto 4) = x"D" and BUSY = '0' else DRQ_I; + + P_BUSY: process(RESETn, CLK) + begin + if RESETn = '0' then + BUSY <= '0'; + elsif CLK = '1' and CLK' event then + -- During forced interrupt, the busy flag is reset when the command + -- state machine enters the IDLE state. + if CMD_STATE = INIT then + BUSY <= '1'; -- set BUSY flag for all command types I ... III. + elsif CMD_STATE = IDLE then + BUSY <= '0'; -- Reset BUSY after entering IDLE in any case. + end if; + end if; + end process P_BUSY; + + P_SEEK_RNF: process(RESETn, CLK) + -- Seek error or record not found error flag. + begin + if RESETn = '0' then + SEEK_RNF <= '0'; + elsif CLK = '1' and CLK' event then + if CMD_STATE = INIT then + SEEK_RNF <= '0'; -- Clear the flag for all command types I ... III. + elsif CMD_STATE = T1_TRAP and STEP_TRAP = true then + SEEK_RNF <= '1'; -- Seek error (SEEK). + elsif CMD_STATE = T1_SPINDOWN and INDEX_CNT = true then + SEEK_RNF <= '1'; -- Seek error (SEEK). + elsif CMD_STATE = T2_INIT and INDEX_CNT = true then + SEEK_RNF <= '1'; -- Record not found (RNF). + elsif CMD_STATE = T3_RD_ADR and INDEX_CNT = true then + SEEK_RNF <= '1'; -- Record not found (RNF). + end if; + end if; + end process P_SEEK_RNF; + + P_INTRQ: process(RESETn, CLK) + begin + if RESETn = '0' then + INTRQ <= '0'; + elsif CLK = '1' and CLK' event then + -- Interrupt reset conditions: + if STAT_RD = true and CMD /= x"D8" then + -- No clear during immediately forced interrupt. + INTRQ <= '0'; -- Clear the flag when status register is read. + elsif CMD_WR = true and CMD = x"D0" then + -- Clear with the next write access to the command register after the + -- forced interrupt x"D0" was written. + INTRQ <= '0'; + elsif CMD_STATE = INIT and CMD(7 downto 6) /= "11" then + INTRQ <= '0'; -- Clear the flag for type I and type II commands during start of execution. + -- Interrupt set conditions. + elsif CMD = x"D8" and CMD_STATE = IDLE then + INTRQ <= '1'; -- Force interrupt immediately (after the break took affect). + elsif CMD = x"D4" and IPn = '0' and CMD_STATE = IDLE then + INTRQ <= '1'; -- Force interrupt on next index pulse (after the break took affect). + elsif CMD_STATE = T1_TRAP and STEP_TRAP = true then + INTRQ <= '1'; -- Indicate interrupt request due to seek error. + elsif CMD_STATE = T1_VERIFY_DELAY and CMD(2) = '0' then + INTRQ <= '1'; -- Indicate interrupt: command finished or interrupted. + elsif CMD_STATE = T1_SPINDOWN and INDEX_CNT = true then + INTRQ <= '1'; -- Indicate interrupt request, reason: seek error. + elsif CMD_STATE = T1_VERIFY_CRC and CRC_ERR = '0' then + INTRQ <= '1'; -- Indicate interrupt request; command correct, no CRC error. + elsif CMD_STATE = T2_RD_WR_SECT and CMD(7 downto 5) = "101" and WPRTn = '0' then + INTRQ <= '1'; -- Indicate interrupt request because disk is write protected. + elsif CMD_STATE = T2_INIT and INDEX_CNT = true then + INTRQ <= '1'; -- Indicate interrupt request, reason: timeout. + elsif CMD_STATE = T2_VERIFY_CRC_2 and DELAY = true and CRC_ERR = '1' then + INTRQ <= '1'; -- Indicate interrupt request due to CRC error. + elsif CMD_STATE = T2_MULTISECT and CMD(4) = '0' then + INTRQ <= '1'; -- Indicate interrupt request, command correct finished. + elsif CMD_STATE = T2_VERIFY_DRQ_2 and DRQ_I = '1' then + INTRQ <= '1'; -- Indicate interrupt request, reason: lost data. + elsif CMD_STATE = T3_WR and WPRTn = '0' then + INTRQ <= '1'; -- Indicate interrupt request, reason: disk is write protected. + elsif CMD_STATE = T3_VERIFY_DRQ and DRQ_I = '1' then + INTRQ <= '1'; -- Indicate interrupt request due to lost data. + elsif CMD_STATE = T3_CHECK_INDEX_2 and INDEX_MARK = '1' then + INTRQ <= '1'; -- Indicate interrupt request, reason: command finished correctly. + elsif CMD_STATE = T3_CHECK_INDEX_3 and INDEX_MARK = '1' then + INTRQ <= '1'; -- Indicate interrupt request, reason: command finished correctly. + elsif CMD_STATE = T3_RD_ADR and INDEX_CNT = true then + INTRQ <= '1'; -- Indicate interrupt request because record was not found. + elsif CMD_STATE = T3_VERIFY_CRC then + INTRQ <= '1'; -- Indicate interrupt request; command finished with or without CRC error. + end if; + end if; + end process P_INTRQ; + + P_LOST_DATA_TR00: process(RESETn, CLK) + -- Logic for the status bit number 2: + -- The TRACK00 flag is used to detect wether a floppy disk drive + -- is connected or not. + begin + if RESETn = '0' then + LOST_DATA_TR00 <= '0'; + elsif CLK = '1' and CLK' event then + if CMD(7 downto 4) = x"D" and BUSY = '0' then -- Forced interrupt. + LOST_DATA_TR00 <= not TRACK00n; + elsif CMD_STATE = INIT then + LOST_DATA_TR00 <= '0'; + elsif CMD_STATE = T1_VERIFY_DELAY then + LOST_DATA_TR00 <= not TRACK00n; + elsif CMD_STATE = T2_VERIFY_DRQ_1 and DRQ_I = '1' then + LOST_DATA_TR00 <= '1'; + elsif CMD_STATE = T2_VERIFY_DRQ_2 and DRQ_I = '1' then + LOST_DATA_TR00 <= '1'; + elsif CMD_STATE = T2_VERIFY_DRQ_3 and DRQ_I = '1' then + LOST_DATA_TR00 <= '1'; + elsif CMD_STATE = T3_VERIFY_DRQ and DRQ_I = '1' then + LOST_DATA_TR00 <= '1'; + elsif CMD_STATE = T3_DATALOST then + LOST_DATA_TR00 <= '1'; + elsif CMD_STATE = T3_CHECK_DR and DRQ_I = '1' then + LOST_DATA_TR00 <= '1'; + end if; + end if; + end process P_LOST_DATA_TR00; + + MOTORSWITCH: process(RESETn, CLK) + variable INDEXCNT : std_logic_vector(3 downto 0); + variable LOCK : boolean; + begin + if RESETn = '0' then + MO <= '0'; + INDEXCNT := x"0"; + LOCK := false; + elsif CLK = '1' and CLK' event then + if CMD_STATE /= IDLE then + INDEXCNT := x"9"; -- Initialise the index counter. + LOCK := false; + elsif LOCK = false and IPn = '0' and INDEXCNT > x"0" then + INDEXCNT := INDEXCNT - '1'; -- Count the index pulses in the IDLE state. + LOCK := true; + elsif IPn = '1' then + LOCK := false; + end if; + -- + if CMD_STATE = INIT and CMD_WR = false then + MO <= '1'; -- Start the motor for all command types I ... III in this state. + elsif INDEXCNT = x"0" then + MO <= '0'; -- The motor stops after 9 index pulses in idle state. + end if; + end if; + end process MOTORSWITCH; + + WRITE_PROTECT: process(RESETn, CLK) + begin + if RESETn = '0' then + WR_PR <= '0'; + elsif CLK = '1' and CLK' event then + if CMD_STATE = INIT and CMD(7) = '1' then + WR_PR <= '0'; -- Clear the flag for type II and type III commands. + elsif CMD_STATE = T2_RD_WR_SECT and WPRTn = '0' then + WR_PR <= '1'; + elsif CMD_STATE = T3_WR and WPRTn = '0' then + WR_PR <= '1'; + end if; + end if; + end process WRITE_PROTECT; + + RECTYPE_SPINUP: process(RESETn, CLK) + begin + if RESETn = '0' then + SPINUP_RECTYPE <= '0'; + elsif CLK = '1' and CLK' event then + if CMD_STATE = INIT then + SPINUP_RECTYPE <= '0'; -- Clear the flag for type II...III commands. + elsif CMD_STATE = SPINUP and CMD(7) = '0' and INDEX_CNT = true then + SPINUP_RECTYPE <= '1'; -- SPINUP SEQUENCE for type I commands has finished. + elsif CMD_STATE = T2_VERIFY_AM and (DATA_AM = '1' or DDATA_AM = '1') then + case DSR is + when x"F8" => SPINUP_RECTYPE <= '1'; -- Deleted data address mark. + when x"FB" => SPINUP_RECTYPE <= '0'; -- Normal data address mark. + when others => null; -- Forbidden, should never appear. + end case; + end if; + end if; + end process RECTYPE_SPINUP; + + WRITEGATE: process(RESETn, CLK) + begin + if RESETn = '0' then + WG <= '0'; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when T2_WR_LEADIN | T3_LOAD_SHFT => + WG <= '1'; + when T2_MULTISECT | IDLE => + WG <= '0'; + when others => + null; + end case; + end if; + end process WRITEGATE; + + RESTORE_TRAP: process(RESETn, CLK) + -- This process is responsible to supervise the RESTORE command. + -- If after 255 stepping pulses no TRACK00n was not detected, the + -- RESTORE command is terminated and the interrupt request and the + -- seek error are set. + variable STEP_CNT : std_logic_vector(7 downto 0); + begin + if RESETn = '0' then + STEP_CNT := (others => '0'); + elsif CLK = '1' and CLK' event then + if CMD_STATE = IDLE then + STEP_CNT := x"00"; + elsif CMD(7 downto 4) /= "0000" then -- No RESTORE command. + STEP_CNT := x"00"; + elsif CMD_STATE = T1_STEP and STEP_CNT < x"FF" then + STEP_CNT := STEP_CNT + '1'; + end if; + end if; + -- + case STEP_CNT is + when x"FF" => STEP_TRAP <= true; + when others => STEP_TRAP <= false; + end case; + end process RESTORE_TRAP; + + STEPPULSE: process(RESETn, CLK) + -- The step pulse duration is in the original WD1772 4us in MFM mode and 8 us. + -- in FM mode This process is responsible to provide the correct pulse lengths. + variable CNT : std_logic_vector(7 downto 0); + begin + if RESETn = '0' then + CNT := (others => '0'); + elsif CLK = '1' and CLK' event then + if CMD_STATE = T1_STEP then + case DDEn is + when '1' => CNT := x"80"; --Start counter for FM step pulse. + when '0' => CNT := x"40"; --Start counter for MFM step pulse. + end case; + elsif CNT > x"00" then + CNT := CNT -1; -- Count 63 or 127 CLK cycles ... + end if; + case CNT is + when x"00" => STEP <= '0'; + when others => STEP <= '1'; --...result in 3.875us or 7.75us pulse. + end case; + end if; + end process STEPPULSE; + + TRACK_MEM: process(RESETn, CLK, TRACKMEM) + -- This process is necessary to store the actual track number in the + -- type III command 'read address' because the track number is written + -- to the sector register some byte times after the detection of the + -- track number from disk. + begin + if RESETn = '0' then + TRACKMEM <= x"00"; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when IDLE => + TRACKMEM <= x"00"; -- Clear the Track memory. + when T3_LOAD_DATA_2 => + TRACKMEM <= DSR; -- Store the actual track number. + when others => + null; + end case; + end if; + TRACK_NR <= TRACKMEM; -- Output the TRACKMEM. + end process TRACK_MEM; + + SECT_LENGTH: process(RESETn, CLK, SECT_LEN) + -- This process supervises the read sector and write sector + -- commands. If the sector read or write are equal to the + -- sector length, the commands read sector and write sector + -- are ready. + begin + if RESETn = '0' then + SECT_LEN <= "00000000000"; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when T2_SCAN_LEN => + -- Bring in the correct sector length. + case DSR(1 downto 0) is + when "00" => SECT_LEN <= "00010000000"; -- 128 Byte per sector. + when "01" => SECT_LEN <= "00100000000"; -- 256 Byte per sector. + when "10" => SECT_LEN <= "01000000000"; -- 512 Byte per sector. + when "11" => SECT_LEN <= "10000000000"; -- 1024 Byte per sector. + when others => SECT_LEN <= "10000000000"; -- Dummy for U, X, Z, W, H, L, -. + end case; + when T2_LOAD_DATA | T2_LOAD_SHFT => + SECT_LEN <= SECT_LEN - '1'; + when others => + null; + end case; + end if; + end process SECT_LENGTH; + + P_CRC_ERR: process(RESETn, CLK) + -- This code checks the CRC status in the right command states + -- and sets or resets the CRC error status flag. + begin + if RESETn = '0' then + CRC_ERRFLAG <= '0'; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when INIT => + if CMD(7) = '0' then + CRC_ERRFLAG <= '0'; -- Reset for type I commands only. + end if; + when T1_VERIFY_CRC | T2_VERIFY_CRC_1 => + if CRC_ERR = '1' and DELAY = true then + CRC_ERRFLAG <= '1'; -- Set CRC error flag... + elsif CRC_ERR = '0' and DELAY = true then + CRC_ERRFLAG <= '0'; -- ... or reset CRC error flag. + end if; + when T2_VERIFY_CRC_2 | T3_VERIFY_CRC => + if CRC_ERR = '1' and DELAY = true then + -- Set CRC error flag but no reset in here. + -- The CRC is already reset by the previous checks. + CRC_ERRFLAG <= '1'; + end if; + when others => + null; + end case; + end if; + end process P_CRC_ERR; + + CMD_WR <= true when CSn = '0' and A1 = '0' and A0 = '0' and RWn = '0' else false; -- Command register write. + STAT_RD <= true when CSn = '0' and A1 = '0' and A0 = '0' and RWn = '1' else false; -- Status register read. + DATA_WR <= true when CSn = '0' and A1 = '1' and A0 = '1' and RWn = '0' else false; -- Data register write. + DATA_RD <= true when CSn = '0' and A1 = '1' and A0 = '1' and RWn = '1' else false; -- Data register read. + + -- Track register arithmetics controls: + TR_PRES <= '1' when CMD_STATE = T1_SEEK_RESTORE and CMD(7 downto 4) = "0000" else '0'; -- Restore command. + TR_CLR <= '1' when CMD_STATE = T1_HEAD_CTRL and TRACK00n = '0' and DIR = '0' else '0'; + TR_INC <= '1' when CMD_STATE = T1_CHECK_DIR and DELAY = true and DIR = '1' else '0'; + TR_DEC <= '1' when CMD_STATE = T1_CHECK_DIR and DELAY = true and DIR = '0' else '0'; + + -- Sector register arithmetics: + SR_INC <= '1' when CMD_STATE = T2_MULTISECT and CMD(4) = '1' else '0'; -- Multi sector enabled. + SR_LOAD <= '1' when CMD_STATE = T3_LOAD_SR else '0'; + + -- Data register arithmetics controls: + DR_CLR <= '1' when CMD_STATE = T1_SEEK_RESTORE and CMD(7 downto 4) = "0000" else '0'; -- Restore command. + DR_LOAD <= '1' when CMD_STATE = T2_LOAD_DATA else + '1' when CMD_STATE = T3_LOAD_DATA_1 else + '1' when CMD_STATE = T3_LOAD_DATA_2 else '0'; + + -- Shift register arithmetics controls: + -- During type I and type II commands all characters are allowed as data. + -- During the type III write track command, there are some special characters + -- which may not appear as normal data. See the register file for more information. + SHFT_LOAD_SD <= '1' when CMD_STATE = T3_LOAD_SHFT else '0'; -- Special data. + SHFT_LOAD_ND <= '1' when CMD_STATE = T1_LOAD_SHFT else + '1' when CMD_STATE = T2_LOAD_SHFT else '0'; -- Normal data. + + P_CRC_PRES: process(RESETn, CLK) + -- CRC preset during write sector and write track commands. + variable LOCK : boolean; + begin + if RESETn = '0' then + CRC_PRES <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + -- In write track command, the CRC is initialised at the beginning of the + -- first A1 data and released during shifting the CRC out. + if CMD_STATE = T2_WR_AM and LOCK = false then + CRC_PRES <= '1'; -- Write sector command. + LOCK := true; + elsif CMD_STATE = T3_LOAD_SHFT and DR = x"F5" and LOCK = false then -- x"F5" means write A1. + CRC_PRES <= '1'; -- Write track command. + LOCK := true; + elsif CMD_STATE = T2_WR_CRC then + CRC_PRES <= '0'; -- Write sector command. + LOCK := false; + elsif CMD_STATE = T3_LOAD_SHFT and DR = x"F7" then + CRC_PRES <= '0'; -- Write track command. + LOCK := false; + else + CRC_PRES <= '0'; + end if; + end if; + end process P_CRC_PRES; + + -- Write control signals: + AM_2_DISK <= '1' when CMD_STATE = T2_WR_AM else '0'; + FF_2_DISK <= '1' when CMD_STATE = T2_WR_FF else '0'; + DSR_2_DISK <= '1' when CMD_STATE = T2_WR_BYTE else + '1' when CMD_STATE = T3_WR_DATA and T3_DATATYPE /= x"F7" else '0'; -- not during CRC. + CRC_2_DISK <= '1' when CMD_STATE = T2_WR_CRC else + '1' when CMD_STATE = T3_WR_DATA and T3_DATATYPE = x"F7" else '0'; + + -- Write precompensation control: + PRECOMP_EN <= '1' when CMD(7 downto 4) = x"A" and CMD(1) = '0' else -- Write single sector. + '1' when CMD(7 downto 4) = x"B" and CMD(1) = '0' else -- Write multiple sector. + '1' when CMD(7 downto 4) = x"F" and CMD(1) = '0' else '0'; -- Write track. + + -- Disk data flow direction: + DISK_RWn <= -- Write sector command: + '0' when CMD_STATE = T2_WR_LEADIN else + '0' when CMD_STATE = T2_WR_AM else + '0' when CMD_STATE = T2_LOAD_SHFT else + '0' when CMD_STATE = T2_WR_BYTE else + '0' when CMD_STATE = T2_VERIFY_DRQ_3 else + '0' when CMD_STATE = T2_DATALOST else + '0' when CMD_STATE = T2_WRSTAT else + '0' when CMD_STATE = T2_WR_CRC else + '0' when CMD_STATE = T2_WR_FF else + -- Write track command: + '0' when CMD_STATE = T3_LOAD_SHFT else + '0' when CMD_STATE = T3_WR_DATA else + '0' when CMD_STATE = T3_CHECK_INDEX_2 else + '0' when CMD_STATE = T3_DATALOST else '1'; +end BEHAVIOR; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd new file mode 100644 index 0000000..54b2060 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd @@ -0,0 +1,162 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- The CRC cyclic redundancy checker unit. Further description ---- +---- see below. ---- +---- ---- +---- Working principle of the CRC generator and verify unit: ---- +---- During read operation: ---- +---- The CRC generator is switched on via after the detection of ---- +---- the address ID of the data ID mark. The CRC generation last ---- +---- in case of the address ID until the lenght byte is read. ---- +---- In case of generation after the data address mark the CRC ---- +---- generator is activated until the last data byte is read. ---- +---- The number of data bytes to be read depends on the LENGHT ---- +---- information in the header file. After generation of the CRC ---- +---- the CRC_GEN is switched off and the VERIFY procedure begins ---- +---- by activating CRC_VERIFY. The previously generated CRC is ---- +---- then compared (serially) with the two consecutive read CRC ---- +---- bytes. The CRC error appeas, when the comparision fails. ---- +---- During write operation: ---- +---- The CRC generator is switched on via after the detection of ---- +---- the address ID of the data ID mark. The CRC generation last ---- +---- in case of the address ID until the lenght byte is read. ---- +---- In case of generation after the data address mark the CRC ---- +---- generator is activated until the last data byte is read. ---- +---- The number of data bytes to be read depends on the LENGHT ---- +---- information in the header file. After the generation of the ---- +---- two CRC bytes, the write out process begins by activating ---- +---- CRC_SHFTOUT. The CRC data appears in this case serially on ---- +---- the CRC_SDOUT. ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- CRC_SHIFT has now synchronous reset to meeet preset behaviour. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_CRC_LOGIC is + port( + -- System control + CLK : in bit; + RESETn : in bit; + DISK_RWn : in bit; + + -- Preset controls: + DDEn : in bit; + ID_AM : in bit; + DATA_AM : in Bit; + DDATA_AM : in Bit; + + -- CRC unit: + SD : in bit; -- Serial data input. + CRC_STRB : in bit; -- Data strobe. + CRC_2_DISK : in bit; -- Forces the unit to flush the CRC remainder. + CRC_PRES : in bit; -- Presets the CRC unit during write to disk. + CRC_SDOUT : out bit; -- Serial data output. + CRC_ERR : out bit -- Indicates CRC error. + ); +end WF1772IP_CRC_LOGIC; + +architecture BEHAVIOR of WF1772IP_CRC_LOGIC is +signal CRC_SHIFT : bit_vector(15 downto 0); +begin + P_CRC: process + -- The shift register is initialised with appropriate values in HD or DD mode. + -- In theory the shift register should be preset to ones. Due to a latency of one byte + -- in FM mode or 4 bytes in MFM mode it is necessary to preset the shift register with + -- the CRC values of this ID address mark, data address mark and the A1 sync bytes. The + -- latency is caused by the addressmark detector which needs one or 4 byte time(s) for + -- detection. The CRC unit therefore starts with every detection of an address mark and + -- ends if the CRC unit is flushed. + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + CRC_SHIFT <= (others => '1'); + elsif CRC_2_DISK = '1' then + if CRC_STRB = '1' then + CRC_SHIFT <= CRC_SHIFT(14 downto 0) & '0'; + end if; + elsif CRC_PRES = '1' then -- Preset during write sector or write track command. + CRC_SHIFT <= x"FFFF"; + elsif DDEn = '1' and ID_AM = '1' then -- DD mode and ID address mark detected. + CRC_SHIFT <= x"EF21"; -- The CRC-CCITT for data x"FE" is x"EF21" + elsif DDEn = '1' and DATA_AM = '1' then -- DD mode and data address mark detected. + CRC_SHIFT <= x"BF84"; -- The CRC-CCITT for data x"FB" is x"BF84" + elsif DDEn = '1' and DDATA_AM = '1' then -- DD mode and deleted data address mark detected. + CRC_SHIFT <= x"8FE7"; -- The CRC-CCITT for data x"F8" is x"8FE7" + elsif DDEn = '0' and ID_AM = '1' then -- HD mode and ID address mark detected. + CRC_SHIFT <= x"B230"; -- The CRC-CCITT for data x"A1A1A1FE" is x"B230" + elsif DDEn = '0' and DATA_AM = '1' then -- HD mode and data address mark detected. + CRC_SHIFT <= x"E295"; -- The CRC-CCITT for data x"A1A1A1FB" is x"E295" + elsif DDEn = '0' and DDATA_AM = '1' then -- HD mode and deleted data address mark detected. + CRC_SHIFT <= x"D2F6"; -- The CRC-CCITT for data x"A1A1A1F8" is x"D2F6" + elsif CRC_STRB = '1' then + -- CRC-CCITT (xFFFF): + -- the polynomial is G(x) = x^16 + x^12 + x^5 + 1 + -- In this mode the CRC is encoded. In read from disk mode, the encoding works as CRC + -- verification. In this operating condition the ID or the data field is compared + -- against the CRC checksum. if there are no errors, the shift register's value is + -- x"0000" after the last bit of the checksum is shifted in. In write to disk mode the + -- CRC linear feedback shift register (lfsr) works to generate the CRC remainder of the + -- ID or data field. + CRC_SHIFT <= CRC_SHIFT(14 downto 12) & (CRC_SHIFT(15) xor CRC_SHIFT(11) xor SD) & + CRC_SHIFT(10 downto 5) & (CRC_SHIFT(15) xor CRC_SHIFT(4) xor SD) & + CRC_SHIFT(3 downto 0) & (CRC_SHIFT(15) xor SD); + end if; + end process P_CRC; + + CRC_SDOUT <= CRC_SHIFT(15); + CRC_ERR <= '0' when CRC_SHIFT = x"0000" else '1'; +end architecture BEHAVIOR; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd new file mode 100644 index 0000000..95ce08c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd @@ -0,0 +1,426 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- The digital PLL is responsible to detect the incoming serial ---- +---- data stream and provide a system clock synchronous signal ---- +---- containing the data and clock information. ---- +---- To understand how the code works in detail refer to the free ---- +---- US patent no. 4,780,844. ---- +---- ---- +---- Attention: The settings for TOP and BOTTOM, which control ---- +---- the PLL frequency and for PHASE_CORR which control the PLL ---- +---- phase are rather critical for a good read condition! To test ---- +---- the PLL in the WD1772 compatible core do the following: ---- +---- Sample on an oscilloscope on one channel the falling edge of ---- +---- the RDn pulse and on the other channel the PLL_DSTRB. The ---- +---- RDn must be located exactly between the PLL_DSTRB pulses. ---- +---- Otherwise, the parameters TOP, BOTTOM and PHASE_CORR have to ---- +---- be optimized. ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release: the MFM portion for HD and DD floppies is tested. +-- The FM mode (DDEn = '1') is not completely tested due to lack of FM +-- drives. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K7B 2006/12/29 WF +-- Introduced several improvements based on a very good examination +-- of the pll code by Jean Louis-Guerin. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K8B 2008/12/24 WF +-- Improvement of the INPORT process. +-- Bugfix of the FREQ_AMOUNT counter: now stops if its value is zero. +-- Several changes concerning the PLL parameters to improve the +-- stability of the PLL. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_DIGITAL_PLL is + generic( + -- The valid range of the period counter of the PLL is given by the TOP and BOTTOM + -- limits. The counter range is therefore BOTTOM <= counter value <= TOP. + -- The generic PHASE_CORR is responsible fo the center setting of PLL_DSTRB concerning + -- the RDn period. + -- The nominal frequency setting is 128. So it is recommended to use TOP and BOTTOM + -- settings symmetrically around 128. If TOP = BOTTOM = 128, the frequency control + -- is disabled. TOP + PHASE_CORR may not exceed a value of 255. BOTTOM - PHASE_CORR + -- may not drop below zero. + TOP : integer range 0 to 255 := 152; -- +18.0% + BOTTOM : integer range 0 to 255 := 104; -- -18.0% + PHASE_CORR : integer range 0 to 128 := 75 + ); + port( + -- System control + CLK : in bit; -- 16MHz clock. + RESETn : in bit; + + -- Controls + DDEn : in bit; -- Double density enable. + HDTYPE : in bit; -- This control is '1' when HD disks are inserted. + DISK_RWn : in bit; -- Read write control. + + -- Data and clock lines + RDn : in bit; -- Read signal from the disk. + PLL_D : out bit; -- Synchronous read signal. + PLL_DSTRB : out bit -- Read strobe. + ); +end WF1772IP_DIGITAL_PLL; + +architecture BEHAVIOR of WF1772IP_DIGITAL_PLL is +signal RD_In : bit; +signal UP, DOWN : bit; +signal PHASE_DECREASE : bit; +signal PHASE_INCREASE : bit; +signal HI_STOP, LOW_STOP : bit; +signal PER_CNT : std_logic_vector(7 downto 0); +signal ADDER_IN : std_logic_vector(7 downto 0); +signal ADDER_MSBs : bit_vector(2 downto 0); +signal RD_PULSE : bit; +signal ROLL_OVER : bit; +signal HISTORY_REG : bit_vector(1 downto 0); +signal ERROR_HISTORY : integer range 0 to 2; +begin + INPORT: process + -- This process is necessary due to the poor quality of the rising + -- edge of RDn. Let it work on the negative clock edge. + begin + wait until CLK = '0' and CLK' event; + RD_In <= RDn; + end process INPORT; + + EDGEDETECT: process(RESETn, CLK) + -- This process forms a falling edge detector for the incoming + -- data read port. The output (RD_PULSE) goes high for exactly + -- one clock period after the RDn is low and the positive + -- clock edge is detected. + variable LOCK : boolean; + begin + if RESETn = '0' then + RD_PULSE <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + if DISK_RWn = '0' then -- Disable detector in write mode. + RD_PULSE <= '0'; + elsif RD_In = '0' and LOCK = false then + RD_PULSE <= '1'; -- READ_PULSE is inverted against RDn + LOCK := true; + elsif RD_In = '1' then + LOCK := false; + RD_PULSE <= '0'; + else + RD_PULSE <= '0'; + end if; + end if; + end process EDGEDETECT; + + PERIOD_CNT: process(RESETn, CLK) + -- This process provides the nominal variable added to the adder. To achieve a good + -- settling time of the PLL in all cases, the period counter is controlled via the DDEn + -- and HDTYPE flags respective to its added value. Be aware, that in case of adding "10" + -- or "11", the TOP value may be exceeded or the period counter may drop below the BOTTOM + -- value. The higher the value added, the faster will be the settling time of phase locked + -- loop . + begin + if RESETn = '0' then + PER_CNT <= "10000000"; -- Initial value is 128. + elsif CLK = '1' and CLK' event then + if UP = '1' then + PER_CNT <= PER_CNT + '1'; + elsif DOWN = '1' then + PER_CNT <= PER_CNT - '1'; + end if; + end if; + end process PERIOD_CNT; + + HI_STOP <= '1' when PER_CNT >= TOP else '0'; + LOW_STOP <= '1' when PER_CNT <= BOTTOM else '0'; + + ADDER_IN <= -- This DISK_RWn = '0' implementation keeps the last phase information + -- of the PLL in read from disk mode. It should be a good solution concer- + -- ning alternative read write cycles. + "10000000" when DISK_RWn = '0' else -- Nominal value for write to disk. + PER_CNT + PHASE_CORR when PHASE_INCREASE = '1' else -- Phase lags. + PER_CNT - PHASE_CORR when PHASE_DECREASE = '1' else -- Phase leeds. + PER_CNT; -- No phase correction; + + ADDER: process(RESETn, CLK, DDEn, HDTYPE) + -- Clock adjustment: The clock cycle is 62.5ns for the 16MHz system clock. + -- The offset (LSBs) of the adder input is chosen to be conform with the required + -- rollover period in the different DDEn and HDTYPE modi as follows: + -- With a nominal adder input term of 128: + -- The adder rolls over every 4us for DDEn = 1 and HDTYPE = 0. + -- The adder rolls over every 2us for DDEn = 1 and HDTYPE = 1. + -- The adder rolls over every 2us for DDEn = 0 and HDTYPE = 0. + -- The adder rolls over every 1us for DDEn = 0 and HDTYPE = 1. + -- The given times are the half of a data period time in MFM or FM. + variable ADDER_DATA : std_logic_vector(12 downto 0); + begin + if RESETn = '0' then + ADDER_DATA := (others => '0'); + elsif CLK = '1' and CLK' event then + ADDER_DATA := ADDER_DATA + ADDER_IN; + end if; + -- + case DDEn & HDTYPE is + when "01" => -- MFM mode using HD disks, results in 1us inspection period: + ADDER_MSBs <= To_BitVector(ADDER_DATA(10 downto 8)); + when "00" => -- MFM mode using DD disks, results in 2us inspection period: + ADDER_MSBs <= To_BitVector(ADDER_DATA(11 downto 9)); + when "11" => -- FM mode using HD disks, results in 2us inspection period: + ADDER_MSBs <= To_BitVector(ADDER_DATA(11 downto 9)); + when "10" => -- FM mode using DD disks, results in 4us inspection period: + ADDER_MSBs <= To_BitVector(ADDER_DATA(12 downto 10)); + end case; + end process ADDER; + + ROLLOVER: process(RESETn, CLK) + -- This process forms a falling edge detector for the detection + -- of the adder's rollover time. The output goes low for exactly + -- one clock period after the rollover is detected and the positive + -- clock edge appears. + variable LOCK : boolean; + begin + if RESETn = '0' then + ROLL_OVER <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + if ADDER_MSBs /= "111" and LOCK = false then + ROLL_OVER <= '1'; + LOCK := true; + elsif ADDER_MSBs = "111" then + LOCK := false; + ROLL_OVER <= '0'; + else + ROLL_OVER <= '0'; + end if; + end if; + end process ROLLOVER; + PLL_DSTRB <= ROLL_OVER; + + DATA_FLIP_FLOP: process(RESETn, CLK, RD_PULSE) + -- This flip-flop is responsible for 'catching' the read pulses of the + -- serial data input. + begin + if RESETn = '0' then + PLL_D <= '0'; -- Asynchronous reset. + elsif CLK = '1' and CLK' event then + if RD_PULSE = '1' then + PLL_D <= '1'; -- Read pulse detected. + elsif ROLL_OVER = '1' then + PLL_D <= '0'; + end if; + end if; + end process DATA_FLIP_FLOP; + + WIN_HISTORY: process(RESETn, CLK) + begin + if RESETn = '0' then + HISTORY_REG <= "00"; + elsif CLK = '1' and CLK' event then + if RD_PULSE = '1' then + HISTORY_REG <= ADDER_MSBs(2) & HISTORY_REG(1); + end if; + end if; + end process WIN_HISTORY; + + -- Error history: + -- This signal indicates the number of consequtive levels of the adder's + -- MSB and the history register as shown in the following table. The default + -- setting of 0 was added to compile with the Xilinx ISE. + ERROR_HISTORY <= 2 when ADDER_MSBs(2) = '0' and HISTORY_REG = "00" else -- Speed strongly up. + 1 when ADDER_MSBs(2) = '0' and HISTORY_REG = "01" else -- Speed up. + 0 when ADDER_MSBs(2) = '0' and HISTORY_REG = "10" else -- o.k. + 0 when ADDER_MSBs(2) = '0' and HISTORY_REG = "11" else -- Now adjusted. + 0 when ADDER_MSBs(2) = '1' and HISTORY_REG = "00" else -- Now adjusted. + 0 when ADDER_MSBs(2) = '1' and HISTORY_REG = "01" else -- o.k. + 1 when ADDER_MSBs(2) = '1' and HISTORY_REG = "10" else -- Slow down. + 2 when ADDER_MSBs(2) = '1' and HISTORY_REG = "11" else 0; -- Slow strongly down. + + FREQUENCY_DECODER: process(RESETn, CLK, HI_STOP, LOW_STOP) + -- The frequency decoder controls the period of the data inspection window respective to the + -- ERROR_HISTORY for the 11 bit adder is as follows: + -- ERROR_HISTORY = 0: + -- -> no correction necessary <- + -- ERROR_HISTORY = 1: + -- MSBs input: 7 6 5 4 3 2 1 0 + -- Correction output: -3 -2 -1 0 0 +1 +2 +3 + -- ERROR_HISTORY = 2: + -- MSBs input: 7 6 5 4 3 2 1 0 + -- Correction output: -4 -3 -2 -1 +1 +2 +3 +4 + -- The most significant bit of the FREQ_AMOUNT controls incrementation or decrementation + -- of the adder (0 is up). + variable FREQ_AMOUNT: std_logic_vector(3 downto 0); + begin + if RESETn = '0' then + FREQ_AMOUNT := "0000"; + elsif CLK = '1' and CLK' event then + if RD_PULSE = '1' then -- Load the frequency amount register. + case ERROR_HISTORY is + when 2 => + case ADDER_MSBs is + when "000" => FREQ_AMOUNT := "0100"; + when "001" => FREQ_AMOUNT := "0011"; + when "010" => FREQ_AMOUNT := "0010"; + when "011" => FREQ_AMOUNT := "0001"; + when "100" => FREQ_AMOUNT := "1001"; + when "101" => FREQ_AMOUNT := "1010"; + when "110" => FREQ_AMOUNT := "1011"; + when "111" => FREQ_AMOUNT := "1100"; + end case; + when 1 => + case ADDER_MSBs is + when "000" => FREQ_AMOUNT := "0011"; + when "001" => FREQ_AMOUNT := "0010"; + when "010" => FREQ_AMOUNT := "0001"; + when "011" => FREQ_AMOUNT := "0000"; + when "100" => FREQ_AMOUNT := "1000"; + when "101" => FREQ_AMOUNT := "1001"; + when "110" => FREQ_AMOUNT := "1010"; + when "111" => FREQ_AMOUNT := "1011"; + end case; + when others => + FREQ_AMOUNT := "0000"; + end case; + elsif FREQ_AMOUNT(2 downto 0) > "000" then + FREQ_AMOUNT := FREQ_AMOUNT - '1'; -- Modify the frequency amount register. + end if; + end if; + -- + if FREQ_AMOUNT(3) = '0' and FREQ_AMOUNT(2 downto 0) /= "000" and HI_STOP = '0' then + -- FREQ_AMOUNT(3) = '0' means Frequency is too low. Count up when counter is not at HI_STOP. + UP <= '1'; + DOWN <= '0'; + elsif FREQ_AMOUNT(3) = '1' and FREQ_AMOUNT (2 downto 0) /= "000" and LOW_STOP = '0' then + -- FREQ_AMOUNT(3) = '1' means Frequency is too high. Count down when counter is not at LOW_STOP. + UP <= '0'; + DOWN <= '1'; + else + UP <= '0'; + DOWN <= '0'; + end if; + end process FREQUENCY_DECODER; + + PHASE_DECODER: process(RESETn, CLK) + -- The phase decoder depends on the value of ADDER_MSBs. If the phase leeds, the most significant bit + -- of PHASE_AMOUNT indicates with a '0', that the next rollover should appear earlier. In case of a + -- phase lag, the next rollover should come later (indicated by a '1' of the most significant bit of + -- PHASE_AMOUNT). + -- This implementation gives the freedom to adjust the phase amount individually for every mode + -- depending on DDEn and HDTYPE. + variable PHASE_AMOUNT: std_logic_vector(5 downto 0); + begin + if RESETn = '0' then + PHASE_AMOUNT := "000000"; + elsif CLK = '1' and CLK' event then + if RD_PULSE = '1' and DDEn = '1' and HDTYPE = '0' then -- FM mode, single density. + case ADDER_MSBs is -- Multiplier: 4. + when "000" => PHASE_AMOUNT := "010000"; + when "001" => PHASE_AMOUNT := "001101"; + when "010" => PHASE_AMOUNT := "001000"; + when "011" => PHASE_AMOUNT := "000100"; + when "100" => PHASE_AMOUNT := "100100"; + when "101" => PHASE_AMOUNT := "101000"; + when "110" => PHASE_AMOUNT := "101100"; + when "111" => PHASE_AMOUNT := "110000"; + end case; + elsif RD_PULSE = '1' and DDEn = '1' and HDTYPE = '1' then -- FM mode, double density + case ADDER_MSBs is -- Multiplier: 2. + when "000" => PHASE_AMOUNT := "001000"; + when "001" => PHASE_AMOUNT := "000110"; + when "010" => PHASE_AMOUNT := "000100"; + when "011" => PHASE_AMOUNT := "000010"; + when "100" => PHASE_AMOUNT := "100010"; + when "101" => PHASE_AMOUNT := "100100"; + when "110" => PHASE_AMOUNT := "100110"; + when "111" => PHASE_AMOUNT := "101000"; + end case; + elsif RD_PULSE = '1' and DDEn = '0' and HDTYPE = '0' then -- MFM mode, single density + case ADDER_MSBs is -- Multiplier: 2. + when "000" => PHASE_AMOUNT := "000110"; + when "001" => PHASE_AMOUNT := "000100"; + when "010" => PHASE_AMOUNT := "000011"; + when "011" => PHASE_AMOUNT := "000010"; + when "100" => PHASE_AMOUNT := "100010"; + when "101" => PHASE_AMOUNT := "100011"; + when "110" => PHASE_AMOUNT := "100100"; + when "111" => PHASE_AMOUNT := "100110"; + end case; + elsif RD_PULSE = '1' and DDEn = '0' and HDTYPE = '1' then -- MFM mode, double density. + case ADDER_MSBs is -- Multiplier: 1. + when "000" => PHASE_AMOUNT := "000100"; + when "001" => PHASE_AMOUNT := "000011"; + when "010" => PHASE_AMOUNT := "000010"; + when "011" => PHASE_AMOUNT := "000001"; + when "100" => PHASE_AMOUNT := "100001"; + when "101" => PHASE_AMOUNT := "100010"; + when "110" => PHASE_AMOUNT := "100011"; + when "111" => PHASE_AMOUNT := "100100"; + end case; + else -- Modify phase amount register: + if PHASE_AMOUNT(4 downto 0) > x"0" then + PHASE_AMOUNT := PHASE_AMOUNT - 1; + end if; + end if; + end if; + -- + if PHASE_AMOUNT(5) = '0' and PHASE_AMOUNT(4 downto 0) > x"0" then + -- PHASE_AMOUNT(5) = '0' means, that the phase leeds. + PHASE_INCREASE <= '1'; -- Speed phase up, accelerate next rollover. + PHASE_DECREASE <= '0'; + elsif PHASE_AMOUNT(5) = '1' and PHASE_AMOUNT(4 downto 0) > x"0" then + -- PHASE_AMOUNT(5) = '1' means, that the phase lags. + PHASE_INCREASE <= '0'; + PHASE_DECREASE <= '1'; -- Speed phase down, delay of next rollover. + else + PHASE_INCREASE <= '0'; + PHASE_DECREASE <= '0'; + end if; + end process PHASE_DECODER; +end architecture BEHAVIOR; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd new file mode 100644 index 0000000..b365b3d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd @@ -0,0 +1,232 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- This is the package file containing the component ---- +---- declarations. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Removed CRC_BUSY. + + +library ieee; +use ieee.std_logic_1164.all; + +package WF1772IP_PKG is +-- component declarations: +component WF1772IP_AM_DETECTOR + port( + CLK : in bit; + RESETn : in bit; + DDEn : in bit; + DATA : in bit; + DATA_STRB : in bit; + ID_AM : out bit; + DATA_AM : out bit; + DDATA_AM : out bit + ); +end component; + +component WF1772IP_CONTROL + port( + CLK : in bit; + RESETn : in bit; + A1, A0 : in bit; + RWn : in bit; + CSn : in bit; + DDEn : in bit; + DR : in bit_vector(7 downto 0); + CMD : in std_logic_vector(7 downto 0); + DSR : in std_logic_vector(7 downto 0); + TR : in std_logic_vector(7 downto 0); + SR : in std_logic_vector(7 downto 0); + MO : out bit; + WR_PR : out bit; + SPINUP_RECTYPE : out bit; + SEEK_RNF : out bit; + CRC_ERRFLAG : out bit; + LOST_DATA_TR00 : out bit; + DRQ : out bit; + DRQ_IPn : out bit; + BUSY : out bit; + AM_2_DISK : out bit; + ID_AM : in bit; + DATA_AM : in bit; + DDATA_AM : in bit; + CRC_ERR : in bit; + CRC_PRES : out bit; + TR_PRES : out bit; + TR_CLR : out bit; + TR_INC : out bit; + TR_DEC : out bit; + SR_LOAD : out bit; + SR_INC : out bit; + TRACK_NR : out std_logic_vector(7 downto 0); + DR_CLR : out bit; + DR_LOAD : out bit; + SHFT_LOAD_SD : out bit; + SHFT_LOAD_ND : out bit; + CRC_2_DISK : out bit; + DSR_2_DISK : out bit; + FF_2_DISK : out bit; + PRECOMP_EN : out bit; + DATA_STRB : in bit; + DISK_RWn : out bit; + WPRTn : in bit; + TRACK00n : in bit; + IPn : in bit; + DIRC : out bit; + STEP : out bit; + WG : out bit; + INTRQ : out bit + ); +end component; + +component WF1772IP_CRC_LOGIC + port( + CLK : in bit; + RESETn : in bit; + DDEn : in bit; + DISK_RWn : in bit; + ID_AM : in bit; + DATA_AM : in bit; + DDATA_AM : in bit; + SD : in bit; + CRC_STRB : in bit; + CRC_2_DISK : in bit; + CRC_PRES : in bit; + CRC_SDOUT : out bit; + CRC_ERR : out bit + ); +end component; + +component WF1772IP_DIGITAL_PLL + port( + CLK : in bit; + RESETn : in bit; + DDEn : in bit; + HDTYPE : in bit; + DISK_RWn : in bit; + RDn : in bit; + PLL_D : out bit; + PLL_DSTRB : out bit + ); +end component; + +component WF1772IP_REGISTERS + port( + CLK : in bit; + RESETn : in bit; + CSn : in bit; + ADR : in bit_vector(1 downto 0); + RWn : in bit; + DATA_IN : in std_logic_vector (7 downto 0); + DATA_OUT : out std_logic_vector (7 downto 0); + DATA_EN : out bit; + CMD : out std_logic_vector(7 downto 0); + SR : out std_logic_vector(7 downto 0); + TR : out std_logic_vector(7 downto 0); + DSR : out std_logic_vector(7 downto 0); + DR : out bit_vector(7 downto 0); + SD_R : in bit; + DATA_STRB : in bit; + DR_CLR : in bit; + DR_LOAD : in bit; + TR_PRES : in bit; + TR_CLR : in bit; + TR_INC : in bit; + TR_DEC : in bit; + TRACK_NR : in std_logic_vector(7 downto 0); + SR_LOAD : in bit; + SR_INC : in bit; + SHFT_LOAD_SD : in bit; + SHFT_LOAD_ND : in bit; + MOTOR_ON : in bit; + WRITE_PROTECT : in bit; + SPINUP_RECTYPE : in bit; + SEEK_RNF : in bit; + CRC_ERRFLAG : in bit; + LOST_DATA_TR00 : in bit; + DRQ : in bit; + DRQ_IPn : in bit; + BUSY : in bit; + DDEn : in bit + ); +end component; + +component WF1772IP_TRANSCEIVER + port( + CLK : in bit; + RESETn : in bit; + DDEn : in bit; + HDTYPE : in bit; + ID_AM : in bit; + DATA_AM : in bit; + DDATA_AM : in bit; + SHFT_LOAD_SD : in bit; + DR : in bit_vector(7 downto 0); + PRECOMP_EN : in bit; + AM_TYPE : in bit; + AM_2_DISK : in bit; + CRC_2_DISK : in bit; + DSR_2_DISK : in bit; + FF_2_DISK : in bit; + SR_SDOUT : in std_logic; + CRC_SDOUT : in bit; + WRn : out bit; + PLL_DSTRB : in bit; + PLL_D : in bit; + WDATA : out bit; + DATA_STRB : out bit; + SD_R : out bit + ); +end component; +end WF1772IP_PKG; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd new file mode 100644 index 0000000..7556fe5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd @@ -0,0 +1,264 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- This file models all the five WD1772 registers: DATA-, ---- +---- COMMAND-, SECTOR-, TRACK- and STATUS register as also the ---- +---- shift register. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_REGISTERS is + port( + -- System control: + CLK : in bit; + RESETn : in bit; + + -- Bus interface: + CSn : in bit; + ADR : in bit_vector(1 downto 0); + RWn : in bit; + DATA_IN : in std_logic_vector (7 downto 0); + DATA_OUT : out std_logic_vector (7 downto 0); + DATA_EN : out bit; + + -- FDC data: + CMD : out std_logic_vector(7 downto 0); -- Command register. + SR : out std_logic_vector(7 downto 0); -- Sector register. + TR : out std_logic_vector(7 downto 0); -- Track register. + DSR : out std_logic_vector(7 downto 0); -- Data shift register. + DR : out bit_vector(7 downto 0); -- Data register. + + -- Serial data and clock strobes (in and out): + DATA_STRB : in bit; -- Strobe for the incoming data. + SD_R : in bit; -- Serial data input. + + -- DATA register control: + DR_CLR : in bit; -- Clear. + DR_LOAD : in bit; -- LOAD. + + -- Track register controls: + TR_PRES : in bit; -- Set x"FF". + TR_CLR : in bit; -- Clear. + TR_INC : in bit; -- Increment. + TR_DEC : in bit; -- Decrement. + + -- Sector register control: + TRACK_NR : in std_logic_vector(7 downto 0); + SR_LOAD : in bit; -- Load. + SR_INC : in bit; -- Increment. + + -- Shift register control: + SHFT_LOAD_SD : in bit; + SHFT_LOAD_ND : in bit; + + -- Status register stuff + MOTOR_ON : in bit; + WRITE_PROTECT : in bit; + SPINUP_RECTYPE : in bit; -- Disk is on speed / data mark status. + SEEK_RNF : in bit; -- Seek error / record not found status flag. + CRC_ERRFLAG : in bit; -- CRC status flag. + LOST_DATA_TR00 : in bit; + DRQ : in bit; + DRQ_IPn : in bit; + BUSY : in bit; + + -- Others: + DDEn : in bit + ); +end WF1772IP_REGISTERS; + +architecture BEHAVIOR of WF1772IP_REGISTERS is +-- Remark: In the original data sheet 'WD17X-00' there is the following statement: +-- "After any register is written to, the same register cannot be read from until +-- 16us in MFM or 32us in FMMM have elapsed." If this is a hint for a hardware read +-- lock ... this lock is not implemented in this code. +signal SHIFT_REG : std_logic_vector(7 downto 0); +signal DATA_REG : std_logic_vector(7 downto 0); +signal COMMAND_REG : std_logic_vector(7 downto 0); +signal SECTOR_REG : std_logic_vector(7 downto 0); +signal TRACK_REG : std_logic_vector(7 downto 0); +signal STATUS_REG : bit_vector(7 downto 0); +signal SD_R_I : std_logic; +begin + -- Type conversion To_Std_Logic: + SD_R_I <= '1' when SD_R = '1' else '0'; + + P_SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if SHFT_LOAD_ND = '1' then + SHIFT_REG <= DATA_REG; -- Load data register stuff. + elsif SHFT_LOAD_SD = '1' and DDEn = '1' then + SHIFT_REG <= DATA_REG; -- Normal data in FM mode. + elsif SHFT_LOAD_SD = '1' and DDEn = '0' then -- MFM mode: + case DATA_REG is + when x"F5" => SHIFT_REG <= x"A1"; -- Special character. + when x"F6" => SHIFT_REG <= x"C2"; -- Special character. + when others => SHIFT_REG <= DATA_REG; -- Normal MFM data. + end case; + elsif DATA_STRB = '1' then -- Shift left during read from disk or write to disk. + SHIFT_REG <= SHIFT_REG(6 downto 0) & SD_R_I; -- for write operation SD_R_I is a dummy. + end if; + end if; + end process P_SHIFTREG; + DSR <= SHIFT_REG; + + DATAREG: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if CSn = '0' and ADR = "11" and RWn = '0' then + DATA_REG <= DATA_IN; -- Write bus data to register + elsif DR_LOAD = '1' and DRQ = '0' then + DATA_REG <= SHIFT_REG; -- Correct data loaded to shift register. + elsif DR_LOAD = '1' and DRQ = '1' then + DATA_REG <= x"00"; -- Dummy byte due to lost data loaded to shift register. + elsif DR_CLR = '1' then + DATA_REG <= (others => '0'); + end if; + end if; + end process DATAREG; + -- Data register buffered for further data processing. + DR <= To_BitVector(DATA_REG); + + SECTORREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SECTOR_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if CSn = '0' and ADR = "10" and RWn = '0' and BUSY = '0' then + SECTOR_REG <= DATA_IN; -- Write to register when device is not busy. + elsif SR_LOAD = '1' then + -- Load the track number to the sector register in the type III command + -- 'Read Address'. + SECTOR_REG <= TRACK_NR; + elsif SR_INC = '1' then + SECTOR_REG <= SECTOR_REG + '1'; + end if; + end if; + end process SECTORREG; + SR <= SECTOR_REG; + + TRACKREG: process(RESETn, CLK) + begin + if RESETn = '0' then + TRACK_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if CSn = '0' and ADR = "01" and RWn = '0' and BUSY = '0' then + TRACK_REG <= DATA_IN; -- Write to register when device is busy. + elsif TR_PRES = '1' then + TRACK_REG <= (others => '1'); -- Preset the track register. + elsif TR_CLR = '1' then + TRACK_REG <= (others => '0'); -- Reset the track register. + elsif TR_INC = '1' then + TRACK_REG <= TRACK_REG + '1'; -- Increment register contents. + elsif TR_DEC = '1' then + TRACK_REG <= TRACK_REG - '1'; -- Decrement register contents. + end if; + end if; + end process TRACKREG; + TR <= TRACK_REG; + + COMMANDREG: process(RESETn, CLK) + -- The command register is write only. + begin + if RESETn = '0' then + COMMAND_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if CSn = '0' and ADR = "00" and RWn = '0' and BUSY = '0' then + COMMAND_REG <= DATA_IN; -- Write to register when device is not busy. + -- Write 'force interrupt' to register even when device is busy: + elsif CSn = '0' and ADR = "00" and RWn = '0' and DATA_IN(7 downto 4) = x"D" then + COMMAND_REG <= DATA_IN; + end if; + end if; + end process COMMANDREG; + CMD <= COMMAND_REG; + + STATUSREG: process(RESETn, CLK) + -- The status register is read only to the data bus. + begin + -- Status register wiring: + if RESETn = '0' then + STATUS_REG <= x"00"; + elsif CLK = '1' and CLK' event then + STATUS_REG(7) <= MOTOR_ON; + STATUS_REG(6) <= WRITE_PROTECT; + STATUS_REG(5) <= SPINUP_RECTYPE; + STATUS_REG(4) <= SEEK_RNF; + STATUS_REG(3) <= CRC_ERRFLAG; + STATUS_REG(2) <= LOST_DATA_TR00; + STATUS_REG(1) <= DRQ_IPn; + STATUS_REG(0) <= BUSY; + end if; + end process STATUSREG; + -- Read from track, sector or data register: + -- The register data after writing to the track register is valid at least + -- after 32us in FM mode and after 16us in MFM mode. + -- Read from status register. This register is read only: + -- Be aware, that the status register data bits 7 to 1 after writing + -- the command regsiter are valid at least after 64us in FM mode or 32us in MFM mode and + -- the bit 0 (BUSY) is valid after 48us in FM mode or 24us in MFM mode. + DATA_OUT <= TRACK_REG when CSn = '0' and ADR = "01" and RWn = '1' else + SECTOR_REG when CSn = '0' and ADR = "10" and RWn = '1' else + DATA_REG when CSn = '0' and ADR = "11" and RWn = '1' else + To_StdLogicVector(STATUS_REG) when CSn = '0' and ADR = "00" and RWn = '1' else (others => '0'); + DATA_EN <= '1' when CSn = '0' and RWn = '1' else '0'; +end architecture BEHAVIOR; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd new file mode 100644 index 0000000..71ef3f3 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd @@ -0,0 +1,154 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- This is the top level file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - Test of the FM portion of the code (if there is any need). ---- +---- - Test of the read track command. ---- +---- - Test of the read address command. ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release: the MFM portion for HD and DD floppies is tested. +-- The FM mode (DDEn = '1') is not completely tested due to the lack +-- of FM drives. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Fixed the polarity of the precompensation flag. +-- The flag is no active '0'. Thanks to Jorma +-- Oksanen for the information. +-- Revision 2K7B 2006/12/29 WF +-- Introduced several improvements based on a very good examination +-- of the pll code by Jean Louis-Guerin. +-- Revision 2K8B 2008/12/24 WF +-- Rewritten this top level file as a wrapper for the top_soc file. + +library work; +use work.WF1772IP_PKG.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_TOP is + port ( + CLK : in bit; -- 16MHz clock! + MRn : in bit; + CSn : in bit; + RWn : in bit; + A1, A0 : in bit; + DATA : inout std_logic_vector(7 downto 0); + RDn : in bit; + TR00n : in bit; + IPn : in bit; + WPRTn : in bit; + DDEn : in bit; + HDTYPE : in bit; -- '0' = DD disks, '1' = HD disks. + MO : out bit; + WG : out bit; + WD : out bit; + STEP : out bit; + DIRC : out bit; + DRQ : out bit; + INTRQ : out bit + ); +end entity WF1772IP_TOP; + +architecture STRUCTURE of WF1772IP_TOP is +component WF1772IP_TOP_SOC + port ( + CLK : in bit; + RESETn : in bit; + CSn : in bit; + RWn : in bit; + A1, A0 : in bit; + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + RDn : in bit; + TR00n : in bit; + IPn : in bit; + WPRTn : in bit; + DDEn : in bit; + HDTYPE : in bit; + MO : out bit; + WG : out bit; + WD : out bit; + STEP : out bit; + DIRC : out bit; + DRQ : out bit; + INTRQ : out bit + ); +end component; +signal DATA_OUT : std_logic_vector(7 downto 0); +signal DATA_EN : bit; +begin + DATA <= DATA_OUT when DATA_EN = '1' else (others => 'Z'); + + I_1772: WF1772IP_TOP_SOC + port map( + CLK => CLK, + RESETn => MRn, + CSn => CSn, + RWn => RWn, + A1 => A1, + A0 => A0, + DATA_IN => DATA, + DATA_OUT => DATA_OUT, + DATA_EN => DATA_EN, + RDn => RDn, + TR00n => TR00n, + IPn => IPn, + WPRTn => WPRTn, + DDEn => DDEn, + HDTYPE => HDTYPE, + MO => MO, + WG => WG, + WD => WD, + STEP => STEP, + DIRC => DIRC, + DRQ => DRQ, + INTRQ => INTRQ + ); +end architecture STRUCTURE; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd new file mode 100644 index 0000000..9cfd111 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd @@ -0,0 +1,333 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- Top level file for use in systems on programmable chips. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - Test of the FM portion of the code (if there is any need). ---- +---- - Test of the read track command. ---- +---- - Test of the read address command. ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release: the MFM portion for HD and DD floppies is tested. +-- The FM mode (DDEn = '1') is not completely tested due to the lack +-- of FM drives. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Fixed the polarity of the precompensation flag. +-- The flag is no active '0'. Thanks to Jorma Oksanen for the information. +-- Top level file provided for SOC (systems on programmable chips). +-- Revision 2K7B 2006/12/29 WF +-- Introduced several improvements based on a very good examination +-- of the pll code by Jean Louis-Guerin. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K8B 2008/12/24 WF +-- Bugfixes in the controller due to hanging state machine. +-- Removed CRC_BUSY. +-- + +library work; +use work.WF1772IP_PKG.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_TOP_SOC is + port ( + CLK : in bit; -- 16MHz clock! + RESETn : in bit; + CSn : in bit; + RWn : in bit; + A1, A0 : in bit; + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + RDn : in bit; + TR00n : in bit; + IPn : in bit; + WPRTn : in bit; + DDEn : in bit; + HDTYPE : in bit; -- '0' = DD disks, '1' = HD disks. + MO : out bit; + WG : out bit; + WD : out bit; + STEP : out bit; + DIRC : out bit; + DRQ : out bit; + INTRQ : out bit + ); +end entity WF1772IP_TOP_SOC; + +architecture STRUCTURE of WF1772IP_TOP_SOC is +signal DATA_OUT_REG : std_logic_vector(7 downto 0); +signal DATA_EN_REG : bit; +signal CMD_I : std_logic_vector(7 downto 0); +signal DR_I : bit_vector(7 downto 0); +signal DSR_I : std_logic_vector(7 downto 0); +signal TR_I : std_logic_vector(7 downto 0); +signal SR_I : std_logic_vector(7 downto 0); +signal ID_AM_I : bit; +signal DATA_AM_I : bit; +signal DDATA_AM_I : bit; +signal AM_TYPE_I : bit; +signal AM_2_DISK_I : bit; +signal DATA_STRB_I : bit; +signal BUSY_I : bit; +signal DRQ_I : bit; +signal DRQ_IPn_I : bit; +signal LD_TR00_I : bit; +signal SP_RT_I : bit; +signal SEEK_RNF_I : bit; +signal WR_PR_I : bit; +signal MO_I : bit; +signal PLL_DSTRB_I : bit; +signal PLL_D_I : bit; +signal CRC_SD_I : bit; +signal CRC_ERR_I : bit; +signal CRC_PRES_I : bit; +signal CRC_ERRFLAG_I : bit; +signal SD_R_I : bit; +signal CRC_SDOUT_I : bit; +signal SHFT_LOAD_SD_I : bit; +signal SHFT_LOAD_ND_I : bit; +signal WR_In : bit; +signal TR_PRES_I : bit; +signal TR_CLR_I : bit; +signal TR_INC_I : bit; +signal TR_DEC_I : bit; +signal SR_LOAD_I : bit; +signal SR_INC_I : bit; +signal DR_CLR_I : bit; +signal DR_LOAD_I : bit; +signal TRACK_NR_I : std_logic_vector(7 downto 0); +signal CRC_2_DISK_I : bit; +signal DSR_2_DISK_I : bit; +signal FF_2_DISK_I : bit; +signal PRECOMP_EN_I : bit; +signal DISK_RWn_I : bit; +signal WDATA_I : bit; +begin + -- Three state data bus: + DATA_OUT <= DATA_OUT_REG when DATA_EN_REG = '1' else (others => '0'); + DATA_EN <= DATA_EN_REG; + + -- Some signals copied to the outputs: + WD <= not WR_In; + MO <= MO_I; + DRQ <= DRQ_I; + + -- Write deleted data address mark in MFM mode in 'Write Sector' command in + -- case of asserted command bit 0. + AM_TYPE_I <= '0' when CMD_I(7 downto 5) = "101" and CMD_I(0) = '1' else '1'; + + -- The CRC unit is used during read from disk and write to disk. + -- This is the data multiplexer for the data stream to encode. + CRC_SD_I <= SD_R_I when DISK_RWn_I = '1' else WDATA_I; + + I_CONTROL: WF1772IP_CONTROL + port map( + CLK => CLK, + RESETn => RESETn, + A1 => A0, + A0 => A1, + RWn => RWn, + CSn => CSn, + DDEn => DDEn, + DR => DR_I, + CMD => CMD_I, + DSR => DSR_I, + TR => TR_I, + SR => SR_I, + MO => MO_I, + WR_PR => WR_PR_I, + SPINUP_RECTYPE => SP_RT_I, + SEEK_RNF => SEEK_RNF_I, + CRC_ERRFLAG => CRC_ERRFLAG_I, + LOST_DATA_TR00 => LD_TR00_I, + DRQ => DRQ_I, + DRQ_IPn => DRQ_IPn_I, + BUSY => BUSY_I, + AM_2_DISK => AM_2_DISK_I, + ID_AM => ID_AM_I, + DATA_AM => DATA_AM_I, + DDATA_AM => DDATA_AM_I, + CRC_ERR => CRC_ERR_I, + CRC_PRES => CRC_PRES_I, + TR_PRES => TR_PRES_I, + TR_CLR => TR_CLR_I, + TR_INC => TR_INC_I, + TR_DEC => TR_DEC_I, + SR_LOAD => SR_LOAD_I, + SR_INC => SR_INC_I, + TRACK_NR => TRACK_NR_I, + DR_CLR => DR_CLR_I, + DR_LOAD => DR_LOAD_I, + SHFT_LOAD_SD => SHFT_LOAD_SD_I, + SHFT_LOAD_ND => SHFT_LOAD_ND_I, + CRC_2_DISK => CRC_2_DISK_I, + DSR_2_DISK => DSR_2_DISK_I, + FF_2_DISK => FF_2_DISK_I, + PRECOMP_EN => PRECOMP_EN_I, + DATA_STRB => DATA_STRB_I, + DISK_RWn => DISK_RWn_I, + WPRTn => WPRTn, + TRACK00n => TR00n, + IPn => IPn, + DIRC => DIRC, + STEP => STEP, + WG => WG, + INTRQ => INTRQ + ); + + I_REGISTERS: WF1772IP_REGISTERS + port map( + CLK => CLK, + RESETn => RESETn, + CSn => CSn, + ADR(1) => A1, + ADR(0) => A0, + RWn => RWn, + DATA_IN => DATA_IN, + DATA_OUT => DATA_OUT_REG, + DATA_EN => DATA_EN_REG, + CMD => CMD_I, + TR => TR_I, + SR => SR_I, + DSR => DSR_I, + DR => DR_I, + SD_R => SD_R_I, + DATA_STRB => DATA_STRB_I, + DR_CLR => DR_CLR_I, + DR_LOAD => DR_LOAD_I, + TR_PRES => TR_PRES_I, + TR_CLR => TR_CLR_I, + TR_INC => TR_INC_I, + TR_DEC => TR_DEC_I, + TRACK_NR => TRACK_NR_I, + SR_LOAD => SR_LOAD_I, + SR_INC => SR_INC_I, + SHFT_LOAD_SD => SHFT_LOAD_SD_I, + SHFT_LOAD_ND => SHFT_LOAD_ND_I, + MOTOR_ON => MO_I, + WRITE_PROTECT => WR_PR_I, + SPINUP_RECTYPE => SP_RT_I, + SEEK_RNF => SEEK_RNF_I, + CRC_ERRFLAG => CRC_ERRFLAG_I, + LOST_DATA_TR00 => LD_TR00_I, + DRQ => DRQ_I, + DRQ_IPn => DRQ_IPn_I, + BUSY => BUSY_I, + DDEn => DDEn + ); + + I_DIGITAL_PLL: WF1772IP_DIGITAL_PLL + port map( + CLK => CLK, + RESETn => RESETn, + DDEn => DDEn, + HDTYPE => HDTYPE, + DISK_RWn => DISK_RWn_I, + RDn => RDn, + PLL_D => PLL_D_I, + PLL_DSTRB => PLL_DSTRB_I + ); + + I_AM_DETECTOR: WF1772IP_AM_DETECTOR + port map( + CLK => CLK, + RESETn => RESETn, + DDEn => DDEn, + DATA => PLL_D_I, + DATA_STRB => PLL_DSTRB_I, + ID_AM => ID_AM_I, + DATA_AM => DATA_AM_I, + DDATA_AM => DDATA_AM_I + ); + + I_CRC_LOGIC: WF1772IP_CRC_LOGIC + port map( + CLK => CLK, + RESETn => RESETn, + DDEn => DDEn, + DISK_RWn => DISK_RWn_I, + ID_AM => ID_AM_I, + DATA_AM => DATA_AM_I, + DDATA_AM => DDATA_AM_I, + SD => CRC_SD_I, + CRC_STRB => DATA_STRB_I, + CRC_2_DISK => CRC_2_DISK_I, + CRC_PRES => CRC_PRES_I, + CRC_SDOUT => CRC_SDOUT_I, + CRC_ERR => CRC_ERR_I + ); + + I_TRANSCEIVER: WF1772IP_TRANSCEIVER + port map( + CLK => CLK, + RESETn => RESETn, + DDEn => DDEn, + HDTYPE => HDTYPE, + ID_AM => ID_AM_I, + DATA_AM => DATA_AM_I, + DDATA_AM => DDATA_AM_I, + SHFT_LOAD_SD => SHFT_LOAD_SD_I, + DR => DR_I, + PRECOMP_EN => PRECOMP_EN_I, + AM_TYPE => AM_TYPE_I, + AM_2_DISK => AM_2_DISK_I, + CRC_2_DISK => CRC_2_DISK_I, + DSR_2_DISK => DSR_2_DISK_I, + FF_2_DISK => FF_2_DISK_I, + SR_SDOUT => DSR_I(7), + CRC_SDOUT => CRC_SDOUT_I, + WRn => WR_In, + WDATA => WDATA_I, + PLL_DSTRB => PLL_DSTRB_I, + PLL_D => PLL_D_I, + DATA_STRB => DATA_STRB_I, + SD_R => SD_R_I + ); +end architecture STRUCTURE; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd new file mode 100644 index 0000000..c836716 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd @@ -0,0 +1,517 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- The transceiver unit contains on the one hand the receiver ---- +---- part which strips off the clock signal from the data stream ---- +---- and on the other hand the transmitter unit which provides in ---- +---- the different modes (FM and MFM) all functions which are ---- +---- necessary to send data, CRC bytes, 'FF', '00' or the address ---- +---- marks. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- MFM_In and MASK_SHFT have now synchronous reset to meet preset requirement. +-- + + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_TRANSCEIVER is + port( + -- System control + CLK : in bit; -- must be 16MHz + RESETn : in bit; + + -- Data and Control: + HDTYPE : in bit; -- Floppy type HD or DD. + DDEn : in bit; -- Double density select (FM or MFM). + ID_AM : in bit; -- ID addressmark strobe. + DATA_AM : in Bit; -- Data addressmark strobe. + DDATA_AM : in Bit; -- Deleted data addressmark strobe. + SHFT_LOAD_SD : in bit; -- Indication for shift register load time. + DR : in bit_vector(7 downto 0); -- Content of the data register. + + -- Data strobes: + PLL_DSTRB : in bit; -- Clock strobe for RD serial data input. + DATA_STRB : buffer bit; + + -- Data strobe and data for the CRC during write operation: + WDATA : buffer bit; + + -- Encoder (logic to disk): + PRECOMP_EN : in bit; -- control signal for MFM write precompensation. + AM_TYPE : in bit; -- Write deleted address mark in MFM mode when 0. + AM_2_DISK : in bit; + DSR_2_DISK : in bit; + FF_2_DISK : in bit; + CRC_2_DISK : in bit; + SR_SDOUT : in std_logic; -- encoder's data input from the shift register (serial). + CRC_SDOUT : in bit; -- encoder's data input from the CRC unit (serial). + WRn : out bit; -- write output for the MFM drive containing clock and data. + + -- Decoder (disk to logic): + PLL_D : in bit; -- Serial data input. + SD_R : out bit -- Serial (decoded) data output. + ); +end WF1772IP_TRANSCEIVER; + +architecture BEHAVIOR of WF1772IP_TRANSCEIVER is +type MFM_STATES is (A_00, B_01, C_10); +type PRECOMP_VALUES is (EARLY, NOMINAL, LATE); +type DEC_STATES is (CLK_PHASE, DATA_PHASE); + +signal MFM_STATE : MFM_STATES; +signal NEXT_MFM_STATE : MFM_STATES; +signal PRECOMP : PRECOMP_VALUES; +signal DEC_STATE : DEC_STATES; +signal NEXT_DEC_STATE : DEC_STATES; + +signal FM_In : bit; + +signal CLKMASK : bit; -- Control for suppression of FM clock transitions. + +signal MFM_10_STRB : bit; +signal MFM_01_STRB : bit; + +signal WR_CNT : std_logic_vector(3 downto 0); +signal MFM_In : bit; + +signal AM_SHFT : bit_vector(31 downto 0); + +begin + -- ####################### encoder stuff ########################### + ADRMARK: process(RESETn, CLK) + -- This process provides the address mark data for both FM and MFM in + -- write to disk mode. In FM only one byte is written where in MFM + -- 3 sync bytes x"A1" and one data address mark is written. + -- In this process only the data address mark is provided. The only way + -- writing the ID address mark is the write track command. + begin + if RESETn = '0' then + AM_SHFT <= (others => '0'); + elsif CLK = '1' and CLK' event then + if AM_2_DISK = '1' and DATA_STRB = '1' then + AM_SHFT <= AM_SHFT (30 downto 0) & '0'; -- Shift out. + elsif AM_2_DISK = '0' and DDEn = '1' and AM_TYPE = '0' then -- FM mode. + AM_SHFT <= x"F8000000"; -- Load deleted FM address mark. + elsif AM_2_DISK = '0' and DDEn = '1' and AM_TYPE = '1' then -- FM mode. + AM_SHFT <= x"FB000000"; -- Load normal FM address mark. + elsif AM_2_DISK = '0' and DDEn = '0' and AM_TYPE = '0' then -- MFM mode deleted data mark. + AM_SHFT <= x"A1A1A1F8"; -- Load MFM syncs and address mark. + elsif AM_2_DISK = '0' and DDEn = '0' and AM_TYPE = '1' then -- Default: MFM mode normal data mark. + AM_SHFT <= x"A1A1A1FB"; -- Load MFM syncs and address mark. + end if; + end if; + end process ADRMARK; + + -- Input multiplexer: + WDATA <= AM_SHFT(31) when AM_2_DISK = '1' else -- Address mark data data. + To_Bit(SR_SDOUT) when DSR_2_DISK = '1' else -- Shift register data. + CRC_SDOUT when CRC_2_DISK = '1' else -- CRC data. + '1' when FF_2_DISK = '1' else '0'; -- Write zeros is default. + + -- Output multiplexer: + WRn <= '0' when FM_In = '0' and DDEn = '1' else -- FM portion. + '0' when MFM_In = '0' and DDEn = '0' else '1'; -- MFM portion and default. + + CLK_MASK: process(CLK) + -- This part of software controls the suppression of the clock pulses + -- during transmission of several FM special characters. During writing + -- 'normal' data to the disk, only 8 mask bits of the shift register are + -- used. During writing MFM sync and address mark bits, the register is + -- used with 32 mask bits. + variable MASK_SHFT : bit_vector(23 downto 0); + variable LOCK : boolean; + begin + if CLK = '1' and CLK' event then + if RESETn = '0' then + MASK_SHFT := (others => '1'); + LOCK := false; + -- Load the mask shift register just in time when the shift register is + -- loaded with valid data from the data register. + elsif SHFT_LOAD_SD = '1' and DDEn = '1' then -- FM mode. + case DR is + when x"F8" | x"F9" | x"FA" | x"FB" | x"FE" => MASK_SHFT := x"C7FFFF"; + when x"FC" => MASK_SHFT := x"D7FFFF"; + when x"F5" | x"F6" => MASK_SHFT := (others => '0'); -- Not allowed. + when others => MASK_SHFT := x"FFFFFF"; -- Normal data. + end case; + elsif SHFT_LOAD_SD = '1' and DDEn = '0' then -- MFM mode. + case DR is + when x"F5" => MASK_SHFT := x"FBFFFF"; -- Suppress clock pulse between bits 4 and 5. + when x"F6" => MASK_SHFT := x"F7FFFF"; -- Suppress clock pulse between bits 3 and 4. + when others => MASK_SHFT := x"FFFFFF"; -- Normal data. + end case; + elsif AM_2_DISK = '1' and DDEn = '1' and LOCK = false then -- FM mode. + MASK_SHFT := x"C7FFFF"; -- Load just once per AM_2_DISK rising edge. + LOCK := true; + elsif AM_2_DISK = '1' and DDEn = '0' and LOCK = false then -- MFM mode. + MASK_SHFT := x"FBFBFB"; -- Three syncs with suppressed clock pulse then transparent mask. + LOCK := true; + elsif DATA_STRB = '1' then -- shift as long as transmission is active + -- The Shift register is shifted left. After shifting the clockmasks out it is + -- transparent due to the '1's filled up from the left. + MASK_SHFT := MASK_SHFT(22 downto 0) & '1'; -- Shift left. + elsif AM_2_DISK = '0' then + LOCK := false; -- Release the lock after address mark has been written. + end if; + end if; + CLKMASK <= MASK_SHFT(23); + end process CLK_MASK; + + FM_ENCODER: process (RESETn, DATA_STRB, CLK) + -- For DD type floppies the data rate is 125kBps. Therefore there are 128 16-MHz clocks cycles + -- per FM bit. + -- For HD type floppies the data rate is 250kBps. Therefore there are 64 16-MHz clocks cycles + -- per FM bit. + -- The FM write pulse width is 1.375us for DD and 0.750us HD type floppies. + -- This process provides the FM encoded signal. The first pulse is in any case the clock + -- pulse and the second pulse is due to data. The FM encoding is very simple and therefore + -- self explaining. + variable CNT : std_logic_vector(7 downto 0); + begin + if RESETn = '0' then + FM_In <= '1'; + CNT := x"00"; + elsif CLK = '1' and CLK' event then + -- In case of HD type floppies the counter reaches a value of b"0100000" + -- In case of DD type floppies the counter reaches a value of b"1000000" + if DATA_STRB = '1' then + CNT := x"00"; + else + CNT := CNT + '1'; + end if; + -- The flux reversal pulses are centered between the DATA_STRB pulses. + -- In detail: the clock pulse appears in the middle of the first half + -- of the DATA_STRB period and the data pulse appears in the middle of + -- the second half. + case HDTYPE is + when '0' => -- DD type floppies: + if CNT > "00010101" and CNT <= "00101011" then + FM_In <= not CLKMASK; -- FM clock. + elsif CNT > "01010101" and CNT <= "01101011" then + FM_In <= not WDATA; -- FM data. + else + FM_In <= '1'; + end if; + when '1' => -- HD type floppies: + if CNT > "00001010" and CNT <= "00010110" then + FM_In <= not CLKMASK; -- FM clock. + elsif CNT > "00101010" and CNT <= "00110110" then + FM_In <= not WDATA; -- FM data. + else + FM_In <= '1'; + end if; + end case; + end if; + end process FM_ENCODER; + + MFM_ENCODE_REG: process(RESETn, CLK) + -- This process is the first portion of the more complicated MFM encoder. It can be interpreted + -- as a Moore machine. This part is the current state register. + begin + if RESETn = '0' then + MFM_STATE <= A_00; + elsif CLK = '1' and CLK' event then + MFM_STATE <= NEXT_MFM_STATE; + end if; + end process MFM_ENCODE_REG; + + MFM_ENCODE_LOGIC: process(MFM_STATE, WDATA, DATA_STRB) + -- Rules for Encoding: + -- transitions are never located at the mid point of a 'zero'. + -- transistions are always located at the mid point of a '1'. + -- no transitions at the borders of a '1'. + -- transitions appear between two adjacent 'zeros'. + -- states are as follows: + -- A_00: idle state, no transition. + -- B_01: transistion between the MFM clock edges. + -- C_10: transition on the leading MFM clock edges. + -- The timing of the MFM output is done in the process MFM_WR_OUT. + begin + case MFM_STATE is + when A_00 => + if WDATA = '0' and DATA_STRB = '1' then + NEXT_MFM_STATE <= C_10; + elsif WDATA = '1' and DATA_STRB = '1' then + NEXT_MFM_STATE <= B_01; + else + NEXT_MFM_STATE <= A_00; -- Stay, if there is no strobe. + end if; + when C_10 => + if WDATA = '0' and DATA_STRB = '1' then + NEXT_MFM_STATE <= C_10; + elsif WDATA = '1' and DATA_STRB = '1' then + NEXT_MFM_STATE <= B_01; + else + NEXT_MFM_STATE <= C_10; -- Stay, if there is no strobe. + end if; + when B_01 => + if WDATA = '0' and DATA_STRB = '1' then + NEXT_MFM_STATE <= A_00; + elsif WDATA = '1' and DATA_STRB = '1' then + NEXT_MFM_STATE <= B_01; + else + NEXT_MFM_STATE <= B_01; -- Stay, if there is no strobe. + end if; + end case; + end process MFM_ENCODE_LOGIC; + + MFM_PRECOMPENSATION: process(RESETn, CLK) + -- The write pattern is adjusted in the MFM write timing process as follows: + -- after DATA_STRB (the duty cycle of this strobe is exactly one CLK) the + -- incoming data is bufferd in WRITEPATTERN. After the following DATA_STRB + -- the WDATA is shifted through WRITEPATTERN. After further DATA_STRBs the + -- WRITEPATTERN consists of previous, current and next WDATA like this: + -- WRITEPATTERN(3) is the second previous WDATA. + -- WRITEPATTERN(2) is the previous WDATA. + -- WRITEPATTERN(1) is the current WDATA to be sent. + -- WRITEPATTERN(0) is the next WDATA to be sent. + variable WRITEPATTERN : bit_vector(3 downto 0); + begin + if RESETn = '0' then + PRECOMP <= NOMINAL; + WRITEPATTERN := "0000"; + elsif CLK = '1' and CLK' event then + if DATA_STRB = '1' then + WRITEPATTERN := WRITEPATTERN(2 downto 0) & WDATA; -- shift left + end if; + if PRECOMP_EN = '0' then + PRECOMP <= NOMINAL; -- no precompensation + else + case WRITEPATTERN is + when "1110" | "0110" => PRECOMP <= EARLY; + when "1011" | "0011" => PRECOMP <= LATE; + when "0001" => PRECOMP <= EARLY; + when "1000" => PRECOMP <= LATE; + when others => PRECOMP <= NOMINAL; + end case; + end if; + end if; + end process MFM_PRECOMPENSATION; + + MFM_STROBES: process (RESETn, DATA_STRB, CLK) + -- For the MFM frequency is 250 kBps for DD type floppies, there are 64 + -- 16 MHz clock cycles per MFM bit and for HD type floppies, which have + -- 500 kBps there are 32 16MHz clock pulses for one MFM bit. + -- The MFM state machine (Moore) switches on the DATA_STRB. + -- During one cycle there are the two further strobes MFM_10_STRB and + -- MFM_01_STRB which control the MFM output in the process MFM_WR_OUT. + -- The strobes are centered in the middle of the first half and in the + -- middle of the second half of the DATA_STRB cycle. + variable CNT : std_logic_vector(5 downto 0); + begin + if RESETn = '0' then + CNT := "000000"; + elsif CLK = '1' and CLK' event then + if DATA_STRB = '1' then + CNT := (others => '0'); + else + CNT := CNT + '1'; + end if; + if HDTYPE = '1' then + case CNT is + -- encoder timing for MFM and HD type floppies. + when "000100" => MFM_10_STRB <= '1'; MFM_01_STRB <= '0'; -- Pulse centered in the first half. + when "010100" => MFM_10_STRB <= '0'; MFM_01_STRB <= '1'; -- Pulse centered in the second half. + when others => MFM_10_STRB <= '0'; MFM_01_STRB <= '0'; + end case; + else + case CNT is + -- encoder timing for MFM and DD type floppies. + when "001010" => MFM_10_STRB <= '1'; MFM_01_STRB <= '0'; -- Pulse centered in the first half. + when "101000" => MFM_10_STRB <= '0'; MFM_01_STRB <= '1'; -- Pulse centered in the second half. + when others => MFM_10_STRB <= '0'; MFM_01_STRB <= '0'; + end case; + end if; + end if; + end process MFM_STROBES; + + -- MFM_WR_TIMING generates the timing for the write pulses which are + -- required by a MFM device like floppy disk drive. The pulse timing + -- meets the timing of the MFM data with pulse width of 700ns +/- 100ns + -- depending on write precompensation. + -- The original WD1772 (CLK = 8MHz) data timing was as follows: + -- The output is asserted as long as CNT is active; in detail + -- this are 4,5; 5,5 or 6,5 CLK cycles depending on the write + -- precompensation. + -- The new design which works with a 16MHz clock requires the following + -- timing: 9; 11 or 13 CLK cycles depending on the writeprecompensation + -- for DD floppies and 5; 6 or 7 CLK cycles depending on the write + -- precompensation for HD floppies. + -- To meet the timing requirements of half clocks + -- the WRn is controlled by the following three processes where the one + -- syncs on the positive clock edge and the other on the negative. + -- For more information on the WTn timing see the datasheet of the + -- WD177x floppy disc controller. + + MFM_WR_TIMING: process(RESETn, CLK) + variable CLKMASK_MFM : bit; + begin + if RESETn = '0' then + WR_CNT <= x"F"; + elsif CLK = '1' and CLK' event then + if DATA_STRB = '1' then + -- The CLKMASK_MFM is synchronised to DATA_STRB. This brings one strobe latency. + -- The timing in connection with the data is correct because the MFM encoder state machine + -- causes the data to be 1 DATA_STRB late too. + CLKMASK_MFM := CLKMASK; + end if; + if MFM_STATE = C_10 and MFM_10_STRB = '1' and CLKMASK_MFM = '1' then + WR_CNT <= x"0"; + elsif MFM_STATE = B_01 and MFM_01_STRB = '1' then + WR_CNT <= x"0"; + elsif WR_CNT < x"F" then + WR_CNT <= WR_CNT + '1'; + end if; + end if; + end process MFM_WR_TIMING; + + MFM_WR_OUT: process + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + MFM_In <= '1'; + else + case HDTYPE is + when '1' => -- HD type. + if PRECOMP = EARLY and WR_CNT > x"0" and WR_CNT <= x"9" then + MFM_In <= '0'; -- 9,0 clock cycles for WRn --> early timing + elsif PRECOMP = NOMINAL and WR_CNT > x"0" and WR_CNT <= x"8" then + MFM_In <= '0'; -- 8,0 clock cycles for WRn --> nominal timing + elsif PRECOMP = LATE and WR_CNT > x"0" and WR_CNT <= x"7" then + MFM_In <= '0'; -- 7,0 clock cycles for WRn --> late timing + else + MFM_In <= '1'; + end if; + when '0' => -- DD type. + if PRECOMP = EARLY and WR_CNT > x"0" and WR_CNT <= x"D" then + MFM_In <= '0'; -- 13,0 clock cycles for WRn --> early timing + elsif PRECOMP = NOMINAL and WR_CNT > x"0" and WR_CNT <= x"B" then + MFM_In <= '0'; -- 11,0 clock cycles for WRn --> nominal timing + elsif PRECOMP = LATE and WR_CNT > x"0" and WR_CNT <= x"9" then + MFM_In <= '0'; -- 9,0 clock cycles for WRn --> late timing + else + MFM_In <= '1'; + end if; + end case; + end if; + end process MFM_WR_OUT; + + -- ####################### Decoder stuff ########################### + -- The decoding of the serial FM or MFM encoded data stream + -- is done in the following two processes (Moore machine). + -- The decoder works in principle like a simple toggle Flip-Flop. + -- It is important to synchronise it in a way, that the clock + -- pulses are separated from the data pulses. The principle + -- works for both FM and MFM data due to the digital phase + -- locked loop, which delivers the serial data and the clock + -- strobe. In general this decoder can be understood as the + -- data separator where the digital phase locked loop provides + -- the FM or the MFM decoding. The data separation lives from + -- the fact, that FM and also MFM encoded signals consist of a + -- mixture of alternating data and clock pulses. + -- FM works as follows: + -- every first pulse of the FM signal is a clock pulse and every + -- second pulse is a logic '1' of the data. A missing second + -- pulse represents a logic '0' of the data. + -- MFM works as follows: + -- every first pulse of the MFM signal is a clock pulse. The coding + -- principle causes clock pulses to be absent in some conditions. + -- Every second pulse is a logic '1' of the data. A missing second + -- pulse represents a logic '0' of the data. + -- So FM and MFM compared, the data is represented directly by the + -- second pulses and the data separator has to look only for these. + -- The missing MFM clock pulses do not cause a problem because the + -- digital PLL used in conjunction with this data separator fills + -- up the clock pulses and delivers a PLL_DSTRB containing aequidistant + -- clock strobes and data strobes. + + DEC_REG: process(RESETn, CLK) + begin + if RESETn = '0' then + DEC_STATE <= CLK_PHASE; + elsif CLK = '1' and CLK' event then + DEC_STATE <= NEXT_DEC_STATE; + end if; + end process DEC_REG; + + DEC_LOGIC: process(DEC_STATE, ID_AM, DATA_AM, DDATA_AM, PLL_DSTRB, PLL_D) + begin + case DEC_STATE is + when CLK_PHASE => + if PLL_DSTRB = '1' then + NEXT_DEC_STATE <= DATA_PHASE; + else + NEXT_DEC_STATE <= CLK_PHASE; + end if; + DATA_STRB <= '0'; -- Inactive during clock pulse time. + SD_R <= '0'; -- Inactive during clock pulse time. + when DATA_PHASE => + if ID_AM = '1' or DATA_AM = '1' or DDATA_AM = '1' then + -- Here the state machine is synchronised + -- to separate data and clock pulses correctly. + NEXT_DEC_STATE <= CLK_PHASE; + elsif PLL_DSTRB = '1' then + NEXT_DEC_STATE <= CLK_PHASE; + else + NEXT_DEC_STATE <= DATA_PHASE; + end if; + -- During the data phase valid data appears at SD. + -- The data is valid during DATA_STRB. + DATA_STRB <= PLL_DSTRB; + SD_R <= PLL_D; + end case; + end process DEC_LOGIC; +end architecture BEHAVIOR; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd new file mode 100644 index 0000000..7660aa2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd @@ -0,0 +1,141 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This are the SUSKA MFP IP core's general purpose I/Os. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_GPIO is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + + -- Timer controls: + AER_4 : out bit; + AER_3 : out bit; + + GPIP_IN : in bit_vector(7 downto 0); + GPIP_OUT : out bit_vector(7 downto 0); + GPIP_OUT_EN : buffer bit_vector(7 downto 0); + GP_INT : out bit_vector(7 downto 0) + ); +end entity WF68901IP_GPIO; + +architecture BEHAVIOR of WF68901IP_GPIO is +signal GPDR : bit_vector(7 downto 0); +signal DDR : bit_vector(7 downto 0); +signal AER : bit_vector(7 downto 0); +signal GPDR_I : bit_vector(7 downto 0); +begin + -- These two bits control the timers A and B pulse width operation and the + -- timers A and B event count operation. + AER_4 <= AER(4); + AER_3 <= AER(3); + -- This statement provides 8 XOR units setting the desired interrupt polarity. + -- While the level control is done here, the edge triggering is provided by + -- the interrupt control hardware. The level control is individually for each + -- GPIP port pin. The interrupt edge trigger unit must operate in any case on + -- the low to high transistion of the respective port pin. + GP_INT <= AER xnor GPIP_IN; + + GPIO_REGISTERS: process(RESETn, CLK) + begin + if RESETn = '0' then + GPDR <= (others => '0'); + DDR <= (others => '0'); + AER <= (others => '0'); + elsif CLK = '1' and CLK' event then + if CSn = '0' and DSn = '0' and RWn = '0' then + case RS is + when "00000" => GPDR <= DATA_IN; + when "00001" => AER <= DATA_IN; + when "00010" => DDR <= DATA_IN; + when others => null; + end case; + end if; + end if; + end process GPIO_REGISTERS; + GPIP_OUT <= GPDR; -- Port outputs. + GPIP_OUT_EN <= DDR; -- The DDR is capable to control bitwise the GPIP. + DATA_OUT_EN <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS <= "00010" else '0'; + DATA_OUT <= DDR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00010" else + AER when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00001" else + GPDR_I when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00000" else (others => '0'); + + P_GPDR: process(GPIP_IN, GPIP_OUT_EN, GPDR) + -- Read back control: Read the port pins, if the data direction is configured as input. + -- Read the respective GPDR register bit, if the data direction is configured as output. + begin + for i in 7 downto 0 loop + if GPIP_OUT_EN(i) = '1' then -- Port is configured output. + GPDR_I(i) <= GPDR(i); + else + GPDR_I(i) <= GPIP_IN(i); -- Port is configured input. + end if; + end loop; + end process P_GPDR; +end architecture BEHAVIOR; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd new file mode 100644 index 0000000..91417f8 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd @@ -0,0 +1,391 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the SUSKA MFP IP core interrupt logic file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/06/03 WF +-- Fixed Pending register logic. +-- Revision 2K9A 2009/06/20 WF +-- Fixed interrupt polarity for TA_I and TB_I. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_INTERRUPTS is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + + -- Interrupt control: + IACKn : in bit; + IEIn : in bit; + IEOn : out bit; + IRQn : out bit; + + -- Interrupt sources: + GP_INT : in bit_vector(7 downto 0); + + AER_4 : in bit; + AER_3 : in bit; + TAI : in bit; + TBI : in bit; + TA_PWM : in bit; + TB_PWM : in bit; + TIMER_A_INT : in bit; + TIMER_B_INT : in bit; + TIMER_C_INT : in bit; + TIMER_D_INT : in bit; + + RCV_ERR : in bit; + TRM_ERR : in bit; + RCV_BUF_F : in bit; + TRM_BUF_E : in bit + ); +end entity WF68901IP_INTERRUPTS; + +architecture BEHAVIOR of WF68901IP_INTERRUPTS is +-- Interrupt state machine: +type INT_STATES is (SCAN, REQUEST, VECTOR_OUT); +signal INT_STATE : INT_STATES; +-- The registers: +signal IERA : bit_vector(7 downto 0); +signal IERB : bit_vector(7 downto 0); +signal IPRA : bit_vector(7 downto 0); +signal IPRB : bit_vector(7 downto 0); +signal ISRA : bit_vector(7 downto 0); +signal ISRB : bit_vector(7 downto 0); +signal IMRA : bit_vector(7 downto 0); +signal IMRB : bit_vector(7 downto 0); +signal VR : bit_vector(7 downto 3); +-- Interconnect: +signal VECT_NUMBER : bit_vector(7 downto 0); +signal INT_SRC : bit_vector(15 downto 0); +signal INT_SRC_EDGE : bit_vector(15 downto 0); +signal INT_ENA : bit_vector(15 downto 0); +signal INT_MASK : bit_vector(15 downto 0); +signal INT_PENDING : bit_vector(15 downto 0); +signal INT_SERVICE : bit_vector(15 downto 0); +signal INT_PASS : bit_vector(15 downto 0); +signal INT_OUT : bit_vector(15 downto 0); +signal GP_INT_4 : bit; +signal GP_INT_3 : bit; +begin + -- Interrupt source for the GPI_4 and GPI_3 is normally the respective port pin. + -- But when the timers operate in their PWM modes, the GPI_4 and GPI_3 are associated + -- to timer A and timer B. + -- The xor logic provides polarity control for the interrupt transition. Be aware, + -- that the PWM signals cause an interrupt on the opposite transition like the + -- respective GPIP port pins (with the same AER settings). + --GP_INT_4 <= GP_INT(4) when TA_PWM = '0' else TAI xor AER_4; + --GP_INT_3 <= GP_INT(3) when TB_PWM = '0' else TBI xor AER_3; + GP_INT_4 <= GP_INT(4) when TA_PWM = '0' else TAI xnor AER_4; -- This should be correct. + GP_INT_3 <= GP_INT(3) when TB_PWM = '0' else TBI xnor AER_3; + + + -- Interrupt source priority sorted (15 = highest): + INT_SRC <= GP_INT(7 downto 6) & TIMER_A_INT & RCV_BUF_F & RCV_ERR & TRM_BUF_E & TRM_ERR & TIMER_B_INT & + GP_INT(5) & GP_INT_4 & TIMER_C_INT & TIMER_D_INT & GP_INT_3 & GP_INT(2 downto 0); + + INT_ENA <= IERA & IERB; + INT_MASK <= IMRA & IMRB; + INT_PENDING <= IPRA & IPRB; + INT_SERVICE <= ISRA & ISRB; + INT_OUT <= INT_PENDING and INT_MASK; -- Masking: + + -- Enable the daisy chain, if there is no pending interrupt and + -- the interrupt state machine is not in service. + IEOn <= '0' when INT_OUT = x"0000" and INT_STATE = SCAN else '1'; + + -- Interrupt request: + IRQn <= '0' when INT_OUT /= x"0000" and INT_STATE = REQUEST else '1'; + + EDGE_ENA: process(RESETn, CLK) + -- These are the 16 edge detectors of the 16 interrupt input sources. This + -- process also provides the disabling or enabling via the IERA and IERB registers. + variable LOCK : bit_vector(15 downto 0); + begin + if RESETn = '0' then + INT_SRC_EDGE <= x"0000"; + LOCK := x"0000"; + elsif CLK = '1' and CLK' event then + for i in 15 downto 0 loop + if INT_SRC(i) = '1' and INT_ENA(i) = '1' and LOCK(i) = '0' then + LOCK(i) := '1'; + INT_SRC_EDGE(i) <= '1'; + elsif INT_SRC(i) = '0' then + LOCK(i) := '0'; + INT_SRC_EDGE(i) <= '0'; + else + INT_SRC_EDGE(i) <= '0'; + end if; + end loop; + end if; + end process EDGE_ENA; + + INT_REGISTERS: process(RESETn, CLK) + begin + if RESETn = '0' then + IERA <= (others => '0'); + IERB <= (others => '0'); + IPRA <= (others => '0'); + IPRB <= (others => '0'); + ISRA <= (others => '0'); + ISRB <= (others => '0'); + IMRA <= (others => '0'); + IMRB <= (others => '0'); + elsif CLK = '1' and CLK' event then + if CSn = '0' and DSn = '0' and RWn = '0' then + case RS is + when "00011" => IERA <= DATA_IN; -- Enable A. + when "00100" => IERB <= DATA_IN; -- Enable B. + when "00101" => + -- Only a '0' can be written to the pending register. + for i in 7 downto 0 loop + if DATA_IN(i) = '0' then + IPRA(i) <= '0'; -- Pending A. + end if; + end loop; + when "00110" => + -- Only a '0' can be written to the pending register. + for i in 7 downto 0 loop + if DATA_IN(i) = '0' then + IPRB(i) <= '0'; -- Pending B. + end if; + end loop; + when "00111" => + -- Only a '0' can be written to the in service register. + for i in 7 downto 0 loop + if DATA_IN(i) = '0' then + ISRA(i) <= '0'; -- In Service A. + end if; + end loop; + when "01000" => + -- Only a '0' can be written to the in service register. + for i in 7 downto 0 loop + if DATA_IN(i) = '0' then + ISRB(i) <= '0'; -- In Service B. + end if; + end loop; + when "01001" => IMRA <= DATA_IN; -- Mask A. + when "01010" => IMRB <= DATA_IN; -- Mask B. + when "01011" => VR <= DATA_IN(7 downto 3); -- Vector register. + when others => null; + end case; + end if; + + -- Pending register: + -- set and clear bit logic. + for i in 15 downto 8 loop + if INT_SRC_EDGE(i) = '1' then + IPRA(i-8) <= '1'; + elsif INT_ENA(i) = '0' then + IPRA(i-8) <= '0'; -- Clear by disabling the channel. + elsif INT_PASS(i) = '1' then + IPRA(i-8) <= '0'; -- Clear by passing the interrupt. + end if; + end loop; + for i in 7 downto 0 loop + if INT_SRC_EDGE(i) = '1' then + IPRB(i) <= '1'; + elsif INT_ENA(i) = '0' then + IPRB(i) <= '0'; -- Clear by disabling the channel. + elsif INT_PASS(i) = '1' then + IPRB(i) <= '0'; -- Clear by passing the interrupt. + end if; + end loop; + + -- In-Service register: + -- Set bit logic, VR(3) is the service register enable. + for i in 15 downto 8 loop + if INT_OUT(i) = '1' and INT_PASS(i) = '1' and VR(3) = '1' then + ISRA(i-8) <= '1'; + end if; + end loop; + for i in 7 downto 0 loop + if INT_OUT(i) = '1' and INT_PASS(i) = '1' and VR(3) = '1' then + ISRB(i) <= '1'; + end if; + end loop; + end if; + end process INT_REGISTERS; + DATA_OUT_EN <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS > "00010" and RS <= "01011" else '1' when INT_STATE = VECTOR_OUT else '0'; + + DATA_OUT <= IERA when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00011" else + IERB when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00100" else + IPRA when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00101" else + IPRB when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00110" else + ISRA when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00111" else + ISRB when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01000" else + IMRA when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01001" else + IMRB when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01010" else + VR & "000" when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01011" else + VECT_NUMBER when INT_STATE = VECTOR_OUT else x"00"; + + P_INT_STATE : process(RESETn, CLK) + begin + if RESETn = '0' then + INT_STATE <= SCAN; + elsif CLK = '1' and CLK' event then + case INT_STATE is + when SCAN => + INT_PASS <= x"0000"; + -- Automatic End of Interrupt mode. Service register disabled. + -- The MFP does not respond for an interrupt acknowledge cycle for an uninitialized + -- vector number (VR(7 downto 4) = x"0"). + if INT_OUT /= x"0000" and VR(7 downto 4) /= x"0" and VR(3) = '0' and IEIn = '0' then + INT_STATE <= REQUEST; -- Non masked interrupt is pending. + -- The following 16 are the Software end of interrupt mode. Service register enabled. + -- The MFP does not respond for an interrupt acknowledge cycle for an uninitialized + -- vector number (VR(7 downto 4) = x"0"). The interrupts are prioritized. + elsif INT_OUT /= x"0000" and VR(7 downto 4) /= x"0" and VR(3) = '1' and IEIn = '0' then + if INT_OUT (15) = '1' and INT_SERVICE(15) = '0' then + INT_STATE <= REQUEST; + elsif INT_OUT (14) = '1' and INT_SERVICE(15 downto 14) = "00" then + INT_STATE <= REQUEST; + elsif INT_OUT (13) = '1' and INT_SERVICE(15 downto 13) = "000" then + INT_STATE <= REQUEST; + elsif INT_OUT (12) = '1' and INT_SERVICE(15 downto 12) = x"0" then + INT_STATE <= REQUEST; + elsif INT_OUT (11) = '1' and INT_SERVICE(15 downto 11) = x"0" & '0' then + INT_STATE <= REQUEST; + elsif INT_OUT (10) = '1' and INT_SERVICE(15 downto 10) = x"0" & "00" then + INT_STATE <= REQUEST; + elsif INT_OUT (9) = '1' and INT_SERVICE(15 downto 9) = x"0" & "000" then + INT_STATE <= REQUEST; + elsif INT_OUT (8) = '1' and INT_SERVICE(15 downto 8) = x"00" then + INT_STATE <= REQUEST; + elsif INT_OUT (7) = '1' and INT_SERVICE(15 downto 7) = x"00" & '0' then + INT_STATE <= REQUEST; + elsif INT_OUT (6) = '1' and INT_SERVICE(15 downto 6) = x"00" & "00" then + INT_STATE <= REQUEST; + elsif INT_OUT (5) = '1' and INT_SERVICE(15 downto 5) = x"00" & "000" then + INT_STATE <= REQUEST; + elsif INT_OUT (4) = '1' and INT_SERVICE(15 downto 4) = x"000" then + INT_STATE <= REQUEST; + elsif INT_OUT (3) = '1' and INT_SERVICE(15 downto 3) = x"000" & '0' then + INT_STATE <= REQUEST; + elsif INT_OUT (2) = '1' and INT_SERVICE(15 downto 2) = x"000" & "00" then + INT_STATE <= REQUEST; + elsif INT_OUT (1) = '1' and INT_SERVICE(15 downto 1) = x"000" & "000" then + INT_STATE <= REQUEST; + elsif INT_OUT (0) = '1' and INT_SERVICE(15 downto 0) = x"0000" then + INT_STATE <= REQUEST; + else + INT_STATE <= SCAN; -- Wait for interrupt. + end if; + else + INT_STATE <= SCAN; + end if; + when REQUEST => + if IACKn = '0' and DSn = '0' then -- Vectored interrupt mode. + INT_STATE <= VECTOR_OUT; -- Non masked interrupt is pending. + if INT_OUT(15) = '1' then + INT_PASS(15) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"F"; -- GPI 7. + elsif INT_OUT(14) = '1' then + INT_PASS(14) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"E"; -- GPI 6. + elsif INT_OUT(13) = '1' then + INT_PASS(13) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"D"; -- TIMER A. + elsif INT_OUT(12) = '1' then + INT_PASS(12) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"C"; -- Receive buffer full. + elsif INT_OUT(11) = '1' then + INT_PASS(11) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"B"; -- Receiver error. + elsif INT_OUT(10) = '1' then + INT_PASS(10) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"A"; -- Transmit buffer empty. + elsif INT_OUT(9) = '1' then + INT_PASS(9) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"9"; -- Transmit error. + elsif INT_OUT(8) = '1' then + INT_PASS(8) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"8"; -- Timer B. + elsif INT_OUT(7) = '1' then + INT_PASS(7) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"7"; -- GPI 5. + elsif INT_OUT(6) = '1' then + INT_PASS(6) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"6"; -- GPI 4. + elsif INT_OUT(5) = '1' then + INT_PASS(5) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"5"; -- Timer C. + elsif INT_OUT(4) = '1' then + INT_PASS(4) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"4"; -- Timer D. + elsif INT_OUT(3) = '1' then + INT_PASS(3) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"3"; -- GPI 3. + elsif INT_OUT(2) = '1' then + INT_PASS(2) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"2"; -- GPI 2. + elsif INT_OUT(1) = '1' then + INT_PASS(1) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"1"; -- GPI 1. + elsif INT_OUT(0) = '1' then + INT_PASS(0) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"0"; -- GPI 0. + end if; + -- Polled interrupt mode: End of interrupt by writing to the pending registers. + elsif CSn = '0' and DSn = '0' and RWn = '0' and (RS = "00101" or RS = "00110") then + INT_STATE <= SCAN; + else + INT_STATE <= REQUEST; -- Wait. + end if; + when VECTOR_OUT => + INT_PASS <= x"0000"; + if DSn = '1' or IACKn = '1' then + INT_STATE <= SCAN; -- Finished. + else + INT_STATE <= VECTOR_OUT; -- Wait for processor to read the vector. + end if; + end case; + end if; + end process P_INT_STATE; +end architecture BEHAVIOR; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd new file mode 100644 index 0000000..73c0cdc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd @@ -0,0 +1,263 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the package file containing the component ---- +---- declarations. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; + +package WF68901IP_PKG is +component WF68901IP_USART_TOP + port ( CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + RC : in bit; + TC : in bit; + SI : in bit; + SO : out bit; + SO_EN : out bit; + RX_ERR_INT : out bit; + RX_BUFF_INT : out bit; + TX_ERR_INT : out bit; + TX_BUFF_INT : out bit; + RRn : out bit; + TRn : out bit + ); +end component; + +component WF68901IP_USART_CTRL + port ( + CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + RX_SAMPLE : in bit; + RX_DATA : in bit_vector(7 downto 0); + TX_DATA : out bit_vector(7 downto 0); + SCR_OUT : out bit_vector(7 downto 0); + BF : in bit; + BE : in bit; + FE : in bit; + OE : in bit; + UE : in bit; + PE : in bit; + M_CIP : in bit; + FS_B : in bit; + TX_END : in bit; + CL : out bit_vector(1 downto 0); + ST : out bit_vector(1 downto 0); + FS_CLR : out bit; + RSR_READ : out bit; + TSR_READ : out bit; + UDR_READ : out bit; + UDR_WRITE : out bit; + LOOPBACK : out bit; + SDOUT_EN : out bit; + SD_LEVEL : out bit; + CLK_MODE : out bit; + RE : out bit; + TE : out bit; + P_ENA : out bit; + P_EOn : out bit; + SS : out bit; + BR : out bit + ); +end component; + +component WF68901IP_USART_TX + port ( + CLK : in bit; + RESETn : in bit; + SCR : in bit_vector(7 downto 0); + TX_DATA : in bit_vector(7 downto 0); + SDATA_OUT : out bit; + TXCLK : in bit; + CL : in bit_vector(1 downto 0); + ST : in bit_vector(1 downto 0); + TE : in bit; + BR : in bit; + P_ENA : in bit; + P_EOn : in bit; + UDR_WRITE : in bit; + TSR_READ : in bit; + CLK_MODE : in bit; + TX_END : out bit; + UE : out bit; + BE : out bit + ); +end component; + +component WF68901IP_USART_RX + port ( + CLK : in bit; + RESETn : in bit; + SCR : in bit_vector(7 downto 0); + RX_SAMPLE : out bit; + RX_DATA : out bit_vector(7 downto 0); + RXCLK : in bit; + SDATA_IN : in bit; + CL : in bit_vector(1 downto 0); + ST : in bit_vector(1 downto 0); + P_ENA : in bit; + P_EOn : in bit; + CLK_MODE : in bit; + RE : in bit; + FS_CLR : in bit; + SS : in bit; + RSR_READ : in bit; + UDR_READ : in bit; + M_CIP : out bit; + FS_B : out bit; + BF : out bit; + OE : out bit; + PE : out bit; + FE : out bit + ); +end component; + +component WF68901IP_INTERRUPTS + port ( + CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + IACKn : in bit; + IEIn : in bit; + IEOn : out bit; + IRQn : out bit; + GP_INT : in bit_vector(7 downto 0); + AER_4 : in bit; + AER_3 : in bit; + TAI : in bit; + TBI : in bit; + TA_PWM : in bit; + TB_PWM : in bit; + TIMER_A_INT : in bit; + TIMER_B_INT : in bit; + TIMER_C_INT : in bit; + TIMER_D_INT : in bit; + RCV_ERR : in bit; + TRM_ERR : in bit; + RCV_BUF_F : in bit; + TRM_BUF_E : in bit + ); +end component; + +component WF68901IP_GPIO + port ( + CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + AER_4 : out bit; + AER_3 : out bit; + GPIP_IN : in bit_vector(7 downto 0); + GPIP_OUT : out bit_vector(7 downto 0); + GPIP_OUT_EN : out bit_vector(7 downto 0); + GP_INT : out bit_vector(7 downto 0) + ); +end component; + +component WF68901IP_TIMERS + port ( + CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + XTAL1 : in bit; + TAI : in bit; + TBI : in bit; + AER_4 : in bit; + AER_3 : in bit; + TA_PWM : out bit; + TB_PWM : out bit; + TAO : out bit; + TBO : out bit; + TCO : out bit; + TDO : out bit; + TIMER_A_INT : out bit; + TIMER_B_INT : out bit; + TIMER_C_INT : out bit; + TIMER_D_INT : out bit + ); +end component; + +end WF68901IP_PKG; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd new file mode 100644 index 0000000..b339af5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd @@ -0,0 +1,533 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the SUSKA MFP IP core timers logic file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K7A 2006/12/28 WF +-- The timer is modified to work on the CLK instead +-- of XTAL1. This modification is done to provide +-- a synchronous design. +-- Revision 2K8A 2008/02/29 WF +-- Fixed a serious prescaler bug. +-- Revision 2K9A 20090620 WF +-- Introduced timer readback registers. +-- TIMER_x_INT is now a strobe. +-- Minor improvements. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_TIMERS is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + + -- Timers and timer control: + XTAL1 : in bit; -- Use an oszillator instead of a quartz. + TAI : in bit; + TBI : in bit; + AER_4 : in bit; + AER_3 : in bit; + TA_PWM : out bit; -- Indicates, that timer A is in PWM mode (used in Interrupt logic). + TB_PWM : out bit; -- Indicates, that timer B is in PWM mode (used in Interrupt logic). + TAO : buffer bit; + TBO : buffer bit; + TCO : buffer bit; + TDO : buffer bit; + TIMER_A_INT : out bit; + TIMER_B_INT : out bit; + TIMER_C_INT : out bit; + TIMER_D_INT : out bit + ); +end entity WF68901IP_TIMERS; + +architecture BEHAVIOR of WF68901IP_TIMERS is +signal XTAL1_S : bit; +signal XTAL_STRB : bit; +signal TACR : bit_vector(4 downto 0); -- Timer A control register. +signal TBCR : bit_vector(4 downto 0); -- Timer B control register. +signal TCDCR : bit_vector(5 downto 0); -- Timer C and D control register. +signal TADR : bit_vector(7 downto 0); -- Timer A data register. +signal TBDR : bit_vector(7 downto 0); -- Timer B data register. +signal TCDR : bit_vector(7 downto 0); -- Timer C data register. +signal TDDR : bit_vector(7 downto 0); -- Timer D data register. +signal TIMER_A : std_logic_vector(7 downto 0); -- Timer A count register. +signal TIMER_B : std_logic_vector(7 downto 0); -- Timer B count register. +signal TIMER_C : std_logic_vector(7 downto 0); -- Timer C count register. +signal TIMER_D : std_logic_vector(7 downto 0); -- Timer D count register. +signal TIMER_R_A : bit_vector(7 downto 0); -- Timer A readback register. +signal TIMER_R_B : bit_vector(7 downto 0); -- Timer B readback register. +signal TIMER_R_C : bit_vector(7 downto 0); -- Timer C readback register. +signal TIMER_R_D : bit_vector(7 downto 0); -- Timer D readback register. +signal A_CNTSTRB : bit; +signal B_CNTSTRB : bit; +signal C_CNTSTRB : bit; +signal D_CNTSTRB : bit; +signal TAI_I : bit; +signal TBI_I : bit; +signal TAI_STRB : bit; -- Strobe for the event counter mode. +signal TBI_STRB : bit; -- Strobe for the event counter mode. +signal TAO_I : bit; -- Timer A output signal. +signal TBO_I : bit; -- Timer A output signal. +begin + SYNC: process + -- This process provides a 'clean' XTAL1. + -- Without this sync, the edge detector for + -- XTAL_STRB does not work properly. + begin + wait until CLK = '1' and CLK' event; + XTAL1_S <= XTAL1; + -- Polarity control for the event counter and the PWM mode: + TAI_I <= TAI xnor AER_4; + TBI_I <= TBI xnor AER_3; + end process SYNC; + + -- Output enables for timer A and timer B: + -- The outputs are held low for asserted reset flags in the control registers TACR + -- and TBCR but also during a write operation to these registers. + TAO <= '0' when TACR(4) = '1' else + '0' when CSn = '0' and DSn = '0' and RWn = '0' and RS = "01100" else TAO_I; + TBO <= '0' when TBCR(4) = '1' else + '0' when CSn = '0' and DSn = '0' and RWn = '0' and RS = "01101" else TBO_I; + + -- Control outputs for the PWM modi of the timers A and B. These + -- controls are used in the interrupt logic to select the interrupt + -- sources GPIP4 or TAI repective GPIP3 or TBI. + TA_PWM <= '1' when TACR(3 downto 0) > x"8" else '0'; + TB_PWM <= '1' when TBCR(3 downto 0) > x"8" else '0'; + + TIMER_REGISTERS: process(RESETn, CLK) + begin + if RESETn = '0' then + TACR <= (others => '0'); + TBCR <= (others => '0'); + TCDCR <= (others => '0'); + -- TADR <= Do not clear during reset! + -- TBDR <= Do not clear during reset! + -- TCDR <= Do not clear during reset! + -- TDDR <= Do not clear during reset! + elsif CLK = '1' and CLK' event then + if CSn = '0' and DSn = '0' and RWn = '0' then + case RS is + when "01100" => TACR <= DATA_IN(4 downto 0); + when "01101" => TBCR <= DATA_IN(4 downto 0); + when "01110" => TCDCR <= DATA_IN(6 downto 4) & DATA_IN(2 downto 0); + when "01111" => TADR <= DATA_IN; + when "10000" => TBDR <= DATA_IN; + when "10001" => TCDR <= DATA_IN; + when "10010" => TDDR <= DATA_IN; + when others => null; + end case; + end if; + end if; + end process TIMER_REGISTERS; + + TIMER_READBACK : process(RESETn, CLK) + -- This process provides the readback information for the + -- timers A to D. The information read is the information + -- last clocked into the timer read register when the DSn + -- pin had last gone high prior to the current read cycle. + variable READ_A : boolean; + variable READ_B : boolean; + variable READ_C : boolean; + variable READ_D : boolean; + begin + if RESETn = '0' then + TIMER_R_A <= x"00"; + TIMER_R_B <= x"00"; + TIMER_R_C <= x"00"; + TIMER_R_D <= x"00"; + elsif CLK = '1' and CLK' event then + if DSn = '0' and RS = "01111" then + READ_A := true; + elsif DSn = '0' and RS = "10000" then + READ_B := true; + elsif DSn = '0' and RS = "10001" then + READ_C := true; + elsif DSn = '0' and RS = "10010" then + READ_D := true; + elsif DSn = '1' and READ_A = true then + TIMER_R_A <= To_BitVector(TIMER_A); + READ_A := false; + elsif DSn = '1' and READ_B = true then + TIMER_R_B <= To_BitVector(TIMER_B); + READ_B := false; + elsif DSn = '1' and READ_C = true then + TIMER_R_C <= To_BitVector(TIMER_C); + READ_C := false; + elsif DSn = '1' and READ_D = true then + TIMER_R_D <= To_BitVector(TIMER_D); + READ_D := false; + end if; + end if; + end process TIMER_READBACK; + + DATA_OUT_EN <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS > "01011" and RS <= "10010" else '0'; + DATA_OUT <= "000" & TACR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01100" else + "000" & TBCR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01101" else + '0' & TCDCR(5 downto 3) & '0' & TCDCR(2 downto 0) when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01110" else + TIMER_R_A when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01111" else + TIMER_R_B when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10000" else + TIMER_R_C when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10001" else + TIMER_R_D when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10010" else (others => '0'); + + XTAL_STROBE: process(RESETn, CLK) + -- This process provides a strobe with 1 clock cycle + -- (CLK) length after every rising edge of XTAL1. + variable LOCK : boolean; + begin + if RESETn = '0' then + XTAL_STRB <= '0'; + elsif CLK = '1' and CLK' event then + if XTAL1_S = '1' and LOCK = false then + XTAL_STRB <= '1'; + LOCK := true; + elsif XTAL1_S = '0' then + XTAL_STRB <= '0'; + LOCK := false; + else + XTAL_STRB <= '0'; + end if; + end if; + end process XTAL_STROBE; + + TAI_STROBE: process(RESETn, CLK) + variable LOCK : boolean; + begin + if RESETn = '0' then + TAI_STRB <= '0'; + elsif CLK = '1' and CLK' event then + if TAI_I = '1' and XTAL_STRB = '1' and LOCK = false then + LOCK := true; + TAI_STRB <= '1'; + elsif TAI_I = '0' then + LOCK := false; + TAI_STRB <= '0'; + else + TAI_STRB <= '0'; + end if; + end if; + end process TAI_STROBE; + + TBI_STROBE: process(RESETn, CLK) + variable LOCK : boolean; + begin + if RESETn = '0' then + TBI_STRB <= '0'; + elsif CLK = '1' and CLK' event then + if TBI_I = '1' and XTAL_STRB = '1' and LOCK = false then + LOCK := true; + TBI_STRB <= '1'; + elsif TBI_I = '0' then + LOCK := false; + TBI_STRB <= '0'; + else + TBI_STRB <= '0'; + end if; + end if; + end process TBI_STROBE; + + PRESCALE_A: process + -- The prescalers work even if the RESETn is asserted. + variable PRESCALE : std_logic_vector(7 downto 0); + begin + wait until CLK = '1' and CLK' event; + A_CNTSTRB <= '0'; + if PRESCALE > x"00" and XTAL_STRB = '1' then + PRESCALE := PRESCALE - '1'; + elsif XTAL_STRB = '1' then + case TACR(2 downto 0) is + when "111" => PRESCALE := x"C7"; -- Prescaler = 200. + when "110" => PRESCALE := x"63"; -- Prescaler = 100. + when "101" => PRESCALE := x"3F"; -- Prescaler = 64. + when "100" => PRESCALE := x"31"; -- Prescaler = 50. + when "011" => PRESCALE := x"0F"; -- Prescaler = 16. + when "010" => PRESCALE := x"09"; -- Prescaler = 10. + when "001" => PRESCALE := x"03"; -- Prescaler = 4. + when "000" => PRESCALE := x"00"; -- Timer stopped or event count mode. + end case; + A_CNTSTRB <= '1'; + end if; + end process PRESCALE_A; + + PRESCALE_B: process + -- The prescalers work even if the RESETn is asserted. + variable PRESCALE : std_logic_vector(7 downto 0); + begin + wait until CLK = '1' and CLK' event; + B_CNTSTRB <= '0'; + if PRESCALE > x"00" and XTAL_STRB = '1' then + PRESCALE := PRESCALE - '1'; + elsif XTAL_STRB = '1' then + case TBCR(2 downto 0) is + when "111" => PRESCALE := x"C7"; -- Prescaler = 200. + when "110" => PRESCALE := x"63"; -- Prescaler = 100. + when "101" => PRESCALE := x"3F"; -- Prescaler = 64. + when "100" => PRESCALE := x"31"; -- Prescaler = 50. + when "011" => PRESCALE := x"0F"; -- Prescaler = 16. + when "010" => PRESCALE := x"09"; -- Prescaler = 10. + when "001" => PRESCALE := x"03"; -- Prescaler = 4. + when "000" => PRESCALE := x"00"; -- Timer stopped or event count mode. + end case; + B_CNTSTRB <= '1'; + end if; + end process PRESCALE_B; + + PRESCALE_C: process + -- The prescalers work even if the RESETn is asserted. + variable PRESCALE : std_logic_vector(7 downto 0); + begin + wait until CLK = '1' and CLK' event; + C_CNTSTRB <= '0'; + if PRESCALE > x"00" and XTAL_STRB = '1' then + PRESCALE := PRESCALE - '1'; + elsif XTAL_STRB = '1' then + case TCDCR(5 downto 3) is + when "111" => PRESCALE := x"C7"; -- Prescaler = 200. + when "110" => PRESCALE := x"63"; -- Prescaler = 100. + when "101" => PRESCALE := x"3F"; -- Prescaler = 64. + when "100" => PRESCALE := x"31"; -- Prescaler = 50. + when "011" => PRESCALE := x"0F"; -- Prescaler = 16. + when "010" => PRESCALE := x"09"; -- Prescaler = 10. + when "001" => PRESCALE := x"03"; -- Prescaler = 4. + when "000" => PRESCALE := x"00"; -- Timer stopped. + end case; + C_CNTSTRB <= '1'; + end if; + end process PRESCALE_C; + + PRESCALE_D: process + -- The prescalers work even if the RESETn is asserted. + variable PRESCALE : std_logic_vector(7 downto 0); + begin + wait until CLK = '1' and CLK' event; + D_CNTSTRB <= '0'; + if PRESCALE > x"00" and XTAL_STRB = '1' then + PRESCALE := PRESCALE - '1'; + elsif XTAL_STRB = '1' then + case TCDCR(2 downto 0) is + when "111" => PRESCALE := x"C7"; -- Prescaler = 200. + when "110" => PRESCALE := x"63"; -- Prescaler = 100. + when "101" => PRESCALE := x"3F"; -- Prescaler = 64. + when "100" => PRESCALE := x"31"; -- Prescaler = 50. + when "011" => PRESCALE := x"0F"; -- Prescaler = 16. + when "010" => PRESCALE := x"09"; -- Prescaler = 10. + when "001" => PRESCALE := x"03"; -- Prescaler = 4. + when "000" => PRESCALE := x"00"; -- Timer stopped. + end case; + D_CNTSTRB <= '1'; + end if; + end process PRESCALE_D; + + TIMERA: process(RESETn, CLK) + begin + if RESETn = '0' then + -- Do not clear the timer registers during system reset. + TAO_I <= '0'; + TIMER_A_INT <= '0'; + elsif CLK = '1' and CLK' event then + TIMER_A_INT <= '0'; + -- + if CSn = '0' and DSn = '0' and RWn = '0' and RS = "01111" and TACR(3 downto 0) = x"0" then + -- The timer is reloaded simultaneously to it's timer data register, if it is off. + -- The loading works asynchronous due to the possibly low XTAL1 clock. + TIMER_A <= To_StdLogicVector(DATA_IN); + else + case TACR(3 downto 0) is + when x"0" => -- Timer is off. + TAO_I <= '0'; + when x"1" | x"2" | x"3" | x"4" | x"5" | x"6" | x"7" => -- Delay counter mode. + if A_CNTSTRB = '1' and TIMER_A /= x"01" then -- Count. + TIMER_A <= TIMER_A - '1'; + elsif A_CNTSTRB = '1' and TIMER_A = x"01" then -- Reload. + TIMER_A <= To_StdLogicVector(TADR); + TAO_I <= not TAO_I; -- Toggle the timer A output pin. + TIMER_A_INT <= '1'; + end if; + when x"8" => -- Event count operation. + if TAI_STRB = '1' and TIMER_A /= x"01" then -- Count. + TIMER_A <= TIMER_A - '1'; + elsif TAI_STRB = '1' and TIMER_A = x"01" then -- Reload. + TIMER_A <= To_StdLogicVector(TADR); + TAO_I <= not TAO_I; -- Toggle the timer A output pin. + TIMER_A_INT <= '1'; + end if; + when x"9" | x"A" | x"B" | x"C" | x"D" | x"E" | x"F" => -- PWM mode. + if TAI_I = '1' and A_CNTSTRB = '1' and TIMER_A /= x"01" then -- Count. + TIMER_A <= TIMER_A - '1'; + elsif TAI_I = '1' and A_CNTSTRB = '1' and TIMER_A = x"01" then -- Reload. + TIMER_A <= To_StdLogicVector(TADR); + TAO_I <= not TAO_I; -- Toggle the timer A output pin. + TIMER_A_INT <= '1'; + end if; + end case; + end if; + end if; + end process TIMERA; + + TIMERB: process(RESETn, CLK) + begin + if RESETn = '0' then + -- Do not clear the timer registers during system reset. + TBO_I <= '0'; + TIMER_B_INT <= '0'; + elsif CLK = '1' and CLK' event then + TIMER_B_INT <= '0'; + -- + if CSn = '0' and DSn = '0' and RWn = '0' and RS = "10000" and TBCR(3 downto 0) = x"0" then + -- The timer is reloaded simultaneously to it's timer data register, if it is off. + -- The loading works asynchronous due to the possibly low XTAL1 clock. + TIMER_B <= To_StdLogicVector(DATA_IN); + else + case TBCR(3 downto 0) is + when x"0" => -- Timer is off. + TBO_I <= '0'; + when x"1" | x"2" | x"3" | x"4" | x"5" | x"6" | x"7" => -- Delay counter mode. + if B_CNTSTRB = '1' and TIMER_B /= x"01" then -- Count. + TIMER_B <= TIMER_B - '1'; + elsif B_CNTSTRB = '1' and TIMER_B = x"01" then -- Reload. + TIMER_B <= To_StdLogicVector(TBDR); + TBO_I <= not TBO_I; -- Toggle the timer B output pin. + TIMER_B_INT <= '1'; + end if; + when x"8" => -- Event count operation. + if TBI_STRB = '1' and TIMER_B /= x"01" then -- Count. + TIMER_B <= TIMER_B - '1'; + elsif TBI_STRB = '1' and TIMER_B = x"01" then -- Reload. + TIMER_B <= To_StdLogicVector(TBDR); + TBO_I <= not TBO_I; -- Toggle the timer B output pin. + TIMER_B_INT <= '1'; + end if; + when x"9" | x"A" | x"B" | x"C" | x"D" | x"E" | x"F" => -- PWM mode. + if TBI_I = '1' and B_CNTSTRB = '1' and TIMER_B /= x"01" then -- Count. + TIMER_B <= TIMER_B - '1'; + elsif TBI_I = '1' and B_CNTSTRB = '1' and TIMER_B = x"01" then -- Reload. + TIMER_B <= To_StdLogicVector(TBDR); + TBO_I <= not TBO_I; -- Toggle the timer B output pin. + TIMER_B_INT <= '1'; + end if; + end case; + end if; + end if; + end process TIMERB; + + TIMERC: process(RESETn, CLK) + begin + if RESETn = '0' then + -- Do not clear the timer registers during system reset. + TCO <= '0'; + TIMER_C_INT <= '0'; + elsif CLK = '1' and CLK' event then + TIMER_C_INT <= '0'; + -- + if CSn = '0' and DSn = '0' and RWn = '0' and RS = "10001" and TCDCR(5 downto 3) = "000" then + -- The timer is reloaded simultaneously to it's timer data register, if it is off. + -- The loading works asynchronous due to the possibly low XTAL1 clock. + TIMER_C <= To_StdLogicVector(DATA_IN); + else + case TCDCR(5 downto 3) is + when "000" => -- Timer is off. + TCO <= '0'; + when others => -- Delay counter mode. + if C_CNTSTRB = '1' and TIMER_C /= x"01" then -- Count. + TIMER_C <= TIMER_C - '1'; + elsif C_CNTSTRB = '1' and TIMER_C = x"01" then -- Reload. + TIMER_C <= To_StdLogicVector(TCDR); + TCO <= not TCO; -- Toggle the timer C output pin. + TIMER_C_INT <= '1'; + end if; + end case; + end if; + end if; + end process TIMERC; + + TIMERD: process(RESETn, CLK) + begin + if RESETn = '0' then + -- Do not clear the timer registers during system reset. + TDO <= '0'; + TIMER_D_INT <= '0'; + elsif CLK = '1' and CLK' event then + TIMER_D_INT <= '0'; + -- + if CSn = '0' and DSn = '0' and RWn = '0' and RS = "10010" and TCDCR(2 downto 0) = "000" then + -- The timer is reloaded simultaneously to it's timer data register, if it is off. + -- The loading works asynchronous due to the possibly low XTAL1 clock. + TIMER_D <= To_StdLogicVector(DATA_IN); + else + case TCDCR(2 downto 0) is + when "000" => -- Timer is off. + TDO <= '0'; + when others => -- Delay counter mode. + if D_CNTSTRB = '1' and TIMER_D /= x"01" then -- Count. + TIMER_D <= TIMER_D - '1'; + elsif D_CNTSTRB = '1' and TIMER_D = x"01" then -- Reload. + TIMER_D <= To_StdLogicVector(TDDR); + TDO <= not TDO; -- Toggle the timer D output pin. + TIMER_D_INT <= '1'; + end if; + end case; + end if; + end if; + end process TIMERD; +end architecture BEHAVIOR; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd new file mode 100644 index 0000000..783ba56 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd @@ -0,0 +1,213 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the SUSKA MFP IP core top level file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K7A 2006/12/28 WF +-- The timer is modified to work on the CLK instead +-- of XTAL1. This modification is done to provide +-- a synchronous design. +-- Revision 2K8B 2008/12/24 WF +-- Rewritten this top level file as a wrapper for the top_soc file. +-- + +use work.wf68901ip_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_TOP is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + DTACKn : out std_logic; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA : inout std_logic_vector(7 downto 0); + GPIP : inout std_logic_vector(7 downto 0); + + -- Interrupt control: + IACKn : in bit; + IEIn : in bit; + IEOn : out bit; + IRQn : out std_logic; + + -- Timers and timer control: + XTAL1 : in bit; -- Use an oszillator instead of a quartz. + TAI : in bit; + TBI : in bit; + TAO : out bit; + TBO : out bit; + TCO : out bit; + TDO : out bit; + + -- Serial I/O control: + RC : in bit; + TC : in bit; + SI : in bit; + SO : out std_logic; + + -- DMA control: + RRn : out bit; + TRn : out bit + ); +end entity WF68901IP_TOP; + +architecture STRUCTURE of WF68901IP_TOP is +component WF68901IP_TOP_SOC + port(CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + DTACKn : out bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + GPIP_IN : in bit_vector(7 downto 0); + GPIP_OUT : out bit_vector(7 downto 0); + GPIP_EN : out bit_vector(7 downto 0); + IACKn : in bit; + IEIn : in bit; + IEOn : out bit; + IRQn : out bit; + XTAL1 : in bit; + TAI : in bit; + TBI : in bit; + TAO : out bit; + TBO : out bit; + TCO : out bit; + TDO : out bit; + RC : in bit; + TC : in bit; + SI : in bit; + SO : out bit; + SO_EN : out bit; + RRn : out bit; + TRn : out bit + ); +end component; +-- +signal DTACK_In : bit; +signal IRQ_In : bit; +signal DATA_OUT : std_logic_vector(7 downto 0); +signal DATA_EN : bit; +signal GPIP_IN : bit_vector(7 downto 0); +signal GPIP_OUT : bit_vector(7 downto 0); +signal GPIP_EN : bit_vector(7 downto 0); +signal SO_I : bit; +signal SO_EN : bit; +begin + DTACKn <= '0' when DTACK_In = '0' else 'Z'; -- Open drain. + IRQn <= '0' when IRQ_In = '0' else 'Z'; -- Open drain. + + DATA <= DATA_OUT when DATA_EN = '1' else (others => 'Z'); + + GPIP_IN <= To_BitVector(GPIP); + + P_GPIP_OUT: process(GPIP_OUT, GPIP_EN) + begin + for i in 7 downto 0 loop + if GPIP_EN(i) = '1' then + case GPIP_OUT(i) is + when '0' => GPIP(i) <= '0'; + when others => GPIP(i) <= '1'; + end case; + else + GPIP(i) <= 'Z'; + end if; + end loop; + end process P_GPIP_OUT; + + SO <= '0' when SO_I = '0' and SO_EN = '1' else + '1' when SO_I = '1' and SO_EN = '1' else 'Z'; + + I_MFP: WF68901IP_TOP_SOC + port map(CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + DTACKn => DTACK_In, + RS => RS, + DATA_IN => DATA, + DATA_OUT => DATA_OUT, + DATA_EN => DATA_EN, + GPIP_IN => GPIP_IN, + GPIP_OUT => GPIP_OUT, + GPIP_EN => GPIP_EN, + IACKn => IACKn, + IEIn => IEIn, + IEOn => IEOn, + IRQn => IRQ_In, + XTAL1 => XTAL1, + TAI => TAI, + TBI => TBI, + TAO => TAO, + TBO => TBO, + TCO => TCO, + TDO => TDO, + RC => RC, + TC => TC, + SI => SI, + SO => SO_I, + SO_EN => SO_EN, + RRn => RRn, + TRn => TRn + ); +end architecture STRUCTURE; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd new file mode 100644 index 0000000..1e559d9 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd @@ -0,0 +1,309 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the SUSKA MFP IP core top level file. ---- +---- Top level file for use in systems on programmable chips. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Top level file provided for SOC (systems on programmable chips). +-- Revision 2K7A 2006/12/28 WF +-- The timer is modified to work on the CLK instead +-- of XTAL1. This modification is done to provide +-- a synchronous design. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- DTACK_OUTn has now synchronous reset to meet preset requirement. +-- +-- + +use work.wf68901ip_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_TOP_SOC is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + DTACKn : out bit; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + GPIP_IN : in bit_vector(7 downto 0); + GPIP_OUT : out bit_vector(7 downto 0); + GPIP_EN : out bit_vector(7 downto 0); + + -- Interrupt control: + IACKn : in bit; + IEIn : in bit; + IEOn : out bit; + IRQn : out bit; + + -- Timers and timer control: + XTAL1 : in bit; -- Use an oszillator instead of a quartz. + TAI : in bit; + TBI : in bit; + TAO : out bit; + TBO : out bit; + TCO : out bit; + TDO : out bit; + + -- Serial I/O control: + RC : in bit; + TC : in bit; + SI : in bit; + SO : out bit; + SO_EN : out bit; + + -- DMA control: + RRn : out bit; + TRn : out bit + ); +end entity WF68901IP_TOP_SOC; + +architecture STRUCTURE of WF68901IP_TOP_SOC is +signal DATA_IN_I : bit_vector(7 downto 0); +signal DTACK_In : bit; +signal DTACK_LOCK : boolean; +signal DTACK_OUTn : bit; +signal RX_ERR_INT_I : bit; +signal TX_ERR_INT_I : bit; +signal RX_BUFF_INT_I : bit; +signal TX_BUFF_INT_I : bit; +signal DATA_OUT_USART_I : bit_vector(7 downto 0); +signal DATA_OUT_EN_USART_I : bit; +signal DATA_OUT_INT_I : bit_vector(7 downto 0); +signal DATA_OUT_EN_INT_I : bit; +signal DATA_OUT_GPIO_I : bit_vector(7 downto 0); +signal DATA_OUT_EN_GPIO_I : bit; +signal DATA_OUT_TIMERS_I : bit_vector(7 downto 0); +signal DATA_OUT_EN_TIMERS_I : bit; +signal SO_I : bit; +signal SO_EN_I : bit; +signal GPIP_IN_I : bit_vector(7 downto 0); +signal GPIP_OUT_I : bit_vector(7 downto 0); +signal GPIP_EN_I : bit_vector(7 downto 0); +signal GP_INT_I : bit_vector(7 downto 0); +signal TIMER_A_INT_I : bit; +signal TIMER_B_INT_I : bit; +signal TIMER_C_INT_I : bit; +signal TIMER_D_INT_I : bit; +signal IRQ_In : bit; +signal AER_4_I : bit; +signal AER_3_I : bit; +signal TA_PWM_I : bit; +signal TB_PWM_I : bit; +begin + -- Interrupt request (open drain): + IRQn <= IRQ_In; + + -- Serial data output: + SO <= SO_I; + SO_EN <= SO_EN_I and RESETn; + + -- General purpose port: + GPIP_IN_I <= GPIP_IN; + GPIP_OUT <= GPIP_OUT_I; + GPIP_EN <= GPIP_EN_I; + + DATA_IN_I <= To_BitVector(DATA_IN); + DATA_EN <= DATA_OUT_EN_USART_I or DATA_OUT_EN_INT_I or DATA_OUT_EN_GPIO_I or DATA_OUT_EN_TIMERS_I; + -- Output data multiplexer: + DATA_OUT <= To_StdLogicVector(DATA_OUT_USART_I) when DATA_OUT_EN_USART_I = '1' else + To_StdLogicVector(DATA_OUT_INT_I) when DATA_OUT_EN_INT_I = '1' else + To_StdLogicVector(DATA_OUT_GPIO_I) when DATA_OUT_EN_GPIO_I = '1' else + To_StdLogicVector(DATA_OUT_TIMERS_I) when DATA_OUT_EN_TIMERS_I = '1' else (others => '1'); + + -- Data acknowledge handshake is provided by the following statement and the consecutive two + -- processes. For more information refer to the M68000 family reference manual. + DTACK_In <= '0' when CSn = '0' and DSn = '0' and RS <= "10111" else -- Read and write operation. + '0' when IACKn = '0' and DSn = '0' and IEIn = '0' else '1'; -- Interrupt vector data acknowledge. + + P_DTACK_LOCK: process + -- This process releases a data acknowledge detect, one rising clock + -- edge after the DTACK_In occured. This is necessary to ensure write + -- data to registers for there is one rising clock edge required. + begin + wait until CLK = '1' and CLK' event; + if DTACK_In = '0' then + DTACK_LOCK <= false; + else + DTACK_LOCK <= true; + end if; + end process P_DTACK_LOCK; + + DTACK_OUT: process + -- The DTACKn port pin is released on the falling clock edge after the data + -- acknowledge detect (DTACK_LOCK) is asserted. The DTACKn is deasserted + -- immediately when there is no further register access DTACK_In = '1'; + begin + wait until CLK = '0' and CLK' event; + if RESETn = '0' then + DTACK_OUTn <= '1'; + elsif DTACK_In = '1' then + DTACK_OUTn <= '1'; + elsif DTACK_LOCK = false then + DTACK_OUTn <= '0'; + end if; + end process DTACK_OUT; + DTACKn <= '0' when DTACK_OUTn = '0' else '1'; + + I_USART: WF68901IP_USART_TOP + port map( + CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + DATA_OUT => DATA_OUT_USART_I, + DATA_OUT_EN => DATA_OUT_EN_USART_I, + RC => RC, + TC => TC, + SI => SI, + SO => SO_I, + SO_EN => SO_EN_I, + RX_ERR_INT => RX_ERR_INT_I, + RX_BUFF_INT => RX_BUFF_INT_I, + TX_ERR_INT => TX_ERR_INT_I, + TX_BUFF_INT => TX_BUFF_INT_I, + RRn => RRn, + TRn => TRn + ); + + I_INTERRUPTS: WF68901IP_INTERRUPTS + port map( + CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + DATA_OUT => DATA_OUT_INT_I, + DATA_OUT_EN => DATA_OUT_EN_INT_I, + IACKn => IACKn, + IEIn => IEIn, + IEOn => IEOn, + IRQn => IRQ_In, + GP_INT => GP_INT_I, + AER_4 => AER_4_I, + AER_3 => AER_3_I, + TAI => TAI, + TBI => TBI, + TA_PWM => TA_PWM_I, + TB_PWM => TB_PWM_I, + TIMER_A_INT => TIMER_A_INT_I, + TIMER_B_INT => TIMER_B_INT_I, + TIMER_C_INT => TIMER_C_INT_I, + TIMER_D_INT => TIMER_D_INT_I, + RCV_ERR => RX_ERR_INT_I, + TRM_ERR => TX_ERR_INT_I, + RCV_BUF_F => RX_BUFF_INT_I, + TRM_BUF_E => TX_BUFF_INT_I + ); + + I_GPIO: WF68901IP_GPIO + port map( + CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + DATA_OUT => DATA_OUT_GPIO_I, + DATA_OUT_EN => DATA_OUT_EN_GPIO_I, + AER_4 => AER_4_I, + AER_3 => AER_3_I, + GPIP_IN => GPIP_IN_I, + GPIP_OUT => GPIP_OUT_I, + GPIP_OUT_EN => GPIP_EN_I, + GP_INT => GP_INT_I + ); + + I_TIMERS: WF68901IP_TIMERS + port map( + CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + DATA_OUT => DATA_OUT_TIMERS_I, + DATA_OUT_EN => DATA_OUT_EN_TIMERS_I, + XTAL1 => XTAL1, + AER_4 => AER_4_I, + AER_3 => AER_3_I, + TAI => TAI, + TBI => TBI, + TAO => TAO, + TBO => TBO, + TCO => TCO, + TDO => TDO, + TA_PWM => TA_PWM_I, + TB_PWM => TB_PWM_I, + TIMER_A_INT => TIMER_A_INT_I, + TIMER_B_INT => TIMER_B_INT_I, + TIMER_C_INT => TIMER_C_INT_I, + TIMER_D_INT => TIMER_D_INT_I + ); +end architecture STRUCTURE; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd new file mode 100644 index 0000000..8e7c3cc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd @@ -0,0 +1,191 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- This is the SUSKA MFP IP core USART control file. ---- +---- ---- +---- Control unit and status logic. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_USART_CTRL is + port ( + -- System Control: + CLK : in bit; + RESETn : in bit; + + -- Bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + + -- USART data register + RX_SAMPLE : in bit; + RX_DATA : in bit_vector(7 downto 0); + TX_DATA : out bit_vector(7 downto 0); + SCR_OUT : out bit_vector(7 downto 0); + + -- USART control inputs: + BF : in bit; + BE : in bit; + FE : in bit; + OE : in bit; + UE : in bit; + PE : in bit; + M_CIP : in bit; + FS_B : in bit; + TX_END : in bit; + + -- USART control outputs: + CL : out bit_vector(1 downto 0); + ST : out bit_vector(1 downto 0); + FS_CLR : out bit; + UDR_WRITE : out bit; + UDR_READ : out bit; + RSR_READ : out bit; + TSR_READ : out bit; + LOOPBACK : out bit; + SDOUT_EN : out bit; + SD_LEVEL : out bit; + CLK_MODE : out bit; + RE : out bit; + TE : out bit; + P_ENA : out bit; + P_EOn : out bit; + SS : out bit; + BR : out bit + ); +end entity WF68901IP_USART_CTRL; + +architecture BEHAVIOR of WF68901IP_USART_CTRL is +signal SCR : bit_vector(7 downto 0); -- Synchronous data register. +signal UCR : bit_vector(7 downto 1); -- USART control register. +signal RSR : bit_vector(7 downto 0); -- Receiver status register. +signal TSR : bit_vector(7 downto 0); -- Transmitter status register. +signal UDR : bit_vector(7 downto 0); -- USART data register. +begin + USART_REGISTERS: process(RESETn, CLK) + begin + if RESETn = '0' then + SCR <= (others => '0'); + UCR <= (others => '0'); + RSR <= (others => '0'); + -- TSR and UDR are not cleared during an asserted RESETn + elsif CLK = '1' and CLK' event then + -- Loading via receiver shift register + -- has priority over data buss access: + if RX_SAMPLE = '1' then + UDR <= RX_DATA; + elsif CSn = '0' and DSn = '0' and RWn = '0' then + case RS is + when "10011" => SCR <= DATA_IN; + when "10100" => UCR <= DATA_IN(7 downto 1); + when "10101" => RSR(1 downto 0) <= DATA_IN(1 downto 0); -- Only the two LSB are read/write. + when "10110" => TSR(5) <= DATA_IN(5); TSR(3 downto 0) <= DATA_IN(3 downto 0); + when "10111" => UDR <= DATA_IN; + when others => null; + end case; + end if; + RSR(7 downto 2) <= BF & OE & PE & FE & FS_B & M_CIP; + TSR(7 downto 6) <= BE & UE; + TSR(4) <= TX_END; + TX_DATA <= UDR; + end if; + end process USART_REGISTERS; + DATA_OUT_EN <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS >= "10011" and RS <= "10111" else '0'; + DATA_OUT <= SCR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10011" else + UCR & '0' when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10100" else + RSR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10101" else + TSR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10110" else + UDR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10111" else x"00"; + + UDR_WRITE <= '1' when CSn = '0' and DSn = '0' and RWn = '0' and RS = "10111" else '0'; + UDR_READ <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10111" else '0'; + RSR_READ <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10101" else '0'; + TSR_READ <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10110" else '0'; + FS_CLR <= '1' when CSn = '0' and DSn = '0' and RWn = '0' and RS = "10011" else '0'; + + RE <= '1' when RSR(0) = '1' else -- Receiver enable. + '1' when TSR(5) = '1' and TX_END = '1' else '0'; -- Auto Turnaround. + SS <= RSR(1); -- Synchronous strip enable. + BR <= TSR(3); -- Send break. + TE <= TSR(0); -- Transmitter enable. + + SCR_OUT <= SCR; + + CLK_MODE <= UCR(7); -- Clock mode. + CL <= UCR(6 downto 5); -- Character length. + ST <= UCR(4 downto 3); -- Start/Stop configuration. + P_ENA <= UCR(2); -- Parity enable. + P_EOn <= UCR(1); -- Even or odd parity. + + SOUT_CONFIG: process + begin + wait until CLK = '1' and CLK' event; + -- Do not change the output configuration until the transmitter is disabled and + -- current character has been transmitted (TX_END = '1'). + if TX_END = '1' then + case TSR(2 downto 1) is + when "00" => LOOPBACK <= '0'; SD_LEVEL <= '0'; SDOUT_EN <= '0'; + when "01" => LOOPBACK <= '0'; SD_LEVEL <= '0'; SDOUT_EN <= '1'; + when "10" => LOOPBACK <= '0'; SD_LEVEL <= '1'; SDOUT_EN <= '1'; + when "11" => LOOPBACK <= '1'; SD_LEVEL <= '1'; SDOUT_EN <= '1'; + end case; + end if; + end process SOUT_CONFIG; +end architecture BEHAVIOR; + diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd new file mode 100644 index 0000000..eb00a11 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd @@ -0,0 +1,590 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- This is the SUSKA MFP IP core USART receiver file. ---- +---- ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- Process P_STARTBIT has now synchronous reset to meet preset requirement. +-- Process P_SAMPLE has now synchronous reset to meet preset requirement. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_USART_RX is + port ( + CLK : in bit; + RESETn : in bit; + + SCR : in bit_vector(7 downto 0); -- Synchronous character. + RX_SAMPLE : buffer bit; -- Flag indicating valid shift register data. + RX_DATA : out bit_vector(7 downto 0); -- Received data. + + RXCLK : in bit; -- Receiver clock. + SDATA_IN : in bit; -- Serial data input. + + CL : in bit_vector(1 downto 0); -- Character length. + ST : in bit_vector(1 downto 0); -- Start and stop bit configuration. + P_ENA : in bit; -- Parity enable. + P_EOn : in bit; -- Even or odd parity. + CLK_MODE : in bit; -- Clock mode configuration bit. + RE : in bit; -- Receiver enable. + FS_CLR : in bit; -- Clear the Found/Search flag for resynchronisation purpose. + SS : in bit; -- Synchronous strip enable. + UDR_READ : in bit; -- Flag indicating reading the data register. + RSR_READ : in bit; -- Flag indicating reading the receiver status register. + + M_CIP : out bit; -- Match/Character in progress. + FS_B : buffer bit; -- Find/Search or Break detect flag. + BF : out bit; -- Buffer full. + OE : out bit; -- Overrun error. + PE : out bit; -- Parity error. + FE : out bit -- Framing error. + ); +end entity WF68901IP_USART_RX; + +architecture BEHAVIOR of WF68901IP_USART_RX is +type RCV_STATES is (IDLE, WAIT_START, SAMPLE, PARITY, STOP1, STOP2, SYNC); +signal RCV_STATE, RCV_NEXT_STATE : RCV_STATES; +signal SDATA_DIV16 : bit; +signal SDATA_IN_I : bit; +signal SDATA_EDGE : bit; +signal SHIFT_REG : bit_vector(7 downto 0); +signal CLK_STRB : bit; +signal CLK_2_STRB : bit; +signal BITCNT : std_logic_vector(2 downto 0); +signal BREAK : boolean; +signal RDRF : bit; +signal STARTBIT : boolean; +begin + BF <= RDRF; -- Buffer full = Receiver Data Register Full. + RX_SAMPLE <= '1' when RCV_STATE = SYNC and ST /= "00" else -- Asynchronous mode: + -- Synchronous modes: + '1' when RCV_STATE = SYNC and ST = "00" and SS = '0' else + '1' when RCV_STATE = SYNC and ST = "00" and SS = '1' and SHIFT_REG /= SCR else '0'; + + -- Data multiplexer for the received data: + RX_DATA <= "000" & SHIFT_REG(7 downto 3) when RX_SAMPLE = '1' and CL = "11" else -- 5 databits. + "00" & SHIFT_REG(7 downto 2) when RX_SAMPLE = '1' and CL = "10" else -- 6 databits. + '0' & SHIFT_REG(7 downto 1) when RX_SAMPLE = '1' and CL = "01" else -- 6 databits. + SHIFT_REG when RX_SAMPLE = '1' and CL = "00" else x"00"; -- 8 databits. + + P_SAMPLE: process + -- This process provides the 'valid transition logic' of the originally MC68901. For further + -- details see the 'M68000 FAMILY REFERENCE MANUAL'. + variable LOW_FLT : std_logic_vector(1 downto 0); + variable HI_FLT : std_logic_vector(1 downto 0); + variable CLK_LOCK : boolean; + variable EDGE_LOCK : boolean; + variable TIMER : std_logic_vector(2 downto 0); + variable TIMER_LOCK : boolean; + variable NEW_SDATA : bit; + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' or RE = '0' then + -- The reset condition assumes the SDATA_IN logic high. Otherwise + -- one not valid SDATA_EDGE pulse occurs during system startup. + CLK_LOCK := true; + EDGE_LOCK := true; + HI_FLT := "11"; + LOW_FLT := "11"; + SDATA_EDGE <= '0'; + NEW_SDATA := '1'; + -- Positive or negative edge detector for the incoming data. + -- Any transition must be valid for at least three receiver clock + -- cycles. The TIMER locking inhibits detecting four receiver + -- clock cycles after a valid transition. + elsif RXCLK = '1' and SDATA_IN = '0' and CLK_LOCK = false and LOW_FLT > "00" then + CLK_LOCK := true; + EDGE_LOCK := false; + HI_FLT := "00"; + LOW_FLT := LOW_FLT - '1'; + elsif RXCLK = '1' and SDATA_IN = '1' and CLK_LOCK = false and HI_FLT < "11" then + CLK_LOCK := true; + EDGE_LOCK := false; + LOW_FLT := "11"; + HI_FLT := HI_FLT + '1'; + elsif RXCLK = '1' and EDGE_LOCK = false and LOW_FLT = "00" then + EDGE_LOCK := true; + SDATA_EDGE <= '1'; -- Falling edge detected. + NEW_SDATA := '0'; + elsif RXCLK = '1' and EDGE_LOCK = false and HI_FLT = "11" then + EDGE_LOCK := true; + SDATA_EDGE <= '1'; -- Rising edge detected. + NEW_SDATA := '1'; + elsif RXCLK = '1' and CLK_LOCK = false then + CLK_LOCK := true; + SDATA_EDGE <= '0'; + elsif RXCLK = '0' then + CLK_LOCK := false; + end if; + -- + if RESETn = '0' or RE = '0' then + -- The reset condition assumes the SDATA_IN logic high. Otherwise + -- one not valid SDATA_EDGE pulse occurs during system startup. + TIMER := "111"; + TIMER_LOCK := true; + SDATA_DIV16 <= '1'; + -- The timer controls the SDATA in a way, that after a detected valid + -- Transistion, the serial data is sampled on the 8th receiver clock + -- edge after the initial valid transition occured. + elsif RXCLK = '1' and SDATA_EDGE = '1' and TIMER_LOCK = false then + TIMER_LOCK := true; + TIMER := "000"; -- Resynchronisation. + elsif RXCLK = '1' and TIMER = "011" and TIMER_LOCK = false then + TIMER_LOCK := true; + SDATA_DIV16 <= NEW_SDATA; -- Scan the new data. + TIMER := TIMER + '1'; -- Timing is active. + elsif RXCLK = '1' and TIMER < "111" and TIMER_LOCK = false then + TIMER_LOCK := true; + TIMER := TIMER + '1'; -- Timing is active. + elsif RXCLK = '0' then + TIMER_LOCK := false; + end if; + end process P_SAMPLE; + + P_START_BIT: process(CLK) + -- This is the valid start bit logic of the original MC68901 multi function + -- port's USART receiver. + variable TMP : std_logic_vector(2 downto 0); + variable LOCK : boolean; + begin + if CLK = '1' and CLK' event then + if RESETn = '0' then + TMP := "000"; + LOCK := true; + elsif RE = '0' or RCV_STATE /= IDLE then -- Start bit logic disabled. + TMP := "000"; + LOCK := true; + elsif SDATA_EDGE = '1' then + TMP := "000"; -- (Re)-Initialize. + LOCK := false; -- Start counting. + elsif RXCLK = '1' and SDATA_IN = '0' and TMP < "111" and LOCK = false then + LOCK := true; + TMP := TMP + '1'; -- Count 8 low bits to declare start condition valid. + elsif RXCLK = '0' then + LOCK := false; + end if; + end if; + + case TMP is + when "111" => STARTBIT <= true; + when others => STARTBIT <= false; + end case; + end process P_START_BIT; + + SDATA_IN_I <= SDATA_IN when CLK_MODE = '0' else -- Clock div by 1 mode. + SDATA_IN when ST = "00" else SDATA_DIV16; -- Synchronous mode. + + CLKDIV: process + variable CLK_LOCK : boolean; + variable STRB_LOCK : boolean; + variable CLK_DIVCNT : std_logic_vector(4 downto 0); + begin + wait until CLK = '1' and CLK' event; + if CLK_MODE = '0' then -- Divider off. + if RXCLK = '1' and STRB_LOCK = false then + CLK_STRB <= '1'; + STRB_LOCK := true; + elsif RXCLK = '0' then + CLK_STRB <= '0'; + STRB_LOCK := false; + else + CLK_STRB <= '0'; + end if; + CLK_2_STRB <= '0'; -- No 1 1/2 stop bits in no div by 16 mode. + elsif SDATA_EDGE = '1' then +CLK_DIVCNT := "01100"; -- Div by 16 mode. + CLK_STRB <= '0'; -- Default. + CLK_2_STRB <= '0'; -- Default. + else + CLK_STRB <= '0'; -- Default. + CLK_2_STRB <= '0'; -- Default. + if CLK_DIVCNT > "00000" and RXCLK = '1' and CLK_LOCK = false then + CLK_DIVCNT := CLK_DIVCNT - '1'; + CLK_LOCK := true; + if CLK_DIVCNT = "01000" then + -- This strobe is asserted at half of the clock cycle. + -- It is used for the stop bit timing. + CLK_2_STRB <= '1'; + end if; + elsif CLK_DIVCNT = "00000" then + CLK_DIVCNT := "10000"; -- Div by 16 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + end if; + elsif RXCLK = '0' then + CLK_LOCK := false; + STRB_LOCK := false; + end if; + end if; + end process CLKDIV; + + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if RE = '0' then + SHIFT_REG <= x"00"; + elsif RCV_STATE = SAMPLE and CLK_STRB = '1' then + SHIFT_REG <= SDATA_IN_I & SHIFT_REG(7 downto 1); -- Shift right. + end if; + end if; + end process SHIFTREG; + + P_M_CIP: process(RESETn, CLK) + -- In Synchronous mode this flag indicates wether a synchronous character M_CIP = '1' + -- or another character (M_CIP = '0') is transferred to the receive buffer. + -- In asynchronous mode the flag indicates sampling condition. + begin + if RESETn = '0' then + M_CIP <= '0'; + elsif CLK = '0' and CLK' event then + if RE = '0' then + M_CIP <= '0'; + elsif ST = "00" then -- Synchronous mode. + if RCV_STATE = SYNC and SHIFT_REG = SCR and RDRF = '0' then + M_CIP <= '1'; -- SCR transferred. + elsif RCV_STATE = SYNC and RDRF = '0' then + M_CIP <= '0'; -- No SCR transferred. + end if; + else -- Asynchronous mode. + case RCV_STATE is + when SAMPLE | PARITY | STOP1 | STOP2 => M_CIP <= '1'; -- Sampling. + when others => M_CIP <= '0'; -- No Sampling. + end case; + end if; + end if; + end process P_M_CIP; + + BREAK_DETECT: process(RESETn, CLK) + -- A break condition occurs, if there is no STOP1 bit and the + -- shift register contains zero data. + begin + if RESETn = '0' then + BREAK <= false; + elsif CLK = '1' and CLK' event then + if RE = '0' then + BREAK <= false; + elsif CLK_STRB = '1' then + if RCV_STATE = STOP1 and SDATA_IN_I = '0' and SHIFT_REG = x"00" then + BREAK <= true; -- Break detected (empty shift register and no stop bit). + elsif RCV_STATE = STOP1 and SDATA_IN_I = '1' then + BREAK <= false; -- UPDATE. + elsif RCV_STATE = STOP1 and SDATA_IN_I = '0' and SHIFT_REG /= x"00" then + BREAK <= false; -- UPDATE, but framing error. + end if; + end if; + end if; + end process BREAK_DETECT; + + P_FS_B: process(RESETn, CLK) + -- In the synchronous mode, this process provides the flag detecting the synchronous + -- character. In the asynchronous mode, the flag indicates a break condition. + variable FS_B_I : bit; + variable FIRST_READ : boolean; + begin + if RESETn = '0' then + FS_B <= '0'; + FIRST_READ := false; + FS_B_I := '0'; + elsif CLK = '0' and CLK' event then + if RE = '0' then + FS_B <= '0'; + FS_B_I := '0'; + else + if ST = "00" then -- Synchronous operation. + if FS_CLR = '1' then + FS_B <= '0'; -- Clear during writing to the SCR. + elsif SHIFT_REG = SCR then + FS_B <= '1'; -- SCR detected. + end if; + else -- Asynchronous operation. + if RX_SAMPLE = '1' and BREAK = true then -- Break condition detected. + FS_B_I := '1'; -- Update. + elsif RX_SAMPLE = '1' then -- No break condition. + FS_B_I := '0'; -- Update. + elsif RSR_READ = '1' and FS_B_I = '1' then + -- If a break condition was detected, the concerning flag is + -- set when the valid data word in the receiver data + -- register is read. Thereafter the break flag is reset + -- and the break condition disappears after a second read + -- (in time) of the receiver status register. + if FIRST_READ = false then + FS_B <= '1'; + FIRST_READ := true; + else + FS_B <= '0'; + FIRST_READ := false; + end if; + end if; + end if; + end if; + end if; + end process P_FS_B; + + P_BITCNT: process + begin + wait until CLK = '1' and CLK' event; + if RCV_STATE = SAMPLE and CLK_STRB = '1' and ST /= "00" then -- Asynchronous mode. + BITCNT <= BITCNT + '1'; + elsif RCV_STATE = SAMPLE and CLK_STRB = '1' and ST = "00" and FS_B = '1' then -- Synchronous mode. + BITCNT <= BITCNT + '1'; -- Count, if matched data found (FS_B = '1'). + elsif RCV_STATE /= SAMPLE then + BITCNT <= (others => '0'); + end if; + end process P_BITCNT; + + BUFFER_FULL: process(RESETn, CLK) + -- Receive data register full flag. + begin + if RESETn = '0' then + RDRF <= '0'; + elsif CLK = '1' and CLK' event then + if RE = '0' then + RDRF <= '0'; + elsif RX_SAMPLE = '1' then + RDRF <= '1'; -- Data register is full until now! + elsif UDR_READ = '1' then + RDRF <= '0'; -- After reading the data register ... + end if; + end if; + end process BUFFER_FULL; + + OVERRUN: process(RESETn, CLK) + variable OE_I : bit; + variable FIRST_READ : boolean; + begin + if RESETn = '0' then + OE_I := '0'; + OE <= '0'; + FIRST_READ := false; + elsif CLK = '1' and CLK' event then + if RESETn = '0' then + OE_I := '0'; + OE <= '0'; + FIRST_READ := false; + elsif CLK_STRB = '1' and RCV_STATE = SYNC and BREAK = false then + -- Overrun appears if RDRF is '1' in this state and there + -- is no break condition. + OE_I := RDRF; + end if; + if RSR_READ = '1' and OE_I = '1' then + -- if an overrun was detected, the concerning flag is + -- set when the valid data word in the receiver data + -- register is read. Thereafter the RDRF flag is reset + -- and the overrun disappears (OE_I goes low) after + -- a second read (in time) of the receiver data register. + if FIRST_READ = false then + OE <= '1'; + FIRST_READ := true; + else + OE <= '0'; + FIRST_READ := false; + end if; + end if; + end if; + end process OVERRUN; + + PARITY_TEST: process(RESETn, CLK) + variable PAR_TMP : bit; + variable P_ERR : bit; + begin + if RESETn = '0' then + PE <= '0'; + elsif CLK = '1' and CLK' event then + if RE = '0' then + PE <= '0'; + elsif RX_SAMPLE = '1' then + PE <= P_ERR; -- Update on load shift register to data register. + elsif CLK_STRB = '1' then -- Sample parity on clock strobe. + P_ERR := '0'; -- Initialise. + if RCV_STATE = PARITY then + for i in 1 to 7 loop + if i = 1 then + PAR_TMP := SHIFT_REG(i-1) xor SHIFT_REG(i); + else + PAR_TMP := PAR_TMP xor SHIFT_REG(i); + end if; + end loop; + if P_ENA = '1' and P_EOn = '1' then -- Even parity. + P_ERR := PAR_TMP xor SDATA_IN_I; + elsif P_ENA = '1' and P_EOn = '0' then -- Odd parity. + P_ERR := not PAR_TMP xor SDATA_IN_I; + elsif P_ENA = '0' then -- No parity. + P_ERR := '0'; + end if; + end if; + end if; + end if; + end process PARITY_TEST; + + FRAME_ERR: process(RESETn, CLK) + -- This module detects a framing error + -- during stop bit 1 and stop bit 2. + variable FE_I: bit; + begin + if RESETn = '0' then + FE_I := '0'; + FE <= '0'; + elsif CLK = '1' and CLK' event then + if RE = '0' then + FE_I := '0'; + FE <= '0'; + elsif CLK_STRB = '1' then + if RCV_STATE = STOP1 and SDATA_IN_I = '0' and SHIFT_REG /= x"00" then + FE_I := '1'; + elsif RCV_STATE = STOP2 and SDATA_IN_I = '0' and SHIFT_REG /= x"00" then + FE_I := '1'; + elsif RCV_STATE = STOP1 or RCV_STATE = STOP2 then + FE_I := '0'; -- Error resets when correct data appears. + end if; + end if; + if RCV_STATE = SYNC then + FE <= FE_I; -- Update the FE every SYNC time. + end if; + end if; + end process FRAME_ERR; + + RCV_STATEREG: process(RESETn, CLK) + begin + if RESETn = '0' then + RCV_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if RE = '0' then + RCV_STATE <= IDLE; + else + RCV_STATE <= RCV_NEXT_STATE; + end if; + end if; + end process RCV_STATEREG; + + RCV_STATEDEC: process(RCV_STATE, SDATA_IN_I, BITCNT, CLK_STRB, STARTBIT, + CLK_2_STRB, ST, CLK_MODE, CL, P_ENA, SHIFT_REG) + begin + case RCV_STATE is + when IDLE => + if ST = "00" then + RCV_NEXT_STATE <= SAMPLE; -- Synchronous mode. + elsif SDATA_IN_I = '0' and CLK_MODE = '0' then + RCV_NEXT_STATE <= SAMPLE; -- Startbit detected in div by 1 mode. + elsif STARTBIT = true and CLK_MODE = '1' then + RCV_NEXT_STATE <= WAIT_START; -- Startbit detected in div by 16 mode. + else + RCV_NEXT_STATE <= IDLE; -- No startbit; sleep well :-) + end if; + when WAIT_START => + -- This state delays the sample process by one CLK_STRB pulse + -- to eliminate the start bit. + if CLK_STRB = '1' then + RCV_NEXT_STATE <= SAMPLE; + else + RCV_NEXT_STATE <= WAIT_START; + end if; + when SAMPLE => + if CLK_STRB = '1' then + if CL = "11" and BITCNT < "100" then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 5 data bits. + elsif CL = "10" and BITCNT < "101" then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 6 data bits. + elsif CL = "01" and BITCNT < "110" then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 7 data bits. + elsif CL = "00" and BITCNT < "111" then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 8 data bits. + elsif ST = "00" and P_ENA = '0' then -- Synchronous mode (no stop bits). + RCV_NEXT_STATE <= IDLE; -- No parity check enabled. + elsif P_ENA = '0' then + RCV_NEXT_STATE <= STOP1; -- No parity check enabled. + else + RCV_NEXT_STATE <= PARITY; -- Parity enabled. + end if; + else + RCV_NEXT_STATE <= SAMPLE; -- Stay in sample mode. + end if; + when PARITY => + if CLK_STRB = '1' then + if ST = "00" then -- Synchronous mode (no stop bits). + RCV_NEXT_STATE <= IDLE; + else + RCV_NEXT_STATE <= STOP1; + end if; + else + RCV_NEXT_STATE <= PARITY; + end if; + when STOP1 => + if CLK_STRB = '1' then + if SHIFT_REG > x"00" and SDATA_IN_I = '0' then -- No Stop bit after non zero data. + RCV_NEXT_STATE <= SYNC; -- Framing error detected. + elsif ST = "11" or ST = "10" then + RCV_NEXT_STATE <= STOP2; -- More than one stop bits selected. + else + RCV_NEXT_STATE <= SYNC; -- One stop bit selected. + end if; + else + RCV_NEXT_STATE <= STOP1; + end if; + when STOP2 => + if CLK_2_STRB = '1' and ST = "10" then + RCV_NEXT_STATE <= SYNC; -- One and a half stop bits selected. + elsif CLK_STRB = '1' then + RCV_NEXT_STATE <= SYNC; -- Two stop bits selected. + else + RCV_NEXT_STATE <= STOP2; + end if; + when SYNC => + RCV_NEXT_STATE <= IDLE; + end case; + end process RCV_STATEDEC; +end architecture BEHAVIOR; + diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd new file mode 100644 index 0000000..fd06bf1 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd @@ -0,0 +1,238 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the SUSKA MFP IP core USART top level file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +use work.wf68901ip_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_USART_TOP is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + + -- Serial I/O control: + RC : in bit; -- Receiver clock. + TC : in bit; -- Transmitter clock. + SI : in bit; -- Serial input. + SO : out bit; -- Serial output. + SO_EN : out bit; -- Serial output enable. + + -- Interrupt channels: + RX_ERR_INT : out bit; -- Receiver errors. + RX_BUFF_INT : out bit; -- Receiver buffer full. + TX_ERR_INT : out bit; -- Transmitter errors. + TX_BUFF_INT : out bit; -- Transmitter buffer empty. + + -- DMA control: + RRn : out bit; + TRn : out bit + ); +end entity WF68901IP_USART_TOP; + +architecture STRUCTURE of WF68901IP_USART_TOP is + signal BF_I : bit; + signal BE_I : bit; + signal FE_I : bit; + signal OE_I : bit; + signal UE_I : bit; + signal PE_I : bit; + signal LOOPBACK_I : bit; + signal SD_LEVEL_I : bit; + signal SDATA_IN_I : bit; + signal SDATA_OUT_I : bit; + signal RXCLK_I : bit; + signal CLK_MODE_I : bit; + signal SCR_I : bit_vector(7 downto 0); + signal RX_SAMPLE_I : bit; + signal RX_DATA_I : bit_vector(7 downto 0); + signal TX_DATA_I : bit_vector(7 downto 0); + signal CL_I : bit_vector(1 downto 0); + signal ST_I : bit_vector(1 downto 0); + signal P_ENA_I : bit; + signal P_EOn_I : bit; + signal RE_I : bit; + signal TE_I : bit; + signal FS_CLR_I : bit; + signal SS_I : bit; + signal M_CIP_I : bit; + signal FS_B_I : bit; + signal BR_I : bit; + signal UDR_READ_I : bit; + signal UDR_WRITE_I : bit; + signal RSR_READ_I : bit; + signal TSR_READ_I : bit; + signal TX_END_I : bit; +begin + SO <= SDATA_OUT_I when TE_I = '1' else SD_LEVEL_I; + -- Loopback mode: + SDATA_IN_I <= SDATA_OUT_I when LOOPBACK_I = '1' and TE_I = '1' else -- Loopback, transmitter enabled. + '1' when LOOPBACK_I = '1' and TE_I = '0' else SI; -- Loopback, transmitter disabled. + + RXCLK_I <= TC when LOOPBACK_I = '1' else RC; + RRn <= '0' when BF_I = '1' and PE_I = '0' and FE_I = '0' else '1'; + TRn <= not BE_I; + + -- Interrupt sources: + RX_ERR_INT <= OE_I or PE_I or FE_I or FS_B_I; + RX_BUFF_INT <= BF_I; + TX_ERR_INT <= UE_I or TX_END_I; + TX_BUFF_INT <= BE_I; + + I_USART_CTRL: WF68901IP_USART_CTRL + port map( + CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN, + DATA_OUT => DATA_OUT, + DATA_OUT_EN => DATA_OUT_EN, + LOOPBACK => LOOPBACK_I, + SDOUT_EN => SO_EN, + SD_LEVEL => SD_LEVEL_I, + CLK_MODE => CLK_MODE_I, + RE => RE_I, + TE => TE_I, + P_ENA => P_ENA_I, + P_EOn => P_EOn_I, + BF => BF_I, + BE => BE_I, + FE => FE_I, + OE => OE_I, + UE => UE_I, + PE => PE_I, + M_CIP => M_CIP_I, + FS_B => FS_B_I, + SCR_OUT => SCR_I, + TX_DATA => TX_DATA_I, + RX_SAMPLE => RX_SAMPLE_I, + RX_DATA => RX_DATA_I, + SS => SS_I, + BR => BR_I, + CL => CL_I, + ST => ST_I, + FS_CLR => FS_CLR_I, + UDR_READ => UDR_READ_I, + UDR_WRITE => UDR_WRITE_I, + RSR_READ => RSR_READ_I, + TSR_READ => TSR_READ_I, + TX_END => TX_END_I + ); + + I_USART_RECEIVE: WF68901IP_USART_RX + port map ( + CLK => CLK, + RESETn => RESETn, + SCR => SCR_I, + RX_SAMPLE => RX_SAMPLE_I, + RX_DATA => RX_DATA_I, + CL => CL_I, + ST => ST_I, + P_ENA => P_ENA_I, + P_EOn => P_EOn_I, + CLK_MODE => CLK_MODE_I, + RE => RE_I, + FS_CLR => FS_CLR_I, + SS => SS_I, + RXCLK => RXCLK_I, + SDATA_IN => SDATA_IN_I, + RSR_READ => RSR_READ_I, + UDR_READ => UDR_READ_I, + M_CIP => M_CIP_I, + FS_B => FS_B_I, + BF => BF_I, + OE => OE_I, + PE => PE_I, + FE => FE_I + ); + + I_USART_TRANSMIT: WF68901IP_USART_TX + port map ( + CLK => CLK, + RESETn => RESETn, + SCR => SCR_I, + TX_DATA => TX_DATA_I, + SDATA_OUT => SDATA_OUT_I, + TXCLK => TC, + CL => CL_I, + ST => ST_I, + TE => TE_I, + BR => BR_I, + P_ENA => P_ENA_I, + P_EOn => P_EOn_I, + UDR_WRITE => UDR_WRITE_I, + TSR_READ => TSR_READ_I, + CLK_MODE => CLK_MODE_I, + TX_END => TX_END_I, + UE => UE_I, + BE => BE_I + ); +end architecture STRUCTURE; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd new file mode 100644 index 0000000..8de27f3 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd @@ -0,0 +1,387 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- This is the SUSKA MFP IP core USART transmitter file. ---- +---- ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- TDRE has now synchronous reset to meet preset requirement. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_USART_TX is + port ( + CLK : in bit; + RESETn : in bit; + + SCR : in bit_vector(7 downto 0); -- Synchronous character. + TX_DATA : in bit_vector(7 downto 0); -- Normal data. + + SDATA_OUT : out bit; -- Serial data output. + TXCLK : in bit; -- Transmitter clock. + + CL : in bit_vector(1 downto 0); -- Character length. + ST : in bit_vector(1 downto 0); -- Start and stop bit configuration. + TE : in bit; -- Transmitter enable. + BR : in bit; -- BREAK character send enable (all '0' without stop bit). + P_ENA : in bit; -- Parity enable. + P_EOn : in bit; -- Even or odd parity. + UDR_WRITE : in bit; -- Flag indicating writing the data register. + TSR_READ : in bit; -- Flag indicating reading the transmitter status register. + CLK_MODE : in bit; -- Transmitter clock mode. + + TX_END : out bit; -- End of transmission flag. + UE : out bit; -- Underrun Flag. + BE : out bit -- Buffer empty flag. + ); +end entity WF68901IP_USART_TX; + +architecture BEHAVIOR of WF68901IP_USART_TX is +type TR_STATES is (IDLE, CHECK_BREAK, LOAD_SHFT, START, SHIFTOUT, PARITY, STOP1, STOP2); +signal TR_STATE, TR_NEXT_STATE : TR_STATES; +signal CLK_STRB : bit; +signal CLK_2_STRB : bit; +signal SHIFT_REG : bit_vector(7 downto 0); +signal BITCNT : std_logic_vector(2 downto 0); +signal PARITY_I : bit; +signal TDRE : bit; +signal BREAK : bit; +begin + BE <= TDRE; -- Buffer empty flag. + + -- The default condition in this statement is to ensure + -- to cover all possibilities for example if there is a + -- one hot decoding of the state machine with wrong states + -- (e.g. not one of the given here). + SDATA_OUT <= '0' when BREAK = '1' else + '1' when TR_STATE = IDLE else + '1' when TR_STATE = LOAD_SHFT else + '0' when TR_STATE = START else + SHIFT_REG(0) when TR_STATE = SHIFTOUT else + PARITY_I when TR_STATE = PARITY else + '1' when TR_STATE = STOP1 else + '1' when TR_STATE = STOP2 else '1'; + + P_BREAK : process(RESETn, CLK) + -- This process is responsible to control the BREAK signal. After the break request + -- is asserted via BR, the break character will be sent after the current transmission has + -- finished. The BREAK character is sent until the BR is disabled. + variable LOCK : boolean; + begin + if RESETn = '0' then + BREAK <= '0'; + elsif CLK = '1' and CLK' event then + -- Break is only available in the asynchronous mode (ST /= "00"). + -- The LOCK mechanism is reponsible for sending the BREAK character just once. + if TE = '1' and BR = '1' and ST /= "00" and TR_STATE = IDLE and LOCK = false then + BREAK <= '1'; -- Break for the case that there is no current transmission. + LOCK := true; + elsif BR = '1' and ST /= "00" and TR_STATE = STOP1 then + BREAK <= '0'; -- Break character sent. + elsif BR = '0' then + BREAK <= '0'; + LOCK := false; + else + BREAK <= '0'; + end if; + end if; + end process P_BREAK; + + CLKDIV: process + variable CLK_LOCK : boolean; + variable STRB_LOCK : boolean; + variable CLK_DIVCNT : std_logic_vector(4 downto 0); + begin + wait until CLK = '1' and CLK' event; + if CLK_MODE = '0' then -- Divider off. + if TXCLK = '0' and STRB_LOCK = false then -- Works on negative TXCLK edge. + CLK_STRB <= '1'; + STRB_LOCK := true; + elsif TXCLK = '1' then + CLK_STRB <= '0'; + STRB_LOCK := false; + else + CLK_STRB <= '0'; + end if; + CLK_2_STRB <= '0'; -- No 1 1/2 stop bits in no div by 16 mode. + elsif TR_STATE = IDLE then + CLK_DIVCNT := "10000"; -- Div by 16 mode. + CLK_STRB <= '0'; + else + CLK_STRB <= '0'; -- Default. + CLK_2_STRB <= '0'; -- Default. + -- Works on negative TXCLK edge: + if CLK_DIVCNT > "00000" and TXCLK = '0' and CLK_LOCK = false then + CLK_DIVCNT := CLK_DIVCNT - '1'; + CLK_LOCK := true; + if CLK_DIVCNT = "01000" then + -- This strobe is asserted at half of the clock cycle. + -- It is used for the stop bit timing. + CLK_2_STRB <= '1'; + end if; + elsif CLK_DIVCNT = "00000" then + CLK_DIVCNT := "10000"; -- Div by 16 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + end if; + elsif TXCLK = '1' then + CLK_LOCK := false; + STRB_LOCK := false; + end if; + end if; + end process CLKDIV; + + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if TR_STATE = LOAD_SHFT and TDRE = '1' then -- Lost data ... + case ST is + when "00" => -- Synchronous mode. + SHIFT_REG <= SCR; -- Send the synchronous character. + when others => -- Asynchronous mode. + SHIFT_REG <= x"5A"; -- Load the shift register with a mark (underrun). + end case; + elsif TR_STATE = LOAD_SHFT then + -- Load 'normal' data if there is no break condition: + case CL is + when "11" => SHIFT_REG <= "000" & TX_DATA(4 downto 0); -- 5 databits. + when "10" => SHIFT_REG <= "00" & TX_DATA(5 downto 0); -- 6 databits. + when "01" => SHIFT_REG <= '0' & TX_DATA(6 downto 0); -- 7 databits. + when "00" => SHIFT_REG <= TX_DATA; -- 8 databits. + end case; + elsif TR_STATE = SHIFTOUT and CLK_STRB = '1' then + SHIFT_REG <= '0' & SHIFT_REG(7 downto 1); -- Shift right. + end if; + end if; + end process SHIFTREG; + + P_BITCNT: process + -- Counter for the data bits transmitted. + begin + wait until CLK = '1' and CLK' event; + if TR_STATE = SHIFTOUT and CLK_STRB = '1' then + BITCNT <= BITCNT + '1'; + elsif TR_STATE /= SHIFTOUT then + BITCNT <= "000"; + end if; + end process P_BITCNT; + + BUFFER_EMPTY: process + -- Transmit data register empty flag. + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + TDRE <= '1'; + elsif TE = '0' then + TDRE <= '1'; + elsif TR_STATE = START and BREAK = '0' then + -- Data has been loaded to the shift register, + -- thus data register is free again. + -- If the BREAK flag is enabled, the BE flag + -- respective TDRE flag cannot be set. + TDRE <= '1'; + elsif UDR_WRITE = '1' then + TDRE <= '0'; + end if; + end process BUFFER_EMPTY; + + UNDERRUN: process(RESETn, CLK) + variable LOCK : boolean; + begin + if RESETn = '0' then + UE <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + if TE = '0' then + UE <= '0'; + LOCK := false; + elsif CLK_STRB = '1' and TR_STATE = START then + -- Underrun appears if TDRE is '0' at the end of this state. + UE <= TDRE; -- Never true for enabled BREAK flag. See alos process BUFFER_EMPTY. + LOCK := true; + elsif CLK_STRB = '1' then + LOCK := false; -- Disables clearing UE one transmit clock cycle. + elsif TSR_READ = '1' and LOCK = false then + UE <= '0'; + end if; + end if; + end process UNDERRUN; + + P_TX_END: process(RESETn, CLK) + begin + if RESETn = '0' then + TX_END <= '0'; + elsif CLK = '1' and CLK' event then + if TE = '1' then -- Transmitter enabled. + TX_END <= '0'; + elsif TE = '0' and TR_STATE = IDLE then + TX_END <= '1'; + end if; + end if; + end process P_TX_END; + + PARITY_GEN: process + variable PAR_TMP : bit; + begin + wait until CLK = '1' and CLK' event; + if TR_STATE = START then -- Calculate the parity during the start phase. + for i in 1 to 7 loop + if i = 1 then + PAR_TMP := SHIFT_REG(i-1) xor SHIFT_REG(i); + else + PAR_TMP := PAR_TMP xor SHIFT_REG(i); + end if; + end loop; + if P_ENA = '1' and P_EOn = '1' then -- Even parity. + PARITY_I <= PAR_TMP; + elsif P_ENA = '1' and P_EOn = '0' then -- Odd parity. + PARITY_I <= not PAR_TMP; + else -- No parity. + PARITY_I <= '0'; + end if; + end if; + end process PARITY_GEN; + + TR_STATEREG: process(RESETn, CLK) + begin + if RESETn = '0' then + TR_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + TR_STATE <= TR_NEXT_STATE; + end if; + end process TR_STATEREG; + + TR_STATEDEC: process(TR_STATE, CLK_STRB, CLK_2_STRB, BITCNT, TDRE, BREAK, TE, ST, P_ENA, CL, BR) + begin + case TR_STATE is + when IDLE => + -- This IDLE state is just one clock cycle and is required to give the + -- break process time to set the BREAK flag. + TR_NEXT_STATE <= CHECK_BREAK; + when CHECK_BREAK => + if BREAK = '1' then -- Send break character. + -- Do not load any data to the shift register, go directly + -- to the START state. + TR_NEXT_STATE <= START; + -- Start enabled transmitter, if the data register is not empty. + -- Do not send any further data for the case of an asserted BR flag. + elsif TE = '1' and TDRE = '0' and BR = '0' then + TR_NEXT_STATE <= LOAD_SHFT; + else + TR_NEXT_STATE <= IDLE; -- Go back, scan for BREAK. + end if; + when LOAD_SHFT => + TR_NEXT_STATE <= START; + when START => -- Send the start bit. + if CLK_STRB = '1' then + TR_NEXT_STATE <= SHIFTOUT; + else + TR_NEXT_STATE <= START; + end if; + when SHIFTOUT => + if CLK_STRB = '1' then + if BITCNT < "100" and CL = "11" then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 5 data bits. + elsif BITCNT < "101" and CL = "10" then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 6 data bits. + elsif BITCNT < "110" and CL = "01" then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 7 data bits. + elsif BITCNT < "111" and CL = "00" then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 8 data bits. + elsif P_ENA = '0' and BREAK = '1' then + TR_NEXT_STATE <= IDLE; -- Break condition, no parity check enabled, no stop bits. + elsif P_ENA = '0' and ST = "00" then + TR_NEXT_STATE <= IDLE; -- Synchronous mode, no parity check enabled. + elsif P_ENA = '0' then + TR_NEXT_STATE <= STOP1; -- Asynchronous mode, no parity check enabled. + else + TR_NEXT_STATE <= PARITY; -- Parity enabled. + end if; + else + TR_NEXT_STATE <= SHIFTOUT; + end if; + when PARITY => + if CLK_STRB = '1' then + if ST = "00" then -- Synchronous mode (no stop bits). + TR_NEXT_STATE <= IDLE; + elsif BREAK = '1' then -- No stop bits during break condition. + TR_NEXT_STATE <= IDLE; + else + TR_NEXT_STATE <= STOP1; + end if; + else + TR_NEXT_STATE <= PARITY; + end if; + when STOP1 => + if CLK_STRB = '1' and (ST = "11" or ST = "10") then + TR_NEXT_STATE <= STOP2; -- More than one stop bits selected. + elsif CLK_STRB = '1' then + TR_NEXT_STATE <= IDLE; -- One stop bits selected. + else + TR_NEXT_STATE <= STOP1; + end if; + when STOP2 => + if CLK_2_STRB = '1' and ST = "10" then + TR_NEXT_STATE <= IDLE; -- One and a half stop bits selected. + elsif CLK_STRB = '1' then + TR_NEXT_STATE <= IDLE; -- Two stop bits detected. + else + TR_NEXT_STATE <= STOP2; + end if; + end case; + end process TR_STATEDEC; +end architecture BEHAVIOR; + diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd new file mode 100644 index 0000000..685fc02 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd @@ -0,0 +1,228 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI IP Core peripheral Add-On ---- +---- ---- +---- This file is part of the FPGA-ATARI project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- This hardware provides an interface to connect to a SD-Card. ---- +---- ---- +---- This interface is based on the project 'SatanDisk' of ---- +---- Miroslav Nohaj 'Jookie'. The code is an interpretation of ---- +---- the original code, written in VERILOG. It is provided for ---- +---- the use in a system on programmable chips (SOPC). ---- +---- ---- +---- Timing: Use a clock frequency of 16MHz for this component. ---- +---- Use the same clock frequency for the connected AVR ---- +---- microcontroller. ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2007 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +---- This hardware works with the original ATARI ---- +---- hard dik driver. ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 1.0 2007/01/05 WF +-- Initial Release. + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF_SD_CARD is + port ( + -- System: + RESETn : in bit; + CLK : in bit; -- 16MHz, see above. + + -- ACSI section: + ACSI_A1 : in bit; + ACSI_CSn : in bit; + ACSI_ACKn : in bit; + ACSI_INTn : out bit; + ACSI_DRQn : out bit; + ACSI_D : inout std_logic_vector(7 downto 0); + + -- Microcontroller interface: + MC_D : inout std_logic_vector(7 downto 0); + MC_DO : in bit; + MC_PIO_DMAn : in bit; + MC_RWn : in bit; + MC_CLR_CMD : in bit; + MC_DONE : out bit; + MC_GOT_CMD : out bit + ); +end WF_SD_CARD; + +architecture BEHAVIOR of WF_SD_CARD is +signal DATA_REG : std_logic_vector(7 downto 0); +signal D0_REG : bit; +signal INT_REG : bit; +signal DRQ_REG : bit; +signal DONE_REG : bit; +signal GOT_CMD_REG : bit; +signal HOLD : bit; +signal PREV_CSn : bit; +signal PREV_ACKn : bit; +begin + MC_D <= DATA_REG when MC_RWn = '0' and DONE_REG = '1' else (others => 'Z'); + ACSI_D <= DATA_REG when MC_RWn = '1' and (ACSI_CSn = '0' or ACSI_ACKn = '0' or HOLD = '1') else (others => 'Z'); + ACSI_INTn <= INT_REG; + ACSI_DRQn <= DRQ_REG; + MC_DONE <= DONE_REG; + MC_GOT_CMD <= GOT_CMD_REG; + + P_DATA: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= (others => '0'); + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' and MC_RWn = '1' then + DATA_REG <= MC_D; -- Read from AVR to ACSI. + end if; + -- + if PREV_CSn = '0' and ACSI_CSn = '0' and MC_RWn = '0' and DONE_REG = '0' then + DATA_REG <= ACSI_D; -- Write from ACSI to AVR. + elsif PREV_ACKn = '0' and ACSI_ACKn = '0' and MC_RWn = '0' and DONE_REG = '0' then + DATA_REG <= ACSI_D; -- Write from ACSI to AVR. + end if; + end if; + end process P_DATA; + + P_SYNC: process + begin + wait until CLK = '1' and CLK' event; + PREV_CSn <= ACSI_CSn; + PREV_ACKn <= ACSI_ACKn; + end process P_SYNC; + + P_INT_DRQ: process(RESETn, CLK) + begin + if RESETn = '0' then + INT_REG <= '1'; -- No interrupt. + DRQ_REG <= '1'; -- No data request. + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' and MC_PIO_DMAn = '1' then -- Positive MC_DO edge. + INT_REG <= '0'; -- Release an interrupt. + DRQ_REG <= '1'; + elsif D0_REG = '0' and MC_DO = '1' then + INT_REG <= '1'; + DRQ_REG <= '0'; -- Release a data request. + end if; + -- + if MC_CLR_CMD = '1' then -- Clear done. + INT_REG <= '1'; -- Restore INT_REG. + DRQ_REG <= '1'; -- Restore DRQ_REG. + end if; + -- + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + if ACSI_CSn = '0' then + INT_REG <= '1'; + end if; + -- + if ACSI_ACKn = '0' then + DRQ_REG <= '1'; + end if; + end if; + end if; + end process P_INT_DRQ; + + P_HOLD: process(RESETn, CLK) + begin + if RESETn = '0' then + HOLD <= '0'; + elsif CLK = '1' and CLK' event then + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + HOLD <= '1'; + elsif PREV_CSn = '1' and ACSI_CSn = '1' then -- If signal is high. + HOLD <= '0'; + elsif PREV_ACKn = '1' and ACSI_ACKn = '1' then -- If signal is high. + HOLD <= '0'; + elsif PREV_CSn = '0' and ACSI_CSn = '1' then -- Rising edge. + HOLD <= '1'; + elsif PREV_ACKn = '0' and ACSI_ACKn = '1' then -- Rising edge. + HOLD <= '1'; + elsif MC_CLR_CMD = '1' then -- Clear done. + HOLD <= '0'; + end if; + end if; + end process P_HOLD; + + P_DONE: process(RESETn, CLK) + begin + if RESETn = '0' then + DONE_REG <= '0'; + elsif CLK = '1' and CLK' event then + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + DONE_REG <= '1'; + elsif MC_CLR_CMD = '1' then -- Clear done. + DONE_REG <= '0'; + elsif D0_REG = '0' and MC_DO = '1' then -- Positive MC_DO edge. + DONE_REG <= '0'; + elsif D0_REG = '1' and MC_DO = '0' then -- Negative MC_DO edge. + DONE_REG <= '0'; + end if; + end if; + end process P_DONE; + + P_DO_REG: process(RESETn, CLK) + begin + if RESETn = '0' then + D0_REG <= '0'; + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' then -- Positive MC_DO edge. + D0_REG <= MC_DO; + elsif D0_REG = '1' and MC_DO = '0' then -- Negative MC_DO edge. + D0_REG <= MC_DO; + end if; + end if; + end process P_DO_REG; + + P_GOT_CMD: process(RESETn, CLK) + begin + if RESETn = '0' then + GOT_CMD_REG <= '0'; + elsif CLK = '1' and CLK' event then + if PREV_CSn = '0' and ACSI_CSn = '0' and ACSI_CSn = '0' and ACSI_A1 = '0' then + GOT_CMD_REG <= '1'; -- If command was received. + elsif PREV_ACKn = '0' and ACSI_ACKn = '0' and ACSI_CSn = '0' and ACSI_A1 = '0' then + GOT_CMD_REG <= '1'; -- If command was received. + elsif MC_CLR_CMD = '1' then -- Clear done. + GOT_CMD_REG <= '0'; + end if; + end if; + end process P_GOT_CMD; +end architecture BEHAVIOR; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd new file mode 100644 index 0000000..b1dfe91 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd @@ -0,0 +1,240 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI IP Core peripheral Add-On ---- +---- ---- +---- This file is part of the FPGA-ATARI project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- This hardware provides an interface to connect to a SD-Card. ---- +---- ---- +---- This interface is based on the project 'SatanDisk' of ---- +---- Miroslav Nohaj 'Jookie'. The code is an interpretation of ---- +---- the original code, written in VERILOG. It is provided for ---- +---- the use in a system on programmable chips (SOPC). ---- +---- ---- +---- Timing: Use a clock frequency of 16MHz for this component. ---- +---- Use the same clock frequency for the connected AVR ---- +---- microcontroller. ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2007 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +---- This hardware works with the original ATARI ---- +---- hard dik driver. ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K7A 2007/01/05 WF +-- Initial Release. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF_SD_CARD is + port ( + -- System: + RESETn : in bit; + CLK : in bit; -- 16MHz, see above. + + -- ACSI section: + ACSI_A1 : in bit; + ACSI_CSn : in bit; + ACSI_ACKn : in bit; + ACSI_INTn : out bit; + ACSI_DRQn : out bit; + ACSI_D_IN : in std_logic_vector(7 downto 0); + ACSI_D_OUT : out std_logic_vector(7 downto 0); + ACSI_D_EN : out bit; + + -- Microcontroller interface: + MC_DO : in bit; + MC_PIO_DMAn : in bit; + MC_RWn : in bit; + MC_CLR_CMD : in bit; + MC_DONE : out bit; + MC_GOT_CMD : out bit; + MC_D_IN : in std_logic_vector(7 downto 0); + MC_D_OUT : out std_logic_vector(7 downto 0); + MC_D_EN : out bit + ); +end WF_SD_CARD; + +architecture BEHAVIOR of WF_SD_CARD is +signal DATA_REG : std_logic_vector(7 downto 0); +signal D0_REG : bit; +signal INT_REG : bit; +signal DRQ_REG : bit; +signal DONE_REG : bit; +signal GOT_CMD_REG : bit; +signal HOLD : bit; +signal PREV_CSn : bit; +signal PREV_ACKn : bit; +begin + MC_D_OUT <= DATA_REG when MC_RWn = '0' and DONE_REG = '1' else (others => '0'); + MC_D_EN <= '1' when MC_RWn = '0' and DONE_REG = '1' else '0'; + ACSI_D_OUT <= DATA_REG when MC_RWn = '1' and (ACSI_CSn = '0' or ACSI_ACKn = '0' or HOLD = '1') else (others => '0'); +--ACSI_D_EN <= '1' when MC_RWn = '1' and (ACSI_CSn = '0' or ACSI_ACKn = '0' or HOLD = '1') else '0'; +ACSI_D_EN <= '0'; -- Disabled. +--ACSI_INTn <= INT_REG; +ACSI_INTn <= '1'; -- Disabled. +--ACSI_DRQn <= DRQ_REG; +ACSI_DRQn <= '1'; -- Disabled. + MC_DONE <= DONE_REG; + MC_GOT_CMD <= GOT_CMD_REG; + + P_DATA: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= (others => '0'); + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' and MC_RWn = '1' then + DATA_REG <= MC_D_IN; -- Read from AVR to ACSI. + end if; + -- + if PREV_CSn = '0' and ACSI_CSn = '0' and MC_RWn = '0' and DONE_REG = '0' then + DATA_REG <= ACSI_D_IN; -- Write from ACSI to AVR. + elsif PREV_ACKn = '0' and ACSI_ACKn = '0' and MC_RWn = '0' and DONE_REG = '0' then + DATA_REG <= ACSI_D_IN; -- Write from ACSI to AVR. + end if; + end if; + end process P_DATA; + + P_SYNC: process + begin + wait until CLK = '1' and CLK' event; + PREV_CSn <= ACSI_CSn; + PREV_ACKn <= ACSI_ACKn; + end process P_SYNC; + + P_INT_DRQ: process(RESETn, CLK) + begin + if RESETn = '0' then + INT_REG <= '1'; -- No interrupt. + DRQ_REG <= '1'; -- No data request. + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' and MC_PIO_DMAn = '1' then -- Positive MC_DO edge. + INT_REG <= '0'; -- Release an interrupt. + DRQ_REG <= '1'; + elsif D0_REG = '0' and MC_DO = '1' then + INT_REG <= '1'; + DRQ_REG <= '0'; -- Release a data request. + end if; + -- + if MC_CLR_CMD = '1' then -- Clear done. + INT_REG <= '1'; -- Restore INT_REG. + DRQ_REG <= '1'; -- Restore DRQ_REG. + end if; + -- + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + if ACSI_CSn = '0' then + INT_REG <= '1'; + end if; + -- + if ACSI_ACKn = '0' then + DRQ_REG <= '1'; + end if; + end if; + end if; + end process P_INT_DRQ; + + P_HOLD: process(RESETn, CLK) + begin + if RESETn = '0' then + HOLD <= '0'; + elsif CLK = '1' and CLK' event then + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + HOLD <= '1'; + elsif PREV_CSn = '1' and ACSI_CSn = '1' then -- If signal is high. + HOLD <= '0'; + elsif PREV_ACKn = '1' and ACSI_ACKn = '1' then -- If signal is high. + HOLD <= '0'; + elsif PREV_CSn = '0' and ACSI_CSn = '1' then -- Rising edge. + HOLD <= '1'; + elsif PREV_ACKn = '0' and ACSI_ACKn = '1' then -- Rising edge. + HOLD <= '1'; + elsif MC_CLR_CMD = '1' then -- Clear done. + HOLD <= '0'; + end if; + end if; + end process P_HOLD; + + P_DONE: process(RESETn, CLK) + begin + if RESETn = '0' then + DONE_REG <= '0'; + elsif CLK = '1' and CLK' event then + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + DONE_REG <= '1'; + elsif MC_CLR_CMD = '1' then -- Clear done. + DONE_REG <= '0'; + elsif D0_REG = '0' and MC_DO = '1' then -- Positive MC_DO edge. + DONE_REG <= '0'; + elsif D0_REG = '1' and MC_DO = '0' then -- Negative MC_DO edge. + DONE_REG <= '0'; + end if; + end if; + end process P_DONE; + + P_DO_REG: process(RESETn, CLK) + begin + if RESETn = '0' then + D0_REG <= '0'; + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' then -- Positive MC_DO edge. + D0_REG <= MC_DO; + elsif D0_REG = '1' and MC_DO = '0' then -- Negative MC_DO edge. + D0_REG <= MC_DO; + end if; + end if; + end process P_DO_REG; + + P_GOT_CMD: process(RESETn, CLK) + begin + if RESETn = '0' then + GOT_CMD_REG <= '0'; + elsif CLK = '1' and CLK' event then +-- ?? ACSI_CSn doppelt! +if PREV_CSn = '0' and ACSI_CSn = '0' and ACSI_CSn = '0' and ACSI_A1 = '0' then + GOT_CMD_REG <= '1'; -- If command was received. + elsif PREV_ACKn = '0' and ACSI_ACKn = '0' and ACSI_CSn = '0' and ACSI_A1 = '0' then + GOT_CMD_REG <= '1'; -- If command was received. + elsif MC_CLR_CMD = '1' then -- Clear done. + GOT_CMD_REG <= '0'; + end if; + end if; + end process P_GOT_CMD; +end architecture BEHAVIOR; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd new file mode 100644 index 0000000..9d048de --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd @@ -0,0 +1,84 @@ +---------------------------------------------------------------------- +---- ---- +---- YM2149 compatible sound generator. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Model of the ST or STE's YM2149 sound generator. ---- +---- ---- +---- This is the package file containing the component ---- +---- declarations. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; + +package WF2149IP_PKG is +type BUSCYCLES is (INACTIVE, R_READ, R_WRITE, ADDRESS); + +component WF2149IP_WAVE + port( + RESETn : in bit; + SYS_CLK : in bit; + + WAV_STRB : in bit; + + ADR : in bit_vector(3 downto 0); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + + BUSCYCLE : in BUSCYCLES; + CTRL_REG : in bit_vector(5 downto 0); + + OUT_A : out bit; + OUT_B : out bit; + OUT_C : out bit + ); +end component; +end WF2149IP_PKG; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd new file mode 100644 index 0000000..3f5024a --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd @@ -0,0 +1,170 @@ +---------------------------------------------------------------------- +---- ---- +---- YM2149 compatible sound generator. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Model of the ST or STE's YM2149 sound generator. ---- +---- This IP core of the sound generator differs slightly from ---- +---- the original. Firstly it is a synchronous design without any ---- +---- latches (like assumed in the original chip). This required ---- +---- the introduction of a system adequate clock. In detail this ---- +---- SYS_CLK should on the one hand be fast enough to meet the ---- +---- timing requirements of the system's bus cycle and should one ---- +---- the other hand drive the PWM modules correctly. To meet both ---- +---- a SYS_CLK of 16MHz or above is recommended. ---- +---- Secondly, the original chip has an implemented DA converter. ---- +---- This feature is not possible in today's FPGAs. Therefore the ---- +---- converter is replaced by pulse width modulators. This solu- ---- +---- tion is very simple in comparison to other approaches like ---- +---- external DA converters with wave tables etc. The soltution ---- +---- with the pulse width modulators is probably not as accurate ---- +---- DAs with wavetables. For a detailed descrition of the hard- ---- +---- ware PWM filter look at the end of the wave file, where the ---- +---- pulse width modulators can be found. ---- +---- For a proper operation it is required, that the wave clock ---- +---- is lower than the system clock. A good choice is for example ---- +---- 2MHz for the wave clock and 16MHz for the system clock. ---- +---- ---- +---- Main module file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8B 2008/12/24 WF +-- Rewritten this top level file as a wrapper for the top_soc file. +-- + +library ieee; +use ieee.std_logic_1164.all; +use work.wf2149ip_pkg.all; + +entity WF2149IP_TOP is + port( + + SYS_CLK : in bit; -- Read the inforation in the header! + RESETn : in bit; + + WAV_CLK : in bit; -- Read the inforation in the header! + SELn : in bit; + + BDIR : in bit; + BC2, BC1 : in bit; + + A9n, A8 : in bit; + DA : inout std_logic_vector(7 downto 0); + + IO_A : inout std_logic_vector(7 downto 0); + IO_B : inout std_logic_vector(7 downto 0); + + OUT_A : out bit; -- Analog (PWM) outputs. + OUT_B : out bit; + OUT_C : out bit + ); +end WF2149IP_TOP; + +architecture STRUCTURE of WF2149IP_TOP is +component WF2149IP_TOP_SOC + port( + SYS_CLK : in bit; + RESETn : in bit; + WAV_CLK : in bit; + SELn : in bit; + BDIR : in bit; + BC2, BC1 : in bit; + A9n, A8 : in bit; + DA_IN : in std_logic_vector(7 downto 0); + DA_OUT : out std_logic_vector(7 downto 0); + DA_EN : out bit; + IO_A_IN : in bit_vector(7 downto 0); + IO_A_OUT : out bit_vector(7 downto 0); + IO_A_EN : out bit; + IO_B_IN : in bit_vector(7 downto 0); + IO_B_OUT : out bit_vector(7 downto 0); + IO_B_EN : out bit; + OUT_A : out bit; + OUT_B : out bit; + OUT_C : out bit + ); +end component; +-- +signal DA_OUT : std_logic_vector(7 downto 0); +signal DA_EN : bit; +signal IO_A_IN : bit_vector(7 downto 0); +signal IO_A_OUT : bit_vector(7 downto 0); +signal IO_A_EN : bit; +signal IO_B_IN : bit_vector(7 downto 0); +signal IO_B_OUT : bit_vector(7 downto 0); +signal IO_B_EN : bit; +begin + IO_A_IN <= To_BitVector(IO_A); + IO_B_IN <= To_BitVector(IO_B); + + IO_A <= To_StdLogicVector(IO_A_OUT) when IO_A_EN = '1' else (others => 'Z'); + IO_B <= To_StdLogicVector(IO_B_OUT) when IO_B_EN = '1' else (others => 'Z'); + + DA <= DA_OUT when DA_EN = '1' else (others => 'Z'); + + I_SOUND: WF2149IP_TOP_SOC + port map(SYS_CLK => SYS_CLK, + RESETn => RESETn, + WAV_CLK => WAV_CLK, + SELn => SELn, + BDIR => BDIR, + BC2 => BC2, + BC1 => BC1, + A9n => A9n, + A8 => A8, + DA_IN => DA, + DA_OUT => DA_OUT, + DA_EN => DA_EN, + IO_A_IN => IO_A_IN, + IO_A_OUT => IO_A_OUT, + IO_A_EN => IO_A_EN, + IO_B_IN => IO_B_IN, + IO_B_OUT => IO_B_OUT, + IO_B_EN => IO_B_EN, + OUT_A => OUT_A, + OUT_B => OUT_B, + OUT_C => OUT_C + ); +end STRUCTURE; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd new file mode 100644 index 0000000..77ea5ef --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd @@ -0,0 +1,229 @@ +---------------------------------------------------------------------- +---- ---- +---- YM2149 compatible sound generator. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Model of the ST or STE's YM2149 sound generator. ---- +---- This IP core of the sound generator differs slightly from ---- +---- the original. Firstly it is a synchronous design without any ---- +---- latches (like assumed in the original chip). This required ---- +---- the introduction of a system adequate clock. In detail this ---- +---- SYS_CLK should on the one hand be fast enough to meet the ---- +---- timing requirements of the system's bus cycle and should one ---- +---- the other hand drive the PWM modules correctly. To meet both ---- +---- a SYS_CLK of 16MHz or above is recommended. ---- +---- Secondly, the original chip has an implemented DA converter. ---- +---- This feature is not possible in today's FPGAs. Therefore the ---- +---- converter is replaced by pulse width modulators. This solu- ---- +---- tion is very simple in comparison to other approaches like ---- +---- external DA converters with wave tables etc. The soltution ---- +---- with the pulse width modulators is probably not as accurate ---- +---- DAs with wavetables. For a detailed descrition of the hard- ---- +---- ware PWM filter look at the end of the wave file, where the ---- +---- pulse width modulators can be found. ---- +---- For a proper operation it is required, that the wave clock ---- +---- is lower than the system clock. A good choice is for example ---- +---- 2MHz for the wave clock and 16MHz for the system clock. ---- +---- ---- +---- Main module file. ---- +---- Top level file for use in systems on programmable chips. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Top level file provided for SOC (systems on programmable chips). +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use work.wf2149ip_pkg.all; + +entity WF2149IP_TOP_SOC is + port( + + SYS_CLK : in bit; -- Read the inforation in the header! + RESETn : in bit; + + WAV_CLK : in bit; -- Read the inforation in the header! + SELn : in bit; + + BDIR : in bit; + BC2, BC1 : in bit; + + A9n, A8 : in bit; + DA_IN : in std_logic_vector(7 downto 0); + DA_OUT : out std_logic_vector(7 downto 0); + DA_EN : out bit; + + IO_A_IN : in bit_vector(7 downto 0); + IO_A_OUT : out bit_vector(7 downto 0); + IO_A_EN : out bit; + IO_B_IN : in bit_vector(7 downto 0); + IO_B_OUT : out bit_vector(7 downto 0); + IO_B_EN : out bit; + + OUT_A : out bit; -- Analog (PWM) outputs. + OUT_B : out bit; + OUT_C : out bit + ); +end WF2149IP_TOP_SOC; + +architecture STRUCTURE of WF2149IP_TOP_SOC is +signal BUSCYCLE : BUSCYCLES; +signal DATA_OUT_I : std_logic_vector(7 downto 0); +signal DATA_EN_I : bit; +signal WAV_STRB : bit; +signal ADR_I : bit_vector(3 downto 0); +signal CTRL_REG : bit_vector(7 downto 0); +signal PORT_A : bit_vector(7 downto 0); +signal PORT_B : bit_vector(7 downto 0); +begin + P_WAVSTRB: process(RESETn, SYS_CLK) + variable LOCK : boolean; + variable TMP : bit; + begin + if RESETn = '0' then + LOCK := false; + TMP := '0'; + elsif SYS_CLK = '1' and SYS_CLK' event then + if WAV_CLK = '1' and LOCK = false then + LOCK := true; + TMP := not TMP; -- Divider by 2. + case SELn is + when '1' => WAV_STRB <= '1'; + when others => WAV_STRB <= TMP; + end case; + elsif WAV_CLK = '0' then + LOCK := false; + WAV_STRB <= '0'; + else + WAV_STRB <= '0'; + end if; + end if; + end process P_WAVSTRB; + + with BDIR & BC2 & BC1 select + BUSCYCLE <= INACTIVE when "000" | "010" | "101", + ADDRESS when "001" | "100" | "111", + R_READ when "011", + R_WRITE when "110"; + + ADDRESSLATCH: process(RESETn, SYS_CLK) + -- This process is responsible to store the desired register + -- address. The default (after reset) is channel A fine tone + -- adjustment. + begin + if RESETn = '0' then + ADR_I <= (others => '0'); + elsif SYS_CLK = '1' and SYS_CLK' event then + if BUSCYCLE = ADDRESS and A9n = '0' and A8 = '1' and DA_IN(7 downto 4) = x"0" then + ADR_I <= To_BitVector(DA_IN(3 downto 0)); + end if; + end if; + end process ADDRESSLATCH; + + P_CTRL_REG: process(RESETn, SYS_CLK) + -- THIS is the Control register for the mixer and for the I/O ports. + begin + if RESETn = '0' then + CTRL_REG <= x"00"; + elsif SYS_CLK = '1' and SYS_CLK' event then + if BUSCYCLE = R_WRITE and ADR_I = x"7" then + CTRL_REG <= To_BitVector(DA_IN); + end if; + end if; + end process P_CTRL_REG; + + DIG_PORTS: process(RESETn, SYS_CLK) + begin + if RESETn = '0' then + PORT_A <= x"00"; + PORT_B <= x"00"; + elsif SYS_CLK = '1' and SYS_CLK' event then + if BUSCYCLE = R_WRITE and ADR_I = x"E" then + PORT_A <= To_BitVector(DA_IN); + elsif BUSCYCLE = R_WRITE and ADR_I = x"F" then + PORT_B <= To_BitVector(DA_IN); + end if; + end if; + end process DIG_PORTS; + -- Set port direction to input or to output: + IO_A_EN <= '1' when CTRL_REG(6) = '1' else '0'; + IO_B_EN <= '1' when CTRL_REG(7) = '1' else '0'; + IO_A_OUT <= PORT_A; + IO_B_OUT <= PORT_B; + + I_PSG_WAVE: WF2149IP_WAVE + port map( + RESETn => RESETn, + SYS_CLK => SYS_CLK, + + WAV_STRB => WAV_STRB, + + ADR => ADR_I, + DATA_IN => DA_IN, + DATA_OUT => DATA_OUT_I, + DATA_EN => DATA_EN_I, + + BUSCYCLE => BUSCYCLE, + CTRL_REG => CTRL_REG(5 downto 0), + + OUT_A => OUT_A, + OUT_B => OUT_B, + OUT_C => OUT_C + ); + + -- Read the ports and registers: + DA_EN <= '1' when DATA_EN_I = '1' else + '1' when BUSCYCLE = R_READ and ADR_I = x"7" else + '1' when BUSCYCLE = R_READ and ADR_I = x"E" else + '1' when BUSCYCLE = R_READ and ADR_I = x"F" else '0'; + + DA_OUT <= DATA_OUT_I when DATA_EN_I = '1' else -- WAV stuff. + To_StdLogicVector(IO_A_IN) when BUSCYCLE = R_READ and ADR_I = x"E" else + To_StdLogicVector(IO_B_IN) when BUSCYCLE = R_READ and ADR_I = x"F" else + To_StdLogicVector(CTRL_REG) when BUSCYCLE = R_READ and ADR_I = x"7" else (others => '0'); + +end STRUCTURE; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd new file mode 100644 index 0000000..d829f9b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd @@ -0,0 +1,533 @@ +---------------------------------------------------------------------- +---- ---- +---- YM2149 compatible sound generator. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Model of the ST or STE's YM2149 sound generator. ---- +---- ---- +---- Waveform generator. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- NOISE_OUT has now synchronous reset to meet preset requirement. +-- Fixed a bug in the envelope generator. Thanks to Lyndon Amsdon finding it. +-- Correction of the schematic given in the end of this file. + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use work.wf2149ip_pkg.all; + +entity WF2149IP_WAVE is + port( + RESETn : in bit; + SYS_CLK : in bit; + + WAV_STRB : in bit; + + ADR : in bit_vector(3 downto 0); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + + BUSCYCLE : in BUSCYCLES; + CTRL_REG : in bit_vector(5 downto 0); + + OUT_A : out bit; + OUT_B : out bit; + OUT_C : out bit + ); +end entity WF2149IP_WAVE; + +architecture BEHAVIOR of WF2149IP_WAVE is +signal FREQUENCY_A : std_logic_vector(11 downto 0); +signal FREQUENCY_B : std_logic_vector(11 downto 0); +signal FREQUENCY_C : std_logic_vector(11 downto 0); +signal NOISE_FREQ : std_logic_vector(4 downto 0); +signal LEVEL_A : std_logic_vector(4 downto 0); +signal LEVEL_B : std_logic_vector(4 downto 0); +signal LEVEL_C : std_logic_vector(4 downto 0); +signal ENV_FREQ : std_logic_vector(15 downto 0); +signal ENV_SHAPE : std_logic_vector(3 downto 0); +signal ENV_RESET : boolean; +signal ENV_STRB : bit; +signal OSC_A_OUT : bit; +signal OSC_B_OUT : bit; +signal OSC_C_OUT : bit; +signal NOISE_OUT : bit; +signal AUDIO_A : bit; +signal AUDIO_B : bit; +signal AUDIO_C : bit; +signal VOL_ENV : std_logic_vector(4 downto 0); +signal AMPLITUDE_A : std_logic_vector(4 downto 0); +signal AMPLITUDE_B : std_logic_vector(4 downto 0); +signal AMPLITUDE_C : std_logic_vector(4 downto 0); +signal VOLUME_A : std_logic_vector(7 downto 0); +signal VOLUME_B : std_logic_vector(7 downto 0); +signal VOLUME_C : std_logic_vector(7 downto 0); +signal PWM_RAMP : std_logic_vector(7 downto 0); +begin + REGISTERS: process(RESETn, SYS_CLK) + -- This process is responsible for initialisation + -- and write access to the configuration registers. + begin + if RESETn = '0' then + FREQUENCY_A <= x"000"; + FREQUENCY_B <= x"000"; + FREQUENCY_C <= x"000"; + NOISE_FREQ <= "00000"; + LEVEL_A <= "00000"; + LEVEL_B <= "00000"; + LEVEL_C <= "00000"; + ENV_FREQ <= (others => '0'); + ENV_SHAPE <= "0000"; + elsif SYS_CLK = '1' and SYS_CLK' event then + ENV_RESET <= false; -- Initialize signal. + if BUSCYCLE = R_WRITE then + case ADR is + when x"0" => FREQUENCY_A(7 downto 0) <= DATA_IN; + when x"1" => FREQUENCY_A(11 downto 8) <= DATA_IN(3 downto 0); + when x"2" => FREQUENCY_B(7 downto 0) <= DATA_IN; + when x"3" => FREQUENCY_B(11 downto 8) <= DATA_IN(3 downto 0); + when x"4" => FREQUENCY_C(7 downto 0) <= DATA_IN; + when x"5" => FREQUENCY_C(11 downto 8) <= DATA_IN(3 downto 0); + when x"6" => NOISE_FREQ <= DATA_IN(4 downto 0); + when x"8" => LEVEL_A <= DATA_IN(4 downto 0); + when x"9" => LEVEL_B <= DATA_IN(4 downto 0); + when x"A" => LEVEL_C <= DATA_IN(4 downto 0); + when x"B" => ENV_FREQ(7 downto 0) <= DATA_IN; + when x"C" => ENV_FREQ(15 downto 8) <= DATA_IN; + ENV_RESET <= true; -- Initialize the envelope generator. + when x"D" => ENV_SHAPE <= DATA_IN(3 downto 0); + when others => null; + end case; + end if; + end if; + end process REGISTERS; + + -- Read back the configuration registers: + DATA_OUT <= FREQUENCY_A(7 downto 0) when BUSCYCLE = R_READ and ADR = x"0" else + "0000" & FREQUENCY_A(11 downto 8) when BUSCYCLE = R_READ and ADR = x"1" else + FREQUENCY_B(7 downto 0) when BUSCYCLE = R_READ and ADR = x"2" else + "0000" & FREQUENCY_B(11 downto 8) when BUSCYCLE = R_READ and ADR = x"3" else + FREQUENCY_C(7 downto 0) when BUSCYCLE = R_READ and ADR = x"4" else + "0000" & FREQUENCY_C(11 downto 8) when BUSCYCLE = R_READ and ADR = x"5" else + "000" & NOISE_FREQ when BUSCYCLE = R_READ and ADR = x"6" else + "000" & LEVEL_A when BUSCYCLE = R_READ and ADR = x"8" else + "000" & LEVEL_B when BUSCYCLE = R_READ and ADR = x"9" else + "000" & LEVEL_C when BUSCYCLE = R_READ and ADR = x"A" else + ENV_FREQ(7 downto 0) when BUSCYCLE = R_READ and ADR = x"B" else + ENV_FREQ(15 downto 8) when BUSCYCLE = R_READ and ADR = x"C" else + x"0" & ENV_SHAPE when BUSCYCLE = R_READ and ADR = x"D" else (others => '0'); + DATA_EN <= '1' when BUSCYCLE = R_READ and ADR >= x"0" and ADR <= x"6" else + '1' when BUSCYCLE = R_READ and ADR >= x"8" and ADR <= x"D" else '0'; + + MUSICGENERATOR: process(RESETn, SYS_CLK) + variable CLK_DIV : std_logic_vector(2 downto 0); + variable CNT_CH_A : std_logic_vector(11 downto 0); + variable CNT_CH_B : std_logic_vector(11 downto 0); + variable CNT_CH_C : std_logic_vector(11 downto 0); + begin + if RESETn = '0' then + CLK_DIV := "000"; + CNT_CH_A := (others => '0'); + CNT_CH_B := (others => '0'); + CNT_CH_C := (others => '0'); + OSC_A_OUT <= '0'; + OSC_B_OUT <= '0'; + OSC_C_OUT <= '0'; + elsif SYS_CLK = '1' and SYS_CLK' event then + if WAV_STRB = '1' then + -- Divider by 8 for the oscillators brings in connection + -- with the toggle flip flops CH_x_OUT the required divider + -- ratio of 16. + CLK_DIV := CLK_DIV + '1'; + + if CLK_DIV = "000" then + if FREQUENCY_A = x"000" then + CNT_CH_A := (others => '0'); + OSC_A_OUT <= '0'; + elsif CNT_CH_A = x"000" then + CNT_CH_A := FREQUENCY_A - '1' ; + OSC_A_OUT <= not OSC_A_OUT; + else + CNT_CH_A := CNT_CH_A - '1'; + end if; + + if FREQUENCY_B = x"000" then + CNT_CH_B := (others => '0'); + OSC_B_OUT <= '0'; + elsif CNT_CH_B = x"000" then + CNT_CH_B := FREQUENCY_B - '1' ; + OSC_B_OUT <= not OSC_B_OUT; + else + CNT_CH_B := CNT_CH_B - '1'; + end if; + + if FREQUENCY_C = x"000" then + CNT_CH_C := (others => '0'); + OSC_C_OUT <= '0'; + elsif CNT_CH_C = x"000" then + CNT_CH_C := FREQUENCY_C - '1' ; + OSC_C_OUT <= not OSC_C_OUT; + else + CNT_CH_C := CNT_CH_C - '1'; + end if; + end if; + end if; + end if; + end process MUSICGENERATOR; + + NOISEGENERATOR: process + -- The noise shift polynomial is taken from a template of Kazuhiro TSUJIKAWA's + -- (ESE Artists' factory) approach for a 2149 equivalent. But the implementation + -- is done in another way. + -- LFSR (linear feedback shift register polynomial: f(x) = x^17 + x^14 + 1. + variable CLK_DIV : std_logic_vector(3 downto 0); + variable CNT_NOISE : std_logic_vector(4 downto 0); + variable N_SHFT : std_logic_vector(16 downto 0); + begin + wait until SYS_CLK = '1' and SYS_CLK' event; + if RESETn = '0' then + CLK_DIV := x"0"; + CNT_NOISE := (others => '1'); -- Preset the polynomial shift register. + NOISE_OUT <= '1'; + elsif WAV_STRB = '1' then + -- Divider by 16 for the noise generator. + CLK_DIV := CLK_DIV + '1'; + if CLK_DIV = x"0" then + -- Noise frequency counter. + if NOISE_FREQ = "00000" then + CNT_NOISE := (others => '0'); + elsif CNT_NOISE = "00000" then + CNT_NOISE := NOISE_FREQ - '1' ; + N_SHFT := N_SHFT(15 downto 14) & not(N_SHFT(16) xor N_SHFT(13)) & + N_SHFT(12 downto 0) & not N_SHFT(16); + else + CNT_NOISE := CNT_NOISE - '1'; + end if; + end if; + end if; + NOISE_OUT <= To_Bit(N_SHFT(16)); + end process NOISEGENERATOR; + + ENVELOPE_PERIOD: process(RESETn, SYS_CLK) + -- The envelope period is controlled by the Envelope Frequency and the divider ratio which is + -- 256/32 = 8. For further information see the original data sheet. + variable ENV_CLK : std_logic_vector(18 downto 0); + variable LOCK : boolean; + begin + if RESETn = '0' then + ENV_STRB <= '0'; + ENV_CLK := (others => '0'); + LOCK := false; + elsif SYS_CLK = '1' and SYS_CLK' event then + if WAV_STRB = '1' and LOCK = false then + LOCK := true; + if ENV_FREQ = x"0000" then + ENV_STRB <= '0'; + elsif ENV_CLK = x"0000" & "000" then + ENV_CLK := (ENV_FREQ & "111") - '1' ; + ENV_STRB <= '1'; + else + ENV_CLK := ENV_CLK - '1'; + ENV_STRB <= '0'; + end if; + elsif WAV_STRB = '0' then + LOCK := false; + ENV_STRB <= '0'; + else + ENV_STRB <= '0'; + end if; + end if; + end process ENVELOPE_PERIOD; + + ENVELOPE: process(RESETn, SYS_CLK) + -- Envelope shapes: + -- case ENV_SHAPE: + -- + -- 0 0 x x \___ + -- + -- 0 1 x x /|___ + -- + -- 1 0 0 0 _|\|\|\|\| + -- + -- 1 0 0 1 \___ + -- + -- 1 0 1 0 \/\/ + -- ___ + -- 1 0 1 1 \| + -- + -- 1 1 0 0 /|/|/|/| + -- ___ + -- 1 1 0 1 / + -- + -- 1 1 1 0 /\/\ + -- + -- 1 1 1 1 /|___ + -- + variable ENV_STOP : boolean; + variable ENV_UP_DNn : bit; + begin + if RESETn = '0' then + VOL_ENV <= (others => '0'); + ENV_UP_DNn := '0'; + ENV_STOP := false; + elsif SYS_CLK = '1' and SYS_CLK' event then + if ENV_RESET = true then + ENV_STOP := false; + case ENV_SHAPE is + when "1011" | "1010" | "1001" | "1000" | "0011" | "0010" | "0001" | "0000" => + VOL_ENV <= "11111"; -- Start on top. + ENV_UP_DNn := '0'; + when others => + VOL_ENV <= "00000"; -- Start at bottom. + ENV_UP_DNn := '1'; + end case; + elsif ENV_STRB = '1' then + case ENV_SHAPE is + when "1001" | "0011" | "0010" | "0001" | "0000" => + if VOL_ENV > "00000" then + VOL_ENV <= VOL_ENV - '1'; + end if; + when "1111" | "0111" | "0110" | "0101" | "0100" => + if VOL_ENV < "11111" and ENV_STOP = false then + VOL_ENV <= VOL_ENV + '1'; + else + VOL_ENV <= "00000"; + ENV_STOP := true; + end if; + when "1000" => + VOL_ENV <= VOL_ENV - '1'; + when "1110" | "1010" => + if ENV_UP_DNn = '0' then + VOL_ENV <= VOL_ENV - '1'; + else + VOL_ENV <= VOL_ENV + '1'; + end if; + -- + if VOL_ENV = "00001" then + ENV_UP_DNn := '1'; + elsif VOL_ENV = "11110" then + ENV_UP_DNn := '0'; + end if; + when "1011" => + if VOL_ENV > "00000" and ENV_STOP = false then + VOL_ENV <= VOL_ENV - '1'; + else + VOL_ENV <= "11111"; + ENV_STOP := true; + end if; + when "1100" => + VOL_ENV <= VOL_ENV + '1'; + when "1101" => + if VOL_ENV < "11111" then + VOL_ENV <= VOL_ENV + '1'; + end if; + when others => null; -- Covers U, X, Z, W, H, L, -. + end case; + end if; + end if; + end process ENVELOPE; + + --MIXER: + -- The mixer controls are dependant on the mixer settings and the output of the + -- audio data for all three channels. The noise generator and the square wave + -- generators A, B and C are mixed together by a simple boolean OR. + AUDIO_A <= (OSC_A_OUT and not CTRL_REG(0)) or (NOISE_OUT and not CTRL_REG(3)); + AUDIO_B <= (OSC_B_OUT and not CTRL_REG(1)) or (NOISE_OUT and not CTRL_REG(4)); + AUDIO_C <= (OSC_C_OUT and not CTRL_REG(2)) or (NOISE_OUT and not CTRL_REG(5)); + + --LEVEL (e.g. volume control): + -- The linear amplitude for the DA converters of channel A, B or C are fixed + -- (LEVEL(3 downto 0)) or delivered by the envelope generator. + -- The following behavior is taken from the 2149 IP core of Mike J (www.fpgaarcade.com): + -- "make sure level 31 (env) = level 15 (tone)" + -- Thus there is a resulting & '1' modeling if LEVEL amplitudes are selected. + AMPLITUDE_A <= LEVEL_A(3 downto 0) & '1' when LEVEL_A(4) = '0' and AUDIO_A = '1' else + VOL_ENV when LEVEL_A(4) = '1' and AUDIO_A = '1' else "00000"; + AMPLITUDE_B <= LEVEL_B(3 downto 0) & '1' when LEVEL_B(4) = '0' and AUDIO_B = '1' else + VOL_ENV when LEVEL_B(4) = '1' and AUDIO_B = '1' else "00000"; + AMPLITUDE_C <= LEVEL_C(3 downto 0) & '1' when LEVEL_C(4) = '0' and AUDIO_C = '1' else + VOL_ENV when LEVEL_C(4) = '1' and AUDIO_C = '1' else "00000"; + + -- The values for the logarithmic DA converter volume controls are taken from the linear + -- mixer of Mike J's 2149 IP core (www.fpgaarcade.com). + with AMPLITUDE_A select + VOLUME_A <= x"FF" when "11111", + x"D9" when "11110", + x"BA" when "11101", + x"9F" when "11100", + x"88" when "11011", + x"74" when "11010", + x"63" when "11001", + x"54" when "11000", + x"48" when "10111", + x"3D" when "10110", + x"34" when "10101", + x"2C" when "10100", + x"25" when "10011", + x"1F" when "10010", + x"1A" when "10001", + x"16" when "10000", + x"13" when "01111", + x"10" when "01110", + x"0D" when "01101", + x"0B" when "01100", + x"09" when "01011", + x"08" when "01010", + x"07" when "01001", + x"06" when "01000", + x"05" when "00111", + x"04" when "00110", + x"03" when "00101", + x"03" when "00100", + x"02" when "00011", + x"02" when "00010", + x"01" when "00001", + x"00" when others; -- Also covers U, X, Z, W, H, L, -. + + with AMPLITUDE_B select + VOLUME_B <= x"FF" when "11111", + x"D9" when "11110", + x"BA" when "11101", + x"9F" when "11100", + x"88" when "11011", + x"74" when "11010", + x"63" when "11001", + x"54" when "11000", + x"48" when "10111", + x"3D" when "10110", + x"34" when "10101", + x"2C" when "10100", + x"25" when "10011", + x"1F" when "10010", + x"1A" when "10001", + x"16" when "10000", + x"13" when "01111", + x"10" when "01110", + x"0D" when "01101", + x"0B" when "01100", + x"09" when "01011", + x"08" when "01010", + x"07" when "01001", + x"06" when "01000", + x"05" when "00111", + x"04" when "00110", + x"03" when "00101", + x"03" when "00100", + x"02" when "00011", + x"02" when "00010", + x"01" when "00001", + x"00" when others; -- Also covers U, X, Z, W, H, L, -. + + with AMPLITUDE_C select + VOLUME_C <= x"FF" when "11111", + x"D9" when "11110", + x"BA" when "11101", + x"9F" when "11100", + x"88" when "11011", + x"74" when "11010", + x"63" when "11001", + x"54" when "11000", + x"48" when "10111", + x"3D" when "10110", + x"34" when "10101", + x"2C" when "10100", + x"25" when "10011", + x"1F" when "10010", + x"1A" when "10001", + x"16" when "10000", + x"13" when "01111", + x"10" when "01110", + x"0D" when "01101", + x"0B" when "01100", + x"09" when "01011", + x"08" when "01010", + x"07" when "01001", + x"06" when "01000", + x"05" when "00111", + x"04" when "00110", + x"03" when "00101", + x"03" when "00100", + x"02" when "00011", + x"02" when "00010", + x"01" when "00001", + x"00" when others; -- Also covers U, X, Z, W, H, L, -. + + DA_CONVERSION: process + -- The DA conversion for the three analog outputs is originally performed by a built in DA converter. + -- For this is not possible in current FPGA designs, the converter is replaced by three PWM units + -- operating at a frequency which is 100 times higher than the highest noise or music frequency which + -- is 2MHz/16 = 125kHz. So the PWM frequency requires about 12.5MHz or more. The design is done for + -- a PWM frequency of 16MHz). + begin + wait until SYS_CLK = '1' and SYS_CLK' event; + PWM_RAMP <= PWM_RAMP + '1'; + end process DA_CONVERSION; + OUT_A <= '0' when VOLUME_A = x"00" else '1' when PWM_RAMP < VOLUME_A else '0'; + OUT_B <= '0' when VOLUME_B = x"00" else '1' when PWM_RAMP < VOLUME_B else '0'; + OUT_C <= '0' when VOLUME_C = x"00" else '1' when PWM_RAMP < VOLUME_C else '0'; + -- + -- To obtain proper analog output it is necessary to install analog RC filters to the pulse width + -- outputs. An example is given for the direct wiring of the three analog outputs and for a system + -- clock frequency of 16MHz. The output circuitry looks in this case as follows: + -- + -- OUT_A ---------|1kOhm|-----------| |\ e.g. LM741 + -- |----------------------|+\ || + -- OUT_B ---------|1kOhm|-----------| | OP------||--- Analog Signal + -- | |-----|-/ | || + -- OUT_C ---------|1kOhm|-----------| | |/ | 4u7 + -- | |__________| + -- | + -- --- 10nF. + -- --- + -- | + -- | + -- --- + -- WF. +end architecture BEHAVIOR; diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd new file mode 100644 index 0000000..e60cc43 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd @@ -0,0 +1,244 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- Control unit and status logic. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- CTRL_REG has now synchronous reset to meet preset requirements. +-- Process P_DCD has now synchronous reset to meet preset requirements. +-- IRQ_In has now synchronous reset to meet preset requirement. +-- Revision 2K9B 2009/12/24 WF +-- Fixed the interrupt logic. +-- Introduced a minor RTSn correction. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_CTRL_STATUS is + port ( + CLK : in bit; + RESETn : in bit; + + CS : in bit_vector(2 downto 0); -- Active if "011". + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + + -- Status register stuff: + RDRF : in bit; -- Receive data register full. + TDRE : in bit; -- Transmit data register empty. + DCDn : in bit; -- Data carrier detect. + CTSn : in bit; -- Clear to send. + FE : in bit; -- Framing error. + OVR : in bit; -- Overrun error. + PE : in bit; -- Parity error. + + -- Control register stuff: + MCLR : buffer bit; -- Master clear (high active). + RTSn : out bit; -- Request to send. + CDS : out bit_vector(1 downto 0); -- Clock control. + WS : out bit_vector(2 downto 0); -- Word select. + TC : out bit_vector(1 downto 0); -- Transmit control. + IRQn : out bit -- Interrupt request. + ); +end entity WF6850IP_CTRL_STATUS; + +architecture BEHAVIOR of WF6850IP_CTRL_STATUS is +signal CTRL_REG : bit_vector(7 downto 0); +signal STATUS_REG : bit_vector(7 downto 0); +signal RIE : bit; +signal IRQ_I : bit; +signal CTS_In : bit; +signal DCD_In : bit; +signal DCD_FLAGn : bit; +begin + P_SAMPLE: process + begin + wait until CLK = '0' and CLK' event; + CTS_In <= CTSn; -- Sample CTSn on the negative clock edge. + DCD_In <= DCDn; -- Sample DCDn on the negative clock edge. + end process P_SAMPLE; + + STATUS_REG(7) <= IRQ_I; + STATUS_REG(6) <= PE; + STATUS_REG(5) <= OVR; + STATUS_REG(4) <= FE; + STATUS_REG(3) <= CTS_In; -- Reflexion of the input pin. + STATUS_REG(2) <= DCD_FLAGn; + STATUS_REG(1) <= TDRE and not CTS_In; -- No TDRE for CTSn = '1'. + STATUS_REG(0) <= RDRF and not DCD_In; -- DCDn = '1' indicates empty. + + DATA_OUT <= STATUS_REG when CS = "011" and RWn = '1' and RS = '0' and E = '1' else (others => '0'); + DATA_EN <= '1' when CS = "011" and RWn = '1' and RS = '0' and E = '1' else '0'; + + MCLR <= '1' when CTRL_REG(1 downto 0) = "11" else '0'; + RTSn <= '0' when CTRL_REG(6 downto 5) /= "10" else '1'; + + CDS <= CTRL_REG(1 downto 0); + WS <= CTRL_REG(4 downto 2); + TC <= CTRL_REG(6 downto 5); + RIE <= CTRL_REG(7); + + P_IRQ: process + variable DCD_OVR_LOCK : boolean; + variable DCD_LOCK : boolean; + variable DCD_TRANS : boolean; + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + DCD_OVR_LOCK := false; + IRQn <= '1'; + IRQ_I <= '0'; + elsif CS = "011" and RWn = '1' and RS = '0' and E = '1' then + DCD_OVR_LOCK := false; -- Enable reset by reading the status. + end if; + + -- Clear interrupts when disabled. + if CTRL_REG(7) = '0' then + IRQn <= '1'; + IRQ_I <= '0'; + elsif CTRL_REG(6 downto 5) /= "01" then + IRQn <= '1'; + IRQ_I <= '0'; + end if; + + -- Transmitter interrupt: + if TDRE = '1' and CTRL_REG(6 downto 5) = "01" and CTS_In = '0' then + IRQn <= '0'; + IRQ_I <= '1'; + elsif CS = "011" and RWn = '0' and RS = '1' and E = '1' then + IRQn <= '1'; -- Clear by writing to the transmit data register. + end if; + + -- Receiver interrupts: + if RDRF = '1' and RIE = '1' and DCD_In = '0' then + IRQn <= '0'; + IRQ_I <= '1'; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' then + IRQn <= '1'; -- Clear by reading the receive data register. + end if; + + if OVR = '1' and RIE = '1' then + IRQn <= '0'; + IRQ_I <= '1'; + DCD_OVR_LOCK := true; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' and DCD_OVR_LOCK = false then + IRQn <= '1'; -- Clear by reading the receive data register after the status. + end if; + + if DCD_In = '1' and RIE = '1' and DCD_TRANS = false then + IRQn <= '0'; + IRQ_I <= '1'; + -- DCD_TRANS is used to detect a low to high transition of DCDn. + DCD_TRANS := true; + DCD_OVR_LOCK := true; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' and DCD_OVR_LOCK = false then + IRQn <= '1'; -- Clear by reading the receive data register after the status. + elsif DCD_In = '0' then + DCD_TRANS := false; + end if; + + -- The reset of the IRQ status flag: + -- Clear by writing to the transmit data register. + -- Clear by reading the receive data register. + if CS = "011" and RS = '1' and E = '1' then + IRQ_I <= '0'; + end if; + end process P_IRQ; + + CONTROL: process + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + CTRL_REG <= "01000000"; + elsif CS = "011" and RWn = '0' and RS = '0' and E = '1' then + CTRL_REG <= DATA_IN; + end if; + end process CONTROL; + + P_DCD: process + -- This process is some kind of tricky. Refer to the MC6850 data + -- sheet for more information. + variable READ_LOCK : boolean; + variable DCD_RELEASE : boolean; + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + DCD_FLAGn <= '0'; -- This interrupt source must initialise low. + READ_LOCK := true; + DCD_RELEASE := false; + elsif MCLR = '1' then + DCD_FLAGn <= DCD_In; + READ_LOCK := true; + elsif DCD_In = '1' then + DCD_FLAGn <= '1'; + elsif CS = "011" and RWn = '1' and RS = '0' and E = '1' then + READ_LOCK := false; -- Un-READ_LOCK if receiver data register is read. + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' and READ_LOCK = false then + -- Clear if receiver status register read access. + -- After data register has ben read and READ_LOCK again. + DCD_RELEASE := true; + READ_LOCK := true; + DCD_FLAGn <= DCD_In; + elsif DCD_In = '0' and DCD_RELEASE = true then + DCD_FLAGn <= '0'; + DCD_RELEASE := false; + end if; + end process P_DCD; +end architecture BEHAVIOR; + diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd new file mode 100644 index 0000000..755e018 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd @@ -0,0 +1,415 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- 6850's receiver unit. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_RECEIVE is + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + + RXCLK : in bit; + RXDATA : in bit; + + RDRF : buffer bit; + OVR : out bit; + PE : out bit; + FE : out bit + ); +end entity WF6850IP_RECEIVE; + +architecture BEHAVIOR of WF6850IP_RECEIVE is +type RCV_STATES is (IDLE, WAIT_START, SAMPLE, PARITY, STOP1, STOP2, SYNC); +signal RCV_STATE, RCV_NEXT_STATE : RCV_STATES; +signal RXDATA_I : bit; +signal RXDATA_S : bit; +signal DATA_REG : bit_vector(7 downto 0); +signal SHIFT_REG : bit_vector(7 downto 0); +signal CLK_STRB : bit; +signal BITCNT : std_logic_vector(2 downto 0); +begin + P_SAMPLE: process + -- This filter provides a synchronisation to the system + -- clock, even for random baud rates of the received data + -- stream. + variable FLT_TMP : integer range 0 to 2; + begin + wait until CLK = '1' and CLK' event; + -- + RXDATA_I <= RXDATA; + -- + if RXDATA_I = '1' and FLT_TMP < 2 then + FLT_TMP := FLT_TMP + 1; + elsif RXDATA_I = '1' then + RXDATA_S <= '1'; + elsif RXDATA_I = '0' and FLT_TMP > 0 then + FLT_TMP := FLT_TMP - 1; + elsif RXDATA_I = '0' then + RXDATA_S <= '0'; + end if; + end process P_SAMPLE; + + CLKDIV: process + variable CLK_LOCK : boolean; + variable STRB_LOCK : boolean; + variable CLK_DIVCNT : std_logic_vector(6 downto 0); + begin + wait until CLK = '1' and CLK' event; + if CDS = "00" then -- Divider off. + if RXCLK = '1' and STRB_LOCK = false then + CLK_STRB <= '1'; + STRB_LOCK := true; + elsif RXCLK = '0' then + CLK_STRB <= '0'; + STRB_LOCK := false; + else + CLK_STRB <= '0'; + end if; + elsif RCV_STATE = IDLE then + -- Preset the CLKDIV with the start delays. + if CDS = "01" then + CLK_DIVCNT := "0001000"; -- Half of div by 16 mode. + elsif CDS = "10" then + CLK_DIVCNT := "0100000"; -- Half of div by 64 mode. + end if; + CLK_STRB <= '0'; + else + if CLK_DIVCNT > "0000000" and RXCLK = '1' and CLK_LOCK = false then + CLK_DIVCNT := CLK_DIVCNT - '1'; + CLK_STRB <= '0'; + CLK_LOCK := true; + elsif CDS = "01" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "0010000"; -- Div by 16 mode. + -- + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif CDS = "10" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "1000000"; -- Div by 64 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif RXCLK = '0' then + CLK_LOCK := false; + STRB_LOCK := false; + CLK_STRB <= '0'; + else + CLK_STRB <= '0'; + end if; + end if; + end process CLKDIV; + + DATAREG: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + DATA_REG <= x"00"; + elsif RCV_STATE = SYNC and WS(2) = '0' and RDRF = '0' then -- 7 bit data. + -- Transfer from shift- to data register only if + -- data register is empty (RDRF = '0'). + DATA_REG <= '0' & SHIFT_REG(7 downto 1); + elsif RCV_STATE = SYNC and WS(2) = '1' and RDRF = '0' then -- 8 bit data. + -- Transfer from shift- to data register only if + -- data register is empty (RDRF = '0'). + DATA_REG <= SHIFT_REG; + end if; + end if; + end process DATAREG; + DATA_OUT <= DATA_REG when CS = "011" and RWn = '1' and RS = '1' and E = '1' else (others => '0'); + DATA_EN <= '1' when CS = "011" and RWn = '1' and RS = '1' and E = '1' else '0'; + + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + SHIFT_REG <= x"00"; + elsif RCV_STATE = SAMPLE and CLK_STRB = '1' then + SHIFT_REG <= RXDATA_S & SHIFT_REG(7 downto 1); -- Shift right. + end if; + end if; + end process SHIFTREG; + + P_BITCNT: process + begin + wait until CLK = '1' and CLK' event; + if RCV_STATE = SAMPLE and CLK_STRB = '1' then + BITCNT <= BITCNT + '1'; + elsif RCV_STATE /= SAMPLE then + BITCNT <= (others => '0'); + end if; + end process P_BITCNT; + + FRAME_ERR: process(RESETn, CLK) + -- This module detects a framing error + -- during stop bit 1 and stop bit 2. + variable FE_I: bit; + begin + if RESETn = '0' then + FE_I := '0'; + FE <= '0'; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + FE_I := '0'; + FE <= '0'; + elsif CLK_STRB = '1' then + if RCV_STATE = STOP1 and RXDATA_S = '0' then + FE_I := '1'; + elsif RCV_STATE = STOP2 and RXDATA_S = '0' then + FE_I := '1'; + elsif RCV_STATE = STOP1 or RCV_STATE = STOP2 then + FE_I := '0'; -- Error resets when correct data appears. + end if; + end if; + if RCV_STATE = SYNC then + FE <= FE_I; -- Update the FE every SYNC time. + end if; + end if; + end process FRAME_ERR; + + OVERRUN: process(RESETn, CLK) + variable OVR_I : bit; + variable FIRST_READ : boolean; + begin + if RESETn = '0' then + OVR_I := '0'; + OVR <= '0'; + FIRST_READ := false; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + OVR_I := '0'; + OVR <= '0'; + FIRST_READ := false; + elsif CLK_STRB = '1' and RCV_STATE = STOP1 then + -- Overrun appears if RDRF is '1' in this state. + OVR_I := RDRF; + end if; + if CS = "011" and RWn = '1' and RS = '1' and E = '1' and OVR_I = '1' then + -- If an overrun was detected, the concerning flag is + -- set when the valid data word in the receiver data + -- register is read. Thereafter the RDRF flag is reset + -- and the overrun disappears (OVR_I goes low) after + -- a second read (in time) of the receiver data register. + if FIRST_READ = false then + OVR <= '1'; + FIRST_READ := true; + else + OVR <= '0'; + FIRST_READ := false; + end if; + end if; + end if; + end process OVERRUN; + + PARITY_TEST: process(RESETn, CLK) + variable PAR_TMP : bit; + variable PE_I : bit; + begin + if RESETn = '0' then + PE <= '0'; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + PE <= '0'; + elsif CLK_STRB = '1' then -- Sample parity on clock strobe. + PE_I := '0'; -- Initialise. + if RCV_STATE = PARITY then + for i in 1 to 7 loop + if i = 1 then + PAR_TMP := SHIFT_REG(i-1) xor SHIFT_REG(i); + else + PAR_TMP := PAR_TMP xor SHIFT_REG(i); + end if; + end loop; + if WS = "000" or WS = "010" or WS = "110" then -- Even parity. + PE_I := PAR_TMP xor RXDATA_S; + elsif WS = "001" or WS = "011" or WS = "111" then -- Odd parity. + PE_I := not PAR_TMP xor RXDATA_S; + else -- No parity for WS = "100" and WS = "101". + PE_I := '0'; + end if; + end if; + end if; + -- Transmit the parity flag together with the data + -- In other words: no parity to the status register + -- when RDRF inhibits the data transfer to the + -- receiver data register. + if RCV_STATE = SYNC and RDRF = '0' then + PE <= PE_I; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' then + PE <= '0'; -- Clear when reading the data register. + end if; + end if; + end process PARITY_TEST; + + P_RDRF: process(RESETn, CLK) + -- Receive data register full flag. + begin + if RESETn = '0' then + RDRF <= '0'; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + RDRF <= '0'; + elsif RCV_STATE = SYNC then + RDRF <= '1'; -- Data register is full until now! + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' then + RDRF <= '0'; -- After reading the data register ... + end if; + end if; + end process P_RDRF; + + RCV_STATEREG: process(RESETn, CLK) + begin + if RESETn = '0' then + RCV_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + RCV_STATE <= IDLE; + else + RCV_STATE <= RCV_NEXT_STATE; + end if; + end if; + end process RCV_STATEREG; + + RCV_STATEDEC: process(RCV_STATE, RXDATA_S, CDS, WS, BITCNT, CLK_STRB) + begin + case RCV_STATE is + when IDLE => + if RXDATA_S = '0' and CDS = "00" then + RCV_NEXT_STATE <= SAMPLE; -- Startbit detected in div by 1 mode. + elsif RXDATA_S = '0' and CDS = "01" then + RCV_NEXT_STATE <= WAIT_START; -- Startbit detected in div by 16 mode. + elsif RXDATA_S = '0' and CDS = "10" then + RCV_NEXT_STATE <= WAIT_START; -- Startbit detected in div by 64 mode. + else + RCV_NEXT_STATE <= IDLE; -- No startbit; sleep well :-) + end if; + when WAIT_START => + if CLK_STRB = '1' then + if RXDATA_S = '0' then + RCV_NEXT_STATE <= SAMPLE; -- Start condition in no div by 1 modes. + else + RCV_NEXT_STATE <= IDLE; -- No valid start condition, go back. + end if; + else + RCV_NEXT_STATE <= WAIT_START; -- Stay. + end if; + when SAMPLE => + if CLK_STRB = '1' then + if BITCNT < "110" and WS(2) = '0' then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 7 data bits. + elsif BITCNT < "111" and WS(2) = '1' then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 8 data bits. + elsif WS = "100" or WS = "101" then + RCV_NEXT_STATE <= STOP1; -- No parity check enabled. + else + RCV_NEXT_STATE <= PARITY; -- Parity enabled. + end if; + else + RCV_NEXT_STATE <= SAMPLE; -- Stay in sample mode. + end if; + when PARITY => + if CLK_STRB = '1' then + RCV_NEXT_STATE <= STOP1; + else + RCV_NEXT_STATE <= PARITY; + end if; + when STOP1 => + if CLK_STRB = '1' then + if RXDATA_S = '0' then + RCV_NEXT_STATE <= SYNC; -- Framing error detected. + elsif WS = "000" or WS = "001" or WS = "100" then + RCV_NEXT_STATE <= STOP2; -- Two stop bits selected. + else + RCV_NEXT_STATE <= SYNC; -- One stop bit selected. + end if; + else + RCV_NEXT_STATE <= STOP1; + end if; + when STOP2 => + if CLK_STRB = '1' then + RCV_NEXT_STATE <= SYNC; + else + RCV_NEXT_STATE <= STOP2; + end if; + when SYNC => + RCV_NEXT_STATE <= IDLE; + end case; + end process RCV_STATEDEC; +end architecture BEHAVIOR; + diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd new file mode 100644 index 0000000..60a7885 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd @@ -0,0 +1,135 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- This is the top level file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8B 2008/12/24 WF +-- Rewritten this top level file as a wrapper for the top_soc file. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_TOP is + port ( + CLK : in bit; + RESETn : in bit; + + CS2n, CS1, CS0 : in bit; + E : in bit; + RWn : in bit; + RS : in bit; + + DATA : inout std_logic_vector(7 downto 0); + + TXCLK : in bit; + RXCLK : in bit; + RXDATA : in bit; + CTSn : in bit; + DCDn : in bit; + + IRQn : out std_logic; + TXDATA : out bit; + RTSn : out bit + ); +end entity WF6850IP_TOP; + +architecture STRUCTURE of WF6850IP_TOP is +component WF6850IP_TOP_SOC + port ( + CLK : in bit; + RESETn : in bit; + CS2n, CS1, CS0 : in bit; + E : in bit; + RWn : in bit; + RS : in bit; + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + TXCLK : in bit; + RXCLK : in bit; + RXDATA : in bit; + CTSn : in bit; + DCDn : in bit; + IRQn : out bit; + TXDATA : out bit; + RTSn : out bit + ); +end component; +signal DATA_OUT : std_logic_vector(7 downto 0); +signal DATA_EN : bit; +signal IRQ_In : bit; +begin + DATA <= DATA_OUT when DATA_EN = '1' else (others => 'Z'); + IRQn <= '0' when IRQ_In = '0' else 'Z'; -- Open drain. + + I_UART: WF6850IP_TOP_SOC + port map(CLK => CLK, + RESETn => RESETn, + CS2n => CS2n, + CS1 => CS1, + CS0 => CS0, + E => E, + RWn => RWn, + RS => RS, + DATA_IN => DATA, + DATA_OUT => DATA_OUT, + DATA_EN => DATA_EN, + TXCLK => TXCLK, + RXCLK => RXCLK, + RXDATA => RXDATA, + CTSn => CTSn, + DCDn => DCDn, + IRQn => IRQ_In, + TXDATA => TXDATA, + RTSn => RTSn + ); +end architecture STRUCTURE; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd new file mode 100644 index 0000000..cbca6bd --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd @@ -0,0 +1,255 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- This is the top level file. ---- +---- Top level file for use in systems on programmable chips. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Top level file provided for SOC (systems on programmable chips). +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9B 2009/12/24 WF +-- Fixed the interrupt logic. +-- Introduced a minor RTSn correction. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_TOP_SOC is + port ( + CLK : in bit; + RESETn : in bit; + + CS2n, CS1, CS0 : in bit; + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + + TXCLK : in bit; + RXCLK : in bit; + RXDATA : in bit; + CTSn : in bit; + DCDn : in bit; + + IRQn : out bit; + TXDATA : out bit; + RTSn : out bit + ); +end entity WF6850IP_TOP_SOC; + +architecture STRUCTURE of WF6850IP_TOP_SOC is +component WF6850IP_CTRL_STATUS + port ( + CLK : in bit; + RESETn : in bit; + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + RDRF : in bit; + TDRE : in bit; + DCDn : in bit; + CTSn : in bit; + FE : in bit; + OVR : in bit; + PE : in bit; + MCLR : out bit; + RTSn : out bit; + CDS : out bit_vector(1 downto 0); + WS : out bit_vector(2 downto 0); + TC : out bit_vector(1 downto 0); + IRQn : out bit + ); +end component; + +component WF6850IP_RECEIVE + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + RXCLK : in bit; + RXDATA : in bit; + RDRF : out bit; + OVR : out bit; + PE : out bit; + FE : out bit + ); +end component; + +component WF6850IP_TRANSMIT + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + DATA_IN : in bit_vector(7 downto 0); + CTSn : in bit; + TC : in bit_vector(1 downto 0); + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + TXCLK : in bit; + TDRE : out bit; + TXDATA : out bit + ); +end component; +signal DATA_IN_I : bit_vector(7 downto 0); +signal DATA_RX : bit_vector(7 downto 0); +signal DATA_RX_EN : bit; +signal DATA_CTRL : bit_vector(7 downto 0); +signal DATA_CTRL_EN : bit; +signal RDRF_I : bit; +signal TDRE_I : bit; +signal FE_I : bit; +signal OVR_I : bit; +signal PE_I : bit; +signal MCLR_I : bit; +signal CDS_I : bit_vector(1 downto 0); +signal WS_I : bit_vector(2 downto 0); +signal TC_I : bit_vector(1 downto 0); +signal IRQ_In : bit; +begin + DATA_IN_I <= To_BitVector(DATA_IN); + DATA_EN <= DATA_RX_EN or DATA_CTRL_EN; + DATA_OUT <= To_StdLogicVector(DATA_RX) when DATA_RX_EN = '1' else + To_StdLogicVector(DATA_CTRL) when DATA_CTRL_EN = '1' else (others => '0'); + + IRQn <= '0' when IRQ_In = '0' else '1'; + + I_UART_CTRL_STATUS: WF6850IP_CTRL_STATUS + port map( + CLK => CLK, + RESETn => RESETn, + CS(2) => CS2n, + CS(1) => CS1, + CS(0) => CS0, + E => E, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + DATA_OUT => DATA_CTRL, + DATA_EN => DATA_CTRL_EN, + RDRF => RDRF_I, + TDRE => TDRE_I, + DCDn => DCDn, + CTSn => CTSn, + FE => FE_I, + OVR => OVR_I, + PE => PE_I, + MCLR => MCLR_I, + RTSn => RTSn, + CDS => CDS_I, + WS => WS_I, + TC => TC_I, + IRQn => IRQ_In + ); + + I_UART_RECEIVE: WF6850IP_RECEIVE + port map ( + CLK => CLK, + RESETn => RESETn, + MCLR => MCLR_I, + CS(2) => CS2n, + CS(1) => CS1, + CS(0) => CS0, + E => E, + RWn => RWn, + RS => RS, + DATA_OUT => DATA_RX, + DATA_EN => DATA_RX_EN, + WS => WS_I, + CDS => CDS_I, + RXCLK => RXCLK, + RXDATA => RXDATA, + RDRF => RDRF_I, + OVR => OVR_I, + PE => PE_I, + FE => FE_I + ); + + I_UART_TRANSMIT: WF6850IP_TRANSMIT + port map ( + CLK => CLK, + RESETn => RESETn, + MCLR => MCLR_I, + CS(2) => CS2n, + CS(1) => CS1, + CS(0) => CS0, + E => E, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + CTSn => CTSn, + TC => TC_I, + WS => WS_I, + CDS => CDS_I, + TDRE => TDRE_I, + TXCLK => TXCLK, + TXDATA => TXDATA + ); +end architecture STRUCTURE; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd new file mode 100644 index 0000000..c8ae6fc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd @@ -0,0 +1,339 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- 6850's transmitter unit. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K8B 2008/11/01 WF +-- Fixed the T_DRE process concerning the TDRE <= '1' setting. +-- Thanks to Lyndon Amsdon finding the bug. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_TRANSMIT is + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_IN : in bit_vector(7 downto 0); + + CTSn : in bit; + + TC : in bit_vector(1 downto 0); + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + + TXCLK : in bit; + + TDRE : buffer bit; + TXDATA : out bit + ); +end entity WF6850IP_TRANSMIT; + +architecture BEHAVIOR of WF6850IP_TRANSMIT is +type TR_STATES is (IDLE, LOAD_SHFT, START, SHIFTOUT, PARITY, STOP1, STOP2); +signal TR_STATE, TR_NEXT_STATE : TR_STATES; +signal CLK_STRB : bit; +signal DATA_REG : bit_vector(7 downto 0); +signal SHIFT_REG : bit_vector(7 downto 0); +signal BITCNT : std_logic_vector(2 downto 0); +signal PARITY_I : bit; +begin + -- The default condition in this statement is to ensure + -- to cover all possibilities for example if there is a + -- one hot decoding of the state machine with wrong states + -- (e.g. not one of the given here). + TXDATA <= '1' when TR_STATE = IDLE else + '1' when TR_STATE = LOAD_SHFT else + '0' when TR_STATE = START else + SHIFT_REG(0) when TR_STATE = SHIFTOUT else + PARITY_I when TR_STATE = PARITY else + '1' when TR_STATE = STOP1 else + '1' when TR_STATE = STOP2 else '1'; + + CLKDIV: process + variable CLK_LOCK : boolean; + variable STRB_LOCK : boolean; + variable CLK_DIVCNT : std_logic_vector(6 downto 0); + begin + wait until CLK = '1' and CLK' event; + if CDS = "00" then -- divider off + if TXCLK = '0' and STRB_LOCK = false then -- Works on negative TXCLK edge. + CLK_STRB <= '1'; + STRB_LOCK := true; + elsif TXCLK = '1' then + CLK_STRB <= '0'; + STRB_LOCK := false; + else + CLK_STRB <= '0'; + end if; + elsif TR_STATE = IDLE then + -- preset the CLKDIV with the start delays + if CDS = "01" then + CLK_DIVCNT := "0010000"; -- div by 16 mode + elsif CDS = "10" then + CLK_DIVCNT := "1000000"; -- div by 64 mode + end if; + CLK_STRB <= '0'; + else + -- Works on negative TXCLK edge: + if CLK_DIVCNT > "0000000" and TXCLK = '0' and CLK_LOCK = false then + CLK_DIVCNT := CLK_DIVCNT - '1'; + CLK_STRB <= '0'; + CLK_LOCK := true; + elsif CDS = "01" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "0010000"; -- Div by 16 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif CDS = "10" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "1000000"; -- Div by 64 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif TXCLK = '1' then + CLK_LOCK := false; + STRB_LOCK := false; + CLK_STRB <= '0'; + else + CLK_STRB <= '0'; + end if; + end if; + end process CLKDIV; + + DATAREG: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + DATA_REG <= x"00"; + elsif WS(2) = '0' and CS = "011" and RWn = '0' and RS = '1' and E = '1' then + DATA_REG <= '0' & DATA_IN(6 downto 0); -- 7 bit data mode. + elsif WS(2) = '1' and CS = "011" and RWn = '0' and RS = '1' and E = '1' then + DATA_REG <= DATA_IN; -- 8 bit data mode. + end if; + end if; + end process DATAREG; + + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + SHIFT_REG <= x"00"; + elsif TR_STATE = LOAD_SHFT and TDRE = '0' then + -- If during LOAD_SHIFT the transmitter data register + -- is empty (TDRE = '1') the shift register will not + -- be loaded. When additionally TC = "11", the break + -- character (zero data and no stop bits) is sent. + SHIFT_REG <= DATA_REG; + elsif TR_STATE = SHIFTOUT and CLK_STRB = '1' then + SHIFT_REG <= '0' & SHIFT_REG(7 downto 1); -- Shift right. + end if; + end if; + end process SHIFTREG; + + P_BITCNT: process + -- Counter for the data bits transmitted. + begin + wait until CLK = '1' and CLK' event; + if TR_STATE = SHIFTOUT and CLK_STRB = '1' then + BITCNT <= BITCNT + '1'; + elsif TR_STATE /= SHIFTOUT then + BITCNT <= "000"; + end if; + end process P_BITCNT; + + P_TDRE: process(RESETn, CLK) + -- Transmit data register empty flag. + variable LOCK : boolean; + begin + if RESETn = '0' then + TDRE <= '1'; + LOCK := false; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + TDRE <= '1'; + elsif TR_NEXT_STATE = START and TR_STATE /= START then + -- Data has been loaded to shift register, thus data register is free again. + -- Thanks to Lyndon Amsdon for finding a bug here. The TDRE is set to one once + -- entering the state now. + TDRE <= '1'; + elsif CS = "011" and RWn = '0' and RS = '1' and E = '1' and LOCK = false then + LOCK := true; + elsif E = '0' and LOCK = true then + -- This construction clears TDRE after the falling edge of E + -- and after the transmit data register has been written to. + TDRE <= '0'; + LOCK := false; + end if; + end if; + end process P_TDRE; + + PARITY_GEN: process + variable PAR_TMP : bit; + begin + wait until CLK = '1' and CLK' event; + if TR_STATE = START then -- Calculate the parity during the start phase. + for i in 1 to 7 loop + if i = 1 then + PAR_TMP := SHIFT_REG(i-1) xor SHIFT_REG(i); + else + PAR_TMP := PAR_TMP xor SHIFT_REG(i); + end if; + end loop; + if WS = "000" or WS = "010" or WS = "110" then -- Even parity. + PARITY_I <= PAR_TMP; + elsif WS = "001" or WS = "011" or WS = "111" then -- Odd parity. + PARITY_I <= not PAR_TMP; + else -- No parity for WS = "100" and WS = "101". + PARITY_I <= '0'; + end if; + end if; + end process PARITY_GEN; + + TR_STATEREG: process(RESETn, CLK) + begin + if RESETn = '0' then + TR_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + TR_STATE <= IDLE; + else + TR_STATE <= TR_NEXT_STATE; + end if; + end if; + end process TR_STATEREG; + + TR_STATEDEC: process(TR_STATE, CLK_STRB, TC, BITCNT, WS, TDRE, CTSn) + begin + case TR_STATE is + when IDLE => + if TDRE = '1' and TC = "11" then + TR_NEXT_STATE <= LOAD_SHFT; + elsif TDRE = '0' and CTSn = '0' then -- Start if data register is not empty. + TR_NEXT_STATE <= LOAD_SHFT; + else + TR_NEXT_STATE <= IDLE; + end if; + when LOAD_SHFT => + TR_NEXT_STATE <= START; + when START => + if CLK_STRB = '1' then + TR_NEXT_STATE <= SHIFTOUT; + else + TR_NEXT_STATE <= START; + end if; + when SHIFTOUT => + if CLK_STRB = '1' then + if BITCNT < "110" and WS(2) = '0' then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 7 data bits. + elsif BITCNT < "111" and WS(2) = '1' then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 8 data bits. + elsif WS = "100" or WS = "101" then + if TDRE = '1' and TC = "11" then + -- Break condition, do not send a stop bit. + TR_NEXT_STATE <= IDLE; + else + TR_NEXT_STATE <= STOP1; -- No parity check enabled. + end if; + else + TR_NEXT_STATE <= PARITY; -- Parity enabled. + end if; + else + TR_NEXT_STATE <= SHIFTOUT; + end if; + when PARITY => + if CLK_STRB = '1' then + if TDRE = '1' and TC = "11" then + -- Break condition, do not send a stop bit. + TR_NEXT_STATE <= IDLE; + else + TR_NEXT_STATE <= STOP1; -- No parity check enabled. + end if; + else + TR_NEXT_STATE <= PARITY; + end if; + when STOP1 => + if CLK_STRB = '1' and (WS = "000" or WS = "001" or WS = "100") then + TR_NEXT_STATE <= STOP2; -- Two stop bits selected. + elsif CLK_STRB = '1' then + TR_NEXT_STATE <= IDLE; -- One stop bits selected. + else + TR_NEXT_STATE <= STOP1; + end if; + when STOP2 => + if CLK_STRB = '1' then + TR_NEXT_STATE <= IDLE; + else + TR_NEXT_STATE <= STOP2; + end if; + end case; + end process TR_STATEDEC; +end architecture BEHAVIOR; + diff --git a/FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.tdf b/FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.tdf new file mode 100644 index 0000000..a455469 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.tdf @@ -0,0 +1,478 @@ +TITLE "INTERRUPT HANDLER UND C1287"; + +-- CREATED BY FREDI ASCHWANDEN + +INCLUDE "lpm_bustri_LONG.inc"; +INCLUDE "lpm_bustri_BYT.inc"; + + +-- Parameters Statement (optional) + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + + +-- Subdesign Section + +SUBDESIGN interrupt_handler +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + MAIN_CLK : INPUT; + nFB_WR : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + FB_ADR[31..0] : INPUT; + PIC_INT : INPUT; + E0_INT : INPUT; + DVI_INT : INPUT; + nPCI_INTA : INPUT; + nPCI_INTB : INPUT; + nPCI_INTC : INPUT; + nPCI_INTD : INPUT; + nMFP_INT : INPUT; + nFB_OE : INPUT; + DSP_INT : INPUT; + VSYNC : INPUT; + HSYNC : INPUT; + DMA_DRQ : INPUT; + nIRQ[7..2] : OUTPUT; + INT_HANDLER_TA : OUTPUT; + ACP_CONF[31..0] : OUTPUT; + TIN0 : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + FB_B[3..0] :NODE; + INT_CTR[31..0] :DFFE; + INT_CTR_CS :NODE; + INT_LATCH[31..0] :DFF; + INT_LATCH_CS :NODE; + INT_CLEAR[31..0] :DFF; + INT_CLEAR_CS :NODE; + INT_IN[31..0] :NODE; + INT_ENA[31..0] :DFFE; + INT_ENA_CS :NODE; + ACP_CONF[31..0] :DFFE; + ACP_CONF_CS :NODE; + PSEUDO_BUS_ERROR :NODE; + UHR_AS :NODE; + UHR_DS :NODE; + RTC_ADR[5..0] :DFFE; + ACHTELSEKUNDEN[2..0] :DFFE; + WERTE[7..0][63..0] :DFFE; -- WERTE REGISTER 0-63 + PIC_INT_SYNC[2..0] :DFF; + INC_SEC :NODE; + INC_MIN :NODE; + INC_STD :NODE; + INC_TAG :NODE; + ANZAHL_TAGE_DES_MONATS[7..0]:NODE; + WINTERZEIT :NODE; + SOMMERZEIT :NODE; + INC_MONAT :NODE; + INC_JAHR :NODE; + UPDATE_ON :NODE; + +BEGIN +-- BYT SELECT + FB_B0 = FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HWORD + # !FB_SIZE1 & FB_SIZE0 & !FB_ADR1 & !FB_ADR0 -- HHBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B1 = FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HWORD + # !FB_SIZE1 & FB_SIZE0 & !FB_ADR1 & FB_ADR0 -- HLBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LWORD + # !FB_SIZE1 & FB_SIZE0 & FB_ADR1 & !FB_ADR0 -- LHBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LWORD + # !FB_SIZE1 & FB_SIZE0 & FB_ADR1 & FB_ADR0 -- LLBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + +-- INTERRUPT CONTROL REGISTER: BIT0=INT5 AUSLÖSEN, 1=INT7 AUSLÖSEN + INT_CTR[].CLK = MAIN_CLK; + INT_CTR_CS = !nFB_CS2 & FB_ADR[27..2]==H"4000"; -- $10000/4 + INT_CTR[] = FB_AD[]; + INT_CTR[31..24].ENA = INT_CTR_CS & FB_B0 & !nFB_WR; + INT_CTR[23..16].ENA = INT_CTR_CS & FB_B1 & !nFB_WR; + INT_CTR[15..8].ENA = INT_CTR_CS & FB_B2 & !nFB_WR; + INT_CTR[7..0].ENA = INT_CTR_CS & FB_B3 & !nFB_WR; +-- INTERRUPT ENABLE REGISTER BIT31=INT7,30=INT6,29=INT5,28=INT4,27=INT3,26=INT2 + INT_ENA[].CLK = MAIN_CLK; + INT_ENA_CS = !nFB_CS2 & FB_ADR[27..2]==H"4001"; -- $10004/4 + INT_ENA[] = FB_AD[]; + INT_ENA[31..24].ENA = INT_ENA_CS & FB_B0 & !nFB_WR; + INT_ENA[23..16].ENA = INT_ENA_CS & FB_B1 & !nFB_WR; + INT_ENA[15..8].ENA = INT_ENA_CS & FB_B2 & !nFB_WR; + INT_ENA[7..0].ENA = INT_ENA_CS & FB_B3 & !nFB_WR; +-- INTERRUPT CLEAR REGISTER WRITE ONLY 1=INTERRUPT CLEAR + INT_CLEAR[].CLK = MAIN_CLK; + INT_CLEAR_CS = !nFB_CS2 & FB_ADR[27..2]==H"4002"; -- $10008/4 + INT_CLEAR[31..24] = FB_AD[31..24] & INT_CLEAR_CS & FB_B0 & !nFB_WR; + INT_CLEAR[23..16] = FB_AD[23..16] & INT_CLEAR_CS & FB_B1 & !nFB_WR; + INT_CLEAR[15..8] = FB_AD[15..8] & INT_CLEAR_CS & FB_B2 & !nFB_WR; + INT_CLEAR[7..0] = FB_AD[7..0] & INT_CLEAR_CS & FB_B3 & !nFB_WR; +-- INTERRUPT LATCH REGISTER READ ONLY + INT_LATCH_CS = !nFB_CS2 & FB_ADR[27..2]==H"4003"; -- $1000C/4 +-- INTERRUPT + !nIRQ2 = HSYNC & INT_ENA[26]; + !nIRQ3 = INT_CTR0 & INT_ENA[27]; + !nIRQ4 = VSYNC & INT_ENA[28]; + nIRQ5 = INT_LATCH[]==H"00000000" & INT_ENA[29]; + !nIRQ6 = !nMFP_INT & INT_ENA[30]; + !nIRQ7 = PSEUDO_BUS_ERROR & INT_ENA[31]; + +PSEUDO_BUS_ERROR = !nFB_CS1 & (FB_ADR[19..4]==H"F8C8" -- SCC + # FB_ADR[19..4]==H"F8E0" -- VME + # FB_ADR[19..4]==H"F920" -- PADDLE + # FB_ADR[19..4]==H"F921" -- PADDLE + # FB_ADR[19..4]==H"F922" -- PADDLE + # FB_ADR[19..4]==H"FFA8" -- MFP2 + # FB_ADR[19..4]==H"FFA9" -- MFP2 + # FB_ADR[19..4]==H"FFAA" -- MFP2 + # FB_ADR[19..4]==H"FFA8" -- MFP2 + # FB_ADR[19..8]==H"F87" -- TT SCSI + # FB_ADR[19..4]==H"FFC2" -- ST UHR + # FB_ADR[19..4]==H"FFC3" -- ST UHR + # FB_ADR[19..4]==H"F890" -- DMA SOUND + # FB_ADR[19..4]==H"F891" -- DMA SOUND + # FB_ADR[19..4]==H"F892"); -- DMA SOUND +-- IF VIDEO ADR CHANGE +TIN0 = !nFB_CS1 & FB_ADR[19..1]==H"7C100" & !nFB_WR; -- WRITE VIDEO BASE ADR HIGH 0xFFFF8201/2 + +-- INTERRUPT LATCH + INT_LATCH[] = H"FFFFFFFF"; + INT_LATCH0.CLK = PIC_INT & INT_ENA[0]; + INT_LATCH1.CLK = E0_INT & INT_ENA[1]; + INT_LATCH2.CLK = DVI_INT & INT_ENA[2]; + INT_LATCH3.CLK = !nPCI_INTA & INT_ENA[3]; + INT_LATCH4.CLK = !nPCI_INTB & INT_ENA[4]; + INT_LATCH5.CLK = !nPCI_INTC & INT_ENA[5]; + INT_LATCH6.CLK = !nPCI_INTD & INT_ENA[6]; + INT_LATCH7.CLK = DSP_INT & INT_ENA[7]; + INT_LATCH8.CLK = VSYNC & INT_ENA[8]; + INT_LATCH9.CLK = HSYNC & INT_ENA[9]; + +-- INTERRUPT CLEAR + INT_LATCH[].CLRN = !INT_CLEAR[]; + +-- INT_IN + INT_IN0 = PIC_INT; + INT_IN1 = E0_INT; + INT_IN2 = DVI_INT; + INT_IN3 = !nPCI_INTA; + INT_IN4 = !nPCI_INTB; + INT_IN5 = !nPCI_INTC; + INT_IN6 = !nPCI_INTD; + INT_IN7 = DSP_INT; + INT_IN8 = VSYNC; + INT_IN9 = HSYNC; + INT_IN[25..10] = H"0"; + INT_IN26 = HSYNC; + INT_IN27 = INT_CTR0; + INT_IN28 = VSYNC; + INT_IN29 = INT_LATCH[]!=H"00000000"; + INT_IN30 = !nMFP_INT; + INT_IN31 = DMA_DRQ; +--*************************************************************************************** +-- ACP CONFIG REGISTER: BIT 31-> 0=CF 1=IDE + ACP_CONF[].CLK = MAIN_CLK; + ACP_CONF_CS = !nFB_CS2 & FB_ADR[27..2]==H"10000"; -- $4'0000/4 + ACP_CONF[] = FB_AD[]; + ACP_CONF[31..24].ENA = ACP_CONF_CS & FB_B0 & !nFB_WR; + ACP_CONF[23..16].ENA = ACP_CONF_CS & FB_B1 & !nFB_WR; + ACP_CONF[15..8].ENA = ACP_CONF_CS & FB_B2 & !nFB_WR; + ACP_CONF[7..0].ENA = ACP_CONF_CS & FB_B3 & !nFB_WR; +--*************************************************************************************** + +-------------------------------------------------------------- +-- C1287 0=SEK 2=MIN 4=STD 6=WOCHENTAG 7=TAG 8=MONAT 9=JAHR +---------------------------------------------------------- + RTC_ADR[].CLK = MAIN_CLK; + RTC_ADR[] = FB_AD[21..16]; + UHR_AS = !nFB_CS1 & FB_ADR[19..1]==H"7C4B0" & FB_B1; -- FFFF8961 + UHR_DS = !nFB_CS1 & FB_ADR[19..1]==H"7C4B1" & FB_B3; -- FFFF8963 + RTC_ADR[].ENA = UHR_AS & !nFB_WR; + WERTE[][].CLK = MAIN_CLK; + WERTE[7..0][0] = FB_AD[23..16] & RTC_ADR[]==0 & UHR_DS & !nFB_WR; + WERTE[7..0][1] = FB_AD[23..16]; + WERTE[7..0][2] = FB_AD[23..16] & RTC_ADR[]==2 & UHR_DS & !nFB_WR; + WERTE[7..0][3] = FB_AD[23..16]; + WERTE[7..0][4] = FB_AD[23..16] & RTC_ADR[]==4 & UHR_DS & !nFB_WR; + WERTE[7..0][5] = FB_AD[23..16]; + WERTE[7..0][6] = FB_AD[23..16] & RTC_ADR[]==6 & UHR_DS & !nFB_WR; + WERTE[7..0][7] = FB_AD[23..16] & RTC_ADR[]==7 & UHR_DS & !nFB_WR; + WERTE[7..0][8] = FB_AD[23..16] & RTC_ADR[]==8 & UHR_DS & !nFB_WR; + WERTE[7..0][9] = FB_AD[23..16] & RTC_ADR[]==9 & UHR_DS & !nFB_WR; + WERTE[7..0][10] = FB_AD[23..16]; + WERTE[7..0][11] = FB_AD[23..16]; + WERTE[7..0][12] = FB_AD[23..16]; + WERTE[7..0][13] = FB_AD[23..16]; + WERTE[7..0][14] = FB_AD[23..16]; + WERTE[7..0][15] = FB_AD[23..16]; + WERTE[7..0][16] = FB_AD[23..16]; + WERTE[7..0][17] = FB_AD[23..16]; + WERTE[7..0][18] = FB_AD[23..16]; + WERTE[7..0][19] = FB_AD[23..16]; + WERTE[7..0][20] = FB_AD[23..16]; + WERTE[7..0][21] = FB_AD[23..16]; + WERTE[7..0][22] = FB_AD[23..16]; + WERTE[7..0][23] = FB_AD[23..16]; + WERTE[7..0][24] = FB_AD[23..16]; + WERTE[7..0][25] = FB_AD[23..16]; + WERTE[7..0][26] = FB_AD[23..16]; + WERTE[7..0][27] = FB_AD[23..16]; + WERTE[7..0][28] = FB_AD[23..16]; + WERTE[7..0][29] = FB_AD[23..16]; + WERTE[7..0][30] = FB_AD[23..16]; + WERTE[7..0][31] = FB_AD[23..16]; + WERTE[7..0][32] = FB_AD[23..16]; + WERTE[7..0][33] = FB_AD[23..16]; + WERTE[7..0][34] = FB_AD[23..16]; + WERTE[7..0][35] = FB_AD[23..16]; + WERTE[7..0][36] = FB_AD[23..16]; + WERTE[7..0][37] = FB_AD[23..16]; + WERTE[7..0][38] = FB_AD[23..16]; + WERTE[7..0][39] = FB_AD[23..16]; + WERTE[7..0][40] = FB_AD[23..16]; + WERTE[7..0][41] = FB_AD[23..16]; + WERTE[7..0][42] = FB_AD[23..16]; + WERTE[7..0][43] = FB_AD[23..16]; + WERTE[7..0][44] = FB_AD[23..16]; + WERTE[7..0][45] = FB_AD[23..16]; + WERTE[7..0][46] = FB_AD[23..16]; + WERTE[7..0][47] = FB_AD[23..16]; + WERTE[7..0][48] = FB_AD[23..16]; + WERTE[7..0][49] = FB_AD[23..16]; + WERTE[7..0][50] = FB_AD[23..16]; + WERTE[7..0][51] = FB_AD[23..16]; + WERTE[7..0][52] = FB_AD[23..16]; + WERTE[7..0][53] = FB_AD[23..16]; + WERTE[7..0][54] = FB_AD[23..16]; + WERTE[7..0][55] = FB_AD[23..16]; + WERTE[7..0][56] = FB_AD[23..16]; + WERTE[7..0][57] = FB_AD[23..16]; + WERTE[7..0][58] = FB_AD[23..16]; + WERTE[7..0][59] = FB_AD[23..16]; + WERTE[7..0][60] = FB_AD[23..16]; + WERTE[7..0][61] = FB_AD[23..16]; + WERTE[7..0][62] = FB_AD[23..16]; + WERTE[7..0][63] = FB_AD[23..16]; + WERTE[][0].ENA = RTC_ADR[]==0 & UHR_DS & !nFB_WR; + WERTE[][1].ENA = RTC_ADR[]==1 & UHR_DS & !nFB_WR; + WERTE[][2].ENA = RTC_ADR[]==2 & UHR_DS & !nFB_WR; + WERTE[][3].ENA = RTC_ADR[]==3 & UHR_DS & !nFB_WR; + WERTE[][4].ENA = RTC_ADR[]==4 & UHR_DS & !nFB_WR; + WERTE[][5].ENA = RTC_ADR[]==5 & UHR_DS & !nFB_WR; + WERTE[][6].ENA = RTC_ADR[]==6 & UHR_DS & !nFB_WR; + WERTE[][7].ENA = RTC_ADR[]==7 & UHR_DS & !nFB_WR; + WERTE[][8].ENA = RTC_ADR[]==8 & UHR_DS & !nFB_WR; + WERTE[][9].ENA = RTC_ADR[]==9 & UHR_DS & !nFB_WR; + WERTE[][10].ENA = RTC_ADR[]==10 & UHR_DS & !nFB_WR; + WERTE[][11].ENA = RTC_ADR[]==11 & UHR_DS & !nFB_WR; + WERTE[][12].ENA = RTC_ADR[]==12 & UHR_DS & !nFB_WR; + WERTE[][13].ENA = RTC_ADR[]==13 & UHR_DS & !nFB_WR; + WERTE[][14].ENA = RTC_ADR[]==14 & UHR_DS & !nFB_WR; + WERTE[][15].ENA = RTC_ADR[]==15 & UHR_DS & !nFB_WR; + WERTE[][16].ENA = RTC_ADR[]==16 & UHR_DS & !nFB_WR; + WERTE[][17].ENA = RTC_ADR[]==17 & UHR_DS & !nFB_WR; + WERTE[][18].ENA = RTC_ADR[]==18 & UHR_DS & !nFB_WR; + WERTE[][19].ENA = RTC_ADR[]==19 & UHR_DS & !nFB_WR; + WERTE[][20].ENA = RTC_ADR[]==20 & UHR_DS & !nFB_WR; + WERTE[][21].ENA = RTC_ADR[]==21 & UHR_DS & !nFB_WR; + WERTE[][22].ENA = RTC_ADR[]==22 & UHR_DS & !nFB_WR; + WERTE[][23].ENA = RTC_ADR[]==23 & UHR_DS & !nFB_WR; + WERTE[][24].ENA = RTC_ADR[]==24 & UHR_DS & !nFB_WR; + WERTE[][25].ENA = RTC_ADR[]==25 & UHR_DS & !nFB_WR; + WERTE[][26].ENA = RTC_ADR[]==26 & UHR_DS & !nFB_WR; + WERTE[][27].ENA = RTC_ADR[]==27 & UHR_DS & !nFB_WR; + WERTE[][28].ENA = RTC_ADR[]==28 & UHR_DS & !nFB_WR; + WERTE[][29].ENA = RTC_ADR[]==29 & UHR_DS & !nFB_WR; + WERTE[][30].ENA = RTC_ADR[]==30 & UHR_DS & !nFB_WR; + WERTE[][31].ENA = RTC_ADR[]==31 & UHR_DS & !nFB_WR; + WERTE[][32].ENA = RTC_ADR[]==32 & UHR_DS & !nFB_WR; + WERTE[][33].ENA = RTC_ADR[]==33 & UHR_DS & !nFB_WR; + WERTE[][34].ENA = RTC_ADR[]==34 & UHR_DS & !nFB_WR; + WERTE[][35].ENA = RTC_ADR[]==35 & UHR_DS & !nFB_WR; + WERTE[][36].ENA = RTC_ADR[]==36 & UHR_DS & !nFB_WR; + WERTE[][37].ENA = RTC_ADR[]==37 & UHR_DS & !nFB_WR; + WERTE[][38].ENA = RTC_ADR[]==38 & UHR_DS & !nFB_WR; + WERTE[][39].ENA = RTC_ADR[]==39 & UHR_DS & !nFB_WR; + WERTE[][40].ENA = RTC_ADR[]==40 & UHR_DS & !nFB_WR; + WERTE[][41].ENA = RTC_ADR[]==41 & UHR_DS & !nFB_WR; + WERTE[][42].ENA = RTC_ADR[]==42 & UHR_DS & !nFB_WR; + WERTE[][43].ENA = RTC_ADR[]==43 & UHR_DS & !nFB_WR; + WERTE[][44].ENA = RTC_ADR[]==44 & UHR_DS & !nFB_WR; + WERTE[][45].ENA = RTC_ADR[]==45 & UHR_DS & !nFB_WR; + WERTE[][46].ENA = RTC_ADR[]==46 & UHR_DS & !nFB_WR; + WERTE[][47].ENA = RTC_ADR[]==47 & UHR_DS & !nFB_WR; + WERTE[][48].ENA = RTC_ADR[]==48 & UHR_DS & !nFB_WR; + WERTE[][49].ENA = RTC_ADR[]==49 & UHR_DS & !nFB_WR; + WERTE[][50].ENA = RTC_ADR[]==50 & UHR_DS & !nFB_WR; + WERTE[][51].ENA = RTC_ADR[]==51 & UHR_DS & !nFB_WR; + WERTE[][52].ENA = RTC_ADR[]==52 & UHR_DS & !nFB_WR; + WERTE[][53].ENA = RTC_ADR[]==53 & UHR_DS & !nFB_WR; + WERTE[][54].ENA = RTC_ADR[]==54 & UHR_DS & !nFB_WR; + WERTE[][55].ENA = RTC_ADR[]==55 & UHR_DS & !nFB_WR; + WERTE[][56].ENA = RTC_ADR[]==56 & UHR_DS & !nFB_WR; + WERTE[][57].ENA = RTC_ADR[]==57 & UHR_DS & !nFB_WR; + WERTE[][58].ENA = RTC_ADR[]==58 & UHR_DS & !nFB_WR; + WERTE[][59].ENA = RTC_ADR[]==59 & UHR_DS & !nFB_WR; + WERTE[][60].ENA = RTC_ADR[]==60 & UHR_DS & !nFB_WR; + WERTE[][61].ENA = RTC_ADR[]==61 & UHR_DS & !nFB_WR; + WERTE[][62].ENA = RTC_ADR[]==62 & UHR_DS & !nFB_WR; + WERTE[][63].ENA = RTC_ADR[]==63 & UHR_DS & !nFB_WR; + PIC_INT_SYNC[].CLK = MAIN_CLK; PIC_INT_SYNC[0] = PIC_INT; + PIC_INT_SYNC[1] = PIC_INT_SYNC[0]; + PIC_INT_SYNC[2] = !PIC_INT_SYNC[1] & PIC_INT_SYNC[0]; + UPDATE_ON = !WERTE[7][11]; + WERTE[6][10].CLRN = GND; -- KEIN UIP + UPDATE_ON = !WERTE[7][11]; -- UPDATE ON OFF + WERTE[2][11] = VCC; -- IMMER BINARY + WERTE[1][11] = VCC; -- IMMER 24H FORMAT + WERTE[0][11] = VCC; -- IMMER SOMMERZEITKORREKTUR + WERTE[7][13] = VCC; -- IMMER RICHTIG +-- SOMMER WINTERZEIT: BIT 0 IM REGISTER D IST DIE INFORMATION OB SOMMERZEIT IST (BRAUCHT MAN FÜR RÜCKSCHALTUNG) + SOMMERZEIT = WERTE[][6]==1 & WERTE[][4]==1 & WERTE[][8]==4 & WERTE[][7]>23; --LETZTER SONNTAG IM APRIL + WERTE[0][13] = SOMMERZEIT; + WERTE[0][13].ENA = INC_STD & (SOMMERZEIT # WINTERZEIT); + WINTERZEIT = WERTE[][6]==1 & WERTE[][4]==1 & WERTE[][8]==10 & WERTE[][7]>24 & WERTE[0][13]; --LETZTER SONNTAG IM OKTOBER +-- ACHTELSEKUNDEN + ACHTELSEKUNDEN[].CLK = MAIN_CLK; + ACHTELSEKUNDEN[] = ACHTELSEKUNDEN[]+1; + ACHTELSEKUNDEN[].ENA = PIC_INT_SYNC[2] & UPDATE_ON; +-- SEKUNDEN + INC_SEC = ACHTELSEKUNDEN[]==7 & PIC_INT_SYNC[2] & UPDATE_ON; + WERTE[][0] = (WERTE[][0]+1) & WERTE[][0]!=59 & !(RTC_ADR[]==0 & UHR_DS & !nFB_WR); -- SEKUNDEN ZÄHLEN BIS 59 + WERTE[][0].ENA = INC_SEC & !(RTC_ADR[]==0 & UHR_DS & !nFB_WR); +-- MINUTEN + INC_MIN = INC_SEC & WERTE[][0]==59; -- + WERTE[][2] = (WERTE[][2]+1) & WERTE[][2]!=59 & !(RTC_ADR[]==2 & UHR_DS & !nFB_WR); -- MINUTEN ZÄHLEN BIS 59 + WERTE[][2].ENA = INC_MIN & !(RTC_ADR[]==2 & UHR_DS & !nFB_WR); -- +-- STUNDEN + INC_STD = INC_MIN & WERTE[][2]==59; + WERTE[][4] = (WERTE[][4]+1+(1 & SOMMERZEIT)) & WERTE[][4]!=23 & !(RTC_ADR[]==4 & UHR_DS & !nFB_WR); -- STUNDEN ZÄHLEN BIS 23 + WERTE[][4].ENA = INC_STD & !(WINTERZEIT & WERTE[0][12]) & !(RTC_ADR[]==4 & UHR_DS & !nFB_WR); -- EINE STUNDE AUSLASSEN WENN WINTERZEITUMSCHALTUNG UND NOCH SOMMERZEIT +-- WOCHENTAG UND TAG + INC_TAG = INC_STD & WERTE[][2]==23; + WERTE[][6] = (WERTE[][6]+1) & WERTE[][6]!=7 & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR) -- WOCHENTAG ZÄHLEN BIS 7 + # 1 & WERTE[][6]==7 & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][6].ENA = INC_TAG & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR); + ANZAHL_TAGE_DES_MONATS[] = 31 & (WERTE[][8]==1 # WERTE[][8]==3 # WERTE[][8]==5 # WERTE[][8]==7 # WERTE[][8]==8 # WERTE[][8]==10 # WERTE[][8]==12) + # 30 & (WERTE[][8]==4 # WERTE[][8]==6 # WERTE[][8]==9 # WERTE[][8]==11) + # 29 & WERTE[][8]==2 & WERTE[1..0][9]==0 + # 28 & WERTE[][8]==2 & WERTE[1..0][9]!=0; + WERTE[][7] = (WERTE[][7]+1) & WERTE[][7]!=ANZAHL_TAGE_DES_MONATS[] & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR) -- TAG ZÄHLEN BIS MONATSENDE + # 1 & WERTE[][7]==ANZAHL_TAGE_DES_MONATS[] & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][7].ENA = INC_TAG & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR); -- +-- MONATE + INC_MONAT = INC_TAG & WERTE[][7]==ANZAHL_TAGE_DES_MONATS[]; -- + WERTE[][8] = (WERTE[][8]+1) & WERTE[][8]!=12 & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR) -- MONATE ZÄHLEN BIS 12 + # 1 & WERTE[][8]==12 & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][8].ENA = INC_MONAT & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR); +-- JAHR + INC_JAHR = INC_MONAT & WERTE[][8]==12; -- + WERTE[][9] = (WERTE[][9]+1) & WERTE[][9]!=99 & !(RTC_ADR[]==9 & UHR_DS & !nFB_WR); -- JAHRE ZÄHLEN BIS 99 + WERTE[][9].ENA = INC_JAHR & !(RTC_ADR[]==9 & UHR_DS & !nFB_WR); +-- TRISTATE OUTPUT + + FB_AD[31..24] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[31..24] + # INT_ENA_CS & INT_ENA[31..24] + # INT_LATCH_CS & INT_LATCH[31..24] + # INT_CLEAR_CS & INT_IN[31..24] + # ACP_CONF_CS & ACP_CONF[31..24] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[23..16] = lpm_bustri_BYT( + WERTE[][0] & RTC_ADR[]==0 & UHR_DS + # WERTE[][1] & RTC_ADR[]==1 & UHR_DS + # WERTE[][2] & RTC_ADR[]==2 & UHR_DS + # WERTE[][3] & RTC_ADR[]==3 & UHR_DS + # WERTE[][4] & RTC_ADR[]==4 & UHR_DS + # WERTE[][5] & RTC_ADR[]==5 & UHR_DS + # WERTE[][6] & RTC_ADR[]==6 & UHR_DS + # WERTE[][7] & RTC_ADR[]==7 & UHR_DS + # WERTE[][8] & RTC_ADR[]==8 & UHR_DS + # WERTE[][9] & RTC_ADR[]==9 & UHR_DS + # WERTE[][10] & RTC_ADR[]==10 & UHR_DS + # WERTE[][11] & RTC_ADR[]==11 & UHR_DS + # WERTE[][12] & RTC_ADR[]==12 & UHR_DS + # WERTE[][13] & RTC_ADR[]==13 & UHR_DS + # WERTE[][14] & RTC_ADR[]==14 & UHR_DS + # WERTE[][15] & RTC_ADR[]==15 & UHR_DS + # WERTE[][16] & RTC_ADR[]==16 & UHR_DS + # WERTE[][17] & RTC_ADR[]==17 & UHR_DS + # WERTE[][18] & RTC_ADR[]==18 & UHR_DS + # WERTE[][19] & RTC_ADR[]==19 & UHR_DS + # WERTE[][20] & RTC_ADR[]==20 & UHR_DS + # WERTE[][21] & RTC_ADR[]==21 & UHR_DS + # WERTE[][22] & RTC_ADR[]==22 & UHR_DS + # WERTE[][23] & RTC_ADR[]==23 & UHR_DS + # WERTE[][24] & RTC_ADR[]==24 & UHR_DS + # WERTE[][25] & RTC_ADR[]==25 & UHR_DS + # WERTE[][26] & RTC_ADR[]==26 & UHR_DS + # WERTE[][27] & RTC_ADR[]==27 & UHR_DS + # WERTE[][28] & RTC_ADR[]==28 & UHR_DS + # WERTE[][29] & RTC_ADR[]==29 & UHR_DS + # WERTE[][30] & RTC_ADR[]==30 & UHR_DS + # WERTE[][31] & RTC_ADR[]==31 & UHR_DS + # WERTE[][32] & RTC_ADR[]==32 & UHR_DS + # WERTE[][33] & RTC_ADR[]==33 & UHR_DS + # WERTE[][34] & RTC_ADR[]==34 & UHR_DS + # WERTE[][35] & RTC_ADR[]==35 & UHR_DS + # WERTE[][36] & RTC_ADR[]==36 & UHR_DS + # WERTE[][37] & RTC_ADR[]==37 & UHR_DS + # WERTE[][38] & RTC_ADR[]==38 & UHR_DS + # WERTE[][39] & RTC_ADR[]==39 & UHR_DS + # WERTE[][40] & RTC_ADR[]==40 & UHR_DS + # WERTE[][41] & RTC_ADR[]==41 & UHR_DS + # WERTE[][42] & RTC_ADR[]==42 & UHR_DS + # WERTE[][43] & RTC_ADR[]==43 & UHR_DS + # WERTE[][44] & RTC_ADR[]==44 & UHR_DS + # WERTE[][45] & RTC_ADR[]==45 & UHR_DS + # WERTE[][46] & RTC_ADR[]==46 & UHR_DS + # WERTE[][47] & RTC_ADR[]==47 & UHR_DS + # WERTE[][48] & RTC_ADR[]==48 & UHR_DS + # WERTE[][49] & RTC_ADR[]==49 & UHR_DS + # WERTE[][50] & RTC_ADR[]==50 & UHR_DS + # WERTE[][51] & RTC_ADR[]==51 & UHR_DS + # WERTE[][52] & RTC_ADR[]==52 & UHR_DS + # WERTE[][53] & RTC_ADR[]==53 & UHR_DS + # WERTE[][54] & RTC_ADR[]==54 & UHR_DS + # WERTE[][55] & RTC_ADR[]==55 & UHR_DS + # WERTE[][56] & RTC_ADR[]==56 & UHR_DS + # WERTE[][57] & RTC_ADR[]==57 & UHR_DS + # WERTE[][58] & RTC_ADR[]==58 & UHR_DS + # WERTE[][59] & RTC_ADR[]==59 & UHR_DS + # WERTE[][60] & RTC_ADR[]==60 & UHR_DS + # WERTE[][61] & RTC_ADR[]==61 & UHR_DS + # WERTE[][62] & RTC_ADR[]==62 & UHR_DS + # WERTE[][63] & RTC_ADR[]==63 & UHR_DS + # (0,RTC_ADR[]) & UHR_AS + # INT_CTR_CS & INT_CTR[23..16] + # INT_ENA_CS & INT_ENA[23..16] + # INT_LATCH_CS & INT_LATCH[23..16] + # INT_CLEAR_CS & INT_IN[23..16] + # ACP_CONF_CS & ACP_CONF[23..16] + ,(UHR_DS # UHR_AS # INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[15..8] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[15..8] + # INT_ENA_CS & INT_ENA[15..8] + # INT_LATCH_CS & INT_LATCH[15..8] + # INT_CLEAR_CS & INT_IN[15..8] + # ACP_CONF_CS & ACP_CONF[15..8] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[7..0] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[7..0] + # INT_ENA_CS & INT_ENA[7..0] + # INT_LATCH_CS & INT_LATCH[7..0] + # INT_CLEAR_CS & INT_IN[7..0] + # ACP_CONF_CS & ACP_CONF[7..0] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + + INT_HANDLER_TA = INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS; +END; + + diff --git a/FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.v b/FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.v new file mode 100644 index 0000000..28b2376 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.v @@ -0,0 +1,3619 @@ +// Xilinx XPort Language Converter, Version 4.1 (110) +// +// AHDL Design Source: interrupt_handler.tdf +// Verilog Design Output: interrupt_handler.v +// Created 23-Feb-2014 10:34 AM +// +// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. +// Xilinx Inc makes no warranty, expressed or implied, with respect to +// the operation and/or functionality of the converted output files. +// + +// INTERRUPT HANDLER UND C1287 + + +// CREATED BY FREDI ASCHWANDEN +// Parameters Statement (optional) +// {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +// {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! +// Subdesign Section +module interrupt_handler(MAIN_CLK, nFB_WR, nFB_CS1, nFB_CS2, FB_SIZE0, + FB_SIZE1, FB_ADR, PIC_INT, E0_INT, DVI_INT, nPCI_INTA, nPCI_INTB, + nPCI_INTC, nPCI_INTD, nMFP_INT, nFB_OE, DSP_INT, VSYNC, HSYNC, DMA_DRQ, + nIRQ, INT_HANDLER_TA, ACP_CONF, TIN0, FB_AD, nRST); + +// {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! +// {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + input MAIN_CLK, nFB_WR, nFB_CS1, nFB_CS2, FB_SIZE0, FB_SIZE1; + input [31:0] FB_ADR; + input PIC_INT, E0_INT, DVI_INT, nPCI_INTA, nPCI_INTB, nPCI_INTC, nPCI_INTD, + nMFP_INT, nFB_OE, DSP_INT, VSYNC, HSYNC, DMA_DRQ; + output [7:2] nIRQ; + output INT_HANDLER_TA; + output [31:0] ACP_CONF; + output TIN0; + inout [31:0] FB_AD; + input nRST; + +// WERTE REGISTER 0-63 + wire [3:0] FB_B; + wire [31:0] INT_CTR; + wire [31:0] INT_CTR_d; + wire INT_CTR_CS; + wire [31:0] INT_LATCH; + wire [31:0] INT_LATCH_d; + reg [31:0] INT_LATCH_d_prev; + wire [31:0] INT_LATCH_clk; + wire INT_LATCH31_clrn, INT_LATCH30_clrn, INT_LATCH29_clrn, INT_LATCH28_clrn, + INT_LATCH27_clrn, INT_LATCH26_clrn, INT_LATCH25_clrn, + INT_LATCH24_clrn, INT_LATCH23_clrn, INT_LATCH22_clrn, + INT_LATCH21_clrn, INT_LATCH20_clrn, INT_LATCH19_clrn, + INT_LATCH18_clrn, INT_LATCH17_clrn, INT_LATCH16_clrn, + INT_LATCH15_clrn, INT_LATCH14_clrn, INT_LATCH13_clrn, + INT_LATCH12_clrn, INT_LATCH11_clrn, INT_LATCH10_clrn, INT_LATCH9_clrn, + INT_LATCH8_clrn, INT_LATCH7_clrn, INT_LATCH6_clrn, INT_LATCH5_clrn, + INT_LATCH4_clrn, INT_LATCH3_clrn, INT_LATCH2_clrn, INT_LATCH1_clrn, + INT_LATCH0_clrn, INT_LATCH_CS; + wire [31:0] INT_CLEAR; + wire [31:0] INT_CLEAR_d; + wire INT_CLEAR_CS; + wire [31:0] INT_IN; + wire [31:0] INT_ENA; + wire [31:0] INT_ENA_d; + wire INT_ENA_CS; + wire [31:0] ACP_CONF_d; + wire ACP_CONF_CS, PSEUDO_BUS_ERROR, UHR_AS, UHR_DS; + wire [5:0] RTC_ADR; + wire [5:0] RTC_ADR_d; + wire [2:0] ACHTELSEKUNDEN; + wire [2:0] ACHTELSEKUNDEN_d; + wire [63:0] WERTE7_; + wire [63:0] WERTE7__d; + wire WERTE7_13_ena, WERTE7_9_ena, WERTE7_8_ena, WERTE7_7_ena, WERTE7_6_ena, + WERTE7_4_ena, WERTE7_2_ena, WERTE7_0_ena; + wire [63:0] WERTE6_; + wire [63:0] WERTE6__d; + wire WERTE6_10_clrn, WERTE6_13_ena, WERTE6_9_ena, WERTE6_8_ena, + WERTE6_7_ena, WERTE6_6_ena, WERTE6_4_ena, WERTE6_2_ena, WERTE6_0_ena; + wire [63:0] WERTE5_; + wire [63:0] WERTE5__d; + wire WERTE5_13_ena, WERTE5_9_ena, WERTE5_8_ena, WERTE5_7_ena, WERTE5_6_ena, + WERTE5_4_ena, WERTE5_2_ena, WERTE5_0_ena; + wire [63:0] WERTE4_; + wire [63:0] WERTE4__d; + wire WERTE4_13_ena, WERTE4_9_ena, WERTE4_8_ena, WERTE4_7_ena, WERTE4_6_ena, + WERTE4_4_ena, WERTE4_2_ena, WERTE4_0_ena; + wire [63:0] WERTE3_; + wire [63:0] WERTE3__d; + wire WERTE3_13_ena, WERTE3_9_ena, WERTE3_8_ena, WERTE3_7_ena, WERTE3_6_ena, + WERTE3_4_ena, WERTE3_2_ena, WERTE3_0_ena; + wire [63:0] WERTE2_; + wire [63:0] WERTE2__d; + wire WERTE2_13_ena, WERTE2_9_ena, WERTE2_8_ena, WERTE2_7_ena, WERTE2_6_ena, + WERTE2_4_ena, WERTE2_2_ena, WERTE2_0_ena; + wire [63:0] WERTE1_; + wire [63:0] WERTE1__d; + wire WERTE1_13_ena, WERTE1_9_ena, WERTE1_8_ena, WERTE1_7_ena, WERTE1_6_ena, + WERTE1_4_ena, WERTE1_2_ena, WERTE1_0_ena; + wire [63:0] WERTE0_; + wire [63:0] WERTE0__d; + wire WERTE0_13_ena, WERTE0_9_ena, WERTE0_8_ena, WERTE0_7_ena, WERTE0_6_ena, + WERTE0_4_ena, WERTE0_2_ena, WERTE0_0_ena; + wire [2:0] PIC_INT_SYNC; + wire [2:0] PIC_INT_SYNC_d; + wire INC_SEC, INC_MIN, INC_STD, INC_TAG; + wire [7:0] ANZAHL_TAGE_DES_MONATS; + wire WINTERZEIT, SOMMERZEIT, INC_MONAT, INC_JAHR, UPDATE_ON, gnd, vcc; + wire [7:0] u0_data; + wire u0_enabledt; + wire [7:0] u0_tridata; + wire [7:0] u1_data; + wire u1_enabledt; + wire [7:0] u1_tridata; + wire [7:0] u2_data; + wire u2_enabledt; + wire [7:0] u2_tridata; + wire [7:0] u3_data; + wire u3_enabledt; + wire [7:0] u3_tridata; + wire UPDATE_ON_1, UPDATE_ON_2, WERTE0_0_ena_1, WERTE0_0_ena_2, + WERTE0_2_ena_1, WERTE0_2_ena_2, WERTE0_4_ena_1, WERTE0_4_ena_2, + WERTE0_6_ena_1, WERTE0_6_ena_2, WERTE0_7_ena_1, WERTE0_7_ena_2, + WERTE0_8_ena_1, WERTE0_8_ena_2, WERTE0_9_ena_1, WERTE0_9_ena_2, + WERTE0_13_ena_1, WERTE0_13_ena_2, WERTE0_0_d_1, WERTE0_0_d_2, + WERTE0_2_d_1, WERTE0_2_d_2, WERTE0_4_d_1, WERTE0_4_d_2, WERTE0_6_d_1, + WERTE0_6_d_2, WERTE0_7_d_1, WERTE0_7_d_2, WERTE0_8_d_1, WERTE0_8_d_2, + WERTE0_9_d_1, WERTE0_9_d_2, WERTE0_11_d_1, WERTE0_11_d_2, + WERTE0_13_d_1, WERTE0_13_d_2, WERTE1_0_ena_1, WERTE1_0_ena_2, + WERTE1_2_ena_1, WERTE1_2_ena_2, WERTE1_4_ena_1, WERTE1_4_ena_2, + WERTE1_6_ena_1, WERTE1_6_ena_2, WERTE1_7_ena_1, WERTE1_7_ena_2, + WERTE1_8_ena_1, WERTE1_8_ena_2, WERTE1_9_ena_1, WERTE1_9_ena_2, + WERTE1_0_d_1, WERTE1_0_d_2, WERTE1_2_d_1, WERTE1_2_d_2, WERTE1_4_d_1, + WERTE1_4_d_2, WERTE1_6_d_1, WERTE1_6_d_2, WERTE1_7_d_1, WERTE1_7_d_2, + WERTE1_8_d_1, WERTE1_8_d_2, WERTE1_9_d_1, WERTE1_9_d_2, WERTE1_11_d_1, + WERTE1_11_d_2, WERTE2_0_ena_1, WERTE2_0_ena_2, WERTE2_2_ena_1, + WERTE2_2_ena_2, WERTE2_4_ena_1, WERTE2_4_ena_2, WERTE2_6_ena_1, + WERTE2_6_ena_2, WERTE2_7_ena_1, WERTE2_7_ena_2, WERTE2_8_ena_1, + WERTE2_8_ena_2, WERTE2_9_ena_1, WERTE2_9_ena_2, WERTE2_0_d_1, + WERTE2_0_d_2, WERTE2_2_d_1, WERTE2_2_d_2, WERTE2_4_d_1, WERTE2_4_d_2, + WERTE2_6_d_1, WERTE2_6_d_2, WERTE2_7_d_1, WERTE2_7_d_2, WERTE2_8_d_1, + WERTE2_8_d_2, WERTE2_9_d_1, WERTE2_9_d_2, WERTE2_11_d_1, + WERTE2_11_d_2, WERTE3_0_ena_1, WERTE3_0_ena_2, WERTE3_2_ena_1, + WERTE3_2_ena_2, WERTE3_4_ena_1, WERTE3_4_ena_2, WERTE3_6_ena_1, + WERTE3_6_ena_2, WERTE3_7_ena_1, WERTE3_7_ena_2, WERTE3_8_ena_1, + WERTE3_8_ena_2, WERTE3_9_ena_1, WERTE3_9_ena_2, WERTE3_0_d_1, + WERTE3_0_d_2, WERTE3_2_d_1, WERTE3_2_d_2, WERTE3_4_d_1, WERTE3_4_d_2, + WERTE3_6_d_1, WERTE3_6_d_2, WERTE3_7_d_1, WERTE3_7_d_2, WERTE3_8_d_1, + WERTE3_8_d_2, WERTE3_9_d_1, WERTE3_9_d_2, WERTE4_0_ena_1, + WERTE4_0_ena_2, WERTE4_2_ena_1, WERTE4_2_ena_2, WERTE4_4_ena_1, + WERTE4_4_ena_2, WERTE4_6_ena_1, WERTE4_6_ena_2, WERTE4_7_ena_1, + WERTE4_7_ena_2, WERTE4_8_ena_1, WERTE4_8_ena_2, WERTE4_9_ena_1, + WERTE4_9_ena_2, WERTE4_0_d_1, WERTE4_0_d_2, WERTE4_2_d_1, + WERTE4_2_d_2, WERTE4_4_d_1, WERTE4_4_d_2, WERTE4_6_d_1, WERTE4_6_d_2, + WERTE4_7_d_1, WERTE4_7_d_2, WERTE4_8_d_1, WERTE4_8_d_2, WERTE4_9_d_1, + WERTE4_9_d_2, WERTE5_0_ena_1, WERTE5_0_ena_2, WERTE5_2_ena_1, + WERTE5_2_ena_2, WERTE5_4_ena_1, WERTE5_4_ena_2, WERTE5_6_ena_1, + WERTE5_6_ena_2, WERTE5_7_ena_1, WERTE5_7_ena_2, WERTE5_8_ena_1, + WERTE5_8_ena_2, WERTE5_9_ena_1, WERTE5_9_ena_2, WERTE5_0_d_1, + WERTE5_0_d_2, WERTE5_2_d_1, WERTE5_2_d_2, WERTE5_4_d_1, WERTE5_4_d_2, + WERTE5_6_d_1, WERTE5_6_d_2, WERTE5_7_d_1, WERTE5_7_d_2, WERTE5_8_d_1, + WERTE5_8_d_2, WERTE5_9_d_1, WERTE5_9_d_2, WERTE6_0_ena_1, + WERTE6_0_ena_2, WERTE6_2_ena_1, WERTE6_2_ena_2, WERTE6_4_ena_1, + WERTE6_4_ena_2, WERTE6_6_ena_1, WERTE6_6_ena_2, WERTE6_7_ena_1, + WERTE6_7_ena_2, WERTE6_8_ena_1, WERTE6_8_ena_2, WERTE6_9_ena_1, + WERTE6_9_ena_2, WERTE6_0_d_1, WERTE6_0_d_2, WERTE6_2_d_1, + WERTE6_2_d_2, WERTE6_4_d_1, WERTE6_4_d_2, WERTE6_6_d_1, WERTE6_6_d_2, + WERTE6_7_d_1, WERTE6_7_d_2, WERTE6_8_d_1, WERTE6_8_d_2, WERTE6_9_d_1, + WERTE6_9_d_2, WERTE7_0_ena_1, WERTE7_0_ena_2, WERTE7_2_ena_1, + WERTE7_2_ena_2, WERTE7_4_ena_1, WERTE7_4_ena_2, WERTE7_6_ena_1, + WERTE7_6_ena_2, WERTE7_7_ena_1, WERTE7_7_ena_2, WERTE7_8_ena_1, + WERTE7_8_ena_2, WERTE7_9_ena_1, WERTE7_9_ena_2, WERTE7_0_d_1, + WERTE7_0_d_2, WERTE7_2_d_1, WERTE7_2_d_2, WERTE7_4_d_1, WERTE7_4_d_2, + WERTE7_6_d_1, WERTE7_6_d_2, WERTE7_7_d_1, WERTE7_7_d_2, WERTE7_8_d_1, + WERTE7_8_d_2, WERTE7_9_d_1, WERTE7_9_d_2, WERTE7_13_d_1, + WERTE7_13_d_2, ACHTELSEKUNDEN0_ena_ctrl, ACHTELSEKUNDEN0_clk_ctrl, + PIC_INT_SYNC0_clk_ctrl, WERTE0_63_ena_ctrl, WERTE0_62_ena_ctrl, + WERTE0_61_ena_ctrl, WERTE0_60_ena_ctrl, WERTE0_59_ena_ctrl, + WERTE0_58_ena_ctrl, WERTE0_57_ena_ctrl, WERTE0_56_ena_ctrl, + WERTE0_55_ena_ctrl, WERTE0_54_ena_ctrl, WERTE0_53_ena_ctrl, + WERTE0_52_ena_ctrl, WERTE0_51_ena_ctrl, WERTE0_50_ena_ctrl, + WERTE0_49_ena_ctrl, WERTE0_48_ena_ctrl, WERTE0_47_ena_ctrl, + WERTE0_46_ena_ctrl, WERTE0_45_ena_ctrl, WERTE0_44_ena_ctrl, + WERTE0_43_ena_ctrl, WERTE0_42_ena_ctrl, WERTE0_41_ena_ctrl, + WERTE0_40_ena_ctrl, WERTE0_39_ena_ctrl, WERTE0_38_ena_ctrl, + WERTE0_37_ena_ctrl, WERTE0_36_ena_ctrl, WERTE0_35_ena_ctrl, + WERTE0_34_ena_ctrl, WERTE0_33_ena_ctrl, WERTE0_32_ena_ctrl, + WERTE0_31_ena_ctrl, WERTE0_30_ena_ctrl, WERTE0_29_ena_ctrl, + WERTE0_28_ena_ctrl, WERTE0_27_ena_ctrl, WERTE0_26_ena_ctrl, + WERTE0_25_ena_ctrl, WERTE0_24_ena_ctrl, WERTE0_23_ena_ctrl, + WERTE0_22_ena_ctrl, WERTE0_21_ena_ctrl, WERTE0_20_ena_ctrl, + WERTE0_19_ena_ctrl, WERTE0_18_ena_ctrl, WERTE0_17_ena_ctrl, + WERTE0_16_ena_ctrl, WERTE0_15_ena_ctrl, WERTE0_14_ena_ctrl, + WERTE0_12_ena_ctrl, WERTE0_11_ena_ctrl, WERTE0_10_ena_ctrl, + WERTE0_5_ena_ctrl, WERTE0_3_ena_ctrl, WERTE0_1_ena_ctrl, + WERTE0_0_clk_ctrl, WERTE1_0_clk_ctrl, WERTE2_0_clk_ctrl, + WERTE3_0_clk_ctrl, WERTE4_0_clk_ctrl, WERTE5_0_clk_ctrl, + WERTE6_0_clk_ctrl, WERTE7_0_clk_ctrl, RTC_ADR0_ena_ctrl, + RTC_ADR0_clk_ctrl, ACP_CONF0_ena_ctrl, ACP_CONF8_ena_ctrl, + ACP_CONF16_ena_ctrl, ACP_CONF24_ena_ctrl, ACP_CONF0_clk_ctrl, + INT_CLEAR0_clk_ctrl, INT_ENA0_ena_ctrl, INT_ENA8_ena_ctrl, + INT_ENA16_ena_ctrl, INT_ENA24_ena_ctrl, INT_ENA0_clk_ctrl, + INT_CTR0_ena_ctrl, INT_CTR8_ena_ctrl, INT_CTR16_ena_ctrl, + INT_CTR24_ena_ctrl, INT_CTR0_clk_ctrl, INT_LATCH9_clk_1, + INT_LATCH8_clk_1, INT_LATCH7_clk_1, INT_LATCH6_clk_1, + INT_LATCH5_clk_1, INT_LATCH4_clk_1, INT_LATCH3_clk_1, + INT_LATCH2_clk_1, INT_LATCH1_clk_1, INT_LATCH0_clk_1; + reg [31:0] INT_CTR_q; + reg [31:0] INT_LATCH_q; + reg [31:0] INT_CLEAR_q; + reg [31:0] INT_ENA_q; + reg [31:0] ACP_CONF_q; + reg [5:0] RTC_ADR_q; + reg [2:0] ACHTELSEKUNDEN_q; + reg [63:0] WERTE7__q; + reg [63:0] WERTE6__q; + reg [63:0] WERTE5__q; + reg [63:0] WERTE4__q; + reg [63:0] WERTE3__q; + reg [63:0] WERTE2__q; + reg [63:0] WERTE1__q; + reg [63:0] WERTE0__q; + reg [2:0] PIC_INT_SYNC_q; + + +// Sub Module Section + /*lpm_bustri_BYT u0 (.data(u0_data), .enabledt(u0_enabledt), + .tridata(u0_tridata)); + + lpm_bustri_BYT u1 (.data(u1_data), .enabledt(u1_enabledt), + .tridata(u1_tridata)); + + lpm_bustri_BYT u2 (.data(u2_data), .enabledt(u2_enabledt), + .tridata(u2_tridata)); + + lpm_bustri_BYT u3 (.data(u3_data), .enabledt(u3_enabledt), + .tridata(u3_tridata));*/ + assign u0_tridata = (u0_enabledt) ? u0_data : 8'hzz; + assign u1_tridata = (u1_enabledt) ? u1_data : 8'hzz; + assign u2_tridata = (u2_enabledt) ? u2_data : 8'hzz; + assign u3_tridata = (u3_enabledt) ? u3_data : 8'hzz; + + + assign ACP_CONF[31:24] = ACP_CONF_q[31:24]; + always @(posedge ACP_CONF0_clk_ctrl) + if (ACP_CONF24_ena_ctrl) + {ACP_CONF_q[31], ACP_CONF_q[30], ACP_CONF_q[29], ACP_CONF_q[28], + ACP_CONF_q[27], ACP_CONF_q[26], ACP_CONF_q[25], ACP_CONF_q[24]} + <= ACP_CONF_d[31:24]; + + assign ACP_CONF[23:16] = ACP_CONF_q[23:16]; + always @(posedge ACP_CONF0_clk_ctrl) + if (ACP_CONF16_ena_ctrl) + {ACP_CONF_q[23], ACP_CONF_q[22], ACP_CONF_q[21], ACP_CONF_q[20], + ACP_CONF_q[19], ACP_CONF_q[18], ACP_CONF_q[17], ACP_CONF_q[16]} + <= ACP_CONF_d[23:16]; + + assign ACP_CONF[15:8] = ACP_CONF_q[15:8]; + always @(posedge ACP_CONF0_clk_ctrl) + if (ACP_CONF8_ena_ctrl) + {ACP_CONF_q[15], ACP_CONF_q[14], ACP_CONF_q[13], ACP_CONF_q[12], + ACP_CONF_q[11], ACP_CONF_q[10], ACP_CONF_q[9], ACP_CONF_q[8]} <= + ACP_CONF_d[15:8]; + + assign ACP_CONF[7:0] = ACP_CONF_q[7:0]; + always @(posedge ACP_CONF0_clk_ctrl) + if (ACP_CONF0_ena_ctrl) + {ACP_CONF_q[7], ACP_CONF_q[6], ACP_CONF_q[5], ACP_CONF_q[4], + ACP_CONF_q[3], ACP_CONF_q[2], ACP_CONF_q[1], ACP_CONF_q[0]} <= + ACP_CONF_d[7:0]; + + always @(posedge INT_CTR0_clk_ctrl) + if (INT_CTR24_ena_ctrl) + {INT_CTR_q[31], INT_CTR_q[30], INT_CTR_q[29], INT_CTR_q[28], + INT_CTR_q[27], INT_CTR_q[26], INT_CTR_q[25], INT_CTR_q[24]} <= + INT_CTR_d[31:24]; + + always @(posedge INT_CTR0_clk_ctrl) + if (INT_CTR16_ena_ctrl) + {INT_CTR_q[23], INT_CTR_q[22], INT_CTR_q[21], INT_CTR_q[20], + INT_CTR_q[19], INT_CTR_q[18], INT_CTR_q[17], INT_CTR_q[16]} <= + INT_CTR_d[23:16]; + + always @(posedge INT_CTR0_clk_ctrl) + if (INT_CTR8_ena_ctrl) + {INT_CTR_q[15], INT_CTR_q[14], INT_CTR_q[13], INT_CTR_q[12], + INT_CTR_q[11], INT_CTR_q[10], INT_CTR_q[9], INT_CTR_q[8]} <= + INT_CTR_d[15:8]; + + always @(posedge INT_CTR0_clk_ctrl) + if (INT_CTR0_ena_ctrl) + {INT_CTR_q[7], INT_CTR_q[6], INT_CTR_q[5], INT_CTR_q[4], INT_CTR_q[3], + INT_CTR_q[2], INT_CTR_q[1], INT_CTR_q[0]} <= INT_CTR_d[7:0]; + +//GE +always @(posedge MAIN_CLK) + INT_LATCH_d_prev <= INT_LATCH_d; + +genvar n; +generate +for(n = 0; n < 32; n = n + 1) begin: syncint + always @(posedge MAIN_CLK) + begin + if (!nRST) + INT_LATCH_q[n] <= 1'b0; + else if (INT_CLEAR_q[n]) + INT_LATCH_q[n] <= 1'b0; + else if (INT_LATCH_d[n] & !INT_LATCH_d_prev[n]) + INT_LATCH_q[n] <= 1'b1; + else + INT_LATCH_q[n] <= INT_LATCH_q[n]; + end +end +endgenerate + + /*always @(posedge INT_LATCH_clk or negedge INT_LATCH31_clrn) + if (!INT_LATCH31_clrn) + INT_LATCH_q[31] <= 1'h0; + else + INT_LATCH_q[31] <= INT_LATCH_d[31]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH30_clrn) + if (!INT_LATCH30_clrn) + INT_LATCH_q[30] <= 1'h0; + else + INT_LATCH_q[30] <= INT_LATCH_d[30]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH29_clrn) + if (!INT_LATCH29_clrn) + INT_LATCH_q[29] <= 1'h0; + else + INT_LATCH_q[29] <= INT_LATCH_d[29]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH28_clrn) + if (!INT_LATCH28_clrn) + INT_LATCH_q[28] <= 1'h0; + else + INT_LATCH_q[28] <= INT_LATCH_d[28]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH27_clrn) + if (!INT_LATCH27_clrn) + INT_LATCH_q[27] <= 1'h0; + else + INT_LATCH_q[27] <= INT_LATCH_d[27]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH26_clrn) + if (!INT_LATCH26_clrn) + INT_LATCH_q[26] <= 1'h0; + else + INT_LATCH_q[26] <= INT_LATCH_d[26]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH25_clrn) + if (!INT_LATCH25_clrn) + INT_LATCH_q[25] <= 1'h0; + else + INT_LATCH_q[25] <= INT_LATCH_d[25]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH24_clrn) + if (!INT_LATCH24_clrn) + INT_LATCH_q[24] <= 1'h0; + else + INT_LATCH_q[24] <= INT_LATCH_d[24]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH23_clrn) + if (!INT_LATCH23_clrn) + INT_LATCH_q[23] <= 1'h0; + else + INT_LATCH_q[23] <= INT_LATCH_d[23]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH22_clrn) + if (!INT_LATCH22_clrn) + INT_LATCH_q[22] <= 1'h0; + else + INT_LATCH_q[22] <= INT_LATCH_d[22]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH21_clrn) + if (!INT_LATCH21_clrn) + INT_LATCH_q[21] <= 1'h0; + else + INT_LATCH_q[21] <= INT_LATCH_d[21]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH20_clrn) + if (!INT_LATCH20_clrn) + INT_LATCH_q[20] <= 1'h0; + else + INT_LATCH_q[20] <= INT_LATCH_d[20]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH19_clrn) + if (!INT_LATCH19_clrn) + INT_LATCH_q[19] <= 1'h0; + else + INT_LATCH_q[19] <= INT_LATCH_d[19]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH18_clrn) + if (!INT_LATCH18_clrn) + INT_LATCH_q[18] <= 1'h0; + else + INT_LATCH_q[18] <= INT_LATCH_d[18]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH17_clrn) + if (!INT_LATCH17_clrn) + INT_LATCH_q[17] <= 1'h0; + else + INT_LATCH_q[17] <= INT_LATCH_d[17]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH16_clrn) + if (!INT_LATCH16_clrn) + INT_LATCH_q[16] <= 1'h0; + else + INT_LATCH_q[16] <= INT_LATCH_d[16]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH15_clrn) + if (!INT_LATCH15_clrn) + INT_LATCH_q[15] <= 1'h0; + else + INT_LATCH_q[15] <= INT_LATCH_d[15]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH14_clrn) + if (!INT_LATCH14_clrn) + INT_LATCH_q[14] <= 1'h0; + else + INT_LATCH_q[14] <= INT_LATCH_d[14]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH13_clrn) + if (!INT_LATCH13_clrn) + INT_LATCH_q[13] <= 1'h0; + else + INT_LATCH_q[13] <= INT_LATCH_d[13]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH12_clrn) + if (!INT_LATCH12_clrn) + INT_LATCH_q[12] <= 1'h0; + else + INT_LATCH_q[12] <= INT_LATCH_d[12]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH11_clrn) + if (!INT_LATCH11_clrn) + INT_LATCH_q[11] <= 1'h0; + else + INT_LATCH_q[11] <= INT_LATCH_d[11]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH10_clrn) + if (!INT_LATCH10_clrn) + INT_LATCH_q[10] <= 1'h0; + else + INT_LATCH_q[10] <= INT_LATCH_d[10]; + + always @(posedge INT_LATCH9_clk_1 or negedge INT_LATCH9_clrn) + if (!INT_LATCH9_clrn) + INT_LATCH_q[9] <= 1'h0; + else + INT_LATCH_q[9] <= INT_LATCH_d[9]; + + always @(posedge INT_LATCH8_clk_1 or negedge INT_LATCH8_clrn) + if (!INT_LATCH8_clrn) + INT_LATCH_q[8] <= 1'h0; + else + INT_LATCH_q[8] <= INT_LATCH_d[8]; + + always @(posedge INT_LATCH7_clk_1 or negedge INT_LATCH7_clrn) + if (!INT_LATCH7_clrn) + INT_LATCH_q[7] <= 1'h0; + else + INT_LATCH_q[7] <= INT_LATCH_d[7]; + + always @(posedge INT_LATCH6_clk_1 or negedge INT_LATCH6_clrn) + if (!INT_LATCH6_clrn) + INT_LATCH_q[6] <= 1'h0; + else + INT_LATCH_q[6] <= INT_LATCH_d[6]; + + always @(posedge INT_LATCH5_clk_1 or negedge INT_LATCH5_clrn) + if (!INT_LATCH5_clrn) + INT_LATCH_q[5] <= 1'h0; + else + INT_LATCH_q[5] <= INT_LATCH_d[5]; + + always @(posedge INT_LATCH4_clk_1 or negedge INT_LATCH4_clrn) + if (!INT_LATCH4_clrn) + INT_LATCH_q[4] <= 1'h0; + else + INT_LATCH_q[4] <= INT_LATCH_d[4]; + + always @(posedge INT_LATCH3_clk_1 or negedge INT_LATCH3_clrn) + if (!INT_LATCH3_clrn) + INT_LATCH_q[3] <= 1'h0; + else + INT_LATCH_q[3] <= INT_LATCH_d[3]; + + always @(posedge INT_LATCH2_clk_1 or negedge INT_LATCH2_clrn) + if (!INT_LATCH2_clrn) + INT_LATCH_q[2] <= 1'h0; + else + INT_LATCH_q[2] <= INT_LATCH_d[2]; + + always @(posedge INT_LATCH1_clk_1 or negedge INT_LATCH1_clrn) + if (!INT_LATCH1_clrn) + INT_LATCH_q[1] <= 1'h0; + else + INT_LATCH_q[1] <= INT_LATCH_d[1]; + + always @(posedge INT_LATCH0_clk_1 or negedge INT_LATCH0_clrn) + if (!INT_LATCH0_clrn) + INT_LATCH_q[0] <= 1'h0; + else + INT_LATCH_q[0] <= INT_LATCH_d[0];*/ + + + always @(posedge INT_CLEAR0_clk_ctrl) + INT_CLEAR_q <= INT_CLEAR_d; + + always @(posedge INT_ENA0_clk_ctrl) + if (INT_ENA24_ena_ctrl) + {INT_ENA_q[31], INT_ENA_q[30], INT_ENA_q[29], INT_ENA_q[28], + INT_ENA_q[27], INT_ENA_q[26], INT_ENA_q[25], INT_ENA_q[24]} <= + INT_ENA_d[31:24]; + + always @(posedge INT_ENA0_clk_ctrl) + if (INT_ENA16_ena_ctrl) + {INT_ENA_q[23], INT_ENA_q[22], INT_ENA_q[21], INT_ENA_q[20], + INT_ENA_q[19], INT_ENA_q[18], INT_ENA_q[17], INT_ENA_q[16]} <= + INT_ENA_d[23:16]; + + always @(posedge INT_ENA0_clk_ctrl) + if (INT_ENA8_ena_ctrl) + {INT_ENA_q[15], INT_ENA_q[14], INT_ENA_q[13], INT_ENA_q[12], + INT_ENA_q[11], INT_ENA_q[10], INT_ENA_q[9], INT_ENA_q[8]} <= + INT_ENA_d[15:8]; + + always @(posedge INT_ENA0_clk_ctrl) + if (INT_ENA0_ena_ctrl) + {INT_ENA_q[7], INT_ENA_q[6], INT_ENA_q[5], INT_ENA_q[4], INT_ENA_q[3], + INT_ENA_q[2], INT_ENA_q[1], INT_ENA_q[0]} <= INT_ENA_d[7:0]; + + always @(posedge RTC_ADR0_clk_ctrl) + if (RTC_ADR0_ena_ctrl) + RTC_ADR_q <= RTC_ADR_d; + + always @(posedge ACHTELSEKUNDEN0_clk_ctrl) + if (ACHTELSEKUNDEN0_ena_ctrl) + ACHTELSEKUNDEN_q <= ACHTELSEKUNDEN_d; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE7__q[63] <= WERTE7__d[63]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE7__q[62] <= WERTE7__d[62]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE7__q[61] <= WERTE7__d[61]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE7__q[60] <= WERTE7__d[60]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE7__q[59] <= WERTE7__d[59]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE7__q[58] <= WERTE7__d[58]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE7__q[57] <= WERTE7__d[57]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE7__q[56] <= WERTE7__d[56]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE7__q[55] <= WERTE7__d[55]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE7__q[54] <= WERTE7__d[54]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE7__q[53] <= WERTE7__d[53]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE7__q[52] <= WERTE7__d[52]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE7__q[51] <= WERTE7__d[51]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE7__q[50] <= WERTE7__d[50]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE7__q[49] <= WERTE7__d[49]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE7__q[48] <= WERTE7__d[48]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE7__q[47] <= WERTE7__d[47]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE7__q[46] <= WERTE7__d[46]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE7__q[45] <= WERTE7__d[45]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE7__q[44] <= WERTE7__d[44]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE7__q[43] <= WERTE7__d[43]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE7__q[42] <= WERTE7__d[42]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE7__q[41] <= WERTE7__d[41]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE7__q[40] <= WERTE7__d[40]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE7__q[39] <= WERTE7__d[39]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE7__q[38] <= WERTE7__d[38]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE7__q[37] <= WERTE7__d[37]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE7__q[36] <= WERTE7__d[36]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE7__q[35] <= WERTE7__d[35]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE7__q[34] <= WERTE7__d[34]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE7__q[33] <= WERTE7__d[33]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE7__q[32] <= WERTE7__d[32]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE7__q[31] <= WERTE7__d[31]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE7__q[30] <= WERTE7__d[30]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE7__q[29] <= WERTE7__d[29]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE7__q[28] <= WERTE7__d[28]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE7__q[27] <= WERTE7__d[27]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE7__q[26] <= WERTE7__d[26]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE7__q[25] <= WERTE7__d[25]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE7__q[24] <= WERTE7__d[24]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE7__q[23] <= WERTE7__d[23]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE7__q[22] <= WERTE7__d[22]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE7__q[21] <= WERTE7__d[21]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE7__q[20] <= WERTE7__d[20]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE7__q[19] <= WERTE7__d[19]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE7__q[18] <= WERTE7__d[18]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE7__q[17] <= WERTE7__d[17]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE7__q[16] <= WERTE7__d[16]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE7__q[15] <= WERTE7__d[15]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE7__q[14] <= WERTE7__d[14]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_13_ena) + WERTE7__q[13] <= WERTE7__d[13]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE7__q[12] <= WERTE7__d[12]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE7__q[11] <= WERTE7__d[11]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE7__q[10] <= WERTE7__d[10]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_9_ena) + WERTE7__q[9] <= WERTE7__d[9]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_8_ena) + WERTE7__q[8] <= WERTE7__d[8]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_7_ena) + WERTE7__q[7] <= WERTE7__d[7]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_6_ena) + WERTE7__q[6] <= WERTE7__d[6]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE7__q[5] <= WERTE7__d[5]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_4_ena) + WERTE7__q[4] <= WERTE7__d[4]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE7__q[3] <= WERTE7__d[3]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_2_ena) + WERTE7__q[2] <= WERTE7__d[2]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE7__q[1] <= WERTE7__d[1]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_0_ena) + WERTE7__q[0] <= WERTE7__d[0]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE6__q[63] <= WERTE6__d[63]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE6__q[62] <= WERTE6__d[62]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE6__q[61] <= WERTE6__d[61]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE6__q[60] <= WERTE6__d[60]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE6__q[59] <= WERTE6__d[59]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE6__q[58] <= WERTE6__d[58]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE6__q[57] <= WERTE6__d[57]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE6__q[56] <= WERTE6__d[56]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE6__q[55] <= WERTE6__d[55]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE6__q[54] <= WERTE6__d[54]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE6__q[53] <= WERTE6__d[53]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE6__q[52] <= WERTE6__d[52]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE6__q[51] <= WERTE6__d[51]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE6__q[50] <= WERTE6__d[50]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE6__q[49] <= WERTE6__d[49]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE6__q[48] <= WERTE6__d[48]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE6__q[47] <= WERTE6__d[47]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE6__q[46] <= WERTE6__d[46]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE6__q[45] <= WERTE6__d[45]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE6__q[44] <= WERTE6__d[44]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE6__q[43] <= WERTE6__d[43]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE6__q[42] <= WERTE6__d[42]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE6__q[41] <= WERTE6__d[41]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE6__q[40] <= WERTE6__d[40]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE6__q[39] <= WERTE6__d[39]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE6__q[38] <= WERTE6__d[38]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE6__q[37] <= WERTE6__d[37]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE6__q[36] <= WERTE6__d[36]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE6__q[35] <= WERTE6__d[35]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE6__q[34] <= WERTE6__d[34]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE6__q[33] <= WERTE6__d[33]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE6__q[32] <= WERTE6__d[32]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE6__q[31] <= WERTE6__d[31]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE6__q[30] <= WERTE6__d[30]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE6__q[29] <= WERTE6__d[29]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE6__q[28] <= WERTE6__d[28]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE6__q[27] <= WERTE6__d[27]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE6__q[26] <= WERTE6__d[26]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE6__q[25] <= WERTE6__d[25]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE6__q[24] <= WERTE6__d[24]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE6__q[23] <= WERTE6__d[23]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE6__q[22] <= WERTE6__d[22]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE6__q[21] <= WERTE6__d[21]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE6__q[20] <= WERTE6__d[20]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE6__q[19] <= WERTE6__d[19]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE6__q[18] <= WERTE6__d[18]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE6__q[17] <= WERTE6__d[17]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE6__q[16] <= WERTE6__d[16]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE6__q[15] <= WERTE6__d[15]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE6__q[14] <= WERTE6__d[14]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_13_ena) + WERTE6__q[13] <= WERTE6__d[13]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE6__q[12] <= WERTE6__d[12]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE6__q[11] <= WERTE6__d[11]; + + always @(posedge WERTE6_0_clk_ctrl or negedge WERTE6_10_clrn) + if (!WERTE6_10_clrn) + WERTE6__q[10] <= 1'h0; + else + if (WERTE0_10_ena_ctrl) + WERTE6__q[10] <= WERTE6__d[10]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_9_ena) + WERTE6__q[9] <= WERTE6__d[9]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_8_ena) + WERTE6__q[8] <= WERTE6__d[8]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_7_ena) + WERTE6__q[7] <= WERTE6__d[7]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_6_ena) + WERTE6__q[6] <= WERTE6__d[6]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE6__q[5] <= WERTE6__d[5]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_4_ena) + WERTE6__q[4] <= WERTE6__d[4]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE6__q[3] <= WERTE6__d[3]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_2_ena) + WERTE6__q[2] <= WERTE6__d[2]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE6__q[1] <= WERTE6__d[1]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_0_ena) + WERTE6__q[0] <= WERTE6__d[0]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE5__q[63] <= WERTE5__d[63]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE5__q[62] <= WERTE5__d[62]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE5__q[61] <= WERTE5__d[61]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE5__q[60] <= WERTE5__d[60]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE5__q[59] <= WERTE5__d[59]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE5__q[58] <= WERTE5__d[58]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE5__q[57] <= WERTE5__d[57]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE5__q[56] <= WERTE5__d[56]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE5__q[55] <= WERTE5__d[55]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE5__q[54] <= WERTE5__d[54]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE5__q[53] <= WERTE5__d[53]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE5__q[52] <= WERTE5__d[52]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE5__q[51] <= WERTE5__d[51]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE5__q[50] <= WERTE5__d[50]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE5__q[49] <= WERTE5__d[49]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE5__q[48] <= WERTE5__d[48]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE5__q[47] <= WERTE5__d[47]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE5__q[46] <= WERTE5__d[46]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE5__q[45] <= WERTE5__d[45]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE5__q[44] <= WERTE5__d[44]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE5__q[43] <= WERTE5__d[43]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE5__q[42] <= WERTE5__d[42]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE5__q[41] <= WERTE5__d[41]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE5__q[40] <= WERTE5__d[40]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE5__q[39] <= WERTE5__d[39]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE5__q[38] <= WERTE5__d[38]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE5__q[37] <= WERTE5__d[37]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE5__q[36] <= WERTE5__d[36]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE5__q[35] <= WERTE5__d[35]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE5__q[34] <= WERTE5__d[34]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE5__q[33] <= WERTE5__d[33]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE5__q[32] <= WERTE5__d[32]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE5__q[31] <= WERTE5__d[31]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE5__q[30] <= WERTE5__d[30]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE5__q[29] <= WERTE5__d[29]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE5__q[28] <= WERTE5__d[28]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE5__q[27] <= WERTE5__d[27]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE5__q[26] <= WERTE5__d[26]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE5__q[25] <= WERTE5__d[25]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE5__q[24] <= WERTE5__d[24]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE5__q[23] <= WERTE5__d[23]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE5__q[22] <= WERTE5__d[22]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE5__q[21] <= WERTE5__d[21]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE5__q[20] <= WERTE5__d[20]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE5__q[19] <= WERTE5__d[19]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE5__q[18] <= WERTE5__d[18]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE5__q[17] <= WERTE5__d[17]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE5__q[16] <= WERTE5__d[16]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE5__q[15] <= WERTE5__d[15]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE5__q[14] <= WERTE5__d[14]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_13_ena) + WERTE5__q[13] <= WERTE5__d[13]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE5__q[12] <= WERTE5__d[12]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE5__q[11] <= WERTE5__d[11]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE5__q[10] <= WERTE5__d[10]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_9_ena) + WERTE5__q[9] <= WERTE5__d[9]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_8_ena) + WERTE5__q[8] <= WERTE5__d[8]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_7_ena) + WERTE5__q[7] <= WERTE5__d[7]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_6_ena) + WERTE5__q[6] <= WERTE5__d[6]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE5__q[5] <= WERTE5__d[5]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_4_ena) + WERTE5__q[4] <= WERTE5__d[4]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE5__q[3] <= WERTE5__d[3]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_2_ena) + WERTE5__q[2] <= WERTE5__d[2]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE5__q[1] <= WERTE5__d[1]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_0_ena) + WERTE5__q[0] <= WERTE5__d[0]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE4__q[63] <= WERTE4__d[63]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE4__q[62] <= WERTE4__d[62]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE4__q[61] <= WERTE4__d[61]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE4__q[60] <= WERTE4__d[60]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE4__q[59] <= WERTE4__d[59]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE4__q[58] <= WERTE4__d[58]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE4__q[57] <= WERTE4__d[57]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE4__q[56] <= WERTE4__d[56]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE4__q[55] <= WERTE4__d[55]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE4__q[54] <= WERTE4__d[54]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE4__q[53] <= WERTE4__d[53]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE4__q[52] <= WERTE4__d[52]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE4__q[51] <= WERTE4__d[51]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE4__q[50] <= WERTE4__d[50]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE4__q[49] <= WERTE4__d[49]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE4__q[48] <= WERTE4__d[48]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE4__q[47] <= WERTE4__d[47]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE4__q[46] <= WERTE4__d[46]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE4__q[45] <= WERTE4__d[45]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE4__q[44] <= WERTE4__d[44]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE4__q[43] <= WERTE4__d[43]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE4__q[42] <= WERTE4__d[42]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE4__q[41] <= WERTE4__d[41]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE4__q[40] <= WERTE4__d[40]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE4__q[39] <= WERTE4__d[39]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE4__q[38] <= WERTE4__d[38]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE4__q[37] <= WERTE4__d[37]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE4__q[36] <= WERTE4__d[36]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE4__q[35] <= WERTE4__d[35]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE4__q[34] <= WERTE4__d[34]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE4__q[33] <= WERTE4__d[33]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE4__q[32] <= WERTE4__d[32]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE4__q[31] <= WERTE4__d[31]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE4__q[30] <= WERTE4__d[30]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE4__q[29] <= WERTE4__d[29]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE4__q[28] <= WERTE4__d[28]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE4__q[27] <= WERTE4__d[27]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE4__q[26] <= WERTE4__d[26]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE4__q[25] <= WERTE4__d[25]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE4__q[24] <= WERTE4__d[24]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE4__q[23] <= WERTE4__d[23]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE4__q[22] <= WERTE4__d[22]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE4__q[21] <= WERTE4__d[21]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE4__q[20] <= WERTE4__d[20]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE4__q[19] <= WERTE4__d[19]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE4__q[18] <= WERTE4__d[18]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE4__q[17] <= WERTE4__d[17]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE4__q[16] <= WERTE4__d[16]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE4__q[15] <= WERTE4__d[15]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE4__q[14] <= WERTE4__d[14]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_13_ena) + WERTE4__q[13] <= WERTE4__d[13]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE4__q[12] <= WERTE4__d[12]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE4__q[11] <= WERTE4__d[11]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE4__q[10] <= WERTE4__d[10]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_9_ena) + WERTE4__q[9] <= WERTE4__d[9]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_8_ena) + WERTE4__q[8] <= WERTE4__d[8]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_7_ena) + WERTE4__q[7] <= WERTE4__d[7]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_6_ena) + WERTE4__q[6] <= WERTE4__d[6]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE4__q[5] <= WERTE4__d[5]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_4_ena) + WERTE4__q[4] <= WERTE4__d[4]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE4__q[3] <= WERTE4__d[3]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_2_ena) + WERTE4__q[2] <= WERTE4__d[2]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE4__q[1] <= WERTE4__d[1]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_0_ena) + WERTE4__q[0] <= WERTE4__d[0]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE3__q[63] <= WERTE3__d[63]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE3__q[62] <= WERTE3__d[62]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE3__q[61] <= WERTE3__d[61]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE3__q[60] <= WERTE3__d[60]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE3__q[59] <= WERTE3__d[59]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE3__q[58] <= WERTE3__d[58]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE3__q[57] <= WERTE3__d[57]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE3__q[56] <= WERTE3__d[56]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE3__q[55] <= WERTE3__d[55]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE3__q[54] <= WERTE3__d[54]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE3__q[53] <= WERTE3__d[53]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE3__q[52] <= WERTE3__d[52]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE3__q[51] <= WERTE3__d[51]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE3__q[50] <= WERTE3__d[50]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE3__q[49] <= WERTE3__d[49]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE3__q[48] <= WERTE3__d[48]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE3__q[47] <= WERTE3__d[47]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE3__q[46] <= WERTE3__d[46]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE3__q[45] <= WERTE3__d[45]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE3__q[44] <= WERTE3__d[44]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE3__q[43] <= WERTE3__d[43]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE3__q[42] <= WERTE3__d[42]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE3__q[41] <= WERTE3__d[41]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE3__q[40] <= WERTE3__d[40]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE3__q[39] <= WERTE3__d[39]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE3__q[38] <= WERTE3__d[38]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE3__q[37] <= WERTE3__d[37]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE3__q[36] <= WERTE3__d[36]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE3__q[35] <= WERTE3__d[35]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE3__q[34] <= WERTE3__d[34]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE3__q[33] <= WERTE3__d[33]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE3__q[32] <= WERTE3__d[32]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE3__q[31] <= WERTE3__d[31]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE3__q[30] <= WERTE3__d[30]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE3__q[29] <= WERTE3__d[29]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE3__q[28] <= WERTE3__d[28]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE3__q[27] <= WERTE3__d[27]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE3__q[26] <= WERTE3__d[26]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE3__q[25] <= WERTE3__d[25]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE3__q[24] <= WERTE3__d[24]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE3__q[23] <= WERTE3__d[23]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE3__q[22] <= WERTE3__d[22]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE3__q[21] <= WERTE3__d[21]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE3__q[20] <= WERTE3__d[20]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE3__q[19] <= WERTE3__d[19]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE3__q[18] <= WERTE3__d[18]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE3__q[17] <= WERTE3__d[17]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE3__q[16] <= WERTE3__d[16]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE3__q[15] <= WERTE3__d[15]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE3__q[14] <= WERTE3__d[14]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_13_ena) + WERTE3__q[13] <= WERTE3__d[13]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE3__q[12] <= WERTE3__d[12]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE3__q[11] <= WERTE3__d[11]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE3__q[10] <= WERTE3__d[10]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_9_ena) + WERTE3__q[9] <= WERTE3__d[9]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_8_ena) + WERTE3__q[8] <= WERTE3__d[8]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_7_ena) + WERTE3__q[7] <= WERTE3__d[7]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_6_ena) + WERTE3__q[6] <= WERTE3__d[6]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE3__q[5] <= WERTE3__d[5]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_4_ena) + WERTE3__q[4] <= WERTE3__d[4]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE3__q[3] <= WERTE3__d[3]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_2_ena) + WERTE3__q[2] <= WERTE3__d[2]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE3__q[1] <= WERTE3__d[1]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_0_ena) + WERTE3__q[0] <= WERTE3__d[0]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE2__q[63] <= WERTE2__d[63]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE2__q[62] <= WERTE2__d[62]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE2__q[61] <= WERTE2__d[61]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE2__q[60] <= WERTE2__d[60]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE2__q[59] <= WERTE2__d[59]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE2__q[58] <= WERTE2__d[58]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE2__q[57] <= WERTE2__d[57]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE2__q[56] <= WERTE2__d[56]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE2__q[55] <= WERTE2__d[55]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE2__q[54] <= WERTE2__d[54]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE2__q[53] <= WERTE2__d[53]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE2__q[52] <= WERTE2__d[52]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE2__q[51] <= WERTE2__d[51]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE2__q[50] <= WERTE2__d[50]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE2__q[49] <= WERTE2__d[49]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE2__q[48] <= WERTE2__d[48]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE2__q[47] <= WERTE2__d[47]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE2__q[46] <= WERTE2__d[46]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE2__q[45] <= WERTE2__d[45]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE2__q[44] <= WERTE2__d[44]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE2__q[43] <= WERTE2__d[43]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE2__q[42] <= WERTE2__d[42]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE2__q[41] <= WERTE2__d[41]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE2__q[40] <= WERTE2__d[40]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE2__q[39] <= WERTE2__d[39]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE2__q[38] <= WERTE2__d[38]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE2__q[37] <= WERTE2__d[37]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE2__q[36] <= WERTE2__d[36]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE2__q[35] <= WERTE2__d[35]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE2__q[34] <= WERTE2__d[34]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE2__q[33] <= WERTE2__d[33]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE2__q[32] <= WERTE2__d[32]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE2__q[31] <= WERTE2__d[31]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE2__q[30] <= WERTE2__d[30]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE2__q[29] <= WERTE2__d[29]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE2__q[28] <= WERTE2__d[28]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE2__q[27] <= WERTE2__d[27]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE2__q[26] <= WERTE2__d[26]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE2__q[25] <= WERTE2__d[25]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE2__q[24] <= WERTE2__d[24]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE2__q[23] <= WERTE2__d[23]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE2__q[22] <= WERTE2__d[22]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE2__q[21] <= WERTE2__d[21]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE2__q[20] <= WERTE2__d[20]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE2__q[19] <= WERTE2__d[19]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE2__q[18] <= WERTE2__d[18]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE2__q[17] <= WERTE2__d[17]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE2__q[16] <= WERTE2__d[16]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE2__q[15] <= WERTE2__d[15]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE2__q[14] <= WERTE2__d[14]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_13_ena) + WERTE2__q[13] <= WERTE2__d[13]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE2__q[12] <= WERTE2__d[12]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE2__q[11] <= WERTE2__d[11]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE2__q[10] <= WERTE2__d[10]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_9_ena) + WERTE2__q[9] <= WERTE2__d[9]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_8_ena) + WERTE2__q[8] <= WERTE2__d[8]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_7_ena) + WERTE2__q[7] <= WERTE2__d[7]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_6_ena) + WERTE2__q[6] <= WERTE2__d[6]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE2__q[5] <= WERTE2__d[5]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_4_ena) + WERTE2__q[4] <= WERTE2__d[4]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE2__q[3] <= WERTE2__d[3]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_2_ena) + WERTE2__q[2] <= WERTE2__d[2]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE2__q[1] <= WERTE2__d[1]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_0_ena) + WERTE2__q[0] <= WERTE2__d[0]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE1__q[63] <= WERTE1__d[63]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE1__q[62] <= WERTE1__d[62]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE1__q[61] <= WERTE1__d[61]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE1__q[60] <= WERTE1__d[60]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE1__q[59] <= WERTE1__d[59]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE1__q[58] <= WERTE1__d[58]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE1__q[57] <= WERTE1__d[57]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE1__q[56] <= WERTE1__d[56]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE1__q[55] <= WERTE1__d[55]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE1__q[54] <= WERTE1__d[54]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE1__q[53] <= WERTE1__d[53]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE1__q[52] <= WERTE1__d[52]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE1__q[51] <= WERTE1__d[51]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE1__q[50] <= WERTE1__d[50]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE1__q[49] <= WERTE1__d[49]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE1__q[48] <= WERTE1__d[48]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE1__q[47] <= WERTE1__d[47]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE1__q[46] <= WERTE1__d[46]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE1__q[45] <= WERTE1__d[45]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE1__q[44] <= WERTE1__d[44]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE1__q[43] <= WERTE1__d[43]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE1__q[42] <= WERTE1__d[42]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE1__q[41] <= WERTE1__d[41]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE1__q[40] <= WERTE1__d[40]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE1__q[39] <= WERTE1__d[39]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE1__q[38] <= WERTE1__d[38]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE1__q[37] <= WERTE1__d[37]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE1__q[36] <= WERTE1__d[36]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE1__q[35] <= WERTE1__d[35]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE1__q[34] <= WERTE1__d[34]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE1__q[33] <= WERTE1__d[33]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE1__q[32] <= WERTE1__d[32]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE1__q[31] <= WERTE1__d[31]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE1__q[30] <= WERTE1__d[30]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE1__q[29] <= WERTE1__d[29]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE1__q[28] <= WERTE1__d[28]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE1__q[27] <= WERTE1__d[27]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE1__q[26] <= WERTE1__d[26]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE1__q[25] <= WERTE1__d[25]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE1__q[24] <= WERTE1__d[24]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE1__q[23] <= WERTE1__d[23]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE1__q[22] <= WERTE1__d[22]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE1__q[21] <= WERTE1__d[21]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE1__q[20] <= WERTE1__d[20]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE1__q[19] <= WERTE1__d[19]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE1__q[18] <= WERTE1__d[18]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE1__q[17] <= WERTE1__d[17]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE1__q[16] <= WERTE1__d[16]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE1__q[15] <= WERTE1__d[15]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE1__q[14] <= WERTE1__d[14]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_13_ena) + WERTE1__q[13] <= WERTE1__d[13]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE1__q[12] <= WERTE1__d[12]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE1__q[11] <= WERTE1__d[11]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE1__q[10] <= WERTE1__d[10]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_9_ena) + WERTE1__q[9] <= WERTE1__d[9]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_8_ena) + WERTE1__q[8] <= WERTE1__d[8]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_7_ena) + WERTE1__q[7] <= WERTE1__d[7]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_6_ena) + WERTE1__q[6] <= WERTE1__d[6]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE1__q[5] <= WERTE1__d[5]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_4_ena) + WERTE1__q[4] <= WERTE1__d[4]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE1__q[3] <= WERTE1__d[3]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_2_ena) + WERTE1__q[2] <= WERTE1__d[2]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE1__q[1] <= WERTE1__d[1]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_0_ena) + WERTE1__q[0] <= WERTE1__d[0]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE0__q[63] <= WERTE0__d[63]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE0__q[62] <= WERTE0__d[62]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE0__q[61] <= WERTE0__d[61]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE0__q[60] <= WERTE0__d[60]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE0__q[59] <= WERTE0__d[59]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE0__q[58] <= WERTE0__d[58]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE0__q[57] <= WERTE0__d[57]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE0__q[56] <= WERTE0__d[56]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE0__q[55] <= WERTE0__d[55]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE0__q[54] <= WERTE0__d[54]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE0__q[53] <= WERTE0__d[53]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE0__q[52] <= WERTE0__d[52]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE0__q[51] <= WERTE0__d[51]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE0__q[50] <= WERTE0__d[50]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE0__q[49] <= WERTE0__d[49]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE0__q[48] <= WERTE0__d[48]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE0__q[47] <= WERTE0__d[47]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE0__q[46] <= WERTE0__d[46]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE0__q[45] <= WERTE0__d[45]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE0__q[44] <= WERTE0__d[44]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE0__q[43] <= WERTE0__d[43]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE0__q[42] <= WERTE0__d[42]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE0__q[41] <= WERTE0__d[41]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE0__q[40] <= WERTE0__d[40]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE0__q[39] <= WERTE0__d[39]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE0__q[38] <= WERTE0__d[38]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE0__q[37] <= WERTE0__d[37]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE0__q[36] <= WERTE0__d[36]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE0__q[35] <= WERTE0__d[35]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE0__q[34] <= WERTE0__d[34]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE0__q[33] <= WERTE0__d[33]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE0__q[32] <= WERTE0__d[32]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE0__q[31] <= WERTE0__d[31]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE0__q[30] <= WERTE0__d[30]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE0__q[29] <= WERTE0__d[29]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE0__q[28] <= WERTE0__d[28]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE0__q[27] <= WERTE0__d[27]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE0__q[26] <= WERTE0__d[26]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE0__q[25] <= WERTE0__d[25]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE0__q[24] <= WERTE0__d[24]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE0__q[23] <= WERTE0__d[23]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE0__q[22] <= WERTE0__d[22]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE0__q[21] <= WERTE0__d[21]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE0__q[20] <= WERTE0__d[20]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE0__q[19] <= WERTE0__d[19]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE0__q[18] <= WERTE0__d[18]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE0__q[17] <= WERTE0__d[17]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE0__q[16] <= WERTE0__d[16]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE0__q[15] <= WERTE0__d[15]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE0__q[14] <= WERTE0__d[14]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_13_ena) + WERTE0__q[13] <= WERTE0__d[13]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE0__q[12] <= WERTE0__d[12]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE0__q[11] <= WERTE0__d[11]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE0__q[10] <= WERTE0__d[10]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_9_ena) + WERTE0__q[9] <= WERTE0__d[9]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_8_ena) + WERTE0__q[8] <= WERTE0__d[8]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_7_ena) + WERTE0__q[7] <= WERTE0__d[7]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_6_ena) + WERTE0__q[6] <= WERTE0__d[6]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE0__q[5] <= WERTE0__d[5]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_4_ena) + WERTE0__q[4] <= WERTE0__d[4]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE0__q[3] <= WERTE0__d[3]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_2_ena) + WERTE0__q[2] <= WERTE0__d[2]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE0__q[1] <= WERTE0__d[1]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_0_ena) + WERTE0__q[0] <= WERTE0__d[0]; + + always @(posedge PIC_INT_SYNC0_clk_ctrl) + PIC_INT_SYNC_q <= PIC_INT_SYNC_d; + +// Start of original equations + +// BYT SELECT +// HWORD +// HHBYT +// LONG UND LINE + assign FB_B[0] = (FB_SIZE1 & (!FB_SIZE0) & (!FB_ADR[1])) | ((!FB_SIZE1) & + FB_SIZE0 & (!FB_ADR[1]) & (!FB_ADR[0])) | ((!FB_SIZE1) & (!FB_SIZE0)) + | (FB_SIZE1 & FB_SIZE0); + +// HWORD +// HLBYT +// LONG UND LINE + assign FB_B[1] = (FB_SIZE1 & (!FB_SIZE0) & (!FB_ADR[1])) | ((!FB_SIZE1) & + FB_SIZE0 & (!FB_ADR[1]) & FB_ADR[0]) | ((!FB_SIZE1) & (!FB_SIZE0)) | + (FB_SIZE1 & FB_SIZE0); + +// LWORD +// LHBYT +// LONG UND LINE + assign FB_B[2] = (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) | ((!FB_SIZE1) & + FB_SIZE0 & FB_ADR[1] & (!FB_ADR[0])) | ((!FB_SIZE1) & (!FB_SIZE0)) | + (FB_SIZE1 & FB_SIZE0); + +// LWORD +// LLBYT +// LONG UND LINE + assign FB_B[3] = (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) | ((!FB_SIZE1) & + FB_SIZE0 & FB_ADR[1] & FB_ADR[0]) | ((!FB_SIZE1) & (!FB_SIZE0)) | + (FB_SIZE1 & FB_SIZE0); + +// INTERRUPT CONTROL REGISTER: BIT0=INT5 AUSLÖSEN, 1=INT7 AUSLÖSEN + assign INT_CTR0_clk_ctrl = MAIN_CLK; + +// $10000/4 + assign INT_CTR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4000; + assign INT_CTR_d = FB_AD; + assign INT_CTR24_ena_ctrl = INT_CTR_CS & FB_B[0] & (!nFB_WR); + assign INT_CTR16_ena_ctrl = INT_CTR_CS & FB_B[1] & (!nFB_WR); + assign INT_CTR8_ena_ctrl = INT_CTR_CS & FB_B[2] & (!nFB_WR); + assign INT_CTR0_ena_ctrl = INT_CTR_CS & FB_B[3] & (!nFB_WR); + +// INTERRUPT ENABLE REGISTER BIT31=INT7,30=INT6,29=INT5,28=INT4,27=INT3,26=INT2 + assign INT_ENA0_clk_ctrl = MAIN_CLK; + +// $10004/4 + assign INT_ENA_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4001; + assign INT_ENA_d = FB_AD; + assign INT_ENA24_ena_ctrl = INT_ENA_CS & FB_B[0] & (!nFB_WR); + assign INT_ENA16_ena_ctrl = INT_ENA_CS & FB_B[1] & (!nFB_WR); + assign INT_ENA8_ena_ctrl = INT_ENA_CS & FB_B[2] & (!nFB_WR); + assign INT_ENA0_ena_ctrl = INT_ENA_CS & FB_B[3] & (!nFB_WR); + +// INTERRUPT CLEAR REGISTER WRITE ONLY 1=INTERRUPT CLEAR + assign INT_CLEAR0_clk_ctrl = MAIN_CLK; + +// $10008/4 + assign INT_CLEAR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4002; + assign INT_CLEAR_d[31:24] = FB_AD[31:24] & {8{INT_CLEAR_CS}} & {8{FB_B[0]}} + & {8{!nFB_WR}}; + assign INT_CLEAR_d[23:16] = FB_AD[23:16] & {8{INT_CLEAR_CS}} & {8{FB_B[1]}} + & {8{!nFB_WR}}; + assign INT_CLEAR_d[15:8] = FB_AD[15:8] & {8{INT_CLEAR_CS}} & {8{FB_B[2]}} & + {8{!nFB_WR}}; + assign INT_CLEAR_d[7:0] = FB_AD[7:0] & {8{INT_CLEAR_CS}} & {8{FB_B[3]}} & + {8{!nFB_WR}}; + +// INTERRUPT LATCH REGISTER READ ONLY +// $1000C/4 + assign INT_LATCH_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4003; + +// INTERRUPT + assign nIRQ[2] = !(HSYNC & INT_ENA_q[26]); + assign nIRQ[3] = !(INT_CTR_q[0] & INT_ENA_q[27]); + assign nIRQ[4] = !(VSYNC & INT_ENA_q[28]); + assign nIRQ[5] = INT_LATCH_q == 32'h0 & INT_ENA_q[29]; + assign nIRQ[6] = !((!nMFP_INT) & INT_ENA_q[30]); + assign nIRQ[7] = !(PSEUDO_BUS_ERROR & INT_ENA_q[31]); + +// SCC +// VME +// PADDLE +// PADDLE +// PADDLE +// MFP2 +// MFP2 +// MFP2 +// MFP2 +// TT SCSI +// ST UHR +// ST UHR +// DMA SOUND +// DMA SOUND +// DMA SOUND + assign PSEUDO_BUS_ERROR = (!nFB_CS1) & (FB_ADR[19:4] == 16'hF8C8 | + FB_ADR[19:4] == 16'hF8E0 | FB_ADR[19:4] == 16'hF920 | FB_ADR[19:4] == + 16'hF921 | FB_ADR[19:4] == 16'hF922 | FB_ADR[19:4] == 16'hFFA8 | + FB_ADR[19:4] == 16'hFFA9 | FB_ADR[19:4] == 16'hFFAA | FB_ADR[19:4] == + 16'hFFA8 | FB_ADR[19:8] == 12'b1111_1000_0111 | FB_ADR[19:4] == + 16'hFFC2 | FB_ADR[19:4] == 16'hFFC3 | FB_ADR[19:4] == 16'hF890 | + FB_ADR[19:4] == 16'hF891 | FB_ADR[19:4] == 16'hF892); + +// IF VIDEO ADR CHANGE +// WRITE VIDEO BASE ADR HIGH 0xFFFF8201/2 + assign TIN0 = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C100 & (!nFB_WR); + +// INTERRUPT LATCH + /*assign INT_LATCH_d = 32'hFFFF_FFFF; + assign INT_LATCH0_clk_1 = PIC_INT & INT_ENA_q[0]; + assign INT_LATCH1_clk_1 = E0_INT & INT_ENA_q[1]; + assign INT_LATCH2_clk_1 = DVI_INT & INT_ENA_q[2]; + assign INT_LATCH3_clk_1 = (!nPCI_INTA) & INT_ENA_q[3]; + assign INT_LATCH4_clk_1 = (!nPCI_INTB) & INT_ENA_q[4]; + assign INT_LATCH5_clk_1 = (!nPCI_INTC) & INT_ENA_q[5]; + assign INT_LATCH6_clk_1 = (!nPCI_INTD) & INT_ENA_q[6]; + assign INT_LATCH7_clk_1 = DSP_INT & INT_ENA_q[7]; + assign INT_LATCH8_clk_1 = VSYNC & INT_ENA_q[8]; + assign INT_LATCH9_clk_1 = HSYNC & INT_ENA_q[9];*/ + + //GE Latch -> FF + assign INT_LATCH_d[31:10] = 22'b11_1111_1111_1111_1111_1111; + assign INT_LATCH_d[0] = PIC_INT & INT_ENA_q[0]; + assign INT_LATCH_d[1] = E0_INT & INT_ENA_q[1]; + assign INT_LATCH_d[2] = DVI_INT & INT_ENA_q[2]; + assign INT_LATCH_d[3] = (!nPCI_INTA) & INT_ENA_q[3]; + assign INT_LATCH_d[4] = (!nPCI_INTB) & INT_ENA_q[4]; + assign INT_LATCH_d[5] = (!nPCI_INTC) & INT_ENA_q[5]; + assign INT_LATCH_d[6] = (!nPCI_INTD) & INT_ENA_q[6]; + assign INT_LATCH_d[7] = DSP_INT & INT_ENA_q[7]; + assign INT_LATCH_d[8] = VSYNC & INT_ENA_q[8]; + assign INT_LATCH_d[9] = HSYNC & INT_ENA_q[9]; + +// INTERRUPT CLEAR + assign {INT_LATCH31_clrn, INT_LATCH30_clrn, INT_LATCH29_clrn, + INT_LATCH28_clrn, INT_LATCH27_clrn, INT_LATCH26_clrn, + INT_LATCH25_clrn, INT_LATCH24_clrn, INT_LATCH23_clrn, + INT_LATCH22_clrn, INT_LATCH21_clrn, INT_LATCH20_clrn, + INT_LATCH19_clrn, INT_LATCH18_clrn, INT_LATCH17_clrn, + INT_LATCH16_clrn, INT_LATCH15_clrn, INT_LATCH14_clrn, + INT_LATCH13_clrn, INT_LATCH12_clrn, INT_LATCH11_clrn, + INT_LATCH10_clrn, INT_LATCH9_clrn, INT_LATCH8_clrn, INT_LATCH7_clrn, + INT_LATCH6_clrn, INT_LATCH5_clrn, INT_LATCH4_clrn, INT_LATCH3_clrn, + INT_LATCH2_clrn, INT_LATCH1_clrn, INT_LATCH0_clrn} = ~INT_CLEAR_q; + +// INT_IN + assign INT_IN[0] = PIC_INT; + assign INT_IN[1] = E0_INT; + assign INT_IN[2] = DVI_INT; + assign INT_IN[3] = !nPCI_INTA; + assign INT_IN[4] = !nPCI_INTB; + assign INT_IN[5] = !nPCI_INTC; + assign INT_IN[6] = !nPCI_INTD; + assign INT_IN[7] = DSP_INT; + assign INT_IN[8] = VSYNC; + assign INT_IN[9] = HSYNC; + assign INT_IN[25:10] = 16'h0; + assign INT_IN[26] = HSYNC; + assign INT_IN[27] = INT_CTR_q[0]; + assign INT_IN[28] = VSYNC; + assign INT_IN[29] = INT_LATCH_q != 32'h0; + assign INT_IN[30] = !nMFP_INT; + assign INT_IN[31] = DMA_DRQ; + +// *************************************************************************************** +// ACP CONFIG REGISTER: BIT 31-> 0=CF 1=IDE + assign ACP_CONF0_clk_ctrl = MAIN_CLK; + +// $4'0000/4 + assign ACP_CONF_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h1_0000; + assign ACP_CONF_d = FB_AD; + assign ACP_CONF24_ena_ctrl = ACP_CONF_CS & FB_B[0] & (!nFB_WR); + assign ACP_CONF16_ena_ctrl = ACP_CONF_CS & FB_B[1] & (!nFB_WR); + assign ACP_CONF8_ena_ctrl = ACP_CONF_CS & FB_B[2] & (!nFB_WR); + assign ACP_CONF0_ena_ctrl = ACP_CONF_CS & FB_B[3] & (!nFB_WR); + +// *************************************************************************************** +// ------------------------------------------------------------ +// C1287 0=SEK 2=MIN 4=STD 6=WOCHENTAG 7=TAG 8=MONAT 9=JAHR +// -------------------------------------------------------- + assign RTC_ADR0_clk_ctrl = MAIN_CLK; + assign RTC_ADR_d = FB_AD[21:16]; + +// FFFF8961 + assign UHR_AS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C4B0 & FB_B[1]; + +// FFFF8963 + assign UHR_DS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C4B1 & FB_B[3]; + assign RTC_ADR0_ena_ctrl = UHR_AS & (!nFB_WR); + assign WERTE7_0_clk_ctrl = MAIN_CLK; + assign WERTE6_0_clk_ctrl = MAIN_CLK; + assign WERTE5_0_clk_ctrl = MAIN_CLK; + assign WERTE4_0_clk_ctrl = MAIN_CLK; + assign WERTE3_0_clk_ctrl = MAIN_CLK; + assign WERTE2_0_clk_ctrl = MAIN_CLK; + assign WERTE1_0_clk_ctrl = MAIN_CLK; + assign WERTE0_0_clk_ctrl = MAIN_CLK; + assign {WERTE7_0_d_1, WERTE6_0_d_1, WERTE5_0_d_1, WERTE4_0_d_1, + WERTE3_0_d_1, WERTE2_0_d_1, WERTE1_0_d_1, WERTE0_0_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7__d[1], WERTE6__d[1], WERTE5__d[1], WERTE4__d[1], + WERTE3__d[1], WERTE2__d[1], WERTE1__d[1], WERTE0__d[1]} = + FB_AD[23:16]; + assign {WERTE7_2_d_1, WERTE6_2_d_1, WERTE5_2_d_1, WERTE4_2_d_1, + WERTE3_2_d_1, WERTE2_2_d_1, WERTE1_2_d_1, WERTE0_2_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7__d[3], WERTE6__d[3], WERTE5__d[3], WERTE4__d[3], + WERTE3__d[3], WERTE2__d[3], WERTE1__d[3], WERTE0__d[3]} = + FB_AD[23:16]; + assign {WERTE7_4_d_1, WERTE6_4_d_1, WERTE5_4_d_1, WERTE4_4_d_1, + WERTE3_4_d_1, WERTE2_4_d_1, WERTE1_4_d_1, WERTE0_4_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7__d[5], WERTE6__d[5], WERTE5__d[5], WERTE4__d[5], + WERTE3__d[5], WERTE2__d[5], WERTE1__d[5], WERTE0__d[5]} = + FB_AD[23:16]; + assign {WERTE7_6_d_1, WERTE6_6_d_1, WERTE5_6_d_1, WERTE4_6_d_1, + WERTE3_6_d_1, WERTE2_6_d_1, WERTE1_6_d_1, WERTE0_6_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_7_d_1, WERTE6_7_d_1, WERTE5_7_d_1, WERTE4_7_d_1, + WERTE3_7_d_1, WERTE2_7_d_1, WERTE1_7_d_1, WERTE0_7_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_8_d_1, WERTE6_8_d_1, WERTE5_8_d_1, WERTE4_8_d_1, + WERTE3_8_d_1, WERTE2_8_d_1, WERTE1_8_d_1, WERTE0_8_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_9_d_1, WERTE6_9_d_1, WERTE5_9_d_1, WERTE4_9_d_1, + WERTE3_9_d_1, WERTE2_9_d_1, WERTE1_9_d_1, WERTE0_9_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7__d[10], WERTE6__d[10], WERTE5__d[10], WERTE4__d[10], + WERTE3__d[10], WERTE2__d[10], WERTE1__d[10], WERTE0__d[10]} = + FB_AD[23:16]; + assign {WERTE7__d[11], WERTE6__d[11], WERTE5__d[11], WERTE4__d[11], + WERTE3__d[11], WERTE2_11_d_1, WERTE1_11_d_1, WERTE0_11_d_1} = + FB_AD[23:16]; + assign {WERTE7__d[12], WERTE6__d[12], WERTE5__d[12], WERTE4__d[12], + WERTE3__d[12], WERTE2__d[12], WERTE1__d[12], WERTE0__d[12]} = + FB_AD[23:16]; + assign {WERTE7_13_d_1, WERTE6__d[13], WERTE5__d[13], WERTE4__d[13], + WERTE3__d[13], WERTE2__d[13], WERTE1__d[13], WERTE0_13_d_1} = + FB_AD[23:16]; + assign {WERTE7__d[14], WERTE6__d[14], WERTE5__d[14], WERTE4__d[14], + WERTE3__d[14], WERTE2__d[14], WERTE1__d[14], WERTE0__d[14]} = + FB_AD[23:16]; + assign {WERTE7__d[15], WERTE6__d[15], WERTE5__d[15], WERTE4__d[15], + WERTE3__d[15], WERTE2__d[15], WERTE1__d[15], WERTE0__d[15]} = + FB_AD[23:16]; + assign {WERTE7__d[16], WERTE6__d[16], WERTE5__d[16], WERTE4__d[16], + WERTE3__d[16], WERTE2__d[16], WERTE1__d[16], WERTE0__d[16]} = + FB_AD[23:16]; + assign {WERTE7__d[17], WERTE6__d[17], WERTE5__d[17], WERTE4__d[17], + WERTE3__d[17], WERTE2__d[17], WERTE1__d[17], WERTE0__d[17]} = + FB_AD[23:16]; + assign {WERTE7__d[18], WERTE6__d[18], WERTE5__d[18], WERTE4__d[18], + WERTE3__d[18], WERTE2__d[18], WERTE1__d[18], WERTE0__d[18]} = + FB_AD[23:16]; + assign {WERTE7__d[19], WERTE6__d[19], WERTE5__d[19], WERTE4__d[19], + WERTE3__d[19], WERTE2__d[19], WERTE1__d[19], WERTE0__d[19]} = + FB_AD[23:16]; + assign {WERTE7__d[20], WERTE6__d[20], WERTE5__d[20], WERTE4__d[20], + WERTE3__d[20], WERTE2__d[20], WERTE1__d[20], WERTE0__d[20]} = + FB_AD[23:16]; + assign {WERTE7__d[21], WERTE6__d[21], WERTE5__d[21], WERTE4__d[21], + WERTE3__d[21], WERTE2__d[21], WERTE1__d[21], WERTE0__d[21]} = + FB_AD[23:16]; + assign {WERTE7__d[22], WERTE6__d[22], WERTE5__d[22], WERTE4__d[22], + WERTE3__d[22], WERTE2__d[22], WERTE1__d[22], WERTE0__d[22]} = + FB_AD[23:16]; + assign {WERTE7__d[23], WERTE6__d[23], WERTE5__d[23], WERTE4__d[23], + WERTE3__d[23], WERTE2__d[23], WERTE1__d[23], WERTE0__d[23]} = + FB_AD[23:16]; + assign {WERTE7__d[24], WERTE6__d[24], WERTE5__d[24], WERTE4__d[24], + WERTE3__d[24], WERTE2__d[24], WERTE1__d[24], WERTE0__d[24]} = + FB_AD[23:16]; + assign {WERTE7__d[25], WERTE6__d[25], WERTE5__d[25], WERTE4__d[25], + WERTE3__d[25], WERTE2__d[25], WERTE1__d[25], WERTE0__d[25]} = + FB_AD[23:16]; + assign {WERTE7__d[26], WERTE6__d[26], WERTE5__d[26], WERTE4__d[26], + WERTE3__d[26], WERTE2__d[26], WERTE1__d[26], WERTE0__d[26]} = + FB_AD[23:16]; + assign {WERTE7__d[27], WERTE6__d[27], WERTE5__d[27], WERTE4__d[27], + WERTE3__d[27], WERTE2__d[27], WERTE1__d[27], WERTE0__d[27]} = + FB_AD[23:16]; + assign {WERTE7__d[28], WERTE6__d[28], WERTE5__d[28], WERTE4__d[28], + WERTE3__d[28], WERTE2__d[28], WERTE1__d[28], WERTE0__d[28]} = + FB_AD[23:16]; + assign {WERTE7__d[29], WERTE6__d[29], WERTE5__d[29], WERTE4__d[29], + WERTE3__d[29], WERTE2__d[29], WERTE1__d[29], WERTE0__d[29]} = + FB_AD[23:16]; + assign {WERTE7__d[30], WERTE6__d[30], WERTE5__d[30], WERTE4__d[30], + WERTE3__d[30], WERTE2__d[30], WERTE1__d[30], WERTE0__d[30]} = + FB_AD[23:16]; + assign {WERTE7__d[31], WERTE6__d[31], WERTE5__d[31], WERTE4__d[31], + WERTE3__d[31], WERTE2__d[31], WERTE1__d[31], WERTE0__d[31]} = + FB_AD[23:16]; + assign {WERTE7__d[32], WERTE6__d[32], WERTE5__d[32], WERTE4__d[32], + WERTE3__d[32], WERTE2__d[32], WERTE1__d[32], WERTE0__d[32]} = + FB_AD[23:16]; + assign {WERTE7__d[33], WERTE6__d[33], WERTE5__d[33], WERTE4__d[33], + WERTE3__d[33], WERTE2__d[33], WERTE1__d[33], WERTE0__d[33]} = + FB_AD[23:16]; + assign {WERTE7__d[34], WERTE6__d[34], WERTE5__d[34], WERTE4__d[34], + WERTE3__d[34], WERTE2__d[34], WERTE1__d[34], WERTE0__d[34]} = + FB_AD[23:16]; + assign {WERTE7__d[35], WERTE6__d[35], WERTE5__d[35], WERTE4__d[35], + WERTE3__d[35], WERTE2__d[35], WERTE1__d[35], WERTE0__d[35]} = + FB_AD[23:16]; + assign {WERTE7__d[36], WERTE6__d[36], WERTE5__d[36], WERTE4__d[36], + WERTE3__d[36], WERTE2__d[36], WERTE1__d[36], WERTE0__d[36]} = + FB_AD[23:16]; + assign {WERTE7__d[37], WERTE6__d[37], WERTE5__d[37], WERTE4__d[37], + WERTE3__d[37], WERTE2__d[37], WERTE1__d[37], WERTE0__d[37]} = + FB_AD[23:16]; + assign {WERTE7__d[38], WERTE6__d[38], WERTE5__d[38], WERTE4__d[38], + WERTE3__d[38], WERTE2__d[38], WERTE1__d[38], WERTE0__d[38]} = + FB_AD[23:16]; + assign {WERTE7__d[39], WERTE6__d[39], WERTE5__d[39], WERTE4__d[39], + WERTE3__d[39], WERTE2__d[39], WERTE1__d[39], WERTE0__d[39]} = + FB_AD[23:16]; + assign {WERTE7__d[40], WERTE6__d[40], WERTE5__d[40], WERTE4__d[40], + WERTE3__d[40], WERTE2__d[40], WERTE1__d[40], WERTE0__d[40]} = + FB_AD[23:16]; + assign {WERTE7__d[41], WERTE6__d[41], WERTE5__d[41], WERTE4__d[41], + WERTE3__d[41], WERTE2__d[41], WERTE1__d[41], WERTE0__d[41]} = + FB_AD[23:16]; + assign {WERTE7__d[42], WERTE6__d[42], WERTE5__d[42], WERTE4__d[42], + WERTE3__d[42], WERTE2__d[42], WERTE1__d[42], WERTE0__d[42]} = + FB_AD[23:16]; + assign {WERTE7__d[43], WERTE6__d[43], WERTE5__d[43], WERTE4__d[43], + WERTE3__d[43], WERTE2__d[43], WERTE1__d[43], WERTE0__d[43]} = + FB_AD[23:16]; + assign {WERTE7__d[44], WERTE6__d[44], WERTE5__d[44], WERTE4__d[44], + WERTE3__d[44], WERTE2__d[44], WERTE1__d[44], WERTE0__d[44]} = + FB_AD[23:16]; + assign {WERTE7__d[45], WERTE6__d[45], WERTE5__d[45], WERTE4__d[45], + WERTE3__d[45], WERTE2__d[45], WERTE1__d[45], WERTE0__d[45]} = + FB_AD[23:16]; + assign {WERTE7__d[46], WERTE6__d[46], WERTE5__d[46], WERTE4__d[46], + WERTE3__d[46], WERTE2__d[46], WERTE1__d[46], WERTE0__d[46]} = + FB_AD[23:16]; + assign {WERTE7__d[47], WERTE6__d[47], WERTE5__d[47], WERTE4__d[47], + WERTE3__d[47], WERTE2__d[47], WERTE1__d[47], WERTE0__d[47]} = + FB_AD[23:16]; + assign {WERTE7__d[48], WERTE6__d[48], WERTE5__d[48], WERTE4__d[48], + WERTE3__d[48], WERTE2__d[48], WERTE1__d[48], WERTE0__d[48]} = + FB_AD[23:16]; + assign {WERTE7__d[49], WERTE6__d[49], WERTE5__d[49], WERTE4__d[49], + WERTE3__d[49], WERTE2__d[49], WERTE1__d[49], WERTE0__d[49]} = + FB_AD[23:16]; + assign {WERTE7__d[50], WERTE6__d[50], WERTE5__d[50], WERTE4__d[50], + WERTE3__d[50], WERTE2__d[50], WERTE1__d[50], WERTE0__d[50]} = + FB_AD[23:16]; + assign {WERTE7__d[51], WERTE6__d[51], WERTE5__d[51], WERTE4__d[51], + WERTE3__d[51], WERTE2__d[51], WERTE1__d[51], WERTE0__d[51]} = + FB_AD[23:16]; + assign {WERTE7__d[52], WERTE6__d[52], WERTE5__d[52], WERTE4__d[52], + WERTE3__d[52], WERTE2__d[52], WERTE1__d[52], WERTE0__d[52]} = + FB_AD[23:16]; + assign {WERTE7__d[53], WERTE6__d[53], WERTE5__d[53], WERTE4__d[53], + WERTE3__d[53], WERTE2__d[53], WERTE1__d[53], WERTE0__d[53]} = + FB_AD[23:16]; + assign {WERTE7__d[54], WERTE6__d[54], WERTE5__d[54], WERTE4__d[54], + WERTE3__d[54], WERTE2__d[54], WERTE1__d[54], WERTE0__d[54]} = + FB_AD[23:16]; + assign {WERTE7__d[55], WERTE6__d[55], WERTE5__d[55], WERTE4__d[55], + WERTE3__d[55], WERTE2__d[55], WERTE1__d[55], WERTE0__d[55]} = + FB_AD[23:16]; + assign {WERTE7__d[56], WERTE6__d[56], WERTE5__d[56], WERTE4__d[56], + WERTE3__d[56], WERTE2__d[56], WERTE1__d[56], WERTE0__d[56]} = + FB_AD[23:16]; + assign {WERTE7__d[57], WERTE6__d[57], WERTE5__d[57], WERTE4__d[57], + WERTE3__d[57], WERTE2__d[57], WERTE1__d[57], WERTE0__d[57]} = + FB_AD[23:16]; + assign {WERTE7__d[58], WERTE6__d[58], WERTE5__d[58], WERTE4__d[58], + WERTE3__d[58], WERTE2__d[58], WERTE1__d[58], WERTE0__d[58]} = + FB_AD[23:16]; + assign {WERTE7__d[59], WERTE6__d[59], WERTE5__d[59], WERTE4__d[59], + WERTE3__d[59], WERTE2__d[59], WERTE1__d[59], WERTE0__d[59]} = + FB_AD[23:16]; + assign {WERTE7__d[60], WERTE6__d[60], WERTE5__d[60], WERTE4__d[60], + WERTE3__d[60], WERTE2__d[60], WERTE1__d[60], WERTE0__d[60]} = + FB_AD[23:16]; + assign {WERTE7__d[61], WERTE6__d[61], WERTE5__d[61], WERTE4__d[61], + WERTE3__d[61], WERTE2__d[61], WERTE1__d[61], WERTE0__d[61]} = + FB_AD[23:16]; + assign {WERTE7__d[62], WERTE6__d[62], WERTE5__d[62], WERTE4__d[62], + WERTE3__d[62], WERTE2__d[62], WERTE1__d[62], WERTE0__d[62]} = + FB_AD[23:16]; + assign {WERTE7__d[63], WERTE6__d[63], WERTE5__d[63], WERTE4__d[63], + WERTE3__d[63], WERTE2__d[63], WERTE1__d[63], WERTE0__d[63]} = + FB_AD[23:16]; + assign {WERTE7_0_ena_1, WERTE6_0_ena_1, WERTE5_0_ena_1, WERTE4_0_ena_1, + WERTE3_0_ena_1, WERTE2_0_ena_1, WERTE1_0_ena_1, WERTE0_0_ena_1} = + {8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign WERTE0_1_ena_ctrl = RTC_ADR_q == 6'b00_0001 & UHR_DS & (!nFB_WR); + assign {WERTE7_2_ena_1, WERTE6_2_ena_1, WERTE5_2_ena_1, WERTE4_2_ena_1, + WERTE3_2_ena_1, WERTE2_2_ena_1, WERTE1_2_ena_1, WERTE0_2_ena_1} = + {8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign WERTE0_3_ena_ctrl = RTC_ADR_q == 6'b00_0011 & UHR_DS & (!nFB_WR); + assign {WERTE7_4_ena_1, WERTE6_4_ena_1, WERTE5_4_ena_1, WERTE4_4_ena_1, + WERTE3_4_ena_1, WERTE2_4_ena_1, WERTE1_4_ena_1, WERTE0_4_ena_1} = + {8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign WERTE0_5_ena_ctrl = RTC_ADR_q == 6'b00_0101 & UHR_DS & (!nFB_WR); + assign {WERTE7_6_ena_1, WERTE6_6_ena_1, WERTE5_6_ena_1, WERTE4_6_ena_1, + WERTE3_6_ena_1, WERTE2_6_ena_1, WERTE1_6_ena_1, WERTE0_6_ena_1} = + {8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_7_ena_1, WERTE6_7_ena_1, WERTE5_7_ena_1, WERTE4_7_ena_1, + WERTE3_7_ena_1, WERTE2_7_ena_1, WERTE1_7_ena_1, WERTE0_7_ena_1} = + {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_8_ena_1, WERTE6_8_ena_1, WERTE5_8_ena_1, WERTE4_8_ena_1, + WERTE3_8_ena_1, WERTE2_8_ena_1, WERTE1_8_ena_1, WERTE0_8_ena_1} = + {8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_9_ena_1, WERTE6_9_ena_1, WERTE5_9_ena_1, WERTE4_9_ena_1, + WERTE3_9_ena_1, WERTE2_9_ena_1, WERTE1_9_ena_1, WERTE0_9_ena_1} = + {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign WERTE0_10_ena_ctrl = RTC_ADR_q == 6'b00_1010 & UHR_DS & (!nFB_WR); + assign WERTE0_11_ena_ctrl = RTC_ADR_q == 6'b00_1011 & UHR_DS & (!nFB_WR); + assign WERTE0_12_ena_ctrl = RTC_ADR_q == 6'b00_1100 & UHR_DS & (!nFB_WR); + assign {WERTE7_13_ena, WERTE6_13_ena, WERTE5_13_ena, WERTE4_13_ena, + WERTE3_13_ena, WERTE2_13_ena, WERTE1_13_ena, WERTE0_13_ena_1} = + {8{RTC_ADR_q == 6'b00_1101}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign WERTE0_14_ena_ctrl = RTC_ADR_q == 6'b00_1110 & UHR_DS & (!nFB_WR); + assign WERTE0_15_ena_ctrl = RTC_ADR_q == 6'b00_1111 & UHR_DS & (!nFB_WR); + assign WERTE0_16_ena_ctrl = RTC_ADR_q == 6'b01_0000 & UHR_DS & (!nFB_WR); + assign WERTE0_17_ena_ctrl = RTC_ADR_q == 6'b01_0001 & UHR_DS & (!nFB_WR); + assign WERTE0_18_ena_ctrl = RTC_ADR_q == 6'b01_0010 & UHR_DS & (!nFB_WR); + assign WERTE0_19_ena_ctrl = RTC_ADR_q == 6'b01_0011 & UHR_DS & (!nFB_WR); + assign WERTE0_20_ena_ctrl = RTC_ADR_q == 6'b01_0100 & UHR_DS & (!nFB_WR); + assign WERTE0_21_ena_ctrl = RTC_ADR_q == 6'b01_0101 & UHR_DS & (!nFB_WR); + assign WERTE0_22_ena_ctrl = RTC_ADR_q == 6'b01_0110 & UHR_DS & (!nFB_WR); + assign WERTE0_23_ena_ctrl = RTC_ADR_q == 6'b01_0111 & UHR_DS & (!nFB_WR); + assign WERTE0_24_ena_ctrl = RTC_ADR_q == 6'b01_1000 & UHR_DS & (!nFB_WR); + assign WERTE0_25_ena_ctrl = RTC_ADR_q == 6'b01_1001 & UHR_DS & (!nFB_WR); + assign WERTE0_26_ena_ctrl = RTC_ADR_q == 6'b01_1010 & UHR_DS & (!nFB_WR); + assign WERTE0_27_ena_ctrl = RTC_ADR_q == 6'b01_1011 & UHR_DS & (!nFB_WR); + assign WERTE0_28_ena_ctrl = RTC_ADR_q == 6'b01_1100 & UHR_DS & (!nFB_WR); + assign WERTE0_29_ena_ctrl = RTC_ADR_q == 6'b01_1101 & UHR_DS & (!nFB_WR); + assign WERTE0_30_ena_ctrl = RTC_ADR_q == 6'b01_1110 & UHR_DS & (!nFB_WR); + assign WERTE0_31_ena_ctrl = RTC_ADR_q == 6'b01_1111 & UHR_DS & (!nFB_WR); + assign WERTE0_32_ena_ctrl = RTC_ADR_q == 6'b10_0000 & UHR_DS & (!nFB_WR); + assign WERTE0_33_ena_ctrl = RTC_ADR_q == 6'b10_0001 & UHR_DS & (!nFB_WR); + assign WERTE0_34_ena_ctrl = RTC_ADR_q == 6'b10_0010 & UHR_DS & (!nFB_WR); + assign WERTE0_35_ena_ctrl = RTC_ADR_q == 6'b10_0011 & UHR_DS & (!nFB_WR); + assign WERTE0_36_ena_ctrl = RTC_ADR_q == 6'b10_0100 & UHR_DS & (!nFB_WR); + assign WERTE0_37_ena_ctrl = RTC_ADR_q == 6'b10_0101 & UHR_DS & (!nFB_WR); + assign WERTE0_38_ena_ctrl = RTC_ADR_q == 6'b10_0110 & UHR_DS & (!nFB_WR); + assign WERTE0_39_ena_ctrl = RTC_ADR_q == 6'b10_0111 & UHR_DS & (!nFB_WR); + assign WERTE0_40_ena_ctrl = RTC_ADR_q == 6'b10_1000 & UHR_DS & (!nFB_WR); + assign WERTE0_41_ena_ctrl = RTC_ADR_q == 6'b10_1001 & UHR_DS & (!nFB_WR); + assign WERTE0_42_ena_ctrl = RTC_ADR_q == 6'b10_1010 & UHR_DS & (!nFB_WR); + assign WERTE0_43_ena_ctrl = RTC_ADR_q == 6'b10_1011 & UHR_DS & (!nFB_WR); + assign WERTE0_44_ena_ctrl = RTC_ADR_q == 6'b10_1100 & UHR_DS & (!nFB_WR); + assign WERTE0_45_ena_ctrl = RTC_ADR_q == 6'b10_1101 & UHR_DS & (!nFB_WR); + assign WERTE0_46_ena_ctrl = RTC_ADR_q == 6'b10_1110 & UHR_DS & (!nFB_WR); + assign WERTE0_47_ena_ctrl = RTC_ADR_q == 6'b10_1111 & UHR_DS & (!nFB_WR); + assign WERTE0_48_ena_ctrl = RTC_ADR_q == 6'b11_0000 & UHR_DS & (!nFB_WR); + assign WERTE0_49_ena_ctrl = RTC_ADR_q == 6'b11_0001 & UHR_DS & (!nFB_WR); + assign WERTE0_50_ena_ctrl = RTC_ADR_q == 6'b11_0010 & UHR_DS & (!nFB_WR); + assign WERTE0_51_ena_ctrl = RTC_ADR_q == 6'b11_0011 & UHR_DS & (!nFB_WR); + assign WERTE0_52_ena_ctrl = RTC_ADR_q == 6'b11_0100 & UHR_DS & (!nFB_WR); + assign WERTE0_53_ena_ctrl = RTC_ADR_q == 6'b11_0101 & UHR_DS & (!nFB_WR); + assign WERTE0_54_ena_ctrl = RTC_ADR_q == 6'b11_0110 & UHR_DS & (!nFB_WR); + assign WERTE0_55_ena_ctrl = RTC_ADR_q == 6'b11_0111 & UHR_DS & (!nFB_WR); + assign WERTE0_56_ena_ctrl = RTC_ADR_q == 6'b11_1000 & UHR_DS & (!nFB_WR); + assign WERTE0_57_ena_ctrl = RTC_ADR_q == 6'b11_1001 & UHR_DS & (!nFB_WR); + assign WERTE0_58_ena_ctrl = RTC_ADR_q == 6'b11_1010 & UHR_DS & (!nFB_WR); + assign WERTE0_59_ena_ctrl = RTC_ADR_q == 6'b11_1011 & UHR_DS & (!nFB_WR); + assign WERTE0_60_ena_ctrl = RTC_ADR_q == 6'b11_1100 & UHR_DS & (!nFB_WR); + assign WERTE0_61_ena_ctrl = RTC_ADR_q == 6'b11_1101 & UHR_DS & (!nFB_WR); + assign WERTE0_62_ena_ctrl = RTC_ADR_q == 6'b11_1110 & UHR_DS & (!nFB_WR); + assign WERTE0_63_ena_ctrl = RTC_ADR_q == 6'b11_1111 & UHR_DS & (!nFB_WR); + assign PIC_INT_SYNC0_clk_ctrl = MAIN_CLK; + assign PIC_INT_SYNC_d[0] = PIC_INT; + assign PIC_INT_SYNC_d[1] = PIC_INT_SYNC_q[0]; + assign PIC_INT_SYNC_d[2] = (!PIC_INT_SYNC_q[1]) & PIC_INT_SYNC_q[0]; + assign UPDATE_ON_1 = !WERTE7__q[11]; + +// KEIN UIP + assign WERTE6_10_clrn = gnd; + +// UPDATE ON OFF + assign UPDATE_ON_2 = !WERTE7__q[11]; + +// IMMER BINARY + assign WERTE2_11_d_2 = vcc; + +// IMMER 24H FORMAT + assign WERTE1_11_d_2 = vcc; + +// IMMER SOMMERZEITKORREKTUR + assign WERTE0_11_d_2 = vcc; + +// IMMER RICHTIG + assign WERTE7_13_d_2 = vcc; + +// SOMMER WINTERZEIT: BIT 0 IM REGISTER D IST DIE INFORMATION OB SOMMERZEIT IST (BRAUCHT MAN FÜR RÜCKSCHALTUNG) +// LETZTER SONNTAG IM APRIL + assign SOMMERZEIT = {WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], + WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} == + 8'b0000_0001 & {WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], + WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} + == 8'b0000_0001 & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_0100 & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], + WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + > 8'b0001_0111; + assign WERTE0_13_d_2 = SOMMERZEIT; + assign WERTE0_13_ena_2 = INC_STD & (SOMMERZEIT | WINTERZEIT); + +// LETZTER SONNTAG IM OKTOBER + assign WINTERZEIT = {WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], + WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} == + 8'b0000_0001 & {WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], + WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} + == 8'b0000_0001 & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_1010 & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], + WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + > 8'b0001_1000 & WERTE0__q[13]; + +// ACHTELSEKUNDEN + assign ACHTELSEKUNDEN0_clk_ctrl = MAIN_CLK; + assign ACHTELSEKUNDEN_d = ACHTELSEKUNDEN_q + 3'b001; + assign ACHTELSEKUNDEN0_ena_ctrl = PIC_INT_SYNC_q[2] & UPDATE_ON; + +// SEKUNDEN + assign INC_SEC = ACHTELSEKUNDEN_q == 3'b111 & PIC_INT_SYNC_q[2] & UPDATE_ON; + +// SEKUNDEN ZÄHLEN BIS 59 + assign {WERTE7_0_d_2, WERTE6_0_d_2, WERTE5_0_d_2, WERTE4_0_d_2, + WERTE3_0_d_2, WERTE2_0_d_2, WERTE1_0_d_2, WERTE0_0_d_2} = + ({WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], WERTE4__q[0], + WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} + + 8'b0000_0001) & {8{{WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], + WERTE4__q[0], WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} + != 8'b0011_1011}} & (~({8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + assign {WERTE7_0_ena_2, WERTE6_0_ena_2, WERTE5_0_ena_2, WERTE4_0_ena_2, + WERTE3_0_ena_2, WERTE2_0_ena_2, WERTE1_0_ena_2, WERTE0_0_ena_2} = + {8{INC_SEC}} & (~({8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + +// MINUTEN + assign INC_MIN = INC_SEC & {WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], + WERTE4__q[0], WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} + == 8'b0011_1011; + +// MINUTEN ZÄHLEN BIS 59 + assign {WERTE7_2_d_2, WERTE6_2_d_2, WERTE5_2_d_2, WERTE4_2_d_2, + WERTE3_2_d_2, WERTE2_2_d_2, WERTE1_2_d_2, WERTE0_2_d_2} = + ({WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], WERTE4__q[2], + WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} + + 8'b0000_0001) & {8{{WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], + WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} + != 8'b0011_1011}} & (~({8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + assign {WERTE7_2_ena_2, WERTE6_2_ena_2, WERTE5_2_ena_2, WERTE4_2_ena_2, + WERTE3_2_ena_2, WERTE2_2_ena_2, WERTE1_2_ena_2, WERTE0_2_ena_2} = + {8{INC_MIN}} & (~({8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + +// STUNDEN + assign INC_STD = INC_MIN & {WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], + WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} + == 8'b0011_1011; + +// STUNDEN ZÄHLEN BIS 23 + assign {WERTE7_4_d_2, WERTE6_4_d_2, WERTE5_4_d_2, WERTE4_4_d_2, + WERTE3_4_d_2, WERTE2_4_d_2, WERTE1_4_d_2, WERTE0_4_d_2} = + (({WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], + WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} + + 8'b0000_0001) + (8'b0000_0001 & {8{SOMMERZEIT}})) & {8{{WERTE7__q[4], + WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], + WERTE1__q[4], WERTE0__q[4]} != 8'b0001_0111}} & (~({8{RTC_ADR_q == + 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}})); + +// EINE STUNDE AUSLASSEN WENN WINTERZEITUMSCHALTUNG UND NOCH SOMMERZEIT + assign {WERTE7_4_ena_2, WERTE6_4_ena_2, WERTE5_4_ena_2, WERTE4_4_ena_2, + WERTE3_4_ena_2, WERTE2_4_ena_2, WERTE1_4_ena_2, WERTE0_4_ena_2} = + {8{INC_STD}} & (~({8{WINTERZEIT}} & {8{WERTE0__q[12]}})) & + (~({8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}})); + +// WOCHENTAG UND TAG + assign INC_TAG = INC_STD & {WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], + WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} + == 8'b0001_0111; + +// WOCHENTAG ZÄHLEN BIS 7 +// DANN BEI 1 WEITER + assign {WERTE7_6_d_2, WERTE6_6_d_2, WERTE5_6_d_2, WERTE4_6_d_2, + WERTE3_6_d_2, WERTE2_6_d_2, WERTE1_6_d_2, WERTE0_6_d_2} = + (({WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], + WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} + + 8'b0000_0001) & {8{{WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], + WERTE4__q[6], WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} + != 8'b0000_0111}} & (~({8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & + {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[6], WERTE6__q[6], + WERTE5__q[6], WERTE4__q[6], WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], + WERTE0__q[6]} == 8'b0000_0111}} & (~({8{RTC_ADR_q == 6'b00_0110}} & + {8{UHR_DS}} & {8{!nFB_WR}}))); + assign {WERTE7_6_ena_2, WERTE6_6_ena_2, WERTE5_6_ena_2, WERTE4_6_ena_2, + WERTE3_6_ena_2, WERTE2_6_ena_2, WERTE1_6_ena_2, WERTE0_6_ena_2} = + {8{INC_TAG}} & (~({8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + assign ANZAHL_TAGE_DES_MONATS = (8'b0001_1111 & ({8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0001}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0011}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0101}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0111}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1000}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1010}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1100}})) | (8'b0001_1110 & + ({8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], + WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} == + 8'b0000_0100}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_0110}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_1001}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_1011}})) | (8'b0001_1101 & {8{{WERTE7__q[8], WERTE6__q[8], + WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], + WERTE0__q[8]} == 8'b0000_0010}} & {8{{WERTE1__q[9], WERTE0__q[9]} == + 2'b00}}) | (8'b0001_1100 & {8{{WERTE7__q[8], WERTE6__q[8], + WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], + WERTE0__q[8]} == 8'b0000_0010}} & {8{{WERTE1__q[9], WERTE0__q[9]} != + 2'b00}}); + +// TAG ZÄHLEN BIS MONATSENDE +// DANN BEI 1 WEITER + assign {WERTE7_7_d_2, WERTE6_7_d_2, WERTE5_7_d_2, WERTE4_7_d_2, + WERTE3_7_d_2, WERTE2_7_d_2, WERTE1_7_d_2, WERTE0_7_d_2} = + (({WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], WERTE4__q[7], + WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + + 8'b0000_0001) & {8{{WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], + WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + != ANZAHL_TAGE_DES_MONATS}} & (~({8{RTC_ADR_q == 6'b00_0111}} & + {8{UHR_DS}} & {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[7], + WERTE6__q[7], WERTE5__q[7], WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], + WERTE1__q[7], WERTE0__q[7]} == ANZAHL_TAGE_DES_MONATS}} & + (~({8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}))); + assign {WERTE7_7_ena_2, WERTE6_7_ena_2, WERTE5_7_ena_2, WERTE4_7_ena_2, + WERTE3_7_ena_2, WERTE2_7_ena_2, WERTE1_7_ena_2, WERTE0_7_ena_2} = + {8{INC_TAG}} & (~({8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + +// MONATE + assign INC_MONAT = INC_TAG & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], + WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + == ANZAHL_TAGE_DES_MONATS; + +// MONATE ZÄHLEN BIS 12 +// DANN BEI 1 WEITER + assign {WERTE7_8_d_2, WERTE6_8_d_2, WERTE5_8_d_2, WERTE4_8_d_2, + WERTE3_8_d_2, WERTE2_8_d_2, WERTE1_8_d_2, WERTE0_8_d_2} = + (({WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], + WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + + 8'b0000_0001) & {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + != 8'b0000_1100}} & (~({8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & + {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[8], WERTE6__q[8], + WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], + WERTE0__q[8]} == 8'b0000_1100}} & (~({8{RTC_ADR_q == 6'b00_1000}} & + {8{UHR_DS}} & {8{!nFB_WR}}))); + assign {WERTE7_8_ena_2, WERTE6_8_ena_2, WERTE5_8_ena_2, WERTE4_8_ena_2, + WERTE3_8_ena_2, WERTE2_8_ena_2, WERTE1_8_ena_2, WERTE0_8_ena_2} = + {8{INC_MONAT}} & (~({8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + +// JAHR + assign INC_JAHR = INC_MONAT & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_1100; + +// JAHRE ZÄHLEN BIS 99 + assign {WERTE7_9_d_2, WERTE6_9_d_2, WERTE5_9_d_2, WERTE4_9_d_2, + WERTE3_9_d_2, WERTE2_9_d_2, WERTE1_9_d_2, WERTE0_9_d_2} = + ({WERTE7__q[9], WERTE6__q[9], WERTE5__q[9], WERTE4__q[9], + WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], WERTE0__q[9]} + + 8'b0000_0001) & {8{{WERTE7__q[9], WERTE6__q[9], WERTE5__q[9], + WERTE4__q[9], WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], WERTE0__q[9]} + != 8'b0110_0011}} & (~({8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + assign {WERTE7_9_ena_2, WERTE6_9_ena_2, WERTE5_9_ena_2, WERTE4_9_ena_2, + WERTE3_9_ena_2, WERTE2_9_ena_2, WERTE1_9_ena_2, WERTE0_9_ena_2} = + {8{INC_JAHR}} & (~({8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + +// TRISTATE OUTPUT + assign u0_data = ({8{INT_CTR_CS}} & INT_CTR_q[31:24]) | ({8{INT_ENA_CS}} & + INT_ENA_q[31:24]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[31:24]) | + ({8{INT_CLEAR_CS}} & INT_IN[31:24]) | ({8{ACP_CONF_CS}} & + ACP_CONF_q[31:24]); + assign u0_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS + | ACP_CONF_CS) & (!nFB_OE); + assign FB_AD[31:24] = u0_tridata; + assign u1_data = ({WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], WERTE4__q[0], + WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} & {8{RTC_ADR_q + == 6'b00_0000}} & {8{UHR_DS}}) | ({WERTE7__q[1], WERTE6__q[1], + WERTE5__q[1], WERTE4__q[1], WERTE3__q[1], WERTE2__q[1], WERTE1__q[1], + WERTE0__q[1]} & {8{RTC_ADR_q == 6'b00_0001}} & {8{UHR_DS}}) | + ({WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], WERTE4__q[2], + WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} & {8{RTC_ADR_q + == 6'b00_0010}} & {8{UHR_DS}}) | ({WERTE7__q[3], WERTE6__q[3], + WERTE5__q[3], WERTE4__q[3], WERTE3__q[3], WERTE2__q[3], WERTE1__q[3], + WERTE0__q[3]} & {8{RTC_ADR_q == 6'b00_0011}} & {8{UHR_DS}}) | + ({WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], + WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} & {8{RTC_ADR_q + == 6'b00_0100}} & {8{UHR_DS}}) | ({WERTE7__q[5], WERTE6__q[5], + WERTE5__q[5], WERTE4__q[5], WERTE3__q[5], WERTE2__q[5], WERTE1__q[5], + WERTE0__q[5]} & {8{RTC_ADR_q == 6'b00_0101}} & {8{UHR_DS}}) | + ({WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], + WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} & {8{RTC_ADR_q + == 6'b00_0110}} & {8{UHR_DS}}) | ({WERTE7__q[7], WERTE6__q[7], + WERTE5__q[7], WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], + WERTE0__q[7]} & {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}}) | + ({WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], + WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} & {8{RTC_ADR_q + == 6'b00_1000}} & {8{UHR_DS}}) | ({WERTE7__q[9], WERTE6__q[9], + WERTE5__q[9], WERTE4__q[9], WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], + WERTE0__q[9]} & {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}}) | + ({WERTE7__q[10], WERTE6__q[10], WERTE5__q[10], WERTE4__q[10], + WERTE3__q[10], WERTE2__q[10], WERTE1__q[10], WERTE0__q[10]} & + {8{RTC_ADR_q == 6'b00_1010}} & {8{UHR_DS}}) | ({WERTE7__q[11], + WERTE6__q[11], WERTE5__q[11], WERTE4__q[11], WERTE3__q[11], + WERTE2__q[11], WERTE1__q[11], WERTE0__q[11]} & {8{RTC_ADR_q == + 6'b00_1011}} & {8{UHR_DS}}) | ({WERTE7__q[12], WERTE6__q[12], + WERTE5__q[12], WERTE4__q[12], WERTE3__q[12], WERTE2__q[12], + WERTE1__q[12], WERTE0__q[12]} & {8{RTC_ADR_q == 6'b00_1100}} & + {8{UHR_DS}}) | ({WERTE7__q[13], WERTE6__q[13], WERTE5__q[13], + WERTE4__q[13], WERTE3__q[13], WERTE2__q[13], WERTE1__q[13], + WERTE0__q[13]} & {8{RTC_ADR_q == 6'b00_1101}} & {8{UHR_DS}}) | + ({WERTE7__q[14], WERTE6__q[14], WERTE5__q[14], WERTE4__q[14], + WERTE3__q[14], WERTE2__q[14], WERTE1__q[14], WERTE0__q[14]} & + {8{RTC_ADR_q == 6'b00_1110}} & {8{UHR_DS}}) | ({WERTE7__q[15], + WERTE6__q[15], WERTE5__q[15], WERTE4__q[15], WERTE3__q[15], + WERTE2__q[15], WERTE1__q[15], WERTE0__q[15]} & {8{RTC_ADR_q == + 6'b00_1111}} & {8{UHR_DS}}) | ({WERTE7__q[16], WERTE6__q[16], + WERTE5__q[16], WERTE4__q[16], WERTE3__q[16], WERTE2__q[16], + WERTE1__q[16], WERTE0__q[16]} & {8{RTC_ADR_q == 6'b01_0000}} & + {8{UHR_DS}}) | ({WERTE7__q[17], WERTE6__q[17], WERTE5__q[17], + WERTE4__q[17], WERTE3__q[17], WERTE2__q[17], WERTE1__q[17], + WERTE0__q[17]} & {8{RTC_ADR_q == 6'b01_0001}} & {8{UHR_DS}}) | + ({WERTE7__q[18], WERTE6__q[18], WERTE5__q[18], WERTE4__q[18], + WERTE3__q[18], WERTE2__q[18], WERTE1__q[18], WERTE0__q[18]} & + {8{RTC_ADR_q == 6'b01_0010}} & {8{UHR_DS}}) | ({WERTE7__q[19], + WERTE6__q[19], WERTE5__q[19], WERTE4__q[19], WERTE3__q[19], + WERTE2__q[19], WERTE1__q[19], WERTE0__q[19]} & {8{RTC_ADR_q == + 6'b01_0011}} & {8{UHR_DS}}) | ({WERTE7__q[20], WERTE6__q[20], + WERTE5__q[20], WERTE4__q[20], WERTE3__q[20], WERTE2__q[20], + WERTE1__q[20], WERTE0__q[20]} & {8{RTC_ADR_q == 6'b01_0100}} & + {8{UHR_DS}}) | ({WERTE7__q[21], WERTE6__q[21], WERTE5__q[21], + WERTE4__q[21], WERTE3__q[21], WERTE2__q[21], WERTE1__q[21], + WERTE0__q[21]} & {8{RTC_ADR_q == 6'b01_0101}} & {8{UHR_DS}}) | + ({WERTE7__q[22], WERTE6__q[22], WERTE5__q[22], WERTE4__q[22], + WERTE3__q[22], WERTE2__q[22], WERTE1__q[22], WERTE0__q[22]} & + {8{RTC_ADR_q == 6'b01_0110}} & {8{UHR_DS}}) | ({WERTE7__q[23], + WERTE6__q[23], WERTE5__q[23], WERTE4__q[23], WERTE3__q[23], + WERTE2__q[23], WERTE1__q[23], WERTE0__q[23]} & {8{RTC_ADR_q == + 6'b01_0111}} & {8{UHR_DS}}) | ({WERTE7__q[24], WERTE6__q[24], + WERTE5__q[24], WERTE4__q[24], WERTE3__q[24], WERTE2__q[24], + WERTE1__q[24], WERTE0__q[24]} & {8{RTC_ADR_q == 6'b01_1000}} & + {8{UHR_DS}}) | ({WERTE7__q[25], WERTE6__q[25], WERTE5__q[25], + WERTE4__q[25], WERTE3__q[25], WERTE2__q[25], WERTE1__q[25], + WERTE0__q[25]} & {8{RTC_ADR_q == 6'b01_1001}} & {8{UHR_DS}}) | + ({WERTE7__q[26], WERTE6__q[26], WERTE5__q[26], WERTE4__q[26], + WERTE3__q[26], WERTE2__q[26], WERTE1__q[26], WERTE0__q[26]} & + {8{RTC_ADR_q == 6'b01_1010}} & {8{UHR_DS}}) | ({WERTE7__q[27], + WERTE6__q[27], WERTE5__q[27], WERTE4__q[27], WERTE3__q[27], + WERTE2__q[27], WERTE1__q[27], WERTE0__q[27]} & {8{RTC_ADR_q == + 6'b01_1011}} & {8{UHR_DS}}) | ({WERTE7__q[28], WERTE6__q[28], + WERTE5__q[28], WERTE4__q[28], WERTE3__q[28], WERTE2__q[28], + WERTE1__q[28], WERTE0__q[28]} & {8{RTC_ADR_q == 6'b01_1100}} & + {8{UHR_DS}}) | ({WERTE7__q[29], WERTE6__q[29], WERTE5__q[29], + WERTE4__q[29], WERTE3__q[29], WERTE2__q[29], WERTE1__q[29], + WERTE0__q[29]} & {8{RTC_ADR_q == 6'b01_1101}} & {8{UHR_DS}}) | + ({WERTE7__q[30], WERTE6__q[30], WERTE5__q[30], WERTE4__q[30], + WERTE3__q[30], WERTE2__q[30], WERTE1__q[30], WERTE0__q[30]} & + {8{RTC_ADR_q == 6'b01_1110}} & {8{UHR_DS}}) | ({WERTE7__q[31], + WERTE6__q[31], WERTE5__q[31], WERTE4__q[31], WERTE3__q[31], + WERTE2__q[31], WERTE1__q[31], WERTE0__q[31]} & {8{RTC_ADR_q == + 6'b01_1111}} & {8{UHR_DS}}) | ({WERTE7__q[32], WERTE6__q[32], + WERTE5__q[32], WERTE4__q[32], WERTE3__q[32], WERTE2__q[32], + WERTE1__q[32], WERTE0__q[32]} & {8{RTC_ADR_q == 6'b10_0000}} & + {8{UHR_DS}}) | ({WERTE7__q[33], WERTE6__q[33], WERTE5__q[33], + WERTE4__q[33], WERTE3__q[33], WERTE2__q[33], WERTE1__q[33], + WERTE0__q[33]} & {8{RTC_ADR_q == 6'b10_0001}} & {8{UHR_DS}}) | + ({WERTE7__q[34], WERTE6__q[34], WERTE5__q[34], WERTE4__q[34], + WERTE3__q[34], WERTE2__q[34], WERTE1__q[34], WERTE0__q[34]} & + {8{RTC_ADR_q == 6'b10_0010}} & {8{UHR_DS}}) | ({WERTE7__q[35], + WERTE6__q[35], WERTE5__q[35], WERTE4__q[35], WERTE3__q[35], + WERTE2__q[35], WERTE1__q[35], WERTE0__q[35]} & {8{RTC_ADR_q == + 6'b10_0011}} & {8{UHR_DS}}) | ({WERTE7__q[36], WERTE6__q[36], + WERTE5__q[36], WERTE4__q[36], WERTE3__q[36], WERTE2__q[36], + WERTE1__q[36], WERTE0__q[36]} & {8{RTC_ADR_q == 6'b10_0100}} & + {8{UHR_DS}}) | ({WERTE7__q[37], WERTE6__q[37], WERTE5__q[37], + WERTE4__q[37], WERTE3__q[37], WERTE2__q[37], WERTE1__q[37], + WERTE0__q[37]} & {8{RTC_ADR_q == 6'b10_0101}} & {8{UHR_DS}}) | + ({WERTE7__q[38], WERTE6__q[38], WERTE5__q[38], WERTE4__q[38], + WERTE3__q[38], WERTE2__q[38], WERTE1__q[38], WERTE0__q[38]} & + {8{RTC_ADR_q == 6'b10_0110}} & {8{UHR_DS}}) | ({WERTE7__q[39], + WERTE6__q[39], WERTE5__q[39], WERTE4__q[39], WERTE3__q[39], + WERTE2__q[39], WERTE1__q[39], WERTE0__q[39]} & {8{RTC_ADR_q == + 6'b10_0111}} & {8{UHR_DS}}) | ({WERTE7__q[40], WERTE6__q[40], + WERTE5__q[40], WERTE4__q[40], WERTE3__q[40], WERTE2__q[40], + WERTE1__q[40], WERTE0__q[40]} & {8{RTC_ADR_q == 6'b10_1000}} & + {8{UHR_DS}}) | ({WERTE7__q[41], WERTE6__q[41], WERTE5__q[41], + WERTE4__q[41], WERTE3__q[41], WERTE2__q[41], WERTE1__q[41], + WERTE0__q[41]} & {8{RTC_ADR_q == 6'b10_1001}} & {8{UHR_DS}}) | + ({WERTE7__q[42], WERTE6__q[42], WERTE5__q[42], WERTE4__q[42], + WERTE3__q[42], WERTE2__q[42], WERTE1__q[42], WERTE0__q[42]} & + {8{RTC_ADR_q == 6'b10_1010}} & {8{UHR_DS}}) | ({WERTE7__q[43], + WERTE6__q[43], WERTE5__q[43], WERTE4__q[43], WERTE3__q[43], + WERTE2__q[43], WERTE1__q[43], WERTE0__q[43]} & {8{RTC_ADR_q == + 6'b10_1011}} & {8{UHR_DS}}) | ({WERTE7__q[44], WERTE6__q[44], + WERTE5__q[44], WERTE4__q[44], WERTE3__q[44], WERTE2__q[44], + WERTE1__q[44], WERTE0__q[44]} & {8{RTC_ADR_q == 6'b10_1100}} & + {8{UHR_DS}}) | ({WERTE7__q[45], WERTE6__q[45], WERTE5__q[45], + WERTE4__q[45], WERTE3__q[45], WERTE2__q[45], WERTE1__q[45], + WERTE0__q[45]} & {8{RTC_ADR_q == 6'b10_1101}} & {8{UHR_DS}}) | + ({WERTE7__q[46], WERTE6__q[46], WERTE5__q[46], WERTE4__q[46], + WERTE3__q[46], WERTE2__q[46], WERTE1__q[46], WERTE0__q[46]} & + {8{RTC_ADR_q == 6'b10_1110}} & {8{UHR_DS}}) | ({WERTE7__q[47], + WERTE6__q[47], WERTE5__q[47], WERTE4__q[47], WERTE3__q[47], + WERTE2__q[47], WERTE1__q[47], WERTE0__q[47]} & {8{RTC_ADR_q == + 6'b10_1111}} & {8{UHR_DS}}) | ({WERTE7__q[48], WERTE6__q[48], + WERTE5__q[48], WERTE4__q[48], WERTE3__q[48], WERTE2__q[48], + WERTE1__q[48], WERTE0__q[48]} & {8{RTC_ADR_q == 6'b11_0000}} & + {8{UHR_DS}}) | ({WERTE7__q[49], WERTE6__q[49], WERTE5__q[49], + WERTE4__q[49], WERTE3__q[49], WERTE2__q[49], WERTE1__q[49], + WERTE0__q[49]} & {8{RTC_ADR_q == 6'b11_0001}} & {8{UHR_DS}}) | + ({WERTE7__q[50], WERTE6__q[50], WERTE5__q[50], WERTE4__q[50], + WERTE3__q[50], WERTE2__q[50], WERTE1__q[50], WERTE0__q[50]} & + {8{RTC_ADR_q == 6'b11_0010}} & {8{UHR_DS}}) | ({WERTE7__q[51], + WERTE6__q[51], WERTE5__q[51], WERTE4__q[51], WERTE3__q[51], + WERTE2__q[51], WERTE1__q[51], WERTE0__q[51]} & {8{RTC_ADR_q == + 6'b11_0011}} & {8{UHR_DS}}) | ({WERTE7__q[52], WERTE6__q[52], + WERTE5__q[52], WERTE4__q[52], WERTE3__q[52], WERTE2__q[52], + WERTE1__q[52], WERTE0__q[52]} & {8{RTC_ADR_q == 6'b11_0100}} & + {8{UHR_DS}}) | ({WERTE7__q[53], WERTE6__q[53], WERTE5__q[53], + WERTE4__q[53], WERTE3__q[53], WERTE2__q[53], WERTE1__q[53], + WERTE0__q[53]} & {8{RTC_ADR_q == 6'b11_0101}} & {8{UHR_DS}}) | + ({WERTE7__q[54], WERTE6__q[54], WERTE5__q[54], WERTE4__q[54], + WERTE3__q[54], WERTE2__q[54], WERTE1__q[54], WERTE0__q[54]} & + {8{RTC_ADR_q == 6'b11_0110}} & {8{UHR_DS}}) | ({WERTE7__q[55], + WERTE6__q[55], WERTE5__q[55], WERTE4__q[55], WERTE3__q[55], + WERTE2__q[55], WERTE1__q[55], WERTE0__q[55]} & {8{RTC_ADR_q == + 6'b11_0111}} & {8{UHR_DS}}) | ({WERTE7__q[56], WERTE6__q[56], + WERTE5__q[56], WERTE4__q[56], WERTE3__q[56], WERTE2__q[56], + WERTE1__q[56], WERTE0__q[56]} & {8{RTC_ADR_q == 6'b11_1000}} & + {8{UHR_DS}}) | ({WERTE7__q[57], WERTE6__q[57], WERTE5__q[57], + WERTE4__q[57], WERTE3__q[57], WERTE2__q[57], WERTE1__q[57], + WERTE0__q[57]} & {8{RTC_ADR_q == 6'b11_1001}} & {8{UHR_DS}}) | + ({WERTE7__q[58], WERTE6__q[58], WERTE5__q[58], WERTE4__q[58], + WERTE3__q[58], WERTE2__q[58], WERTE1__q[58], WERTE0__q[58]} & + {8{RTC_ADR_q == 6'b11_1010}} & {8{UHR_DS}}) | ({WERTE7__q[59], + WERTE6__q[59], WERTE5__q[59], WERTE4__q[59], WERTE3__q[59], + WERTE2__q[59], WERTE1__q[59], WERTE0__q[59]} & {8{RTC_ADR_q == + 6'b11_1011}} & {8{UHR_DS}}) | ({WERTE7__q[60], WERTE6__q[60], + WERTE5__q[60], WERTE4__q[60], WERTE3__q[60], WERTE2__q[60], + WERTE1__q[60], WERTE0__q[60]} & {8{RTC_ADR_q == 6'b11_1100}} & + {8{UHR_DS}}) | ({WERTE7__q[61], WERTE6__q[61], WERTE5__q[61], + WERTE4__q[61], WERTE3__q[61], WERTE2__q[61], WERTE1__q[61], + WERTE0__q[61]} & {8{RTC_ADR_q == 6'b11_1101}} & {8{UHR_DS}}) | + ({WERTE7__q[62], WERTE6__q[62], WERTE5__q[62], WERTE4__q[62], + WERTE3__q[62], WERTE2__q[62], WERTE1__q[62], WERTE0__q[62]} & + {8{RTC_ADR_q == 6'b11_1110}} & {8{UHR_DS}}) | ({WERTE7__q[63], + WERTE6__q[63], WERTE5__q[63], WERTE4__q[63], WERTE3__q[63], + WERTE2__q[63], WERTE1__q[63], WERTE0__q[63]} & {8{RTC_ADR_q == + 6'b11_1111}} & {8{UHR_DS}}) | ({2'b00, RTC_ADR_q} & {8{UHR_AS}}) | + ({8{INT_CTR_CS}} & INT_CTR_q[23:16]) | ({8{INT_ENA_CS}} & + INT_ENA_q[23:16]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[23:16]) | + ({8{INT_CLEAR_CS}} & INT_IN[23:16]) | ({8{ACP_CONF_CS}} & + ACP_CONF_q[23:16]); + assign u1_enabledt = (UHR_DS | UHR_AS | INT_CTR_CS | INT_ENA_CS | + INT_LATCH_CS | INT_CLEAR_CS | ACP_CONF_CS) & (!nFB_OE); + assign FB_AD[23:16] = u1_tridata; + assign u2_data = ({8{INT_CTR_CS}} & INT_CTR_q[15:8]) | ({8{INT_ENA_CS}} & + INT_ENA_q[15:8]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[15:8]) | + ({8{INT_CLEAR_CS}} & INT_IN[15:8]) | ({8{ACP_CONF_CS}} & + ACP_CONF_q[15:8]); + assign u2_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS + | ACP_CONF_CS) & (!nFB_OE); + assign FB_AD[15:8] = u2_tridata; + assign u3_data = ({8{INT_CTR_CS}} & INT_CTR_q[7:0]) | ({8{INT_ENA_CS}} & + INT_ENA_q[7:0]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[7:0]) | + ({8{INT_CLEAR_CS}} & INT_IN[7:0]) | ({8{ACP_CONF_CS}} & + ACP_CONF_q[7:0]); + assign u3_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS + | ACP_CONF_CS) & (!nFB_OE); + assign FB_AD[7:0] = u3_tridata; + assign INT_HANDLER_TA = INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | + INT_CLEAR_CS; + + +// Assignments added to explicitly combine the +// effects of multiple drivers in the source + assign UPDATE_ON = UPDATE_ON_1 | UPDATE_ON_2; + assign WERTE0_0_ena = WERTE0_0_ena_1 | WERTE0_0_ena_2; + assign WERTE0_2_ena = WERTE0_2_ena_1 | WERTE0_2_ena_2; + assign WERTE0_4_ena = WERTE0_4_ena_1 | WERTE0_4_ena_2; + assign WERTE0_6_ena = WERTE0_6_ena_1 | WERTE0_6_ena_2; + assign WERTE0_7_ena = WERTE0_7_ena_1 | WERTE0_7_ena_2; + assign WERTE0_8_ena = WERTE0_8_ena_1 | WERTE0_8_ena_2; + assign WERTE0_9_ena = WERTE0_9_ena_1 | WERTE0_9_ena_2; + assign WERTE0_13_ena = WERTE0_13_ena_1 | WERTE0_13_ena_2; + assign WERTE0__d[0] = WERTE0_0_d_1 | WERTE0_0_d_2; + assign WERTE0__d[2] = WERTE0_2_d_1 | WERTE0_2_d_2; + assign WERTE0__d[4] = WERTE0_4_d_1 | WERTE0_4_d_2; + assign WERTE0__d[6] = WERTE0_6_d_1 | WERTE0_6_d_2; + assign WERTE0__d[7] = WERTE0_7_d_1 | WERTE0_7_d_2; + assign WERTE0__d[8] = WERTE0_8_d_1 | WERTE0_8_d_2; + assign WERTE0__d[9] = WERTE0_9_d_1 | WERTE0_9_d_2; + assign WERTE0__d[11] = WERTE0_11_d_1 | WERTE0_11_d_2; + assign WERTE0__d[13] = WERTE0_13_d_1 | WERTE0_13_d_2; + assign WERTE1_0_ena = WERTE1_0_ena_1 | WERTE1_0_ena_2; + assign WERTE1_2_ena = WERTE1_2_ena_1 | WERTE1_2_ena_2; + assign WERTE1_4_ena = WERTE1_4_ena_1 | WERTE1_4_ena_2; + assign WERTE1_6_ena = WERTE1_6_ena_1 | WERTE1_6_ena_2; + assign WERTE1_7_ena = WERTE1_7_ena_1 | WERTE1_7_ena_2; + assign WERTE1_8_ena = WERTE1_8_ena_1 | WERTE1_8_ena_2; + assign WERTE1_9_ena = WERTE1_9_ena_1 | WERTE1_9_ena_2; + assign WERTE1__d[0] = WERTE1_0_d_1 | WERTE1_0_d_2; + assign WERTE1__d[2] = WERTE1_2_d_1 | WERTE1_2_d_2; + assign WERTE1__d[4] = WERTE1_4_d_1 | WERTE1_4_d_2; + assign WERTE1__d[6] = WERTE1_6_d_1 | WERTE1_6_d_2; + assign WERTE1__d[7] = WERTE1_7_d_1 | WERTE1_7_d_2; + assign WERTE1__d[8] = WERTE1_8_d_1 | WERTE1_8_d_2; + assign WERTE1__d[9] = WERTE1_9_d_1 | WERTE1_9_d_2; + assign WERTE1__d[11] = WERTE1_11_d_1 | WERTE1_11_d_2; + assign WERTE2_0_ena = WERTE2_0_ena_1 | WERTE2_0_ena_2; + assign WERTE2_2_ena = WERTE2_2_ena_1 | WERTE2_2_ena_2; + assign WERTE2_4_ena = WERTE2_4_ena_1 | WERTE2_4_ena_2; + assign WERTE2_6_ena = WERTE2_6_ena_1 | WERTE2_6_ena_2; + assign WERTE2_7_ena = WERTE2_7_ena_1 | WERTE2_7_ena_2; + assign WERTE2_8_ena = WERTE2_8_ena_1 | WERTE2_8_ena_2; + assign WERTE2_9_ena = WERTE2_9_ena_1 | WERTE2_9_ena_2; + assign WERTE2__d[0] = WERTE2_0_d_1 | WERTE2_0_d_2; + assign WERTE2__d[2] = WERTE2_2_d_1 | WERTE2_2_d_2; + assign WERTE2__d[4] = WERTE2_4_d_1 | WERTE2_4_d_2; + assign WERTE2__d[6] = WERTE2_6_d_1 | WERTE2_6_d_2; + assign WERTE2__d[7] = WERTE2_7_d_1 | WERTE2_7_d_2; + assign WERTE2__d[8] = WERTE2_8_d_1 | WERTE2_8_d_2; + assign WERTE2__d[9] = WERTE2_9_d_1 | WERTE2_9_d_2; + assign WERTE2__d[11] = WERTE2_11_d_1 | WERTE2_11_d_2; + assign WERTE3_0_ena = WERTE3_0_ena_1 | WERTE3_0_ena_2; + assign WERTE3_2_ena = WERTE3_2_ena_1 | WERTE3_2_ena_2; + assign WERTE3_4_ena = WERTE3_4_ena_1 | WERTE3_4_ena_2; + assign WERTE3_6_ena = WERTE3_6_ena_1 | WERTE3_6_ena_2; + assign WERTE3_7_ena = WERTE3_7_ena_1 | WERTE3_7_ena_2; + assign WERTE3_8_ena = WERTE3_8_ena_1 | WERTE3_8_ena_2; + assign WERTE3_9_ena = WERTE3_9_ena_1 | WERTE3_9_ena_2; + assign WERTE3__d[0] = WERTE3_0_d_1 | WERTE3_0_d_2; + assign WERTE3__d[2] = WERTE3_2_d_1 | WERTE3_2_d_2; + assign WERTE3__d[4] = WERTE3_4_d_1 | WERTE3_4_d_2; + assign WERTE3__d[6] = WERTE3_6_d_1 | WERTE3_6_d_2; + assign WERTE3__d[7] = WERTE3_7_d_1 | WERTE3_7_d_2; + assign WERTE3__d[8] = WERTE3_8_d_1 | WERTE3_8_d_2; + assign WERTE3__d[9] = WERTE3_9_d_1 | WERTE3_9_d_2; + assign WERTE4_0_ena = WERTE4_0_ena_1 | WERTE4_0_ena_2; + assign WERTE4_2_ena = WERTE4_2_ena_1 | WERTE4_2_ena_2; + assign WERTE4_4_ena = WERTE4_4_ena_1 | WERTE4_4_ena_2; + assign WERTE4_6_ena = WERTE4_6_ena_1 | WERTE4_6_ena_2; + assign WERTE4_7_ena = WERTE4_7_ena_1 | WERTE4_7_ena_2; + assign WERTE4_8_ena = WERTE4_8_ena_1 | WERTE4_8_ena_2; + assign WERTE4_9_ena = WERTE4_9_ena_1 | WERTE4_9_ena_2; + assign WERTE4__d[0] = WERTE4_0_d_1 | WERTE4_0_d_2; + assign WERTE4__d[2] = WERTE4_2_d_1 | WERTE4_2_d_2; + assign WERTE4__d[4] = WERTE4_4_d_1 | WERTE4_4_d_2; + assign WERTE4__d[6] = WERTE4_6_d_1 | WERTE4_6_d_2; + assign WERTE4__d[7] = WERTE4_7_d_1 | WERTE4_7_d_2; + assign WERTE4__d[8] = WERTE4_8_d_1 | WERTE4_8_d_2; + assign WERTE4__d[9] = WERTE4_9_d_1 | WERTE4_9_d_2; + assign WERTE5_0_ena = WERTE5_0_ena_1 | WERTE5_0_ena_2; + assign WERTE5_2_ena = WERTE5_2_ena_1 | WERTE5_2_ena_2; + assign WERTE5_4_ena = WERTE5_4_ena_1 | WERTE5_4_ena_2; + assign WERTE5_6_ena = WERTE5_6_ena_1 | WERTE5_6_ena_2; + assign WERTE5_7_ena = WERTE5_7_ena_1 | WERTE5_7_ena_2; + assign WERTE5_8_ena = WERTE5_8_ena_1 | WERTE5_8_ena_2; + assign WERTE5_9_ena = WERTE5_9_ena_1 | WERTE5_9_ena_2; + assign WERTE5__d[0] = WERTE5_0_d_1 | WERTE5_0_d_2; + assign WERTE5__d[2] = WERTE5_2_d_1 | WERTE5_2_d_2; + assign WERTE5__d[4] = WERTE5_4_d_1 | WERTE5_4_d_2; + assign WERTE5__d[6] = WERTE5_6_d_1 | WERTE5_6_d_2; + assign WERTE5__d[7] = WERTE5_7_d_1 | WERTE5_7_d_2; + assign WERTE5__d[8] = WERTE5_8_d_1 | WERTE5_8_d_2; + assign WERTE5__d[9] = WERTE5_9_d_1 | WERTE5_9_d_2; + assign WERTE6_0_ena = WERTE6_0_ena_1 | WERTE6_0_ena_2; + assign WERTE6_2_ena = WERTE6_2_ena_1 | WERTE6_2_ena_2; + assign WERTE6_4_ena = WERTE6_4_ena_1 | WERTE6_4_ena_2; + assign WERTE6_6_ena = WERTE6_6_ena_1 | WERTE6_6_ena_2; + assign WERTE6_7_ena = WERTE6_7_ena_1 | WERTE6_7_ena_2; + assign WERTE6_8_ena = WERTE6_8_ena_1 | WERTE6_8_ena_2; + assign WERTE6_9_ena = WERTE6_9_ena_1 | WERTE6_9_ena_2; + assign WERTE6__d[0] = WERTE6_0_d_1 | WERTE6_0_d_2; + assign WERTE6__d[2] = WERTE6_2_d_1 | WERTE6_2_d_2; + assign WERTE6__d[4] = WERTE6_4_d_1 | WERTE6_4_d_2; + assign WERTE6__d[6] = WERTE6_6_d_1 | WERTE6_6_d_2; + assign WERTE6__d[7] = WERTE6_7_d_1 | WERTE6_7_d_2; + assign WERTE6__d[8] = WERTE6_8_d_1 | WERTE6_8_d_2; + assign WERTE6__d[9] = WERTE6_9_d_1 | WERTE6_9_d_2; + assign WERTE7_0_ena = WERTE7_0_ena_1 | WERTE7_0_ena_2; + assign WERTE7_2_ena = WERTE7_2_ena_1 | WERTE7_2_ena_2; + assign WERTE7_4_ena = WERTE7_4_ena_1 | WERTE7_4_ena_2; + assign WERTE7_6_ena = WERTE7_6_ena_1 | WERTE7_6_ena_2; + assign WERTE7_7_ena = WERTE7_7_ena_1 | WERTE7_7_ena_2; + assign WERTE7_8_ena = WERTE7_8_ena_1 | WERTE7_8_ena_2; + assign WERTE7_9_ena = WERTE7_9_ena_1 | WERTE7_9_ena_2; + assign WERTE7__d[0] = WERTE7_0_d_1 | WERTE7_0_d_2; + assign WERTE7__d[2] = WERTE7_2_d_1 | WERTE7_2_d_2; + assign WERTE7__d[4] = WERTE7_4_d_1 | WERTE7_4_d_2; + assign WERTE7__d[6] = WERTE7_6_d_1 | WERTE7_6_d_2; + assign WERTE7__d[7] = WERTE7_7_d_1 | WERTE7_7_d_2; + assign WERTE7__d[8] = WERTE7_8_d_1 | WERTE7_8_d_2; + assign WERTE7__d[9] = WERTE7_9_d_1 | WERTE7_9_d_2; + assign WERTE7__d[13] = WERTE7_13_d_1 | WERTE7_13_d_2; + +// Define power signal(s) + assign vcc = 1'b1; + assign gnd = 1'b0; +endmodule diff --git a/FPGA_by_Gregory_Estrade/PLLJ_PLLSPE_INFO.txt b/FPGA_by_Gregory_Estrade/PLLJ_PLLSPE_INFO.txt new file mode 100644 index 0000000..d96a9d1 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/PLLJ_PLLSPE_INFO.txt @@ -0,0 +1,20 @@ +PLL_Name altpll1:b2v_inst|altpll:altpll_component|altpll_8tp2:auto_generated|pll1 +PLLJITTER 33 +PLLSPEmax 84 +PLLSPEmin -53 + +PLL_Name altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|pll1 +PLLJITTER 43 +PLLSPEmax 84 +PLLSPEmin -53 + +PLL_Name altpll3:b2v_inst13|altpll:altpll_component|altpll_jvs2:auto_generated|pll1 +PLLJITTER NA +PLLSPEmax 84 +PLLSPEmin -53 + +PLL_Name altpll4:b2v_inst22|altpll:altpll_component|altpll_qfk2:auto_generated|pll1 +PLLJITTER 31 +PLLSPEmax 84 +PLLSPEmin -53 + diff --git a/FPGA_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd b/FPGA_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd new file mode 100644 index 0000000..e09ed0b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd @@ -0,0 +1,75 @@ +-- WARNING: Do NOT edit the input and output ports in this file in a text +-- editor if you plan to continue editing the block that represents it in +-- the Block Editor! File corruption is VERY likely to occur. + +-- Copyright (C) 1991-2008 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +-- Generated by Quartus II Version 8.1 (Build Build 163 10/28/2008) +-- Created on Fri Oct 16 15:40:59 2009 + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + + +-- Entity Declaration + +ENTITY BLITTER IS + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + PORT + ( + nRSTO : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + FB_ALE : IN STD_LOGIC; + nFB_WR : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + VIDEO_RAM_CTR : IN STD_LOGIC_VECTOR(15 downto 0); + BLITTER_ON : IN STD_LOGIC; + FB_ADR : IN STD_LOGIC_VECTOR(31 downto 0); + nFB_CS1 : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + nFB_CS3 : IN STD_LOGIC; + DDRCLK0 : IN STD_LOGIC; + BLITTER_DIN : IN STD_LOGIC_VECTOR(127 downto 0); + BLITTER_DACK : IN STD_LOGIC_VECTOR(4 downto 0); + BLITTER_RUN : OUT STD_LOGIC; + BLITTER_DOUT : OUT STD_LOGIC_VECTOR(127 downto 0); + BLITTER_ADR : OUT STD_LOGIC_VECTOR(31 downto 0); + BLITTER_SIG : OUT STD_LOGIC; + BLITTER_WR : OUT STD_LOGIC; + BLITTER_TA : OUT STD_LOGIC; + FB_AD : INOUT STD_LOGIC_VECTOR(31 downto 0) + ); + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + +END BLITTER; + + +-- Architecture Body + +ARCHITECTURE BLITTER_architecture OF BLITTER IS + + +BEGIN + BLITTER_RUN <= '0'; + BLITTER_DOUT <= x"FEDCBA9876543210F0F0F0F0F0F0F0F0"; + BLITTER_ADR <= x"76543210"; + BLITTER_SIG <= '0'; + BLITTER_WR <= '0'; + BLITTER_TA <= '0'; + +END BLITTER_architecture; diff --git a/FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf b/FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf new file mode 100644 index 0000000..d5b5ec2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf @@ -0,0 +1,659 @@ +TITLE "DDR_CTR"; + +-- CREATED BY FREDI ASCHWANDEN + +INCLUDE "lpm_bustri_BYT.inc"; + +-- FIFO WATER MARK +CONSTANT FIFO_LWM = 0; +CONSTANT FIFO_MWM = 200; +CONSTANT FIFO_HWM = 500; + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + +SUBDESIGN DDR_CTR +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + FB_ADR[31..0] : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + nFB_CS3 : INPUT; + nFB_OE : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + nRSTO : INPUT; + MAIN_CLK : INPUT; + FB_ALE : INPUT; + nFB_WR : INPUT; + DDR_SYNC_66M : INPUT; + CLR_FIFO : INPUT; + VIDEO_RAM_CTR[15..0] : INPUT; + BLITTER_ADR[31..0] : INPUT; + BLITTER_SIG : INPUT; + BLITTER_WR : INPUT; + DDRCLK0 : INPUT; + CLK33M : INPUT; + FIFO_MW[8..0] : INPUT; + VA[12..0] : OUTPUT; + nVWE : OUTPUT; + nVRAS : OUTPUT; + nVCS : OUTPUT; + VCKE : OUTPUT; + nVCAS : OUTPUT; + FB_LE[3..0] : OUTPUT; + FB_VDOE[3..0] : OUTPUT; + SR_FIFO_WRE : OUTPUT; + SR_DDR_FB : OUTPUT; + SR_DDR_WR : OUTPUT; + SR_DDRWR_D_SEL : OUTPUT; + SR_VDMP[7..0] : OUTPUT; + VIDEO_DDR_TA : OUTPUT; + SR_BLITTER_DACK : OUTPUT; + BA[1..0] : OUTPUT; + DDRWR_D_SEL1 : OUTPUT; + VDM_SEL[3..0] : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + FB_REGDDR :MACHINE WITH STATES(FR_WAIT,FR_S0,FR_S1,FR_S2,FR_S3); + DDR_SM :MACHINE WITH STATES(DS_T1,DS_T2A,DS_T2B,DS_T3,DS_N5,DS_N6, DS_N7, DS_N8, -- START (NORMAL 8 CYCLES TOTAL = 60ns) + DS_C2,DS_C3,DS_C4, DS_C5, DS_C6, DS_C7, -- CONFIG + DS_T4R,DS_T5R, -- READ CPU UND BLITTER, + DS_T4W,DS_T5W,DS_T6W,DS_T7W,DS_T8W,DS_T9W, -- WRITE CPU UND BLITTER + DS_T4F,DS_T5F,DS_T6F,DS_T7F,DS_T8F,DS_T9F,DS_T10F, -- READ FIFO + DS_CB6, DS_CB8, -- CLOSE FIFO BANK + DS_R2,DS_R3,DS_R4, DS_R5, DS_R6); -- REFRESH 10X7.5NS=75NS + LINE :NODE; + FB_B[3..0] :NODE; + VCAS :NODE; + VRAS :NODE; + VWE :NODE; + VA_P[12..0] :DFF; + BA_P[1..0] :DFF; + VA_S[12..0] :DFF; + BA_S[1..0] :DFF; + MCS[1..0] :DFF; + CPU_DDR_SYNC :DFF; + DDR_SEL :NODE; + DDR_CS :DFFE; + DDR_CONFIG :NODE; + SR_DDR_WR :DFF; + SR_DDRWR_D_SEL :DFF; + SR_VDMP[7..0] :DFF; + CPU_ROW_ADR[12..0] :NODE; + CPU_BA[1..0] :NODE; + CPU_COL_ADR[9..0] :NODE; + CPU_SIG :NODE; + CPU_REQ :DFF; + CPU_AC :DFF; + BUS_CYC :DFF; + BUS_CYC_END :NODE; + BLITTER_REQ :DFF; + BLITTER_AC :DFF; + BLITTER_ROW_ADR[12..0] :NODE; + BLITTER_BA[1..0] :NODE; + BLITTER_COL_ADR[9..0] :NODE; + FIFO_REQ :DFF; + FIFO_AC :DFF; + FIFO_ROW_ADR[12..0] :NODE; + FIFO_BA[1..0] :NODE; + FIFO_COL_ADR[9..0] :NODE; + FIFO_ACTIVE :NODE; + CLR_FIFO_SYNC :DFF; + CLEAR_FIFO_CNT :DFF; + STOP :DFF; + SR_FIFO_WRE :DFF; + FIFO_BANK_OK :DFF; + FIFO_BANK_NOT_OK :NODE; + DDR_REFRESH_ON :NODE; + DDR_REFRESH_CNT[10..0] :DFF; + DDR_REFRESH_REQ :DFF; + DDR_REFRESH_SIG[3..0] :DFFE; + REFRESH_TIME :DFF; + VIDEO_BASE_L_D[7..0] :DFFE; + VIDEO_BASE_L :NODE; + VIDEO_BASE_M_D[7..0] :DFFE; + VIDEO_BASE_M :NODE; + VIDEO_BASE_H_D[7..0] :DFFE; + VIDEO_BASE_H :NODE; + VIDEO_BASE_X_D[2..0] :DFFE; + VIDEO_ADR_CNT[22..0] :DFFE; + VIDEO_CNT_L :NODE; + VIDEO_CNT_M :NODE; + VIDEO_CNT_H :NODE; + VIDEO_BASE_ADR[22..0] :NODE; + VIDEO_ACT_ADR[26..0] :NODE; + +BEGIN + LINE = FB_SIZE0 & FB_SIZE1; +-- BYT SELECT + FB_B0 = FB_ADR[1..0]==0 -- ADR==0 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B1 = FB_ADR[1..0]==1 -- ADR==1 + # FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HIGH WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_ADR[1..0]==2 -- ADR==2 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_ADR[1..0]==3 -- ADR==3 + # FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LOW WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE +-- CPU READ (REG DDR => CPU) AND WRITE (CPU => REG DDR) -------------------------------------------------- + FB_REGDDR.CLK = MAIN_CLK; + CASE FB_REGDDR IS + WHEN FR_WAIT => + FB_LE0 = !nFB_WR; + IF BUS_CYC # DDR_SEL & LINE & !nFB_WR THEN -- LOS WENN BEREIT ODER IMMER BEI LINE WRITE + FB_REGDDR = FR_S0; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S0 => + IF DDR_CS THEN + FB_LE0 = !nFB_WR; + VIDEO_DDR_TA = VCC; + IF LINE THEN + FB_VDOE0 = !nFB_OE & !DDR_CONFIG; + FB_REGDDR = FR_S1; + ELSE + BUS_CYC_END = VCC; + FB_VDOE0 = !nFB_OE & !MAIN_CLK & !DDR_CONFIG; + FB_REGDDR = FR_WAIT; + END IF; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S1 => + IF DDR_CS THEN + FB_VDOE1 = !nFB_OE & !DDR_CONFIG; + FB_LE1 = !nFB_WR; + VIDEO_DDR_TA = VCC; + FB_REGDDR = FR_S2; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S2 => + IF DDR_CS THEN + FB_VDOE2 = !nFB_OE & !DDR_CONFIG; + FB_LE2 = !nFB_WR; + IF !BUS_CYC & LINE & !nFB_WR THEN -- BEI LINE WRITE EVT. WARTEN + FB_REGDDR = FR_S2; + ELSE + VIDEO_DDR_TA = VCC; + FB_REGDDR = FR_S3; + END IF; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S3 => + IF DDR_CS THEN + FB_VDOE3 = !nFB_OE & !MAIN_CLK & !DDR_CONFIG; + FB_LE3 = !nFB_WR; + VIDEO_DDR_TA = VCC; + BUS_CYC_END = VCC; + FB_REGDDR = FR_WAIT; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + END CASE; +-- DDR STEUERUNG ----------------------------------------------------- +-- VIDEO RAM CONTROL REGISTER (IST IN VIDEO_MUX_CTR) $F0000400: BIT 0: VCKE; 1: !nVCS ;2:REFRESH ON , (0=FIFO UND CNT CLEAR); 3: CONFIG; 8: FIFO_ACTIVE; + VCKE = VIDEO_RAM_CTR0; + nVCS = !VIDEO_RAM_CTR1; + DDR_REFRESH_ON = VIDEO_RAM_CTR2; + DDR_CONFIG = VIDEO_RAM_CTR3; + FIFO_ACTIVE = VIDEO_RAM_CTR8; +-------------------------------- + CPU_ROW_ADR[] = FB_ADR[26..14]; + CPU_BA[] = FB_ADR[13..12]; + CPU_COL_ADR[] = FB_ADR[11..2]; + nVRAS = !VRAS; + nVCAS = !VCAS; + nVWE = !VWE; + SR_DDR_WR.CLK = DDRCLK0; + SR_DDRWR_D_SEL.CLK = DDRCLK0; + SR_VDMP[7..0].CLK = DDRCLK0; + SR_FIFO_WRE.CLK = DDRCLK0; + CPU_AC.CLK = DDRCLK0; + FIFO_AC.CLK = DDRCLK0; + BLITTER_AC.CLK = DDRCLK0; + DDRWR_D_SEL1 = BLITTER_AC; +-- SELECT LOGIC + DDR_SEL = FB_ALE & FB_AD[31..30]==B"01"; + DDR_CS.CLK = MAIN_CLK; + DDR_CS.ENA = FB_ALE; + DDR_CS = DDR_SEL; +-- WENN READ ODER WRITE B,W,L DDR SOFORT ANFORDERN, BEI WRITE LINE SPÄTER + CPU_SIG = DDR_SEL & (nFB_WR # !LINE) & !DDR_CONFIG -- NICHT LINE ODER READ SOFORT LOS WENN NICHT CONFIG + # DDR_SEL & DDR_CONFIG -- CONFIG SOFORT LOS + # FB_REGDDR==FR_S1 & !nFB_WR; -- LINE WRITE SPÄTER + CPU_REQ.CLK = DDR_SYNC_66M; + CPU_REQ = CPU_SIG + # CPU_REQ & FB_REGDDR!=FR_S1 & FB_REGDDR!=FR_S3 & !BUS_CYC_END & !BUS_CYC; -- HALTEN BUS CYC BEGONNEN ODER FERTIG + BUS_CYC.CLK = DDRCLK0; + BUS_CYC = BUS_CYC & !BUS_CYC_END; + -- STATE MACHINE SYNCHRONISIEREN ----------------- + MCS[].CLK = DDRCLK0; + MCS0 = MAIN_CLK; + MCS1 = MCS0; + CPU_DDR_SYNC.CLK = DDRCLK0; + CPU_DDR_SYNC = MCS[]==2 & VCKE & !nVCS; -- NUR 1 WENN EIN + --------------------------------------------------- + VA_S[].CLK = DDRCLK0; + BA_S[].CLK = DDRCLK0; + VA[] = VA_S[]; + BA[] = BA_S[]; + VA_P[].CLK = DDRCLK0; + BA_P[].CLK = DDRCLK0; +-- DDR STATE MACHINE ----------------------------------------------- + DDR_SM.CLK = DDRCLK0; + CASE DDR_SM IS + WHEN DS_T1 => + IF DDR_REFRESH_REQ THEN + DDR_SM = DS_R2; + ELSE + IF CPU_DDR_SYNC THEN -- SYNCHRON UND EIN? + IF DDR_CONFIG THEN -- JA + DDR_SM = DS_C2; + ELSE + IF CPU_REQ THEN -- BEI WAIT UND LINE WRITE + VA_S[] = CPU_ROW_ADR[]; + BA_S[] = CPU_BA[]; + CPU_AC = VCC; + BUS_CYC = VCC; + DDR_SM = DS_T2B; + ELSE + IF FIFO_REQ # !BLITTER_REQ THEN -- FIFO IST DEFAULT + VA_P[] = FIFO_ROW_ADR[]; + BA_P[] = FIFO_BA[]; + FIFO_AC = VCC; -- VORBESETZEN + ELSE + VA_P[] = BLITTER_ROW_ADR[]; + BA_P[] = BLITTER_BA[]; + BLITTER_AC = VCC; -- VORBESETZEN + END IF; + DDR_SM = DS_T2A; + END IF; + END IF; + ELSE + DDR_SM = DS_T1; -- NEIN ->SYNCHRONISIEREN + END IF; + END IF; + + WHEN DS_T2A => -- SCHNELLZUGRIFF *** HIER IST PAGE IMMER NOT OK *** + IF DDR_SEL & (nFB_WR # !LINE) THEN + VRAS = VCC; + VA[] = FB_AD[26..14]; + BA[] = FB_AD[13..12]; + VA_S[10] = VCC; -- AUTO PRECHARGE DA NICHT FIFO PAGE + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + ELSE + VRAS = FIFO_AC & FIFO_REQ # BLITTER_AC & BLITTER_REQ; + VA[] = VA_P[]; + BA[] = BA_P[]; + VA_S[10] = !(FIFO_AC & FIFO_REQ); + FIFO_BANK_OK = FIFO_AC & FIFO_REQ; + FIFO_AC = FIFO_AC & FIFO_REQ; + BLITTER_AC = BLITTER_AC & BLITTER_REQ; + END IF; + DDR_SM = DS_T3; + + WHEN DS_T2B => + VRAS = VCC; + FIFO_BANK_NOT_OK = VCC; + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + DDR_SM = DS_T3; + + WHEN DS_T3 => + CPU_AC = CPU_AC; + FIFO_AC = FIFO_AC; + BLITTER_AC = BLITTER_AC; + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + IF !nFB_WR & CPU_AC # BLITTER_WR & BLITTER_AC THEN + DDR_SM = DS_T4W; + ELSE + IF CPU_AC THEN -- CPU? + VA_S[9..0] = CPU_COL_ADR[]; + BA_S[] = CPU_BA[]; + DDR_SM = DS_T4R; + ELSE + IF FIFO_AC THEN -- FIFO? + VA_S[9..0] = FIFO_COL_ADR[]; + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T4F; + ELSE + IF BLITTER_AC THEN + VA_S[9..0] = BLITTER_COL_ADR[]; + BA_S[] = BLITTER_BA[]; + DDR_SM = DS_T4R; + ELSE + DDR_SM = DS_N8; + END IF; + END IF; + END IF; + END IF; +-- READ + WHEN DS_T4R => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VCAS = VCC; + SR_DDR_FB = CPU_AC; -- READ DATEN FÜR CPU + SR_BLITTER_DACK = BLITTER_AC; -- BLITTER DACK AND BLITTER LATCH DATEN + DDR_SM = DS_T5R; + + WHEN DS_T5R => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + IF FIFO_REQ & FIFO_BANK_OK THEN -- FIFO READ EINSCHIEBEN WENN BANK OK + VA_S[9..0] = FIFO_COL_ADR[]; + VA_S[10] = GND; -- MANUEL PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; + END IF; +-- WRITE + WHEN DS_T4W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + SR_BLITTER_DACK = BLITTER_AC; -- BLITTER ACK AND BLITTER LATCH DATEN + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + DDR_SM = DS_T5W; + + WHEN DS_T5W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VA_S[9..0] = CPU_AC & CPU_COL_ADR[] + # BLITTER_AC & BLITTER_COL_ADR[]; + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + BA_S[] = CPU_AC & CPU_BA[] + # BLITTER_AC & BLITTER_BA[]; + SR_VDMP[7..4] = FB_B[]; -- BYTE ENABLE WRITE + SR_VDMP[3..0] = LINE & B"1111"; -- LINE ENABLE WRITE + DDR_SM = DS_T6W; + + WHEN DS_T6W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VCAS = VCC; + VWE = VCC; + SR_DDR_WR = VCC; -- WRITE COMMAND CPU UND BLITTER IF WRITER + SR_DDRWR_D_SEL = VCC; -- 2. HÄLFTE WRITE DATEN SELEKTIEREN + SR_VDMP[] = LINE & B"11111111"; -- WENN LINE DANN ACTIV + DDR_SM = DS_T7W; + + WHEN DS_T7W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + SR_DDR_WR = VCC; -- WRITE COMMAND CPU UND BLITTER IF WRITE + SR_DDRWR_D_SEL = VCC; -- 2. HÄLFTE WRITE DATEN SELEKTIEREN + DDR_SM = DS_T8W; + + WHEN DS_T8W => + DDR_SM = DS_T9W; + + WHEN DS_T9W => + IF FIFO_REQ & FIFO_BANK_OK THEN + VA_S[9..0] = FIFO_COL_ADR[]; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; + END IF; +-- FIFO READ + WHEN DS_T4F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T5F; + + WHEN DS_T5F => + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + ELSE + VA_S[9..0] = FIFO_COL_ADR[]+4; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; -- NOCH OFFEN LASSEN + END IF; + + WHEN DS_T6F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T7F; + + WHEN DS_T7F => + IF CPU_REQ & FIFO_MW[]>FIFO_LWM THEN + VA_S[10] = VCC; -- ALLE PAGES SCHLIESEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + ELSE + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + ELSE + VA_S[9..0] = FIFO_COL_ADR[]+4; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T8F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + END IF; + END IF; + + WHEN DS_T8F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + IF FIFO_MW[] + ELSE + DDR_SM = DS_T9F; + END IF; + + WHEN DS_T9F => + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE BANKS SCHLIESEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + ELSE + VA_P[9..0] = FIFO_COL_ADR[]+4; + VA_P[10] = GND; -- NON AUTO PRECHARGE + BA_P[] = FIFO_BA[]; + DDR_SM = DS_T10F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE BANKS SCHLIESEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + END IF; + + WHEN DS_T10F => + IF DDR_SEL & (nFB_WR # !LINE) & FB_AD[13..12]!=FIFO_BA[] THEN + VRAS = VCC; + VA[] = FB_AD[26..14]; + BA[] = FB_AD[13..12]; + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + VA_S[10] = VCC; -- AUTO PRECHARGE DA NICHT FIFO BANK + DDR_SM = DS_T3; + ELSE + VCAS = VCC; + VA[] = VA_P[]; + BA[] = BA_P[]; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T7F; + END IF; + +-- CONFIG CYCLUS + WHEN DS_C2 => + DDR_SM = DS_C3; + WHEN DS_C3 => + BUS_CYC = CPU_REQ; + DDR_SM = DS_C4; + WHEN DS_C4 => + IF CPU_REQ THEN + DDR_SM = DS_C5; + ELSE + DDR_SM = DS_T1; + END IF; + WHEN DS_C5 => + DDR_SM = DS_C6; + WHEN DS_C6 => + VA_S[] = FB_AD[12..0]; + BA_S[] = FB_AD[14..13]; + DDR_SM = DS_C7; + WHEN DS_C7 => + VRAS = FB_AD18 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + VCAS = FB_AD17 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + VWE = FB_AD16 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + DDR_SM = DS_N8; +-- CLOSE FIFO BANK + WHEN DS_CB6 => + FIFO_BANK_NOT_OK = VCC; -- AUF NOT OK + VRAS = VCC; -- BÄNKE SCHLIESSEN + VWE = VCC; + DDR_SM = DS_N7; + WHEN DS_CB8 => + FIFO_BANK_NOT_OK = VCC; -- AUF NOT OK + VRAS = VCC; -- BÄNKE SCHLIESSEN + VWE = VCC; + DDR_SM = DS_T1; +-- REFRESH 70NS = 10 ZYCLEN + WHEN DS_R2 => + IF DDR_REFRESH_SIG[]==9 THEN -- EIN CYCLUS VORLAUF UM BANKS ZU SCHLIESSEN + VRAS = VCC; -- ALLE BANKS SCHLIESSEN + VWE = VCC; + VA[10] = VCC; + FIFO_BANK_NOT_OK = VCC; + DDR_SM = DS_R4; + ELSE + VCAS = VCC; + VRAS = VCC; + DDR_SM = DS_R3; + END IF; + WHEN DS_R3 => + DDR_SM = DS_R4; + WHEN DS_R4 => + DDR_SM = DS_R5; + WHEN DS_R5 => + DDR_SM = DS_R6; + WHEN DS_R6 => + DDR_SM = DS_N5; +-- LEERSCHLAUFE + WHEN DS_N5 => + DDR_SM = DS_N6; + WHEN DS_N6 => + DDR_SM = DS_N7; + WHEN DS_N7 => + DDR_SM = DS_N8; + WHEN DS_N8 => + DDR_SM = DS_T1; + END CASE; + +--------------------------------------------------------------- +-- BLITTER ---------------------- +----------------------------------------- + BLITTER_REQ.CLK = DDRCLK0; + BLITTER_REQ = BLITTER_SIG & !DDR_CONFIG & VCKE & !nVCS; + BLITTER_ROW_ADR[] = BLITTER_ADR[26..14]; + BLITTER_BA1 = BLITTER_ADR13; + BLITTER_BA0 = BLITTER_ADR12; + BLITTER_COL_ADR[] = BLITTER_ADR[11..2]; +------------------------------------------------------------------------------ +-- FIFO --------------------------------- +-------------------------------------------------------- + FIFO_REQ.CLK = DDRCLK0; + FIFO_REQ = (FIFO_MW[]2048 33MHz CLOCKS +----------------------------------------------------------------------------------------- + DDR_REFRESH_CNT[].CLK = CLK33M; + DDR_REFRESH_CNT[] = DDR_REFRESH_CNT[]+1; -- ZÄHLEN 0-2047 + REFRESH_TIME.CLK = DDRCLK0; + REFRESH_TIME = DDR_REFRESH_CNT[]==0 & !MAIN_CLK; -- SYNC + DDR_REFRESH_SIG[].CLK = DDRCLK0; + DDR_REFRESH_SIG[].ENA = REFRESH_TIME # DDR_SM==DS_R6; + DDR_REFRESH_SIG[] = REFRESH_TIME & 9 & DDR_REFRESH_ON & !DDR_CONFIG -- 9 STÜCK (8 REFRESH UND 1 ALS VORLAUF) + # !REFRESH_TIME & (DDR_REFRESH_SIG[]-1) & DDR_REFRESH_ON & !DDR_CONFIG; -- MINUS 1 WENN GEMACHT + DDR_REFRESH_REQ.CLK = DDRCLK0; + DDR_REFRESH_REQ = DDR_REFRESH_SIG[]!=0 & DDR_REFRESH_ON & !REFRESH_TIME & !DDR_CONFIG; +----------------------------------------------------------- +-- VIDEO REGISTER ----------------------- +--------------------------------------------------------------------------------------------------------------------- + VIDEO_BASE_L_D[].CLK = MAIN_CLK; + VIDEO_BASE_L = !nFB_CS1 & FB_ADR[19..1]==H"7C106"; -- 820D/2 + VIDEO_BASE_L_D[] = FB_AD[23..16]; -- SORRY, NUR 16 BYT GRENZEN + VIDEO_BASE_L_D[].ENA = !nFB_WR & VIDEO_BASE_L & FB_B1; + + VIDEO_BASE_M_D[].CLK = MAIN_CLK; + VIDEO_BASE_M = !nFB_CS1 & FB_ADR[19..1]==H"7C101"; -- 8203/2 + VIDEO_BASE_M_D[] = FB_AD[23..16]; + VIDEO_BASE_M_D[].ENA = !nFB_WR & VIDEO_BASE_M & FB_B3; + + VIDEO_BASE_H_D[].CLK = MAIN_CLK; + VIDEO_BASE_H = !nFB_CS1 & FB_ADR[19..1]==H"7C100"; -- 8200-1/2 + VIDEO_BASE_H_D[] = FB_AD[23..16]; + VIDEO_BASE_H_D[].ENA = !nFB_WR & VIDEO_BASE_H & FB_B1; + VIDEO_BASE_X_D[].CLK = MAIN_CLK; + VIDEO_BASE_X_D[] = FB_AD[26..24]; + VIDEO_BASE_X_D[].ENA = !nFB_WR & VIDEO_BASE_H & FB_B0; + + VIDEO_CNT_L = !nFB_CS1 & FB_ADR[19..1]==H"7C104"; -- 8209/2 + VIDEO_CNT_M = !nFB_CS1 & FB_ADR[19..1]==H"7C103"; -- 8207/2 + VIDEO_CNT_H = !nFB_CS1 & FB_ADR[19..1]==H"7C102"; -- 8204,5/2 + + FB_AD[31..24] = lpm_bustri_BYT( + VIDEO_BASE_H & (0,VIDEO_BASE_X_D[]) + # VIDEO_CNT_H & (0,VIDEO_ACT_ADR[26..24]) + ,(VIDEO_BASE_H # VIDEO_CNT_H) & !nFB_OE); + + FB_AD[23..16] = lpm_bustri_BYT( + VIDEO_BASE_L & VIDEO_BASE_L_D[] + # VIDEO_BASE_M & VIDEO_BASE_M_D[] + # VIDEO_BASE_H & VIDEO_BASE_H_D[] + # VIDEO_CNT_L & VIDEO_ACT_ADR[7..0] + # VIDEO_CNT_M & VIDEO_ACT_ADR[15..8] + # VIDEO_CNT_H & VIDEO_ACT_ADR[23..16] + ,(VIDEO_BASE_L # VIDEO_BASE_M # VIDEO_BASE_H # VIDEO_CNT_L # VIDEO_CNT_M # VIDEO_CNT_H) & !nFB_OE); +END; + diff --git a/FPGA_by_Gregory_Estrade/Video/DDR_CTR.v b/FPGA_by_Gregory_Estrade/Video/DDR_CTR.v new file mode 100644 index 0000000..6f11045 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/Video/DDR_CTR.v @@ -0,0 +1,1097 @@ +// Xilinx XPort Language Converter, Version 4.1 (110) +// +// AHDL Design Source: DDR_CTR.tdf +// Verilog Design Output: DDR_CTR.v +// Created 03-Mar-2014 09:18 PM +// +// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. +// Xilinx Inc makes no warranty, expressed or implied, with respect to +// the operation and/or functionality of the converted output files. +// + +// DDR_CTR + + +// CREATED BY FREDI ASCHWANDEN +// FIFO WATER MARK +// {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +// {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! +module DDR_CTR(FB_ADR, nFB_CS1, nFB_CS2, nFB_CS3, nFB_OE, FB_SIZE0, FB_SIZE1, + nRSTO, MAIN_CLK, FB_ALE, nFB_WR, DDR_SYNC_66M, CLR_FIFO, VIDEO_RAM_CTR, + BLITTER_ADR, BLITTER_SIG, BLITTER_WR, DDRCLK0, CLK33M, FIFO_MW, VA, nVWE, + nVRAS, nVCS, VCKE, nVCAS, FB_LE, FB_VDOE, SR_FIFO_WRE, SR_DDR_FB, + SR_DDR_WR, SR_DDRWR_D_SEL, SR_VDMP, VIDEO_DDR_TA, SR_BLITTER_DACK, BA, + DDRWR_D_SEL1, VDM_SEL, FB_AD); + +// {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! +// {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + input [31:0] FB_ADR; + input nFB_CS1, nFB_CS2, nFB_CS3, nFB_OE, FB_SIZE0, FB_SIZE1, nRSTO, + MAIN_CLK, FB_ALE, nFB_WR, DDR_SYNC_66M, CLR_FIFO; + input [15:0] VIDEO_RAM_CTR; + input [31:0] BLITTER_ADR; + input BLITTER_SIG, BLITTER_WR, DDRCLK0, CLK33M; + input [8:0] FIFO_MW; + output [12:0] VA; + output nVWE, nVRAS, nVCS, VCKE, nVCAS; + output [3:0] FB_LE; + output [3:0] FB_VDOE; + output SR_FIFO_WRE, SR_DDR_FB, SR_DDR_WR, SR_DDRWR_D_SEL; + output [7:0] SR_VDMP; + output VIDEO_DDR_TA, SR_BLITTER_DACK; + output [1:0] BA; + output DDRWR_D_SEL1; + output [3:0] VDM_SEL; + reg [3:0] FB_LE; + reg [3:0] FB_VDOE; + reg SR_DDR_FB, VIDEO_DDR_TA, SR_BLITTER_DACK; + inout [31:0] FB_AD; + +// START (NORMAL 8 CYCLES TOTAL = 60ns) +// CONFIG +// READ CPU UND BLITTER, +// WRITE CPU UND BLITTER +// READ FIFO +// CLOSE FIFO BANK +// REFRESH 10X7.5NS=75NS + wire [2:0] FB_REGDDR_; + wire [5:0] DDR_SM_; + wire LINE; + wire [3:0] FB_B; + wire [12:0] VA_P; + wire [1:0] BA_P; + wire [12:0] VA_S; + wire [1:0] BA_S; + wire [1:0] MCS; + wire [1:0] MCS_d; + wire CPU_DDR_SYNC, CPU_DDR_SYNC_d, CPU_DDR_SYNC_clk, DDR_SEL, DDR_CS, + DDR_CS_d, DDR_CS_clk, DDR_CS_ena, DDR_CONFIG, SR_DDR_WR_clk, + SR_DDRWR_D_SEL_clk; + wire [12:0] CPU_ROW_ADR; + wire [1:0] CPU_BA; + wire [9:0] CPU_COL_ADR; + wire CPU_SIG, CPU_REQ, CPU_REQ_d, CPU_REQ_clk, CPU_AC, CPU_AC_clk, BUS_CYC, + BUS_CYC_d, BUS_CYC_clk, BLITTER_REQ, BLITTER_REQ_d, BLITTER_REQ_clk, + BLITTER_AC, BLITTER_AC_clk; + wire [12:0] BLITTER_ROW_ADR; + wire [1:0] BLITTER_BA; + wire [9:0] BLITTER_COL_ADR; + wire FIFO_REQ, FIFO_REQ_d, FIFO_REQ_clk, FIFO_AC, FIFO_AC_clk; + wire [12:0] FIFO_ROW_ADR; + wire [1:0] FIFO_BA; + wire [9:0] FIFO_COL_ADR; + wire FIFO_ACTIVE, CLR_FIFO_SYNC, CLR_FIFO_SYNC_d, CLR_FIFO_SYNC_clk, + CLEAR_FIFO_CNT, CLEAR_FIFO_CNT_d, CLEAR_FIFO_CNT_clk, STOP, STOP_d, + STOP_clk, SR_FIFO_WRE_clk, FIFO_BANK_OK, FIFO_BANK_OK_d, + FIFO_BANK_OK_clk, DDR_REFRESH_ON; + wire [10:0] DDR_REFRESH_CNT; + wire [10:0] DDR_REFRESH_CNT_d; + wire DDR_REFRESH_REQ, DDR_REFRESH_REQ_d, DDR_REFRESH_REQ_clk; + wire [3:0] DDR_REFRESH_SIG; + wire [3:0] DDR_REFRESH_SIG_d; + wire REFRESH_TIME, REFRESH_TIME_d, REFRESH_TIME_clk; + wire [7:0] VIDEO_BASE_L_D; + wire [7:0] VIDEO_BASE_L_D_d; + wire VIDEO_BASE_L; + wire [7:0] VIDEO_BASE_M_D; + wire [7:0] VIDEO_BASE_M_D_d; + wire VIDEO_BASE_M; + wire [7:0] VIDEO_BASE_H_D; + wire [7:0] VIDEO_BASE_H_D_d; + wire VIDEO_BASE_H; + wire [2:0] VIDEO_BASE_X_D; + wire [2:0] VIDEO_BASE_X_D_d; + wire [7:0] VIDEO_BASE_X_D_FULL; + wire [22:0] VIDEO_ADR_CNT; + wire [22:0] VIDEO_ADR_CNT_d; + wire VIDEO_CNT_L, VIDEO_CNT_M, VIDEO_CNT_H; + wire [22:0] VIDEO_BASE_ADR; + wire [26:0] VIDEO_ACT_ADR; + wire vcc, gnd; + wire [7:0] u0_data; + wire u0_enabledt; + wire [7:0] u0_tridata; + wire [7:0] u1_data; + wire u1_enabledt; + wire [7:0] u1_tridata; + wire FIFO_BANK_OK_d_2, BUS_CYC_d_1, BA0_1, BA1_1, VA0_1, VA1_1, VA2_1, + VA3_1, VA4_1, VA5_1, VA6_1, VA7_1, VA8_1, VA9_1, VA10_1, VA11_1, + VA12_1, VIDEO_BASE_X_D0_ena_ctrl, VIDEO_BASE_X_D0_clk_ctrl, + VIDEO_BASE_H_D0_ena_ctrl, VIDEO_BASE_H_D0_clk_ctrl, + VIDEO_BASE_M_D0_ena_ctrl, VIDEO_BASE_M_D0_clk_ctrl, + VIDEO_BASE_L_D0_ena_ctrl, VIDEO_BASE_L_D0_clk_ctrl, + DDR_REFRESH_SIG0_ena_ctrl, DDR_REFRESH_SIG0_clk_ctrl, + DDR_REFRESH_CNT0_clk_ctrl, VIDEO_ADR_CNT0_ena_ctrl, + VIDEO_ADR_CNT0_clk_ctrl, DDR_SM_0_clk_ctrl, BA_P0_clk_ctrl, + VA_P0_clk_ctrl, BA_S0_clk_ctrl, VA_S0_clk_ctrl, MCS0_clk_ctrl, + SR_VDMP0_clk_ctrl, FB_REGDDR_0_clk_ctrl; + reg [2:0] FB_REGDDR__d; + reg [2:0] FB_REGDDR__q; + reg [5:0] DDR_SM__d; + reg [5:0] DDR_SM__q; + reg VCAS, VRAS, VWE; + reg [12:0] VA_P_d; + reg [12:0] VA_P_q; + reg [1:0] BA_P_d; + reg [1:0] BA_P_q; + reg [12:0] VA_S_d; + reg [12:0] VA_S_q; + reg [1:0] BA_S_d; + reg [1:0] BA_S_q; + reg [1:0] MCS_q; + reg CPU_DDR_SYNC_q, DDR_CS_q, SR_DDR_WR_d, SR_DDR_WR_q, SR_DDRWR_D_SEL_d, + SR_DDRWR_D_SEL_q; + reg [7:0] SR_VDMP_d; + reg [7:0] SR_VDMP_q; + reg CPU_REQ_q, CPU_AC_d, CPU_AC_q, BUS_CYC_q, BUS_CYC_END, BLITTER_REQ_q, + BLITTER_AC_d, BLITTER_AC_q, FIFO_REQ_q, FIFO_AC_d, FIFO_AC_q, + CLR_FIFO_SYNC_q, CLEAR_FIFO_CNT_q, STOP_q, SR_FIFO_WRE_d, + SR_FIFO_WRE_q, FIFO_BANK_OK_q, FIFO_BANK_NOT_OK; + reg [10:0] DDR_REFRESH_CNT_q; + reg DDR_REFRESH_REQ_q; + reg [3:0] DDR_REFRESH_SIG_q; + reg REFRESH_TIME_q; + reg [7:0] VIDEO_BASE_L_D_q; + reg [7:0] VIDEO_BASE_M_D_q; + reg [7:0] VIDEO_BASE_H_D_q; + reg [2:0] VIDEO_BASE_X_D_q; + reg [22:0] VIDEO_ADR_CNT_q; + reg FIFO_BANK_OK_d_1, BUS_CYC_d_2, BA0_2, BA1_2, VA0_2, VA1_2, VA2_2, VA3_2, + VA4_2, VA5_2, VA6_2, VA7_2, VA8_2, VA9_2, VA10_2, VA11_2, VA12_2; + + +// Sub Module Section + /*lpm_bustri_BYT u0 (.data(u0_data), .enabledt(u0_enabledt), + .tridata(u0_tridata)); + + lpm_bustri_BYT u1 (.data(u1_data), .enabledt(u1_enabledt), + .tridata(u1_tridata));*/ + assign u0_tridata = (u0_enabledt) ? u0_data : 8'hzz; + assign u1_tridata = (u1_enabledt) ? u1_data : 8'hzz; + + + assign SR_FIFO_WRE = SR_FIFO_WRE_q; + always @(posedge SR_FIFO_WRE_clk) + SR_FIFO_WRE_q <= SR_FIFO_WRE_d; + + assign SR_DDR_WR = SR_DDR_WR_q; + always @(posedge SR_DDR_WR_clk) + SR_DDR_WR_q <= SR_DDR_WR_d; + + assign SR_DDRWR_D_SEL = SR_DDRWR_D_SEL_q; + always @(posedge SR_DDRWR_D_SEL_clk) + SR_DDRWR_D_SEL_q <= SR_DDRWR_D_SEL_d; + + assign SR_VDMP = SR_VDMP_q; + always @(posedge SR_VDMP0_clk_ctrl) + SR_VDMP_q <= SR_VDMP_d; + + always @(posedge FB_REGDDR_0_clk_ctrl) + FB_REGDDR__q <= FB_REGDDR__d; + + always @(posedge DDR_SM_0_clk_ctrl) + DDR_SM__q <= DDR_SM__d; + + always @(posedge VA_P0_clk_ctrl) + VA_P_q <= VA_P_d; + + always @(posedge BA_P0_clk_ctrl) + BA_P_q <= BA_P_d; + + always @(posedge VA_S0_clk_ctrl) + VA_S_q <= VA_S_d; + + always @(posedge BA_S0_clk_ctrl) + BA_S_q <= BA_S_d; + + always @(posedge MCS0_clk_ctrl) + MCS_q <= MCS_d; + + always @(posedge CPU_DDR_SYNC_clk) + CPU_DDR_SYNC_q <= CPU_DDR_SYNC_d; + + always @(posedge DDR_CS_clk) + if (DDR_CS_ena) + DDR_CS_q <= DDR_CS_d; + + always @(posedge CPU_REQ_clk) + CPU_REQ_q <= CPU_REQ_d; + + always @(posedge CPU_AC_clk) + CPU_AC_q <= CPU_AC_d; + + always @(posedge BUS_CYC_clk) + BUS_CYC_q <= BUS_CYC_d; + + always @(posedge BLITTER_REQ_clk) + BLITTER_REQ_q <= BLITTER_REQ_d; + + always @(posedge BLITTER_AC_clk) + BLITTER_AC_q <= BLITTER_AC_d; + + always @(posedge FIFO_REQ_clk) + FIFO_REQ_q <= FIFO_REQ_d; + + always @(posedge FIFO_AC_clk) + FIFO_AC_q <= FIFO_AC_d; + + always @(posedge CLR_FIFO_SYNC_clk) + CLR_FIFO_SYNC_q <= CLR_FIFO_SYNC_d; + + always @(posedge CLEAR_FIFO_CNT_clk) + CLEAR_FIFO_CNT_q <= CLEAR_FIFO_CNT_d; + + always @(posedge STOP_clk) + STOP_q <= STOP_d; + + always @(posedge FIFO_BANK_OK_clk) + FIFO_BANK_OK_q <= FIFO_BANK_OK_d; + + always @(posedge DDR_REFRESH_CNT0_clk_ctrl) + DDR_REFRESH_CNT_q <= DDR_REFRESH_CNT_d; + + always @(posedge DDR_REFRESH_REQ_clk) + DDR_REFRESH_REQ_q <= DDR_REFRESH_REQ_d; + + always @(posedge DDR_REFRESH_SIG0_clk_ctrl) + if (DDR_REFRESH_SIG0_ena_ctrl) + DDR_REFRESH_SIG_q <= DDR_REFRESH_SIG_d; + + always @(posedge REFRESH_TIME_clk) + REFRESH_TIME_q <= REFRESH_TIME_d; + + always @(posedge VIDEO_BASE_L_D0_clk_ctrl) + if (VIDEO_BASE_L_D0_ena_ctrl) + VIDEO_BASE_L_D_q <= VIDEO_BASE_L_D_d; + + always @(posedge VIDEO_BASE_M_D0_clk_ctrl) + if (VIDEO_BASE_M_D0_ena_ctrl) + VIDEO_BASE_M_D_q <= VIDEO_BASE_M_D_d; + + always @(posedge VIDEO_BASE_H_D0_clk_ctrl) + if (VIDEO_BASE_H_D0_ena_ctrl) + VIDEO_BASE_H_D_q <= VIDEO_BASE_H_D_d; + + always @(posedge VIDEO_BASE_X_D0_clk_ctrl) + if (VIDEO_BASE_X_D0_ena_ctrl) + VIDEO_BASE_X_D_q <= VIDEO_BASE_X_D_d; + + always @(posedge VIDEO_ADR_CNT0_clk_ctrl) + if (VIDEO_ADR_CNT0_ena_ctrl) + VIDEO_ADR_CNT_q <= VIDEO_ADR_CNT_d; + +// Start of original equations + assign LINE = FB_SIZE0 & FB_SIZE1; + +// BYT SELECT +// ADR==0 +// LONG UND LINE + assign FB_B[0] = FB_ADR[1:0] == 2'b00 | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) + & (!FB_SIZE0)); + +// ADR==1 +// HIGH WORD +// LONG UND LINE + assign FB_B[1] = FB_ADR[1:0] == 2'b01 | (FB_SIZE1 & (!FB_SIZE0) & + (!FB_ADR[1])) | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) & (!FB_SIZE0)); + +// ADR==2 +// LONG UND LINE + assign FB_B[2] = FB_ADR[1:0] == 2'b10 | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) + & (!FB_SIZE0)); + +// ADR==3 +// LOW WORD +// LONG UND LINE + assign FB_B[3] = FB_ADR[1:0] == 2'b11 | (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) + | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) & (!FB_SIZE0)); + +// CPU READ (REG DDR => CPU) AND WRITE (CPU => REG DDR) -------------------------------------------------- + assign FB_REGDDR_0_clk_ctrl = MAIN_CLK; + + + always @(FB_REGDDR__q or DDR_SEL or BUS_CYC_q or LINE or DDR_CS_q or nFB_OE + or MAIN_CLK or DDR_CONFIG or nFB_WR or vcc) begin + FB_REGDDR__d = FB_REGDDR__q; + {FB_VDOE[0], FB_VDOE[1]} = 2'b00; + {FB_LE[0], FB_LE[1], FB_VDOE[2], FB_LE[2], FB_VDOE[3], FB_LE[3], + VIDEO_DDR_TA, BUS_CYC_END} = 8'b0000_0000; + casex (FB_REGDDR__q) + 3'b000: begin + FB_LE[0] = !nFB_WR; + +// LOS WENN BEREIT ODER IMMER BEI LINE WRITE + if (BUS_CYC_q | (DDR_SEL & LINE & (!nFB_WR))) begin + FB_REGDDR__d = 3'b001; + end else begin + FB_REGDDR__d = 3'b000; + end + end + 3'b001: begin + if (DDR_CS_q) begin + FB_LE[0] = !nFB_WR; + VIDEO_DDR_TA = vcc; + if (LINE) begin + FB_VDOE[0] = (!nFB_OE) & (!DDR_CONFIG); + FB_REGDDR__d = 3'b010; + end else begin + BUS_CYC_END = vcc; + FB_VDOE[0] = (!nFB_OE) & (!MAIN_CLK) & (!DDR_CONFIG); + FB_REGDDR__d = 3'b000; + end + end else begin + FB_REGDDR__d = 3'b000; + end + end + 3'b010: begin + if (DDR_CS_q) begin + FB_VDOE[1] = (!nFB_OE) & (!DDR_CONFIG); + FB_LE[1] = !nFB_WR; + VIDEO_DDR_TA = vcc; + FB_REGDDR__d = 3'b011; + end else begin + FB_REGDDR__d = 3'b000; + end + end + 3'b011: begin + if (DDR_CS_q) begin + FB_VDOE[2] = (!nFB_OE) & (!DDR_CONFIG); + FB_LE[2] = !nFB_WR; + +// BEI LINE WRITE EVT. WARTEN + if ((!BUS_CYC_q) & LINE & (!nFB_WR)) begin + FB_REGDDR__d = 3'b011; + end else begin + VIDEO_DDR_TA = vcc; + FB_REGDDR__d = 3'b100; + end + end else begin + FB_REGDDR__d = 3'b000; + end + end + 3'b100: begin + if (DDR_CS_q) begin + FB_VDOE[3] = (!nFB_OE) & (!MAIN_CLK) & (!DDR_CONFIG); + FB_LE[3] = !nFB_WR; + VIDEO_DDR_TA = vcc; + BUS_CYC_END = vcc; + FB_REGDDR__d = 3'b000; + end else begin + FB_REGDDR__d = 3'b000; + end + end + endcase + end + +// DDR STEUERUNG ----------------------------------------------------- +// VIDEO RAM CONTROL REGISTER (IST IN VIDEO_MUX_CTR) $F0000400: BIT 0: VCKE; 1: !nVCS ;2:REFRESH ON , (0=FIFO UND CNT CLEAR); 3: CONFIG; 8: FIFO_ACTIVE; + assign VCKE = VIDEO_RAM_CTR[0]; + assign nVCS = !VIDEO_RAM_CTR[1]; + assign DDR_REFRESH_ON = VIDEO_RAM_CTR[2]; + assign DDR_CONFIG = VIDEO_RAM_CTR[3]; + assign FIFO_ACTIVE = VIDEO_RAM_CTR[8]; + +// ------------------------------ + assign CPU_ROW_ADR = FB_ADR[26:14]; + assign CPU_BA = FB_ADR[13:12]; + assign CPU_COL_ADR = FB_ADR[11:2]; + assign nVRAS = !VRAS; + assign nVCAS = !VCAS; + assign nVWE = !VWE; + assign SR_DDR_WR_clk = DDRCLK0; + assign SR_DDRWR_D_SEL_clk = DDRCLK0; + assign SR_VDMP0_clk_ctrl = DDRCLK0; + assign SR_FIFO_WRE_clk = DDRCLK0; + assign CPU_AC_clk = DDRCLK0; + assign FIFO_AC_clk = DDRCLK0; + assign BLITTER_AC_clk = DDRCLK0; + assign DDRWR_D_SEL1 = BLITTER_AC_q; + +// SELECT LOGIC + assign DDR_SEL = FB_ALE & FB_AD[31:30] == 2'b01; + assign DDR_CS_clk = MAIN_CLK; + assign DDR_CS_ena = FB_ALE; + assign DDR_CS_d = DDR_SEL; + +// WENN READ ODER WRITE B,W,L DDR SOFORT ANFORDERN, BEI WRITE LINE SPÄTER +// NICHT LINE ODER READ SOFORT LOS WENN NICHT CONFIG +// CONFIG SOFORT LOS +// LINE WRITE SPÄTER + assign CPU_SIG = (DDR_SEL & (nFB_WR | (!LINE)) & (!DDR_CONFIG)) | (DDR_SEL & + DDR_CONFIG) | (FB_REGDDR__q == 3'b010 & (!nFB_WR)); + assign CPU_REQ_clk = DDR_SYNC_66M; + +// HALTEN BUS CYC BEGONNEN ODER FERTIG + assign CPU_REQ_d = CPU_SIG | (CPU_REQ_q & FB_REGDDR__q != 3'b010 & + FB_REGDDR__q != 3'b100 & (!BUS_CYC_END) & (!BUS_CYC_q)); + assign BUS_CYC_clk = DDRCLK0; + assign BUS_CYC_d_1 = BUS_CYC_q & (!BUS_CYC_END); + +// STATE MACHINE SYNCHRONISIEREN ----------------- + assign MCS0_clk_ctrl = DDRCLK0; + assign MCS_d[0] = MAIN_CLK; + assign MCS_d[1] = MCS_q[0]; + assign CPU_DDR_SYNC_clk = DDRCLK0; + +// NUR 1 WENN EIN + assign CPU_DDR_SYNC_d = MCS_q == 2'b10 & VCKE & (!nVCS); + +// ------------------------------------------------- + assign VA_S0_clk_ctrl = DDRCLK0; + assign BA_S0_clk_ctrl = DDRCLK0; + assign {VA12_1, VA11_1, VA10_1, VA9_1, VA8_1, VA7_1, VA6_1, VA5_1, VA4_1, + VA3_1, VA2_1, VA1_1, VA0_1} = VA_S_q; + assign {BA1_1, BA0_1} = BA_S_q; + assign VA_P0_clk_ctrl = DDRCLK0; + assign BA_P0_clk_ctrl = DDRCLK0; + +// DDR STATE MACHINE ----------------------------------------------- + assign DDR_SM_0_clk_ctrl = DDRCLK0; + + + always @(DDR_SM__q or DDR_REFRESH_REQ_q or CPU_DDR_SYNC_q or DDR_CONFIG or + CPU_ROW_ADR or FIFO_ROW_ADR or BLITTER_ROW_ADR or BLITTER_REQ_q or + BLITTER_WR or FIFO_AC_q or CPU_COL_ADR or BLITTER_COL_ADR or VA_S_q or + CPU_BA or BLITTER_BA or FB_B or CPU_AC_q or BLITTER_AC_q or + FIFO_BANK_OK_q or FIFO_MW or FIFO_REQ_q or VIDEO_ADR_CNT_q or + FIFO_COL_ADR or gnd or DDR_SEL or LINE or FIFO_BA or FB_AD or VA_P_q + or BA_P_q or CPU_REQ_q or nFB_WR or FB_SIZE0 or FB_SIZE1 or + DDR_REFRESH_SIG_q or vcc) begin + DDR_SM__d = DDR_SM__q; + BA_S_d = 2'b00; + VA_S_d = 13'b0_0000_0000_0000; + BA_P_d = 2'b00; + {VA_P_d[9], VA_P_d[8], VA_P_d[7], VA_P_d[6], VA_P_d[5], VA_P_d[4], + VA_P_d[3], VA_P_d[2], VA_P_d[1], VA_P_d[0], VA_P_d[10]} = + 11'b000_0000_0000; + SR_VDMP_d = 8'b0000_0000; + VA_P_d[12:11] = 2'b00; + {FIFO_BANK_OK_d_1, FIFO_AC_d, SR_DDR_FB, SR_BLITTER_DACK, BLITTER_AC_d, + SR_DDR_WR_d, SR_DDRWR_D_SEL_d, CPU_AC_d, VA12_2, VA11_2, VA9_2, + VA8_2, VA7_2, VA6_2, VA5_2, VA4_2, VA3_2, VA2_2, VA1_2, VA0_2, + BA1_2, BA0_2, SR_FIFO_WRE_d, BUS_CYC_d_2, VWE, VA10_2, + FIFO_BANK_NOT_OK, VCAS, VRAS} = + 29'b0_0000_0000_0000_0000_0000_0000_0000; + casex (DDR_SM__q) + 6'b00_0000: begin + if (DDR_REFRESH_REQ_q) begin + DDR_SM__d = 6'b01_1111; + +// SYNCHRON UND EIN? + end else if (CPU_DDR_SYNC_q) begin + +// JA + if (DDR_CONFIG) begin + DDR_SM__d = 6'b00_1000; + +// BEI WAIT UND LINE WRITE + end else if (CPU_REQ_q) begin + VA_S_d = CPU_ROW_ADR; + BA_S_d = CPU_BA; + CPU_AC_d = vcc; + BUS_CYC_d_2 = vcc; + DDR_SM__d = 6'b00_0010; + end else begin + +// FIFO IST DEFAULT + if (FIFO_REQ_q | (!BLITTER_REQ_q)) begin + VA_P_d = FIFO_ROW_ADR; + BA_P_d = FIFO_BA; + +// VORBESETZEN + FIFO_AC_d = vcc; + end else begin + VA_P_d = BLITTER_ROW_ADR; + BA_P_d = BLITTER_BA; + +// VORBESETZEN + BLITTER_AC_d = vcc; + end + DDR_SM__d = 6'b00_0001; + end + end else begin + +// NEIN ->SYNCHRONISIEREN + DDR_SM__d = 6'b00_0000; + end + end + 6'b00_0001: begin + +// SCHNELLZUGRIFF *** HIER IST PAGE IMMER NOT OK *** + if (DDR_SEL & (nFB_WR | (!LINE))) begin + VRAS = vcc; + {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, + VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = FB_AD[26:14]; + {BA1_2, BA0_2} = FB_AD[13:12]; + +// AUTO PRECHARGE DA NICHT FIFO PAGE + VA_S_d[10] = vcc; + CPU_AC_d = vcc; + +// BUS CYCLUS LOSTRETEN + BUS_CYC_d_2 = vcc; + end else begin + VRAS = (FIFO_AC_q & FIFO_REQ_q) | (BLITTER_AC_q & + BLITTER_REQ_q); + {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, + VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = VA_P_q; + {BA1_2, BA0_2} = BA_P_q; + VA_S_d[10] = !(FIFO_AC_q & FIFO_REQ_q); + FIFO_BANK_OK_d_1 = FIFO_AC_q & FIFO_REQ_q; + FIFO_AC_d = FIFO_AC_q & FIFO_REQ_q; + BLITTER_AC_d = BLITTER_AC_q & BLITTER_REQ_q; + end + DDR_SM__d = 6'b00_0011; + end + 6'b00_0010: begin + VRAS = vcc; + FIFO_BANK_NOT_OK = vcc; + CPU_AC_d = vcc; + +// BUS CYCLUS LOSTRETEN + BUS_CYC_d_2 = vcc; + DDR_SM__d = 6'b00_0011; + end + 6'b00_0011: begin + CPU_AC_d = CPU_AC_q; + FIFO_AC_d = FIFO_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + +// AUTO PRECHARGE WENN NICHT FIFO PAGE + VA_S_d[10] = VA_S_q[10]; + if (((!nFB_WR) & CPU_AC_q) | (BLITTER_WR & BLITTER_AC_q)) begin + DDR_SM__d = 6'b01_0000; + +// CPU? + end else if (CPU_AC_q) begin + VA_S_d[9:0] = CPU_COL_ADR; + BA_S_d = CPU_BA; + DDR_SM__d = 6'b00_1110; + +// FIFO? + end else if (FIFO_AC_q) begin + VA_S_d[9:0] = FIFO_COL_ADR; + BA_S_d = FIFO_BA; + DDR_SM__d = 6'b01_0110; + end else if (BLITTER_AC_q) begin + VA_S_d[9:0] = BLITTER_COL_ADR; + BA_S_d = BLITTER_BA; + DDR_SM__d = 6'b00_1110; + end else begin + +// READ + DDR_SM__d = 6'b00_0111; + end + end + 6'b00_1110: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + VCAS = vcc; + +// READ DATEN FÜR CPU + SR_DDR_FB = CPU_AC_q; + +// BLITTER DACK AND BLITTER LATCH DATEN + SR_BLITTER_DACK = BLITTER_AC_q; + DDR_SM__d = 6'b00_1111; + end + 6'b00_1111: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + +// FIFO READ EINSCHIEBEN WENN BANK OK + if (FIFO_REQ_q & FIFO_BANK_OK_q) begin + VA_S_d[9:0] = FIFO_COL_ADR; + +// MANUEL PRECHARGE + VA_S_d[10] = gnd; + BA_S_d = FIFO_BA; + DDR_SM__d = 6'b01_1000; + end else begin + +// ALLE PAGES SCHLIESSEN + VA_S_d[10] = vcc; + +// WRITE + DDR_SM__d = 6'b01_1101; + end + end + 6'b01_0000: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + +// BLITTER ACK AND BLITTER LATCH DATEN + SR_BLITTER_DACK = BLITTER_AC_q; + +// AUTO PRECHARGE WENN NICHT FIFO PAGE + VA_S_d[10] = VA_S_q[10]; + DDR_SM__d = 6'b01_0001; + end + 6'b01_0001: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + VA_S_d[9:0] = ({10{CPU_AC_q}} & CPU_COL_ADR) | ({10{BLITTER_AC_q}} + & BLITTER_COL_ADR); + +// AUTO PRECHARGE WENN NICHT FIFO PAGE + VA_S_d[10] = VA_S_q[10]; + BA_S_d = ({2{CPU_AC_q}} & CPU_BA) | ({2{BLITTER_AC_q}} & + BLITTER_BA); + +// BYTE ENABLE WRITE + SR_VDMP_d[7:4] = FB_B; + +// LINE ENABLE WRITE + SR_VDMP_d[3:0] = {4{LINE}} & 4'b1111; + DDR_SM__d = 6'b01_0010; + end + 6'b01_0010: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + VCAS = vcc; + VWE = vcc; + +// WRITE COMMAND CPU UND BLITTER IF WRITER + SR_DDR_WR_d = vcc; + +// 2. HÄLFTE WRITE DATEN SELEKTIEREN + SR_DDRWR_D_SEL_d = vcc; + +// WENN LINE DANN ACTIV + SR_VDMP_d = {8{LINE}} & 8'b1111_1111; + DDR_SM__d = 6'b01_0011; + end + 6'b01_0011: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + +// WRITE COMMAND CPU UND BLITTER IF WRITE + SR_DDR_WR_d = vcc; + +// 2. HÄLFTE WRITE DATEN SELEKTIEREN + SR_DDRWR_D_SEL_d = vcc; + DDR_SM__d = 6'b01_0100; + end + 6'b01_0100: begin + DDR_SM__d = 6'b01_0101; + end + 6'b01_0101: begin + if (FIFO_REQ_q & FIFO_BANK_OK_q) begin + VA_S_d[9:0] = FIFO_COL_ADR; + +// NON AUTO PRECHARGE + VA_S_d[10] = gnd; + BA_S_d = FIFO_BA; + DDR_SM__d = 6'b01_1000; + end else begin + +// ALLE PAGES SCHLIESSEN + VA_S_d[10] = vcc; + +// FIFO READ + DDR_SM__d = 6'b01_1101; + end + end + 6'b01_0110: begin + VCAS = vcc; + +// DATEN WRITE FIFO + SR_FIFO_WRE_d = vcc; + DDR_SM__d = 6'b01_0111; + end + 6'b01_0111: begin + if (FIFO_REQ_q) begin + +// NEUE PAGE? + if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin + +// ALLE PAGES SCHLIESSEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1101; + end else begin + VA_S_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; + +// NON AUTO PRECHARGE + VA_S_d[10] = gnd; + BA_S_d = FIFO_BA; + DDR_SM__d = 6'b01_1000; + end + end else begin + +// ALLE PAGES SCHLIESSEN + VA_S_d[10] = vcc; + +// NOCH OFFEN LASSEN + DDR_SM__d = 6'b01_1101; + end + end + 6'b01_1000: begin + VCAS = vcc; + +// DATEN WRITE FIFO + SR_FIFO_WRE_d = vcc; + DDR_SM__d = 6'b01_1001; + end + 6'b01_1001: begin + if (CPU_REQ_q & FIFO_MW > 9'b0_0000_0000) begin + +// ALLE PAGES SCHLIESEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1110; + end else if (FIFO_REQ_q) begin + +// NEUE PAGE? + if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin + +// ALLE PAGES SCHLIESSEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1110; + end else begin + VA_S_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; + +// NON AUTO PRECHARGE + VA_S_d[10] = gnd; + BA_S_d = FIFO_BA; + DDR_SM__d = 6'b01_1010; + end + end else begin + +// ALLE PAGES SCHLIESEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1110; + end + end + 6'b01_1010: begin + VCAS = vcc; + +// DATEN WRITE FIFO + SR_FIFO_WRE_d = vcc; + +// NOTFALL? + if (FIFO_MW < 9'b0_0000_0000) begin + +// JA-> + DDR_SM__d = 6'b01_0111; + end else begin + DDR_SM__d = 6'b01_1011; + end + end + 6'b01_1011: begin + if (FIFO_REQ_q) begin + +// NEUE PAGE? + if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin + +// ALLE BANKS SCHLIESEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1101; + end else begin + VA_P_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; + +// NON AUTO PRECHARGE + VA_P_d[10] = gnd; + BA_P_d = FIFO_BA; + DDR_SM__d = 6'b01_1100; + end + end else begin + +// ALLE BANKS SCHLIESEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1101; + end + end + 6'b01_1100: begin + if (DDR_SEL & (nFB_WR | (!LINE)) & FB_AD[13:12] != FIFO_BA) begin + VRAS = vcc; + {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, + VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = FB_AD[26:14]; + {BA1_2, BA0_2} = FB_AD[13:12]; + CPU_AC_d = vcc; + +// BUS CYCLUS LOSTRETEN + BUS_CYC_d_2 = vcc; + +// AUTO PRECHARGE DA NICHT FIFO BANK + VA_S_d[10] = vcc; + DDR_SM__d = 6'b00_0011; + end else begin + VCAS = vcc; + {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, + VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = VA_P_q; + {BA1_2, BA0_2} = BA_P_q; + +// DATEN WRITE FIFO + SR_FIFO_WRE_d = vcc; + +// CONFIG CYCLUS + DDR_SM__d = 6'b01_1001; + end + end + 6'b00_1000: begin + DDR_SM__d = 6'b00_1001; + end + 6'b00_1001: begin + BUS_CYC_d_2 = CPU_REQ_q; + DDR_SM__d = 6'b00_1010; + end + 6'b00_1010: begin + if (CPU_REQ_q) begin + DDR_SM__d = 6'b00_1011; + end else begin + DDR_SM__d = 6'b00_0000; + end + end + 6'b00_1011: begin + DDR_SM__d = 6'b00_1100; + end + 6'b00_1100: begin + VA_S_d = FB_AD[12:0]; + BA_S_d = FB_AD[14:13]; + DDR_SM__d = 6'b00_1101; + end + 6'b00_1101: begin + +// NUR BEI LONG WRITE + VRAS = FB_AD[18] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); + +// NUR BEI LONG WRITE + VCAS = FB_AD[17] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); + +// NUR BEI LONG WRITE + VWE = FB_AD[16] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); + +// CLOSE FIFO BANK + DDR_SM__d = 6'b00_0111; + end + 6'b01_1101: begin + +// AUF NOT OK + FIFO_BANK_NOT_OK = vcc; + +// BÄNKE SCHLIESSEN + VRAS = vcc; + VWE = vcc; + DDR_SM__d = 6'b00_0110; + end + 6'b01_1110: begin + +// AUF NOT OK + FIFO_BANK_NOT_OK = vcc; + +// BÄNKE SCHLIESSEN + VRAS = vcc; + VWE = vcc; + +// REFRESH 70NS = 10 ZYCLEN + DDR_SM__d = 6'b00_0000; + end + 6'b01_1111: begin + +// EIN CYCLUS VORLAUF UM BANKS ZU SCHLIESSEN + if (DDR_REFRESH_SIG_q == 4'b1001) begin + +// ALLE BANKS SCHLIESSEN + VRAS = vcc; + VWE = vcc; + VA10_2 = vcc; + FIFO_BANK_NOT_OK = vcc; + DDR_SM__d = 6'b10_0001; + end else begin + VCAS = vcc; + VRAS = vcc; + DDR_SM__d = 6'b10_0000; + end + end + 6'b10_0000: begin + DDR_SM__d = 6'b10_0001; + end + 6'b10_0001: begin + DDR_SM__d = 6'b10_0010; + end + 6'b10_0010: begin + DDR_SM__d = 6'b10_0011; + end + 6'b10_0011: begin + +// LEERSCHLAUFE + DDR_SM__d = 6'b00_0100; + end + 6'b00_0100: begin + DDR_SM__d = 6'b00_0101; + end + 6'b00_0101: begin + DDR_SM__d = 6'b00_0110; + end + 6'b00_0110: begin + DDR_SM__d = 6'b00_0111; + end + 6'b00_0111: begin + DDR_SM__d = 6'b00_0000; + end + endcase + end + +// ------------------------------------------------------------- +// BLITTER ---------------------- +// --------------------------------------- + assign BLITTER_REQ_clk = DDRCLK0; + assign BLITTER_REQ_d = BLITTER_SIG & (!DDR_CONFIG) & VCKE & (!nVCS); + assign BLITTER_ROW_ADR = BLITTER_ADR[26:14]; + assign BLITTER_BA[1] = BLITTER_ADR[13]; + assign BLITTER_BA[0] = BLITTER_ADR[12]; + assign BLITTER_COL_ADR = BLITTER_ADR[11:2]; + +// ---------------------------------------------------------------------------- +// FIFO --------------------------------- +// ------------------------------------------------------ + assign FIFO_REQ_clk = DDRCLK0; + assign FIFO_REQ_d = (FIFO_MW < 9'b0_1100_1000 | (FIFO_MW < 9'b1_1111_0100 & + FIFO_REQ_q)) & FIFO_ACTIVE & (!CLEAR_FIFO_CNT_q) & (!STOP_q) & + (!DDR_CONFIG) & VCKE & (!nVCS); + assign FIFO_ROW_ADR = VIDEO_ADR_CNT_q[22:10]; + assign FIFO_BA[1] = VIDEO_ADR_CNT_q[9]; + assign FIFO_BA[0] = VIDEO_ADR_CNT_q[8]; + assign FIFO_COL_ADR = {VIDEO_ADR_CNT_q[7], VIDEO_ADR_CNT_q[6], + VIDEO_ADR_CNT_q[5], VIDEO_ADR_CNT_q[4], VIDEO_ADR_CNT_q[3], + VIDEO_ADR_CNT_q[2], VIDEO_ADR_CNT_q[1], VIDEO_ADR_CNT_q[0], 2'b00}; + assign FIFO_BANK_OK_clk = DDRCLK0; + assign FIFO_BANK_OK_d_2 = FIFO_BANK_OK_q & (!FIFO_BANK_NOT_OK); + +// ZÄHLER RÜCKSETZEN WENN CLR FIFO ---------------- + assign CLR_FIFO_SYNC_clk = DDRCLK0; + +// SYNCHRONISIEREN + assign CLR_FIFO_SYNC_d = CLR_FIFO; + assign CLEAR_FIFO_CNT_clk = DDRCLK0; + assign CLEAR_FIFO_CNT_d = CLR_FIFO_SYNC_q | (!FIFO_ACTIVE); + assign STOP_clk = DDRCLK0; + assign STOP_d = CLR_FIFO_SYNC_q | CLEAR_FIFO_CNT_q; + +// ZÄHLEN ----------------------------------------------- + assign VIDEO_ADR_CNT0_clk_ctrl = DDRCLK0; + assign VIDEO_ADR_CNT0_ena_ctrl = SR_FIFO_WRE_q | CLEAR_FIFO_CNT_q; + assign VIDEO_ADR_CNT_d = ({23{CLEAR_FIFO_CNT_q}} & VIDEO_BASE_ADR) | + ({23{!CLEAR_FIFO_CNT_q}} & (VIDEO_ADR_CNT_q + 23'h1)); + assign VIDEO_BASE_ADR[22:20] = VIDEO_BASE_X_D_q; + assign VIDEO_BASE_ADR[19:12] = VIDEO_BASE_H_D_q; + assign VIDEO_BASE_ADR[11:4] = VIDEO_BASE_M_D_q; + assign VIDEO_BASE_ADR[3:0] = VIDEO_BASE_L_D_q[7:4]; + assign VDM_SEL = VIDEO_BASE_L_D_q[3:0]; + +// AKTUELLE VIDEO ADRESSE + assign VIDEO_ACT_ADR[26:4] = VIDEO_ADR_CNT_q - {14'b00_0000_0000_0000, + FIFO_MW}; + assign VIDEO_ACT_ADR[3:0] = VDM_SEL; + +// --------------------------------------------------------------------------------------- +// REFRESH: IMMER 8 AUFS MAL, ANFORDERUNG ALLE 7.8us X 8 STCK. = 62.4us = 2059->2048 33MHz CLOCKS +// --------------------------------------------------------------------------------------- + assign DDR_REFRESH_CNT0_clk_ctrl = CLK33M; + +// ZÄHLEN 0-2047 + assign DDR_REFRESH_CNT_d = DDR_REFRESH_CNT_q + 11'b000_0000_0001; + assign REFRESH_TIME_clk = DDRCLK0; + +// SYNC + assign REFRESH_TIME_d = DDR_REFRESH_CNT_q == 11'b000_0000_0000 & + (!MAIN_CLK); + assign DDR_REFRESH_SIG0_clk_ctrl = DDRCLK0; + assign DDR_REFRESH_SIG0_ena_ctrl = REFRESH_TIME_q | DDR_SM__q == 6'b10_0011; + +// 9 STÜCK (8 REFRESH UND 1 ALS VORLAUF) +// MINUS 1 WENN GEMACHT + assign DDR_REFRESH_SIG_d = ({4{REFRESH_TIME_q}} & 4'b1001 & + {4{DDR_REFRESH_ON}} & {4{!DDR_CONFIG}}) | ({4{!REFRESH_TIME_q}} & + (DDR_REFRESH_SIG_q - 4'b0001) & {4{DDR_REFRESH_ON}} & + {4{!DDR_CONFIG}}); + assign DDR_REFRESH_REQ_clk = DDRCLK0; + assign DDR_REFRESH_REQ_d = DDR_REFRESH_SIG_q != 4'b0000 & DDR_REFRESH_ON & + (!REFRESH_TIME_q) & (!DDR_CONFIG); + +// --------------------------------------------------------- +// VIDEO REGISTER ----------------------- +// ------------------------------------------------------------------------------------------------------------------- + assign VIDEO_BASE_L_D0_clk_ctrl = MAIN_CLK; + +// 820D/2 + assign VIDEO_BASE_L = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C106; + +// SORRY, NUR 16 BYT GRENZEN + assign VIDEO_BASE_L_D_d = FB_AD[23:16]; + assign VIDEO_BASE_L_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_L & FB_B[1]; + assign VIDEO_BASE_M_D0_clk_ctrl = MAIN_CLK; + +// 8203/2 + assign VIDEO_BASE_M = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C101; + assign VIDEO_BASE_M_D_d = FB_AD[23:16]; + assign VIDEO_BASE_M_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_M & FB_B[3]; + assign VIDEO_BASE_H_D0_clk_ctrl = MAIN_CLK; + +// 8200-1/2 + assign VIDEO_BASE_H = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C100; + assign VIDEO_BASE_H_D_d = FB_AD[23:16]; + assign VIDEO_BASE_H_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_H & FB_B[1]; + assign VIDEO_BASE_X_D0_clk_ctrl = MAIN_CLK; + assign VIDEO_BASE_X_D_d = FB_AD[26:24]; + assign VIDEO_BASE_X_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_H & FB_B[0]; + +// 8209/2 + assign VIDEO_CNT_L = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C104; + +// 8207/2 + assign VIDEO_CNT_M = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C103; + +// 8204,5/2 + assign VIDEO_CNT_H = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C102; + +// GE + assign VIDEO_BASE_X_D_FULL = {5'b0_0000, VIDEO_BASE_X_D_q}; + assign u0_data = ({8{VIDEO_BASE_H}} & VIDEO_BASE_X_D_FULL) | + ({8{VIDEO_CNT_H}} & {5'b0_0000, VIDEO_ACT_ADR[26:24]}); + assign u0_enabledt = (VIDEO_BASE_H | VIDEO_CNT_H) & (!nFB_OE); + assign FB_AD[31:24] = u0_tridata; + assign u1_data = ({8{VIDEO_BASE_L}} & VIDEO_BASE_L_D_q) | ({8{VIDEO_BASE_M}} + & VIDEO_BASE_M_D_q) | ({8{VIDEO_BASE_H}} & VIDEO_BASE_H_D_q) | + ({8{VIDEO_CNT_L}} & VIDEO_ACT_ADR[7:0]) | ({8{VIDEO_CNT_M}} & + VIDEO_ACT_ADR[15:8]) | ({8{VIDEO_CNT_H}} & VIDEO_ACT_ADR[23:16]); + assign u1_enabledt = (VIDEO_BASE_L | VIDEO_BASE_M | VIDEO_BASE_H | + VIDEO_CNT_L | VIDEO_CNT_M | VIDEO_CNT_H) & (!nFB_OE); + assign FB_AD[23:16] = u1_tridata; + + +// Assignments added to explicitly combine the +// effects of multiple drivers in the source + assign FIFO_BANK_OK_d = FIFO_BANK_OK_d_1 | FIFO_BANK_OK_d_2; + assign BUS_CYC_d = BUS_CYC_d_1 | BUS_CYC_d_2; + assign BA[0] = BA0_1 | BA0_2; + assign BA[1] = BA1_1 | BA1_2; + assign VA[0] = VA0_1 | VA0_2; + assign VA[1] = VA1_1 | VA1_2; + assign VA[2] = VA2_1 | VA2_2; + assign VA[3] = VA3_1 | VA3_2; + assign VA[4] = VA4_1 | VA4_2; + assign VA[5] = VA5_1 | VA5_2; + assign VA[6] = VA6_1 | VA6_2; + assign VA[7] = VA7_1 | VA7_2; + assign VA[8] = VA8_1 | VA8_2; + assign VA[9] = VA9_1 | VA9_2; + assign VA[10] = VA10_1 | VA10_2; + assign VA[11] = VA11_1 | VA11_2; + assign VA[12] = VA12_1 | VA12_2; + +// Define power signal(s) + assign vcc = 1'b1; + assign gnd = 1'b0; +endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/VIDEO_MOD_MUX_CLUTCTR.tdf b/FPGA_by_Gregory_Estrade/Video/VIDEO_MOD_MUX_CLUTCTR.tdf new file mode 100644 index 0000000..2c9adcc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/Video/VIDEO_MOD_MUX_CLUTCTR.tdf @@ -0,0 +1,675 @@ +TITLE "VIDEO MODUSE UND CLUT CONTROL"; + +-- CREATED BY FREDI ASCHWANDEN + +INCLUDE "lpm_bustri_WORD.inc"; +INCLUDE "lpm_bustri_BYT.inc"; + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + +SUBDESIGN VIDEO_MOD_MUX_CLUTCTR +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + nRSTO : INPUT; + MAIN_CLK : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + nFB_CS3 : INPUT; + nFB_WR : INPUT; + nFB_OE : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + nFB_BURST : INPUT; + FB_ADR[31..0] : INPUT; + CLK33M : INPUT; + CLK25M : INPUT; + BLITTER_RUN : INPUT; + CLK_VIDEO : INPUT; + VR_D[8..0] : INPUT; + VR_BUSY : INPUT; + COLOR8 : OUTPUT; + ACP_CLUT_RD : OUTPUT; + COLOR1 : OUTPUT; + FALCON_CLUT_RDH : OUTPUT; + FALCON_CLUT_RDL : OUTPUT; + FALCON_CLUT_WR[3..0] : OUTPUT; + ST_CLUT_RD : OUTPUT; + ST_CLUT_WR[1..0] : OUTPUT; + CLUT_MUX_ADR[3..0] : OUTPUT; + HSYNC : OUTPUT; + VSYNC : OUTPUT; + nBLANK : OUTPUT; + nSYNC : OUTPUT; + nPD_VGA : OUTPUT; + FIFO_RDE : OUTPUT; + COLOR2 : OUTPUT; + COLOR4 : OUTPUT; + PIXEL_CLK : OUTPUT; + CLUT_OFF[3..0] : OUTPUT; + BLITTER_ON : OUTPUT; + VIDEO_RAM_CTR[15..0] : OUTPUT; + VIDEO_MOD_TA : OUTPUT; + CCR[23..0] : OUTPUT; + CCSEL[2..0] : OUTPUT; + ACP_CLUT_WR[3..0] : OUTPUT; + INTER_ZEI : OUTPUT; + DOP_FIFO_CLR : OUTPUT; + VIDEO_RECONFIG : OUTPUT; + VR_WR : OUTPUT; + VR_RD : OUTPUT; + CLR_FIFO : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + CLK17M :DFF; + CLK13M :DFF; + ACP_CLUT_CS :NODE; + ACP_CLUT :NODE; + VIDEO_PLL_CONFIG_CS :NODE; + VR_WR :DFF; + VR_DOUT[8..0] :DFFE; + VR_FRQ[7..0] :DFFE; + VIDEO_PLL_RECONFIG_CS :NODE; + VIDEO_RECONFIG :DFF; + FALCON_CLUT_CS :NODE; + FALCON_CLUT :NODE; + ST_CLUT_CS :NODE; + ST_CLUT :NODE; + FB_B[3..0] :NODE; + FB_16B[1..0] :NODE; + ST_SHIFT_MODE[1..0] :DFFE; + ST_SHIFT_MODE_CS :NODE; + FALCON_SHIFT_MODE[10..0] :DFFE; + FALCON_SHIFT_MODE_CS :NODE; + CLUT_MUX_ADR[3..0] :DFF; + CLUT_MUX_AV[1..0][3..0] :DFF; + ACP_VCTR_CS :NODE; + ACP_VCTR[31..0] :DFFE; + CCR_CS :NODE; + CCR[23..0] :DFFE; + ACP_VIDEO_ON :NODE; + SYS_CTR[6..0] :DFFE; + SYS_CTR_CS :NODE; + VDL_LOF[15..0] :DFFE; + VDL_LOF_CS :NODE; + VDL_LWD[15..0] :DFFE; + VDL_LWD_CS :NODE; +-- DIV. CONTROL REGISTER + CLUT_TA :DFF; -- BRAUCHT EIN WAITSTAT + HSYNC :DFF; + HSYNC_I[7..0] :DFF; + HSY_LEN[7..0] :DFF; -- LÄNGE HSYNC PULS IN PIXEL_CLK + HSYNC_START :DFF; + LAST :DFF; -- LETZTES PIXEL EINER ZEILE ERREICHT + VSYNC :DFF; + VSYNC_START :DFFE; + VSYNC_I[2..0] :DFFE; + nBLANK :DFF; + DISP_ON :DFF; + DPO_ZL :DFFE; + DPO_ON :DFF; + DPO_OFF :DFF; + VDTRON :DFF; + VDO_ZL :DFFE; + VDO_ON :DFF; + VDO_OFF :DFF; + VHCNT[11..0] :DFF; + SUB_PIXEL_CNT[6..0] :DFFE; + VVCNT[10..0] :DFFE; + VERZ[2..0][9..0] :DFF; + RAND[6..0] :DFF; + RAND_ON :NODE; + FIFO_RDE :DFF; + CLR_FIFO :DFFE; + START_ZEILE :DFFE; + SYNC_PIX :DFF; + SYNC_PIX1 :DFF; + SYNC_PIX2 :DFF; + CCSEL[2..0] :DFF; + COLOR16 :NODE; + COLOR24 :NODE; +-- ATARI RESOLUTION + ATARI_SYNC :NODE; + ATARI_HH[31..0] :DFFE; -- HORIZONTAL TIMING 640x480 + ATARI_HH_CS :NODE; + ATARI_VH[31..0] :DFFE; -- VERTIKAL TIMING 640x480 + ATARI_VH_CS :NODE; + ATARI_HL[31..0] :DFFE; -- HORIZONTAL TIMING 320x240 + ATARI_HL_CS :NODE; + ATARI_VL[31..0] :DFFE; -- VERTIKAL TIMING 320x240 + ATARI_VL_CS :NODE; +-- HORIZONTAL + RAND_LINKS[11..0] :NODE; + HDIS_START[11..0] :NODE; + HDIS_END[11..0] :NODE; + RAND_RECHTS[11..0] :NODE; + HS_START[11..0] :NODE; + H_TOTAL[11..0] :NODE; + HDIS_LEN[11..0] :NODE; + MULF[5..0] :NODE; + VDL_HHT[11..0] :DFFE; + VDL_HHT_CS :NODE; + VDL_HBE[11..0] :DFFE; + VDL_HBE_CS :NODE; + VDL_HDB[11..0] :DFFE; + VDL_HDB_CS :NODE; + VDL_HDE[11..0] :DFFE; + VDL_HDE_CS :NODE; + VDL_HBB[11..0] :DFFE; + VDL_HBB_CS :NODE; + VDL_HSS[11..0] :DFFE; + VDL_HSS_CS :NODE; +-- VERTIKAL + RAND_OBEN[10..0] :NODE; + VDIS_START[10..0] :NODE; + VDIS_END[10..0] :NODE; + RAND_UNTEN[10..0] :NODE; + VS_START[10..0] :NODE; + V_TOTAL[10..0] :NODE; + FALCON_VIDEO :NODE; + ST_VIDEO :NODE; + INTER_ZEI :DFF; + DOP_ZEI :DFF; + DOP_FIFO_CLR :DFF; + + VDL_VBE[10..0] :DFFE; + VDL_VBE_CS :NODE; + VDL_VDB[10..0] :DFFE; + VDL_VDB_CS :NODE; + VDL_VDE[10..0] :DFFE; + VDL_VDE_CS :NODE; + VDL_VBB[10..0] :DFFE; + VDL_VBB_CS :NODE; + VDL_VSS[10..0] :DFFE; + VDL_VSS_CS :NODE; + VDL_VFT[10..0] :DFFE; + VDL_VFT_CS :NODE; + VDL_VCT[8..0] :DFFE; + VDL_VCT_CS :NODE; + VDL_VMD[3..0] :DFFE; + VDL_VMD_CS :NODE; + +BEGIN +-- BYT SELECT 32 BIT + FB_B0 = FB_ADR[1..0]==0; -- ADR==0 + FB_B1 = FB_ADR[1..0]==1 -- ADR==1 + # FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HIGH WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_ADR[1..0]==2 -- ADR==2 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_ADR[1..0]==3 -- ADR==3 + # FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LOW WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE +-- BYT SELECT 16 BIT + FB_16B0 = FB_ADR[0]==0; -- ADR==0 + FB_16B1 = FB_ADR[0]==1 -- ADR==1 + # !(!FB_SIZE1 & FB_SIZE0); -- NOT BYT +-- ACP CLUT -- + ACP_CLUT_CS = !nFB_CS2 & FB_ADR[27..10]==H"0"; -- 0-3FF/1024 + ACP_CLUT_RD = ACP_CLUT_CS & !nFB_OE; + ACP_CLUT_WR[] = FB_B[] & ACP_CLUT_CS & !nFB_WR; + CLUT_TA.CLK = MAIN_CLK; + CLUT_TA = (ACP_CLUT_CS # FALCON_CLUT_CS # ST_CLUT_CS) & !VIDEO_MOD_TA; +--FALCON CLUT -- + FALCON_CLUT_CS = !nFB_CS1 & FB_ADR[19..10]==H"3E6"; -- $F9800/$400 + FALCON_CLUT_RDH = FALCON_CLUT_CS & !nFB_OE & !FB_ADR1; -- HIGH WORD + FALCON_CLUT_RDL = FALCON_CLUT_CS & !nFB_OE & FB_ADR1; -- LOW WORD + FALCON_CLUT_WR[1..0] = FB_16B[] & !FB_ADR1 & FALCON_CLUT_CS & !nFB_WR; + FALCON_CLUT_WR[3..2] = FB_16B[] & FB_ADR1 & FALCON_CLUT_CS & !nFB_WR; +-- ST CLUT -- + ST_CLUT_CS = !nFB_CS1 & FB_ADR[19..5]==H"7C12"; -- $F8240/$20 + ST_CLUT_RD = ST_CLUT_CS & !nFB_OE; + ST_CLUT_WR[] = FB_16B[] & ST_CLUT_CS & !nFB_WR; +-- ST SHIFT MODE + ST_SHIFT_MODE[].CLK = MAIN_CLK; + ST_SHIFT_MODE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C130"; -- $F8260/2 + ST_SHIFT_MODE[] = FB_AD[25..24]; + ST_SHIFT_MODE[].ENA = ST_SHIFT_MODE_CS & !nFB_WR & FB_B0; + COLOR1 = ST_SHIFT_MODE[]==B"10" & !COLOR8 & ST_VIDEO & !ACP_VIDEO_ON; -- MONO + COLOR2 = ST_SHIFT_MODE[]==B"01" & !COLOR8 & ST_VIDEO & !ACP_VIDEO_ON; -- 4 FARBEN + COLOR4 = ST_SHIFT_MODE[]==B"00" & !COLOR8 & ST_VIDEO & !ACP_VIDEO_ON; -- 16 FARBEN +-- FALCON SHIFT MODE + FALCON_SHIFT_MODE[].CLK = MAIN_CLK; + FALCON_SHIFT_MODE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C133"; -- $F8266/2 + FALCON_SHIFT_MODE[] = FB_AD[26..16]; + FALCON_SHIFT_MODE[10..8].ENA = FALCON_SHIFT_MODE_CS & !nFB_WR & FB_B2; + FALCON_SHIFT_MODE[7..0].ENA = FALCON_SHIFT_MODE_CS & !nFB_WR & FB_B3; + CLUT_OFF[3..0] = FALCON_SHIFT_MODE[3..0] & COLOR4; + COLOR1 = FALCON_SHIFT_MODE10 & !COLOR16 & !COLOR8 & FALCON_VIDEO & !ACP_VIDEO_ON; + COLOR8 = FALCON_SHIFT_MODE4 & !COLOR16 & FALCON_VIDEO & !ACP_VIDEO_ON; + COLOR16 = FALCON_SHIFT_MODE8 & FALCON_VIDEO & !ACP_VIDEO_ON; + COLOR4 = !COLOR1 & !COLOR16 & !COLOR8 & FALCON_VIDEO & !ACP_VIDEO_ON; +-- ACP VIDEO CONTROL BIT 0=ACP VIDEO ON, 1=POWER ON VIDEO DAC, 2=ACP 24BIT,3=ACP 16BIT,4=ACP 8BIT,5=ACP 1BIT, 6=FALCON SHIFT MODE;7=ST SHIFT MODE;9..8= VCLK FREQUENZ;15=-SYNC ALLOWED; 31..16=VIDEO_RAM_CTR,25=RANDFARBE EINSCHALTEN, 26=STANDARD ATARI SYNCS + ACP_VCTR[].CLK = MAIN_CLK; + ACP_VCTR_CS = !nFB_CS2 & FB_ADR[27..2]==H"100"; -- $400/4 + ACP_VCTR[31..8] = FB_AD[31..8]; + ACP_VCTR[5..0] = FB_AD[5..0]; + ACP_VCTR[31..24].ENA = ACP_VCTR_CS & FB_B0 & !nFB_WR; + ACP_VCTR[23..16].ENA = ACP_VCTR_CS & FB_B1 & !nFB_WR; + ACP_VCTR[15..8].ENA = ACP_VCTR_CS & FB_B2 & !nFB_WR; + ACP_VCTR[5..0].ENA = ACP_VCTR_CS & FB_B3 & !nFB_WR; + ACP_VIDEO_ON = ACP_VCTR0; + nPD_VGA = ACP_VCTR1; + -- ATARI MODUS + ATARI_SYNC = ACP_VCTR26; -- WENN 1 AUTOMATISCHE AUFLÖSUNG + -- HORIZONTAL TIMING 640x480 + ATARI_HH[].CLK = MAIN_CLK; + ATARI_HH_CS = !nFB_CS2 & FB_ADR[27..2]==H"104"; -- $410/4 + ATARI_HH[] = FB_AD[]; + ATARI_HH[31..24].ENA = ATARI_HH_CS & FB_B0 & !nFB_WR; + ATARI_HH[23..16].ENA = ATARI_HH_CS & FB_B1 & !nFB_WR; + ATARI_HH[15..8].ENA = ATARI_HH_CS & FB_B2 & !nFB_WR; + ATARI_HH[7..0].ENA = ATARI_HH_CS & FB_B3 & !nFB_WR; + -- VERTIKAL TIMING 640x480 + ATARI_VH[].CLK = MAIN_CLK; + ATARI_VH_CS = !nFB_CS2 & FB_ADR[27..2]==H"105"; -- $414/4 + ATARI_VH[] = FB_AD[]; + ATARI_VH[31..24].ENA = ATARI_VH_CS & FB_B0 & !nFB_WR; + ATARI_VH[23..16].ENA = ATARI_VH_CS & FB_B1 & !nFB_WR; + ATARI_VH[15..8].ENA = ATARI_VH_CS & FB_B2 & !nFB_WR; + ATARI_VH[7..0].ENA = ATARI_VH_CS & FB_B3 & !nFB_WR; + -- HORIZONTAL TIMING 320x240 + ATARI_HL[].CLK = MAIN_CLK; + ATARI_HL_CS = !nFB_CS2 & FB_ADR[27..2]==H"106"; -- $418/4 + ATARI_HL[] = FB_AD[]; + ATARI_HL[31..24].ENA = ATARI_HL_CS & FB_B0 & !nFB_WR; + ATARI_HL[23..16].ENA = ATARI_HL_CS & FB_B1 & !nFB_WR; + ATARI_HL[15..8].ENA = ATARI_HL_CS & FB_B2 & !nFB_WR; + ATARI_HL[7..0].ENA = ATARI_HL_CS & FB_B3 & !nFB_WR; + -- VERTIKAL TIMING 320x240 + ATARI_VL[].CLK = MAIN_CLK; + ATARI_VL_CS = !nFB_CS2 & FB_ADR[27..2]==H"107"; -- $41C/4 + ATARI_VL[] = FB_AD[]; + ATARI_VL[31..24].ENA = ATARI_VL_CS & FB_B0 & !nFB_WR; + ATARI_VL[23..16].ENA = ATARI_VL_CS & FB_B1 & !nFB_WR; + ATARI_VL[15..8].ENA = ATARI_VL_CS & FB_B2 & !nFB_WR; + ATARI_VL[7..0].ENA = ATARI_VL_CS & FB_B3 & !nFB_WR; +-- VIDEO PLL CONFIG + VIDEO_PLL_CONFIG_CS = !nFB_CS2 & FB_ADR[27..9]==H"3" & FB_B0 & FB_B1; -- $(F)000'0600-7FF ->6/2 WORD RESP LONG ONLY + VR_WR.CLK = MAIN_CLK; + VR_WR = VIDEO_PLL_CONFIG_CS & !nFB_WR & !VR_BUSY & !VR_WR; + VR_RD = VIDEO_PLL_CONFIG_CS & nFB_WR & !VR_BUSY; + VR_DOUT[].CLK = MAIN_CLK; + VR_DOUT[].ENA = !VR_BUSY; + VR_DOUT[] = VR_D[]; + VR_FRQ[].CLK = MAIN_CLK; + VR_FRQ[].ENA = VR_WR & FB_ADR[8..0]==H"04"; + VR_FRQ[] = FB_AD[23..16]; +-- VIDEO PLL RECONFIG + VIDEO_PLL_RECONFIG_CS = !nFB_CS2 & FB_ADR[27..0]==H"800" & FB_B0; -- $(F)000'0800 + VIDEO_RECONFIG.CLK = MAIN_CLK; + VIDEO_RECONFIG = VIDEO_PLL_RECONFIG_CS & !nFB_WR & !VR_BUSY & !VIDEO_RECONFIG; +------------------------------------------------------------------------------------------------------------------------ + VIDEO_RAM_CTR[] = ACP_VCTR[31..16]; +-------------- COLOR MODE IM ACP SETZEN + COLOR1 = ACP_VCTR5 & !ACP_VCTR4 & !ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR8 = ACP_VCTR4 & !ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR16 = ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR24 = ACP_VCTR2 & ACP_VIDEO_ON; + ACP_CLUT = ACP_VIDEO_ON & (COLOR1 # COLOR8) # ST_VIDEO & COLOR1; +-- ST ODER FALCON SHIFT MODE SETZEN WENN WRITE X..SHIFT REGISTER + ACP_VCTR7 = FALCON_SHIFT_MODE_CS & !nFB_WR & !ACP_VIDEO_ON; + ACP_VCTR6 = ST_SHIFT_MODE_CS & !nFB_WR & !ACP_VIDEO_ON; + ACP_VCTR[7..6].ENA = FALCON_SHIFT_MODE_CS & !nFB_WR # ST_SHIFT_MODE_CS & !nFB_WR # ACP_VCTR_CS & FB_B3 & !nFB_WR & FB_AD0; + FALCON_VIDEO = ACP_VCTR7; + FALCON_CLUT = FALCON_VIDEO & !ACP_VIDEO_ON & !COLOR16; + ST_VIDEO = ACP_VCTR6; + ST_CLUT = ST_VIDEO & !ACP_VIDEO_ON & !FALCON_CLUT & !COLOR1; + CCSEL[].CLK = PIXEL_CLK; + CCSEL[] = B"000" & ST_CLUT -- ONLY FOR INFORMATION + # B"001" & FALCON_CLUT + # B"100" & ACP_CLUT + # B"101" & COLOR16 + # B"110" & COLOR24 + # B"111" & RAND_ON; +-- DIVERSE (VIDEO)-REGISTER ---------------------------- +-- RANDFARBE + CCR[].CLK = MAIN_CLK; + CCR_CS = !nFB_CS2 & FB_ADR[27..2]==H"101"; -- $404/4 + CCR[] = FB_AD[23..0]; + CCR[23..16].ENA = CCR_CS & FB_B1 & !nFB_WR; + CCR[15..8].ENA = CCR_CS & FB_B2 & !nFB_WR; + CCR[7..0].ENA = CCR_CS & FB_B3 & !nFB_WR; +--SYS CTR + SYS_CTR_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C003"; -- $8006/2 + SYS_CTR[].CLK = MAIN_CLK; + SYS_CTR[6..0] = FB_AD[22..16]; + SYS_CTR[6..0].ENA = SYS_CTR_CS & !nFB_WR & FB_B3; + BLITTER_ON = !SYS_CTR3; +--VDL_LOF + VDL_LOF_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C107"; -- $820E/2 + VDL_LOF[].CLK = MAIN_CLK; + VDL_LOF[] = FB_AD[31..16]; + VDL_LOF[15..8].ENA = VDL_LOF_CS & !nFB_WR & FB_B2; + VDL_LOF[7..0].ENA = VDL_LOF_CS & !nFB_WR & FB_B3; +--VDL_LWD + VDL_LWD_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C108"; -- $8210/2 + VDL_LWD[].CLK = MAIN_CLK; + VDL_LWD[] = FB_AD[31..16]; + VDL_LWD[15..8].ENA = VDL_LWD_CS & !nFB_WR & FB_B0; + VDL_LWD[7..0].ENA = VDL_LWD_CS & !nFB_WR & FB_B1; +-- HORIZONTAL +-- VDL_HHT + VDL_HHT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C141"; -- $8282/2 + VDL_HHT[].CLK = MAIN_CLK; + VDL_HHT[] = FB_AD[27..16]; + VDL_HHT[11..8].ENA = VDL_HHT_CS & !nFB_WR & FB_B2; + VDL_HHT[7..0].ENA = VDL_HHT_CS & !nFB_WR & FB_B3; +-- VDL_HBE + VDL_HBE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C143"; -- $8286/2 + VDL_HBE[].CLK = MAIN_CLK; + VDL_HBE[] = FB_AD[27..16]; + VDL_HBE[11..8].ENA = VDL_HBE_CS & !nFB_WR & FB_B2; + VDL_HBE[7..0].ENA = VDL_HBE_CS & !nFB_WR & FB_B3; +-- VDL_HDB + VDL_HDB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C144"; -- $8288/2 + VDL_HDB[].CLK = MAIN_CLK; + VDL_HDB[] = FB_AD[27..16]; + VDL_HDB[11..8].ENA = VDL_HDB_CS & !nFB_WR & FB_B0; + VDL_HDB[7..0].ENA = VDL_HDB_CS & !nFB_WR & FB_B1; +-- VDL_HDE + VDL_HDE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C145"; -- $828A/2 + VDL_HDE[].CLK = MAIN_CLK; + VDL_HDE[] = FB_AD[27..16]; + VDL_HDE[11..8].ENA = VDL_HDE_CS & !nFB_WR & FB_B2; + VDL_HDE[7..0].ENA = VDL_HDE_CS & !nFB_WR & FB_B3; +-- VDL_HBB + VDL_HBB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C142"; -- $8284/2 + VDL_HBB[].CLK = MAIN_CLK; + VDL_HBB[] = FB_AD[27..16]; + VDL_HBB[11..8].ENA = VDL_HBB_CS & !nFB_WR & FB_B0; + VDL_HBB[7..0].ENA = VDL_HBB_CS & !nFB_WR & FB_B1; +-- VDL_HSS + VDL_HSS_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C146"; -- $828C/2 + VDL_HSS[].CLK = MAIN_CLK; + VDL_HSS[] = FB_AD[27..16]; + VDL_HSS[11..8].ENA = VDL_HSS_CS & !nFB_WR & FB_B0; + VDL_HSS[7..0].ENA = VDL_HSS_CS & !nFB_WR & FB_B1; +-- VERTIKAL +-- VDL_VBE + VDL_VBE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C153"; -- $82A6/2 + VDL_VBE[].CLK = MAIN_CLK; + VDL_VBE[] = FB_AD[26..16]; + VDL_VBE[10..8].ENA = VDL_VBE_CS & !nFB_WR & FB_B2; + VDL_VBE[7..0].ENA = VDL_VBE_CS & !nFB_WR & FB_B3; +-- VDL_VDB + VDL_VDB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C154"; -- $82A8/2 + VDL_VDB[].CLK = MAIN_CLK; + VDL_VDB[] = FB_AD[26..16]; + VDL_VDB[10..8].ENA = VDL_VDB_CS & !nFB_WR & FB_B0; + VDL_VDB[7..0].ENA = VDL_VDB_CS & !nFB_WR & FB_B1; +-- VDL_VDE + VDL_VDE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C155"; -- $82AA/2 + VDL_VDE[].CLK = MAIN_CLK; + VDL_VDE[] = FB_AD[26..16]; + VDL_VDE[10..8].ENA = VDL_VDE_CS & !nFB_WR & FB_B2; + VDL_VDE[7..0].ENA = VDL_VDE_CS & !nFB_WR & FB_B3; +-- VDL_VBB + VDL_VBB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C152"; -- $82A4/2 + VDL_VBB[].CLK = MAIN_CLK; + VDL_VBB[] = FB_AD[26..16]; + VDL_VBB[10..8].ENA = VDL_VBB_CS & !nFB_WR & FB_B0; + VDL_VBB[7..0].ENA = VDL_VBB_CS & !nFB_WR & FB_B1; +-- VDL_VSS + VDL_VSS_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C156"; -- $82AC/2 + VDL_VSS[].CLK = MAIN_CLK; + VDL_VSS[] = FB_AD[26..16]; + VDL_VSS[10..8].ENA = VDL_VSS_CS & !nFB_WR & FB_B0; + VDL_VSS[7..0].ENA = VDL_VSS_CS & !nFB_WR & FB_B1; +-- VDL_VFT + VDL_VFT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C151"; -- $82A2/2 + VDL_VFT[].CLK = MAIN_CLK; + VDL_VFT[] = FB_AD[26..16]; + VDL_VFT[10..8].ENA = VDL_VFT_CS & !nFB_WR & FB_B2; + VDL_VFT[7..0].ENA = VDL_VFT_CS & !nFB_WR & FB_B3; +-- VDL_VCT + VDL_VCT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C160"; -- $82C0/2 + VDL_VCT[].CLK = MAIN_CLK; + VDL_VCT[] = FB_AD[24..16]; + VDL_VCT[8].ENA = VDL_VCT_CS & !nFB_WR & FB_B0; + VDL_VCT[7..0].ENA = VDL_VCT_CS & !nFB_WR & FB_B1; +-- VDL_VMD + VDL_VMD_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C161"; -- $82C2/2 + VDL_VMD[].CLK = MAIN_CLK; + VDL_VMD[] = FB_AD[19..16]; + VDL_VMD[3..0].ENA = VDL_VMD_CS & !nFB_WR & FB_B3; +--- REGISTER OUT + FB_AD[31..16] = lpm_bustri_WORD( + ST_SHIFT_MODE_CS & (0,ST_SHIFT_MODE[],B"00000000") + # FALCON_SHIFT_MODE_CS & (0,FALCON_SHIFT_MODE[]) + # SYS_CTR_CS & (B"100000000",SYS_CTR[6..4],!BLITTER_RUN,SYS_CTR[2..0]) + # VDL_LOF_CS & VDL_LOF[] + # VDL_LWD_CS & VDL_LWD[] + # VDL_HBE_CS & (0,VDL_HBE[]) + # VDL_HDB_CS & (0,VDL_HDB[]) + # VDL_HDE_CS & (0,VDL_HDE[]) + # VDL_HBB_CS & (0,VDL_HBB[]) + # VDL_HSS_CS & (0,VDL_HSS[]) + # VDL_HHT_CS & (0,VDL_HHT[]) + # VDL_VBE_CS & (0,VDL_VBE[]) + # VDL_VDB_CS & (0,VDL_VDB[]) + # VDL_VDE_CS & (0,VDL_VDE[]) + # VDL_VBB_CS & (0,VDL_VBB[]) + # VDL_VSS_CS & (0,VDL_VSS[]) + # VDL_VFT_CS & (0,VDL_VFT[]) + # VDL_VCT_CS & (0,VDL_VCT[]) + # VDL_VMD_CS & (0,VDL_VMD[]) + # ACP_VCTR_CS & ACP_VCTR[31..16] + # ATARI_HH_CS & ATARI_HH[31..16] + # ATARI_VH_CS & ATARI_VH[31..16] + # ATARI_HL_CS & ATARI_HL[31..16] + # ATARI_VL_CS & ATARI_VL[31..16] + # CCR_CS & (0,CCR[23..16]) + # VIDEO_PLL_CONFIG_CS & (0,VR_DOUT[]) + # VIDEO_PLL_RECONFIG_CS & (VR_BUSY,B"0000",VR_WR,VR_RD,VIDEO_RECONFIG,H"FA") + ,(ST_SHIFT_MODE_CS # FALCON_SHIFT_MODE_CS # ACP_VCTR_CS # CCR_CS # SYS_CTR_CS # VDL_LOF_CS # VDL_LWD_CS + # VDL_HBE_CS # VDL_HDB_CS # VDL_HDE_CS # VDL_HBB_CS # VDL_HSS_CS # VDL_HHT_CS + # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS # VIDEO_PLL_CONFIG_CS # VIDEO_PLL_RECONFIG_CS + # VDL_VBE_CS # VDL_VDB_CS # VDL_VDE_CS # VDL_VBB_CS # VDL_VSS_CS # VDL_VFT_CS # VDL_VCT_CS # VDL_VMD_CS) & !nFB_OE); + + FB_AD[15..0] = lpm_bustri_WORD( + ACP_VCTR_CS & ACP_VCTR[15..0] + # ATARI_HH_CS & ATARI_HH[15..0] + # ATARI_VH_CS & ATARI_VH[15..0] + # ATARI_HL_CS & ATARI_HL[15..0] + # ATARI_VL_CS & ATARI_VL[15..0] + # CCR_CS & CCR[15..0] + ,(ACP_VCTR_CS # CCR_CS # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS ) & !nFB_OE); + + VIDEO_MOD_TA = CLUT_TA # ST_SHIFT_MODE_CS # FALCON_SHIFT_MODE_CS # ACP_VCTR_CS # SYS_CTR_CS # VDL_LOF_CS # VDL_LWD_CS + # VDL_HBE_CS # VDL_HDB_CS # VDL_HDE_CS # VDL_HBB_CS # VDL_HSS_CS # VDL_HHT_CS + # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS + # VDL_VBE_CS # VDL_VDB_CS # VDL_VDE_CS # VDL_VBB_CS # VDL_VSS_CS # VDL_VFT_CS # VDL_VCT_CS # VDL_VMD_CS; + +-- VIDEO AUSGABE SETZEN + CLK17M.CLK = CLK33M; + CLK17M = !CLK17M; + CLK13M.CLK = CLK25M; + CLK13M = !CLK13M; + PIXEL_CLK = CLK13M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & VDL_VCT2 # VDL_VCT0) + # CLK17M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & !VDL_VCT2 # VDL_VCT0) + # CLK25M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & VDL_VCT2 & !VDL_VCT0 + # CLK33M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & !VDL_VCT2 & !VDL_VCT0 + # CLK25M & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"00" + # CLK33M & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"01" + # CLK_VIDEO & ACP_VIDEO_ON & ACP_VCTR[9]; +-------------------------------------------------------------- +-- HORIZONTALE SYNC LÄNGE in PIXEL_CLK +---------------------------------------------------------------- + HSY_LEN[].CLK = MAIN_CLK; + HSY_LEN[] = 14 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & VDL_VCT2 # VDL_VCT0) + # 16 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & !VDL_VCT2 # VDL_VCT0) + # 28 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & VDL_VCT2 & !VDL_VCT0 + # 32 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & !VDL_VCT2 & !VDL_VCT0 + # 28 & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"00" + # 32 & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"01" + # 16 + (0,VR_FRQ[7..1]) & ACP_VIDEO_ON & ACP_VCTR[9]; -- hsync puls length in pixeln=frequenz/ = 500ns + + MULF[] = 2 & !ST_VIDEO & VDL_VMD2 -- MULTIPLIKATIONS FAKTOR + # 4 & !ST_VIDEO & !VDL_VMD2 + # 16 & ST_VIDEO & VDL_VMD2 + # 32 & ST_VIDEO & !VDL_VMD2; + + + HDIS_LEN[] = 320 & VDL_VMD2 -- BREITE IN PIXELN + # 640 & !VDL_VMD2; + +-- DOPPELZEILENMODUS + DOP_ZEI.CLK = MAIN_CLK; + DOP_ZEI = VDL_VMD0 & ST_VIDEO; -- ZEILENVERDOPPELUNG EIN AUS + INTER_ZEI.CLK = PIXEL_CLK; + INTER_ZEI = DOP_ZEI & VVCNT0!=VDIS_START0 & VVCNT[]!=0 & VHCNT[]<(HDIS_END[]-1) -- EINSCHIEBEZEILE AUF "DOPPEL" ZEILEN UND ZEILE NULL WEGEN SYNC + # DOP_ZEI & VVCNT0==VDIS_START0 & VVCNT[]!=0 & VHCNT[]>(HDIS_END[]-2); -- EINSCHIEBEZEILE AUF "NORMAL" ZEILEN UND ZEILE NULL WEGEN SYNC + DOP_FIFO_CLR.CLK = PIXEL_CLK; + DOP_FIFO_CLR = INTER_ZEI & HSYNC_START # SYNC_PIX; -- DOPPELZEILENFIFO LÖSCHEN AM ENDE DER DOPPELZEILE UND BEI MAIN FIFO START + + RAND_LINKS[] = VDL_HBE[] & ACP_VIDEO_ON + # 21 & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # 42 & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # VDL_HBE[] * (0,MULF[5..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; -- + HDIS_START[] = VDL_HDB[] & ACP_VIDEO_ON + # RAND_LINKS[]+1 & !ACP_VIDEO_ON; -- + HDIS_END[] = VDL_HDE[] & ACP_VIDEO_ON + # RAND_LINKS[]+HDIS_LEN[] & !ACP_VIDEO_ON; -- + RAND_RECHTS[] = VDL_HBB[] & ACP_VIDEO_ON + # HDIS_END[]+1 & !ACP_VIDEO_ON; -- + HS_START[] = VDL_HSS[] & ACP_VIDEO_ON + # ATARI_HL[11..0] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_HH[11..0] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (VDL_HHT[]+1+VDL_HSS[]) * (0,MULF[5..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; -- + H_TOTAL[] = VDL_HHT[] & ACP_VIDEO_ON + # ATARI_HL[27..16] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_HH[27..16] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (VDL_HHT[]+2) * (0,MULF[]) & !ACP_VIDEO_ON & !ATARI_SYNC; -- + + RAND_OBEN[] = VDL_VBE[] & ACP_VIDEO_ON + # 31 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VBE[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + VDIS_START[] = VDL_VDB[] & ACP_VIDEO_ON + # 32 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VDB[10..1])+1 & !ACP_VIDEO_ON & !ATARI_SYNC; + VDIS_END[] = VDL_VDE[] & ACP_VIDEO_ON + # 431 & !ACP_VIDEO_ON & ATARI_SYNC & ST_VIDEO + # 511 & !ACP_VIDEO_ON & ATARI_SYNC & !ST_VIDEO + # (0,VDL_VDE[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + RAND_UNTEN[] = VDL_VBB[] & ACP_VIDEO_ON + # VDIS_END[]+1 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VBB[10..1])+1 & !ACP_VIDEO_ON & !ATARI_SYNC; + VS_START[] = VDL_VSS[] & ACP_VIDEO_ON + # ATARI_VL[10..0] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_VH[10..0] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (0,VDL_VSS[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + V_TOTAL[] = VDL_VFT[] & ACP_VIDEO_ON + # ATARI_VL[26..16] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_VH[26..16] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (0,VDL_VFT[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; +-- ZÄHLER + LAST.CLK = PIXEL_CLK; + LAST = VHCNT[]==(H_TOTAL[]-2); + VHCNT[].CLK = PIXEL_CLK; + VHCNT[] = (VHCNT[] + 1) & !LAST; + VVCNT[].CLK = PIXEL_CLK; + VVCNT[].ENA = LAST; + VVCNT[] = (VVCNT[] + 1) & (VVCNT[]!=V_TOTAL[]-1); +-- DISPLAY ON OFF + DPO_ZL.CLK = PIXEL_CLK; + DPO_ZL = (VVCNT[]>RAND_OBEN[]-1) & (VVCNT[]=(VDIS_START[]-1)) & (VVCNT[]6/2 WORD RESP LONG ONLY + assign VIDEO_PLL_CONFIG_CS = (!nFB_CS2) & FB_ADR[27:9] == 19'h3 & FB_B[0] & + FB_B[1]; + assign VR_WR_clk = MAIN_CLK; + assign VR_WR_d = VIDEO_PLL_CONFIG_CS & (!nFB_WR) & (!VR_BUSY) & (!VR_WR_q); + assign VR_RD = VIDEO_PLL_CONFIG_CS & nFB_WR & (!VR_BUSY); + assign VR_DOUT0_clk_ctrl = MAIN_CLK; + assign VR_DOUT0_ena_ctrl = !VR_BUSY; + assign VR_DOUT_d = VR_D; + assign VR_FRQ0_clk_ctrl = MAIN_CLK; + assign VR_FRQ0_ena_ctrl = VR_WR_q & FB_ADR[8:0] == 9'b0_0000_0100; + assign VR_FRQ_d = FB_AD[23:16]; + +// VIDEO PLL RECONFIG +// $(F)000'0800 + assign VIDEO_PLL_RECONFIG_CS = (!nFB_CS2) & FB_ADR[27:0] == 28'h800 & + FB_B[0]; + assign VIDEO_RECONFIG_clk = MAIN_CLK; + assign VIDEO_RECONFIG_d = VIDEO_PLL_RECONFIG_CS & (!nFB_WR) & (!VR_BUSY) & + (!VIDEO_RECONFIG_q); + +// ---------------------------------------------------------------------------------------------------------------------- + assign VIDEO_RAM_CTR = ACP_VCTR_q[31:16]; + +// ------------ COLOR MODE IM ACP SETZEN + assign COLOR1_3 = ACP_VCTR_q[5] & (!ACP_VCTR_q[4]) & (!ACP_VCTR_q[3]) & + (!ACP_VCTR_q[2]) & ACP_VIDEO_ON; + assign COLOR8_2 = ACP_VCTR_q[4] & (!ACP_VCTR_q[3]) & (!ACP_VCTR_q[2]) & + ACP_VIDEO_ON; + assign COLOR16_2 = ACP_VCTR_q[3] & (!ACP_VCTR_q[2]) & ACP_VIDEO_ON; + assign COLOR24 = ACP_VCTR_q[2] & ACP_VIDEO_ON; + assign ACP_CLUT = (ACP_VIDEO_ON & (COLOR1 | COLOR8)) | (ST_VIDEO & COLOR1); + +// ST ODER FALCON SHIFT MODE SETZEN WENN WRITE X..SHIFT REGISTER + assign ACP_VCTR_d[7] = FALCON_SHIFT_MODE_CS & (!nFB_WR) & (!ACP_VIDEO_ON); + assign ACP_VCTR_d[6] = ST_SHIFT_MODE_CS & (!nFB_WR) & (!ACP_VIDEO_ON); + assign ACP_VCTR6_ena_ctrl = (FALCON_SHIFT_MODE_CS & (!nFB_WR)) | + (ST_SHIFT_MODE_CS & (!nFB_WR)) | (ACP_VCTR_CS & FB_B[3] & (!nFB_WR) & + FB_AD[0]); + assign FALCON_VIDEO = ACP_VCTR_q[7]; + assign FALCON_CLUT = FALCON_VIDEO & (!ACP_VIDEO_ON) & (!COLOR16); + assign ST_VIDEO = ACP_VCTR_q[6]; + assign ST_CLUT = ST_VIDEO & (!ACP_VIDEO_ON) & (!FALCON_CLUT) & (!COLOR1); + assign CCSEL0_clk_ctrl = PIXEL_CLK; + +// ONLY FOR INFORMATION + assign CCSEL_d = (3'b000 & {3{ST_CLUT}}) | (3'b001 & {3{FALCON_CLUT}}) | + (3'b100 & {3{ACP_CLUT}}) | (3'b101 & {3{COLOR16}}) | (3'b110 & + {3{COLOR24}}) | (3'b111 & {3{RAND_ON}}); + +// DIVERSE (VIDEO)-REGISTER ---------------------------- +// RANDFARBE + assign CCR0_clk_ctrl = MAIN_CLK; + +// $404/4 + assign CCR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h101; + assign CCR_d = FB_AD[23:0]; + assign CCR16_ena_ctrl = CCR_CS & FB_B[1] & (!nFB_WR); + assign CCR8_ena_ctrl = CCR_CS & FB_B[2] & (!nFB_WR); + assign CCR0_ena_ctrl = CCR_CS & FB_B[3] & (!nFB_WR); + +// SYS CTR +// $8006/2 + assign SYS_CTR_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C003; + assign SYS_CTR0_clk_ctrl = MAIN_CLK; + assign SYS_CTR_d = FB_AD[22:16]; + assign SYS_CTR0_ena_ctrl = SYS_CTR_CS & (!nFB_WR) & FB_B[3]; + assign BLITTER_ON = !SYS_CTR_q[3]; + +// VDL_LOF +// $820E/2 + assign VDL_LOF_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C107; + assign VDL_LOF0_clk_ctrl = MAIN_CLK; + assign VDL_LOF_d = FB_AD[31:16]; + assign VDL_LOF8_ena_ctrl = VDL_LOF_CS & (!nFB_WR) & FB_B[2]; + assign VDL_LOF0_ena_ctrl = VDL_LOF_CS & (!nFB_WR) & FB_B[3]; + +// VDL_LWD +// $8210/2 + assign VDL_LWD_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C108; + assign VDL_LWD0_clk_ctrl = MAIN_CLK; + assign VDL_LWD_d = FB_AD[31:16]; + assign VDL_LWD8_ena_ctrl = VDL_LWD_CS & (!nFB_WR) & FB_B[0]; + assign VDL_LWD0_ena_ctrl = VDL_LWD_CS & (!nFB_WR) & FB_B[1]; + +// HORIZONTAL +// VDL_HHT +// $8282/2 + assign VDL_HHT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C141; + assign VDL_HHT0_clk_ctrl = MAIN_CLK; + assign VDL_HHT_d = FB_AD[27:16]; + assign VDL_HHT8_ena_ctrl = VDL_HHT_CS & (!nFB_WR) & FB_B[2]; + assign VDL_HHT0_ena_ctrl = VDL_HHT_CS & (!nFB_WR) & FB_B[3]; + +// VDL_HBE +// $8286/2 + assign VDL_HBE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C143; + assign VDL_HBE0_clk_ctrl = MAIN_CLK; + assign VDL_HBE_d = FB_AD[27:16]; + assign VDL_HBE8_ena_ctrl = VDL_HBE_CS & (!nFB_WR) & FB_B[2]; + assign VDL_HBE0_ena_ctrl = VDL_HBE_CS & (!nFB_WR) & FB_B[3]; + +// VDL_HDB +// $8288/2 + assign VDL_HDB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C144; + assign VDL_HDB0_clk_ctrl = MAIN_CLK; + assign VDL_HDB_d = FB_AD[27:16]; + assign VDL_HDB8_ena_ctrl = VDL_HDB_CS & (!nFB_WR) & FB_B[0]; + assign VDL_HDB0_ena_ctrl = VDL_HDB_CS & (!nFB_WR) & FB_B[1]; + +// VDL_HDE +// $828A/2 + assign VDL_HDE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C145; + assign VDL_HDE0_clk_ctrl = MAIN_CLK; + assign VDL_HDE_d = FB_AD[27:16]; + assign VDL_HDE8_ena_ctrl = VDL_HDE_CS & (!nFB_WR) & FB_B[2]; + assign VDL_HDE0_ena_ctrl = VDL_HDE_CS & (!nFB_WR) & FB_B[3]; + +// VDL_HBB +// $8284/2 + assign VDL_HBB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C142; + assign VDL_HBB0_clk_ctrl = MAIN_CLK; + assign VDL_HBB_d = FB_AD[27:16]; + assign VDL_HBB8_ena_ctrl = VDL_HBB_CS & (!nFB_WR) & FB_B[0]; + assign VDL_HBB0_ena_ctrl = VDL_HBB_CS & (!nFB_WR) & FB_B[1]; + +// VDL_HSS +// $828C/2 + assign VDL_HSS_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C146; + assign VDL_HSS0_clk_ctrl = MAIN_CLK; + assign VDL_HSS_d = FB_AD[27:16]; + assign VDL_HSS8_ena_ctrl = VDL_HSS_CS & (!nFB_WR) & FB_B[0]; + assign VDL_HSS0_ena_ctrl = VDL_HSS_CS & (!nFB_WR) & FB_B[1]; + +// VERTIKAL +// VDL_VBE +// $82A6/2 + assign VDL_VBE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C153; + assign VDL_VBE0_clk_ctrl = MAIN_CLK; + assign VDL_VBE_d = FB_AD[26:16]; + assign VDL_VBE8_ena_ctrl = VDL_VBE_CS & (!nFB_WR) & FB_B[2]; + assign VDL_VBE0_ena_ctrl = VDL_VBE_CS & (!nFB_WR) & FB_B[3]; + +// VDL_VDB +// $82A8/2 + assign VDL_VDB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C154; + assign VDL_VDB0_clk_ctrl = MAIN_CLK; + assign VDL_VDB_d = FB_AD[26:16]; + assign VDL_VDB8_ena_ctrl = VDL_VDB_CS & (!nFB_WR) & FB_B[0]; + assign VDL_VDB0_ena_ctrl = VDL_VDB_CS & (!nFB_WR) & FB_B[1]; + +// VDL_VDE +// $82AA/2 + assign VDL_VDE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C155; + assign VDL_VDE0_clk_ctrl = MAIN_CLK; + assign VDL_VDE_d = FB_AD[26:16]; + assign VDL_VDE8_ena_ctrl = VDL_VDE_CS & (!nFB_WR) & FB_B[2]; + assign VDL_VDE0_ena_ctrl = VDL_VDE_CS & (!nFB_WR) & FB_B[3]; + +// VDL_VBB +// $82A4/2 + assign VDL_VBB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C152; + assign VDL_VBB0_clk_ctrl = MAIN_CLK; + assign VDL_VBB_d = FB_AD[26:16]; + assign VDL_VBB8_ena_ctrl = VDL_VBB_CS & (!nFB_WR) & FB_B[0]; + assign VDL_VBB0_ena_ctrl = VDL_VBB_CS & (!nFB_WR) & FB_B[1]; + +// VDL_VSS +// $82AC/2 + assign VDL_VSS_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C156; + assign VDL_VSS0_clk_ctrl = MAIN_CLK; + assign VDL_VSS_d = FB_AD[26:16]; + assign VDL_VSS8_ena_ctrl = VDL_VSS_CS & (!nFB_WR) & FB_B[0]; + assign VDL_VSS0_ena_ctrl = VDL_VSS_CS & (!nFB_WR) & FB_B[1]; + +// VDL_VFT +// $82A2/2 + assign VDL_VFT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C151; + assign VDL_VFT0_clk_ctrl = MAIN_CLK; + assign VDL_VFT_d = FB_AD[26:16]; + assign VDL_VFT8_ena_ctrl = VDL_VFT_CS & (!nFB_WR) & FB_B[2]; + assign VDL_VFT0_ena_ctrl = VDL_VFT_CS & (!nFB_WR) & FB_B[3]; + +// VDL_VCT +// $82C0/2 + assign VDL_VCT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C160; + assign VDL_VCT0_clk_ctrl = MAIN_CLK; + assign VDL_VCT_d = FB_AD[24:16]; + assign VDL_VCT8_ena = VDL_VCT_CS & (!nFB_WR) & FB_B[0]; + assign VDL_VCT0_ena_ctrl = VDL_VCT_CS & (!nFB_WR) & FB_B[1]; + +// VDL_VMD +// $82C2/2 + assign VDL_VMD_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C161; + assign VDL_VMD0_clk_ctrl = MAIN_CLK; + assign VDL_VMD_d = FB_AD[19:16]; + assign VDL_VMD0_ena_ctrl = VDL_VMD_CS & (!nFB_WR) & FB_B[3]; + +// - REGISTER OUT + assign u0_data = ({16{ST_SHIFT_MODE_CS}} & {6'b00_0000, ST_SHIFT_MODE_q, + 8'b0000_0000}) | ({16{FALCON_SHIFT_MODE_CS}} & {5'b0_0000, + FALCON_SHIFT_MODE_q}) | ({16{SYS_CTR_CS}} & {9'b1_0000_0000, + SYS_CTR_q[6:4], !BLITTER_RUN, SYS_CTR_q[2:0]}) | ({16{VDL_LOF_CS}} & + VDL_LOF_q) | ({16{VDL_LWD_CS}} & VDL_LWD_q) | ({16{VDL_HBE_CS}} & + {4'b0000, VDL_HBE_q}) | ({16{VDL_HDB_CS}} & {4'b0000, VDL_HDB_q}) | + ({16{VDL_HDE_CS}} & {4'b0000, VDL_HDE_q}) | ({16{VDL_HBB_CS}} & + {4'b0000, VDL_HBB_q}) | ({16{VDL_HSS_CS}} & {4'b0000, VDL_HSS_q}) | + ({16{VDL_HHT_CS}} & {4'b0000, VDL_HHT_q}) | ({16{VDL_VBE_CS}} & + {5'b0_0000, VDL_VBE_q}) | ({16{VDL_VDB_CS}} & {5'b0_0000, VDL_VDB_q}) + | ({16{VDL_VDE_CS}} & {5'b0_0000, VDL_VDE_q}) | ({16{VDL_VBB_CS}} & + {5'b0_0000, VDL_VBB_q}) | ({16{VDL_VSS_CS}} & {5'b0_0000, VDL_VSS_q}) + | ({16{VDL_VFT_CS}} & {5'b0_0000, VDL_VFT_q}) | ({16{VDL_VCT_CS}} & + {7'b000_0000, VDL_VCT_q}) | ({16{VDL_VMD_CS}} & {12'b0000_0000_0000, + VDL_VMD_q}) | ({16{ACP_VCTR_CS}} & ACP_VCTR_q[31:16]) | + ({16{ATARI_HH_CS}} & ATARI_HH_q[31:16]) | ({16{ATARI_VH_CS}} & + ATARI_VH_q[31:16]) | ({16{ATARI_HL_CS}} & ATARI_HL_q[31:16]) | + ({16{ATARI_VL_CS}} & ATARI_VL_q[31:16]) | ({16{CCR_CS}} & + {8'b0000_0000, CCR_q[23:16]}) | ({16{VIDEO_PLL_CONFIG_CS}} & + {7'b000_0000, VR_DOUT_q}) | ({16{VIDEO_PLL_RECONFIG_CS}} & {VR_BUSY, + 4'b0000, VR_WR_q, VR_RD, VIDEO_RECONFIG_q, 8'b1111_1010}); + assign u0_enabledt = (ST_SHIFT_MODE_CS | FALCON_SHIFT_MODE_CS | ACP_VCTR_CS + | CCR_CS | SYS_CTR_CS | VDL_LOF_CS | VDL_LWD_CS | VDL_HBE_CS | + VDL_HDB_CS | VDL_HDE_CS | VDL_HBB_CS | VDL_HSS_CS | VDL_HHT_CS | + ATARI_HH_CS | ATARI_VH_CS | ATARI_HL_CS | ATARI_VL_CS | + VIDEO_PLL_CONFIG_CS | VIDEO_PLL_RECONFIG_CS | VDL_VBE_CS | VDL_VDB_CS + | VDL_VDE_CS | VDL_VBB_CS | VDL_VSS_CS | VDL_VFT_CS | VDL_VCT_CS | + VDL_VMD_CS) & (!nFB_OE); + //GE assign FB_AD[31:16] = u0_tridata; + assign FB_AD[31:16] = (u0_enabledt ? u0_data : 16'bzzzz_zzzz_zzzz_zzzz); + assign u1_data = ({16{ACP_VCTR_CS}} & ACP_VCTR_q[15:0]) | ({16{ATARI_HH_CS}} + & ATARI_HH_q[15:0]) | ({16{ATARI_VH_CS}} & ATARI_VH_q[15:0]) | + ({16{ATARI_HL_CS}} & ATARI_HL_q[15:0]) | ({16{ATARI_VL_CS}} & + ATARI_VL_q[15:0]) | ({16{CCR_CS}} & CCR_q[15:0]); + assign u1_enabledt = (ACP_VCTR_CS | CCR_CS | ATARI_HH_CS | ATARI_VH_CS | + ATARI_HL_CS | ATARI_VL_CS) & (!nFB_OE); + //GE assign FB_AD[15:0] = u1_tridata; + assign FB_AD[15:0] = (u1_enabledt ? u1_data : 16'bzzzz_zzzz_zzzz_zzzz); + + assign VIDEO_MOD_TA = CLUT_TA_q | ST_SHIFT_MODE_CS | FALCON_SHIFT_MODE_CS | + ACP_VCTR_CS | SYS_CTR_CS | VDL_LOF_CS | VDL_LWD_CS | VDL_HBE_CS | + VDL_HDB_CS | VDL_HDE_CS | VDL_HBB_CS | VDL_HSS_CS | VDL_HHT_CS | + ATARI_HH_CS | ATARI_VH_CS | ATARI_HL_CS | ATARI_VL_CS | VDL_VBE_CS | + VDL_VDB_CS | VDL_VDE_CS | VDL_VBB_CS | VDL_VSS_CS | VDL_VFT_CS | + VDL_VCT_CS | VDL_VMD_CS; + +// VIDEO AUSGABE SETZEN + assign CLK17M_clk = CLK33M; + assign CLK17M_d = !CLK17M_q; + assign CLK13M_clk = CLK25M; + assign CLK13M_d = !CLK13M_q; + assign PIXEL_CLK = (CLK13M_q & (!ACP_VIDEO_ON) & (FALCON_VIDEO | ST_VIDEO) & + ((VDL_VMD_q[2] & VDL_VCT_q[2]) | VDL_VCT_q[0])) | (CLK17M_q & + (!ACP_VIDEO_ON) & (FALCON_VIDEO | ST_VIDEO) & ((VDL_VMD_q[2] & + (!VDL_VCT_q[2])) | VDL_VCT_q[0])) | (CLK25M & (!ACP_VIDEO_ON) & + (FALCON_VIDEO | ST_VIDEO) & (!VDL_VMD_q[2]) & VDL_VCT_q[2] & + (!VDL_VCT_q[0])) | (CLK33M & (!ACP_VIDEO_ON) & (FALCON_VIDEO | + ST_VIDEO) & (!VDL_VMD_q[2]) & (!VDL_VCT_q[2]) & (!VDL_VCT_q[0])) | + (CLK25M & ACP_VIDEO_ON & ACP_VCTR_q[9:8] == 2'b00) | (CLK33M & + ACP_VIDEO_ON & ACP_VCTR_q[9:8] == 2'b01) | (CLK_VIDEO & ACP_VIDEO_ON & + ACP_VCTR_q[9]); + +// ------------------------------------------------------------ +// HORIZONTALE SYNC LÄNGE in PIXEL_CLK +// -------------------------------------------------------------- + assign HSY_LEN0_clk_ctrl = MAIN_CLK; + +// hsync puls length in pixeln=frequenz/ = 500ns + assign HSY_LEN_d = (8'b0000_1110 & {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | + {8{ST_VIDEO}}) & (({8{VDL_VMD_q[2]}} & {8{VDL_VCT_q[2]}}) | + {8{VDL_VCT_q[0]}})) | (8'b0001_0000 & {8{!ACP_VIDEO_ON}} & + ({8{FALCON_VIDEO}} | {8{ST_VIDEO}}) & (({8{VDL_VMD_q[2]}} & + {8{!VDL_VCT_q[2]}}) | {8{VDL_VCT_q[0]}})) | (8'b0001_1100 & + {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | {8{ST_VIDEO}}) & + {8{!VDL_VMD_q[2]}} & {8{VDL_VCT_q[2]}} & {8{!VDL_VCT_q[0]}}) | + (8'b0010_0000 & {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | + {8{ST_VIDEO}}) & {8{!VDL_VMD_q[2]}} & {8{!VDL_VCT_q[2]}} & + {8{!VDL_VCT_q[0]}}) | (8'b0001_1100 & {8{ACP_VIDEO_ON}} & + {8{ACP_VCTR_q[9:8] == 2'b00}}) | (8'b0010_0000 & {8{ACP_VIDEO_ON}} & + {8{ACP_VCTR_q[9:8] == 2'b01}}) | ((8'b0001_0000 + {1'b0, + VR_FRQ_q[7:1]}) & {8{ACP_VIDEO_ON}} & {8{ACP_VCTR_q[9]}}); + +// MULTIPLIKATIONS FAKTOR + assign MULF = (6'b00_0010 & {6{!ST_VIDEO}} & {6{VDL_VMD_q[2]}}) | + (6'b00_0100 & {6{!ST_VIDEO}} & {6{!VDL_VMD_q[2]}}) | (6'b01_0000 & + {6{ST_VIDEO}} & {6{VDL_VMD_q[2]}}) | (6'b10_0000 & {6{ST_VIDEO}} & + {6{!VDL_VMD_q[2]}}); + +// BREITE IN PIXELN + assign HDIS_LEN = (12'b0001_0100_0000 & {12{VDL_VMD_q[2]}}) | + (12'b0010_1000_0000 & {12{!VDL_VMD_q[2]}}); + +// DOPPELZEILENMODUS + assign DOP_ZEI_clk = MAIN_CLK; + +// ZEILENVERDOPPELUNG EIN AUS + assign DOP_ZEI_d = VDL_VMD_q[0] & ST_VIDEO; + assign INTER_ZEI_clk = PIXEL_CLK; + +// EINSCHIEBEZEILE AUF "DOPPEL" ZEILEN UND ZEILE NULL WEGEN SYNC +// EINSCHIEBEZEILE AUF "NORMAL" ZEILEN UND ZEILE NULL WEGEN SYNC + assign INTER_ZEI_d = (DOP_ZEI_q & VVCNT_q[0] != VDIS_START[0] & VVCNT_q != + 11'b000_0000_0000 & VHCNT_q < (HDIS_END - 12'b0000_0000_0001)) | + (DOP_ZEI_q & VVCNT_q[0] == VDIS_START[0] & VVCNT_q != + 11'b000_0000_0000 & VHCNT_q > (HDIS_END - 12'b0000_0000_0010)); + assign DOP_FIFO_CLR_clk = PIXEL_CLK; + +// DOPPELZEILENFIFO LÖSCHEN AM ENDE DER DOPPELZEILE UND BEI MAIN FIFO START + assign DOP_FIFO_CLR_d = (INTER_ZEI_q & HSYNC_START_q) | SYNC_PIX_q; + + + wire [11:0] HTF; + wire [11:0] HSF; +// GE + // assign RAND_LINKS_FULL = VDL_HBE_q * {7'b000_0000, MULF[5:1]}; + assign RAND_LINKS_FULL = ({12{MULF[1]}} & {12'd0, VDL_HBE_q}) + | ({12{MULF[2]}} & {11'd0, VDL_HBE_q, 1'd0}) + | ({12{MULF[3]}} & {10'd0, VDL_HBE_q, 2'd0}) + | ({12{MULF[4]}} & {9'd0, VDL_HBE_q, 3'd0}) + | ({12{MULF[5]}} & {8'd0, VDL_HBE_q, 4'd0}); + + +// GE + //assign HS_START_FULL = ((VDL_HHT_q + 24'h1) + VDL_HSS_q) * {7'b000_0000, + // MULF[5:1]}; + assign HSF = ((VDL_HHT_q + 12'h1) + VDL_HSS_q); + assign HS_START_FULL = ({12{MULF[1]}} & {12'd0, HSF}) + | ({12{MULF[2]}} & {11'd0, HSF, 1'd0}) + | ({12{MULF[3]}} & {10'd0, HSF, 2'd0}) + | ({12{MULF[4]}} & {9'd0, HSF, 3'd0}) + | ({12{MULF[5]}} & {8'd0, HSF, 4'd0}); + +// GE + // assign H_TOTAL_FULL = (VDL_HHT_q + 24'h2) * {6'b00_0000, MULF}; + assign HTF = (VDL_HHT_q + 12'h2); + assign H_TOTAL_FULL = ({12{MULF[0]}} & {12'd0, HTF}) + | ({12{MULF[1]}} & {11'd0, HTF, 1'd0}) + | ({12{MULF[2]}} & {10'd0, HTF, 2'd0}) + | ({12{MULF[3]}} & {9'd0, HTF, 3'd0}) + | ({12{MULF[4]}} & {8'd0, HTF, 4'd0}) + | ({12{MULF[5]}} & {7'd0, HTF, 5'd0}); + + assign RAND_LINKS = (VDL_HBE_q & {12{ACP_VIDEO_ON}}) | (12'b0000_0001_0101 & + {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | + (12'b0000_0010_1010 & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & + {12{!VDL_VMD_q[2]}}) | (RAND_LINKS_FULL[11:0] & {12{!ACP_VIDEO_ON}} & + {12{!ATARI_SYNC}}); + assign HDIS_START = (VDL_HDB_q & {12{ACP_VIDEO_ON}}) | ((RAND_LINKS + + 12'b0000_0000_0001) & {12{!ACP_VIDEO_ON}}); + assign HDIS_END = (VDL_HDE_q & {12{ACP_VIDEO_ON}}) | ((RAND_LINKS + + HDIS_LEN) & {12{!ACP_VIDEO_ON}}); + assign RAND_RECHTS = (VDL_HBB_q & {12{ACP_VIDEO_ON}}) | ((HDIS_END + + 12'b0000_0000_0001) & {12{!ACP_VIDEO_ON}}); + assign HS_START = (VDL_HSS_q & {12{ACP_VIDEO_ON}}) | (ATARI_HL_q[11:0] & + {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | + (ATARI_HH_q[11:0] & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & + {12{!VDL_VMD_q[2]}}) | (HS_START_FULL[11:0] & {12{!ACP_VIDEO_ON}} & + {12{!ATARI_SYNC}}); + assign H_TOTAL = (VDL_HHT_q & {12{ACP_VIDEO_ON}}) | (ATARI_HL_q[27:16] & + {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | + (ATARI_HH_q[27:16] & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & + {12{!VDL_VMD_q[2]}}) | (H_TOTAL_FULL[11:0] & {12{!ACP_VIDEO_ON}} & + {12{!ATARI_SYNC}}); + assign RAND_OBEN = (VDL_VBE_q & {11{ACP_VIDEO_ON}}) | (11'b000_0001_1111 & + {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | ({1'b0, VDL_VBE_q[10:1]} & + {11{!ACP_VIDEO_ON}} & {11{!ATARI_SYNC}}); + assign VDIS_START = (VDL_VDB_q & {11{ACP_VIDEO_ON}}) | (11'b000_0010_0000 & + {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | (({1'b0, VDL_VDB_q[10:1]} + + 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & {11{!ATARI_SYNC}}); + assign VDIS_END = (VDL_VDE_q & {11{ACP_VIDEO_ON}}) | (11'b001_1010_1111 & + {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{ST_VIDEO}}) | + (11'b001_1111_1111 & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & + {11{!ST_VIDEO}}) | ({1'b0, VDL_VDE_q[10:1]} & {11{!ACP_VIDEO_ON}} & + {11{!ATARI_SYNC}}); + assign RAND_UNTEN = (VDL_VBB_q & {11{ACP_VIDEO_ON}}) | ((VDIS_END + + 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | + (({1'b0, VDL_VBB_q[10:1]} + 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & + {11{!ATARI_SYNC}}); + assign VS_START = (VDL_VSS_q & {11{ACP_VIDEO_ON}}) | (ATARI_VL_q[10:0] & + {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{VDL_VMD_q[2]}}) | + (ATARI_VH_q[10:0] & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & + {11{!VDL_VMD_q[2]}}) | ({1'b0, VDL_VSS_q[10:1]} & {11{!ACP_VIDEO_ON}} + & {11{!ATARI_SYNC}}); + assign V_TOTAL = (VDL_VFT_q & {11{ACP_VIDEO_ON}}) | (ATARI_VL_q[26:16] & + {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{VDL_VMD_q[2]}}) | + (ATARI_VH_q[26:16] & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & + {11{!VDL_VMD_q[2]}}) | ({1'b0, VDL_VFT_q[10:1]} & {11{!ACP_VIDEO_ON}} + & {11{!ATARI_SYNC}}); + +// ZÄHLER + assign LAST_clk = PIXEL_CLK; + assign LAST_d = VHCNT_q == (H_TOTAL - 12'b0000_0000_0010); + assign VHCNT0_clk_ctrl = PIXEL_CLK; + assign VHCNT_d = (VHCNT_q + 12'b0000_0000_0001) & {12{!LAST_q}}; + assign VVCNT0_clk_ctrl = PIXEL_CLK; + assign VVCNT0_ena_ctrl = LAST_q; + assign VVCNT_d = (VVCNT_q + 11'b000_0000_0001) & {11{VVCNT_q != (V_TOTAL - + 11'b000_0000_0001)}}; + +// DISPLAY ON OFF + assign DPO_ZL_clk = PIXEL_CLK; + +// 1 ZEILE DAVOR ON OFF + assign DPO_ZL_d = VVCNT_q > (RAND_OBEN - 11'b000_0000_0001) & VVCNT_q < + (RAND_UNTEN - 11'b000_0000_0001); + +// AM ZEILENENDE ÜBERNEHMEN + assign DPO_ZL_ena = LAST_q; + assign DPO_ON_clk = PIXEL_CLK; + +// BESSER EINZELN WEGEN TIMING + assign DPO_ON_d = VHCNT_q == RAND_LINKS; + assign DPO_OFF_clk = PIXEL_CLK; + assign DPO_OFF_d = VHCNT_q == (RAND_RECHTS - 12'b0000_0000_0001); + assign DISP_ON_clk = PIXEL_CLK; + assign DISP_ON_d = (DISP_ON_q & (!DPO_OFF_q)) | (DPO_ON_q & DPO_ZL_q); + +// DATENTRANSFER ON OFF + assign VDO_ON_clk = PIXEL_CLK; + +// BESSER EINZELN WEGEN TIMING + assign VDO_ON_d = VHCNT_q == (HDIS_START - 12'b0000_0000_0001); + assign VDO_OFF_clk = PIXEL_CLK; + assign VDO_OFF_d = VHCNT_q == HDIS_END; + assign VDO_ZL_clk = PIXEL_CLK; + +// AM ZEILENENDE ÜBERNEHMEN + assign VDO_ZL_ena = LAST_q; + +// 1 ZEILE DAVOR ON OFF + assign VDO_ZL_d = VVCNT_q >= (VDIS_START - 11'b000_0000_0001) & VVCNT_q < + VDIS_END; + assign VDTRON_clk = PIXEL_CLK; + assign VDTRON_d = (VDTRON_q & (!VDO_OFF_q)) | (VDO_ON_q & VDO_ZL_q); + +// VERZÖGERUNG UND SYNC + assign HSYNC_START_clk = PIXEL_CLK; + assign HSYNC_START_d = VHCNT_q == (HS_START - 12'b0000_0000_0011); + assign HSYNC_I0_clk_ctrl = PIXEL_CLK; + assign HSYNC_I_d = (HSY_LEN_q & {8{HSYNC_START_q}}) | ((HSYNC_I_q - + 8'b0000_0001) & {8{!HSYNC_START_q}} & {8{HSYNC_I_q != 8'b0000_0000}}); + assign VSYNC_START_clk = PIXEL_CLK; + assign VSYNC_START_ena = LAST_q; + +// start am ende der Zeile vor dem vsync + assign VSYNC_START_d = VVCNT_q == (VS_START - 11'b000_0000_0011); + assign VSYNC_I0_clk_ctrl = PIXEL_CLK; + +// start am ende der Zeile vor dem vsync + assign VSYNC_I0_ena_ctrl = LAST_q; + +// 3 zeilen vsync length +// runterzählen bis 0 + assign VSYNC_I_d = (3'b011 & {3{VSYNC_START_q}}) | ((VSYNC_I_q - 3'b001) & + {3{!VSYNC_START_q}} & {3{VSYNC_I_q != 3'b000}}); + assign VERZ2_0_clk_ctrl = PIXEL_CLK; + assign VERZ1_0_clk_ctrl = PIXEL_CLK; + assign VERZ0_0_clk_ctrl = PIXEL_CLK; + assign {VERZ2__d[1], VERZ1__d[1], VERZ0__d[1]} = {VERZ2__q[0], VERZ1__q[0], + VERZ0__q[0]}; + assign {VERZ2__d[2], VERZ1__d[2], VERZ0__d[2]} = {VERZ2__q[1], VERZ1__q[1], + VERZ0__q[1]}; + assign {VERZ2__d[3], VERZ1__d[3], VERZ0__d[3]} = {VERZ2__q[2], VERZ1__q[2], + VERZ0__q[2]}; + assign {VERZ2__d[4], VERZ1__d[4], VERZ0__d[4]} = {VERZ2__q[3], VERZ1__q[3], + VERZ0__q[3]}; + assign {VERZ2__d[5], VERZ1__d[5], VERZ0__d[5]} = {VERZ2__q[4], VERZ1__q[4], + VERZ0__q[4]}; + assign {VERZ2__d[6], VERZ1__d[6], VERZ0__d[6]} = {VERZ2__q[5], VERZ1__q[5], + VERZ0__q[5]}; + assign {VERZ2__d[7], VERZ1__d[7], VERZ0__d[7]} = {VERZ2__q[6], VERZ1__q[6], + VERZ0__q[6]}; + assign {VERZ2__d[8], VERZ1__d[8], VERZ0__d[8]} = {VERZ2__q[7], VERZ1__q[7], + VERZ0__q[7]}; + assign {VERZ2__d[9], VERZ1__d[9], VERZ0__d[9]} = {VERZ2__q[8], VERZ1__q[8], + VERZ0__q[8]}; + assign VERZ0__d[0] = DISP_ON_q; + assign VERZ1_0_d_1 = HSYNC_I_q != 8'b0000_0000; + +// NUR MÖGLICH WENN BEIDE + assign VERZ1_0_d_2 = (((!ACP_VCTR_q[15]) | (!VDL_VCT_q[6])) & HSYNC_I_q != + 8'b0000_0000) | (ACP_VCTR_q[15] & VDL_VCT_q[6] & HSYNC_I_q == + 8'b0000_0000); + +// NUR MÖGLICH WENN BEIDE + assign VERZ2__d[0] = (((!ACP_VCTR_q[15]) | (!VDL_VCT_q[5])) & VSYNC_I_q != + 3'b000) | (ACP_VCTR_q[15] & VDL_VCT_q[5] & VSYNC_I_q == 3'b000); + assign nBLANK_clk = PIXEL_CLK; + assign nBLANK_d = VERZ0__q[8]; + assign HSYNC_clk = PIXEL_CLK; + assign HSYNC_d = VERZ1__q[9]; + assign VSYNC_clk = PIXEL_CLK; + assign VSYNC_d = VERZ2__q[9]; + assign nSYNC = gnd; + +// RANDFARBE MACHEN ------------------------------------ + assign RAND0_clk_ctrl = PIXEL_CLK; + assign RAND_d[0] = DISP_ON_q & (!VDTRON_q) & ACP_VCTR_q[25]; + assign RAND_d[1] = RAND_q[0]; + assign RAND_d[2] = RAND_q[1]; + assign RAND_d[3] = RAND_q[2]; + assign RAND_d[4] = RAND_q[3]; + assign RAND_d[5] = RAND_q[4]; + assign RAND_d[6] = RAND_q[5]; + assign RAND_ON = RAND_q[6]; + +// -------------------------------------------------------- + assign CLR_FIFO_clk = PIXEL_CLK; + assign CLR_FIFO_ena = LAST_q; + +// IN LETZTER ZEILE LÖSCHEN + assign CLR_FIFO_d = VVCNT_q == (V_TOTAL - 11'b000_0000_0010); + assign START_ZEILE_clk = PIXEL_CLK; + assign START_ZEILE_ena = LAST_q; + +// ZEILE 1 + assign START_ZEILE_d = VVCNT_q == 11'b000_0000_0000; + assign SYNC_PIX_clk = PIXEL_CLK; + +// SUB PIXEL ZÄHLER SYNCHRONISIEREN + assign SYNC_PIX_d = VHCNT_q == 12'b0000_0000_0011 & START_ZEILE_q; + assign SYNC_PIX1_clk = PIXEL_CLK; + +// SUB PIXEL ZÄHLER SYNCHRONISIEREN + assign SYNC_PIX1_d = VHCNT_q == 12'b0000_0000_0101 & START_ZEILE_q; + assign SYNC_PIX2_clk = PIXEL_CLK; + +// SUB PIXEL ZÄHLER SYNCHRONISIEREN + assign SYNC_PIX2_d = VHCNT_q == 12'b0000_0000_0111 & START_ZEILE_q; + assign SUB_PIXEL_CNT0_clk_ctrl = PIXEL_CLK; + assign SUB_PIXEL_CNT0_ena_ctrl = VDTRON_q | SYNC_PIX_q; + +// count up if display on sonst clear bei sync pix + assign SUB_PIXEL_CNT_d = (SUB_PIXEL_CNT_q + 7'b000_0001) & {7{!SYNC_PIX_q}}; + assign FIFO_RDE_clk = PIXEL_CLK; + +// 3 CLOCK ZUSÄTZLICH FÜR FIFO SHIFT DATAOUT UND SHIFT RIGTH POSITION + assign FIFO_RDE_d = (((SUB_PIXEL_CNT_q == 7'b000_0001 & COLOR1) | + (SUB_PIXEL_CNT_q[5:0] == 6'b00_0001 & COLOR2) | (SUB_PIXEL_CNT_q[4:0] + == 5'b0_0001 & COLOR4) | (SUB_PIXEL_CNT_q[3:0] == 4'b0001 & COLOR8) | + (SUB_PIXEL_CNT_q[2:0] == 3'b001 & COLOR16) | (SUB_PIXEL_CNT_q[1:0] == + 2'b01 & COLOR24)) & VDTRON_q) | SYNC_PIX_q | SYNC_PIX1_q | + SYNC_PIX2_q; + assign CLUT_MUX_ADR0_clk_ctrl = PIXEL_CLK; + assign CLUT_MUX_AV1_0_clk_ctrl = PIXEL_CLK; + assign CLUT_MUX_AV0_0_clk_ctrl = PIXEL_CLK; + assign CLUT_MUX_AV0__d = SUB_PIXEL_CNT_q[3:0]; + assign CLUT_MUX_AV1__d = CLUT_MUX_AV0__q; + assign CLUT_MUX_ADR_d = CLUT_MUX_AV1__q; + + +// Assignments added to explicitly combine the +// effects of multiple drivers in the source + assign COLOR16 = COLOR16_1 | COLOR16_2; + assign VERZ1__d[0] = VERZ1_0_d_1 | VERZ1_0_d_2; + assign COLOR4 = COLOR4_1 | COLOR4_2; + assign COLOR1 = COLOR1_1 | COLOR1_2 | COLOR1_3; + assign COLOR8 = COLOR8_1 | COLOR8_2; + +// Define power signal(s) + assign gnd = 1'b0; +endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/Video.bdf b/FPGA_by_Gregory_Estrade/Video/Video.bdf new file mode 100644 index 0000000..6210cb7 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/Video/Video.bdf @@ -0,0 +1,10651 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.3")) +(properties + (page_setup "header_footer\nDate: %D\n%f\nProject: %j\n\nPage %p of %P\nRevision: %a\nmargin\n1\n1\n1\n1\norientation\n2\npaper_size\n9\npaper_source\n15\nfit_page_wide\n1\nfit_page_tall\n1\n") +) +(pin + (input) + (rect 184 1192 352 1208) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "FB_ADR[31..0]" (rect 9 0 103 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 184 1248 352 1264) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "MAIN_CLK" (rect 9 0 78 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 184 1352 352 1368) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_CS1" (rect 9 0 71 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 184 1384 352 1400) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_CS2" (rect 9 0 71 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 184 1416 352 1432) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_CS3" (rect 9 0 71 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 184 1448 352 1464) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_WR" (rect 9 0 66 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 184 1480 352 1496) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "FB_SIZE0" (rect 9 0 73 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 184 1512 352 1528) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "FB_SIZE1" (rect 9 0 73 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 184 1544 352 1560) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nRSTO" (rect 9 0 56 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 184 1608 352 1624) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_OE" (rect 9 0 63 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 184 1736 352 1752) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "FB_ALE" (rect 9 0 60 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 184 1312 352 1328) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "DDRCLK[3..0]" (rect 9 0 99 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 176 1280 344 1296) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "DDR_SYNC_66M" (rect 9 0 123 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 1344 2176 1512 2192) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "CLK33M" (rect 9 0 64 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 1344 2200 1512 2216) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "CLK25M" (rect 9 0 64 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 1344 2152 1512 2168) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "CLK_VIDEO" (rect 5 0 84 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 1344 2128 1512 2144) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "VR_D[8..0]" (rect 5 0 73 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 1344 2112 1512 2128) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "VR_BUSY" (rect 5 0 69 15)(font "Arial" )) + (pt 168 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 472 1200 648 1216) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VG[7..0]" (rect 90 0 139 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1232 648 1248) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VB[7..0]" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1264 648 1280) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VR[7..0]" (rect 90 0 139 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1408 648 1424) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nBLANK" (rect 90 0 144 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1480 648 1496) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VA[12..0]" (rect 90 0 145 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1512 648 1528) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVWE" (rect 90 0 128 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1544 648 1560) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVCAS" (rect 90 0 134 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1576 648 1592) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVRAS" (rect 90 0 134 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1608 648 1624) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVCS" (rect 90 0 126 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1704 648 1720) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VDM[3..0]" (rect 90 0 150 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1736 648 1752) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nPD_VGA" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1768 648 1784) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VCKE" (rect 90 0 127 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1288 648 1304) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VSYNC" (rect 90 0 137 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1336 648 1352) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "HSYNC" (rect 90 0 139 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1384 648 1400) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSYNC" (rect 90 0 137 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1800 648 1816) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VIDEO_TA" (rect 90 0 157 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1448 648 1464) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "PIXEL_CLK" (rect 90 0 165 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 472 1656 648 1672) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "BA[1..0]" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 2144 1696 2364 1712) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VIDEO_RECONFIG" (rect 90 0 215 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 2112 1792 2288 1808) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VR_WR" (rect 90 0 140 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (output) + (rect 2112 1808 2288 1824) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VR_RD" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) +) +(pin + (bidir) + (rect 184 1640 360 1656) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "VDQS[3..0]" (rect 90 0 159 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 184 1672 360 1688) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "FB_AD[31..0]" (rect 90 0 173 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 184 1704 360 1720) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "VD[31..0]" (rect 90 0 147 15)(font "Arial" )) + (pt 0 8) + (connected_pin (pt 0 0)) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) +) +(symbol + (rect 920 1616 1064 1712) + (text "lpm_ff0" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst13" (rect 8 80 48 95)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 64 74)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 50 140 66)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 920 1760 1064 1856) + (text "lpm_ff0" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst14" (rect 8 80 48 95)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 64 74)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 50 140 66)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 920 1896 1064 1992) + (text "lpm_ff0" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst15" (rect 8 80 48 95)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 64 74)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 50 140 66)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 920 2032 1064 2128) + (text "lpm_ff0" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst16" (rect 8 80 48 95)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 64 74)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 50 140 66)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 2392 2040 2496 2184) + (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) + (text "inst40" (rect 3 133 36 146)(font "Arial" (font_size 6))) + (port + (pt 0 120) + (input) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (line (pt 0 88)(pt 16 88)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (line (pt 0 24)(pt 16 24)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 104 72) + (output) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (line (pt 88 72)(pt 104 72)(line_width 1)) + ) + (drawing + (line (pt 16 128)(pt 16 16)(line_width 1)) + (line (pt 88 128)(pt 88 16)(line_width 1)) + (line (pt 16 128)(pt 88 128)(line_width 1)) + (line (pt 16 16)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2392 1880 2496 2024) + (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) + (text "inst41" (rect 3 133 36 146)(font "Arial" (font_size 6))) + (port + (pt 0 120) + (input) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (line (pt 0 88)(pt 16 88)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (line (pt 0 24)(pt 16 24)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 104 72) + (output) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (line (pt 88 72)(pt 104 72)(line_width 1)) + ) + (drawing + (line (pt 16 128)(pt 16 16)(line_width 1)) + (line (pt 88 128)(pt 88 16)(line_width 1)) + (line (pt 16 128)(pt 88 128)(line_width 1)) + (line (pt 16 16)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2392 1720 2496 1864) + (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) + (text "inst42" (rect 3 133 36 146)(font "Arial" (font_size 6))) + (port + (pt 0 120) + (input) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (line (pt 0 88)(pt 16 88)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (line (pt 0 24)(pt 16 24)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 104 72) + (output) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (line (pt 88 72)(pt 104 72)(line_width 1)) + ) + (drawing + (line (pt 16 128)(pt 16 16)(line_width 1)) + (line (pt 88 128)(pt 88 16)(line_width 1)) + (line (pt 16 128)(pt 88 128)(line_width 1)) + (line (pt 16 16)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2392 1560 2496 1704) + (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) + (text "inst43" (rect 3 133 36 146)(font "Arial" (font_size 6))) + (port + (pt 0 120) + (input) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (line (pt 0 88)(pt 16 88)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (line (pt 0 24)(pt 16 24)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 104 72) + (output) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (line (pt 88 72)(pt 104 72)(line_width 1)) + ) + (drawing + (line (pt 16 128)(pt 16 16)(line_width 1)) + (line (pt 88 128)(pt 88 16)(line_width 1)) + (line (pt 16 128)(pt 88 128)(line_width 1)) + (line (pt 16 16)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2392 1400 2496 1544) + (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) + (text "inst44" (rect 3 133 36 146)(font "Arial" (font_size 6))) + (port + (pt 0 120) + (input) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (line (pt 0 88)(pt 16 88)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (line (pt 0 24)(pt 16 24)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 104 72) + (output) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (line (pt 88 72)(pt 104 72)(line_width 1)) + ) + (drawing + (line (pt 16 128)(pt 16 16)(line_width 1)) + (line (pt 88 128)(pt 88 16)(line_width 1)) + (line (pt 16 128)(pt 88 128)(line_width 1)) + (line (pt 16 16)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2392 1240 2496 1384) + (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) + (text "inst45" (rect 3 133 36 146)(font "Arial" (font_size 6))) + (port + (pt 0 120) + (input) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) + (line (pt 0 88)(pt 16 88)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) + (line (pt 0 24)(pt 16 24)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 104 72) + (output) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) + (line (pt 88 72)(pt 104 72)(line_width 1)) + ) + (drawing + (line (pt 16 128)(pt 16 16)(line_width 1)) + (line (pt 88 128)(pt 88 16)(line_width 1)) + (line (pt 16 128)(pt 88 128)(line_width 1)) + (line (pt 16 16)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2632 1216 2776 1344) + (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) + (text "sr0" (rect 8 112 29 127)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) + (text "load" (rect 20 26 48 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "data[15..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 42 93 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 74 62 90)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 90 60 106)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 144 72) + (output) + (text "shiftout" (rect 0 0 49 16)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) + (line (pt 144 72)(pt 128 72)(line_width 1)) + ) + (drawing + (text "left shift" (rect 92 17 141 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 112)(line_width 1)) + (line (pt 128 112)(pt 16 112)(line_width 1)) + (line (pt 16 112)(pt 16 16)(line_width 1)) + (line (pt 16 74)(pt 22 80)(line_width 1)) + (line (pt 22 80)(pt 16 86)(line_width 1)) + ) +) +(symbol + (rect 2632 1376 2776 1504) + (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) + (text "sr1" (rect 8 112 29 127)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) + (text "load" (rect 20 26 48 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "data[15..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 42 93 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 74 62 90)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 90 60 106)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 144 72) + (output) + (text "shiftout" (rect 0 0 49 16)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) + (line (pt 144 72)(pt 128 72)(line_width 1)) + ) + (drawing + (text "left shift" (rect 92 17 141 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 112)(line_width 1)) + (line (pt 128 112)(pt 16 112)(line_width 1)) + (line (pt 16 112)(pt 16 16)(line_width 1)) + (line (pt 16 74)(pt 22 80)(line_width 1)) + (line (pt 22 80)(pt 16 86)(line_width 1)) + ) +) +(symbol + (rect 2632 1536 2776 1664) + (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) + (text "sr2" (rect 8 112 29 127)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) + (text "load" (rect 20 26 48 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "data[15..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 42 93 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 74 62 90)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 90 60 106)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 144 72) + (output) + (text "shiftout" (rect 0 0 49 16)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) + (line (pt 144 72)(pt 128 72)(line_width 1)) + ) + (drawing + (text "left shift" (rect 92 17 141 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 112)(line_width 1)) + (line (pt 128 112)(pt 16 112)(line_width 1)) + (line (pt 16 112)(pt 16 16)(line_width 1)) + (line (pt 16 74)(pt 22 80)(line_width 1)) + (line (pt 22 80)(pt 16 86)(line_width 1)) + ) +) +(symbol + (rect 2632 1696 2776 1824) + (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) + (text "sr3" (rect 8 112 29 127)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) + (text "load" (rect 20 26 48 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "data[15..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 42 93 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 74 62 90)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 90 60 106)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 144 72) + (output) + (text "shiftout" (rect 0 0 49 16)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) + (line (pt 144 72)(pt 128 72)(line_width 1)) + ) + (drawing + (text "left shift" (rect 92 17 141 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 112)(line_width 1)) + (line (pt 128 112)(pt 16 112)(line_width 1)) + (line (pt 16 112)(pt 16 16)(line_width 1)) + (line (pt 16 74)(pt 22 80)(line_width 1)) + (line (pt 22 80)(pt 16 86)(line_width 1)) + ) +) +(symbol + (rect 2632 1856 2776 1984) + (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) + (text "sr4" (rect 8 112 29 127)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) + (text "load" (rect 20 26 48 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "data[15..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 42 93 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 74 62 90)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 90 60 106)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 144 72) + (output) + (text "shiftout" (rect 0 0 49 16)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) + (line (pt 144 72)(pt 128 72)(line_width 1)) + ) + (drawing + (text "left shift" (rect 92 17 141 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 112)(line_width 1)) + (line (pt 128 112)(pt 16 112)(line_width 1)) + (line (pt 16 112)(pt 16 16)(line_width 1)) + (line (pt 16 74)(pt 22 80)(line_width 1)) + (line (pt 22 80)(pt 16 86)(line_width 1)) + ) +) +(symbol + (rect 2632 2016 2776 2144) + (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) + (text "sr5" (rect 8 112 29 127)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) + (text "load" (rect 20 26 48 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "data[15..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 42 93 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 74 62 90)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 90 60 106)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 144 72) + (output) + (text "shiftout" (rect 0 0 49 16)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) + (line (pt 144 72)(pt 128 72)(line_width 1)) + ) + (drawing + (text "left shift" (rect 92 17 141 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 112)(line_width 1)) + (line (pt 128 112)(pt 16 112)(line_width 1)) + (line (pt 16 112)(pt 16 16)(line_width 1)) + (line (pt 16 74)(pt 22 80)(line_width 1)) + (line (pt 22 80)(pt 16 86)(line_width 1)) + ) +) +(symbol + (rect 2632 2176 2776 2304) + (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) + (text "sr6" (rect 8 112 29 127)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) + (text "load" (rect 20 26 48 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "data[15..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 42 93 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 74 62 90)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 90 60 106)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 144 72) + (output) + (text "shiftout" (rect 0 0 49 16)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) + (line (pt 144 72)(pt 128 72)(line_width 1)) + ) + (drawing + (text "left shift" (rect 92 17 141 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 112)(line_width 1)) + (line (pt 128 112)(pt 16 112)(line_width 1)) + (line (pt 16 112)(pt 16 16)(line_width 1)) + (line (pt 16 74)(pt 22 80)(line_width 1)) + (line (pt 22 80)(pt 16 86)(line_width 1)) + ) +) +(symbol + (rect 2632 2336 2776 2464) + (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) + (text "sr7" (rect 8 112 29 127)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) + (text "load" (rect 20 26 48 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "data[15..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 42 93 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 74 62 90)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 90 60 106)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 144 72) + (output) + (text "shiftout" (rect 0 0 49 16)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) + (line (pt 144 72)(pt 128 72)(line_width 1)) + ) + (drawing + (text "left shift" (rect 92 17 141 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 112)(line_width 1)) + (line (pt 128 112)(pt 16 112)(line_width 1)) + (line (pt 16 112)(pt 16 16)(line_width 1)) + (line (pt 16 74)(pt 22 80)(line_width 1)) + (line (pt 22 80)(pt 16 86)(line_width 1)) + ) +) +(symbol + (rect 3296 888 3328 920) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst50" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 3840 784 3920 824) + (text "lpm_bustri1" (rect 7 1 104 20)(font "Arial" (font_size 10))) + (text "inst51" (rect 8 24 48 39)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 97 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[2..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) + (text "data[2..0]" (rect -3 -21 61 -5)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[2..0]" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "tridata[2..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "3" (rect 63 25 71 40)(font "Arial" )) + (text "3" (rect 15 25 23 40)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) +(symbol + (rect 3712 880 3808 928) + (text "lpm_constant0" (rect 6 1 128 20)(font "Arial" (font_size 10))) + (text "inst54" (rect 8 32 48 47)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[4..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "result[4..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 83 33)(font "Arial" )) + (text "5" (rect 87 25 95 40)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) +(symbol + (rect 3296 1096 3328 1128) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst55" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 3840 992 3920 1032) + (text "lpm_bustri1" (rect 7 1 104 20)(font "Arial" (font_size 10))) + (text "inst56" (rect 8 24 48 39)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 97 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[2..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) + (text "data[2..0]" (rect -3 -21 61 -5)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[2..0]" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "tridata[2..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "3" (rect 63 25 71 40)(font "Arial" )) + (text "3" (rect 15 25 23 40)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) +(symbol + (rect 3720 1088 3816 1136) + (text "lpm_constant0" (rect 6 1 128 20)(font "Arial" (font_size 10))) + (text "inst59" (rect 8 32 48 47)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[4..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "result[4..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 83 33)(font "Arial" )) + (text "5" (rect 87 25 95 40)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) +(symbol + (rect 3296 1528 3328 1560) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst60" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 3840 1200 3920 1240) + (text "lpm_bustri1" (rect 7 1 104 20)(font "Arial" (font_size 10))) + (text "inst61" (rect 8 24 48 39)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 97 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[2..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) + (text "data[2..0]" (rect -3 -21 61 -5)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[2..0]" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "tridata[2..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "3" (rect 63 25 71 40)(font "Arial" )) + (text "3" (rect 15 25 23 40)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) +(symbol + (rect 3712 1296 3808 1344) + (text "lpm_constant0" (rect 6 1 128 20)(font "Arial" (font_size 10))) + (text "inst64" (rect 8 32 48 47)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[4..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "result[4..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 83 33)(font "Arial" )) + (text "5" (rect 87 25 95 40)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) +(symbol + (rect 3840 1424 3920 1464) + (text "lpm_bustri3" (rect 7 1 104 20)(font "Arial" (font_size 10))) + (text "inst66" (rect 8 24 48 39)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 97 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[5..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) + (text "data[5..0]" (rect -3 -21 61 -5)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[5..0]" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "tridata[5..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "6" (rect 63 25 71 40)(font "Arial" )) + (text "6" (rect 15 25 23 40)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) +(symbol + (rect 3296 1736 3328 1768) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst68" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 3840 1632 3920 1672) + (text "lpm_bustri3" (rect 7 1 104 20)(font "Arial" (font_size 10))) + (text "inst70" (rect 8 24 48 39)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 97 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[5..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) + (text "data[5..0]" (rect -3 -21 61 -5)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[5..0]" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "tridata[5..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "6" (rect 63 25 71 40)(font "Arial" )) + (text "6" (rect 15 25 23 40)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) +(symbol + (rect 3296 1944 3328 1976) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst72" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 3840 1840 3920 1880) + (text "lpm_bustri3" (rect 7 1 104 20)(font "Arial" (font_size 10))) + (text "inst74" (rect 8 24 48 39)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 97 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[5..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) + (text "data[5..0]" (rect -3 -21 61 -5)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[5..0]" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "tridata[5..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "6" (rect 63 25 71 40)(font "Arial" )) + (text "6" (rect 15 25 23 40)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) +(symbol + (rect 3296 1304 3328 1336) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst78" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 3008 1432 3072 1480) + (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "inst29" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 12)(pt 30 12)(line_width 1)) + (line (pt 14 37)(pt 31 37)(line_width 1)) + (line (pt 14 12)(pt 14 37)(line_width 1)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)(line_width 1)) + ) +) +(symbol + (rect 3008 1736 3072 1784) + (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "inst30" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 12)(pt 30 12)(line_width 1)) + (line (pt 14 37)(pt 31 37)(line_width 1)) + (line (pt 14 12)(pt 14 37)(line_width 1)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)(line_width 1)) + ) +) +(symbol + (rect 3024 2080 3088 2128) + (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) + (text "inst31" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)(line_width 1)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 36)(pt 25 36)(line_width 1)) + (line (pt 14 13)(pt 25 13)(line_width 1)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) + ) +) +(symbol + (rect 2904 1912 2968 1960) + (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "inst32" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 12)(pt 30 12)(line_width 1)) + (line (pt 14 37)(pt 31 37)(line_width 1)) + (line (pt 14 12)(pt 14 37)(line_width 1)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)(line_width 1)) + ) +) +(symbol + (rect 2904 2072 2968 2120) + (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "inst33" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 12)(pt 30 12)(line_width 1)) + (line (pt 14 37)(pt 31 37)(line_width 1)) + (line (pt 14 12)(pt 14 37)(line_width 1)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)(line_width 1)) + ) +) +(symbol + (rect 2904 2232 2968 2280) + (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "inst34" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 12)(pt 30 12)(line_width 1)) + (line (pt 14 37)(pt 31 37)(line_width 1)) + (line (pt 14 12)(pt 14 37)(line_width 1)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)(line_width 1)) + ) +) +(symbol + (rect 2904 2392 2968 2440) + (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "inst35" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 12)(pt 30 12)(line_width 1)) + (line (pt 14 37)(pt 31 37)(line_width 1)) + (line (pt 14 12)(pt 14 37)(line_width 1)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)(line_width 1)) + ) +) +(symbol + (rect 3296 2592 3328 2624) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst73" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 3160 3064 3296 3144) + (text "lpm_mux4" (rect 42 62 126 81)(font "Arial" (font_size 10))) + (text "inst81" (rect 8 4 48 19)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data1x[6..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data1x[6..0]" (rect 4 39 85 55)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 64 40)(line_width 3)) + ) + (port + (pt 0 24) + (input) + (text "data0x[6..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data0x[6..0]" (rect 4 23 85 39)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 64 24)(line_width 3)) + ) + (port + (pt 72 0) + (input) + (text "sel" (rect 0 0 20 16)(font "Arial" (font_size 8))) + (text "sel" (rect 76 -1 96 15)(font "Arial" (font_size 8))) + (line (pt 72 0)(pt 72 12)(line_width 1)) + ) + (port + (pt 136 32) + (output) + (text "result[6..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "result[6..0]" (rect 82 31 155 47)(font "Arial" (font_size 8))) + (line (pt 136 32)(pt 80 32)(line_width 3)) + ) + (drawing + (line (pt 64 56)(pt 64 8)(line_width 1)) + (line (pt 80 48)(pt 80 16)(line_width 1)) + (line (pt 64 56)(pt 80 48)(line_width 1)) + (line (pt 64 8)(pt 80 16)(line_width 1)) + ) + (flipx) +) +(symbol + (rect 2976 3080 3072 3128) + (text "lpm_constant3" (rect 6 1 128 20)(font "Arial" (font_size 10))) + (text "inst82" (rect 8 32 48 47)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[6..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "result[6..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 83 33)(font "Arial" )) + (text "7" (rect 87 25 95 40)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) +(symbol + (rect 3448 776 3704 984) + (text "altdpram0" (rect 100 1 183 20)(font "Arial" (font_size 10))) + (text "ST_CLUT_RED" (rect 8 192 110 207)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[2..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_a[2..0]" (rect 4 19 85 35)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[3..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_a[3..0]" (rect 4 35 110 51)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 52 67)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[2..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_b[2..0]" (rect 4 83 85 99)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[3..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_b[3..0]" (rect 4 99 110 115)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 52 131)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 57 163)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 57 179)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[2..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_a[2..0]" (rect 211 19 271 35)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[2..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_b[2..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "16 Word(s)" (rect 136 61 151 132)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 155 203)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) +(symbol + (rect 3448 984 3704 1192) + (text "altdpram0" (rect 100 1 183 20)(font "Arial" (font_size 10))) + (text "ST_CLUT_GREEN" (rect 8 192 130 207)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[2..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_a[2..0]" (rect 4 19 85 35)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[3..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_a[3..0]" (rect 4 35 110 51)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 52 67)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[2..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_b[2..0]" (rect 4 83 85 99)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[3..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_b[3..0]" (rect 4 99 110 115)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 52 131)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 57 163)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 57 179)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[2..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_a[2..0]" (rect 211 19 271 35)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[2..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_b[2..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "16 Word(s)" (rect 136 61 151 132)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 155 203)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) +(symbol + (rect 1360 2992 1408 3024) + (text "TRI" (rect 1 0 21 13)(font "Arial" (font_size 6))) + (text "inst84" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 14 25)(pt 14 7)(line_width 1)) + (line (pt 14 25)(pt 32 16)(line_width 1)) + (line (pt 14 7)(pt 32 16)(line_width 1)) + ) +) +(symbol + (rect 1360 2936 1408 2968) + (text "TRI" (rect 1 0 21 13)(font "Arial" (font_size 6))) + (text "inst85" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 14 25)(pt 14 7)(line_width 1)) + (line (pt 14 25)(pt 32 16)(line_width 1)) + (line (pt 14 7)(pt 32 16)(line_width 1)) + ) +) +(symbol + (rect 1360 2888 1408 2920) + (text "TRI" (rect 1 0 21 13)(font "Arial" (font_size 6))) + (text "inst86" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 14 25)(pt 14 7)(line_width 1)) + (line (pt 14 25)(pt 32 16)(line_width 1)) + (line (pt 14 7)(pt 32 16)(line_width 1)) + ) +) +(symbol + (rect 1360 2840 1408 2872) + (text "TRI" (rect 1 0 21 13)(font "Arial" (font_size 6))) + (text "inst87" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 14 25)(pt 14 7)(line_width 1)) + (line (pt 14 25)(pt 32 16)(line_width 1)) + (line (pt 14 7)(pt 32 16)(line_width 1)) + ) +) +(symbol + (rect 2272 1248 2304 1280) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst6" (rect -1 3 14 34)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 2272 1408 2304 1440) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst8" (rect -1 3 14 34)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 2272 1568 2304 1600) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst28" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 2272 1728 2304 1760) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst38" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 2272 1888 2304 1920) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst48" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 2272 2048 2304 2080) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst96" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 3192 2920 3272 3000) + (text "lpm_mux3" (rect 10 2 94 21)(font "Arial" (font_size 10))) + (text "inst102" (rect 8 64 56 79)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data1" (rect 0 0 37 16)(font "Arial" (font_size 8))) + (text "data1" (rect 4 27 41 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 32 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "data0" (rect 0 0 37 16)(font "Arial" (font_size 8))) + (text "data0" (rect 4 43 41 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 32 56)(line_width 1)) + ) + (port + (pt 40 80) + (input) + (text "sel" (rect 0 0 20 16)(font "Arial" (font_size 8))) + (text "sel" (rect 44 67 64 83)(font "Arial" (font_size 8))) + (line (pt 40 80)(pt 40 68)(line_width 1)) + ) + (port + (pt 80 48) + (output) + (text "result" (rect 0 0 37 16)(font "Arial" (font_size 8))) + (text "result" (rect 50 35 87 51)(font "Arial" (font_size 8))) + (line (pt 80 48)(pt 48 48)(line_width 1)) + ) + (drawing + (line (pt 32 24)(pt 32 72)(line_width 1)) + (line (pt 48 32)(pt 48 64)(line_width 1)) + (line (pt 32 24)(pt 48 32)(line_width 1)) + (line (pt 32 72)(pt 48 64)(line_width 1)) + ) +) +(symbol + (rect 3032 2400 3096 2448) + (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) + (text "inst79" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)(line_width 1)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 36)(pt 25 36)(line_width 1)) + (line (pt 14 13)(pt 25 13)(line_width 1)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) + ) +) +(symbol + (rect 3016 1920 3080 1968) + (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) + (text "inst103" (rect 3 37 51 52)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)(line_width 1)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 36)(pt 25 36)(line_width 1)) + (line (pt 14 13)(pt 25 13)(line_width 1)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) + ) +) +(symbol + (rect 3024 2240 3088 2288) + (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) + (text "inst104" (rect 3 37 51 52)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)(line_width 1)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 36)(pt 25 36)(line_width 1)) + (line (pt 14 13)(pt 25 13)(line_width 1)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) + ) +) +(symbol + (rect 2912 1664 2976 1712) + (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) + (text "inst105" (rect 3 37 51 52)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)(line_width 1)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 36)(pt 25 36)(line_width 1)) + (line (pt 14 13)(pt 25 13)(line_width 1)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) + ) +) +(symbol + (rect 3008 1592 3072 1640) + (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "inst106" (rect 3 37 51 52)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 12)(pt 30 12)(line_width 1)) + (line (pt 14 37)(pt 31 37)(line_width 1)) + (line (pt 14 12)(pt 14 37)(line_width 1)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)(line_width 1)) + ) +) +(symbol + (rect 2920 1472 2984 1520) + (text "OR3" (rect 1 0 25 13)(font "Arial" (font_size 6))) + (text "inst107" (rect 3 37 52 53)(font "Arial" (font_size 8))) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 26 31)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 26 31)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 18 24)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 24 26 40)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 24 26 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 47 15 71 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 47 15 71 31)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 13)(pt 25 13)(line_width 1)) + (line (pt 14 36)(pt 25 36)(line_width 1)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) + ) +) +(symbol + (rect 808 1168 920 1208) + (text "lpm_bustri_LONG" (rect -14 1 135 20)(font "Arial" (font_size 10))) + (text "inst108" (rect 69 24 117 39)(font "Arial" )) + (port + (pt 72 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 24 -6 81 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 72 40)(pt 72 28)(line_width 1)) + ) + (port + (pt 112 24) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 55 -27 128 -11)(font "Arial" (font_size 8))(invisible)) + (line (pt 112 24)(pt 80 24)(line_width 3)) + ) + (port + (pt 0 24) + (bidir) + (text "tridata[31..0]" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "tridata[31..0]" (rect -74 -36 12 -20)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 64 24)(line_width 3)) + ) + (drawing + (text "32" (rect 24 25 40 40)(font "Arial" )) + (text "32" (rect 88 25 104 40)(font "Arial" )) + (line (pt 80 16)(pt 64 24)(line_width 1)) + (line (pt 64 24)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 80 16)(line_width 1)) + (line (pt 40 28)(pt 32 20)(line_width 1)) + (line (pt 104 28)(pt 96 20)(line_width 1)) + ) + (flipy) +) +(symbol + (rect 808 1288 920 1328) + (text "lpm_bustri_LONG" (rect -14 1 135 20)(font "Arial" (font_size 10))) + (text "inst109" (rect 69 24 117 39)(font "Arial" )) + (port + (pt 72 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 24 -6 81 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 72 40)(pt 72 28)(line_width 1)) + ) + (port + (pt 112 24) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 55 -27 128 -11)(font "Arial" (font_size 8))(invisible)) + (line (pt 112 24)(pt 80 24)(line_width 3)) + ) + (port + (pt 0 24) + (bidir) + (text "tridata[31..0]" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "tridata[31..0]" (rect -74 -36 12 -20)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 64 24)(line_width 3)) + ) + (drawing + (text "32" (rect 24 25 40 40)(font "Arial" )) + (text "32" (rect 88 25 104 40)(font "Arial" )) + (line (pt 80 16)(pt 64 24)(line_width 1)) + (line (pt 64 24)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 80 16)(line_width 1)) + (line (pt 40 28)(pt 32 20)(line_width 1)) + (line (pt 104 28)(pt 96 20)(line_width 1)) + ) + (flipy) +) +(symbol + (rect 808 1408 920 1448) + (text "lpm_bustri_LONG" (rect -14 1 135 20)(font "Arial" (font_size 10))) + (text "inst110" (rect 69 24 117 39)(font "Arial" )) + (port + (pt 72 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 24 -6 81 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 72 40)(pt 72 28)(line_width 1)) + ) + (port + (pt 112 24) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 55 -27 128 -11)(font "Arial" (font_size 8))(invisible)) + (line (pt 112 24)(pt 80 24)(line_width 3)) + ) + (port + (pt 0 24) + (bidir) + (text "tridata[31..0]" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "tridata[31..0]" (rect -74 -36 12 -20)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 64 24)(line_width 3)) + ) + (drawing + (text "32" (rect 24 25 40 40)(font "Arial" )) + (text "32" (rect 88 25 104 40)(font "Arial" )) + (line (pt 80 16)(pt 64 24)(line_width 1)) + (line (pt 64 24)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 80 16)(line_width 1)) + (line (pt 40 28)(pt 32 20)(line_width 1)) + (line (pt 104 28)(pt 96 20)(line_width 1)) + ) + (flipy) +) +(symbol + (rect 808 1528 920 1568) + (text "lpm_bustri_LONG" (rect -14 1 135 20)(font "Arial" (font_size 10))) + (text "inst119" (rect 69 24 117 39)(font "Arial" )) + (port + (pt 72 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 24 -6 81 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 72 40)(pt 72 28)(line_width 1)) + ) + (port + (pt 112 24) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 55 -27 128 -11)(font "Arial" (font_size 8))(invisible)) + (line (pt 112 24)(pt 80 24)(line_width 3)) + ) + (port + (pt 0 24) + (bidir) + (text "tridata[31..0]" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "tridata[31..0]" (rect -74 -36 12 -20)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 64 24)(line_width 3)) + ) + (drawing + (text "32" (rect 24 25 40 40)(font "Arial" )) + (text "32" (rect 88 25 104 40)(font "Arial" )) + (line (pt 80 16)(pt 64 24)(line_width 1)) + (line (pt 64 24)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 80 16)(line_width 1)) + (line (pt 40 28)(pt 32 20)(line_width 1)) + (line (pt 104 28)(pt 96 20)(line_width 1)) + ) + (flipy) +) +(symbol + (rect 1832 2728 1976 2808) + (text "lpm_ff1" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst9" (rect 8 64 39 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 2416 2616 2560 2696) + (text "lpm_ff4" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst10" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[15..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[15..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[15..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 3088 2680 3232 2760) + (text "lpm_ff5" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst11" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[7..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect 20 26 84 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[7..0]" (rect 0 0 43 16)(font "Arial" (font_size 8))) + (text "q[7..0]" (rect 95 42 138 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 1240 2432 1472 2552) + (text "altddio_out0" (rect 81 1 183 20)(font "Arial" (font_size 10))) + (text "inst2" (rect 8 104 39 119)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h[3..0]" (rect 0 0 93 16)(font "Arial" (font_size 8))) + (text "datain_h[3..0]" (rect 4 11 97 27)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 3)) + ) + (port + (pt 0 40) + (input) + (text "datain_l[3..0]" (rect 0 0 88 16)(font "Arial" (font_size 8))) + (text "datain_l[3..0]" (rect 4 27 92 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 61 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout[3..0]" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "dataout[3..0]" (rect 169 11 255 27)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 3)) + ) + (drawing + (text "ddio" (rect 110 27 138 43)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 147 58)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 152 89)(font "Arial" )) + (text "high" (rect 92 84 120 99)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 960 1256 1104 1352) + (text "lpm_ff0" (rect 44 1 106 20)(font "Arial" (font_size 10))) + (text "inst17" (rect 107 80 147 95)(font "Arial" )) + (port + (pt 144 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 64 26 137 42)(font "Arial" (font_size 8))) + (line (pt 144 32)(pt 128 32)(line_width 3)) + ) + (port + (pt 144 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 89 42 125 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 1)) + ) + (port + (pt 144 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 87 58 131 74)(font "Arial" (font_size 8))) + (line (pt 144 64)(pt 128 64)(line_width 1)) + ) + (port + (pt 0 56) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 13 50 64 66)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 13 17 40 32)(font "Arial" )) + (line (pt 128 16)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 128 16)(line_width 1)) + (line (pt 128 42)(pt 122 48)(line_width 1)) + (line (pt 122 48)(pt 128 54)(line_width 1)) + ) + (flipy) +) +(symbol + (rect 960 1376 1104 1472) + (text "lpm_ff0" (rect 44 1 106 20)(font "Arial" (font_size 10))) + (text "inst18" (rect 107 80 147 95)(font "Arial" )) + (port + (pt 144 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 64 26 137 42)(font "Arial" (font_size 8))) + (line (pt 144 32)(pt 128 32)(line_width 3)) + ) + (port + (pt 144 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 89 42 125 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 1)) + ) + (port + (pt 144 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 87 58 131 74)(font "Arial" (font_size 8))) + (line (pt 144 64)(pt 128 64)(line_width 1)) + ) + (port + (pt 0 56) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 13 50 64 66)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 13 17 40 32)(font "Arial" )) + (line (pt 128 16)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 128 16)(line_width 1)) + (line (pt 128 42)(pt 122 48)(line_width 1)) + (line (pt 122 48)(pt 128 54)(line_width 1)) + ) + (flipy) +) +(symbol + (rect 960 1496 1104 1592) + (text "lpm_ff0" (rect 44 1 106 20)(font "Arial" (font_size 10))) + (text "inst19" (rect 107 80 147 95)(font "Arial" )) + (port + (pt 144 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 64 26 137 42)(font "Arial" (font_size 8))) + (line (pt 144 32)(pt 128 32)(line_width 3)) + ) + (port + (pt 144 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 89 42 125 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 1)) + ) + (port + (pt 144 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 87 58 131 74)(font "Arial" (font_size 8))) + (line (pt 144 64)(pt 128 64)(line_width 1)) + ) + (port + (pt 0 56) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 13 50 64 66)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 13 17 40 32)(font "Arial" )) + (line (pt 128 16)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 128 16)(line_width 1)) + (line (pt 128 42)(pt 122 48)(line_width 1)) + (line (pt 122 48)(pt 128 54)(line_width 1)) + ) + (flipy) +) +(symbol + (rect 1040 888 1184 968) + (text "lpm_ff1" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst3" (rect 8 64 39 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 1296 904 1440 984) + (text "lpm_ff1" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst4" (rect 8 64 39 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 1040 976 1184 1056) + (text "lpm_ff1" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst12" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 1296 992 1440 1072) + (text "lpm_ff1" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst20" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 1344 1280 1496 1392) + (text "lpm_mux5" (rect 50 2 134 21)(font "Arial" (font_size 10))) + (text "inst22" (rect 8 96 48 111)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data3x[63..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data3x[63..0]" (rect 4 27 93 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data2x[63..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data2x[63..0]" (rect 4 43 93 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data1x[63..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data1x[63..0]" (rect 4 59 93 75)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data0x[63..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data0x[63..0]" (rect 4 75 93 91)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 80 112) + (input) + (text "sel[1..0]" (rect 0 0 55 16)(font "Arial" (font_size 8))) + (text "sel[1..0]" (rect 84 99 139 115)(font "Arial" (font_size 8))) + (line (pt 80 112)(pt 80 100)(line_width 3)) + ) + (port + (pt 152 64) + (output) + (text "result[63..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "result[63..0]" (rect 92 51 173 67)(font "Arial" (font_size 8))) + (line (pt 152 64)(pt 88 64)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 104)(line_width 1)) + (line (pt 88 32)(pt 88 96)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 104)(pt 88 96)(line_width 1)) + ) +) +(symbol + (rect 992 2760 1056 2840) + (text "DFF" (rect 1 0 23 13)(font "Arial" (font_size 6))) + (text "inst88" (rect 3 68 43 83)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 54 75)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 54 74)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) + (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)(line_width 1)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 48 29)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 48 27)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) + (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 12 12)(pt 52 12)(line_width 1)) + (line (pt 12 68)(pt 52 68)(line_width 1)) + (line (pt 52 68)(pt 52 12)(line_width 1)) + (line (pt 12 68)(pt 12 12)(line_width 1)) + (line (pt 19 40)(pt 12 47)(line_width 1)) + (line (pt 12 32)(pt 20 40)(line_width 1)) + (circle (rect 28 4 36 12)(line_width 1)) + (circle (rect 28 68 36 76)(line_width 1)) + ) +) +(symbol + (rect 968 2376 1032 2456) + (text "DFF" (rect 1 0 23 13)(font "Arial" (font_size 6))) + (text "inst90" (rect 3 68 43 83)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 54 75)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 54 74)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) + (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)(line_width 1)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 48 29)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 48 27)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) + (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 12 12)(pt 52 12)(line_width 1)) + (line (pt 12 68)(pt 52 68)(line_width 1)) + (line (pt 52 68)(pt 52 12)(line_width 1)) + (line (pt 12 68)(pt 12 12)(line_width 1)) + (line (pt 19 40)(pt 12 47)(line_width 1)) + (line (pt 12 32)(pt 20 40)(line_width 1)) + (circle (rect 28 4 36 12)(line_width 1)) + (circle (rect 28 68 36 76)(line_width 1)) + ) +) +(symbol + (rect 1312 1512 1552 1648) + (text "altddio_bidir0" (rect 82 1 196 20)(font "Arial" (font_size 10))) + (text "inst1" (rect 8 120 39 135)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h[31..0]" (rect 0 0 101 16)(font "Arial" (font_size 8))) + (text "datain_h[31..0]" (rect 4 11 105 27)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 3)) + ) + (port + (pt 0 40) + (input) + (text "datain_l[31..0]" (rect 0 0 96 16)(font "Arial" (font_size 8))) + (text "datain_l[31..0]" (rect 4 27 100 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "oe" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "oe" (rect 4 43 20 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "inclock" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "inclock" (rect 4 59 52 75)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 88 72)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 75 61 91)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 88 88)(line_width 1)) + ) + (port + (pt 240 24) + (output) + (text "dataout_h[31..0]" (rect 0 0 110 16)(font "Arial" (font_size 8))) + (text "dataout_h[31..0]" (rect 159 11 269 27)(font "Arial" (font_size 8))) + (line (pt 240 24)(pt 144 24)(line_width 3)) + ) + (port + (pt 240 40) + (output) + (text "dataout_l[31..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "dataout_l[31..0]" (rect 163 27 269 43)(font "Arial" (font_size 8))) + (line (pt 240 40)(pt 144 40)(line_width 3)) + ) + (port + (pt 240 72) + (output) + (text "combout[31..0]" (rect 0 0 102 16)(font "Arial" (font_size 8))) + (text "combout[31..0]" (rect 166 59 268 75)(font "Arial" (font_size 8))) + (line (pt 240 72)(pt 144 72)(line_width 3)) + ) + (port + (pt 240 56) + (bidir) + (text "padio[31..0]" (rect 0 0 80 16)(font "Arial" (font_size 8))) + (text "padio[31..0]" (rect 181 43 261 59)(font "Arial" (font_size 8))) + (line (pt 240 56)(pt 144 56)(line_width 3)) + ) + (drawing + (text "ddio" (rect 108 27 136 43)(font "Arial" (font_size 8))) + (text "bidir" (rect 108 42 136 58)(font "Arial" (font_size 8))) + (text "power up" (rect 92 90 152 105)(font "Arial" )) + (text "low" (rect 92 100 114 115)(font "Arial" )) + (line (pt 88 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 112)(line_width 1)) + (line (pt 144 112)(pt 88 112)(line_width 1)) + (line (pt 88 112)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 368 1784 432 1832) + (text "OR3" (rect 1 0 25 13)(font "Arial" (font_size 6))) + (text "inst39" (rect 3 37 44 53)(font "Arial" (font_size 8))) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 26 31)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 26 31)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 18 24)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 24 26 40)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 24 26 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 47 15 71 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 47 15 71 31)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 13)(pt 25 13)(line_width 1)) + (line (pt 14 36)(pt 25 36)(line_width 1)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) + ) +) +(symbol + (rect 1688 1552 1848 1632) + (text "lpm_latch0" (rect 49 1 139 20)(font "Arial" (font_size 10))) + (text "inst27" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "gate" (rect 0 0 29 16)(font "Arial" (font_size 8))) + (text "gate" (rect 20 42 49 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 160 32) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 105 26 156 42)(font "Arial" (font_size 8))) + (line (pt 160 32)(pt 144 32)(line_width 3)) + ) + (drawing + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 64)(line_width 1)) + (line (pt 144 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + ) +) +(symbol + (rect 888 2904 1032 3000) + (text "lpm_ff6" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst36" (rect 8 80 48 95)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 26 101 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 64 74)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[127..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 83 50 143 66)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 920 2144 1064 2224) + (text "lpm_shiftreg6" (rect 34 1 148 20)(font "Arial" (font_size 10))) + (text "inst92" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 62 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 60 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[4..0]" (rect 0 0 43 16)(font "Arial" (font_size 8))) + (text "q[4..0]" (rect 95 42 138 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "right shift" (rect 88 17 147 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) +(symbol + (rect 904 2528 1048 2608) + (text "lpm_shiftreg6" (rect 34 1 148 20)(font "Arial" (font_size 10))) + (text "inst89" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 62 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 60 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[4..0]" (rect 0 0 43 16)(font "Arial" (font_size 8))) + (text "q[4..0]" (rect 95 42 138 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "right shift" (rect 88 17 147 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) +(symbol + (rect 920 2248 1064 2328) + (text "lpm_shiftreg4" (rect 34 1 148 20)(font "Arial" (font_size 10))) + (text "inst26" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 62 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 60 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "shiftout" (rect 0 0 49 16)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 42 138 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 1)) + ) + (drawing + (text "right shift" (rect 88 17 147 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) +(symbol + (rect 2080 1528 2144 1608) + (text "DFF" (rect 1 0 23 13)(font "Arial" (font_size 6))) + (text "inst95" (rect 3 68 43 83)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 54 75)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 54 74)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) + (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)(line_width 1)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 48 29)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 48 27)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) + (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 12 12)(pt 52 12)(line_width 1)) + (line (pt 12 68)(pt 52 68)(line_width 1)) + (line (pt 52 68)(pt 52 12)(line_width 1)) + (line (pt 12 68)(pt 12 12)(line_width 1)) + (line (pt 19 40)(pt 12 47)(line_width 1)) + (line (pt 12 32)(pt 20 40)(line_width 1)) + (circle (rect 28 4 36 12)(line_width 1)) + (circle (rect 28 68 36 76)(line_width 1)) + ) +) +(symbol + (rect 1312 2320 1376 2368) + (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) + (text "inst37" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)(line_width 1)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 36)(pt 25 36)(line_width 1)) + (line (pt 14 13)(pt 25 13)(line_width 1)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) + ) +) +(symbol + (rect 1088 2640 1232 2720) + (text "lpm_ff5" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst97" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[7..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect 20 26 84 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[7..0]" (rect 0 0 43 16)(font "Arial" (font_size 8))) + (text "q[7..0]" (rect 95 42 138 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 4280 2768 4512 2888) + (text "altddio_out2" (rect 81 1 183 20)(font "Arial" (font_size 10))) + (text "inst5" (rect 8 104 39 119)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h[23..0]" (rect 0 0 101 16)(font "Arial" (font_size 8))) + (text "datain_h[23..0]" (rect 4 11 105 27)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 3)) + ) + (port + (pt 0 40) + (input) + (text "datain_l[23..0]" (rect 0 0 96 16)(font "Arial" (font_size 8))) + (text "datain_l[23..0]" (rect 4 27 100 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 61 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout[23..0]" (rect 0 0 94 16)(font "Arial" (font_size 8))) + (text "dataout[23..0]" (rect 163 11 257 27)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 3)) + ) + (drawing + (text "ddio" (rect 110 27 138 43)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 147 58)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 152 89)(font "Arial" )) + (text "low" (rect 92 84 114 99)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 3720 1936 3816 1984) + (text "lpm_constant1" (rect 6 1 128 20)(font "Arial" (font_size 10))) + (text "inst77" (rect 8 32 48 47)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[1..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "result[1..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 83 33)(font "Arial" )) + (text "2" (rect 87 25 95 40)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) +(symbol + (rect 3720 1736 3816 1784) + (text "lpm_constant1" (rect 6 1 128 20)(font "Arial" (font_size 10))) + (text "inst80" (rect 8 32 48 47)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[1..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "result[1..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 83 33)(font "Arial" )) + (text "2" (rect 87 25 95 40)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) +(symbol + (rect 3720 1528 3816 1576) + (text "lpm_constant1" (rect 6 1 128 20)(font "Arial" (font_size 10))) + (text "inst83" (rect 8 32 48 47)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[1..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "result[1..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 83 33)(font "Arial" )) + (text "2" (rect 87 25 95 40)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) +(symbol + (rect 2424 2720 2520 2768) + (text "lpm_constant2" (rect 6 1 128 20)(font "Arial" (font_size 10))) + (text "inst23" (rect 8 32 48 47)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[7..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "result[7..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 83 33)(font "Arial" )) + (text "8" (rect 87 25 95 40)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) +(symbol + (rect 4024 2696 4176 2888) + (text "lpm_mux6" (rect 50 2 134 21)(font "Arial" (font_size 10))) + (text "inst7" (rect 8 176 39 191)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data7x[23..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data7x[23..0]" (rect 4 27 93 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data6x[23..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data6x[23..0]" (rect 4 43 93 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data5x[23..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data5x[23..0]" (rect 4 59 93 75)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data4x[23..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data4x[23..0]" (rect 4 75 93 91)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data3x[23..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data3x[23..0]" (rect 4 91 93 107)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data2x[23..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data2x[23..0]" (rect 4 107 93 123)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 72 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data1x[23..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data1x[23..0]" (rect 4 123 93 139)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 72 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data0x[23..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data0x[23..0]" (rect 4 139 93 155)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 72 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 4 155 40 171)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 72 168)(line_width 1)) + ) + (port + (pt 80 192) + (input) + (text "sel[2..0]" (rect 0 0 55 16)(font "Arial" (font_size 8))) + (text "sel[2..0]" (rect 84 179 139 195)(font "Arial" (font_size 8))) + (line (pt 80 192)(pt 80 180)(line_width 3)) + ) + (port + (pt 152 104) + (output) + (text "result[23..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "result[23..0]" (rect 92 91 173 107)(font "Arial" (font_size 8))) + (line (pt 152 104)(pt 88 104)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 184)(line_width 1)) + (line (pt 88 32)(pt 88 176)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 184)(pt 88 176)(line_width 1)) + (line (pt 72 162)(pt 78 168)(line_width 1)) + (line (pt 78 168)(pt 72 174)(line_width 1)) + ) +) +(symbol + (rect 2824 2544 2968 2864) + (text "lpm_mux2" (rect 50 2 134 21)(font "Arial" (font_size 10))) + (text "inst25" (rect 8 304 48 319)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data15x[7..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data15x[7..0]" (rect 4 27 93 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data14x[7..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data14x[7..0]" (rect 4 43 93 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data13x[7..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data13x[7..0]" (rect 4 59 93 75)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data12x[7..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data12x[7..0]" (rect 4 75 93 91)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data11x[7..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data11x[7..0]" (rect 4 91 93 107)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data10x[7..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data10x[7..0]" (rect 4 107 93 123)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 72 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data9x[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data9x[7..0]" (rect 4 123 85 139)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 72 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data8x[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data8x[7..0]" (rect 4 139 85 155)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 72 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "data7x[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data7x[7..0]" (rect 4 155 85 171)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 72 168)(line_width 3)) + ) + (port + (pt 0 184) + (input) + (text "data6x[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data6x[7..0]" (rect 4 171 85 187)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 72 184)(line_width 3)) + ) + (port + (pt 0 200) + (input) + (text "data5x[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data5x[7..0]" (rect 4 187 85 203)(font "Arial" (font_size 8))) + (line (pt 0 200)(pt 72 200)(line_width 3)) + ) + (port + (pt 0 216) + (input) + (text "data4x[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data4x[7..0]" (rect 4 203 85 219)(font "Arial" (font_size 8))) + (line (pt 0 216)(pt 72 216)(line_width 3)) + ) + (port + (pt 0 232) + (input) + (text "data3x[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data3x[7..0]" (rect 4 219 85 235)(font "Arial" (font_size 8))) + (line (pt 0 232)(pt 72 232)(line_width 3)) + ) + (port + (pt 0 248) + (input) + (text "data2x[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data2x[7..0]" (rect 4 235 85 251)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 72 248)(line_width 3)) + ) + (port + (pt 0 264) + (input) + (text "data1x[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data1x[7..0]" (rect 4 251 85 267)(font "Arial" (font_size 8))) + (line (pt 0 264)(pt 72 264)(line_width 3)) + ) + (port + (pt 0 280) + (input) + (text "data0x[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data0x[7..0]" (rect 4 267 85 283)(font "Arial" (font_size 8))) + (line (pt 0 280)(pt 72 280)(line_width 3)) + ) + (port + (pt 0 296) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 4 283 40 299)(font "Arial" (font_size 8))) + (line (pt 0 296)(pt 72 296)(line_width 1)) + ) + (port + (pt 80 320) + (input) + (text "sel[3..0]" (rect 0 0 55 16)(font "Arial" (font_size 8))) + (text "sel[3..0]" (rect 84 307 139 323)(font "Arial" (font_size 8))) + (line (pt 80 320)(pt 80 308)(line_width 3)) + ) + (port + (pt 144 168) + (output) + (text "result[7..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "result[7..0]" (rect 90 155 163 171)(font "Arial" (font_size 8))) + (line (pt 144 168)(pt 88 168)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 312)(line_width 1)) + (line (pt 88 32)(pt 88 304)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 312)(pt 88 304)(line_width 1)) + (line (pt 72 290)(pt 78 296)(line_width 1)) + (line (pt 78 296)(pt 72 302)(line_width 1)) + ) +) +(symbol + (rect 2224 2544 2376 2736) + (text "lpm_mux1" (rect 50 2 134 21)(font "Arial" (font_size 10))) + (text "inst24" (rect 8 176 48 191)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data7x[15..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data7x[15..0]" (rect 4 27 93 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data6x[15..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data6x[15..0]" (rect 4 43 93 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data5x[15..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data5x[15..0]" (rect 4 59 93 75)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data4x[15..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data4x[15..0]" (rect 4 75 93 91)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data3x[15..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data3x[15..0]" (rect 4 91 93 107)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data2x[15..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data2x[15..0]" (rect 4 107 93 123)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 72 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data1x[15..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data1x[15..0]" (rect 4 123 93 139)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 72 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data0x[15..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data0x[15..0]" (rect 4 139 93 155)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 72 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 4 155 40 171)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 72 168)(line_width 1)) + ) + (port + (pt 80 192) + (input) + (text "sel[2..0]" (rect 0 0 55 16)(font "Arial" (font_size 8))) + (text "sel[2..0]" (rect 84 179 139 195)(font "Arial" (font_size 8))) + (line (pt 80 192)(pt 80 180)(line_width 3)) + ) + (port + (pt 152 104) + (output) + (text "result[15..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "result[15..0]" (rect 92 91 173 107)(font "Arial" (font_size 8))) + (line (pt 152 104)(pt 88 104)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 184)(line_width 1)) + (line (pt 88 32)(pt 88 176)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 184)(pt 88 176)(line_width 1)) + (line (pt 72 162)(pt 78 168)(line_width 1)) + (line (pt 78 168)(pt 72 174)(line_width 1)) + ) +) +(symbol + (rect 1616 2688 1768 2816) + (text "lpm_mux0" (rect 50 2 134 21)(font "Arial" (font_size 10))) + (text "inst21" (rect 8 112 48 127)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data3x[31..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data3x[31..0]" (rect 4 27 93 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data2x[31..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data2x[31..0]" (rect 4 43 93 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data1x[31..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data1x[31..0]" (rect 4 59 93 75)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data0x[31..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "data0x[31..0]" (rect 4 75 93 91)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 4 91 40 107)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 1)) + ) + (port + (pt 80 128) + (input) + (text "sel[1..0]" (rect 0 0 55 16)(font "Arial" (font_size 8))) + (text "sel[1..0]" (rect 84 115 139 131)(font "Arial" (font_size 8))) + (line (pt 80 128)(pt 80 116)(line_width 3)) + ) + (port + (pt 152 72) + (output) + (text "result[31..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "result[31..0]" (rect 92 59 173 75)(font "Arial" (font_size 8))) + (line (pt 152 72)(pt 88 72)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 120)(line_width 1)) + (line (pt 88 32)(pt 88 112)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 120)(pt 88 112)(line_width 1)) + (line (pt 72 98)(pt 78 104)(line_width 1)) + (line (pt 78 104)(pt 72 110)(line_width 1)) + ) +) +(symbol + (rect 3672 2752 3816 2832) + (text "lpm_ff3" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst46" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[23..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[23..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[23..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[23..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 3432 2736 3576 2816) + (text "lpm_ff3" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst47" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[23..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[23..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[23..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[23..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 3672 2840 3816 2920) + (text "lpm_ff3" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst49" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[23..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[23..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[23..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[23..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 3432 2824 3576 2904) + (text "lpm_ff3" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst52" (rect 8 64 48 79)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[23..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[23..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[23..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[23..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 2912 2936 2976 3016) + (text "DFF" (rect 1 0 23 13)(font "Arial" (font_size 6))) + (text "inst91" (rect 3 68 43 83)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 54 75)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 54 74)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) + (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)(line_width 1)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 48 29)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 48 27)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) + (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 12 12)(pt 52 12)(line_width 1)) + (line (pt 12 68)(pt 52 68)(line_width 1)) + (line (pt 52 68)(pt 52 12)(line_width 1)) + (line (pt 12 68)(pt 12 12)(line_width 1)) + (line (pt 19 40)(pt 12 47)(line_width 1)) + (line (pt 12 32)(pt 20 40)(line_width 1)) + (circle (rect 28 4 36 12)(line_width 1)) + (circle (rect 28 68 36 76)(line_width 1)) + ) +) +(symbol + (rect 3048 2936 3112 3016) + (text "DFF" (rect 1 0 23 13)(font "Arial" (font_size 6))) + (text "inst93" (rect 3 68 43 83)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 54 75)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 54 74)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) + (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)(line_width 1)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 48 29)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 48 27)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) + (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 12 12)(pt 52 12)(line_width 1)) + (line (pt 12 68)(pt 52 68)(line_width 1)) + (line (pt 52 68)(pt 52 12)(line_width 1)) + (line (pt 12 68)(pt 12 12)(line_width 1)) + (line (pt 19 40)(pt 12 47)(line_width 1)) + (line (pt 12 32)(pt 20 40)(line_width 1)) + (circle (rect 28 4 36 12)(line_width 1)) + (circle (rect 28 68 36 76)(line_width 1)) + ) +) +(symbol + (rect 1712 1328 1872 1496) + (text "lpm_fifo_dc0" (rect 44 1 153 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 152 31 167)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 26 101 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "wrreq" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "wrreq" (rect 20 50 56 66)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "wrclk" (rect 0 0 35 16)(font "Arial" (font_size 8))) + (text "wrclk" (rect 26 66 61 82)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "rdreq" (rect 0 0 34 16)(font "Arial" (font_size 8))) + (text "rdreq" (rect 20 98 54 114)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "rdclk" (rect 0 0 33 16)(font "Arial" (font_size 8))) + (text "rdclk" (rect 26 114 59 130)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 144) + (input) + (text "aclr" (rect 0 0 24 16)(font "Arial" (font_size 8))) + (text "aclr" (rect 20 138 44 154)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)(line_width 1)) + ) + (port + (pt 160 72) + (output) + (text "wrusedw[8..0]" (rect 0 0 94 16)(font "Arial" (font_size 8))) + (text "wrusedw[8..0]" (rect 69 66 163 82)(font "Arial" (font_size 8))) + (line (pt 160 72)(pt 144 72)(line_width 3)) + ) + (port + (pt 160 96) + (output) + (text "q[127..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 99 90 159 106)(font "Arial" (font_size 8))) + (line (pt 160 96)(pt 144 96)(line_width 3)) + ) + (port + (pt 160 120) + (output) + (text "rdempty" (rect 0 0 55 16)(font "Arial" (font_size 8))) + (text "rdempty" (rect 102 114 157 130)(font "Arial" (font_size 8))) + (line (pt 160 120)(pt 144 120)(line_width 1)) + ) + (drawing + (text "128 bits x 512 words" (rect 58 140 191 155)(font "Arial" )) + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 152)(line_width 1)) + (line (pt 144 152)(pt 16 152)(line_width 1)) + (line (pt 16 152)(pt 16 16)(line_width 1)) + (line (pt 16 84)(pt 144 84)(line_width 1)) + (line (pt 16 132)(pt 144 132)(line_width 1)) + (line (pt 16 66)(pt 22 72)(line_width 1)) + (line (pt 22 72)(pt 16 78)(line_width 1)) + (line (pt 16 114)(pt 22 120)(line_width 1)) + (line (pt 22 120)(pt 16 126)(line_width 1)) + ) +) +(symbol + (rect 3768 2488 3864 2528) + (text "lpm_bustri_BYT" (rect 2 1 136 20)(font "Arial" (font_size 10))) + (text "inst53" (rect 8 24 48 39)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 97 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[7..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect -3 -21 61 -5)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 96 24) + (bidir) + (text "tridata[7..0]" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "tridata[7..0]" (rect 100 -30 177 -14)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "8" (rect 71 25 79 40)(font "Arial" )) + (text "8" (rect 15 25 23 40)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 66 28)(pt 74 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) +(symbol + (rect 3296 2384 3328 2416) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst75" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 3768 2280 3864 2320) + (text "lpm_bustri_BYT" (rect 2 1 136 20)(font "Arial" (font_size 10))) + (text "inst57" (rect 8 24 48 39)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 97 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[7..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect -3 -21 61 -5)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 96 24) + (bidir) + (text "tridata[7..0]" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "tridata[7..0]" (rect 100 -30 177 -14)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "8" (rect 71 25 79 40)(font "Arial" )) + (text "8" (rect 15 25 23 40)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 66 28)(pt 74 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) +(symbol + (rect 3296 2176 3328 2208) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst76" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 3768 2072 3864 2112) + (text "lpm_bustri_BYT" (rect 2 1 136 20)(font "Arial" (font_size 10))) + (text "inst58" (rect 8 24 48 39)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 97 10)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[7..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect -3 -21 61 -5)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 96 24) + (bidir) + (text "tridata[7..0]" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "tridata[7..0]" (rect 100 -30 177 -14)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "8" (rect 71 25 79 40)(font "Arial" )) + (text "8" (rect 15 25 23 40)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 66 28)(pt 74 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) +(symbol + (rect 3448 2272 3704 2480) + (text "altdpram2" (rect 100 1 183 20)(font "Arial" (font_size 10))) + (text "ACP_CLUT_RAM54" (rect 8 192 136 207)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_a[7..0]" (rect 4 19 85 35)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_a[7..0]" (rect 4 35 110 51)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 52 67)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_b[7..0]" (rect 4 83 85 99)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_b[7..0]" (rect 4 99 110 115)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 52 131)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 57 163)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 57 179)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[7..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_a[7..0]" (rect 211 19 271 35)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[7..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_b[7..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 155 203)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) +(symbol + (rect 3448 2480 3704 2688) + (text "altdpram2" (rect 100 1 183 20)(font "Arial" (font_size 10))) + (text "ACP_CLUT_RAM" (rect 8 192 120 207)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_a[7..0]" (rect 4 19 85 35)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_a[7..0]" (rect 4 35 110 51)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 52 67)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_b[7..0]" (rect 4 83 85 99)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_b[7..0]" (rect 4 99 110 115)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 52 131)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 57 163)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 57 179)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[7..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_a[7..0]" (rect 211 19 271 35)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[7..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_b[7..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 155 203)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) +(symbol + (rect 3448 1832 3704 2040) + (text "altdpram1" (rect 100 1 183 20)(font "Arial" (font_size 10))) + (text "FALCON_CLUT_BLUE" (rect 8 192 156 207)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[5..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_a[5..0]" (rect 4 19 85 35)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_a[7..0]" (rect 4 35 110 51)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 52 67)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[5..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_b[5..0]" (rect 4 83 85 99)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_b[7..0]" (rect 4 99 110 115)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 52 131)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 57 163)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 57 179)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[5..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_a[5..0]" (rect 211 19 271 35)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[5..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_b[5..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 155 203)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) +(symbol + (rect 3448 1416 3704 1624) + (text "altdpram1" (rect 100 1 183 20)(font "Arial" (font_size 10))) + (text "FALCON_CLUT_RED" (rect 8 192 149 207)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[5..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_a[5..0]" (rect 4 19 85 35)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_a[7..0]" (rect 4 35 110 51)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 52 67)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[5..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_b[5..0]" (rect 4 83 85 99)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_b[7..0]" (rect 4 99 110 115)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 52 131)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 57 163)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 57 179)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[5..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_a[5..0]" (rect 211 19 271 35)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[5..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_b[5..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 155 203)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) +(symbol + (rect 3448 1624 3704 1832) + (text "altdpram1" (rect 100 1 183 20)(font "Arial" (font_size 10))) + (text "FALCON_CLUT_GREEN" (rect 8 192 169 207)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[5..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_a[5..0]" (rect 4 19 85 35)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_a[7..0]" (rect 4 35 110 51)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 52 67)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[5..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_b[5..0]" (rect 4 83 85 99)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_b[7..0]" (rect 4 99 110 115)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 52 131)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 57 163)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 57 179)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[5..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_a[5..0]" (rect 211 19 271 35)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[5..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_b[5..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 155 203)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) +(symbol + (rect 3448 2064 3704 2272) + (text "altdpram2" (rect 100 1 183 20)(font "Arial" (font_size 10))) + (text "ACP_CLUT_RAM55" (rect 8 192 136 207)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_a[7..0]" (rect 4 19 85 35)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_a[7..0]" (rect 4 35 110 51)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 52 67)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_b[7..0]" (rect 4 83 85 99)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[7..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_b[7..0]" (rect 4 99 110 115)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 52 131)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 57 163)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 57 179)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[7..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_a[7..0]" (rect 211 19 271 35)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[7..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_b[7..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 155 203)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) +(symbol + (rect 3448 1192 3704 1400) + (text "altdpram0" (rect 100 1 183 20)(font "Arial" (font_size 10))) + (text "ST_CLUT_BLUE" (rect 8 192 117 207)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[2..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_a[2..0]" (rect 4 19 85 35)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[3..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_a[3..0]" (rect 4 35 110 51)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 52 67)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[2..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data_b[2..0]" (rect 4 83 85 99)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[3..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "address_b[3..0]" (rect 4 99 110 115)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 48 16)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 52 131)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 57 163)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 57 179)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[2..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_a[2..0]" (rect 211 19 271 35)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[2..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q_b[2..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "16 Word(s)" (rect 136 61 151 132)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 155 203)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) +(symbol + (rect 2000 1368 2168 1480) + (text "lpm_muxDZ" (rect 54 2 153 21)(font "Arial" (font_size 10))) + (text "inst62" (rect 8 96 48 111)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data1x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data1x[127..0]" (rect 4 27 101 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 80 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data0x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data0x[127..0]" (rect 4 43 101 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 80 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 4 59 40 75)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 80 72)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "clken" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clken" (rect 4 75 40 91)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 80 88)(line_width 1)) + ) + (port + (pt 88 112) + (input) + (text "sel" (rect 0 0 20 16)(font "Arial" (font_size 8))) + (text "sel" (rect 92 99 112 115)(font "Arial" (font_size 8))) + (line (pt 88 112)(pt 88 100)(line_width 1)) + ) + (port + (pt 168 64) + (output) + (text "result[127..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "result[127..0]" (rect 102 51 191 67)(font "Arial" (font_size 8))) + (line (pt 168 64)(pt 96 64)(line_width 3)) + ) + (drawing + (line (pt 80 24)(pt 80 104)(line_width 1)) + (line (pt 96 32)(pt 96 96)(line_width 1)) + (line (pt 80 24)(pt 96 32)(line_width 1)) + (line (pt 80 104)(pt 96 96)(line_width 1)) + (line (pt 80 66)(pt 86 72)(line_width 1)) + (line (pt 86 72)(pt 80 78)(line_width 1)) + ) +) +(symbol + (rect 1536 1408 1600 1456) + (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "inst65" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 12)(pt 30 12)(line_width 1)) + (line (pt 14 37)(pt 31 37)(line_width 1)) + (line (pt 14 12)(pt 14 37)(line_width 1)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)(line_width 1)) + ) +) +(symbol + (rect 1856 1272 1920 1320) + (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "inst67" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 12)(pt 30 12)(line_width 1)) + (line (pt 14 37)(pt 31 37)(line_width 1)) + (line (pt 14 12)(pt 14 37)(line_width 1)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)(line_width 1)) + ) +) +(symbol + (rect 1456 1424 1504 1456) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst69" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 1160 1104 1304 1200) + (text "lpm_ff6" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst71" (rect 8 80 48 95)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 26 101 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 64 74)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[127..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 83 50 143 66)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 1400 1128 1544 1224) + (text "lpm_ff6" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst94" (rect 8 80 48 95)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 26 101 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 64 74)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[127..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 83 50 143 66)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 1800 816 1968 1120) + (text "lpm_muxVDM" (rect 47 2 163 21)(font "Arial" (font_size 10))) + (text "inst100" (rect 8 288 56 303)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data15x[127..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "data15x[127..0]" (rect 4 27 110 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 80 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data14x[127..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "data14x[127..0]" (rect 4 43 110 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 80 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data13x[127..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "data13x[127..0]" (rect 4 59 110 75)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 80 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data12x[127..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "data12x[127..0]" (rect 4 75 110 91)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 80 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data11x[127..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "data11x[127..0]" (rect 4 91 110 107)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 80 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data10x[127..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) + (text "data10x[127..0]" (rect 4 107 110 123)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 80 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data9x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data9x[127..0]" (rect 4 123 101 139)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 80 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data8x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data8x[127..0]" (rect 4 139 101 155)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 80 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "data7x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data7x[127..0]" (rect 4 155 101 171)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 80 168)(line_width 3)) + ) + (port + (pt 0 184) + (input) + (text "data6x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data6x[127..0]" (rect 4 171 101 187)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 80 184)(line_width 3)) + ) + (port + (pt 0 200) + (input) + (text "data5x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data5x[127..0]" (rect 4 187 101 203)(font "Arial" (font_size 8))) + (line (pt 0 200)(pt 80 200)(line_width 3)) + ) + (port + (pt 0 216) + (input) + (text "data4x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data4x[127..0]" (rect 4 203 101 219)(font "Arial" (font_size 8))) + (line (pt 0 216)(pt 80 216)(line_width 3)) + ) + (port + (pt 0 232) + (input) + (text "data3x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data3x[127..0]" (rect 4 219 101 235)(font "Arial" (font_size 8))) + (line (pt 0 232)(pt 80 232)(line_width 3)) + ) + (port + (pt 0 248) + (input) + (text "data2x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data2x[127..0]" (rect 4 235 101 251)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 80 248)(line_width 3)) + ) + (port + (pt 0 264) + (input) + (text "data1x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data1x[127..0]" (rect 4 251 101 267)(font "Arial" (font_size 8))) + (line (pt 0 264)(pt 80 264)(line_width 3)) + ) + (port + (pt 0 280) + (input) + (text "data0x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) + (text "data0x[127..0]" (rect 4 267 101 283)(font "Arial" (font_size 8))) + (line (pt 0 280)(pt 80 280)(line_width 3)) + ) + (port + (pt 88 304) + (input) + (text "sel[3..0]" (rect 0 0 55 16)(font "Arial" (font_size 8))) + (text "sel[3..0]" (rect 92 291 147 307)(font "Arial" (font_size 8))) + (line (pt 88 304)(pt 88 292)(line_width 3)) + ) + (port + (pt 168 160) + (output) + (text "result[127..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "result[127..0]" (rect 102 147 191 163)(font "Arial" (font_size 8))) + (line (pt 168 160)(pt 96 160)(line_width 3)) + ) + (drawing + (line (pt 80 24)(pt 80 296)(line_width 1)) + (line (pt 96 32)(pt 96 288)(line_width 1)) + (line (pt 80 24)(pt 96 32)(line_width 1)) + (line (pt 80 296)(pt 96 288)(line_width 1)) + ) +) +(symbol + (rect 2072 1176 2232 1320) + (text "lpm_fifoDZ" (rect 41 2 133 21)(font "Arial" (font_size 10))) + (text "inst63" (rect 8 125 48 140)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 24 101 40)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "wrreq" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "wrreq" (rect 20 48 56 64)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "rdreq" (rect 0 0 34 16)(font "Arial" (font_size 8))) + (text "rdreq" (rect 20 64 54 80)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 88 62 104)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "aclr" (rect 0 0 24 16)(font "Arial" (font_size 8))) + (text "aclr" (rect 20 112 44 128)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 160 32) + (output) + (text "q[127..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 90 24 150 40)(font "Arial" (font_size 8))) + (line (pt 160 32)(pt 144 32)(line_width 3)) + ) + (drawing + (text "(ack)" (rect 51 67 82 82)(font "Arial" )) + (text "128 bits x 128 words" (rect 31 114 164 129)(font "Arial" )) + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 128)(line_width 1)) + (line (pt 144 128)(pt 16 128)(line_width 1)) + (line (pt 16 128)(pt 16 16)(line_width 1)) + (line (pt 16 108)(pt 144 108)(line_width 1)) + (line (pt 16 90)(pt 22 96)(line_width 1)) + (line (pt 22 96)(pt 16 102)(line_width 1)) + ) +) +(block + (rect 296 2552 568 3000) + (text "BLITTER" (rect 5 5 65 21)(font "Arial" (font_size 8))) (text "BLITTER" (rect 5 434 62 449)(font "Arial" )) (block_io "nRSTO" (input)) + (block_io "MAIN_CLK" (input)) + (block_io "FB_ALE" (input)) + (block_io "nFB_WR" (input)) + (block_io "nFB_OE" (input)) + (block_io "FB_SIZE0" (input)) + (block_io "FB_SIZE1" (input)) + (block_io "VIDEO_RAM_CTR[15..0]" (input)) + (block_io "BLITTER_ON" (input)) + (block_io "FB_ADR[31..0]" (input)) + (block_io "nFB_CS1" (input)) + (block_io "nFB_CS2" (input)) + (block_io "nFB_CS3" (input)) + (block_io "DDRCLK0" (input)) + (block_io "BLITTER_DIN[127..0]" (input)) + (block_io "BLITTER_DACK[4..0]" (input)) + (block_io "BLITTER_RUN" (output)) + (block_io "BLITTER_DOUT[127..0]" (output)) + (block_io "BLITTER_ADR[31..0]" (output)) + (block_io "BLITTER_SIG" (output)) + (block_io "BLITTER_WR" (output)) + (block_io "BLITTER_TA" (output)) + (block_io "FB_AD[31..0]" (bidir)) + (mapper + (pt 272 176) + (bidir) + ) + (mapper + (pt 272 208) + (bidir) + ) + (mapper + (pt 272 240) + (bidir) + ) + (mapper + (pt 272 264) + (bidir) + ) + (mapper + (pt 272 288) + (bidir) + ) + (mapper + (pt 0 384) + (bidir) + ) + (mapper + (pt 272 72) + (bidir) + ) + (mapper + (pt 0 56) + (bidir) + ) + (mapper + (pt 0 32) + (bidir) + ) + (mapper + (pt 0 296) + (bidir) + ) + (mapper + (pt 0 272) + (bidir) + ) + (mapper + (pt 0 104) + (bidir) + ) + (mapper + (pt 0 128) + (bidir) + ) + (mapper + (pt 0 80) + (bidir) + ) + (mapper + (pt 0 248) + (bidir) + ) + (mapper + (pt 0 224) + (bidir) + ) + (mapper + (pt 0 200) + (bidir) + ) + (mapper + (pt 0 176) + (bidir) + ) + (mapper + (pt 0 152) + (bidir) + ) + (mapper + (pt 0 360) + (bidir) + ) + (mapper + (pt 0 328) + (bidir) + ) + (mapper + (pt 272 424) + (bidir) + ) + (mapper + (pt 0 408) + (bidir) + ) +) +(block + (rect 1664 1664 2016 2600) + (text "VIDEO_MOD_MUX_CLUTCTR" (rect 5 5 211 21)(font "Arial" (font_size 8))) (text "VIDEO_MOD_MUX_CLUTCTR" (rect 5 922 200 937)(font "Arial" )) (block_io "nRSTO" (input)) + (block_io "MAIN_CLK" (input)) + (block_io "nFB_CS1" (input)) + (block_io "nFB_CS2" (input)) + (block_io "nFB_CS3" (input)) + (block_io "nFB_WR" (input)) + (block_io "nFB_OE" (input)) + (block_io "FB_SIZE0" (input)) + (block_io "FB_SIZE1" (input)) + (block_io "nFB_BURST" (input)) + (block_io "FB_ADR[31..0]" (input)) + (block_io "CLK33M" (input)) + (block_io "CLK25M" (input)) + (block_io "BLITTER_RUN" (input)) + (block_io "CLK_VIDEO" (input)) + (block_io "VR_D[8..0]" (input)) + (block_io "VR_BUSY" (input)) + (block_io "COLOR8" (output)) + (block_io "ACP_CLUT_RD" (output)) + (block_io "COLOR1" (output)) + (block_io "FALCON_CLUT_RDH" (output)) + (block_io "FALCON_CLUT_RDL" (output)) + (block_io "FALCON_CLUT_WR[3..0]" (output)) + (block_io "ST_CLUT_RD" (output)) + (block_io "ST_CLUT_WR[1..0]" (output)) + (block_io "CLUT_MUX_ADR[3..0]" (output)) + (block_io "HSYNC" (output)) + (block_io "VSYNC" (output)) + (block_io "nBLANK" (output)) + (block_io "nSYNC" (output)) + (block_io "nPD_VGA" (output)) + (block_io "FIFO_RDE" (output)) + (block_io "COLOR2" (output)) + (block_io "COLOR4" (output)) + (block_io "PIXEL_CLK" (output)) + (block_io "CLUT_OFF[3..0]" (output)) + (block_io "BLITTER_ON" (output)) + (block_io "VIDEO_RAM_CTR[15..0]" (output)) + (block_io "VIDEO_MOD_TA" (output)) + (block_io "CCR[23..0]" (output)) + (block_io "CCSEL[2..0]" (output)) + (block_io "ACP_CLUT_WR[3..0]" (output)) + (block_io "INTER_ZEI" (output)) + (block_io "DOP_FIFO_CLR" (output)) + (block_io "VIDEO_RECONFIG" (output)) + (block_io "VR_WR" (output)) + (block_io "VR_RD" (output)) + (block_io "CLR_FIFO" (output)) + (block_io "FB_AD[31..0]" (bidir)) + (mapper + (pt 352 72) + (bidir) + ) + (mapper + (pt 0 272) + (bidir) + ) + (mapper + (pt 0 56) + (bidir) + ) + (mapper + (pt 0 80) + (bidir) + ) + (mapper + (pt 0 296) + (bidir) + ) + (mapper + (pt 0 104) + (bidir) + ) + (mapper + (pt 0 128) + (bidir) + ) + (mapper + (pt 0 152) + (bidir) + ) + (mapper + (pt 0 176) + (bidir) + ) + (mapper + (pt 0 248) + (bidir) + ) + (mapper + (pt 0 200) + (bidir) + ) + (mapper + (pt 0 224) + (bidir) + ) + (mapper + (pt 0 520) + (bidir) + ) + (mapper + (pt 0 544) + (bidir) + ) + (mapper + (pt 0 880) + (bidir) + ) + (mapper + (pt 352 600) + (bidir) + ) + (mapper + (pt 352 624) + (bidir) + ) + (mapper + (pt 352 648) + (bidir) + ) + (mapper + (pt 352 672) + (bidir) + ) + (mapper + (pt 352 696) + (bidir) + ) + (mapper + (pt 352 720) + (bidir) + ) + (mapper + (pt 352 840) + (bidir) + ) + (mapper + (pt 352 472) + (bidir) + ) + (mapper + (pt 352 448) + (bidir) + ) + (mapper + (pt 352 528) + (bidir) + ) + (mapper + (pt 352 320) + (bidir) + ) + (mapper + (pt 352 576) + (bidir) + ) + (mapper + (pt 352 400) + (bidir) + ) + (mapper + (pt 352 376) + (bidir) + ) + (mapper + (pt 352 352) + (bidir) + ) + (mapper + (pt 352 504) + (bidir) + ) + (mapper + (pt 352 296) + (bidir) + ) + (mapper + (pt 352 424) + (bidir) + ) + (mapper + (pt 352 552) + (bidir) + ) + (mapper + (pt 352 752) + (bidir) + ) + (mapper + (pt 352 776) + (bidir) + ) + (mapper + (pt 352 872) + (bidir) + ) + (mapper + (pt 0 496) + (bidir) + ) + (mapper + (pt 352 88) + (bidir) + ) + (mapper + (pt 352 264) + (bidir) + ) + (mapper + (pt 352 248) + (bidir) + ) + (mapper + (pt 352 232) + (bidir) + ) + (mapper + (pt 352 216) + (bidir) + ) + (mapper + (pt 352 136) + (bidir) + ) + (mapper + (pt 352 40) + (bidir) + ) + (mapper + (pt 352 152) + (bidir) + ) + (mapper + (pt 0 472) + (bidir) + ) + (mapper + (pt 0 456) + (bidir) + ) + (mapper + (pt 352 104) + (bidir) + ) +) +(block + (rect 296 1872 560 2536) + (text "DDR_CTR" (rect 5 5 74 21)(font "Arial" (font_size 8))) (text "DDR_CTR" (rect 5 650 74 665)(font "Arial" )) (block_io "FB_ADR[31..0]" (input)) + (block_io "nFB_CS1" (input)) + (block_io "nFB_CS2" (input)) + (block_io "nFB_CS3" (input)) + (block_io "nFB_OE" (input)) + (block_io "FB_SIZE0" (input)) + (block_io "FB_SIZE1" (input)) + (block_io "nRSTO" (input)) + (block_io "MAIN_CLK" (input)) + (block_io "FB_ALE" (input)) + (block_io "nFB_WR" (input)) + (block_io "DDR_SYNC_66M" (input)) + (block_io "VIDEO_RAM_CTR[15..0]" (input)) + (block_io "BLITTER_ADR[31..0]" (input)) + (block_io "BLITTER_SIG" (input)) + (block_io "BLITTER_WR" (input)) + (block_io "DDRCLK0" (input)) + (block_io "CLK33M" (input)) + (block_io "FIFO_MW[8..0]" (input)) + (block_io "CLR_FIFO" (input)) + (block_io "VA[12..0]" (output)) + (block_io "nVWE" (output)) + (block_io "nVRAS" (output)) + (block_io "nVCS" (output)) + (block_io "VCKE" (output)) + (block_io "nVCAS" (output)) + (block_io "FB_LE[3..0]" (output)) + (block_io "FB_VDOE[3..0]" (output)) + (block_io "SR_FIFO_WRE" (output)) + (block_io "SR_DDR_FB" (output)) + (block_io "SR_DDR_WR" (output)) + (block_io "SR_DDRWR_D_SEL" (output)) + (block_io "SR_VDMP[7..0]" (output)) + (block_io "VIDEO_DDR_TA" (output)) + (block_io "SR_BLITTER_DACK" (output)) + (block_io "BA[1..0]" (output)) + (block_io "DDRWR_D_SEL1" (output)) + (block_io "VDM_SEL[3..0]" (output)) + (block_io "FB_AD[31..0]" (bidir)) + (mapper + (pt 264 560) + (bidir) + ) + (mapper + (pt 264 48) + (bidir) + ) + (mapper + (pt 0 208) + (bidir) + ) + (mapper + (pt 0 256) + (bidir) + ) + (mapper + (pt 0 304) + (bidir) + ) + (mapper + (pt 264 312) + (bidir) + ) + (mapper + (pt 264 264) + (bidir) + ) + (mapper + (pt 264 536) + (bidir) + ) + (mapper + (pt 264 360) + (bidir) + ) + (mapper + (pt 264 384) + (bidir) + ) + (mapper + (pt 264 408) + (bidir) + ) + (mapper + (pt 264 432) + (bidir) + ) + (mapper + (pt 0 88) + (bidir) + ) + (mapper + (pt 0 160) + (bidir) + ) + (mapper + (pt 264 120) + (bidir) + ) + (mapper + (pt 264 144) + (bidir) + ) + (mapper + (pt 0 112) + (bidir) + ) + (mapper + (pt 0 360) + (bidir) + ) + (mapper + (pt 0 136) + (bidir) + ) + (mapper + (pt 0 40) + (bidir) + ) + (mapper + (pt 0 384) + (bidir) + ) + (mapper + (pt 0 432) + (bidir) + ) + (mapper + (pt 0 456) + (bidir) + ) + (mapper + (pt 0 480) + (bidir) + ) + (mapper + (pt 264 216) + (bidir) + ) + (mapper + (pt 264 456) + (bidir) + ) + (mapper + (pt 264 168) + (bidir) + ) + (mapper + (pt 264 480) + (bidir) + ) + (mapper + (pt 264 504) + (bidir) + ) + (mapper + (pt 0 64) + (bidir) + ) + (mapper + (pt 264 632) + (bidir) + ) + (mapper + (pt 264 608) + (bidir) + ) + (mapper + (pt 0 576) + (bidir) + ) + (mapper + (pt 0 520) + (bidir) + ) + (mapper + (pt 0 184) + (bidir) + ) + (mapper + (pt 0 232) + (bidir) + ) + (mapper + (pt 0 280) + (bidir) + ) + (mapper + (pt 0 328) + (bidir) + ) + (mapper + (pt 264 336) + (bidir) + ) +) +(connector + (text "CLUT_ADR0" (rect 2786 1272 2869 1287)(font "Arial" )) + (pt 2776 1288) + (pt 2848 1288) +) +(connector + (text "CLUT_ADR3" (rect 3082 1744 3165 1759)(font "Arial" )) + (pt 3072 1760) + (pt 3144 1760) +) +(connector + (text "CLUT_ADR2" (rect 3082 1600 3165 1615)(font "Arial" )) + (pt 3072 1616) + (pt 3144 1616) +) +(connector + (pt 3008 1624) + (pt 2984 1624) +) +(connector + (pt 2976 1688) + (pt 2984 1688) +) +(connector + (text "FB_AD[31..0]" (rect 802 1120 885 1135)(font "Arial" )) + (pt 792 1136) + (pt 912 1136) + (bus) +) +(connector + (text "FIFO_D[127..112]" (rect 2546 1248 2659 1263)(font "Arial" )) + (pt 2536 1264) + (pt 2632 1264) + (bus) +) +(connector + (text "FIFO_D[111..96]" (rect 2546 1408 2651 1423)(font "Arial" )) + (pt 2536 1424) + (pt 2632 1424) + (bus) +) +(connector + (text "FIFO_D[95..80]" (rect 2546 1568 2642 1583)(font "Arial" )) + (pt 2536 1584) + (pt 2632 1584) + (bus) +) +(connector + (text "FIFO_D[79..64]" (rect 2546 1728 2642 1743)(font "Arial" )) + (pt 2536 1744) + (pt 2632 1744) + (bus) +) +(connector + (text "FIFO_D[63..48]" (rect 2546 1888 2642 1903)(font "Arial" )) + (pt 2536 1904) + (pt 2632 1904) + (bus) +) +(connector + (text "FIFO_D[47..32]" (rect 2546 2048 2642 2063)(font "Arial" )) + (pt 2536 2064) + (pt 2632 2064) + (bus) +) +(connector + (text "FIFO_D[31..16]" (rect 2546 2208 2642 2223)(font "Arial" )) + (pt 2536 2224) + (pt 2632 2224) + (bus) +) +(connector + (text "FIFO_D[15..0]" (rect 2546 2368 2634 2383)(font "Arial" )) + (pt 2536 2384) + (pt 2632 2384) + (bus) +) +(connector + (text "PIXEL_CLK" (rect 2546 1280 2621 1295)(font "Arial" )) + (pt 2632 1296) + (pt 2536 1296) +) +(connector + (text "PIXEL_CLK" (rect 2546 1440 2621 1455)(font "Arial" )) + (pt 2632 1456) + (pt 2536 1456) +) +(connector + (text "PIXEL_CLK" (rect 2546 1600 2621 1615)(font "Arial" )) + (pt 2632 1616) + (pt 2536 1616) +) +(connector + (text "PIXEL_CLK" (rect 2546 1760 2621 1775)(font "Arial" )) + (pt 2632 1776) + (pt 2536 1776) +) +(connector + (text "PIXEL_CLK" (rect 2546 2080 2621 2095)(font "Arial" )) + (pt 2632 2096) + (pt 2536 2096) +) +(connector + (text "PIXEL_CLK" (rect 2546 2240 2621 2255)(font "Arial" )) + (pt 2632 2256) + (pt 2536 2256) +) +(connector + (text "PIXEL_CLK" (rect 2546 2400 2621 2415)(font "Arial" )) + (pt 2632 2416) + (pt 2536 2416) +) +(connector + (pt 2496 1472) + (pt 2632 1472) +) +(connector + (pt 2496 1632) + (pt 2632 1632) +) +(connector + (pt 2496 1792) + (pt 2632 1792) +) +(connector + (pt 2496 1312) + (pt 2632 1312) +) +(connector + (pt 2496 1952) + (pt 2632 1952) +) +(connector + (pt 2496 2112) + (pt 2632 2112) +) +(connector + (text "COLOR2" (rect 2330 1344 2389 1359)(font "Arial" )) + (pt 2392 1360) + (pt 2320 1360) +) +(connector + (text "COLOR4" (rect 2330 1328 2389 1343)(font "Arial" )) + (pt 2392 1344) + (pt 2320 1344) +) +(connector + (text "COLOR2" (rect 2330 1504 2389 1519)(font "Arial" )) + (pt 2392 1520) + (pt 2320 1520) +) +(connector + (text "COLOR4" (rect 2330 1488 2389 1503)(font "Arial" )) + (pt 2392 1504) + (pt 2320 1504) +) +(connector + (text "COLOR2" (rect 2330 1664 2389 1679)(font "Arial" )) + (pt 2392 1680) + (pt 2320 1680) +) +(connector + (text "COLOR4" (rect 2330 1648 2389 1663)(font "Arial" )) + (pt 2392 1664) + (pt 2320 1664) +) +(connector + (text "COLOR2" (rect 2330 1824 2389 1839)(font "Arial" )) + (pt 2392 1840) + (pt 2320 1840) +) +(connector + (text "COLOR4" (rect 2330 1808 2389 1823)(font "Arial" )) + (pt 2392 1824) + (pt 2320 1824) +) +(connector + (text "COLOR2" (rect 2330 1984 2389 1999)(font "Arial" )) + (pt 2392 2000) + (pt 2320 2000) +) +(connector + (text "COLOR4" (rect 2330 1968 2389 1983)(font "Arial" )) + (pt 2392 1984) + (pt 2320 1984) +) +(connector + (text "COLOR2" (rect 2330 2144 2389 2159)(font "Arial" )) + (pt 2392 2160) + (pt 2320 2160) +) +(connector + (text "COLOR4" (rect 2330 2128 2389 2143)(font "Arial" )) + (pt 2392 2144) + (pt 2320 2144) +) +(connector + (pt 2984 1752) + (pt 3008 1752) +) +(connector + (pt 2984 1624) + (pt 2984 1688) +) +(connector + (pt 2984 1688) + (pt 2984 1752) +) +(connector + (pt 2392 1264) + (pt 2304 1264) +) +(connector + (pt 2392 1424) + (pt 2304 1424) +) +(connector + (pt 2392 1584) + (pt 2304 1584) +) +(connector + (pt 2392 1744) + (pt 2304 1744) +) +(connector + (pt 2392 1904) + (pt 2304 1904) +) +(connector + (pt 2392 2064) + (pt 2304 2064) +) +(connector + (text "CLUT_ADR2A" (rect 2786 1592 2878 1607)(font "Arial" )) + (pt 2776 1608) + (pt 3008 1608) +) +(connector + (text "CLUT_ADR3A" (rect 2786 1752 2878 1767)(font "Arial" )) + (pt 3008 1768) + (pt 2776 1768) +) +(connector + (text "CLUT_ADR7A" (rect 2330 2080 2422 2095)(font "Arial" )) + (pt 2320 2096) + (pt 2392 2096) +) +(connector + (text "CLUT_ADR6A" (rect 2330 2064 2422 2079)(font "Arial" )) + (pt 2320 2080) + (pt 2392 2080) +) +(connector + (text "CLUT_ADR6A" (rect 2330 1920 2422 1935)(font "Arial" )) + (pt 2320 1936) + (pt 2392 1936) +) +(connector + (text "CLUT_ADR5A" (rect 2330 1904 2422 1919)(font "Arial" )) + (pt 2320 1920) + (pt 2392 1920) +) +(connector + (text "CLUT_ADR7A" (rect 2330 1776 2422 1791)(font "Arial" )) + (pt 2320 1792) + (pt 2392 1792) +) +(connector + (text "CLUT_ADR5A" (rect 2330 1760 2422 1775)(font "Arial" )) + (pt 2320 1776) + (pt 2392 1776) +) +(connector + (text "CLUT_ADR4A" (rect 2330 1744 2422 1759)(font "Arial" )) + (pt 2320 1760) + (pt 2392 1760) +) +(connector + (text "CLUT_ADR6A" (rect 2330 1616 2422 1631)(font "Arial" )) + (pt 2320 1632) + (pt 2392 1632) +) +(connector + (text "CLUT_ADR4A" (rect 2330 1600 2422 1615)(font "Arial" )) + (pt 2320 1616) + (pt 2392 1616) +) +(connector + (text "CLUT_ADR3A" (rect 2330 1584 2422 1599)(font "Arial" )) + (pt 2320 1600) + (pt 2392 1600) +) +(connector + (text "CLUT_ADR5A" (rect 2330 1456 2422 1471)(font "Arial" )) + (pt 2320 1472) + (pt 2392 1472) +) +(connector + (text "CLUT_ADR3A" (rect 2330 1440 2422 1455)(font "Arial" )) + (pt 2320 1456) + (pt 2392 1456) +) +(connector + (text "CLUT_ADR4A" (rect 2330 1296 2422 1311)(font "Arial" )) + (pt 2320 1312) + (pt 2392 1312) +) +(connector + (text "CLUT_ADR2A" (rect 2330 1280 2422 1295)(font "Arial" )) + (pt 2320 1296) + (pt 2392 1296) +) +(connector + (text "CLUT_ADR2A" (rect 2330 1424 2422 1439)(font "Arial" )) + (pt 2392 1440) + (pt 2320 1440) +) +(connector + (text "CLUT_ADR7A" (rect 2570 2256 2662 2271)(font "Arial" )) + (pt 2560 2272) + (pt 2632 2272) +) +(connector + (text "CLUT_ADR0" (rect 2554 2416 2637 2431)(font "Arial" )) + (pt 2632 2432) + (pt 2544 2432) +) +(connector + (text "PIXEL_CLK" (rect 2546 1920 2621 1935)(font "Arial" )) + (pt 2632 1936) + (pt 2536 1936) +) +(connector + (text "CLUT_ADR4A" (rect 2794 1912 2886 1927)(font "Arial" )) + (pt 2776 1928) + (pt 2904 1928) +) +(connector + (text "CLUT_ADR5A" (rect 2786 2072 2878 2087)(font "Arial" )) + (pt 2776 2088) + (pt 2904 2088) +) +(connector + (text "CLUT_ADR6A" (rect 2794 2232 2886 2247)(font "Arial" )) + (pt 2776 2248) + (pt 2904 2248) +) +(connector + (text "CLUT_ADR7A" (rect 2794 2392 2886 2407)(font "Arial" )) + (pt 2776 2408) + (pt 2904 2408) +) +(connector + (text "COLOR8" (rect 2834 1928 2893 1943)(font "Arial" )) + (pt 2904 1944) + (pt 2824 1944) +) +(connector + (text "COLOR8" (rect 2834 2088 2893 2103)(font "Arial" )) + (pt 2904 2104) + (pt 2824 2104) +) +(connector + (text "COLOR8" (rect 2834 2248 2893 2263)(font "Arial" )) + (pt 2904 2264) + (pt 2824 2264) +) +(connector + (text "COLOR8" (rect 2834 2408 2893 2423)(font "Arial" )) + (pt 2904 2424) + (pt 2824 2424) +) +(connector + (text "CLUT_ADR4" (rect 3090 1928 3173 1943)(font "Arial" )) + (pt 3080 1944) + (pt 3152 1944) +) +(connector + (pt 3024 2112) + (pt 3016 2112) +) +(connector + (pt 3016 2112) + (pt 3016 2144) +) +(connector + (text "CLUT_ADR5" (rect 3098 2088 3181 2103)(font "Arial" )) + (pt 3088 2104) + (pt 3160 2104) +) +(connector + (text "CLUT_ADR7" (rect 3106 2408 3189 2423)(font "Arial" )) + (pt 3096 2424) + (pt 3168 2424) +) +(connector + (text "CLUT_ADR6" (rect 3098 2248 3181 2263)(font "Arial" )) + (pt 3088 2264) + (pt 3160 2264) +) +(connector + (pt 3032 2432) + (pt 3024 2432) +) +(connector + (pt 3024 2432) + (pt 3024 2464) +) +(connector + (pt 3016 1952) + (pt 3008 1952) +) +(connector + (pt 3008 1952) + (pt 3008 1984) +) +(connector + (pt 3024 2272) + (pt 3016 2272) +) +(connector + (pt 3016 2272) + (pt 3016 2304) +) +(connector + (pt 3016 1936) + (pt 2968 1936) +) +(connector + (pt 3024 2096) + (pt 2968 2096) +) +(connector + (pt 3024 2256) + (pt 2968 2256) +) +(connector + (pt 3032 2416) + (pt 2968 2416) +) +(connector + (text "CLUT_OFF0" (rect 2938 1968 3019 1983)(font "Arial" )) + (pt 2928 1984) + (pt 3008 1984) +) +(connector + (text "CLUT_OFF1" (rect 2946 2128 3027 2143)(font "Arial" )) + (pt 2936 2144) + (pt 3016 2144) +) +(connector + (text "CLUT_OFF2" (rect 2946 2288 3027 2303)(font "Arial" )) + (pt 2936 2304) + (pt 3016 2304) +) +(connector + (text "CLUT_OFF3" (rect 2954 2448 3035 2463)(font "Arial" )) + (pt 2944 2464) + (pt 3024 2464) +) +(connector + (text "COLOR4" (rect 2834 1664 2893 1679)(font "Arial" )) + (pt 2824 1680) + (pt 2912 1680) +) +(connector + (text "COLOR8" (rect 2834 1680 2893 1695)(font "Arial" )) + (pt 2912 1696) + (pt 2824 1696) +) +(connector + (text "CLUT_ADR1" (rect 3082 1440 3165 1455)(font "Arial" )) + (pt 3072 1456) + (pt 3144 1456) +) +(connector + (pt 3008 1464) + (pt 2992 1464) +) +(connector + (pt 2992 1464) + (pt 2992 1496) +) +(connector + (pt 2992 1496) + (pt 2984 1496) +) +(connector + (text "COLOR4" (rect 2842 1480 2901 1495)(font "Arial" )) + (pt 2832 1496) + (pt 2920 1496) +) +(connector + (pt 2920 1504) + (pt 2912 1504) +) +(connector + (pt 2912 1504) + (pt 2912 1520) +) +(connector + (text "COLOR8" (rect 2842 1504 2901 1519)(font "Arial" )) + (pt 2912 1520) + (pt 2832 1520) +) +(connector + (pt 2912 1488) + (pt 2912 1472) +) +(connector + (pt 2920 1488) + (pt 2912 1488) +) +(connector + (text "COLOR2" (rect 2842 1456 2901 1471)(font "Arial" )) + (pt 2912 1472) + (pt 2832 1472) +) +(connector + (text "CLUT_ADR1A" (rect 2786 1432 2878 1447)(font "Arial" )) + (pt 3008 1448) + (pt 2776 1448) +) +(connector + (text "CLUT_ADR1A" (rect 2330 1264 2422 1279)(font "Arial" )) + (pt 2320 1280) + (pt 2392 1280) +) +(connector + (text "FIFO_D[127..112]" (rect 2098 2680 2211 2695)(font "Arial" )) + (pt 2088 2696) + (pt 2224 2696) + (bus) +) +(connector + (text "FIFO_D[111..96]" (rect 2098 2664 2203 2679)(font "Arial" )) + (pt 2088 2680) + (pt 2224 2680) + (bus) +) +(connector + (text "FIFO_D[95..80]" (rect 2098 2648 2194 2663)(font "Arial" )) + (pt 2088 2664) + (pt 2224 2664) + (bus) +) +(connector + (text "FIFO_D[79..64]" (rect 2098 2632 2194 2647)(font "Arial" )) + (pt 2088 2648) + (pt 2224 2648) + (bus) +) +(connector + (text "FIFO_D[63..48]" (rect 2098 2616 2194 2631)(font "Arial" )) + (pt 2088 2632) + (pt 2224 2632) + (bus) +) +(connector + (text "FIFO_D[47..32]" (rect 2098 2600 2194 2615)(font "Arial" )) + (pt 2088 2616) + (pt 2224 2616) + (bus) +) +(connector + (text "FIFO_D[31..16]" (rect 2098 2584 2194 2599)(font "Arial" )) + (pt 2088 2600) + (pt 2224 2600) + (bus) +) +(connector + (text "FIFO_D[15..0]" (rect 2098 2568 2186 2583)(font "Arial" )) + (pt 2088 2584) + (pt 2224 2584) + (bus) +) +(connector + (text "FIFO_D[95..64]" (rect 1490 2744 1586 2759)(font "Arial" )) + (pt 1616 2760) + (pt 1480 2760) + (bus) +) +(connector + (text "FIFO_D[127..96]" (rect 1490 2760 1595 2775)(font "Arial" )) + (pt 1616 2776) + (pt 1480 2776) + (bus) +) +(connector + (text "CLUT_MUX_ADR[1..0]" (rect 1594 2824 1737 2839)(font "Arial" )) + (pt 1696 2840) + (pt 1592 2840) + (bus) +) +(connector + (text "FIFO_D[63..32]" (rect 1490 2728 1586 2743)(font "Arial" )) + (pt 1480 2744) + (pt 1616 2744) + (bus) +) +(connector + (text "FIFO_D[31..0]" (rect 1490 2712 1578 2727)(font "Arial" )) + (pt 1480 2728) + (pt 1616 2728) + (bus) +) +(connector + (pt 880 1568) + (pt 880 1592) +) +(connector + (text "FB_VDOE3" (rect 890 1576 963 1591)(font "Arial" )) + (pt 880 1592) + (pt 944 1592) +) +(connector + (pt 880 1448) + (pt 880 1472) +) +(connector + (text "FB_VDOE2" (rect 890 1456 963 1471)(font "Arial" )) + (pt 880 1472) + (pt 944 1472) +) +(connector + (pt 880 1328) + (pt 880 1352) +) +(connector + (text "FB_VDOE1" (rect 890 1336 963 1351)(font "Arial" )) + (pt 880 1352) + (pt 944 1352) +) +(connector + (pt 880 1208) + (pt 880 1232) +) +(connector + (text "FB_VDOE0" (rect 890 1216 963 1231)(font "Arial" )) + (pt 880 1232) + (pt 944 1232) +) +(connector + (pt 808 1192) + (pt 792 1192) + (bus) +) +(connector + (pt 792 1136) + (pt 792 1192) + (bus) +) +(connector + (pt 808 1312) + (pt 792 1312) + (bus) +) +(connector + (pt 792 1192) + (pt 792 1312) + (bus) +) +(connector + (pt 808 1432) + (pt 792 1432) + (bus) +) +(connector + (pt 920 1432) + (pt 960 1432) + (bus) +) +(connector + (pt 792 1312) + (pt 792 1432) + (bus) +) +(connector + (pt 808 1552) + (pt 792 1552) + (bus) +) +(connector + (pt 920 1552) + (pt 960 1552) + (bus) +) +(connector + (text "PIXEL_CLK" (rect 1738 2824 1813 2839)(font "Arial" )) + (pt 1728 2840) + (pt 1808 2840) +) +(connector + (text "CLUT_MUX_ADR[3..0]" (rect 2722 2880 2865 2895)(font "Arial" )) + (pt 2712 2896) + (pt 2904 2896) + (bus) +) +(connector + (text "FB_AD[31..0]" (rect 570 1904 653 1919)(font "Arial" )) + (pt 680 1920) + (pt 560 1920) + (bus) +) +(connector + (text "nFB_CS1" (rect 202 2040 264 2055)(font "Arial" )) + (pt 192 2056) + (pt 296 2056) +) +(connector + (text "nFB_CS2" (rect 202 2064 264 2079)(font "Arial" )) + (pt 192 2080) + (pt 296 2080) +) +(connector + (text "nFB_CS3" (rect 202 2088 264 2103)(font "Arial" )) + (pt 192 2104) + (pt 296 2104) +) +(connector + (text "nFB_WR" (rect 202 2112 259 2127)(font "Arial" )) + (pt 192 2128) + (pt 296 2128) +) +(connector + (text "FB_SIZE0" (rect 202 2136 266 2151)(font "Arial" )) + (pt 192 2152) + (pt 296 2152) +) +(connector + (text "FB_SIZE1" (rect 202 2160 266 2175)(font "Arial" )) + (pt 192 2176) + (pt 296 2176) +) +(connector + (text "nFB_OE" (rect 202 2184 256 2199)(font "Arial" )) + (pt 192 2200) + (pt 296 2200) +) +(connector + (text "VA[12..0]" (rect 570 2168 625 2183)(font "Arial" )) + (pt 632 2184) + (pt 560 2184) + (bus) +) +(connector + (text "nVWE" (rect 570 2192 608 2207)(font "Arial" )) + (pt 632 2208) + (pt 560 2208) +) +(connector + (text "nVCAS" (rect 570 2216 614 2231)(font "Arial" )) + (pt 632 2232) + (pt 560 2232) +) +(connector + (text "nVRAS" (rect 570 2240 614 2255)(font "Arial" )) + (pt 632 2256) + (pt 560 2256) +) +(connector + (text "nVCS" (rect 570 2264 606 2279)(font "Arial" )) + (pt 632 2280) + (pt 560 2280) +) +(connector + (text "VCKE" (rect 570 2288 607 2303)(font "Arial" )) + (pt 632 2304) + (pt 560 2304) +) +(connector + (text "MAIN_CLK" (rect 202 1944 271 1959)(font "Arial" )) + (pt 296 1960) + (pt 192 1960) +) +(connector + (text "FB_ALE" (rect 202 2016 253 2031)(font "Arial" )) + (pt 296 2032) + (pt 192 2032) +) +(connector + (text "FB_LE[3..0]" (rect 570 1976 644 1991)(font "Arial" )) + (pt 560 1992) + (pt 680 1992) + (bus) +) +(connector + (text "FB_VDOE[3..0]" (rect 570 2000 665 2015)(font "Arial" )) + (pt 560 2016) + (pt 680 2016) + (bus) +) +(connector + (text "DDR_SYNC_66M" (rect 210 1968 324 1983)(font "Arial" )) + (pt 200 1984) + (pt 296 1984) +) +(connector + (text "FB_ADR[31..0]" (rect 202 1992 296 2007)(font "Arial" )) + (pt 192 2008) + (pt 296 2008) + (bus) +) +(connector + (text "nRSTO" (rect 202 1896 249 1911)(font "Arial" )) + (pt 192 1912) + (pt 296 1912) +) +(connector + (text "VIDEO_RAM_CTR[15..0]" (rect 178 2240 334 2255)(font "Arial" )) + (pt 296 2256) + (pt 168 2256) + (bus) +) +(connector + (pt 792 1648) + (pt 920 1648) + (bus) +) +(connector + (pt 792 1792) + (pt 920 1792) + (bus) +) +(connector + (pt 792 1928) + (pt 920 1928) + (bus) +) +(connector + (pt 792 2064) + (pt 920 2064) + (bus) +) +(connector + (text "FB_LE0" (rect 826 1664 877 1679)(font "Arial" )) + (pt 920 1680) + (pt 816 1680) +) +(connector + (text "FB_LE1" (rect 834 1808 885 1823)(font "Arial" )) + (pt 920 1824) + (pt 824 1824) +) +(connector + (text "FB_LE2" (rect 834 1944 885 1959)(font "Arial" )) + (pt 920 1960) + (pt 824 1960) +) +(connector + (text "FB_LE3" (rect 834 2080 885 2095)(font "Arial" )) + (pt 920 2096) + (pt 824 2096) +) +(connector + (text "DDR_SYNC_66M" (rect 834 1648 948 1663)(font "Arial" )) + (pt 824 1664) + (pt 920 1664) +) +(connector + (text "DDR_SYNC_66M" (rect 834 1792 948 1807)(font "Arial" )) + (pt 824 1808) + (pt 920 1808) +) +(connector + (text "DDR_SYNC_66M" (rect 834 1928 948 1943)(font "Arial" )) + (pt 824 1944) + (pt 920 1944) +) +(connector + (text "DDR_SYNC_66M" (rect 834 2064 948 2079)(font "Arial" )) + (pt 824 2080) + (pt 920 2080) +) +(connector + (pt 792 1792) + (pt 792 1928) + (bus) +) +(connector + (pt 792 1928) + (pt 792 2064) + (bus) +) +(connector + (pt 792 1432) + (pt 792 1552) + (bus) +) +(connector + (pt 792 1552) + (pt 792 1648) + (bus) +) +(connector + (pt 792 1648) + (pt 792 1792) + (bus) +) +(connector + (text "FIFO_RDE" (rect 1450 1408 1519 1423)(font "Arial" )) + (pt 1440 1424) + (pt 1536 1424) +) +(connector + (text "VDP_IN[63..32]" (rect 1114 1392 1211 1407)(font "Arial" )) + (pt 1104 1408) + (pt 1192 1408) + (bus) +) +(connector + (pt 1328 2856) + (pt 1360 2856) +) +(connector + (pt 1360 2904) + (pt 1328 2904) +) +(connector + (pt 1384 2840) + (pt 1384 2824) +) +(connector + (pt 1384 2880) + (pt 1384 2888) +) +(connector + (pt 1344 2880) + (pt 1384 2880) +) +(connector + (pt 1344 2928) + (pt 1384 2928) +) +(connector + (pt 1384 2928) + (pt 1384 2936) +) +(connector + (pt 1328 3008) + (pt 1360 3008) +) +(connector + (pt 1384 2984) + (pt 1384 2992) +) +(connector + (text "VDQS0" (rect 1418 2840 1465 2855)(font "Arial" )) + (pt 1408 2856) + (pt 1520 2856) +) +(connector + (text "VDQS1" (rect 1418 2888 1465 2903)(font "Arial" )) + (pt 1408 2904) + (pt 1520 2904) +) +(connector + (text "VDQS2" (rect 1418 2936 1465 2951)(font "Arial" )) + (pt 1408 2952) + (pt 1520 2952) +) +(connector + (text "VDQS3" (rect 1418 2992 1465 3007)(font "Arial" )) + (pt 1408 3008) + (pt 1520 3008) +) +(connector + (pt 1344 2984) + (pt 1384 2984) +) +(connector + (text "FB_DDR[63..32]" (rect 1074 1936 1179 1951)(font "Arial" )) + (pt 1064 1952) + (pt 1160 1952) + (bus) +) +(connector + (text "FB_DDR[31..0]" (rect 1074 2072 1170 2087)(font "Arial" )) + (pt 1064 2088) + (pt 1160 2088) + (bus) +) +(connector + (text "FB_DDR[95..64]" (rect 1074 1800 1179 1815)(font "Arial" )) + (pt 1064 1816) + (pt 1160 1816) + (bus) +) +(connector + (text "FB_DDR[127..96]" (rect 1074 1656 1187 1671)(font "Arial" )) + (pt 1064 1672) + (pt 1160 1672) + (bus) +) +(connector + (text "BLITTER_ADR[31..0]" (rect 194 2288 328 2303)(font "Arial" )) + (pt 184 2304) + (pt 296 2304) + (bus) +) +(connector + (text "BLITTER_SIG" (rect 194 2312 283 2327)(font "Arial" )) + (pt 184 2328) + (pt 296 2328) +) +(connector + (text "BLITTER_WR" (rect 194 2336 283 2351)(font "Arial" )) + (pt 184 2352) + (pt 296 2352) +) +(connector + (text "SR_FIFO_WRE" (rect 570 2072 670 2087)(font "Arial" )) + (pt 648 2088) + (pt 560 2088) +) +(connector + (text "SR_DDR_FB" (rect 570 2312 656 2327)(font "Arial" )) + (pt 640 2328) + (pt 560 2328) +) +(connector + (text "SR_FIFO_WRE" (rect 842 2280 942 2295)(font "Arial" )) + (pt 920 2296) + (pt 832 2296) +) +(connector + (text "SR_DDR_WR" (rect 570 2024 662 2039)(font "Arial" )) + (pt 664 2040) + (pt 560 2040) +) +(connector + (text "SR_VDMP[7..0]" (rect 570 2336 667 2351)(font "Arial" )) + (pt 560 2352) + (pt 664 2352) + (bus) +) +(connector + (text "SR_DDRWR_D_SEL" (rect 570 2360 708 2375)(font "Arial" )) + (pt 560 2376) + (pt 664 2376) +) +(connector + (text "BLITTER_ON" (rect 226 2920 313 2935)(font "Arial" )) + (pt 296 2936) + (pt 216 2936) +) +(connector + (text "BLITTER_RUN" (rect 578 2712 675 2727)(font "Arial" )) + (pt 568 2728) + (pt 648 2728) +) +(connector + (text "VDVZ[127..0]" (rect 810 2920 892 2935)(font "Arial" )) + (pt 800 2936) + (pt 888 2936) + (bus) +) +(connector + (text "BLITTER_DOUT[127..0]" (rect 578 2744 731 2759)(font "Arial" )) + (pt 680 2760) + (pt 568 2760) + (bus) +) +(connector + (text "BLITTER_ADR[31..0]" (rect 578 2776 712 2791)(font "Arial" )) + (pt 568 2792) + (pt 680 2792) + (bus) +) +(connector + (text "BLITTER_SIG" (rect 578 2800 667 2815)(font "Arial" )) + (pt 568 2816) + (pt 680 2816) +) +(connector + (text "BLITTER_WR" (rect 578 2824 667 2839)(font "Arial" )) + (pt 568 2840) + (pt 680 2840) +) +(connector + (text "nFB_CS1" (rect 202 2688 264 2703)(font "Arial" )) + (pt 192 2704) + (pt 296 2704) +) +(connector + (text "nFB_CS2" (rect 202 2712 264 2727)(font "Arial" )) + (pt 192 2728) + (pt 296 2728) +) +(connector + (text "nFB_CS3" (rect 202 2736 264 2751)(font "Arial" )) + (pt 192 2752) + (pt 296 2752) +) +(connector + (text "nFB_WR" (rect 202 2760 259 2775)(font "Arial" )) + (pt 192 2776) + (pt 296 2776) +) +(connector + (text "FB_SIZE0" (rect 202 2784 266 2799)(font "Arial" )) + (pt 192 2800) + (pt 296 2800) +) +(connector + (text "FB_SIZE1" (rect 202 2808 266 2823)(font "Arial" )) + (pt 192 2824) + (pt 296 2824) +) +(connector + (text "nFB_OE" (rect 202 2832 256 2847)(font "Arial" )) + (pt 192 2848) + (pt 296 2848) +) +(connector + (text "MAIN_CLK" (rect 202 2616 271 2631)(font "Arial" )) + (pt 296 2632) + (pt 192 2632) +) +(connector + (text "FB_ALE" (rect 202 2664 253 2679)(font "Arial" )) + (pt 296 2680) + (pt 192 2680) +) +(connector + (text "FB_ADR[31..0]" (rect 202 2640 296 2655)(font "Arial" )) + (pt 192 2656) + (pt 296 2656) + (bus) +) +(connector + (text "nRSTO" (rect 202 2568 249 2583)(font "Arial" )) + (pt 192 2584) + (pt 296 2584) +) +(connector + (text "VIDEO_RAM_CTR[15..0]" (rect 178 2896 334 2911)(font "Arial" )) + (pt 296 2912) + (pt 168 2912) + (bus) +) +(connector + (text "FB_AD[31..0]" (rect 578 2608 661 2623)(font "Arial" )) + (pt 688 2624) + (pt 568 2624) + (bus) +) +(connector + (text "DDRCLK0" (rect 842 2160 910 2175)(font "Arial" )) + (pt 832 2176) + (pt 920 2176) +) +(connector + (text "SR_DDR_FB" (rect 850 2176 936 2191)(font "Arial" )) + (pt 920 2192) + (pt 840 2192) +) +(connector + (pt 920 1312) + (pt 960 1312) + (bus) +) +(connector + (text "VDP_IN[31..0]" (rect 1114 1512 1203 1527)(font "Arial" )) + (pt 1104 1528) + (pt 1192 1528) + (bus) +) +(connector + (text "DDR_FB1" (rect 1106 1304 1172 1319)(font "Arial" )) + (pt 1104 1320) + (pt 1176 1320) +) +(connector + (text "DDR_FB0" (rect 1106 1544 1172 1559)(font "Arial" )) + (pt 1104 1560) + (pt 1176 1560) +) +(connector + (text "FIFO_WRE" (rect 1074 2280 1145 2295)(font "Arial" )) + (pt 1064 2296) + (pt 1144 2296) +) +(connector + (text "DDRCLK0" (rect 194 2592 262 2607)(font "Arial" )) + (pt 296 2608) + (pt 184 2608) +) +(connector + (text "DDRCLK0" (rect 194 1920 262 1935)(font "Arial" )) + (pt 296 1936) + (pt 184 1936) +) +(connector + (text "VIDEO_DDR_TA" (rect 570 2488 677 2503)(font "Arial" )) + (pt 560 2504) + (pt 664 2504) +) +(connector + (text "BLITTER_TA" (rect 578 2960 660 2975)(font "Arial" )) + (pt 568 2976) + (pt 672 2976) +) +(connector + (pt 432 1808) + (pt 472 1808) +) +(connector + (text "BLITTER_TA" (rect 274 1792 356 1807)(font "Arial" )) + (pt 264 1808) + (pt 368 1808) +) +(connector + (pt 360 1816) + (pt 360 1832) +) +(connector + (pt 368 1816) + (pt 360 1816) +) +(connector + (pt 360 1800) + (pt 360 1784) +) +(connector + (pt 368 1800) + (pt 360 1800) +) +(connector + (text "VIDEO_DDR_TA" (rect 258 1768 365 1783)(font "Arial" )) + (pt 360 1784) + (pt 264 1784) +) +(connector + (text "VDP_OUT[63..0]" (rect 1506 1328 1611 1343)(font "Arial" )) + (pt 1584 1344) + (pt 1496 1344) + (bus) +) +(connector + (text "FB_DDR[127..64]" (rect 1258 1352 1371 1367)(font "Arial" )) + (pt 1224 1368) + (pt 1344 1368) + (bus) +) +(connector + (text "BLITTER_DOUT[63..0]" (rect 1234 1304 1379 1319)(font "Arial" )) + (pt 1224 1320) + (pt 1344 1320) + (bus) +) +(connector + (text "BLITTER_DOUT[127..64]" (rect 1234 1320 1395 1335)(font "Arial" )) + (pt 1224 1336) + (pt 1344 1336) + (bus) +) +(connector + (text "FB_DDR[63..0]" (rect 1258 1336 1354 1351)(font "Arial" )) + (pt 1224 1352) + (pt 1344 1352) + (bus) +) +(connector + (text "VDR[31..0]" (rect 930 1176 998 1191)(font "Arial" )) + (pt 920 1192) + (pt 1008 1192) + (bus) +) +(connector + (text "DDRWR_D_SEL[1..0]" (rect 1298 1400 1438 1415)(font "Arial" )) + (pt 1424 1416) + (pt 1288 1416) + (bus) +) +(connector + (pt 1424 1392) + (pt 1424 1416) + (bus) +) +(connector + (text "DDR_FB0" (rect 1106 1424 1172 1439)(font "Arial" )) + (pt 1104 1440) + (pt 1176 1440) +) +(connector + (text "VDP_IN[31..0]" (rect 1114 1272 1203 1287)(font "Arial" )) + (pt 1104 1288) + (pt 1192 1288) + (bus) +) +(connector + (text "BLITTER_DACK[0]" (rect 802 2952 922 2967)(font "Arial" )) + (pt 888 2968) + (pt 808 2968) +) +(connector + (text "BLITTER_DIN[127..0]" (rect 1042 2944 1180 2959)(font "Arial" )) + (pt 1144 2960) + (pt 1032 2960) + (bus) +) +(connector + (text "BLITTER_DIN[127..0]" (rect 194 2944 332 2959)(font "Arial" )) + (pt 296 2960) + (pt 184 2960) + (bus) +) +(connector + (text "SR_BLITTER_DACK" (rect 570 2464 703 2479)(font "Arial" )) + (pt 664 2480) + (pt 560 2480) +) +(connector + (text "DDRCLK0" (rect 1114 1528 1182 1543)(font "Arial" )) + (pt 1104 1544) + (pt 1176 1544) +) +(connector + (text "DDRCLK0" (rect 1114 1408 1182 1423)(font "Arial" )) + (pt 1104 1424) + (pt 1176 1424) +) +(connector + (text "DDRCLK0" (rect 1114 1288 1182 1303)(font "Arial" )) + (pt 1104 1304) + (pt 1176 1304) +) +(connector + (text "DDRCLK0" (rect 1650 1384 1718 1399)(font "Arial" )) + (pt 1712 1400) + (pt 1640 1400) +) +(connector + (text "DDRCLK0" (rect 810 2936 878 2951)(font "Arial" )) + (pt 800 2952) + (pt 888 2952) +) +(connector + (text "DDRCLK0" (rect 842 2264 910 2279)(font "Arial" )) + (pt 832 2280) + (pt 920 2280) +) +(connector + (text "DDR_FB[4..0]" (rect 1074 2176 1162 2191)(font "Arial" )) + (pt 1064 2192) + (pt 1168 2192) + (bus) +) +(connector + (text "BLITTER_DACK[4..0]" (rect 202 2864 337 2879)(font "Arial" )) + (pt 192 2880) + (pt 296 2880) + (bus) +) +(connector + (text "CLK33M" (rect 218 2432 273 2447)(font "Arial" )) + (pt 208 2448) + (pt 296 2448) +) +(connector + (text "FIFO_D[127..0]" (rect 2170 1416 2266 1431)(font "Arial" )) + (pt 2168 1432) + (pt 2232 1432) + (bus) +) +(connector + (pt 2632 2208) + (pt 2512 2208) +) +(connector + (pt 2632 1728) + (pt 2512 1728) +) +(connector + (pt 2632 1888) + (pt 2512 1888) +) +(connector + (pt 2512 1728) + (pt 2512 1888) +) +(connector + (pt 2632 2048) + (pt 2512 2048) +) +(connector + (pt 2512 1888) + (pt 2512 2048) +) +(connector + (pt 2632 1248) + (pt 2512 1248) +) +(connector + (pt 2632 1408) + (pt 2512 1408) +) +(connector + (pt 2632 1568) + (pt 2512 1568) +) +(connector + (pt 2512 1568) + (pt 2512 1728) +) +(connector + (text "PIXEL_CLK" (rect 1634 1432 1709 1447)(font "Arial" )) + (pt 1640 1448) + (pt 1712 1448) +) +(connector + (text "PIXEL_CLK" (rect 1938 1424 2013 1439)(font "Arial" )) + (pt 1928 1440) + (pt 2000 1440) +) +(connector + (text "FIFO_RDE" (rect 1914 1440 1983 1455)(font "Arial" )) + (pt 1904 1456) + (pt 2000 1456) +) +(connector + (text "PIXEL_CLK" (rect 2018 1552 2093 1567)(font "Arial" )) + (pt 2008 1568) + (pt 2080 1568) +) +(connector + (text "FIFO_RDE" (rect 1994 1536 2063 1551)(font "Arial" )) + (pt 1984 1552) + (pt 2080 1552) +) +(connector + (pt 2512 1408) + (pt 2512 1552) +) +(connector + (pt 2512 1552) + (pt 2512 1568) +) +(connector + (pt 2144 1552) + (pt 2512 1552) +) +(connector + (pt 2512 2368) + (pt 2632 2368) +) +(connector + (pt 2512 2048) + (pt 2512 2208) +) +(connector + (pt 2512 2208) + (pt 2512 2368) +) +(connector + (text "DDR_WR" (rect 1290 2808 1353 2823)(font "Arial" )) + (pt 1280 2824) + (pt 1344 2824) +) +(connector + (pt 1344 2824) + (pt 1384 2824) +) +(connector + (pt 1344 2824) + (pt 1344 2880) +) +(connector + (pt 1344 2880) + (pt 1344 2928) +) +(connector + (pt 1344 2928) + (pt 1344 2984) +) +(connector + (pt 1328 2856) + (pt 1328 2904) +) +(connector + (pt 1328 2904) + (pt 1328 2952) +) +(connector + (pt 1328 2952) + (pt 1328 3008) +) +(connector + (text "DDRCLK0" (rect 1218 2936 1286 2951)(font "Arial" )) + (pt 1208 2952) + (pt 1328 2952) +) +(connector + (pt 1328 2952) + (pt 1360 2952) +) +(connector + (text "VDP_OUT[63..32]" (rect 1234 1520 1347 1535)(font "Arial" )) + (pt 1312 1536) + (pt 1224 1536) + (bus) +) +(connector + (text "VDP_OUT[31..0]" (rect 1234 1536 1339 1551)(font "Arial" )) + (pt 1312 1552) + (pt 1224 1552) + (bus) +) +(connector + (text "VDP_IN[63..32]" (rect 1562 1536 1659 1551)(font "Arial" )) + (pt 1552 1552) + (pt 1640 1552) + (bus) +) +(connector + (text "VD[31..0]" (rect 1578 1552 1635 1567)(font "Arial" )) + (pt 1640 1568) + (pt 1552 1568) + (bus) +) +(connector + (text "DDRCLK3" (rect 1250 1584 1318 1599)(font "Arial" )) + (pt 1312 1600) + (pt 1240 1600) +) +(connector + (text "VDP_IN[31..0]" (rect 1554 1520 1643 1535)(font "Arial" )) + (pt 1552 1536) + (pt 1632 1536) + (bus) +) +(connector + (text "DDRCLK1" (rect 1250 1568 1318 1583)(font "Arial" )) + (pt 1312 1584) + (pt 1240 1584) +) +(connector + (text "VDR[31..0]" (rect 1858 1568 1926 1583)(font "Arial" )) + (pt 1848 1584) + (pt 1936 1584) + (bus) +) +(connector + (text "DDR_SYNC_66M" (rect 1602 1584 1716 1599)(font "Arial" )) + (pt 1592 1600) + (pt 1688 1600) +) +(connector + (pt 1552 1584) + (pt 1688 1584) + (bus) +) +(connector + (text "VDOUT_OE" (rect 1242 1552 1318 1567)(font "Arial" )) + (pt 1232 1568) + (pt 1312 1568) +) +(connector + (text "DDRCLK3" (rect 1170 2472 1238 2487)(font "Arial" )) + (pt 1160 2488) + (pt 1240 2488) +) +(connector + (text "VDM[3..0]" (rect 1482 2440 1542 2455)(font "Arial" )) + (pt 1536 2456) + (pt 1472 2456) + (bus) +) +(connector + (text "VDMP[7..4]" (rect 1170 2440 1239 2455)(font "Arial" )) + (pt 1160 2456) + (pt 1240 2456) + (bus) +) +(connector + (text "VDMP[3..0]" (rect 1170 2456 1239 2471)(font "Arial" )) + (pt 1160 2472) + (pt 1240 2472) + (bus) +) +(connector + (text "VDMP[7..0]" (rect 1242 2672 1311 2687)(font "Arial" )) + (pt 1232 2688) + (pt 1304 2688) + (bus) +) +(connector + (text "BA[1..0]" (rect 570 2120 618 2135)(font "Arial" )) + (pt 632 2136) + (pt 560 2136) + (bus) +) +(connector + (text "DDRWR_D_SEL0" (rect 1066 2768 1184 2783)(font "Arial" )) + (pt 1056 2784) + (pt 1152 2784) +) +(connector + (text "DDRCLK3" (rect 930 2784 998 2799)(font "Arial" )) + (pt 928 2800) + (pt 992 2800) +) +(connector + (text "SR_VDMP[7..0]" (rect 1002 2656 1099 2671)(font "Arial" )) + (pt 992 2672) + (pt 1088 2672) + (bus) +) +(connector + (text "SR_DDRWR_D_SEL" (rect 890 2768 1028 2783)(font "Arial" )) + (pt 888 2784) + (pt 992 2784) +) +(connector + (text "DDRWR_D_SEL1" (rect 570 2392 688 2407)(font "Arial" )) + (pt 656 2408) + (pt 560 2408) +) +(connector + (text "VDOUT_OE" (rect 1386 2328 1462 2343)(font "Arial" )) + (pt 1376 2344) + (pt 1456 2344) +) +(connector + (text "DDR_WR" (rect 1258 2336 1321 2351)(font "Arial" )) + (pt 1248 2352) + (pt 1312 2352) +) +(connector + (text "SR_DDR_WR" (rect 1242 2320 1334 2335)(font "Arial" )) + (pt 1248 2336) + (pt 1312 2336) +) +(connector + (text "DDRCLK3" (rect 906 2400 974 2415)(font "Arial" )) + (pt 904 2416) + (pt 968 2416) +) +(connector + (text "SR_DDR_WR" (rect 898 2384 990 2399)(font "Arial" )) + (pt 896 2400) + (pt 968 2400) +) +(connector + (text "DDR_WR" (rect 1042 2384 1105 2399)(font "Arial" )) + (pt 1032 2400) + (pt 1096 2400) +) +(connector + (text "SR_BLITTER_DACK" (rect 810 2560 943 2575)(font "Arial" )) + (pt 904 2576) + (pt 800 2576) +) +(connector + (text "DDRCLK0" (rect 826 2544 894 2559)(font "Arial" )) + (pt 816 2560) + (pt 904 2560) +) +(connector + (text "BLITTER_DACK[4..0]" (rect 1058 2560 1193 2575)(font "Arial" )) + (pt 1048 2576) + (pt 1152 2576) + (bus) +) +(connector + (text "DDRCLK2" (rect 1018 2672 1086 2687)(font "Arial" )) + (pt 1008 2688) + (pt 1088 2688) +) +(connector + (pt 1696 2840) + (pt 1696 2816) + (bus) +) +(connector + (pt 1832 2760) + (pt 1768 2760) + (bus) +) +(connector + (pt 1808 2776) + (pt 1832 2776) +) +(connector + (pt 1808 2840) + (pt 1808 2776) +) +(connector + (text "PIXEL_CLK" (rect 1546 2776 1621 2791)(font "Arial" )) + (pt 1536 2792) + (pt 1616 2792) +) +(connector + (text "CLUT_MUX_ADR[2..0]" (rect 2130 2744 2273 2759)(font "Arial" )) + (pt 2304 2760) + (pt 2120 2760) + (bus) +) +(connector + (text "PIXEL_CLK" (rect 2338 2744 2413 2759)(font "Arial" )) + (pt 2400 2760) + (pt 2328 2760) +) +(connector + (pt 2376 2648) + (pt 2416 2648) + (bus) +) +(connector + (pt 2400 2664) + (pt 2416 2664) +) +(connector + (pt 2400 2760) + (pt 2400 2664) +) +(connector + (pt 2304 2760) + (pt 2304 2736) + (bus) +) +(connector + (text "PIXEL_CLK" (rect 2162 2696 2237 2711)(font "Arial" )) + (pt 2224 2712) + (pt 2152 2712) +) +(connector + (text "FIFO_D[7..0]" (rect 2730 2568 2810 2583)(font "Arial" )) + (pt 2824 2584) + (pt 2720 2584) + (bus) +) +(connector + (text "FIFO_D[15..8]" (rect 2730 2584 2818 2599)(font "Arial" )) + (pt 2824 2600) + (pt 2720 2600) + (bus) +) +(connector + (text "FIFO_D[23..16]" (rect 2730 2600 2826 2615)(font "Arial" )) + (pt 2824 2616) + (pt 2720 2616) + (bus) +) +(connector + (text "FIFO_D[31..24]" (rect 2730 2616 2826 2631)(font "Arial" )) + (pt 2824 2632) + (pt 2720 2632) + (bus) +) +(connector + (text "FIFO_D[39..32]" (rect 2730 2632 2826 2647)(font "Arial" )) + (pt 2824 2648) + (pt 2720 2648) + (bus) +) +(connector + (text "FIFO_D[47..40]" (rect 2730 2648 2826 2663)(font "Arial" )) + (pt 2824 2664) + (pt 2720 2664) + (bus) +) +(connector + (text "FIFO_D[55..48]" (rect 2730 2664 2826 2679)(font "Arial" )) + (pt 2824 2680) + (pt 2720 2680) + (bus) +) +(connector + (text "FIFO_D[63..56]" (rect 2730 2680 2826 2695)(font "Arial" )) + (pt 2824 2696) + (pt 2720 2696) + (bus) +) +(connector + (text "FIFO_D[71..64]" (rect 2730 2696 2826 2711)(font "Arial" )) + (pt 2824 2712) + (pt 2720 2712) + (bus) +) +(connector + (text "FIFO_D[79..72]" (rect 2730 2712 2826 2727)(font "Arial" )) + (pt 2824 2728) + (pt 2720 2728) + (bus) +) +(connector + (text "FIFO_D[87..80]" (rect 2730 2728 2826 2743)(font "Arial" )) + (pt 2824 2744) + (pt 2720 2744) + (bus) +) +(connector + (text "FIFO_D[95..88]" (rect 2730 2744 2826 2759)(font "Arial" )) + (pt 2824 2760) + (pt 2720 2760) + (bus) +) +(connector + (text "FIFO_D[103..96]" (rect 2730 2760 2835 2775)(font "Arial" )) + (pt 2824 2776) + (pt 2720 2776) + (bus) +) +(connector + (text "FIFO_D[111..104]" (rect 2730 2776 2843 2791)(font "Arial" )) + (pt 2824 2792) + (pt 2720 2792) + (bus) +) +(connector + (text "FIFO_D[119..112]" (rect 2730 2792 2843 2807)(font "Arial" )) + (pt 2824 2808) + (pt 2720 2808) + (bus) +) +(connector + (text "FIFO_D[127..120]" (rect 2730 2808 2843 2823)(font "Arial" )) + (pt 2824 2824) + (pt 2720 2824) + (bus) +) +(connector + (text "CCF[23..0]" (rect 3362 2752 3430 2767)(font "Arial" )) + (pt 3432 2768) + (pt 3352 2768) + (bus) +) +(connector + (text "CCR[23..0]" (rect 3954 2720 4024 2735)(font "Arial" )) + (pt 4024 2736) + (pt 3944 2736) + (bus) +) +(connector + (text "CCS[23..0]" (rect 3362 2840 3431 2855)(font "Arial" )) + (pt 3432 2856) + (pt 3352 2856) + (bus) +) +(connector + (text "CC16[23..0]" (rect 3954 2752 4030 2767)(font "Arial" )) + (pt 4024 2768) + (pt 3944 2768) + (bus) +) +(connector + (text "VR[7..0],VG[7..0],VB[7..0]" (rect 4522 2776 4676 2791)(font "Arial" )) + (pt 4512 2792) + (pt 4664 2792) + (bus) +) +(connector + (pt 4240 2808) + (pt 4280 2808) + (bus) +) +(connector + (text "PIXEL_CLK" (rect 4202 2808 4277 2823)(font "Arial" )) + (pt 4192 2824) + (pt 4280 2824) +) +(connector + (pt 4240 2792) + (pt 4280 2792) + (bus) +) +(connector + (pt 4240 2800) + (pt 4176 2800) + (bus) +) +(connector + (text "PIXEL_CLK" (rect 3946 2848 4021 2863)(font "Arial" )) + (pt 3936 2864) + (pt 4024 2864) +) +(connector + (pt 4104 2888) + (pt 4104 2920) + (bus) +) +(connector + (text "CCSEL[2..0]" (rect 4010 2904 4089 2919)(font "Arial" )) + (pt 4104 2920) + (pt 4000 2920) + (bus) +) +(connector + (text "CCA[23..0]" (rect 3954 2768 4022 2783)(font "Arial" )) + (pt 4024 2784) + (pt 3944 2784) + (bus) +) +(connector + (pt 2904 2896) + (pt 2904 2864) + (bus) +) +(connector + (text "ZR_C8[7..0]" (rect 3232 2712 3308 2727)(font "Arial" )) + (pt 3232 2728) + (pt 3304 2728) + (bus) +) +(connector + (pt 3088 2712) + (pt 2968 2712) + (bus) +) +(connector + (text "PIXEL_CLK" (rect 2746 2824 2821 2839)(font "Arial" )) + (pt 2824 2840) + (pt 2736 2840) +) +(connector + (text "CC24[23..0]" (rect 3954 2736 4030 2751)(font "Arial" )) + (pt 3944 2752) + (pt 4024 2752) + (bus) +) +(connector + (pt 4240 2792) + (pt 4240 2800) + (bus) +) +(connector + (pt 4240 2800) + (pt 4240 2808) + (bus) +) +(connector + (pt 3576 2784) + (pt 3672 2784) + (bus) +) +(connector + (pt 3576 2872) + (pt 3672 2872) + (bus) +) +(connector + (pt 3816 2800) + (pt 3888 2800) + (bus) +) +(connector + (pt 3888 2800) + (pt 3888 2832) + (bus) +) +(connector + (pt 3888 2832) + (pt 4024 2832) + (bus) +) +(connector + (pt 4024 2848) + (pt 3888 2848) + (bus) +) +(connector + (pt 3888 2888) + (pt 3816 2888) + (bus) +) +(connector + (pt 3888 2848) + (pt 3888 2888) + (bus) +) +(connector + (text "PIXEL_CLK" (rect 3034 2712 3109 2727)(font "Arial" )) + (pt 3032 2728) + (pt 3088 2728) +) +(connector + (text "PIXEL_CLK" (rect 3618 2784 3693 2799)(font "Arial" )) + (pt 3616 2800) + (pt 3672 2800) +) +(connector + (text "PIXEL_CLK" (rect 3618 2872 3693 2887)(font "Arial" )) + (pt 3616 2888) + (pt 3672 2888) +) +(connector + (text "PIXEL_CLK" (rect 3378 2856 3453 2871)(font "Arial" )) + (pt 3376 2872) + (pt 3432 2872) +) +(connector + (text "PIXEL_CLK" (rect 3378 2768 3453 2783)(font "Arial" )) + (pt 3376 2784) + (pt 3432 2784) +) +(connector + (text "CC16[23..19],CC16[15..10],CC16[7..3]" (rect 2506 2592 2751 2607)(font "Arial" )) + (pt 2688 2664) + (pt 2560 2664) + (bus) +) +(connector + (text "CC16[18..16],CC16[9..8],CC16[2..0]" (rect 2530 2728 2758 2743)(font "Arial" )) + (pt 2696 2744) + (pt 2520 2744) + (bus) +) +(connector + (text "CC24[31..0]" (rect 1986 2760 2062 2775)(font "Arial" )) + (pt 1976 2776) + (pt 2072 2776) + (bus) +) +(connector + (text "ZR_C8B[0]" (rect 3282 2952 3352 2967)(font "Arial" )) + (pt 3272 2968) + (pt 3344 2968) +) +(connector + (text "COLOR1" (rect 3154 3008 3213 3023)(font "Arial" )) + (pt 3232 3024) + (pt 3144 3024) +) +(connector + (text "ZR_C8[7..1]" (rect 3090 3072 3166 3087)(font "Arial" )) + (pt 3080 3088) + (pt 3160 3088) + (bus) +) +(connector + (pt 3232 3000) + (pt 3232 3024) +) +(connector + (pt 3232 3024) + (pt 3232 3064) +) +(connector + (text "ZR_C8B[7..1]" (rect 3306 3080 3392 3095)(font "Arial" )) + (pt 3296 3096) + (pt 3392 3096) + (bus) +) +(connector + (pt 3072 3104) + (pt 3160 3104) + (bus) +) +(connector + (text "ZR_C8[0]" (rect 3146 2960 3207 2975)(font "Arial" )) + (pt 3136 2976) + (pt 3192 2976) +) +(connector + (text "CLUT_ADR0" (rect 2842 2944 2925 2959)(font "Arial" )) + (pt 2832 2960) + (pt 2912 2960) +) +(connector + (text "PIXEL_CLK" (rect 2858 2960 2933 2975)(font "Arial" )) + (pt 2856 2976) + (pt 2912 2976) +) +(connector + (text "PIXEL_CLK" (rect 2994 2960 3069 2975)(font "Arial" )) + (pt 2992 2976) + (pt 3048 2976) +) +(connector + (pt 2976 2960) + (pt 3048 2960) +) +(connector + (pt 3112 2960) + (pt 3192 2960) +) +(connector + (text "FIFO_MW[8..0]" (rect 194 2376 287 2391)(font "Arial" )) + (pt 296 2392) + (pt 184 2392) + (bus) +) +(connector + (text "MAIN_CLK" (rect 3370 2208 3439 2223)(font "Arial" )) + (pt 3448 2224) + (pt 3360 2224) +) +(connector + (text "PIXEL_CLK" (rect 3370 2224 3445 2239)(font "Arial" )) + (pt 3448 2240) + (pt 3360 2240) +) +(connector + (pt 3808 2112) + (pt 3808 2128) +) +(connector + (text "ACP_CLUT_RD" (rect 3722 2112 3825 2127)(font "Arial" )) + (pt 3808 2128) + (pt 3712 2128) +) +(connector + (pt 3328 2192) + (pt 3448 2192) +) +(connector + (pt 3704 2096) + (pt 3768 2096) + (bus) +) +(connector + (text "MAIN_CLK" (rect 3370 2416 3439 2431)(font "Arial" )) + (pt 3448 2432) + (pt 3360 2432) +) +(connector + (text "PIXEL_CLK" (rect 3370 2432 3445 2447)(font "Arial" )) + (pt 3448 2448) + (pt 3360 2448) +) +(connector + (pt 3808 2320) + (pt 3808 2336) +) +(connector + (text "ACP_CLUT_RD" (rect 3722 2320 3825 2335)(font "Arial" )) + (pt 3808 2336) + (pt 3712 2336) +) +(connector + (pt 3328 2400) + (pt 3448 2400) +) +(connector + (pt 3704 2304) + (pt 3768 2304) + (bus) +) +(connector + (text "MAIN_CLK" (rect 3370 2624 3439 2639)(font "Arial" )) + (pt 3448 2640) + (pt 3360 2640) +) +(connector + (text "PIXEL_CLK" (rect 3370 2640 3445 2655)(font "Arial" )) + (pt 3448 2656) + (pt 3360 2656) +) +(connector + (pt 3808 2528) + (pt 3808 2544) +) +(connector + (text "ACP_CLUT_RD" (rect 3722 2528 3825 2543)(font "Arial" )) + (pt 3808 2544) + (pt 3712 2544) +) +(connector + (pt 3328 2608) + (pt 3448 2608) +) +(connector + (pt 3704 2512) + (pt 3768 2512) + (bus) +) +(connector + (text "MAIN_CLK" (rect 3370 1560 3439 1575)(font "Arial" )) + (pt 3448 1576) + (pt 3360 1576) +) +(connector + (text "PIXEL_CLK" (rect 3370 1576 3445 1591)(font "Arial" )) + (pt 3448 1592) + (pt 3360 1592) +) +(connector + (pt 3840 1448) + (pt 3704 1448) + (bus) +) +(connector + (text "FB_AD[31..26]" (rect 3930 1432 4022 1447)(font "Arial" )) + (pt 3920 1448) + (pt 4032 1448) + (bus) +) +(connector + (text "MAIN_CLK" (rect 3370 1768 3439 1783)(font "Arial" )) + (pt 3448 1784) + (pt 3360 1784) +) +(connector + (text "PIXEL_CLK" (rect 3370 1784 3445 1799)(font "Arial" )) + (pt 3448 1800) + (pt 3360 1800) +) +(connector + (pt 3840 1656) + (pt 3704 1656) + (bus) +) +(connector + (text "MAIN_CLK" (rect 3370 1976 3439 1991)(font "Arial" )) + (pt 3448 1992) + (pt 3360 1992) +) +(connector + (text "PIXEL_CLK" (rect 3370 1992 3445 2007)(font "Arial" )) + (pt 3448 2008) + (pt 3360 2008) +) +(connector + (pt 3328 1960) + (pt 3448 1960) +) +(connector + (pt 3840 1864) + (pt 3704 1864) + (bus) +) +(connector + (text "CLUT_ADR[7..0]" (rect 3338 1928 3444 1943)(font "Arial" )) + (pt 3336 1944) + (pt 3448 1944) + (bus) +) +(connector + (text "FB_AD[23..18]" (rect 3930 1640 4022 1655)(font "Arial" )) + (pt 3920 1656) + (pt 4032 1656) + (bus) +) +(connector + (text "FB_AD[23..18]" (rect 3930 1848 4022 1863)(font "Arial" )) + (pt 3920 1864) + (pt 4032 1864) + (bus) +) +(connector + (pt 3880 1464) + (pt 3880 1480) +) +(connector + (text "FALCON_CLUT_RDH" (rect 3762 1464 3904 1479)(font "Arial" )) + (pt 3880 1480) + (pt 3752 1480) +) +(connector + (pt 3880 1672) + (pt 3880 1688) +) +(connector + (text "FALCON_CLUT_RDH" (rect 3762 1672 3904 1687)(font "Arial" )) + (pt 3880 1688) + (pt 3752 1688) +) +(connector + (pt 3880 1880) + (pt 3880 1896) +) +(connector + (text "FALCON_CLUT_RDL" (rect 3762 1880 3902 1895)(font "Arial" )) + (pt 3880 1896) + (pt 3752 1896) +) +(connector + (text "FALCON_CLUT_WR3" (rect 3346 1880 3488 1895)(font "Arial" )) + (pt 3448 1896) + (pt 3336 1896) +) +(connector + (text "FALCON_CLUT_WR0" (rect 3346 1464 3488 1479)(font "Arial" )) + (pt 3448 1480) + (pt 3336 1480) +) +(connector + (text "FALCON_CLUT_WR1" (rect 3346 1672 3488 1687)(font "Arial" )) + (pt 3448 1688) + (pt 3336 1688) +) +(connector + (text "CCF[7..2]" (rect 3834 1912 3894 1927)(font "Arial" )) + (pt 3904 1928) + (pt 3704 1928) + (bus) +) +(connector + (text "CCF[1..0]" (rect 3842 1944 3902 1959)(font "Arial" )) + (pt 3904 1960) + (pt 3816 1960) + (bus) +) +(connector + (text "CCF[23..18]" (rect 3826 1496 3902 1511)(font "Arial" )) + (pt 3904 1512) + (pt 3704 1512) + (bus) +) +(connector + (text "CCF[15..10]" (rect 3826 1704 3902 1719)(font "Arial" )) + (pt 3904 1720) + (pt 3704 1720) + (bus) +) +(connector + (text "CCF[9..8]" (rect 3842 1744 3902 1759)(font "Arial" )) + (pt 3904 1760) + (pt 3816 1760) + (bus) +) +(connector + (text "CCF[17..16]" (rect 3842 1536 3918 1551)(font "Arial" )) + (pt 3904 1552) + (pt 3816 1552) + (bus) +) +(connector + (text "CLUT_ADR[7..0]" (rect 3338 1720 3444 1735)(font "Arial" )) + (pt 3336 1736) + (pt 3448 1736) + (bus) +) +(connector + (pt 3328 1752) + (pt 3448 1752) +) +(connector + (text "FB_AD[23..18]" (rect 3346 1848 3438 1863)(font "Arial" )) + (pt 3336 1864) + (pt 3448 1864) + (bus) +) +(connector + (text "FB_ADR[9..2]" (rect 3346 1864 3432 1879)(font "Arial" )) + (pt 3336 1880) + (pt 3448 1880) + (bus) +) +(connector + (text "CLUT_ADR[7..0]" (rect 3338 1512 3444 1527)(font "Arial" )) + (pt 3336 1528) + (pt 3448 1528) + (bus) +) +(connector + (pt 3328 1544) + (pt 3448 1544) +) +(connector + (text "FB_AD[23..18]" (rect 3346 1640 3438 1655)(font "Arial" )) + (pt 3336 1656) + (pt 3448 1656) + (bus) +) +(connector + (text "FB_ADR[9..2]" (rect 3346 1656 3432 1671)(font "Arial" )) + (pt 3336 1672) + (pt 3448 1672) + (bus) +) +(connector + (text "FB_AD[31..26]" (rect 3346 1432 3438 1447)(font "Arial" )) + (pt 3336 1448) + (pt 3448 1448) + (bus) +) +(connector + (text "FB_ADR[9..2]" (rect 3346 1448 3432 1463)(font "Arial" )) + (pt 3336 1464) + (pt 3448 1464) + (bus) +) +(connector + (text "MAIN_CLK" (rect 3370 920 3439 935)(font "Arial" )) + (pt 3448 936) + (pt 3360 936) +) +(connector + (text "PIXEL_CLK" (rect 3370 936 3445 951)(font "Arial" )) + (pt 3448 952) + (pt 3360 952) +) +(connector + (pt 3704 808) + (pt 3840 808) + (bus) +) +(connector + (text "MAIN_CLK" (rect 3370 1128 3439 1143)(font "Arial" )) + (pt 3448 1144) + (pt 3360 1144) +) +(connector + (text "PIXEL_CLK" (rect 3370 1144 3445 1159)(font "Arial" )) + (pt 3448 1160) + (pt 3360 1160) +) +(connector + (pt 3704 1016) + (pt 3840 1016) + (bus) +) +(connector + (pt 3704 1224) + (pt 3840 1224) + (bus) +) +(connector + (text "MAIN_CLK" (rect 3370 1336 3439 1351)(font "Arial" )) + (pt 3448 1352) + (pt 3360 1352) +) +(connector + (text "PIXEL_CLK" (rect 3370 1352 3445 1367)(font "Arial" )) + (pt 3448 1368) + (pt 3360 1368) +) +(connector + (text "CLUT_ADR[3..0]" (rect 3338 1288 3444 1303)(font "Arial" )) + (pt 3336 1304) + (pt 3448 1304) + (bus) +) +(connector + (pt 3328 1320) + (pt 3448 1320) +) +(connector + (text "FB_AD[26..24]" (rect 3930 792 4022 807)(font "Arial" )) + (pt 3920 808) + (pt 4032 808) + (bus) +) +(connector + (text "FB_AD[22..20]" (rect 3930 1000 4022 1015)(font "Arial" )) + (pt 3920 1016) + (pt 4032 1016) + (bus) +) +(connector + (text "FB_AD[18..16]" (rect 3930 1208 4022 1223)(font "Arial" )) + (pt 3920 1224) + (pt 4032 1224) + (bus) +) +(connector + (pt 3880 824) + (pt 3880 840) +) +(connector + (text "ST_CLUT_RD" (rect 3802 824 3895 839)(font "Arial" )) + (pt 3880 840) + (pt 3792 840) +) +(connector + (pt 3880 1032) + (pt 3880 1048) +) +(connector + (text "ST_CLUT_RD" (rect 3802 1032 3895 1047)(font "Arial" )) + (pt 3880 1048) + (pt 3792 1048) +) +(connector + (pt 3880 1240) + (pt 3880 1256) +) +(connector + (text "ST_CLUT_RD" (rect 3802 1240 3895 1255)(font "Arial" )) + (pt 3880 1256) + (pt 3792 1256) +) +(connector + (text "ST_CLUT_WR1" (rect 3346 1240 3449 1255)(font "Arial" )) + (pt 3448 1256) + (pt 3336 1256) +) +(connector + (text "ST_CLUT_WR0" (rect 3346 824 3449 839)(font "Arial" )) + (pt 3448 840) + (pt 3336 840) +) +(connector + (text "ST_CLUT_WR1" (rect 3346 1032 3449 1047)(font "Arial" )) + (pt 3448 1048) + (pt 3336 1048) +) +(connector + (text "CCS[15..13]" (rect 3826 1064 3903 1079)(font "Arial" )) + (pt 3920 1080) + (pt 3704 1080) + (bus) +) +(connector + (text "CCS[12..8]" (rect 3826 1096 3895 1111)(font "Arial" )) + (pt 3816 1112) + (pt 3920 1112) + (bus) +) +(connector + (text "CCS[23..21]" (rect 3810 856 3887 871)(font "Arial" )) + (pt 3904 872) + (pt 3704 872) + (bus) +) +(connector + (text "CCS[20..16]" (rect 3818 888 3895 903)(font "Arial" )) + (pt 3808 904) + (pt 3904 904) + (bus) +) +(connector + (text "CCS[7..5]" (rect 3714 1272 3775 1287)(font "Arial" )) + (pt 3920 1288) + (pt 3704 1288) + (bus) +) +(connector + (text "CCS[4..0]" (rect 3818 1304 3879 1319)(font "Arial" )) + (pt 3808 1320) + (pt 3920 1320) + (bus) +) +(connector + (text "FB_AD[26..24]" (rect 3346 792 3438 807)(font "Arial" )) + (pt 3336 808) + (pt 3448 808) + (bus) +) +(connector + (text "FB_ADR[4..1]" (rect 3346 808 3432 823)(font "Arial" )) + (pt 3336 824) + (pt 3448 824) + (bus) +) +(connector + (text "CLUT_ADR[3..0]" (rect 3338 872 3444 887)(font "Arial" )) + (pt 3336 888) + (pt 3448 888) + (bus) +) +(connector + (pt 3328 904) + (pt 3448 904) +) +(connector + (text "FB_AD[22..20]" (rect 3346 1000 3438 1015)(font "Arial" )) + (pt 3336 1016) + (pt 3448 1016) + (bus) +) +(connector + (text "FB_ADR[4..1]" (rect 3346 1016 3432 1031)(font "Arial" )) + (pt 3336 1032) + (pt 3448 1032) + (bus) +) +(connector + (text "CLUT_ADR[3..0]" (rect 3338 1080 3444 1095)(font "Arial" )) + (pt 3336 1096) + (pt 3448 1096) + (bus) +) +(connector + (pt 3328 1112) + (pt 3448 1112) +) +(connector + (text "FB_AD[18..16]" (rect 3346 1208 3438 1223)(font "Arial" )) + (pt 3336 1224) + (pt 3448 1224) + (bus) +) +(connector + (text "FB_ADR[4..1]" (rect 3346 1224 3432 1239)(font "Arial" )) + (pt 3336 1240) + (pt 3448 1240) + (bus) +) +(connector + (text "ACP_CLUT_WR1" (rect 3314 2112 3428 2127)(font "Arial" )) + (pt 3304 2128) + (pt 3448 2128) +) +(connector + (text "FB_AD[23..16]" (rect 3874 2080 3966 2095)(font "Arial" )) + (pt 3960 2096) + (pt 3864 2096) + (bus) +) +(connector + (text "FB_AD[15..8]" (rect 3874 2288 3957 2303)(font "Arial" )) + (pt 3864 2304) + (pt 3952 2304) + (bus) +) +(connector + (text "FB_AD[15..8]" (rect 3370 2288 3453 2303)(font "Arial" )) + (pt 3360 2304) + (pt 3448 2304) + (bus) +) +(connector + (text "FB_AD[7..0]" (rect 3874 2496 3949 2511)(font "Arial" )) + (pt 3864 2512) + (pt 3952 2512) + (bus) +) +(connector + (text "FB_AD[7..0]" (rect 3370 2496 3445 2511)(font "Arial" )) + (pt 3360 2512) + (pt 3448 2512) + (bus) +) +(connector + (text "CCA[23..16]" (rect 3730 2144 3806 2159)(font "Arial" )) + (pt 3808 2160) + (pt 3704 2160) + (bus) +) +(connector + (text "CCA[15..8]" (rect 3730 2352 3798 2367)(font "Arial" )) + (pt 3808 2368) + (pt 3704 2368) + (bus) +) +(connector + (text "CCA[7..0]" (rect 3730 2560 3790 2575)(font "Arial" )) + (pt 3808 2576) + (pt 3704 2576) + (bus) +) +(connector + (text "FB_AD[23..16]" (rect 3362 2080 3454 2095)(font "Arial" )) + (pt 3448 2096) + (pt 3352 2096) + (bus) +) +(connector + (text "ZR_C8B[7..0]" (rect 3354 2576 3440 2591)(font "Arial" )) + (pt 3448 2592) + (pt 3344 2592) + (bus) +) +(connector + (text "ZR_C8B[7..0]" (rect 3362 2368 3448 2383)(font "Arial" )) + (pt 3448 2384) + (pt 3352 2384) + (bus) +) +(connector + (text "ZR_C8B[7..0]" (rect 3362 2160 3448 2175)(font "Arial" )) + (pt 3448 2176) + (pt 3352 2176) + (bus) +) +(connector + (text "FB_ADR[9..2]" (rect 3266 2304 3352 2319)(font "Arial" )) + (pt 3448 2320) + (pt 3256 2320) + (bus) +) +(connector + (text "FB_ADR[9..2]" (rect 3266 2096 3352 2111)(font "Arial" )) + (pt 3448 2112) + (pt 3256 2112) + (bus) +) +(connector + (text "FB_ADR[9..2]" (rect 3266 2512 3352 2527)(font "Arial" )) + (pt 3448 2528) + (pt 3256 2528) + (bus) +) +(connector + (text "ACP_CLUT_WR3" (rect 3346 2528 3460 2543)(font "Arial" )) + (pt 3448 2544) + (pt 3336 2544) +) +(connector + (text "ACP_CLUT_WR2" (rect 3346 2320 3460 2335)(font "Arial" )) + (pt 3448 2336) + (pt 3336 2336) +) +(connector + (text "FIFO_MW[8..0]" (rect 1882 1384 1975 1399)(font "Arial" )) + (pt 1952 1400) + (pt 1872 1400) + (bus) +) +(connector + (pt 2000 1408) + (pt 1984 1408) + (bus) +) +(connector + (pt 1984 1344) + (pt 1984 1408) + (bus) +) +(connector + (pt 1984 1344) + (pt 2248 1344) + (bus) +) +(connector + (pt 1968 1424) + (pt 1968 1208) + (bus) +) +(connector + (pt 2248 1208) + (pt 2232 1208) + (bus) +) +(connector + (pt 2248 1344) + (pt 2248 1208) + (bus) +) +(connector + (pt 1872 1424) + (pt 1968 1424) + (bus) +) +(connector + (pt 1968 1424) + (pt 2000 1424) + (bus) +) +(connector + (pt 1968 1208) + (pt 2072 1208) + (bus) +) +(connector + (pt 2512 1248) + (pt 2512 1408) +) +(connector + (pt 2088 1480) + (pt 2088 1512) +) +(connector + (text "INTER_ZEI" (rect 1994 1496 2065 1511)(font "Arial" )) + (pt 1984 1512) + (pt 2088 1512) +) +(connector + (text "INTER_ZEI" (rect 1362 1424 1433 1439)(font "Arial" )) + (pt 1352 1440) + (pt 1456 1440) +) +(connector + (pt 1504 1440) + (pt 1536 1440) +) +(connector + (text "VDVZ[127..0]" (rect 1090 1120 1172 1135)(font "Arial" )) + (pt 1088 1136) + (pt 1160 1136) + (bus) +) +(connector + (text "DOP_FIFO_CLR" (rect 1978 1280 2085 1295)(font "Arial" )) + (pt 2072 1296) + (pt 1992 1296) +) +(connector + (text "PIXEL_CLK" (rect 2002 1256 2077 1271)(font "Arial" )) + (pt 2072 1272) + (pt 1992 1272) +) +(connector + (text "VDVZ[127..96]" (rect 1450 936 1540 951)(font "Arial" )) + (pt 1440 952) + (pt 1520 952) + (bus) +) +(connector + (text "VDVZ[63..32]" (rect 1194 920 1276 935)(font "Arial" )) + (pt 1184 936) + (pt 1296 936) + (bus) +) +(connector + (text "VDP_IN[31..0]" (rect 962 992 1051 1007)(font "Arial" )) + (pt 952 1008) + (pt 1040 1008) + (bus) +) +(connector + (text "VDVZ[95..64]" (rect 1450 1024 1532 1039)(font "Arial" )) + (pt 1440 1040) + (pt 1520 1040) + (bus) +) +(connector + (text "VDVZ[31..0]" (rect 1194 1008 1268 1023)(font "Arial" )) + (pt 1184 1024) + (pt 1296 1024) + (bus) +) +(connector + (text "VDP_IN[63..32]" (rect 962 904 1059 919)(font "Arial" )) + (pt 952 920) + (pt 1040 920) + (bus) +) +(connector + (text "DDRCLK0" (rect 978 920 1046 935)(font "Arial" )) + (pt 1040 936) + (pt 968 936) +) +(connector + (text "DDRCLK0" (rect 978 1008 1046 1023)(font "Arial" )) + (pt 1040 1024) + (pt 968 1024) +) +(connector + (text "DDRCLK0" (rect 1234 936 1302 951)(font "Arial" )) + (pt 1296 952) + (pt 1224 952) +) +(connector + (text "DDRCLK0" (rect 1234 1024 1302 1039)(font "Arial" )) + (pt 1224 1040) + (pt 1296 1040) +) +(connector + (text "DDRCLK0" (rect 1098 1136 1166 1151)(font "Arial" )) + (pt 1160 1152) + (pt 1088 1152) +) +(connector + (text "DDRCLK0" (rect 1338 1160 1406 1175)(font "Arial" )) + (pt 1400 1176) + (pt 1328 1176) +) +(connector + (text "VDMB[127..0]" (rect 1554 1168 1640 1183)(font "Arial" )) + (pt 1544 1184) + (pt 1624 1184) + (bus) +) +(connector + (text "VDMA[127..0]" (rect 1314 1144 1398 1159)(font "Arial" )) + (pt 1304 1160) + (pt 1400 1160) + (bus) +) +(connector + (text "VDMC[127..0]" (rect 1642 1344 1729 1359)(font "Arial" )) + (pt 1640 1360) + (pt 1712 1360) + (bus) +) +(connector + (text "VDMC[127..0]" (rect 1970 960 2057 975)(font "Arial" )) + (pt 1968 976) + (pt 2040 976) + (bus) +) +(connector + (text "VDM_SEL[3..0]" (rect 570 2416 665 2431)(font "Arial" )) + (pt 560 2432) + (pt 656 2432) + (bus) +) +(connector + (text "VDMB[127..0]" (rect 1586 1080 1672 1095)(font "Arial" )) + (pt 1576 1096) + (pt 1800 1096) + (bus) +) +(connector + (text "VDMB[119..0],VDMA[127..120]" (rect 1586 1064 1777 1079)(font "Arial" )) + (pt 1576 1080) + (pt 1800 1080) + (bus) +) +(connector + (text "VDMB[111..0],VDMA[127..112]" (rect 1586 1048 1777 1063)(font "Arial" )) + (pt 1576 1064) + (pt 1800 1064) + (bus) +) +(connector + (text "VDMB[103..0],VDMA[127..104]" (rect 1586 1032 1777 1047)(font "Arial" )) + (pt 1576 1048) + (pt 1800 1048) + (bus) +) +(connector + (text "VDMB[95..0],VDMA[127..96]" (rect 1586 1016 1760 1031)(font "Arial" )) + (pt 1576 1032) + (pt 1800 1032) + (bus) +) +(connector + (text "VDMB[87..0],VDMA[127..88]" (rect 1586 1000 1760 1015)(font "Arial" )) + (pt 1576 1016) + (pt 1800 1016) + (bus) +) +(connector + (text "VDMB[79..0],VDMA[127..80]" (rect 1586 984 1760 999)(font "Arial" )) + (pt 1576 1000) + (pt 1800 1000) + (bus) +) +(connector + (text "VDMB[71..0],VDMA[127..72]" (rect 1586 968 1760 983)(font "Arial" )) + (pt 1576 984) + (pt 1800 984) + (bus) +) +(connector + (text "VDMB[63..0],VDMA[127..64]" (rect 1586 952 1760 967)(font "Arial" )) + (pt 1576 968) + (pt 1800 968) + (bus) +) +(connector + (text "VDMB[55..0],VDMA[127..56]" (rect 1586 936 1760 951)(font "Arial" )) + (pt 1576 952) + (pt 1800 952) + (bus) +) +(connector + (text "VDMB[47..0],VDMA[127..48]" (rect 1586 920 1760 935)(font "Arial" )) + (pt 1576 936) + (pt 1800 936) + (bus) +) +(connector + (text "VDMB[39..0],VDMA[127..40]" (rect 1586 904 1760 919)(font "Arial" )) + (pt 1576 920) + (pt 1800 920) + (bus) +) +(connector + (text "VDMB[31..0],VDMA[127..32]" (rect 1586 888 1760 903)(font "Arial" )) + (pt 1576 904) + (pt 1800 904) + (bus) +) +(connector + (text "VDMB[23..0],VDMA[127..24]" (rect 1586 872 1760 887)(font "Arial" )) + (pt 1576 888) + (pt 1800 888) + (bus) +) +(connector + (text "VDMB[15..0],VDMA[127..16]" (rect 1586 856 1760 871)(font "Arial" )) + (pt 1576 872) + (pt 1800 872) + (bus) +) +(connector + (text "VDMB[7..0],VDMA[127..8]" (rect 1586 840 1744 855)(font "Arial" )) + (pt 1576 856) + (pt 1800 856) + (bus) +) +(connector + (text "FIFO_WRE" (rect 1098 1152 1169 1167)(font "Arial" )) + (pt 1088 1168) + (pt 1160 1168) +) +(connector + (text "FIFO_WRE" (rect 1338 1176 1409 1191)(font "Arial" )) + (pt 1328 1192) + (pt 1400 1192) +) +(connector + (text "FIFO_WRE" (rect 1650 1368 1721 1383)(font "Arial" )) + (pt 1640 1384) + (pt 1712 1384) +) +(connector + (text "nFB_BURST" (rect 1570 1896 1652 1911)(font "Arial" )) + (pt 1560 1912) + (pt 1664 1912) +) +(connector + (text "nFB_OE" (rect 1570 1920 1624 1935)(font "Arial" )) + (pt 1560 1936) + (pt 1664 1936) +) +(connector + (text "nRSTO" (rect 1570 1704 1617 1719)(font "Arial" )) + (pt 1560 1720) + (pt 1664 1720) +) +(connector + (text "MAIN_CLK" (rect 1570 1728 1639 1743)(font "Arial" )) + (pt 1664 1744) + (pt 1560 1744) +) +(connector + (text "nFB_CS1" (rect 1570 1752 1632 1767)(font "Arial" )) + (pt 1560 1768) + (pt 1664 1768) +) +(connector + (text "nFB_CS2" (rect 1570 1776 1632 1791)(font "Arial" )) + (pt 1560 1792) + (pt 1664 1792) +) +(connector + (text "nFB_CS3" (rect 1570 1800 1632 1815)(font "Arial" )) + (pt 1560 1816) + (pt 1664 1816) +) +(connector + (text "nFB_WR" (rect 1570 1824 1627 1839)(font "Arial" )) + (pt 1560 1840) + (pt 1664 1840) +) +(connector + (text "FB_SIZE0" (rect 1570 1848 1634 1863)(font "Arial" )) + (pt 1560 1864) + (pt 1664 1864) +) +(connector + (text "FB_SIZE1" (rect 1570 1872 1634 1887)(font "Arial" )) + (pt 1560 1888) + (pt 1664 1888) +) +(connector + (text "FB_AD[31..0]" (rect 2026 1720 2109 1735)(font "Arial" )) + (pt 2136 1736) + (pt 2016 1736) + (bus) +) +(connector + (text "FB_ADR[31..0]" (rect 1570 1944 1664 1959)(font "Arial" )) + (pt 1664 1960) + (pt 1560 1960) + (bus) +) +(connector + (text "ACP_CLUT_RD" (rect 2026 1968 2129 1983)(font "Arial" )) + (pt 2016 1984) + (pt 2112 1984) +) +(connector + (text "PIXEL_CLK" (rect 2026 2224 2101 2239)(font "Arial" )) + (pt 2104 2240) + (pt 2016 2240) +) +(connector + (text "ST_CLUT_RD" (rect 2026 2096 2119 2111)(font "Arial" )) + (pt 2016 2112) + (pt 2120 2112) +) +(connector + (text "FALCON_CLUT_RDH" (rect 2026 2024 2168 2039)(font "Arial" )) + (pt 2016 2040) + (pt 2120 2040) +) +(connector + (text "FALCON_CLUT_RDL" (rect 2026 2000 2166 2015)(font "Arial" )) + (pt 2016 2016) + (pt 2120 2016) +) +(connector + (text "ST_CLUT_WR[1..0]" (rect 2026 2120 2152 2135)(font "Arial" )) + (pt 2016 2136) + (pt 2112 2136) + (bus) +) +(connector + (text "CLUT_MUX_ADR[3..0]" (rect 2026 2152 2169 2167)(font "Arial" )) + (pt 2016 2168) + (pt 2120 2168) + (bus) +) +(connector + (text "HSYNC" (rect 2026 2248 2075 2263)(font "Arial" )) + (pt 2104 2264) + (pt 2016 2264) +) +(connector + (text "VSYNC" (rect 2026 2272 2073 2287)(font "Arial" )) + (pt 2104 2288) + (pt 2016 2288) +) +(connector + (text "nBLANK" (rect 2026 2296 2080 2311)(font "Arial" )) + (pt 2104 2312) + (pt 2016 2312) +) +(connector + (text "nSYNC" (rect 2026 2320 2073 2335)(font "Arial" )) + (pt 2104 2336) + (pt 2016 2336) +) +(connector + (text "nPD_VGA" (rect 2026 2344 2089 2359)(font "Arial" )) + (pt 2104 2360) + (pt 2016 2360) +) +(connector + (text "CLUT_OFF[3..0]" (rect 2026 2072 2129 2087)(font "Arial" )) + (pt 2016 2088) + (pt 2112 2088) + (bus) +) +(connector + (text "BLITTER_ON" (rect 2026 2488 2113 2503)(font "Arial" )) + (pt 2096 2504) + (pt 2016 2504) +) +(connector + (text "VIDEO_RAM_CTR[15..0]" (rect 2026 2368 2182 2383)(font "Arial" )) + (pt 2144 2384) + (pt 2016 2384) + (bus) +) +(connector + (text "CCR[23..0]" (rect 2026 2176 2096 2191)(font "Arial" )) + (pt 2096 2192) + (pt 2016 2192) + (bus) +) +(connector + (text "CCSEL[2..0]" (rect 2026 2200 2105 2215)(font "Arial" )) + (pt 2016 2216) + (pt 2096 2216) + (bus) +) +(connector + (text "ACP_CLUT_WR[3..0]" (rect 2026 1944 2162 1959)(font "Arial" )) + (pt 2136 1960) + (pt 2016 1960) + (bus) +) +(connector + (text "FALCON_CLUT_WR[3..0]" (rect 2026 2048 2191 2063)(font "Arial" )) + (pt 2144 2064) + (pt 2016 2064) + (bus) +) +(connector + (text "INTER_ZEI" (rect 2026 2400 2097 2415)(font "Arial" )) + (pt 2016 2416) + (pt 2136 2416) +) +(connector + (text "DOP_FIFO_CLR" (rect 2026 2424 2133 2439)(font "Arial" )) + (pt 2016 2440) + (pt 2128 2440) +) +(connector + (text "VIDEO_MOD_TA" (rect 2026 2520 2133 2535)(font "Arial" )) + (pt 2088 2536) + (pt 2016 2536) +) +(connector + (text "BLITTER_RUN" (rect 1546 2528 1643 2543)(font "Arial" )) + (pt 1664 2544) + (pt 1536 2544) +) +(connector + (pt 1888 1120) + (pt 1888 1160) + (bus) +) +(connector + (text "VDM_SEL[3..0]" (rect 1810 1144 1905 1159)(font "Arial" )) + (pt 1888 1160) + (pt 1800 1160) + (bus) +) +(connector + (pt 1608 1432) + (pt 1608 1232) +) +(connector + (pt 1600 1432) + (pt 1608 1432) +) +(connector + (pt 1608 1432) + (pt 1712 1432) +) +(connector + (pt 1608 1232) + (pt 2072 1232) +) +(connector + (pt 2072 1248) + (pt 1944 1248) +) +(connector + (pt 1944 1248) + (pt 1944 1296) +) +(connector + (pt 1944 1296) + (pt 1920 1296) +) +(connector + (text "FIFO_RDE" (rect 1770 1272 1839 1287)(font "Arial" )) + (pt 1760 1288) + (pt 1856 1288) +) +(connector + (text "INTER_ZEI" (rect 1762 1288 1833 1303)(font "Arial" )) + (pt 1752 1304) + (pt 1856 1304) +) +(connector + (text "CLK33M" (rect 1586 2168 1641 2183)(font "Arial" )) + (pt 1512 2184) + (pt 1664 2184) +) +(connector + (text "CLK25M" (rect 1586 2192 1641 2207)(font "Arial" )) + (pt 1512 2208) + (pt 1664 2208) +) +(connector + (text "CLK_VIDEO" (rect 1570 2144 1649 2159)(font "Arial" )) + (pt 1512 2160) + (pt 1664 2160) +) +(connector + (text "VIDEO_MOD_TA" (rect 258 1816 365 1831)(font "Arial" )) + (pt 264 1832) + (pt 360 1832) +) +(connector + (text "COLOR8" (rect 2026 1912 2085 1927)(font "Arial" )) + (pt 2016 1928) + (pt 2120 1928) +) +(connector + (text "COLOR4" (rect 2026 1896 2085 1911)(font "Arial" )) + (pt 2016 1912) + (pt 2120 1912) +) +(connector + (text "COLOR2" (rect 2026 1880 2085 1895)(font "Arial" )) + (pt 2016 1896) + (pt 2120 1896) +) +(connector + (text "COLOR1" (rect 2026 1864 2085 1879)(font "Arial" )) + (pt 2016 1880) + (pt 2120 1880) +) +(connector + (text "FIFO_RDE" (rect 2026 1736 2095 1751)(font "Arial" )) + (pt 2104 1752) + (pt 2016 1752) +) +(connector + (text "VIDEO_RECONFIG" (rect 2026 1688 2151 1703)(font "Arial" )) + (pt 2144 1704) + (pt 2016 1704) +) +(connector + (text "VR_WR" (rect 2026 1784 2076 1799)(font "Arial" )) + (pt 2016 1800) + (pt 2112 1800) +) +(connector + (text "VR_RD" (rect 2026 1800 2074 1815)(font "Arial" )) + (pt 2016 1816) + (pt 2112 1816) +) +(connector + (text "VR_D[8..0]" (rect 1570 2120 1638 2135)(font "Arial" )) + (pt 1512 2136) + (pt 1664 2136) + (bus) +) +(connector + (text "VR_BUSY" (rect 1578 2104 1642 2119)(font "Arial" )) + (pt 1512 2120) + (pt 1664 2120) +) +(connector + (text "CLR_FIFO" (rect 202 2216 270 2231)(font "Arial" )) + (pt 296 2232) + (pt 192 2232) +) +(connector + (text "CLR_FIFO" (rect 2026 1752 2094 1767)(font "Arial" )) + (pt 2016 1768) + (pt 2112 1768) +) +(connector + (text "CLR_FIFO" (rect 1634 1456 1702 1471)(font "Arial" )) + (pt 1712 1472) + (pt 1632 1472) +) +(junction (pt 2984 1688)) +(junction (pt 792 1192)) +(junction (pt 792 1312)) +(junction (pt 792 1432)) +(junction (pt 792 1792)) +(junction (pt 792 1928)) +(junction (pt 792 1552)) +(junction (pt 792 1648)) +(junction (pt 2512 1728)) +(junction (pt 2512 1888)) +(junction (pt 2512 2048)) +(junction (pt 2512 1408)) +(junction (pt 2512 1568)) +(junction (pt 2512 1552)) +(junction (pt 2512 2208)) +(junction (pt 1344 2880)) +(junction (pt 1344 2824)) +(junction (pt 1344 2928)) +(junction (pt 1328 2904)) +(junction (pt 1328 2952)) +(junction (pt 4240 2800)) +(junction (pt 3232 3024)) +(junction (pt 1968 1424)) +(junction (pt 1608 1432)) diff --git a/FPGA_by_Gregory_Estrade/Video/video.v b/FPGA_by_Gregory_Estrade/Video/video.v new file mode 100644 index 0000000..536dc6f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/Video/video.v @@ -0,0 +1,1313 @@ +// Copyright (C) 1991-2009 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" +// CREATED "Sat Mar 01 09:20:01 2014" + +module video( + MAIN_CLK, + nFB_CS1, + nFB_CS2, + nFB_CS3, + nFB_WR, + FB_SIZE0, + FB_SIZE1, + nRSTO, + nFB_OE, + FB_ALE, + DDR_SYNC_66M, + CLK33M, + CLK25M, + CLK_VIDEO, + VR_BUSY, + DDRCLK, + FB_ADR, + VR_D, + nBLANK, + nVWE, + nVCAS, + nVRAS, + nVCS, + nPD_VGA, + VCKE, + VSYNC, + HSYNC, + nSYNC, + VIDEO_TA, + PIXEL_CLK, + VIDEO_RECONFIG, + VR_WR, + VR_RD, + BA, + FB_AD, + VA, + VB, + VD, + VDM, + VDQS, + VG, + VR +); + + +input MAIN_CLK; +input nFB_CS1; +input nFB_CS2; +input nFB_CS3; +input nFB_WR; +input FB_SIZE0; +input FB_SIZE1; +input nRSTO; +input nFB_OE; +input FB_ALE; +input DDR_SYNC_66M; +input CLK33M; +input CLK25M; +input CLK_VIDEO; +input VR_BUSY; +input [3:0] DDRCLK; +input [31:0] FB_ADR; +input [8:0] VR_D; +output nBLANK; +output nVWE; +output nVCAS; +output nVRAS; +output nVCS; +output nPD_VGA; +output VCKE; +output VSYNC; +output HSYNC; +output nSYNC; +output VIDEO_TA; +output PIXEL_CLK; +output VIDEO_RECONFIG; +output VR_WR; +output VR_RD; +output [1:0] BA; +inout [31:0] FB_AD; +output [12:0] VA; +output [7:0] VB; +inout [31:0] VD; +output [3:0] VDM; +inout [3:0] VDQS; +output [7:0] VG; +output [7:0] VR; + +wire ACP_CLUT_RD; +wire [3:0] ACP_CLUT_WR; +wire [31:0] BLITTER_ADR; +wire [4:0] BLITTER_DACK; +wire [127:0] BLITTER_DIN; +wire [127:0] BLITTER_DOUT; +wire BLITTER_ON; +wire BLITTER_RUN; +wire BLITTER_SIG; +wire BLITTER_TA; +wire BLITTER_WR; +wire [23:0] CC16; +wire [31:0] CC24; +wire [23:0] CCA; +wire [23:0] CCF; +wire [23:0] CCR; +wire [23:0] CCS; +wire [2:0] CCSEL; +wire CLR_FIFO; +wire [7:0] CLUT_ADR; +wire CLUT_ADR1A; +wire CLUT_ADR2A; +wire CLUT_ADR3A; +wire CLUT_ADR4A; +wire CLUT_ADR5A; +wire CLUT_ADR6A; +wire CLUT_ADR7A; +wire [3:0] CLUT_MUX_ADR; +wire [3:0] CLUT_OFF; +wire COLOR1; +wire COLOR2; +wire COLOR4; +wire COLOR8; +wire [4:0] DDR_FB; +reg DDR_WR; + +//GE reg [1:0] DDRWR_D_SEL; +wire DDRWR_D_SEL1; +reg DDRWR_D_SEL0; + +wire DOP_FIFO_CLR; +wire FALCON_CLUT_RDH; +wire FALCON_CLUT_RDL; +wire [3:0] FALCON_CLUT_WR; +wire [127:0] FB_DDR; +wire [3:0] FB_LE; +wire [3:0] FB_VDOE; +wire [127:0] FIFO_D; +wire [8:0] FIFO_MW; +wire FIFO_RDE; +wire FIFO_WRE; +wire INTER_ZEI; +wire nFB_BURST; +wire PIXEL_CLK_ALTERA_SYNTHESIZED; +wire SR_BLITTER_DACK; +wire SR_DDR_FB; +wire SR_DDR_WR; +wire SR_DDRWR_D_SEL; +wire SR_FIFO_WRE; +wire [7:0] SR_VDMP; +wire ST_CLUT_RD; +wire [1:0] ST_CLUT_WR; +wire [3:0] VDM_SEL; +wire [127:0] VDMA; +wire [127:0] VDMB; +wire [127:0] VDMC; +wire [7:0] VDMP; +wire VDOUT_OE; +wire [63:0] VDP_IN; +wire [63:0] VDP_OUT; +wire [31:0] VDR; +wire [127:0] VDVZ; +wire VIDEO_DDR_TA; +wire VIDEO_MOD_TA; +wire [15:0] VIDEO_RAM_CTR; +wire [7:0] ZR_C8; +wire [7:0] ZR_C8B; +wire SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_2; +wire SYNTHESIZED_WIRE_3; +wire SYNTHESIZED_WIRE_4; +wire SYNTHESIZED_WIRE_5; +wire SYNTHESIZED_WIRE_60; +wire [15:0] SYNTHESIZED_WIRE_7; +reg DFF_inst93; +wire SYNTHESIZED_WIRE_8; +wire SYNTHESIZED_WIRE_9; +wire SYNTHESIZED_WIRE_61; +wire [31:0] SYNTHESIZED_WIRE_11; +wire [7:0] SYNTHESIZED_WIRE_12; +wire [31:0] SYNTHESIZED_WIRE_13; +wire [31:0] SYNTHESIZED_WIRE_14; +wire [31:0] SYNTHESIZED_WIRE_15; +wire SYNTHESIZED_WIRE_16; +wire SYNTHESIZED_WIRE_18; +wire SYNTHESIZED_WIRE_19; +wire SYNTHESIZED_WIRE_20; +wire SYNTHESIZED_WIRE_21; +wire SYNTHESIZED_WIRE_22; +wire SYNTHESIZED_WIRE_23; +wire SYNTHESIZED_WIRE_24; +wire [23:0] SYNTHESIZED_WIRE_25; +wire [23:0] SYNTHESIZED_WIRE_26; +wire [23:0] SYNTHESIZED_WIRE_62; +wire [2:0] SYNTHESIZED_WIRE_29; +wire [7:0] SYNTHESIZED_WIRE_30; +wire [2:0] SYNTHESIZED_WIRE_31; +wire [7:0] SYNTHESIZED_WIRE_32; +wire [7:0] SYNTHESIZED_WIRE_33; +wire [2:0] SYNTHESIZED_WIRE_34; +wire [127:0] SYNTHESIZED_WIRE_63; +wire [127:0] SYNTHESIZED_WIRE_36; +wire SYNTHESIZED_WIRE_38; +wire SYNTHESIZED_WIRE_40; +wire [5:0] SYNTHESIZED_WIRE_41; +wire [23:0] SYNTHESIZED_WIRE_42; +wire [23:0] SYNTHESIZED_WIRE_43; +wire [5:0] SYNTHESIZED_WIRE_44; +wire [5:0] SYNTHESIZED_WIRE_45; +wire SYNTHESIZED_WIRE_46; +wire [6:0] SYNTHESIZED_WIRE_47; +wire [31:0] SYNTHESIZED_WIRE_48; +reg DFF_inst91; +reg SYNTHESIZED_WIRE_64; +wire SYNTHESIZED_WIRE_49; +wire SYNTHESIZED_WIRE_50; +wire SYNTHESIZED_WIRE_51; +wire SYNTHESIZED_WIRE_52; +wire SYNTHESIZED_WIRE_53; +wire SYNTHESIZED_WIRE_54; +wire SYNTHESIZED_WIRE_55; +wire SYNTHESIZED_WIRE_56; +wire SYNTHESIZED_WIRE_57; +wire [23:0] SYNTHESIZED_WIRE_65; + +assign VB[7:0] = SYNTHESIZED_WIRE_65[7:0]; +assign VG[7:0] = SYNTHESIZED_WIRE_65[15:8]; +assign VR[7:0] = SYNTHESIZED_WIRE_65[23:16]; +assign SYNTHESIZED_WIRE_0 = 0; +assign SYNTHESIZED_WIRE_1 = 0; +assign SYNTHESIZED_WIRE_2 = 0; +assign SYNTHESIZED_WIRE_3 = 0; +assign SYNTHESIZED_WIRE_4 = 0; +assign SYNTHESIZED_WIRE_5 = 0; +assign SYNTHESIZED_WIRE_19 = 0; +assign SYNTHESIZED_WIRE_20 = 0; +assign SYNTHESIZED_WIRE_21 = 0; +assign SYNTHESIZED_WIRE_22 = 0; +assign SYNTHESIZED_WIRE_23 = 0; +assign SYNTHESIZED_WIRE_24 = 0; +assign SYNTHESIZED_WIRE_55 = 0; +assign SYNTHESIZED_WIRE_56 = 0; +assign SYNTHESIZED_WIRE_57 = 0; +wire [127:0] GDFX_TEMP_SIGNAL_6; +wire [127:0] GDFX_TEMP_SIGNAL_7; +wire [127:0] GDFX_TEMP_SIGNAL_8; +wire [127:0] GDFX_TEMP_SIGNAL_9; +wire [127:0] GDFX_TEMP_SIGNAL_10; +wire [127:0] GDFX_TEMP_SIGNAL_11; +wire [127:0] GDFX_TEMP_SIGNAL_12; +wire [127:0] GDFX_TEMP_SIGNAL_13; +wire [127:0] GDFX_TEMP_SIGNAL_14; +wire [127:0] GDFX_TEMP_SIGNAL_0; +wire [127:0] GDFX_TEMP_SIGNAL_1; +wire [127:0] GDFX_TEMP_SIGNAL_2; +wire [127:0] GDFX_TEMP_SIGNAL_3; +wire [127:0] GDFX_TEMP_SIGNAL_4; +wire [127:0] GDFX_TEMP_SIGNAL_5; + + +assign GDFX_TEMP_SIGNAL_6 = {VDMB[119:0],VDMA[127:120]}; +assign GDFX_TEMP_SIGNAL_7 = {VDMB[111:0],VDMA[127:112]}; +assign GDFX_TEMP_SIGNAL_8 = {VDMB[103:0],VDMA[127:104]}; +assign GDFX_TEMP_SIGNAL_9 = {VDMB[95:0],VDMA[127:96]}; +assign GDFX_TEMP_SIGNAL_10 = {VDMB[87:0],VDMA[127:88]}; +assign GDFX_TEMP_SIGNAL_11 = {VDMB[79:0],VDMA[127:80]}; +assign GDFX_TEMP_SIGNAL_12 = {VDMB[71:0],VDMA[127:72]}; +assign GDFX_TEMP_SIGNAL_13 = {VDMB[63:0],VDMA[127:64]}; +assign GDFX_TEMP_SIGNAL_14 = {VDMB[55:0],VDMA[127:56]}; +assign GDFX_TEMP_SIGNAL_0 = {VDMB[47:0],VDMA[127:48]}; +assign GDFX_TEMP_SIGNAL_1 = {VDMB[39:0],VDMA[127:40]}; +assign GDFX_TEMP_SIGNAL_2 = {VDMB[31:0],VDMA[127:32]}; +assign GDFX_TEMP_SIGNAL_3 = {VDMB[23:0],VDMA[127:24]}; +assign GDFX_TEMP_SIGNAL_4 = {VDMB[15:0],VDMA[127:16]}; +assign GDFX_TEMP_SIGNAL_5 = {VDMB[7:0],VDMA[127:8]}; + + +altdpram2 b2v_ACP_CLUT_RAM( + .wren_a(ACP_CLUT_WR[3]), + .wren_b(SYNTHESIZED_WIRE_0), + .clock_a(MAIN_CLK), + .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), + .address_a(FB_ADR[9:2]), + .address_b(ZR_C8B), + .data_a(FB_AD[7:0]), + + .q_a(SYNTHESIZED_WIRE_30), + .q_b(CCA[7:0])); + + +altdpram2 b2v_ACP_CLUT_RAM54( + .wren_a(ACP_CLUT_WR[2]), + .wren_b(SYNTHESIZED_WIRE_1), + .clock_a(MAIN_CLK), + .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), + .address_a(FB_ADR[9:2]), + .address_b(ZR_C8B), + .data_a(FB_AD[15:8]), + + .q_a(SYNTHESIZED_WIRE_32), + .q_b(CCA[15:8])); + + +altdpram2 b2v_ACP_CLUT_RAM55( + .wren_a(ACP_CLUT_WR[1]), + .wren_b(SYNTHESIZED_WIRE_2), + .clock_a(MAIN_CLK), + .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), + .address_a(FB_ADR[9:2]), + .address_b(ZR_C8B), + .data_a(FB_AD[23:16]), + + .q_a(SYNTHESIZED_WIRE_33), + .q_b(CCA[23:16])); + + +BLITTER b2v_BLITTER( + .nRSTO(nRSTO), + .MAIN_CLK(MAIN_CLK), + .FB_ALE(FB_ALE), + .nFB_WR(nFB_WR), + .nFB_OE(nFB_OE), + .FB_SIZE0(FB_SIZE0), + .FB_SIZE1(FB_SIZE1), + .BLITTER_ON(BLITTER_ON), + .nFB_CS1(nFB_CS1), + .nFB_CS2(nFB_CS2), + .nFB_CS3(nFB_CS3), + .DDRCLK0(DDRCLK[0]), + .BLITTER_DACK(BLITTER_DACK), + .BLITTER_DIN(BLITTER_DIN), + .FB_AD(FB_AD), + .FB_ADR(FB_ADR), + .VIDEO_RAM_CTR(VIDEO_RAM_CTR), + .BLITTER_RUN(BLITTER_RUN), + .BLITTER_SIG(BLITTER_SIG), + .BLITTER_WR(BLITTER_WR), + .BLITTER_TA(BLITTER_TA), + .BLITTER_ADR(BLITTER_ADR), + .BLITTER_DOUT(BLITTER_DOUT) + ); + + +DDR_CTR b2v_DDR_CTR( + .nFB_CS1(nFB_CS1), + .nFB_CS2(nFB_CS2), + .nFB_CS3(nFB_CS3), + .nFB_OE(nFB_OE), + .FB_SIZE0(FB_SIZE0), + .FB_SIZE1(FB_SIZE1), + .nRSTO(nRSTO), + .MAIN_CLK(MAIN_CLK), + .FB_ALE(FB_ALE), + .nFB_WR(nFB_WR), + .DDR_SYNC_66M(DDR_SYNC_66M), + .BLITTER_SIG(BLITTER_SIG), + .BLITTER_WR(BLITTER_WR), + .DDRCLK0(DDRCLK[0]), + .CLK33M(CLK33M), + .CLR_FIFO(CLR_FIFO), + .BLITTER_ADR(BLITTER_ADR), + .FB_AD(FB_AD), + .FB_ADR(FB_ADR), + .FIFO_MW(FIFO_MW), + .VIDEO_RAM_CTR(VIDEO_RAM_CTR), + .nVWE(nVWE), + .nVRAS(nVRAS), + .nVCS(nVCS), + .VCKE(VCKE), + .nVCAS(nVCAS), + .SR_FIFO_WRE(SR_FIFO_WRE), + .SR_DDR_FB(SR_DDR_FB), + .SR_DDR_WR(SR_DDR_WR), + .SR_DDRWR_D_SEL(SR_DDRWR_D_SEL), + .VIDEO_DDR_TA(VIDEO_DDR_TA), + .SR_BLITTER_DACK(SR_BLITTER_DACK), + .DDRWR_D_SEL1(DDRWR_D_SEL1), + .BA(BA), + + .FB_LE(FB_LE), + .FB_VDOE(FB_VDOE), + .SR_VDMP(SR_VDMP), + .VA(VA), + .VDM_SEL(VDM_SEL)); + + +altdpram1 b2v_FALCON_CLUT_BLUE( + .wren_a(FALCON_CLUT_WR[3]), + .wren_b(SYNTHESIZED_WIRE_3), + .clock_a(MAIN_CLK), + .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), + .address_a(FB_ADR[9:2]), + .address_b(CLUT_ADR), + .data_a(FB_AD[23:18]), + + .q_a(SYNTHESIZED_WIRE_45), + .q_b(CCF[7:2])); + + +altdpram1 b2v_FALCON_CLUT_GREEN( + .wren_a(FALCON_CLUT_WR[1]), + .wren_b(SYNTHESIZED_WIRE_4), + .clock_a(MAIN_CLK), + .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), + .address_a(FB_ADR[9:2]), + .address_b(CLUT_ADR), + .data_a(FB_AD[23:18]), + + .q_a(SYNTHESIZED_WIRE_44), + .q_b(CCF[15:10])); + + +altdpram1 b2v_FALCON_CLUT_RED( + .wren_a(FALCON_CLUT_WR[0]), + .wren_b(SYNTHESIZED_WIRE_5), + .clock_a(MAIN_CLK), + .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), + .address_a(FB_ADR[9:2]), + .address_b(CLUT_ADR), + .data_a(FB_AD[31:26]), + + .q_a(SYNTHESIZED_WIRE_41), + .q_b(CCF[23:18])); + + +lpm_fifo_dc0 b2v_inst( + .wrreq(FIFO_WRE), + .wrclk(DDRCLK[0]), + .rdreq(SYNTHESIZED_WIRE_60), + .rdclk(PIXEL_CLK_ALTERA_SYNTHESIZED), + .aclr(CLR_FIFO), + .data(VDMC), + + .q(SYNTHESIZED_WIRE_63), + .wrusedw(FIFO_MW)); + + +altddio_bidir0 b2v_inst1( + .oe(VDOUT_OE), + .inclock(DDRCLK[1]), + .outclock(DDRCLK[3]), + .datain_h(VDP_OUT[63:32]), + .datain_l(VDP_OUT[31:0]), + .padio(VD), + .combout(SYNTHESIZED_WIRE_15), + .dataout_h(VDP_IN[31:0]), + .dataout_l(VDP_IN[63:32]) + ); + + +lpm_ff4 b2v_inst10( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .data(SYNTHESIZED_WIRE_7), + .q({CC16[23:19],CC16[15:10],CC16[7:3]})); + + +lpm_muxVDM b2v_inst100( + .data0x(VDMB), + .data10x(GDFX_TEMP_SIGNAL_0), + .data11x(GDFX_TEMP_SIGNAL_1), + .data12x(GDFX_TEMP_SIGNAL_2), + .data13x(GDFX_TEMP_SIGNAL_3), + .data14x(GDFX_TEMP_SIGNAL_4), + .data15x(GDFX_TEMP_SIGNAL_5), + .data1x(GDFX_TEMP_SIGNAL_6), + .data2x(GDFX_TEMP_SIGNAL_7), + .data3x(GDFX_TEMP_SIGNAL_8), + .data4x(GDFX_TEMP_SIGNAL_9), + .data5x(GDFX_TEMP_SIGNAL_10), + .data6x(GDFX_TEMP_SIGNAL_11), + .data7x(GDFX_TEMP_SIGNAL_12), + .data8x(GDFX_TEMP_SIGNAL_13), + .data9x(GDFX_TEMP_SIGNAL_14), + .sel(VDM_SEL), + .result(VDMC)); + + +lpm_mux3 b2v_inst102( + .data1(DFF_inst93), + .data0(ZR_C8[0]), + .sel(COLOR1), + .result(ZR_C8B[0])); + +assign CLUT_ADR[4] = CLUT_OFF[0] | SYNTHESIZED_WIRE_8; + +assign CLUT_ADR[6] = CLUT_OFF[2] | SYNTHESIZED_WIRE_9; + +assign SYNTHESIZED_WIRE_61 = COLOR8 | COLOR4; + +assign CLUT_ADR[2] = CLUT_ADR2A & SYNTHESIZED_WIRE_61; + +assign SYNTHESIZED_WIRE_16 = COLOR4 | COLOR8 | COLOR2; + + +/*lpm_bustri_LONG b2v_inst108( + .enabledt(FB_VDOE[0]), + .data(VDR), + .tridata(FB_AD) + );*/ +assign FB_AD = (FB_VDOE[0]) ? VDR : 32'hzzzzzzzz; + + +/*lpm_bustri_LONG b2v_inst109( + .enabledt(FB_VDOE[1]), + .data(SYNTHESIZED_WIRE_11), + .tridata(FB_AD) + );*/ +assign FB_AD = (FB_VDOE[1]) ? SYNTHESIZED_WIRE_11 : 32'hzzzzzzzz; + + +lpm_ff5 b2v_inst11( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .data(SYNTHESIZED_WIRE_12), + .q(ZR_C8)); + + +/*lpm_bustri_LONG b2v_inst110( + .enabledt(FB_VDOE[2]), + .data(SYNTHESIZED_WIRE_13), + .tridata(FB_AD) + );*/ +assign FB_AD = (FB_VDOE[2]) ? SYNTHESIZED_WIRE_13 : 32'hzzzzzzzz; + + +/*lpm_bustri_LONG b2v_inst119( + .enabledt(FB_VDOE[3]), + .data(SYNTHESIZED_WIRE_14), + .tridata(FB_AD) + );*/ +assign FB_AD = (FB_VDOE[3]) ? SYNTHESIZED_WIRE_14 : 32'hzzzzzzzz; + + +lpm_ff1 b2v_inst12( + .clock(DDRCLK[0]), + .data(VDP_IN[31:0]), + .q(VDVZ[31:0])); + + +lpm_ff0 b2v_inst13( + .clock(DDR_SYNC_66M), + .enable(FB_LE[0]), + .data(FB_AD), + .q(FB_DDR[127:96])); + + +lpm_ff0 b2v_inst14( + .clock(DDR_SYNC_66M), + .enable(FB_LE[1]), + .data(FB_AD), + .q(FB_DDR[95:64])); + + +lpm_ff0 b2v_inst15( + .clock(DDR_SYNC_66M), + .enable(FB_LE[2]), + .data(FB_AD), + .q(FB_DDR[63:32])); + + +lpm_ff0 b2v_inst16( + .clock(DDR_SYNC_66M), + .enable(FB_LE[3]), + .data(FB_AD), + .q(FB_DDR[31:0])); + + +lpm_ff0 b2v_inst17( + .clock(DDRCLK[0]), + .enable(DDR_FB[1]), + .data(VDP_IN[31:0]), + .q(SYNTHESIZED_WIRE_11)); + + +lpm_ff0 b2v_inst18( + .clock(DDRCLK[0]), + .enable(DDR_FB[0]), + .data(VDP_IN[63:32]), + .q(SYNTHESIZED_WIRE_13)); + + +lpm_ff0 b2v_inst19( + .clock(DDRCLK[0]), + .enable(DDR_FB[0]), + .data(VDP_IN[31:0]), + .q(SYNTHESIZED_WIRE_14)); + + +altddio_out0 b2v_inst2( + .outclock(DDRCLK[3]), + .datain_h(VDMP[7:4]), + .datain_l(VDMP[3:0]), + .dataout(VDM)); + + +lpm_ff1 b2v_inst20( + .clock(DDRCLK[0]), + .data(VDVZ[31:0]), + .q(VDVZ[95:64])); + + +lpm_mux0 b2v_inst21( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .data0x(FIFO_D[127:96]), + .data1x(FIFO_D[95:64]), + .data2x(FIFO_D[63:32]), + .data3x(FIFO_D[31:0]), + .sel(CLUT_MUX_ADR[1:0]), + .result(SYNTHESIZED_WIRE_48)); + + +lpm_mux5 b2v_inst22( + .data0x(FB_DDR[127:64]), + .data1x(FB_DDR[63:0]), + .data2x(BLITTER_DOUT[127:64]), + .data3x(BLITTER_DOUT[63:0]), + .sel({DDRWR_D_SEL1, DDRWR_D_SEL0}), + .result(VDP_OUT)); + + +lpm_constant2 b2v_inst23( + .result({CC16[18:16],CC16[9:8],CC16[2:0]})); + + +lpm_mux1 b2v_inst24( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .data0x(FIFO_D[127:112]), + .data1x(FIFO_D[111:96]), + .data2x(FIFO_D[95:80]), + .data3x(FIFO_D[79:64]), + .data4x(FIFO_D[63:48]), + .data5x(FIFO_D[47:32]), + .data6x(FIFO_D[31:16]), + .data7x(FIFO_D[15:0]), + .sel(CLUT_MUX_ADR[2:0]), + .result(SYNTHESIZED_WIRE_7)); + + +lpm_mux2 b2v_inst25( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .data0x(FIFO_D[127:120]), + .data10x(FIFO_D[47:40]), + .data11x(FIFO_D[39:32]), + .data12x(FIFO_D[31:24]), + .data13x(FIFO_D[23:16]), + .data14x(FIFO_D[15:8]), + .data15x(FIFO_D[7:0]), + .data1x(FIFO_D[119:112]), + .data2x(FIFO_D[111:104]), + .data3x(FIFO_D[103:96]), + .data4x(FIFO_D[95:88]), + .data5x(FIFO_D[87:80]), + .data6x(FIFO_D[79:72]), + .data7x(FIFO_D[71:64]), + .data8x(FIFO_D[63:56]), + .data9x(FIFO_D[55:48]), + .sel(CLUT_MUX_ADR), + .result(SYNTHESIZED_WIRE_12)); + + +lpm_shiftreg4 b2v_inst26( + .clock(DDRCLK[0]), + .shiftin(SR_FIFO_WRE), + .shiftout(FIFO_WRE)); + + +/*lpm_latch0 b2v_inst27( + .gate(DDR_SYNC_66M), + .data(SYNTHESIZED_WIRE_15), + .q(VDR));*/ +reg [31:0] VDR_q = 32'd0; +assign VDR = VDR_q; +always @(DDR_SYNC_66M or SYNTHESIZED_WIRE_15) begin + if (DDR_SYNC_66M) begin + VDR_q <= SYNTHESIZED_WIRE_15; + end else begin + VDR_q <= VDR_q; + end +end + + +assign CLUT_ADR[1] = CLUT_ADR1A & SYNTHESIZED_WIRE_16; + + +lpm_ff1 b2v_inst3( + .clock(DDRCLK[0]), + .data(VDP_IN[63:32]), + .q(VDVZ[63:32])); + +assign CLUT_ADR[3] = SYNTHESIZED_WIRE_61 & CLUT_ADR3A; + +assign CLUT_ADR[5] = CLUT_OFF[1] | SYNTHESIZED_WIRE_18; + +assign SYNTHESIZED_WIRE_8 = CLUT_ADR4A & COLOR8; + +assign SYNTHESIZED_WIRE_18 = CLUT_ADR5A & COLOR8; + +assign SYNTHESIZED_WIRE_9 = CLUT_ADR6A & COLOR8; + +assign SYNTHESIZED_WIRE_46 = CLUT_ADR7A & COLOR8; + + +lpm_ff6 b2v_inst36( + .clock(DDRCLK[0]), + .enable(BLITTER_DACK[0]), + .data(VDVZ), + .q(BLITTER_DIN)); + +assign VDOUT_OE = DDR_WR | SR_DDR_WR; + + +assign VIDEO_TA = BLITTER_TA | VIDEO_MOD_TA | VIDEO_DDR_TA; + + +lpm_ff1 b2v_inst4( + .clock(DDRCLK[0]), + .data(VDVZ[63:32]), + .q(VDVZ[127:96])); + + +mux41_0 b2v_inst40( + .S0(COLOR2), + + .S1(COLOR4), + + .D0(CLUT_ADR6A), + .INH(SYNTHESIZED_WIRE_19), + .D1(CLUT_ADR7A), + .Q(SYNTHESIZED_WIRE_54)); + + +mux41_1 b2v_inst41( + .S0(COLOR2), + + .S1(COLOR4), + + .D0(CLUT_ADR5A), + .INH(SYNTHESIZED_WIRE_20), + .D1(CLUT_ADR6A), + .Q(SYNTHESIZED_WIRE_53)); + + +mux41_2 b2v_inst42( + .S0(COLOR2), + .D2(CLUT_ADR7A), + .S1(COLOR4), + + .D0(CLUT_ADR4A), + .INH(SYNTHESIZED_WIRE_21), + .D1(CLUT_ADR5A), + .Q(SYNTHESIZED_WIRE_52)); + + +mux41_3 b2v_inst43( + .S0(COLOR2), + .D2(CLUT_ADR6A), + .S1(COLOR4), + + .D0(CLUT_ADR3A), + .INH(SYNTHESIZED_WIRE_22), + .D1(CLUT_ADR4A), + .Q(SYNTHESIZED_WIRE_51)); + + +mux41_4 b2v_inst44( + .S0(COLOR2), + .D2(CLUT_ADR5A), + .S1(COLOR4), + + .D0(CLUT_ADR2A), + .INH(SYNTHESIZED_WIRE_23), + .D1(CLUT_ADR3A), + .Q(SYNTHESIZED_WIRE_50)); + + +mux41_5 b2v_inst45( + .S0(COLOR2), + .D2(CLUT_ADR4A), + .S1(COLOR4), + + .D0(CLUT_ADR1A), + .INH(SYNTHESIZED_WIRE_24), + .D1(CLUT_ADR2A), + .Q(SYNTHESIZED_WIRE_49)); + + +lpm_ff3 b2v_inst46( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .data(SYNTHESIZED_WIRE_25), + .q(SYNTHESIZED_WIRE_43)); + + +lpm_ff3 b2v_inst47( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .data(CCF), + .q(SYNTHESIZED_WIRE_25)); + + + +lpm_ff3 b2v_inst49( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .data(SYNTHESIZED_WIRE_26), + .q(SYNTHESIZED_WIRE_42)); + + +altddio_out2 b2v_inst5( + .outclock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .datain_h(SYNTHESIZED_WIRE_62), + .datain_l(SYNTHESIZED_WIRE_62), + .dataout(SYNTHESIZED_WIRE_65)); + + + +/*lpm_bustri1 b2v_inst51( + .enabledt(ST_CLUT_RD), + .data(SYNTHESIZED_WIRE_29), + .tridata(FB_AD[26:24]) + );*/ +assign FB_AD[26:24] = (ST_CLUT_RD) ? SYNTHESIZED_WIRE_29 : 3'bzzz; + + +lpm_ff3 b2v_inst52( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .data(CCS), + .q(SYNTHESIZED_WIRE_26)); + + +/*lpm_bustri_BYT b2v_inst53( + .enabledt(ACP_CLUT_RD), + .data(SYNTHESIZED_WIRE_30), + .tridata(FB_AD[7:0]) + );*/ +assign FB_AD[7:0] = (ACP_CLUT_RD) ? SYNTHESIZED_WIRE_30 : 8'hzz; + + +lpm_constant0 b2v_inst54( + .result(CCS[20:16])); + + + +/*lpm_bustri1 b2v_inst56( + .enabledt(ST_CLUT_RD), + .data(SYNTHESIZED_WIRE_31), + .tridata(FB_AD[22:20]) + );*/ +assign FB_AD[22:20] = (ST_CLUT_RD) ? SYNTHESIZED_WIRE_31 : 3'bzzz; + + +/*lpm_bustri_BYT b2v_inst57( + .enabledt(ACP_CLUT_RD), + .data(SYNTHESIZED_WIRE_32), + .tridata(FB_AD[15:8]) + );*/ +assign FB_AD[15:8] = (ACP_CLUT_RD) ? SYNTHESIZED_WIRE_32 : 8'hzz; + +/*lpm_bustri_BYT b2v_inst58( + .enabledt(ACP_CLUT_RD), + .data(SYNTHESIZED_WIRE_33), + .tridata(FB_AD[23:16]) + );*/ +assign FB_AD[23:16] = (ACP_CLUT_RD) ? SYNTHESIZED_WIRE_33 : 8'hzz; + + +lpm_constant0 b2v_inst59( + .result(CCS[12:8])); + + + + +/*lpm_bustri1 b2v_inst61( + .enabledt(ST_CLUT_RD), + .data(SYNTHESIZED_WIRE_34), + .tridata(FB_AD[18:16]) + );*/ +assign FB_AD[18:16] = (ST_CLUT_RD) ? SYNTHESIZED_WIRE_34 : 3'bzzz; + + +lpm_muxDZ b2v_inst62( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .clken(FIFO_RDE), + .sel(INTER_ZEI), + .data0x(SYNTHESIZED_WIRE_63), + .data1x(SYNTHESIZED_WIRE_36), + .result(FIFO_D)); + + +lpm_fifoDZ b2v_inst63( + .wrreq(SYNTHESIZED_WIRE_60), + .rdreq(SYNTHESIZED_WIRE_38), + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .aclr(DOP_FIFO_CLR), + .data(SYNTHESIZED_WIRE_63), + .q(SYNTHESIZED_WIRE_36)); + + +lpm_constant0 b2v_inst64( + .result(CCS[4:0])); + +assign SYNTHESIZED_WIRE_60 = FIFO_RDE & SYNTHESIZED_WIRE_40; + + +/*lpm_bustri3 b2v_inst66( + .enabledt(FALCON_CLUT_RDH), + .data(SYNTHESIZED_WIRE_41), + .tridata(FB_AD[31:26]) + );*/ +assign FB_AD[31:26] = (FALCON_CLUT_RDH) ? SYNTHESIZED_WIRE_41 : 6'bzzzzzz; + +assign SYNTHESIZED_WIRE_38 = FIFO_RDE & INTER_ZEI; + + +assign SYNTHESIZED_WIRE_40 = ~INTER_ZEI; + + +lpm_mux6 b2v_inst7( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .data0x(SYNTHESIZED_WIRE_42), + .data1x(SYNTHESIZED_WIRE_43), + + + .data4x(CCA), + .data5x(CC16), + .data6x(CC24[23:0]), + .data7x(CCR), + .sel(CCSEL), + .result(SYNTHESIZED_WIRE_62)); + + +/*lpm_bustri3 b2v_inst70( + .enabledt(FALCON_CLUT_RDH), + .data(SYNTHESIZED_WIRE_44), + .tridata(FB_AD[23:18]) + );*/ +assign FB_AD[23:18] = (FALCON_CLUT_RDH) ? SYNTHESIZED_WIRE_44 : 6'bzzzzzz; + + +lpm_ff6 b2v_inst71( + .clock(DDRCLK[0]), + .enable(FIFO_WRE), + .data(VDVZ), + .q(VDMA)); + + + + +/*lpm_bustri3 b2v_inst74( + .enabledt(FALCON_CLUT_RDL), + .data(SYNTHESIZED_WIRE_45), + .tridata(FB_AD[23:18]) + );*/ +assign FB_AD[23:18] = (FALCON_CLUT_RDL) ? SYNTHESIZED_WIRE_45 : 6'bzzzzzz; + + + + +lpm_constant1 b2v_inst77( + .result(CCF[1:0])); + + +assign CLUT_ADR[7] = CLUT_OFF[3] | SYNTHESIZED_WIRE_46; + + + +lpm_constant1 b2v_inst80( + .result(CCF[9:8])); + + +lpm_mux4 b2v_inst81( + .sel(COLOR1), + .data0x(ZR_C8[7:1]), + .data1x(SYNTHESIZED_WIRE_47), + .result(ZR_C8B[7:1])); + + +lpm_constant3 b2v_inst82( + .result(SYNTHESIZED_WIRE_47)); + + +lpm_constant1 b2v_inst83( + .result(CCF[17:16])); + +assign VDQS[3] = DDR_WR ? DDRCLK[0] : 1'bz; + +assign VDQS[2] = DDR_WR ? DDRCLK[0] : 1'bz; + +assign VDQS[1] = DDR_WR ? DDRCLK[0] : 1'bz; + +assign VDQS[0] = DDR_WR ? DDRCLK[0] : 1'bz; + + +always@(posedge DDRCLK[3]) +begin + begin + DDRWR_D_SEL0 = SR_DDRWR_D_SEL; + end +end + + +lpm_shiftreg6 b2v_inst89( + .clock(DDRCLK[0]), + .shiftin(SR_BLITTER_DACK), + .q(BLITTER_DACK)); + + +lpm_ff1 b2v_inst9( + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .data(SYNTHESIZED_WIRE_48), + .q(CC24)); + + +always@(posedge DDRCLK[3]) +begin + begin + DDR_WR = SR_DDR_WR; + end +end + + +always@(posedge PIXEL_CLK_ALTERA_SYNTHESIZED) +begin + begin + DFF_inst91 = CLUT_ADR[0]; + end +end + + +lpm_shiftreg6 b2v_inst92( + .clock(DDRCLK[0]), + .shiftin(SR_DDR_FB), + .q(DDR_FB)); + + +always@(posedge PIXEL_CLK_ALTERA_SYNTHESIZED) +begin + begin + DFF_inst93 = DFF_inst91; + end +end + + +lpm_ff6 b2v_inst94( + .clock(DDRCLK[0]), + .enable(FIFO_WRE), + .data(VDMA), + .q(VDMB)); + + +always@(posedge PIXEL_CLK_ALTERA_SYNTHESIZED) +begin + begin + SYNTHESIZED_WIRE_64 = FIFO_RDE; + end +end + + + +lpm_ff5 b2v_inst97( + .clock(DDRCLK[2]), + .data(SR_VDMP), + .q(VDMP)); + + +lpm_shiftreg0 b2v_sr0( + .load(SYNTHESIZED_WIRE_64), + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .shiftin(SYNTHESIZED_WIRE_49), + .data(FIFO_D[127:112]), + .shiftout(CLUT_ADR[0])); + + +lpm_shiftreg0 b2v_sr1( + .load(SYNTHESIZED_WIRE_64), + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .shiftin(SYNTHESIZED_WIRE_50), + .data(FIFO_D[111:96]), + .shiftout(CLUT_ADR1A)); + + +lpm_shiftreg0 b2v_sr2( + .load(SYNTHESIZED_WIRE_64), + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .shiftin(SYNTHESIZED_WIRE_51), + .data(FIFO_D[95:80]), + .shiftout(CLUT_ADR2A)); + + +lpm_shiftreg0 b2v_sr3( + .load(SYNTHESIZED_WIRE_64), + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .shiftin(SYNTHESIZED_WIRE_52), + .data(FIFO_D[79:64]), + .shiftout(CLUT_ADR3A)); + + +lpm_shiftreg0 b2v_sr4( + .load(SYNTHESIZED_WIRE_64), + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .shiftin(SYNTHESIZED_WIRE_53), + .data(FIFO_D[63:48]), + .shiftout(CLUT_ADR4A)); + + +lpm_shiftreg0 b2v_sr5( + .load(SYNTHESIZED_WIRE_64), + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .shiftin(SYNTHESIZED_WIRE_54), + .data(FIFO_D[47:32]), + .shiftout(CLUT_ADR5A)); + + +lpm_shiftreg0 b2v_sr6( + .load(SYNTHESIZED_WIRE_64), + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .shiftin(CLUT_ADR7A), + .data(FIFO_D[31:16]), + .shiftout(CLUT_ADR6A)); + + +lpm_shiftreg0 b2v_sr7( + .load(SYNTHESIZED_WIRE_64), + .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), + .shiftin(CLUT_ADR[0]), + .data(FIFO_D[15:0]), + .shiftout(CLUT_ADR7A)); + + +altdpram0 b2v_ST_CLUT_BLUE( + .wren_a(ST_CLUT_WR[1]), + .wren_b(SYNTHESIZED_WIRE_55), + .clock_a(MAIN_CLK), + .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), + .address_a(FB_ADR[4:1]), + .address_b(CLUT_ADR[3:0]), + .data_a(FB_AD[18:16]), + + .q_a(SYNTHESIZED_WIRE_34), + .q_b(CCS[7:5])); + + +altdpram0 b2v_ST_CLUT_GREEN( + .wren_a(ST_CLUT_WR[1]), + .wren_b(SYNTHESIZED_WIRE_56), + .clock_a(MAIN_CLK), + .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), + .address_a(FB_ADR[4:1]), + .address_b(CLUT_ADR[3:0]), + .data_a(FB_AD[22:20]), + + .q_a(SYNTHESIZED_WIRE_31), + .q_b(CCS[15:13])); + + +altdpram0 b2v_ST_CLUT_RED( + .wren_a(ST_CLUT_WR[0]), + .wren_b(SYNTHESIZED_WIRE_57), + .clock_a(MAIN_CLK), + .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), + .address_a(FB_ADR[4:1]), + .address_b(CLUT_ADR[3:0]), + .data_a(FB_AD[26:24]), + + .q_a(SYNTHESIZED_WIRE_29), + .q_b(CCS[23:21])); + + +VIDEO_MOD_MUX_CLUTCTR b2v_VIDEO_MOD_MUX_CLUTCTR( + .nRSTO(nRSTO), + .MAIN_CLK(MAIN_CLK), + .nFB_CS1(nFB_CS1), + .nFB_CS2(nFB_CS2), + .nFB_CS3(nFB_CS3), + .nFB_WR(nFB_WR), + .nFB_OE(nFB_OE), + .FB_SIZE0(FB_SIZE0), + .FB_SIZE1(FB_SIZE1), + .nFB_BURST(nFB_BURST), + .CLK33M(CLK33M), + .CLK25M(CLK25M), + .BLITTER_RUN(BLITTER_RUN), + .CLK_VIDEO(CLK_VIDEO), + .VR_BUSY(VR_BUSY), + .FB_AD(FB_AD), + .FB_ADR(FB_ADR), + .VR_D(VR_D), + .COLOR8(COLOR8), + .ACP_CLUT_RD(ACP_CLUT_RD), + .COLOR1(COLOR1), + .FALCON_CLUT_RDH(FALCON_CLUT_RDH), + .FALCON_CLUT_RDL(FALCON_CLUT_RDL), + .ST_CLUT_RD(ST_CLUT_RD), + .HSYNC(HSYNC), + .VSYNC(VSYNC), + .nBLANK(nBLANK), + .nSYNC(nSYNC), + .nPD_VGA(nPD_VGA), + .FIFO_RDE(FIFO_RDE), + .COLOR2(COLOR2), + .COLOR4(COLOR4), + .PIXEL_CLK(PIXEL_CLK_ALTERA_SYNTHESIZED), + .BLITTER_ON(BLITTER_ON), + .VIDEO_MOD_TA(VIDEO_MOD_TA), + .INTER_ZEI(INTER_ZEI), + .DOP_FIFO_CLR(DOP_FIFO_CLR), + .VIDEO_RECONFIG(VIDEO_RECONFIG), + .VR_WR(VR_WR), + .VR_RD(VR_RD), + .CLR_FIFO(CLR_FIFO), + .ACP_CLUT_WR(ACP_CLUT_WR), + .CCR(CCR), + .CCSEL(CCSEL), + .CLUT_MUX_ADR(CLUT_MUX_ADR), + .CLUT_OFF(CLUT_OFF), + .FALCON_CLUT_WR(FALCON_CLUT_WR), + + .ST_CLUT_WR(ST_CLUT_WR), + .VIDEO_RAM_CTR(VIDEO_RAM_CTR)); + +assign PIXEL_CLK = PIXEL_CLK_ALTERA_SYNTHESIZED; + +endmodule + +module mux41_0(S0,S1,D0,INH,D1,Q); +/* synthesis black_box */ + +input S0; +input S1; +input D0; +input INH; +input D1; +output Q; + +endmodule + +module mux41_1(S0,S1,D0,INH,D1,Q); +/* synthesis black_box */ + +input S0; +input S1; +input D0; +input INH; +input D1; +output Q; + +endmodule + +module mux41_2(S0,D2,S1,D0,INH,D1,Q); +/* synthesis black_box */ + +input S0; +input D2; +input S1; +input D0; +input INH; +input D1; +output Q; + +endmodule + +module mux41_3(S0,D2,S1,D0,INH,D1,Q); +/* synthesis black_box */ + +input S0; +input D2; +input S1; +input D0; +input INH; +input D1; +output Q; + +endmodule + +module mux41_4(S0,D2,S1,D0,INH,D1,Q); +/* synthesis black_box */ + +input S0; +input D2; +input S1; +input D0; +input INH; +input D1; +output Q; + +endmodule + +module mux41_5(S0,D2,S1,D0,INH,D1,Q); +/* synthesis black_box */ + +input S0; +input D2; +input S1; +input D0; +input INH; +input D1; +output Q; + +endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/video.vhd b/FPGA_by_Gregory_Estrade/Video/video.vhd new file mode 100644 index 0000000..7faebdc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/Video/video.vhd @@ -0,0 +1,1755 @@ +-- Copyright (C) 1991-2009 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + +-- PROGRAM "Quartus II 64-Bit" +-- VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" +-- CREATED "Sat Mar 01 09:19:30 2014" + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY work; + +ENTITY video IS + PORT + ( + MAIN_CLK : IN STD_LOGIC; + nFB_CS1 : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + nFB_CS3 : IN STD_LOGIC; + nFB_WR : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + nRSTO : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + FB_ALE : IN STD_LOGIC; + DDR_SYNC_66M : IN STD_LOGIC; + CLK33M : IN STD_LOGIC; + CLK25M : IN STD_LOGIC; + CLK_VIDEO : IN STD_LOGIC; + VR_BUSY : IN STD_LOGIC; + DDRCLK : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); + FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + VD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); + VDQS : INOUT STD_LOGIC_VECTOR(3 DOWNTO 0); + VR_D : IN STD_LOGIC_VECTOR(8 DOWNTO 0); + nBLANK : OUT STD_LOGIC; + nVWE : OUT STD_LOGIC; + nVCAS : OUT STD_LOGIC; + nVRAS : OUT STD_LOGIC; + nVCS : OUT STD_LOGIC; + nPD_VGA : OUT STD_LOGIC; + VCKE : OUT STD_LOGIC; + VSYNC : OUT STD_LOGIC; + HSYNC : OUT STD_LOGIC; + nSYNC : OUT STD_LOGIC; + VIDEO_TA : OUT STD_LOGIC; + PIXEL_CLK : OUT STD_LOGIC; + VIDEO_RECONFIG : OUT STD_LOGIC; + VR_WR : OUT STD_LOGIC; + VR_RD : OUT STD_LOGIC; + BA : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); + VA : OUT STD_LOGIC_VECTOR(12 DOWNTO 0); + VB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); + VDM : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); + VG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); + VR : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) + ); +END video; + +ARCHITECTURE bdf_type OF video IS + +ATTRIBUTE black_box : BOOLEAN; +ATTRIBUTE noopt : BOOLEAN; + +COMPONENT mux41_0 + PORT(S0 : IN STD_LOGIC; + S1 : IN STD_LOGIC; + D0 : IN STD_LOGIC; + INH : IN STD_LOGIC; + D1 : IN STD_LOGIC; + Q : OUT STD_LOGIC); +END COMPONENT; +ATTRIBUTE black_box OF mux41_0: COMPONENT IS true; +ATTRIBUTE noopt OF mux41_0: COMPONENT IS true; + +COMPONENT mux41_1 + PORT(S0 : IN STD_LOGIC; + S1 : IN STD_LOGIC; + D0 : IN STD_LOGIC; + INH : IN STD_LOGIC; + D1 : IN STD_LOGIC; + Q : OUT STD_LOGIC); +END COMPONENT; +ATTRIBUTE black_box OF mux41_1: COMPONENT IS true; +ATTRIBUTE noopt OF mux41_1: COMPONENT IS true; + +COMPONENT mux41_2 + PORT(S0 : IN STD_LOGIC; + D2 : IN STD_LOGIC; + S1 : IN STD_LOGIC; + D0 : IN STD_LOGIC; + INH : IN STD_LOGIC; + D1 : IN STD_LOGIC; + Q : OUT STD_LOGIC); +END COMPONENT; +ATTRIBUTE black_box OF mux41_2: COMPONENT IS true; +ATTRIBUTE noopt OF mux41_2: COMPONENT IS true; + +COMPONENT mux41_3 + PORT(S0 : IN STD_LOGIC; + D2 : IN STD_LOGIC; + S1 : IN STD_LOGIC; + D0 : IN STD_LOGIC; + INH : IN STD_LOGIC; + D1 : IN STD_LOGIC; + Q : OUT STD_LOGIC); +END COMPONENT; +ATTRIBUTE black_box OF mux41_3: COMPONENT IS true; +ATTRIBUTE noopt OF mux41_3: COMPONENT IS true; + +COMPONENT mux41_4 + PORT(S0 : IN STD_LOGIC; + D2 : IN STD_LOGIC; + S1 : IN STD_LOGIC; + D0 : IN STD_LOGIC; + INH : IN STD_LOGIC; + D1 : IN STD_LOGIC; + Q : OUT STD_LOGIC); +END COMPONENT; +ATTRIBUTE black_box OF mux41_4: COMPONENT IS true; +ATTRIBUTE noopt OF mux41_4: COMPONENT IS true; + +COMPONENT mux41_5 + PORT(S0 : IN STD_LOGIC; + D2 : IN STD_LOGIC; + S1 : IN STD_LOGIC; + D0 : IN STD_LOGIC; + INH : IN STD_LOGIC; + D1 : IN STD_LOGIC; + Q : OUT STD_LOGIC); +END COMPONENT; +ATTRIBUTE black_box OF mux41_5: COMPONENT IS true; +ATTRIBUTE noopt OF mux41_5: COMPONENT IS true; + +COMPONENT altdpram2 + PORT(wren_a : IN STD_LOGIC; + wren_b : IN STD_LOGIC; + clock_a : IN STD_LOGIC; + clock_b : IN STD_LOGIC; + address_a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT blitter + PORT(nRSTO : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + FB_ALE : IN STD_LOGIC; + nFB_WR : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + BLITTER_ON : IN STD_LOGIC; + nFB_CS1 : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + nFB_CS3 : IN STD_LOGIC; + DDRCLK0 : IN STD_LOGIC; + BLITTER_DACK : IN STD_LOGIC_VECTOR(4 DOWNTO 0); + BLITTER_DIN : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); + FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + VIDEO_RAM_CTR : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + BLITTER_RUN : OUT STD_LOGIC; + BLITTER_SIG : OUT STD_LOGIC; + BLITTER_WR : OUT STD_LOGIC; + BLITTER_TA : OUT STD_LOGIC; + BLITTER_ADR : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); + BLITTER_DOUT : OUT STD_LOGIC_VECTOR(127 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT ddr_ctr + PORT(nFB_CS1 : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + nFB_CS3 : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + nRSTO : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + FB_ALE : IN STD_LOGIC; + nFB_WR : IN STD_LOGIC; + DDR_SYNC_66M : IN STD_LOGIC; + BLITTER_SIG : IN STD_LOGIC; + BLITTER_WR : IN STD_LOGIC; + DDRCLK0 : IN STD_LOGIC; + CLK33M : IN STD_LOGIC; + CLR_FIFO : IN STD_LOGIC; + BLITTER_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); + FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + FIFO_MW : IN STD_LOGIC_VECTOR(8 DOWNTO 0); + VIDEO_RAM_CTR : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + nVWE : OUT STD_LOGIC; + nVRAS : OUT STD_LOGIC; + nVCS : OUT STD_LOGIC; + VCKE : OUT STD_LOGIC; + nVCAS : OUT STD_LOGIC; + SR_FIFO_WRE : OUT STD_LOGIC; + SR_DDR_FB : OUT STD_LOGIC; + SR_DDR_WR : OUT STD_LOGIC; + SR_DDRWR_D_SEL : OUT STD_LOGIC; + VIDEO_DDR_TA : OUT STD_LOGIC; + SR_BLITTER_DACK : OUT STD_LOGIC; + DDRWR_D_SEL1 : OUT STD_LOGIC; + BA : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); + FB_LE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); + FB_VDOE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); + SR_VDMP : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); + VA : OUT STD_LOGIC_VECTOR(12 DOWNTO 0); + VDM_SEL : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT altdpram1 + PORT(wren_a : IN STD_LOGIC; + wren_b : IN STD_LOGIC; + clock_a : IN STD_LOGIC; + clock_b : IN STD_LOGIC; + address_a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR(5 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR(5 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR(5 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR(5 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_fifo_dc0 + PORT(wrreq : IN STD_LOGIC; + wrclk : IN STD_LOGIC; + rdreq : IN STD_LOGIC; + rdclk : IN STD_LOGIC; + aclr : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + rdempty : OUT STD_LOGIC; + q : OUT STD_LOGIC_VECTOR(127 DOWNTO 0); + wrusedw : OUT STD_LOGIC_VECTOR(8 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT altddio_bidir0 + PORT(oe : IN STD_LOGIC; + inclock : IN STD_LOGIC; + outclock : IN STD_LOGIC; + datain_h : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + padio : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); + combout : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); + dataout_h : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); + dataout_l : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_ff4 + PORT(clock : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_muxvdm + PORT(data0x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data10x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data11x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data12x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data13x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data14x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data15x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data8x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data9x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR(127 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_mux3 + PORT(data1 : IN STD_LOGIC; + data0 : IN STD_LOGIC; + sel : IN STD_LOGIC; + result : OUT STD_LOGIC + ); +END COMPONENT; + +COMPONENT lpm_bustri_long + PORT(enabledt : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_ff5 + PORT(clock : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_ff1 + PORT(clock : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_ff0 + PORT(clock : IN STD_LOGIC; + enable : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT altddio_out0 + PORT(outclock : IN STD_LOGIC; + datain_h : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + dataout : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_mux0 + PORT(clock : IN STD_LOGIC; + data0x : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_mux5 + PORT(data0x : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR(63 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_constant2 + PORT( result : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_mux1 + PORT(clock : IN STD_LOGIC; + data0x : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR(2 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_mux2 + PORT(clock : IN STD_LOGIC; + data0x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data10x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data11x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data12x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data13x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data14x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data15x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data8x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + data9x : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_shiftreg4 + PORT(clock : IN STD_LOGIC; + shiftin : IN STD_LOGIC; + shiftout : OUT STD_LOGIC + ); +END COMPONENT; + +COMPONENT lpm_latch0 + PORT(gate : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_ff6 + PORT(clock : IN STD_LOGIC; + enable : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR(127 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_ff3 + PORT(clock : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(23 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR(23 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT altddio_out2 + PORT(outclock : IN STD_LOGIC; + datain_h : IN STD_LOGIC_VECTOR(23 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR(23 DOWNTO 0); + dataout : OUT STD_LOGIC_VECTOR(23 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_bustri1 + PORT(enabledt : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(2 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR(2 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_bustri_byt + PORT(enabledt : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_constant0 + PORT( result : OUT STD_LOGIC_VECTOR(4 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_muxdz + PORT(clock : IN STD_LOGIC; + clken : IN STD_LOGIC; + sel : IN STD_LOGIC; + data0x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR(127 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_fifodz + PORT(wrreq : IN STD_LOGIC; + rdreq : IN STD_LOGIC; + clock : IN STD_LOGIC; + aclr : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(127 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR(127 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_bustri3 + PORT(enabledt : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(5 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR(5 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_mux6 + PORT(clock : IN STD_LOGIC; + data0x : IN STD_LOGIC_VECTOR(23 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR(23 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR(23 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR(23 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR(23 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR(23 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR(23 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR(23 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR(2 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR(23 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_constant1 + PORT( result : OUT STD_LOGIC_VECTOR(1 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_mux4 + PORT(sel : IN STD_LOGIC; + data0x : IN STD_LOGIC_VECTOR(6 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR(6 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_constant3 + PORT( result : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_shiftreg6 + PORT(clock : IN STD_LOGIC; + shiftin : IN STD_LOGIC; + q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT lpm_shiftreg0 + PORT(load : IN STD_LOGIC; + clock : IN STD_LOGIC; + shiftin : IN STD_LOGIC; + data : IN STD_LOGIC_VECTOR(15 DOWNTO 0); + shiftout : OUT STD_LOGIC + ); +END COMPONENT; + +COMPONENT altdpram0 + PORT(wren_a : IN STD_LOGIC; + wren_b : IN STD_LOGIC; + clock_a : IN STD_LOGIC; + clock_b : IN STD_LOGIC; + address_a : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR(2 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR(2 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) + ); +END COMPONENT; + +COMPONENT video_mod_mux_clutctr + PORT(nRSTO : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + nFB_CS1 : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + nFB_CS3 : IN STD_LOGIC; + nFB_WR : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + nFB_BURST : IN STD_LOGIC; + CLK33M : IN STD_LOGIC; + CLK25M : IN STD_LOGIC; + BLITTER_RUN : IN STD_LOGIC; + CLK_VIDEO : IN STD_LOGIC; + VR_BUSY : IN STD_LOGIC; + FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); + FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + VR_D : IN STD_LOGIC_VECTOR(8 DOWNTO 0); + COLOR8 : OUT STD_LOGIC; + ACP_CLUT_RD : OUT STD_LOGIC; + COLOR1 : OUT STD_LOGIC; + FALCON_CLUT_RDH : OUT STD_LOGIC; + FALCON_CLUT_RDL : OUT STD_LOGIC; + ST_CLUT_RD : OUT STD_LOGIC; + HSYNC : OUT STD_LOGIC; + VSYNC : OUT STD_LOGIC; + nBLANK : OUT STD_LOGIC; + nSYNC : OUT STD_LOGIC; + nPD_VGA : OUT STD_LOGIC; + FIFO_RDE : OUT STD_LOGIC; + COLOR2 : OUT STD_LOGIC; + COLOR4 : OUT STD_LOGIC; + PIXEL_CLK : OUT STD_LOGIC; + BLITTER_ON : OUT STD_LOGIC; + VIDEO_MOD_TA : OUT STD_LOGIC; + INTER_ZEI : OUT STD_LOGIC; + DOP_FIFO_CLR : OUT STD_LOGIC; + VIDEO_RECONFIG : OUT STD_LOGIC; + VR_WR : OUT STD_LOGIC; + VR_RD : OUT STD_LOGIC; + CLR_FIFO : OUT STD_LOGIC; + ACP_CLUT_WR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); + CCR : OUT STD_LOGIC_VECTOR(23 DOWNTO 0); + CCSEL : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); + CLUT_MUX_ADR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); + CLUT_OFF : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); + FALCON_CLUT_WR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); + ST_CLUT_WR : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); + VIDEO_RAM_CTR : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) + ); +END COMPONENT; + +SIGNAL ACP_CLUT_RD : STD_LOGIC; +SIGNAL ACP_CLUT_WR : STD_LOGIC_VECTOR(3 DOWNTO 0); +SIGNAL BLITTER_ADR : STD_LOGIC_VECTOR(31 DOWNTO 0); +SIGNAL BLITTER_DACK : STD_LOGIC_VECTOR(4 DOWNTO 0); +SIGNAL BLITTER_DIN : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL BLITTER_DOUT : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL BLITTER_ON : STD_LOGIC; +SIGNAL BLITTER_RUN : STD_LOGIC; +SIGNAL BLITTER_SIG : STD_LOGIC; +SIGNAL BLITTER_TA : STD_LOGIC; +SIGNAL BLITTER_WR : STD_LOGIC; +SIGNAL CC16 : STD_LOGIC_VECTOR(23 DOWNTO 0); +SIGNAL CC24 : STD_LOGIC_VECTOR(31 DOWNTO 0); +SIGNAL CCA : STD_LOGIC_VECTOR(23 DOWNTO 0); +SIGNAL CCF : STD_LOGIC_VECTOR(23 DOWNTO 0); +SIGNAL CCR : STD_LOGIC_VECTOR(23 DOWNTO 0); +SIGNAL CCS : STD_LOGIC_VECTOR(23 DOWNTO 0); +SIGNAL CCSEL : STD_LOGIC_VECTOR(2 DOWNTO 0); +SIGNAL CLR_FIFO : STD_LOGIC; +SIGNAL CLUT_ADR : STD_LOGIC_VECTOR(7 DOWNTO 0); +SIGNAL CLUT_ADR1A : STD_LOGIC; +SIGNAL CLUT_ADR2A : STD_LOGIC; +SIGNAL CLUT_ADR3A : STD_LOGIC; +SIGNAL CLUT_ADR4A : STD_LOGIC; +SIGNAL CLUT_ADR5A : STD_LOGIC; +SIGNAL CLUT_ADR6A : STD_LOGIC; +SIGNAL CLUT_ADR7A : STD_LOGIC; +SIGNAL CLUT_MUX_ADR : STD_LOGIC_VECTOR(3 DOWNTO 0); +SIGNAL CLUT_OFF : STD_LOGIC_VECTOR(3 DOWNTO 0); +SIGNAL COLOR1 : STD_LOGIC; +SIGNAL COLOR2 : STD_LOGIC; +SIGNAL COLOR4 : STD_LOGIC; +SIGNAL COLOR8 : STD_LOGIC; +SIGNAL DDR_FB : STD_LOGIC_VECTOR(4 DOWNTO 0); +SIGNAL DDR_WR : STD_LOGIC; +SIGNAL DDRWR_D_SEL : STD_LOGIC_VECTOR(1 DOWNTO 0); +SIGNAL DOP_FIFO_CLR : STD_LOGIC; +SIGNAL FALCON_CLUT_RDH : STD_LOGIC; +SIGNAL FALCON_CLUT_RDL : STD_LOGIC; +SIGNAL FALCON_CLUT_WR : STD_LOGIC_VECTOR(3 DOWNTO 0); +SIGNAL FB_DDR : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL FB_LE : STD_LOGIC_VECTOR(3 DOWNTO 0); +SIGNAL FB_VDOE : STD_LOGIC_VECTOR(3 DOWNTO 0); +SIGNAL FIFO_D : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL FIFO_MW : STD_LOGIC_VECTOR(8 DOWNTO 0); +SIGNAL FIFO_RDE : STD_LOGIC; +SIGNAL FIFO_WRE : STD_LOGIC; +SIGNAL INTER_ZEI : STD_LOGIC; +SIGNAL nFB_BURST : STD_LOGIC; +SIGNAL PIXEL_CLK_ALTERA_SYNTHESIZED : STD_LOGIC; +SIGNAL SR_BLITTER_DACK : STD_LOGIC; +SIGNAL SR_DDR_FB : STD_LOGIC; +SIGNAL SR_DDR_WR : STD_LOGIC; +SIGNAL SR_DDRWR_D_SEL : STD_LOGIC; +SIGNAL SR_FIFO_WRE : STD_LOGIC; +SIGNAL SR_VDMP : STD_LOGIC_VECTOR(7 DOWNTO 0); +SIGNAL ST_CLUT_RD : STD_LOGIC; +SIGNAL ST_CLUT_WR : STD_LOGIC_VECTOR(1 DOWNTO 0); +SIGNAL VDM_SEL : STD_LOGIC_VECTOR(3 DOWNTO 0); +SIGNAL VDMA : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL VDMB : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL VDMC : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL VDMP : STD_LOGIC_VECTOR(7 DOWNTO 0); +SIGNAL VDOUT_OE : STD_LOGIC; +SIGNAL VDP_IN : STD_LOGIC_VECTOR(63 DOWNTO 0); +SIGNAL VDP_OUT : STD_LOGIC_VECTOR(63 DOWNTO 0); +SIGNAL VDR : STD_LOGIC_VECTOR(31 DOWNTO 0); +SIGNAL VDVZ : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL VIDEO_DDR_TA : STD_LOGIC; +SIGNAL VIDEO_MOD_TA : STD_LOGIC; +SIGNAL VIDEO_RAM_CTR : STD_LOGIC_VECTOR(15 DOWNTO 0); +SIGNAL ZR_C8 : STD_LOGIC_VECTOR(7 DOWNTO 0); +SIGNAL ZR_C8B : STD_LOGIC_VECTOR(7 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_0 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_1 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_2 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_3 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_4 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_5 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_60 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_7 : STD_LOGIC_VECTOR(15 DOWNTO 0); +SIGNAL DFF_inst93 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_8 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_9 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_61 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_11 : STD_LOGIC_VECTOR(31 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_12 : STD_LOGIC_VECTOR(7 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_13 : STD_LOGIC_VECTOR(31 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_14 : STD_LOGIC_VECTOR(31 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_15 : STD_LOGIC_VECTOR(31 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_16 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_18 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_19 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_20 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_21 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_22 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_23 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_24 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_25 : STD_LOGIC_VECTOR(23 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_26 : STD_LOGIC_VECTOR(23 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_62 : STD_LOGIC_VECTOR(23 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_29 : STD_LOGIC_VECTOR(2 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_30 : STD_LOGIC_VECTOR(7 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_31 : STD_LOGIC_VECTOR(2 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_32 : STD_LOGIC_VECTOR(7 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_33 : STD_LOGIC_VECTOR(7 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_34 : STD_LOGIC_VECTOR(2 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_63 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_36 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_38 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_40 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_41 : STD_LOGIC_VECTOR(5 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_42 : STD_LOGIC_VECTOR(23 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_43 : STD_LOGIC_VECTOR(23 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_44 : STD_LOGIC_VECTOR(5 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_45 : STD_LOGIC_VECTOR(5 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_46 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_47 : STD_LOGIC_VECTOR(6 DOWNTO 0); +SIGNAL SYNTHESIZED_WIRE_48 : STD_LOGIC_VECTOR(31 DOWNTO 0); +SIGNAL DFF_inst91 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_64 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_49 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_50 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_51 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_52 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_53 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_54 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_55 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_56 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_57 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_65 : STD_LOGIC_VECTOR(23 DOWNTO 0); + +SIGNAL GDFX_TEMP_SIGNAL_7 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_8 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_9 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_10 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_11 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_12 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_13 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_14 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_15 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_1 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_2 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_3 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_4 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_5 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_6 : STD_LOGIC_VECTOR(127 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_0 : STD_LOGIC_VECTOR(15 DOWNTO 0); +SIGNAL GDFX_TEMP_SIGNAL_16 : STD_LOGIC_VECTOR(7 DOWNTO 0); + +BEGIN +VB(7 DOWNTO 0) <= SYNTHESIZED_WIRE_65(7 DOWNTO 0); +VG(7 DOWNTO 0) <= SYNTHESIZED_WIRE_65(15 DOWNTO 8); +VR(7 DOWNTO 0) <= SYNTHESIZED_WIRE_65(23 DOWNTO 16); +SYNTHESIZED_WIRE_0 <= '0'; +SYNTHESIZED_WIRE_1 <= '0'; +SYNTHESIZED_WIRE_2 <= '0'; +SYNTHESIZED_WIRE_3 <= '0'; +SYNTHESIZED_WIRE_4 <= '0'; +SYNTHESIZED_WIRE_5 <= '0'; +SYNTHESIZED_WIRE_19 <= '0'; +SYNTHESIZED_WIRE_20 <= '0'; +SYNTHESIZED_WIRE_21 <= '0'; +SYNTHESIZED_WIRE_22 <= '0'; +SYNTHESIZED_WIRE_23 <= '0'; +SYNTHESIZED_WIRE_24 <= '0'; +SYNTHESIZED_WIRE_55 <= '0'; +SYNTHESIZED_WIRE_56 <= '0'; +SYNTHESIZED_WIRE_57 <= '0'; + +GDFX_TEMP_SIGNAL_7 <= (VDMB(119 DOWNTO 0) & VDMA(127 DOWNTO 120)); +GDFX_TEMP_SIGNAL_8 <= (VDMB(111 DOWNTO 0) & VDMA(127 DOWNTO 112)); +GDFX_TEMP_SIGNAL_9 <= (VDMB(103 DOWNTO 0) & VDMA(127 DOWNTO 104)); +GDFX_TEMP_SIGNAL_10 <= (VDMB(95 DOWNTO 0) & VDMA(127 DOWNTO 96)); +GDFX_TEMP_SIGNAL_11 <= (VDMB(87 DOWNTO 0) & VDMA(127 DOWNTO 88)); +GDFX_TEMP_SIGNAL_12 <= (VDMB(79 DOWNTO 0) & VDMA(127 DOWNTO 80)); +GDFX_TEMP_SIGNAL_13 <= (VDMB(71 DOWNTO 0) & VDMA(127 DOWNTO 72)); +GDFX_TEMP_SIGNAL_14 <= (VDMB(63 DOWNTO 0) & VDMA(127 DOWNTO 64)); +GDFX_TEMP_SIGNAL_15 <= (VDMB(55 DOWNTO 0) & VDMA(127 DOWNTO 56)); +GDFX_TEMP_SIGNAL_1 <= (VDMB(47 DOWNTO 0) & VDMA(127 DOWNTO 48)); +GDFX_TEMP_SIGNAL_2 <= (VDMB(39 DOWNTO 0) & VDMA(127 DOWNTO 40)); +GDFX_TEMP_SIGNAL_3 <= (VDMB(31 DOWNTO 0) & VDMA(127 DOWNTO 32)); +GDFX_TEMP_SIGNAL_4 <= (VDMB(23 DOWNTO 0) & VDMA(127 DOWNTO 24)); +GDFX_TEMP_SIGNAL_5 <= (VDMB(15 DOWNTO 0) & VDMA(127 DOWNTO 16)); +GDFX_TEMP_SIGNAL_6 <= (VDMB(7 DOWNTO 0) & VDMA(127 DOWNTO 8)); +CC16(23) <= GDFX_TEMP_SIGNAL_0(15); +CC16(22) <= GDFX_TEMP_SIGNAL_0(14); +CC16(21) <= GDFX_TEMP_SIGNAL_0(13); +CC16(20) <= GDFX_TEMP_SIGNAL_0(12); +CC16(19) <= GDFX_TEMP_SIGNAL_0(11); +CC16(15) <= GDFX_TEMP_SIGNAL_0(10); +CC16(14) <= GDFX_TEMP_SIGNAL_0(9); +CC16(13) <= GDFX_TEMP_SIGNAL_0(8); +CC16(12) <= GDFX_TEMP_SIGNAL_0(7); +CC16(11) <= GDFX_TEMP_SIGNAL_0(6); +CC16(10) <= GDFX_TEMP_SIGNAL_0(5); +CC16(7) <= GDFX_TEMP_SIGNAL_0(4); +CC16(6) <= GDFX_TEMP_SIGNAL_0(3); +CC16(5) <= GDFX_TEMP_SIGNAL_0(2); +CC16(4) <= GDFX_TEMP_SIGNAL_0(1); +CC16(3) <= GDFX_TEMP_SIGNAL_0(0); + +CC16(18) <= GDFX_TEMP_SIGNAL_16(7); +CC16(17) <= GDFX_TEMP_SIGNAL_16(6); +CC16(16) <= GDFX_TEMP_SIGNAL_16(5); +CC16(9) <= GDFX_TEMP_SIGNAL_16(4); +CC16(8) <= GDFX_TEMP_SIGNAL_16(3); +CC16(2) <= GDFX_TEMP_SIGNAL_16(2); +CC16(1) <= GDFX_TEMP_SIGNAL_16(1); +CC16(0) <= GDFX_TEMP_SIGNAL_16(0); + + + +b2v_ACP_CLUT_RAM : altdpram2 +PORT MAP(wren_a => ACP_CLUT_WR(3), + wren_b => SYNTHESIZED_WIRE_0, + clock_a => MAIN_CLK, + clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, + address_a => FB_ADR(9 DOWNTO 2), + address_b => ZR_C8B, + data_a => FB_AD(7 DOWNTO 0), + q_a => SYNTHESIZED_WIRE_30, + q_b => CCA(7 DOWNTO 0)); + + +b2v_ACP_CLUT_RAM54 : altdpram2 +PORT MAP(wren_a => ACP_CLUT_WR(2), + wren_b => SYNTHESIZED_WIRE_1, + clock_a => MAIN_CLK, + clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, + address_a => FB_ADR(9 DOWNTO 2), + address_b => ZR_C8B, + data_a => FB_AD(15 DOWNTO 8), + q_a => SYNTHESIZED_WIRE_32, + q_b => CCA(15 DOWNTO 8)); + + +b2v_ACP_CLUT_RAM55 : altdpram2 +PORT MAP(wren_a => ACP_CLUT_WR(1), + wren_b => SYNTHESIZED_WIRE_2, + clock_a => MAIN_CLK, + clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, + address_a => FB_ADR(9 DOWNTO 2), + address_b => ZR_C8B, + data_a => FB_AD(23 DOWNTO 16), + q_a => SYNTHESIZED_WIRE_33, + q_b => CCA(23 DOWNTO 16)); + + +b2v_BLITTER : blitter +PORT MAP(nRSTO => nRSTO, + MAIN_CLK => MAIN_CLK, + FB_ALE => FB_ALE, + nFB_WR => nFB_WR, + nFB_OE => nFB_OE, + FB_SIZE0 => FB_SIZE0, + FB_SIZE1 => FB_SIZE1, + BLITTER_ON => BLITTER_ON, + nFB_CS1 => nFB_CS1, + nFB_CS2 => nFB_CS2, + nFB_CS3 => nFB_CS3, + DDRCLK0 => DDRCLK(0), + BLITTER_DACK => BLITTER_DACK, + BLITTER_DIN => BLITTER_DIN, + FB_AD => FB_AD, + FB_ADR => FB_ADR, + VIDEO_RAM_CTR => VIDEO_RAM_CTR, + BLITTER_RUN => BLITTER_RUN, + BLITTER_SIG => BLITTER_SIG, + BLITTER_WR => BLITTER_WR, + BLITTER_TA => BLITTER_TA, + BLITTER_ADR => BLITTER_ADR, + BLITTER_DOUT => BLITTER_DOUT); + + +b2v_DDR_CTR : ddr_ctr +PORT MAP(nFB_CS1 => nFB_CS1, + nFB_CS2 => nFB_CS2, + nFB_CS3 => nFB_CS3, + nFB_OE => nFB_OE, + FB_SIZE0 => FB_SIZE0, + FB_SIZE1 => FB_SIZE1, + nRSTO => nRSTO, + MAIN_CLK => MAIN_CLK, + FB_ALE => FB_ALE, + nFB_WR => nFB_WR, + DDR_SYNC_66M => DDR_SYNC_66M, + BLITTER_SIG => BLITTER_SIG, + BLITTER_WR => BLITTER_WR, + DDRCLK0 => DDRCLK(0), + CLK33M => CLK33M, + CLR_FIFO => CLR_FIFO, + BLITTER_ADR => BLITTER_ADR, + FB_AD => FB_AD, + FB_ADR => FB_ADR, + FIFO_MW => FIFO_MW, + VIDEO_RAM_CTR => VIDEO_RAM_CTR, + nVWE => nVWE, + nVRAS => nVRAS, + nVCS => nVCS, + VCKE => VCKE, + nVCAS => nVCAS, + SR_FIFO_WRE => SR_FIFO_WRE, + SR_DDR_FB => SR_DDR_FB, + SR_DDR_WR => SR_DDR_WR, + SR_DDRWR_D_SEL => SR_DDRWR_D_SEL, + VIDEO_DDR_TA => VIDEO_DDR_TA, + SR_BLITTER_DACK => SR_BLITTER_DACK, + DDRWR_D_SEL1 => DDRWR_D_SEL(1), + BA => BA, + FB_LE => FB_LE, + FB_VDOE => FB_VDOE, + SR_VDMP => SR_VDMP, + VA => VA, + VDM_SEL => VDM_SEL); + + +b2v_FALCON_CLUT_BLUE : altdpram1 +PORT MAP(wren_a => FALCON_CLUT_WR(3), + wren_b => SYNTHESIZED_WIRE_3, + clock_a => MAIN_CLK, + clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, + address_a => FB_ADR(9 DOWNTO 2), + address_b => CLUT_ADR, + data_a => FB_AD(23 DOWNTO 18), + q_a => SYNTHESIZED_WIRE_45, + q_b => CCF(7 DOWNTO 2)); + + +b2v_FALCON_CLUT_GREEN : altdpram1 +PORT MAP(wren_a => FALCON_CLUT_WR(1), + wren_b => SYNTHESIZED_WIRE_4, + clock_a => MAIN_CLK, + clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, + address_a => FB_ADR(9 DOWNTO 2), + address_b => CLUT_ADR, + data_a => FB_AD(23 DOWNTO 18), + q_a => SYNTHESIZED_WIRE_44, + q_b => CCF(15 DOWNTO 10)); + + +b2v_FALCON_CLUT_RED : altdpram1 +PORT MAP(wren_a => FALCON_CLUT_WR(0), + wren_b => SYNTHESIZED_WIRE_5, + clock_a => MAIN_CLK, + clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, + address_a => FB_ADR(9 DOWNTO 2), + address_b => CLUT_ADR, + data_a => FB_AD(31 DOWNTO 26), + q_a => SYNTHESIZED_WIRE_41, + q_b => CCF(23 DOWNTO 18)); + + +b2v_inst : lpm_fifo_dc0 +PORT MAP(wrreq => FIFO_WRE, + wrclk => DDRCLK(0), + rdreq => SYNTHESIZED_WIRE_60, + rdclk => PIXEL_CLK_ALTERA_SYNTHESIZED, + aclr => CLR_FIFO, + data => VDMC, + q => SYNTHESIZED_WIRE_63, + wrusedw => FIFO_MW); + + +b2v_inst1 : altddio_bidir0 +PORT MAP(oe => VDOUT_OE, + inclock => DDRCLK(1), + outclock => DDRCLK(3), + datain_h => VDP_OUT(63 DOWNTO 32), + datain_l => VDP_OUT(31 DOWNTO 0), + padio => VD, + combout => SYNTHESIZED_WIRE_15, + dataout_h => VDP_IN(31 DOWNTO 0), + dataout_l => VDP_IN(63 DOWNTO 32)); + + +b2v_inst10 : lpm_ff4 +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + data => SYNTHESIZED_WIRE_7, + q => GDFX_TEMP_SIGNAL_0); + + +b2v_inst100 : lpm_muxvdm +PORT MAP(data0x => VDMB, + data10x => GDFX_TEMP_SIGNAL_1, + data11x => GDFX_TEMP_SIGNAL_2, + data12x => GDFX_TEMP_SIGNAL_3, + data13x => GDFX_TEMP_SIGNAL_4, + data14x => GDFX_TEMP_SIGNAL_5, + data15x => GDFX_TEMP_SIGNAL_6, + data1x => GDFX_TEMP_SIGNAL_7, + data2x => GDFX_TEMP_SIGNAL_8, + data3x => GDFX_TEMP_SIGNAL_9, + data4x => GDFX_TEMP_SIGNAL_10, + data5x => GDFX_TEMP_SIGNAL_11, + data6x => GDFX_TEMP_SIGNAL_12, + data7x => GDFX_TEMP_SIGNAL_13, + data8x => GDFX_TEMP_SIGNAL_14, + data9x => GDFX_TEMP_SIGNAL_15, + sel => VDM_SEL, + result => VDMC); + + +b2v_inst102 : lpm_mux3 +PORT MAP(data1 => DFF_inst93, + data0 => ZR_C8(0), + sel => COLOR1, + result => ZR_C8B(0)); + + +CLUT_ADR(4) <= CLUT_OFF(0) OR SYNTHESIZED_WIRE_8; + + +CLUT_ADR(6) <= CLUT_OFF(2) OR SYNTHESIZED_WIRE_9; + + +SYNTHESIZED_WIRE_61 <= COLOR8 OR COLOR4; + + +CLUT_ADR(2) <= CLUT_ADR2A AND SYNTHESIZED_WIRE_61; + + +SYNTHESIZED_WIRE_16 <= COLOR4 OR COLOR8 OR COLOR2; + + +b2v_inst108 : lpm_bustri_long +PORT MAP(enabledt => FB_VDOE(0), + data => VDR, + tridata => FB_AD); + + +b2v_inst109 : lpm_bustri_long +PORT MAP(enabledt => FB_VDOE(1), + data => SYNTHESIZED_WIRE_11, + tridata => FB_AD); + + +b2v_inst11 : lpm_ff5 +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + data => SYNTHESIZED_WIRE_12, + q => ZR_C8); + + +b2v_inst110 : lpm_bustri_long +PORT MAP(enabledt => FB_VDOE(2), + data => SYNTHESIZED_WIRE_13, + tridata => FB_AD); + + +b2v_inst119 : lpm_bustri_long +PORT MAP(enabledt => FB_VDOE(3), + data => SYNTHESIZED_WIRE_14, + tridata => FB_AD); + + +b2v_inst12 : lpm_ff1 +PORT MAP(clock => DDRCLK(0), + data => VDP_IN(31 DOWNTO 0), + q => VDVZ(31 DOWNTO 0)); + + +b2v_inst13 : lpm_ff0 +PORT MAP(clock => DDR_SYNC_66M, + enable => FB_LE(0), + data => FB_AD, + q => FB_DDR(127 DOWNTO 96)); + + +b2v_inst14 : lpm_ff0 +PORT MAP(clock => DDR_SYNC_66M, + enable => FB_LE(1), + data => FB_AD, + q => FB_DDR(95 DOWNTO 64)); + + +b2v_inst15 : lpm_ff0 +PORT MAP(clock => DDR_SYNC_66M, + enable => FB_LE(2), + data => FB_AD, + q => FB_DDR(63 DOWNTO 32)); + + +b2v_inst16 : lpm_ff0 +PORT MAP(clock => DDR_SYNC_66M, + enable => FB_LE(3), + data => FB_AD, + q => FB_DDR(31 DOWNTO 0)); + + +b2v_inst17 : lpm_ff0 +PORT MAP(clock => DDRCLK(0), + enable => DDR_FB(1), + data => VDP_IN(31 DOWNTO 0), + q => SYNTHESIZED_WIRE_11); + + +b2v_inst18 : lpm_ff0 +PORT MAP(clock => DDRCLK(0), + enable => DDR_FB(0), + data => VDP_IN(63 DOWNTO 32), + q => SYNTHESIZED_WIRE_13); + + +b2v_inst19 : lpm_ff0 +PORT MAP(clock => DDRCLK(0), + enable => DDR_FB(0), + data => VDP_IN(31 DOWNTO 0), + q => SYNTHESIZED_WIRE_14); + + +b2v_inst2 : altddio_out0 +PORT MAP(outclock => DDRCLK(3), + datain_h => VDMP(7 DOWNTO 4), + datain_l => VDMP(3 DOWNTO 0), + dataout => VDM); + + +b2v_inst20 : lpm_ff1 +PORT MAP(clock => DDRCLK(0), + data => VDVZ(31 DOWNTO 0), + q => VDVZ(95 DOWNTO 64)); + + +b2v_inst21 : lpm_mux0 +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + data0x => FIFO_D(127 DOWNTO 96), + data1x => FIFO_D(95 DOWNTO 64), + data2x => FIFO_D(63 DOWNTO 32), + data3x => FIFO_D(31 DOWNTO 0), + sel => CLUT_MUX_ADR(1 DOWNTO 0), + result => SYNTHESIZED_WIRE_48); + + +b2v_inst22 : lpm_mux5 +PORT MAP(data0x => FB_DDR(127 DOWNTO 64), + data1x => FB_DDR(63 DOWNTO 0), + data2x => BLITTER_DOUT(127 DOWNTO 64), + data3x => BLITTER_DOUT(63 DOWNTO 0), + sel => DDRWR_D_SEL, + result => VDP_OUT); + + +b2v_inst23 : lpm_constant2 +PORT MAP( result => GDFX_TEMP_SIGNAL_16); + + +b2v_inst24 : lpm_mux1 +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + data0x => FIFO_D(127 DOWNTO 112), + data1x => FIFO_D(111 DOWNTO 96), + data2x => FIFO_D(95 DOWNTO 80), + data3x => FIFO_D(79 DOWNTO 64), + data4x => FIFO_D(63 DOWNTO 48), + data5x => FIFO_D(47 DOWNTO 32), + data6x => FIFO_D(31 DOWNTO 16), + data7x => FIFO_D(15 DOWNTO 0), + sel => CLUT_MUX_ADR(2 DOWNTO 0), + result => SYNTHESIZED_WIRE_7); + + +b2v_inst25 : lpm_mux2 +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + data0x => FIFO_D(127 DOWNTO 120), + data10x => FIFO_D(47 DOWNTO 40), + data11x => FIFO_D(39 DOWNTO 32), + data12x => FIFO_D(31 DOWNTO 24), + data13x => FIFO_D(23 DOWNTO 16), + data14x => FIFO_D(15 DOWNTO 8), + data15x => FIFO_D(7 DOWNTO 0), + data1x => FIFO_D(119 DOWNTO 112), + data2x => FIFO_D(111 DOWNTO 104), + data3x => FIFO_D(103 DOWNTO 96), + data4x => FIFO_D(95 DOWNTO 88), + data5x => FIFO_D(87 DOWNTO 80), + data6x => FIFO_D(79 DOWNTO 72), + data7x => FIFO_D(71 DOWNTO 64), + data8x => FIFO_D(63 DOWNTO 56), + data9x => FIFO_D(55 DOWNTO 48), + sel => CLUT_MUX_ADR, + result => SYNTHESIZED_WIRE_12); + + +b2v_inst26 : lpm_shiftreg4 +PORT MAP(clock => DDRCLK(0), + shiftin => SR_FIFO_WRE, + shiftout => FIFO_WRE); + + +b2v_inst27 : lpm_latch0 +PORT MAP(gate => DDR_SYNC_66M, + data => SYNTHESIZED_WIRE_15, + q => VDR); + + + +CLUT_ADR(1) <= CLUT_ADR1A AND SYNTHESIZED_WIRE_16; + + +b2v_inst3 : lpm_ff1 +PORT MAP(clock => DDRCLK(0), + data => VDP_IN(63 DOWNTO 32), + q => VDVZ(63 DOWNTO 32)); + + +CLUT_ADR(3) <= SYNTHESIZED_WIRE_61 AND CLUT_ADR3A; + + +CLUT_ADR(5) <= CLUT_OFF(1) OR SYNTHESIZED_WIRE_18; + + +SYNTHESIZED_WIRE_8 <= CLUT_ADR4A AND COLOR8; + + +SYNTHESIZED_WIRE_18 <= CLUT_ADR5A AND COLOR8; + + +SYNTHESIZED_WIRE_9 <= CLUT_ADR6A AND COLOR8; + + +SYNTHESIZED_WIRE_46 <= CLUT_ADR7A AND COLOR8; + + +b2v_inst36 : lpm_ff6 +PORT MAP(clock => DDRCLK(0), + enable => BLITTER_DACK(0), + data => VDVZ, + q => BLITTER_DIN); + + +VDOUT_OE <= DDR_WR OR SR_DDR_WR; + + + +VIDEO_TA <= BLITTER_TA OR VIDEO_MOD_TA OR VIDEO_DDR_TA; + + +b2v_inst4 : lpm_ff1 +PORT MAP(clock => DDRCLK(0), + data => VDVZ(63 DOWNTO 32), + q => VDVZ(127 DOWNTO 96)); + + +b2v_inst40 : mux41_0 +PORT MAP(S0 => COLOR2, + S1 => COLOR4, + D0 => CLUT_ADR6A, + INH => SYNTHESIZED_WIRE_19, + D1 => CLUT_ADR7A, + Q => SYNTHESIZED_WIRE_54); + + +b2v_inst41 : mux41_1 +PORT MAP(S0 => COLOR2, + S1 => COLOR4, + D0 => CLUT_ADR5A, + INH => SYNTHESIZED_WIRE_20, + D1 => CLUT_ADR6A, + Q => SYNTHESIZED_WIRE_53); + + +b2v_inst42 : mux41_2 +PORT MAP(S0 => COLOR2, + D2 => CLUT_ADR7A, + S1 => COLOR4, + D0 => CLUT_ADR4A, + INH => SYNTHESIZED_WIRE_21, + D1 => CLUT_ADR5A, + Q => SYNTHESIZED_WIRE_52); + + +b2v_inst43 : mux41_3 +PORT MAP(S0 => COLOR2, + D2 => CLUT_ADR6A, + S1 => COLOR4, + D0 => CLUT_ADR3A, + INH => SYNTHESIZED_WIRE_22, + D1 => CLUT_ADR4A, + Q => SYNTHESIZED_WIRE_51); + + +b2v_inst44 : mux41_4 +PORT MAP(S0 => COLOR2, + D2 => CLUT_ADR5A, + S1 => COLOR4, + D0 => CLUT_ADR2A, + INH => SYNTHESIZED_WIRE_23, + D1 => CLUT_ADR3A, + Q => SYNTHESIZED_WIRE_50); + + +b2v_inst45 : mux41_5 +PORT MAP(S0 => COLOR2, + D2 => CLUT_ADR4A, + S1 => COLOR4, + D0 => CLUT_ADR1A, + INH => SYNTHESIZED_WIRE_24, + D1 => CLUT_ADR2A, + Q => SYNTHESIZED_WIRE_49); + + +b2v_inst46 : lpm_ff3 +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + data => SYNTHESIZED_WIRE_25, + q => SYNTHESIZED_WIRE_43); + + +b2v_inst47 : lpm_ff3 +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + data => CCF, + q => SYNTHESIZED_WIRE_25); + + + +b2v_inst49 : lpm_ff3 +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + data => SYNTHESIZED_WIRE_26, + q => SYNTHESIZED_WIRE_42); + + +b2v_inst5 : altddio_out2 +PORT MAP(outclock => PIXEL_CLK_ALTERA_SYNTHESIZED, + datain_h => SYNTHESIZED_WIRE_62, + datain_l => SYNTHESIZED_WIRE_62, + dataout => SYNTHESIZED_WIRE_65); + + + +b2v_inst51 : lpm_bustri1 +PORT MAP(enabledt => ST_CLUT_RD, + data => SYNTHESIZED_WIRE_29, + tridata => FB_AD(26 DOWNTO 24)); + + +b2v_inst52 : lpm_ff3 +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + data => CCS, + q => SYNTHESIZED_WIRE_26); + + +b2v_inst53 : lpm_bustri_byt +PORT MAP(enabledt => ACP_CLUT_RD, + data => SYNTHESIZED_WIRE_30, + tridata => FB_AD(7 DOWNTO 0)); + + +b2v_inst54 : lpm_constant0 +PORT MAP( result => CCS(20 DOWNTO 16)); + + + +b2v_inst56 : lpm_bustri1 +PORT MAP(enabledt => ST_CLUT_RD, + data => SYNTHESIZED_WIRE_31, + tridata => FB_AD(22 DOWNTO 20)); + + +b2v_inst57 : lpm_bustri_byt +PORT MAP(enabledt => ACP_CLUT_RD, + data => SYNTHESIZED_WIRE_32, + tridata => FB_AD(15 DOWNTO 8)); + + +b2v_inst58 : lpm_bustri_byt +PORT MAP(enabledt => ACP_CLUT_RD, + data => SYNTHESIZED_WIRE_33, + tridata => FB_AD(23 DOWNTO 16)); + + +b2v_inst59 : lpm_constant0 +PORT MAP( result => CCS(12 DOWNTO 8)); + + + + +b2v_inst61 : lpm_bustri1 +PORT MAP(enabledt => ST_CLUT_RD, + data => SYNTHESIZED_WIRE_34, + tridata => FB_AD(18 DOWNTO 16)); + + +b2v_inst62 : lpm_muxdz +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + clken => FIFO_RDE, + sel => INTER_ZEI, + data0x => SYNTHESIZED_WIRE_63, + data1x => SYNTHESIZED_WIRE_36, + result => FIFO_D); + + +b2v_inst63 : lpm_fifodz +PORT MAP(wrreq => SYNTHESIZED_WIRE_60, + rdreq => SYNTHESIZED_WIRE_38, + clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + aclr => DOP_FIFO_CLR, + data => SYNTHESIZED_WIRE_63, + q => SYNTHESIZED_WIRE_36); + + +b2v_inst64 : lpm_constant0 +PORT MAP( result => CCS(4 DOWNTO 0)); + + +SYNTHESIZED_WIRE_60 <= FIFO_RDE AND SYNTHESIZED_WIRE_40; + + +b2v_inst66 : lpm_bustri3 +PORT MAP(enabledt => FALCON_CLUT_RDH, + data => SYNTHESIZED_WIRE_41, + tridata => FB_AD(31 DOWNTO 26)); + + +SYNTHESIZED_WIRE_38 <= FIFO_RDE AND INTER_ZEI; + + + +SYNTHESIZED_WIRE_40 <= NOT(INTER_ZEI); + + + +b2v_inst7 : lpm_mux6 +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + data0x => SYNTHESIZED_WIRE_42, + data1x => SYNTHESIZED_WIRE_43, + data4x => CCA, + data5x => CC16, + data6x => CC24(23 DOWNTO 0), + data7x => CCR, + sel => CCSEL, + result => SYNTHESIZED_WIRE_62); + + +b2v_inst70 : lpm_bustri3 +PORT MAP(enabledt => FALCON_CLUT_RDH, + data => SYNTHESIZED_WIRE_44, + tridata => FB_AD(23 DOWNTO 18)); + + +b2v_inst71 : lpm_ff6 +PORT MAP(clock => DDRCLK(0), + enable => FIFO_WRE, + data => VDVZ, + q => VDMA); + + + + +b2v_inst74 : lpm_bustri3 +PORT MAP(enabledt => FALCON_CLUT_RDL, + data => SYNTHESIZED_WIRE_45, + tridata => FB_AD(23 DOWNTO 18)); + + + + +b2v_inst77 : lpm_constant1 +PORT MAP( result => CCF(1 DOWNTO 0)); + + + +CLUT_ADR(7) <= CLUT_OFF(3) OR SYNTHESIZED_WIRE_46; + + + +b2v_inst80 : lpm_constant1 +PORT MAP( result => CCF(9 DOWNTO 8)); + + +b2v_inst81 : lpm_mux4 +PORT MAP(sel => COLOR1, + data0x => ZR_C8(7 DOWNTO 1), + data1x => SYNTHESIZED_WIRE_47, + result => ZR_C8B(7 DOWNTO 1)); + + +b2v_inst82 : lpm_constant3 +PORT MAP( result => SYNTHESIZED_WIRE_47); + + +b2v_inst83 : lpm_constant1 +PORT MAP( result => CCF(17 DOWNTO 16)); + + +PROCESS(DDRCLK(0),DDR_WR) +BEGIN +if (DDR_WR = '1') THEN + VDQS(3) <= DDRCLK(0); +ELSE + VDQS(3) <= 'Z'; +END IF; +END PROCESS; + + +PROCESS(DDRCLK(0),DDR_WR) +BEGIN +if (DDR_WR = '1') THEN + VDQS(2) <= DDRCLK(0); +ELSE + VDQS(2) <= 'Z'; +END IF; +END PROCESS; + + +PROCESS(DDRCLK(0),DDR_WR) +BEGIN +if (DDR_WR = '1') THEN + VDQS(1) <= DDRCLK(0); +ELSE + VDQS(1) <= 'Z'; +END IF; +END PROCESS; + + +PROCESS(DDRCLK(0),DDR_WR) +BEGIN +if (DDR_WR = '1') THEN + VDQS(0) <= DDRCLK(0); +ELSE + VDQS(0) <= 'Z'; +END IF; +END PROCESS; + + +PROCESS(DDRCLK(3)) +BEGIN +IF (RISING_EDGE(DDRCLK(3))) THEN + DDRWR_D_SEL(0) <= SR_DDRWR_D_SEL; +END IF; +END PROCESS; + + +b2v_inst89 : lpm_shiftreg6 +PORT MAP(clock => DDRCLK(0), + shiftin => SR_BLITTER_DACK, + q => BLITTER_DACK); + + +b2v_inst9 : lpm_ff1 +PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + data => SYNTHESIZED_WIRE_48, + q => CC24); + + +PROCESS(DDRCLK(3)) +BEGIN +IF (RISING_EDGE(DDRCLK(3))) THEN + DDR_WR <= SR_DDR_WR; +END IF; +END PROCESS; + + +PROCESS(PIXEL_CLK_ALTERA_SYNTHESIZED) +BEGIN +IF (RISING_EDGE(PIXEL_CLK_ALTERA_SYNTHESIZED)) THEN + DFF_inst91 <= CLUT_ADR(0); +END IF; +END PROCESS; + + +b2v_inst92 : lpm_shiftreg6 +PORT MAP(clock => DDRCLK(0), + shiftin => SR_DDR_FB, + q => DDR_FB); + + +PROCESS(PIXEL_CLK_ALTERA_SYNTHESIZED) +BEGIN +IF (RISING_EDGE(PIXEL_CLK_ALTERA_SYNTHESIZED)) THEN + DFF_inst93 <= DFF_inst91; +END IF; +END PROCESS; + + +b2v_inst94 : lpm_ff6 +PORT MAP(clock => DDRCLK(0), + enable => FIFO_WRE, + data => VDMA, + q => VDMB); + + +PROCESS(PIXEL_CLK_ALTERA_SYNTHESIZED) +BEGIN +IF (RISING_EDGE(PIXEL_CLK_ALTERA_SYNTHESIZED)) THEN + SYNTHESIZED_WIRE_64 <= FIFO_RDE; +END IF; +END PROCESS; + + + +b2v_inst97 : lpm_ff5 +PORT MAP(clock => DDRCLK(2), + data => SR_VDMP, + q => VDMP); + + +b2v_sr0 : lpm_shiftreg0 +PORT MAP(load => SYNTHESIZED_WIRE_64, + clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + shiftin => SYNTHESIZED_WIRE_49, + data => FIFO_D(127 DOWNTO 112), + shiftout => CLUT_ADR(0)); + + +b2v_sr1 : lpm_shiftreg0 +PORT MAP(load => SYNTHESIZED_WIRE_64, + clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + shiftin => SYNTHESIZED_WIRE_50, + data => FIFO_D(111 DOWNTO 96), + shiftout => CLUT_ADR1A); + + +b2v_sr2 : lpm_shiftreg0 +PORT MAP(load => SYNTHESIZED_WIRE_64, + clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + shiftin => SYNTHESIZED_WIRE_51, + data => FIFO_D(95 DOWNTO 80), + shiftout => CLUT_ADR2A); + + +b2v_sr3 : lpm_shiftreg0 +PORT MAP(load => SYNTHESIZED_WIRE_64, + clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + shiftin => SYNTHESIZED_WIRE_52, + data => FIFO_D(79 DOWNTO 64), + shiftout => CLUT_ADR3A); + + +b2v_sr4 : lpm_shiftreg0 +PORT MAP(load => SYNTHESIZED_WIRE_64, + clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + shiftin => SYNTHESIZED_WIRE_53, + data => FIFO_D(63 DOWNTO 48), + shiftout => CLUT_ADR4A); + + +b2v_sr5 : lpm_shiftreg0 +PORT MAP(load => SYNTHESIZED_WIRE_64, + clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + shiftin => SYNTHESIZED_WIRE_54, + data => FIFO_D(47 DOWNTO 32), + shiftout => CLUT_ADR5A); + + +b2v_sr6 : lpm_shiftreg0 +PORT MAP(load => SYNTHESIZED_WIRE_64, + clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + shiftin => CLUT_ADR7A, + data => FIFO_D(31 DOWNTO 16), + shiftout => CLUT_ADR6A); + + +b2v_sr7 : lpm_shiftreg0 +PORT MAP(load => SYNTHESIZED_WIRE_64, + clock => PIXEL_CLK_ALTERA_SYNTHESIZED, + shiftin => CLUT_ADR(0), + data => FIFO_D(15 DOWNTO 0), + shiftout => CLUT_ADR7A); + + +b2v_ST_CLUT_BLUE : altdpram0 +PORT MAP(wren_a => ST_CLUT_WR(1), + wren_b => SYNTHESIZED_WIRE_55, + clock_a => MAIN_CLK, + clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, + address_a => FB_ADR(4 DOWNTO 1), + address_b => CLUT_ADR(3 DOWNTO 0), + data_a => FB_AD(18 DOWNTO 16), + q_a => SYNTHESIZED_WIRE_34, + q_b => CCS(7 DOWNTO 5)); + + +b2v_ST_CLUT_GREEN : altdpram0 +PORT MAP(wren_a => ST_CLUT_WR(1), + wren_b => SYNTHESIZED_WIRE_56, + clock_a => MAIN_CLK, + clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, + address_a => FB_ADR(4 DOWNTO 1), + address_b => CLUT_ADR(3 DOWNTO 0), + data_a => FB_AD(22 DOWNTO 20), + q_a => SYNTHESIZED_WIRE_31, + q_b => CCS(15 DOWNTO 13)); + + +b2v_ST_CLUT_RED : altdpram0 +PORT MAP(wren_a => ST_CLUT_WR(0), + wren_b => SYNTHESIZED_WIRE_57, + clock_a => MAIN_CLK, + clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, + address_a => FB_ADR(4 DOWNTO 1), + address_b => CLUT_ADR(3 DOWNTO 0), + data_a => FB_AD(26 DOWNTO 24), + q_a => SYNTHESIZED_WIRE_29, + q_b => CCS(23 DOWNTO 21)); + + +b2v_VIDEO_MOD_MUX_CLUTCTR : video_mod_mux_clutctr +PORT MAP(nRSTO => nRSTO, + MAIN_CLK => MAIN_CLK, + nFB_CS1 => nFB_CS1, + nFB_CS2 => nFB_CS2, + nFB_CS3 => nFB_CS3, + nFB_WR => nFB_WR, + nFB_OE => nFB_OE, + FB_SIZE0 => FB_SIZE0, + FB_SIZE1 => FB_SIZE1, + nFB_BURST => nFB_BURST, + CLK33M => CLK33M, + CLK25M => CLK25M, + BLITTER_RUN => BLITTER_RUN, + CLK_VIDEO => CLK_VIDEO, + VR_BUSY => VR_BUSY, + FB_AD => FB_AD, + FB_ADR => FB_ADR, + VR_D => VR_D, + COLOR8 => COLOR8, + ACP_CLUT_RD => ACP_CLUT_RD, + COLOR1 => COLOR1, + FALCON_CLUT_RDH => FALCON_CLUT_RDH, + FALCON_CLUT_RDL => FALCON_CLUT_RDL, + ST_CLUT_RD => ST_CLUT_RD, + HSYNC => HSYNC, + VSYNC => VSYNC, + nBLANK => nBLANK, + nSYNC => nSYNC, + nPD_VGA => nPD_VGA, + FIFO_RDE => FIFO_RDE, + COLOR2 => COLOR2, + COLOR4 => COLOR4, + PIXEL_CLK => PIXEL_CLK_ALTERA_SYNTHESIZED, + BLITTER_ON => BLITTER_ON, + VIDEO_MOD_TA => VIDEO_MOD_TA, + INTER_ZEI => INTER_ZEI, + DOP_FIFO_CLR => DOP_FIFO_CLR, + VIDEO_RECONFIG => VIDEO_RECONFIG, + VR_WR => VR_WR, + VR_RD => VR_RD, + CLR_FIFO => CLR_FIFO, + ACP_CLUT_WR => ACP_CLUT_WR, + CCR => CCR, + CCSEL => CCSEL, + CLUT_MUX_ADR => CLUT_MUX_ADR, + CLUT_OFF => CLUT_OFF, + FALCON_CLUT_WR => FALCON_CLUT_WR, + ST_CLUT_WR => ST_CLUT_WR, + VIDEO_RAM_CTR => VIDEO_RAM_CTR); + +PIXEL_CLK <= PIXEL_CLK_ALTERA_SYNTHESIZED; + +END bdf_type; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.tdf new file mode 100644 index 0000000..1fe3049 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.tdf @@ -0,0 +1,662 @@ +TITLE "DDR_CTR"; + +-- CREATED BY FREDI ASCHWANDEN + +INCLUDE "lpm_bustri_BYT.inc"; + +-- FIFO WATER MARK +CONSTANT FIFO_LWM = 0; +CONSTANT FIFO_MWM = 200; +CONSTANT FIFO_HWM = 500; + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + +SUBDESIGN DDR_CTR +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + FB_ADR[31..0] : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + nFB_CS3 : INPUT; + nFB_OE : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + nRSTO : INPUT; + MAIN_CLK : INPUT; + FB_ALE : INPUT; + nFB_WR : INPUT; + DDR_SYNC_66M : INPUT; + CLR_FIFO : INPUT; + VIDEO_RAM_CTR[15..0] : INPUT; + BLITTER_ADR[31..0] : INPUT; + BLITTER_SIG : INPUT; + BLITTER_WR : INPUT; + DDRCLK0 : INPUT; + CLK33M : INPUT; + FIFO_MW[8..0] : INPUT; + VA[12..0] : OUTPUT; + nVWE : OUTPUT; + nVRAS : OUTPUT; + nVCS : OUTPUT; + VCKE : OUTPUT; + nVCAS : OUTPUT; + FB_LE[3..0] : OUTPUT; + FB_VDOE[3..0] : OUTPUT; + SR_FIFO_WRE : OUTPUT; + SR_DDR_FB : OUTPUT; + SR_DDR_WR : OUTPUT; + SR_DDRWR_D_SEL : OUTPUT; + SR_VDMP[7..0] : OUTPUT; + VIDEO_DDR_TA : OUTPUT; + SR_BLITTER_DACK : OUTPUT; + BA[1..0] : OUTPUT; + DDRWR_D_SEL1 : OUTPUT; + VDM_SEL[3..0] : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + FB_REGDDR :MACHINE WITH STATES(FR_WAIT,FR_S0,FR_S1,FR_S2,FR_S3); + DDR_SM :MACHINE WITH STATES(DS_T1,DS_T2A,DS_T2B,DS_T3,DS_N5,DS_N6, DS_N7, DS_N8, -- START (NORMAL 8 CYCLES TOTAL = 60ns) + DS_C2,DS_C3,DS_C4, DS_C5, DS_C6, DS_C7, -- CONFIG + DS_T4R,DS_T5R, -- READ CPU UND BLITTER, + DS_T4W,DS_T5W,DS_T6W,DS_T7W,DS_T8W,DS_T9W, -- WRITE CPU UND BLITTER + DS_T4F,DS_T5F,DS_T6F,DS_T7F,DS_T8F,DS_T9F,DS_T10F, -- READ FIFO + DS_CB6, DS_CB8, -- CLOSE FIFO BANK + DS_R2,DS_R3,DS_R4, DS_R5, DS_R6); -- REFRESH 10X7.5NS=75NS + LINE :NODE; + FB_B[3..0] :NODE; + VCAS :NODE; + VRAS :NODE; + VWE :NODE; + VA_P[12..0] :DFF; + BA_P[1..0] :DFF; + VA_S[12..0] :DFF; + BA_S[1..0] :DFF; + MCS[1..0] :DFF; + CPU_DDR_SYNC :DFF; + DDR_SEL :NODE; + DDR_CS :DFFE; + DDR_CONFIG :NODE; + SR_DDR_WR :DFF; + SR_DDRWR_D_SEL :DFF; + SR_VDMP[7..0] :DFF; + CPU_ROW_ADR[12..0] :NODE; + CPU_BA[1..0] :NODE; + CPU_COL_ADR[9..0] :NODE; + CPU_SIG :NODE; + CPU_REQ :DFF; + CPU_AC :DFF; + BUS_CYC :DFF; + BUS_CYC_END :NODE; + BLITTER_REQ :DFF; + BLITTER_AC :DFF; + BLITTER_ROW_ADR[12..0] :NODE; + BLITTER_BA[1..0] :NODE; + BLITTER_COL_ADR[9..0] :NODE; + FIFO_REQ :DFF; + FIFO_AC :DFF; + FIFO_ROW_ADR[12..0] :NODE; + FIFO_BA[1..0] :NODE; + FIFO_COL_ADR[9..0] :NODE; + FIFO_ACTIVE :NODE; + CLR_FIFO_SYNC :DFF; + CLEAR_FIFO_CNT :DFF; + STOP :DFF; + SR_FIFO_WRE :DFF; + FIFO_BANK_OK :DFF; + FIFO_BANK_NOT_OK :NODE; + DDR_REFRESH_ON :NODE; + DDR_REFRESH_CNT[10..0] :DFF; + DDR_REFRESH_REQ :DFF; + DDR_REFRESH_SIG[3..0] :DFFE; + REFRESH_TIME :DFF; + VIDEO_BASE_L_D[7..0] :DFFE; + VIDEO_BASE_L :NODE; + VIDEO_BASE_M_D[7..0] :DFFE; + VIDEO_BASE_M :NODE; + VIDEO_BASE_H_D[7..0] :DFFE; + VIDEO_BASE_H :NODE; + VIDEO_BASE_X_D[2..0] :DFFE; + VIDEO_BASE_X_D_FULL[7..0] :NODE; + VIDEO_ADR_CNT[22..0] :DFFE; + VIDEO_CNT_L :NODE; + VIDEO_CNT_M :NODE; + VIDEO_CNT_H :NODE; + VIDEO_BASE_ADR[22..0] :NODE; + VIDEO_ACT_ADR[26..0] :NODE; + +BEGIN + LINE = FB_SIZE0 & FB_SIZE1; +-- BYT SELECT + FB_B0 = FB_ADR[1..0]==0 -- ADR==0 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B1 = FB_ADR[1..0]==1 -- ADR==1 + # FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HIGH WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_ADR[1..0]==2 -- ADR==2 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_ADR[1..0]==3 -- ADR==3 + # FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LOW WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE +-- CPU READ (REG DDR => CPU) AND WRITE (CPU => REG DDR) -------------------------------------------------- + FB_REGDDR.CLK = MAIN_CLK; + CASE FB_REGDDR IS + WHEN FR_WAIT => + FB_LE0 = !nFB_WR; + IF BUS_CYC # DDR_SEL & LINE & !nFB_WR THEN -- LOS WENN BEREIT ODER IMMER BEI LINE WRITE + FB_REGDDR = FR_S0; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S0 => + IF DDR_CS THEN + FB_LE0 = !nFB_WR; + VIDEO_DDR_TA = VCC; + IF LINE THEN + FB_VDOE0 = !nFB_OE & !DDR_CONFIG; + FB_REGDDR = FR_S1; + ELSE + BUS_CYC_END = VCC; + FB_VDOE0 = !nFB_OE & !MAIN_CLK & !DDR_CONFIG; + FB_REGDDR = FR_WAIT; + END IF; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S1 => + IF DDR_CS THEN + FB_VDOE1 = !nFB_OE & !DDR_CONFIG; + FB_LE1 = !nFB_WR; + VIDEO_DDR_TA = VCC; + FB_REGDDR = FR_S2; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S2 => + IF DDR_CS THEN + FB_VDOE2 = !nFB_OE & !DDR_CONFIG; + FB_LE2 = !nFB_WR; + IF !BUS_CYC & LINE & !nFB_WR THEN -- BEI LINE WRITE EVT. WARTEN + FB_REGDDR = FR_S2; + ELSE + VIDEO_DDR_TA = VCC; + FB_REGDDR = FR_S3; + END IF; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S3 => + IF DDR_CS THEN + FB_VDOE3 = !nFB_OE & !MAIN_CLK & !DDR_CONFIG; + FB_LE3 = !nFB_WR; + VIDEO_DDR_TA = VCC; + BUS_CYC_END = VCC; + FB_REGDDR = FR_WAIT; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + END CASE; +-- DDR STEUERUNG ----------------------------------------------------- +-- VIDEO RAM CONTROL REGISTER (IST IN VIDEO_MUX_CTR) $F0000400: BIT 0: VCKE; 1: !nVCS ;2:REFRESH ON , (0=FIFO UND CNT CLEAR); 3: CONFIG; 8: FIFO_ACTIVE; + VCKE = VIDEO_RAM_CTR0; + nVCS = !VIDEO_RAM_CTR1; + DDR_REFRESH_ON = VIDEO_RAM_CTR2; + DDR_CONFIG = VIDEO_RAM_CTR3; + FIFO_ACTIVE = VIDEO_RAM_CTR8; +-------------------------------- + CPU_ROW_ADR[] = FB_ADR[26..14]; + CPU_BA[] = FB_ADR[13..12]; + CPU_COL_ADR[] = FB_ADR[11..2]; + nVRAS = !VRAS; + nVCAS = !VCAS; + nVWE = !VWE; + SR_DDR_WR.CLK = DDRCLK0; + SR_DDRWR_D_SEL.CLK = DDRCLK0; + SR_VDMP[7..0].CLK = DDRCLK0; + SR_FIFO_WRE.CLK = DDRCLK0; + CPU_AC.CLK = DDRCLK0; + FIFO_AC.CLK = DDRCLK0; + BLITTER_AC.CLK = DDRCLK0; + DDRWR_D_SEL1 = BLITTER_AC; +-- SELECT LOGIC + DDR_SEL = FB_ALE & FB_AD[31..30]==B"01"; + DDR_CS.CLK = MAIN_CLK; + DDR_CS.ENA = FB_ALE; + DDR_CS = DDR_SEL; +-- WENN READ ODER WRITE B,W,L DDR SOFORT ANFORDERN, BEI WRITE LINE SPÄTER + CPU_SIG = DDR_SEL & (nFB_WR # !LINE) & !DDR_CONFIG -- NICHT LINE ODER READ SOFORT LOS WENN NICHT CONFIG + # DDR_SEL & DDR_CONFIG -- CONFIG SOFORT LOS + # FB_REGDDR==FR_S1 & !nFB_WR; -- LINE WRITE SPÄTER + CPU_REQ.CLK = DDR_SYNC_66M; + CPU_REQ = CPU_SIG + # CPU_REQ & FB_REGDDR!=FR_S1 & FB_REGDDR!=FR_S3 & !BUS_CYC_END & !BUS_CYC; -- HALTEN BUS CYC BEGONNEN ODER FERTIG + BUS_CYC.CLK = DDRCLK0; + BUS_CYC = BUS_CYC & !BUS_CYC_END; + -- STATE MACHINE SYNCHRONISIEREN ----------------- + MCS[].CLK = DDRCLK0; + MCS0 = MAIN_CLK; + MCS1 = MCS0; + CPU_DDR_SYNC.CLK = DDRCLK0; + CPU_DDR_SYNC = MCS[]==2 & VCKE & !nVCS; -- NUR 1 WENN EIN + --------------------------------------------------- + VA_S[].CLK = DDRCLK0; + BA_S[].CLK = DDRCLK0; + VA[] = VA_S[]; + BA[] = BA_S[]; + VA_P[].CLK = DDRCLK0; + BA_P[].CLK = DDRCLK0; +-- DDR STATE MACHINE ----------------------------------------------- + DDR_SM.CLK = DDRCLK0; + CASE DDR_SM IS + WHEN DS_T1 => + IF DDR_REFRESH_REQ THEN + DDR_SM = DS_R2; + ELSE + IF CPU_DDR_SYNC THEN -- SYNCHRON UND EIN? + IF DDR_CONFIG THEN -- JA + DDR_SM = DS_C2; + ELSE + IF CPU_REQ THEN -- BEI WAIT UND LINE WRITE + VA_S[] = CPU_ROW_ADR[]; + BA_S[] = CPU_BA[]; + CPU_AC = VCC; + BUS_CYC = VCC; + DDR_SM = DS_T2B; + ELSE + IF FIFO_REQ # !BLITTER_REQ THEN -- FIFO IST DEFAULT + VA_P[] = FIFO_ROW_ADR[]; + BA_P[] = FIFO_BA[]; + FIFO_AC = VCC; -- VORBESETZEN + ELSE + VA_P[] = BLITTER_ROW_ADR[]; + BA_P[] = BLITTER_BA[]; + BLITTER_AC = VCC; -- VORBESETZEN + END IF; + DDR_SM = DS_T2A; + END IF; + END IF; + ELSE + DDR_SM = DS_T1; -- NEIN ->SYNCHRONISIEREN + END IF; + END IF; + + WHEN DS_T2A => -- SCHNELLZUGRIFF *** HIER IST PAGE IMMER NOT OK *** + IF DDR_SEL & (nFB_WR # !LINE) THEN + VRAS = VCC; + VA[] = FB_AD[26..14]; + BA[] = FB_AD[13..12]; + VA_S[10] = VCC; -- AUTO PRECHARGE DA NICHT FIFO PAGE + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + ELSE + VRAS = FIFO_AC & FIFO_REQ # BLITTER_AC & BLITTER_REQ; + VA[] = VA_P[]; + BA[] = BA_P[]; + VA_S[10] = !(FIFO_AC & FIFO_REQ); + FIFO_BANK_OK = FIFO_AC & FIFO_REQ; + FIFO_AC = FIFO_AC & FIFO_REQ; + BLITTER_AC = BLITTER_AC & BLITTER_REQ; + END IF; + DDR_SM = DS_T3; + + WHEN DS_T2B => + VRAS = VCC; + FIFO_BANK_NOT_OK = VCC; + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + DDR_SM = DS_T3; + + WHEN DS_T3 => + CPU_AC = CPU_AC; + FIFO_AC = FIFO_AC; + BLITTER_AC = BLITTER_AC; + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + IF !nFB_WR & CPU_AC # BLITTER_WR & BLITTER_AC THEN + DDR_SM = DS_T4W; + ELSE + IF CPU_AC THEN -- CPU? + VA_S[9..0] = CPU_COL_ADR[]; + BA_S[] = CPU_BA[]; + DDR_SM = DS_T4R; + ELSE + IF FIFO_AC THEN -- FIFO? + VA_S[9..0] = FIFO_COL_ADR[]; + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T4F; + ELSE + IF BLITTER_AC THEN + VA_S[9..0] = BLITTER_COL_ADR[]; + BA_S[] = BLITTER_BA[]; + DDR_SM = DS_T4R; + ELSE + DDR_SM = DS_N8; + END IF; + END IF; + END IF; + END IF; +-- READ + WHEN DS_T4R => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VCAS = VCC; + SR_DDR_FB = CPU_AC; -- READ DATEN FÜR CPU + SR_BLITTER_DACK = BLITTER_AC; -- BLITTER DACK AND BLITTER LATCH DATEN + DDR_SM = DS_T5R; + + WHEN DS_T5R => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + IF FIFO_REQ & FIFO_BANK_OK THEN -- FIFO READ EINSCHIEBEN WENN BANK OK + VA_S[9..0] = FIFO_COL_ADR[]; + VA_S[10] = GND; -- MANUEL PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; + END IF; +-- WRITE + WHEN DS_T4W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + SR_BLITTER_DACK = BLITTER_AC; -- BLITTER ACK AND BLITTER LATCH DATEN + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + DDR_SM = DS_T5W; + + WHEN DS_T5W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VA_S[9..0] = CPU_AC & CPU_COL_ADR[] + # BLITTER_AC & BLITTER_COL_ADR[]; + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + BA_S[] = CPU_AC & CPU_BA[] + # BLITTER_AC & BLITTER_BA[]; + SR_VDMP[7..4] = FB_B[]; -- BYTE ENABLE WRITE + SR_VDMP[3..0] = LINE & B"1111"; -- LINE ENABLE WRITE + DDR_SM = DS_T6W; + + WHEN DS_T6W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VCAS = VCC; + VWE = VCC; + SR_DDR_WR = VCC; -- WRITE COMMAND CPU UND BLITTER IF WRITER + SR_DDRWR_D_SEL = VCC; -- 2. HÄLFTE WRITE DATEN SELEKTIEREN + SR_VDMP[] = LINE & B"11111111"; -- WENN LINE DANN ACTIV + DDR_SM = DS_T7W; + + WHEN DS_T7W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + SR_DDR_WR = VCC; -- WRITE COMMAND CPU UND BLITTER IF WRITE + SR_DDRWR_D_SEL = VCC; -- 2. HÄLFTE WRITE DATEN SELEKTIEREN + DDR_SM = DS_T8W; + + WHEN DS_T8W => + DDR_SM = DS_T9W; + + WHEN DS_T9W => + IF FIFO_REQ & FIFO_BANK_OK THEN + VA_S[9..0] = FIFO_COL_ADR[]; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; + END IF; +-- FIFO READ + WHEN DS_T4F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T5F; + + WHEN DS_T5F => + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + ELSE + VA_S[9..0] = FIFO_COL_ADR[]+4; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; -- NOCH OFFEN LASSEN + END IF; + + WHEN DS_T6F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T7F; + + WHEN DS_T7F => + IF CPU_REQ & FIFO_MW[]>FIFO_LWM THEN + VA_S[10] = VCC; -- ALLE PAGES SCHLIESEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + ELSE + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + ELSE + VA_S[9..0] = FIFO_COL_ADR[]+4; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T8F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + END IF; + END IF; + + WHEN DS_T8F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + IF FIFO_MW[] + ELSE + DDR_SM = DS_T9F; + END IF; + + WHEN DS_T9F => + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE BANKS SCHLIESEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + ELSE + VA_P[9..0] = FIFO_COL_ADR[]+4; + VA_P[10] = GND; -- NON AUTO PRECHARGE + BA_P[] = FIFO_BA[]; + DDR_SM = DS_T10F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE BANKS SCHLIESEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + END IF; + + WHEN DS_T10F => + IF DDR_SEL & (nFB_WR # !LINE) & FB_AD[13..12]!=FIFO_BA[] THEN + VRAS = VCC; + VA[] = FB_AD[26..14]; + BA[] = FB_AD[13..12]; + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + VA_S[10] = VCC; -- AUTO PRECHARGE DA NICHT FIFO BANK + DDR_SM = DS_T3; + ELSE + VCAS = VCC; + VA[] = VA_P[]; + BA[] = BA_P[]; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T7F; + END IF; + +-- CONFIG CYCLUS + WHEN DS_C2 => + DDR_SM = DS_C3; + WHEN DS_C3 => + BUS_CYC = CPU_REQ; + DDR_SM = DS_C4; + WHEN DS_C4 => + IF CPU_REQ THEN + DDR_SM = DS_C5; + ELSE + DDR_SM = DS_T1; + END IF; + WHEN DS_C5 => + DDR_SM = DS_C6; + WHEN DS_C6 => + VA_S[] = FB_AD[12..0]; + BA_S[] = FB_AD[14..13]; + DDR_SM = DS_C7; + WHEN DS_C7 => + VRAS = FB_AD18 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + VCAS = FB_AD17 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + VWE = FB_AD16 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + DDR_SM = DS_N8; +-- CLOSE FIFO BANK + WHEN DS_CB6 => + FIFO_BANK_NOT_OK = VCC; -- AUF NOT OK + VRAS = VCC; -- BÄNKE SCHLIESSEN + VWE = VCC; + DDR_SM = DS_N7; + WHEN DS_CB8 => + FIFO_BANK_NOT_OK = VCC; -- AUF NOT OK + VRAS = VCC; -- BÄNKE SCHLIESSEN + VWE = VCC; + DDR_SM = DS_T1; +-- REFRESH 70NS = 10 ZYCLEN + WHEN DS_R2 => + IF DDR_REFRESH_SIG[]==9 THEN -- EIN CYCLUS VORLAUF UM BANKS ZU SCHLIESSEN + VRAS = VCC; -- ALLE BANKS SCHLIESSEN + VWE = VCC; + VA[10] = VCC; + FIFO_BANK_NOT_OK = VCC; + DDR_SM = DS_R4; + ELSE + VCAS = VCC; + VRAS = VCC; + DDR_SM = DS_R3; + END IF; + WHEN DS_R3 => + DDR_SM = DS_R4; + WHEN DS_R4 => + DDR_SM = DS_R5; + WHEN DS_R5 => + DDR_SM = DS_R6; + WHEN DS_R6 => + DDR_SM = DS_N5; +-- LEERSCHLAUFE + WHEN DS_N5 => + DDR_SM = DS_N6; + WHEN DS_N6 => + DDR_SM = DS_N7; + WHEN DS_N7 => + DDR_SM = DS_N8; + WHEN DS_N8 => + DDR_SM = DS_T1; + END CASE; + +--------------------------------------------------------------- +-- BLITTER ---------------------- +----------------------------------------- + BLITTER_REQ.CLK = DDRCLK0; + BLITTER_REQ = BLITTER_SIG & !DDR_CONFIG & VCKE & !nVCS; + BLITTER_ROW_ADR[] = BLITTER_ADR[26..14]; + BLITTER_BA1 = BLITTER_ADR13; + BLITTER_BA0 = BLITTER_ADR12; + BLITTER_COL_ADR[] = BLITTER_ADR[11..2]; +------------------------------------------------------------------------------ +-- FIFO --------------------------------- +-------------------------------------------------------- + FIFO_REQ.CLK = DDRCLK0; + FIFO_REQ = (FIFO_MW[]2048 33MHz CLOCKS +----------------------------------------------------------------------------------------- + DDR_REFRESH_CNT[].CLK = CLK33M; + DDR_REFRESH_CNT[] = DDR_REFRESH_CNT[]+1; -- ZÄHLEN 0-2047 + REFRESH_TIME.CLK = DDRCLK0; + REFRESH_TIME = DDR_REFRESH_CNT[]==0 & !MAIN_CLK; -- SYNC + DDR_REFRESH_SIG[].CLK = DDRCLK0; + DDR_REFRESH_SIG[].ENA = REFRESH_TIME # DDR_SM==DS_R6; + DDR_REFRESH_SIG[] = REFRESH_TIME & 9 & DDR_REFRESH_ON & !DDR_CONFIG -- 9 STÜCK (8 REFRESH UND 1 ALS VORLAUF) + # !REFRESH_TIME & (DDR_REFRESH_SIG[]-1) & DDR_REFRESH_ON & !DDR_CONFIG; -- MINUS 1 WENN GEMACHT + DDR_REFRESH_REQ.CLK = DDRCLK0; + DDR_REFRESH_REQ = DDR_REFRESH_SIG[]!=0 & DDR_REFRESH_ON & !REFRESH_TIME & !DDR_CONFIG; +----------------------------------------------------------- +-- VIDEO REGISTER ----------------------- +--------------------------------------------------------------------------------------------------------------------- + VIDEO_BASE_L_D[].CLK = MAIN_CLK; + VIDEO_BASE_L = !nFB_CS1 & FB_ADR[19..1]==H"7C106"; -- 820D/2 + VIDEO_BASE_L_D[] = FB_AD[23..16]; -- SORRY, NUR 16 BYT GRENZEN + VIDEO_BASE_L_D[].ENA = !nFB_WR & VIDEO_BASE_L & FB_B1; + + VIDEO_BASE_M_D[].CLK = MAIN_CLK; + VIDEO_BASE_M = !nFB_CS1 & FB_ADR[19..1]==H"7C101"; -- 8203/2 + VIDEO_BASE_M_D[] = FB_AD[23..16]; + VIDEO_BASE_M_D[].ENA = !nFB_WR & VIDEO_BASE_M & FB_B3; + + VIDEO_BASE_H_D[].CLK = MAIN_CLK; + VIDEO_BASE_H = !nFB_CS1 & FB_ADR[19..1]==H"7C100"; -- 8200-1/2 + VIDEO_BASE_H_D[] = FB_AD[23..16]; + VIDEO_BASE_H_D[].ENA = !nFB_WR & VIDEO_BASE_H & FB_B1; + VIDEO_BASE_X_D[].CLK = MAIN_CLK; + VIDEO_BASE_X_D[] = FB_AD[26..24]; + VIDEO_BASE_X_D[].ENA = !nFB_WR & VIDEO_BASE_H & FB_B0; + + VIDEO_CNT_L = !nFB_CS1 & FB_ADR[19..1]==H"7C104"; -- 8209/2 + VIDEO_CNT_M = !nFB_CS1 & FB_ADR[19..1]==H"7C103"; -- 8207/2 + VIDEO_CNT_H = !nFB_CS1 & FB_ADR[19..1]==H"7C102"; -- 8204,5/2 + + VIDEO_BASE_X_D_FULL[] = (0,VIDEO_BASE_X_D[]); -- GE + + FB_AD[31..24] = lpm_bustri_BYT( + VIDEO_BASE_H & VIDEO_BASE_X_D_FULL[] + # VIDEO_CNT_H & (0,VIDEO_ACT_ADR[26..24]) + ,(VIDEO_BASE_H # VIDEO_CNT_H) & !nFB_OE); + + FB_AD[23..16] = lpm_bustri_BYT( + VIDEO_BASE_L & VIDEO_BASE_L_D[] + # VIDEO_BASE_M & VIDEO_BASE_M_D[] + # VIDEO_BASE_H & VIDEO_BASE_H_D[] + # VIDEO_CNT_L & VIDEO_ACT_ADR[7..0] + # VIDEO_CNT_M & VIDEO_ACT_ADR[15..8] + # VIDEO_CNT_H & VIDEO_ACT_ADR[23..16] + ,(VIDEO_BASE_L # VIDEO_BASE_M # VIDEO_BASE_H # VIDEO_CNT_L # VIDEO_CNT_M # VIDEO_CNT_H) & !nFB_OE); +END; + diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.v b/FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.v new file mode 100644 index 0000000..238a56b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.v @@ -0,0 +1,1095 @@ +// Xilinx XPort Language Converter, Version 4.1 (110) +// +// AHDL Design Source: DDR_CTR.tdf +// Verilog Design Output: DDR_CTR.v +// Created 03-Mar-2014 09:18 PM +// +// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. +// Xilinx Inc makes no warranty, expressed or implied, with respect to +// the operation and/or functionality of the converted output files. +// + +// DDR_CTR + + +// CREATED BY FREDI ASCHWANDEN +// FIFO WATER MARK +// {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +// {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! +module DDR_CTR(FB_ADR, nFB_CS1, nFB_CS2, nFB_CS3, nFB_OE, FB_SIZE0, FB_SIZE1, + nRSTO, MAIN_CLK, FB_ALE, nFB_WR, DDR_SYNC_66M, CLR_FIFO, VIDEO_RAM_CTR, + BLITTER_ADR, BLITTER_SIG, BLITTER_WR, DDRCLK0, CLK33M, FIFO_MW, VA, nVWE, + nVRAS, nVCS, VCKE, nVCAS, FB_LE, FB_VDOE, SR_FIFO_WRE, SR_DDR_FB, + SR_DDR_WR, SR_DDRWR_D_SEL, SR_VDMP, VIDEO_DDR_TA, SR_BLITTER_DACK, BA, + DDRWR_D_SEL1, VDM_SEL, FB_AD); + +// {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! +// {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + input [31:0] FB_ADR; + input nFB_CS1, nFB_CS2, nFB_CS3, nFB_OE, FB_SIZE0, FB_SIZE1, nRSTO, + MAIN_CLK, FB_ALE, nFB_WR, DDR_SYNC_66M, CLR_FIFO; + input [15:0] VIDEO_RAM_CTR; + input [31:0] BLITTER_ADR; + input BLITTER_SIG, BLITTER_WR, DDRCLK0, CLK33M; + input [8:0] FIFO_MW; + output [12:0] VA; + output nVWE, nVRAS, nVCS, VCKE, nVCAS; + output [3:0] FB_LE; + output [3:0] FB_VDOE; + output SR_FIFO_WRE, SR_DDR_FB, SR_DDR_WR, SR_DDRWR_D_SEL; + output [7:0] SR_VDMP; + output VIDEO_DDR_TA, SR_BLITTER_DACK; + output [1:0] BA; + output DDRWR_D_SEL1; + output [3:0] VDM_SEL; + reg [3:0] FB_LE; + reg [3:0] FB_VDOE; + reg SR_DDR_FB, VIDEO_DDR_TA, SR_BLITTER_DACK; + inout [31:0] FB_AD; + +// START (NORMAL 8 CYCLES TOTAL = 60ns) +// CONFIG +// READ CPU UND BLITTER, +// WRITE CPU UND BLITTER +// READ FIFO +// CLOSE FIFO BANK +// REFRESH 10X7.5NS=75NS + wire [2:0] FB_REGDDR_; + wire [5:0] DDR_SM_; + wire LINE; + wire [3:0] FB_B; + wire [12:0] VA_P; + wire [1:0] BA_P; + wire [12:0] VA_S; + wire [1:0] BA_S; + wire [1:0] MCS; + wire [1:0] MCS_d; + wire CPU_DDR_SYNC, CPU_DDR_SYNC_d, CPU_DDR_SYNC_clk, DDR_SEL, DDR_CS, + DDR_CS_d, DDR_CS_clk, DDR_CS_ena, DDR_CONFIG, SR_DDR_WR_clk, + SR_DDRWR_D_SEL_clk; + wire [12:0] CPU_ROW_ADR; + wire [1:0] CPU_BA; + wire [9:0] CPU_COL_ADR; + wire CPU_SIG, CPU_REQ, CPU_REQ_d, CPU_REQ_clk, CPU_AC, CPU_AC_clk, BUS_CYC, + BUS_CYC_d, BUS_CYC_clk, BLITTER_REQ, BLITTER_REQ_d, BLITTER_REQ_clk, + BLITTER_AC, BLITTER_AC_clk; + wire [12:0] BLITTER_ROW_ADR; + wire [1:0] BLITTER_BA; + wire [9:0] BLITTER_COL_ADR; + wire FIFO_REQ, FIFO_REQ_d, FIFO_REQ_clk, FIFO_AC, FIFO_AC_clk; + wire [12:0] FIFO_ROW_ADR; + wire [1:0] FIFO_BA; + wire [9:0] FIFO_COL_ADR; + wire FIFO_ACTIVE, CLR_FIFO_SYNC, CLR_FIFO_SYNC_d, CLR_FIFO_SYNC_clk, + CLEAR_FIFO_CNT, CLEAR_FIFO_CNT_d, CLEAR_FIFO_CNT_clk, STOP, STOP_d, + STOP_clk, SR_FIFO_WRE_clk, FIFO_BANK_OK, FIFO_BANK_OK_d, + FIFO_BANK_OK_clk, DDR_REFRESH_ON; + wire [10:0] DDR_REFRESH_CNT; + wire [10:0] DDR_REFRESH_CNT_d; + wire DDR_REFRESH_REQ, DDR_REFRESH_REQ_d, DDR_REFRESH_REQ_clk; + wire [3:0] DDR_REFRESH_SIG; + wire [3:0] DDR_REFRESH_SIG_d; + wire REFRESH_TIME, REFRESH_TIME_d, REFRESH_TIME_clk; + wire [7:0] VIDEO_BASE_L_D; + wire [7:0] VIDEO_BASE_L_D_d; + wire VIDEO_BASE_L; + wire [7:0] VIDEO_BASE_M_D; + wire [7:0] VIDEO_BASE_M_D_d; + wire VIDEO_BASE_M; + wire [7:0] VIDEO_BASE_H_D; + wire [7:0] VIDEO_BASE_H_D_d; + wire VIDEO_BASE_H; + wire [2:0] VIDEO_BASE_X_D; + wire [2:0] VIDEO_BASE_X_D_d; + wire [7:0] VIDEO_BASE_X_D_FULL; + wire [22:0] VIDEO_ADR_CNT; + wire [22:0] VIDEO_ADR_CNT_d; + wire VIDEO_CNT_L, VIDEO_CNT_M, VIDEO_CNT_H; + wire [22:0] VIDEO_BASE_ADR; + wire [26:0] VIDEO_ACT_ADR; + wire vcc, gnd; + wire [7:0] u0_data; + wire u0_enabledt; + wire [7:0] u0_tridata; + wire [7:0] u1_data; + wire u1_enabledt; + wire [7:0] u1_tridata; + wire FIFO_BANK_OK_d_2, BUS_CYC_d_1, BA0_1, BA1_1, VA0_1, VA1_1, VA2_1, + VA3_1, VA4_1, VA5_1, VA6_1, VA7_1, VA8_1, VA9_1, VA10_1, VA11_1, + VA12_1, VIDEO_BASE_X_D0_ena_ctrl, VIDEO_BASE_X_D0_clk_ctrl, + VIDEO_BASE_H_D0_ena_ctrl, VIDEO_BASE_H_D0_clk_ctrl, + VIDEO_BASE_M_D0_ena_ctrl, VIDEO_BASE_M_D0_clk_ctrl, + VIDEO_BASE_L_D0_ena_ctrl, VIDEO_BASE_L_D0_clk_ctrl, + DDR_REFRESH_SIG0_ena_ctrl, DDR_REFRESH_SIG0_clk_ctrl, + DDR_REFRESH_CNT0_clk_ctrl, VIDEO_ADR_CNT0_ena_ctrl, + VIDEO_ADR_CNT0_clk_ctrl, DDR_SM_0_clk_ctrl, BA_P0_clk_ctrl, + VA_P0_clk_ctrl, BA_S0_clk_ctrl, VA_S0_clk_ctrl, MCS0_clk_ctrl, + SR_VDMP0_clk_ctrl, FB_REGDDR_0_clk_ctrl; + reg [2:0] FB_REGDDR__d; + reg [2:0] FB_REGDDR__q; + reg [5:0] DDR_SM__d; + reg [5:0] DDR_SM__q; + reg VCAS, VRAS, VWE; + reg [12:0] VA_P_d; + reg [12:0] VA_P_q; + reg [1:0] BA_P_d; + reg [1:0] BA_P_q; + reg [12:0] VA_S_d; + reg [12:0] VA_S_q; + reg [1:0] BA_S_d; + reg [1:0] BA_S_q; + reg [1:0] MCS_q; + reg CPU_DDR_SYNC_q, DDR_CS_q, SR_DDR_WR_d, SR_DDR_WR_q, SR_DDRWR_D_SEL_d, + SR_DDRWR_D_SEL_q; + reg [7:0] SR_VDMP_d; + reg [7:0] SR_VDMP_q; + reg CPU_REQ_q, CPU_AC_d, CPU_AC_q, BUS_CYC_q, BUS_CYC_END, BLITTER_REQ_q, + BLITTER_AC_d, BLITTER_AC_q, FIFO_REQ_q, FIFO_AC_d, FIFO_AC_q, + CLR_FIFO_SYNC_q, CLEAR_FIFO_CNT_q, STOP_q, SR_FIFO_WRE_d, + SR_FIFO_WRE_q, FIFO_BANK_OK_q, FIFO_BANK_NOT_OK; + reg [10:0] DDR_REFRESH_CNT_q; + reg DDR_REFRESH_REQ_q; + reg [3:0] DDR_REFRESH_SIG_q; + reg REFRESH_TIME_q; + reg [7:0] VIDEO_BASE_L_D_q; + reg [7:0] VIDEO_BASE_M_D_q; + reg [7:0] VIDEO_BASE_H_D_q; + reg [2:0] VIDEO_BASE_X_D_q; + reg [22:0] VIDEO_ADR_CNT_q; + reg FIFO_BANK_OK_d_1, BUS_CYC_d_2, BA0_2, BA1_2, VA0_2, VA1_2, VA2_2, VA3_2, + VA4_2, VA5_2, VA6_2, VA7_2, VA8_2, VA9_2, VA10_2, VA11_2, VA12_2; + + +// Sub Module Section + lpm_bustri_BYT u0 (.data(u0_data), .enabledt(u0_enabledt), + .tridata(u0_tridata)); + + lpm_bustri_BYT u1 (.data(u1_data), .enabledt(u1_enabledt), + .tridata(u1_tridata)); + + + assign SR_FIFO_WRE = SR_FIFO_WRE_q; + always @(posedge SR_FIFO_WRE_clk) + SR_FIFO_WRE_q <= SR_FIFO_WRE_d; + + assign SR_DDR_WR = SR_DDR_WR_q; + always @(posedge SR_DDR_WR_clk) + SR_DDR_WR_q <= SR_DDR_WR_d; + + assign SR_DDRWR_D_SEL = SR_DDRWR_D_SEL_q; + always @(posedge SR_DDRWR_D_SEL_clk) + SR_DDRWR_D_SEL_q <= SR_DDRWR_D_SEL_d; + + assign SR_VDMP = SR_VDMP_q; + always @(posedge SR_VDMP0_clk_ctrl) + SR_VDMP_q <= SR_VDMP_d; + + always @(posedge FB_REGDDR_0_clk_ctrl) + FB_REGDDR__q <= FB_REGDDR__d; + + always @(posedge DDR_SM_0_clk_ctrl) + DDR_SM__q <= DDR_SM__d; + + always @(posedge VA_P0_clk_ctrl) + VA_P_q <= VA_P_d; + + always @(posedge BA_P0_clk_ctrl) + BA_P_q <= BA_P_d; + + always @(posedge VA_S0_clk_ctrl) + VA_S_q <= VA_S_d; + + always @(posedge BA_S0_clk_ctrl) + BA_S_q <= BA_S_d; + + always @(posedge MCS0_clk_ctrl) + MCS_q <= MCS_d; + + always @(posedge CPU_DDR_SYNC_clk) + CPU_DDR_SYNC_q <= CPU_DDR_SYNC_d; + + always @(posedge DDR_CS_clk) + if (DDR_CS_ena) + DDR_CS_q <= DDR_CS_d; + + always @(posedge CPU_REQ_clk) + CPU_REQ_q <= CPU_REQ_d; + + always @(posedge CPU_AC_clk) + CPU_AC_q <= CPU_AC_d; + + always @(posedge BUS_CYC_clk) + BUS_CYC_q <= BUS_CYC_d; + + always @(posedge BLITTER_REQ_clk) + BLITTER_REQ_q <= BLITTER_REQ_d; + + always @(posedge BLITTER_AC_clk) + BLITTER_AC_q <= BLITTER_AC_d; + + always @(posedge FIFO_REQ_clk) + FIFO_REQ_q <= FIFO_REQ_d; + + always @(posedge FIFO_AC_clk) + FIFO_AC_q <= FIFO_AC_d; + + always @(posedge CLR_FIFO_SYNC_clk) + CLR_FIFO_SYNC_q <= CLR_FIFO_SYNC_d; + + always @(posedge CLEAR_FIFO_CNT_clk) + CLEAR_FIFO_CNT_q <= CLEAR_FIFO_CNT_d; + + always @(posedge STOP_clk) + STOP_q <= STOP_d; + + always @(posedge FIFO_BANK_OK_clk) + FIFO_BANK_OK_q <= FIFO_BANK_OK_d; + + always @(posedge DDR_REFRESH_CNT0_clk_ctrl) + DDR_REFRESH_CNT_q <= DDR_REFRESH_CNT_d; + + always @(posedge DDR_REFRESH_REQ_clk) + DDR_REFRESH_REQ_q <= DDR_REFRESH_REQ_d; + + always @(posedge DDR_REFRESH_SIG0_clk_ctrl) + if (DDR_REFRESH_SIG0_ena_ctrl) + DDR_REFRESH_SIG_q <= DDR_REFRESH_SIG_d; + + always @(posedge REFRESH_TIME_clk) + REFRESH_TIME_q <= REFRESH_TIME_d; + + always @(posedge VIDEO_BASE_L_D0_clk_ctrl) + if (VIDEO_BASE_L_D0_ena_ctrl) + VIDEO_BASE_L_D_q <= VIDEO_BASE_L_D_d; + + always @(posedge VIDEO_BASE_M_D0_clk_ctrl) + if (VIDEO_BASE_M_D0_ena_ctrl) + VIDEO_BASE_M_D_q <= VIDEO_BASE_M_D_d; + + always @(posedge VIDEO_BASE_H_D0_clk_ctrl) + if (VIDEO_BASE_H_D0_ena_ctrl) + VIDEO_BASE_H_D_q <= VIDEO_BASE_H_D_d; + + always @(posedge VIDEO_BASE_X_D0_clk_ctrl) + if (VIDEO_BASE_X_D0_ena_ctrl) + VIDEO_BASE_X_D_q <= VIDEO_BASE_X_D_d; + + always @(posedge VIDEO_ADR_CNT0_clk_ctrl) + if (VIDEO_ADR_CNT0_ena_ctrl) + VIDEO_ADR_CNT_q <= VIDEO_ADR_CNT_d; + +// Start of original equations + assign LINE = FB_SIZE0 & FB_SIZE1; + +// BYT SELECT +// ADR==0 +// LONG UND LINE + assign FB_B[0] = FB_ADR[1:0] == 2'b00 | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) + & (!FB_SIZE0)); + +// ADR==1 +// HIGH WORD +// LONG UND LINE + assign FB_B[1] = FB_ADR[1:0] == 2'b01 | (FB_SIZE1 & (!FB_SIZE0) & + (!FB_ADR[1])) | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) & (!FB_SIZE0)); + +// ADR==2 +// LONG UND LINE + assign FB_B[2] = FB_ADR[1:0] == 2'b10 | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) + & (!FB_SIZE0)); + +// ADR==3 +// LOW WORD +// LONG UND LINE + assign FB_B[3] = FB_ADR[1:0] == 2'b11 | (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) + | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) & (!FB_SIZE0)); + +// CPU READ (REG DDR => CPU) AND WRITE (CPU => REG DDR) -------------------------------------------------- + assign FB_REGDDR_0_clk_ctrl = MAIN_CLK; + + + always @(FB_REGDDR__q or DDR_SEL or BUS_CYC_q or LINE or DDR_CS_q or nFB_OE + or MAIN_CLK or DDR_CONFIG or nFB_WR or vcc) begin + FB_REGDDR__d = FB_REGDDR__q; + {FB_VDOE[0], FB_VDOE[1]} = 2'b00; + {FB_LE[0], FB_LE[1], FB_VDOE[2], FB_LE[2], FB_VDOE[3], FB_LE[3], + VIDEO_DDR_TA, BUS_CYC_END} = 8'b0000_0000; + casex (FB_REGDDR__q) + 3'b000: begin + FB_LE[0] = !nFB_WR; + +// LOS WENN BEREIT ODER IMMER BEI LINE WRITE + if (BUS_CYC_q | (DDR_SEL & LINE & (!nFB_WR))) begin + FB_REGDDR__d = 3'b001; + end else begin + FB_REGDDR__d = 3'b000; + end + end + 3'b001: begin + if (DDR_CS_q) begin + FB_LE[0] = !nFB_WR; + VIDEO_DDR_TA = vcc; + if (LINE) begin + FB_VDOE[0] = (!nFB_OE) & (!DDR_CONFIG); + FB_REGDDR__d = 3'b010; + end else begin + BUS_CYC_END = vcc; + FB_VDOE[0] = (!nFB_OE) & (!MAIN_CLK) & (!DDR_CONFIG); + FB_REGDDR__d = 3'b000; + end + end else begin + FB_REGDDR__d = 3'b000; + end + end + 3'b010: begin + if (DDR_CS_q) begin + FB_VDOE[1] = (!nFB_OE) & (!DDR_CONFIG); + FB_LE[1] = !nFB_WR; + VIDEO_DDR_TA = vcc; + FB_REGDDR__d = 3'b011; + end else begin + FB_REGDDR__d = 3'b000; + end + end + 3'b011: begin + if (DDR_CS_q) begin + FB_VDOE[2] = (!nFB_OE) & (!DDR_CONFIG); + FB_LE[2] = !nFB_WR; + +// BEI LINE WRITE EVT. WARTEN + if ((!BUS_CYC_q) & LINE & (!nFB_WR)) begin + FB_REGDDR__d = 3'b011; + end else begin + VIDEO_DDR_TA = vcc; + FB_REGDDR__d = 3'b100; + end + end else begin + FB_REGDDR__d = 3'b000; + end + end + 3'b100: begin + if (DDR_CS_q) begin + FB_VDOE[3] = (!nFB_OE) & (!MAIN_CLK) & (!DDR_CONFIG); + FB_LE[3] = !nFB_WR; + VIDEO_DDR_TA = vcc; + BUS_CYC_END = vcc; + FB_REGDDR__d = 3'b000; + end else begin + FB_REGDDR__d = 3'b000; + end + end + endcase + end + +// DDR STEUERUNG ----------------------------------------------------- +// VIDEO RAM CONTROL REGISTER (IST IN VIDEO_MUX_CTR) $F0000400: BIT 0: VCKE; 1: !nVCS ;2:REFRESH ON , (0=FIFO UND CNT CLEAR); 3: CONFIG; 8: FIFO_ACTIVE; + assign VCKE = VIDEO_RAM_CTR[0]; + assign nVCS = !VIDEO_RAM_CTR[1]; + assign DDR_REFRESH_ON = VIDEO_RAM_CTR[2]; + assign DDR_CONFIG = VIDEO_RAM_CTR[3]; + assign FIFO_ACTIVE = VIDEO_RAM_CTR[8]; + +// ------------------------------ + assign CPU_ROW_ADR = FB_ADR[26:14]; + assign CPU_BA = FB_ADR[13:12]; + assign CPU_COL_ADR = FB_ADR[11:2]; + assign nVRAS = !VRAS; + assign nVCAS = !VCAS; + assign nVWE = !VWE; + assign SR_DDR_WR_clk = DDRCLK0; + assign SR_DDRWR_D_SEL_clk = DDRCLK0; + assign SR_VDMP0_clk_ctrl = DDRCLK0; + assign SR_FIFO_WRE_clk = DDRCLK0; + assign CPU_AC_clk = DDRCLK0; + assign FIFO_AC_clk = DDRCLK0; + assign BLITTER_AC_clk = DDRCLK0; + assign DDRWR_D_SEL1 = BLITTER_AC_q; + +// SELECT LOGIC + assign DDR_SEL = FB_ALE & FB_AD[31:30] == 2'b01; + assign DDR_CS_clk = MAIN_CLK; + assign DDR_CS_ena = FB_ALE; + assign DDR_CS_d = DDR_SEL; + +// WENN READ ODER WRITE B,W,L DDR SOFORT ANFORDERN, BEI WRITE LINE SPÄTER +// NICHT LINE ODER READ SOFORT LOS WENN NICHT CONFIG +// CONFIG SOFORT LOS +// LINE WRITE SPÄTER + assign CPU_SIG = (DDR_SEL & (nFB_WR | (!LINE)) & (!DDR_CONFIG)) | (DDR_SEL & + DDR_CONFIG) | (FB_REGDDR__q == 3'b010 & (!nFB_WR)); + assign CPU_REQ_clk = DDR_SYNC_66M; + +// HALTEN BUS CYC BEGONNEN ODER FERTIG + assign CPU_REQ_d = CPU_SIG | (CPU_REQ_q & FB_REGDDR__q != 3'b010 & + FB_REGDDR__q != 3'b100 & (!BUS_CYC_END) & (!BUS_CYC_q)); + assign BUS_CYC_clk = DDRCLK0; + assign BUS_CYC_d_1 = BUS_CYC_q & (!BUS_CYC_END); + +// STATE MACHINE SYNCHRONISIEREN ----------------- + assign MCS0_clk_ctrl = DDRCLK0; + assign MCS_d[0] = MAIN_CLK; + assign MCS_d[1] = MCS_q[0]; + assign CPU_DDR_SYNC_clk = DDRCLK0; + +// NUR 1 WENN EIN + assign CPU_DDR_SYNC_d = MCS_q == 2'b10 & VCKE & (!nVCS); + +// ------------------------------------------------- + assign VA_S0_clk_ctrl = DDRCLK0; + assign BA_S0_clk_ctrl = DDRCLK0; + assign {VA12_1, VA11_1, VA10_1, VA9_1, VA8_1, VA7_1, VA6_1, VA5_1, VA4_1, + VA3_1, VA2_1, VA1_1, VA0_1} = VA_S_q; + assign {BA1_1, BA0_1} = BA_S_q; + assign VA_P0_clk_ctrl = DDRCLK0; + assign BA_P0_clk_ctrl = DDRCLK0; + +// DDR STATE MACHINE ----------------------------------------------- + assign DDR_SM_0_clk_ctrl = DDRCLK0; + + + always @(DDR_SM__q or DDR_REFRESH_REQ_q or CPU_DDR_SYNC_q or DDR_CONFIG or + CPU_ROW_ADR or FIFO_ROW_ADR or BLITTER_ROW_ADR or BLITTER_REQ_q or + BLITTER_WR or FIFO_AC_q or CPU_COL_ADR or BLITTER_COL_ADR or VA_S_q or + CPU_BA or BLITTER_BA or FB_B or CPU_AC_q or BLITTER_AC_q or + FIFO_BANK_OK_q or FIFO_MW or FIFO_REQ_q or VIDEO_ADR_CNT_q or + FIFO_COL_ADR or gnd or DDR_SEL or LINE or FIFO_BA or FB_AD or VA_P_q + or BA_P_q or CPU_REQ_q or nFB_WR or FB_SIZE0 or FB_SIZE1 or + DDR_REFRESH_SIG_q or vcc) begin + DDR_SM__d = DDR_SM__q; + BA_S_d = 2'b00; + VA_S_d = 13'b0_0000_0000_0000; + BA_P_d = 2'b00; + {VA_P_d[9], VA_P_d[8], VA_P_d[7], VA_P_d[6], VA_P_d[5], VA_P_d[4], + VA_P_d[3], VA_P_d[2], VA_P_d[1], VA_P_d[0], VA_P_d[10]} = + 11'b000_0000_0000; + SR_VDMP_d = 8'b0000_0000; + VA_P_d[12:11] = 2'b00; + {FIFO_BANK_OK_d_1, FIFO_AC_d, SR_DDR_FB, SR_BLITTER_DACK, BLITTER_AC_d, + SR_DDR_WR_d, SR_DDRWR_D_SEL_d, CPU_AC_d, VA12_2, VA11_2, VA9_2, + VA8_2, VA7_2, VA6_2, VA5_2, VA4_2, VA3_2, VA2_2, VA1_2, VA0_2, + BA1_2, BA0_2, SR_FIFO_WRE_d, BUS_CYC_d_2, VWE, VA10_2, + FIFO_BANK_NOT_OK, VCAS, VRAS} = + 29'b0_0000_0000_0000_0000_0000_0000_0000; + casex (DDR_SM__q) + 6'b00_0000: begin + if (DDR_REFRESH_REQ_q) begin + DDR_SM__d = 6'b01_1111; + +// SYNCHRON UND EIN? + end else if (CPU_DDR_SYNC_q) begin + +// JA + if (DDR_CONFIG) begin + DDR_SM__d = 6'b00_1000; + +// BEI WAIT UND LINE WRITE + end else if (CPU_REQ_q) begin + VA_S_d = CPU_ROW_ADR; + BA_S_d = CPU_BA; + CPU_AC_d = vcc; + BUS_CYC_d_2 = vcc; + DDR_SM__d = 6'b00_0010; + end else begin + +// FIFO IST DEFAULT + if (FIFO_REQ_q | (!BLITTER_REQ_q)) begin + VA_P_d = FIFO_ROW_ADR; + BA_P_d = FIFO_BA; + +// VORBESETZEN + FIFO_AC_d = vcc; + end else begin + VA_P_d = BLITTER_ROW_ADR; + BA_P_d = BLITTER_BA; + +// VORBESETZEN + BLITTER_AC_d = vcc; + end + DDR_SM__d = 6'b00_0001; + end + end else begin + +// NEIN ->SYNCHRONISIEREN + DDR_SM__d = 6'b00_0000; + end + end + 6'b00_0001: begin + +// SCHNELLZUGRIFF *** HIER IST PAGE IMMER NOT OK *** + if (DDR_SEL & (nFB_WR | (!LINE))) begin + VRAS = vcc; + {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, + VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = FB_AD[26:14]; + {BA1_2, BA0_2} = FB_AD[13:12]; + +// AUTO PRECHARGE DA NICHT FIFO PAGE + VA_S_d[10] = vcc; + CPU_AC_d = vcc; + +// BUS CYCLUS LOSTRETEN + BUS_CYC_d_2 = vcc; + end else begin + VRAS = (FIFO_AC_q & FIFO_REQ_q) | (BLITTER_AC_q & + BLITTER_REQ_q); + {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, + VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = VA_P_q; + {BA1_2, BA0_2} = BA_P_q; + VA_S_d[10] = !(FIFO_AC_q & FIFO_REQ_q); + FIFO_BANK_OK_d_1 = FIFO_AC_q & FIFO_REQ_q; + FIFO_AC_d = FIFO_AC_q & FIFO_REQ_q; + BLITTER_AC_d = BLITTER_AC_q & BLITTER_REQ_q; + end + DDR_SM__d = 6'b00_0011; + end + 6'b00_0010: begin + VRAS = vcc; + FIFO_BANK_NOT_OK = vcc; + CPU_AC_d = vcc; + +// BUS CYCLUS LOSTRETEN + BUS_CYC_d_2 = vcc; + DDR_SM__d = 6'b00_0011; + end + 6'b00_0011: begin + CPU_AC_d = CPU_AC_q; + FIFO_AC_d = FIFO_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + +// AUTO PRECHARGE WENN NICHT FIFO PAGE + VA_S_d[10] = VA_S_q[10]; + if (((!nFB_WR) & CPU_AC_q) | (BLITTER_WR & BLITTER_AC_q)) begin + DDR_SM__d = 6'b01_0000; + +// CPU? + end else if (CPU_AC_q) begin + VA_S_d[9:0] = CPU_COL_ADR; + BA_S_d = CPU_BA; + DDR_SM__d = 6'b00_1110; + +// FIFO? + end else if (FIFO_AC_q) begin + VA_S_d[9:0] = FIFO_COL_ADR; + BA_S_d = FIFO_BA; + DDR_SM__d = 6'b01_0110; + end else if (BLITTER_AC_q) begin + VA_S_d[9:0] = BLITTER_COL_ADR; + BA_S_d = BLITTER_BA; + DDR_SM__d = 6'b00_1110; + end else begin + +// READ + DDR_SM__d = 6'b00_0111; + end + end + 6'b00_1110: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + VCAS = vcc; + +// READ DATEN FÜR CPU + SR_DDR_FB = CPU_AC_q; + +// BLITTER DACK AND BLITTER LATCH DATEN + SR_BLITTER_DACK = BLITTER_AC_q; + DDR_SM__d = 6'b00_1111; + end + 6'b00_1111: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + +// FIFO READ EINSCHIEBEN WENN BANK OK + if (FIFO_REQ_q & FIFO_BANK_OK_q) begin + VA_S_d[9:0] = FIFO_COL_ADR; + +// MANUEL PRECHARGE + VA_S_d[10] = gnd; + BA_S_d = FIFO_BA; + DDR_SM__d = 6'b01_1000; + end else begin + +// ALLE PAGES SCHLIESSEN + VA_S_d[10] = vcc; + +// WRITE + DDR_SM__d = 6'b01_1101; + end + end + 6'b01_0000: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + +// BLITTER ACK AND BLITTER LATCH DATEN + SR_BLITTER_DACK = BLITTER_AC_q; + +// AUTO PRECHARGE WENN NICHT FIFO PAGE + VA_S_d[10] = VA_S_q[10]; + DDR_SM__d = 6'b01_0001; + end + 6'b01_0001: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + VA_S_d[9:0] = ({10{CPU_AC_q}} & CPU_COL_ADR) | ({10{BLITTER_AC_q}} + & BLITTER_COL_ADR); + +// AUTO PRECHARGE WENN NICHT FIFO PAGE + VA_S_d[10] = VA_S_q[10]; + BA_S_d = ({2{CPU_AC_q}} & CPU_BA) | ({2{BLITTER_AC_q}} & + BLITTER_BA); + +// BYTE ENABLE WRITE + SR_VDMP_d[7:4] = FB_B; + +// LINE ENABLE WRITE + SR_VDMP_d[3:0] = {4{LINE}} & 4'b1111; + DDR_SM__d = 6'b01_0010; + end + 6'b01_0010: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + VCAS = vcc; + VWE = vcc; + +// WRITE COMMAND CPU UND BLITTER IF WRITER + SR_DDR_WR_d = vcc; + +// 2. HÄLFTE WRITE DATEN SELEKTIEREN + SR_DDRWR_D_SEL_d = vcc; + +// WENN LINE DANN ACTIV + SR_VDMP_d = {8{LINE}} & 8'b1111_1111; + DDR_SM__d = 6'b01_0011; + end + 6'b01_0011: begin + CPU_AC_d = CPU_AC_q; + BLITTER_AC_d = BLITTER_AC_q; + +// WRITE COMMAND CPU UND BLITTER IF WRITE + SR_DDR_WR_d = vcc; + +// 2. HÄLFTE WRITE DATEN SELEKTIEREN + SR_DDRWR_D_SEL_d = vcc; + DDR_SM__d = 6'b01_0100; + end + 6'b01_0100: begin + DDR_SM__d = 6'b01_0101; + end + 6'b01_0101: begin + if (FIFO_REQ_q & FIFO_BANK_OK_q) begin + VA_S_d[9:0] = FIFO_COL_ADR; + +// NON AUTO PRECHARGE + VA_S_d[10] = gnd; + BA_S_d = FIFO_BA; + DDR_SM__d = 6'b01_1000; + end else begin + +// ALLE PAGES SCHLIESSEN + VA_S_d[10] = vcc; + +// FIFO READ + DDR_SM__d = 6'b01_1101; + end + end + 6'b01_0110: begin + VCAS = vcc; + +// DATEN WRITE FIFO + SR_FIFO_WRE_d = vcc; + DDR_SM__d = 6'b01_0111; + end + 6'b01_0111: begin + if (FIFO_REQ_q) begin + +// NEUE PAGE? + if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin + +// ALLE PAGES SCHLIESSEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1101; + end else begin + VA_S_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; + +// NON AUTO PRECHARGE + VA_S_d[10] = gnd; + BA_S_d = FIFO_BA; + DDR_SM__d = 6'b01_1000; + end + end else begin + +// ALLE PAGES SCHLIESSEN + VA_S_d[10] = vcc; + +// NOCH OFFEN LASSEN + DDR_SM__d = 6'b01_1101; + end + end + 6'b01_1000: begin + VCAS = vcc; + +// DATEN WRITE FIFO + SR_FIFO_WRE_d = vcc; + DDR_SM__d = 6'b01_1001; + end + 6'b01_1001: begin + if (CPU_REQ_q & FIFO_MW > 9'b0_0000_0000) begin + +// ALLE PAGES SCHLIESEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1110; + end else if (FIFO_REQ_q) begin + +// NEUE PAGE? + if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin + +// ALLE PAGES SCHLIESSEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1110; + end else begin + VA_S_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; + +// NON AUTO PRECHARGE + VA_S_d[10] = gnd; + BA_S_d = FIFO_BA; + DDR_SM__d = 6'b01_1010; + end + end else begin + +// ALLE PAGES SCHLIESEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1110; + end + end + 6'b01_1010: begin + VCAS = vcc; + +// DATEN WRITE FIFO + SR_FIFO_WRE_d = vcc; + +// NOTFALL? + if (FIFO_MW < 9'b0_0000_0000) begin + +// JA-> + DDR_SM__d = 6'b01_0111; + end else begin + DDR_SM__d = 6'b01_1011; + end + end + 6'b01_1011: begin + if (FIFO_REQ_q) begin + +// NEUE PAGE? + if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin + +// ALLE BANKS SCHLIESEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1101; + end else begin + VA_P_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; + +// NON AUTO PRECHARGE + VA_P_d[10] = gnd; + BA_P_d = FIFO_BA; + DDR_SM__d = 6'b01_1100; + end + end else begin + +// ALLE BANKS SCHLIESEN + VA_S_d[10] = vcc; + +// BANK SCHLIESSEN + DDR_SM__d = 6'b01_1101; + end + end + 6'b01_1100: begin + if (DDR_SEL & (nFB_WR | (!LINE)) & FB_AD[13:12] != FIFO_BA) begin + VRAS = vcc; + {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, + VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = FB_AD[26:14]; + {BA1_2, BA0_2} = FB_AD[13:12]; + CPU_AC_d = vcc; + +// BUS CYCLUS LOSTRETEN + BUS_CYC_d_2 = vcc; + +// AUTO PRECHARGE DA NICHT FIFO BANK + VA_S_d[10] = vcc; + DDR_SM__d = 6'b00_0011; + end else begin + VCAS = vcc; + {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, + VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = VA_P_q; + {BA1_2, BA0_2} = BA_P_q; + +// DATEN WRITE FIFO + SR_FIFO_WRE_d = vcc; + +// CONFIG CYCLUS + DDR_SM__d = 6'b01_1001; + end + end + 6'b00_1000: begin + DDR_SM__d = 6'b00_1001; + end + 6'b00_1001: begin + BUS_CYC_d_2 = CPU_REQ_q; + DDR_SM__d = 6'b00_1010; + end + 6'b00_1010: begin + if (CPU_REQ_q) begin + DDR_SM__d = 6'b00_1011; + end else begin + DDR_SM__d = 6'b00_0000; + end + end + 6'b00_1011: begin + DDR_SM__d = 6'b00_1100; + end + 6'b00_1100: begin + VA_S_d = FB_AD[12:0]; + BA_S_d = FB_AD[14:13]; + DDR_SM__d = 6'b00_1101; + end + 6'b00_1101: begin + +// NUR BEI LONG WRITE + VRAS = FB_AD[18] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); + +// NUR BEI LONG WRITE + VCAS = FB_AD[17] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); + +// NUR BEI LONG WRITE + VWE = FB_AD[16] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); + +// CLOSE FIFO BANK + DDR_SM__d = 6'b00_0111; + end + 6'b01_1101: begin + +// AUF NOT OK + FIFO_BANK_NOT_OK = vcc; + +// BÄNKE SCHLIESSEN + VRAS = vcc; + VWE = vcc; + DDR_SM__d = 6'b00_0110; + end + 6'b01_1110: begin + +// AUF NOT OK + FIFO_BANK_NOT_OK = vcc; + +// BÄNKE SCHLIESSEN + VRAS = vcc; + VWE = vcc; + +// REFRESH 70NS = 10 ZYCLEN + DDR_SM__d = 6'b00_0000; + end + 6'b01_1111: begin + +// EIN CYCLUS VORLAUF UM BANKS ZU SCHLIESSEN + if (DDR_REFRESH_SIG_q == 4'b1001) begin + +// ALLE BANKS SCHLIESSEN + VRAS = vcc; + VWE = vcc; + VA10_2 = vcc; + FIFO_BANK_NOT_OK = vcc; + DDR_SM__d = 6'b10_0001; + end else begin + VCAS = vcc; + VRAS = vcc; + DDR_SM__d = 6'b10_0000; + end + end + 6'b10_0000: begin + DDR_SM__d = 6'b10_0001; + end + 6'b10_0001: begin + DDR_SM__d = 6'b10_0010; + end + 6'b10_0010: begin + DDR_SM__d = 6'b10_0011; + end + 6'b10_0011: begin + +// LEERSCHLAUFE + DDR_SM__d = 6'b00_0100; + end + 6'b00_0100: begin + DDR_SM__d = 6'b00_0101; + end + 6'b00_0101: begin + DDR_SM__d = 6'b00_0110; + end + 6'b00_0110: begin + DDR_SM__d = 6'b00_0111; + end + 6'b00_0111: begin + DDR_SM__d = 6'b00_0000; + end + endcase + end + +// ------------------------------------------------------------- +// BLITTER ---------------------- +// --------------------------------------- + assign BLITTER_REQ_clk = DDRCLK0; + assign BLITTER_REQ_d = BLITTER_SIG & (!DDR_CONFIG) & VCKE & (!nVCS); + assign BLITTER_ROW_ADR = BLITTER_ADR[26:14]; + assign BLITTER_BA[1] = BLITTER_ADR[13]; + assign BLITTER_BA[0] = BLITTER_ADR[12]; + assign BLITTER_COL_ADR = BLITTER_ADR[11:2]; + +// ---------------------------------------------------------------------------- +// FIFO --------------------------------- +// ------------------------------------------------------ + assign FIFO_REQ_clk = DDRCLK0; + assign FIFO_REQ_d = (FIFO_MW < 9'b0_1100_1000 | (FIFO_MW < 9'b1_1111_0100 & + FIFO_REQ_q)) & FIFO_ACTIVE & (!CLEAR_FIFO_CNT_q) & (!STOP_q) & + (!DDR_CONFIG) & VCKE & (!nVCS); + assign FIFO_ROW_ADR = VIDEO_ADR_CNT_q[22:10]; + assign FIFO_BA[1] = VIDEO_ADR_CNT_q[9]; + assign FIFO_BA[0] = VIDEO_ADR_CNT_q[8]; + assign FIFO_COL_ADR = {VIDEO_ADR_CNT_q[7], VIDEO_ADR_CNT_q[6], + VIDEO_ADR_CNT_q[5], VIDEO_ADR_CNT_q[4], VIDEO_ADR_CNT_q[3], + VIDEO_ADR_CNT_q[2], VIDEO_ADR_CNT_q[1], VIDEO_ADR_CNT_q[0], 2'b00}; + assign FIFO_BANK_OK_clk = DDRCLK0; + assign FIFO_BANK_OK_d_2 = FIFO_BANK_OK_q & (!FIFO_BANK_NOT_OK); + +// ZÄHLER RÜCKSETZEN WENN CLR FIFO ---------------- + assign CLR_FIFO_SYNC_clk = DDRCLK0; + +// SYNCHRONISIEREN + assign CLR_FIFO_SYNC_d = CLR_FIFO; + assign CLEAR_FIFO_CNT_clk = DDRCLK0; + assign CLEAR_FIFO_CNT_d = CLR_FIFO_SYNC_q | (!FIFO_ACTIVE); + assign STOP_clk = DDRCLK0; + assign STOP_d = CLR_FIFO_SYNC_q | CLEAR_FIFO_CNT_q; + +// ZÄHLEN ----------------------------------------------- + assign VIDEO_ADR_CNT0_clk_ctrl = DDRCLK0; + assign VIDEO_ADR_CNT0_ena_ctrl = SR_FIFO_WRE_q | CLEAR_FIFO_CNT_q; + assign VIDEO_ADR_CNT_d = ({23{CLEAR_FIFO_CNT_q}} & VIDEO_BASE_ADR) | + ({23{!CLEAR_FIFO_CNT_q}} & (VIDEO_ADR_CNT_q + 23'h1)); + assign VIDEO_BASE_ADR[22:20] = VIDEO_BASE_X_D_q; + assign VIDEO_BASE_ADR[19:12] = VIDEO_BASE_H_D_q; + assign VIDEO_BASE_ADR[11:4] = VIDEO_BASE_M_D_q; + assign VIDEO_BASE_ADR[3:0] = VIDEO_BASE_L_D_q[7:4]; + assign VDM_SEL = VIDEO_BASE_L_D_q[3:0]; + +// AKTUELLE VIDEO ADRESSE + assign VIDEO_ACT_ADR[26:4] = VIDEO_ADR_CNT_q - {14'b00_0000_0000_0000, + FIFO_MW}; + assign VIDEO_ACT_ADR[3:0] = VDM_SEL; + +// --------------------------------------------------------------------------------------- +// REFRESH: IMMER 8 AUFS MAL, ANFORDERUNG ALLE 7.8us X 8 STCK. = 62.4us = 2059->2048 33MHz CLOCKS +// --------------------------------------------------------------------------------------- + assign DDR_REFRESH_CNT0_clk_ctrl = CLK33M; + +// ZÄHLEN 0-2047 + assign DDR_REFRESH_CNT_d = DDR_REFRESH_CNT_q + 11'b000_0000_0001; + assign REFRESH_TIME_clk = DDRCLK0; + +// SYNC + assign REFRESH_TIME_d = DDR_REFRESH_CNT_q == 11'b000_0000_0000 & + (!MAIN_CLK); + assign DDR_REFRESH_SIG0_clk_ctrl = DDRCLK0; + assign DDR_REFRESH_SIG0_ena_ctrl = REFRESH_TIME_q | DDR_SM__q == 6'b10_0011; + +// 9 STÜCK (8 REFRESH UND 1 ALS VORLAUF) +// MINUS 1 WENN GEMACHT + assign DDR_REFRESH_SIG_d = ({4{REFRESH_TIME_q}} & 4'b1001 & + {4{DDR_REFRESH_ON}} & {4{!DDR_CONFIG}}) | ({4{!REFRESH_TIME_q}} & + (DDR_REFRESH_SIG_q - 4'b0001) & {4{DDR_REFRESH_ON}} & + {4{!DDR_CONFIG}}); + assign DDR_REFRESH_REQ_clk = DDRCLK0; + assign DDR_REFRESH_REQ_d = DDR_REFRESH_SIG_q != 4'b0000 & DDR_REFRESH_ON & + (!REFRESH_TIME_q) & (!DDR_CONFIG); + +// --------------------------------------------------------- +// VIDEO REGISTER ----------------------- +// ------------------------------------------------------------------------------------------------------------------- + assign VIDEO_BASE_L_D0_clk_ctrl = MAIN_CLK; + +// 820D/2 + assign VIDEO_BASE_L = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C106; + +// SORRY, NUR 16 BYT GRENZEN + assign VIDEO_BASE_L_D_d = FB_AD[23:16]; + assign VIDEO_BASE_L_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_L & FB_B[1]; + assign VIDEO_BASE_M_D0_clk_ctrl = MAIN_CLK; + +// 8203/2 + assign VIDEO_BASE_M = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C101; + assign VIDEO_BASE_M_D_d = FB_AD[23:16]; + assign VIDEO_BASE_M_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_M & FB_B[3]; + assign VIDEO_BASE_H_D0_clk_ctrl = MAIN_CLK; + +// 8200-1/2 + assign VIDEO_BASE_H = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C100; + assign VIDEO_BASE_H_D_d = FB_AD[23:16]; + assign VIDEO_BASE_H_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_H & FB_B[1]; + assign VIDEO_BASE_X_D0_clk_ctrl = MAIN_CLK; + assign VIDEO_BASE_X_D_d = FB_AD[26:24]; + assign VIDEO_BASE_X_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_H & FB_B[0]; + +// 8209/2 + assign VIDEO_CNT_L = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C104; + +// 8207/2 + assign VIDEO_CNT_M = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C103; + +// 8204,5/2 + assign VIDEO_CNT_H = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C102; + +// GE + assign VIDEO_BASE_X_D_FULL = {5'b0_0000, VIDEO_BASE_X_D_q}; + assign u0_data = ({8{VIDEO_BASE_H}} & VIDEO_BASE_X_D_FULL) | + ({8{VIDEO_CNT_H}} & {5'b0_0000, VIDEO_ACT_ADR[26:24]}); + assign u0_enabledt = (VIDEO_BASE_H | VIDEO_CNT_H) & (!nFB_OE); + assign FB_AD[31:24] = u0_tridata; + assign u1_data = ({8{VIDEO_BASE_L}} & VIDEO_BASE_L_D_q) | ({8{VIDEO_BASE_M}} + & VIDEO_BASE_M_D_q) | ({8{VIDEO_BASE_H}} & VIDEO_BASE_H_D_q) | + ({8{VIDEO_CNT_L}} & VIDEO_ACT_ADR[7:0]) | ({8{VIDEO_CNT_M}} & + VIDEO_ACT_ADR[15:8]) | ({8{VIDEO_CNT_H}} & VIDEO_ACT_ADR[23:16]); + assign u1_enabledt = (VIDEO_BASE_L | VIDEO_BASE_M | VIDEO_BASE_H | + VIDEO_CNT_L | VIDEO_CNT_M | VIDEO_CNT_H) & (!nFB_OE); + assign FB_AD[23:16] = u1_tridata; + + +// Assignments added to explicitly combine the +// effects of multiple drivers in the source + assign FIFO_BANK_OK_d = FIFO_BANK_OK_d_1 | FIFO_BANK_OK_d_2; + assign BUS_CYC_d = BUS_CYC_d_1 | BUS_CYC_d_2; + assign BA[0] = BA0_1 | BA0_2; + assign BA[1] = BA1_1 | BA1_2; + assign VA[0] = VA0_1 | VA0_2; + assign VA[1] = VA1_1 | VA1_2; + assign VA[2] = VA2_1 | VA2_2; + assign VA[3] = VA3_1 | VA3_2; + assign VA[4] = VA4_1 | VA4_2; + assign VA[5] = VA5_1 | VA5_2; + assign VA[6] = VA6_1 | VA6_2; + assign VA[7] = VA7_1 | VA7_2; + assign VA[8] = VA8_1 | VA8_2; + assign VA[9] = VA9_1 | VA9_2; + assign VA[10] = VA10_1 | VA10_2; + assign VA[11] = VA11_1 | VA11_2; + assign VA[12] = VA12_1 | VA12_2; + +// Define power signal(s) + assign vcc = 1'b1; + assign gnd = 1'b0; +endmodule diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/VIDEO_MOD_MUX_CLUTCTR.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/VIDEO_MOD_MUX_CLUTCTR.tdf new file mode 100644 index 0000000..83c39d3 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/VIDEO_MOD_MUX_CLUTCTR.tdf @@ -0,0 +1,684 @@ +TITLE "VIDEO MODUSE UND CLUT CONTROL"; + +-- CREATED BY FREDI ASCHWANDEN + +-- GE http://quartushelp.altera.com/current/mergedProjects/hdl/ahdl/ahdl_elements_arithmetic_operators.htm + +INCLUDE "lpm_bustri_WORD.inc"; +INCLUDE "lpm_bustri_BYT.inc"; + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + +SUBDESIGN VIDEO_MOD_MUX_CLUTCTR +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + nRSTO : INPUT; + MAIN_CLK : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + nFB_CS3 : INPUT; + nFB_WR : INPUT; + nFB_OE : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + nFB_BURST : INPUT; + FB_ADR[31..0] : INPUT; + CLK33M : INPUT; + CLK25M : INPUT; + BLITTER_RUN : INPUT; + CLK_VIDEO : INPUT; + VR_D[8..0] : INPUT; + VR_BUSY : INPUT; + COLOR8 : OUTPUT; + ACP_CLUT_RD : OUTPUT; + COLOR1 : OUTPUT; + FALCON_CLUT_RDH : OUTPUT; + FALCON_CLUT_RDL : OUTPUT; + FALCON_CLUT_WR[3..0] : OUTPUT; + ST_CLUT_RD : OUTPUT; + ST_CLUT_WR[1..0] : OUTPUT; + CLUT_MUX_ADR[3..0] : OUTPUT; + HSYNC : OUTPUT; + VSYNC : OUTPUT; + nBLANK : OUTPUT; + nSYNC : OUTPUT; + nPD_VGA : OUTPUT; + FIFO_RDE : OUTPUT; + COLOR2 : OUTPUT; + COLOR4 : OUTPUT; + PIXEL_CLK : OUTPUT; + CLUT_OFF[3..0] : OUTPUT; + BLITTER_ON : OUTPUT; + VIDEO_RAM_CTR[15..0] : OUTPUT; + VIDEO_MOD_TA : OUTPUT; + CCR[23..0] : OUTPUT; + CCSEL[2..0] : OUTPUT; + ACP_CLUT_WR[3..0] : OUTPUT; + INTER_ZEI : OUTPUT; + DOP_FIFO_CLR : OUTPUT; + VIDEO_RECONFIG : OUTPUT; + VR_WR : OUTPUT; + VR_RD : OUTPUT; + CLR_FIFO : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + CLK17M :DFF; + CLK13M :DFF; + ACP_CLUT_CS :NODE; + ACP_CLUT :NODE; + VIDEO_PLL_CONFIG_CS :NODE; + VR_WR :DFF; + VR_DOUT[8..0] :DFFE; + VR_FRQ[7..0] :DFFE; + VIDEO_PLL_RECONFIG_CS :NODE; + VIDEO_RECONFIG :DFF; + FALCON_CLUT_CS :NODE; + FALCON_CLUT :NODE; + ST_CLUT_CS :NODE; + ST_CLUT :NODE; + FB_B[3..0] :NODE; + FB_16B[1..0] :NODE; + ST_SHIFT_MODE[1..0] :DFFE; + ST_SHIFT_MODE_CS :NODE; + FALCON_SHIFT_MODE[10..0] :DFFE; + FALCON_SHIFT_MODE_CS :NODE; + CLUT_MUX_ADR[3..0] :DFF; + CLUT_MUX_AV[1..0][3..0] :DFF; + ACP_VCTR_CS :NODE; + ACP_VCTR[31..0] :DFFE; + CCR_CS :NODE; + CCR[23..0] :DFFE; + ACP_VIDEO_ON :NODE; + SYS_CTR[6..0] :DFFE; + SYS_CTR_CS :NODE; + VDL_LOF[15..0] :DFFE; + VDL_LOF_CS :NODE; + VDL_LWD[15..0] :DFFE; + VDL_LWD_CS :NODE; +-- DIV. CONTROL REGISTER + CLUT_TA :DFF; -- BRAUCHT EIN WAITSTAT + HSYNC :DFF; + HSYNC_I[7..0] :DFF; + HSY_LEN[7..0] :DFF; -- LÄNGE HSYNC PULS IN PIXEL_CLK + HSYNC_START :DFF; + LAST :DFF; -- LETZTES PIXEL EINER ZEILE ERREICHT + VSYNC :DFF; + VSYNC_START :DFFE; + VSYNC_I[2..0] :DFFE; + nBLANK :DFF; + DISP_ON :DFF; + DPO_ZL :DFFE; + DPO_ON :DFF; + DPO_OFF :DFF; + VDTRON :DFF; + VDO_ZL :DFFE; + VDO_ON :DFF; + VDO_OFF :DFF; + VHCNT[11..0] :DFF; + SUB_PIXEL_CNT[6..0] :DFFE; + VVCNT[10..0] :DFFE; + VERZ[2..0][9..0] :DFF; + RAND[6..0] :DFF; + RAND_ON :NODE; + FIFO_RDE :DFF; + CLR_FIFO :DFFE; + START_ZEILE :DFFE; + SYNC_PIX :DFF; + SYNC_PIX1 :DFF; + SYNC_PIX2 :DFF; + CCSEL[2..0] :DFF; + COLOR16 :NODE; + COLOR24 :NODE; +-- ATARI RESOLUTION + ATARI_SYNC :NODE; + ATARI_HH[31..0] :DFFE; -- HORIZONTAL TIMING 640x480 + ATARI_HH_CS :NODE; + ATARI_VH[31..0] :DFFE; -- VERTIKAL TIMING 640x480 + ATARI_VH_CS :NODE; + ATARI_HL[31..0] :DFFE; -- HORIZONTAL TIMING 320x240 + ATARI_HL_CS :NODE; + ATARI_VL[31..0] :DFFE; -- VERTIKAL TIMING 320x240 + ATARI_VL_CS :NODE; +-- HORIZONTAL + RAND_LINKS[11..0] :NODE; + RAND_LINKS_FULL[23..0] :NODE; -- GE + HDIS_START[11..0] :NODE; + HDIS_END[11..0] :NODE; + RAND_RECHTS[11..0] :NODE; + HS_START[11..0] :NODE; + HS_START_FULL[23..0] :NODE; -- GE + H_TOTAL[11..0] :NODE; + H_TOTAL_FULL[23..0] :NODE; -- GE + HDIS_LEN[11..0] :NODE; + MULF[5..0] :NODE; + VDL_HHT[11..0] :DFFE; + VDL_HHT_CS :NODE; + VDL_HBE[11..0] :DFFE; + VDL_HBE_CS :NODE; + VDL_HDB[11..0] :DFFE; + VDL_HDB_CS :NODE; + VDL_HDE[11..0] :DFFE; + VDL_HDE_CS :NODE; + VDL_HBB[11..0] :DFFE; + VDL_HBB_CS :NODE; + VDL_HSS[11..0] :DFFE; + VDL_HSS_CS :NODE; +-- VERTIKAL + RAND_OBEN[10..0] :NODE; + VDIS_START[10..0] :NODE; + VDIS_END[10..0] :NODE; + RAND_UNTEN[10..0] :NODE; + VS_START[10..0] :NODE; + V_TOTAL[10..0] :NODE; + FALCON_VIDEO :NODE; + ST_VIDEO :NODE; + INTER_ZEI :DFF; + DOP_ZEI :DFF; + DOP_FIFO_CLR :DFF; + + VDL_VBE[10..0] :DFFE; + VDL_VBE_CS :NODE; + VDL_VDB[10..0] :DFFE; + VDL_VDB_CS :NODE; + VDL_VDE[10..0] :DFFE; + VDL_VDE_CS :NODE; + VDL_VBB[10..0] :DFFE; + VDL_VBB_CS :NODE; + VDL_VSS[10..0] :DFFE; + VDL_VSS_CS :NODE; + VDL_VFT[10..0] :DFFE; + VDL_VFT_CS :NODE; + VDL_VCT[8..0] :DFFE; + VDL_VCT_CS :NODE; + VDL_VMD[3..0] :DFFE; + VDL_VMD_CS :NODE; + +BEGIN +-- BYT SELECT 32 BIT + FB_B0 = FB_ADR[1..0]==0; -- ADR==0 + FB_B1 = FB_ADR[1..0]==1 -- ADR==1 + # FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HIGH WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_ADR[1..0]==2 -- ADR==2 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_ADR[1..0]==3 -- ADR==3 + # FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LOW WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE +-- BYT SELECT 16 BIT + FB_16B0 = FB_ADR[0]==0; -- ADR==0 + FB_16B1 = FB_ADR[0]==1 -- ADR==1 + # !(!FB_SIZE1 & FB_SIZE0); -- NOT BYT +-- ACP CLUT -- + ACP_CLUT_CS = !nFB_CS2 & FB_ADR[27..10]==H"0"; -- 0-3FF/1024 + ACP_CLUT_RD = ACP_CLUT_CS & !nFB_OE; + ACP_CLUT_WR[] = FB_B[] & ACP_CLUT_CS & !nFB_WR; + CLUT_TA.CLK = MAIN_CLK; + CLUT_TA = (ACP_CLUT_CS # FALCON_CLUT_CS # ST_CLUT_CS) & !VIDEO_MOD_TA; +--FALCON CLUT -- + FALCON_CLUT_CS = !nFB_CS1 & FB_ADR[19..10]==H"3E6"; -- $F9800/$400 + FALCON_CLUT_RDH = FALCON_CLUT_CS & !nFB_OE & !FB_ADR1; -- HIGH WORD + FALCON_CLUT_RDL = FALCON_CLUT_CS & !nFB_OE & FB_ADR1; -- LOW WORD + FALCON_CLUT_WR[1..0] = FB_16B[] & !FB_ADR1 & FALCON_CLUT_CS & !nFB_WR; + FALCON_CLUT_WR[3..2] = FB_16B[] & FB_ADR1 & FALCON_CLUT_CS & !nFB_WR; +-- ST CLUT -- + ST_CLUT_CS = !nFB_CS1 & FB_ADR[19..5]==H"7C12"; -- $F8240/$20 + ST_CLUT_RD = ST_CLUT_CS & !nFB_OE; + ST_CLUT_WR[] = FB_16B[] & ST_CLUT_CS & !nFB_WR; +-- ST SHIFT MODE + ST_SHIFT_MODE[].CLK = MAIN_CLK; + ST_SHIFT_MODE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C130"; -- $F8260/2 + ST_SHIFT_MODE[] = FB_AD[25..24]; + ST_SHIFT_MODE[].ENA = ST_SHIFT_MODE_CS & !nFB_WR & FB_B0; + COLOR1 = ST_SHIFT_MODE[]==B"10" & !COLOR8 & ST_VIDEO & !ACP_VIDEO_ON; -- MONO + COLOR2 = ST_SHIFT_MODE[]==B"01" & !COLOR8 & ST_VIDEO & !ACP_VIDEO_ON; -- 4 FARBEN + COLOR4 = ST_SHIFT_MODE[]==B"00" & !COLOR8 & ST_VIDEO & !ACP_VIDEO_ON; -- 16 FARBEN +-- FALCON SHIFT MODE + FALCON_SHIFT_MODE[].CLK = MAIN_CLK; + FALCON_SHIFT_MODE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C133"; -- $F8266/2 + FALCON_SHIFT_MODE[] = FB_AD[26..16]; + FALCON_SHIFT_MODE[10..8].ENA = FALCON_SHIFT_MODE_CS & !nFB_WR & FB_B2; + FALCON_SHIFT_MODE[7..0].ENA = FALCON_SHIFT_MODE_CS & !nFB_WR & FB_B3; + CLUT_OFF[3..0] = FALCON_SHIFT_MODE[3..0] & COLOR4; + COLOR1 = FALCON_SHIFT_MODE10 & !COLOR16 & !COLOR8 & FALCON_VIDEO & !ACP_VIDEO_ON; + COLOR8 = FALCON_SHIFT_MODE4 & !COLOR16 & FALCON_VIDEO & !ACP_VIDEO_ON; + COLOR16 = FALCON_SHIFT_MODE8 & FALCON_VIDEO & !ACP_VIDEO_ON; + COLOR4 = !COLOR1 & !COLOR16 & !COLOR8 & FALCON_VIDEO & !ACP_VIDEO_ON; +-- ACP VIDEO CONTROL BIT 0=ACP VIDEO ON, 1=POWER ON VIDEO DAC, 2=ACP 24BIT,3=ACP 16BIT,4=ACP 8BIT,5=ACP 1BIT, 6=FALCON SHIFT MODE;7=ST SHIFT MODE;9..8= VCLK FREQUENZ;15=-SYNC ALLOWED; 31..16=VIDEO_RAM_CTR,25=RANDFARBE EINSCHALTEN, 26=STANDARD ATARI SYNCS + ACP_VCTR[].CLK = MAIN_CLK; + ACP_VCTR_CS = !nFB_CS2 & FB_ADR[27..2]==H"100"; -- $400/4 + ACP_VCTR[31..8] = FB_AD[31..8]; + ACP_VCTR[5..0] = FB_AD[5..0]; + ACP_VCTR[31..24].ENA = ACP_VCTR_CS & FB_B0 & !nFB_WR; + ACP_VCTR[23..16].ENA = ACP_VCTR_CS & FB_B1 & !nFB_WR; + ACP_VCTR[15..8].ENA = ACP_VCTR_CS & FB_B2 & !nFB_WR; + ACP_VCTR[5..0].ENA = ACP_VCTR_CS & FB_B3 & !nFB_WR; + ACP_VIDEO_ON = ACP_VCTR0; + nPD_VGA = ACP_VCTR1; + -- ATARI MODUS + ATARI_SYNC = ACP_VCTR26; -- WENN 1 AUTOMATISCHE AUFLÖSUNG + -- HORIZONTAL TIMING 640x480 + ATARI_HH[].CLK = MAIN_CLK; + ATARI_HH_CS = !nFB_CS2 & FB_ADR[27..2]==H"104"; -- $410/4 + ATARI_HH[] = FB_AD[]; + ATARI_HH[31..24].ENA = ATARI_HH_CS & FB_B0 & !nFB_WR; + ATARI_HH[23..16].ENA = ATARI_HH_CS & FB_B1 & !nFB_WR; + ATARI_HH[15..8].ENA = ATARI_HH_CS & FB_B2 & !nFB_WR; + ATARI_HH[7..0].ENA = ATARI_HH_CS & FB_B3 & !nFB_WR; + -- VERTIKAL TIMING 640x480 + ATARI_VH[].CLK = MAIN_CLK; + ATARI_VH_CS = !nFB_CS2 & FB_ADR[27..2]==H"105"; -- $414/4 + ATARI_VH[] = FB_AD[]; + ATARI_VH[31..24].ENA = ATARI_VH_CS & FB_B0 & !nFB_WR; + ATARI_VH[23..16].ENA = ATARI_VH_CS & FB_B1 & !nFB_WR; + ATARI_VH[15..8].ENA = ATARI_VH_CS & FB_B2 & !nFB_WR; + ATARI_VH[7..0].ENA = ATARI_VH_CS & FB_B3 & !nFB_WR; + -- HORIZONTAL TIMING 320x240 + ATARI_HL[].CLK = MAIN_CLK; + ATARI_HL_CS = !nFB_CS2 & FB_ADR[27..2]==H"106"; -- $418/4 + ATARI_HL[] = FB_AD[]; + ATARI_HL[31..24].ENA = ATARI_HL_CS & FB_B0 & !nFB_WR; + ATARI_HL[23..16].ENA = ATARI_HL_CS & FB_B1 & !nFB_WR; + ATARI_HL[15..8].ENA = ATARI_HL_CS & FB_B2 & !nFB_WR; + ATARI_HL[7..0].ENA = ATARI_HL_CS & FB_B3 & !nFB_WR; + -- VERTIKAL TIMING 320x240 + ATARI_VL[].CLK = MAIN_CLK; + ATARI_VL_CS = !nFB_CS2 & FB_ADR[27..2]==H"107"; -- $41C/4 + ATARI_VL[] = FB_AD[]; + ATARI_VL[31..24].ENA = ATARI_VL_CS & FB_B0 & !nFB_WR; + ATARI_VL[23..16].ENA = ATARI_VL_CS & FB_B1 & !nFB_WR; + ATARI_VL[15..8].ENA = ATARI_VL_CS & FB_B2 & !nFB_WR; + ATARI_VL[7..0].ENA = ATARI_VL_CS & FB_B3 & !nFB_WR; +-- VIDEO PLL CONFIG + VIDEO_PLL_CONFIG_CS = !nFB_CS2 & FB_ADR[27..9]==H"3" & FB_B0 & FB_B1; -- $(F)000'0600-7FF ->6/2 WORD RESP LONG ONLY + VR_WR.CLK = MAIN_CLK; + VR_WR = VIDEO_PLL_CONFIG_CS & !nFB_WR & !VR_BUSY & !VR_WR; + VR_RD = VIDEO_PLL_CONFIG_CS & nFB_WR & !VR_BUSY; + VR_DOUT[].CLK = MAIN_CLK; + VR_DOUT[].ENA = !VR_BUSY; + VR_DOUT[] = VR_D[]; + VR_FRQ[].CLK = MAIN_CLK; + VR_FRQ[].ENA = VR_WR & FB_ADR[8..0]==H"04"; + VR_FRQ[] = FB_AD[23..16]; +-- VIDEO PLL RECONFIG + VIDEO_PLL_RECONFIG_CS = !nFB_CS2 & FB_ADR[27..0]==H"800" & FB_B0; -- $(F)000'0800 + VIDEO_RECONFIG.CLK = MAIN_CLK; + VIDEO_RECONFIG = VIDEO_PLL_RECONFIG_CS & !nFB_WR & !VR_BUSY & !VIDEO_RECONFIG; +------------------------------------------------------------------------------------------------------------------------ + VIDEO_RAM_CTR[] = ACP_VCTR[31..16]; +-------------- COLOR MODE IM ACP SETZEN + COLOR1 = ACP_VCTR5 & !ACP_VCTR4 & !ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR8 = ACP_VCTR4 & !ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR16 = ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR24 = ACP_VCTR2 & ACP_VIDEO_ON; + ACP_CLUT = ACP_VIDEO_ON & (COLOR1 # COLOR8) # ST_VIDEO & COLOR1; +-- ST ODER FALCON SHIFT MODE SETZEN WENN WRITE X..SHIFT REGISTER + ACP_VCTR7 = FALCON_SHIFT_MODE_CS & !nFB_WR & !ACP_VIDEO_ON; + ACP_VCTR6 = ST_SHIFT_MODE_CS & !nFB_WR & !ACP_VIDEO_ON; + ACP_VCTR[7..6].ENA = FALCON_SHIFT_MODE_CS & !nFB_WR # ST_SHIFT_MODE_CS & !nFB_WR # ACP_VCTR_CS & FB_B3 & !nFB_WR & FB_AD0; + FALCON_VIDEO = ACP_VCTR7; + FALCON_CLUT = FALCON_VIDEO & !ACP_VIDEO_ON & !COLOR16; + ST_VIDEO = ACP_VCTR6; + ST_CLUT = ST_VIDEO & !ACP_VIDEO_ON & !FALCON_CLUT & !COLOR1; + CCSEL[].CLK = PIXEL_CLK; + CCSEL[] = B"000" & ST_CLUT -- ONLY FOR INFORMATION + # B"001" & FALCON_CLUT + # B"100" & ACP_CLUT + # B"101" & COLOR16 + # B"110" & COLOR24 + # B"111" & RAND_ON; +-- DIVERSE (VIDEO)-REGISTER ---------------------------- +-- RANDFARBE + CCR[].CLK = MAIN_CLK; + CCR_CS = !nFB_CS2 & FB_ADR[27..2]==H"101"; -- $404/4 + CCR[] = FB_AD[23..0]; + CCR[23..16].ENA = CCR_CS & FB_B1 & !nFB_WR; + CCR[15..8].ENA = CCR_CS & FB_B2 & !nFB_WR; + CCR[7..0].ENA = CCR_CS & FB_B3 & !nFB_WR; +--SYS CTR + SYS_CTR_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C003"; -- $8006/2 + SYS_CTR[].CLK = MAIN_CLK; + SYS_CTR[6..0] = FB_AD[22..16]; + SYS_CTR[6..0].ENA = SYS_CTR_CS & !nFB_WR & FB_B3; + BLITTER_ON = !SYS_CTR3; +--VDL_LOF + VDL_LOF_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C107"; -- $820E/2 + VDL_LOF[].CLK = MAIN_CLK; + VDL_LOF[] = FB_AD[31..16]; + VDL_LOF[15..8].ENA = VDL_LOF_CS & !nFB_WR & FB_B2; + VDL_LOF[7..0].ENA = VDL_LOF_CS & !nFB_WR & FB_B3; +--VDL_LWD + VDL_LWD_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C108"; -- $8210/2 + VDL_LWD[].CLK = MAIN_CLK; + VDL_LWD[] = FB_AD[31..16]; + VDL_LWD[15..8].ENA = VDL_LWD_CS & !nFB_WR & FB_B0; + VDL_LWD[7..0].ENA = VDL_LWD_CS & !nFB_WR & FB_B1; +-- HORIZONTAL +-- VDL_HHT + VDL_HHT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C141"; -- $8282/2 + VDL_HHT[].CLK = MAIN_CLK; + VDL_HHT[] = FB_AD[27..16]; + VDL_HHT[11..8].ENA = VDL_HHT_CS & !nFB_WR & FB_B2; + VDL_HHT[7..0].ENA = VDL_HHT_CS & !nFB_WR & FB_B3; +-- VDL_HBE + VDL_HBE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C143"; -- $8286/2 + VDL_HBE[].CLK = MAIN_CLK; + VDL_HBE[] = FB_AD[27..16]; + VDL_HBE[11..8].ENA = VDL_HBE_CS & !nFB_WR & FB_B2; + VDL_HBE[7..0].ENA = VDL_HBE_CS & !nFB_WR & FB_B3; +-- VDL_HDB + VDL_HDB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C144"; -- $8288/2 + VDL_HDB[].CLK = MAIN_CLK; + VDL_HDB[] = FB_AD[27..16]; + VDL_HDB[11..8].ENA = VDL_HDB_CS & !nFB_WR & FB_B0; + VDL_HDB[7..0].ENA = VDL_HDB_CS & !nFB_WR & FB_B1; +-- VDL_HDE + VDL_HDE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C145"; -- $828A/2 + VDL_HDE[].CLK = MAIN_CLK; + VDL_HDE[] = FB_AD[27..16]; + VDL_HDE[11..8].ENA = VDL_HDE_CS & !nFB_WR & FB_B2; + VDL_HDE[7..0].ENA = VDL_HDE_CS & !nFB_WR & FB_B3; +-- VDL_HBB + VDL_HBB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C142"; -- $8284/2 + VDL_HBB[].CLK = MAIN_CLK; + VDL_HBB[] = FB_AD[27..16]; + VDL_HBB[11..8].ENA = VDL_HBB_CS & !nFB_WR & FB_B0; + VDL_HBB[7..0].ENA = VDL_HBB_CS & !nFB_WR & FB_B1; +-- VDL_HSS + VDL_HSS_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C146"; -- $828C/2 + VDL_HSS[].CLK = MAIN_CLK; + VDL_HSS[] = FB_AD[27..16]; + VDL_HSS[11..8].ENA = VDL_HSS_CS & !nFB_WR & FB_B0; + VDL_HSS[7..0].ENA = VDL_HSS_CS & !nFB_WR & FB_B1; +-- VERTIKAL +-- VDL_VBE + VDL_VBE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C153"; -- $82A6/2 + VDL_VBE[].CLK = MAIN_CLK; + VDL_VBE[] = FB_AD[26..16]; + VDL_VBE[10..8].ENA = VDL_VBE_CS & !nFB_WR & FB_B2; + VDL_VBE[7..0].ENA = VDL_VBE_CS & !nFB_WR & FB_B3; +-- VDL_VDB + VDL_VDB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C154"; -- $82A8/2 + VDL_VDB[].CLK = MAIN_CLK; + VDL_VDB[] = FB_AD[26..16]; + VDL_VDB[10..8].ENA = VDL_VDB_CS & !nFB_WR & FB_B0; + VDL_VDB[7..0].ENA = VDL_VDB_CS & !nFB_WR & FB_B1; +-- VDL_VDE + VDL_VDE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C155"; -- $82AA/2 + VDL_VDE[].CLK = MAIN_CLK; + VDL_VDE[] = FB_AD[26..16]; + VDL_VDE[10..8].ENA = VDL_VDE_CS & !nFB_WR & FB_B2; + VDL_VDE[7..0].ENA = VDL_VDE_CS & !nFB_WR & FB_B3; +-- VDL_VBB + VDL_VBB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C152"; -- $82A4/2 + VDL_VBB[].CLK = MAIN_CLK; + VDL_VBB[] = FB_AD[26..16]; + VDL_VBB[10..8].ENA = VDL_VBB_CS & !nFB_WR & FB_B0; + VDL_VBB[7..0].ENA = VDL_VBB_CS & !nFB_WR & FB_B1; +-- VDL_VSS + VDL_VSS_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C156"; -- $82AC/2 + VDL_VSS[].CLK = MAIN_CLK; + VDL_VSS[] = FB_AD[26..16]; + VDL_VSS[10..8].ENA = VDL_VSS_CS & !nFB_WR & FB_B0; + VDL_VSS[7..0].ENA = VDL_VSS_CS & !nFB_WR & FB_B1; +-- VDL_VFT + VDL_VFT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C151"; -- $82A2/2 + VDL_VFT[].CLK = MAIN_CLK; + VDL_VFT[] = FB_AD[26..16]; + VDL_VFT[10..8].ENA = VDL_VFT_CS & !nFB_WR & FB_B2; + VDL_VFT[7..0].ENA = VDL_VFT_CS & !nFB_WR & FB_B3; +-- VDL_VCT + VDL_VCT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C160"; -- $82C0/2 + VDL_VCT[].CLK = MAIN_CLK; + VDL_VCT[] = FB_AD[24..16]; + VDL_VCT[8].ENA = VDL_VCT_CS & !nFB_WR & FB_B0; + VDL_VCT[7..0].ENA = VDL_VCT_CS & !nFB_WR & FB_B1; +-- VDL_VMD + VDL_VMD_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C161"; -- $82C2/2 + VDL_VMD[].CLK = MAIN_CLK; + VDL_VMD[] = FB_AD[19..16]; + VDL_VMD[3..0].ENA = VDL_VMD_CS & !nFB_WR & FB_B3; +--- REGISTER OUT + FB_AD[31..16] = lpm_bustri_WORD( + ST_SHIFT_MODE_CS & (0,ST_SHIFT_MODE[],B"00000000") + # FALCON_SHIFT_MODE_CS & (0,FALCON_SHIFT_MODE[]) + # SYS_CTR_CS & (B"100000000",SYS_CTR[6..4],!BLITTER_RUN,SYS_CTR[2..0]) + # VDL_LOF_CS & VDL_LOF[] + # VDL_LWD_CS & VDL_LWD[] + # VDL_HBE_CS & (0,VDL_HBE[]) + # VDL_HDB_CS & (0,VDL_HDB[]) + # VDL_HDE_CS & (0,VDL_HDE[]) + # VDL_HBB_CS & (0,VDL_HBB[]) + # VDL_HSS_CS & (0,VDL_HSS[]) + # VDL_HHT_CS & (0,VDL_HHT[]) + # VDL_VBE_CS & (0,VDL_VBE[]) + # VDL_VDB_CS & (0,VDL_VDB[]) + # VDL_VDE_CS & (0,VDL_VDE[]) + # VDL_VBB_CS & (0,VDL_VBB[]) + # VDL_VSS_CS & (0,VDL_VSS[]) + # VDL_VFT_CS & (0,VDL_VFT[]) + # VDL_VCT_CS & (0,VDL_VCT[]) + # VDL_VMD_CS & (0,VDL_VMD[]) + # ACP_VCTR_CS & ACP_VCTR[31..16] + # ATARI_HH_CS & ATARI_HH[31..16] + # ATARI_VH_CS & ATARI_VH[31..16] + # ATARI_HL_CS & ATARI_HL[31..16] + # ATARI_VL_CS & ATARI_VL[31..16] + # CCR_CS & (0,CCR[23..16]) + # VIDEO_PLL_CONFIG_CS & (0,VR_DOUT[]) + # VIDEO_PLL_RECONFIG_CS & (VR_BUSY,B"0000",VR_WR,VR_RD,VIDEO_RECONFIG,H"FA") + ,(ST_SHIFT_MODE_CS # FALCON_SHIFT_MODE_CS # ACP_VCTR_CS # CCR_CS # SYS_CTR_CS # VDL_LOF_CS # VDL_LWD_CS + # VDL_HBE_CS # VDL_HDB_CS # VDL_HDE_CS # VDL_HBB_CS # VDL_HSS_CS # VDL_HHT_CS + # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS # VIDEO_PLL_CONFIG_CS # VIDEO_PLL_RECONFIG_CS + # VDL_VBE_CS # VDL_VDB_CS # VDL_VDE_CS # VDL_VBB_CS # VDL_VSS_CS # VDL_VFT_CS # VDL_VCT_CS # VDL_VMD_CS) & !nFB_OE); + + FB_AD[15..0] = lpm_bustri_WORD( + ACP_VCTR_CS & ACP_VCTR[15..0] + # ATARI_HH_CS & ATARI_HH[15..0] + # ATARI_VH_CS & ATARI_VH[15..0] + # ATARI_HL_CS & ATARI_HL[15..0] + # ATARI_VL_CS & ATARI_VL[15..0] + # CCR_CS & CCR[15..0] + ,(ACP_VCTR_CS # CCR_CS # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS ) & !nFB_OE); + + VIDEO_MOD_TA = CLUT_TA # ST_SHIFT_MODE_CS # FALCON_SHIFT_MODE_CS # ACP_VCTR_CS # SYS_CTR_CS # VDL_LOF_CS # VDL_LWD_CS + # VDL_HBE_CS # VDL_HDB_CS # VDL_HDE_CS # VDL_HBB_CS # VDL_HSS_CS # VDL_HHT_CS + # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS + # VDL_VBE_CS # VDL_VDB_CS # VDL_VDE_CS # VDL_VBB_CS # VDL_VSS_CS # VDL_VFT_CS # VDL_VCT_CS # VDL_VMD_CS; + +-- VIDEO AUSGABE SETZEN + CLK17M.CLK = CLK33M; + CLK17M = !CLK17M; + CLK13M.CLK = CLK25M; + CLK13M = !CLK13M; + PIXEL_CLK = CLK13M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & VDL_VCT2 # VDL_VCT0) + # CLK17M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & !VDL_VCT2 # VDL_VCT0) + # CLK25M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & VDL_VCT2 & !VDL_VCT0 + # CLK33M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & !VDL_VCT2 & !VDL_VCT0 + # CLK25M & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"00" + # CLK33M & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"01" + # CLK_VIDEO & ACP_VIDEO_ON & ACP_VCTR[9]; +-------------------------------------------------------------- +-- HORIZONTALE SYNC LÄNGE in PIXEL_CLK +---------------------------------------------------------------- + HSY_LEN[].CLK = MAIN_CLK; + HSY_LEN[] = 14 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & VDL_VCT2 # VDL_VCT0) + # 16 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & !VDL_VCT2 # VDL_VCT0) + # 28 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & VDL_VCT2 & !VDL_VCT0 + # 32 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & !VDL_VCT2 & !VDL_VCT0 + # 28 & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"00" + # 32 & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"01" + # 16 + (0,VR_FRQ[7..1]) & ACP_VIDEO_ON & ACP_VCTR[9]; -- hsync puls length in pixeln=frequenz/ = 500ns + + MULF[] = 2 & !ST_VIDEO & VDL_VMD2 -- MULTIPLIKATIONS FAKTOR + # 4 & !ST_VIDEO & !VDL_VMD2 + # 16 & ST_VIDEO & VDL_VMD2 + # 32 & ST_VIDEO & !VDL_VMD2; + + + HDIS_LEN[] = 320 & VDL_VMD2 -- BREITE IN PIXELN + # 640 & !VDL_VMD2; + +-- DOPPELZEILENMODUS + DOP_ZEI.CLK = MAIN_CLK; + DOP_ZEI = VDL_VMD0 & ST_VIDEO; -- ZEILENVERDOPPELUNG EIN AUS + INTER_ZEI.CLK = PIXEL_CLK; + INTER_ZEI = DOP_ZEI & VVCNT0!=VDIS_START0 & VVCNT[]!=0 & VHCNT[]<(HDIS_END[]-1) -- EINSCHIEBEZEILE AUF "DOPPEL" ZEILEN UND ZEILE NULL WEGEN SYNC + # DOP_ZEI & VVCNT0==VDIS_START0 & VVCNT[]!=0 & VHCNT[]>(HDIS_END[]-2); -- EINSCHIEBEZEILE AUF "NORMAL" ZEILEN UND ZEILE NULL WEGEN SYNC + DOP_FIFO_CLR.CLK = PIXEL_CLK; + DOP_FIFO_CLR = INTER_ZEI & HSYNC_START # SYNC_PIX; -- DOPPELZEILENFIFO LÖSCHEN AM ENDE DER DOPPELZEILE UND BEI MAIN FIFO START + + RAND_LINKS_FULL[] = VDL_HBE[] * (0,MULF[5..1]); -- GE + HS_START_FULL[] = (VDL_HHT[]+1+VDL_HSS[]) * (0,MULF[5..1]); -- GE + H_TOTAL_FULL[] = (VDL_HHT[]+2) * (0,MULF[]); -- GE + + RAND_LINKS[] = VDL_HBE[] & ACP_VIDEO_ON + # 21 & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # 42 & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # RAND_LINKS_FULL[11..0] & !ACP_VIDEO_ON & !ATARI_SYNC; -- + HDIS_START[] = VDL_HDB[] & ACP_VIDEO_ON + # RAND_LINKS[]+1 & !ACP_VIDEO_ON; -- + HDIS_END[] = VDL_HDE[] & ACP_VIDEO_ON + # RAND_LINKS[]+HDIS_LEN[] & !ACP_VIDEO_ON; -- + RAND_RECHTS[] = VDL_HBB[] & ACP_VIDEO_ON + # HDIS_END[]+1 & !ACP_VIDEO_ON; -- + HS_START[] = VDL_HSS[] & ACP_VIDEO_ON + # ATARI_HL[11..0] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_HH[11..0] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # HS_START_FULL[11..0] & !ACP_VIDEO_ON & !ATARI_SYNC; -- + H_TOTAL[] = VDL_HHT[] & ACP_VIDEO_ON + # ATARI_HL[27..16] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_HH[27..16] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # H_TOTAL_FULL[11..0] & !ACP_VIDEO_ON & !ATARI_SYNC; -- + + RAND_OBEN[] = VDL_VBE[] & ACP_VIDEO_ON + # 31 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VBE[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + VDIS_START[] = VDL_VDB[] & ACP_VIDEO_ON + # 32 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VDB[10..1])+1 & !ACP_VIDEO_ON & !ATARI_SYNC; + VDIS_END[] = VDL_VDE[] & ACP_VIDEO_ON + # 431 & !ACP_VIDEO_ON & ATARI_SYNC & ST_VIDEO + # 511 & !ACP_VIDEO_ON & ATARI_SYNC & !ST_VIDEO + # (0,VDL_VDE[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + RAND_UNTEN[] = VDL_VBB[] & ACP_VIDEO_ON + # VDIS_END[]+1 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VBB[10..1])+1 & !ACP_VIDEO_ON & !ATARI_SYNC; + VS_START[] = VDL_VSS[] & ACP_VIDEO_ON + # ATARI_VL[10..0] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_VH[10..0] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (0,VDL_VSS[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + V_TOTAL[] = VDL_VFT[] & ACP_VIDEO_ON + # ATARI_VL[26..16] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_VH[26..16] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (0,VDL_VFT[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; +-- ZÄHLER + LAST.CLK = PIXEL_CLK; + LAST = VHCNT[]==(H_TOTAL[]-2); + VHCNT[].CLK = PIXEL_CLK; + VHCNT[] = (VHCNT[] + 1) & !LAST; + VVCNT[].CLK = PIXEL_CLK; + VVCNT[].ENA = LAST; + VVCNT[] = (VVCNT[] + 1) & (VVCNT[]!=V_TOTAL[]-1); +-- DISPLAY ON OFF + DPO_ZL.CLK = PIXEL_CLK; + DPO_ZL = (VVCNT[]>RAND_OBEN[]-1) & (VVCNT[]=(VDIS_START[]-1)) & (VVCNT[]6/2 WORD RESP LONG ONLY + assign VIDEO_PLL_CONFIG_CS = (!nFB_CS2) & FB_ADR[27:9] == 19'h3 & FB_B[0] & + FB_B[1]; + assign VR_WR_clk = MAIN_CLK; + assign VR_WR_d = VIDEO_PLL_CONFIG_CS & (!nFB_WR) & (!VR_BUSY) & (!VR_WR_q); + assign VR_RD = VIDEO_PLL_CONFIG_CS & nFB_WR & (!VR_BUSY); + assign VR_DOUT0_clk_ctrl = MAIN_CLK; + assign VR_DOUT0_ena_ctrl = !VR_BUSY; + assign VR_DOUT_d = VR_D; + assign VR_FRQ0_clk_ctrl = MAIN_CLK; + assign VR_FRQ0_ena_ctrl = VR_WR_q & FB_ADR[8:0] == 9'b0_0000_0100; + assign VR_FRQ_d = FB_AD[23:16]; + +// VIDEO PLL RECONFIG +// $(F)000'0800 + assign VIDEO_PLL_RECONFIG_CS = (!nFB_CS2) & FB_ADR[27:0] == 28'h800 & + FB_B[0]; + assign VIDEO_RECONFIG_clk = MAIN_CLK; + assign VIDEO_RECONFIG_d = VIDEO_PLL_RECONFIG_CS & (!nFB_WR) & (!VR_BUSY) & + (!VIDEO_RECONFIG_q); + +// ---------------------------------------------------------------------------------------------------------------------- + assign VIDEO_RAM_CTR = ACP_VCTR_q[31:16]; + +// ------------ COLOR MODE IM ACP SETZEN + assign COLOR1_3 = ACP_VCTR_q[5] & (!ACP_VCTR_q[4]) & (!ACP_VCTR_q[3]) & + (!ACP_VCTR_q[2]) & ACP_VIDEO_ON; + assign COLOR8_2 = ACP_VCTR_q[4] & (!ACP_VCTR_q[3]) & (!ACP_VCTR_q[2]) & + ACP_VIDEO_ON; + assign COLOR16_2 = ACP_VCTR_q[3] & (!ACP_VCTR_q[2]) & ACP_VIDEO_ON; + assign COLOR24 = ACP_VCTR_q[2] & ACP_VIDEO_ON; + assign ACP_CLUT = (ACP_VIDEO_ON & (COLOR1 | COLOR8)) | (ST_VIDEO & COLOR1); + +// ST ODER FALCON SHIFT MODE SETZEN WENN WRITE X..SHIFT REGISTER + assign ACP_VCTR_d[7] = FALCON_SHIFT_MODE_CS & (!nFB_WR) & (!ACP_VIDEO_ON); + assign ACP_VCTR_d[6] = ST_SHIFT_MODE_CS & (!nFB_WR) & (!ACP_VIDEO_ON); + assign ACP_VCTR6_ena_ctrl = (FALCON_SHIFT_MODE_CS & (!nFB_WR)) | + (ST_SHIFT_MODE_CS & (!nFB_WR)) | (ACP_VCTR_CS & FB_B[3] & (!nFB_WR) & + FB_AD[0]); + assign FALCON_VIDEO = ACP_VCTR_q[7]; + assign FALCON_CLUT = FALCON_VIDEO & (!ACP_VIDEO_ON) & (!COLOR16); + assign ST_VIDEO = ACP_VCTR_q[6]; + assign ST_CLUT = ST_VIDEO & (!ACP_VIDEO_ON) & (!FALCON_CLUT) & (!COLOR1); + assign CCSEL0_clk_ctrl = PIXEL_CLK; + +// ONLY FOR INFORMATION + assign CCSEL_d = (3'b000 & {3{ST_CLUT}}) | (3'b001 & {3{FALCON_CLUT}}) | + (3'b100 & {3{ACP_CLUT}}) | (3'b101 & {3{COLOR16}}) | (3'b110 & + {3{COLOR24}}) | (3'b111 & {3{RAND_ON}}); + +// DIVERSE (VIDEO)-REGISTER ---------------------------- +// RANDFARBE + assign CCR0_clk_ctrl = MAIN_CLK; + +// $404/4 + assign CCR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h101; + assign CCR_d = FB_AD[23:0]; + assign CCR16_ena_ctrl = CCR_CS & FB_B[1] & (!nFB_WR); + assign CCR8_ena_ctrl = CCR_CS & FB_B[2] & (!nFB_WR); + assign CCR0_ena_ctrl = CCR_CS & FB_B[3] & (!nFB_WR); + +// SYS CTR +// $8006/2 + assign SYS_CTR_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C003; + assign SYS_CTR0_clk_ctrl = MAIN_CLK; + assign SYS_CTR_d = FB_AD[22:16]; + assign SYS_CTR0_ena_ctrl = SYS_CTR_CS & (!nFB_WR) & FB_B[3]; + assign BLITTER_ON = !SYS_CTR_q[3]; + +// VDL_LOF +// $820E/2 + assign VDL_LOF_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C107; + assign VDL_LOF0_clk_ctrl = MAIN_CLK; + assign VDL_LOF_d = FB_AD[31:16]; + assign VDL_LOF8_ena_ctrl = VDL_LOF_CS & (!nFB_WR) & FB_B[2]; + assign VDL_LOF0_ena_ctrl = VDL_LOF_CS & (!nFB_WR) & FB_B[3]; + +// VDL_LWD +// $8210/2 + assign VDL_LWD_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C108; + assign VDL_LWD0_clk_ctrl = MAIN_CLK; + assign VDL_LWD_d = FB_AD[31:16]; + assign VDL_LWD8_ena_ctrl = VDL_LWD_CS & (!nFB_WR) & FB_B[0]; + assign VDL_LWD0_ena_ctrl = VDL_LWD_CS & (!nFB_WR) & FB_B[1]; + +// HORIZONTAL +// VDL_HHT +// $8282/2 + assign VDL_HHT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C141; + assign VDL_HHT0_clk_ctrl = MAIN_CLK; + assign VDL_HHT_d = FB_AD[27:16]; + assign VDL_HHT8_ena_ctrl = VDL_HHT_CS & (!nFB_WR) & FB_B[2]; + assign VDL_HHT0_ena_ctrl = VDL_HHT_CS & (!nFB_WR) & FB_B[3]; + +// VDL_HBE +// $8286/2 + assign VDL_HBE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C143; + assign VDL_HBE0_clk_ctrl = MAIN_CLK; + assign VDL_HBE_d = FB_AD[27:16]; + assign VDL_HBE8_ena_ctrl = VDL_HBE_CS & (!nFB_WR) & FB_B[2]; + assign VDL_HBE0_ena_ctrl = VDL_HBE_CS & (!nFB_WR) & FB_B[3]; + +// VDL_HDB +// $8288/2 + assign VDL_HDB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C144; + assign VDL_HDB0_clk_ctrl = MAIN_CLK; + assign VDL_HDB_d = FB_AD[27:16]; + assign VDL_HDB8_ena_ctrl = VDL_HDB_CS & (!nFB_WR) & FB_B[0]; + assign VDL_HDB0_ena_ctrl = VDL_HDB_CS & (!nFB_WR) & FB_B[1]; + +// VDL_HDE +// $828A/2 + assign VDL_HDE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C145; + assign VDL_HDE0_clk_ctrl = MAIN_CLK; + assign VDL_HDE_d = FB_AD[27:16]; + assign VDL_HDE8_ena_ctrl = VDL_HDE_CS & (!nFB_WR) & FB_B[2]; + assign VDL_HDE0_ena_ctrl = VDL_HDE_CS & (!nFB_WR) & FB_B[3]; + +// VDL_HBB +// $8284/2 + assign VDL_HBB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C142; + assign VDL_HBB0_clk_ctrl = MAIN_CLK; + assign VDL_HBB_d = FB_AD[27:16]; + assign VDL_HBB8_ena_ctrl = VDL_HBB_CS & (!nFB_WR) & FB_B[0]; + assign VDL_HBB0_ena_ctrl = VDL_HBB_CS & (!nFB_WR) & FB_B[1]; + +// VDL_HSS +// $828C/2 + assign VDL_HSS_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C146; + assign VDL_HSS0_clk_ctrl = MAIN_CLK; + assign VDL_HSS_d = FB_AD[27:16]; + assign VDL_HSS8_ena_ctrl = VDL_HSS_CS & (!nFB_WR) & FB_B[0]; + assign VDL_HSS0_ena_ctrl = VDL_HSS_CS & (!nFB_WR) & FB_B[1]; + +// VERTIKAL +// VDL_VBE +// $82A6/2 + assign VDL_VBE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C153; + assign VDL_VBE0_clk_ctrl = MAIN_CLK; + assign VDL_VBE_d = FB_AD[26:16]; + assign VDL_VBE8_ena_ctrl = VDL_VBE_CS & (!nFB_WR) & FB_B[2]; + assign VDL_VBE0_ena_ctrl = VDL_VBE_CS & (!nFB_WR) & FB_B[3]; + +// VDL_VDB +// $82A8/2 + assign VDL_VDB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C154; + assign VDL_VDB0_clk_ctrl = MAIN_CLK; + assign VDL_VDB_d = FB_AD[26:16]; + assign VDL_VDB8_ena_ctrl = VDL_VDB_CS & (!nFB_WR) & FB_B[0]; + assign VDL_VDB0_ena_ctrl = VDL_VDB_CS & (!nFB_WR) & FB_B[1]; + +// VDL_VDE +// $82AA/2 + assign VDL_VDE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C155; + assign VDL_VDE0_clk_ctrl = MAIN_CLK; + assign VDL_VDE_d = FB_AD[26:16]; + assign VDL_VDE8_ena_ctrl = VDL_VDE_CS & (!nFB_WR) & FB_B[2]; + assign VDL_VDE0_ena_ctrl = VDL_VDE_CS & (!nFB_WR) & FB_B[3]; + +// VDL_VBB +// $82A4/2 + assign VDL_VBB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C152; + assign VDL_VBB0_clk_ctrl = MAIN_CLK; + assign VDL_VBB_d = FB_AD[26:16]; + assign VDL_VBB8_ena_ctrl = VDL_VBB_CS & (!nFB_WR) & FB_B[0]; + assign VDL_VBB0_ena_ctrl = VDL_VBB_CS & (!nFB_WR) & FB_B[1]; + +// VDL_VSS +// $82AC/2 + assign VDL_VSS_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C156; + assign VDL_VSS0_clk_ctrl = MAIN_CLK; + assign VDL_VSS_d = FB_AD[26:16]; + assign VDL_VSS8_ena_ctrl = VDL_VSS_CS & (!nFB_WR) & FB_B[0]; + assign VDL_VSS0_ena_ctrl = VDL_VSS_CS & (!nFB_WR) & FB_B[1]; + +// VDL_VFT +// $82A2/2 + assign VDL_VFT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C151; + assign VDL_VFT0_clk_ctrl = MAIN_CLK; + assign VDL_VFT_d = FB_AD[26:16]; + assign VDL_VFT8_ena_ctrl = VDL_VFT_CS & (!nFB_WR) & FB_B[2]; + assign VDL_VFT0_ena_ctrl = VDL_VFT_CS & (!nFB_WR) & FB_B[3]; + +// VDL_VCT +// $82C0/2 + assign VDL_VCT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C160; + assign VDL_VCT0_clk_ctrl = MAIN_CLK; + assign VDL_VCT_d = FB_AD[24:16]; + assign VDL_VCT8_ena = VDL_VCT_CS & (!nFB_WR) & FB_B[0]; + assign VDL_VCT0_ena_ctrl = VDL_VCT_CS & (!nFB_WR) & FB_B[1]; + +// VDL_VMD +// $82C2/2 + assign VDL_VMD_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C161; + assign VDL_VMD0_clk_ctrl = MAIN_CLK; + assign VDL_VMD_d = FB_AD[19:16]; + assign VDL_VMD0_ena_ctrl = VDL_VMD_CS & (!nFB_WR) & FB_B[3]; + +// - REGISTER OUT + assign u0_data = ({16{ST_SHIFT_MODE_CS}} & {6'b00_0000, ST_SHIFT_MODE_q, + 8'b0000_0000}) | ({16{FALCON_SHIFT_MODE_CS}} & {5'b0_0000, + FALCON_SHIFT_MODE_q}) | ({16{SYS_CTR_CS}} & {9'b1_0000_0000, + SYS_CTR_q[6:4], !BLITTER_RUN, SYS_CTR_q[2:0]}) | ({16{VDL_LOF_CS}} & + VDL_LOF_q) | ({16{VDL_LWD_CS}} & VDL_LWD_q) | ({16{VDL_HBE_CS}} & + {4'b0000, VDL_HBE_q}) | ({16{VDL_HDB_CS}} & {4'b0000, VDL_HDB_q}) | + ({16{VDL_HDE_CS}} & {4'b0000, VDL_HDE_q}) | ({16{VDL_HBB_CS}} & + {4'b0000, VDL_HBB_q}) | ({16{VDL_HSS_CS}} & {4'b0000, VDL_HSS_q}) | + ({16{VDL_HHT_CS}} & {4'b0000, VDL_HHT_q}) | ({16{VDL_VBE_CS}} & + {5'b0_0000, VDL_VBE_q}) | ({16{VDL_VDB_CS}} & {5'b0_0000, VDL_VDB_q}) + | ({16{VDL_VDE_CS}} & {5'b0_0000, VDL_VDE_q}) | ({16{VDL_VBB_CS}} & + {5'b0_0000, VDL_VBB_q}) | ({16{VDL_VSS_CS}} & {5'b0_0000, VDL_VSS_q}) + | ({16{VDL_VFT_CS}} & {5'b0_0000, VDL_VFT_q}) | ({16{VDL_VCT_CS}} & + {7'b000_0000, VDL_VCT_q}) | ({16{VDL_VMD_CS}} & {12'b0000_0000_0000, + VDL_VMD_q}) | ({16{ACP_VCTR_CS}} & ACP_VCTR_q[31:16]) | + ({16{ATARI_HH_CS}} & ATARI_HH_q[31:16]) | ({16{ATARI_VH_CS}} & + ATARI_VH_q[31:16]) | ({16{ATARI_HL_CS}} & ATARI_HL_q[31:16]) | + ({16{ATARI_VL_CS}} & ATARI_VL_q[31:16]) | ({16{CCR_CS}} & + {8'b0000_0000, CCR_q[23:16]}) | ({16{VIDEO_PLL_CONFIG_CS}} & + {7'b000_0000, VR_DOUT_q}) | ({16{VIDEO_PLL_RECONFIG_CS}} & {VR_BUSY, + 4'b0000, VR_WR_q, VR_RD, VIDEO_RECONFIG_q, 8'b1111_1010}); + assign u0_enabledt = (ST_SHIFT_MODE_CS | FALCON_SHIFT_MODE_CS | ACP_VCTR_CS + | CCR_CS | SYS_CTR_CS | VDL_LOF_CS | VDL_LWD_CS | VDL_HBE_CS | + VDL_HDB_CS | VDL_HDE_CS | VDL_HBB_CS | VDL_HSS_CS | VDL_HHT_CS | + ATARI_HH_CS | ATARI_VH_CS | ATARI_HL_CS | ATARI_VL_CS | + VIDEO_PLL_CONFIG_CS | VIDEO_PLL_RECONFIG_CS | VDL_VBE_CS | VDL_VDB_CS + | VDL_VDE_CS | VDL_VBB_CS | VDL_VSS_CS | VDL_VFT_CS | VDL_VCT_CS | + VDL_VMD_CS) & (!nFB_OE); + assign FB_AD[31:16] = u0_tridata; + assign u1_data = ({16{ACP_VCTR_CS}} & ACP_VCTR_q[15:0]) | ({16{ATARI_HH_CS}} + & ATARI_HH_q[15:0]) | ({16{ATARI_VH_CS}} & ATARI_VH_q[15:0]) | + ({16{ATARI_HL_CS}} & ATARI_HL_q[15:0]) | ({16{ATARI_VL_CS}} & + ATARI_VL_q[15:0]) | ({16{CCR_CS}} & CCR_q[15:0]); + assign u1_enabledt = (ACP_VCTR_CS | CCR_CS | ATARI_HH_CS | ATARI_VH_CS | + ATARI_HL_CS | ATARI_VL_CS) & (!nFB_OE); + assign FB_AD[15:0] = u1_tridata; + assign VIDEO_MOD_TA = CLUT_TA_q | ST_SHIFT_MODE_CS | FALCON_SHIFT_MODE_CS | + ACP_VCTR_CS | SYS_CTR_CS | VDL_LOF_CS | VDL_LWD_CS | VDL_HBE_CS | + VDL_HDB_CS | VDL_HDE_CS | VDL_HBB_CS | VDL_HSS_CS | VDL_HHT_CS | + ATARI_HH_CS | ATARI_VH_CS | ATARI_HL_CS | ATARI_VL_CS | VDL_VBE_CS | + VDL_VDB_CS | VDL_VDE_CS | VDL_VBB_CS | VDL_VSS_CS | VDL_VFT_CS | + VDL_VCT_CS | VDL_VMD_CS; + +// VIDEO AUSGABE SETZEN + assign CLK17M_clk = CLK33M; + assign CLK17M_d = !CLK17M_q; + assign CLK13M_clk = CLK25M; + assign CLK13M_d = !CLK13M_q; + assign PIXEL_CLK = (CLK13M_q & (!ACP_VIDEO_ON) & (FALCON_VIDEO | ST_VIDEO) & + ((VDL_VMD_q[2] & VDL_VCT_q[2]) | VDL_VCT_q[0])) | (CLK17M_q & + (!ACP_VIDEO_ON) & (FALCON_VIDEO | ST_VIDEO) & ((VDL_VMD_q[2] & + (!VDL_VCT_q[2])) | VDL_VCT_q[0])) | (CLK25M & (!ACP_VIDEO_ON) & + (FALCON_VIDEO | ST_VIDEO) & (!VDL_VMD_q[2]) & VDL_VCT_q[2] & + (!VDL_VCT_q[0])) | (CLK33M & (!ACP_VIDEO_ON) & (FALCON_VIDEO | + ST_VIDEO) & (!VDL_VMD_q[2]) & (!VDL_VCT_q[2]) & (!VDL_VCT_q[0])) | + (CLK25M & ACP_VIDEO_ON & ACP_VCTR_q[9:8] == 2'b00) | (CLK33M & + ACP_VIDEO_ON & ACP_VCTR_q[9:8] == 2'b01) | (CLK_VIDEO & ACP_VIDEO_ON & + ACP_VCTR_q[9]); + +// ------------------------------------------------------------ +// HORIZONTALE SYNC LÄNGE in PIXEL_CLK +// -------------------------------------------------------------- + assign HSY_LEN0_clk_ctrl = MAIN_CLK; + +// hsync puls length in pixeln=frequenz/ = 500ns + assign HSY_LEN_d = (8'b0000_1110 & {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | + {8{ST_VIDEO}}) & (({8{VDL_VMD_q[2]}} & {8{VDL_VCT_q[2]}}) | + {8{VDL_VCT_q[0]}})) | (8'b0001_0000 & {8{!ACP_VIDEO_ON}} & + ({8{FALCON_VIDEO}} | {8{ST_VIDEO}}) & (({8{VDL_VMD_q[2]}} & + {8{!VDL_VCT_q[2]}}) | {8{VDL_VCT_q[0]}})) | (8'b0001_1100 & + {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | {8{ST_VIDEO}}) & + {8{!VDL_VMD_q[2]}} & {8{VDL_VCT_q[2]}} & {8{!VDL_VCT_q[0]}}) | + (8'b0010_0000 & {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | + {8{ST_VIDEO}}) & {8{!VDL_VMD_q[2]}} & {8{!VDL_VCT_q[2]}} & + {8{!VDL_VCT_q[0]}}) | (8'b0001_1100 & {8{ACP_VIDEO_ON}} & + {8{ACP_VCTR_q[9:8] == 2'b00}}) | (8'b0010_0000 & {8{ACP_VIDEO_ON}} & + {8{ACP_VCTR_q[9:8] == 2'b01}}) | ((8'b0001_0000 + {1'b0, + VR_FRQ_q[7:1]}) & {8{ACP_VIDEO_ON}} & {8{ACP_VCTR_q[9]}}); + +// MULTIPLIKATIONS FAKTOR + assign MULF = (6'b00_0010 & {6{!ST_VIDEO}} & {6{VDL_VMD_q[2]}}) | + (6'b00_0100 & {6{!ST_VIDEO}} & {6{!VDL_VMD_q[2]}}) | (6'b01_0000 & + {6{ST_VIDEO}} & {6{VDL_VMD_q[2]}}) | (6'b10_0000 & {6{ST_VIDEO}} & + {6{!VDL_VMD_q[2]}}); + +// BREITE IN PIXELN + assign HDIS_LEN = (12'b0001_0100_0000 & {12{VDL_VMD_q[2]}}) | + (12'b0010_1000_0000 & {12{!VDL_VMD_q[2]}}); + +// DOPPELZEILENMODUS + assign DOP_ZEI_clk = MAIN_CLK; + +// ZEILENVERDOPPELUNG EIN AUS + assign DOP_ZEI_d = VDL_VMD_q[0] & ST_VIDEO; + assign INTER_ZEI_clk = PIXEL_CLK; + +// EINSCHIEBEZEILE AUF "DOPPEL" ZEILEN UND ZEILE NULL WEGEN SYNC +// EINSCHIEBEZEILE AUF "NORMAL" ZEILEN UND ZEILE NULL WEGEN SYNC + assign INTER_ZEI_d = (DOP_ZEI_q & VVCNT_q[0] != VDIS_START[0] & VVCNT_q != + 11'b000_0000_0000 & VHCNT_q < (HDIS_END - 12'b0000_0000_0001)) | + (DOP_ZEI_q & VVCNT_q[0] == VDIS_START[0] & VVCNT_q != + 11'b000_0000_0000 & VHCNT_q > (HDIS_END - 12'b0000_0000_0010)); + assign DOP_FIFO_CLR_clk = PIXEL_CLK; + +// DOPPELZEILENFIFO LÖSCHEN AM ENDE DER DOPPELZEILE UND BEI MAIN FIFO START + assign DOP_FIFO_CLR_d = (INTER_ZEI_q & HSYNC_START_q) | SYNC_PIX_q; + +// GE + assign RAND_LINKS_FULL = VDL_HBE_q * {7'b000_0000, MULF[5:1]}; + +// GE + assign HS_START_FULL = ((VDL_HHT_q + 24'h1) + VDL_HSS_q) * {7'b000_0000, + MULF[5:1]}; + +// GE + assign H_TOTAL_FULL = (VDL_HHT_q + 24'h2) * {6'b00_0000, MULF}; + assign RAND_LINKS = (VDL_HBE_q & {12{ACP_VIDEO_ON}}) | (12'b0000_0001_0101 & + {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | + (12'b0000_0010_1010 & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & + {12{!VDL_VMD_q[2]}}) | (RAND_LINKS_FULL[11:0] & {12{!ACP_VIDEO_ON}} & + {12{!ATARI_SYNC}}); + assign HDIS_START = (VDL_HDB_q & {12{ACP_VIDEO_ON}}) | ((RAND_LINKS + + 12'b0000_0000_0001) & {12{!ACP_VIDEO_ON}}); + assign HDIS_END = (VDL_HDE_q & {12{ACP_VIDEO_ON}}) | ((RAND_LINKS + + HDIS_LEN) & {12{!ACP_VIDEO_ON}}); + assign RAND_RECHTS = (VDL_HBB_q & {12{ACP_VIDEO_ON}}) | ((HDIS_END + + 12'b0000_0000_0001) & {12{!ACP_VIDEO_ON}}); + assign HS_START = (VDL_HSS_q & {12{ACP_VIDEO_ON}}) | (ATARI_HL_q[11:0] & + {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | + (ATARI_HH_q[11:0] & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & + {12{!VDL_VMD_q[2]}}) | (HS_START_FULL[11:0] & {12{!ACP_VIDEO_ON}} & + {12{!ATARI_SYNC}}); + assign H_TOTAL = (VDL_HHT_q & {12{ACP_VIDEO_ON}}) | (ATARI_HL_q[27:16] & + {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | + (ATARI_HH_q[27:16] & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & + {12{!VDL_VMD_q[2]}}) | (H_TOTAL_FULL[11:0] & {12{!ACP_VIDEO_ON}} & + {12{!ATARI_SYNC}}); + assign RAND_OBEN = (VDL_VBE_q & {11{ACP_VIDEO_ON}}) | (11'b000_0001_1111 & + {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | ({1'b0, VDL_VBE_q[10:1]} & + {11{!ACP_VIDEO_ON}} & {11{!ATARI_SYNC}}); + assign VDIS_START = (VDL_VDB_q & {11{ACP_VIDEO_ON}}) | (11'b000_0010_0000 & + {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | (({1'b0, VDL_VDB_q[10:1]} + + 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & {11{!ATARI_SYNC}}); + assign VDIS_END = (VDL_VDE_q & {11{ACP_VIDEO_ON}}) | (11'b001_1010_1111 & + {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{ST_VIDEO}}) | + (11'b001_1111_1111 & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & + {11{!ST_VIDEO}}) | ({1'b0, VDL_VDE_q[10:1]} & {11{!ACP_VIDEO_ON}} & + {11{!ATARI_SYNC}}); + assign RAND_UNTEN = (VDL_VBB_q & {11{ACP_VIDEO_ON}}) | ((VDIS_END + + 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | + (({1'b0, VDL_VBB_q[10:1]} + 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & + {11{!ATARI_SYNC}}); + assign VS_START = (VDL_VSS_q & {11{ACP_VIDEO_ON}}) | (ATARI_VL_q[10:0] & + {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{VDL_VMD_q[2]}}) | + (ATARI_VH_q[10:0] & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & + {11{!VDL_VMD_q[2]}}) | ({1'b0, VDL_VSS_q[10:1]} & {11{!ACP_VIDEO_ON}} + & {11{!ATARI_SYNC}}); + assign V_TOTAL = (VDL_VFT_q & {11{ACP_VIDEO_ON}}) | (ATARI_VL_q[26:16] & + {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{VDL_VMD_q[2]}}) | + (ATARI_VH_q[26:16] & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & + {11{!VDL_VMD_q[2]}}) | ({1'b0, VDL_VFT_q[10:1]} & {11{!ACP_VIDEO_ON}} + & {11{!ATARI_SYNC}}); + +// ZÄHLER + assign LAST_clk = PIXEL_CLK; + assign LAST_d = VHCNT_q == (H_TOTAL - 12'b0000_0000_0010); + assign VHCNT0_clk_ctrl = PIXEL_CLK; + assign VHCNT_d = (VHCNT_q + 12'b0000_0000_0001) & {12{!LAST_q}}; + assign VVCNT0_clk_ctrl = PIXEL_CLK; + assign VVCNT0_ena_ctrl = LAST_q; + assign VVCNT_d = (VVCNT_q + 11'b000_0000_0001) & {11{VVCNT_q != (V_TOTAL - + 11'b000_0000_0001)}}; + +// DISPLAY ON OFF + assign DPO_ZL_clk = PIXEL_CLK; + +// 1 ZEILE DAVOR ON OFF + assign DPO_ZL_d = VVCNT_q > (RAND_OBEN - 11'b000_0000_0001) & VVCNT_q < + (RAND_UNTEN - 11'b000_0000_0001); + +// AM ZEILENENDE ÜBERNEHMEN + assign DPO_ZL_ena = LAST_q; + assign DPO_ON_clk = PIXEL_CLK; + +// BESSER EINZELN WEGEN TIMING + assign DPO_ON_d = VHCNT_q == RAND_LINKS; + assign DPO_OFF_clk = PIXEL_CLK; + assign DPO_OFF_d = VHCNT_q == (RAND_RECHTS - 12'b0000_0000_0001); + assign DISP_ON_clk = PIXEL_CLK; + assign DISP_ON_d = (DISP_ON_q & (!DPO_OFF_q)) | (DPO_ON_q & DPO_ZL_q); + +// DATENTRANSFER ON OFF + assign VDO_ON_clk = PIXEL_CLK; + +// BESSER EINZELN WEGEN TIMING + assign VDO_ON_d = VHCNT_q == (HDIS_START - 12'b0000_0000_0001); + assign VDO_OFF_clk = PIXEL_CLK; + assign VDO_OFF_d = VHCNT_q == HDIS_END; + assign VDO_ZL_clk = PIXEL_CLK; + +// AM ZEILENENDE ÜBERNEHMEN + assign VDO_ZL_ena = LAST_q; + +// 1 ZEILE DAVOR ON OFF + assign VDO_ZL_d = VVCNT_q >= (VDIS_START - 11'b000_0000_0001) & VVCNT_q < + VDIS_END; + assign VDTRON_clk = PIXEL_CLK; + assign VDTRON_d = (VDTRON_q & (!VDO_OFF_q)) | (VDO_ON_q & VDO_ZL_q); + +// VERZÖGERUNG UND SYNC + assign HSYNC_START_clk = PIXEL_CLK; + assign HSYNC_START_d = VHCNT_q == (HS_START - 12'b0000_0000_0011); + assign HSYNC_I0_clk_ctrl = PIXEL_CLK; + assign HSYNC_I_d = (HSY_LEN_q & {8{HSYNC_START_q}}) | ((HSYNC_I_q - + 8'b0000_0001) & {8{!HSYNC_START_q}} & {8{HSYNC_I_q != 8'b0000_0000}}); + assign VSYNC_START_clk = PIXEL_CLK; + assign VSYNC_START_ena = LAST_q; + +// start am ende der Zeile vor dem vsync + assign VSYNC_START_d = VVCNT_q == (VS_START - 11'b000_0000_0011); + assign VSYNC_I0_clk_ctrl = PIXEL_CLK; + +// start am ende der Zeile vor dem vsync + assign VSYNC_I0_ena_ctrl = LAST_q; + +// 3 zeilen vsync length +// runterzählen bis 0 + assign VSYNC_I_d = (3'b011 & {3{VSYNC_START_q}}) | ((VSYNC_I_q - 3'b001) & + {3{!VSYNC_START_q}} & {3{VSYNC_I_q != 3'b000}}); + assign VERZ2_0_clk_ctrl = PIXEL_CLK; + assign VERZ1_0_clk_ctrl = PIXEL_CLK; + assign VERZ0_0_clk_ctrl = PIXEL_CLK; + assign {VERZ2__d[1], VERZ1__d[1], VERZ0__d[1]} = {VERZ2__q[0], VERZ1__q[0], + VERZ0__q[0]}; + assign {VERZ2__d[2], VERZ1__d[2], VERZ0__d[2]} = {VERZ2__q[1], VERZ1__q[1], + VERZ0__q[1]}; + assign {VERZ2__d[3], VERZ1__d[3], VERZ0__d[3]} = {VERZ2__q[2], VERZ1__q[2], + VERZ0__q[2]}; + assign {VERZ2__d[4], VERZ1__d[4], VERZ0__d[4]} = {VERZ2__q[3], VERZ1__q[3], + VERZ0__q[3]}; + assign {VERZ2__d[5], VERZ1__d[5], VERZ0__d[5]} = {VERZ2__q[4], VERZ1__q[4], + VERZ0__q[4]}; + assign {VERZ2__d[6], VERZ1__d[6], VERZ0__d[6]} = {VERZ2__q[5], VERZ1__q[5], + VERZ0__q[5]}; + assign {VERZ2__d[7], VERZ1__d[7], VERZ0__d[7]} = {VERZ2__q[6], VERZ1__q[6], + VERZ0__q[6]}; + assign {VERZ2__d[8], VERZ1__d[8], VERZ0__d[8]} = {VERZ2__q[7], VERZ1__q[7], + VERZ0__q[7]}; + assign {VERZ2__d[9], VERZ1__d[9], VERZ0__d[9]} = {VERZ2__q[8], VERZ1__q[8], + VERZ0__q[8]}; + assign VERZ0__d[0] = DISP_ON_q; + assign VERZ1_0_d_1 = HSYNC_I_q != 8'b0000_0000; + +// NUR MÖGLICH WENN BEIDE + assign VERZ1_0_d_2 = (((!ACP_VCTR_q[15]) | (!VDL_VCT_q[6])) & HSYNC_I_q != + 8'b0000_0000) | (ACP_VCTR_q[15] & VDL_VCT_q[6] & HSYNC_I_q == + 8'b0000_0000); + +// NUR MÖGLICH WENN BEIDE + assign VERZ2__d[0] = (((!ACP_VCTR_q[15]) | (!VDL_VCT_q[5])) & VSYNC_I_q != + 3'b000) | (ACP_VCTR_q[15] & VDL_VCT_q[5] & VSYNC_I_q == 3'b000); + assign nBLANK_clk = PIXEL_CLK; + assign nBLANK_d = VERZ0__q[8]; + assign HSYNC_clk = PIXEL_CLK; + assign HSYNC_d = VERZ1__q[9]; + assign VSYNC_clk = PIXEL_CLK; + assign VSYNC_d = VERZ2__q[9]; + assign nSYNC = gnd; + +// RANDFARBE MACHEN ------------------------------------ + assign RAND0_clk_ctrl = PIXEL_CLK; + assign RAND_d[0] = DISP_ON_q & (!VDTRON_q) & ACP_VCTR_q[25]; + assign RAND_d[1] = RAND_q[0]; + assign RAND_d[2] = RAND_q[1]; + assign RAND_d[3] = RAND_q[2]; + assign RAND_d[4] = RAND_q[3]; + assign RAND_d[5] = RAND_q[4]; + assign RAND_d[6] = RAND_q[5]; + assign RAND_ON = RAND_q[6]; + +// -------------------------------------------------------- + assign CLR_FIFO_clk = PIXEL_CLK; + assign CLR_FIFO_ena = LAST_q; + +// IN LETZTER ZEILE LÖSCHEN + assign CLR_FIFO_d = VVCNT_q == (V_TOTAL - 11'b000_0000_0010); + assign START_ZEILE_clk = PIXEL_CLK; + assign START_ZEILE_ena = LAST_q; + +// ZEILE 1 + assign START_ZEILE_d = VVCNT_q == 11'b000_0000_0000; + assign SYNC_PIX_clk = PIXEL_CLK; + +// SUB PIXEL ZÄHLER SYNCHRONISIEREN + assign SYNC_PIX_d = VHCNT_q == 12'b0000_0000_0011 & START_ZEILE_q; + assign SYNC_PIX1_clk = PIXEL_CLK; + +// SUB PIXEL ZÄHLER SYNCHRONISIEREN + assign SYNC_PIX1_d = VHCNT_q == 12'b0000_0000_0101 & START_ZEILE_q; + assign SYNC_PIX2_clk = PIXEL_CLK; + +// SUB PIXEL ZÄHLER SYNCHRONISIEREN + assign SYNC_PIX2_d = VHCNT_q == 12'b0000_0000_0111 & START_ZEILE_q; + assign SUB_PIXEL_CNT0_clk_ctrl = PIXEL_CLK; + assign SUB_PIXEL_CNT0_ena_ctrl = VDTRON_q | SYNC_PIX_q; + +// count up if display on sonst clear bei sync pix + assign SUB_PIXEL_CNT_d = (SUB_PIXEL_CNT_q + 7'b000_0001) & {7{!SYNC_PIX_q}}; + assign FIFO_RDE_clk = PIXEL_CLK; + +// 3 CLOCK ZUSÄTZLICH FÜR FIFO SHIFT DATAOUT UND SHIFT RIGTH POSITION + assign FIFO_RDE_d = (((SUB_PIXEL_CNT_q == 7'b000_0001 & COLOR1) | + (SUB_PIXEL_CNT_q[5:0] == 6'b00_0001 & COLOR2) | (SUB_PIXEL_CNT_q[4:0] + == 5'b0_0001 & COLOR4) | (SUB_PIXEL_CNT_q[3:0] == 4'b0001 & COLOR8) | + (SUB_PIXEL_CNT_q[2:0] == 3'b001 & COLOR16) | (SUB_PIXEL_CNT_q[1:0] == + 2'b01 & COLOR24)) & VDTRON_q) | SYNC_PIX_q | SYNC_PIX1_q | + SYNC_PIX2_q; + assign CLUT_MUX_ADR0_clk_ctrl = PIXEL_CLK; + assign CLUT_MUX_AV1_0_clk_ctrl = PIXEL_CLK; + assign CLUT_MUX_AV0_0_clk_ctrl = PIXEL_CLK; + assign CLUT_MUX_AV0__d = SUB_PIXEL_CNT_q[3:0]; + assign CLUT_MUX_AV1__d = CLUT_MUX_AV0__q; + assign CLUT_MUX_ADR_d = CLUT_MUX_AV1__q; + + +// Assignments added to explicitly combine the +// effects of multiple drivers in the source + assign COLOR16 = COLOR16_1 | COLOR16_2; + assign VERZ1__d[0] = VERZ1_0_d_1 | VERZ1_0_d_2; + assign COLOR4 = COLOR4_1 | COLOR4_2; + assign COLOR1 = COLOR1_1 | COLOR1_2 | COLOR1_3; + assign COLOR8 = COLOR8_1 | COLOR8_2; + +// Define power signal(s) + assign gnd = 1'b0; +endmodule diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.tdf new file mode 100644 index 0000000..a455469 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.tdf @@ -0,0 +1,478 @@ +TITLE "INTERRUPT HANDLER UND C1287"; + +-- CREATED BY FREDI ASCHWANDEN + +INCLUDE "lpm_bustri_LONG.inc"; +INCLUDE "lpm_bustri_BYT.inc"; + + +-- Parameters Statement (optional) + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + + +-- Subdesign Section + +SUBDESIGN interrupt_handler +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + MAIN_CLK : INPUT; + nFB_WR : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + FB_ADR[31..0] : INPUT; + PIC_INT : INPUT; + E0_INT : INPUT; + DVI_INT : INPUT; + nPCI_INTA : INPUT; + nPCI_INTB : INPUT; + nPCI_INTC : INPUT; + nPCI_INTD : INPUT; + nMFP_INT : INPUT; + nFB_OE : INPUT; + DSP_INT : INPUT; + VSYNC : INPUT; + HSYNC : INPUT; + DMA_DRQ : INPUT; + nIRQ[7..2] : OUTPUT; + INT_HANDLER_TA : OUTPUT; + ACP_CONF[31..0] : OUTPUT; + TIN0 : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + FB_B[3..0] :NODE; + INT_CTR[31..0] :DFFE; + INT_CTR_CS :NODE; + INT_LATCH[31..0] :DFF; + INT_LATCH_CS :NODE; + INT_CLEAR[31..0] :DFF; + INT_CLEAR_CS :NODE; + INT_IN[31..0] :NODE; + INT_ENA[31..0] :DFFE; + INT_ENA_CS :NODE; + ACP_CONF[31..0] :DFFE; + ACP_CONF_CS :NODE; + PSEUDO_BUS_ERROR :NODE; + UHR_AS :NODE; + UHR_DS :NODE; + RTC_ADR[5..0] :DFFE; + ACHTELSEKUNDEN[2..0] :DFFE; + WERTE[7..0][63..0] :DFFE; -- WERTE REGISTER 0-63 + PIC_INT_SYNC[2..0] :DFF; + INC_SEC :NODE; + INC_MIN :NODE; + INC_STD :NODE; + INC_TAG :NODE; + ANZAHL_TAGE_DES_MONATS[7..0]:NODE; + WINTERZEIT :NODE; + SOMMERZEIT :NODE; + INC_MONAT :NODE; + INC_JAHR :NODE; + UPDATE_ON :NODE; + +BEGIN +-- BYT SELECT + FB_B0 = FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HWORD + # !FB_SIZE1 & FB_SIZE0 & !FB_ADR1 & !FB_ADR0 -- HHBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B1 = FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HWORD + # !FB_SIZE1 & FB_SIZE0 & !FB_ADR1 & FB_ADR0 -- HLBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LWORD + # !FB_SIZE1 & FB_SIZE0 & FB_ADR1 & !FB_ADR0 -- LHBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LWORD + # !FB_SIZE1 & FB_SIZE0 & FB_ADR1 & FB_ADR0 -- LLBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + +-- INTERRUPT CONTROL REGISTER: BIT0=INT5 AUSLÖSEN, 1=INT7 AUSLÖSEN + INT_CTR[].CLK = MAIN_CLK; + INT_CTR_CS = !nFB_CS2 & FB_ADR[27..2]==H"4000"; -- $10000/4 + INT_CTR[] = FB_AD[]; + INT_CTR[31..24].ENA = INT_CTR_CS & FB_B0 & !nFB_WR; + INT_CTR[23..16].ENA = INT_CTR_CS & FB_B1 & !nFB_WR; + INT_CTR[15..8].ENA = INT_CTR_CS & FB_B2 & !nFB_WR; + INT_CTR[7..0].ENA = INT_CTR_CS & FB_B3 & !nFB_WR; +-- INTERRUPT ENABLE REGISTER BIT31=INT7,30=INT6,29=INT5,28=INT4,27=INT3,26=INT2 + INT_ENA[].CLK = MAIN_CLK; + INT_ENA_CS = !nFB_CS2 & FB_ADR[27..2]==H"4001"; -- $10004/4 + INT_ENA[] = FB_AD[]; + INT_ENA[31..24].ENA = INT_ENA_CS & FB_B0 & !nFB_WR; + INT_ENA[23..16].ENA = INT_ENA_CS & FB_B1 & !nFB_WR; + INT_ENA[15..8].ENA = INT_ENA_CS & FB_B2 & !nFB_WR; + INT_ENA[7..0].ENA = INT_ENA_CS & FB_B3 & !nFB_WR; +-- INTERRUPT CLEAR REGISTER WRITE ONLY 1=INTERRUPT CLEAR + INT_CLEAR[].CLK = MAIN_CLK; + INT_CLEAR_CS = !nFB_CS2 & FB_ADR[27..2]==H"4002"; -- $10008/4 + INT_CLEAR[31..24] = FB_AD[31..24] & INT_CLEAR_CS & FB_B0 & !nFB_WR; + INT_CLEAR[23..16] = FB_AD[23..16] & INT_CLEAR_CS & FB_B1 & !nFB_WR; + INT_CLEAR[15..8] = FB_AD[15..8] & INT_CLEAR_CS & FB_B2 & !nFB_WR; + INT_CLEAR[7..0] = FB_AD[7..0] & INT_CLEAR_CS & FB_B3 & !nFB_WR; +-- INTERRUPT LATCH REGISTER READ ONLY + INT_LATCH_CS = !nFB_CS2 & FB_ADR[27..2]==H"4003"; -- $1000C/4 +-- INTERRUPT + !nIRQ2 = HSYNC & INT_ENA[26]; + !nIRQ3 = INT_CTR0 & INT_ENA[27]; + !nIRQ4 = VSYNC & INT_ENA[28]; + nIRQ5 = INT_LATCH[]==H"00000000" & INT_ENA[29]; + !nIRQ6 = !nMFP_INT & INT_ENA[30]; + !nIRQ7 = PSEUDO_BUS_ERROR & INT_ENA[31]; + +PSEUDO_BUS_ERROR = !nFB_CS1 & (FB_ADR[19..4]==H"F8C8" -- SCC + # FB_ADR[19..4]==H"F8E0" -- VME + # FB_ADR[19..4]==H"F920" -- PADDLE + # FB_ADR[19..4]==H"F921" -- PADDLE + # FB_ADR[19..4]==H"F922" -- PADDLE + # FB_ADR[19..4]==H"FFA8" -- MFP2 + # FB_ADR[19..4]==H"FFA9" -- MFP2 + # FB_ADR[19..4]==H"FFAA" -- MFP2 + # FB_ADR[19..4]==H"FFA8" -- MFP2 + # FB_ADR[19..8]==H"F87" -- TT SCSI + # FB_ADR[19..4]==H"FFC2" -- ST UHR + # FB_ADR[19..4]==H"FFC3" -- ST UHR + # FB_ADR[19..4]==H"F890" -- DMA SOUND + # FB_ADR[19..4]==H"F891" -- DMA SOUND + # FB_ADR[19..4]==H"F892"); -- DMA SOUND +-- IF VIDEO ADR CHANGE +TIN0 = !nFB_CS1 & FB_ADR[19..1]==H"7C100" & !nFB_WR; -- WRITE VIDEO BASE ADR HIGH 0xFFFF8201/2 + +-- INTERRUPT LATCH + INT_LATCH[] = H"FFFFFFFF"; + INT_LATCH0.CLK = PIC_INT & INT_ENA[0]; + INT_LATCH1.CLK = E0_INT & INT_ENA[1]; + INT_LATCH2.CLK = DVI_INT & INT_ENA[2]; + INT_LATCH3.CLK = !nPCI_INTA & INT_ENA[3]; + INT_LATCH4.CLK = !nPCI_INTB & INT_ENA[4]; + INT_LATCH5.CLK = !nPCI_INTC & INT_ENA[5]; + INT_LATCH6.CLK = !nPCI_INTD & INT_ENA[6]; + INT_LATCH7.CLK = DSP_INT & INT_ENA[7]; + INT_LATCH8.CLK = VSYNC & INT_ENA[8]; + INT_LATCH9.CLK = HSYNC & INT_ENA[9]; + +-- INTERRUPT CLEAR + INT_LATCH[].CLRN = !INT_CLEAR[]; + +-- INT_IN + INT_IN0 = PIC_INT; + INT_IN1 = E0_INT; + INT_IN2 = DVI_INT; + INT_IN3 = !nPCI_INTA; + INT_IN4 = !nPCI_INTB; + INT_IN5 = !nPCI_INTC; + INT_IN6 = !nPCI_INTD; + INT_IN7 = DSP_INT; + INT_IN8 = VSYNC; + INT_IN9 = HSYNC; + INT_IN[25..10] = H"0"; + INT_IN26 = HSYNC; + INT_IN27 = INT_CTR0; + INT_IN28 = VSYNC; + INT_IN29 = INT_LATCH[]!=H"00000000"; + INT_IN30 = !nMFP_INT; + INT_IN31 = DMA_DRQ; +--*************************************************************************************** +-- ACP CONFIG REGISTER: BIT 31-> 0=CF 1=IDE + ACP_CONF[].CLK = MAIN_CLK; + ACP_CONF_CS = !nFB_CS2 & FB_ADR[27..2]==H"10000"; -- $4'0000/4 + ACP_CONF[] = FB_AD[]; + ACP_CONF[31..24].ENA = ACP_CONF_CS & FB_B0 & !nFB_WR; + ACP_CONF[23..16].ENA = ACP_CONF_CS & FB_B1 & !nFB_WR; + ACP_CONF[15..8].ENA = ACP_CONF_CS & FB_B2 & !nFB_WR; + ACP_CONF[7..0].ENA = ACP_CONF_CS & FB_B3 & !nFB_WR; +--*************************************************************************************** + +-------------------------------------------------------------- +-- C1287 0=SEK 2=MIN 4=STD 6=WOCHENTAG 7=TAG 8=MONAT 9=JAHR +---------------------------------------------------------- + RTC_ADR[].CLK = MAIN_CLK; + RTC_ADR[] = FB_AD[21..16]; + UHR_AS = !nFB_CS1 & FB_ADR[19..1]==H"7C4B0" & FB_B1; -- FFFF8961 + UHR_DS = !nFB_CS1 & FB_ADR[19..1]==H"7C4B1" & FB_B3; -- FFFF8963 + RTC_ADR[].ENA = UHR_AS & !nFB_WR; + WERTE[][].CLK = MAIN_CLK; + WERTE[7..0][0] = FB_AD[23..16] & RTC_ADR[]==0 & UHR_DS & !nFB_WR; + WERTE[7..0][1] = FB_AD[23..16]; + WERTE[7..0][2] = FB_AD[23..16] & RTC_ADR[]==2 & UHR_DS & !nFB_WR; + WERTE[7..0][3] = FB_AD[23..16]; + WERTE[7..0][4] = FB_AD[23..16] & RTC_ADR[]==4 & UHR_DS & !nFB_WR; + WERTE[7..0][5] = FB_AD[23..16]; + WERTE[7..0][6] = FB_AD[23..16] & RTC_ADR[]==6 & UHR_DS & !nFB_WR; + WERTE[7..0][7] = FB_AD[23..16] & RTC_ADR[]==7 & UHR_DS & !nFB_WR; + WERTE[7..0][8] = FB_AD[23..16] & RTC_ADR[]==8 & UHR_DS & !nFB_WR; + WERTE[7..0][9] = FB_AD[23..16] & RTC_ADR[]==9 & UHR_DS & !nFB_WR; + WERTE[7..0][10] = FB_AD[23..16]; + WERTE[7..0][11] = FB_AD[23..16]; + WERTE[7..0][12] = FB_AD[23..16]; + WERTE[7..0][13] = FB_AD[23..16]; + WERTE[7..0][14] = FB_AD[23..16]; + WERTE[7..0][15] = FB_AD[23..16]; + WERTE[7..0][16] = FB_AD[23..16]; + WERTE[7..0][17] = FB_AD[23..16]; + WERTE[7..0][18] = FB_AD[23..16]; + WERTE[7..0][19] = FB_AD[23..16]; + WERTE[7..0][20] = FB_AD[23..16]; + WERTE[7..0][21] = FB_AD[23..16]; + WERTE[7..0][22] = FB_AD[23..16]; + WERTE[7..0][23] = FB_AD[23..16]; + WERTE[7..0][24] = FB_AD[23..16]; + WERTE[7..0][25] = FB_AD[23..16]; + WERTE[7..0][26] = FB_AD[23..16]; + WERTE[7..0][27] = FB_AD[23..16]; + WERTE[7..0][28] = FB_AD[23..16]; + WERTE[7..0][29] = FB_AD[23..16]; + WERTE[7..0][30] = FB_AD[23..16]; + WERTE[7..0][31] = FB_AD[23..16]; + WERTE[7..0][32] = FB_AD[23..16]; + WERTE[7..0][33] = FB_AD[23..16]; + WERTE[7..0][34] = FB_AD[23..16]; + WERTE[7..0][35] = FB_AD[23..16]; + WERTE[7..0][36] = FB_AD[23..16]; + WERTE[7..0][37] = FB_AD[23..16]; + WERTE[7..0][38] = FB_AD[23..16]; + WERTE[7..0][39] = FB_AD[23..16]; + WERTE[7..0][40] = FB_AD[23..16]; + WERTE[7..0][41] = FB_AD[23..16]; + WERTE[7..0][42] = FB_AD[23..16]; + WERTE[7..0][43] = FB_AD[23..16]; + WERTE[7..0][44] = FB_AD[23..16]; + WERTE[7..0][45] = FB_AD[23..16]; + WERTE[7..0][46] = FB_AD[23..16]; + WERTE[7..0][47] = FB_AD[23..16]; + WERTE[7..0][48] = FB_AD[23..16]; + WERTE[7..0][49] = FB_AD[23..16]; + WERTE[7..0][50] = FB_AD[23..16]; + WERTE[7..0][51] = FB_AD[23..16]; + WERTE[7..0][52] = FB_AD[23..16]; + WERTE[7..0][53] = FB_AD[23..16]; + WERTE[7..0][54] = FB_AD[23..16]; + WERTE[7..0][55] = FB_AD[23..16]; + WERTE[7..0][56] = FB_AD[23..16]; + WERTE[7..0][57] = FB_AD[23..16]; + WERTE[7..0][58] = FB_AD[23..16]; + WERTE[7..0][59] = FB_AD[23..16]; + WERTE[7..0][60] = FB_AD[23..16]; + WERTE[7..0][61] = FB_AD[23..16]; + WERTE[7..0][62] = FB_AD[23..16]; + WERTE[7..0][63] = FB_AD[23..16]; + WERTE[][0].ENA = RTC_ADR[]==0 & UHR_DS & !nFB_WR; + WERTE[][1].ENA = RTC_ADR[]==1 & UHR_DS & !nFB_WR; + WERTE[][2].ENA = RTC_ADR[]==2 & UHR_DS & !nFB_WR; + WERTE[][3].ENA = RTC_ADR[]==3 & UHR_DS & !nFB_WR; + WERTE[][4].ENA = RTC_ADR[]==4 & UHR_DS & !nFB_WR; + WERTE[][5].ENA = RTC_ADR[]==5 & UHR_DS & !nFB_WR; + WERTE[][6].ENA = RTC_ADR[]==6 & UHR_DS & !nFB_WR; + WERTE[][7].ENA = RTC_ADR[]==7 & UHR_DS & !nFB_WR; + WERTE[][8].ENA = RTC_ADR[]==8 & UHR_DS & !nFB_WR; + WERTE[][9].ENA = RTC_ADR[]==9 & UHR_DS & !nFB_WR; + WERTE[][10].ENA = RTC_ADR[]==10 & UHR_DS & !nFB_WR; + WERTE[][11].ENA = RTC_ADR[]==11 & UHR_DS & !nFB_WR; + WERTE[][12].ENA = RTC_ADR[]==12 & UHR_DS & !nFB_WR; + WERTE[][13].ENA = RTC_ADR[]==13 & UHR_DS & !nFB_WR; + WERTE[][14].ENA = RTC_ADR[]==14 & UHR_DS & !nFB_WR; + WERTE[][15].ENA = RTC_ADR[]==15 & UHR_DS & !nFB_WR; + WERTE[][16].ENA = RTC_ADR[]==16 & UHR_DS & !nFB_WR; + WERTE[][17].ENA = RTC_ADR[]==17 & UHR_DS & !nFB_WR; + WERTE[][18].ENA = RTC_ADR[]==18 & UHR_DS & !nFB_WR; + WERTE[][19].ENA = RTC_ADR[]==19 & UHR_DS & !nFB_WR; + WERTE[][20].ENA = RTC_ADR[]==20 & UHR_DS & !nFB_WR; + WERTE[][21].ENA = RTC_ADR[]==21 & UHR_DS & !nFB_WR; + WERTE[][22].ENA = RTC_ADR[]==22 & UHR_DS & !nFB_WR; + WERTE[][23].ENA = RTC_ADR[]==23 & UHR_DS & !nFB_WR; + WERTE[][24].ENA = RTC_ADR[]==24 & UHR_DS & !nFB_WR; + WERTE[][25].ENA = RTC_ADR[]==25 & UHR_DS & !nFB_WR; + WERTE[][26].ENA = RTC_ADR[]==26 & UHR_DS & !nFB_WR; + WERTE[][27].ENA = RTC_ADR[]==27 & UHR_DS & !nFB_WR; + WERTE[][28].ENA = RTC_ADR[]==28 & UHR_DS & !nFB_WR; + WERTE[][29].ENA = RTC_ADR[]==29 & UHR_DS & !nFB_WR; + WERTE[][30].ENA = RTC_ADR[]==30 & UHR_DS & !nFB_WR; + WERTE[][31].ENA = RTC_ADR[]==31 & UHR_DS & !nFB_WR; + WERTE[][32].ENA = RTC_ADR[]==32 & UHR_DS & !nFB_WR; + WERTE[][33].ENA = RTC_ADR[]==33 & UHR_DS & !nFB_WR; + WERTE[][34].ENA = RTC_ADR[]==34 & UHR_DS & !nFB_WR; + WERTE[][35].ENA = RTC_ADR[]==35 & UHR_DS & !nFB_WR; + WERTE[][36].ENA = RTC_ADR[]==36 & UHR_DS & !nFB_WR; + WERTE[][37].ENA = RTC_ADR[]==37 & UHR_DS & !nFB_WR; + WERTE[][38].ENA = RTC_ADR[]==38 & UHR_DS & !nFB_WR; + WERTE[][39].ENA = RTC_ADR[]==39 & UHR_DS & !nFB_WR; + WERTE[][40].ENA = RTC_ADR[]==40 & UHR_DS & !nFB_WR; + WERTE[][41].ENA = RTC_ADR[]==41 & UHR_DS & !nFB_WR; + WERTE[][42].ENA = RTC_ADR[]==42 & UHR_DS & !nFB_WR; + WERTE[][43].ENA = RTC_ADR[]==43 & UHR_DS & !nFB_WR; + WERTE[][44].ENA = RTC_ADR[]==44 & UHR_DS & !nFB_WR; + WERTE[][45].ENA = RTC_ADR[]==45 & UHR_DS & !nFB_WR; + WERTE[][46].ENA = RTC_ADR[]==46 & UHR_DS & !nFB_WR; + WERTE[][47].ENA = RTC_ADR[]==47 & UHR_DS & !nFB_WR; + WERTE[][48].ENA = RTC_ADR[]==48 & UHR_DS & !nFB_WR; + WERTE[][49].ENA = RTC_ADR[]==49 & UHR_DS & !nFB_WR; + WERTE[][50].ENA = RTC_ADR[]==50 & UHR_DS & !nFB_WR; + WERTE[][51].ENA = RTC_ADR[]==51 & UHR_DS & !nFB_WR; + WERTE[][52].ENA = RTC_ADR[]==52 & UHR_DS & !nFB_WR; + WERTE[][53].ENA = RTC_ADR[]==53 & UHR_DS & !nFB_WR; + WERTE[][54].ENA = RTC_ADR[]==54 & UHR_DS & !nFB_WR; + WERTE[][55].ENA = RTC_ADR[]==55 & UHR_DS & !nFB_WR; + WERTE[][56].ENA = RTC_ADR[]==56 & UHR_DS & !nFB_WR; + WERTE[][57].ENA = RTC_ADR[]==57 & UHR_DS & !nFB_WR; + WERTE[][58].ENA = RTC_ADR[]==58 & UHR_DS & !nFB_WR; + WERTE[][59].ENA = RTC_ADR[]==59 & UHR_DS & !nFB_WR; + WERTE[][60].ENA = RTC_ADR[]==60 & UHR_DS & !nFB_WR; + WERTE[][61].ENA = RTC_ADR[]==61 & UHR_DS & !nFB_WR; + WERTE[][62].ENA = RTC_ADR[]==62 & UHR_DS & !nFB_WR; + WERTE[][63].ENA = RTC_ADR[]==63 & UHR_DS & !nFB_WR; + PIC_INT_SYNC[].CLK = MAIN_CLK; PIC_INT_SYNC[0] = PIC_INT; + PIC_INT_SYNC[1] = PIC_INT_SYNC[0]; + PIC_INT_SYNC[2] = !PIC_INT_SYNC[1] & PIC_INT_SYNC[0]; + UPDATE_ON = !WERTE[7][11]; + WERTE[6][10].CLRN = GND; -- KEIN UIP + UPDATE_ON = !WERTE[7][11]; -- UPDATE ON OFF + WERTE[2][11] = VCC; -- IMMER BINARY + WERTE[1][11] = VCC; -- IMMER 24H FORMAT + WERTE[0][11] = VCC; -- IMMER SOMMERZEITKORREKTUR + WERTE[7][13] = VCC; -- IMMER RICHTIG +-- SOMMER WINTERZEIT: BIT 0 IM REGISTER D IST DIE INFORMATION OB SOMMERZEIT IST (BRAUCHT MAN FÜR RÜCKSCHALTUNG) + SOMMERZEIT = WERTE[][6]==1 & WERTE[][4]==1 & WERTE[][8]==4 & WERTE[][7]>23; --LETZTER SONNTAG IM APRIL + WERTE[0][13] = SOMMERZEIT; + WERTE[0][13].ENA = INC_STD & (SOMMERZEIT # WINTERZEIT); + WINTERZEIT = WERTE[][6]==1 & WERTE[][4]==1 & WERTE[][8]==10 & WERTE[][7]>24 & WERTE[0][13]; --LETZTER SONNTAG IM OKTOBER +-- ACHTELSEKUNDEN + ACHTELSEKUNDEN[].CLK = MAIN_CLK; + ACHTELSEKUNDEN[] = ACHTELSEKUNDEN[]+1; + ACHTELSEKUNDEN[].ENA = PIC_INT_SYNC[2] & UPDATE_ON; +-- SEKUNDEN + INC_SEC = ACHTELSEKUNDEN[]==7 & PIC_INT_SYNC[2] & UPDATE_ON; + WERTE[][0] = (WERTE[][0]+1) & WERTE[][0]!=59 & !(RTC_ADR[]==0 & UHR_DS & !nFB_WR); -- SEKUNDEN ZÄHLEN BIS 59 + WERTE[][0].ENA = INC_SEC & !(RTC_ADR[]==0 & UHR_DS & !nFB_WR); +-- MINUTEN + INC_MIN = INC_SEC & WERTE[][0]==59; -- + WERTE[][2] = (WERTE[][2]+1) & WERTE[][2]!=59 & !(RTC_ADR[]==2 & UHR_DS & !nFB_WR); -- MINUTEN ZÄHLEN BIS 59 + WERTE[][2].ENA = INC_MIN & !(RTC_ADR[]==2 & UHR_DS & !nFB_WR); -- +-- STUNDEN + INC_STD = INC_MIN & WERTE[][2]==59; + WERTE[][4] = (WERTE[][4]+1+(1 & SOMMERZEIT)) & WERTE[][4]!=23 & !(RTC_ADR[]==4 & UHR_DS & !nFB_WR); -- STUNDEN ZÄHLEN BIS 23 + WERTE[][4].ENA = INC_STD & !(WINTERZEIT & WERTE[0][12]) & !(RTC_ADR[]==4 & UHR_DS & !nFB_WR); -- EINE STUNDE AUSLASSEN WENN WINTERZEITUMSCHALTUNG UND NOCH SOMMERZEIT +-- WOCHENTAG UND TAG + INC_TAG = INC_STD & WERTE[][2]==23; + WERTE[][6] = (WERTE[][6]+1) & WERTE[][6]!=7 & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR) -- WOCHENTAG ZÄHLEN BIS 7 + # 1 & WERTE[][6]==7 & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][6].ENA = INC_TAG & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR); + ANZAHL_TAGE_DES_MONATS[] = 31 & (WERTE[][8]==1 # WERTE[][8]==3 # WERTE[][8]==5 # WERTE[][8]==7 # WERTE[][8]==8 # WERTE[][8]==10 # WERTE[][8]==12) + # 30 & (WERTE[][8]==4 # WERTE[][8]==6 # WERTE[][8]==9 # WERTE[][8]==11) + # 29 & WERTE[][8]==2 & WERTE[1..0][9]==0 + # 28 & WERTE[][8]==2 & WERTE[1..0][9]!=0; + WERTE[][7] = (WERTE[][7]+1) & WERTE[][7]!=ANZAHL_TAGE_DES_MONATS[] & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR) -- TAG ZÄHLEN BIS MONATSENDE + # 1 & WERTE[][7]==ANZAHL_TAGE_DES_MONATS[] & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][7].ENA = INC_TAG & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR); -- +-- MONATE + INC_MONAT = INC_TAG & WERTE[][7]==ANZAHL_TAGE_DES_MONATS[]; -- + WERTE[][8] = (WERTE[][8]+1) & WERTE[][8]!=12 & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR) -- MONATE ZÄHLEN BIS 12 + # 1 & WERTE[][8]==12 & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][8].ENA = INC_MONAT & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR); +-- JAHR + INC_JAHR = INC_MONAT & WERTE[][8]==12; -- + WERTE[][9] = (WERTE[][9]+1) & WERTE[][9]!=99 & !(RTC_ADR[]==9 & UHR_DS & !nFB_WR); -- JAHRE ZÄHLEN BIS 99 + WERTE[][9].ENA = INC_JAHR & !(RTC_ADR[]==9 & UHR_DS & !nFB_WR); +-- TRISTATE OUTPUT + + FB_AD[31..24] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[31..24] + # INT_ENA_CS & INT_ENA[31..24] + # INT_LATCH_CS & INT_LATCH[31..24] + # INT_CLEAR_CS & INT_IN[31..24] + # ACP_CONF_CS & ACP_CONF[31..24] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[23..16] = lpm_bustri_BYT( + WERTE[][0] & RTC_ADR[]==0 & UHR_DS + # WERTE[][1] & RTC_ADR[]==1 & UHR_DS + # WERTE[][2] & RTC_ADR[]==2 & UHR_DS + # WERTE[][3] & RTC_ADR[]==3 & UHR_DS + # WERTE[][4] & RTC_ADR[]==4 & UHR_DS + # WERTE[][5] & RTC_ADR[]==5 & UHR_DS + # WERTE[][6] & RTC_ADR[]==6 & UHR_DS + # WERTE[][7] & RTC_ADR[]==7 & UHR_DS + # WERTE[][8] & RTC_ADR[]==8 & UHR_DS + # WERTE[][9] & RTC_ADR[]==9 & UHR_DS + # WERTE[][10] & RTC_ADR[]==10 & UHR_DS + # WERTE[][11] & RTC_ADR[]==11 & UHR_DS + # WERTE[][12] & RTC_ADR[]==12 & UHR_DS + # WERTE[][13] & RTC_ADR[]==13 & UHR_DS + # WERTE[][14] & RTC_ADR[]==14 & UHR_DS + # WERTE[][15] & RTC_ADR[]==15 & UHR_DS + # WERTE[][16] & RTC_ADR[]==16 & UHR_DS + # WERTE[][17] & RTC_ADR[]==17 & UHR_DS + # WERTE[][18] & RTC_ADR[]==18 & UHR_DS + # WERTE[][19] & RTC_ADR[]==19 & UHR_DS + # WERTE[][20] & RTC_ADR[]==20 & UHR_DS + # WERTE[][21] & RTC_ADR[]==21 & UHR_DS + # WERTE[][22] & RTC_ADR[]==22 & UHR_DS + # WERTE[][23] & RTC_ADR[]==23 & UHR_DS + # WERTE[][24] & RTC_ADR[]==24 & UHR_DS + # WERTE[][25] & RTC_ADR[]==25 & UHR_DS + # WERTE[][26] & RTC_ADR[]==26 & UHR_DS + # WERTE[][27] & RTC_ADR[]==27 & UHR_DS + # WERTE[][28] & RTC_ADR[]==28 & UHR_DS + # WERTE[][29] & RTC_ADR[]==29 & UHR_DS + # WERTE[][30] & RTC_ADR[]==30 & UHR_DS + # WERTE[][31] & RTC_ADR[]==31 & UHR_DS + # WERTE[][32] & RTC_ADR[]==32 & UHR_DS + # WERTE[][33] & RTC_ADR[]==33 & UHR_DS + # WERTE[][34] & RTC_ADR[]==34 & UHR_DS + # WERTE[][35] & RTC_ADR[]==35 & UHR_DS + # WERTE[][36] & RTC_ADR[]==36 & UHR_DS + # WERTE[][37] & RTC_ADR[]==37 & UHR_DS + # WERTE[][38] & RTC_ADR[]==38 & UHR_DS + # WERTE[][39] & RTC_ADR[]==39 & UHR_DS + # WERTE[][40] & RTC_ADR[]==40 & UHR_DS + # WERTE[][41] & RTC_ADR[]==41 & UHR_DS + # WERTE[][42] & RTC_ADR[]==42 & UHR_DS + # WERTE[][43] & RTC_ADR[]==43 & UHR_DS + # WERTE[][44] & RTC_ADR[]==44 & UHR_DS + # WERTE[][45] & RTC_ADR[]==45 & UHR_DS + # WERTE[][46] & RTC_ADR[]==46 & UHR_DS + # WERTE[][47] & RTC_ADR[]==47 & UHR_DS + # WERTE[][48] & RTC_ADR[]==48 & UHR_DS + # WERTE[][49] & RTC_ADR[]==49 & UHR_DS + # WERTE[][50] & RTC_ADR[]==50 & UHR_DS + # WERTE[][51] & RTC_ADR[]==51 & UHR_DS + # WERTE[][52] & RTC_ADR[]==52 & UHR_DS + # WERTE[][53] & RTC_ADR[]==53 & UHR_DS + # WERTE[][54] & RTC_ADR[]==54 & UHR_DS + # WERTE[][55] & RTC_ADR[]==55 & UHR_DS + # WERTE[][56] & RTC_ADR[]==56 & UHR_DS + # WERTE[][57] & RTC_ADR[]==57 & UHR_DS + # WERTE[][58] & RTC_ADR[]==58 & UHR_DS + # WERTE[][59] & RTC_ADR[]==59 & UHR_DS + # WERTE[][60] & RTC_ADR[]==60 & UHR_DS + # WERTE[][61] & RTC_ADR[]==61 & UHR_DS + # WERTE[][62] & RTC_ADR[]==62 & UHR_DS + # WERTE[][63] & RTC_ADR[]==63 & UHR_DS + # (0,RTC_ADR[]) & UHR_AS + # INT_CTR_CS & INT_CTR[23..16] + # INT_ENA_CS & INT_ENA[23..16] + # INT_LATCH_CS & INT_LATCH[23..16] + # INT_CLEAR_CS & INT_IN[23..16] + # ACP_CONF_CS & ACP_CONF[23..16] + ,(UHR_DS # UHR_AS # INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[15..8] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[15..8] + # INT_ENA_CS & INT_ENA[15..8] + # INT_LATCH_CS & INT_LATCH[15..8] + # INT_CLEAR_CS & INT_IN[15..8] + # ACP_CONF_CS & ACP_CONF[15..8] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[7..0] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[7..0] + # INT_ENA_CS & INT_ENA[7..0] + # INT_LATCH_CS & INT_LATCH[7..0] + # INT_CLEAR_CS & INT_IN[7..0] + # ACP_CONF_CS & ACP_CONF[7..0] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + + INT_HANDLER_TA = INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS; +END; + + diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.v b/FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.v new file mode 100644 index 0000000..b8562a5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.v @@ -0,0 +1,3578 @@ +// Xilinx XPort Language Converter, Version 4.1 (110) +// +// AHDL Design Source: interrupt_handler.tdf +// Verilog Design Output: interrupt_handler.v +// Created 23-Feb-2014 10:34 AM +// +// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. +// Xilinx Inc makes no warranty, expressed or implied, with respect to +// the operation and/or functionality of the converted output files. +// + +// INTERRUPT HANDLER UND C1287 + + +// CREATED BY FREDI ASCHWANDEN +// Parameters Statement (optional) +// {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +// {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! +// Subdesign Section +module interrupt_handler(MAIN_CLK, nFB_WR, nFB_CS1, nFB_CS2, FB_SIZE0, + FB_SIZE1, FB_ADR, PIC_INT, E0_INT, DVI_INT, nPCI_INTA, nPCI_INTB, + nPCI_INTC, nPCI_INTD, nMFP_INT, nFB_OE, DSP_INT, VSYNC, HSYNC, DMA_DRQ, + nIRQ, INT_HANDLER_TA, ACP_CONF, TIN0, FB_AD); + +// {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! +// {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + input MAIN_CLK, nFB_WR, nFB_CS1, nFB_CS2, FB_SIZE0, FB_SIZE1; + input [31:0] FB_ADR; + input PIC_INT, E0_INT, DVI_INT, nPCI_INTA, nPCI_INTB, nPCI_INTC, nPCI_INTD, + nMFP_INT, nFB_OE, DSP_INT, VSYNC, HSYNC, DMA_DRQ; + output [7:2] nIRQ; + output INT_HANDLER_TA; + output [31:0] ACP_CONF; + output TIN0; + inout [31:0] FB_AD; + +// WERTE REGISTER 0-63 + wire [3:0] FB_B; + wire [31:0] INT_CTR; + wire [31:0] INT_CTR_d; + wire INT_CTR_CS; + wire [31:0] INT_LATCH; + wire [31:0] INT_LATCH_d; + wire [31:0] INT_LATCH_clk; + wire INT_LATCH31_clrn, INT_LATCH30_clrn, INT_LATCH29_clrn, INT_LATCH28_clrn, + INT_LATCH27_clrn, INT_LATCH26_clrn, INT_LATCH25_clrn, + INT_LATCH24_clrn, INT_LATCH23_clrn, INT_LATCH22_clrn, + INT_LATCH21_clrn, INT_LATCH20_clrn, INT_LATCH19_clrn, + INT_LATCH18_clrn, INT_LATCH17_clrn, INT_LATCH16_clrn, + INT_LATCH15_clrn, INT_LATCH14_clrn, INT_LATCH13_clrn, + INT_LATCH12_clrn, INT_LATCH11_clrn, INT_LATCH10_clrn, INT_LATCH9_clrn, + INT_LATCH8_clrn, INT_LATCH7_clrn, INT_LATCH6_clrn, INT_LATCH5_clrn, + INT_LATCH4_clrn, INT_LATCH3_clrn, INT_LATCH2_clrn, INT_LATCH1_clrn, + INT_LATCH0_clrn, INT_LATCH_CS; + wire [31:0] INT_CLEAR; + wire [31:0] INT_CLEAR_d; + wire INT_CLEAR_CS; + wire [31:0] INT_IN; + wire [31:0] INT_ENA; + wire [31:0] INT_ENA_d; + wire INT_ENA_CS; + wire [31:0] ACP_CONF_d; + wire ACP_CONF_CS, PSEUDO_BUS_ERROR, UHR_AS, UHR_DS; + wire [5:0] RTC_ADR; + wire [5:0] RTC_ADR_d; + wire [2:0] ACHTELSEKUNDEN; + wire [2:0] ACHTELSEKUNDEN_d; + wire [63:0] WERTE7_; + wire [63:0] WERTE7__d; + wire WERTE7_13_ena, WERTE7_9_ena, WERTE7_8_ena, WERTE7_7_ena, WERTE7_6_ena, + WERTE7_4_ena, WERTE7_2_ena, WERTE7_0_ena; + wire [63:0] WERTE6_; + wire [63:0] WERTE6__d; + wire WERTE6_10_clrn, WERTE6_13_ena, WERTE6_9_ena, WERTE6_8_ena, + WERTE6_7_ena, WERTE6_6_ena, WERTE6_4_ena, WERTE6_2_ena, WERTE6_0_ena; + wire [63:0] WERTE5_; + wire [63:0] WERTE5__d; + wire WERTE5_13_ena, WERTE5_9_ena, WERTE5_8_ena, WERTE5_7_ena, WERTE5_6_ena, + WERTE5_4_ena, WERTE5_2_ena, WERTE5_0_ena; + wire [63:0] WERTE4_; + wire [63:0] WERTE4__d; + wire WERTE4_13_ena, WERTE4_9_ena, WERTE4_8_ena, WERTE4_7_ena, WERTE4_6_ena, + WERTE4_4_ena, WERTE4_2_ena, WERTE4_0_ena; + wire [63:0] WERTE3_; + wire [63:0] WERTE3__d; + wire WERTE3_13_ena, WERTE3_9_ena, WERTE3_8_ena, WERTE3_7_ena, WERTE3_6_ena, + WERTE3_4_ena, WERTE3_2_ena, WERTE3_0_ena; + wire [63:0] WERTE2_; + wire [63:0] WERTE2__d; + wire WERTE2_13_ena, WERTE2_9_ena, WERTE2_8_ena, WERTE2_7_ena, WERTE2_6_ena, + WERTE2_4_ena, WERTE2_2_ena, WERTE2_0_ena; + wire [63:0] WERTE1_; + wire [63:0] WERTE1__d; + wire WERTE1_13_ena, WERTE1_9_ena, WERTE1_8_ena, WERTE1_7_ena, WERTE1_6_ena, + WERTE1_4_ena, WERTE1_2_ena, WERTE1_0_ena; + wire [63:0] WERTE0_; + wire [63:0] WERTE0__d; + wire WERTE0_13_ena, WERTE0_9_ena, WERTE0_8_ena, WERTE0_7_ena, WERTE0_6_ena, + WERTE0_4_ena, WERTE0_2_ena, WERTE0_0_ena; + wire [2:0] PIC_INT_SYNC; + wire [2:0] PIC_INT_SYNC_d; + wire INC_SEC, INC_MIN, INC_STD, INC_TAG; + wire [7:0] ANZAHL_TAGE_DES_MONATS; + wire WINTERZEIT, SOMMERZEIT, INC_MONAT, INC_JAHR, UPDATE_ON, gnd, vcc; + wire [7:0] u0_data; + wire u0_enabledt; + wire [7:0] u0_tridata; + wire [7:0] u1_data; + wire u1_enabledt; + wire [7:0] u1_tridata; + wire [7:0] u2_data; + wire u2_enabledt; + wire [7:0] u2_tridata; + wire [7:0] u3_data; + wire u3_enabledt; + wire [7:0] u3_tridata; + wire UPDATE_ON_1, UPDATE_ON_2, WERTE0_0_ena_1, WERTE0_0_ena_2, + WERTE0_2_ena_1, WERTE0_2_ena_2, WERTE0_4_ena_1, WERTE0_4_ena_2, + WERTE0_6_ena_1, WERTE0_6_ena_2, WERTE0_7_ena_1, WERTE0_7_ena_2, + WERTE0_8_ena_1, WERTE0_8_ena_2, WERTE0_9_ena_1, WERTE0_9_ena_2, + WERTE0_13_ena_1, WERTE0_13_ena_2, WERTE0_0_d_1, WERTE0_0_d_2, + WERTE0_2_d_1, WERTE0_2_d_2, WERTE0_4_d_1, WERTE0_4_d_2, WERTE0_6_d_1, + WERTE0_6_d_2, WERTE0_7_d_1, WERTE0_7_d_2, WERTE0_8_d_1, WERTE0_8_d_2, + WERTE0_9_d_1, WERTE0_9_d_2, WERTE0_11_d_1, WERTE0_11_d_2, + WERTE0_13_d_1, WERTE0_13_d_2, WERTE1_0_ena_1, WERTE1_0_ena_2, + WERTE1_2_ena_1, WERTE1_2_ena_2, WERTE1_4_ena_1, WERTE1_4_ena_2, + WERTE1_6_ena_1, WERTE1_6_ena_2, WERTE1_7_ena_1, WERTE1_7_ena_2, + WERTE1_8_ena_1, WERTE1_8_ena_2, WERTE1_9_ena_1, WERTE1_9_ena_2, + WERTE1_0_d_1, WERTE1_0_d_2, WERTE1_2_d_1, WERTE1_2_d_2, WERTE1_4_d_1, + WERTE1_4_d_2, WERTE1_6_d_1, WERTE1_6_d_2, WERTE1_7_d_1, WERTE1_7_d_2, + WERTE1_8_d_1, WERTE1_8_d_2, WERTE1_9_d_1, WERTE1_9_d_2, WERTE1_11_d_1, + WERTE1_11_d_2, WERTE2_0_ena_1, WERTE2_0_ena_2, WERTE2_2_ena_1, + WERTE2_2_ena_2, WERTE2_4_ena_1, WERTE2_4_ena_2, WERTE2_6_ena_1, + WERTE2_6_ena_2, WERTE2_7_ena_1, WERTE2_7_ena_2, WERTE2_8_ena_1, + WERTE2_8_ena_2, WERTE2_9_ena_1, WERTE2_9_ena_2, WERTE2_0_d_1, + WERTE2_0_d_2, WERTE2_2_d_1, WERTE2_2_d_2, WERTE2_4_d_1, WERTE2_4_d_2, + WERTE2_6_d_1, WERTE2_6_d_2, WERTE2_7_d_1, WERTE2_7_d_2, WERTE2_8_d_1, + WERTE2_8_d_2, WERTE2_9_d_1, WERTE2_9_d_2, WERTE2_11_d_1, + WERTE2_11_d_2, WERTE3_0_ena_1, WERTE3_0_ena_2, WERTE3_2_ena_1, + WERTE3_2_ena_2, WERTE3_4_ena_1, WERTE3_4_ena_2, WERTE3_6_ena_1, + WERTE3_6_ena_2, WERTE3_7_ena_1, WERTE3_7_ena_2, WERTE3_8_ena_1, + WERTE3_8_ena_2, WERTE3_9_ena_1, WERTE3_9_ena_2, WERTE3_0_d_1, + WERTE3_0_d_2, WERTE3_2_d_1, WERTE3_2_d_2, WERTE3_4_d_1, WERTE3_4_d_2, + WERTE3_6_d_1, WERTE3_6_d_2, WERTE3_7_d_1, WERTE3_7_d_2, WERTE3_8_d_1, + WERTE3_8_d_2, WERTE3_9_d_1, WERTE3_9_d_2, WERTE4_0_ena_1, + WERTE4_0_ena_2, WERTE4_2_ena_1, WERTE4_2_ena_2, WERTE4_4_ena_1, + WERTE4_4_ena_2, WERTE4_6_ena_1, WERTE4_6_ena_2, WERTE4_7_ena_1, + WERTE4_7_ena_2, WERTE4_8_ena_1, WERTE4_8_ena_2, WERTE4_9_ena_1, + WERTE4_9_ena_2, WERTE4_0_d_1, WERTE4_0_d_2, WERTE4_2_d_1, + WERTE4_2_d_2, WERTE4_4_d_1, WERTE4_4_d_2, WERTE4_6_d_1, WERTE4_6_d_2, + WERTE4_7_d_1, WERTE4_7_d_2, WERTE4_8_d_1, WERTE4_8_d_2, WERTE4_9_d_1, + WERTE4_9_d_2, WERTE5_0_ena_1, WERTE5_0_ena_2, WERTE5_2_ena_1, + WERTE5_2_ena_2, WERTE5_4_ena_1, WERTE5_4_ena_2, WERTE5_6_ena_1, + WERTE5_6_ena_2, WERTE5_7_ena_1, WERTE5_7_ena_2, WERTE5_8_ena_1, + WERTE5_8_ena_2, WERTE5_9_ena_1, WERTE5_9_ena_2, WERTE5_0_d_1, + WERTE5_0_d_2, WERTE5_2_d_1, WERTE5_2_d_2, WERTE5_4_d_1, WERTE5_4_d_2, + WERTE5_6_d_1, WERTE5_6_d_2, WERTE5_7_d_1, WERTE5_7_d_2, WERTE5_8_d_1, + WERTE5_8_d_2, WERTE5_9_d_1, WERTE5_9_d_2, WERTE6_0_ena_1, + WERTE6_0_ena_2, WERTE6_2_ena_1, WERTE6_2_ena_2, WERTE6_4_ena_1, + WERTE6_4_ena_2, WERTE6_6_ena_1, WERTE6_6_ena_2, WERTE6_7_ena_1, + WERTE6_7_ena_2, WERTE6_8_ena_1, WERTE6_8_ena_2, WERTE6_9_ena_1, + WERTE6_9_ena_2, WERTE6_0_d_1, WERTE6_0_d_2, WERTE6_2_d_1, + WERTE6_2_d_2, WERTE6_4_d_1, WERTE6_4_d_2, WERTE6_6_d_1, WERTE6_6_d_2, + WERTE6_7_d_1, WERTE6_7_d_2, WERTE6_8_d_1, WERTE6_8_d_2, WERTE6_9_d_1, + WERTE6_9_d_2, WERTE7_0_ena_1, WERTE7_0_ena_2, WERTE7_2_ena_1, + WERTE7_2_ena_2, WERTE7_4_ena_1, WERTE7_4_ena_2, WERTE7_6_ena_1, + WERTE7_6_ena_2, WERTE7_7_ena_1, WERTE7_7_ena_2, WERTE7_8_ena_1, + WERTE7_8_ena_2, WERTE7_9_ena_1, WERTE7_9_ena_2, WERTE7_0_d_1, + WERTE7_0_d_2, WERTE7_2_d_1, WERTE7_2_d_2, WERTE7_4_d_1, WERTE7_4_d_2, + WERTE7_6_d_1, WERTE7_6_d_2, WERTE7_7_d_1, WERTE7_7_d_2, WERTE7_8_d_1, + WERTE7_8_d_2, WERTE7_9_d_1, WERTE7_9_d_2, WERTE7_13_d_1, + WERTE7_13_d_2, ACHTELSEKUNDEN0_ena_ctrl, ACHTELSEKUNDEN0_clk_ctrl, + PIC_INT_SYNC0_clk_ctrl, WERTE0_63_ena_ctrl, WERTE0_62_ena_ctrl, + WERTE0_61_ena_ctrl, WERTE0_60_ena_ctrl, WERTE0_59_ena_ctrl, + WERTE0_58_ena_ctrl, WERTE0_57_ena_ctrl, WERTE0_56_ena_ctrl, + WERTE0_55_ena_ctrl, WERTE0_54_ena_ctrl, WERTE0_53_ena_ctrl, + WERTE0_52_ena_ctrl, WERTE0_51_ena_ctrl, WERTE0_50_ena_ctrl, + WERTE0_49_ena_ctrl, WERTE0_48_ena_ctrl, WERTE0_47_ena_ctrl, + WERTE0_46_ena_ctrl, WERTE0_45_ena_ctrl, WERTE0_44_ena_ctrl, + WERTE0_43_ena_ctrl, WERTE0_42_ena_ctrl, WERTE0_41_ena_ctrl, + WERTE0_40_ena_ctrl, WERTE0_39_ena_ctrl, WERTE0_38_ena_ctrl, + WERTE0_37_ena_ctrl, WERTE0_36_ena_ctrl, WERTE0_35_ena_ctrl, + WERTE0_34_ena_ctrl, WERTE0_33_ena_ctrl, WERTE0_32_ena_ctrl, + WERTE0_31_ena_ctrl, WERTE0_30_ena_ctrl, WERTE0_29_ena_ctrl, + WERTE0_28_ena_ctrl, WERTE0_27_ena_ctrl, WERTE0_26_ena_ctrl, + WERTE0_25_ena_ctrl, WERTE0_24_ena_ctrl, WERTE0_23_ena_ctrl, + WERTE0_22_ena_ctrl, WERTE0_21_ena_ctrl, WERTE0_20_ena_ctrl, + WERTE0_19_ena_ctrl, WERTE0_18_ena_ctrl, WERTE0_17_ena_ctrl, + WERTE0_16_ena_ctrl, WERTE0_15_ena_ctrl, WERTE0_14_ena_ctrl, + WERTE0_12_ena_ctrl, WERTE0_11_ena_ctrl, WERTE0_10_ena_ctrl, + WERTE0_5_ena_ctrl, WERTE0_3_ena_ctrl, WERTE0_1_ena_ctrl, + WERTE0_0_clk_ctrl, WERTE1_0_clk_ctrl, WERTE2_0_clk_ctrl, + WERTE3_0_clk_ctrl, WERTE4_0_clk_ctrl, WERTE5_0_clk_ctrl, + WERTE6_0_clk_ctrl, WERTE7_0_clk_ctrl, RTC_ADR0_ena_ctrl, + RTC_ADR0_clk_ctrl, ACP_CONF0_ena_ctrl, ACP_CONF8_ena_ctrl, + ACP_CONF16_ena_ctrl, ACP_CONF24_ena_ctrl, ACP_CONF0_clk_ctrl, + INT_CLEAR0_clk_ctrl, INT_ENA0_ena_ctrl, INT_ENA8_ena_ctrl, + INT_ENA16_ena_ctrl, INT_ENA24_ena_ctrl, INT_ENA0_clk_ctrl, + INT_CTR0_ena_ctrl, INT_CTR8_ena_ctrl, INT_CTR16_ena_ctrl, + INT_CTR24_ena_ctrl, INT_CTR0_clk_ctrl, INT_LATCH9_clk_1, + INT_LATCH8_clk_1, INT_LATCH7_clk_1, INT_LATCH6_clk_1, + INT_LATCH5_clk_1, INT_LATCH4_clk_1, INT_LATCH3_clk_1, + INT_LATCH2_clk_1, INT_LATCH1_clk_1, INT_LATCH0_clk_1; + reg [31:0] INT_CTR_q; + reg [31:0] INT_LATCH_q; + reg [31:0] INT_CLEAR_q; + reg [31:0] INT_ENA_q; + reg [31:0] ACP_CONF_q; + reg [5:0] RTC_ADR_q; + reg [2:0] ACHTELSEKUNDEN_q; + reg [63:0] WERTE7__q; + reg [63:0] WERTE6__q; + reg [63:0] WERTE5__q; + reg [63:0] WERTE4__q; + reg [63:0] WERTE3__q; + reg [63:0] WERTE2__q; + reg [63:0] WERTE1__q; + reg [63:0] WERTE0__q; + reg [2:0] PIC_INT_SYNC_q; + + +// Sub Module Section + lpm_bustri_BYT u0 (.data(u0_data), .enabledt(u0_enabledt), + .tridata(u0_tridata)); + + lpm_bustri_BYT u1 (.data(u1_data), .enabledt(u1_enabledt), + .tridata(u1_tridata)); + + lpm_bustri_BYT u2 (.data(u2_data), .enabledt(u2_enabledt), + .tridata(u2_tridata)); + + lpm_bustri_BYT u3 (.data(u3_data), .enabledt(u3_enabledt), + .tridata(u3_tridata)); + + + assign ACP_CONF[31:24] = ACP_CONF_q[31:24]; + always @(posedge ACP_CONF0_clk_ctrl) + if (ACP_CONF24_ena_ctrl) + {ACP_CONF_q[31], ACP_CONF_q[30], ACP_CONF_q[29], ACP_CONF_q[28], + ACP_CONF_q[27], ACP_CONF_q[26], ACP_CONF_q[25], ACP_CONF_q[24]} + <= ACP_CONF_d[31:24]; + + assign ACP_CONF[23:16] = ACP_CONF_q[23:16]; + always @(posedge ACP_CONF0_clk_ctrl) + if (ACP_CONF16_ena_ctrl) + {ACP_CONF_q[23], ACP_CONF_q[22], ACP_CONF_q[21], ACP_CONF_q[20], + ACP_CONF_q[19], ACP_CONF_q[18], ACP_CONF_q[17], ACP_CONF_q[16]} + <= ACP_CONF_d[23:16]; + + assign ACP_CONF[15:8] = ACP_CONF_q[15:8]; + always @(posedge ACP_CONF0_clk_ctrl) + if (ACP_CONF8_ena_ctrl) + {ACP_CONF_q[15], ACP_CONF_q[14], ACP_CONF_q[13], ACP_CONF_q[12], + ACP_CONF_q[11], ACP_CONF_q[10], ACP_CONF_q[9], ACP_CONF_q[8]} <= + ACP_CONF_d[15:8]; + + assign ACP_CONF[7:0] = ACP_CONF_q[7:0]; + always @(posedge ACP_CONF0_clk_ctrl) + if (ACP_CONF0_ena_ctrl) + {ACP_CONF_q[7], ACP_CONF_q[6], ACP_CONF_q[5], ACP_CONF_q[4], + ACP_CONF_q[3], ACP_CONF_q[2], ACP_CONF_q[1], ACP_CONF_q[0]} <= + ACP_CONF_d[7:0]; + + always @(posedge INT_CTR0_clk_ctrl) + if (INT_CTR24_ena_ctrl) + {INT_CTR_q[31], INT_CTR_q[30], INT_CTR_q[29], INT_CTR_q[28], + INT_CTR_q[27], INT_CTR_q[26], INT_CTR_q[25], INT_CTR_q[24]} <= + INT_CTR_d[31:24]; + + always @(posedge INT_CTR0_clk_ctrl) + if (INT_CTR16_ena_ctrl) + {INT_CTR_q[23], INT_CTR_q[22], INT_CTR_q[21], INT_CTR_q[20], + INT_CTR_q[19], INT_CTR_q[18], INT_CTR_q[17], INT_CTR_q[16]} <= + INT_CTR_d[23:16]; + + always @(posedge INT_CTR0_clk_ctrl) + if (INT_CTR8_ena_ctrl) + {INT_CTR_q[15], INT_CTR_q[14], INT_CTR_q[13], INT_CTR_q[12], + INT_CTR_q[11], INT_CTR_q[10], INT_CTR_q[9], INT_CTR_q[8]} <= + INT_CTR_d[15:8]; + + always @(posedge INT_CTR0_clk_ctrl) + if (INT_CTR0_ena_ctrl) + {INT_CTR_q[7], INT_CTR_q[6], INT_CTR_q[5], INT_CTR_q[4], INT_CTR_q[3], + INT_CTR_q[2], INT_CTR_q[1], INT_CTR_q[0]} <= INT_CTR_d[7:0]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH31_clrn) + if (!INT_LATCH31_clrn) + INT_LATCH_q[31] <= 1'h0; + else + INT_LATCH_q[31] <= INT_LATCH_d[31]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH30_clrn) + if (!INT_LATCH30_clrn) + INT_LATCH_q[30] <= 1'h0; + else + INT_LATCH_q[30] <= INT_LATCH_d[30]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH29_clrn) + if (!INT_LATCH29_clrn) + INT_LATCH_q[29] <= 1'h0; + else + INT_LATCH_q[29] <= INT_LATCH_d[29]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH28_clrn) + if (!INT_LATCH28_clrn) + INT_LATCH_q[28] <= 1'h0; + else + INT_LATCH_q[28] <= INT_LATCH_d[28]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH27_clrn) + if (!INT_LATCH27_clrn) + INT_LATCH_q[27] <= 1'h0; + else + INT_LATCH_q[27] <= INT_LATCH_d[27]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH26_clrn) + if (!INT_LATCH26_clrn) + INT_LATCH_q[26] <= 1'h0; + else + INT_LATCH_q[26] <= INT_LATCH_d[26]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH25_clrn) + if (!INT_LATCH25_clrn) + INT_LATCH_q[25] <= 1'h0; + else + INT_LATCH_q[25] <= INT_LATCH_d[25]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH24_clrn) + if (!INT_LATCH24_clrn) + INT_LATCH_q[24] <= 1'h0; + else + INT_LATCH_q[24] <= INT_LATCH_d[24]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH23_clrn) + if (!INT_LATCH23_clrn) + INT_LATCH_q[23] <= 1'h0; + else + INT_LATCH_q[23] <= INT_LATCH_d[23]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH22_clrn) + if (!INT_LATCH22_clrn) + INT_LATCH_q[22] <= 1'h0; + else + INT_LATCH_q[22] <= INT_LATCH_d[22]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH21_clrn) + if (!INT_LATCH21_clrn) + INT_LATCH_q[21] <= 1'h0; + else + INT_LATCH_q[21] <= INT_LATCH_d[21]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH20_clrn) + if (!INT_LATCH20_clrn) + INT_LATCH_q[20] <= 1'h0; + else + INT_LATCH_q[20] <= INT_LATCH_d[20]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH19_clrn) + if (!INT_LATCH19_clrn) + INT_LATCH_q[19] <= 1'h0; + else + INT_LATCH_q[19] <= INT_LATCH_d[19]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH18_clrn) + if (!INT_LATCH18_clrn) + INT_LATCH_q[18] <= 1'h0; + else + INT_LATCH_q[18] <= INT_LATCH_d[18]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH17_clrn) + if (!INT_LATCH17_clrn) + INT_LATCH_q[17] <= 1'h0; + else + INT_LATCH_q[17] <= INT_LATCH_d[17]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH16_clrn) + if (!INT_LATCH16_clrn) + INT_LATCH_q[16] <= 1'h0; + else + INT_LATCH_q[16] <= INT_LATCH_d[16]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH15_clrn) + if (!INT_LATCH15_clrn) + INT_LATCH_q[15] <= 1'h0; + else + INT_LATCH_q[15] <= INT_LATCH_d[15]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH14_clrn) + if (!INT_LATCH14_clrn) + INT_LATCH_q[14] <= 1'h0; + else + INT_LATCH_q[14] <= INT_LATCH_d[14]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH13_clrn) + if (!INT_LATCH13_clrn) + INT_LATCH_q[13] <= 1'h0; + else + INT_LATCH_q[13] <= INT_LATCH_d[13]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH12_clrn) + if (!INT_LATCH12_clrn) + INT_LATCH_q[12] <= 1'h0; + else + INT_LATCH_q[12] <= INT_LATCH_d[12]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH11_clrn) + if (!INT_LATCH11_clrn) + INT_LATCH_q[11] <= 1'h0; + else + INT_LATCH_q[11] <= INT_LATCH_d[11]; + + always @(posedge INT_LATCH_clk or negedge INT_LATCH10_clrn) + if (!INT_LATCH10_clrn) + INT_LATCH_q[10] <= 1'h0; + else + INT_LATCH_q[10] <= INT_LATCH_d[10]; + + always @(posedge INT_LATCH9_clk_1 or negedge INT_LATCH9_clrn) + if (!INT_LATCH9_clrn) + INT_LATCH_q[9] <= 1'h0; + else + INT_LATCH_q[9] <= INT_LATCH_d[9]; + + always @(posedge INT_LATCH8_clk_1 or negedge INT_LATCH8_clrn) + if (!INT_LATCH8_clrn) + INT_LATCH_q[8] <= 1'h0; + else + INT_LATCH_q[8] <= INT_LATCH_d[8]; + + always @(posedge INT_LATCH7_clk_1 or negedge INT_LATCH7_clrn) + if (!INT_LATCH7_clrn) + INT_LATCH_q[7] <= 1'h0; + else + INT_LATCH_q[7] <= INT_LATCH_d[7]; + + always @(posedge INT_LATCH6_clk_1 or negedge INT_LATCH6_clrn) + if (!INT_LATCH6_clrn) + INT_LATCH_q[6] <= 1'h0; + else + INT_LATCH_q[6] <= INT_LATCH_d[6]; + + always @(posedge INT_LATCH5_clk_1 or negedge INT_LATCH5_clrn) + if (!INT_LATCH5_clrn) + INT_LATCH_q[5] <= 1'h0; + else + INT_LATCH_q[5] <= INT_LATCH_d[5]; + + always @(posedge INT_LATCH4_clk_1 or negedge INT_LATCH4_clrn) + if (!INT_LATCH4_clrn) + INT_LATCH_q[4] <= 1'h0; + else + INT_LATCH_q[4] <= INT_LATCH_d[4]; + + always @(posedge INT_LATCH3_clk_1 or negedge INT_LATCH3_clrn) + if (!INT_LATCH3_clrn) + INT_LATCH_q[3] <= 1'h0; + else + INT_LATCH_q[3] <= INT_LATCH_d[3]; + + always @(posedge INT_LATCH2_clk_1 or negedge INT_LATCH2_clrn) + if (!INT_LATCH2_clrn) + INT_LATCH_q[2] <= 1'h0; + else + INT_LATCH_q[2] <= INT_LATCH_d[2]; + + always @(posedge INT_LATCH1_clk_1 or negedge INT_LATCH1_clrn) + if (!INT_LATCH1_clrn) + INT_LATCH_q[1] <= 1'h0; + else + INT_LATCH_q[1] <= INT_LATCH_d[1]; + + always @(posedge INT_LATCH0_clk_1 or negedge INT_LATCH0_clrn) + if (!INT_LATCH0_clrn) + INT_LATCH_q[0] <= 1'h0; + else + INT_LATCH_q[0] <= INT_LATCH_d[0]; + + always @(posedge INT_CLEAR0_clk_ctrl) + INT_CLEAR_q <= INT_CLEAR_d; + + always @(posedge INT_ENA0_clk_ctrl) + if (INT_ENA24_ena_ctrl) + {INT_ENA_q[31], INT_ENA_q[30], INT_ENA_q[29], INT_ENA_q[28], + INT_ENA_q[27], INT_ENA_q[26], INT_ENA_q[25], INT_ENA_q[24]} <= + INT_ENA_d[31:24]; + + always @(posedge INT_ENA0_clk_ctrl) + if (INT_ENA16_ena_ctrl) + {INT_ENA_q[23], INT_ENA_q[22], INT_ENA_q[21], INT_ENA_q[20], + INT_ENA_q[19], INT_ENA_q[18], INT_ENA_q[17], INT_ENA_q[16]} <= + INT_ENA_d[23:16]; + + always @(posedge INT_ENA0_clk_ctrl) + if (INT_ENA8_ena_ctrl) + {INT_ENA_q[15], INT_ENA_q[14], INT_ENA_q[13], INT_ENA_q[12], + INT_ENA_q[11], INT_ENA_q[10], INT_ENA_q[9], INT_ENA_q[8]} <= + INT_ENA_d[15:8]; + + always @(posedge INT_ENA0_clk_ctrl) + if (INT_ENA0_ena_ctrl) + {INT_ENA_q[7], INT_ENA_q[6], INT_ENA_q[5], INT_ENA_q[4], INT_ENA_q[3], + INT_ENA_q[2], INT_ENA_q[1], INT_ENA_q[0]} <= INT_ENA_d[7:0]; + + always @(posedge RTC_ADR0_clk_ctrl) + if (RTC_ADR0_ena_ctrl) + RTC_ADR_q <= RTC_ADR_d; + + always @(posedge ACHTELSEKUNDEN0_clk_ctrl) + if (ACHTELSEKUNDEN0_ena_ctrl) + ACHTELSEKUNDEN_q <= ACHTELSEKUNDEN_d; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE7__q[63] <= WERTE7__d[63]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE7__q[62] <= WERTE7__d[62]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE7__q[61] <= WERTE7__d[61]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE7__q[60] <= WERTE7__d[60]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE7__q[59] <= WERTE7__d[59]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE7__q[58] <= WERTE7__d[58]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE7__q[57] <= WERTE7__d[57]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE7__q[56] <= WERTE7__d[56]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE7__q[55] <= WERTE7__d[55]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE7__q[54] <= WERTE7__d[54]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE7__q[53] <= WERTE7__d[53]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE7__q[52] <= WERTE7__d[52]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE7__q[51] <= WERTE7__d[51]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE7__q[50] <= WERTE7__d[50]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE7__q[49] <= WERTE7__d[49]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE7__q[48] <= WERTE7__d[48]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE7__q[47] <= WERTE7__d[47]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE7__q[46] <= WERTE7__d[46]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE7__q[45] <= WERTE7__d[45]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE7__q[44] <= WERTE7__d[44]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE7__q[43] <= WERTE7__d[43]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE7__q[42] <= WERTE7__d[42]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE7__q[41] <= WERTE7__d[41]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE7__q[40] <= WERTE7__d[40]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE7__q[39] <= WERTE7__d[39]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE7__q[38] <= WERTE7__d[38]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE7__q[37] <= WERTE7__d[37]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE7__q[36] <= WERTE7__d[36]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE7__q[35] <= WERTE7__d[35]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE7__q[34] <= WERTE7__d[34]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE7__q[33] <= WERTE7__d[33]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE7__q[32] <= WERTE7__d[32]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE7__q[31] <= WERTE7__d[31]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE7__q[30] <= WERTE7__d[30]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE7__q[29] <= WERTE7__d[29]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE7__q[28] <= WERTE7__d[28]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE7__q[27] <= WERTE7__d[27]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE7__q[26] <= WERTE7__d[26]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE7__q[25] <= WERTE7__d[25]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE7__q[24] <= WERTE7__d[24]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE7__q[23] <= WERTE7__d[23]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE7__q[22] <= WERTE7__d[22]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE7__q[21] <= WERTE7__d[21]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE7__q[20] <= WERTE7__d[20]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE7__q[19] <= WERTE7__d[19]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE7__q[18] <= WERTE7__d[18]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE7__q[17] <= WERTE7__d[17]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE7__q[16] <= WERTE7__d[16]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE7__q[15] <= WERTE7__d[15]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE7__q[14] <= WERTE7__d[14]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_13_ena) + WERTE7__q[13] <= WERTE7__d[13]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE7__q[12] <= WERTE7__d[12]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE7__q[11] <= WERTE7__d[11]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE7__q[10] <= WERTE7__d[10]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_9_ena) + WERTE7__q[9] <= WERTE7__d[9]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_8_ena) + WERTE7__q[8] <= WERTE7__d[8]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_7_ena) + WERTE7__q[7] <= WERTE7__d[7]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_6_ena) + WERTE7__q[6] <= WERTE7__d[6]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE7__q[5] <= WERTE7__d[5]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_4_ena) + WERTE7__q[4] <= WERTE7__d[4]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE7__q[3] <= WERTE7__d[3]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_2_ena) + WERTE7__q[2] <= WERTE7__d[2]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE7__q[1] <= WERTE7__d[1]; + + always @(posedge WERTE7_0_clk_ctrl) + if (WERTE7_0_ena) + WERTE7__q[0] <= WERTE7__d[0]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE6__q[63] <= WERTE6__d[63]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE6__q[62] <= WERTE6__d[62]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE6__q[61] <= WERTE6__d[61]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE6__q[60] <= WERTE6__d[60]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE6__q[59] <= WERTE6__d[59]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE6__q[58] <= WERTE6__d[58]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE6__q[57] <= WERTE6__d[57]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE6__q[56] <= WERTE6__d[56]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE6__q[55] <= WERTE6__d[55]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE6__q[54] <= WERTE6__d[54]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE6__q[53] <= WERTE6__d[53]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE6__q[52] <= WERTE6__d[52]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE6__q[51] <= WERTE6__d[51]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE6__q[50] <= WERTE6__d[50]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE6__q[49] <= WERTE6__d[49]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE6__q[48] <= WERTE6__d[48]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE6__q[47] <= WERTE6__d[47]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE6__q[46] <= WERTE6__d[46]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE6__q[45] <= WERTE6__d[45]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE6__q[44] <= WERTE6__d[44]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE6__q[43] <= WERTE6__d[43]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE6__q[42] <= WERTE6__d[42]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE6__q[41] <= WERTE6__d[41]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE6__q[40] <= WERTE6__d[40]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE6__q[39] <= WERTE6__d[39]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE6__q[38] <= WERTE6__d[38]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE6__q[37] <= WERTE6__d[37]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE6__q[36] <= WERTE6__d[36]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE6__q[35] <= WERTE6__d[35]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE6__q[34] <= WERTE6__d[34]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE6__q[33] <= WERTE6__d[33]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE6__q[32] <= WERTE6__d[32]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE6__q[31] <= WERTE6__d[31]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE6__q[30] <= WERTE6__d[30]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE6__q[29] <= WERTE6__d[29]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE6__q[28] <= WERTE6__d[28]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE6__q[27] <= WERTE6__d[27]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE6__q[26] <= WERTE6__d[26]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE6__q[25] <= WERTE6__d[25]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE6__q[24] <= WERTE6__d[24]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE6__q[23] <= WERTE6__d[23]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE6__q[22] <= WERTE6__d[22]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE6__q[21] <= WERTE6__d[21]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE6__q[20] <= WERTE6__d[20]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE6__q[19] <= WERTE6__d[19]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE6__q[18] <= WERTE6__d[18]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE6__q[17] <= WERTE6__d[17]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE6__q[16] <= WERTE6__d[16]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE6__q[15] <= WERTE6__d[15]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE6__q[14] <= WERTE6__d[14]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_13_ena) + WERTE6__q[13] <= WERTE6__d[13]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE6__q[12] <= WERTE6__d[12]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE6__q[11] <= WERTE6__d[11]; + + always @(posedge WERTE6_0_clk_ctrl or negedge WERTE6_10_clrn) + if (!WERTE6_10_clrn) + WERTE6__q[10] <= 1'h0; + else + if (WERTE0_10_ena_ctrl) + WERTE6__q[10] <= WERTE6__d[10]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_9_ena) + WERTE6__q[9] <= WERTE6__d[9]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_8_ena) + WERTE6__q[8] <= WERTE6__d[8]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_7_ena) + WERTE6__q[7] <= WERTE6__d[7]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_6_ena) + WERTE6__q[6] <= WERTE6__d[6]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE6__q[5] <= WERTE6__d[5]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_4_ena) + WERTE6__q[4] <= WERTE6__d[4]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE6__q[3] <= WERTE6__d[3]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_2_ena) + WERTE6__q[2] <= WERTE6__d[2]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE6__q[1] <= WERTE6__d[1]; + + always @(posedge WERTE6_0_clk_ctrl) + if (WERTE6_0_ena) + WERTE6__q[0] <= WERTE6__d[0]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE5__q[63] <= WERTE5__d[63]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE5__q[62] <= WERTE5__d[62]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE5__q[61] <= WERTE5__d[61]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE5__q[60] <= WERTE5__d[60]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE5__q[59] <= WERTE5__d[59]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE5__q[58] <= WERTE5__d[58]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE5__q[57] <= WERTE5__d[57]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE5__q[56] <= WERTE5__d[56]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE5__q[55] <= WERTE5__d[55]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE5__q[54] <= WERTE5__d[54]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE5__q[53] <= WERTE5__d[53]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE5__q[52] <= WERTE5__d[52]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE5__q[51] <= WERTE5__d[51]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE5__q[50] <= WERTE5__d[50]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE5__q[49] <= WERTE5__d[49]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE5__q[48] <= WERTE5__d[48]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE5__q[47] <= WERTE5__d[47]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE5__q[46] <= WERTE5__d[46]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE5__q[45] <= WERTE5__d[45]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE5__q[44] <= WERTE5__d[44]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE5__q[43] <= WERTE5__d[43]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE5__q[42] <= WERTE5__d[42]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE5__q[41] <= WERTE5__d[41]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE5__q[40] <= WERTE5__d[40]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE5__q[39] <= WERTE5__d[39]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE5__q[38] <= WERTE5__d[38]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE5__q[37] <= WERTE5__d[37]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE5__q[36] <= WERTE5__d[36]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE5__q[35] <= WERTE5__d[35]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE5__q[34] <= WERTE5__d[34]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE5__q[33] <= WERTE5__d[33]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE5__q[32] <= WERTE5__d[32]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE5__q[31] <= WERTE5__d[31]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE5__q[30] <= WERTE5__d[30]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE5__q[29] <= WERTE5__d[29]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE5__q[28] <= WERTE5__d[28]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE5__q[27] <= WERTE5__d[27]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE5__q[26] <= WERTE5__d[26]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE5__q[25] <= WERTE5__d[25]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE5__q[24] <= WERTE5__d[24]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE5__q[23] <= WERTE5__d[23]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE5__q[22] <= WERTE5__d[22]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE5__q[21] <= WERTE5__d[21]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE5__q[20] <= WERTE5__d[20]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE5__q[19] <= WERTE5__d[19]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE5__q[18] <= WERTE5__d[18]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE5__q[17] <= WERTE5__d[17]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE5__q[16] <= WERTE5__d[16]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE5__q[15] <= WERTE5__d[15]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE5__q[14] <= WERTE5__d[14]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_13_ena) + WERTE5__q[13] <= WERTE5__d[13]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE5__q[12] <= WERTE5__d[12]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE5__q[11] <= WERTE5__d[11]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE5__q[10] <= WERTE5__d[10]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_9_ena) + WERTE5__q[9] <= WERTE5__d[9]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_8_ena) + WERTE5__q[8] <= WERTE5__d[8]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_7_ena) + WERTE5__q[7] <= WERTE5__d[7]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_6_ena) + WERTE5__q[6] <= WERTE5__d[6]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE5__q[5] <= WERTE5__d[5]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_4_ena) + WERTE5__q[4] <= WERTE5__d[4]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE5__q[3] <= WERTE5__d[3]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_2_ena) + WERTE5__q[2] <= WERTE5__d[2]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE5__q[1] <= WERTE5__d[1]; + + always @(posedge WERTE5_0_clk_ctrl) + if (WERTE5_0_ena) + WERTE5__q[0] <= WERTE5__d[0]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE4__q[63] <= WERTE4__d[63]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE4__q[62] <= WERTE4__d[62]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE4__q[61] <= WERTE4__d[61]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE4__q[60] <= WERTE4__d[60]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE4__q[59] <= WERTE4__d[59]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE4__q[58] <= WERTE4__d[58]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE4__q[57] <= WERTE4__d[57]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE4__q[56] <= WERTE4__d[56]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE4__q[55] <= WERTE4__d[55]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE4__q[54] <= WERTE4__d[54]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE4__q[53] <= WERTE4__d[53]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE4__q[52] <= WERTE4__d[52]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE4__q[51] <= WERTE4__d[51]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE4__q[50] <= WERTE4__d[50]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE4__q[49] <= WERTE4__d[49]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE4__q[48] <= WERTE4__d[48]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE4__q[47] <= WERTE4__d[47]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE4__q[46] <= WERTE4__d[46]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE4__q[45] <= WERTE4__d[45]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE4__q[44] <= WERTE4__d[44]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE4__q[43] <= WERTE4__d[43]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE4__q[42] <= WERTE4__d[42]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE4__q[41] <= WERTE4__d[41]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE4__q[40] <= WERTE4__d[40]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE4__q[39] <= WERTE4__d[39]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE4__q[38] <= WERTE4__d[38]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE4__q[37] <= WERTE4__d[37]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE4__q[36] <= WERTE4__d[36]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE4__q[35] <= WERTE4__d[35]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE4__q[34] <= WERTE4__d[34]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE4__q[33] <= WERTE4__d[33]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE4__q[32] <= WERTE4__d[32]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE4__q[31] <= WERTE4__d[31]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE4__q[30] <= WERTE4__d[30]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE4__q[29] <= WERTE4__d[29]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE4__q[28] <= WERTE4__d[28]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE4__q[27] <= WERTE4__d[27]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE4__q[26] <= WERTE4__d[26]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE4__q[25] <= WERTE4__d[25]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE4__q[24] <= WERTE4__d[24]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE4__q[23] <= WERTE4__d[23]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE4__q[22] <= WERTE4__d[22]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE4__q[21] <= WERTE4__d[21]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE4__q[20] <= WERTE4__d[20]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE4__q[19] <= WERTE4__d[19]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE4__q[18] <= WERTE4__d[18]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE4__q[17] <= WERTE4__d[17]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE4__q[16] <= WERTE4__d[16]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE4__q[15] <= WERTE4__d[15]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE4__q[14] <= WERTE4__d[14]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_13_ena) + WERTE4__q[13] <= WERTE4__d[13]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE4__q[12] <= WERTE4__d[12]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE4__q[11] <= WERTE4__d[11]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE4__q[10] <= WERTE4__d[10]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_9_ena) + WERTE4__q[9] <= WERTE4__d[9]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_8_ena) + WERTE4__q[8] <= WERTE4__d[8]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_7_ena) + WERTE4__q[7] <= WERTE4__d[7]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_6_ena) + WERTE4__q[6] <= WERTE4__d[6]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE4__q[5] <= WERTE4__d[5]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_4_ena) + WERTE4__q[4] <= WERTE4__d[4]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE4__q[3] <= WERTE4__d[3]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_2_ena) + WERTE4__q[2] <= WERTE4__d[2]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE4__q[1] <= WERTE4__d[1]; + + always @(posedge WERTE4_0_clk_ctrl) + if (WERTE4_0_ena) + WERTE4__q[0] <= WERTE4__d[0]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE3__q[63] <= WERTE3__d[63]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE3__q[62] <= WERTE3__d[62]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE3__q[61] <= WERTE3__d[61]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE3__q[60] <= WERTE3__d[60]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE3__q[59] <= WERTE3__d[59]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE3__q[58] <= WERTE3__d[58]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE3__q[57] <= WERTE3__d[57]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE3__q[56] <= WERTE3__d[56]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE3__q[55] <= WERTE3__d[55]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE3__q[54] <= WERTE3__d[54]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE3__q[53] <= WERTE3__d[53]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE3__q[52] <= WERTE3__d[52]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE3__q[51] <= WERTE3__d[51]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE3__q[50] <= WERTE3__d[50]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE3__q[49] <= WERTE3__d[49]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE3__q[48] <= WERTE3__d[48]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE3__q[47] <= WERTE3__d[47]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE3__q[46] <= WERTE3__d[46]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE3__q[45] <= WERTE3__d[45]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE3__q[44] <= WERTE3__d[44]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE3__q[43] <= WERTE3__d[43]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE3__q[42] <= WERTE3__d[42]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE3__q[41] <= WERTE3__d[41]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE3__q[40] <= WERTE3__d[40]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE3__q[39] <= WERTE3__d[39]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE3__q[38] <= WERTE3__d[38]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE3__q[37] <= WERTE3__d[37]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE3__q[36] <= WERTE3__d[36]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE3__q[35] <= WERTE3__d[35]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE3__q[34] <= WERTE3__d[34]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE3__q[33] <= WERTE3__d[33]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE3__q[32] <= WERTE3__d[32]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE3__q[31] <= WERTE3__d[31]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE3__q[30] <= WERTE3__d[30]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE3__q[29] <= WERTE3__d[29]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE3__q[28] <= WERTE3__d[28]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE3__q[27] <= WERTE3__d[27]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE3__q[26] <= WERTE3__d[26]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE3__q[25] <= WERTE3__d[25]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE3__q[24] <= WERTE3__d[24]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE3__q[23] <= WERTE3__d[23]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE3__q[22] <= WERTE3__d[22]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE3__q[21] <= WERTE3__d[21]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE3__q[20] <= WERTE3__d[20]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE3__q[19] <= WERTE3__d[19]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE3__q[18] <= WERTE3__d[18]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE3__q[17] <= WERTE3__d[17]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE3__q[16] <= WERTE3__d[16]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE3__q[15] <= WERTE3__d[15]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE3__q[14] <= WERTE3__d[14]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_13_ena) + WERTE3__q[13] <= WERTE3__d[13]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE3__q[12] <= WERTE3__d[12]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE3__q[11] <= WERTE3__d[11]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE3__q[10] <= WERTE3__d[10]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_9_ena) + WERTE3__q[9] <= WERTE3__d[9]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_8_ena) + WERTE3__q[8] <= WERTE3__d[8]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_7_ena) + WERTE3__q[7] <= WERTE3__d[7]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_6_ena) + WERTE3__q[6] <= WERTE3__d[6]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE3__q[5] <= WERTE3__d[5]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_4_ena) + WERTE3__q[4] <= WERTE3__d[4]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE3__q[3] <= WERTE3__d[3]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_2_ena) + WERTE3__q[2] <= WERTE3__d[2]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE3__q[1] <= WERTE3__d[1]; + + always @(posedge WERTE3_0_clk_ctrl) + if (WERTE3_0_ena) + WERTE3__q[0] <= WERTE3__d[0]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE2__q[63] <= WERTE2__d[63]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE2__q[62] <= WERTE2__d[62]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE2__q[61] <= WERTE2__d[61]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE2__q[60] <= WERTE2__d[60]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE2__q[59] <= WERTE2__d[59]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE2__q[58] <= WERTE2__d[58]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE2__q[57] <= WERTE2__d[57]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE2__q[56] <= WERTE2__d[56]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE2__q[55] <= WERTE2__d[55]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE2__q[54] <= WERTE2__d[54]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE2__q[53] <= WERTE2__d[53]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE2__q[52] <= WERTE2__d[52]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE2__q[51] <= WERTE2__d[51]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE2__q[50] <= WERTE2__d[50]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE2__q[49] <= WERTE2__d[49]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE2__q[48] <= WERTE2__d[48]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE2__q[47] <= WERTE2__d[47]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE2__q[46] <= WERTE2__d[46]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE2__q[45] <= WERTE2__d[45]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE2__q[44] <= WERTE2__d[44]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE2__q[43] <= WERTE2__d[43]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE2__q[42] <= WERTE2__d[42]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE2__q[41] <= WERTE2__d[41]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE2__q[40] <= WERTE2__d[40]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE2__q[39] <= WERTE2__d[39]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE2__q[38] <= WERTE2__d[38]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE2__q[37] <= WERTE2__d[37]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE2__q[36] <= WERTE2__d[36]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE2__q[35] <= WERTE2__d[35]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE2__q[34] <= WERTE2__d[34]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE2__q[33] <= WERTE2__d[33]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE2__q[32] <= WERTE2__d[32]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE2__q[31] <= WERTE2__d[31]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE2__q[30] <= WERTE2__d[30]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE2__q[29] <= WERTE2__d[29]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE2__q[28] <= WERTE2__d[28]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE2__q[27] <= WERTE2__d[27]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE2__q[26] <= WERTE2__d[26]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE2__q[25] <= WERTE2__d[25]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE2__q[24] <= WERTE2__d[24]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE2__q[23] <= WERTE2__d[23]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE2__q[22] <= WERTE2__d[22]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE2__q[21] <= WERTE2__d[21]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE2__q[20] <= WERTE2__d[20]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE2__q[19] <= WERTE2__d[19]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE2__q[18] <= WERTE2__d[18]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE2__q[17] <= WERTE2__d[17]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE2__q[16] <= WERTE2__d[16]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE2__q[15] <= WERTE2__d[15]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE2__q[14] <= WERTE2__d[14]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_13_ena) + WERTE2__q[13] <= WERTE2__d[13]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE2__q[12] <= WERTE2__d[12]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE2__q[11] <= WERTE2__d[11]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE2__q[10] <= WERTE2__d[10]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_9_ena) + WERTE2__q[9] <= WERTE2__d[9]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_8_ena) + WERTE2__q[8] <= WERTE2__d[8]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_7_ena) + WERTE2__q[7] <= WERTE2__d[7]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_6_ena) + WERTE2__q[6] <= WERTE2__d[6]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE2__q[5] <= WERTE2__d[5]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_4_ena) + WERTE2__q[4] <= WERTE2__d[4]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE2__q[3] <= WERTE2__d[3]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_2_ena) + WERTE2__q[2] <= WERTE2__d[2]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE2__q[1] <= WERTE2__d[1]; + + always @(posedge WERTE2_0_clk_ctrl) + if (WERTE2_0_ena) + WERTE2__q[0] <= WERTE2__d[0]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE1__q[63] <= WERTE1__d[63]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE1__q[62] <= WERTE1__d[62]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE1__q[61] <= WERTE1__d[61]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE1__q[60] <= WERTE1__d[60]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE1__q[59] <= WERTE1__d[59]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE1__q[58] <= WERTE1__d[58]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE1__q[57] <= WERTE1__d[57]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE1__q[56] <= WERTE1__d[56]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE1__q[55] <= WERTE1__d[55]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE1__q[54] <= WERTE1__d[54]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE1__q[53] <= WERTE1__d[53]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE1__q[52] <= WERTE1__d[52]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE1__q[51] <= WERTE1__d[51]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE1__q[50] <= WERTE1__d[50]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE1__q[49] <= WERTE1__d[49]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE1__q[48] <= WERTE1__d[48]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE1__q[47] <= WERTE1__d[47]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE1__q[46] <= WERTE1__d[46]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE1__q[45] <= WERTE1__d[45]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE1__q[44] <= WERTE1__d[44]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE1__q[43] <= WERTE1__d[43]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE1__q[42] <= WERTE1__d[42]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE1__q[41] <= WERTE1__d[41]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE1__q[40] <= WERTE1__d[40]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE1__q[39] <= WERTE1__d[39]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE1__q[38] <= WERTE1__d[38]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE1__q[37] <= WERTE1__d[37]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE1__q[36] <= WERTE1__d[36]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE1__q[35] <= WERTE1__d[35]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE1__q[34] <= WERTE1__d[34]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE1__q[33] <= WERTE1__d[33]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE1__q[32] <= WERTE1__d[32]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE1__q[31] <= WERTE1__d[31]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE1__q[30] <= WERTE1__d[30]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE1__q[29] <= WERTE1__d[29]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE1__q[28] <= WERTE1__d[28]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE1__q[27] <= WERTE1__d[27]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE1__q[26] <= WERTE1__d[26]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE1__q[25] <= WERTE1__d[25]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE1__q[24] <= WERTE1__d[24]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE1__q[23] <= WERTE1__d[23]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE1__q[22] <= WERTE1__d[22]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE1__q[21] <= WERTE1__d[21]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE1__q[20] <= WERTE1__d[20]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE1__q[19] <= WERTE1__d[19]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE1__q[18] <= WERTE1__d[18]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE1__q[17] <= WERTE1__d[17]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE1__q[16] <= WERTE1__d[16]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE1__q[15] <= WERTE1__d[15]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE1__q[14] <= WERTE1__d[14]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_13_ena) + WERTE1__q[13] <= WERTE1__d[13]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE1__q[12] <= WERTE1__d[12]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE1__q[11] <= WERTE1__d[11]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE1__q[10] <= WERTE1__d[10]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_9_ena) + WERTE1__q[9] <= WERTE1__d[9]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_8_ena) + WERTE1__q[8] <= WERTE1__d[8]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_7_ena) + WERTE1__q[7] <= WERTE1__d[7]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_6_ena) + WERTE1__q[6] <= WERTE1__d[6]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE1__q[5] <= WERTE1__d[5]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_4_ena) + WERTE1__q[4] <= WERTE1__d[4]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE1__q[3] <= WERTE1__d[3]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_2_ena) + WERTE1__q[2] <= WERTE1__d[2]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE1__q[1] <= WERTE1__d[1]; + + always @(posedge WERTE1_0_clk_ctrl) + if (WERTE1_0_ena) + WERTE1__q[0] <= WERTE1__d[0]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_63_ena_ctrl) + WERTE0__q[63] <= WERTE0__d[63]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_62_ena_ctrl) + WERTE0__q[62] <= WERTE0__d[62]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_61_ena_ctrl) + WERTE0__q[61] <= WERTE0__d[61]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_60_ena_ctrl) + WERTE0__q[60] <= WERTE0__d[60]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_59_ena_ctrl) + WERTE0__q[59] <= WERTE0__d[59]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_58_ena_ctrl) + WERTE0__q[58] <= WERTE0__d[58]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_57_ena_ctrl) + WERTE0__q[57] <= WERTE0__d[57]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_56_ena_ctrl) + WERTE0__q[56] <= WERTE0__d[56]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_55_ena_ctrl) + WERTE0__q[55] <= WERTE0__d[55]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_54_ena_ctrl) + WERTE0__q[54] <= WERTE0__d[54]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_53_ena_ctrl) + WERTE0__q[53] <= WERTE0__d[53]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_52_ena_ctrl) + WERTE0__q[52] <= WERTE0__d[52]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_51_ena_ctrl) + WERTE0__q[51] <= WERTE0__d[51]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_50_ena_ctrl) + WERTE0__q[50] <= WERTE0__d[50]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_49_ena_ctrl) + WERTE0__q[49] <= WERTE0__d[49]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_48_ena_ctrl) + WERTE0__q[48] <= WERTE0__d[48]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_47_ena_ctrl) + WERTE0__q[47] <= WERTE0__d[47]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_46_ena_ctrl) + WERTE0__q[46] <= WERTE0__d[46]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_45_ena_ctrl) + WERTE0__q[45] <= WERTE0__d[45]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_44_ena_ctrl) + WERTE0__q[44] <= WERTE0__d[44]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_43_ena_ctrl) + WERTE0__q[43] <= WERTE0__d[43]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_42_ena_ctrl) + WERTE0__q[42] <= WERTE0__d[42]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_41_ena_ctrl) + WERTE0__q[41] <= WERTE0__d[41]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_40_ena_ctrl) + WERTE0__q[40] <= WERTE0__d[40]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_39_ena_ctrl) + WERTE0__q[39] <= WERTE0__d[39]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_38_ena_ctrl) + WERTE0__q[38] <= WERTE0__d[38]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_37_ena_ctrl) + WERTE0__q[37] <= WERTE0__d[37]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_36_ena_ctrl) + WERTE0__q[36] <= WERTE0__d[36]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_35_ena_ctrl) + WERTE0__q[35] <= WERTE0__d[35]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_34_ena_ctrl) + WERTE0__q[34] <= WERTE0__d[34]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_33_ena_ctrl) + WERTE0__q[33] <= WERTE0__d[33]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_32_ena_ctrl) + WERTE0__q[32] <= WERTE0__d[32]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_31_ena_ctrl) + WERTE0__q[31] <= WERTE0__d[31]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_30_ena_ctrl) + WERTE0__q[30] <= WERTE0__d[30]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_29_ena_ctrl) + WERTE0__q[29] <= WERTE0__d[29]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_28_ena_ctrl) + WERTE0__q[28] <= WERTE0__d[28]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_27_ena_ctrl) + WERTE0__q[27] <= WERTE0__d[27]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_26_ena_ctrl) + WERTE0__q[26] <= WERTE0__d[26]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_25_ena_ctrl) + WERTE0__q[25] <= WERTE0__d[25]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_24_ena_ctrl) + WERTE0__q[24] <= WERTE0__d[24]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_23_ena_ctrl) + WERTE0__q[23] <= WERTE0__d[23]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_22_ena_ctrl) + WERTE0__q[22] <= WERTE0__d[22]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_21_ena_ctrl) + WERTE0__q[21] <= WERTE0__d[21]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_20_ena_ctrl) + WERTE0__q[20] <= WERTE0__d[20]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_19_ena_ctrl) + WERTE0__q[19] <= WERTE0__d[19]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_18_ena_ctrl) + WERTE0__q[18] <= WERTE0__d[18]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_17_ena_ctrl) + WERTE0__q[17] <= WERTE0__d[17]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_16_ena_ctrl) + WERTE0__q[16] <= WERTE0__d[16]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_15_ena_ctrl) + WERTE0__q[15] <= WERTE0__d[15]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_14_ena_ctrl) + WERTE0__q[14] <= WERTE0__d[14]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_13_ena) + WERTE0__q[13] <= WERTE0__d[13]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_12_ena_ctrl) + WERTE0__q[12] <= WERTE0__d[12]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_11_ena_ctrl) + WERTE0__q[11] <= WERTE0__d[11]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_10_ena_ctrl) + WERTE0__q[10] <= WERTE0__d[10]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_9_ena) + WERTE0__q[9] <= WERTE0__d[9]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_8_ena) + WERTE0__q[8] <= WERTE0__d[8]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_7_ena) + WERTE0__q[7] <= WERTE0__d[7]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_6_ena) + WERTE0__q[6] <= WERTE0__d[6]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_5_ena_ctrl) + WERTE0__q[5] <= WERTE0__d[5]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_4_ena) + WERTE0__q[4] <= WERTE0__d[4]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_3_ena_ctrl) + WERTE0__q[3] <= WERTE0__d[3]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_2_ena) + WERTE0__q[2] <= WERTE0__d[2]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_1_ena_ctrl) + WERTE0__q[1] <= WERTE0__d[1]; + + always @(posedge WERTE0_0_clk_ctrl) + if (WERTE0_0_ena) + WERTE0__q[0] <= WERTE0__d[0]; + + always @(posedge PIC_INT_SYNC0_clk_ctrl) + PIC_INT_SYNC_q <= PIC_INT_SYNC_d; + +// Start of original equations + +// BYT SELECT +// HWORD +// HHBYT +// LONG UND LINE + assign FB_B[0] = (FB_SIZE1 & (!FB_SIZE0) & (!FB_ADR[1])) | ((!FB_SIZE1) & + FB_SIZE0 & (!FB_ADR[1]) & (!FB_ADR[0])) | ((!FB_SIZE1) & (!FB_SIZE0)) + | (FB_SIZE1 & FB_SIZE0); + +// HWORD +// HLBYT +// LONG UND LINE + assign FB_B[1] = (FB_SIZE1 & (!FB_SIZE0) & (!FB_ADR[1])) | ((!FB_SIZE1) & + FB_SIZE0 & (!FB_ADR[1]) & FB_ADR[0]) | ((!FB_SIZE1) & (!FB_SIZE0)) | + (FB_SIZE1 & FB_SIZE0); + +// LWORD +// LHBYT +// LONG UND LINE + assign FB_B[2] = (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) | ((!FB_SIZE1) & + FB_SIZE0 & FB_ADR[1] & (!FB_ADR[0])) | ((!FB_SIZE1) & (!FB_SIZE0)) | + (FB_SIZE1 & FB_SIZE0); + +// LWORD +// LLBYT +// LONG UND LINE + assign FB_B[3] = (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) | ((!FB_SIZE1) & + FB_SIZE0 & FB_ADR[1] & FB_ADR[0]) | ((!FB_SIZE1) & (!FB_SIZE0)) | + (FB_SIZE1 & FB_SIZE0); + +// INTERRUPT CONTROL REGISTER: BIT0=INT5 AUSLÖSEN, 1=INT7 AUSLÖSEN + assign INT_CTR0_clk_ctrl = MAIN_CLK; + +// $10000/4 + assign INT_CTR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4000; + assign INT_CTR_d = FB_AD; + assign INT_CTR24_ena_ctrl = INT_CTR_CS & FB_B[0] & (!nFB_WR); + assign INT_CTR16_ena_ctrl = INT_CTR_CS & FB_B[1] & (!nFB_WR); + assign INT_CTR8_ena_ctrl = INT_CTR_CS & FB_B[2] & (!nFB_WR); + assign INT_CTR0_ena_ctrl = INT_CTR_CS & FB_B[3] & (!nFB_WR); + +// INTERRUPT ENABLE REGISTER BIT31=INT7,30=INT6,29=INT5,28=INT4,27=INT3,26=INT2 + assign INT_ENA0_clk_ctrl = MAIN_CLK; + +// $10004/4 + assign INT_ENA_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4001; + assign INT_ENA_d = FB_AD; + assign INT_ENA24_ena_ctrl = INT_ENA_CS & FB_B[0] & (!nFB_WR); + assign INT_ENA16_ena_ctrl = INT_ENA_CS & FB_B[1] & (!nFB_WR); + assign INT_ENA8_ena_ctrl = INT_ENA_CS & FB_B[2] & (!nFB_WR); + assign INT_ENA0_ena_ctrl = INT_ENA_CS & FB_B[3] & (!nFB_WR); + +// INTERRUPT CLEAR REGISTER WRITE ONLY 1=INTERRUPT CLEAR + assign INT_CLEAR0_clk_ctrl = MAIN_CLK; + +// $10008/4 + assign INT_CLEAR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4002; + assign INT_CLEAR_d[31:24] = FB_AD[31:24] & {8{INT_CLEAR_CS}} & {8{FB_B[0]}} + & {8{!nFB_WR}}; + assign INT_CLEAR_d[23:16] = FB_AD[23:16] & {8{INT_CLEAR_CS}} & {8{FB_B[1]}} + & {8{!nFB_WR}}; + assign INT_CLEAR_d[15:8] = FB_AD[15:8] & {8{INT_CLEAR_CS}} & {8{FB_B[2]}} & + {8{!nFB_WR}}; + assign INT_CLEAR_d[7:0] = FB_AD[7:0] & {8{INT_CLEAR_CS}} & {8{FB_B[3]}} & + {8{!nFB_WR}}; + +// INTERRUPT LATCH REGISTER READ ONLY +// $1000C/4 + assign INT_LATCH_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4003; + +// INTERRUPT + assign nIRQ[2] = !(HSYNC & INT_ENA_q[26]); + assign nIRQ[3] = !(INT_CTR_q[0] & INT_ENA_q[27]); + assign nIRQ[4] = !(VSYNC & INT_ENA_q[28]); + assign nIRQ[5] = INT_LATCH_q == 32'h0 & INT_ENA_q[29]; + assign nIRQ[6] = !((!nMFP_INT) & INT_ENA_q[30]); + assign nIRQ[7] = !(PSEUDO_BUS_ERROR & INT_ENA_q[31]); + +// SCC +// VME +// PADDLE +// PADDLE +// PADDLE +// MFP2 +// MFP2 +// MFP2 +// MFP2 +// TT SCSI +// ST UHR +// ST UHR +// DMA SOUND +// DMA SOUND +// DMA SOUND + assign PSEUDO_BUS_ERROR = (!nFB_CS1) & (FB_ADR[19:4] == 16'hF8C8 | + FB_ADR[19:4] == 16'hF8E0 | FB_ADR[19:4] == 16'hF920 | FB_ADR[19:4] == + 16'hF921 | FB_ADR[19:4] == 16'hF922 | FB_ADR[19:4] == 16'hFFA8 | + FB_ADR[19:4] == 16'hFFA9 | FB_ADR[19:4] == 16'hFFAA | FB_ADR[19:4] == + 16'hFFA8 | FB_ADR[19:8] == 12'b1111_1000_0111 | FB_ADR[19:4] == + 16'hFFC2 | FB_ADR[19:4] == 16'hFFC3 | FB_ADR[19:4] == 16'hF890 | + FB_ADR[19:4] == 16'hF891 | FB_ADR[19:4] == 16'hF892); + +// IF VIDEO ADR CHANGE +// WRITE VIDEO BASE ADR HIGH 0xFFFF8201/2 + assign TIN0 = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C100 & (!nFB_WR); + +// INTERRUPT LATCH + assign INT_LATCH_d = 32'hFFFF_FFFF; + assign INT_LATCH0_clk_1 = PIC_INT & INT_ENA_q[0]; + assign INT_LATCH1_clk_1 = E0_INT & INT_ENA_q[1]; + assign INT_LATCH2_clk_1 = DVI_INT & INT_ENA_q[2]; + assign INT_LATCH3_clk_1 = (!nPCI_INTA) & INT_ENA_q[3]; + assign INT_LATCH4_clk_1 = (!nPCI_INTB) & INT_ENA_q[4]; + assign INT_LATCH5_clk_1 = (!nPCI_INTC) & INT_ENA_q[5]; + assign INT_LATCH6_clk_1 = (!nPCI_INTD) & INT_ENA_q[6]; + assign INT_LATCH7_clk_1 = DSP_INT & INT_ENA_q[7]; + assign INT_LATCH8_clk_1 = VSYNC & INT_ENA_q[8]; + assign INT_LATCH9_clk_1 = HSYNC & INT_ENA_q[9]; + +// INTERRUPT CLEAR + assign {INT_LATCH31_clrn, INT_LATCH30_clrn, INT_LATCH29_clrn, + INT_LATCH28_clrn, INT_LATCH27_clrn, INT_LATCH26_clrn, + INT_LATCH25_clrn, INT_LATCH24_clrn, INT_LATCH23_clrn, + INT_LATCH22_clrn, INT_LATCH21_clrn, INT_LATCH20_clrn, + INT_LATCH19_clrn, INT_LATCH18_clrn, INT_LATCH17_clrn, + INT_LATCH16_clrn, INT_LATCH15_clrn, INT_LATCH14_clrn, + INT_LATCH13_clrn, INT_LATCH12_clrn, INT_LATCH11_clrn, + INT_LATCH10_clrn, INT_LATCH9_clrn, INT_LATCH8_clrn, INT_LATCH7_clrn, + INT_LATCH6_clrn, INT_LATCH5_clrn, INT_LATCH4_clrn, INT_LATCH3_clrn, + INT_LATCH2_clrn, INT_LATCH1_clrn, INT_LATCH0_clrn} = ~INT_CLEAR_q; + +// INT_IN + assign INT_IN[0] = PIC_INT; + assign INT_IN[1] = E0_INT; + assign INT_IN[2] = DVI_INT; + assign INT_IN[3] = !nPCI_INTA; + assign INT_IN[4] = !nPCI_INTB; + assign INT_IN[5] = !nPCI_INTC; + assign INT_IN[6] = !nPCI_INTD; + assign INT_IN[7] = DSP_INT; + assign INT_IN[8] = VSYNC; + assign INT_IN[9] = HSYNC; + assign INT_IN[25:10] = 16'h0; + assign INT_IN[26] = HSYNC; + assign INT_IN[27] = INT_CTR_q[0]; + assign INT_IN[28] = VSYNC; + assign INT_IN[29] = INT_LATCH_q != 32'h0; + assign INT_IN[30] = !nMFP_INT; + assign INT_IN[31] = DMA_DRQ; + +// *************************************************************************************** +// ACP CONFIG REGISTER: BIT 31-> 0=CF 1=IDE + assign ACP_CONF0_clk_ctrl = MAIN_CLK; + +// $4'0000/4 + assign ACP_CONF_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h1_0000; + assign ACP_CONF_d = FB_AD; + assign ACP_CONF24_ena_ctrl = ACP_CONF_CS & FB_B[0] & (!nFB_WR); + assign ACP_CONF16_ena_ctrl = ACP_CONF_CS & FB_B[1] & (!nFB_WR); + assign ACP_CONF8_ena_ctrl = ACP_CONF_CS & FB_B[2] & (!nFB_WR); + assign ACP_CONF0_ena_ctrl = ACP_CONF_CS & FB_B[3] & (!nFB_WR); + +// *************************************************************************************** +// ------------------------------------------------------------ +// C1287 0=SEK 2=MIN 4=STD 6=WOCHENTAG 7=TAG 8=MONAT 9=JAHR +// -------------------------------------------------------- + assign RTC_ADR0_clk_ctrl = MAIN_CLK; + assign RTC_ADR_d = FB_AD[21:16]; + +// FFFF8961 + assign UHR_AS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C4B0 & FB_B[1]; + +// FFFF8963 + assign UHR_DS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C4B1 & FB_B[3]; + assign RTC_ADR0_ena_ctrl = UHR_AS & (!nFB_WR); + assign WERTE7_0_clk_ctrl = MAIN_CLK; + assign WERTE6_0_clk_ctrl = MAIN_CLK; + assign WERTE5_0_clk_ctrl = MAIN_CLK; + assign WERTE4_0_clk_ctrl = MAIN_CLK; + assign WERTE3_0_clk_ctrl = MAIN_CLK; + assign WERTE2_0_clk_ctrl = MAIN_CLK; + assign WERTE1_0_clk_ctrl = MAIN_CLK; + assign WERTE0_0_clk_ctrl = MAIN_CLK; + assign {WERTE7_0_d_1, WERTE6_0_d_1, WERTE5_0_d_1, WERTE4_0_d_1, + WERTE3_0_d_1, WERTE2_0_d_1, WERTE1_0_d_1, WERTE0_0_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7__d[1], WERTE6__d[1], WERTE5__d[1], WERTE4__d[1], + WERTE3__d[1], WERTE2__d[1], WERTE1__d[1], WERTE0__d[1]} = + FB_AD[23:16]; + assign {WERTE7_2_d_1, WERTE6_2_d_1, WERTE5_2_d_1, WERTE4_2_d_1, + WERTE3_2_d_1, WERTE2_2_d_1, WERTE1_2_d_1, WERTE0_2_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7__d[3], WERTE6__d[3], WERTE5__d[3], WERTE4__d[3], + WERTE3__d[3], WERTE2__d[3], WERTE1__d[3], WERTE0__d[3]} = + FB_AD[23:16]; + assign {WERTE7_4_d_1, WERTE6_4_d_1, WERTE5_4_d_1, WERTE4_4_d_1, + WERTE3_4_d_1, WERTE2_4_d_1, WERTE1_4_d_1, WERTE0_4_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7__d[5], WERTE6__d[5], WERTE5__d[5], WERTE4__d[5], + WERTE3__d[5], WERTE2__d[5], WERTE1__d[5], WERTE0__d[5]} = + FB_AD[23:16]; + assign {WERTE7_6_d_1, WERTE6_6_d_1, WERTE5_6_d_1, WERTE4_6_d_1, + WERTE3_6_d_1, WERTE2_6_d_1, WERTE1_6_d_1, WERTE0_6_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_7_d_1, WERTE6_7_d_1, WERTE5_7_d_1, WERTE4_7_d_1, + WERTE3_7_d_1, WERTE2_7_d_1, WERTE1_7_d_1, WERTE0_7_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_8_d_1, WERTE6_8_d_1, WERTE5_8_d_1, WERTE4_8_d_1, + WERTE3_8_d_1, WERTE2_8_d_1, WERTE1_8_d_1, WERTE0_8_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_9_d_1, WERTE6_9_d_1, WERTE5_9_d_1, WERTE4_9_d_1, + WERTE3_9_d_1, WERTE2_9_d_1, WERTE1_9_d_1, WERTE0_9_d_1} = FB_AD[23:16] + & {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7__d[10], WERTE6__d[10], WERTE5__d[10], WERTE4__d[10], + WERTE3__d[10], WERTE2__d[10], WERTE1__d[10], WERTE0__d[10]} = + FB_AD[23:16]; + assign {WERTE7__d[11], WERTE6__d[11], WERTE5__d[11], WERTE4__d[11], + WERTE3__d[11], WERTE2_11_d_1, WERTE1_11_d_1, WERTE0_11_d_1} = + FB_AD[23:16]; + assign {WERTE7__d[12], WERTE6__d[12], WERTE5__d[12], WERTE4__d[12], + WERTE3__d[12], WERTE2__d[12], WERTE1__d[12], WERTE0__d[12]} = + FB_AD[23:16]; + assign {WERTE7_13_d_1, WERTE6__d[13], WERTE5__d[13], WERTE4__d[13], + WERTE3__d[13], WERTE2__d[13], WERTE1__d[13], WERTE0_13_d_1} = + FB_AD[23:16]; + assign {WERTE7__d[14], WERTE6__d[14], WERTE5__d[14], WERTE4__d[14], + WERTE3__d[14], WERTE2__d[14], WERTE1__d[14], WERTE0__d[14]} = + FB_AD[23:16]; + assign {WERTE7__d[15], WERTE6__d[15], WERTE5__d[15], WERTE4__d[15], + WERTE3__d[15], WERTE2__d[15], WERTE1__d[15], WERTE0__d[15]} = + FB_AD[23:16]; + assign {WERTE7__d[16], WERTE6__d[16], WERTE5__d[16], WERTE4__d[16], + WERTE3__d[16], WERTE2__d[16], WERTE1__d[16], WERTE0__d[16]} = + FB_AD[23:16]; + assign {WERTE7__d[17], WERTE6__d[17], WERTE5__d[17], WERTE4__d[17], + WERTE3__d[17], WERTE2__d[17], WERTE1__d[17], WERTE0__d[17]} = + FB_AD[23:16]; + assign {WERTE7__d[18], WERTE6__d[18], WERTE5__d[18], WERTE4__d[18], + WERTE3__d[18], WERTE2__d[18], WERTE1__d[18], WERTE0__d[18]} = + FB_AD[23:16]; + assign {WERTE7__d[19], WERTE6__d[19], WERTE5__d[19], WERTE4__d[19], + WERTE3__d[19], WERTE2__d[19], WERTE1__d[19], WERTE0__d[19]} = + FB_AD[23:16]; + assign {WERTE7__d[20], WERTE6__d[20], WERTE5__d[20], WERTE4__d[20], + WERTE3__d[20], WERTE2__d[20], WERTE1__d[20], WERTE0__d[20]} = + FB_AD[23:16]; + assign {WERTE7__d[21], WERTE6__d[21], WERTE5__d[21], WERTE4__d[21], + WERTE3__d[21], WERTE2__d[21], WERTE1__d[21], WERTE0__d[21]} = + FB_AD[23:16]; + assign {WERTE7__d[22], WERTE6__d[22], WERTE5__d[22], WERTE4__d[22], + WERTE3__d[22], WERTE2__d[22], WERTE1__d[22], WERTE0__d[22]} = + FB_AD[23:16]; + assign {WERTE7__d[23], WERTE6__d[23], WERTE5__d[23], WERTE4__d[23], + WERTE3__d[23], WERTE2__d[23], WERTE1__d[23], WERTE0__d[23]} = + FB_AD[23:16]; + assign {WERTE7__d[24], WERTE6__d[24], WERTE5__d[24], WERTE4__d[24], + WERTE3__d[24], WERTE2__d[24], WERTE1__d[24], WERTE0__d[24]} = + FB_AD[23:16]; + assign {WERTE7__d[25], WERTE6__d[25], WERTE5__d[25], WERTE4__d[25], + WERTE3__d[25], WERTE2__d[25], WERTE1__d[25], WERTE0__d[25]} = + FB_AD[23:16]; + assign {WERTE7__d[26], WERTE6__d[26], WERTE5__d[26], WERTE4__d[26], + WERTE3__d[26], WERTE2__d[26], WERTE1__d[26], WERTE0__d[26]} = + FB_AD[23:16]; + assign {WERTE7__d[27], WERTE6__d[27], WERTE5__d[27], WERTE4__d[27], + WERTE3__d[27], WERTE2__d[27], WERTE1__d[27], WERTE0__d[27]} = + FB_AD[23:16]; + assign {WERTE7__d[28], WERTE6__d[28], WERTE5__d[28], WERTE4__d[28], + WERTE3__d[28], WERTE2__d[28], WERTE1__d[28], WERTE0__d[28]} = + FB_AD[23:16]; + assign {WERTE7__d[29], WERTE6__d[29], WERTE5__d[29], WERTE4__d[29], + WERTE3__d[29], WERTE2__d[29], WERTE1__d[29], WERTE0__d[29]} = + FB_AD[23:16]; + assign {WERTE7__d[30], WERTE6__d[30], WERTE5__d[30], WERTE4__d[30], + WERTE3__d[30], WERTE2__d[30], WERTE1__d[30], WERTE0__d[30]} = + FB_AD[23:16]; + assign {WERTE7__d[31], WERTE6__d[31], WERTE5__d[31], WERTE4__d[31], + WERTE3__d[31], WERTE2__d[31], WERTE1__d[31], WERTE0__d[31]} = + FB_AD[23:16]; + assign {WERTE7__d[32], WERTE6__d[32], WERTE5__d[32], WERTE4__d[32], + WERTE3__d[32], WERTE2__d[32], WERTE1__d[32], WERTE0__d[32]} = + FB_AD[23:16]; + assign {WERTE7__d[33], WERTE6__d[33], WERTE5__d[33], WERTE4__d[33], + WERTE3__d[33], WERTE2__d[33], WERTE1__d[33], WERTE0__d[33]} = + FB_AD[23:16]; + assign {WERTE7__d[34], WERTE6__d[34], WERTE5__d[34], WERTE4__d[34], + WERTE3__d[34], WERTE2__d[34], WERTE1__d[34], WERTE0__d[34]} = + FB_AD[23:16]; + assign {WERTE7__d[35], WERTE6__d[35], WERTE5__d[35], WERTE4__d[35], + WERTE3__d[35], WERTE2__d[35], WERTE1__d[35], WERTE0__d[35]} = + FB_AD[23:16]; + assign {WERTE7__d[36], WERTE6__d[36], WERTE5__d[36], WERTE4__d[36], + WERTE3__d[36], WERTE2__d[36], WERTE1__d[36], WERTE0__d[36]} = + FB_AD[23:16]; + assign {WERTE7__d[37], WERTE6__d[37], WERTE5__d[37], WERTE4__d[37], + WERTE3__d[37], WERTE2__d[37], WERTE1__d[37], WERTE0__d[37]} = + FB_AD[23:16]; + assign {WERTE7__d[38], WERTE6__d[38], WERTE5__d[38], WERTE4__d[38], + WERTE3__d[38], WERTE2__d[38], WERTE1__d[38], WERTE0__d[38]} = + FB_AD[23:16]; + assign {WERTE7__d[39], WERTE6__d[39], WERTE5__d[39], WERTE4__d[39], + WERTE3__d[39], WERTE2__d[39], WERTE1__d[39], WERTE0__d[39]} = + FB_AD[23:16]; + assign {WERTE7__d[40], WERTE6__d[40], WERTE5__d[40], WERTE4__d[40], + WERTE3__d[40], WERTE2__d[40], WERTE1__d[40], WERTE0__d[40]} = + FB_AD[23:16]; + assign {WERTE7__d[41], WERTE6__d[41], WERTE5__d[41], WERTE4__d[41], + WERTE3__d[41], WERTE2__d[41], WERTE1__d[41], WERTE0__d[41]} = + FB_AD[23:16]; + assign {WERTE7__d[42], WERTE6__d[42], WERTE5__d[42], WERTE4__d[42], + WERTE3__d[42], WERTE2__d[42], WERTE1__d[42], WERTE0__d[42]} = + FB_AD[23:16]; + assign {WERTE7__d[43], WERTE6__d[43], WERTE5__d[43], WERTE4__d[43], + WERTE3__d[43], WERTE2__d[43], WERTE1__d[43], WERTE0__d[43]} = + FB_AD[23:16]; + assign {WERTE7__d[44], WERTE6__d[44], WERTE5__d[44], WERTE4__d[44], + WERTE3__d[44], WERTE2__d[44], WERTE1__d[44], WERTE0__d[44]} = + FB_AD[23:16]; + assign {WERTE7__d[45], WERTE6__d[45], WERTE5__d[45], WERTE4__d[45], + WERTE3__d[45], WERTE2__d[45], WERTE1__d[45], WERTE0__d[45]} = + FB_AD[23:16]; + assign {WERTE7__d[46], WERTE6__d[46], WERTE5__d[46], WERTE4__d[46], + WERTE3__d[46], WERTE2__d[46], WERTE1__d[46], WERTE0__d[46]} = + FB_AD[23:16]; + assign {WERTE7__d[47], WERTE6__d[47], WERTE5__d[47], WERTE4__d[47], + WERTE3__d[47], WERTE2__d[47], WERTE1__d[47], WERTE0__d[47]} = + FB_AD[23:16]; + assign {WERTE7__d[48], WERTE6__d[48], WERTE5__d[48], WERTE4__d[48], + WERTE3__d[48], WERTE2__d[48], WERTE1__d[48], WERTE0__d[48]} = + FB_AD[23:16]; + assign {WERTE7__d[49], WERTE6__d[49], WERTE5__d[49], WERTE4__d[49], + WERTE3__d[49], WERTE2__d[49], WERTE1__d[49], WERTE0__d[49]} = + FB_AD[23:16]; + assign {WERTE7__d[50], WERTE6__d[50], WERTE5__d[50], WERTE4__d[50], + WERTE3__d[50], WERTE2__d[50], WERTE1__d[50], WERTE0__d[50]} = + FB_AD[23:16]; + assign {WERTE7__d[51], WERTE6__d[51], WERTE5__d[51], WERTE4__d[51], + WERTE3__d[51], WERTE2__d[51], WERTE1__d[51], WERTE0__d[51]} = + FB_AD[23:16]; + assign {WERTE7__d[52], WERTE6__d[52], WERTE5__d[52], WERTE4__d[52], + WERTE3__d[52], WERTE2__d[52], WERTE1__d[52], WERTE0__d[52]} = + FB_AD[23:16]; + assign {WERTE7__d[53], WERTE6__d[53], WERTE5__d[53], WERTE4__d[53], + WERTE3__d[53], WERTE2__d[53], WERTE1__d[53], WERTE0__d[53]} = + FB_AD[23:16]; + assign {WERTE7__d[54], WERTE6__d[54], WERTE5__d[54], WERTE4__d[54], + WERTE3__d[54], WERTE2__d[54], WERTE1__d[54], WERTE0__d[54]} = + FB_AD[23:16]; + assign {WERTE7__d[55], WERTE6__d[55], WERTE5__d[55], WERTE4__d[55], + WERTE3__d[55], WERTE2__d[55], WERTE1__d[55], WERTE0__d[55]} = + FB_AD[23:16]; + assign {WERTE7__d[56], WERTE6__d[56], WERTE5__d[56], WERTE4__d[56], + WERTE3__d[56], WERTE2__d[56], WERTE1__d[56], WERTE0__d[56]} = + FB_AD[23:16]; + assign {WERTE7__d[57], WERTE6__d[57], WERTE5__d[57], WERTE4__d[57], + WERTE3__d[57], WERTE2__d[57], WERTE1__d[57], WERTE0__d[57]} = + FB_AD[23:16]; + assign {WERTE7__d[58], WERTE6__d[58], WERTE5__d[58], WERTE4__d[58], + WERTE3__d[58], WERTE2__d[58], WERTE1__d[58], WERTE0__d[58]} = + FB_AD[23:16]; + assign {WERTE7__d[59], WERTE6__d[59], WERTE5__d[59], WERTE4__d[59], + WERTE3__d[59], WERTE2__d[59], WERTE1__d[59], WERTE0__d[59]} = + FB_AD[23:16]; + assign {WERTE7__d[60], WERTE6__d[60], WERTE5__d[60], WERTE4__d[60], + WERTE3__d[60], WERTE2__d[60], WERTE1__d[60], WERTE0__d[60]} = + FB_AD[23:16]; + assign {WERTE7__d[61], WERTE6__d[61], WERTE5__d[61], WERTE4__d[61], + WERTE3__d[61], WERTE2__d[61], WERTE1__d[61], WERTE0__d[61]} = + FB_AD[23:16]; + assign {WERTE7__d[62], WERTE6__d[62], WERTE5__d[62], WERTE4__d[62], + WERTE3__d[62], WERTE2__d[62], WERTE1__d[62], WERTE0__d[62]} = + FB_AD[23:16]; + assign {WERTE7__d[63], WERTE6__d[63], WERTE5__d[63], WERTE4__d[63], + WERTE3__d[63], WERTE2__d[63], WERTE1__d[63], WERTE0__d[63]} = + FB_AD[23:16]; + assign {WERTE7_0_ena_1, WERTE6_0_ena_1, WERTE5_0_ena_1, WERTE4_0_ena_1, + WERTE3_0_ena_1, WERTE2_0_ena_1, WERTE1_0_ena_1, WERTE0_0_ena_1} = + {8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign WERTE0_1_ena_ctrl = RTC_ADR_q == 6'b00_0001 & UHR_DS & (!nFB_WR); + assign {WERTE7_2_ena_1, WERTE6_2_ena_1, WERTE5_2_ena_1, WERTE4_2_ena_1, + WERTE3_2_ena_1, WERTE2_2_ena_1, WERTE1_2_ena_1, WERTE0_2_ena_1} = + {8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign WERTE0_3_ena_ctrl = RTC_ADR_q == 6'b00_0011 & UHR_DS & (!nFB_WR); + assign {WERTE7_4_ena_1, WERTE6_4_ena_1, WERTE5_4_ena_1, WERTE4_4_ena_1, + WERTE3_4_ena_1, WERTE2_4_ena_1, WERTE1_4_ena_1, WERTE0_4_ena_1} = + {8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign WERTE0_5_ena_ctrl = RTC_ADR_q == 6'b00_0101 & UHR_DS & (!nFB_WR); + assign {WERTE7_6_ena_1, WERTE6_6_ena_1, WERTE5_6_ena_1, WERTE4_6_ena_1, + WERTE3_6_ena_1, WERTE2_6_ena_1, WERTE1_6_ena_1, WERTE0_6_ena_1} = + {8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_7_ena_1, WERTE6_7_ena_1, WERTE5_7_ena_1, WERTE4_7_ena_1, + WERTE3_7_ena_1, WERTE2_7_ena_1, WERTE1_7_ena_1, WERTE0_7_ena_1} = + {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_8_ena_1, WERTE6_8_ena_1, WERTE5_8_ena_1, WERTE4_8_ena_1, + WERTE3_8_ena_1, WERTE2_8_ena_1, WERTE1_8_ena_1, WERTE0_8_ena_1} = + {8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign {WERTE7_9_ena_1, WERTE6_9_ena_1, WERTE5_9_ena_1, WERTE4_9_ena_1, + WERTE3_9_ena_1, WERTE2_9_ena_1, WERTE1_9_ena_1, WERTE0_9_ena_1} = + {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign WERTE0_10_ena_ctrl = RTC_ADR_q == 6'b00_1010 & UHR_DS & (!nFB_WR); + assign WERTE0_11_ena_ctrl = RTC_ADR_q == 6'b00_1011 & UHR_DS & (!nFB_WR); + assign WERTE0_12_ena_ctrl = RTC_ADR_q == 6'b00_1100 & UHR_DS & (!nFB_WR); + assign {WERTE7_13_ena, WERTE6_13_ena, WERTE5_13_ena, WERTE4_13_ena, + WERTE3_13_ena, WERTE2_13_ena, WERTE1_13_ena, WERTE0_13_ena_1} = + {8{RTC_ADR_q == 6'b00_1101}} & {8{UHR_DS}} & {8{!nFB_WR}}; + assign WERTE0_14_ena_ctrl = RTC_ADR_q == 6'b00_1110 & UHR_DS & (!nFB_WR); + assign WERTE0_15_ena_ctrl = RTC_ADR_q == 6'b00_1111 & UHR_DS & (!nFB_WR); + assign WERTE0_16_ena_ctrl = RTC_ADR_q == 6'b01_0000 & UHR_DS & (!nFB_WR); + assign WERTE0_17_ena_ctrl = RTC_ADR_q == 6'b01_0001 & UHR_DS & (!nFB_WR); + assign WERTE0_18_ena_ctrl = RTC_ADR_q == 6'b01_0010 & UHR_DS & (!nFB_WR); + assign WERTE0_19_ena_ctrl = RTC_ADR_q == 6'b01_0011 & UHR_DS & (!nFB_WR); + assign WERTE0_20_ena_ctrl = RTC_ADR_q == 6'b01_0100 & UHR_DS & (!nFB_WR); + assign WERTE0_21_ena_ctrl = RTC_ADR_q == 6'b01_0101 & UHR_DS & (!nFB_WR); + assign WERTE0_22_ena_ctrl = RTC_ADR_q == 6'b01_0110 & UHR_DS & (!nFB_WR); + assign WERTE0_23_ena_ctrl = RTC_ADR_q == 6'b01_0111 & UHR_DS & (!nFB_WR); + assign WERTE0_24_ena_ctrl = RTC_ADR_q == 6'b01_1000 & UHR_DS & (!nFB_WR); + assign WERTE0_25_ena_ctrl = RTC_ADR_q == 6'b01_1001 & UHR_DS & (!nFB_WR); + assign WERTE0_26_ena_ctrl = RTC_ADR_q == 6'b01_1010 & UHR_DS & (!nFB_WR); + assign WERTE0_27_ena_ctrl = RTC_ADR_q == 6'b01_1011 & UHR_DS & (!nFB_WR); + assign WERTE0_28_ena_ctrl = RTC_ADR_q == 6'b01_1100 & UHR_DS & (!nFB_WR); + assign WERTE0_29_ena_ctrl = RTC_ADR_q == 6'b01_1101 & UHR_DS & (!nFB_WR); + assign WERTE0_30_ena_ctrl = RTC_ADR_q == 6'b01_1110 & UHR_DS & (!nFB_WR); + assign WERTE0_31_ena_ctrl = RTC_ADR_q == 6'b01_1111 & UHR_DS & (!nFB_WR); + assign WERTE0_32_ena_ctrl = RTC_ADR_q == 6'b10_0000 & UHR_DS & (!nFB_WR); + assign WERTE0_33_ena_ctrl = RTC_ADR_q == 6'b10_0001 & UHR_DS & (!nFB_WR); + assign WERTE0_34_ena_ctrl = RTC_ADR_q == 6'b10_0010 & UHR_DS & (!nFB_WR); + assign WERTE0_35_ena_ctrl = RTC_ADR_q == 6'b10_0011 & UHR_DS & (!nFB_WR); + assign WERTE0_36_ena_ctrl = RTC_ADR_q == 6'b10_0100 & UHR_DS & (!nFB_WR); + assign WERTE0_37_ena_ctrl = RTC_ADR_q == 6'b10_0101 & UHR_DS & (!nFB_WR); + assign WERTE0_38_ena_ctrl = RTC_ADR_q == 6'b10_0110 & UHR_DS & (!nFB_WR); + assign WERTE0_39_ena_ctrl = RTC_ADR_q == 6'b10_0111 & UHR_DS & (!nFB_WR); + assign WERTE0_40_ena_ctrl = RTC_ADR_q == 6'b10_1000 & UHR_DS & (!nFB_WR); + assign WERTE0_41_ena_ctrl = RTC_ADR_q == 6'b10_1001 & UHR_DS & (!nFB_WR); + assign WERTE0_42_ena_ctrl = RTC_ADR_q == 6'b10_1010 & UHR_DS & (!nFB_WR); + assign WERTE0_43_ena_ctrl = RTC_ADR_q == 6'b10_1011 & UHR_DS & (!nFB_WR); + assign WERTE0_44_ena_ctrl = RTC_ADR_q == 6'b10_1100 & UHR_DS & (!nFB_WR); + assign WERTE0_45_ena_ctrl = RTC_ADR_q == 6'b10_1101 & UHR_DS & (!nFB_WR); + assign WERTE0_46_ena_ctrl = RTC_ADR_q == 6'b10_1110 & UHR_DS & (!nFB_WR); + assign WERTE0_47_ena_ctrl = RTC_ADR_q == 6'b10_1111 & UHR_DS & (!nFB_WR); + assign WERTE0_48_ena_ctrl = RTC_ADR_q == 6'b11_0000 & UHR_DS & (!nFB_WR); + assign WERTE0_49_ena_ctrl = RTC_ADR_q == 6'b11_0001 & UHR_DS & (!nFB_WR); + assign WERTE0_50_ena_ctrl = RTC_ADR_q == 6'b11_0010 & UHR_DS & (!nFB_WR); + assign WERTE0_51_ena_ctrl = RTC_ADR_q == 6'b11_0011 & UHR_DS & (!nFB_WR); + assign WERTE0_52_ena_ctrl = RTC_ADR_q == 6'b11_0100 & UHR_DS & (!nFB_WR); + assign WERTE0_53_ena_ctrl = RTC_ADR_q == 6'b11_0101 & UHR_DS & (!nFB_WR); + assign WERTE0_54_ena_ctrl = RTC_ADR_q == 6'b11_0110 & UHR_DS & (!nFB_WR); + assign WERTE0_55_ena_ctrl = RTC_ADR_q == 6'b11_0111 & UHR_DS & (!nFB_WR); + assign WERTE0_56_ena_ctrl = RTC_ADR_q == 6'b11_1000 & UHR_DS & (!nFB_WR); + assign WERTE0_57_ena_ctrl = RTC_ADR_q == 6'b11_1001 & UHR_DS & (!nFB_WR); + assign WERTE0_58_ena_ctrl = RTC_ADR_q == 6'b11_1010 & UHR_DS & (!nFB_WR); + assign WERTE0_59_ena_ctrl = RTC_ADR_q == 6'b11_1011 & UHR_DS & (!nFB_WR); + assign WERTE0_60_ena_ctrl = RTC_ADR_q == 6'b11_1100 & UHR_DS & (!nFB_WR); + assign WERTE0_61_ena_ctrl = RTC_ADR_q == 6'b11_1101 & UHR_DS & (!nFB_WR); + assign WERTE0_62_ena_ctrl = RTC_ADR_q == 6'b11_1110 & UHR_DS & (!nFB_WR); + assign WERTE0_63_ena_ctrl = RTC_ADR_q == 6'b11_1111 & UHR_DS & (!nFB_WR); + assign PIC_INT_SYNC0_clk_ctrl = MAIN_CLK; + assign PIC_INT_SYNC_d[0] = PIC_INT; + assign PIC_INT_SYNC_d[1] = PIC_INT_SYNC_q[0]; + assign PIC_INT_SYNC_d[2] = (!PIC_INT_SYNC_q[1]) & PIC_INT_SYNC_q[0]; + assign UPDATE_ON_1 = !WERTE7__q[11]; + +// KEIN UIP + assign WERTE6_10_clrn = gnd; + +// UPDATE ON OFF + assign UPDATE_ON_2 = !WERTE7__q[11]; + +// IMMER BINARY + assign WERTE2_11_d_2 = vcc; + +// IMMER 24H FORMAT + assign WERTE1_11_d_2 = vcc; + +// IMMER SOMMERZEITKORREKTUR + assign WERTE0_11_d_2 = vcc; + +// IMMER RICHTIG + assign WERTE7_13_d_2 = vcc; + +// SOMMER WINTERZEIT: BIT 0 IM REGISTER D IST DIE INFORMATION OB SOMMERZEIT IST (BRAUCHT MAN FÜR RÜCKSCHALTUNG) +// LETZTER SONNTAG IM APRIL + assign SOMMERZEIT = {WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], + WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} == + 8'b0000_0001 & {WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], + WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} + == 8'b0000_0001 & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_0100 & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], + WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + > 8'b0001_0111; + assign WERTE0_13_d_2 = SOMMERZEIT; + assign WERTE0_13_ena_2 = INC_STD & (SOMMERZEIT | WINTERZEIT); + +// LETZTER SONNTAG IM OKTOBER + assign WINTERZEIT = {WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], + WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} == + 8'b0000_0001 & {WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], + WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} + == 8'b0000_0001 & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_1010 & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], + WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + > 8'b0001_1000 & WERTE0__q[13]; + +// ACHTELSEKUNDEN + assign ACHTELSEKUNDEN0_clk_ctrl = MAIN_CLK; + assign ACHTELSEKUNDEN_d = ACHTELSEKUNDEN_q + 3'b001; + assign ACHTELSEKUNDEN0_ena_ctrl = PIC_INT_SYNC_q[2] & UPDATE_ON; + +// SEKUNDEN + assign INC_SEC = ACHTELSEKUNDEN_q == 3'b111 & PIC_INT_SYNC_q[2] & UPDATE_ON; + +// SEKUNDEN ZÄHLEN BIS 59 + assign {WERTE7_0_d_2, WERTE6_0_d_2, WERTE5_0_d_2, WERTE4_0_d_2, + WERTE3_0_d_2, WERTE2_0_d_2, WERTE1_0_d_2, WERTE0_0_d_2} = + ({WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], WERTE4__q[0], + WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} + + 8'b0000_0001) & {8{{WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], + WERTE4__q[0], WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} + != 8'b0011_1011}} & (~({8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + assign {WERTE7_0_ena_2, WERTE6_0_ena_2, WERTE5_0_ena_2, WERTE4_0_ena_2, + WERTE3_0_ena_2, WERTE2_0_ena_2, WERTE1_0_ena_2, WERTE0_0_ena_2} = + {8{INC_SEC}} & (~({8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + +// MINUTEN + assign INC_MIN = INC_SEC & {WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], + WERTE4__q[0], WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} + == 8'b0011_1011; + +// MINUTEN ZÄHLEN BIS 59 + assign {WERTE7_2_d_2, WERTE6_2_d_2, WERTE5_2_d_2, WERTE4_2_d_2, + WERTE3_2_d_2, WERTE2_2_d_2, WERTE1_2_d_2, WERTE0_2_d_2} = + ({WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], WERTE4__q[2], + WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} + + 8'b0000_0001) & {8{{WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], + WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} + != 8'b0011_1011}} & (~({8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + assign {WERTE7_2_ena_2, WERTE6_2_ena_2, WERTE5_2_ena_2, WERTE4_2_ena_2, + WERTE3_2_ena_2, WERTE2_2_ena_2, WERTE1_2_ena_2, WERTE0_2_ena_2} = + {8{INC_MIN}} & (~({8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + +// STUNDEN + assign INC_STD = INC_MIN & {WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], + WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} + == 8'b0011_1011; + +// STUNDEN ZÄHLEN BIS 23 + assign {WERTE7_4_d_2, WERTE6_4_d_2, WERTE5_4_d_2, WERTE4_4_d_2, + WERTE3_4_d_2, WERTE2_4_d_2, WERTE1_4_d_2, WERTE0_4_d_2} = + (({WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], + WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} + + 8'b0000_0001) + (8'b0000_0001 & {8{SOMMERZEIT}})) & {8{{WERTE7__q[4], + WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], + WERTE1__q[4], WERTE0__q[4]} != 8'b0001_0111}} & (~({8{RTC_ADR_q == + 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}})); + +// EINE STUNDE AUSLASSEN WENN WINTERZEITUMSCHALTUNG UND NOCH SOMMERZEIT + assign {WERTE7_4_ena_2, WERTE6_4_ena_2, WERTE5_4_ena_2, WERTE4_4_ena_2, + WERTE3_4_ena_2, WERTE2_4_ena_2, WERTE1_4_ena_2, WERTE0_4_ena_2} = + {8{INC_STD}} & (~({8{WINTERZEIT}} & {8{WERTE0__q[12]}})) & + (~({8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}})); + +// WOCHENTAG UND TAG + assign INC_TAG = INC_STD & {WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], + WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} + == 8'b0001_0111; + +// WOCHENTAG ZÄHLEN BIS 7 +// DANN BEI 1 WEITER + assign {WERTE7_6_d_2, WERTE6_6_d_2, WERTE5_6_d_2, WERTE4_6_d_2, + WERTE3_6_d_2, WERTE2_6_d_2, WERTE1_6_d_2, WERTE0_6_d_2} = + (({WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], + WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} + + 8'b0000_0001) & {8{{WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], + WERTE4__q[6], WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} + != 8'b0000_0111}} & (~({8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & + {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[6], WERTE6__q[6], + WERTE5__q[6], WERTE4__q[6], WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], + WERTE0__q[6]} == 8'b0000_0111}} & (~({8{RTC_ADR_q == 6'b00_0110}} & + {8{UHR_DS}} & {8{!nFB_WR}}))); + assign {WERTE7_6_ena_2, WERTE6_6_ena_2, WERTE5_6_ena_2, WERTE4_6_ena_2, + WERTE3_6_ena_2, WERTE2_6_ena_2, WERTE1_6_ena_2, WERTE0_6_ena_2} = + {8{INC_TAG}} & (~({8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + assign ANZAHL_TAGE_DES_MONATS = (8'b0001_1111 & ({8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0001}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0011}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0101}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0111}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1000}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1010}} | {8{{WERTE7__q[8], + WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], + WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1100}})) | (8'b0001_1110 & + ({8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], + WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} == + 8'b0000_0100}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_0110}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_1001}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_1011}})) | (8'b0001_1101 & {8{{WERTE7__q[8], WERTE6__q[8], + WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], + WERTE0__q[8]} == 8'b0000_0010}} & {8{{WERTE1__q[9], WERTE0__q[9]} == + 2'b00}}) | (8'b0001_1100 & {8{{WERTE7__q[8], WERTE6__q[8], + WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], + WERTE0__q[8]} == 8'b0000_0010}} & {8{{WERTE1__q[9], WERTE0__q[9]} != + 2'b00}}); + +// TAG ZÄHLEN BIS MONATSENDE +// DANN BEI 1 WEITER + assign {WERTE7_7_d_2, WERTE6_7_d_2, WERTE5_7_d_2, WERTE4_7_d_2, + WERTE3_7_d_2, WERTE2_7_d_2, WERTE1_7_d_2, WERTE0_7_d_2} = + (({WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], WERTE4__q[7], + WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + + 8'b0000_0001) & {8{{WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], + WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + != ANZAHL_TAGE_DES_MONATS}} & (~({8{RTC_ADR_q == 6'b00_0111}} & + {8{UHR_DS}} & {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[7], + WERTE6__q[7], WERTE5__q[7], WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], + WERTE1__q[7], WERTE0__q[7]} == ANZAHL_TAGE_DES_MONATS}} & + (~({8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}))); + assign {WERTE7_7_ena_2, WERTE6_7_ena_2, WERTE5_7_ena_2, WERTE4_7_ena_2, + WERTE3_7_ena_2, WERTE2_7_ena_2, WERTE1_7_ena_2, WERTE0_7_ena_2} = + {8{INC_TAG}} & (~({8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + +// MONATE + assign INC_MONAT = INC_TAG & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], + WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + == ANZAHL_TAGE_DES_MONATS; + +// MONATE ZÄHLEN BIS 12 +// DANN BEI 1 WEITER + assign {WERTE7_8_d_2, WERTE6_8_d_2, WERTE5_8_d_2, WERTE4_8_d_2, + WERTE3_8_d_2, WERTE2_8_d_2, WERTE1_8_d_2, WERTE0_8_d_2} = + (({WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], + WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + + 8'b0000_0001) & {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + != 8'b0000_1100}} & (~({8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & + {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[8], WERTE6__q[8], + WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], + WERTE0__q[8]} == 8'b0000_1100}} & (~({8{RTC_ADR_q == 6'b00_1000}} & + {8{UHR_DS}} & {8{!nFB_WR}}))); + assign {WERTE7_8_ena_2, WERTE6_8_ena_2, WERTE5_8_ena_2, WERTE4_8_ena_2, + WERTE3_8_ena_2, WERTE2_8_ena_2, WERTE1_8_ena_2, WERTE0_8_ena_2} = + {8{INC_MONAT}} & (~({8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + +// JAHR + assign INC_JAHR = INC_MONAT & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], + WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + == 8'b0000_1100; + +// JAHRE ZÄHLEN BIS 99 + assign {WERTE7_9_d_2, WERTE6_9_d_2, WERTE5_9_d_2, WERTE4_9_d_2, + WERTE3_9_d_2, WERTE2_9_d_2, WERTE1_9_d_2, WERTE0_9_d_2} = + ({WERTE7__q[9], WERTE6__q[9], WERTE5__q[9], WERTE4__q[9], + WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], WERTE0__q[9]} + + 8'b0000_0001) & {8{{WERTE7__q[9], WERTE6__q[9], WERTE5__q[9], + WERTE4__q[9], WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], WERTE0__q[9]} + != 8'b0110_0011}} & (~({8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + assign {WERTE7_9_ena_2, WERTE6_9_ena_2, WERTE5_9_ena_2, WERTE4_9_ena_2, + WERTE3_9_ena_2, WERTE2_9_ena_2, WERTE1_9_ena_2, WERTE0_9_ena_2} = + {8{INC_JAHR}} & (~({8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & + {8{!nFB_WR}})); + +// TRISTATE OUTPUT + assign u0_data = ({8{INT_CTR_CS}} & INT_CTR_q[31:24]) | ({8{INT_ENA_CS}} & + INT_ENA_q[31:24]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[31:24]) | + ({8{INT_CLEAR_CS}} & INT_IN[31:24]) | ({8{ACP_CONF_CS}} & + ACP_CONF_q[31:24]); + assign u0_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS + | ACP_CONF_CS) & (!nFB_OE); + assign FB_AD[31:24] = u0_tridata; + assign u1_data = ({WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], WERTE4__q[0], + WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} & {8{RTC_ADR_q + == 6'b00_0000}} & {8{UHR_DS}}) | ({WERTE7__q[1], WERTE6__q[1], + WERTE5__q[1], WERTE4__q[1], WERTE3__q[1], WERTE2__q[1], WERTE1__q[1], + WERTE0__q[1]} & {8{RTC_ADR_q == 6'b00_0001}} & {8{UHR_DS}}) | + ({WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], WERTE4__q[2], + WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} & {8{RTC_ADR_q + == 6'b00_0010}} & {8{UHR_DS}}) | ({WERTE7__q[3], WERTE6__q[3], + WERTE5__q[3], WERTE4__q[3], WERTE3__q[3], WERTE2__q[3], WERTE1__q[3], + WERTE0__q[3]} & {8{RTC_ADR_q == 6'b00_0011}} & {8{UHR_DS}}) | + ({WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], + WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} & {8{RTC_ADR_q + == 6'b00_0100}} & {8{UHR_DS}}) | ({WERTE7__q[5], WERTE6__q[5], + WERTE5__q[5], WERTE4__q[5], WERTE3__q[5], WERTE2__q[5], WERTE1__q[5], + WERTE0__q[5]} & {8{RTC_ADR_q == 6'b00_0101}} & {8{UHR_DS}}) | + ({WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], + WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} & {8{RTC_ADR_q + == 6'b00_0110}} & {8{UHR_DS}}) | ({WERTE7__q[7], WERTE6__q[7], + WERTE5__q[7], WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], + WERTE0__q[7]} & {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}}) | + ({WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], + WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} & {8{RTC_ADR_q + == 6'b00_1000}} & {8{UHR_DS}}) | ({WERTE7__q[9], WERTE6__q[9], + WERTE5__q[9], WERTE4__q[9], WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], + WERTE0__q[9]} & {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}}) | + ({WERTE7__q[10], WERTE6__q[10], WERTE5__q[10], WERTE4__q[10], + WERTE3__q[10], WERTE2__q[10], WERTE1__q[10], WERTE0__q[10]} & + {8{RTC_ADR_q == 6'b00_1010}} & {8{UHR_DS}}) | ({WERTE7__q[11], + WERTE6__q[11], WERTE5__q[11], WERTE4__q[11], WERTE3__q[11], + WERTE2__q[11], WERTE1__q[11], WERTE0__q[11]} & {8{RTC_ADR_q == + 6'b00_1011}} & {8{UHR_DS}}) | ({WERTE7__q[12], WERTE6__q[12], + WERTE5__q[12], WERTE4__q[12], WERTE3__q[12], WERTE2__q[12], + WERTE1__q[12], WERTE0__q[12]} & {8{RTC_ADR_q == 6'b00_1100}} & + {8{UHR_DS}}) | ({WERTE7__q[13], WERTE6__q[13], WERTE5__q[13], + WERTE4__q[13], WERTE3__q[13], WERTE2__q[13], WERTE1__q[13], + WERTE0__q[13]} & {8{RTC_ADR_q == 6'b00_1101}} & {8{UHR_DS}}) | + ({WERTE7__q[14], WERTE6__q[14], WERTE5__q[14], WERTE4__q[14], + WERTE3__q[14], WERTE2__q[14], WERTE1__q[14], WERTE0__q[14]} & + {8{RTC_ADR_q == 6'b00_1110}} & {8{UHR_DS}}) | ({WERTE7__q[15], + WERTE6__q[15], WERTE5__q[15], WERTE4__q[15], WERTE3__q[15], + WERTE2__q[15], WERTE1__q[15], WERTE0__q[15]} & {8{RTC_ADR_q == + 6'b00_1111}} & {8{UHR_DS}}) | ({WERTE7__q[16], WERTE6__q[16], + WERTE5__q[16], WERTE4__q[16], WERTE3__q[16], WERTE2__q[16], + WERTE1__q[16], WERTE0__q[16]} & {8{RTC_ADR_q == 6'b01_0000}} & + {8{UHR_DS}}) | ({WERTE7__q[17], WERTE6__q[17], WERTE5__q[17], + WERTE4__q[17], WERTE3__q[17], WERTE2__q[17], WERTE1__q[17], + WERTE0__q[17]} & {8{RTC_ADR_q == 6'b01_0001}} & {8{UHR_DS}}) | + ({WERTE7__q[18], WERTE6__q[18], WERTE5__q[18], WERTE4__q[18], + WERTE3__q[18], WERTE2__q[18], WERTE1__q[18], WERTE0__q[18]} & + {8{RTC_ADR_q == 6'b01_0010}} & {8{UHR_DS}}) | ({WERTE7__q[19], + WERTE6__q[19], WERTE5__q[19], WERTE4__q[19], WERTE3__q[19], + WERTE2__q[19], WERTE1__q[19], WERTE0__q[19]} & {8{RTC_ADR_q == + 6'b01_0011}} & {8{UHR_DS}}) | ({WERTE7__q[20], WERTE6__q[20], + WERTE5__q[20], WERTE4__q[20], WERTE3__q[20], WERTE2__q[20], + WERTE1__q[20], WERTE0__q[20]} & {8{RTC_ADR_q == 6'b01_0100}} & + {8{UHR_DS}}) | ({WERTE7__q[21], WERTE6__q[21], WERTE5__q[21], + WERTE4__q[21], WERTE3__q[21], WERTE2__q[21], WERTE1__q[21], + WERTE0__q[21]} & {8{RTC_ADR_q == 6'b01_0101}} & {8{UHR_DS}}) | + ({WERTE7__q[22], WERTE6__q[22], WERTE5__q[22], WERTE4__q[22], + WERTE3__q[22], WERTE2__q[22], WERTE1__q[22], WERTE0__q[22]} & + {8{RTC_ADR_q == 6'b01_0110}} & {8{UHR_DS}}) | ({WERTE7__q[23], + WERTE6__q[23], WERTE5__q[23], WERTE4__q[23], WERTE3__q[23], + WERTE2__q[23], WERTE1__q[23], WERTE0__q[23]} & {8{RTC_ADR_q == + 6'b01_0111}} & {8{UHR_DS}}) | ({WERTE7__q[24], WERTE6__q[24], + WERTE5__q[24], WERTE4__q[24], WERTE3__q[24], WERTE2__q[24], + WERTE1__q[24], WERTE0__q[24]} & {8{RTC_ADR_q == 6'b01_1000}} & + {8{UHR_DS}}) | ({WERTE7__q[25], WERTE6__q[25], WERTE5__q[25], + WERTE4__q[25], WERTE3__q[25], WERTE2__q[25], WERTE1__q[25], + WERTE0__q[25]} & {8{RTC_ADR_q == 6'b01_1001}} & {8{UHR_DS}}) | + ({WERTE7__q[26], WERTE6__q[26], WERTE5__q[26], WERTE4__q[26], + WERTE3__q[26], WERTE2__q[26], WERTE1__q[26], WERTE0__q[26]} & + {8{RTC_ADR_q == 6'b01_1010}} & {8{UHR_DS}}) | ({WERTE7__q[27], + WERTE6__q[27], WERTE5__q[27], WERTE4__q[27], WERTE3__q[27], + WERTE2__q[27], WERTE1__q[27], WERTE0__q[27]} & {8{RTC_ADR_q == + 6'b01_1011}} & {8{UHR_DS}}) | ({WERTE7__q[28], WERTE6__q[28], + WERTE5__q[28], WERTE4__q[28], WERTE3__q[28], WERTE2__q[28], + WERTE1__q[28], WERTE0__q[28]} & {8{RTC_ADR_q == 6'b01_1100}} & + {8{UHR_DS}}) | ({WERTE7__q[29], WERTE6__q[29], WERTE5__q[29], + WERTE4__q[29], WERTE3__q[29], WERTE2__q[29], WERTE1__q[29], + WERTE0__q[29]} & {8{RTC_ADR_q == 6'b01_1101}} & {8{UHR_DS}}) | + ({WERTE7__q[30], WERTE6__q[30], WERTE5__q[30], WERTE4__q[30], + WERTE3__q[30], WERTE2__q[30], WERTE1__q[30], WERTE0__q[30]} & + {8{RTC_ADR_q == 6'b01_1110}} & {8{UHR_DS}}) | ({WERTE7__q[31], + WERTE6__q[31], WERTE5__q[31], WERTE4__q[31], WERTE3__q[31], + WERTE2__q[31], WERTE1__q[31], WERTE0__q[31]} & {8{RTC_ADR_q == + 6'b01_1111}} & {8{UHR_DS}}) | ({WERTE7__q[32], WERTE6__q[32], + WERTE5__q[32], WERTE4__q[32], WERTE3__q[32], WERTE2__q[32], + WERTE1__q[32], WERTE0__q[32]} & {8{RTC_ADR_q == 6'b10_0000}} & + {8{UHR_DS}}) | ({WERTE7__q[33], WERTE6__q[33], WERTE5__q[33], + WERTE4__q[33], WERTE3__q[33], WERTE2__q[33], WERTE1__q[33], + WERTE0__q[33]} & {8{RTC_ADR_q == 6'b10_0001}} & {8{UHR_DS}}) | + ({WERTE7__q[34], WERTE6__q[34], WERTE5__q[34], WERTE4__q[34], + WERTE3__q[34], WERTE2__q[34], WERTE1__q[34], WERTE0__q[34]} & + {8{RTC_ADR_q == 6'b10_0010}} & {8{UHR_DS}}) | ({WERTE7__q[35], + WERTE6__q[35], WERTE5__q[35], WERTE4__q[35], WERTE3__q[35], + WERTE2__q[35], WERTE1__q[35], WERTE0__q[35]} & {8{RTC_ADR_q == + 6'b10_0011}} & {8{UHR_DS}}) | ({WERTE7__q[36], WERTE6__q[36], + WERTE5__q[36], WERTE4__q[36], WERTE3__q[36], WERTE2__q[36], + WERTE1__q[36], WERTE0__q[36]} & {8{RTC_ADR_q == 6'b10_0100}} & + {8{UHR_DS}}) | ({WERTE7__q[37], WERTE6__q[37], WERTE5__q[37], + WERTE4__q[37], WERTE3__q[37], WERTE2__q[37], WERTE1__q[37], + WERTE0__q[37]} & {8{RTC_ADR_q == 6'b10_0101}} & {8{UHR_DS}}) | + ({WERTE7__q[38], WERTE6__q[38], WERTE5__q[38], WERTE4__q[38], + WERTE3__q[38], WERTE2__q[38], WERTE1__q[38], WERTE0__q[38]} & + {8{RTC_ADR_q == 6'b10_0110}} & {8{UHR_DS}}) | ({WERTE7__q[39], + WERTE6__q[39], WERTE5__q[39], WERTE4__q[39], WERTE3__q[39], + WERTE2__q[39], WERTE1__q[39], WERTE0__q[39]} & {8{RTC_ADR_q == + 6'b10_0111}} & {8{UHR_DS}}) | ({WERTE7__q[40], WERTE6__q[40], + WERTE5__q[40], WERTE4__q[40], WERTE3__q[40], WERTE2__q[40], + WERTE1__q[40], WERTE0__q[40]} & {8{RTC_ADR_q == 6'b10_1000}} & + {8{UHR_DS}}) | ({WERTE7__q[41], WERTE6__q[41], WERTE5__q[41], + WERTE4__q[41], WERTE3__q[41], WERTE2__q[41], WERTE1__q[41], + WERTE0__q[41]} & {8{RTC_ADR_q == 6'b10_1001}} & {8{UHR_DS}}) | + ({WERTE7__q[42], WERTE6__q[42], WERTE5__q[42], WERTE4__q[42], + WERTE3__q[42], WERTE2__q[42], WERTE1__q[42], WERTE0__q[42]} & + {8{RTC_ADR_q == 6'b10_1010}} & {8{UHR_DS}}) | ({WERTE7__q[43], + WERTE6__q[43], WERTE5__q[43], WERTE4__q[43], WERTE3__q[43], + WERTE2__q[43], WERTE1__q[43], WERTE0__q[43]} & {8{RTC_ADR_q == + 6'b10_1011}} & {8{UHR_DS}}) | ({WERTE7__q[44], WERTE6__q[44], + WERTE5__q[44], WERTE4__q[44], WERTE3__q[44], WERTE2__q[44], + WERTE1__q[44], WERTE0__q[44]} & {8{RTC_ADR_q == 6'b10_1100}} & + {8{UHR_DS}}) | ({WERTE7__q[45], WERTE6__q[45], WERTE5__q[45], + WERTE4__q[45], WERTE3__q[45], WERTE2__q[45], WERTE1__q[45], + WERTE0__q[45]} & {8{RTC_ADR_q == 6'b10_1101}} & {8{UHR_DS}}) | + ({WERTE7__q[46], WERTE6__q[46], WERTE5__q[46], WERTE4__q[46], + WERTE3__q[46], WERTE2__q[46], WERTE1__q[46], WERTE0__q[46]} & + {8{RTC_ADR_q == 6'b10_1110}} & {8{UHR_DS}}) | ({WERTE7__q[47], + WERTE6__q[47], WERTE5__q[47], WERTE4__q[47], WERTE3__q[47], + WERTE2__q[47], WERTE1__q[47], WERTE0__q[47]} & {8{RTC_ADR_q == + 6'b10_1111}} & {8{UHR_DS}}) | ({WERTE7__q[48], WERTE6__q[48], + WERTE5__q[48], WERTE4__q[48], WERTE3__q[48], WERTE2__q[48], + WERTE1__q[48], WERTE0__q[48]} & {8{RTC_ADR_q == 6'b11_0000}} & + {8{UHR_DS}}) | ({WERTE7__q[49], WERTE6__q[49], WERTE5__q[49], + WERTE4__q[49], WERTE3__q[49], WERTE2__q[49], WERTE1__q[49], + WERTE0__q[49]} & {8{RTC_ADR_q == 6'b11_0001}} & {8{UHR_DS}}) | + ({WERTE7__q[50], WERTE6__q[50], WERTE5__q[50], WERTE4__q[50], + WERTE3__q[50], WERTE2__q[50], WERTE1__q[50], WERTE0__q[50]} & + {8{RTC_ADR_q == 6'b11_0010}} & {8{UHR_DS}}) | ({WERTE7__q[51], + WERTE6__q[51], WERTE5__q[51], WERTE4__q[51], WERTE3__q[51], + WERTE2__q[51], WERTE1__q[51], WERTE0__q[51]} & {8{RTC_ADR_q == + 6'b11_0011}} & {8{UHR_DS}}) | ({WERTE7__q[52], WERTE6__q[52], + WERTE5__q[52], WERTE4__q[52], WERTE3__q[52], WERTE2__q[52], + WERTE1__q[52], WERTE0__q[52]} & {8{RTC_ADR_q == 6'b11_0100}} & + {8{UHR_DS}}) | ({WERTE7__q[53], WERTE6__q[53], WERTE5__q[53], + WERTE4__q[53], WERTE3__q[53], WERTE2__q[53], WERTE1__q[53], + WERTE0__q[53]} & {8{RTC_ADR_q == 6'b11_0101}} & {8{UHR_DS}}) | + ({WERTE7__q[54], WERTE6__q[54], WERTE5__q[54], WERTE4__q[54], + WERTE3__q[54], WERTE2__q[54], WERTE1__q[54], WERTE0__q[54]} & + {8{RTC_ADR_q == 6'b11_0110}} & {8{UHR_DS}}) | ({WERTE7__q[55], + WERTE6__q[55], WERTE5__q[55], WERTE4__q[55], WERTE3__q[55], + WERTE2__q[55], WERTE1__q[55], WERTE0__q[55]} & {8{RTC_ADR_q == + 6'b11_0111}} & {8{UHR_DS}}) | ({WERTE7__q[56], WERTE6__q[56], + WERTE5__q[56], WERTE4__q[56], WERTE3__q[56], WERTE2__q[56], + WERTE1__q[56], WERTE0__q[56]} & {8{RTC_ADR_q == 6'b11_1000}} & + {8{UHR_DS}}) | ({WERTE7__q[57], WERTE6__q[57], WERTE5__q[57], + WERTE4__q[57], WERTE3__q[57], WERTE2__q[57], WERTE1__q[57], + WERTE0__q[57]} & {8{RTC_ADR_q == 6'b11_1001}} & {8{UHR_DS}}) | + ({WERTE7__q[58], WERTE6__q[58], WERTE5__q[58], WERTE4__q[58], + WERTE3__q[58], WERTE2__q[58], WERTE1__q[58], WERTE0__q[58]} & + {8{RTC_ADR_q == 6'b11_1010}} & {8{UHR_DS}}) | ({WERTE7__q[59], + WERTE6__q[59], WERTE5__q[59], WERTE4__q[59], WERTE3__q[59], + WERTE2__q[59], WERTE1__q[59], WERTE0__q[59]} & {8{RTC_ADR_q == + 6'b11_1011}} & {8{UHR_DS}}) | ({WERTE7__q[60], WERTE6__q[60], + WERTE5__q[60], WERTE4__q[60], WERTE3__q[60], WERTE2__q[60], + WERTE1__q[60], WERTE0__q[60]} & {8{RTC_ADR_q == 6'b11_1100}} & + {8{UHR_DS}}) | ({WERTE7__q[61], WERTE6__q[61], WERTE5__q[61], + WERTE4__q[61], WERTE3__q[61], WERTE2__q[61], WERTE1__q[61], + WERTE0__q[61]} & {8{RTC_ADR_q == 6'b11_1101}} & {8{UHR_DS}}) | + ({WERTE7__q[62], WERTE6__q[62], WERTE5__q[62], WERTE4__q[62], + WERTE3__q[62], WERTE2__q[62], WERTE1__q[62], WERTE0__q[62]} & + {8{RTC_ADR_q == 6'b11_1110}} & {8{UHR_DS}}) | ({WERTE7__q[63], + WERTE6__q[63], WERTE5__q[63], WERTE4__q[63], WERTE3__q[63], + WERTE2__q[63], WERTE1__q[63], WERTE0__q[63]} & {8{RTC_ADR_q == + 6'b11_1111}} & {8{UHR_DS}}) | ({2'b00, RTC_ADR_q} & {8{UHR_AS}}) | + ({8{INT_CTR_CS}} & INT_CTR_q[23:16]) | ({8{INT_ENA_CS}} & + INT_ENA_q[23:16]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[23:16]) | + ({8{INT_CLEAR_CS}} & INT_IN[23:16]) | ({8{ACP_CONF_CS}} & + ACP_CONF_q[23:16]); + assign u1_enabledt = (UHR_DS | UHR_AS | INT_CTR_CS | INT_ENA_CS | + INT_LATCH_CS | INT_CLEAR_CS | ACP_CONF_CS) & (!nFB_OE); + assign FB_AD[23:16] = u1_tridata; + assign u2_data = ({8{INT_CTR_CS}} & INT_CTR_q[15:8]) | ({8{INT_ENA_CS}} & + INT_ENA_q[15:8]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[15:8]) | + ({8{INT_CLEAR_CS}} & INT_IN[15:8]) | ({8{ACP_CONF_CS}} & + ACP_CONF_q[15:8]); + assign u2_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS + | ACP_CONF_CS) & (!nFB_OE); + assign FB_AD[15:8] = u2_tridata; + assign u3_data = ({8{INT_CTR_CS}} & INT_CTR_q[7:0]) | ({8{INT_ENA_CS}} & + INT_ENA_q[7:0]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[7:0]) | + ({8{INT_CLEAR_CS}} & INT_IN[7:0]) | ({8{ACP_CONF_CS}} & + ACP_CONF_q[7:0]); + assign u3_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS + | ACP_CONF_CS) & (!nFB_OE); + assign FB_AD[7:0] = u3_tridata; + assign INT_HANDLER_TA = INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | + INT_CLEAR_CS; + + +// Assignments added to explicitly combine the +// effects of multiple drivers in the source + assign UPDATE_ON = UPDATE_ON_1 | UPDATE_ON_2; + assign WERTE0_0_ena = WERTE0_0_ena_1 | WERTE0_0_ena_2; + assign WERTE0_2_ena = WERTE0_2_ena_1 | WERTE0_2_ena_2; + assign WERTE0_4_ena = WERTE0_4_ena_1 | WERTE0_4_ena_2; + assign WERTE0_6_ena = WERTE0_6_ena_1 | WERTE0_6_ena_2; + assign WERTE0_7_ena = WERTE0_7_ena_1 | WERTE0_7_ena_2; + assign WERTE0_8_ena = WERTE0_8_ena_1 | WERTE0_8_ena_2; + assign WERTE0_9_ena = WERTE0_9_ena_1 | WERTE0_9_ena_2; + assign WERTE0_13_ena = WERTE0_13_ena_1 | WERTE0_13_ena_2; + assign WERTE0__d[0] = WERTE0_0_d_1 | WERTE0_0_d_2; + assign WERTE0__d[2] = WERTE0_2_d_1 | WERTE0_2_d_2; + assign WERTE0__d[4] = WERTE0_4_d_1 | WERTE0_4_d_2; + assign WERTE0__d[6] = WERTE0_6_d_1 | WERTE0_6_d_2; + assign WERTE0__d[7] = WERTE0_7_d_1 | WERTE0_7_d_2; + assign WERTE0__d[8] = WERTE0_8_d_1 | WERTE0_8_d_2; + assign WERTE0__d[9] = WERTE0_9_d_1 | WERTE0_9_d_2; + assign WERTE0__d[11] = WERTE0_11_d_1 | WERTE0_11_d_2; + assign WERTE0__d[13] = WERTE0_13_d_1 | WERTE0_13_d_2; + assign WERTE1_0_ena = WERTE1_0_ena_1 | WERTE1_0_ena_2; + assign WERTE1_2_ena = WERTE1_2_ena_1 | WERTE1_2_ena_2; + assign WERTE1_4_ena = WERTE1_4_ena_1 | WERTE1_4_ena_2; + assign WERTE1_6_ena = WERTE1_6_ena_1 | WERTE1_6_ena_2; + assign WERTE1_7_ena = WERTE1_7_ena_1 | WERTE1_7_ena_2; + assign WERTE1_8_ena = WERTE1_8_ena_1 | WERTE1_8_ena_2; + assign WERTE1_9_ena = WERTE1_9_ena_1 | WERTE1_9_ena_2; + assign WERTE1__d[0] = WERTE1_0_d_1 | WERTE1_0_d_2; + assign WERTE1__d[2] = WERTE1_2_d_1 | WERTE1_2_d_2; + assign WERTE1__d[4] = WERTE1_4_d_1 | WERTE1_4_d_2; + assign WERTE1__d[6] = WERTE1_6_d_1 | WERTE1_6_d_2; + assign WERTE1__d[7] = WERTE1_7_d_1 | WERTE1_7_d_2; + assign WERTE1__d[8] = WERTE1_8_d_1 | WERTE1_8_d_2; + assign WERTE1__d[9] = WERTE1_9_d_1 | WERTE1_9_d_2; + assign WERTE1__d[11] = WERTE1_11_d_1 | WERTE1_11_d_2; + assign WERTE2_0_ena = WERTE2_0_ena_1 | WERTE2_0_ena_2; + assign WERTE2_2_ena = WERTE2_2_ena_1 | WERTE2_2_ena_2; + assign WERTE2_4_ena = WERTE2_4_ena_1 | WERTE2_4_ena_2; + assign WERTE2_6_ena = WERTE2_6_ena_1 | WERTE2_6_ena_2; + assign WERTE2_7_ena = WERTE2_7_ena_1 | WERTE2_7_ena_2; + assign WERTE2_8_ena = WERTE2_8_ena_1 | WERTE2_8_ena_2; + assign WERTE2_9_ena = WERTE2_9_ena_1 | WERTE2_9_ena_2; + assign WERTE2__d[0] = WERTE2_0_d_1 | WERTE2_0_d_2; + assign WERTE2__d[2] = WERTE2_2_d_1 | WERTE2_2_d_2; + assign WERTE2__d[4] = WERTE2_4_d_1 | WERTE2_4_d_2; + assign WERTE2__d[6] = WERTE2_6_d_1 | WERTE2_6_d_2; + assign WERTE2__d[7] = WERTE2_7_d_1 | WERTE2_7_d_2; + assign WERTE2__d[8] = WERTE2_8_d_1 | WERTE2_8_d_2; + assign WERTE2__d[9] = WERTE2_9_d_1 | WERTE2_9_d_2; + assign WERTE2__d[11] = WERTE2_11_d_1 | WERTE2_11_d_2; + assign WERTE3_0_ena = WERTE3_0_ena_1 | WERTE3_0_ena_2; + assign WERTE3_2_ena = WERTE3_2_ena_1 | WERTE3_2_ena_2; + assign WERTE3_4_ena = WERTE3_4_ena_1 | WERTE3_4_ena_2; + assign WERTE3_6_ena = WERTE3_6_ena_1 | WERTE3_6_ena_2; + assign WERTE3_7_ena = WERTE3_7_ena_1 | WERTE3_7_ena_2; + assign WERTE3_8_ena = WERTE3_8_ena_1 | WERTE3_8_ena_2; + assign WERTE3_9_ena = WERTE3_9_ena_1 | WERTE3_9_ena_2; + assign WERTE3__d[0] = WERTE3_0_d_1 | WERTE3_0_d_2; + assign WERTE3__d[2] = WERTE3_2_d_1 | WERTE3_2_d_2; + assign WERTE3__d[4] = WERTE3_4_d_1 | WERTE3_4_d_2; + assign WERTE3__d[6] = WERTE3_6_d_1 | WERTE3_6_d_2; + assign WERTE3__d[7] = WERTE3_7_d_1 | WERTE3_7_d_2; + assign WERTE3__d[8] = WERTE3_8_d_1 | WERTE3_8_d_2; + assign WERTE3__d[9] = WERTE3_9_d_1 | WERTE3_9_d_2; + assign WERTE4_0_ena = WERTE4_0_ena_1 | WERTE4_0_ena_2; + assign WERTE4_2_ena = WERTE4_2_ena_1 | WERTE4_2_ena_2; + assign WERTE4_4_ena = WERTE4_4_ena_1 | WERTE4_4_ena_2; + assign WERTE4_6_ena = WERTE4_6_ena_1 | WERTE4_6_ena_2; + assign WERTE4_7_ena = WERTE4_7_ena_1 | WERTE4_7_ena_2; + assign WERTE4_8_ena = WERTE4_8_ena_1 | WERTE4_8_ena_2; + assign WERTE4_9_ena = WERTE4_9_ena_1 | WERTE4_9_ena_2; + assign WERTE4__d[0] = WERTE4_0_d_1 | WERTE4_0_d_2; + assign WERTE4__d[2] = WERTE4_2_d_1 | WERTE4_2_d_2; + assign WERTE4__d[4] = WERTE4_4_d_1 | WERTE4_4_d_2; + assign WERTE4__d[6] = WERTE4_6_d_1 | WERTE4_6_d_2; + assign WERTE4__d[7] = WERTE4_7_d_1 | WERTE4_7_d_2; + assign WERTE4__d[8] = WERTE4_8_d_1 | WERTE4_8_d_2; + assign WERTE4__d[9] = WERTE4_9_d_1 | WERTE4_9_d_2; + assign WERTE5_0_ena = WERTE5_0_ena_1 | WERTE5_0_ena_2; + assign WERTE5_2_ena = WERTE5_2_ena_1 | WERTE5_2_ena_2; + assign WERTE5_4_ena = WERTE5_4_ena_1 | WERTE5_4_ena_2; + assign WERTE5_6_ena = WERTE5_6_ena_1 | WERTE5_6_ena_2; + assign WERTE5_7_ena = WERTE5_7_ena_1 | WERTE5_7_ena_2; + assign WERTE5_8_ena = WERTE5_8_ena_1 | WERTE5_8_ena_2; + assign WERTE5_9_ena = WERTE5_9_ena_1 | WERTE5_9_ena_2; + assign WERTE5__d[0] = WERTE5_0_d_1 | WERTE5_0_d_2; + assign WERTE5__d[2] = WERTE5_2_d_1 | WERTE5_2_d_2; + assign WERTE5__d[4] = WERTE5_4_d_1 | WERTE5_4_d_2; + assign WERTE5__d[6] = WERTE5_6_d_1 | WERTE5_6_d_2; + assign WERTE5__d[7] = WERTE5_7_d_1 | WERTE5_7_d_2; + assign WERTE5__d[8] = WERTE5_8_d_1 | WERTE5_8_d_2; + assign WERTE5__d[9] = WERTE5_9_d_1 | WERTE5_9_d_2; + assign WERTE6_0_ena = WERTE6_0_ena_1 | WERTE6_0_ena_2; + assign WERTE6_2_ena = WERTE6_2_ena_1 | WERTE6_2_ena_2; + assign WERTE6_4_ena = WERTE6_4_ena_1 | WERTE6_4_ena_2; + assign WERTE6_6_ena = WERTE6_6_ena_1 | WERTE6_6_ena_2; + assign WERTE6_7_ena = WERTE6_7_ena_1 | WERTE6_7_ena_2; + assign WERTE6_8_ena = WERTE6_8_ena_1 | WERTE6_8_ena_2; + assign WERTE6_9_ena = WERTE6_9_ena_1 | WERTE6_9_ena_2; + assign WERTE6__d[0] = WERTE6_0_d_1 | WERTE6_0_d_2; + assign WERTE6__d[2] = WERTE6_2_d_1 | WERTE6_2_d_2; + assign WERTE6__d[4] = WERTE6_4_d_1 | WERTE6_4_d_2; + assign WERTE6__d[6] = WERTE6_6_d_1 | WERTE6_6_d_2; + assign WERTE6__d[7] = WERTE6_7_d_1 | WERTE6_7_d_2; + assign WERTE6__d[8] = WERTE6_8_d_1 | WERTE6_8_d_2; + assign WERTE6__d[9] = WERTE6_9_d_1 | WERTE6_9_d_2; + assign WERTE7_0_ena = WERTE7_0_ena_1 | WERTE7_0_ena_2; + assign WERTE7_2_ena = WERTE7_2_ena_1 | WERTE7_2_ena_2; + assign WERTE7_4_ena = WERTE7_4_ena_1 | WERTE7_4_ena_2; + assign WERTE7_6_ena = WERTE7_6_ena_1 | WERTE7_6_ena_2; + assign WERTE7_7_ena = WERTE7_7_ena_1 | WERTE7_7_ena_2; + assign WERTE7_8_ena = WERTE7_8_ena_1 | WERTE7_8_ena_2; + assign WERTE7_9_ena = WERTE7_9_ena_1 | WERTE7_9_ena_2; + assign WERTE7__d[0] = WERTE7_0_d_1 | WERTE7_0_d_2; + assign WERTE7__d[2] = WERTE7_2_d_1 | WERTE7_2_d_2; + assign WERTE7__d[4] = WERTE7_4_d_1 | WERTE7_4_d_2; + assign WERTE7__d[6] = WERTE7_6_d_1 | WERTE7_6_d_2; + assign WERTE7__d[7] = WERTE7_7_d_1 | WERTE7_7_d_2; + assign WERTE7__d[8] = WERTE7_8_d_1 | WERTE7_8_d_2; + assign WERTE7__d[9] = WERTE7_9_d_1 | WERTE7_9_d_2; + assign WERTE7__d[13] = WERTE7_13_d_1 | WERTE7_13_d_2; + +// Define power signal(s) + assign vcc = 1'b1; + assign gnd = 1'b0; +endmodule diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri.tdf new file mode 100644 index 0000000..abd780b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri.tdf @@ -0,0 +1,78 @@ +-------------------------------------------------------------------- +-- +-- LPM_BUSTRI Parameterized Megafunction +-- +-- Copyright (C) 1991-2013 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. +-- +-- Quartus II 13.1.0 Build 162 10/23/2013 +-- +-- Version 2.0 +-- +-------------------------------------------------------------------- + + +PARAMETERS +( + LPM_WIDTH +); + +SUBDESIGN lpm_bustri +( + tridata[LPM_WIDTH-1..0] : BIDIR; + data[LPM_WIDTH-1..0] : INPUT = VCC; + enabletr : INPUT = VCC; + enabledt : INPUT = VCC; + result[LPM_WIDTH-1..0] : OUTPUT; +) + +VARIABLE + % Are the enable inputs used? % + IF (USED(enabledt)) GENERATE + dout[LPM_WIDTH-1..0] : TRI; + END GENERATE; + IF (USED(enabletr)) GENERATE + din[LPM_WIDTH-1..0] : TRI; + END GENERATE; + +BEGIN + + ASSERT (LPM_WIDTH > 0) + REPORT "Value of LPM_WIDTH parameter value must be greater than 0" + SEVERITY ERROR + HELP_ID LPM_BUSTRI_WIDTH; + + ASSERT (USED(enabledt) & USED(data)) + REPORT "lpm_bustri function requires data[] port -- Altera recommends using the TRI primitive instead" + SEVERITY ERROR + HELP_ID LPM_BUSTRI_DATA; + + % Connect buffers if they are used % + IF (USED(enabledt)) GENERATE + dout[].oe = enabledt; + dout[] = data[]; + tridata[] = dout[]; + END GENERATE; + + IF (USED(enabletr)) GENERATE + din[].oe = enabletr; + din[] = tridata[]; + result[] = din[]; + ELSE GENERATE + result[] = tridata[]; + END GENERATE; + IF !USED(result) GENERATE + result[] = GND; + END GENERATE; +END; diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.inc b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.inc new file mode 100644 index 0000000..8cb4941 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri_BYT +( + data[7..0], + enabledt +) + +RETURNS ( + tridata[7..0] +); diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.tdf new file mode 100644 index 0000000..84b70c8 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.tdf @@ -0,0 +1,72 @@ +-------------------------------------------------------------------- +-- +-- LPM_BUSTRI Parameterized Megafunction +-- +-- Copyright (C) 1991-2013 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. +-- +-- Quartus II 13.1.0 Build 162 10/23/2013 +-- +-- Version 2.0 +-- +-------------------------------------------------------------------- + +SUBDESIGN lpm_bustri_BYT +( + tridata[8-1..0] : BIDIR; + data[8-1..0] : INPUT = VCC; + enabletr : INPUT = VCC; + enabledt : INPUT = VCC; + result[8-1..0] : OUTPUT; +) + +VARIABLE + % Are the enable inputs used? % + IF (USED(enabledt)) GENERATE + dout[8-1..0] : TRI; + END GENERATE; + IF (USED(enabletr)) GENERATE + din[8-1..0] : TRI; + END GENERATE; + +BEGIN + + ASSERT (8 > 0) + REPORT "Value of 8 parameter value must be greater than 0" + SEVERITY ERROR + HELP_ID LPM_BUSTRI_WIDTH; + + ASSERT (USED(enabledt) & USED(data)) + REPORT "lpm_bustri function requires data[] port -- Altera recommends using the TRI primitive instead" + SEVERITY ERROR + HELP_ID LPM_BUSTRI_DATA; + + % Connect buffers if they are used % + IF (USED(enabledt)) GENERATE + dout[].oe = enabledt; + dout[] = data[]; + tridata[] = dout[]; + END GENERATE; + + IF (USED(enabletr)) GENERATE + din[].oe = enabletr; + din[] = tridata[]; + result[] = din[]; + ELSE GENERATE + result[] = tridata[]; + END GENERATE; + IF !USED(result) GENERATE + result[] = GND; + END GENERATE; +END; diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.v b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.v new file mode 100644 index 0000000..da23b16 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.v @@ -0,0 +1,78 @@ +// Xilinx XPort Language Converter, Version 4.1 (110) +// +// AHDL Design Source: lpm_bustri_BYT.tdf +// Verilog Design Output: lpm_bustri_BYT.v +// Created 03-Mar-2014 09:18 PM +// +// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. +// Xilinx Inc makes no warranty, expressed or implied, with respect to +// the operation and/or functionality of the converted output files. +// + + +// ------------------------------------------------------------------ +// LPM_BUSTRI Parameterized Megafunction +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. +// Quartus II 13.1.0 Build 162 10/23/2013 +// Version 2.0 +// ------------------------------------------------------------------ +module lpm_bustri_BYT(tridata, data, enabletr, enabledt, result); + input [7:0] data; + input enabletr, enabledt; + output [7:0] result; + inout [7:0] tridata; + +// Are the enable inputs used? + wire [7:0] dout; + wire [7:0] dout_in; + wire gnd, result0_1, result0_2, result1_1, result1_2, result2_1, result2_2, + result3_1, result3_2, result4_1, result4_2, result5_1, result5_2, + result6_1, result6_2, result7_1, result7_2, dout0_oe_ctrl; + + assign dout[0] = (dout0_oe_ctrl) ? dout_in[0] : 1'bz; + assign dout[1] = (dout0_oe_ctrl) ? dout_in[1] : 1'bz; + assign dout[2] = (dout0_oe_ctrl) ? dout_in[2] : 1'bz; + assign dout[3] = (dout0_oe_ctrl) ? dout_in[3] : 1'bz; + assign dout[4] = (dout0_oe_ctrl) ? dout_in[4] : 1'bz; + assign dout[5] = (dout0_oe_ctrl) ? dout_in[5] : 1'bz; + assign dout[6] = (dout0_oe_ctrl) ? dout_in[6] : 1'bz; + assign dout[7] = (dout0_oe_ctrl) ? dout_in[7] : 1'bz; + +// Start of original equations + +// Connect buffers if they are used + assign dout0_oe_ctrl = enabledt; + assign dout_in = data; + assign tridata = dout; + assign {result7_1, result6_1, result5_1, result4_1, result3_1, result2_1, + result1_1, result0_1} = tridata; + assign {result7_2, result6_2, result5_2, result4_2, result3_2, result2_2, + result1_2, result0_2} = {8{gnd}}; + + +// Assignments added to explicitly combine the +// effects of multiple drivers in the source + assign result[0] = result0_1 | result0_2; + assign result[1] = result1_1 | result1_2; + assign result[2] = result2_1 | result2_2; + assign result[3] = result3_1 | result3_2; + assign result[4] = result4_1 | result4_2; + assign result[5] = result5_1 | result5_2; + assign result[6] = result6_1 | result6_2; + assign result[7] = result7_1 | result7_2; + +// Define power signal(s) + assign gnd = 1'b0; +endmodule diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.inc b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.inc new file mode 100644 index 0000000..f180c48 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri_LONG +( + data[31..0], + enabledt +) + +RETURNS ( + tridata[31..0] +); diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.tdf new file mode 100644 index 0000000..0ec70d1 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.tdf @@ -0,0 +1,72 @@ +-------------------------------------------------------------------- +-- +-- LPM_BUSTRI Parameterized Megafunction +-- +-- Copyright (C) 1991-2013 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. +-- +-- Quartus II 13.1.0 Build 162 10/23/2013 +-- +-- Version 2.0 +-- +-------------------------------------------------------------------- + +SUBDESIGN lpm_bustri_LONG +( + tridata[32-1..0] : BIDIR; + data[32-1..0] : INPUT = VCC; + enabletr : INPUT = VCC; + enabledt : INPUT = VCC; + result[32-1..0] : OUTPUT; +) + +VARIABLE + % Are the enable inputs used? % + IF (USED(enabledt)) GENERATE + dout[32-1..0] : TRI; + END GENERATE; + IF (USED(enabletr)) GENERATE + din[32-1..0] : TRI; + END GENERATE; + +BEGIN + + ASSERT (32 > 0) + REPORT "Value of 32 parameter value must be greater than 0" + SEVERITY ERROR + HELP_ID LPM_BUSTRI_WIDTH; + + ASSERT (USED(enabledt) & USED(data)) + REPORT "lpm_bustri function requires data[] port -- Altera recommends using the TRI primitive instead" + SEVERITY ERROR + HELP_ID LPM_BUSTRI_DATA; + + % Connect buffers if they are used % + IF (USED(enabledt)) GENERATE + dout[].oe = enabledt; + dout[] = data[]; + tridata[] = dout[]; + END GENERATE; + + IF (USED(enabletr)) GENERATE + din[].oe = enabletr; + din[] = tridata[]; + result[] = din[]; + ELSE GENERATE + result[] = tridata[]; + END GENERATE; + IF !USED(result) GENERATE + result[] = GND; + END GENERATE; +END; diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.v b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.v new file mode 100644 index 0000000..b5d8c16 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.v @@ -0,0 +1,16 @@ +// Xilinx XPort Language Converter, Version 4.1 (110) +// +// AHDL Design Source: lpm_bustri_LONG.tdf +// Verilog Design Output: lpm_bustri_LONG.v +// Created 05-Mar-2014 12:37 AM +// +// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. +// Xilinx Inc makes no warranty, expressed or implied, with respect to +// the operation and/or functionality of the converted output files. +// + +// +// +// *** this module FAILED during conversion +//Look at error messages. +// diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.inc b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.inc new file mode 100644 index 0000000..09f6251 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri_WORD +( + data[15..0], + enabledt +) + +RETURNS ( + tridata[15..0] +); diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.tdf new file mode 100644 index 0000000..3e2ac8b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.tdf @@ -0,0 +1,72 @@ +-------------------------------------------------------------------- +-- +-- LPM_BUSTRI Parameterized Megafunction +-- +-- Copyright (C) 1991-2013 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. +-- +-- Quartus II 13.1.0 Build 162 10/23/2013 +-- +-- Version 2.0 +-- +-------------------------------------------------------------------- + +SUBDESIGN lpm_bustri_WORD +( + tridata[16-1..0] : BIDIR; + data[16-1..0] : INPUT = VCC; + enabletr : INPUT = VCC; + enabledt : INPUT = VCC; + result[16-1..0] : OUTPUT; +) + +VARIABLE + % Are the enable inputs used? % + IF (USED(enabledt)) GENERATE + dout[16-1..0] : TRI; + END GENERATE; + IF (USED(enabletr)) GENERATE + din[16-1..0] : TRI; + END GENERATE; + +BEGIN + + ASSERT (16 > 0) + REPORT "Value of 16 parameter value must be greater than 0" + SEVERITY ERROR + HELP_ID LPM_BUSTRI_WIDTH; + + ASSERT (USED(enabledt) & USED(data)) + REPORT "lpm_bustri function requires data[] port -- Altera recommends using the TRI primitive instead" + SEVERITY ERROR + HELP_ID LPM_BUSTRI_DATA; + + % Connect buffers if they are used % + IF (USED(enabledt)) GENERATE + dout[].oe = enabledt; + dout[] = data[]; + tridata[] = dout[]; + END GENERATE; + + IF (USED(enabletr)) GENERATE + din[].oe = enabletr; + din[] = tridata[]; + result[] = din[]; + ELSE GENERATE + result[] = tridata[]; + END GENERATE; + IF !USED(result) GENERATE + result[] = GND; + END GENERATE; +END; diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.v b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.v new file mode 100644 index 0000000..cfd22d9 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.v @@ -0,0 +1,99 @@ +// Xilinx XPort Language Converter, Version 4.1 (110) +// +// AHDL Design Source: lpm_bustri_WORD.tdf +// Verilog Design Output: lpm_bustri_WORD.v +// Created 02-Mar-2014 04:36 PM +// +// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. +// Xilinx Inc makes no warranty, expressed or implied, with respect to +// the operation and/or functionality of the converted output files. +// + + +// ------------------------------------------------------------------ +// LPM_BUSTRI Parameterized Megafunction +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. +// Quartus II 13.1.0 Build 162 10/23/2013 +// Version 2.0 +// ------------------------------------------------------------------ +module lpm_bustri_WORD(tridata, data, enabletr, enabledt, result); + input [15:0] data; + input enabletr, enabledt; + output [15:0] result; + inout [15:0] tridata; + +// Are the enable inputs used? + wire [15:0] dout; + wire [15:0] dout_in; + wire gnd, result0_1, result0_2, result1_1, result1_2, result2_1, result2_2, + result3_1, result3_2, result4_1, result4_2, result5_1, result5_2, + result6_1, result6_2, result7_1, result7_2, result8_1, result8_2, + result9_1, result9_2, result10_1, result10_2, result11_1, result11_2, + result12_1, result12_2, result13_1, result13_2, result14_1, + result14_2, result15_1, result15_2, dout0_oe_ctrl; + + assign dout[0] = (dout0_oe_ctrl) ? dout_in[0] : 1'bz; + assign dout[1] = (dout0_oe_ctrl) ? dout_in[1] : 1'bz; + assign dout[2] = (dout0_oe_ctrl) ? dout_in[2] : 1'bz; + assign dout[3] = (dout0_oe_ctrl) ? dout_in[3] : 1'bz; + assign dout[4] = (dout0_oe_ctrl) ? dout_in[4] : 1'bz; + assign dout[5] = (dout0_oe_ctrl) ? dout_in[5] : 1'bz; + assign dout[6] = (dout0_oe_ctrl) ? dout_in[6] : 1'bz; + assign dout[7] = (dout0_oe_ctrl) ? dout_in[7] : 1'bz; + assign dout[8] = (dout0_oe_ctrl) ? dout_in[8] : 1'bz; + assign dout[9] = (dout0_oe_ctrl) ? dout_in[9] : 1'bz; + assign dout[10] = (dout0_oe_ctrl) ? dout_in[10] : 1'bz; + assign dout[11] = (dout0_oe_ctrl) ? dout_in[11] : 1'bz; + assign dout[12] = (dout0_oe_ctrl) ? dout_in[12] : 1'bz; + assign dout[13] = (dout0_oe_ctrl) ? dout_in[13] : 1'bz; + assign dout[14] = (dout0_oe_ctrl) ? dout_in[14] : 1'bz; + assign dout[15] = (dout0_oe_ctrl) ? dout_in[15] : 1'bz; + +// Start of original equations + +// Connect buffers if they are used + assign dout0_oe_ctrl = enabledt; + assign dout_in = data; + assign tridata = dout; + assign {result15_1, result14_1, result13_1, result12_1, result11_1, + result10_1, result9_1, result8_1, result7_1, result6_1, result5_1, + result4_1, result3_1, result2_1, result1_1, result0_1} = tridata; + assign {result15_2, result14_2, result13_2, result12_2, result11_2, + result10_2, result9_2, result8_2, result7_2, result6_2, result5_2, + result4_2, result3_2, result2_2, result1_2, result0_2} = {16{gnd}}; + + +// Assignments added to explicitly combine the +// effects of multiple drivers in the source + assign result[0] = result0_1 | result0_2; + assign result[1] = result1_1 | result1_2; + assign result[2] = result2_1 | result2_2; + assign result[3] = result3_1 | result3_2; + assign result[4] = result4_1 | result4_2; + assign result[5] = result5_1 | result5_2; + assign result[6] = result6_1 | result6_2; + assign result[7] = result7_1 | result7_2; + assign result[8] = result8_1 | result8_2; + assign result[9] = result9_1 | result9_2; + assign result[10] = result10_1 | result10_2; + assign result[11] = result11_1 | result11_2; + assign result[12] = result12_1 | result12_2; + assign result[13] = result13_1 | result13_2; + assign result[14] = result14_1 | result14_2; + assign result[15] = result15_1 | result15_2; + +// Define power signal(s) + assign gnd = 1'b0; +endmodule diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/xport.exe b/FPGA_by_Gregory_Estrade/ahdl2v/xport.exe new file mode 100644 index 0000000000000000000000000000000000000000..16ea1b34b463aa7a1eb9d53948f1171c7289fb17 GIT binary patch literal 566272 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 Yni*4T>OXwOh@^SF>%c|$zrp7}0jo13 + + + + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_bidir0.qip b/FPGA_by_Gregory_Estrade/altip/altddio_bidir0.qip new file mode 100644 index 0000000..3cf62bd --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_bidir0.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_BIDIR" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altddio_bidir0.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_bidir0.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_bidir0.v b/FPGA_by_Gregory_Estrade/altip/altddio_bidir0.v new file mode 100644 index 0000000..a4daf30 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_bidir0.v @@ -0,0 +1,139 @@ +// megafunction wizard: %ALTDDIO_BIDIR% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: ALTDDIO_BIDIR + +// ============================================================ +// File Name: altddio_bidir0.v +// Megafunction Name(s): +// ALTDDIO_BIDIR +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altddio_bidir0 ( + datain_h, + datain_l, + inclock, + oe, + outclock, + combout, + dataout_h, + dataout_l, + padio); + + input [31:0] datain_h; + input [31:0] datain_l; + input inclock; + input oe; + input outclock; + output [31:0] combout; + output [31:0] dataout_h; + output [31:0] dataout_l; + inout [31:0] padio; + + wire [31:0] sub_wire0; + wire [31:0] sub_wire1; + wire [31:0] sub_wire2; + wire [31:0] combout = sub_wire0[31:0]; + wire [31:0] dataout_h = sub_wire1[31:0]; + wire [31:0] dataout_l = sub_wire2[31:0]; + + altddio_bidir ALTDDIO_BIDIR_component ( + .padio (padio), + .datain_h (datain_h), + .datain_l (datain_l), + .oe (oe), + .outclock (outclock), + .inclock (inclock), + .combout (sub_wire0), + .dataout_h (sub_wire1), + .dataout_l (sub_wire2), + .aclr (1'b0), + .aset (1'b0), + .dqsundelayedout (), + .inclocken (1'b1), + .oe_out (), + .outclocken (1'b1), + .sclr (1'b0), + .sset (1'b0)); + defparam + ALTDDIO_BIDIR_component.extend_oe_disable = "OFF", + ALTDDIO_BIDIR_component.implement_input_in_lcell = "ON", + ALTDDIO_BIDIR_component.intended_device_family = "Cyclone III", + ALTDDIO_BIDIR_component.invert_output = "OFF", + ALTDDIO_BIDIR_component.lpm_hint = "UNUSED", + ALTDDIO_BIDIR_component.lpm_type = "altddio_bidir", + ALTDDIO_BIDIR_component.oe_reg = "UNREGISTERED", + ALTDDIO_BIDIR_component.power_up_high = "OFF", + ALTDDIO_BIDIR_component.width = 32; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "OFF" +// Retrieval info: CONSTANT: IMPLEMENT_INPUT_IN_LCELL STRING "ON" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +// Retrieval info: CONSTANT: LPM_HINT STRING "UNUSED" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_bidir" +// Retrieval info: CONSTANT: OE_REG STRING "UNREGISTERED" +// Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +// Retrieval info: CONSTANT: WIDTH NUMERIC "32" +// Retrieval info: USED_PORT: combout 0 0 32 0 OUTPUT NODEFVAL "combout[31..0]" +// Retrieval info: CONNECT: combout 0 0 32 0 @combout 0 0 32 0 +// Retrieval info: USED_PORT: datain_h 0 0 32 0 INPUT NODEFVAL "datain_h[31..0]" +// Retrieval info: CONNECT: @datain_h 0 0 32 0 datain_h 0 0 32 0 +// Retrieval info: USED_PORT: datain_l 0 0 32 0 INPUT NODEFVAL "datain_l[31..0]" +// Retrieval info: CONNECT: @datain_l 0 0 32 0 datain_l 0 0 32 0 +// Retrieval info: USED_PORT: dataout_h 0 0 32 0 OUTPUT NODEFVAL "dataout_h[31..0]" +// Retrieval info: CONNECT: dataout_h 0 0 32 0 @dataout_h 0 0 32 0 +// Retrieval info: USED_PORT: dataout_l 0 0 32 0 OUTPUT NODEFVAL "dataout_l[31..0]" +// Retrieval info: CONNECT: dataout_l 0 0 32 0 @dataout_l 0 0 32 0 +// Retrieval info: USED_PORT: inclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL "inclock" +// Retrieval info: CONNECT: @inclock 0 0 0 0 inclock 0 0 0 0 +// Retrieval info: USED_PORT: oe 0 0 0 0 INPUT NODEFVAL "oe" +// Retrieval info: CONNECT: @oe 0 0 0 0 oe 0 0 0 0 +// Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL "outclock" +// Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +// Retrieval info: USED_PORT: padio 0 0 32 0 BIDIR NODEFVAL "padio[31..0]" +// Retrieval info: CONNECT: padio 0 0 32 0 @padio 0 0 32 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.v TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.qip TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.bsf FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0_inst.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0_bb.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.inc FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.cmp FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.ppf TRUE FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out0.ppf b/FPGA_by_Gregory_Estrade/altip/altddio_out0.ppf new file mode 100644 index 0000000..3f3cfb5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out0.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out0.qip b/FPGA_by_Gregory_Estrade/altip/altddio_out0.qip new file mode 100644 index 0000000..3c25798 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out0.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altddio_out0.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out0.v b/FPGA_by_Gregory_Estrade/altip/altddio_out0.v new file mode 100644 index 0000000..fa4433e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out0.v @@ -0,0 +1,107 @@ +// megafunction wizard: %ALTDDIO_OUT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: ALTDDIO_OUT + +// ============================================================ +// File Name: altddio_out0.v +// Megafunction Name(s): +// ALTDDIO_OUT +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altddio_out0 ( + datain_h, + datain_l, + outclock, + dataout); + + input [3:0] datain_h; + input [3:0] datain_l; + input outclock; + output [3:0] dataout; + + wire [3:0] sub_wire0; + wire [3:0] dataout = sub_wire0[3:0]; + + altddio_out ALTDDIO_OUT_component ( + .datain_h (datain_h), + .datain_l (datain_l), + .outclock (outclock), + .dataout (sub_wire0), + .aclr (1'b0), + .aset (1'b0), + .oe (1'b1), + .oe_out (), + .outclocken (1'b1), + .sclr (1'b0), + .sset (1'b0)); + defparam + ALTDDIO_OUT_component.extend_oe_disable = "OFF", + ALTDDIO_OUT_component.intended_device_family = "Cyclone III", + ALTDDIO_OUT_component.invert_output = "ON", + ALTDDIO_OUT_component.lpm_hint = "UNUSED", + ALTDDIO_OUT_component.lpm_type = "altddio_out", + ALTDDIO_OUT_component.oe_reg = "UNREGISTERED", + ALTDDIO_OUT_component.power_up_high = "ON", + ALTDDIO_OUT_component.width = 4; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "OFF" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: INVERT_OUTPUT STRING "ON" +// Retrieval info: CONSTANT: LPM_HINT STRING "UNUSED" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +// Retrieval info: CONSTANT: OE_REG STRING "UNREGISTERED" +// Retrieval info: CONSTANT: POWER_UP_HIGH STRING "ON" +// Retrieval info: CONSTANT: WIDTH NUMERIC "4" +// Retrieval info: USED_PORT: datain_h 0 0 4 0 INPUT NODEFVAL "datain_h[3..0]" +// Retrieval info: CONNECT: @datain_h 0 0 4 0 datain_h 0 0 4 0 +// Retrieval info: USED_PORT: datain_l 0 0 4 0 INPUT NODEFVAL "datain_l[3..0]" +// Retrieval info: CONNECT: @datain_l 0 0 4 0 datain_l 0 0 4 0 +// Retrieval info: USED_PORT: dataout 0 0 4 0 OUTPUT NODEFVAL "dataout[3..0]" +// Retrieval info: CONNECT: dataout 0 0 4 0 @dataout 0 0 4 0 +// Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL "outclock" +// Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.v TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.qip TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.bsf FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0_inst.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0_bb.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.inc FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.cmp FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.ppf TRUE FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out1.ppf b/FPGA_by_Gregory_Estrade/altip/altddio_out1.ppf new file mode 100644 index 0000000..d4347fa --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out1.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out1.qip b/FPGA_by_Gregory_Estrade/altip/altddio_out1.qip new file mode 100644 index 0000000..0e4a747 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out1.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altddio_out1.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out1.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out1.v b/FPGA_by_Gregory_Estrade/altip/altddio_out1.v new file mode 100644 index 0000000..d81816a --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out1.v @@ -0,0 +1,107 @@ +// megafunction wizard: %ALTDDIO_OUT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: ALTDDIO_OUT + +// ============================================================ +// File Name: altddio_out1.v +// Megafunction Name(s): +// ALTDDIO_OUT +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altddio_out1 ( + datain_h, + datain_l, + outclock, + dataout); + + input [0:0] datain_h; + input [0:0] datain_l; + input outclock; + output [0:0] dataout; + + wire [0:0] sub_wire0; + wire [0:0] dataout = sub_wire0[0:0]; + + altddio_out ALTDDIO_OUT_component ( + .datain_h (datain_h), + .datain_l (datain_l), + .outclock (outclock), + .dataout (sub_wire0), + .aclr (1'b0), + .aset (1'b0), + .oe (1'b1), + .oe_out (), + .outclocken (1'b1), + .sclr (1'b0), + .sset (1'b0)); + defparam + ALTDDIO_OUT_component.extend_oe_disable = "OFF", + ALTDDIO_OUT_component.intended_device_family = "Cyclone III", + ALTDDIO_OUT_component.invert_output = "OFF", + ALTDDIO_OUT_component.lpm_hint = "UNUSED", + ALTDDIO_OUT_component.lpm_type = "altddio_out", + ALTDDIO_OUT_component.oe_reg = "UNREGISTERED", + ALTDDIO_OUT_component.power_up_high = "OFF", + ALTDDIO_OUT_component.width = 1; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "OFF" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +// Retrieval info: CONSTANT: LPM_HINT STRING "UNUSED" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +// Retrieval info: CONSTANT: OE_REG STRING "UNREGISTERED" +// Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +// Retrieval info: CONSTANT: WIDTH NUMERIC "1" +// Retrieval info: USED_PORT: datain_h 0 0 1 0 INPUT NODEFVAL "datain_h[0..0]" +// Retrieval info: CONNECT: @datain_h 0 0 1 0 datain_h 0 0 1 0 +// Retrieval info: USED_PORT: datain_l 0 0 1 0 INPUT NODEFVAL "datain_l[0..0]" +// Retrieval info: CONNECT: @datain_l 0 0 1 0 datain_l 0 0 1 0 +// Retrieval info: USED_PORT: dataout 0 0 1 0 OUTPUT NODEFVAL "dataout[0..0]" +// Retrieval info: CONNECT: dataout 0 0 1 0 @dataout 0 0 1 0 +// Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL "outclock" +// Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.v TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.qip TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.bsf FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1_inst.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1_bb.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.inc FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.cmp FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.ppf TRUE FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out2.ppf b/FPGA_by_Gregory_Estrade/altip/altddio_out2.ppf new file mode 100644 index 0000000..93df472 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out2.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out2.qip b/FPGA_by_Gregory_Estrade/altip/altddio_out2.qip new file mode 100644 index 0000000..305e9bf --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out2.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altddio_out2.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out2.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out2.v b/FPGA_by_Gregory_Estrade/altip/altddio_out2.v new file mode 100644 index 0000000..1d64e5a --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out2.v @@ -0,0 +1,107 @@ +// megafunction wizard: %ALTDDIO_OUT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: ALTDDIO_OUT + +// ============================================================ +// File Name: altddio_out2.v +// Megafunction Name(s): +// ALTDDIO_OUT +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altddio_out2 ( + datain_h, + datain_l, + outclock, + dataout); + + input [23:0] datain_h; + input [23:0] datain_l; + input outclock; + output [23:0] dataout; + + wire [23:0] sub_wire0; + wire [23:0] dataout = sub_wire0[23:0]; + + altddio_out ALTDDIO_OUT_component ( + .datain_h (datain_h), + .datain_l (datain_l), + .outclock (outclock), + .dataout (sub_wire0), + .aclr (1'b0), + .aset (1'b0), + .oe (1'b1), + .oe_out (), + .outclocken (1'b1), + .sclr (1'b0), + .sset (1'b0)); + defparam + ALTDDIO_OUT_component.extend_oe_disable = "OFF", + ALTDDIO_OUT_component.intended_device_family = "Cyclone III", + ALTDDIO_OUT_component.invert_output = "OFF", + ALTDDIO_OUT_component.lpm_hint = "UNUSED", + ALTDDIO_OUT_component.lpm_type = "altddio_out", + ALTDDIO_OUT_component.oe_reg = "UNREGISTERED", + ALTDDIO_OUT_component.power_up_high = "OFF", + ALTDDIO_OUT_component.width = 24; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "OFF" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +// Retrieval info: CONSTANT: LPM_HINT STRING "UNUSED" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +// Retrieval info: CONSTANT: OE_REG STRING "UNREGISTERED" +// Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +// Retrieval info: CONSTANT: WIDTH NUMERIC "24" +// Retrieval info: USED_PORT: datain_h 0 0 24 0 INPUT NODEFVAL "datain_h[23..0]" +// Retrieval info: CONNECT: @datain_h 0 0 24 0 datain_h 0 0 24 0 +// Retrieval info: USED_PORT: datain_l 0 0 24 0 INPUT NODEFVAL "datain_l[23..0]" +// Retrieval info: CONNECT: @datain_l 0 0 24 0 datain_l 0 0 24 0 +// Retrieval info: USED_PORT: dataout 0 0 24 0 OUTPUT NODEFVAL "dataout[23..0]" +// Retrieval info: CONNECT: dataout 0 0 24 0 @dataout 0 0 24 0 +// Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL "outclock" +// Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.v TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.qip TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.bsf FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2_inst.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2_bb.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.inc FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.cmp FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.ppf TRUE FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out3.ppf b/FPGA_by_Gregory_Estrade/altip/altddio_out3.ppf new file mode 100644 index 0000000..546750f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out3.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out3.qip b/FPGA_by_Gregory_Estrade/altip/altddio_out3.qip new file mode 100644 index 0000000..353a2c4 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out3.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altddio_out3.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out3.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip/altddio_out3.v b/FPGA_by_Gregory_Estrade/altip/altddio_out3.v new file mode 100644 index 0000000..a2727a0 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altddio_out3.v @@ -0,0 +1,107 @@ +// megafunction wizard: %ALTDDIO_OUT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: ALTDDIO_OUT + +// ============================================================ +// File Name: altddio_out3.v +// Megafunction Name(s): +// ALTDDIO_OUT +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altddio_out3 ( + datain_h, + datain_l, + outclock, + dataout); + + input [0:0] datain_h; + input [0:0] datain_l; + input outclock; + output [0:0] dataout; + + wire [0:0] sub_wire0; + wire [0:0] dataout = sub_wire0[0:0]; + + altddio_out ALTDDIO_OUT_component ( + .datain_h (datain_h), + .datain_l (datain_l), + .outclock (outclock), + .dataout (sub_wire0), + .aclr (1'b0), + .aset (1'b0), + .oe (1'b1), + .oe_out (), + .outclocken (1'b1), + .sclr (1'b0), + .sset (1'b0)); + defparam + ALTDDIO_OUT_component.extend_oe_disable = "OFF", + ALTDDIO_OUT_component.intended_device_family = "Cyclone III", + ALTDDIO_OUT_component.invert_output = "OFF", + ALTDDIO_OUT_component.lpm_hint = "UNUSED", + ALTDDIO_OUT_component.lpm_type = "altddio_out", + ALTDDIO_OUT_component.oe_reg = "UNREGISTERED", + ALTDDIO_OUT_component.power_up_high = "OFF", + ALTDDIO_OUT_component.width = 1; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "OFF" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +// Retrieval info: CONSTANT: LPM_HINT STRING "UNUSED" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +// Retrieval info: CONSTANT: OE_REG STRING "UNREGISTERED" +// Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +// Retrieval info: CONSTANT: WIDTH NUMERIC "1" +// Retrieval info: USED_PORT: datain_h 0 0 1 0 INPUT NODEFVAL "datain_h[0..0]" +// Retrieval info: CONNECT: @datain_h 0 0 1 0 datain_h 0 0 1 0 +// Retrieval info: USED_PORT: datain_l 0 0 1 0 INPUT NODEFVAL "datain_l[0..0]" +// Retrieval info: CONNECT: @datain_l 0 0 1 0 datain_l 0 0 1 0 +// Retrieval info: USED_PORT: dataout 0 0 1 0 OUTPUT NODEFVAL "dataout[0..0]" +// Retrieval info: CONNECT: dataout 0 0 1 0 @dataout 0 0 1 0 +// Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL "outclock" +// Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.v TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.qip TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.bsf FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3_inst.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3_bb.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.inc FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.cmp FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.ppf TRUE FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altdpram0.qip b/FPGA_by_Gregory_Estrade/altip/altdpram0.qip new file mode 100644 index 0000000..3a8273f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altdpram0.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "RAM: 2-PORT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altdpram0.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/altdpram0.v b/FPGA_by_Gregory_Estrade/altip/altdpram0.v new file mode 100644 index 0000000..eaaa416 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altdpram0.v @@ -0,0 +1,244 @@ +// megafunction wizard: %RAM: 2-PORT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altsyncram + +// ============================================================ +// File Name: altdpram0.v +// Megafunction Name(s): +// altsyncram +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altdpram0 ( + address_a, + address_b, + clock_a, + clock_b, + data_a, + data_b, + wren_a, + wren_b, + q_a, + q_b); + + input [3:0] address_a; + input [3:0] address_b; + input clock_a; + input clock_b; + input [2:0] data_a; + input [2:0] data_b; + input wren_a; + input wren_b; + output [2:0] q_a; + output [2:0] q_b; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri1 clock_a; + tri0 wren_a; + tri0 wren_b; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire [2:0] sub_wire0; + wire [2:0] sub_wire1; + wire [2:0] q_a = sub_wire0[2:0]; + wire [2:0] q_b = sub_wire1[2:0]; + + altsyncram altsyncram_component ( + .clock0 (clock_a), + .wren_a (wren_a), + .address_b (address_b), + .clock1 (clock_b), + .data_b (data_b), + .wren_b (wren_b), + .address_a (address_a), + .data_a (data_a), + .q_a (sub_wire0), + .q_b (sub_wire1), + .aclr0 (1'b0), + .aclr1 (1'b0), + .addressstall_a (1'b0), + .addressstall_b (1'b0), + .byteena_a (1'b1), + .byteena_b (1'b1), + .clocken0 (1'b1), + .clocken1 (1'b1), + .clocken2 (1'b1), + .clocken3 (1'b1), + .eccstatus (), + .rden_a (1'b1), + .rden_b (1'b1)); + defparam + altsyncram_component.address_reg_b = "CLOCK1", + altsyncram_component.clock_enable_input_a = "BYPASS", + altsyncram_component.clock_enable_input_b = "BYPASS", + altsyncram_component.clock_enable_output_a = "BYPASS", + altsyncram_component.clock_enable_output_b = "BYPASS", + altsyncram_component.indata_reg_b = "CLOCK1", + altsyncram_component.intended_device_family = "Cyclone III", + altsyncram_component.lpm_type = "altsyncram", + altsyncram_component.numwords_a = 16, + altsyncram_component.numwords_b = 16, + altsyncram_component.operation_mode = "BIDIR_DUAL_PORT", + altsyncram_component.outdata_aclr_a = "NONE", + altsyncram_component.outdata_aclr_b = "NONE", + altsyncram_component.outdata_reg_a = "CLOCK0", + altsyncram_component.outdata_reg_b = "CLOCK1", + altsyncram_component.power_up_uninitialized = "FALSE", + altsyncram_component.read_during_write_mode_port_a = "OLD_DATA", + altsyncram_component.read_during_write_mode_port_b = "OLD_DATA", + altsyncram_component.widthad_a = 4, + altsyncram_component.widthad_b = 4, + altsyncram_component.width_a = 3, + altsyncram_component.width_b = 3, + altsyncram_component.width_byteena_a = 1, + altsyncram_component.width_byteena_b = 1, + altsyncram_component.wrcontrol_wraddress_reg_b = "CLOCK1"; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +// Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +// Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +// Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +// Retrieval info: PRIVATE: CLRdata NUMERIC "0" +// Retrieval info: PRIVATE: CLRq NUMERIC "0" +// Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +// Retrieval info: PRIVATE: CLRrren NUMERIC "0" +// Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +// Retrieval info: PRIVATE: CLRwren NUMERIC "0" +// Retrieval info: PRIVATE: Clock NUMERIC "5" +// Retrieval info: PRIVATE: Clock_A NUMERIC "0" +// Retrieval info: PRIVATE: Clock_B NUMERIC "0" +// Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +// Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +// Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +// Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +// Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +// Retrieval info: PRIVATE: MEMSIZE NUMERIC "48" +// Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +// Retrieval info: PRIVATE: MIFfilename STRING "" +// Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +// Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "1" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "1" +// Retrieval info: PRIVATE: REGdata NUMERIC "1" +// Retrieval info: PRIVATE: REGq NUMERIC "1" +// Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +// Retrieval info: PRIVATE: REGrren NUMERIC "0" +// Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +// Retrieval info: PRIVATE: REGwren NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +// Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +// Retrieval info: PRIVATE: VarWidth NUMERIC "0" +// Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "3" +// Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "3" +// Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "3" +// Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "3" +// Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: enable NUMERIC "0" +// Retrieval info: PRIVATE: rden NUMERIC "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +// Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +// Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "16" +// Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "16" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +// Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +// Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +// Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +// Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "OLD_DATA" +// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "OLD_DATA" +// Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "4" +// Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "4" +// Retrieval info: CONSTANT: WIDTH_A NUMERIC "3" +// Retrieval info: CONSTANT: WIDTH_B NUMERIC "3" +// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +// Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +// Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK1" +// Retrieval info: USED_PORT: address_a 0 0 4 0 INPUT NODEFVAL "address_a[3..0]" +// Retrieval info: USED_PORT: address_b 0 0 4 0 INPUT NODEFVAL "address_b[3..0]" +// Retrieval info: USED_PORT: clock_a 0 0 0 0 INPUT VCC "clock_a" +// Retrieval info: USED_PORT: clock_b 0 0 0 0 INPUT NODEFVAL "clock_b" +// Retrieval info: USED_PORT: data_a 0 0 3 0 INPUT NODEFVAL "data_a[2..0]" +// Retrieval info: USED_PORT: data_b 0 0 3 0 INPUT NODEFVAL "data_b[2..0]" +// Retrieval info: USED_PORT: q_a 0 0 3 0 OUTPUT NODEFVAL "q_a[2..0]" +// Retrieval info: USED_PORT: q_b 0 0 3 0 OUTPUT NODEFVAL "q_b[2..0]" +// Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT GND "wren_a" +// Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT GND "wren_b" +// Retrieval info: CONNECT: @address_a 0 0 4 0 address_a 0 0 4 0 +// Retrieval info: CONNECT: @address_b 0 0 4 0 address_b 0 0 4 0 +// Retrieval info: CONNECT: @clock0 0 0 0 0 clock_a 0 0 0 0 +// Retrieval info: CONNECT: @clock1 0 0 0 0 clock_b 0 0 0 0 +// Retrieval info: CONNECT: @data_a 0 0 3 0 data_a 0 0 3 0 +// Retrieval info: CONNECT: @data_b 0 0 3 0 data_b 0 0 3 0 +// Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +// Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +// Retrieval info: CONNECT: q_a 0 0 3 0 @q_a 0 0 3 0 +// Retrieval info: CONNECT: q_b 0 0 3 0 @q_b 0 0 3 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altdpram1.qip b/FPGA_by_Gregory_Estrade/altip/altdpram1.qip new file mode 100644 index 0000000..ab8b215 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altdpram1.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "RAM: 2-PORT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altdpram1.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/altdpram1.v b/FPGA_by_Gregory_Estrade/altip/altdpram1.v new file mode 100644 index 0000000..b31842f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altdpram1.v @@ -0,0 +1,244 @@ +// megafunction wizard: %RAM: 2-PORT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altsyncram + +// ============================================================ +// File Name: altdpram1.v +// Megafunction Name(s): +// altsyncram +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altdpram1 ( + address_a, + address_b, + clock_a, + clock_b, + data_a, + data_b, + wren_a, + wren_b, + q_a, + q_b); + + input [7:0] address_a; + input [7:0] address_b; + input clock_a; + input clock_b; + input [5:0] data_a; + input [5:0] data_b; + input wren_a; + input wren_b; + output [5:0] q_a; + output [5:0] q_b; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri1 clock_a; + tri0 wren_a; + tri0 wren_b; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire [5:0] sub_wire0; + wire [5:0] sub_wire1; + wire [5:0] q_a = sub_wire0[5:0]; + wire [5:0] q_b = sub_wire1[5:0]; + + altsyncram altsyncram_component ( + .clock0 (clock_a), + .wren_a (wren_a), + .address_b (address_b), + .clock1 (clock_b), + .data_b (data_b), + .wren_b (wren_b), + .address_a (address_a), + .data_a (data_a), + .q_a (sub_wire0), + .q_b (sub_wire1), + .aclr0 (1'b0), + .aclr1 (1'b0), + .addressstall_a (1'b0), + .addressstall_b (1'b0), + .byteena_a (1'b1), + .byteena_b (1'b1), + .clocken0 (1'b1), + .clocken1 (1'b1), + .clocken2 (1'b1), + .clocken3 (1'b1), + .eccstatus (), + .rden_a (1'b1), + .rden_b (1'b1)); + defparam + altsyncram_component.address_reg_b = "CLOCK1", + altsyncram_component.clock_enable_input_a = "BYPASS", + altsyncram_component.clock_enable_input_b = "BYPASS", + altsyncram_component.clock_enable_output_a = "BYPASS", + altsyncram_component.clock_enable_output_b = "BYPASS", + altsyncram_component.indata_reg_b = "CLOCK1", + altsyncram_component.intended_device_family = "Cyclone III", + altsyncram_component.lpm_type = "altsyncram", + altsyncram_component.numwords_a = 256, + altsyncram_component.numwords_b = 256, + altsyncram_component.operation_mode = "BIDIR_DUAL_PORT", + altsyncram_component.outdata_aclr_a = "NONE", + altsyncram_component.outdata_aclr_b = "NONE", + altsyncram_component.outdata_reg_a = "CLOCK0", + altsyncram_component.outdata_reg_b = "CLOCK1", + altsyncram_component.power_up_uninitialized = "FALSE", + altsyncram_component.read_during_write_mode_port_a = "OLD_DATA", + altsyncram_component.read_during_write_mode_port_b = "OLD_DATA", + altsyncram_component.widthad_a = 8, + altsyncram_component.widthad_b = 8, + altsyncram_component.width_a = 6, + altsyncram_component.width_b = 6, + altsyncram_component.width_byteena_a = 1, + altsyncram_component.width_byteena_b = 1, + altsyncram_component.wrcontrol_wraddress_reg_b = "CLOCK1"; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +// Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +// Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +// Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +// Retrieval info: PRIVATE: CLRdata NUMERIC "0" +// Retrieval info: PRIVATE: CLRq NUMERIC "0" +// Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +// Retrieval info: PRIVATE: CLRrren NUMERIC "0" +// Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +// Retrieval info: PRIVATE: CLRwren NUMERIC "0" +// Retrieval info: PRIVATE: Clock NUMERIC "5" +// Retrieval info: PRIVATE: Clock_A NUMERIC "0" +// Retrieval info: PRIVATE: Clock_B NUMERIC "0" +// Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +// Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +// Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +// Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +// Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +// Retrieval info: PRIVATE: MEMSIZE NUMERIC "1536" +// Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +// Retrieval info: PRIVATE: MIFfilename STRING "" +// Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +// Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "1" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "1" +// Retrieval info: PRIVATE: REGdata NUMERIC "1" +// Retrieval info: PRIVATE: REGq NUMERIC "1" +// Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +// Retrieval info: PRIVATE: REGrren NUMERIC "0" +// Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +// Retrieval info: PRIVATE: REGwren NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +// Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +// Retrieval info: PRIVATE: VarWidth NUMERIC "0" +// Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "6" +// Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "6" +// Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "6" +// Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "6" +// Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: enable NUMERIC "0" +// Retrieval info: PRIVATE: rden NUMERIC "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +// Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +// Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "256" +// Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "256" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +// Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +// Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +// Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +// Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "OLD_DATA" +// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "OLD_DATA" +// Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "8" +// Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "8" +// Retrieval info: CONSTANT: WIDTH_A NUMERIC "6" +// Retrieval info: CONSTANT: WIDTH_B NUMERIC "6" +// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +// Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +// Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK1" +// Retrieval info: USED_PORT: address_a 0 0 8 0 INPUT NODEFVAL "address_a[7..0]" +// Retrieval info: USED_PORT: address_b 0 0 8 0 INPUT NODEFVAL "address_b[7..0]" +// Retrieval info: USED_PORT: clock_a 0 0 0 0 INPUT VCC "clock_a" +// Retrieval info: USED_PORT: clock_b 0 0 0 0 INPUT NODEFVAL "clock_b" +// Retrieval info: USED_PORT: data_a 0 0 6 0 INPUT NODEFVAL "data_a[5..0]" +// Retrieval info: USED_PORT: data_b 0 0 6 0 INPUT NODEFVAL "data_b[5..0]" +// Retrieval info: USED_PORT: q_a 0 0 6 0 OUTPUT NODEFVAL "q_a[5..0]" +// Retrieval info: USED_PORT: q_b 0 0 6 0 OUTPUT NODEFVAL "q_b[5..0]" +// Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT GND "wren_a" +// Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT GND "wren_b" +// Retrieval info: CONNECT: @address_a 0 0 8 0 address_a 0 0 8 0 +// Retrieval info: CONNECT: @address_b 0 0 8 0 address_b 0 0 8 0 +// Retrieval info: CONNECT: @clock0 0 0 0 0 clock_a 0 0 0 0 +// Retrieval info: CONNECT: @clock1 0 0 0 0 clock_b 0 0 0 0 +// Retrieval info: CONNECT: @data_a 0 0 6 0 data_a 0 0 6 0 +// Retrieval info: CONNECT: @data_b 0 0 6 0 data_b 0 0 6 0 +// Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +// Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +// Retrieval info: CONNECT: q_a 0 0 6 0 @q_a 0 0 6 0 +// Retrieval info: CONNECT: q_b 0 0 6 0 @q_b 0 0 6 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altdpram2.qip b/FPGA_by_Gregory_Estrade/altip/altdpram2.qip new file mode 100644 index 0000000..3a836f6 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altdpram2.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "RAM: 2-PORT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altdpram2.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/altdpram2.v b/FPGA_by_Gregory_Estrade/altip/altdpram2.v new file mode 100644 index 0000000..3c2d6d8 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altdpram2.v @@ -0,0 +1,244 @@ +// megafunction wizard: %RAM: 2-PORT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altsyncram + +// ============================================================ +// File Name: altdpram2.v +// Megafunction Name(s): +// altsyncram +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altdpram2 ( + address_a, + address_b, + clock_a, + clock_b, + data_a, + data_b, + wren_a, + wren_b, + q_a, + q_b); + + input [7:0] address_a; + input [7:0] address_b; + input clock_a; + input clock_b; + input [7:0] data_a; + input [7:0] data_b; + input wren_a; + input wren_b; + output [7:0] q_a; + output [7:0] q_b; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri1 clock_a; + tri0 wren_a; + tri0 wren_b; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire [7:0] sub_wire0; + wire [7:0] sub_wire1; + wire [7:0] q_a = sub_wire0[7:0]; + wire [7:0] q_b = sub_wire1[7:0]; + + altsyncram altsyncram_component ( + .clock0 (clock_a), + .wren_a (wren_a), + .address_b (address_b), + .clock1 (clock_b), + .data_b (data_b), + .wren_b (wren_b), + .address_a (address_a), + .data_a (data_a), + .q_a (sub_wire0), + .q_b (sub_wire1), + .aclr0 (1'b0), + .aclr1 (1'b0), + .addressstall_a (1'b0), + .addressstall_b (1'b0), + .byteena_a (1'b1), + .byteena_b (1'b1), + .clocken0 (1'b1), + .clocken1 (1'b1), + .clocken2 (1'b1), + .clocken3 (1'b1), + .eccstatus (), + .rden_a (1'b1), + .rden_b (1'b1)); + defparam + altsyncram_component.address_reg_b = "CLOCK1", + altsyncram_component.clock_enable_input_a = "BYPASS", + altsyncram_component.clock_enable_input_b = "BYPASS", + altsyncram_component.clock_enable_output_a = "BYPASS", + altsyncram_component.clock_enable_output_b = "BYPASS", + altsyncram_component.indata_reg_b = "CLOCK1", + altsyncram_component.intended_device_family = "Cyclone III", + altsyncram_component.lpm_type = "altsyncram", + altsyncram_component.numwords_a = 256, + altsyncram_component.numwords_b = 256, + altsyncram_component.operation_mode = "BIDIR_DUAL_PORT", + altsyncram_component.outdata_aclr_a = "NONE", + altsyncram_component.outdata_aclr_b = "NONE", + altsyncram_component.outdata_reg_a = "CLOCK0", + altsyncram_component.outdata_reg_b = "CLOCK1", + altsyncram_component.power_up_uninitialized = "FALSE", + altsyncram_component.read_during_write_mode_port_a = "OLD_DATA", + altsyncram_component.read_during_write_mode_port_b = "OLD_DATA", + altsyncram_component.widthad_a = 8, + altsyncram_component.widthad_b = 8, + altsyncram_component.width_a = 8, + altsyncram_component.width_b = 8, + altsyncram_component.width_byteena_a = 1, + altsyncram_component.width_byteena_b = 1, + altsyncram_component.wrcontrol_wraddress_reg_b = "CLOCK1"; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +// Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +// Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +// Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +// Retrieval info: PRIVATE: CLRdata NUMERIC "0" +// Retrieval info: PRIVATE: CLRq NUMERIC "0" +// Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +// Retrieval info: PRIVATE: CLRrren NUMERIC "0" +// Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +// Retrieval info: PRIVATE: CLRwren NUMERIC "0" +// Retrieval info: PRIVATE: Clock NUMERIC "5" +// Retrieval info: PRIVATE: Clock_A NUMERIC "0" +// Retrieval info: PRIVATE: Clock_B NUMERIC "0" +// Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +// Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +// Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +// Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +// Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +// Retrieval info: PRIVATE: MEMSIZE NUMERIC "2048" +// Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +// Retrieval info: PRIVATE: MIFfilename STRING "" +// Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +// Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "1" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "1" +// Retrieval info: PRIVATE: REGdata NUMERIC "1" +// Retrieval info: PRIVATE: REGq NUMERIC "1" +// Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +// Retrieval info: PRIVATE: REGrren NUMERIC "0" +// Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +// Retrieval info: PRIVATE: REGwren NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +// Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +// Retrieval info: PRIVATE: VarWidth NUMERIC "0" +// Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "8" +// Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "8" +// Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "8" +// Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "8" +// Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: enable NUMERIC "0" +// Retrieval info: PRIVATE: rden NUMERIC "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +// Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +// Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "256" +// Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "256" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +// Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +// Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +// Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +// Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "OLD_DATA" +// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "OLD_DATA" +// Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "8" +// Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "8" +// Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" +// Retrieval info: CONSTANT: WIDTH_B NUMERIC "8" +// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +// Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +// Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK1" +// Retrieval info: USED_PORT: address_a 0 0 8 0 INPUT NODEFVAL "address_a[7..0]" +// Retrieval info: USED_PORT: address_b 0 0 8 0 INPUT NODEFVAL "address_b[7..0]" +// Retrieval info: USED_PORT: clock_a 0 0 0 0 INPUT VCC "clock_a" +// Retrieval info: USED_PORT: clock_b 0 0 0 0 INPUT NODEFVAL "clock_b" +// Retrieval info: USED_PORT: data_a 0 0 8 0 INPUT NODEFVAL "data_a[7..0]" +// Retrieval info: USED_PORT: data_b 0 0 8 0 INPUT NODEFVAL "data_b[7..0]" +// Retrieval info: USED_PORT: q_a 0 0 8 0 OUTPUT NODEFVAL "q_a[7..0]" +// Retrieval info: USED_PORT: q_b 0 0 8 0 OUTPUT NODEFVAL "q_b[7..0]" +// Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT GND "wren_a" +// Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT GND "wren_b" +// Retrieval info: CONNECT: @address_a 0 0 8 0 address_a 0 0 8 0 +// Retrieval info: CONNECT: @address_b 0 0 8 0 address_b 0 0 8 0 +// Retrieval info: CONNECT: @clock0 0 0 0 0 clock_a 0 0 0 0 +// Retrieval info: CONNECT: @clock1 0 0 0 0 clock_b 0 0 0 0 +// Retrieval info: CONNECT: @data_a 0 0 8 0 data_a 0 0 8 0 +// Retrieval info: CONNECT: @data_b 0 0 8 0 data_b 0 0 8 0 +// Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +// Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +// Retrieval info: CONNECT: q_a 0 0 8 0 @q_a 0 0 8 0 +// Retrieval info: CONNECT: q_b 0 0 8 0 @q_b 0 0 8 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altpll0.ppf b/FPGA_by_Gregory_Estrade/altip/altpll0.ppf new file mode 100644 index 0000000..521a742 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll0.ppf @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip/altpll0.qip b/FPGA_by_Gregory_Estrade/altip/altpll0.qip new file mode 100644 index 0000000..94de7c6 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll0.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altpll0.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll0.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip/altpll0.v b/FPGA_by_Gregory_Estrade/altip/altpll0.v new file mode 100644 index 0000000..ef151be --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll0.v @@ -0,0 +1,411 @@ +// megafunction wizard: %ALTPLL% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altpll + +// ============================================================ +// File Name: altpll0.v +// Megafunction Name(s): +// altpll +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altpll0 ( + inclk0, + c0, + c1, + c2, + c3, + c4); + + input inclk0; + output c0; + output c1; + output c2; + output c3; + output c4; + + wire [4:0] sub_wire0; + wire [0:0] sub_wire8 = 1'h0; + wire [4:4] sub_wire5 = sub_wire0[4:4]; + wire [2:2] sub_wire4 = sub_wire0[2:2]; + wire [0:0] sub_wire3 = sub_wire0[0:0]; + wire [3:3] sub_wire2 = sub_wire0[3:3]; + wire [1:1] sub_wire1 = sub_wire0[1:1]; + wire c1 = sub_wire1; + wire c3 = sub_wire2; + wire c0 = sub_wire3; + wire c2 = sub_wire4; + wire c4 = sub_wire5; + wire sub_wire6 = inclk0; + wire [1:0] sub_wire7 = {sub_wire8, sub_wire6}; + + altpll altpll_component ( + .inclk (sub_wire7), + .clk (sub_wire0), + .activeclock (), + .areset (1'b0), + .clkbad (), + .clkena ({6{1'b1}}), + .clkloss (), + .clkswitch (1'b0), + .configupdate (1'b0), + .enable0 (), + .enable1 (), + .extclk (), + .extclkena ({4{1'b1}}), + .fbin (1'b1), + .fbmimicbidir (), + .fbout (), + .fref (), + .icdrclk (), + .locked (), + .pfdena (1'b1), + .phasecounterselect ({4{1'b1}}), + .phasedone (), + .phasestep (1'b1), + .phaseupdown (1'b1), + .pllena (1'b1), + .scanaclr (1'b0), + .scanclk (1'b0), + .scanclkena (1'b1), + .scandata (1'b0), + .scandataout (), + .scandone (), + .scanread (1'b0), + .scanwrite (1'b0), + .sclkout0 (), + .sclkout1 (), + .vcooverrange (), + .vcounderrange ()); + defparam + altpll_component.bandwidth_type = "AUTO", + altpll_component.clk0_divide_by = 11, + altpll_component.clk0_duty_cycle = 50, + altpll_component.clk0_multiply_by = 16, + altpll_component.clk0_phase_shift = "0", + altpll_component.clk1_divide_by = 11, + altpll_component.clk1_duty_cycle = 50, + altpll_component.clk1_multiply_by = 50, + altpll_component.clk1_phase_shift = "0", + altpll_component.clk2_divide_by = 11, + altpll_component.clk2_duty_cycle = 50, + altpll_component.clk2_multiply_by = 40, + altpll_component.clk2_phase_shift = "0", + altpll_component.clk3_divide_by = 33, + altpll_component.clk3_duty_cycle = 50, + altpll_component.clk3_multiply_by = 109, + altpll_component.clk3_phase_shift = "0", + altpll_component.clk4_divide_by = 39, + altpll_component.clk4_duty_cycle = 50, + altpll_component.clk4_multiply_by = 109, + altpll_component.clk4_phase_shift = "0", + altpll_component.compensate_clock = "CLK0", + altpll_component.inclk0_input_frequency = 30303, + altpll_component.intended_device_family = "Cyclone III", + altpll_component.lpm_type = "altpll", + altpll_component.operation_mode = "NORMAL", + altpll_component.pll_type = "AUTO", + altpll_component.port_activeclock = "PORT_UNUSED", + altpll_component.port_areset = "PORT_UNUSED", + altpll_component.port_clkbad0 = "PORT_UNUSED", + altpll_component.port_clkbad1 = "PORT_UNUSED", + altpll_component.port_clkloss = "PORT_UNUSED", + altpll_component.port_clkswitch = "PORT_UNUSED", + altpll_component.port_configupdate = "PORT_UNUSED", + altpll_component.port_fbin = "PORT_UNUSED", + altpll_component.port_inclk0 = "PORT_USED", + altpll_component.port_inclk1 = "PORT_UNUSED", + altpll_component.port_locked = "PORT_UNUSED", + altpll_component.port_pfdena = "PORT_UNUSED", + altpll_component.port_phasecounterselect = "PORT_UNUSED", + altpll_component.port_phasedone = "PORT_UNUSED", + altpll_component.port_phasestep = "PORT_UNUSED", + altpll_component.port_phaseupdown = "PORT_UNUSED", + altpll_component.port_pllena = "PORT_UNUSED", + altpll_component.port_scanaclr = "PORT_UNUSED", + altpll_component.port_scanclk = "PORT_UNUSED", + altpll_component.port_scanclkena = "PORT_UNUSED", + altpll_component.port_scandata = "PORT_UNUSED", + altpll_component.port_scandataout = "PORT_UNUSED", + altpll_component.port_scandone = "PORT_UNUSED", + altpll_component.port_scanread = "PORT_UNUSED", + altpll_component.port_scanwrite = "PORT_UNUSED", + altpll_component.port_clk0 = "PORT_USED", + altpll_component.port_clk1 = "PORT_USED", + altpll_component.port_clk2 = "PORT_USED", + altpll_component.port_clk3 = "PORT_USED", + altpll_component.port_clk4 = "PORT_USED", + altpll_component.port_clk5 = "PORT_UNUSED", + altpll_component.port_clkena0 = "PORT_UNUSED", + altpll_component.port_clkena1 = "PORT_UNUSED", + altpll_component.port_clkena2 = "PORT_UNUSED", + altpll_component.port_clkena3 = "PORT_UNUSED", + altpll_component.port_clkena4 = "PORT_UNUSED", + altpll_component.port_clkena5 = "PORT_UNUSED", + altpll_component.port_extclk0 = "PORT_UNUSED", + altpll_component.port_extclk1 = "PORT_UNUSED", + altpll_component.port_extclk2 = "PORT_UNUSED", + altpll_component.port_extclk3 = "PORT_UNUSED", + altpll_component.width_clock = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "75" +// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "33" +// Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "36" +// Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "39" +// Retrieval info: PRIVATE: DIV_FACTOR4 NUMERIC "39" +// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE4 STRING "50.00000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "48.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "150.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "120.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "109.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE4 STRING "92.230766" +// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "0" +// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT4 STRING "ps" +// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK4 STRING "0" +// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "109" +// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "109" +// Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "109" +// Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "109" +// Retrieval info: PRIVATE: MULT_FACTOR4 NUMERIC "109" +// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "48.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "150.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "120.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "109.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ4 STRING "92.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "1" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "1" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE4 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT4 STRING "MHz" +// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT4 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "ps" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "ps" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "ps" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT4 STRING "ps" +// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +// Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll0.mif" +// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +// Retrieval info: PRIVATE: SPREAD_USE STRING "0" +// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK4 STRING "1" +// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_CLK0 STRING "1" +// Retrieval info: PRIVATE: USE_CLK1 STRING "1" +// Retrieval info: PRIVATE: USE_CLK2 STRING "1" +// Retrieval info: PRIVATE: USE_CLK3 STRING "1" +// Retrieval info: PRIVATE: USE_CLK4 STRING "1" +// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA4 STRING "0" +// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "11" +// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "16" +// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "11" +// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "50" +// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "11" +// Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "40" +// Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "33" +// Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "109" +// Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK4_DIVIDE_BY NUMERIC "39" +// Retrieval info: CONSTANT: CLK4_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK4_MULTIPLY_BY NUMERIC "109" +// Retrieval info: CONSTANT: CLK4_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +// Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +// Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +// Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +// Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +// Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +// Retrieval info: USED_PORT: c4 0 0 0 0 OUTPUT_CLK_EXT VCC "c4" +// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +// Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +// Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +// Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +// Retrieval info: CONNECT: c4 0 0 0 0 @clk 0 0 1 4 +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.ppf TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll0_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll0_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altpll1.ppf b/FPGA_by_Gregory_Estrade/altip/altpll1.ppf new file mode 100644 index 0000000..0f38a28 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll1.ppf @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip/altpll1.qip b/FPGA_by_Gregory_Estrade/altip/altpll1.qip new file mode 100644 index 0000000..09836cc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll1.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altpll1.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll1.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip/altpll1.v b/FPGA_by_Gregory_Estrade/altip/altpll1.v new file mode 100644 index 0000000..7d7d4fa --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll1.v @@ -0,0 +1,363 @@ +// megafunction wizard: %ALTPLL% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altpll + +// ============================================================ +// File Name: altpll1.v +// Megafunction Name(s): +// altpll +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altpll1 ( + inclk0, + c0, + c1, + c2, + locked); + + input inclk0; + output c0; + output c1; + output c2; + output locked; + + wire [4:0] sub_wire0; + wire sub_wire2; + wire [0:0] sub_wire7 = 1'h0; + wire [2:2] sub_wire4 = sub_wire0[2:2]; + wire [0:0] sub_wire3 = sub_wire0[0:0]; + wire [1:1] sub_wire1 = sub_wire0[1:1]; + wire c1 = sub_wire1; + wire locked = sub_wire2; + wire c0 = sub_wire3; + wire c2 = sub_wire4; + wire sub_wire5 = inclk0; + wire [1:0] sub_wire6 = {sub_wire7, sub_wire5}; + + altpll altpll_component ( + .inclk (sub_wire6), + .clk (sub_wire0), + .locked (sub_wire2), + .activeclock (), + .areset (1'b0), + .clkbad (), + .clkena ({6{1'b1}}), + .clkloss (), + .clkswitch (1'b0), + .configupdate (1'b0), + .enable0 (), + .enable1 (), + .extclk (), + .extclkena ({4{1'b1}}), + .fbin (1'b1), + .fbmimicbidir (), + .fbout (), + .fref (), + .icdrclk (), + .pfdena (1'b1), + .phasecounterselect ({4{1'b1}}), + .phasedone (), + .phasestep (1'b1), + .phaseupdown (1'b1), + .pllena (1'b1), + .scanaclr (1'b0), + .scanclk (1'b0), + .scanclkena (1'b1), + .scandata (1'b0), + .scandataout (), + .scandone (), + .scanread (1'b0), + .scanwrite (1'b0), + .sclkout0 (), + .sclkout1 (), + .vcooverrange (), + .vcounderrange ()); + defparam + altpll_component.bandwidth_type = "AUTO", + altpll_component.clk0_divide_by = 66, + altpll_component.clk0_duty_cycle = 50, + altpll_component.clk0_multiply_by = 1, + altpll_component.clk0_phase_shift = "0", + altpll_component.clk1_divide_by = 900, + altpll_component.clk1_duty_cycle = 50, + altpll_component.clk1_multiply_by = 67, + altpll_component.clk1_phase_shift = "0", + altpll_component.clk2_divide_by = 90, + altpll_component.clk2_duty_cycle = 50, + altpll_component.clk2_multiply_by = 67, + altpll_component.clk2_phase_shift = "0", + altpll_component.compensate_clock = "CLK0", + altpll_component.inclk0_input_frequency = 30303, + altpll_component.intended_device_family = "Cyclone III", + altpll_component.lpm_type = "altpll", + altpll_component.operation_mode = "SOURCE_SYNCHRONOUS", + altpll_component.pll_type = "AUTO", + altpll_component.port_activeclock = "PORT_UNUSED", + altpll_component.port_areset = "PORT_UNUSED", + altpll_component.port_clkbad0 = "PORT_UNUSED", + altpll_component.port_clkbad1 = "PORT_UNUSED", + altpll_component.port_clkloss = "PORT_UNUSED", + altpll_component.port_clkswitch = "PORT_UNUSED", + altpll_component.port_configupdate = "PORT_UNUSED", + altpll_component.port_fbin = "PORT_UNUSED", + altpll_component.port_inclk0 = "PORT_USED", + altpll_component.port_inclk1 = "PORT_UNUSED", + altpll_component.port_locked = "PORT_USED", + altpll_component.port_pfdena = "PORT_UNUSED", + altpll_component.port_phasecounterselect = "PORT_UNUSED", + altpll_component.port_phasedone = "PORT_UNUSED", + altpll_component.port_phasestep = "PORT_UNUSED", + altpll_component.port_phaseupdown = "PORT_UNUSED", + altpll_component.port_pllena = "PORT_UNUSED", + altpll_component.port_scanaclr = "PORT_UNUSED", + altpll_component.port_scanclk = "PORT_UNUSED", + altpll_component.port_scanclkena = "PORT_UNUSED", + altpll_component.port_scandata = "PORT_UNUSED", + altpll_component.port_scandataout = "PORT_UNUSED", + altpll_component.port_scandone = "PORT_UNUSED", + altpll_component.port_scanread = "PORT_UNUSED", + altpll_component.port_scanwrite = "PORT_UNUSED", + altpll_component.port_clk0 = "PORT_USED", + altpll_component.port_clk1 = "PORT_USED", + altpll_component.port_clk2 = "PORT_USED", + altpll_component.port_clk3 = "PORT_UNUSED", + altpll_component.port_clk4 = "PORT_UNUSED", + altpll_component.port_clk5 = "PORT_UNUSED", + altpll_component.port_clkena0 = "PORT_UNUSED", + altpll_component.port_clkena1 = "PORT_UNUSED", + altpll_component.port_clkena2 = "PORT_UNUSED", + altpll_component.port_clkena3 = "PORT_UNUSED", + altpll_component.port_clkena4 = "PORT_UNUSED", + altpll_component.port_clkena5 = "PORT_UNUSED", + altpll_component.port_extclk0 = "PORT_UNUSED", + altpll_component.port_extclk1 = "PORT_UNUSED", + altpll_component.port_extclk2 = "PORT_UNUSED", + altpll_component.port_extclk3 = "PORT_UNUSED", + altpll_component.self_reset_on_loss_lock = "OFF", + altpll_component.width_clock = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "90" +// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "900" +// Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "90" +// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "0.500000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "2.456667" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "24.566668" +// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" +// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "67" +// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "67" +// Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "67" +// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "0.50000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "2.45760000" +// Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "24.57600000" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" +// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +// Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll1.mif" +// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +// Retrieval info: PRIVATE: SPREAD_USE STRING "0" +// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_CLK0 STRING "1" +// Retrieval info: PRIVATE: USE_CLK1 STRING "1" +// Retrieval info: PRIVATE: USE_CLK2 STRING "1" +// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "66" +// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "1" +// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "900" +// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "67" +// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "90" +// Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "67" +// Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "SOURCE_SYNCHRONOUS" +// Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +// Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +// Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +// Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +// Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +// Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +// Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +// Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +// Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.ppf TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll1_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll1_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altpll2.ppf b/FPGA_by_Gregory_Estrade/altip/altpll2.ppf new file mode 100644 index 0000000..b1c71cc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll2.ppf @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip/altpll2.qip b/FPGA_by_Gregory_Estrade/altip/altpll2.qip new file mode 100644 index 0000000..1c3099d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll2.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altpll2.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll2.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip/altpll2.v b/FPGA_by_Gregory_Estrade/altip/altpll2.v new file mode 100644 index 0000000..102f619 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll2.v @@ -0,0 +1,411 @@ +// megafunction wizard: %ALTPLL% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altpll + +// ============================================================ +// File Name: altpll2.v +// Megafunction Name(s): +// altpll +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altpll2 ( + inclk0, + c0, + c1, + c2, + c3, + c4); + + input inclk0; + output c0; + output c1; + output c2; + output c3; + output c4; + + wire [4:0] sub_wire0; + wire [0:0] sub_wire8 = 1'h0; + wire [4:4] sub_wire5 = sub_wire0[4:4]; + wire [2:2] sub_wire4 = sub_wire0[2:2]; + wire [0:0] sub_wire3 = sub_wire0[0:0]; + wire [3:3] sub_wire2 = sub_wire0[3:3]; + wire [1:1] sub_wire1 = sub_wire0[1:1]; + wire c1 = sub_wire1; + wire c3 = sub_wire2; + wire c0 = sub_wire3; + wire c2 = sub_wire4; + wire c4 = sub_wire5; + wire sub_wire6 = inclk0; + wire [1:0] sub_wire7 = {sub_wire8, sub_wire6}; + + altpll altpll_component ( + .inclk (sub_wire7), + .clk (sub_wire0), + .activeclock (), + .areset (1'b0), + .clkbad (), + .clkena ({6{1'b1}}), + .clkloss (), + .clkswitch (1'b0), + .configupdate (1'b0), + .enable0 (), + .enable1 (), + .extclk (), + .extclkena ({4{1'b1}}), + .fbin (1'b1), + .fbmimicbidir (), + .fbout (), + .fref (), + .icdrclk (), + .locked (), + .pfdena (1'b1), + .phasecounterselect ({4{1'b1}}), + .phasedone (), + .phasestep (1'b1), + .phaseupdown (1'b1), + .pllena (1'b1), + .scanaclr (1'b0), + .scanclk (1'b0), + .scanclkena (1'b1), + .scandata (1'b0), + .scandataout (), + .scandone (), + .scanread (1'b0), + .scanwrite (1'b0), + .sclkout0 (), + .sclkout1 (), + .vcooverrange (), + .vcounderrange ()); + defparam + altpll_component.bandwidth_type = "AUTO", + altpll_component.clk0_divide_by = 1, + altpll_component.clk0_duty_cycle = 50, + altpll_component.clk0_multiply_by = 4, + altpll_component.clk0_phase_shift = "5051", + altpll_component.clk1_divide_by = 1, + altpll_component.clk1_duty_cycle = 50, + altpll_component.clk1_multiply_by = 4, + altpll_component.clk1_phase_shift = "0", + altpll_component.clk2_divide_by = 1, + altpll_component.clk2_duty_cycle = 50, + altpll_component.clk2_multiply_by = 4, + altpll_component.clk2_phase_shift = "3788", + altpll_component.clk3_divide_by = 1, + altpll_component.clk3_duty_cycle = 50, + altpll_component.clk3_multiply_by = 4, + altpll_component.clk3_phase_shift = "2210", + altpll_component.clk4_divide_by = 1, + altpll_component.clk4_duty_cycle = 50, + altpll_component.clk4_multiply_by = 2, + altpll_component.clk4_phase_shift = "11364", + altpll_component.compensate_clock = "CLK0", + altpll_component.inclk0_input_frequency = 30303, + altpll_component.intended_device_family = "Cyclone III", + altpll_component.lpm_type = "altpll", + altpll_component.operation_mode = "SOURCE_SYNCHRONOUS", + altpll_component.pll_type = "AUTO", + altpll_component.port_activeclock = "PORT_UNUSED", + altpll_component.port_areset = "PORT_UNUSED", + altpll_component.port_clkbad0 = "PORT_UNUSED", + altpll_component.port_clkbad1 = "PORT_UNUSED", + altpll_component.port_clkloss = "PORT_UNUSED", + altpll_component.port_clkswitch = "PORT_UNUSED", + altpll_component.port_configupdate = "PORT_UNUSED", + altpll_component.port_fbin = "PORT_UNUSED", + altpll_component.port_inclk0 = "PORT_USED", + altpll_component.port_inclk1 = "PORT_UNUSED", + altpll_component.port_locked = "PORT_UNUSED", + altpll_component.port_pfdena = "PORT_UNUSED", + altpll_component.port_phasecounterselect = "PORT_UNUSED", + altpll_component.port_phasedone = "PORT_UNUSED", + altpll_component.port_phasestep = "PORT_UNUSED", + altpll_component.port_phaseupdown = "PORT_UNUSED", + altpll_component.port_pllena = "PORT_UNUSED", + altpll_component.port_scanaclr = "PORT_UNUSED", + altpll_component.port_scanclk = "PORT_UNUSED", + altpll_component.port_scanclkena = "PORT_UNUSED", + altpll_component.port_scandata = "PORT_UNUSED", + altpll_component.port_scandataout = "PORT_UNUSED", + altpll_component.port_scandone = "PORT_UNUSED", + altpll_component.port_scanread = "PORT_UNUSED", + altpll_component.port_scanwrite = "PORT_UNUSED", + altpll_component.port_clk0 = "PORT_USED", + altpll_component.port_clk1 = "PORT_USED", + altpll_component.port_clk2 = "PORT_USED", + altpll_component.port_clk3 = "PORT_USED", + altpll_component.port_clk4 = "PORT_USED", + altpll_component.port_clk5 = "PORT_UNUSED", + altpll_component.port_clkena0 = "PORT_UNUSED", + altpll_component.port_clkena1 = "PORT_UNUSED", + altpll_component.port_clkena2 = "PORT_UNUSED", + altpll_component.port_clkena3 = "PORT_UNUSED", + altpll_component.port_clkena4 = "PORT_UNUSED", + altpll_component.port_clkena5 = "PORT_UNUSED", + altpll_component.port_extclk0 = "PORT_UNUSED", + altpll_component.port_extclk1 = "PORT_UNUSED", + altpll_component.port_extclk2 = "PORT_UNUSED", + altpll_component.port_extclk3 = "PORT_UNUSED", + altpll_component.width_clock = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1" +// Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "1" +// Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "1" +// Retrieval info: PRIVATE: DIV_FACTOR4 NUMERIC "1" +// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE4 STRING "50.00000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "132.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "132.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "132.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "132.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE4 STRING "66.000000" +// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "0" +// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT4 STRING "ps" +// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK4 STRING "0" +// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "4" +// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "4" +// Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "4" +// Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "4" +// Retrieval info: PRIVATE: MULT_FACTOR4 NUMERIC "2" +// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "133.33333000" +// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "133.33330000" +// Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "133.33330000" +// Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "133.33330000" +// Retrieval info: PRIVATE: OUTPUT_FREQ4 STRING "100.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE4 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT4 STRING "MHz" +// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "240.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "180.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "105.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT4 STRING "270.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT4 STRING "deg" +// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +// Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll2.mif" +// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +// Retrieval info: PRIVATE: SPREAD_USE STRING "0" +// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK4 STRING "1" +// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_CLK0 STRING "1" +// Retrieval info: PRIVATE: USE_CLK1 STRING "1" +// Retrieval info: PRIVATE: USE_CLK2 STRING "1" +// Retrieval info: PRIVATE: USE_CLK3 STRING "1" +// Retrieval info: PRIVATE: USE_CLK4 STRING "1" +// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA4 STRING "0" +// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "1" +// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "4" +// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "5051" +// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "1" +// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "4" +// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "1" +// Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "4" +// Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "3788" +// Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "1" +// Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "4" +// Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "2210" +// Retrieval info: CONSTANT: CLK4_DIVIDE_BY NUMERIC "1" +// Retrieval info: CONSTANT: CLK4_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK4_MULTIPLY_BY NUMERIC "2" +// Retrieval info: CONSTANT: CLK4_PHASE_SHIFT STRING "11364" +// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "SOURCE_SYNCHRONOUS" +// Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +// Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +// Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +// Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +// Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +// Retrieval info: USED_PORT: c4 0 0 0 0 OUTPUT_CLK_EXT VCC "c4" +// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +// Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +// Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +// Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +// Retrieval info: CONNECT: c4 0 0 0 0 @clk 0 0 1 4 +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.ppf TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll2_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll2_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altpll3.ppf b/FPGA_by_Gregory_Estrade/altip/altpll3.ppf new file mode 100644 index 0000000..2a7b695 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll3.ppf @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip/altpll3.qip b/FPGA_by_Gregory_Estrade/altip/altpll3.qip new file mode 100644 index 0000000..91048d1 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll3.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altpll3.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll3.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip/altpll3.v b/FPGA_by_Gregory_Estrade/altip/altpll3.v new file mode 100644 index 0000000..25a02a5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll3.v @@ -0,0 +1,383 @@ +// megafunction wizard: %ALTPLL% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altpll + +// ============================================================ +// File Name: altpll3.v +// Megafunction Name(s): +// altpll +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altpll3 ( + inclk0, + c0, + c1, + c2, + c3); + + input inclk0; + output c0; + output c1; + output c2; + output c3; + + wire [4:0] sub_wire0; + wire [0:0] sub_wire7 = 1'h0; + wire [2:2] sub_wire4 = sub_wire0[2:2]; + wire [0:0] sub_wire3 = sub_wire0[0:0]; + wire [3:3] sub_wire2 = sub_wire0[3:3]; + wire [1:1] sub_wire1 = sub_wire0[1:1]; + wire c1 = sub_wire1; + wire c3 = sub_wire2; + wire c0 = sub_wire3; + wire c2 = sub_wire4; + wire sub_wire5 = inclk0; + wire [1:0] sub_wire6 = {sub_wire7, sub_wire5}; + + altpll altpll_component ( + .inclk (sub_wire6), + .clk (sub_wire0), + .activeclock (), + .areset (1'b0), + .clkbad (), + .clkena ({6{1'b1}}), + .clkloss (), + .clkswitch (1'b0), + .configupdate (1'b0), + .enable0 (), + .enable1 (), + .extclk (), + .extclkena ({4{1'b1}}), + .fbin (1'b1), + .fbmimicbidir (), + .fbout (), + .fref (), + .icdrclk (), + .locked (), + .pfdena (1'b1), + .phasecounterselect ({4{1'b1}}), + .phasedone (), + .phasestep (1'b1), + .phaseupdown (1'b1), + .pllena (1'b1), + .scanaclr (1'b0), + .scanclk (1'b0), + .scanclkena (1'b1), + .scandata (1'b0), + .scandataout (), + .scandone (), + .scanread (1'b0), + .scanwrite (1'b0), + .sclkout0 (), + .sclkout1 (), + .vcooverrange (), + .vcounderrange ()); + defparam + altpll_component.bandwidth_type = "AUTO", + altpll_component.clk0_divide_by = 33, + altpll_component.clk0_duty_cycle = 50, + altpll_component.clk0_multiply_by = 2, + altpll_component.clk0_phase_shift = "0", + altpll_component.clk1_divide_by = 33, + altpll_component.clk1_duty_cycle = 50, + altpll_component.clk1_multiply_by = 16, + altpll_component.clk1_phase_shift = "0", + altpll_component.clk2_divide_by = 33, + altpll_component.clk2_duty_cycle = 50, + altpll_component.clk2_multiply_by = 25, + altpll_component.clk2_phase_shift = "0", + altpll_component.clk3_divide_by = 11, + altpll_component.clk3_duty_cycle = 50, + altpll_component.clk3_multiply_by = 16, + altpll_component.clk3_phase_shift = "0", + altpll_component.compensate_clock = "CLK1", + altpll_component.inclk0_input_frequency = 30303, + altpll_component.intended_device_family = "Cyclone III", + altpll_component.lpm_type = "altpll", + altpll_component.operation_mode = "SOURCE_SYNCHRONOUS", + altpll_component.pll_type = "AUTO", + altpll_component.port_activeclock = "PORT_UNUSED", + altpll_component.port_areset = "PORT_UNUSED", + altpll_component.port_clkbad0 = "PORT_UNUSED", + altpll_component.port_clkbad1 = "PORT_UNUSED", + altpll_component.port_clkloss = "PORT_UNUSED", + altpll_component.port_clkswitch = "PORT_UNUSED", + altpll_component.port_configupdate = "PORT_UNUSED", + altpll_component.port_fbin = "PORT_UNUSED", + altpll_component.port_inclk0 = "PORT_USED", + altpll_component.port_inclk1 = "PORT_UNUSED", + altpll_component.port_locked = "PORT_UNUSED", + altpll_component.port_pfdena = "PORT_UNUSED", + altpll_component.port_phasecounterselect = "PORT_UNUSED", + altpll_component.port_phasedone = "PORT_UNUSED", + altpll_component.port_phasestep = "PORT_UNUSED", + altpll_component.port_phaseupdown = "PORT_UNUSED", + altpll_component.port_pllena = "PORT_UNUSED", + altpll_component.port_scanaclr = "PORT_UNUSED", + altpll_component.port_scanclk = "PORT_UNUSED", + altpll_component.port_scanclkena = "PORT_UNUSED", + altpll_component.port_scandata = "PORT_UNUSED", + altpll_component.port_scandataout = "PORT_UNUSED", + altpll_component.port_scandone = "PORT_UNUSED", + altpll_component.port_scanread = "PORT_UNUSED", + altpll_component.port_scanwrite = "PORT_UNUSED", + altpll_component.port_clk0 = "PORT_USED", + altpll_component.port_clk1 = "PORT_USED", + altpll_component.port_clk2 = "PORT_USED", + altpll_component.port_clk3 = "PORT_USED", + altpll_component.port_clk4 = "PORT_UNUSED", + altpll_component.port_clk5 = "PORT_UNUSED", + altpll_component.port_clkena0 = "PORT_UNUSED", + altpll_component.port_clkena1 = "PORT_UNUSED", + altpll_component.port_clkena2 = "PORT_UNUSED", + altpll_component.port_clkena3 = "PORT_UNUSED", + altpll_component.port_clkena4 = "PORT_UNUSED", + altpll_component.port_clkena5 = "PORT_UNUSED", + altpll_component.port_extclk0 = "PORT_UNUSED", + altpll_component.port_extclk1 = "PORT_UNUSED", + altpll_component.port_extclk2 = "PORT_UNUSED", + altpll_component.port_extclk3 = "PORT_UNUSED", + altpll_component.width_clock = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c1" +// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "33" +// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "33" +// Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "33" +// Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "33" +// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "2.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "16.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "25.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "48.000000" +// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "0" +// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "2" +// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "16" +// Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "25" +// Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "48" +// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "2.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "16.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "25.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "160.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "ps" +// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +// Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll3.mif" +// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +// Retrieval info: PRIVATE: SPREAD_USE STRING "0" +// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_CLK0 STRING "1" +// Retrieval info: PRIVATE: USE_CLK1 STRING "1" +// Retrieval info: PRIVATE: USE_CLK2 STRING "1" +// Retrieval info: PRIVATE: USE_CLK3 STRING "1" +// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "33" +// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "2" +// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "33" +// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "16" +// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "33" +// Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "25" +// Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "11" +// Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "16" +// Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK1" +// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "SOURCE_SYNCHRONOUS" +// Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +// Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +// Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +// Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +// Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +// Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +// Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +// Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.ppf TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll3_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll3_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altpll4.mif b/FPGA_by_Gregory_Estrade/altip/altpll4.mif new file mode 100644 index 0000000..283f4f1 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll4.mif @@ -0,0 +1,174 @@ +-- Copyright (C) 1991-2013 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + +-- MIF file representing initial state of PLL Scan Chain +-- Device Family: Cyclone III +-- Device Part: - +-- Device Speed Grade: 8 +-- PLL Scan Chain: Fast PLL (144 bits) +-- File Name: C:/firebee/FPGA_quartus/v//altpll4.mif +-- Generated: Wed Mar 05 00:29:26 2014 + +WIDTH=1; +DEPTH=144; + +ADDRESS_RADIX=UNS; +DATA_RADIX=UNS; + +CONTENT BEGIN + 0 : 0; -- Reserved Bits = 0 (1 bit(s)) + 1 : 0; -- Reserved Bits = 0 (1 bit(s)) + 2 : 0; -- Loop Filter Capacitance = 0 (2 bit(s)) (Setting 0) + 3 : 0; + 4 : 1; -- Loop Filter Resistance = 27 (5 bit(s)) (Setting 27) + 5 : 1; + 6 : 0; + 7 : 1; + 8 : 1; + 9 : 0; -- VCO Post Scale = 0 (1 bit(s)) (VCO post-scale divider counter value = 2) + 10 : 0; -- Reserved Bits = 0 (5 bit(s)) + 11 : 0; + 12 : 0; + 13 : 0; + 14 : 0; + 15 : 0; -- Charge Pump Current = 1 (3 bit(s)) (Setting 1) + 16 : 0; + 17 : 1; + 18 : 1; -- N counter: Bypass = 1 (1 bit(s)) + 19 : 0; -- N counter: High Count = 0 (8 bit(s)) + 20 : 0; + 21 : 0; + 22 : 0; + 23 : 0; + 24 : 0; + 25 : 0; + 26 : 0; + 27 : 0; -- N counter: Odd Division = 0 (1 bit(s)) + 28 : 0; -- N counter: Low Count = 0 (8 bit(s)) + 29 : 0; + 30 : 0; + 31 : 0; + 32 : 0; + 33 : 0; + 34 : 0; + 35 : 0; + 36 : 0; -- M counter: Bypass = 0 (1 bit(s)) + 37 : 0; -- M counter: High Count = 6 (8 bit(s)) + 38 : 0; + 39 : 0; + 40 : 0; + 41 : 0; + 42 : 1; + 43 : 1; + 44 : 0; + 45 : 0; -- M counter: Odd Division = 0 (1 bit(s)) + 46 : 0; -- M counter: Low Count = 6 (8 bit(s)) + 47 : 0; + 48 : 0; + 49 : 0; + 50 : 0; + 51 : 1; + 52 : 1; + 53 : 0; + 54 : 0; -- clk0 counter: Bypass = 0 (1 bit(s)) + 55 : 0; -- clk0 counter: High Count = 3 (8 bit(s)) + 56 : 0; + 57 : 0; + 58 : 0; + 59 : 0; + 60 : 0; + 61 : 1; + 62 : 1; + 63 : 0; -- clk0 counter: Odd Division = 0 (1 bit(s)) + 64 : 0; -- clk0 counter: Low Count = 3 (8 bit(s)) + 65 : 0; + 66 : 0; + 67 : 0; + 68 : 0; + 69 : 0; + 70 : 1; + 71 : 1; + 72 : 1; -- clk1 counter: Bypass = 1 (1 bit(s)) + 73 : 0; -- clk1 counter: High Count = 0 (8 bit(s)) + 74 : 0; + 75 : 0; + 76 : 0; + 77 : 0; + 78 : 0; + 79 : 0; + 80 : 0; + 81 : 0; -- clk1 counter: Odd Division = 0 (1 bit(s)) + 82 : 0; -- clk1 counter: Low Count = 0 (8 bit(s)) + 83 : 0; + 84 : 0; + 85 : 0; + 86 : 0; + 87 : 0; + 88 : 0; + 89 : 0; + 90 : 1; -- clk2 counter: Bypass = 1 (1 bit(s)) + 91 : 0; -- clk2 counter: High Count = 0 (8 bit(s)) + 92 : 0; + 93 : 0; + 94 : 0; + 95 : 0; + 96 : 0; + 97 : 0; + 98 : 0; + 99 : 0; -- clk2 counter: Odd Division = 0 (1 bit(s)) + 100 : 0; -- clk2 counter: Low Count = 0 (8 bit(s)) + 101 : 0; + 102 : 0; + 103 : 0; + 104 : 0; + 105 : 0; + 106 : 0; + 107 : 0; + 108 : 1; -- clk3 counter: Bypass = 1 (1 bit(s)) + 109 : 0; -- clk3 counter: High Count = 0 (8 bit(s)) + 110 : 0; + 111 : 0; + 112 : 0; + 113 : 0; + 114 : 0; + 115 : 0; + 116 : 0; + 117 : 0; -- clk3 counter: Odd Division = 0 (1 bit(s)) + 118 : 0; -- clk3 counter: Low Count = 0 (8 bit(s)) + 119 : 0; + 120 : 0; + 121 : 0; + 122 : 0; + 123 : 0; + 124 : 0; + 125 : 0; + 126 : 1; -- clk4 counter: Bypass = 1 (1 bit(s)) + 127 : 0; -- clk4 counter: High Count = 0 (8 bit(s)) + 128 : 0; + 129 : 0; + 130 : 0; + 131 : 0; + 132 : 0; + 133 : 0; + 134 : 0; + 135 : 0; -- clk4 counter: Odd Division = 0 (1 bit(s)) + 136 : 0; -- clk4 counter: Low Count = 0 (8 bit(s)) + 137 : 0; + 138 : 0; + 139 : 0; + 140 : 0; + 141 : 0; + 142 : 0; + 143 : 0; +END; diff --git a/FPGA_by_Gregory_Estrade/altip/altpll4.ppf b/FPGA_by_Gregory_Estrade/altip/altpll4.ppf new file mode 100644 index 0000000..541ce91 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll4.ppf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip/altpll4.qip b/FPGA_by_Gregory_Estrade/altip/altpll4.qip new file mode 100644 index 0000000..ca085cc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll4.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altpll4.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll4.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip/altpll4.v b/FPGA_by_Gregory_Estrade/altip/altpll4.v new file mode 100644 index 0000000..9c71966 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll4.v @@ -0,0 +1,352 @@ +// megafunction wizard: %ALTPLL% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altpll + +// ============================================================ +// File Name: altpll4.v +// Megafunction Name(s): +// altpll +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altpll4 ( + areset, + configupdate, + inclk0, + scanclk, + scanclkena, + scandata, + c0, + locked, + scandataout, + scandone); + + input areset; + input configupdate; + input inclk0; + input scanclk; + input scanclkena; + input scandata; + output c0; + output locked; + output scandataout; + output scandone; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri0 areset; + tri0 configupdate; + tri0 scanclkena; + tri0 scandata; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire [4:0] sub_wire0; + wire sub_wire2; + wire sub_wire3; + wire sub_wire4; + wire [0:0] sub_wire7 = 1'h0; + wire [0:0] sub_wire1 = sub_wire0[0:0]; + wire c0 = sub_wire1; + wire scandataout = sub_wire2; + wire scandone = sub_wire3; + wire locked = sub_wire4; + wire sub_wire5 = inclk0; + wire [1:0] sub_wire6 = {sub_wire7, sub_wire5}; + + altpll altpll_component ( + .areset (areset), + .configupdate (configupdate), + .inclk (sub_wire6), + .scanclk (scanclk), + .scanclkena (scanclkena), + .scandata (scandata), + .clk (sub_wire0), + .scandataout (sub_wire2), + .scandone (sub_wire3), + .locked (sub_wire4), + .activeclock (), + .clkbad (), + .clkena ({6{1'b1}}), + .clkloss (), + .clkswitch (1'b0), + .enable0 (), + .enable1 (), + .extclk (), + .extclkena ({4{1'b1}}), + .fbin (1'b1), + .fbmimicbidir (), + .fbout (), + .fref (), + .icdrclk (), + .pfdena (1'b1), + .phasecounterselect ({4{1'b1}}), + .phasedone (), + .phasestep (1'b1), + .phaseupdown (1'b1), + .pllena (1'b1), + .scanaclr (1'b0), + .scanread (1'b0), + .scanwrite (1'b0), + .sclkout0 (), + .sclkout1 (), + .vcooverrange (), + .vcounderrange ()); + defparam + altpll_component.bandwidth_type = "AUTO", + altpll_component.clk0_divide_by = 1, + altpll_component.clk0_duty_cycle = 50, + altpll_component.clk0_multiply_by = 2, + altpll_component.clk0_phase_shift = "0", + altpll_component.compensate_clock = "CLK0", + altpll_component.inclk0_input_frequency = 20833, + altpll_component.intended_device_family = "Cyclone III", + altpll_component.lpm_type = "altpll", + altpll_component.operation_mode = "NORMAL", + altpll_component.pll_type = "AUTO", + altpll_component.port_activeclock = "PORT_UNUSED", + altpll_component.port_areset = "PORT_USED", + altpll_component.port_clkbad0 = "PORT_UNUSED", + altpll_component.port_clkbad1 = "PORT_UNUSED", + altpll_component.port_clkloss = "PORT_UNUSED", + altpll_component.port_clkswitch = "PORT_UNUSED", + altpll_component.port_configupdate = "PORT_USED", + altpll_component.port_fbin = "PORT_UNUSED", + altpll_component.port_inclk0 = "PORT_USED", + altpll_component.port_inclk1 = "PORT_UNUSED", + altpll_component.port_locked = "PORT_USED", + altpll_component.port_pfdena = "PORT_UNUSED", + altpll_component.port_phasecounterselect = "PORT_UNUSED", + altpll_component.port_phasedone = "PORT_UNUSED", + altpll_component.port_phasestep = "PORT_UNUSED", + altpll_component.port_phaseupdown = "PORT_UNUSED", + altpll_component.port_pllena = "PORT_UNUSED", + altpll_component.port_scanaclr = "PORT_UNUSED", + altpll_component.port_scanclk = "PORT_USED", + altpll_component.port_scanclkena = "PORT_USED", + altpll_component.port_scandata = "PORT_USED", + altpll_component.port_scandataout = "PORT_USED", + altpll_component.port_scandone = "PORT_USED", + altpll_component.port_scanread = "PORT_UNUSED", + altpll_component.port_scanwrite = "PORT_UNUSED", + altpll_component.port_clk0 = "PORT_USED", + altpll_component.port_clk1 = "PORT_UNUSED", + altpll_component.port_clk2 = "PORT_UNUSED", + altpll_component.port_clk3 = "PORT_UNUSED", + altpll_component.port_clk4 = "PORT_UNUSED", + altpll_component.port_clk5 = "PORT_UNUSED", + altpll_component.port_clkena0 = "PORT_UNUSED", + altpll_component.port_clkena1 = "PORT_UNUSED", + altpll_component.port_clkena2 = "PORT_UNUSED", + altpll_component.port_clkena3 = "PORT_UNUSED", + altpll_component.port_clkena4 = "PORT_UNUSED", + altpll_component.port_clkena5 = "PORT_UNUSED", + altpll_component.port_extclk0 = "PORT_UNUSED", + altpll_component.port_extclk1 = "PORT_UNUSED", + altpll_component.port_extclk2 = "PORT_UNUSED", + altpll_component.port_extclk3 = "PORT_UNUSED", + altpll_component.self_reset_on_loss_lock = "OFF", + altpll_component.width_clock = 5, + altpll_component.scan_chain_mif_file = "altpll4.mif"; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "96.000000" +// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "48.000" +// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "2" +// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "144.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +// Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll4.mif" +// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "1" +// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +// Retrieval info: PRIVATE: SPREAD_USE STRING "0" +// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_CLK0 STRING "1" +// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "1" +// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "2" +// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "20833" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +// Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +// Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +// Retrieval info: CONSTANT: scan_chain_mif_file STRING "altpll4.mif" +// Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +// Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +// Retrieval info: USED_PORT: configupdate 0 0 0 0 INPUT GND "configupdate" +// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +// Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +// Retrieval info: USED_PORT: scanclk 0 0 0 0 INPUT_CLK_EXT VCC "scanclk" +// Retrieval info: USED_PORT: scanclkena 0 0 0 0 INPUT GND "scanclkena" +// Retrieval info: USED_PORT: scandata 0 0 0 0 INPUT GND "scandata" +// Retrieval info: USED_PORT: scandataout 0 0 0 0 OUTPUT VCC "scandataout" +// Retrieval info: USED_PORT: scandone 0 0 0 0 OUTPUT VCC "scandone" +// Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +// Retrieval info: CONNECT: @configupdate 0 0 0 0 configupdate 0 0 0 0 +// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +// Retrieval info: CONNECT: @scanclk 0 0 0 0 scanclk 0 0 0 0 +// Retrieval info: CONNECT: @scanclkena 0 0 0 0 scanclkena 0 0 0 0 +// Retrieval info: CONNECT: @scandata 0 0 0 0 scandata 0 0 0 0 +// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +// Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +// Retrieval info: CONNECT: scandataout 0 0 0 0 @scandataout 0 0 0 0 +// Retrieval info: CONNECT: scandone 0 0 0 0 @scandone 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.ppf TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll4_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll4_bb.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.mif TRUE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/altpll_reconfig1.qip b/FPGA_by_Gregory_Estrade/altip/altpll_reconfig1.qip new file mode 100644 index 0000000..dcda498 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll_reconfig1.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL_RECONFIG" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altpll_reconfig1.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/altpll_reconfig1.v b/FPGA_by_Gregory_Estrade/altip/altpll_reconfig1.v new file mode 100644 index 0000000..2160407 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/altpll_reconfig1.v @@ -0,0 +1,1465 @@ +// megafunction wizard: %ALTPLL_RECONFIG% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altpll_reconfig + +// ============================================================ +// File Name: altpll_reconfig1.v +// Megafunction Name(s): +// altpll_reconfig +// +// Simulation Library Files(s): +// altera_mf;cycloneiii;lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +//altpll_reconfig CBX_AUTO_BLACKBOX="ALL" device_family="Cyclone III" busy clock counter_param counter_type data_in data_out pll_areset pll_areset_in pll_configupdate pll_scanclk pll_scanclkena pll_scandata pll_scandataout pll_scandone read_param reconfig reset write_param +//VERSION_BEGIN 13.1 cbx_altpll_reconfig 2013:10:23:18:05:48:SJ cbx_altsyncram 2013:10:23:18:05:48:SJ cbx_cycloneii 2013:10:23:18:05:48:SJ cbx_lpm_add_sub 2013:10:23:18:05:48:SJ cbx_lpm_compare 2013:10:23:18:05:48:SJ cbx_lpm_counter 2013:10:23:18:05:48:SJ cbx_lpm_decode 2013:10:23:18:05:48:SJ cbx_lpm_mux 2013:10:23:18:05:48:SJ cbx_mgl 2013:10:23:18:06:54:SJ cbx_stratix 2013:10:23:18:05:48:SJ cbx_stratixii 2013:10:23:18:05:48:SJ cbx_stratixiii 2013:10:23:18:05:48:SJ cbx_stratixv 2013:10:23:18:05:48:SJ cbx_util_mgl 2013:10:23:18:05:48:SJ VERSION_END +// synthesis VERILOG_INPUT_VERSION VERILOG_2001 +// altera message_off 10463 + + +//synthesis_resources = altsyncram 1 lpm_add_sub 2 lpm_compare 1 lpm_counter 7 lpm_decode 1 lut 3 reg 80 +//synopsys translate_off +`timescale 1 ps / 1 ps +//synopsys translate_on +(* ALTERA_ATTRIBUTE = {"ADV_NETLIST_OPT_ALLOWED=\"NEVER_ALLOW\";suppress_da_rule_internal=C106;{-to le_comb10} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=2;{-to le_comb8} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=0;{-to le_comb9} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=1"} *) +module altpll_reconfig1_pllrcfg_t4q + ( + busy, + clock, + counter_param, + counter_type, + data_in, + data_out, + pll_areset, + pll_areset_in, + pll_configupdate, + pll_scanclk, + pll_scanclkena, + pll_scandata, + pll_scandataout, + pll_scandone, + read_param, + reconfig, + reset, + write_param) /* synthesis synthesis_clearbox=2 */; + output busy; + input clock; + input [2:0] counter_param; + input [3:0] counter_type; + input [8:0] data_in; + output [8:0] data_out; + output pll_areset; + input pll_areset_in; + output pll_configupdate; + output pll_scanclk; + output pll_scanclkena; + output pll_scandata; + input pll_scandataout; + input pll_scandone; + input read_param; + input reconfig; + input reset; + input write_param; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri0 [2:0] counter_param; + tri0 [3:0] counter_type; + tri0 [8:0] data_in; + tri0 pll_areset_in; + tri0 pll_scandataout; + tri0 pll_scandone; + tri0 read_param; + tri0 reconfig; + tri0 write_param; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire [0:0] wire_altsyncram4_q_a; + wire wire_le_comb10_combout; + wire wire_le_comb8_combout; + wire wire_le_comb9_combout; + reg areset_init_state_1; + reg areset_state; + reg C0_data_state; + reg C0_ena_state; + reg C1_data_state; + reg C1_ena_state; + reg C2_data_state; + reg C2_ena_state; + reg C3_data_state; + reg C3_ena_state; + reg C4_data_state; + reg C4_ena_state; + reg configupdate2_state; + reg configupdate3_state; + reg configupdate_state; + reg [2:0] counter_param_latch_reg; + reg [3:0] counter_type_latch_reg; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg idle_state; + reg [0:0] nominal_data0; + reg [0:0] nominal_data1; + reg [0:0] nominal_data2; + reg [0:0] nominal_data3; + reg [0:0] nominal_data4; + reg [0:0] nominal_data5; + reg [0:0] nominal_data6; + reg [0:0] nominal_data7; + reg [0:0] nominal_data8; + reg [0:0] nominal_data9; + reg [0:0] nominal_data10; + reg [0:0] nominal_data11; + reg [0:0] nominal_data12; + reg [0:0] nominal_data13; + reg [0:0] nominal_data14; + reg [0:0] nominal_data15; + reg [0:0] nominal_data16; + reg [0:0] nominal_data17; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg read_data_nominal_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg read_data_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg read_first_nominal_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg read_first_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg read_init_nominal_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg read_init_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg read_last_nominal_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg read_last_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg reconfig_counter_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg reconfig_init_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg reconfig_post_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg reconfig_seq_data_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg reconfig_seq_ena_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg reconfig_wait_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=HIGH"} *) + reg reset_state; + reg [0:0] shift_reg0; + reg [0:0] shift_reg1; + reg [0:0] shift_reg2; + reg [0:0] shift_reg3; + reg [0:0] shift_reg4; + reg [0:0] shift_reg5; + reg [0:0] shift_reg6; + reg [0:0] shift_reg7; + reg [0:0] shift_reg8; + reg [0:0] shift_reg9; + reg [0:0] shift_reg10; + reg [0:0] shift_reg11; + reg [0:0] shift_reg12; + reg [0:0] shift_reg13; + reg [0:0] shift_reg14; + reg [0:0] shift_reg15; + reg [0:0] shift_reg16; + reg [0:0] shift_reg17; + wire [17:0] wire_shift_reg_ena; + reg tmp_nominal_data_out_state; + reg tmp_seq_ena_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg write_data_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg write_init_nominal_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg write_init_state; + (* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *) + reg write_nominal_state; + wire [8:0] wire_add_sub5_result; + wire [7:0] wire_add_sub6_result; + wire wire_cmpr7_aeb; + wire [7:0] wire_cntr1_q; + wire [7:0] wire_cntr12_q; + wire [5:0] wire_cntr13_q; + wire [4:0] wire_cntr14_q; + wire [7:0] wire_cntr15_q; + wire [7:0] wire_cntr2_q; + wire [4:0] wire_cntr3_q; + wire [4:0] wire_decode11_eq; + wire addr_counter_enable; + wire [7:0] addr_counter_out; + wire addr_counter_sload; + wire [7:0] addr_counter_sload_value; + wire [7:0] addr_decoder_out; + wire [7:0] c0_wire; + wire [7:0] c1_wire; + wire [7:0] c2_wire; + wire [7:0] c3_wire; + wire [7:0] c4_wire; + wire [2:0] counter_param_latch; + wire [3:0] counter_type_latch; + wire [2:0] cuda_combout_wire; + wire dummy_scandataout; + wire [2:0] encode_out; + wire input_latch_enable; + wire power_up; + wire read_addr_counter_enable; + wire [7:0] read_addr_counter_out; + wire read_addr_counter_sload; + wire [7:0] read_addr_counter_sload_value; + wire [7:0] read_addr_decoder_out; + wire read_nominal_out; + wire reconfig_addr_counter_enable; + wire [7:0] reconfig_addr_counter_out; + wire reconfig_addr_counter_sload; + wire [7:0] reconfig_addr_counter_sload_value; + wire reconfig_done; + wire reconfig_post_done; + wire reconfig_width_counter_done; + wire reconfig_width_counter_enable; + wire reconfig_width_counter_sload; + wire [5:0] reconfig_width_counter_sload_value; + wire rotate_addr_counter_enable; + wire [7:0] rotate_addr_counter_out; + wire rotate_addr_counter_sload; + wire [7:0] rotate_addr_counter_sload_value; + wire [4:0] rotate_decoder_wires; + wire rotate_width_counter_done; + wire rotate_width_counter_enable; + wire rotate_width_counter_sload; + wire [4:0] rotate_width_counter_sload_value; + wire [7:0] scan_cache_address; + wire scan_cache_in; + wire scan_cache_out; + wire scan_cache_write_enable; + wire sel_param_bypass_LF_unused; + wire sel_param_c; + wire sel_param_high_i_postscale; + wire sel_param_low_r; + wire sel_param_nominal_count; + wire sel_param_odd_CP_unused; + wire sel_type_c0; + wire sel_type_c1; + wire sel_type_c2; + wire sel_type_c3; + wire sel_type_c4; + wire sel_type_cplf; + wire sel_type_m; + wire sel_type_n; + wire sel_type_vco; + wire [7:0] seq_addr_wire; + wire [5:0] seq_sload_value; + wire shift_reg_clear; + wire shift_reg_load_enable; + wire shift_reg_load_nominal_enable; + wire shift_reg_serial_in; + wire shift_reg_serial_out; + wire shift_reg_shift_enable; + wire shift_reg_shift_nominal_enable; + wire [7:0] shift_reg_width_select; + wire w1565w; + wire w1592w; + wire w64w; + wire width_counter_done; + wire width_counter_enable; + wire width_counter_sload; + wire [4:0] width_counter_sload_value; + wire [4:0] width_decoder_out; + wire [7:0] width_decoder_select; + wire write_from_rom; + + altsyncram altsyncram4 + ( + .address_a(scan_cache_address), + .clock0(clock), + .data_a({scan_cache_in}), + .eccstatus(), + .q_a(wire_altsyncram4_q_a), + .q_b(), + .wren_a(scan_cache_write_enable) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr0(1'b0), + .aclr1(1'b0), + .address_b({1{1'b1}}), + .addressstall_a(1'b0), + .addressstall_b(1'b0), + .byteena_a({1{1'b1}}), + .byteena_b({1{1'b1}}), + .clock1(1'b1), + .clocken0(1'b1), + .clocken1(1'b1), + .clocken2(1'b1), + .clocken3(1'b1), + .data_b({1{1'b1}}), + .rden_a(1'b1), + .rden_b(1'b1), + .wren_b(1'b0) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + altsyncram4.numwords_a = 144, + altsyncram4.operation_mode = "SINGLE_PORT", + altsyncram4.width_a = 1, + altsyncram4.width_byteena_a = 1, + altsyncram4.widthad_a = 8, + altsyncram4.intended_device_family = "Cyclone III", + altsyncram4.lpm_type = "altsyncram"; + cycloneiii_lcell_comb le_comb10 + ( + .combout(wire_le_comb10_combout), + .cout(), + .dataa(encode_out[0]), + .datab(encode_out[1]), + .datac(encode_out[2]), + .cin(1'b0), + .datad(1'b0) + ); + defparam + le_comb10.dont_touch = "on", + le_comb10.lut_mask = 16'hF0F0, + le_comb10.sum_lutc_input = "datac", + le_comb10.lpm_type = "cycloneiii_lcell_comb"; + cycloneiii_lcell_comb le_comb8 + ( + .combout(wire_le_comb8_combout), + .cout(), + .dataa(encode_out[0]), + .datab(encode_out[1]), + .datac(encode_out[2]), + .cin(1'b0), + .datad(1'b0) + ); + defparam + le_comb8.dont_touch = "on", + le_comb8.lut_mask = 16'hAAAA, + le_comb8.sum_lutc_input = "datac", + le_comb8.lpm_type = "cycloneiii_lcell_comb"; + cycloneiii_lcell_comb le_comb9 + ( + .combout(wire_le_comb9_combout), + .cout(), + .dataa(encode_out[0]), + .datab(encode_out[1]), + .datac(encode_out[2]), + .cin(1'b0), + .datad(1'b0) + ); + defparam + le_comb9.dont_touch = "on", + le_comb9.lut_mask = 16'hCCCC, + le_comb9.sum_lutc_input = "datac", + le_comb9.lpm_type = "cycloneiii_lcell_comb"; + // synopsys translate_off + initial + areset_init_state_1 = 0; + // synopsys translate_on + always @ ( posedge clock) + areset_init_state_1 <= pll_scandone; + // synopsys translate_off + initial + areset_state = 0; + // synopsys translate_on + always @ ( posedge clock) + areset_state <= (areset_init_state_1 & (~ reset)); + // synopsys translate_off + initial + C0_data_state = 0; + // synopsys translate_on + always @ ( posedge clock) + C0_data_state <= (C0_ena_state | (C0_data_state & (~ rotate_width_counter_done))); + // synopsys translate_off + initial + C0_ena_state = 0; + // synopsys translate_on + always @ ( posedge clock) + C0_ena_state <= (C1_data_state & rotate_width_counter_done); + // synopsys translate_off + initial + C1_data_state = 0; + // synopsys translate_on + always @ ( posedge clock) + C1_data_state <= (C1_ena_state | (C1_data_state & (~ rotate_width_counter_done))); + // synopsys translate_off + initial + C1_ena_state = 0; + // synopsys translate_on + always @ ( posedge clock) + C1_ena_state <= (C2_data_state & rotate_width_counter_done); + // synopsys translate_off + initial + C2_data_state = 0; + // synopsys translate_on + always @ ( posedge clock) + C2_data_state <= (C2_ena_state | (C2_data_state & (~ rotate_width_counter_done))); + // synopsys translate_off + initial + C2_ena_state = 0; + // synopsys translate_on + always @ ( posedge clock) + C2_ena_state <= (C3_data_state & rotate_width_counter_done); + // synopsys translate_off + initial + C3_data_state = 0; + // synopsys translate_on + always @ ( posedge clock) + C3_data_state <= (C3_ena_state | (C3_data_state & (~ rotate_width_counter_done))); + // synopsys translate_off + initial + C3_ena_state = 0; + // synopsys translate_on + always @ ( posedge clock) + C3_ena_state <= (C4_data_state & rotate_width_counter_done); + // synopsys translate_off + initial + C4_data_state = 0; + // synopsys translate_on + always @ ( posedge clock) + C4_data_state <= (C4_ena_state | (C4_data_state & (~ rotate_width_counter_done))); + // synopsys translate_off + initial + C4_ena_state = 0; + // synopsys translate_on + always @ ( posedge clock) + C4_ena_state <= reconfig_init_state; + // synopsys translate_off + initial + configupdate2_state = 0; + // synopsys translate_on + always @ ( posedge clock) + configupdate2_state <= configupdate_state; + // synopsys translate_off + initial + configupdate3_state = 0; + // synopsys translate_on + always @ ( negedge clock) + configupdate3_state <= configupdate2_state; + // synopsys translate_off + initial + configupdate_state = 0; + // synopsys translate_on + always @ ( posedge clock) + configupdate_state <= reconfig_post_state; + // synopsys translate_off + initial + counter_param_latch_reg = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) counter_param_latch_reg <= 3'b0; + else if (input_latch_enable == 1'b1) counter_param_latch_reg <= counter_param; + // synopsys translate_off + initial + counter_type_latch_reg = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) counter_type_latch_reg <= 4'b0; + else if (input_latch_enable == 1'b1) counter_type_latch_reg <= counter_type; + // synopsys translate_off + initial + idle_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) idle_state <= 1'b0; + else idle_state <= ((((((((((idle_state & (~ read_param)) & (~ write_param)) & (~ reconfig)) & (~ write_from_rom)) | read_last_state) | (write_data_state & width_counter_done)) | (write_nominal_state & width_counter_done)) | read_last_nominal_state) | (reconfig_wait_state & reconfig_done)) | reset_state); + // synopsys translate_off + initial + nominal_data0 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data0 <= 1'b0; + else nominal_data0 <= wire_add_sub6_result[0]; + // synopsys translate_off + initial + nominal_data1 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data1 <= 1'b0; + else nominal_data1 <= wire_add_sub6_result[1]; + // synopsys translate_off + initial + nominal_data2 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data2 <= 1'b0; + else nominal_data2 <= wire_add_sub6_result[2]; + // synopsys translate_off + initial + nominal_data3 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data3 <= 1'b0; + else nominal_data3 <= wire_add_sub6_result[3]; + // synopsys translate_off + initial + nominal_data4 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data4 <= 1'b0; + else nominal_data4 <= wire_add_sub6_result[4]; + // synopsys translate_off + initial + nominal_data5 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data5 <= 1'b0; + else nominal_data5 <= wire_add_sub6_result[5]; + // synopsys translate_off + initial + nominal_data6 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data6 <= 1'b0; + else nominal_data6 <= wire_add_sub6_result[6]; + // synopsys translate_off + initial + nominal_data7 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data7 <= 1'b0; + else nominal_data7 <= wire_add_sub6_result[7]; + // synopsys translate_off + initial + nominal_data8 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data8 <= 1'b0; + else nominal_data8 <= data_in[0]; + // synopsys translate_off + initial + nominal_data9 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data9 <= 1'b0; + else nominal_data9 <= data_in[1]; + // synopsys translate_off + initial + nominal_data10 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data10 <= 1'b0; + else nominal_data10 <= data_in[2]; + // synopsys translate_off + initial + nominal_data11 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data11 <= 1'b0; + else nominal_data11 <= data_in[3]; + // synopsys translate_off + initial + nominal_data12 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data12 <= 1'b0; + else nominal_data12 <= data_in[4]; + // synopsys translate_off + initial + nominal_data13 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data13 <= 1'b0; + else nominal_data13 <= data_in[5]; + // synopsys translate_off + initial + nominal_data14 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data14 <= 1'b0; + else nominal_data14 <= data_in[6]; + // synopsys translate_off + initial + nominal_data15 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data15 <= 1'b0; + else nominal_data15 <= data_in[7]; + // synopsys translate_off + initial + nominal_data16 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data16 <= 1'b0; + else nominal_data16 <= data_in[8]; + // synopsys translate_off + initial + nominal_data17 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) nominal_data17 <= 1'b0; + else nominal_data17 <= wire_cmpr7_aeb; + // synopsys translate_off + initial + read_data_nominal_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) read_data_nominal_state <= 1'b0; + else read_data_nominal_state <= ((read_first_nominal_state & (~ width_counter_done)) | (read_data_nominal_state & (~ width_counter_done))); + // synopsys translate_off + initial + read_data_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) read_data_state <= 1'b0; + else read_data_state <= ((read_first_state & (~ width_counter_done)) | (read_data_state & (~ width_counter_done))); + // synopsys translate_off + initial + read_first_nominal_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) read_first_nominal_state <= 1'b0; + else read_first_nominal_state <= read_init_nominal_state; + // synopsys translate_off + initial + read_first_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) read_first_state <= 1'b0; + else read_first_state <= read_init_state; + // synopsys translate_off + initial + read_init_nominal_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) read_init_nominal_state <= 1'b0; + else read_init_nominal_state <= ((idle_state & read_param) & ((((((~ counter_type[3]) & (~ counter_type[2])) & (~ counter_type[1])) & counter_param[2]) & counter_param[1]) & counter_param[0])); + // synopsys translate_off + initial + read_init_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) read_init_state <= 1'b0; + else read_init_state <= ((idle_state & read_param) & (~ ((((((~ counter_type[3]) & (~ counter_type[2])) & (~ counter_type[1])) & counter_param[2]) & counter_param[1]) & counter_param[0]))); + // synopsys translate_off + initial + read_last_nominal_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) read_last_nominal_state <= 1'b0; + else read_last_nominal_state <= ((read_first_nominal_state & width_counter_done) | (read_data_nominal_state & width_counter_done)); + // synopsys translate_off + initial + read_last_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) read_last_state <= 1'b0; + else read_last_state <= ((read_first_state & width_counter_done) | (read_data_state & width_counter_done)); + // synopsys translate_off + initial + reconfig_counter_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) reconfig_counter_state <= 1'b0; + else reconfig_counter_state <= ((((((((((reconfig_init_state | C0_data_state) | C1_data_state) | C2_data_state) | C3_data_state) | C4_data_state) | C0_ena_state) | C1_ena_state) | C2_ena_state) | C3_ena_state) | C4_ena_state); + // synopsys translate_off + initial + reconfig_init_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) reconfig_init_state <= 1'b0; + else reconfig_init_state <= (idle_state & reconfig); + // synopsys translate_off + initial + reconfig_post_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) reconfig_post_state <= 1'b0; + else reconfig_post_state <= ((reconfig_seq_data_state & reconfig_width_counter_done) | (reconfig_post_state & (~ reconfig_post_done))); + // synopsys translate_off + initial + reconfig_seq_data_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) reconfig_seq_data_state <= 1'b0; + else reconfig_seq_data_state <= (reconfig_seq_ena_state | (reconfig_seq_data_state & (~ reconfig_width_counter_done))); + // synopsys translate_off + initial + reconfig_seq_ena_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) reconfig_seq_ena_state <= 1'b0; + else reconfig_seq_ena_state <= tmp_seq_ena_state; + // synopsys translate_off + initial + reconfig_wait_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) reconfig_wait_state <= 1'b0; + else reconfig_wait_state <= ((reconfig_post_state & reconfig_post_done) | (reconfig_wait_state & (~ reconfig_done))); + // synopsys translate_off + initial + reset_state = {1{1'b1}}; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) reset_state <= {1{1'b1}}; + else reset_state <= power_up; + // synopsys translate_off + initial + shift_reg0 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg0 <= 1'b0; + else if (wire_shift_reg_ena[0:0] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg0 <= 1'b0; + else shift_reg0 <= ((((shift_reg_load_nominal_enable & nominal_data17[0:0]) | (shift_reg_load_enable & w64w)) | (shift_reg_shift_enable & shift_reg_serial_in)) | (shift_reg_shift_nominal_enable & shift_reg_serial_in)); + // synopsys translate_off + initial + shift_reg1 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg1 <= 1'b0; + else if (wire_shift_reg_ena[1:1] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg1 <= 1'b0; + else shift_reg1 <= ((((shift_reg_load_nominal_enable & nominal_data16[0:0]) | (shift_reg_load_enable & w64w)) | (shift_reg_shift_enable & shift_reg0[0:0])) | (shift_reg_shift_nominal_enable & shift_reg0[0:0])); + // synopsys translate_off + initial + shift_reg2 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg2 <= 1'b0; + else if (wire_shift_reg_ena[2:2] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg2 <= 1'b0; + else shift_reg2 <= ((((shift_reg_load_nominal_enable & nominal_data15[0:0]) | (shift_reg_load_enable & w64w)) | (shift_reg_shift_enable & shift_reg1[0:0])) | (shift_reg_shift_nominal_enable & shift_reg1[0:0])); + // synopsys translate_off + initial + shift_reg3 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg3 <= 1'b0; + else if (wire_shift_reg_ena[3:3] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg3 <= 1'b0; + else shift_reg3 <= ((((shift_reg_load_nominal_enable & nominal_data14[0:0]) | (shift_reg_load_enable & w64w)) | (shift_reg_shift_enable & shift_reg2[0:0])) | (shift_reg_shift_nominal_enable & shift_reg2[0:0])); + // synopsys translate_off + initial + shift_reg4 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg4 <= 1'b0; + else if (wire_shift_reg_ena[4:4] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg4 <= 1'b0; + else shift_reg4 <= ((((shift_reg_load_nominal_enable & nominal_data13[0:0]) | (shift_reg_load_enable & w64w)) | (shift_reg_shift_enable & shift_reg3[0:0])) | (shift_reg_shift_nominal_enable & shift_reg3[0:0])); + // synopsys translate_off + initial + shift_reg5 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg5 <= 1'b0; + else if (wire_shift_reg_ena[5:5] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg5 <= 1'b0; + else shift_reg5 <= ((((shift_reg_load_nominal_enable & nominal_data12[0:0]) | (shift_reg_load_enable & w64w)) | (shift_reg_shift_enable & shift_reg4[0:0])) | (shift_reg_shift_nominal_enable & shift_reg4[0:0])); + // synopsys translate_off + initial + shift_reg6 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg6 <= 1'b0; + else if (wire_shift_reg_ena[6:6] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg6 <= 1'b0; + else shift_reg6 <= ((((shift_reg_load_nominal_enable & nominal_data11[0:0]) | (shift_reg_load_enable & w64w)) | (shift_reg_shift_enable & shift_reg5[0:0])) | (shift_reg_shift_nominal_enable & shift_reg5[0:0])); + // synopsys translate_off + initial + shift_reg7 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg7 <= 1'b0; + else if (wire_shift_reg_ena[7:7] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg7 <= 1'b0; + else shift_reg7 <= ((((shift_reg_load_nominal_enable & nominal_data10[0:0]) | (shift_reg_load_enable & w64w)) | (shift_reg_shift_enable & shift_reg6[0:0])) | (shift_reg_shift_nominal_enable & shift_reg6[0:0])); + // synopsys translate_off + initial + shift_reg8 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg8 <= 1'b0; + else if (wire_shift_reg_ena[8:8] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg8 <= 1'b0; + else shift_reg8 <= ((((shift_reg_load_nominal_enable & nominal_data9[0:0]) | (shift_reg_load_enable & w64w)) | (shift_reg_shift_enable & shift_reg7[0:0])) | (shift_reg_shift_nominal_enable & shift_reg7[0:0])); + // synopsys translate_off + initial + shift_reg9 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg9 <= 1'b0; + else if (wire_shift_reg_ena[9:9] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg9 <= 1'b0; + else shift_reg9 <= ((((shift_reg_load_nominal_enable & nominal_data8[0:0]) | (shift_reg_load_enable & data_in[8])) | (shift_reg_shift_enable & shift_reg8[0:0])) | (shift_reg_shift_nominal_enable & shift_reg8[0:0])); + // synopsys translate_off + initial + shift_reg10 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg10 <= 1'b0; + else if (wire_shift_reg_ena[10:10] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg10 <= 1'b0; + else shift_reg10 <= ((((shift_reg_load_nominal_enable & nominal_data7[0:0]) | (shift_reg_load_enable & data_in[7])) | (shift_reg_shift_enable & shift_reg9[0:0])) | (shift_reg_shift_nominal_enable & shift_reg9[0:0])); + // synopsys translate_off + initial + shift_reg11 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg11 <= 1'b0; + else if (wire_shift_reg_ena[11:11] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg11 <= 1'b0; + else shift_reg11 <= ((((shift_reg_load_nominal_enable & nominal_data6[0:0]) | (shift_reg_load_enable & data_in[6])) | (shift_reg_shift_enable & shift_reg10[0:0])) | (shift_reg_shift_nominal_enable & shift_reg10[0:0])); + // synopsys translate_off + initial + shift_reg12 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg12 <= 1'b0; + else if (wire_shift_reg_ena[12:12] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg12 <= 1'b0; + else shift_reg12 <= ((((shift_reg_load_nominal_enable & nominal_data5[0:0]) | (shift_reg_load_enable & data_in[5])) | (shift_reg_shift_enable & shift_reg11[0:0])) | (shift_reg_shift_nominal_enable & shift_reg11[0:0])); + // synopsys translate_off + initial + shift_reg13 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg13 <= 1'b0; + else if (wire_shift_reg_ena[13:13] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg13 <= 1'b0; + else shift_reg13 <= ((((shift_reg_load_nominal_enable & nominal_data4[0:0]) | (shift_reg_load_enable & data_in[4])) | (shift_reg_shift_enable & shift_reg12[0:0])) | (shift_reg_shift_nominal_enable & shift_reg12[0:0])); + // synopsys translate_off + initial + shift_reg14 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg14 <= 1'b0; + else if (wire_shift_reg_ena[14:14] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg14 <= 1'b0; + else shift_reg14 <= ((((shift_reg_load_nominal_enable & nominal_data3[0:0]) | (shift_reg_load_enable & data_in[3])) | (shift_reg_shift_enable & shift_reg13[0:0])) | (shift_reg_shift_nominal_enable & shift_reg13[0:0])); + // synopsys translate_off + initial + shift_reg15 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg15 <= 1'b0; + else if (wire_shift_reg_ena[15:15] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg15 <= 1'b0; + else shift_reg15 <= ((((shift_reg_load_nominal_enable & nominal_data2[0:0]) | (shift_reg_load_enable & data_in[2])) | (shift_reg_shift_enable & shift_reg14[0:0])) | (shift_reg_shift_nominal_enable & shift_reg14[0:0])); + // synopsys translate_off + initial + shift_reg16 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg16 <= 1'b0; + else if (wire_shift_reg_ena[16:16] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg16 <= 1'b0; + else shift_reg16 <= ((((shift_reg_load_nominal_enable & nominal_data1[0:0]) | (shift_reg_load_enable & data_in[1])) | (shift_reg_shift_enable & shift_reg15[0:0])) | (shift_reg_shift_nominal_enable & shift_reg15[0:0])); + // synopsys translate_off + initial + shift_reg17 = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) shift_reg17 <= 1'b0; + else if (wire_shift_reg_ena[17:17] == 1'b1) + if (shift_reg_clear == 1'b1) shift_reg17 <= 1'b0; + else shift_reg17 <= ((((shift_reg_load_nominal_enable & nominal_data0[0:0]) | (shift_reg_load_enable & data_in[0])) | (shift_reg_shift_enable & shift_reg16[0:0])) | (shift_reg_shift_nominal_enable & shift_reg16[0:0])); + assign + wire_shift_reg_ena = {18{((((shift_reg_load_enable | shift_reg_shift_enable) | shift_reg_load_nominal_enable) | shift_reg_shift_nominal_enable) | shift_reg_clear)}}; + // synopsys translate_off + initial + tmp_nominal_data_out_state = 0; + // synopsys translate_on + always @ ( posedge clock) + tmp_nominal_data_out_state <= ((read_last_nominal_state & (~ idle_state)) | (tmp_nominal_data_out_state & idle_state)); + // synopsys translate_off + initial + tmp_seq_ena_state = 0; + // synopsys translate_on + always @ ( posedge clock) + tmp_seq_ena_state <= (reconfig_counter_state & (C0_data_state & rotate_width_counter_done)); + // synopsys translate_off + initial + write_data_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) write_data_state <= 1'b0; + else write_data_state <= (write_init_state | (write_data_state & (~ width_counter_done))); + // synopsys translate_off + initial + write_init_nominal_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) write_init_nominal_state <= 1'b0; + else write_init_nominal_state <= ((idle_state & write_param) & ((((((~ counter_type[3]) & (~ counter_type[2])) & (~ counter_type[1])) & counter_param[2]) & counter_param[1]) & counter_param[0])); + // synopsys translate_off + initial + write_init_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) write_init_state <= 1'b0; + else write_init_state <= ((idle_state & write_param) & (~ ((((((~ counter_type[3]) & (~ counter_type[2])) & (~ counter_type[1])) & counter_param[2]) & counter_param[1]) & counter_param[0]))); + // synopsys translate_off + initial + write_nominal_state = 0; + // synopsys translate_on + always @ ( posedge clock or posedge reset) + if (reset == 1'b1) write_nominal_state <= 1'b0; + else write_nominal_state <= (write_init_nominal_state | (write_nominal_state & (~ width_counter_done))); + lpm_add_sub add_sub5 + ( + .cin(1'b0), + .cout(), + .dataa({1'b0, shift_reg8[0:0], shift_reg7[0:0], shift_reg6[0:0], shift_reg5[0:0], shift_reg4[0:0], shift_reg3[0:0], shift_reg2[0:0], shift_reg1[0:0]}), + .datab({1'b0, shift_reg17[0:0], shift_reg16[0:0], shift_reg15[0:0], shift_reg14[0:0], shift_reg13[0:0], shift_reg12[0:0], shift_reg11[0:0], shift_reg10[0:0]}), + .overflow(), + .result(wire_add_sub5_result) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr(1'b0), + .add_sub(1'b1), + .clken(1'b1), + .clock(1'b0) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + add_sub5.lpm_width = 9, + add_sub5.lpm_type = "lpm_add_sub"; + lpm_add_sub add_sub6 + ( + .cin(data_in[0]), + .cout(), + .dataa({data_in[8:1]}), + .overflow(), + .result(wire_add_sub6_result) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr(1'b0), + .add_sub(1'b1), + .clken(1'b1), + .clock(1'b0), + .datab({8{1'b0}}) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + add_sub6.lpm_width = 8, + add_sub6.lpm_type = "lpm_add_sub"; + lpm_compare cmpr7 + ( + .aeb(wire_cmpr7_aeb), + .agb(), + .ageb(), + .alb(), + .aleb(), + .aneb(), + .dataa({data_in[7:0]}), + .datab(8'b00000001) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr(1'b0), + .clken(1'b1), + .clock(1'b0) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + cmpr7.lpm_width = 8, + cmpr7.lpm_type = "lpm_compare"; + lpm_counter cntr1 + ( + .clock(clock), + .cnt_en(addr_counter_enable), + .cout(), + .data(addr_counter_sload_value), + .eq(), + .q(wire_cntr1_q), + .sload(addr_counter_sload) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr(1'b0), + .aload(1'b0), + .aset(1'b0), + .cin(1'b1), + .clk_en(1'b1), + .sclr(1'b0), + .sset(1'b0), + .updown(1'b1) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + cntr1.lpm_direction = "DOWN", + cntr1.lpm_modulus = 144, + cntr1.lpm_port_updown = "PORT_UNUSED", + cntr1.lpm_width = 8, + cntr1.lpm_type = "lpm_counter"; + lpm_counter cntr12 + ( + .clock(clock), + .cnt_en(reconfig_addr_counter_enable), + .cout(), + .data(reconfig_addr_counter_sload_value), + .eq(), + .q(wire_cntr12_q), + .sload(reconfig_addr_counter_sload) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr(1'b0), + .aload(1'b0), + .aset(1'b0), + .cin(1'b1), + .clk_en(1'b1), + .sclr(1'b0), + .sset(1'b0), + .updown(1'b1) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + cntr12.lpm_direction = "DOWN", + cntr12.lpm_modulus = 144, + cntr12.lpm_port_updown = "PORT_UNUSED", + cntr12.lpm_width = 8, + cntr12.lpm_type = "lpm_counter"; + lpm_counter cntr13 + ( + .clock(clock), + .cnt_en(reconfig_width_counter_enable), + .cout(), + .data(reconfig_width_counter_sload_value), + .eq(), + .q(wire_cntr13_q), + .sload(reconfig_width_counter_sload) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr(1'b0), + .aload(1'b0), + .aset(1'b0), + .cin(1'b1), + .clk_en(1'b1), + .sclr(1'b0), + .sset(1'b0), + .updown(1'b1) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + cntr13.lpm_direction = "DOWN", + cntr13.lpm_port_updown = "PORT_UNUSED", + cntr13.lpm_width = 6, + cntr13.lpm_type = "lpm_counter"; + lpm_counter cntr14 + ( + .clock(clock), + .cnt_en(rotate_width_counter_enable), + .cout(), + .data(rotate_width_counter_sload_value), + .eq(), + .q(wire_cntr14_q), + .sload(rotate_width_counter_sload) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr(1'b0), + .aload(1'b0), + .aset(1'b0), + .cin(1'b1), + .clk_en(1'b1), + .sclr(1'b0), + .sset(1'b0), + .updown(1'b1) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + cntr14.lpm_direction = "DOWN", + cntr14.lpm_port_updown = "PORT_UNUSED", + cntr14.lpm_width = 5, + cntr14.lpm_type = "lpm_counter"; + lpm_counter cntr15 + ( + .clock(clock), + .cnt_en(rotate_addr_counter_enable), + .cout(), + .data(rotate_addr_counter_sload_value), + .eq(), + .q(wire_cntr15_q), + .sload(rotate_addr_counter_sload) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr(1'b0), + .aload(1'b0), + .aset(1'b0), + .cin(1'b1), + .clk_en(1'b1), + .sclr(1'b0), + .sset(1'b0), + .updown(1'b1) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + cntr15.lpm_direction = "DOWN", + cntr15.lpm_modulus = 144, + cntr15.lpm_port_updown = "PORT_UNUSED", + cntr15.lpm_width = 8, + cntr15.lpm_type = "lpm_counter"; + lpm_counter cntr2 + ( + .clock(clock), + .cnt_en(read_addr_counter_enable), + .cout(), + .data(read_addr_counter_sload_value), + .eq(), + .q(wire_cntr2_q), + .sload(read_addr_counter_sload) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr(1'b0), + .aload(1'b0), + .aset(1'b0), + .cin(1'b1), + .clk_en(1'b1), + .sclr(1'b0), + .sset(1'b0), + .updown(1'b1) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + cntr2.lpm_direction = "UP", + cntr2.lpm_port_updown = "PORT_UNUSED", + cntr2.lpm_width = 8, + cntr2.lpm_type = "lpm_counter"; + lpm_counter cntr3 + ( + .clock(clock), + .cnt_en(width_counter_enable), + .cout(), + .data(width_counter_sload_value), + .eq(), + .q(wire_cntr3_q), + .sload(width_counter_sload) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr(1'b0), + .aload(1'b0), + .aset(1'b0), + .cin(1'b1), + .clk_en(1'b1), + .sclr(1'b0), + .sset(1'b0), + .updown(1'b1) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + cntr3.lpm_direction = "DOWN", + cntr3.lpm_port_updown = "PORT_UNUSED", + cntr3.lpm_width = 5, + cntr3.lpm_type = "lpm_counter"; + lpm_decode decode11 + ( + .data(cuda_combout_wire), + .eq(wire_decode11_eq) + `ifndef FORMAL_VERIFICATION + // synopsys translate_off + `endif + , + .aclr(1'b0), + .clken(1'b1), + .clock(1'b0), + .enable(1'b1) + `ifndef FORMAL_VERIFICATION + // synopsys translate_on + `endif + ); + defparam + decode11.lpm_decodes = 5, + decode11.lpm_width = 3, + decode11.lpm_type = "lpm_decode"; + assign + addr_counter_enable = (write_data_state | write_nominal_state), + addr_counter_out = wire_cntr1_q, + addr_counter_sload = (write_init_state | write_init_nominal_state), + addr_counter_sload_value = (addr_decoder_out & {8{(write_init_state | write_init_nominal_state)}}), + addr_decoder_out = ((((((((((((((((((((((((((((((((((({{7{1'b0}}, (sel_type_cplf & sel_param_bypass_LF_unused)} | {{6{1'b0}}, {2{(sel_type_cplf & sel_param_c)}}}) | {{4{1'b0}}, (sel_type_cplf & sel_param_low_r), {3{1'b0}}}) | {{4{1'b0}}, (sel_type_vco & sel_param_high_i_postscale), {2{1'b0}}, (sel_type_vco & sel_param_high_i_postscale)}) | {{4{1'b0}}, {3{(sel_type_cplf & sel_param_odd_CP_unused)}}, 1'b0}) | {{3{1'b0}}, (sel_type_cplf & sel_param_high_i_postscale), {3{1'b0}}, (sel_type_cplf & sel_param_high_i_postscale)}) | {{3{1'b0}}, (sel_type_n & sel_param_bypass_LF_unused), {2{1'b0}}, (sel_type_n & sel_param_bypass_LF_unused), 1'b0}) | {{3{1'b0}}, {2{(sel_type_n & sel_param_high_i_postscale)}}, 1'b0, (sel_type_n & sel_param_high_i_postscale), 1'b0}) | {{3{1'b0}}, {2{(sel_type_n & sel_param_odd_CP_unused)}}, 1'b0, {2{(sel_type_n & sel_param_odd_CP_unused)}}}) | {{2{1'b0}}, (sel_type_n & sel_param_low_r), {3{1'b0}}, {2{(sel_type_n & sel_param_low_r)}}}) | {{2{1'b0}}, (sel_type_n & sel_param_nominal_count), {3{1'b0}}, {2{(sel_type_n & sel_param_nominal_count)}}}) | {{2{1'b0}}, (sel_type_m & sel_param_bypass_LF_unused), {2{1'b0}}, (sel_type_m & sel_param_bypass_LF_unused), {2{1'b0}}}) | {{2{1'b0}}, (sel_type_m & sel_param_high_i_postscale), 1'b0, {2{(sel_type_m & sel_param_high_i_postscale)}}, {2{1'b0}}}) | {{2{1'b0}}, (sel_type_m & sel_param_odd_CP_unused), 1'b0, {2{(sel_type_m & sel_param_odd_CP_unused)}}, 1'b0, (sel_type_m & sel_param_odd_CP_unused)}) | {{2{1'b0}}, {2{(sel_type_m & sel_param_low_r)}}, 1'b0, (sel_type_m & sel_param_low_r), 1'b0, (sel_type_m & sel_param_low_r)}) | {{2{1'b0}}, {2{(sel_type_m & sel_param_nominal_count)}}, 1'b0, (sel_type_m & sel_param_nominal_count), 1'b0, (sel_type_m & sel_param_nominal_count)}) | {{2{1'b0}}, {2{(sel_type_c0 & sel_param_bypass_LF_unused)}}, 1'b0, {2{(sel_type_c0 & sel_param_bypass_LF_unused)}}, 1'b0}) | {{2{1'b0}}, {5{(sel_type_c0 & sel_param_high_i_postscale)}}, 1'b0}) | {{2{1'b0}}, {6{(sel_type_c0 & sel_param_odd_CP_unused)}}}) | {1'b0, (sel_type_c0 & sel_param_low_r +), {3{1'b0}}, {3{(sel_type_c0 & sel_param_low_r)}}}) | {1'b0, (sel_type_c1 & sel_param_bypass_LF_unused), {2{1'b0}}, (sel_type_c1 & sel_param_bypass_LF_unused), {3{1'b0}}}) | {1'b0, (sel_type_c1 & sel_param_high_i_postscale), 1'b0, (sel_type_c1 & sel_param_high_i_postscale), {4{1'b0}}}) | {1'b0, (sel_type_c1 & sel_param_odd_CP_unused), 1'b0, (sel_type_c1 & sel_param_odd_CP_unused), {3{1'b0}}, (sel_type_c1 & sel_param_odd_CP_unused)}) | {1'b0, (sel_type_c1 & sel_param_low_r), 1'b0, {2{(sel_type_c1 & sel_param_low_r)}}, {2{1'b0}}, (sel_type_c1 & sel_param_low_r)}) | {1'b0, (sel_type_c2 & sel_param_bypass_LF_unused), 1'b0, {2{(sel_type_c2 & sel_param_bypass_LF_unused)}}, 1'b0, (sel_type_c2 & sel_param_bypass_LF_unused), 1'b0}) | {1'b0, {2{(sel_type_c2 & sel_param_high_i_postscale)}}, {3{1'b0}}, (sel_type_c2 & sel_param_high_i_postscale), 1'b0}) | {1'b0, {2{(sel_type_c2 & sel_param_odd_CP_unused)}}, {3{1'b0}}, {2{(sel_type_c2 & sel_param_odd_CP_unused)}}}) | {1'b0, {2{(sel_type_c2 & sel_param_low_r)}}, 1'b0, (sel_type_c2 & sel_param_low_r), 1'b0, {2{(sel_type_c2 & sel_param_low_r)}}}) | {1'b0, {2{(sel_type_c3 & sel_param_bypass_LF_unused)}}, 1'b0, {2{(sel_type_c3 & sel_param_bypass_LF_unused)}}, {2{1'b0}}}) | {1'b0, {3{(sel_type_c3 & sel_param_high_i_postscale)}}, 1'b0, (sel_type_c3 & sel_param_high_i_postscale), {2{1'b0}}}) | {1'b0, {3{(sel_type_c3 & sel_param_odd_CP_unused)}}, 1'b0, (sel_type_c3 & sel_param_odd_CP_unused), 1'b0, (sel_type_c3 & sel_param_odd_CP_unused)}) | {1'b0, {5{(sel_type_c3 & sel_param_low_r)}}, 1'b0, (sel_type_c3 & sel_param_low_r)}) | {1'b0, {6{(sel_type_c4 & sel_param_bypass_LF_unused)}}, 1'b0}) | {(sel_type_c4 & sel_param_high_i_postscale), {4{1'b0}}, {2{(sel_type_c4 & sel_param_high_i_postscale)}}, 1'b0}) | {(sel_type_c4 & sel_param_odd_CP_unused), {4{1'b0}}, {3{(sel_type_c4 & sel_param_odd_CP_unused)}}}) | {(sel_type_c4 & sel_param_low_r), {3{1'b0}}, {4{(sel_type_c4 & sel_param_low_r)}}}), + busy = ((~ idle_state) | areset_state), + c0_wire = 8'b01000111, + c1_wire = 8'b01011001, + c2_wire = 8'b01101011, + c3_wire = 8'b01111101, + c4_wire = 8'b10001111, + counter_param_latch = counter_param_latch_reg, + counter_type_latch = counter_type_latch_reg, + cuda_combout_wire = {wire_le_comb10_combout, wire_le_comb9_combout, wire_le_comb8_combout}, + data_out = {((shift_reg8[0:0] & (~ read_nominal_out)) | (wire_add_sub5_result[8] & read_nominal_out)), ((shift_reg7[0:0] & (~ read_nominal_out)) | (wire_add_sub5_result[7] & read_nominal_out)), ((shift_reg6[0:0] & (~ read_nominal_out)) | (wire_add_sub5_result[6] & read_nominal_out)), ((shift_reg5[0:0] & (~ read_nominal_out)) | (wire_add_sub5_result[5] & read_nominal_out)), ((shift_reg4[0:0] & (~ read_nominal_out)) | (wire_add_sub5_result[4] & read_nominal_out)), ((shift_reg3[0:0] & (~ read_nominal_out)) | (wire_add_sub5_result[3] & read_nominal_out)), ((shift_reg2[0:0] & (~ read_nominal_out)) | (wire_add_sub5_result[2] & read_nominal_out)), ((shift_reg1[0:0] & (~ read_nominal_out)) | (wire_add_sub5_result[1] & read_nominal_out)), ((shift_reg0[0:0] & (~ read_nominal_out)) | (wire_add_sub5_result[0] & read_nominal_out))}, + dummy_scandataout = pll_scandataout, + encode_out = {C4_ena_state, (C2_ena_state | C3_ena_state), (C1_ena_state | C3_ena_state)}, + input_latch_enable = (idle_state & (write_param | read_param)), + pll_areset = (pll_areset_in | (areset_state & reconfig_wait_state)), + pll_configupdate = (configupdate_state & (~ configupdate3_state)), + pll_scanclk = clock, + pll_scanclkena = ((rotate_width_counter_enable & (~ rotate_width_counter_done)) | reconfig_seq_data_state), + pll_scandata = (scan_cache_out & ((rotate_width_counter_enable | reconfig_seq_data_state) | reconfig_post_state)), + power_up = ((((((((((((((((((((~ reset_state) & (~ idle_state)) & (~ read_init_state)) & (~ read_first_state)) & (~ read_data_state)) & (~ read_last_state)) & (~ read_init_nominal_state)) & (~ read_first_nominal_state)) & (~ read_data_nominal_state)) & (~ read_last_nominal_state)) & (~ write_init_state)) & (~ write_data_state)) & (~ write_init_nominal_state)) & (~ write_nominal_state)) & (~ reconfig_init_state)) & (~ reconfig_counter_state)) & (~ reconfig_seq_ena_state)) & (~ reconfig_seq_data_state)) & (~ reconfig_post_state)) & (~ reconfig_wait_state)), + read_addr_counter_enable = (((read_first_state | read_data_state) | read_first_nominal_state) | read_data_nominal_state), + read_addr_counter_out = wire_cntr2_q, + read_addr_counter_sload = (read_init_state | read_init_nominal_state), + read_addr_counter_sload_value = (read_addr_decoder_out & {8{(read_init_state | read_init_nominal_state)}}), + read_addr_decoder_out = ((((((((((((((((((((((((((((((((((({8{1'b0}} | {{6{1'b0}}, (sel_type_cplf & sel_param_c), 1'b0}) | {{5{1'b0}}, (sel_type_cplf & sel_param_low_r), {2{1'b0}}}) | {{4{1'b0}}, (sel_type_vco & sel_param_high_i_postscale), {2{1'b0}}, (sel_type_vco & sel_param_high_i_postscale)}) | {{4{1'b0}}, (sel_type_cplf & sel_param_odd_CP_unused), 1'b0, (sel_type_cplf & sel_param_odd_CP_unused), 1'b0}) | {{4{1'b0}}, {4{(sel_type_cplf & sel_param_high_i_postscale)}}}) | {{3{1'b0}}, (sel_type_n & sel_param_bypass_LF_unused), {2{1'b0}}, (sel_type_n & sel_param_bypass_LF_unused), 1'b0}) | {{3{1'b0}}, (sel_type_n & sel_param_high_i_postscale), {2{1'b0}}, {2{(sel_type_n & sel_param_high_i_postscale)}}}) | {{3{1'b0}}, {2{(sel_type_n & sel_param_odd_CP_unused)}}, 1'b0, {2{(sel_type_n & sel_param_odd_CP_unused)}}}) | {{3{1'b0}}, {3{(sel_type_n & sel_param_low_r)}}, {2{1'b0}}}) | {{3{1'b0}}, (sel_type_n & sel_param_nominal_count), {2{1'b0}}, (sel_type_n & sel_param_nominal_count), 1'b0}) | {{2{1'b0}}, (sel_type_m & sel_param_bypass_LF_unused), {2{1'b0}}, (sel_type_m & sel_param_bypass_LF_unused), {2{1'b0}}}) | {{2{1'b0}}, (sel_type_m & sel_param_high_i_postscale), {2{1'b0}}, (sel_type_m & sel_param_high_i_postscale), 1'b0, (sel_type_m & sel_param_high_i_postscale)}) | {{2{1'b0}}, (sel_type_m & sel_param_odd_CP_unused), 1'b0, {2{(sel_type_m & sel_param_odd_CP_unused)}}, 1'b0, (sel_type_m & sel_param_odd_CP_unused)}) | {{2{1'b0}}, (sel_type_m & sel_param_low_r), 1'b0, {3{(sel_type_m & sel_param_low_r)}}, 1'b0}) | {{2{1'b0}}, (sel_type_m & sel_param_nominal_count), {2{1'b0}}, (sel_type_m & sel_param_nominal_count), {2{1'b0}}}) | {{2{1'b0}}, {2{(sel_type_c0 & sel_param_bypass_LF_unused)}}, 1'b0, {2{(sel_type_c0 & sel_param_bypass_LF_unused)}}, 1'b0}) | {{2{1'b0}}, {2{(sel_type_c0 & sel_param_high_i_postscale)}}, 1'b0, {3{(sel_type_c0 & sel_param_high_i_postscale)}}}) | {{2{1'b0}}, {6{(sel_type_c0 & sel_param_odd_CP_unused)}}}) | {1'b0, (sel_type_c0 & sel_param_low_r), {6{1'b0}}}) | {1'b0, (sel_type_c1 & sel_param_bypass_LF_unused +), {2{1'b0}}, (sel_type_c1 & sel_param_bypass_LF_unused), {3{1'b0}}}) | {1'b0, (sel_type_c1 & sel_param_high_i_postscale), {2{1'b0}}, (sel_type_c1 & sel_param_high_i_postscale), {2{1'b0}}, (sel_type_c1 & sel_param_high_i_postscale)}) | {1'b0, (sel_type_c1 & sel_param_odd_CP_unused), 1'b0, (sel_type_c1 & sel_param_odd_CP_unused), {3{1'b0}}, (sel_type_c1 & sel_param_odd_CP_unused)}) | {1'b0, (sel_type_c1 & sel_param_low_r), 1'b0, (sel_type_c1 & sel_param_low_r), {2{1'b0}}, (sel_type_c1 & sel_param_low_r), 1'b0}) | {1'b0, (sel_type_c2 & sel_param_bypass_LF_unused), 1'b0, {2{(sel_type_c2 & sel_param_bypass_LF_unused)}}, 1'b0, (sel_type_c2 & sel_param_bypass_LF_unused), 1'b0}) | {1'b0, (sel_type_c2 & sel_param_high_i_postscale), 1'b0, {2{(sel_type_c2 & sel_param_high_i_postscale)}}, 1'b0, {2{(sel_type_c2 & sel_param_high_i_postscale)}}}) | {1'b0, {2{(sel_type_c2 & sel_param_odd_CP_unused)}}, {3{1'b0}}, {2{(sel_type_c2 & sel_param_odd_CP_unused)}}}) | {1'b0, {2{(sel_type_c2 & sel_param_low_r)}}, {2{1'b0}}, (sel_type_c2 & sel_param_low_r), {2{1'b0}}}) | {1'b0, {2{(sel_type_c3 & sel_param_bypass_LF_unused)}}, 1'b0, {2{(sel_type_c3 & sel_param_bypass_LF_unused)}}, {2{1'b0}}}) | {1'b0, {2{(sel_type_c3 & sel_param_high_i_postscale)}}, 1'b0, {2{(sel_type_c3 & sel_param_high_i_postscale)}}, 1'b0, (sel_type_c3 & sel_param_high_i_postscale)}) | {1'b0, {3{(sel_type_c3 & sel_param_odd_CP_unused)}}, 1'b0, (sel_type_c3 & sel_param_odd_CP_unused), 1'b0, (sel_type_c3 & sel_param_odd_CP_unused)}) | {1'b0, {3{(sel_type_c3 & sel_param_low_r)}}, 1'b0, {2{(sel_type_c3 & sel_param_low_r)}}, 1'b0}) | {1'b0, {6{(sel_type_c4 & sel_param_bypass_LF_unused)}}, 1'b0}) | {1'b0, {7{(sel_type_c4 & sel_param_high_i_postscale)}}}) | {(sel_type_c4 & sel_param_odd_CP_unused), {4{1'b0}}, {3{(sel_type_c4 & sel_param_odd_CP_unused)}}}) | {(sel_type_c4 & sel_param_low_r), {3{1'b0}}, (sel_type_c4 & sel_param_low_r), {3{1'b0}}}), + read_nominal_out = tmp_nominal_data_out_state, + reconfig_addr_counter_enable = reconfig_seq_data_state, + reconfig_addr_counter_out = wire_cntr12_q, + reconfig_addr_counter_sload = reconfig_seq_ena_state, + reconfig_addr_counter_sload_value = ({8{reconfig_seq_ena_state}} & seq_addr_wire), + reconfig_done = ((~ pll_scandone) & (dummy_scandataout | (~ dummy_scandataout))), + reconfig_post_done = pll_scandone, + reconfig_width_counter_done = ((((((~ wire_cntr13_q[0]) & (~ wire_cntr13_q[1])) & (~ wire_cntr13_q[2])) & (~ wire_cntr13_q[3])) & (~ wire_cntr13_q[4])) & (~ wire_cntr13_q[5])), + reconfig_width_counter_enable = reconfig_seq_data_state, + reconfig_width_counter_sload = reconfig_seq_ena_state, + reconfig_width_counter_sload_value = ({6{reconfig_seq_ena_state}} & seq_sload_value), + rotate_addr_counter_enable = ((((C0_data_state | C1_data_state) | C2_data_state) | C3_data_state) | C4_data_state), + rotate_addr_counter_out = wire_cntr15_q, + rotate_addr_counter_sload = ((((C0_ena_state | C1_ena_state) | C2_ena_state) | C3_ena_state) | C4_ena_state), + rotate_addr_counter_sload_value = (((((c0_wire & {8{rotate_decoder_wires[0]}}) | (c1_wire & {8{rotate_decoder_wires[1]}})) | (c2_wire & {8{rotate_decoder_wires[2]}})) | (c3_wire & {8{rotate_decoder_wires[3]}})) | (c4_wire & {8{rotate_decoder_wires[4]}})), + rotate_decoder_wires = wire_decode11_eq, + rotate_width_counter_done = (((((~ wire_cntr14_q[0]) & (~ wire_cntr14_q[1])) & (~ wire_cntr14_q[2])) & (~ wire_cntr14_q[3])) & (~ wire_cntr14_q[4])), + rotate_width_counter_enable = ((((C0_data_state | C1_data_state) | C2_data_state) | C3_data_state) | C4_data_state), + rotate_width_counter_sload = ((((C0_ena_state | C1_ena_state) | C2_ena_state) | C3_ena_state) | C4_ena_state), + rotate_width_counter_sload_value = 5'b10010, + scan_cache_address = ((((addr_counter_out & {8{addr_counter_enable}}) | (read_addr_counter_out & {8{read_addr_counter_enable}})) | (rotate_addr_counter_out & {8{rotate_addr_counter_enable}})) | (reconfig_addr_counter_out & {8{reconfig_addr_counter_enable}})), + scan_cache_in = shift_reg_serial_out, + scan_cache_out = wire_altsyncram4_q_a[0], + scan_cache_write_enable = (write_data_state | write_nominal_state), + sel_param_bypass_LF_unused = (((~ counter_param_latch[0]) & (~ counter_param_latch[1])) & counter_param_latch[2]), + sel_param_c = (((~ counter_param_latch[0]) & counter_param_latch[1]) & (~ counter_param_latch[2])), + sel_param_high_i_postscale = (((~ counter_param_latch[0]) & (~ counter_param_latch[1])) & (~ counter_param_latch[2])), + sel_param_low_r = ((counter_param_latch[0] & (~ counter_param_latch[1])) & (~ counter_param_latch[2])), + sel_param_nominal_count = ((counter_param_latch[0] & counter_param_latch[1]) & counter_param_latch[2]), + sel_param_odd_CP_unused = ((counter_param_latch[0] & (~ counter_param_latch[1])) & counter_param_latch[2]), + sel_type_c0 = ((((~ counter_type_latch[0]) & (~ counter_type_latch[1])) & counter_type_latch[2]) & (~ counter_type_latch[3])), + sel_type_c1 = (((counter_type_latch[0] & (~ counter_type_latch[1])) & counter_type_latch[2]) & (~ counter_type_latch[3])), + sel_type_c2 = ((((~ counter_type_latch[0]) & counter_type_latch[1]) & counter_type_latch[2]) & (~ counter_type_latch[3])), + sel_type_c3 = (((counter_type_latch[0] & counter_type_latch[1]) & counter_type_latch[2]) & (~ counter_type_latch[3])), + sel_type_c4 = ((((~ counter_type_latch[0]) & (~ counter_type_latch[1])) & (~ counter_type_latch[2])) & counter_type_latch[3]), + sel_type_cplf = ((((~ counter_type_latch[0]) & counter_type_latch[1]) & (~ counter_type_latch[2])) & (~ counter_type_latch[3])), + sel_type_m = (((counter_type_latch[0] & (~ counter_type_latch[1])) & (~ counter_type_latch[2])) & (~ counter_type_latch[3])), + sel_type_n = ((((~ counter_type_latch[0]) & (~ counter_type_latch[1])) & (~ counter_type_latch[2])) & (~ counter_type_latch[3])), + sel_type_vco = (((counter_type_latch[0] & counter_type_latch[1]) & (~ counter_type_latch[2])) & (~ counter_type_latch[3])), + seq_addr_wire = 8'b00110101, + seq_sload_value = 6'b110110, + shift_reg_clear = (read_init_state | read_init_nominal_state), + shift_reg_load_enable = ((idle_state & write_param) & (~ ((((((~ counter_type[3]) & (~ counter_type[2])) & (~ counter_type[1])) & counter_param[2]) & counter_param[1]) & counter_param[0]))), + shift_reg_load_nominal_enable = ((idle_state & write_param) & ((((((~ counter_type[3]) & (~ counter_type[2])) & (~ counter_type[1])) & counter_param[2]) & counter_param[1]) & counter_param[0])), + shift_reg_serial_in = scan_cache_out, + shift_reg_serial_out = ((((((((shift_reg17[0:0] & shift_reg_width_select[0]) | (shift_reg17[0:0] & shift_reg_width_select[1])) | (shift_reg17[0:0] & shift_reg_width_select[2])) | (shift_reg17[0:0] & shift_reg_width_select[3])) | (shift_reg17[0:0] & shift_reg_width_select[4])) | (shift_reg17[0:0] & shift_reg_width_select[5])) | (shift_reg17[0:0] & shift_reg_width_select[6])) | (shift_reg17[0:0] & shift_reg_width_select[7])), + shift_reg_shift_enable = ((read_data_state | read_last_state) | write_data_state), + shift_reg_shift_nominal_enable = ((read_data_nominal_state | read_last_nominal_state) | write_nominal_state), + shift_reg_width_select = width_decoder_select, + w1565w = 1'b0, + w1592w = 1'b0, + w64w = 1'b0, + width_counter_done = (((((~ wire_cntr3_q[0]) & (~ wire_cntr3_q[1])) & (~ wire_cntr3_q[2])) & (~ wire_cntr3_q[3])) & (~ wire_cntr3_q[4])), + width_counter_enable = ((((read_first_state | read_data_state) | write_data_state) | read_data_nominal_state) | write_nominal_state), + width_counter_sload = (((read_init_state | write_init_state) | read_init_nominal_state) | write_init_nominal_state), + width_counter_sload_value = width_decoder_out, + width_decoder_out = ((((({5{1'b0}} | {width_decoder_select[2], {3{1'b0}}, width_decoder_select[2]}) | {{4{1'b0}}, width_decoder_select[3]}) | {{2{1'b0}}, {3{width_decoder_select[5]}}}) | {{3{1'b0}}, width_decoder_select[6], 1'b0}) | {{2{1'b0}}, width_decoder_select[7], {2{1'b0}}}), + width_decoder_select = {((sel_type_cplf & sel_param_low_r) | (sel_type_cplf & sel_param_odd_CP_unused)), (sel_type_cplf & sel_param_high_i_postscale), ((((((((((((((sel_type_n & sel_param_high_i_postscale) | (sel_type_n & sel_param_low_r)) | (sel_type_m & sel_param_high_i_postscale)) | (sel_type_m & sel_param_low_r)) | (sel_type_c0 & sel_param_high_i_postscale)) | (sel_type_c0 & sel_param_low_r)) | (sel_type_c1 & sel_param_high_i_postscale)) | (sel_type_c1 & sel_param_low_r)) | (sel_type_c2 & sel_param_high_i_postscale)) | (sel_type_c2 & sel_param_low_r)) | (sel_type_c3 & sel_param_high_i_postscale)) | (sel_type_c3 & sel_param_low_r)) | (sel_type_c4 & sel_param_high_i_postscale)) | (sel_type_c4 & sel_param_low_r)), w1592w, ((sel_type_cplf & sel_param_bypass_LF_unused) | (sel_type_cplf & sel_param_c)), ((sel_type_n & sel_param_nominal_count) | (sel_type_m & sel_param_nominal_count)), w1565w, (((((((((((((((sel_type_vco & sel_param_high_i_postscale) | (sel_type_n & sel_param_bypass_LF_unused)) | (sel_type_n & sel_param_odd_CP_unused)) | (sel_type_m & sel_param_bypass_LF_unused)) | (sel_type_m & sel_param_odd_CP_unused)) | (sel_type_c0 & sel_param_bypass_LF_unused)) | (sel_type_c0 & sel_param_odd_CP_unused)) | (sel_type_c1 & sel_param_bypass_LF_unused)) | (sel_type_c1 & sel_param_odd_CP_unused)) | (sel_type_c2 & sel_param_bypass_LF_unused)) | (sel_type_c2 & sel_param_odd_CP_unused)) | (sel_type_c3 & sel_param_bypass_LF_unused)) | (sel_type_c3 & sel_param_odd_CP_unused)) | (sel_type_c4 & sel_param_bypass_LF_unused)) | (sel_type_c4 & sel_param_odd_CP_unused))}, + write_from_rom = 1'b0; +endmodule //altpll_reconfig1_pllrcfg_t4q +//VALID FILE + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module altpll_reconfig1 ( + clock, + counter_param, + counter_type, + data_in, + pll_areset_in, + pll_scandataout, + pll_scandone, + read_param, + reconfig, + reset, + write_param, + busy, + data_out, + pll_areset, + pll_configupdate, + pll_scanclk, + pll_scanclkena, + pll_scandata)/* synthesis synthesis_clearbox = 2 */; + + input clock; + input [2:0] counter_param; + input [3:0] counter_type; + input [8:0] data_in; + input pll_areset_in; + input pll_scandataout; + input pll_scandone; + input read_param; + input reconfig; + input reset; + input write_param; + output busy; + output [8:0] data_out; + output pll_areset; + output pll_configupdate; + output pll_scanclk; + output pll_scanclkena; + output pll_scandata; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri0 pll_areset_in; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire sub_wire0; + wire [8:0] sub_wire1; + wire sub_wire2; + wire sub_wire3; + wire sub_wire4; + wire sub_wire5; + wire sub_wire6; + wire pll_configupdate = sub_wire0; + wire [8:0] data_out = sub_wire1[8:0]; + wire pll_scanclk = sub_wire2; + wire pll_scanclkena = sub_wire3; + wire pll_scandata = sub_wire4; + wire busy = sub_wire5; + wire pll_areset = sub_wire6; + + altpll_reconfig1_pllrcfg_t4q altpll_reconfig1_pllrcfg_t4q_component ( + .counter_param (counter_param), + .data_in (data_in), + .counter_type (counter_type), + .pll_areset_in (pll_areset_in), + .reconfig (reconfig), + .pll_scandataout (pll_scandataout), + .pll_scandone (pll_scandone), + .reset (reset), + .write_param (write_param), + .clock (clock), + .read_param (read_param), + .pll_configupdate (sub_wire0), + .data_out (sub_wire1), + .pll_scanclk (sub_wire2), + .pll_scanclkena (sub_wire3), + .pll_scandata (sub_wire4), + .busy (sub_wire5), + .pll_areset (sub_wire6))/* synthesis synthesis_clearbox=2 + clearbox_macroname = altpll_reconfig + clearbox_defparam = "intended_device_family=Cyclone III;" */; + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: CHAIN_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: INIT_FILE_NAME STRING "./altpll4.mif" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_INIT_FILE STRING "0" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: USED_PORT: busy 0 0 0 0 OUTPUT NODEFVAL "busy" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: counter_param 0 0 3 0 INPUT NODEFVAL "counter_param[2..0]" +// Retrieval info: USED_PORT: counter_type 0 0 4 0 INPUT NODEFVAL "counter_type[3..0]" +// Retrieval info: USED_PORT: data_in 0 0 9 0 INPUT NODEFVAL "data_in[8..0]" +// Retrieval info: USED_PORT: data_out 0 0 9 0 OUTPUT NODEFVAL "data_out[8..0]" +// Retrieval info: USED_PORT: pll_areset 0 0 0 0 OUTPUT NODEFVAL "pll_areset" +// Retrieval info: USED_PORT: pll_areset_in 0 0 0 0 INPUT GND "pll_areset_in" +// Retrieval info: USED_PORT: pll_configupdate 0 0 0 0 OUTPUT NODEFVAL "pll_configupdate" +// Retrieval info: USED_PORT: pll_scanclk 0 0 0 0 OUTPUT NODEFVAL "pll_scanclk" +// Retrieval info: USED_PORT: pll_scanclkena 0 0 0 0 OUTPUT NODEFVAL "pll_scanclkena" +// Retrieval info: USED_PORT: pll_scandata 0 0 0 0 OUTPUT NODEFVAL "pll_scandata" +// Retrieval info: USED_PORT: pll_scandataout 0 0 0 0 INPUT NODEFVAL "pll_scandataout" +// Retrieval info: USED_PORT: pll_scandone 0 0 0 0 INPUT NODEFVAL "pll_scandone" +// Retrieval info: USED_PORT: read_param 0 0 0 0 INPUT NODEFVAL "read_param" +// Retrieval info: USED_PORT: reconfig 0 0 0 0 INPUT NODEFVAL "reconfig" +// Retrieval info: USED_PORT: reset 0 0 0 0 INPUT NODEFVAL "reset" +// Retrieval info: USED_PORT: write_param 0 0 0 0 INPUT NODEFVAL "write_param" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @counter_param 0 0 3 0 counter_param 0 0 3 0 +// Retrieval info: CONNECT: @counter_type 0 0 4 0 counter_type 0 0 4 0 +// Retrieval info: CONNECT: @data_in 0 0 9 0 data_in 0 0 9 0 +// Retrieval info: CONNECT: @pll_areset_in 0 0 0 0 pll_areset_in 0 0 0 0 +// Retrieval info: CONNECT: @pll_scandataout 0 0 0 0 pll_scandataout 0 0 0 0 +// Retrieval info: CONNECT: @pll_scandone 0 0 0 0 pll_scandone 0 0 0 0 +// Retrieval info: CONNECT: @read_param 0 0 0 0 read_param 0 0 0 0 +// Retrieval info: CONNECT: @reconfig 0 0 0 0 reconfig 0 0 0 0 +// Retrieval info: CONNECT: @reset 0 0 0 0 reset 0 0 0 0 +// Retrieval info: CONNECT: @write_param 0 0 0 0 write_param 0 0 0 0 +// Retrieval info: CONNECT: busy 0 0 0 0 @busy 0 0 0 0 +// Retrieval info: CONNECT: data_out 0 0 9 0 @data_out 0 0 9 0 +// Retrieval info: CONNECT: pll_areset 0 0 0 0 @pll_areset 0 0 0 0 +// Retrieval info: CONNECT: pll_configupdate 0 0 0 0 @pll_configupdate 0 0 0 0 +// Retrieval info: CONNECT: pll_scanclk 0 0 0 0 @pll_scanclk 0 0 0 0 +// Retrieval info: CONNECT: pll_scanclkena 0 0 0 0 @pll_scanclkena 0 0 0 0 +// Retrieval info: CONNECT: pll_scandata 0 0 0 0 @pll_scandata 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf +// Retrieval info: LIB_FILE: cycloneiii +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/dcfifo0.qip b/FPGA_by_Gregory_Estrade/altip/dcfifo0.qip new file mode 100644 index 0000000..20e0f73 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/dcfifo0.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "FIFO" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "dcfifo0.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/dcfifo0.v b/FPGA_by_Gregory_Estrade/altip/dcfifo0.v new file mode 100644 index 0000000..21f5631 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/dcfifo0.v @@ -0,0 +1,177 @@ +// megafunction wizard: %FIFO% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: dcfifo_mixed_widths + +// ============================================================ +// File Name: dcfifo0.v +// Megafunction Name(s): +// dcfifo_mixed_widths +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module dcfifo0 ( + aclr, + data, + rdclk, + rdreq, + wrclk, + wrreq, + q, + wrusedw); + + input aclr; + input [7:0] data; + input rdclk; + input rdreq; + input wrclk; + input wrreq; + output [31:0] q; + output [9:0] wrusedw; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri0 aclr; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire [31:0] sub_wire0; + wire [9:0] sub_wire1; + wire [31:0] q = sub_wire0[31:0]; + wire [9:0] wrusedw = sub_wire1[9:0]; + + dcfifo_mixed_widths dcfifo_mixed_widths_component ( + .aclr (aclr), + .data (data), + .rdclk (rdclk), + .rdreq (rdreq), + .wrclk (wrclk), + .wrreq (wrreq), + .q (sub_wire0), + .wrusedw (sub_wire1), + .rdempty (), + .rdfull (), + .rdusedw (), + .wrempty (), + .wrfull ()); + defparam + dcfifo_mixed_widths_component.intended_device_family = "Cyclone III", + dcfifo_mixed_widths_component.lpm_numwords = 1024, + dcfifo_mixed_widths_component.lpm_showahead = "OFF", + dcfifo_mixed_widths_component.lpm_type = "dcfifo_mixed_widths", + dcfifo_mixed_widths_component.lpm_width = 8, + dcfifo_mixed_widths_component.lpm_widthu = 10, + dcfifo_mixed_widths_component.lpm_widthu_r = 8, + dcfifo_mixed_widths_component.lpm_width_r = 32, + dcfifo_mixed_widths_component.overflow_checking = "ON", + dcfifo_mixed_widths_component.rdsync_delaypipe = 5, + dcfifo_mixed_widths_component.read_aclr_synch = "OFF", + dcfifo_mixed_widths_component.underflow_checking = "ON", + dcfifo_mixed_widths_component.use_eab = "ON", + dcfifo_mixed_widths_component.write_aclr_synch = "OFF", + dcfifo_mixed_widths_component.wrsync_delaypipe = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +// Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +// Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +// Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +// Retrieval info: PRIVATE: Clock NUMERIC "4" +// Retrieval info: PRIVATE: Depth NUMERIC "1024" +// Retrieval info: PRIVATE: Empty NUMERIC "1" +// Retrieval info: PRIVATE: Full NUMERIC "1" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +// Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +// Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +// Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +// Retrieval info: PRIVATE: Optimize NUMERIC "2" +// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +// Retrieval info: PRIVATE: UsedW NUMERIC "1" +// Retrieval info: PRIVATE: Width NUMERIC "8" +// Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +// Retrieval info: PRIVATE: diff_widths NUMERIC "1" +// Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +// Retrieval info: PRIVATE: output_width NUMERIC "32" +// Retrieval info: PRIVATE: rsEmpty NUMERIC "0" +// Retrieval info: PRIVATE: rsFull NUMERIC "0" +// Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +// Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +// Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +// Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +// Retrieval info: PRIVATE: wsFull NUMERIC "0" +// Retrieval info: PRIVATE: wsUsedW NUMERIC "1" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "1024" +// Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +// Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo_mixed_widths" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +// Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "10" +// Retrieval info: CONSTANT: LPM_WIDTHU_R NUMERIC "8" +// Retrieval info: CONSTANT: LPM_WIDTH_R NUMERIC "32" +// Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +// Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "5" +// Retrieval info: CONSTANT: READ_ACLR_SYNCH STRING "OFF" +// Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +// Retrieval info: CONSTANT: USE_EAB STRING "ON" +// Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF" +// Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "5" +// Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND "aclr" +// Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL "data[7..0]" +// Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL "q[31..0]" +// Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL "rdclk" +// Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq" +// Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL "wrclk" +// Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq" +// Retrieval info: USED_PORT: wrusedw 0 0 10 0 OUTPUT NODEFVAL "wrusedw[9..0]" +// Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +// Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +// Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +// Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +// Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +// Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +// Retrieval info: CONNECT: wrusedw 0 0 10 0 @wrusedw 0 0 10 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/dcfifo1.qip b/FPGA_by_Gregory_Estrade/altip/dcfifo1.qip new file mode 100644 index 0000000..1be546a --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/dcfifo1.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "FIFO" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "dcfifo1.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/dcfifo1.v b/FPGA_by_Gregory_Estrade/altip/dcfifo1.v new file mode 100644 index 0000000..07b21d8 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/dcfifo1.v @@ -0,0 +1,177 @@ +// megafunction wizard: %FIFO% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: dcfifo_mixed_widths + +// ============================================================ +// File Name: dcfifo1.v +// Megafunction Name(s): +// dcfifo_mixed_widths +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module dcfifo1 ( + aclr, + data, + rdclk, + rdreq, + wrclk, + wrreq, + q, + rdusedw); + + input aclr; + input [31:0] data; + input rdclk; + input rdreq; + input wrclk; + input wrreq; + output [7:0] q; + output [9:0] rdusedw; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri0 aclr; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire [9:0] sub_wire0; + wire [7:0] sub_wire1; + wire [9:0] rdusedw = sub_wire0[9:0]; + wire [7:0] q = sub_wire1[7:0]; + + dcfifo_mixed_widths dcfifo_mixed_widths_component ( + .aclr (aclr), + .data (data), + .rdclk (rdclk), + .rdreq (rdreq), + .wrclk (wrclk), + .wrreq (wrreq), + .rdusedw (sub_wire0), + .q (sub_wire1), + .rdempty (), + .rdfull (), + .wrempty (), + .wrfull (), + .wrusedw ()); + defparam + dcfifo_mixed_widths_component.intended_device_family = "Cyclone III", + dcfifo_mixed_widths_component.lpm_numwords = 256, + dcfifo_mixed_widths_component.lpm_showahead = "OFF", + dcfifo_mixed_widths_component.lpm_type = "dcfifo_mixed_widths", + dcfifo_mixed_widths_component.lpm_width = 32, + dcfifo_mixed_widths_component.lpm_widthu = 8, + dcfifo_mixed_widths_component.lpm_widthu_r = 10, + dcfifo_mixed_widths_component.lpm_width_r = 8, + dcfifo_mixed_widths_component.overflow_checking = "ON", + dcfifo_mixed_widths_component.rdsync_delaypipe = 5, + dcfifo_mixed_widths_component.read_aclr_synch = "OFF", + dcfifo_mixed_widths_component.underflow_checking = "ON", + dcfifo_mixed_widths_component.use_eab = "ON", + dcfifo_mixed_widths_component.write_aclr_synch = "OFF", + dcfifo_mixed_widths_component.wrsync_delaypipe = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +// Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +// Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +// Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +// Retrieval info: PRIVATE: Clock NUMERIC "4" +// Retrieval info: PRIVATE: Depth NUMERIC "256" +// Retrieval info: PRIVATE: Empty NUMERIC "1" +// Retrieval info: PRIVATE: Full NUMERIC "1" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +// Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +// Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +// Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +// Retrieval info: PRIVATE: Optimize NUMERIC "2" +// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +// Retrieval info: PRIVATE: UsedW NUMERIC "1" +// Retrieval info: PRIVATE: Width NUMERIC "32" +// Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +// Retrieval info: PRIVATE: diff_widths NUMERIC "1" +// Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +// Retrieval info: PRIVATE: output_width NUMERIC "8" +// Retrieval info: PRIVATE: rsEmpty NUMERIC "0" +// Retrieval info: PRIVATE: rsFull NUMERIC "0" +// Retrieval info: PRIVATE: rsUsedW NUMERIC "1" +// Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +// Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +// Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +// Retrieval info: PRIVATE: wsFull NUMERIC "0" +// Retrieval info: PRIVATE: wsUsedW NUMERIC "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "256" +// Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +// Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo_mixed_widths" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +// Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "8" +// Retrieval info: CONSTANT: LPM_WIDTHU_R NUMERIC "10" +// Retrieval info: CONSTANT: LPM_WIDTH_R NUMERIC "8" +// Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +// Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "5" +// Retrieval info: CONSTANT: READ_ACLR_SYNCH STRING "OFF" +// Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +// Retrieval info: CONSTANT: USE_EAB STRING "ON" +// Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF" +// Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "5" +// Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND "aclr" +// Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL "data[31..0]" +// Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]" +// Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL "rdclk" +// Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq" +// Retrieval info: USED_PORT: rdusedw 0 0 10 0 OUTPUT NODEFVAL "rdusedw[9..0]" +// Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL "wrclk" +// Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq" +// Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +// Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +// Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +// Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +// Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +// Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0 +// Retrieval info: CONNECT: rdusedw 0 0 10 0 @rdusedw 0 0 10 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_compare1.qip b/FPGA_by_Gregory_Estrade/altip/lpm_compare1.qip new file mode 100644 index 0000000..efe3025 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_compare1.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_COMPARE" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_compare1.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_compare1.v b/FPGA_by_Gregory_Estrade/altip/lpm_compare1.v new file mode 100644 index 0000000..9348467 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_compare1.v @@ -0,0 +1,108 @@ +// megafunction wizard: %LPM_COMPARE% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_COMPARE + +// ============================================================ +// File Name: lpm_compare1.v +// Megafunction Name(s): +// LPM_COMPARE +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_compare1 ( + dataa, + datab, + agb); + + input [10:0] dataa; + input [10:0] datab; + output agb; + + wire sub_wire0; + wire agb = sub_wire0; + + lpm_compare LPM_COMPARE_component ( + .dataa (dataa), + .datab (datab), + .agb (sub_wire0), + .aclr (1'b0), + .aeb (), + .ageb (), + .alb (), + .aleb (), + .aneb (), + .clken (1'b1), + .clock (1'b0)); + defparam + LPM_COMPARE_component.lpm_representation = "UNSIGNED", + LPM_COMPARE_component.lpm_type = "LPM_COMPARE", + LPM_COMPARE_component.lpm_width = 11; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: AeqB NUMERIC "0" +// Retrieval info: PRIVATE: AgeB NUMERIC "0" +// Retrieval info: PRIVATE: AgtB NUMERIC "1" +// Retrieval info: PRIVATE: AleB NUMERIC "0" +// Retrieval info: PRIVATE: AltB NUMERIC "0" +// Retrieval info: PRIVATE: AneB NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LPM_PIPELINE NUMERIC "0" +// Retrieval info: PRIVATE: Latency NUMERIC "0" +// Retrieval info: PRIVATE: PortBValue NUMERIC "0" +// Retrieval info: PRIVATE: Radix NUMERIC "10" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: SignedCompare NUMERIC "0" +// Retrieval info: PRIVATE: aclr NUMERIC "0" +// Retrieval info: PRIVATE: clken NUMERIC "0" +// Retrieval info: PRIVATE: isPortBConstant NUMERIC "0" +// Retrieval info: PRIVATE: nBit NUMERIC "11" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_REPRESENTATION STRING "UNSIGNED" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_COMPARE" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "11" +// Retrieval info: USED_PORT: agb 0 0 0 0 OUTPUT NODEFVAL "agb" +// Retrieval info: USED_PORT: dataa 0 0 11 0 INPUT NODEFVAL "dataa[10..0]" +// Retrieval info: USED_PORT: datab 0 0 11 0 INPUT NODEFVAL "datab[10..0]" +// Retrieval info: CONNECT: @dataa 0 0 11 0 dataa 0 0 11 0 +// Retrieval info: CONNECT: @datab 0 0 11 0 datab 0 0 11 0 +// Retrieval info: CONNECT: agb 0 0 0 0 @agb 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_constant0.qip b/FPGA_by_Gregory_Estrade/altip/lpm_constant0.qip new file mode 100644 index 0000000..34f4507 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_constant0.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_constant0.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_constant0.v b/FPGA_by_Gregory_Estrade/altip/lpm_constant0.v new file mode 100644 index 0000000..61b942e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_constant0.v @@ -0,0 +1,82 @@ +// megafunction wizard: %LPM_CONSTANT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_CONSTANT + +// ============================================================ +// File Name: lpm_constant0.v +// Megafunction Name(s): +// LPM_CONSTANT +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_constant0 ( + result); + + output [4:0] result; + + wire [4:0] sub_wire0; + wire [4:0] result = sub_wire0[4:0]; + + lpm_constant LPM_CONSTANT_component ( + .result (sub_wire0)); + defparam + LPM_CONSTANT_component.lpm_cvalue = 0, + LPM_CONSTANT_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO", + LPM_CONSTANT_component.lpm_type = "LPM_CONSTANT", + LPM_CONSTANT_component.lpm_width = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +// Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +// Retrieval info: PRIVATE: Radix NUMERIC "2" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: Value NUMERIC "0" +// Retrieval info: PRIVATE: nBit NUMERIC "5" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +// Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +// Retrieval info: USED_PORT: result 0 0 5 0 OUTPUT NODEFVAL "result[4..0]" +// Retrieval info: CONNECT: result 0 0 5 0 @result 0 0 5 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_constant1.qip b/FPGA_by_Gregory_Estrade/altip/lpm_constant1.qip new file mode 100644 index 0000000..ac62b90 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_constant1.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_constant1.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_constant1.v b/FPGA_by_Gregory_Estrade/altip/lpm_constant1.v new file mode 100644 index 0000000..7ab66d7 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_constant1.v @@ -0,0 +1,82 @@ +// megafunction wizard: %LPM_CONSTANT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_CONSTANT + +// ============================================================ +// File Name: lpm_constant1.v +// Megafunction Name(s): +// LPM_CONSTANT +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_constant1 ( + result); + + output [1:0] result; + + wire [1:0] sub_wire0; + wire [1:0] result = sub_wire0[1:0]; + + lpm_constant LPM_CONSTANT_component ( + .result (sub_wire0)); + defparam + LPM_CONSTANT_component.lpm_cvalue = 0, + LPM_CONSTANT_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO", + LPM_CONSTANT_component.lpm_type = "LPM_CONSTANT", + LPM_CONSTANT_component.lpm_width = 2; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +// Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +// Retrieval info: PRIVATE: Radix NUMERIC "2" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: Value NUMERIC "0" +// Retrieval info: PRIVATE: nBit NUMERIC "2" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +// Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "2" +// Retrieval info: USED_PORT: result 0 0 2 0 OUTPUT NODEFVAL "result[1..0]" +// Retrieval info: CONNECT: result 0 0 2 0 @result 0 0 2 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_constant2.qip b/FPGA_by_Gregory_Estrade/altip/lpm_constant2.qip new file mode 100644 index 0000000..f5977ba --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_constant2.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_constant2.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_constant2.v b/FPGA_by_Gregory_Estrade/altip/lpm_constant2.v new file mode 100644 index 0000000..71b252c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_constant2.v @@ -0,0 +1,82 @@ +// megafunction wizard: %LPM_CONSTANT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_CONSTANT + +// ============================================================ +// File Name: lpm_constant2.v +// Megafunction Name(s): +// LPM_CONSTANT +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_constant2 ( + result); + + output [7:0] result; + + wire [7:0] sub_wire0; + wire [7:0] result = sub_wire0[7:0]; + + lpm_constant LPM_CONSTANT_component ( + .result (sub_wire0)); + defparam + LPM_CONSTANT_component.lpm_cvalue = 0, + LPM_CONSTANT_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO", + LPM_CONSTANT_component.lpm_type = "LPM_CONSTANT", + LPM_CONSTANT_component.lpm_width = 8; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +// Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +// Retrieval info: PRIVATE: Radix NUMERIC "2" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: Value NUMERIC "0" +// Retrieval info: PRIVATE: nBit NUMERIC "8" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +// Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +// Retrieval info: USED_PORT: result 0 0 8 0 OUTPUT NODEFVAL "result[7..0]" +// Retrieval info: CONNECT: result 0 0 8 0 @result 0 0 8 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_constant3.qip b/FPGA_by_Gregory_Estrade/altip/lpm_constant3.qip new file mode 100644 index 0000000..2685fce --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_constant3.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_constant3.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_constant3.v b/FPGA_by_Gregory_Estrade/altip/lpm_constant3.v new file mode 100644 index 0000000..54cf444 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_constant3.v @@ -0,0 +1,82 @@ +// megafunction wizard: %LPM_CONSTANT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_CONSTANT + +// ============================================================ +// File Name: lpm_constant3.v +// Megafunction Name(s): +// LPM_CONSTANT +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_constant3 ( + result); + + output [6:0] result; + + wire [6:0] sub_wire0; + wire [6:0] result = sub_wire0[6:0]; + + lpm_constant LPM_CONSTANT_component ( + .result (sub_wire0)); + defparam + LPM_CONSTANT_component.lpm_cvalue = 0, + LPM_CONSTANT_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO", + LPM_CONSTANT_component.lpm_type = "LPM_CONSTANT", + LPM_CONSTANT_component.lpm_width = 7; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +// Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +// Retrieval info: PRIVATE: Radix NUMERIC "2" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: Value NUMERIC "0" +// Retrieval info: PRIVATE: nBit NUMERIC "7" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +// Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "7" +// Retrieval info: USED_PORT: result 0 0 7 0 OUTPUT NODEFVAL "result[6..0]" +// Retrieval info: CONNECT: result 0 0 7 0 @result 0 0 7 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_constant4.qip b/FPGA_by_Gregory_Estrade/altip/lpm_constant4.qip new file mode 100644 index 0000000..50f598e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_constant4.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_constant4.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_constant4.v b/FPGA_by_Gregory_Estrade/altip/lpm_constant4.v new file mode 100644 index 0000000..4d6c0b2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_constant4.v @@ -0,0 +1,82 @@ +// megafunction wizard: %LPM_CONSTANT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_CONSTANT + +// ============================================================ +// File Name: lpm_constant4.v +// Megafunction Name(s): +// LPM_CONSTANT +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_constant4 ( + result); + + output [10:0] result; + + wire [10:0] sub_wire0; + wire [10:0] result = sub_wire0[10:0]; + + lpm_constant LPM_CONSTANT_component ( + .result (sub_wire0)); + defparam + LPM_CONSTANT_component.lpm_cvalue = 2040, + LPM_CONSTANT_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO", + LPM_CONSTANT_component.lpm_type = "LPM_CONSTANT", + LPM_CONSTANT_component.lpm_width = 11; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +// Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +// Retrieval info: PRIVATE: Radix NUMERIC "10" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: Value NUMERIC "2040" +// Retrieval info: PRIVATE: nBit NUMERIC "11" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "2040" +// Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "11" +// Retrieval info: USED_PORT: result 0 0 11 0 OUTPUT NODEFVAL "result[10..0]" +// Retrieval info: CONNECT: result 0 0 11 0 @result 0 0 11 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_counter0.qip b/FPGA_by_Gregory_Estrade/altip/lpm_counter0.qip new file mode 100644 index 0000000..17a6786 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_counter0.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_COUNTER" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_counter0.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_counter0.v b/FPGA_by_Gregory_Estrade/altip/lpm_counter0.v new file mode 100644 index 0000000..990044b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_counter0.v @@ -0,0 +1,111 @@ +// megafunction wizard: %LPM_COUNTER% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_COUNTER + +// ============================================================ +// File Name: lpm_counter0.v +// Megafunction Name(s): +// LPM_COUNTER +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_counter0 ( + clock, + q); + + input clock; + output [17:0] q; + + wire [17:0] sub_wire0; + wire [17:0] q = sub_wire0[17:0]; + + lpm_counter LPM_COUNTER_component ( + .clock (clock), + .q (sub_wire0), + .aclr (1'b0), + .aload (1'b0), + .aset (1'b0), + .cin (1'b1), + .clk_en (1'b1), + .cnt_en (1'b1), + .cout (), + .data ({18{1'b0}}), + .eq (), + .sclr (1'b0), + .sload (1'b0), + .sset (1'b0), + .updown (1'b1)); + defparam + LPM_COUNTER_component.lpm_direction = "UP", + LPM_COUNTER_component.lpm_port_updown = "PORT_UNUSED", + LPM_COUNTER_component.lpm_type = "LPM_COUNTER", + LPM_COUNTER_component.lpm_width = 18; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACLR NUMERIC "0" +// Retrieval info: PRIVATE: ALOAD NUMERIC "0" +// Retrieval info: PRIVATE: ASET NUMERIC "0" +// Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +// Retrieval info: PRIVATE: CNT_EN NUMERIC "0" +// Retrieval info: PRIVATE: CarryIn NUMERIC "0" +// Retrieval info: PRIVATE: CarryOut NUMERIC "0" +// Retrieval info: PRIVATE: Direction NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: ModulusCounter NUMERIC "0" +// Retrieval info: PRIVATE: ModulusValue NUMERIC "0" +// Retrieval info: PRIVATE: SCLR NUMERIC "0" +// Retrieval info: PRIVATE: SLOAD NUMERIC "0" +// Retrieval info: PRIVATE: SSET NUMERIC "0" +// Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: nBit NUMERIC "18" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_DIRECTION STRING "UP" +// Retrieval info: CONSTANT: LPM_PORT_UPDOWN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_COUNTER" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "18" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: q 0 0 18 0 OUTPUT NODEFVAL "q[17..0]" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: q 0 0 18 0 @q 0 0 18 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_fifoDZ.qip b/FPGA_by_Gregory_Estrade/altip/lpm_fifoDZ.qip new file mode 100644 index 0000000..b15d9dc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_fifoDZ.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "FIFO" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_fifoDZ.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_fifoDZ.v b/FPGA_by_Gregory_Estrade/altip/lpm_fifoDZ.v new file mode 100644 index 0000000..4d66b3b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_fifoDZ.v @@ -0,0 +1,149 @@ +// megafunction wizard: %FIFO% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: scfifo + +// ============================================================ +// File Name: lpm_fifoDZ.v +// Megafunction Name(s): +// scfifo +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_fifoDZ ( + aclr, + clock, + data, + rdreq, + wrreq, + q); + + input aclr; + input clock; + input [127:0] data; + input rdreq; + input wrreq; + output [127:0] q; + + wire [127:0] sub_wire0; + wire [127:0] q = sub_wire0[127:0]; + + scfifo scfifo_component ( + .aclr (aclr), + .clock (clock), + .data (data), + .rdreq (rdreq), + .wrreq (wrreq), + .q (sub_wire0), + .almost_empty (), + .almost_full (), + .empty (), + .full (), + .sclr (), + .usedw ()); + defparam + scfifo_component.add_ram_output_register = "OFF", + scfifo_component.intended_device_family = "Cyclone III", + scfifo_component.lpm_numwords = 128, + scfifo_component.lpm_showahead = "ON", + scfifo_component.lpm_type = "scfifo", + scfifo_component.lpm_width = 128, + scfifo_component.lpm_widthu = 7, + scfifo_component.overflow_checking = "OFF", + scfifo_component.underflow_checking = "OFF", + scfifo_component.use_eab = "ON"; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +// Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +// Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +// Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +// Retrieval info: PRIVATE: Clock NUMERIC "0" +// Retrieval info: PRIVATE: Depth NUMERIC "128" +// Retrieval info: PRIVATE: Empty NUMERIC "0" +// Retrieval info: PRIVATE: Full NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +// Retrieval info: PRIVATE: LegacyRREQ NUMERIC "0" +// Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +// Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "1" +// Retrieval info: PRIVATE: Optimize NUMERIC "2" +// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "1" +// Retrieval info: PRIVATE: UsedW NUMERIC "0" +// Retrieval info: PRIVATE: Width NUMERIC "128" +// Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +// Retrieval info: PRIVATE: diff_widths NUMERIC "0" +// Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +// Retrieval info: PRIVATE: output_width NUMERIC "128" +// Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +// Retrieval info: PRIVATE: rsFull NUMERIC "0" +// Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +// Retrieval info: PRIVATE: sc_aclr NUMERIC "1" +// Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +// Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +// Retrieval info: PRIVATE: wsFull NUMERIC "0" +// Retrieval info: PRIVATE: wsUsedW NUMERIC "1" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: ADD_RAM_OUTPUT_REGISTER STRING "OFF" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "128" +// Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "ON" +// Retrieval info: CONSTANT: LPM_TYPE STRING "scfifo" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +// Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "7" +// Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "OFF" +// Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "OFF" +// Retrieval info: CONSTANT: USE_EAB STRING "ON" +// Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT NODEFVAL "aclr" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: data 0 0 128 0 INPUT NODEFVAL "data[127..0]" +// Retrieval info: USED_PORT: q 0 0 128 0 OUTPUT NODEFVAL "q[127..0]" +// Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq" +// Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq" +// Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 128 0 data 0 0 128 0 +// Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +// Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +// Retrieval info: CONNECT: q 0 0 128 0 @q 0 0 128 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_fifo_dc0.qip b/FPGA_by_Gregory_Estrade/altip/lpm_fifo_dc0.qip new file mode 100644 index 0000000..cf628fe --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_fifo_dc0.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "FIFO" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_fifo_dc0.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_fifo_dc0.v b/FPGA_by_Gregory_Estrade/altip/lpm_fifo_dc0.v new file mode 100644 index 0000000..c571d0d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_fifo_dc0.v @@ -0,0 +1,179 @@ +// megafunction wizard: %FIFO% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: dcfifo + +// ============================================================ +// File Name: lpm_fifo_dc0.v +// Megafunction Name(s): +// dcfifo +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_fifo_dc0 ( + aclr, + data, + rdclk, + rdreq, + wrclk, + wrreq, + q, + rdempty, + wrusedw); + + input aclr; + input [127:0] data; + input rdclk; + input rdreq; + input wrclk; + input wrreq; + output [127:0] q; + output rdempty; + output [8:0] wrusedw; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri0 aclr; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire [127:0] sub_wire0; + wire sub_wire1; + wire [8:0] sub_wire2; + wire [127:0] q = sub_wire0[127:0]; + wire rdempty = sub_wire1; + wire [8:0] wrusedw = sub_wire2[8:0]; + + dcfifo dcfifo_component ( + .rdclk (rdclk), + .wrclk (wrclk), + .wrreq (wrreq), + .aclr (aclr), + .data (data), + .rdreq (rdreq), + .q (sub_wire0), + .rdempty (sub_wire1), + .wrusedw (sub_wire2), + .rdfull (), + .rdusedw (), + .wrempty (), + .wrfull ()); + defparam + dcfifo_component.intended_device_family = "Cyclone III", + dcfifo_component.lpm_numwords = 512, + dcfifo_component.lpm_showahead = "OFF", + dcfifo_component.lpm_type = "dcfifo", + dcfifo_component.lpm_width = 128, + dcfifo_component.lpm_widthu = 9, + dcfifo_component.overflow_checking = "OFF", + dcfifo_component.rdsync_delaypipe = 6, + dcfifo_component.read_aclr_synch = "OFF", + dcfifo_component.underflow_checking = "OFF", + dcfifo_component.use_eab = "ON", + dcfifo_component.write_aclr_synch = "ON", + dcfifo_component.wrsync_delaypipe = 6; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +// Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +// Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +// Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +// Retrieval info: PRIVATE: Clock NUMERIC "4" +// Retrieval info: PRIVATE: Depth NUMERIC "512" +// Retrieval info: PRIVATE: Empty NUMERIC "1" +// Retrieval info: PRIVATE: Full NUMERIC "1" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +// Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +// Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +// Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "1" +// Retrieval info: PRIVATE: Optimize NUMERIC "2" +// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "1" +// Retrieval info: PRIVATE: UsedW NUMERIC "1" +// Retrieval info: PRIVATE: Width NUMERIC "128" +// Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +// Retrieval info: PRIVATE: diff_widths NUMERIC "0" +// Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +// Retrieval info: PRIVATE: output_width NUMERIC "128" +// Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +// Retrieval info: PRIVATE: rsFull NUMERIC "0" +// Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +// Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +// Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +// Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +// Retrieval info: PRIVATE: wsFull NUMERIC "0" +// Retrieval info: PRIVATE: wsUsedW NUMERIC "1" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "512" +// Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +// Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +// Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "9" +// Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "OFF" +// Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "6" +// Retrieval info: CONSTANT: READ_ACLR_SYNCH STRING "OFF" +// Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "OFF" +// Retrieval info: CONSTANT: USE_EAB STRING "ON" +// Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "ON" +// Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "6" +// Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND "aclr" +// Retrieval info: USED_PORT: data 0 0 128 0 INPUT NODEFVAL "data[127..0]" +// Retrieval info: USED_PORT: q 0 0 128 0 OUTPUT NODEFVAL "q[127..0]" +// Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL "rdclk" +// Retrieval info: USED_PORT: rdempty 0 0 0 0 OUTPUT NODEFVAL "rdempty" +// Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq" +// Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL "wrclk" +// Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq" +// Retrieval info: USED_PORT: wrusedw 0 0 9 0 OUTPUT NODEFVAL "wrusedw[8..0]" +// Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 128 0 data 0 0 128 0 +// Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +// Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +// Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +// Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +// Retrieval info: CONNECT: q 0 0 128 0 @q 0 0 128 0 +// Retrieval info: CONNECT: rdempty 0 0 0 0 @rdempty 0 0 0 0 +// Retrieval info: CONNECT: wrusedw 0 0 9 0 @wrusedw 0 0 9 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux0.qip b/FPGA_by_Gregory_Estrade/altip/lpm_mux0.qip new file mode 100644 index 0000000..c454f84 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux0.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_mux0.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux0.v b/FPGA_by_Gregory_Estrade/altip/lpm_mux0.v new file mode 100644 index 0000000..10c9637 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux0.v @@ -0,0 +1,117 @@ +// megafunction wizard: %LPM_MUX% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_MUX + +// ============================================================ +// File Name: lpm_mux0.v +// Megafunction Name(s): +// LPM_MUX +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_mux0 ( + clock, + data0x, + data1x, + data2x, + data3x, + sel, + result); + + input clock; + input [31:0] data0x; + input [31:0] data1x; + input [31:0] data2x; + input [31:0] data3x; + input [1:0] sel; + output [31:0] result; + + wire [31:0] sub_wire0; + wire [31:0] sub_wire5 = data3x[31:0]; + wire [31:0] sub_wire4 = data2x[31:0]; + wire [31:0] sub_wire3 = data1x[31:0]; + wire [31:0] result = sub_wire0[31:0]; + wire [31:0] sub_wire1 = data0x[31:0]; + wire [127:0] sub_wire2 = {sub_wire5, sub_wire4, sub_wire3, sub_wire1}; + + lpm_mux LPM_MUX_component ( + .clock (clock), + .data (sub_wire2), + .sel (sel), + .result (sub_wire0) + // synopsys translate_off + , + .aclr (), + .clken () + // synopsys translate_on + ); + defparam + LPM_MUX_component.lpm_pipeline = 4, + LPM_MUX_component.lpm_size = 4, + LPM_MUX_component.lpm_type = "LPM_MUX", + LPM_MUX_component.lpm_width = 32, + LPM_MUX_component.lpm_widths = 2; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "4" +// Retrieval info: CONSTANT: LPM_SIZE NUMERIC "4" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +// Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "2" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: data0x 0 0 32 0 INPUT NODEFVAL "data0x[31..0]" +// Retrieval info: USED_PORT: data1x 0 0 32 0 INPUT NODEFVAL "data1x[31..0]" +// Retrieval info: USED_PORT: data2x 0 0 32 0 INPUT NODEFVAL "data2x[31..0]" +// Retrieval info: USED_PORT: data3x 0 0 32 0 INPUT NODEFVAL "data3x[31..0]" +// Retrieval info: USED_PORT: result 0 0 32 0 OUTPUT NODEFVAL "result[31..0]" +// Retrieval info: USED_PORT: sel 0 0 2 0 INPUT NODEFVAL "sel[1..0]" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 32 0 data0x 0 0 32 0 +// Retrieval info: CONNECT: @data 0 0 32 32 data1x 0 0 32 0 +// Retrieval info: CONNECT: @data 0 0 32 64 data2x 0 0 32 0 +// Retrieval info: CONNECT: @data 0 0 32 96 data3x 0 0 32 0 +// Retrieval info: CONNECT: @sel 0 0 2 0 sel 0 0 2 0 +// Retrieval info: CONNECT: result 0 0 32 0 @result 0 0 32 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux1.qip b/FPGA_by_Gregory_Estrade/altip/lpm_mux1.qip new file mode 100644 index 0000000..f011c6d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux1.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_mux1.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux1.v b/FPGA_by_Gregory_Estrade/altip/lpm_mux1.v new file mode 100644 index 0000000..04d5d64 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux1.v @@ -0,0 +1,137 @@ +// megafunction wizard: %LPM_MUX% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_MUX + +// ============================================================ +// File Name: lpm_mux1.v +// Megafunction Name(s): +// LPM_MUX +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_mux1 ( + clock, + data0x, + data1x, + data2x, + data3x, + data4x, + data5x, + data6x, + data7x, + sel, + result); + + input clock; + input [15:0] data0x; + input [15:0] data1x; + input [15:0] data2x; + input [15:0] data3x; + input [15:0] data4x; + input [15:0] data5x; + input [15:0] data6x; + input [15:0] data7x; + input [2:0] sel; + output [15:0] result; + + wire [15:0] sub_wire0; + wire [15:0] sub_wire9 = data7x[15:0]; + wire [15:0] sub_wire8 = data6x[15:0]; + wire [15:0] sub_wire7 = data5x[15:0]; + wire [15:0] sub_wire6 = data4x[15:0]; + wire [15:0] sub_wire5 = data3x[15:0]; + wire [15:0] sub_wire4 = data2x[15:0]; + wire [15:0] sub_wire3 = data1x[15:0]; + wire [15:0] result = sub_wire0[15:0]; + wire [15:0] sub_wire1 = data0x[15:0]; + wire [127:0] sub_wire2 = {sub_wire9, sub_wire8, sub_wire7, sub_wire6, sub_wire5, sub_wire4, sub_wire3, sub_wire1}; + + lpm_mux LPM_MUX_component ( + .clock (clock), + .data (sub_wire2), + .sel (sel), + .result (sub_wire0) + // synopsys translate_off + , + .aclr (), + .clken () + // synopsys translate_on + ); + defparam + LPM_MUX_component.lpm_pipeline = 4, + LPM_MUX_component.lpm_size = 8, + LPM_MUX_component.lpm_type = "LPM_MUX", + LPM_MUX_component.lpm_width = 16, + LPM_MUX_component.lpm_widths = 3; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "4" +// Retrieval info: CONSTANT: LPM_SIZE NUMERIC "8" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16" +// Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "3" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: data0x 0 0 16 0 INPUT NODEFVAL "data0x[15..0]" +// Retrieval info: USED_PORT: data1x 0 0 16 0 INPUT NODEFVAL "data1x[15..0]" +// Retrieval info: USED_PORT: data2x 0 0 16 0 INPUT NODEFVAL "data2x[15..0]" +// Retrieval info: USED_PORT: data3x 0 0 16 0 INPUT NODEFVAL "data3x[15..0]" +// Retrieval info: USED_PORT: data4x 0 0 16 0 INPUT NODEFVAL "data4x[15..0]" +// Retrieval info: USED_PORT: data5x 0 0 16 0 INPUT NODEFVAL "data5x[15..0]" +// Retrieval info: USED_PORT: data6x 0 0 16 0 INPUT NODEFVAL "data6x[15..0]" +// Retrieval info: USED_PORT: data7x 0 0 16 0 INPUT NODEFVAL "data7x[15..0]" +// Retrieval info: USED_PORT: result 0 0 16 0 OUTPUT NODEFVAL "result[15..0]" +// Retrieval info: USED_PORT: sel 0 0 3 0 INPUT NODEFVAL "sel[2..0]" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 16 0 data0x 0 0 16 0 +// Retrieval info: CONNECT: @data 0 0 16 16 data1x 0 0 16 0 +// Retrieval info: CONNECT: @data 0 0 16 32 data2x 0 0 16 0 +// Retrieval info: CONNECT: @data 0 0 16 48 data3x 0 0 16 0 +// Retrieval info: CONNECT: @data 0 0 16 64 data4x 0 0 16 0 +// Retrieval info: CONNECT: @data 0 0 16 80 data5x 0 0 16 0 +// Retrieval info: CONNECT: @data 0 0 16 96 data6x 0 0 16 0 +// Retrieval info: CONNECT: @data 0 0 16 112 data7x 0 0 16 0 +// Retrieval info: CONNECT: @sel 0 0 3 0 sel 0 0 3 0 +// Retrieval info: CONNECT: result 0 0 16 0 @result 0 0 16 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux2.qip b/FPGA_by_Gregory_Estrade/altip/lpm_mux2.qip new file mode 100644 index 0000000..b4168d5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux2.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_mux2.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux2.v b/FPGA_by_Gregory_Estrade/altip/lpm_mux2.v new file mode 100644 index 0000000..6740ae0 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux2.v @@ -0,0 +1,177 @@ +// megafunction wizard: %LPM_MUX% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_MUX + +// ============================================================ +// File Name: lpm_mux2.v +// Megafunction Name(s): +// LPM_MUX +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_mux2 ( + clock, + data0x, + data10x, + data11x, + data12x, + data13x, + data14x, + data15x, + data1x, + data2x, + data3x, + data4x, + data5x, + data6x, + data7x, + data8x, + data9x, + sel, + result); + + input clock; + input [7:0] data0x; + input [7:0] data10x; + input [7:0] data11x; + input [7:0] data12x; + input [7:0] data13x; + input [7:0] data14x; + input [7:0] data15x; + input [7:0] data1x; + input [7:0] data2x; + input [7:0] data3x; + input [7:0] data4x; + input [7:0] data5x; + input [7:0] data6x; + input [7:0] data7x; + input [7:0] data8x; + input [7:0] data9x; + input [3:0] sel; + output [7:0] result; + + wire [7:0] sub_wire0; + wire [7:0] sub_wire17 = data15x[7:0]; + wire [7:0] sub_wire16 = data14x[7:0]; + wire [7:0] sub_wire15 = data13x[7:0]; + wire [7:0] sub_wire14 = data12x[7:0]; + wire [7:0] sub_wire13 = data11x[7:0]; + wire [7:0] sub_wire12 = data10x[7:0]; + wire [7:0] sub_wire11 = data9x[7:0]; + wire [7:0] sub_wire10 = data8x[7:0]; + wire [7:0] sub_wire9 = data7x[7:0]; + wire [7:0] sub_wire8 = data6x[7:0]; + wire [7:0] sub_wire7 = data5x[7:0]; + wire [7:0] sub_wire6 = data4x[7:0]; + wire [7:0] sub_wire5 = data3x[7:0]; + wire [7:0] sub_wire4 = data2x[7:0]; + wire [7:0] sub_wire3 = data1x[7:0]; + wire [7:0] result = sub_wire0[7:0]; + wire [7:0] sub_wire1 = data0x[7:0]; + wire [127:0] sub_wire2 = {sub_wire17, sub_wire16, sub_wire15, sub_wire14, sub_wire13, sub_wire12, sub_wire11, sub_wire10, sub_wire9, sub_wire8, sub_wire7, sub_wire6, sub_wire5, sub_wire4, sub_wire3, sub_wire1}; + + lpm_mux LPM_MUX_component ( + .clock (clock), + .data (sub_wire2), + .sel (sel), + .result (sub_wire0) + // synopsys translate_off + , + .aclr (), + .clken () + // synopsys translate_on + ); + defparam + LPM_MUX_component.lpm_pipeline = 2, + LPM_MUX_component.lpm_size = 16, + LPM_MUX_component.lpm_type = "LPM_MUX", + LPM_MUX_component.lpm_width = 8, + LPM_MUX_component.lpm_widths = 4; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "2" +// Retrieval info: CONSTANT: LPM_SIZE NUMERIC "16" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +// Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "4" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: data0x 0 0 8 0 INPUT NODEFVAL "data0x[7..0]" +// Retrieval info: USED_PORT: data10x 0 0 8 0 INPUT NODEFVAL "data10x[7..0]" +// Retrieval info: USED_PORT: data11x 0 0 8 0 INPUT NODEFVAL "data11x[7..0]" +// Retrieval info: USED_PORT: data12x 0 0 8 0 INPUT NODEFVAL "data12x[7..0]" +// Retrieval info: USED_PORT: data13x 0 0 8 0 INPUT NODEFVAL "data13x[7..0]" +// Retrieval info: USED_PORT: data14x 0 0 8 0 INPUT NODEFVAL "data14x[7..0]" +// Retrieval info: USED_PORT: data15x 0 0 8 0 INPUT NODEFVAL "data15x[7..0]" +// Retrieval info: USED_PORT: data1x 0 0 8 0 INPUT NODEFVAL "data1x[7..0]" +// Retrieval info: USED_PORT: data2x 0 0 8 0 INPUT NODEFVAL "data2x[7..0]" +// Retrieval info: USED_PORT: data3x 0 0 8 0 INPUT NODEFVAL "data3x[7..0]" +// Retrieval info: USED_PORT: data4x 0 0 8 0 INPUT NODEFVAL "data4x[7..0]" +// Retrieval info: USED_PORT: data5x 0 0 8 0 INPUT NODEFVAL "data5x[7..0]" +// Retrieval info: USED_PORT: data6x 0 0 8 0 INPUT NODEFVAL "data6x[7..0]" +// Retrieval info: USED_PORT: data7x 0 0 8 0 INPUT NODEFVAL "data7x[7..0]" +// Retrieval info: USED_PORT: data8x 0 0 8 0 INPUT NODEFVAL "data8x[7..0]" +// Retrieval info: USED_PORT: data9x 0 0 8 0 INPUT NODEFVAL "data9x[7..0]" +// Retrieval info: USED_PORT: result 0 0 8 0 OUTPUT NODEFVAL "result[7..0]" +// Retrieval info: USED_PORT: sel 0 0 4 0 INPUT NODEFVAL "sel[3..0]" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 8 0 data0x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 80 data10x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 88 data11x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 96 data12x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 104 data13x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 112 data14x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 120 data15x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 8 data1x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 16 data2x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 24 data3x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 32 data4x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 40 data5x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 48 data6x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 56 data7x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 64 data8x 0 0 8 0 +// Retrieval info: CONNECT: @data 0 0 8 72 data9x 0 0 8 0 +// Retrieval info: CONNECT: @sel 0 0 4 0 sel 0 0 4 0 +// Retrieval info: CONNECT: result 0 0 8 0 @result 0 0 8 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux3.qip b/FPGA_by_Gregory_Estrade/altip/lpm_mux3.qip new file mode 100644 index 0000000..708ceac --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux3.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_mux3.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux3.v b/FPGA_by_Gregory_Estrade/altip/lpm_mux3.v new file mode 100644 index 0000000..8d97d3c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux3.v @@ -0,0 +1,104 @@ +// megafunction wizard: %LPM_MUX% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_MUX + +// ============================================================ +// File Name: lpm_mux3.v +// Megafunction Name(s): +// LPM_MUX +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_mux3 ( + data0, + data1, + sel, + result); + + input data0; + input data1; + input sel; + output result; + + wire [0:0] sub_wire0; + wire sub_wire4 = data1; + wire [0:0] sub_wire1 = sub_wire0[0:0]; + wire result = sub_wire1; + wire sub_wire2 = data0; + wire [1:0] sub_wire3 = {sub_wire4, sub_wire2}; + wire sub_wire5 = sel; + wire sub_wire6 = sub_wire5; + + lpm_mux LPM_MUX_component ( + .data (sub_wire3), + .sel (sub_wire6), + .result (sub_wire0) + // synopsys translate_off + , + .aclr (), + .clken (), + .clock () + // synopsys translate_on + ); + defparam + LPM_MUX_component.lpm_size = 2, + LPM_MUX_component.lpm_type = "LPM_MUX", + LPM_MUX_component.lpm_width = 1, + LPM_MUX_component.lpm_widths = 1; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "1" +// Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +// Retrieval info: USED_PORT: data0 0 0 0 0 INPUT NODEFVAL "data0" +// Retrieval info: USED_PORT: data1 0 0 0 0 INPUT NODEFVAL "data1" +// Retrieval info: USED_PORT: result 0 0 0 0 OUTPUT NODEFVAL "result" +// Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL "sel" +// Retrieval info: CONNECT: @data 0 0 1 0 data0 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 1 1 data1 0 0 0 0 +// Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +// Retrieval info: CONNECT: result 0 0 0 0 @result 0 0 1 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux4.qip b/FPGA_by_Gregory_Estrade/altip/lpm_mux4.qip new file mode 100644 index 0000000..0446abb --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux4.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_mux4.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux4.v b/FPGA_by_Gregory_Estrade/altip/lpm_mux4.v new file mode 100644 index 0000000..271058c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux4.v @@ -0,0 +1,103 @@ +// megafunction wizard: %LPM_MUX% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_MUX + +// ============================================================ +// File Name: lpm_mux4.v +// Megafunction Name(s): +// LPM_MUX +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_mux4 ( + data0x, + data1x, + sel, + result); + + input [6:0] data0x; + input [6:0] data1x; + input sel; + output [6:0] result; + + wire [6:0] sub_wire0; + wire [6:0] sub_wire3 = data1x[6:0]; + wire [6:0] result = sub_wire0[6:0]; + wire [6:0] sub_wire1 = data0x[6:0]; + wire [13:0] sub_wire2 = {sub_wire3, sub_wire1}; + wire sub_wire4 = sel; + wire sub_wire5 = sub_wire4; + + lpm_mux LPM_MUX_component ( + .data (sub_wire2), + .sel (sub_wire5), + .result (sub_wire0) + // synopsys translate_off + , + .aclr (), + .clken (), + .clock () + // synopsys translate_on + ); + defparam + LPM_MUX_component.lpm_size = 2, + LPM_MUX_component.lpm_type = "LPM_MUX", + LPM_MUX_component.lpm_width = 7, + LPM_MUX_component.lpm_widths = 1; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "7" +// Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +// Retrieval info: USED_PORT: data0x 0 0 7 0 INPUT NODEFVAL "data0x[6..0]" +// Retrieval info: USED_PORT: data1x 0 0 7 0 INPUT NODEFVAL "data1x[6..0]" +// Retrieval info: USED_PORT: result 0 0 7 0 OUTPUT NODEFVAL "result[6..0]" +// Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL "sel" +// Retrieval info: CONNECT: @data 0 0 7 0 data0x 0 0 7 0 +// Retrieval info: CONNECT: @data 0 0 7 7 data1x 0 0 7 0 +// Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +// Retrieval info: CONNECT: result 0 0 7 0 @result 0 0 7 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux5.qip b/FPGA_by_Gregory_Estrade/altip/lpm_mux5.qip new file mode 100644 index 0000000..931cbf7 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux5.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_mux5.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux5.v b/FPGA_by_Gregory_Estrade/altip/lpm_mux5.v new file mode 100644 index 0000000..27e82cc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux5.v @@ -0,0 +1,111 @@ +// megafunction wizard: %LPM_MUX% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_MUX + +// ============================================================ +// File Name: lpm_mux5.v +// Megafunction Name(s): +// LPM_MUX +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_mux5 ( + data0x, + data1x, + data2x, + data3x, + sel, + result); + + input [63:0] data0x; + input [63:0] data1x; + input [63:0] data2x; + input [63:0] data3x; + input [1:0] sel; + output [63:0] result; + + wire [63:0] sub_wire0; + wire [63:0] sub_wire5 = data3x[63:0]; + wire [63:0] sub_wire4 = data2x[63:0]; + wire [63:0] sub_wire3 = data1x[63:0]; + wire [63:0] result = sub_wire0[63:0]; + wire [63:0] sub_wire1 = data0x[63:0]; + wire [255:0] sub_wire2 = {sub_wire5, sub_wire4, sub_wire3, sub_wire1}; + + lpm_mux LPM_MUX_component ( + .data (sub_wire2), + .sel (sel), + .result (sub_wire0) + // synopsys translate_off + , + .aclr (), + .clken (), + .clock () + // synopsys translate_on + ); + defparam + LPM_MUX_component.lpm_size = 4, + LPM_MUX_component.lpm_type = "LPM_MUX", + LPM_MUX_component.lpm_width = 64, + LPM_MUX_component.lpm_widths = 2; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_SIZE NUMERIC "4" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "64" +// Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "2" +// Retrieval info: USED_PORT: data0x 0 0 64 0 INPUT NODEFVAL "data0x[63..0]" +// Retrieval info: USED_PORT: data1x 0 0 64 0 INPUT NODEFVAL "data1x[63..0]" +// Retrieval info: USED_PORT: data2x 0 0 64 0 INPUT NODEFVAL "data2x[63..0]" +// Retrieval info: USED_PORT: data3x 0 0 64 0 INPUT NODEFVAL "data3x[63..0]" +// Retrieval info: USED_PORT: result 0 0 64 0 OUTPUT NODEFVAL "result[63..0]" +// Retrieval info: USED_PORT: sel 0 0 2 0 INPUT NODEFVAL "sel[1..0]" +// Retrieval info: CONNECT: @data 0 0 64 0 data0x 0 0 64 0 +// Retrieval info: CONNECT: @data 0 0 64 64 data1x 0 0 64 0 +// Retrieval info: CONNECT: @data 0 0 64 128 data2x 0 0 64 0 +// Retrieval info: CONNECT: @data 0 0 64 192 data3x 0 0 64 0 +// Retrieval info: CONNECT: @sel 0 0 2 0 sel 0 0 2 0 +// Retrieval info: CONNECT: result 0 0 64 0 @result 0 0 64 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux6.qip b/FPGA_by_Gregory_Estrade/altip/lpm_mux6.qip new file mode 100644 index 0000000..4de3bf2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux6.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_mux6.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_mux6.v b/FPGA_by_Gregory_Estrade/altip/lpm_mux6.v new file mode 100644 index 0000000..772963c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_mux6.v @@ -0,0 +1,137 @@ +// megafunction wizard: %LPM_MUX% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_MUX + +// ============================================================ +// File Name: lpm_mux6.v +// Megafunction Name(s): +// LPM_MUX +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_mux6 ( + clock, + data0x, + data1x, + data2x, + data3x, + data4x, + data5x, + data6x, + data7x, + sel, + result); + + input clock; + input [23:0] data0x; + input [23:0] data1x; + input [23:0] data2x; + input [23:0] data3x; + input [23:0] data4x; + input [23:0] data5x; + input [23:0] data6x; + input [23:0] data7x; + input [2:0] sel; + output [23:0] result; + + wire [23:0] sub_wire0; + wire [23:0] sub_wire9 = data7x[23:0]; + wire [23:0] sub_wire8 = data6x[23:0]; + wire [23:0] sub_wire7 = data5x[23:0]; + wire [23:0] sub_wire6 = data4x[23:0]; + wire [23:0] sub_wire5 = data3x[23:0]; + wire [23:0] sub_wire4 = data2x[23:0]; + wire [23:0] sub_wire3 = data1x[23:0]; + wire [23:0] result = sub_wire0[23:0]; + wire [23:0] sub_wire1 = data0x[23:0]; + wire [191:0] sub_wire2 = {sub_wire9, sub_wire8, sub_wire7, sub_wire6, sub_wire5, sub_wire4, sub_wire3, sub_wire1}; + + lpm_mux LPM_MUX_component ( + .clock (clock), + .data (sub_wire2), + .sel (sel), + .result (sub_wire0) + // synopsys translate_off + , + .aclr (), + .clken () + // synopsys translate_on + ); + defparam + LPM_MUX_component.lpm_pipeline = 2, + LPM_MUX_component.lpm_size = 8, + LPM_MUX_component.lpm_type = "LPM_MUX", + LPM_MUX_component.lpm_width = 24, + LPM_MUX_component.lpm_widths = 3; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "2" +// Retrieval info: CONSTANT: LPM_SIZE NUMERIC "8" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "24" +// Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "3" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: data0x 0 0 24 0 INPUT NODEFVAL "data0x[23..0]" +// Retrieval info: USED_PORT: data1x 0 0 24 0 INPUT NODEFVAL "data1x[23..0]" +// Retrieval info: USED_PORT: data2x 0 0 24 0 INPUT NODEFVAL "data2x[23..0]" +// Retrieval info: USED_PORT: data3x 0 0 24 0 INPUT NODEFVAL "data3x[23..0]" +// Retrieval info: USED_PORT: data4x 0 0 24 0 INPUT NODEFVAL "data4x[23..0]" +// Retrieval info: USED_PORT: data5x 0 0 24 0 INPUT NODEFVAL "data5x[23..0]" +// Retrieval info: USED_PORT: data6x 0 0 24 0 INPUT NODEFVAL "data6x[23..0]" +// Retrieval info: USED_PORT: data7x 0 0 24 0 INPUT NODEFVAL "data7x[23..0]" +// Retrieval info: USED_PORT: result 0 0 24 0 OUTPUT NODEFVAL "result[23..0]" +// Retrieval info: USED_PORT: sel 0 0 3 0 INPUT NODEFVAL "sel[2..0]" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 24 0 data0x 0 0 24 0 +// Retrieval info: CONNECT: @data 0 0 24 24 data1x 0 0 24 0 +// Retrieval info: CONNECT: @data 0 0 24 48 data2x 0 0 24 0 +// Retrieval info: CONNECT: @data 0 0 24 72 data3x 0 0 24 0 +// Retrieval info: CONNECT: @data 0 0 24 96 data4x 0 0 24 0 +// Retrieval info: CONNECT: @data 0 0 24 120 data5x 0 0 24 0 +// Retrieval info: CONNECT: @data 0 0 24 144 data6x 0 0 24 0 +// Retrieval info: CONNECT: @data 0 0 24 168 data7x 0 0 24 0 +// Retrieval info: CONNECT: @sel 0 0 3 0 sel 0 0 3 0 +// Retrieval info: CONNECT: result 0 0 24 0 @result 0 0 24 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ.qip b/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ.qip new file mode 100644 index 0000000..4173c45 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_muxDZ.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ.v b/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ.v new file mode 100644 index 0000000..b7dff3e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ.v @@ -0,0 +1,120 @@ +// megafunction wizard: %LPM_MUX% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_MUX + +// ============================================================ +// File Name: lpm_muxDZ.v +// Megafunction Name(s): +// LPM_MUX +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_muxDZ ( + clken, + clock, + data0x, + data1x, + sel, + result); + + input clken; + input clock; + input [127:0] data0x; + input [127:0] data1x; + input sel; + output [127:0] result; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri1 clken; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire [127:0] sub_wire0; + wire [127:0] sub_wire3 = data1x[127:0]; + wire [127:0] result = sub_wire0[127:0]; + wire [127:0] sub_wire1 = data0x[127:0]; + wire [255:0] sub_wire2 = {sub_wire3, sub_wire1}; + wire sub_wire4 = sel; + wire sub_wire5 = sub_wire4; + + lpm_mux LPM_MUX_component ( + .clock (clock), + .data (sub_wire2), + .sel (sub_wire5), + .clken (clken), + .result (sub_wire0) + // synopsys translate_off + , + .aclr () + // synopsys translate_on + ); + defparam + LPM_MUX_component.lpm_pipeline = 1, + LPM_MUX_component.lpm_size = 2, + LPM_MUX_component.lpm_type = "LPM_MUX", + LPM_MUX_component.lpm_width = 128, + LPM_MUX_component.lpm_widths = 1; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "1" +// Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +// Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +// Retrieval info: USED_PORT: clken 0 0 0 0 INPUT VCC "clken" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: data0x 0 0 128 0 INPUT NODEFVAL "data0x[127..0]" +// Retrieval info: USED_PORT: data1x 0 0 128 0 INPUT NODEFVAL "data1x[127..0]" +// Retrieval info: USED_PORT: result 0 0 128 0 OUTPUT NODEFVAL "result[127..0]" +// Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL "sel" +// Retrieval info: CONNECT: @clken 0 0 0 0 clken 0 0 0 0 +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 128 0 data0x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 128 data1x 0 0 128 0 +// Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +// Retrieval info: CONNECT: result 0 0 128 0 @result 0 0 128 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ2.qip b/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ2.qip new file mode 100644 index 0000000..ad305f1 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ2.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_muxDZ2.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ2.v b/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ2.v new file mode 100644 index 0000000..067187d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_muxDZ2.v @@ -0,0 +1,104 @@ +// megafunction wizard: %LPM_MUX% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_MUX + +// ============================================================ +// File Name: lpm_muxDZ2.v +// Megafunction Name(s): +// LPM_MUX +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_muxDZ2 ( + data0, + data1, + sel, + result); + + input data0; + input data1; + input sel; + output result; + + wire [0:0] sub_wire0; + wire sub_wire4 = data1; + wire [0:0] sub_wire1 = sub_wire0[0:0]; + wire result = sub_wire1; + wire sub_wire2 = data0; + wire [1:0] sub_wire3 = {sub_wire4, sub_wire2}; + wire sub_wire5 = sel; + wire sub_wire6 = sub_wire5; + + lpm_mux LPM_MUX_component ( + .data (sub_wire3), + .sel (sub_wire6), + .result (sub_wire0) + // synopsys translate_off + , + .aclr (), + .clken (), + .clock () + // synopsys translate_on + ); + defparam + LPM_MUX_component.lpm_size = 2, + LPM_MUX_component.lpm_type = "LPM_MUX", + LPM_MUX_component.lpm_width = 1, + LPM_MUX_component.lpm_widths = 1; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "1" +// Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +// Retrieval info: USED_PORT: data0 0 0 0 0 INPUT NODEFVAL "data0" +// Retrieval info: USED_PORT: data1 0 0 0 0 INPUT NODEFVAL "data1" +// Retrieval info: USED_PORT: result 0 0 0 0 OUTPUT NODEFVAL "result" +// Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL "sel" +// Retrieval info: CONNECT: @data 0 0 1 0 data0 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 1 1 data1 0 0 0 0 +// Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +// Retrieval info: CONNECT: result 0 0 0 0 @result 0 0 1 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_muxVDM.qip b/FPGA_by_Gregory_Estrade/altip/lpm_muxVDM.qip new file mode 100644 index 0000000..7b510b6 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_muxVDM.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_muxVDM.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_muxVDM.v b/FPGA_by_Gregory_Estrade/altip/lpm_muxVDM.v new file mode 100644 index 0000000..dfba003 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_muxVDM.v @@ -0,0 +1,171 @@ +// megafunction wizard: %LPM_MUX% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_MUX + +// ============================================================ +// File Name: lpm_muxVDM.v +// Megafunction Name(s): +// LPM_MUX +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_muxVDM ( + data0x, + data10x, + data11x, + data12x, + data13x, + data14x, + data15x, + data1x, + data2x, + data3x, + data4x, + data5x, + data6x, + data7x, + data8x, + data9x, + sel, + result); + + input [127:0] data0x; + input [127:0] data10x; + input [127:0] data11x; + input [127:0] data12x; + input [127:0] data13x; + input [127:0] data14x; + input [127:0] data15x; + input [127:0] data1x; + input [127:0] data2x; + input [127:0] data3x; + input [127:0] data4x; + input [127:0] data5x; + input [127:0] data6x; + input [127:0] data7x; + input [127:0] data8x; + input [127:0] data9x; + input [3:0] sel; + output [127:0] result; + + wire [127:0] sub_wire0; + wire [127:0] sub_wire17 = data15x[127:0]; + wire [127:0] sub_wire16 = data14x[127:0]; + wire [127:0] sub_wire15 = data13x[127:0]; + wire [127:0] sub_wire14 = data12x[127:0]; + wire [127:0] sub_wire13 = data11x[127:0]; + wire [127:0] sub_wire12 = data10x[127:0]; + wire [127:0] sub_wire11 = data9x[127:0]; + wire [127:0] sub_wire10 = data8x[127:0]; + wire [127:0] sub_wire9 = data7x[127:0]; + wire [127:0] sub_wire8 = data6x[127:0]; + wire [127:0] sub_wire7 = data5x[127:0]; + wire [127:0] sub_wire6 = data4x[127:0]; + wire [127:0] sub_wire5 = data3x[127:0]; + wire [127:0] sub_wire4 = data2x[127:0]; + wire [127:0] sub_wire3 = data1x[127:0]; + wire [127:0] result = sub_wire0[127:0]; + wire [127:0] sub_wire1 = data0x[127:0]; + wire [2047:0] sub_wire2 = {sub_wire17, sub_wire16, sub_wire15, sub_wire14, sub_wire13, sub_wire12, sub_wire11, sub_wire10, sub_wire9, sub_wire8, sub_wire7, sub_wire6, sub_wire5, sub_wire4, sub_wire3, sub_wire1}; + + lpm_mux LPM_MUX_component ( + .data (sub_wire2), + .sel (sel), + .result (sub_wire0) + // synopsys translate_off + , + .aclr (), + .clken (), + .clock () + // synopsys translate_on + ); + defparam + LPM_MUX_component.lpm_size = 16, + LPM_MUX_component.lpm_type = "LPM_MUX", + LPM_MUX_component.lpm_width = 128, + LPM_MUX_component.lpm_widths = 4; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_SIZE NUMERIC "16" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +// Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "4" +// Retrieval info: USED_PORT: data0x 0 0 128 0 INPUT NODEFVAL "data0x[127..0]" +// Retrieval info: USED_PORT: data10x 0 0 128 0 INPUT NODEFVAL "data10x[127..0]" +// Retrieval info: USED_PORT: data11x 0 0 128 0 INPUT NODEFVAL "data11x[127..0]" +// Retrieval info: USED_PORT: data12x 0 0 128 0 INPUT NODEFVAL "data12x[127..0]" +// Retrieval info: USED_PORT: data13x 0 0 128 0 INPUT NODEFVAL "data13x[127..0]" +// Retrieval info: USED_PORT: data14x 0 0 128 0 INPUT NODEFVAL "data14x[127..0]" +// Retrieval info: USED_PORT: data15x 0 0 128 0 INPUT NODEFVAL "data15x[127..0]" +// Retrieval info: USED_PORT: data1x 0 0 128 0 INPUT NODEFVAL "data1x[127..0]" +// Retrieval info: USED_PORT: data2x 0 0 128 0 INPUT NODEFVAL "data2x[127..0]" +// Retrieval info: USED_PORT: data3x 0 0 128 0 INPUT NODEFVAL "data3x[127..0]" +// Retrieval info: USED_PORT: data4x 0 0 128 0 INPUT NODEFVAL "data4x[127..0]" +// Retrieval info: USED_PORT: data5x 0 0 128 0 INPUT NODEFVAL "data5x[127..0]" +// Retrieval info: USED_PORT: data6x 0 0 128 0 INPUT NODEFVAL "data6x[127..0]" +// Retrieval info: USED_PORT: data7x 0 0 128 0 INPUT NODEFVAL "data7x[127..0]" +// Retrieval info: USED_PORT: data8x 0 0 128 0 INPUT NODEFVAL "data8x[127..0]" +// Retrieval info: USED_PORT: data9x 0 0 128 0 INPUT NODEFVAL "data9x[127..0]" +// Retrieval info: USED_PORT: result 0 0 128 0 OUTPUT NODEFVAL "result[127..0]" +// Retrieval info: USED_PORT: sel 0 0 4 0 INPUT NODEFVAL "sel[3..0]" +// Retrieval info: CONNECT: @data 0 0 128 0 data0x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 1280 data10x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 1408 data11x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 1536 data12x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 1664 data13x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 1792 data14x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 1920 data15x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 128 data1x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 256 data2x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 384 data3x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 512 data4x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 640 data5x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 768 data6x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 896 data7x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 1024 data8x 0 0 128 0 +// Retrieval info: CONNECT: @data 0 0 128 1152 data9x 0 0 128 0 +// Retrieval info: CONNECT: @sel 0 0 4 0 sel 0 0 4 0 +// Retrieval info: CONNECT: result 0 0 128 0 @result 0 0 128 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg0.qip b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg0.qip new file mode 100644 index 0000000..ac8bf95 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg0.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_shiftreg0.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg0.v b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg0.v new file mode 100644 index 0000000..6955f5d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg0.v @@ -0,0 +1,120 @@ +// megafunction wizard: %LPM_SHIFTREG% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_SHIFTREG + +// ============================================================ +// File Name: lpm_shiftreg0.v +// Megafunction Name(s): +// LPM_SHIFTREG +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_shiftreg0 ( + clock, + data, + load, + shiftin, + shiftout); + + input clock; + input [15:0] data; + input load; + input shiftin; + output shiftout; + + wire sub_wire0; + wire shiftout = sub_wire0; + + lpm_shiftreg LPM_SHIFTREG_component ( + .clock (clock), + .data (data), + .load (load), + .shiftin (shiftin), + .shiftout (sub_wire0) + // synopsys translate_off + , + .aclr (), + .aset (), + .enable (), + .q (), + .sclr (), + .sset () + // synopsys translate_on + ); + defparam + LPM_SHIFTREG_component.lpm_direction = "LEFT", + LPM_SHIFTREG_component.lpm_type = "LPM_SHIFTREG", + LPM_SHIFTREG_component.lpm_width = 16; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACLR NUMERIC "0" +// Retrieval info: PRIVATE: ALOAD NUMERIC "0" +// Retrieval info: PRIVATE: ASET NUMERIC "0" +// Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LeftShift NUMERIC "1" +// Retrieval info: PRIVATE: ParallelDataInput NUMERIC "1" +// Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +// Retrieval info: PRIVATE: SCLR NUMERIC "0" +// Retrieval info: PRIVATE: SLOAD NUMERIC "1" +// Retrieval info: PRIVATE: SSET NUMERIC "0" +// Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +// Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +// Retrieval info: PRIVATE: nBit NUMERIC "16" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_DIRECTION STRING "LEFT" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: data 0 0 16 0 INPUT NODEFVAL "data[15..0]" +// Retrieval info: USED_PORT: load 0 0 0 0 INPUT NODEFVAL "load" +// Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL "shiftin" +// Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL "shiftout" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 16 0 data 0 0 16 0 +// Retrieval info: CONNECT: @load 0 0 0 0 load 0 0 0 0 +// Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +// Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg1.qip b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg1.qip new file mode 100644 index 0000000..43da9d6 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg1.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_shiftreg1.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg1.v b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg1.v new file mode 100644 index 0000000..771d96b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg1.v @@ -0,0 +1,112 @@ +// megafunction wizard: %LPM_SHIFTREG% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_SHIFTREG + +// ============================================================ +// File Name: lpm_shiftreg1.v +// Megafunction Name(s): +// LPM_SHIFTREG +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_shiftreg1 ( + clock, + shiftin, + q); + + input clock; + input shiftin; + output [1:0] q; + + wire [1:0] sub_wire0; + wire [1:0] q = sub_wire0[1:0]; + + lpm_shiftreg LPM_SHIFTREG_component ( + .clock (clock), + .shiftin (shiftin), + .q (sub_wire0) + // synopsys translate_off + , + .aclr (), + .aset (), + .data (), + .enable (), + .load (), + .sclr (), + .shiftout (), + .sset () + // synopsys translate_on + ); + defparam + LPM_SHIFTREG_component.lpm_direction = "LEFT", + LPM_SHIFTREG_component.lpm_type = "LPM_SHIFTREG", + LPM_SHIFTREG_component.lpm_width = 2; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACLR NUMERIC "0" +// Retrieval info: PRIVATE: ALOAD NUMERIC "0" +// Retrieval info: PRIVATE: ASET NUMERIC "0" +// Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LeftShift NUMERIC "1" +// Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +// Retrieval info: PRIVATE: Q_OUT NUMERIC "1" +// Retrieval info: PRIVATE: SCLR NUMERIC "0" +// Retrieval info: PRIVATE: SLOAD NUMERIC "0" +// Retrieval info: PRIVATE: SSET NUMERIC "0" +// Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +// Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "0" +// Retrieval info: PRIVATE: nBit NUMERIC "2" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_DIRECTION STRING "LEFT" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "2" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: q 0 0 2 0 OUTPUT NODEFVAL "q[1..0]" +// Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL "shiftin" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +// Retrieval info: CONNECT: q 0 0 2 0 @q 0 0 2 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg2.qip b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg2.qip new file mode 100644 index 0000000..d8b2719 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg2.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_shiftreg2.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg2.v b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg2.v new file mode 100644 index 0000000..99af9d2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg2.v @@ -0,0 +1,112 @@ +// megafunction wizard: %LPM_SHIFTREG% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_SHIFTREG + +// ============================================================ +// File Name: lpm_shiftreg2.v +// Megafunction Name(s): +// LPM_SHIFTREG +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_shiftreg2 ( + clock, + shiftin, + shiftout); + + input clock; + input shiftin; + output shiftout; + + wire sub_wire0; + wire shiftout = sub_wire0; + + lpm_shiftreg LPM_SHIFTREG_component ( + .clock (clock), + .shiftin (shiftin), + .shiftout (sub_wire0) + // synopsys translate_off + , + .aclr (), + .aset (), + .data (), + .enable (), + .load (), + .q (), + .sclr (), + .sset () + // synopsys translate_on + ); + defparam + LPM_SHIFTREG_component.lpm_direction = "RIGHT", + LPM_SHIFTREG_component.lpm_type = "LPM_SHIFTREG", + LPM_SHIFTREG_component.lpm_width = 4; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACLR NUMERIC "0" +// Retrieval info: PRIVATE: ALOAD NUMERIC "0" +// Retrieval info: PRIVATE: ASET NUMERIC "0" +// Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LeftShift NUMERIC "0" +// Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +// Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +// Retrieval info: PRIVATE: SCLR NUMERIC "0" +// Retrieval info: PRIVATE: SLOAD NUMERIC "0" +// Retrieval info: PRIVATE: SSET NUMERIC "0" +// Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +// Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +// Retrieval info: PRIVATE: nBit NUMERIC "4" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "4" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL "shiftin" +// Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL "shiftout" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +// Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg3.qip b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg3.qip new file mode 100644 index 0000000..bcc0f11 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg3.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_shiftreg3.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg3.v b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg3.v new file mode 100644 index 0000000..58abbe5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg3.v @@ -0,0 +1,112 @@ +// megafunction wizard: %LPM_SHIFTREG% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_SHIFTREG + +// ============================================================ +// File Name: lpm_shiftreg3.v +// Megafunction Name(s): +// LPM_SHIFTREG +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_shiftreg3 ( + clock, + shiftin, + shiftout); + + input clock; + input shiftin; + output shiftout; + + wire sub_wire0; + wire shiftout = sub_wire0; + + lpm_shiftreg LPM_SHIFTREG_component ( + .clock (clock), + .shiftin (shiftin), + .shiftout (sub_wire0) + // synopsys translate_off + , + .aclr (), + .aset (), + .data (), + .enable (), + .load (), + .q (), + .sclr (), + .sset () + // synopsys translate_on + ); + defparam + LPM_SHIFTREG_component.lpm_direction = "RIGHT", + LPM_SHIFTREG_component.lpm_type = "LPM_SHIFTREG", + LPM_SHIFTREG_component.lpm_width = 2; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACLR NUMERIC "0" +// Retrieval info: PRIVATE: ALOAD NUMERIC "0" +// Retrieval info: PRIVATE: ASET NUMERIC "0" +// Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LeftShift NUMERIC "0" +// Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +// Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +// Retrieval info: PRIVATE: SCLR NUMERIC "0" +// Retrieval info: PRIVATE: SLOAD NUMERIC "0" +// Retrieval info: PRIVATE: SSET NUMERIC "0" +// Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +// Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +// Retrieval info: PRIVATE: nBit NUMERIC "2" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "2" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL "shiftin" +// Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL "shiftout" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +// Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg4.qip b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg4.qip new file mode 100644 index 0000000..caa97f1 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg4.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_shiftreg4.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg4.v b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg4.v new file mode 100644 index 0000000..cdbfed2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg4.v @@ -0,0 +1,112 @@ +// megafunction wizard: %LPM_SHIFTREG% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_SHIFTREG + +// ============================================================ +// File Name: lpm_shiftreg4.v +// Megafunction Name(s): +// LPM_SHIFTREG +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_shiftreg4 ( + clock, + shiftin, + shiftout); + + input clock; + input shiftin; + output shiftout; + + wire sub_wire0; + wire shiftout = sub_wire0; + + lpm_shiftreg LPM_SHIFTREG_component ( + .clock (clock), + .shiftin (shiftin), + .shiftout (sub_wire0) + // synopsys translate_off + , + .aclr (), + .aset (), + .data (), + .enable (), + .load (), + .q (), + .sclr (), + .sset () + // synopsys translate_on + ); + defparam + LPM_SHIFTREG_component.lpm_direction = "RIGHT", + LPM_SHIFTREG_component.lpm_type = "LPM_SHIFTREG", + LPM_SHIFTREG_component.lpm_width = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACLR NUMERIC "0" +// Retrieval info: PRIVATE: ALOAD NUMERIC "0" +// Retrieval info: PRIVATE: ASET NUMERIC "0" +// Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LeftShift NUMERIC "0" +// Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +// Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +// Retrieval info: PRIVATE: SCLR NUMERIC "0" +// Retrieval info: PRIVATE: SLOAD NUMERIC "0" +// Retrieval info: PRIVATE: SSET NUMERIC "0" +// Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +// Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +// Retrieval info: PRIVATE: nBit NUMERIC "5" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL "shiftin" +// Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL "shiftout" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +// Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg5.qip b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg5.qip new file mode 100644 index 0000000..56bd70a --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg5.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_shiftreg5.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg5.v b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg5.v new file mode 100644 index 0000000..a7b93f2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg5.v @@ -0,0 +1,112 @@ +// megafunction wizard: %LPM_SHIFTREG% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_SHIFTREG + +// ============================================================ +// File Name: lpm_shiftreg5.v +// Megafunction Name(s): +// LPM_SHIFTREG +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_shiftreg5 ( + clock, + shiftin, + q); + + input clock; + input shiftin; + output [4:0] q; + + wire [4:0] sub_wire0; + wire [4:0] q = sub_wire0[4:0]; + + lpm_shiftreg LPM_SHIFTREG_component ( + .clock (clock), + .shiftin (shiftin), + .q (sub_wire0) + // synopsys translate_off + , + .aclr (), + .aset (), + .data (), + .enable (), + .load (), + .sclr (), + .shiftout (), + .sset () + // synopsys translate_on + ); + defparam + LPM_SHIFTREG_component.lpm_direction = "RIGHT", + LPM_SHIFTREG_component.lpm_type = "LPM_SHIFTREG", + LPM_SHIFTREG_component.lpm_width = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACLR NUMERIC "0" +// Retrieval info: PRIVATE: ALOAD NUMERIC "0" +// Retrieval info: PRIVATE: ASET NUMERIC "0" +// Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LeftShift NUMERIC "0" +// Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +// Retrieval info: PRIVATE: Q_OUT NUMERIC "1" +// Retrieval info: PRIVATE: SCLR NUMERIC "0" +// Retrieval info: PRIVATE: SLOAD NUMERIC "0" +// Retrieval info: PRIVATE: SSET NUMERIC "0" +// Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +// Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "0" +// Retrieval info: PRIVATE: nBit NUMERIC "5" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: q 0 0 5 0 OUTPUT NODEFVAL "q[4..0]" +// Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL "shiftin" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +// Retrieval info: CONNECT: q 0 0 5 0 @q 0 0 5 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg6.qip b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg6.qip new file mode 100644 index 0000000..9a44742 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg6.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "lpm_shiftreg6.v"] diff --git a/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg6.v b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg6.v new file mode 100644 index 0000000..1161be5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip/lpm_shiftreg6.v @@ -0,0 +1,112 @@ +// megafunction wizard: %LPM_SHIFTREG% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: LPM_SHIFTREG + +// ============================================================ +// File Name: lpm_shiftreg6.v +// Megafunction Name(s): +// LPM_SHIFTREG +// +// Simulation Library Files(s): +// lpm +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module lpm_shiftreg6 ( + clock, + shiftin, + q); + + input clock; + input shiftin; + output [4:0] q; + + wire [4:0] sub_wire0; + wire [4:0] q = sub_wire0[4:0]; + + lpm_shiftreg LPM_SHIFTREG_component ( + .clock (clock), + .shiftin (shiftin), + .q (sub_wire0) + // synopsys translate_off + , + .aclr (), + .aset (), + .data (), + .enable (), + .load (), + .sclr (), + .shiftout (), + .sset () + // synopsys translate_on + ); + defparam + LPM_SHIFTREG_component.lpm_direction = "RIGHT", + LPM_SHIFTREG_component.lpm_type = "LPM_SHIFTREG", + LPM_SHIFTREG_component.lpm_width = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACLR NUMERIC "0" +// Retrieval info: PRIVATE: ALOAD NUMERIC "0" +// Retrieval info: PRIVATE: ASET NUMERIC "0" +// Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: LeftShift NUMERIC "0" +// Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +// Retrieval info: PRIVATE: Q_OUT NUMERIC "1" +// Retrieval info: PRIVATE: SCLR NUMERIC "0" +// Retrieval info: PRIVATE: SLOAD NUMERIC "0" +// Retrieval info: PRIVATE: SSET NUMERIC "0" +// Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +// Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "0" +// Retrieval info: PRIVATE: nBit NUMERIC "5" +// Retrieval info: PRIVATE: new_diagram STRING "1" +// Retrieval info: LIBRARY: lpm lpm.lpm_components.all +// Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +// Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: q 0 0 5 0 OUTPUT NODEFVAL "q[4..0]" +// Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL "shiftin" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +// Retrieval info: CONNECT: q 0 0 5 0 @q 0 0 5 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6_bb.v FALSE +// Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.bsf new file mode 100644 index 0000000..bcf7f28 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.bsf @@ -0,0 +1,99 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 240 136) + (text "altddio_bidir0" (rect 82 1 171 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 120 25 132)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h[31..0]" (rect 0 0 83 14)(font "Arial" (font_size 8))) + (text "datain_h[31..0]" (rect 4 11 76 24)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 3)) + ) + (port + (pt 0 40) + (input) + (text "datain_l[31..0]" (rect 0 0 79 14)(font "Arial" (font_size 8))) + (text "datain_l[31..0]" (rect 4 27 73 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 4 43 16 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "inclock" (rect 0 0 38 14)(font "Arial" (font_size 8))) + (text "inclock" (rect 4 59 36 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 88 72)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 75 42 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 88 88)(line_width 1)) + ) + (port + (pt 240 24) + (output) + (text "dataout_h[31..0]" (rect 0 0 92 14)(font "Arial" (font_size 8))) + (text "dataout_h[31..0]" (rect 159 11 237 24)(font "Arial" (font_size 8))) + (line (pt 240 24)(pt 144 24)(line_width 3)) + ) + (port + (pt 240 40) + (output) + (text "dataout_l[31..0]" (rect 0 0 87 14)(font "Arial" (font_size 8))) + (text "dataout_l[31..0]" (rect 163 27 238 40)(font "Arial" (font_size 8))) + (line (pt 240 40)(pt 144 40)(line_width 3)) + ) + (port + (pt 240 72) + (output) + (text "combout[31..0]" (rect 0 0 83 14)(font "Arial" (font_size 8))) + (text "combout[31..0]" (rect 166 59 237 72)(font "Arial" (font_size 8))) + (line (pt 240 72)(pt 144 72)(line_width 3)) + ) + (port + (pt 240 56) + (bidir) + (text "padio[31..0]" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "padio[31..0]" (rect 181 43 238 56)(font "Arial" (font_size 8))) + (line (pt 240 56)(pt 144 56)(line_width 3)) + ) + (drawing + (text "ddio" (rect 108 27 129 40)(font "Arial" (font_size 8))) + (text "bidir" (rect 108 42 129 55)(font "Arial" (font_size 8))) + (text "power up" (rect 92 90 129 102)(font "Arial" )) + (text "low" (rect 92 100 105 112)(font "Arial" )) + (line (pt 88 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 112)(line_width 1)) + (line (pt 144 112)(pt 88 112)(line_width 1)) + (line (pt 88 112)(pt 88 16)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.inc b/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.inc new file mode 100644 index 0000000..5969513 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.inc @@ -0,0 +1,30 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altddio_bidir0 +( + datain_h[31..0], + datain_l[31..0], + inclock, + oe, + outclock +) + +RETURNS ( + combout[31..0], + dataout_h[31..0], + dataout_l[31..0], + padio[31..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.ppf b/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.ppf new file mode 100644 index 0000000..5601bba --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.ppf @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.qip b/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.qip new file mode 100644 index 0000000..3339057 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_BIDIR" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altddio_bidir0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_bidir0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_bidir0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_bidir0.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_bidir0.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.vhd new file mode 100644 index 0000000..a0ae0e0 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_bidir0.vhd @@ -0,0 +1,172 @@ +-- megafunction wizard: %ALTDDIO_BIDIR% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_bidir + +-- ============================================================ +-- File Name: altddio_bidir0.vhd +-- Megafunction Name(s): +-- altddio_bidir +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_bidir0 IS + PORT + ( + datain_h : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + inclock : IN STD_LOGIC ; + oe : IN STD_LOGIC := '1'; + outclock : IN STD_LOGIC ; + combout : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + dataout_h : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + dataout_l : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + padio : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END altddio_bidir0; + + +ARCHITECTURE SYN OF altddio_bidir0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT altddio_bidir + GENERIC ( + extend_oe_disable : STRING; + implement_input_in_lcell : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + outclock : IN STD_LOGIC ; + padio : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0); + inclock : IN STD_LOGIC ; + dataout_h : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + oe : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + combout : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + dataout_l : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (31 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + dataout_h <= sub_wire0(31 DOWNTO 0); + combout <= sub_wire1(31 DOWNTO 0); + dataout_l <= sub_wire2(31 DOWNTO 0); + + altddio_bidir_component : altddio_bidir + GENERIC MAP ( + extend_oe_disable => "UNUSED", + implement_input_in_lcell => "ON", + intended_device_family => "Cyclone III", + invert_output => "OFF", + lpm_type => "altddio_bidir", + oe_reg => "UNUSED", + power_up_high => "OFF", + width => 32 + ) + PORT MAP ( + outclock => outclock, + inclock => inclock, + oe => oe, + datain_h => datain_h, + datain_l => datain_l, + dataout_h => sub_wire0, + combout => sub_wire1, + dataout_l => sub_wire2, + padio => padio + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_INPUT_IN_LCELL NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "1" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "0" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_COMBOUT NUMERIC "1" +-- Retrieval info: PRIVATE: USE_DATAOUT NUMERIC "1" +-- Retrieval info: PRIVATE: USE_DQS_UNDELAYOUT NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "32" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: IMPLEMENT_INPUT_IN_LCELL STRING "ON" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_bidir" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: combout 0 0 32 0 OUTPUT NODEFVAL combout[31..0] +-- Retrieval info: USED_PORT: datain_h 0 0 32 0 INPUT NODEFVAL datain_h[31..0] +-- Retrieval info: USED_PORT: datain_l 0 0 32 0 INPUT NODEFVAL datain_l[31..0] +-- Retrieval info: USED_PORT: dataout_h 0 0 32 0 OUTPUT NODEFVAL dataout_h[31..0] +-- Retrieval info: USED_PORT: dataout_l 0 0 32 0 OUTPUT NODEFVAL dataout_l[31..0] +-- Retrieval info: USED_PORT: inclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL inclock +-- Retrieval info: USED_PORT: oe 0 0 0 0 INPUT VCC oe +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: USED_PORT: padio 0 0 32 0 BIDIR NODEFVAL padio[31..0] +-- Retrieval info: CONNECT: @datain_h 0 0 32 0 datain_h 0 0 32 0 +-- Retrieval info: CONNECT: @datain_l 0 0 32 0 datain_l 0 0 32 0 +-- Retrieval info: CONNECT: padio 0 0 32 0 @padio 0 0 32 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: CONNECT: @oe 0 0 0 0 oe 0 0 0 0 +-- Retrieval info: CONNECT: dataout_h 0 0 32 0 @dataout_h 0 0 32 0 +-- Retrieval info: CONNECT: dataout_l 0 0 32 0 @dataout_l 0 0 32 0 +-- Retrieval info: CONNECT: @inclock 0 0 0 0 inclock 0 0 0 0 +-- Retrieval info: CONNECT: combout 0 0 32 0 @combout 0 0 32 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.bsf new file mode 100644 index 0000000..9889d79 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 232 120) + (text "altddio_out0" (rect 81 1 163 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 104 25 116)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 46 24)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 43 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 42 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 229 24)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 131 40)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 135 55)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 129 86)(font "Arial" )) + (text "low" (rect 92 84 105 96)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.inc b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.inc new file mode 100644 index 0000000..030b327 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altddio_out0 +( + datain_h, + datain_l, + outclock +) + +RETURNS ( + dataout +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.ppf b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.ppf new file mode 100644 index 0000000..4379977 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.qip b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.qip new file mode 100644 index 0000000..1f7f31f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altddio_out0.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0_bb.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.vhd new file mode 100644 index 0000000..ea6d708 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out0.vhd @@ -0,0 +1,146 @@ +-- megafunction wizard: %ALTDDIO_OUT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_out + +-- ============================================================ +-- File Name: altddio_out0.vhd +-- Megafunction Name(s): +-- altddio_out +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_out0 IS + PORT + ( + datain_h : IN STD_LOGIC ; + datain_l : IN STD_LOGIC ; + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC + ); +END altddio_out0; + + +ARCHITECTURE SYN OF altddio_out0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altddio_out + GENERIC ( + extend_oe_disable : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + dataout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0); + outclock : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (0 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (0 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire1 <= sub_wire0(0); + dataout <= sub_wire1; + sub_wire2 <= datain_h; + sub_wire3(0) <= sub_wire2; + sub_wire4 <= datain_l; + sub_wire5(0) <= sub_wire4; + + altddio_out_component : altddio_out + GENERIC MAP ( + extend_oe_disable => "UNUSED", + intended_device_family => "Cyclone III", + invert_output => "OFF", + lpm_type => "altddio_out", + oe_reg => "UNUSED", + power_up_high => "OFF", + width => 1 + ) + PORT MAP ( + outclock => outclock, + datain_h => sub_wire3, + datain_l => sub_wire5, + dataout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "0" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "0" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "1" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "1" +-- Retrieval info: USED_PORT: datain_h 0 0 0 0 INPUT NODEFVAL datain_h +-- Retrieval info: USED_PORT: datain_l 0 0 0 0 INPUT NODEFVAL datain_l +-- Retrieval info: USED_PORT: dataout 0 0 0 0 OUTPUT NODEFVAL dataout +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: CONNECT: @datain_h 0 0 1 0 datain_h 0 0 0 0 +-- Retrieval info: CONNECT: @datain_l 0 0 1 0 datain_l 0 0 0 0 +-- Retrieval info: CONNECT: dataout 0 0 0 0 @dataout 0 0 1 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.bsf new file mode 100644 index 0000000..8289852 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 232 120) + (text "altddio_out1" (rect 81 1 163 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 104 25 116)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 46 24)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 43 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 42 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 229 24)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 131 40)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 135 55)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 129 86)(font "Arial" )) + (text "low" (rect 92 84 105 96)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.inc b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.inc new file mode 100644 index 0000000..4d50b26 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altddio_out1 +( + datain_h, + datain_l, + outclock +) + +RETURNS ( + dataout +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.ppf b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.ppf new file mode 100644 index 0000000..9772cd3 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.qip b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.qip new file mode 100644 index 0000000..606e0b7 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altddio_out1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out1.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out1.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.vhd new file mode 100644 index 0000000..cb76474 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out1.vhd @@ -0,0 +1,146 @@ +-- megafunction wizard: %ALTDDIO_OUT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_out + +-- ============================================================ +-- File Name: altddio_out1.vhd +-- Megafunction Name(s): +-- altddio_out +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_out1 IS + PORT + ( + datain_h : IN STD_LOGIC ; + datain_l : IN STD_LOGIC ; + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC + ); +END altddio_out1; + + +ARCHITECTURE SYN OF altddio_out1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altddio_out + GENERIC ( + extend_oe_disable : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + dataout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0); + outclock : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (0 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (0 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire1 <= sub_wire0(0); + dataout <= sub_wire1; + sub_wire2 <= datain_h; + sub_wire3(0) <= sub_wire2; + sub_wire4 <= datain_l; + sub_wire5(0) <= sub_wire4; + + altddio_out_component : altddio_out + GENERIC MAP ( + extend_oe_disable => "UNUSED", + intended_device_family => "Cyclone III", + invert_output => "OFF", + lpm_type => "altddio_out", + oe_reg => "UNUSED", + power_up_high => "OFF", + width => 1 + ) + PORT MAP ( + outclock => outclock, + datain_h => sub_wire3, + datain_l => sub_wire5, + dataout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "0" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "0" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "1" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "1" +-- Retrieval info: USED_PORT: datain_h 0 0 0 0 INPUT NODEFVAL datain_h +-- Retrieval info: USED_PORT: datain_l 0 0 0 0 INPUT NODEFVAL datain_l +-- Retrieval info: USED_PORT: dataout 0 0 0 0 OUTPUT NODEFVAL dataout +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: CONNECT: @datain_h 0 0 1 0 datain_h 0 0 0 0 +-- Retrieval info: CONNECT: @datain_l 0 0 1 0 datain_l 0 0 0 0 +-- Retrieval info: CONNECT: dataout 0 0 0 0 @dataout 0 0 1 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.bsf new file mode 100644 index 0000000..ff039ee --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 232 120) + (text "altddio_out2" (rect 81 1 163 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 104 25 116)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h[23..0]" (rect 0 0 83 14)(font "Arial" (font_size 8))) + (text "datain_h[23..0]" (rect 4 11 76 24)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 3)) + ) + (port + (pt 0 40) + (input) + (text "datain_l[23..0]" (rect 0 0 79 14)(font "Arial" (font_size 8))) + (text "datain_l[23..0]" (rect 4 27 73 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 42 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout[23..0]" (rect 0 0 77 14)(font "Arial" (font_size 8))) + (text "dataout[23..0]" (rect 163 11 229 24)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 3)) + ) + (drawing + (text "ddio" (rect 110 27 131 40)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 135 55)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 129 86)(font "Arial" )) + (text "low" (rect 92 84 105 96)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.inc b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.inc new file mode 100644 index 0000000..2257c30 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altddio_out2 +( + datain_h[23..0], + datain_l[23..0], + outclock +) + +RETURNS ( + dataout[23..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.ppf b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.ppf new file mode 100644 index 0000000..93df472 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.qip b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.qip new file mode 100644 index 0000000..d72d5ce --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altddio_out2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out2.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out2.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out2.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.vhd new file mode 100644 index 0000000..30a8586 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out2.vhd @@ -0,0 +1,136 @@ +-- megafunction wizard: %ALTDDIO_OUT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_out + +-- ============================================================ +-- File Name: altddio_out2.vhd +-- Megafunction Name(s): +-- altddio_out +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_out2 IS + PORT + ( + datain_h : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +END altddio_out2; + + +ARCHITECTURE SYN OF altddio_out2 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (23 DOWNTO 0); + + + + COMPONENT altddio_out + GENERIC ( + extend_oe_disable : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + dataout : OUT STD_LOGIC_VECTOR (23 DOWNTO 0); + outclock : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (23 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + dataout <= sub_wire0(23 DOWNTO 0); + + altddio_out_component : altddio_out + GENERIC MAP ( + extend_oe_disable => "UNUSED", + intended_device_family => "Cyclone III", + invert_output => "OFF", + lpm_type => "altddio_out", + oe_reg => "UNUSED", + power_up_high => "OFF", + width => 24 + ) + PORT MAP ( + outclock => outclock, + datain_h => datain_h, + datain_l => datain_l, + dataout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "0" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "0" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "24" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "24" +-- Retrieval info: USED_PORT: datain_h 0 0 24 0 INPUT NODEFVAL datain_h[23..0] +-- Retrieval info: USED_PORT: datain_l 0 0 24 0 INPUT NODEFVAL datain_l[23..0] +-- Retrieval info: USED_PORT: dataout 0 0 24 0 OUTPUT NODEFVAL dataout[23..0] +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: CONNECT: @datain_h 0 0 24 0 datain_h 0 0 24 0 +-- Retrieval info: CONNECT: @datain_l 0 0 24 0 datain_l 0 0 24 0 +-- Retrieval info: CONNECT: dataout 0 0 24 0 @dataout 0 0 24 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.bsf new file mode 100644 index 0000000..ba8c153 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 232 120) + (text "altddio_out3" (rect 81 1 163 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 104 25 116)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 46 24)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 43 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 42 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 229 24)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 131 40)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 135 55)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 129 86)(font "Arial" )) + (text "low" (rect 92 84 105 96)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.inc b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.inc new file mode 100644 index 0000000..f6b4097 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altddio_out3 +( + datain_h, + datain_l, + outclock +) + +RETURNS ( + dataout +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.ppf b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.ppf new file mode 100644 index 0000000..e914df8 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.qip b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.qip new file mode 100644 index 0000000..353a2c4 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "altddio_out3.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out3.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.vhd new file mode 100644 index 0000000..e55160f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altddio_out3.vhd @@ -0,0 +1,146 @@ +-- megafunction wizard: %ALTDDIO_OUT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_out + +-- ============================================================ +-- File Name: altddio_out3.vhd +-- Megafunction Name(s): +-- altddio_out +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_out3 IS + PORT + ( + datain_h : IN STD_LOGIC ; + datain_l : IN STD_LOGIC ; + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC + ); +END altddio_out3; + + +ARCHITECTURE SYN OF altddio_out3 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altddio_out + GENERIC ( + extend_oe_disable : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + dataout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0); + outclock : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (0 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (0 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire1 <= sub_wire0(0); + dataout <= sub_wire1; + sub_wire2 <= datain_h; + sub_wire3(0) <= sub_wire2; + sub_wire4 <= datain_l; + sub_wire5(0) <= sub_wire4; + + altddio_out_component : altddio_out + GENERIC MAP ( + extend_oe_disable => "UNUSED", + intended_device_family => "Cyclone III", + invert_output => "OFF", + lpm_type => "altddio_out", + oe_reg => "UNUSED", + power_up_high => "OFF", + width => 1 + ) + PORT MAP ( + outclock => outclock, + datain_h => sub_wire3, + datain_l => sub_wire5, + dataout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "0" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "0" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "1" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "1" +-- Retrieval info: USED_PORT: datain_h 0 0 0 0 INPUT NODEFVAL datain_h +-- Retrieval info: USED_PORT: datain_l 0 0 0 0 INPUT NODEFVAL datain_l +-- Retrieval info: USED_PORT: dataout 0 0 0 0 OUTPUT NODEFVAL dataout +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: CONNECT: @datain_h 0 0 1 0 datain_h 0 0 0 0 +-- Retrieval info: CONNECT: @datain_l 0 0 1 0 datain_l 0 0 0 0 +-- Retrieval info: CONNECT: dataout 0 0 0 0 @dataout 0 0 1 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.bsf new file mode 100644 index 0000000..e0d3ce3 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.bsf @@ -0,0 +1,173 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 256 208) + (text "altdpram0" (rect 100 1 167 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 192 25 204)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[2..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_a[2..0]" (rect 4 19 61 32)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[3..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_a[3..0]" (rect 4 35 75 48)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 38 64)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[2..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_b[2..0]" (rect 4 83 61 96)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[3..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_b[3..0]" (rect 4 99 75 112)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 38 128)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 39 160)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 39 176)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[2..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_a[2..0]" (rect 211 19 253 32)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[2..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_b[2..0]" (rect 211 83 253 96)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "16 Word(s)" (rect 136 61 148 107)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 161 94)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 119 200)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.inc b/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.inc new file mode 100644 index 0000000..828067d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.inc @@ -0,0 +1,31 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altdpram0 +( + address_a[3..0], + address_b[3..0], + clock_a, + clock_b, + data_a[2..0], + data_b[2..0], + wren_a, + wren_b +) + +RETURNS ( + q_a[2..0], + q_b[2..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.qip b/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.qip new file mode 100644 index 0000000..e4d02ab --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_RAM_DP+" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altdpram0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram0.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.vhd new file mode 100644 index 0000000..c883f02 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram0.vhd @@ -0,0 +1,273 @@ +-- megafunction wizard: %LPM_RAM_DP+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: altdpram0.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altdpram0 IS + PORT + ( + address_a : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + clock_a : IN STD_LOGIC ; + clock_b : IN STD_LOGIC ; + data_a : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + wren_a : IN STD_LOGIC := '1'; + wren_b : IN STD_LOGIC := '1'; + q_a : OUT STD_LOGIC_VECTOR (2 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (2 DOWNTO 0) + ); +END altdpram0; + + +ARCHITECTURE SYN OF altdpram0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (2 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (2 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + address_reg_b : STRING; + clock_enable_input_a : STRING; + clock_enable_input_b : STRING; + clock_enable_output_a : STRING; + clock_enable_output_b : STRING; + indata_reg_b : STRING; + intended_device_family : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + numwords_b : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_aclr_b : STRING; + outdata_reg_a : STRING; + outdata_reg_b : STRING; + power_up_uninitialized : STRING; + read_during_write_mode_port_a : STRING; + read_during_write_mode_port_b : STRING; + widthad_a : NATURAL; + widthad_b : NATURAL; + width_a : NATURAL; + width_b : NATURAL; + width_byteena_a : NATURAL; + width_byteena_b : NATURAL; + wrcontrol_wraddress_reg_b : STRING + ); + PORT ( + wren_a : IN STD_LOGIC ; + clock0 : IN STD_LOGIC ; + wren_b : IN STD_LOGIC ; + clock1 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (2 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (2 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (2 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q_a <= sub_wire0(2 DOWNTO 0); + q_b <= sub_wire1(2 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_reg_b => "CLOCK1", + clock_enable_input_a => "BYPASS", + clock_enable_input_b => "BYPASS", + clock_enable_output_a => "BYPASS", + clock_enable_output_b => "BYPASS", + indata_reg_b => "CLOCK1", + intended_device_family => "Cyclone III", + lpm_type => "altsyncram", + numwords_a => 16, + numwords_b => 16, + operation_mode => "BIDIR_DUAL_PORT", + outdata_aclr_a => "NONE", + outdata_aclr_b => "NONE", + outdata_reg_a => "CLOCK0", + outdata_reg_b => "CLOCK1", + power_up_uninitialized => "FALSE", + read_during_write_mode_port_a => "OLD_DATA", + read_during_write_mode_port_b => "OLD_DATA", + widthad_a => 4, + widthad_b => 4, + width_a => 3, + width_b => 3, + width_byteena_a => 1, + width_byteena_b => 1, + wrcontrol_wraddress_reg_b => "CLOCK1" + ) + PORT MAP ( + wren_a => wren_a, + clock0 => clock_a, + wren_b => wren_b, + clock1 => clock_b, + address_a => address_a, + address_b => address_b, + data_a => data_a, + data_b => data_b, + q_a => sub_wire0, + q_b => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLRdata NUMERIC "0" +-- Retrieval info: PRIVATE: CLRq NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrren NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwren NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "5" +-- Retrieval info: PRIVATE: Clock_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_B NUMERIC "0" +-- Retrieval info: PRIVATE: ECC NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MEMSIZE NUMERIC "48" +-- Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "" +-- Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +-- Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "1" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "1" +-- Retrieval info: PRIVATE: REGdata NUMERIC "1" +-- Retrieval info: PRIVATE: REGq NUMERIC "1" +-- Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: REGrren NUMERIC "0" +-- Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGwren NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +-- Retrieval info: PRIVATE: VarWidth NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "3" +-- Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "3" +-- Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "3" +-- Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "3" +-- Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: enable NUMERIC "0" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "16" +-- Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "16" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "OLD_DATA" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "OLD_DATA" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "4" +-- Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "4" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "3" +-- Retrieval info: CONSTANT: WIDTH_B NUMERIC "3" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +-- Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: USED_PORT: address_a 0 0 4 0 INPUT NODEFVAL address_a[3..0] +-- Retrieval info: USED_PORT: address_b 0 0 4 0 INPUT NODEFVAL address_b[3..0] +-- Retrieval info: USED_PORT: clock_a 0 0 0 0 INPUT NODEFVAL clock_a +-- Retrieval info: USED_PORT: clock_b 0 0 0 0 INPUT NODEFVAL clock_b +-- Retrieval info: USED_PORT: data_a 0 0 3 0 INPUT NODEFVAL data_a[2..0] +-- Retrieval info: USED_PORT: data_b 0 0 3 0 INPUT NODEFVAL data_b[2..0] +-- Retrieval info: USED_PORT: q_a 0 0 3 0 OUTPUT NODEFVAL q_a[2..0] +-- Retrieval info: USED_PORT: q_b 0 0 3 0 OUTPUT NODEFVAL q_b[2..0] +-- Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT VCC wren_a +-- Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT VCC wren_b +-- Retrieval info: CONNECT: @data_a 0 0 3 0 data_a 0 0 3 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +-- Retrieval info: CONNECT: q_a 0 0 3 0 @q_a 0 0 3 0 +-- Retrieval info: CONNECT: q_b 0 0 3 0 @q_b 0 0 3 0 +-- Retrieval info: CONNECT: @address_a 0 0 4 0 address_a 0 0 4 0 +-- Retrieval info: CONNECT: @data_b 0 0 3 0 data_b 0 0 3 0 +-- Retrieval info: CONNECT: @address_b 0 0 4 0 address_b 0 0 4 0 +-- Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock_a 0 0 0 0 +-- Retrieval info: CONNECT: @clock1 0 0 0 0 clock_b 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.bsf new file mode 100644 index 0000000..d75db28 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.bsf @@ -0,0 +1,173 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 256 208) + (text "altdpram1" (rect 100 1 167 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 192 25 204)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[5..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_a[5..0]" (rect 4 19 61 32)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[7..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_a[7..0]" (rect 4 35 75 48)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 38 64)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[5..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_b[5..0]" (rect 4 83 61 96)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[7..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_b[7..0]" (rect 4 99 75 112)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 38 128)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 39 160)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 39 176)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[5..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_a[5..0]" (rect 211 19 253 32)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[5..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_b[5..0]" (rect 211 83 253 96)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "256 Word(s)" (rect 136 58 148 109)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 161 94)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 119 200)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.inc b/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.inc new file mode 100644 index 0000000..4a7924e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.inc @@ -0,0 +1,31 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altdpram1 +( + address_a[7..0], + address_b[7..0], + clock_a, + clock_b, + data_a[5..0], + data_b[5..0], + wren_a, + wren_b +) + +RETURNS ( + q_a[5..0], + q_b[5..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.qip b/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.qip new file mode 100644 index 0000000..cdd178f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_RAM_DP+" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altdpram1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram1.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.vhd new file mode 100644 index 0000000..b2e0435 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram1.vhd @@ -0,0 +1,273 @@ +-- megafunction wizard: %LPM_RAM_DP+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: altdpram1.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altdpram1 IS + PORT + ( + address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + clock_a : IN STD_LOGIC ; + clock_b : IN STD_LOGIC ; + data_a : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + wren_a : IN STD_LOGIC := '1'; + wren_b : IN STD_LOGIC := '1'; + q_a : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (5 DOWNTO 0) + ); +END altdpram1; + + +ARCHITECTURE SYN OF altdpram1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (5 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (5 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + address_reg_b : STRING; + clock_enable_input_a : STRING; + clock_enable_input_b : STRING; + clock_enable_output_a : STRING; + clock_enable_output_b : STRING; + indata_reg_b : STRING; + intended_device_family : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + numwords_b : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_aclr_b : STRING; + outdata_reg_a : STRING; + outdata_reg_b : STRING; + power_up_uninitialized : STRING; + read_during_write_mode_port_a : STRING; + read_during_write_mode_port_b : STRING; + widthad_a : NATURAL; + widthad_b : NATURAL; + width_a : NATURAL; + width_b : NATURAL; + width_byteena_a : NATURAL; + width_byteena_b : NATURAL; + wrcontrol_wraddress_reg_b : STRING + ); + PORT ( + wren_a : IN STD_LOGIC ; + clock0 : IN STD_LOGIC ; + wren_b : IN STD_LOGIC ; + clock1 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (5 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q_a <= sub_wire0(5 DOWNTO 0); + q_b <= sub_wire1(5 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_reg_b => "CLOCK1", + clock_enable_input_a => "BYPASS", + clock_enable_input_b => "BYPASS", + clock_enable_output_a => "BYPASS", + clock_enable_output_b => "BYPASS", + indata_reg_b => "CLOCK1", + intended_device_family => "Cyclone III", + lpm_type => "altsyncram", + numwords_a => 256, + numwords_b => 256, + operation_mode => "BIDIR_DUAL_PORT", + outdata_aclr_a => "NONE", + outdata_aclr_b => "NONE", + outdata_reg_a => "CLOCK0", + outdata_reg_b => "CLOCK1", + power_up_uninitialized => "FALSE", + read_during_write_mode_port_a => "OLD_DATA", + read_during_write_mode_port_b => "OLD_DATA", + widthad_a => 8, + widthad_b => 8, + width_a => 6, + width_b => 6, + width_byteena_a => 1, + width_byteena_b => 1, + wrcontrol_wraddress_reg_b => "CLOCK1" + ) + PORT MAP ( + wren_a => wren_a, + clock0 => clock_a, + wren_b => wren_b, + clock1 => clock_b, + address_a => address_a, + address_b => address_b, + data_a => data_a, + data_b => data_b, + q_a => sub_wire0, + q_b => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLRdata NUMERIC "0" +-- Retrieval info: PRIVATE: CLRq NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrren NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwren NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "5" +-- Retrieval info: PRIVATE: Clock_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_B NUMERIC "0" +-- Retrieval info: PRIVATE: ECC NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MEMSIZE NUMERIC "1536" +-- Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "" +-- Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +-- Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "1" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "1" +-- Retrieval info: PRIVATE: REGdata NUMERIC "1" +-- Retrieval info: PRIVATE: REGq NUMERIC "1" +-- Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: REGrren NUMERIC "0" +-- Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGwren NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +-- Retrieval info: PRIVATE: VarWidth NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "6" +-- Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "6" +-- Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "6" +-- Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "6" +-- Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: enable NUMERIC "0" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "256" +-- Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "256" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "OLD_DATA" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "OLD_DATA" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "6" +-- Retrieval info: CONSTANT: WIDTH_B NUMERIC "6" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +-- Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: USED_PORT: address_a 0 0 8 0 INPUT NODEFVAL address_a[7..0] +-- Retrieval info: USED_PORT: address_b 0 0 8 0 INPUT NODEFVAL address_b[7..0] +-- Retrieval info: USED_PORT: clock_a 0 0 0 0 INPUT NODEFVAL clock_a +-- Retrieval info: USED_PORT: clock_b 0 0 0 0 INPUT NODEFVAL clock_b +-- Retrieval info: USED_PORT: data_a 0 0 6 0 INPUT NODEFVAL data_a[5..0] +-- Retrieval info: USED_PORT: data_b 0 0 6 0 INPUT NODEFVAL data_b[5..0] +-- Retrieval info: USED_PORT: q_a 0 0 6 0 OUTPUT NODEFVAL q_a[5..0] +-- Retrieval info: USED_PORT: q_b 0 0 6 0 OUTPUT NODEFVAL q_b[5..0] +-- Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT VCC wren_a +-- Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT VCC wren_b +-- Retrieval info: CONNECT: @data_a 0 0 6 0 data_a 0 0 6 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +-- Retrieval info: CONNECT: q_a 0 0 6 0 @q_a 0 0 6 0 +-- Retrieval info: CONNECT: q_b 0 0 6 0 @q_b 0 0 6 0 +-- Retrieval info: CONNECT: @address_a 0 0 8 0 address_a 0 0 8 0 +-- Retrieval info: CONNECT: @data_b 0 0 6 0 data_b 0 0 6 0 +-- Retrieval info: CONNECT: @address_b 0 0 8 0 address_b 0 0 8 0 +-- Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock_a 0 0 0 0 +-- Retrieval info: CONNECT: @clock1 0 0 0 0 clock_b 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.bsf new file mode 100644 index 0000000..75c64aa --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.bsf @@ -0,0 +1,173 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 256 208) + (text "altdpram2" (rect 100 1 167 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 192 25 204)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_a[7..0]" (rect 4 19 61 32)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[7..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_a[7..0]" (rect 4 35 75 48)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 38 64)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_b[7..0]" (rect 4 83 61 96)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[7..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_b[7..0]" (rect 4 99 75 112)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 38 128)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 39 160)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 39 176)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[7..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_a[7..0]" (rect 211 19 253 32)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[7..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_b[7..0]" (rect 211 83 253 96)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "256 Word(s)" (rect 136 58 148 109)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 161 94)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 119 200)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.inc b/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.inc new file mode 100644 index 0000000..1909de8 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.inc @@ -0,0 +1,31 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altdpram2 +( + address_a[7..0], + address_b[7..0], + clock_a, + clock_b, + data_a[7..0], + data_b[7..0], + wren_a, + wren_b +) + +RETURNS ( + q_a[7..0], + q_b[7..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.qip b/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.qip new file mode 100644 index 0000000..f84925c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_RAM_DP+" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altdpram2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram2.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram2.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.vhd new file mode 100644 index 0000000..238e6f3 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altdpram2.vhd @@ -0,0 +1,273 @@ +-- megafunction wizard: %LPM_RAM_DP+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: altdpram2.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altdpram2 IS + PORT + ( + address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + clock_a : IN STD_LOGIC ; + clock_b : IN STD_LOGIC ; + data_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + wren_a : IN STD_LOGIC := '1'; + wren_b : IN STD_LOGIC := '1'; + q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END altdpram2; + + +ARCHITECTURE SYN OF altdpram2 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (7 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + address_reg_b : STRING; + clock_enable_input_a : STRING; + clock_enable_input_b : STRING; + clock_enable_output_a : STRING; + clock_enable_output_b : STRING; + indata_reg_b : STRING; + intended_device_family : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + numwords_b : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_aclr_b : STRING; + outdata_reg_a : STRING; + outdata_reg_b : STRING; + power_up_uninitialized : STRING; + read_during_write_mode_port_a : STRING; + read_during_write_mode_port_b : STRING; + widthad_a : NATURAL; + widthad_b : NATURAL; + width_a : NATURAL; + width_b : NATURAL; + width_byteena_a : NATURAL; + width_byteena_b : NATURAL; + wrcontrol_wraddress_reg_b : STRING + ); + PORT ( + wren_a : IN STD_LOGIC ; + clock0 : IN STD_LOGIC ; + wren_b : IN STD_LOGIC ; + clock1 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q_a <= sub_wire0(7 DOWNTO 0); + q_b <= sub_wire1(7 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_reg_b => "CLOCK1", + clock_enable_input_a => "BYPASS", + clock_enable_input_b => "BYPASS", + clock_enable_output_a => "BYPASS", + clock_enable_output_b => "BYPASS", + indata_reg_b => "CLOCK1", + intended_device_family => "Cyclone III", + lpm_type => "altsyncram", + numwords_a => 256, + numwords_b => 256, + operation_mode => "BIDIR_DUAL_PORT", + outdata_aclr_a => "NONE", + outdata_aclr_b => "NONE", + outdata_reg_a => "CLOCK0", + outdata_reg_b => "CLOCK1", + power_up_uninitialized => "FALSE", + read_during_write_mode_port_a => "OLD_DATA", + read_during_write_mode_port_b => "OLD_DATA", + widthad_a => 8, + widthad_b => 8, + width_a => 8, + width_b => 8, + width_byteena_a => 1, + width_byteena_b => 1, + wrcontrol_wraddress_reg_b => "CLOCK1" + ) + PORT MAP ( + wren_a => wren_a, + clock0 => clock_a, + wren_b => wren_b, + clock1 => clock_b, + address_a => address_a, + address_b => address_b, + data_a => data_a, + data_b => data_b, + q_a => sub_wire0, + q_b => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLRdata NUMERIC "0" +-- Retrieval info: PRIVATE: CLRq NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrren NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwren NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "5" +-- Retrieval info: PRIVATE: Clock_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_B NUMERIC "0" +-- Retrieval info: PRIVATE: ECC NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MEMSIZE NUMERIC "2048" +-- Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "" +-- Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +-- Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "1" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "1" +-- Retrieval info: PRIVATE: REGdata NUMERIC "1" +-- Retrieval info: PRIVATE: REGq NUMERIC "1" +-- Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: REGrren NUMERIC "0" +-- Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGwren NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +-- Retrieval info: PRIVATE: VarWidth NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "8" +-- Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: enable NUMERIC "0" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "256" +-- Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "256" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "OLD_DATA" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "OLD_DATA" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_B NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +-- Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: USED_PORT: address_a 0 0 8 0 INPUT NODEFVAL address_a[7..0] +-- Retrieval info: USED_PORT: address_b 0 0 8 0 INPUT NODEFVAL address_b[7..0] +-- Retrieval info: USED_PORT: clock_a 0 0 0 0 INPUT NODEFVAL clock_a +-- Retrieval info: USED_PORT: clock_b 0 0 0 0 INPUT NODEFVAL clock_b +-- Retrieval info: USED_PORT: data_a 0 0 8 0 INPUT NODEFVAL data_a[7..0] +-- Retrieval info: USED_PORT: data_b 0 0 8 0 INPUT NODEFVAL data_b[7..0] +-- Retrieval info: USED_PORT: q_a 0 0 8 0 OUTPUT NODEFVAL q_a[7..0] +-- Retrieval info: USED_PORT: q_b 0 0 8 0 OUTPUT NODEFVAL q_b[7..0] +-- Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT VCC wren_a +-- Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT VCC wren_b +-- Retrieval info: CONNECT: @data_a 0 0 8 0 data_a 0 0 8 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +-- Retrieval info: CONNECT: q_a 0 0 8 0 @q_a 0 0 8 0 +-- Retrieval info: CONNECT: q_b 0 0 8 0 @q_b 0 0 8 0 +-- Retrieval info: CONNECT: @address_a 0 0 8 0 address_a 0 0 8 0 +-- Retrieval info: CONNECT: @data_b 0 0 8 0 data_b 0 0 8 0 +-- Retrieval info: CONNECT: @address_b 0 0 8 0 address_b 0 0 8 0 +-- Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock_a 0 0 0 0 +-- Retrieval info: CONNECT: @clock1 0 0 0 0 clock_b 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altpll0.bsf new file mode 100644 index 0000000..b9a2853 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll0.bsf @@ -0,0 +1,117 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 280 248) + (text "altpll0" (rect 120 1 167 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 229 31 244)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 38 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 280 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 263 56 277 72)(font "Arial" (font_size 8))) + (line (pt 280 72)(pt 248 72)(line_width 1)) + ) + (port + (pt 280 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 263 80 277 96)(font "Arial" (font_size 8))) + (line (pt 280 96)(pt 248 96)(line_width 1)) + ) + (port + (pt 280 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 263 104 277 120)(font "Arial" (font_size 8))) + (line (pt 280 120)(pt 248 120)(line_width 1)) + ) + (port + (pt 280 144) + (output) + (text "c3" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c3" (rect 263 128 277 144)(font "Arial" (font_size 8))) + (line (pt 280 144)(pt 248 144)(line_width 1)) + ) + (port + (pt 280 168) + (output) + (text "c4" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c4" (rect 263 152 277 168)(font "Arial" (font_size 8))) + (line (pt 280 168)(pt 248 168)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 205 230 253 244)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 201 81)(font "Arial" )) + (text "Operation Mode: Normal" (rect 58 84 173 98)(font "Arial" )) + (text "Clk " (rect 59 111 76 125)(font "Arial" )) + (text "Ratio" (rect 90 111 114 125)(font "Arial" )) + (text "Ph (dg)" (rect 128 111 163 125)(font "Arial" )) + (text "DC (%)" (rect 173 111 208 125)(font "Arial" )) + (text "c0" (rect 63 129 75 143)(font "Arial" )) + (text "16/11" (rect 89 129 116 143)(font "Arial" )) + (text "0.00" (rect 136 129 157 143)(font "Arial" )) + (text "50.00" (rect 178 129 205 143)(font "Arial" )) + (text "c1" (rect 63 147 75 161)(font "Arial" )) + (text "50/11" (rect 89 147 116 161)(font "Arial" )) + (text "0.00" (rect 136 147 157 161)(font "Arial" )) + (text "50.00" (rect 178 147 205 161)(font "Arial" )) + (text "c2" (rect 63 165 75 179)(font "Arial" )) + (text "40/11" (rect 89 165 116 179)(font "Arial" )) + (text "0.00" (rect 136 165 157 179)(font "Arial" )) + (text "50.00" (rect 178 165 205 179)(font "Arial" )) + (text "c3" (rect 63 183 75 197)(font "Arial" )) + (text "109/33" (rect 85 183 118 197)(font "Arial" )) + (text "0.00" (rect 136 183 157 197)(font "Arial" )) + (text "50.00" (rect 178 183 205 197)(font "Arial" )) + (text "c4" (rect 63 201 75 215)(font "Arial" )) + (text "109/39" (rect 85 201 118 215)(font "Arial" )) + (text "0.00" (rect 136 201 157 215)(font "Arial" )) + (text "50.00" (rect 178 201 205 215)(font "Arial" )) + (line (pt 0 0)(pt 281 0)(line_width 1)) + (line (pt 281 0)(pt 281 249)(line_width 1)) + (line (pt 0 249)(pt 281 249)(line_width 1)) + (line (pt 0 0)(pt 0 249)(line_width 1)) + (line (pt 56 108)(pt 215 108)(line_width 1)) + (line (pt 56 125)(pt 215 125)(line_width 1)) + (line (pt 56 143)(pt 215 143)(line_width 1)) + (line (pt 56 161)(pt 215 161)(line_width 1)) + (line (pt 56 179)(pt 215 179)(line_width 1)) + (line (pt 56 197)(pt 215 197)(line_width 1)) + (line (pt 56 215)(pt 215 215)(line_width 1)) + (line (pt 56 108)(pt 56 215)(line_width 1)) + (line (pt 82 108)(pt 82 215)(line_width 3)) + (line (pt 125 108)(pt 125 215)(line_width 3)) + (line (pt 170 108)(pt 170 215)(line_width 3)) + (line (pt 214 108)(pt 214 215)(line_width 1)) + (line (pt 48 56)(pt 248 56)(line_width 1)) + (line (pt 248 56)(pt 248 232)(line_width 1)) + (line (pt 48 232)(pt 248 232)(line_width 1)) + (line (pt 48 56)(pt 48 232)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll0.inc b/FPGA_by_Gregory_Estrade/altip_orig/altpll0.inc new file mode 100644 index 0000000..933af49 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll0.inc @@ -0,0 +1,27 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll0 +( + inclk0 +) + +RETURNS ( + c0, + c1, + c2, + c3, + c4 +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll0.ppf b/FPGA_by_Gregory_Estrade/altip_orig/altpll0.ppf new file mode 100644 index 0000000..521a742 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll0.ppf @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll0.qip b/FPGA_by_Gregory_Estrade/altip_orig/altpll0.qip new file mode 100644 index 0000000..1b4cd11 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll0.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altpll0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll0.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll0.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altpll0.vhd new file mode 100644 index 0000000..b035bf5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll0.vhd @@ -0,0 +1,477 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: altpll0.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altpll0 IS + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC ; + c4 : OUT STD_LOGIC + ); +END altpll0; + + +ARCHITECTURE SYN OF altpll0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC ; + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire8_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + clk3_divide_by : NATURAL; + clk3_duty_cycle : NATURAL; + clk3_multiply_by : NATURAL; + clk3_phase_shift : STRING; + clk4_divide_by : NATURAL; + clk4_duty_cycle : NATURAL; + clk4_multiply_by : NATURAL; + clk4_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + width_clock : NATURAL + ); + PORT ( + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire8_bv(0 DOWNTO 0) <= "0"; + sub_wire8 <= To_stdlogicvector(sub_wire8_bv); + sub_wire5 <= sub_wire0(4); + sub_wire4 <= sub_wire0(3); + sub_wire3 <= sub_wire0(2); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + c2 <= sub_wire3; + c3 <= sub_wire4; + c4 <= sub_wire5; + sub_wire6 <= inclk0; + sub_wire7 <= sub_wire8(0 DOWNTO 0) & sub_wire6; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 11, + clk0_duty_cycle => 50, + clk0_multiply_by => 16, + clk0_phase_shift => "0", + clk1_divide_by => 11, + clk1_duty_cycle => 50, + clk1_multiply_by => 50, + clk1_phase_shift => "0", + clk2_divide_by => 11, + clk2_duty_cycle => 50, + clk2_multiply_by => 40, + clk2_phase_shift => "0", + clk3_divide_by => 33, + clk3_duty_cycle => 50, + clk3_multiply_by => 109, + clk3_phase_shift => "0", + clk4_divide_by => 39, + clk4_duty_cycle => 50, + clk4_multiply_by => 109, + clk4_phase_shift => "0", + compensate_clock => "CLK0", + inclk0_input_frequency => 30303, + intended_device_family => "Cyclone III", + lpm_type => "altpll", + operation_mode => "NORMAL", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_UNUSED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_UNUSED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_USED", + port_clk4 => "PORT_USED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + width_clock => 5 + ) + PORT MAP ( + inclk => sub_wire7, + clk => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "75" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "33" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "36" +-- Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "39" +-- Retrieval info: PRIVATE: DIV_FACTOR4 NUMERIC "39" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE4 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "48.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "150.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "120.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "109.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE4 STRING "92.230766" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "0" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "330.000" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT4 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK4 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "109" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "109" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "109" +-- Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "109" +-- Retrieval info: PRIVATE: MULT_FACTOR4 NUMERIC "109" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "48.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "150.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "120.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "109.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ4 STRING "92.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE4 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT4 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT4 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT4 STRING "ps" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll0.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK4 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK3 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK4 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA4 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "11" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "16" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "11" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "11" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "40" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "33" +-- Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "109" +-- Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK4_DIVIDE_BY NUMERIC "39" +-- Retrieval info: CONSTANT: CLK4_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK4_MULTIPLY_BY NUMERIC "109" +-- Retrieval info: CONSTANT: CLK4_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +-- Retrieval info: USED_PORT: c4 0 0 0 0 OUTPUT_CLK_EXT VCC "c4" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: c4 0 0 0 0 @clk 0 0 1 4 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altpll1.bsf new file mode 100644 index 0000000..d1e4a9e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll1.bsf @@ -0,0 +1,100 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 328 216) + (text "altpll1" (rect 144 1 191 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 197 31 212)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 38 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 328 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 311 56 325 72)(font "Arial" (font_size 8))) + (line (pt 328 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 328 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 311 80 325 96)(font "Arial" (font_size 8))) + (line (pt 328 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 328 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 311 104 325 120)(font "Arial" (font_size 8))) + (line (pt 328 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 328 144) + (output) + (text "locked" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "locked" (rect 287 128 325 144)(font "Arial" (font_size 8))) + (line (pt 328 144)(pt 272 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 253 198 301 212)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 201 81)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 215 98)(font "Arial" )) + (text "Clk " (rect 59 111 76 125)(font "Arial" )) + (text "Ratio" (rect 90 111 114 125)(font "Arial" )) + (text "Ph (dg)" (rect 128 111 163 125)(font "Arial" )) + (text "DC (%)" (rect 173 111 208 125)(font "Arial" )) + (text "c0" (rect 63 129 75 143)(font "Arial" )) + (text "1/66" (rect 92 129 113 143)(font "Arial" )) + (text "0.00" (rect 136 129 157 143)(font "Arial" )) + (text "50.00" (rect 178 129 205 143)(font "Arial" )) + (text "c1" (rect 63 147 75 161)(font "Arial" )) + (text "67/900" (rect 85 147 118 161)(font "Arial" )) + (text "0.00" (rect 136 147 157 161)(font "Arial" )) + (text "50.00" (rect 178 147 205 161)(font "Arial" )) + (text "c2" (rect 63 165 75 179)(font "Arial" )) + (text "67/90" (rect 89 165 116 179)(font "Arial" )) + (text "0.00" (rect 136 165 157 179)(font "Arial" )) + (text "50.00" (rect 178 165 205 179)(font "Arial" )) + (line (pt 0 0)(pt 329 0)(line_width 1)) + (line (pt 329 0)(pt 329 217)(line_width 1)) + (line (pt 0 217)(pt 329 217)(line_width 1)) + (line (pt 0 0)(pt 0 217)(line_width 1)) + (line (pt 56 108)(pt 215 108)(line_width 1)) + (line (pt 56 125)(pt 215 125)(line_width 1)) + (line (pt 56 143)(pt 215 143)(line_width 1)) + (line (pt 56 161)(pt 215 161)(line_width 1)) + (line (pt 56 179)(pt 215 179)(line_width 1)) + (line (pt 56 108)(pt 56 179)(line_width 1)) + (line (pt 82 108)(pt 82 179)(line_width 3)) + (line (pt 125 108)(pt 125 179)(line_width 3)) + (line (pt 170 108)(pt 170 179)(line_width 3)) + (line (pt 214 108)(pt 214 179)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 200)(line_width 1)) + (line (pt 48 200)(pt 272 200)(line_width 1)) + (line (pt 48 56)(pt 48 200)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll1.inc b/FPGA_by_Gregory_Estrade/altip_orig/altpll1.inc new file mode 100644 index 0000000..0923ad2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll1.inc @@ -0,0 +1,26 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll1 +( + inclk0 +) + +RETURNS ( + c0, + c1, + c2, + locked +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll1.ppf b/FPGA_by_Gregory_Estrade/altip_orig/altpll1.ppf new file mode 100644 index 0000000..0f38a28 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll1.ppf @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll1.qip b/FPGA_by_Gregory_Estrade/altip_orig/altpll1.qip new file mode 100644 index 0000000..ec03f05 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll1.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altpll1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll1.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll1.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll1.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altpll1.vhd new file mode 100644 index 0000000..ab9bfaf --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll1.vhd @@ -0,0 +1,423 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: altpll1.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altpll1 IS + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +END altpll1; + + +ARCHITECTURE SYN OF altpll1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire7_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + self_reset_on_loss_lock : STRING; + width_clock : NATURAL + ); + PORT ( + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + locked : OUT STD_LOGIC ; + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire7_bv(0 DOWNTO 0) <= "0"; + sub_wire7 <= To_stdlogicvector(sub_wire7_bv); + sub_wire3 <= sub_wire0(2); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + c2 <= sub_wire3; + locked <= sub_wire4; + sub_wire5 <= inclk0; + sub_wire6 <= sub_wire7(0 DOWNTO 0) & sub_wire5; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 66, + clk0_duty_cycle => 50, + clk0_multiply_by => 1, + clk0_phase_shift => "0", + clk1_divide_by => 900, + clk1_duty_cycle => 50, + clk1_multiply_by => 67, + clk1_phase_shift => "0", + clk2_divide_by => 90, + clk2_duty_cycle => 50, + clk2_multiply_by => 67, + clk2_phase_shift => "0", + compensate_clock => "CLK0", + inclk0_input_frequency => 30303, + intended_device_family => "Cyclone III", + lpm_type => "altpll", + operation_mode => "SOURCE_SYNCHRONOUS", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_UNUSED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_USED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_UNUSED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + self_reset_on_loss_lock => "OFF", + width_clock => 5 + ) + PORT MAP ( + inclk => sub_wire6, + clk => sub_wire0, + locked => sub_wire4 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "90" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "900" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "90" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "0.500000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "2.456667" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "24.566668" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "330.000" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "67" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "67" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "67" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "0.50000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "2.45760000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "24.57600000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll1.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "66" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "900" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "67" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "90" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "67" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "SOURCE_SYNCHRONOUS" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll2.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altpll2.bsf new file mode 100644 index 0000000..79679d7 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll2.bsf @@ -0,0 +1,117 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 304 248) + (text "altpll2" (rect 132 1 179 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 229 31 244)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 38 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 304 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 287 56 301 72)(font "Arial" (font_size 8))) + (line (pt 304 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 304 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 287 80 301 96)(font "Arial" (font_size 8))) + (line (pt 304 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 304 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 287 104 301 120)(font "Arial" (font_size 8))) + (line (pt 304 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 304 144) + (output) + (text "c3" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c3" (rect 287 128 301 144)(font "Arial" (font_size 8))) + (line (pt 304 144)(pt 272 144)(line_width 1)) + ) + (port + (pt 304 168) + (output) + (text "c4" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c4" (rect 287 152 301 168)(font "Arial" (font_size 8))) + (line (pt 304 168)(pt 272 168)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 229 230 277 244)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 201 81)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 215 98)(font "Arial" )) + (text "Clk " (rect 59 111 76 125)(font "Arial" )) + (text "Ratio" (rect 85 111 109 125)(font "Arial" )) + (text "Ph (dg)" (rect 119 111 154 125)(font "Arial" )) + (text "DC (%)" (rect 164 111 199 125)(font "Arial" )) + (text "c0" (rect 63 129 75 143)(font "Arial" )) + (text "4/1" (rect 91 129 106 143)(font "Arial" )) + (text "240.00" (rect 120 129 153 143)(font "Arial" )) + (text "50.00" (rect 169 129 196 143)(font "Arial" )) + (text "c1" (rect 63 147 75 161)(font "Arial" )) + (text "4/1" (rect 91 147 106 161)(font "Arial" )) + (text "0.00" (rect 127 147 148 161)(font "Arial" )) + (text "50.00" (rect 169 147 196 161)(font "Arial" )) + (text "c2" (rect 63 165 75 179)(font "Arial" )) + (text "4/1" (rect 91 165 106 179)(font "Arial" )) + (text "180.00" (rect 120 165 153 179)(font "Arial" )) + (text "50.00" (rect 169 165 196 179)(font "Arial" )) + (text "c3" (rect 63 183 75 197)(font "Arial" )) + (text "4/1" (rect 91 183 106 197)(font "Arial" )) + (text "105.00" (rect 120 183 153 197)(font "Arial" )) + (text "50.00" (rect 169 183 196 197)(font "Arial" )) + (text "c4" (rect 63 201 75 215)(font "Arial" )) + (text "2/1" (rect 91 201 106 215)(font "Arial" )) + (text "270.00" (rect 120 201 153 215)(font "Arial" )) + (text "50.00" (rect 169 201 196 215)(font "Arial" )) + (line (pt 0 0)(pt 305 0)(line_width 1)) + (line (pt 305 0)(pt 305 249)(line_width 1)) + (line (pt 0 249)(pt 305 249)(line_width 1)) + (line (pt 0 0)(pt 0 249)(line_width 1)) + (line (pt 56 108)(pt 206 108)(line_width 1)) + (line (pt 56 125)(pt 206 125)(line_width 1)) + (line (pt 56 143)(pt 206 143)(line_width 1)) + (line (pt 56 161)(pt 206 161)(line_width 1)) + (line (pt 56 179)(pt 206 179)(line_width 1)) + (line (pt 56 197)(pt 206 197)(line_width 1)) + (line (pt 56 215)(pt 206 215)(line_width 1)) + (line (pt 56 108)(pt 56 215)(line_width 1)) + (line (pt 82 108)(pt 82 215)(line_width 3)) + (line (pt 116 108)(pt 116 215)(line_width 3)) + (line (pt 161 108)(pt 161 215)(line_width 3)) + (line (pt 205 108)(pt 205 215)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 232)(line_width 1)) + (line (pt 48 232)(pt 272 232)(line_width 1)) + (line (pt 48 56)(pt 48 232)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll2.inc b/FPGA_by_Gregory_Estrade/altip_orig/altpll2.inc new file mode 100644 index 0000000..e75913b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll2.inc @@ -0,0 +1,27 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll2 +( + inclk0 +) + +RETURNS ( + c0, + c1, + c2, + c3, + c4 +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll2.ppf b/FPGA_by_Gregory_Estrade/altip_orig/altpll2.ppf new file mode 100644 index 0000000..b1c71cc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll2.ppf @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll2.qip b/FPGA_by_Gregory_Estrade/altip_orig/altpll2.qip new file mode 100644 index 0000000..74cc641 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll2.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altpll2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll2.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll2.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll2.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll2.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altpll2.vhd new file mode 100644 index 0000000..2c55f08 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll2.vhd @@ -0,0 +1,477 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: altpll2.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altpll2 IS + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC ; + c4 : OUT STD_LOGIC + ); +END altpll2; + + +ARCHITECTURE SYN OF altpll2 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC ; + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire8_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + clk3_divide_by : NATURAL; + clk3_duty_cycle : NATURAL; + clk3_multiply_by : NATURAL; + clk3_phase_shift : STRING; + clk4_divide_by : NATURAL; + clk4_duty_cycle : NATURAL; + clk4_multiply_by : NATURAL; + clk4_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + width_clock : NATURAL + ); + PORT ( + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire8_bv(0 DOWNTO 0) <= "0"; + sub_wire8 <= To_stdlogicvector(sub_wire8_bv); + sub_wire5 <= sub_wire0(4); + sub_wire4 <= sub_wire0(3); + sub_wire3 <= sub_wire0(2); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + c2 <= sub_wire3; + c3 <= sub_wire4; + c4 <= sub_wire5; + sub_wire6 <= inclk0; + sub_wire7 <= sub_wire8(0 DOWNTO 0) & sub_wire6; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 1, + clk0_duty_cycle => 50, + clk0_multiply_by => 4, + clk0_phase_shift => "5051", + clk1_divide_by => 1, + clk1_duty_cycle => 50, + clk1_multiply_by => 4, + clk1_phase_shift => "0", + clk2_divide_by => 1, + clk2_duty_cycle => 50, + clk2_multiply_by => 4, + clk2_phase_shift => "3788", + clk3_divide_by => 1, + clk3_duty_cycle => 50, + clk3_multiply_by => 4, + clk3_phase_shift => "2210", + clk4_divide_by => 1, + clk4_duty_cycle => 50, + clk4_multiply_by => 2, + clk4_phase_shift => "11364", + compensate_clock => "CLK0", + inclk0_input_frequency => 30303, + intended_device_family => "Cyclone III", + lpm_type => "altpll", + operation_mode => "SOURCE_SYNCHRONOUS", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_UNUSED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_UNUSED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_USED", + port_clk4 => "PORT_USED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + width_clock => 5 + ) + PORT MAP ( + inclk => sub_wire7, + clk => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR4 NUMERIC "1" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE4 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "132.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "132.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "132.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "132.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE4 STRING "66.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "0" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "330.000" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT4 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK4 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "4" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "4" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "4" +-- Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "4" +-- Retrieval info: PRIVATE: MULT_FACTOR4 NUMERIC "2" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "133.33333000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "133.33330000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "133.33330000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "133.33330000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ4 STRING "100.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE4 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT4 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "240.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "180.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "105.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT4 STRING "270.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT4 STRING "deg" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll2.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK4 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK3 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK4 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA4 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "5051" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "3788" +-- Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "2210" +-- Retrieval info: CONSTANT: CLK4_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK4_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK4_MULTIPLY_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK4_PHASE_SHIFT STRING "11364" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "SOURCE_SYNCHRONOUS" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +-- Retrieval info: USED_PORT: c4 0 0 0 0 OUTPUT_CLK_EXT VCC "c4" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: c4 0 0 0 0 @clk 0 0 1 4 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll3.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altpll3.bsf new file mode 100644 index 0000000..da30b0c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll3.bsf @@ -0,0 +1,105 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 304 232) + (text "altpll3" (rect 132 1 179 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 213 31 228)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 38 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 304 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 287 56 301 72)(font "Arial" (font_size 8))) + (line (pt 304 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 304 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 287 80 301 96)(font "Arial" (font_size 8))) + (line (pt 304 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 304 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 287 104 301 120)(font "Arial" (font_size 8))) + (line (pt 304 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 304 144) + (output) + (text "c3" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c3" (rect 287 128 301 144)(font "Arial" (font_size 8))) + (line (pt 304 144)(pt 272 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 229 214 277 228)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 201 81)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 215 98)(font "Arial" )) + (text "Clk " (rect 59 111 76 125)(font "Arial" )) + (text "Ratio" (rect 86 111 110 125)(font "Arial" )) + (text "Ph (dg)" (rect 121 111 156 125)(font "Arial" )) + (text "DC (%)" (rect 166 111 201 125)(font "Arial" )) + (text "c0" (rect 63 129 75 143)(font "Arial" )) + (text "2/33" (rect 88 129 109 143)(font "Arial" )) + (text "0.00" (rect 129 129 150 143)(font "Arial" )) + (text "50.00" (rect 171 129 198 143)(font "Arial" )) + (text "c1" (rect 63 147 75 161)(font "Arial" )) + (text "16/33" (rect 85 147 112 161)(font "Arial" )) + (text "0.00" (rect 129 147 150 161)(font "Arial" )) + (text "50.00" (rect 171 147 198 161)(font "Arial" )) + (text "c2" (rect 63 165 75 179)(font "Arial" )) + (text "25/33" (rect 85 165 112 179)(font "Arial" )) + (text "0.00" (rect 129 165 150 179)(font "Arial" )) + (text "50.00" (rect 171 165 198 179)(font "Arial" )) + (text "c3" (rect 63 183 75 197)(font "Arial" )) + (text "16/11" (rect 85 183 112 197)(font "Arial" )) + (text "0.00" (rect 129 183 150 197)(font "Arial" )) + (text "50.00" (rect 171 183 198 197)(font "Arial" )) + (line (pt 0 0)(pt 305 0)(line_width 1)) + (line (pt 305 0)(pt 305 233)(line_width 1)) + (line (pt 0 233)(pt 305 233)(line_width 1)) + (line (pt 0 0)(pt 0 233)(line_width 1)) + (line (pt 56 108)(pt 208 108)(line_width 1)) + (line (pt 56 125)(pt 208 125)(line_width 1)) + (line (pt 56 143)(pt 208 143)(line_width 1)) + (line (pt 56 161)(pt 208 161)(line_width 1)) + (line (pt 56 179)(pt 208 179)(line_width 1)) + (line (pt 56 197)(pt 208 197)(line_width 1)) + (line (pt 56 108)(pt 56 197)(line_width 1)) + (line (pt 82 108)(pt 82 197)(line_width 3)) + (line (pt 118 108)(pt 118 197)(line_width 3)) + (line (pt 163 108)(pt 163 197)(line_width 3)) + (line (pt 207 108)(pt 207 197)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 216)(line_width 1)) + (line (pt 48 216)(pt 272 216)(line_width 1)) + (line (pt 48 56)(pt 48 216)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll3.inc b/FPGA_by_Gregory_Estrade/altip_orig/altpll3.inc new file mode 100644 index 0000000..160ecad --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll3.inc @@ -0,0 +1,26 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll3 +( + inclk0 +) + +RETURNS ( + c0, + c1, + c2, + c3 +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll3.ppf b/FPGA_by_Gregory_Estrade/altip_orig/altpll3.ppf new file mode 100644 index 0000000..2a7b695 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll3.ppf @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll3.qip b/FPGA_by_Gregory_Estrade/altip_orig/altpll3.qip new file mode 100644 index 0000000..8dd2955 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll3.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altpll3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll3.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll3.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll3.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll3.vhd b/FPGA_by_Gregory_Estrade/altip_orig/altpll3.vhd new file mode 100644 index 0000000..6ead1f5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll3.vhd @@ -0,0 +1,445 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: altpll3.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altpll3 IS + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC + ); +END altpll3; + + +ARCHITECTURE SYN OF altpll3 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire7_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + clk3_divide_by : NATURAL; + clk3_duty_cycle : NATURAL; + clk3_multiply_by : NATURAL; + clk3_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + width_clock : NATURAL + ); + PORT ( + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire7_bv(0 DOWNTO 0) <= "0"; + sub_wire7 <= To_stdlogicvector(sub_wire7_bv); + sub_wire4 <= sub_wire0(3); + sub_wire3 <= sub_wire0(2); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + c2 <= sub_wire3; + c3 <= sub_wire4; + sub_wire5 <= inclk0; + sub_wire6 <= sub_wire7(0 DOWNTO 0) & sub_wire5; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 33, + clk0_duty_cycle => 50, + clk0_multiply_by => 2, + clk0_phase_shift => "0", + clk1_divide_by => 33, + clk1_duty_cycle => 50, + clk1_multiply_by => 16, + clk1_phase_shift => "0", + clk2_divide_by => 33, + clk2_duty_cycle => 50, + clk2_multiply_by => 25, + clk2_phase_shift => "0", + clk3_divide_by => 11, + clk3_duty_cycle => 50, + clk3_multiply_by => 16, + clk3_phase_shift => "0", + compensate_clock => "CLK1", + inclk0_input_frequency => 30303, + intended_device_family => "Cyclone III", + lpm_type => "altpll", + operation_mode => "SOURCE_SYNCHRONOUS", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_UNUSED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_UNUSED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_USED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + width_clock => 5 + ) + PORT MAP ( + inclk => sub_wire6, + clk => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c1" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "33" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "33" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "33" +-- Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "33" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "2.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "16.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "25.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "48.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "0" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "330.000" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "2" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "16" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "25" +-- Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "48" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "2.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "16.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "25.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "160.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll3.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK3 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "33" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "33" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "16" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "33" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "25" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "11" +-- Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "16" +-- Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK1" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "SOURCE_SYNCHRONOUS" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll4.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.bsf new file mode 100644 index 0000000..e071d43 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.bsf @@ -0,0 +1,125 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 376 232) + (text "altpll4" (rect 168 1 215 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 213 31 228)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 38 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 88 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "areset" (rect 0 0 42 16)(font "Arial" (font_size 8))) + (text "areset" (rect 4 80 40 96)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 88 96)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "scanclk" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "scanclk" (rect 4 104 49 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 88 120)(line_width 1)) + ) + (port + (pt 0 144) + (input) + (text "scandata" (rect 0 0 62 16)(font "Arial" (font_size 8))) + (text "scandata" (rect 4 128 57 144)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 88 144)(line_width 1)) + ) + (port + (pt 0 168) + (input) + (text "scanclkena" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "scanclkena" (rect 4 152 70 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 88 168)(line_width 1)) + ) + (port + (pt 0 192) + (input) + (text "configupdate" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "configupdate" (rect 4 176 77 192)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 88 192)(line_width 1)) + ) + (port + (pt 376 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 359 56 373 72)(font "Arial" (font_size 8))) + (line (pt 376 72)(pt 288 72)(line_width 1)) + ) + (port + (pt 376 96) + (output) + (text "scandataout" (rect 0 0 83 16)(font "Arial" (font_size 8))) + (text "scandataout" (rect 302 80 373 96)(font "Arial" (font_size 8))) + (line (pt 376 96)(pt 288 96)(line_width 1)) + ) + (port + (pt 376 120) + (output) + (text "scandone" (rect 0 0 66 16)(font "Arial" (font_size 8))) + (text "scandone" (rect 317 104 373 120)(font "Arial" (font_size 8))) + (line (pt 376 120)(pt 288 120)(line_width 1)) + ) + (port + (pt 376 144) + (output) + (text "locked" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "locked" (rect 335 128 373 144)(font "Arial" (font_size 8))) + (line (pt 376 144)(pt 288 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 301 214 349 228)(font "Arial" )) + (text "inclk0 frequency: 48.000 MHz" (rect 98 123 241 137)(font "Arial" )) + (text "Operation Mode: Normal" (rect 98 140 213 154)(font "Arial" )) + (text "Clk " (rect 99 167 116 181)(font "Arial" )) + (text "Ratio" (rect 125 167 149 181)(font "Arial" )) + (text "Ph (dg)" (rect 159 167 194 181)(font "Arial" )) + (text "DC (%)" (rect 204 167 239 181)(font "Arial" )) + (text "c0" (rect 103 185 115 199)(font "Arial" )) + (text "2/1" (rect 131 185 146 199)(font "Arial" )) + (text "0.00" (rect 167 185 188 199)(font "Arial" )) + (text "50.00" (rect 209 185 236 199)(font "Arial" )) + (line (pt 0 0)(pt 377 0)(line_width 1)) + (line (pt 377 0)(pt 377 233)(line_width 1)) + (line (pt 0 233)(pt 377 233)(line_width 1)) + (line (pt 0 0)(pt 0 233)(line_width 1)) + (line (pt 96 164)(pt 246 164)(line_width 1)) + (line (pt 96 181)(pt 246 181)(line_width 1)) + (line (pt 96 199)(pt 246 199)(line_width 1)) + (line (pt 96 164)(pt 96 199)(line_width 1)) + (line (pt 122 164)(pt 122 199)(line_width 3)) + (line (pt 156 164)(pt 156 199)(line_width 3)) + (line (pt 201 164)(pt 201 199)(line_width 3)) + (line (pt 245 164)(pt 245 199)(line_width 1)) + (line (pt 88 56)(pt 288 56)(line_width 1)) + (line (pt 288 56)(pt 288 216)(line_width 1)) + (line (pt 88 216)(pt 288 216)(line_width 1)) + (line (pt 88 56)(pt 88 216)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll4.inc b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.inc new file mode 100644 index 0000000..39f54c9 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.inc @@ -0,0 +1,31 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll4 +( + areset, + configupdate, + inclk0, + scanclk, + scanclkena, + scandata +) + +RETURNS ( + c0, + locked, + scandataout, + scandone +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll4.mif b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.mif new file mode 100644 index 0000000..e50eda2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.mif @@ -0,0 +1,174 @@ +-- Copyright (C) 1991-2010 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + +-- MIF file representing initial state of PLL Scan Chain +-- Device Family: Cyclone III +-- Device Part: - +-- Device Speed Grade: 8 +-- PLL Scan Chain: Fast PLL (144 bits) +-- File Name: C:\FireBee\FPGA\altpll4.mif +-- Generated: Mon Dec 06 01:47:24 2010 + +WIDTH=1; +DEPTH=144; + +ADDRESS_RADIX=UNS; +DATA_RADIX=UNS; + +CONTENT BEGIN + 0 : 0; -- Reserved Bits = 0 (1 bit(s)) + 1 : 0; -- Reserved Bits = 0 (1 bit(s)) + 2 : 0; -- Loop Filter Capacitance = 0 (2 bit(s)) (Setting 0) + 3 : 0; + 4 : 1; -- Loop Filter Resistance = 27 (5 bit(s)) (Setting 27) + 5 : 1; + 6 : 0; + 7 : 1; + 8 : 1; + 9 : 0; -- VCO Post Scale = 0 (1 bit(s)) (VCO post-scale divider counter value = 2) + 10 : 0; -- Reserved Bits = 0 (5 bit(s)) + 11 : 0; + 12 : 0; + 13 : 0; + 14 : 0; + 15 : 0; -- Charge Pump Current = 1 (3 bit(s)) (Setting 1) + 16 : 0; + 17 : 1; + 18 : 1; -- N counter: Bypass = 1 (1 bit(s)) + 19 : 0; -- N counter: High Count = 0 (8 bit(s)) + 20 : 0; + 21 : 0; + 22 : 0; + 23 : 0; + 24 : 0; + 25 : 0; + 26 : 0; + 27 : 0; -- N counter: Odd Division = 0 (1 bit(s)) + 28 : 0; -- N counter: Low Count = 0 (8 bit(s)) + 29 : 0; + 30 : 0; + 31 : 0; + 32 : 0; + 33 : 0; + 34 : 0; + 35 : 0; + 36 : 0; -- M counter: Bypass = 0 (1 bit(s)) + 37 : 0; -- M counter: High Count = 6 (8 bit(s)) + 38 : 0; + 39 : 0; + 40 : 0; + 41 : 0; + 42 : 1; + 43 : 1; + 44 : 0; + 45 : 0; -- M counter: Odd Division = 0 (1 bit(s)) + 46 : 0; -- M counter: Low Count = 6 (8 bit(s)) + 47 : 0; + 48 : 0; + 49 : 0; + 50 : 0; + 51 : 1; + 52 : 1; + 53 : 0; + 54 : 0; -- clk0 counter: Bypass = 0 (1 bit(s)) + 55 : 0; -- clk0 counter: High Count = 3 (8 bit(s)) + 56 : 0; + 57 : 0; + 58 : 0; + 59 : 0; + 60 : 0; + 61 : 1; + 62 : 1; + 63 : 0; -- clk0 counter: Odd Division = 0 (1 bit(s)) + 64 : 0; -- clk0 counter: Low Count = 3 (8 bit(s)) + 65 : 0; + 66 : 0; + 67 : 0; + 68 : 0; + 69 : 0; + 70 : 1; + 71 : 1; + 72 : 1; -- clk1 counter: Bypass = 1 (1 bit(s)) + 73 : 0; -- clk1 counter: High Count = 0 (8 bit(s)) + 74 : 0; + 75 : 0; + 76 : 0; + 77 : 0; + 78 : 0; + 79 : 0; + 80 : 0; + 81 : 0; -- clk1 counter: Odd Division = 0 (1 bit(s)) + 82 : 0; -- clk1 counter: Low Count = 0 (8 bit(s)) + 83 : 0; + 84 : 0; + 85 : 0; + 86 : 0; + 87 : 0; + 88 : 0; + 89 : 0; + 90 : 1; -- clk2 counter: Bypass = 1 (1 bit(s)) + 91 : 0; -- clk2 counter: High Count = 0 (8 bit(s)) + 92 : 0; + 93 : 0; + 94 : 0; + 95 : 0; + 96 : 0; + 97 : 0; + 98 : 0; + 99 : 0; -- clk2 counter: Odd Division = 0 (1 bit(s)) + 100 : 0; -- clk2 counter: Low Count = 0 (8 bit(s)) + 101 : 0; + 102 : 0; + 103 : 0; + 104 : 0; + 105 : 0; + 106 : 0; + 107 : 0; + 108 : 1; -- clk3 counter: Bypass = 1 (1 bit(s)) + 109 : 0; -- clk3 counter: High Count = 0 (8 bit(s)) + 110 : 0; + 111 : 0; + 112 : 0; + 113 : 0; + 114 : 0; + 115 : 0; + 116 : 0; + 117 : 0; -- clk3 counter: Odd Division = 0 (1 bit(s)) + 118 : 0; -- clk3 counter: Low Count = 0 (8 bit(s)) + 119 : 0; + 120 : 0; + 121 : 0; + 122 : 0; + 123 : 0; + 124 : 0; + 125 : 0; + 126 : 1; -- clk4 counter: Bypass = 1 (1 bit(s)) + 127 : 0; -- clk4 counter: High Count = 0 (8 bit(s)) + 128 : 0; + 129 : 0; + 130 : 0; + 131 : 0; + 132 : 0; + 133 : 0; + 134 : 0; + 135 : 0; -- clk4 counter: Odd Division = 0 (1 bit(s)) + 136 : 0; -- clk4 counter: Low Count = 0 (8 bit(s)) + 137 : 0; + 138 : 0; + 139 : 0; + 140 : 0; + 141 : 0; + 142 : 0; + 143 : 0; +END; diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll4.ppf b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.ppf new file mode 100644 index 0000000..541ce91 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.ppf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll4.qip b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.qip new file mode 100644 index 0000000..f44acdc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll4.tdf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll4.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll4.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll4.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll4.tdf b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.tdf new file mode 100644 index 0000000..3ec77d4 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll4.tdf @@ -0,0 +1,298 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: altpll4.tdf +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + +INCLUDE "altpll.inc"; + + + +SUBDESIGN altpll4 +( + areset : INPUT = GND; + configupdate : INPUT = GND; + inclk0 : INPUT = GND; + scanclk : INPUT = VCC; + scanclkena : INPUT = GND; + scandata : INPUT = GND; + c0 : OUTPUT; + locked : OUTPUT; + scandataout : OUTPUT; + scandone : OUTPUT; +) + +VARIABLE + + altpll_component : altpll WITH ( + BANDWIDTH_TYPE = "AUTO", + CLK0_DIVIDE_BY = 1, + CLK0_DUTY_CYCLE = 50, + CLK0_MULTIPLY_BY = 2, + CLK0_PHASE_SHIFT = "0", + COMPENSATE_CLOCK = "CLK0", + INCLK0_INPUT_FREQUENCY = 20833, + INTENDED_DEVICE_FAMILY = "Cyclone III", + LPM_TYPE = "altpll", + OPERATION_MODE = "NORMAL", + PLL_TYPE = "AUTO", + PORT_ACTIVECLOCK = "PORT_UNUSED", + PORT_ARESET = "PORT_USED", + PORT_CLKBAD0 = "PORT_UNUSED", + PORT_CLKBAD1 = "PORT_UNUSED", + PORT_CLKLOSS = "PORT_UNUSED", + PORT_CLKSWITCH = "PORT_UNUSED", + PORT_CONFIGUPDATE = "PORT_USED", + PORT_FBIN = "PORT_UNUSED", + PORT_INCLK0 = "PORT_USED", + PORT_INCLK1 = "PORT_UNUSED", + PORT_LOCKED = "PORT_USED", + PORT_PFDENA = "PORT_UNUSED", + PORT_PHASECOUNTERSELECT = "PORT_UNUSED", + PORT_PHASEDONE = "PORT_UNUSED", + PORT_PHASESTEP = "PORT_UNUSED", + PORT_PHASEUPDOWN = "PORT_UNUSED", + PORT_PLLENA = "PORT_UNUSED", + PORT_SCANACLR = "PORT_UNUSED", + PORT_SCANCLK = "PORT_USED", + PORT_SCANCLKENA = "PORT_USED", + PORT_SCANDATA = "PORT_USED", + PORT_SCANDATAOUT = "PORT_USED", + PORT_SCANDONE = "PORT_USED", + PORT_SCANREAD = "PORT_UNUSED", + PORT_SCANWRITE = "PORT_UNUSED", + PORT_clk0 = "PORT_USED", + PORT_clk1 = "PORT_UNUSED", + PORT_clk2 = "PORT_UNUSED", + PORT_clk3 = "PORT_UNUSED", + PORT_clk4 = "PORT_UNUSED", + PORT_clk5 = "PORT_UNUSED", + PORT_clkena0 = "PORT_UNUSED", + PORT_clkena1 = "PORT_UNUSED", + PORT_clkena2 = "PORT_UNUSED", + PORT_clkena3 = "PORT_UNUSED", + PORT_clkena4 = "PORT_UNUSED", + PORT_clkena5 = "PORT_UNUSED", + PORT_extclk0 = "PORT_UNUSED", + PORT_extclk1 = "PORT_UNUSED", + PORT_extclk2 = "PORT_UNUSED", + PORT_extclk3 = "PORT_UNUSED", + SELF_RESET_ON_LOSS_LOCK = "OFF", + WIDTH_CLOCK = 5, + scan_chain_mif_file = "altpll4.mif" + ); + +BEGIN + + c0 = altpll_component.clk[0..0]; + scandone = altpll_component.scandone; + scandataout = altpll_component.scandataout; + locked = altpll_component.locked; + altpll_component.scanclkena = scanclkena; + altpll_component.inclk[0..0] = inclk0; + altpll_component.inclk[1..1] = GND; + altpll_component.scandata = scandata; + altpll_component.areset = areset; + altpll_component.scanclk = scanclk; + altpll_component.configupdate = configupdate; +END; + + + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "96.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "48.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "336.000" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "2" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "144.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll4.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "1" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "20833" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: CONSTANT: scan_chain_mif_file STRING "altpll4.mif" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: configupdate 0 0 0 0 INPUT GND "configupdate" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: USED_PORT: scanclk 0 0 0 0 INPUT_CLK_EXT VCC "scanclk" +-- Retrieval info: USED_PORT: scanclkena 0 0 0 0 INPUT GND "scanclkena" +-- Retrieval info: USED_PORT: scandata 0 0 0 0 INPUT GND "scandata" +-- Retrieval info: USED_PORT: scandataout 0 0 0 0 OUTPUT VCC "scandataout" +-- Retrieval info: USED_PORT: scandone 0 0 0 0 OUTPUT VCC "scandone" +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: CONNECT: scandone 0 0 0 0 @scandone 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: @scandata 0 0 0 0 scandata 0 0 0 0 +-- Retrieval info: CONNECT: @scanclkena 0 0 0 0 scanclkena 0 0 0 0 +-- Retrieval info: CONNECT: @configupdate 0 0 0 0 configupdate 0 0 0 0 +-- Retrieval info: CONNECT: scandataout 0 0 0 0 @scandataout 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: CONNECT: @scanclk 0 0 0 0 scanclk 0 0 0 0 +-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.tdf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4_inst.tdf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.mif TRUE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig0.bsf new file mode 100644 index 0000000..452f320 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig0.bsf @@ -0,0 +1,162 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 216 296) + (text "altpll_reconfig0" (rect 54 1 182 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 277 31 292)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "reconfig" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "reconfig" (rect 20 32 65 48)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "read_param" (rect 0 0 80 16)(font "Arial" (font_size 8))) + (text "read_param" (rect 20 48 88 64)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "write_param" (rect 0 0 82 16)(font "Arial" (font_size 8))) + (text "write_param" (rect 20 64 90 80)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_in[8..0]" (rect 0 0 84 16)(font "Arial" (font_size 8))) + (text "data_in[8..0]" (rect 20 88 92 104)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "counter_type[3..0]" (rect 0 0 123 16)(font "Arial" (font_size 8))) + (text "counter_type[3..0]" (rect 20 104 125 120)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "counter_param[2..0]" (rect 0 0 136 16)(font "Arial" (font_size 8))) + (text "counter_param[2..0]" (rect 20 120 136 136)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "pll_scandataout" (rect 0 0 107 16)(font "Arial" (font_size 8))) + (text "pll_scandataout" (rect 20 160 111 176)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 16 168)(line_width 1)) + ) + (port + (pt 0 184) + (input) + (text "pll_scandone" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "pll_scandone" (rect 20 176 96 192)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 16 184)(line_width 1)) + ) + (port + (pt 0 208) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 20 200 51 216)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)(line_width 1)) + ) + (port + (pt 0 224) + (input) + (text "reset" (rect 0 0 34 16)(font "Arial" (font_size 8))) + (text "reset" (rect 20 216 49 232)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)(line_width 1)) + ) + (port + (pt 0 248) + (input) + (text "pll_areset_in" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_areset_in" (rect 20 240 93 256)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 16 248)(line_width 1)) + ) + (port + (pt 216 40) + (output) + (text "busy" (rect 0 0 33 16)(font "Arial" (font_size 8))) + (text "busy" (rect 169 32 197 48)(font "Arial" (font_size 8))) + (line (pt 216 40)(pt 200 40)(line_width 1)) + ) + (port + (pt 216 96) + (output) + (text "data_out[8..0]" (rect 0 0 94 16)(font "Arial" (font_size 8))) + (text "data_out[8..0]" (rect 117 88 197 104)(font "Arial" (font_size 8))) + (line (pt 216 96)(pt 200 96)(line_width 3)) + ) + (port + (pt 216 152) + (output) + (text "pll_scandata" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_scandata" (rect 124 144 197 160)(font "Arial" (font_size 8))) + (line (pt 216 152)(pt 200 152)(line_width 1)) + ) + (port + (pt 216 168) + (output) + (text "pll_scanclk" (rect 0 0 76 16)(font "Arial" (font_size 8))) + (text "pll_scanclk" (rect 132 160 197 176)(font "Arial" (font_size 8))) + (line (pt 216 168)(pt 200 168)(line_width 1)) + ) + (port + (pt 216 200) + (output) + (text "pll_scanclkena" (rect 0 0 101 16)(font "Arial" (font_size 8))) + (text "pll_scanclkena" (rect 111 192 197 208)(font "Arial" (font_size 8))) + (line (pt 216 200)(pt 200 200)(line_width 1)) + ) + (port + (pt 216 216) + (output) + (text "pll_configupdate" (rect 0 0 109 16)(font "Arial" (font_size 8))) + (text "pll_configupdate" (rect 104 208 197 224)(font "Arial" (font_size 8))) + (line (pt 216 216)(pt 200 216)(line_width 1)) + ) + (port + (pt 216 248) + (output) + (text "pll_areset" (rect 0 0 66 16)(font "Arial" (font_size 8))) + (text "pll_areset" (rect 141 240 197 256)(font "Arial" (font_size 8))) + (line (pt 216 248)(pt 200 248)(line_width 1)) + ) + (drawing + (line (pt 0 0)(pt 217 0)(line_width 1)) + (line (pt 217 0)(pt 217 297)(line_width 1)) + (line (pt 0 297)(pt 217 297)(line_width 1)) + (line (pt 0 0)(pt 0 297)(line_width 1)) + (line (pt 16 24)(pt 201 24)(line_width 1)) + (line (pt 201 24)(pt 201 273)(line_width 1)) + (line (pt 16 273)(pt 201 273)(line_width 1)) + (line (pt 16 24)(pt 16 273)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig0.qip b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig0.qip new file mode 100644 index 0000000..3194459 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL_RECONFIG" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig0.tdf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig0.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.bsf new file mode 100644 index 0000000..f896607 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.bsf @@ -0,0 +1,162 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 216 296) + (text "altpll_reconfig1" (rect 54 1 182 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 277 31 292)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "reconfig" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "reconfig" (rect 20 32 65 48)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "read_param" (rect 0 0 80 16)(font "Arial" (font_size 8))) + (text "read_param" (rect 20 48 88 64)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "write_param" (rect 0 0 82 16)(font "Arial" (font_size 8))) + (text "write_param" (rect 20 64 90 80)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_in[8..0]" (rect 0 0 84 16)(font "Arial" (font_size 8))) + (text "data_in[8..0]" (rect 20 88 92 104)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "counter_type[3..0]" (rect 0 0 123 16)(font "Arial" (font_size 8))) + (text "counter_type[3..0]" (rect 20 104 125 120)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "counter_param[2..0]" (rect 0 0 136 16)(font "Arial" (font_size 8))) + (text "counter_param[2..0]" (rect 20 120 136 136)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "pll_scandataout" (rect 0 0 107 16)(font "Arial" (font_size 8))) + (text "pll_scandataout" (rect 20 160 111 176)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 16 168)(line_width 1)) + ) + (port + (pt 0 184) + (input) + (text "pll_scandone" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "pll_scandone" (rect 20 176 96 192)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 16 184)(line_width 1)) + ) + (port + (pt 0 208) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 20 200 51 216)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)(line_width 1)) + ) + (port + (pt 0 224) + (input) + (text "reset" (rect 0 0 34 16)(font "Arial" (font_size 8))) + (text "reset" (rect 20 216 49 232)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)(line_width 1)) + ) + (port + (pt 0 248) + (input) + (text "pll_areset_in" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_areset_in" (rect 20 240 93 256)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 16 248)(line_width 1)) + ) + (port + (pt 216 40) + (output) + (text "busy" (rect 0 0 33 16)(font "Arial" (font_size 8))) + (text "busy" (rect 169 32 197 48)(font "Arial" (font_size 8))) + (line (pt 216 40)(pt 200 40)(line_width 1)) + ) + (port + (pt 216 96) + (output) + (text "data_out[8..0]" (rect 0 0 94 16)(font "Arial" (font_size 8))) + (text "data_out[8..0]" (rect 117 88 197 104)(font "Arial" (font_size 8))) + (line (pt 216 96)(pt 200 96)(line_width 3)) + ) + (port + (pt 216 152) + (output) + (text "pll_scandata" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_scandata" (rect 124 144 197 160)(font "Arial" (font_size 8))) + (line (pt 216 152)(pt 200 152)(line_width 1)) + ) + (port + (pt 216 168) + (output) + (text "pll_scanclk" (rect 0 0 76 16)(font "Arial" (font_size 8))) + (text "pll_scanclk" (rect 132 160 197 176)(font "Arial" (font_size 8))) + (line (pt 216 168)(pt 200 168)(line_width 1)) + ) + (port + (pt 216 200) + (output) + (text "pll_scanclkena" (rect 0 0 101 16)(font "Arial" (font_size 8))) + (text "pll_scanclkena" (rect 111 192 197 208)(font "Arial" (font_size 8))) + (line (pt 216 200)(pt 200 200)(line_width 1)) + ) + (port + (pt 216 216) + (output) + (text "pll_configupdate" (rect 0 0 109 16)(font "Arial" (font_size 8))) + (text "pll_configupdate" (rect 104 208 197 224)(font "Arial" (font_size 8))) + (line (pt 216 216)(pt 200 216)(line_width 1)) + ) + (port + (pt 216 248) + (output) + (text "pll_areset" (rect 0 0 66 16)(font "Arial" (font_size 8))) + (text "pll_areset" (rect 141 240 197 256)(font "Arial" (font_size 8))) + (line (pt 216 248)(pt 200 248)(line_width 1)) + ) + (drawing + (line (pt 0 0)(pt 217 0)(line_width 1)) + (line (pt 217 0)(pt 217 297)(line_width 1)) + (line (pt 0 297)(pt 217 297)(line_width 1)) + (line (pt 0 0)(pt 0 297)(line_width 1)) + (line (pt 16 24)(pt 201 24)(line_width 1)) + (line (pt 201 24)(pt 201 273)(line_width 1)) + (line (pt 16 273)(pt 201 273)(line_width 1)) + (line (pt 16 24)(pt 16 273)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.inc b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.inc new file mode 100644 index 0000000..c1a6e65 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.inc @@ -0,0 +1,39 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll_reconfig1 +( + clock, + counter_param[2..0], + counter_type[3..0], + data_in[8..0], + pll_areset_in, + pll_scandataout, + pll_scandone, + read_param, + reconfig, + reset, + write_param +) + +RETURNS ( + busy, + data_out[8..0], + pll_areset, + pll_configupdate, + pll_scanclk, + pll_scanclkena, + pll_scandata +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.qip b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.qip new file mode 100644 index 0000000..713a3c3 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL_RECONFIG" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig1.tdf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig1.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.tdf b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.tdf new file mode 100644 index 0000000..82ad4ff --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1.tdf @@ -0,0 +1,144 @@ +-- megafunction wizard: %ALTPLL_RECONFIG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll_reconfig + +-- ============================================================ +-- File Name: altpll_reconfig1.tdf +-- Megafunction Name(s): +-- altpll_reconfig +-- +-- Simulation Library Files(s): +-- altera_mf;cycloneiii;lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + +-- Clearbox generated function header +FUNCTION altpll_reconfig1_pllrcfg_t4q (clock, counter_param[2..0], counter_type[3..0], data_in[8..0], pll_areset_in, pll_scandataout, pll_scandone, read_param, reconfig, reset, write_param) +RETURNS ( busy, data_out[8..0], pll_areset, pll_configupdate, pll_scanclk, pll_scanclkena, pll_scandata); + + + + +SUBDESIGN altpll_reconfig1 +( + clock : INPUT; + counter_param[2..0] : INPUT; + counter_type[3..0] : INPUT; + data_in[8..0] : INPUT; + pll_areset_in : INPUT = GND; + pll_scandataout : INPUT; + pll_scandone : INPUT; + read_param : INPUT; + reconfig : INPUT; + reset : INPUT; + write_param : INPUT; + busy : OUTPUT; + data_out[8..0] : OUTPUT; + pll_areset : OUTPUT; + pll_configupdate : OUTPUT; + pll_scanclk : OUTPUT; + pll_scanclkena : OUTPUT; + pll_scandata : OUTPUT; +) + +VARIABLE + + altpll_reconfig1_pllrcfg_t4q_component : altpll_reconfig1_pllrcfg_t4q; + +BEGIN + + pll_areset = altpll_reconfig1_pllrcfg_t4q_component.pll_areset; + pll_scanclkena = altpll_reconfig1_pllrcfg_t4q_component.pll_scanclkena; + pll_scanclk = altpll_reconfig1_pllrcfg_t4q_component.pll_scanclk; + busy = altpll_reconfig1_pllrcfg_t4q_component.busy; + data_out[8..0] = altpll_reconfig1_pllrcfg_t4q_component.data_out[8..0]; + pll_scandata = altpll_reconfig1_pllrcfg_t4q_component.pll_scandata; + pll_configupdate = altpll_reconfig1_pllrcfg_t4q_component.pll_configupdate; + altpll_reconfig1_pllrcfg_t4q_component.reconfig = reconfig; + altpll_reconfig1_pllrcfg_t4q_component.counter_type[3..0] = counter_type[3..0]; + altpll_reconfig1_pllrcfg_t4q_component.pll_scandone = pll_scandone; + altpll_reconfig1_pllrcfg_t4q_component.pll_scandataout = pll_scandataout; + altpll_reconfig1_pllrcfg_t4q_component.pll_areset_in = pll_areset_in; + altpll_reconfig1_pllrcfg_t4q_component.read_param = read_param; + altpll_reconfig1_pllrcfg_t4q_component.reset = reset; + altpll_reconfig1_pllrcfg_t4q_component.data_in[8..0] = data_in[8..0]; + altpll_reconfig1_pllrcfg_t4q_component.clock = clock; + altpll_reconfig1_pllrcfg_t4q_component.counter_param[2..0] = counter_param[2..0]; + altpll_reconfig1_pllrcfg_t4q_component.write_param = write_param; +END; + + + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: CHAIN_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: INIT_FILE_NAME STRING "./altpll4.mif" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_INIT_FILE STRING "0" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: USED_PORT: busy 0 0 0 0 OUTPUT NODEFVAL "busy" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +-- Retrieval info: USED_PORT: counter_param 0 0 3 0 INPUT NODEFVAL "counter_param[2..0]" +-- Retrieval info: USED_PORT: counter_type 0 0 4 0 INPUT NODEFVAL "counter_type[3..0]" +-- Retrieval info: USED_PORT: data_in 0 0 9 0 INPUT NODEFVAL "data_in[8..0]" +-- Retrieval info: USED_PORT: data_out 0 0 9 0 OUTPUT NODEFVAL "data_out[8..0]" +-- Retrieval info: USED_PORT: pll_areset 0 0 0 0 OUTPUT NODEFVAL "pll_areset" +-- Retrieval info: USED_PORT: pll_areset_in 0 0 0 0 INPUT GND "pll_areset_in" +-- Retrieval info: USED_PORT: pll_configupdate 0 0 0 0 OUTPUT NODEFVAL "pll_configupdate" +-- Retrieval info: USED_PORT: pll_scanclk 0 0 0 0 OUTPUT NODEFVAL "pll_scanclk" +-- Retrieval info: USED_PORT: pll_scanclkena 0 0 0 0 OUTPUT NODEFVAL "pll_scanclkena" +-- Retrieval info: USED_PORT: pll_scandata 0 0 0 0 OUTPUT NODEFVAL "pll_scandata" +-- Retrieval info: USED_PORT: pll_scandataout 0 0 0 0 INPUT NODEFVAL "pll_scandataout" +-- Retrieval info: USED_PORT: pll_scandone 0 0 0 0 INPUT NODEFVAL "pll_scandone" +-- Retrieval info: USED_PORT: read_param 0 0 0 0 INPUT NODEFVAL "read_param" +-- Retrieval info: USED_PORT: reconfig 0 0 0 0 INPUT NODEFVAL "reconfig" +-- Retrieval info: USED_PORT: reset 0 0 0 0 INPUT NODEFVAL "reset" +-- Retrieval info: USED_PORT: write_param 0 0 0 0 INPUT NODEFVAL "write_param" +-- Retrieval info: CONNECT: @data_in 0 0 9 0 data_in 0 0 9 0 +-- Retrieval info: CONNECT: @reset 0 0 0 0 reset 0 0 0 0 +-- Retrieval info: CONNECT: @pll_scandone 0 0 0 0 pll_scandone 0 0 0 0 +-- Retrieval info: CONNECT: @read_param 0 0 0 0 read_param 0 0 0 0 +-- Retrieval info: CONNECT: @counter_type 0 0 4 0 counter_type 0 0 4 0 +-- Retrieval info: CONNECT: @pll_areset_in 0 0 0 0 pll_areset_in 0 0 0 0 +-- Retrieval info: CONNECT: @pll_scandataout 0 0 0 0 pll_scandataout 0 0 0 0 +-- Retrieval info: CONNECT: @write_param 0 0 0 0 write_param 0 0 0 0 +-- Retrieval info: CONNECT: pll_areset 0 0 0 0 @pll_areset 0 0 0 0 +-- Retrieval info: CONNECT: pll_configupdate 0 0 0 0 @pll_configupdate 0 0 0 0 +-- Retrieval info: CONNECT: data_out 0 0 9 0 @data_out 0 0 9 0 +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: pll_scanclkena 0 0 0 0 @pll_scanclkena 0 0 0 0 +-- Retrieval info: CONNECT: busy 0 0 0 0 @busy 0 0 0 0 +-- Retrieval info: CONNECT: @counter_param 0 0 3 0 counter_param 0 0 3 0 +-- Retrieval info: CONNECT: @reconfig 0 0 0 0 reconfig 0 0 0 0 +-- Retrieval info: CONNECT: pll_scandata 0 0 0 0 @pll_scandata 0 0 0 0 +-- Retrieval info: CONNECT: pll_scanclk 0 0 0 0 @pll_scanclk 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.tdf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1_inst.tdf FALSE +-- Retrieval info: LIB_FILE: altera_mf +-- Retrieval info: LIB_FILE: cycloneiii +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1_pllrcfg_bju.tdf b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1_pllrcfg_bju.tdf new file mode 100644 index 0000000..81695ae --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1_pllrcfg_bju.tdf @@ -0,0 +1,583 @@ +--altpll_reconfig CBX_AUTO_BLACKBOX="ALL" device_family="Cyclone III" init_from_rom="NO" scan_init_file="./altpll4.mif" busy clock counter_param counter_type data_in data_out pll_areset pll_areset_in pll_configupdate pll_scanclk pll_scanclkena pll_scandata pll_scandataout pll_scandone read_param reconfig reset write_param +--VERSION_BEGIN 9.1SP2 cbx_altpll_reconfig 2010:03:24:20:43:42:SJ cbx_altsyncram 2010:03:24:20:43:42:SJ cbx_cycloneii 2010:03:24:20:43:43:SJ cbx_lpm_add_sub 2010:03:24:20:43:43:SJ cbx_lpm_compare 2010:03:24:20:43:43:SJ cbx_lpm_counter 2010:03:24:20:43:43:SJ cbx_lpm_decode 2010:03:24:20:43:43:SJ cbx_lpm_mux 2010:03:24:20:43:43:SJ cbx_mgl 2010:03:24:21:01:05:SJ cbx_stratix 2010:03:24:20:43:43:SJ cbx_stratixii 2010:03:24:20:43:43:SJ cbx_stratixiii 2010:03:24:20:43:43:SJ cbx_util_mgl 2010:03:24:20:43:43:SJ VERSION_END + + +-- Copyright (C) 1991-2010 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +include "altsyncram.inc"; +FUNCTION cycloneiii_lcell_comb (cin, dataa, datab, datac, datad) +WITH ( DONT_TOUCH, LUT_MASK, SUM_LUTC_INPUT) +RETURNS ( combout, cout); +FUNCTION lpm_add_sub (aclr, add_sub, cin, clken, clock, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0]) +WITH ( CARRY_CHAIN, CARRY_CHAIN_LENGTH, LPM_DIRECTION, LPM_PIPELINE, LPM_REPRESENTATION, LPM_WIDTH, ONE_INPUT_IS_CONSTANT, REGISTERED_AT_END, USE_WYS) +RETURNS ( cout, overflow, result[LPM_WIDTH-1..0]); +FUNCTION lpm_compare (aclr, clken, clock, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0]) +WITH ( LPM_PIPELINE, LPM_REPRESENTATION, LPM_WIDTH, ONE_INPUT_IS_CONSTANT) +RETURNS ( aeb, agb, ageb, alb, aleb, aneb); +FUNCTION lpm_counter (aclr, aload, aset, cin, clk_en, clock, cnt_en, data[LPM_WIDTH-1..0], sclr, sload, sset, updown) +WITH ( lpm_avalue, lpm_direction, lpm_modulus, lpm_port_updown, lpm_pvalue, lpm_svalue, lpm_width) +RETURNS ( cout, eq[15..0], q[LPM_WIDTH-1..0]); +FUNCTION lpm_decode (aclr, clken, clock, data[LPM_WIDTH-1..0], enable) +WITH ( CASCADE_CHAIN, IGNORE_CASCADE_BUFFERS, LPM_DECODES, LPM_PIPELINE, LPM_WIDTH) +RETURNS ( eq[LPM_DECODES-1..0]); + +--synthesis_resources = altsyncram 1 lpm_add_sub 2 lpm_compare 1 lpm_counter 7 lpm_decode 1 lut 3 reg 80 +OPTIONS ALTERA_INTERNAL_OPTION = "ADV_NETLIST_OPT_ALLOWED=""NEVER_ALLOW"";suppress_da_rule_internal=C106;{-to le_comb10} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=2;{-to le_comb8} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=0;{-to le_comb9} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=1;{-to idle_state} POWER_UP_LEVEL=LOW;{-to read_data_nominal_state} POWER_UP_LEVEL=LOW;{-to read_data_state} POWER_UP_LEVEL=LOW;{-to read_first_nominal_state} POWER_UP_LEVEL=LOW;{-to read_first_state} POWER_UP_LEVEL=LOW;{-to read_init_nominal_state} POWER_UP_LEVEL=LOW;{-to read_init_state} POWER_UP_LEVEL=LOW;{-to read_last_nominal_state} POWER_UP_LEVEL=LOW;{-to read_last_state} POWER_UP_LEVEL=LOW;{-to reconfig_counter_state} POWER_UP_LEVEL=LOW;{-to reconfig_init_state} POWER_UP_LEVEL=LOW;{-to reconfig_post_state} POWER_UP_LEVEL=LOW;{-to reconfig_seq_data_state} POWER_UP_LEVEL=LOW;{-to reconfig_seq_ena_state} POWER_UP_LEVEL=LOW;{-to reconfig_wait_state} POWER_UP_LEVEL=LOW;{-to reset_state} POWER_UP_LEVEL=HIGH;{-to write_data_state} POWER_UP_LEVEL=LOW;{-to write_init_nominal_state} POWER_UP_LEVEL=LOW;{-to write_init_state} POWER_UP_LEVEL=LOW;{-to write_nominal_state} POWER_UP_LEVEL=LOW"; + +SUBDESIGN altpll_reconfig1_pllrcfg_bju +( + busy : output; + clock : input; + counter_param[2..0] : input; + counter_type[3..0] : input; + data_in[8..0] : input; + data_out[8..0] : output; + pll_areset : output; + pll_areset_in : input; + pll_configupdate : output; + pll_scanclk : output; + pll_scanclkena : output; + pll_scandata : output; + pll_scandataout : input; + pll_scandone : input; + read_param : input; + reconfig : input; + reset : input; + write_param : input; +) +VARIABLE + altsyncram4 : altsyncram + WITH ( + INIT_FILE = "./altpll4.mif", + NUMWORDS_A = 144, + OPERATION_MODE = "SINGLE_PORT", + WIDTH_A = 1, + WIDTH_BYTEENA_A = 1, + WIDTHAD_A = 8 + ); + le_comb10 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "F0F0", + SUM_LUTC_INPUT = "datac" + ); + le_comb8 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "AAAA", + SUM_LUTC_INPUT = "datac" + ); + le_comb9 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "CCCC", + SUM_LUTC_INPUT = "datac" + ); + areset_init_state_1 : dffe; + areset_state : dffe; + C0_data_state : dffe; + C0_ena_state : dffe; + C1_data_state : dffe; + C1_ena_state : dffe; + C2_data_state : dffe; + C2_ena_state : dffe; + C3_data_state : dffe; + C3_ena_state : dffe; + C4_data_state : dffe; + C4_ena_state : dffe; + configupdate2_state : dffe; + configupdate3_state : dffe; + configupdate_state : dffe; + counter_param_latch_reg[2..0] : dffe; + counter_type_latch_reg[3..0] : dffe; + idle_state : dffe + WITH ( + power_up = "low" + ); + nominal_data[17..0] : dffe; + read_data_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_data_state : dffe + WITH ( + power_up = "low" + ); + read_first_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_first_state : dffe + WITH ( + power_up = "low" + ); + read_init_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_init_state : dffe + WITH ( + power_up = "low" + ); + read_last_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_last_state : dffe + WITH ( + power_up = "low" + ); + reconfig_counter_state : dffe + WITH ( + power_up = "low" + ); + reconfig_init_state : dffe + WITH ( + power_up = "low" + ); + reconfig_post_state : dffe + WITH ( + power_up = "low" + ); + reconfig_seq_data_state : dffe + WITH ( + power_up = "low" + ); + reconfig_seq_ena_state : dffe + WITH ( + power_up = "low" + ); + reconfig_wait_state : dffe + WITH ( + power_up = "low" + ); + reset_state : dffe + WITH ( + power_up = "high" + ); + shift_reg[17..0] : dffeas; + tmp_nominal_data_out_state : dffe; + tmp_seq_ena_state : dffe; + write_data_state : dffe + WITH ( + power_up = "low" + ); + write_init_nominal_state : dffe + WITH ( + power_up = "low" + ); + write_init_state : dffe + WITH ( + power_up = "low" + ); + write_nominal_state : dffe + WITH ( + power_up = "low" + ); + add_sub5 : lpm_add_sub + WITH ( + LPM_WIDTH = 9 + ); + add_sub6 : lpm_add_sub + WITH ( + LPM_WIDTH = 8 + ); + cmpr7 : lpm_compare + WITH ( + LPM_WIDTH = 8 + ); + cntr1 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr12 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr13 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 6 + ); + cntr14 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 5 + ); + cntr15 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr2 : lpm_counter + WITH ( + lpm_direction = "UP", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr3 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 5 + ); + decode11 : lpm_decode + WITH ( + LPM_DECODES = 5, + LPM_WIDTH = 3 + ); + addr_counter_enable : WIRE; + addr_counter_out[7..0] : WIRE; + addr_counter_sload : WIRE; + addr_counter_sload_value[7..0] : WIRE; + addr_decoder_out[7..0] : WIRE; + c0_wire[7..0] : WIRE; + c1_wire[7..0] : WIRE; + c2_wire[7..0] : WIRE; + c3_wire[7..0] : WIRE; + c4_wire[7..0] : WIRE; + counter_param_latch[2..0] : WIRE; + counter_type_latch[3..0] : WIRE; + cuda_combout_wire[2..0] : WIRE; + dummy_scandataout : WIRE; + encode_out[2..0] : WIRE; + input_latch_enable : WIRE; + power_up : WIRE; + read_addr_counter_enable : WIRE; + read_addr_counter_out[7..0] : WIRE; + read_addr_counter_sload : WIRE; + read_addr_counter_sload_value[7..0] : WIRE; + read_addr_decoder_out[7..0] : WIRE; + read_nominal_out : WIRE; + reconfig_addr_counter_enable : WIRE; + reconfig_addr_counter_out[7..0] : WIRE; + reconfig_addr_counter_sload : WIRE; + reconfig_addr_counter_sload_value[7..0] : WIRE; + reconfig_done : WIRE; + reconfig_post_done : WIRE; + reconfig_width_counter_done : WIRE; + reconfig_width_counter_enable : WIRE; + reconfig_width_counter_sload : WIRE; + reconfig_width_counter_sload_value[5..0] : WIRE; + rotate_addr_counter_enable : WIRE; + rotate_addr_counter_out[7..0] : WIRE; + rotate_addr_counter_sload : WIRE; + rotate_addr_counter_sload_value[7..0] : WIRE; + rotate_decoder_wires[4..0] : WIRE; + rotate_width_counter_done : WIRE; + rotate_width_counter_enable : WIRE; + rotate_width_counter_sload : WIRE; + rotate_width_counter_sload_value[4..0] : WIRE; + scan_cache_address[7..0] : WIRE; + scan_cache_in : WIRE; + scan_cache_out : WIRE; + scan_cache_write_enable : WIRE; + sel_param_bypass_LF_unused : WIRE; + sel_param_c : WIRE; + sel_param_high_i_postscale : WIRE; + sel_param_low_r : WIRE; + sel_param_nominal_count : WIRE; + sel_param_odd_CP_unused : WIRE; + sel_type_c0 : WIRE; + sel_type_c1 : WIRE; + sel_type_c2 : WIRE; + sel_type_c3 : WIRE; + sel_type_c4 : WIRE; + sel_type_cplf : WIRE; + sel_type_m : WIRE; + sel_type_n : WIRE; + sel_type_vco : WIRE; + seq_addr_wire[7..0] : WIRE; + seq_sload_value[5..0] : WIRE; + shift_reg_clear : WIRE; + shift_reg_load_enable : WIRE; + shift_reg_load_nominal_enable : WIRE; + shift_reg_serial_in : WIRE; + shift_reg_serial_out : WIRE; + shift_reg_shift_enable : WIRE; + shift_reg_shift_nominal_enable : WIRE; + shift_reg_width_select[7..0] : WIRE; + w1565w : WIRE; + w1592w : WIRE; + w64w : WIRE; + width_counter_done : WIRE; + width_counter_enable : WIRE; + width_counter_sload : WIRE; + width_counter_sload_value[4..0] : WIRE; + width_decoder_out[4..0] : WIRE; + width_decoder_select[7..0] : WIRE; + write_from_rom : NODE; + +BEGIN + altsyncram4.address_a[] = scan_cache_address[]; + altsyncram4.clock0 = clock; + altsyncram4.data_a[] = ( scan_cache_in); + altsyncram4.wren_a = scan_cache_write_enable; + le_comb10.dataa = encode_out[0..0]; + le_comb10.datab = encode_out[1..1]; + le_comb10.datac = encode_out[2..2]; + le_comb8.dataa = encode_out[0..0]; + le_comb8.datab = encode_out[1..1]; + le_comb8.datac = encode_out[2..2]; + le_comb9.dataa = encode_out[0..0]; + le_comb9.datab = encode_out[1..1]; + le_comb9.datac = encode_out[2..2]; + areset_init_state_1.clk = clock; + areset_init_state_1.d = pll_scandone; + areset_state.clk = clock; + areset_state.d = (areset_init_state_1.q & (! reset)); + C0_data_state.clk = clock; + C0_data_state.d = (C0_ena_state.q # (C0_data_state.q & (! rotate_width_counter_done))); + C0_ena_state.clk = clock; + C0_ena_state.d = (C1_data_state.q & rotate_width_counter_done); + C1_data_state.clk = clock; + C1_data_state.d = (C1_ena_state.q # (C1_data_state.q & (! rotate_width_counter_done))); + C1_ena_state.clk = clock; + C1_ena_state.d = (C2_data_state.q & rotate_width_counter_done); + C2_data_state.clk = clock; + C2_data_state.d = (C2_ena_state.q # (C2_data_state.q & (! rotate_width_counter_done))); + C2_ena_state.clk = clock; + C2_ena_state.d = (C3_data_state.q & rotate_width_counter_done); + C3_data_state.clk = clock; + C3_data_state.d = (C3_ena_state.q # (C3_data_state.q & (! rotate_width_counter_done))); + C3_ena_state.clk = clock; + C3_ena_state.d = (C4_data_state.q & rotate_width_counter_done); + C4_data_state.clk = clock; + C4_data_state.d = (C4_ena_state.q # (C4_data_state.q & (! rotate_width_counter_done))); + C4_ena_state.clk = clock; + C4_ena_state.d = reconfig_init_state.q; + configupdate2_state.clk = clock; + configupdate2_state.d = configupdate_state.q; + configupdate3_state.clk = (! clock); + configupdate3_state.d = configupdate2_state.q; + configupdate_state.clk = clock; + configupdate_state.d = reconfig_post_state.q; + counter_param_latch_reg[].clk = clock; + counter_param_latch_reg[].clrn = (! reset); + counter_param_latch_reg[].d = counter_param[]; + counter_param_latch_reg[].ena = input_latch_enable; + counter_type_latch_reg[].clk = clock; + counter_type_latch_reg[].clrn = (! reset); + counter_type_latch_reg[].d = counter_type[]; + counter_type_latch_reg[].ena = input_latch_enable; + idle_state.clk = clock; + idle_state.clrn = (! reset); + idle_state.d = ((((((((((idle_state.q & (! read_param)) & (! write_param)) & (! reconfig)) & (! write_from_rom)) # read_last_state.q) # (write_data_state.q & width_counter_done)) # (write_nominal_state.q & width_counter_done)) # read_last_nominal_state.q) # (reconfig_wait_state.q & reconfig_done)) # reset_state.q); + nominal_data[].clk = clock; + nominal_data[].clrn = (! reset); + nominal_data[].d = ( cmpr7.aeb, data_in[8..0], add_sub6.result[7..0]); + read_data_nominal_state.clk = clock; + read_data_nominal_state.clrn = (! reset); + read_data_nominal_state.d = ((read_first_nominal_state.q & (! width_counter_done)) # (read_data_nominal_state.q & (! width_counter_done))); + read_data_state.clk = clock; + read_data_state.clrn = (! reset); + read_data_state.d = ((read_first_state.q & (! width_counter_done)) # (read_data_state.q & (! width_counter_done))); + read_first_nominal_state.clk = clock; + read_first_nominal_state.clrn = (! reset); + read_first_nominal_state.d = read_init_nominal_state.q; + read_first_state.clk = clock; + read_first_state.clrn = (! reset); + read_first_state.d = read_init_state.q; + read_init_nominal_state.clk = clock; + read_init_nominal_state.clrn = (! reset); + read_init_nominal_state.d = ((idle_state.q & read_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + read_init_state.clk = clock; + read_init_state.clrn = (! reset); + read_init_state.d = ((idle_state.q & read_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + read_last_nominal_state.clk = clock; + read_last_nominal_state.clrn = (! reset); + read_last_nominal_state.d = ((read_first_nominal_state.q & width_counter_done) # (read_data_nominal_state.q & width_counter_done)); + read_last_state.clk = clock; + read_last_state.clrn = (! reset); + read_last_state.d = ((read_first_state.q & width_counter_done) # (read_data_state.q & width_counter_done)); + reconfig_counter_state.clk = clock; + reconfig_counter_state.clrn = (! reset); + reconfig_counter_state.d = ((((((((((reconfig_init_state.q # C0_data_state.q) # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q) # C0_ena_state.q) # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + reconfig_init_state.clk = clock; + reconfig_init_state.clrn = (! reset); + reconfig_init_state.d = (idle_state.q & reconfig); + reconfig_post_state.clk = clock; + reconfig_post_state.clrn = (! reset); + reconfig_post_state.d = ((reconfig_seq_data_state.q & reconfig_width_counter_done) # (reconfig_post_state.q & (! reconfig_post_done))); + reconfig_seq_data_state.clk = clock; + reconfig_seq_data_state.clrn = (! reset); + reconfig_seq_data_state.d = (reconfig_seq_ena_state.q # (reconfig_seq_data_state.q & (! reconfig_width_counter_done))); + reconfig_seq_ena_state.clk = clock; + reconfig_seq_ena_state.clrn = (! reset); + reconfig_seq_ena_state.d = tmp_seq_ena_state.q; + reconfig_wait_state.clk = clock; + reconfig_wait_state.clrn = (! reset); + reconfig_wait_state.d = ((reconfig_post_state.q & reconfig_post_done) # (reconfig_wait_state.q & (! reconfig_done))); + reset_state.clk = clock; + reset_state.d = power_up; + reset_state.prn = (! reset); + shift_reg[].clk = clock; + shift_reg[].clrn = (! reset); + shift_reg[].d = ( ((((shift_reg_load_nominal_enable & nominal_data[0].q) # (shift_reg_load_enable & data_in[0..0])) # (shift_reg_shift_enable & shift_reg[16].q)) # (shift_reg_shift_nominal_enable & shift_reg[16].q)), ((((shift_reg_load_nominal_enable & nominal_data[1].q) # (shift_reg_load_enable & data_in[1..1])) # (shift_reg_shift_enable & shift_reg[15].q)) # (shift_reg_shift_nominal_enable & shift_reg[15].q)), ((((shift_reg_load_nominal_enable & nominal_data[2].q) # (shift_reg_load_enable & data_in[2..2])) # (shift_reg_shift_enable & shift_reg[14].q)) # (shift_reg_shift_nominal_enable & shift_reg[14].q)), ((((shift_reg_load_nominal_enable & nominal_data[3].q) # (shift_reg_load_enable & data_in[3..3])) # (shift_reg_shift_enable & shift_reg[13].q)) # (shift_reg_shift_nominal_enable & shift_reg[13].q)), ((((shift_reg_load_nominal_enable & nominal_data[4].q) # (shift_reg_load_enable & data_in[4..4])) # (shift_reg_shift_enable & shift_reg[12].q)) # (shift_reg_shift_nominal_enable & shift_reg[12].q)), ((((shift_reg_load_nominal_enable & nominal_data[5].q) # (shift_reg_load_enable & data_in[5..5])) # (shift_reg_shift_enable & shift_reg[11].q)) # (shift_reg_shift_nominal_enable & shift_reg[11].q)), ((((shift_reg_load_nominal_enable & nominal_data[6].q) # (shift_reg_load_enable & data_in[6..6])) # (shift_reg_shift_enable & shift_reg[10].q)) # (shift_reg_shift_nominal_enable & shift_reg[10].q)), ((((shift_reg_load_nominal_enable & nominal_data[7].q) # (shift_reg_load_enable & data_in[7..7])) # (shift_reg_shift_enable & shift_reg[9].q)) # (shift_reg_shift_nominal_enable & shift_reg[9].q)), ((((shift_reg_load_nominal_enable & nominal_data[8].q) # (shift_reg_load_enable & data_in[8..8])) # (shift_reg_shift_enable & shift_reg[8].q)) # (shift_reg_shift_nominal_enable & shift_reg[8].q)), ((((shift_reg_load_nominal_enable & nominal_data[9].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[7].q)) # (shift_reg_shift_nominal_enable & shift_reg[7].q)), ((((shift_reg_load_nominal_enable & nominal_data[10].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[6].q)) # (shift_reg_shift_nominal_enable & shift_reg[6].q)), ((((shift_reg_load_nominal_enable & nominal_data[11].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[5].q)) # (shift_reg_shift_nominal_enable & shift_reg[5].q)), ((((shift_reg_load_nominal_enable & nominal_data[12].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[4].q)) # (shift_reg_shift_nominal_enable & shift_reg[4].q)), ((((shift_reg_load_nominal_enable & nominal_data[13].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[3].q)) # (shift_reg_shift_nominal_enable & shift_reg[3].q)), ((((shift_reg_load_nominal_enable & nominal_data[14].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[2].q)) # (shift_reg_shift_nominal_enable & shift_reg[2].q)), ((((shift_reg_load_nominal_enable & nominal_data[15].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[1].q)) # (shift_reg_shift_nominal_enable & shift_reg[1].q)), ((((shift_reg_load_nominal_enable & nominal_data[16].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[0].q)) # (shift_reg_shift_nominal_enable & shift_reg[0].q)), ((((shift_reg_load_nominal_enable & nominal_data[17].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg_serial_in)) # (shift_reg_shift_nominal_enable & shift_reg_serial_in))); + shift_reg[].ena = ((((shift_reg_load_enable # shift_reg_shift_enable) # shift_reg_load_nominal_enable) # shift_reg_shift_nominal_enable) # shift_reg_clear); + shift_reg[].sclr = shift_reg_clear; + tmp_nominal_data_out_state.clk = clock; + tmp_nominal_data_out_state.d = ((read_last_nominal_state.q & (! idle_state.q)) # (tmp_nominal_data_out_state.q & idle_state.q)); + tmp_seq_ena_state.clk = clock; + tmp_seq_ena_state.d = (reconfig_counter_state.q & (C0_data_state.q & rotate_width_counter_done)); + write_data_state.clk = clock; + write_data_state.clrn = (! reset); + write_data_state.d = (write_init_state.q # (write_data_state.q & (! width_counter_done))); + write_init_nominal_state.clk = clock; + write_init_nominal_state.clrn = (! reset); + write_init_nominal_state.d = ((idle_state.q & write_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + write_init_state.clk = clock; + write_init_state.clrn = (! reset); + write_init_state.d = ((idle_state.q & write_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + write_nominal_state.clk = clock; + write_nominal_state.clrn = (! reset); + write_nominal_state.d = (write_init_nominal_state.q # (write_nominal_state.q & (! width_counter_done))); + add_sub5.cin = B"0"; + add_sub5.dataa[] = ( B"0", shift_reg[8..1].q); + add_sub5.datab[] = ( B"0", shift_reg[17..10].q); + add_sub6.cin = data_in[0..0]; + add_sub6.dataa[] = ( data_in[8..1]); + cmpr7.dataa[] = ( data_in[7..0]); + cmpr7.datab[] = B"00000001"; + cntr1.clock = clock; + cntr1.cnt_en = addr_counter_enable; + cntr1.data[] = addr_counter_sload_value[]; + cntr1.sload = addr_counter_sload; + cntr12.clock = clock; + cntr12.cnt_en = reconfig_addr_counter_enable; + cntr12.data[] = reconfig_addr_counter_sload_value[]; + cntr12.sload = reconfig_addr_counter_sload; + cntr13.clock = clock; + cntr13.cnt_en = reconfig_width_counter_enable; + cntr13.data[] = reconfig_width_counter_sload_value[]; + cntr13.sload = reconfig_width_counter_sload; + cntr14.clock = clock; + cntr14.cnt_en = rotate_width_counter_enable; + cntr14.data[] = rotate_width_counter_sload_value[]; + cntr14.sload = rotate_width_counter_sload; + cntr15.clock = clock; + cntr15.cnt_en = rotate_addr_counter_enable; + cntr15.data[] = rotate_addr_counter_sload_value[]; + cntr15.sload = rotate_addr_counter_sload; + cntr2.clock = clock; + cntr2.cnt_en = read_addr_counter_enable; + cntr2.data[] = read_addr_counter_sload_value[]; + cntr2.sload = read_addr_counter_sload; + cntr3.clock = clock; + cntr3.cnt_en = width_counter_enable; + cntr3.data[] = width_counter_sload_value[]; + cntr3.sload = width_counter_sload; + decode11.data[] = cuda_combout_wire[]; + addr_counter_enable = (write_data_state.q # write_nominal_state.q); + addr_counter_out[] = cntr1.q[]; + addr_counter_sload = (write_init_state.q # write_init_nominal_state.q); + addr_counter_sload_value[] = (addr_decoder_out[] & (write_init_state.q # write_init_nominal_state.q)); + addr_decoder_out[] = (((((((((((((((((((((((((((((((((((( B"0", B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_bypass_LF_unused)) # ( B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_c), (sel_type_cplf & sel_param_c))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_low_r), B"0", B"0", B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_vco & sel_param_high_i_postscale), B"0", B"0", (sel_type_vco & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_odd_CP_unused), (sel_type_cplf & sel_param_odd_CP_unused), (sel_type_cplf & sel_param_odd_CP_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale), B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_high_i_postscale), (sel_type_n & sel_param_high_i_postscale), B"0", (sel_type_n & sel_param_high_i_postscale), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused), B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_n & sel_param_low_r), B"0", B"0", B"0", (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r))) # ( B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0", B"0", B"0", (sel_type_n & sel_param_nominal_count), (sel_type_n & sel_param_nominal_count))) # ( B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", (sel_type_m & sel_param_high_i_postscale), (sel_type_m & sel_param_high_i_postscale), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused), (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r))) # ( B"0", B"0", (sel_type_m & sel_param_nominal_count), (sel_type_m & sel_param_nominal_count), B"0", (sel_type_m & sel_param_nominal_count), B"0", (sel_type_m & sel_param_nominal_count))) # ( B"0", B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c0 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c0 & sel_param_low_r), (sel_type_c0 & sel_param_low_r), (sel_type_c0 & sel_param_low_r))) # ( B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c1 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c1 & sel_param_low_r), B"0", (sel_type_c1 & sel_param_low_r), (sel_type_c1 & sel_param_low_r), B"0", B"0", (sel_type_c1 & sel_param_low_r))) # ( B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale), B"0", B"0", B"0", (sel_type_c2 & sel_param_high_i_postscale), B"0")) # ( B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r), B"0", (sel_type_c2 & sel_param_low_r), B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r))) # ( B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0", (sel_type_c3 & sel_param_low_r))) # ( B"0", (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), B"0")) # ( (sel_type_c4 & sel_param_high_i_postscale), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), B"0")) # ( (sel_type_c4 & sel_param_odd_CP_unused), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused))) # ( (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r))); + busy = ((! idle_state.q) # areset_state.q); + c0_wire[] = B"01000111"; + c1_wire[] = B"01011001"; + c2_wire[] = B"01101011"; + c3_wire[] = B"01111101"; + c4_wire[] = B"10001111"; + counter_param_latch[] = counter_param_latch_reg[].q; + counter_type_latch[] = counter_type_latch_reg[].q; + cuda_combout_wire[] = ( le_comb10.combout, le_comb9.combout, le_comb8.combout); + data_out[] = ( ((shift_reg[8].q & (! read_nominal_out)) # (add_sub5.result[8..8] & read_nominal_out)), ((shift_reg[7].q & (! read_nominal_out)) # (add_sub5.result[7..7] & read_nominal_out)), ((shift_reg[6].q & (! read_nominal_out)) # (add_sub5.result[6..6] & read_nominal_out)), ((shift_reg[5].q & (! read_nominal_out)) # (add_sub5.result[5..5] & read_nominal_out)), ((shift_reg[4].q & (! read_nominal_out)) # (add_sub5.result[4..4] & read_nominal_out)), ((shift_reg[3].q & (! read_nominal_out)) # (add_sub5.result[3..3] & read_nominal_out)), ((shift_reg[2].q & (! read_nominal_out)) # (add_sub5.result[2..2] & read_nominal_out)), ((shift_reg[1].q & (! read_nominal_out)) # (add_sub5.result[1..1] & read_nominal_out)), ((shift_reg[0].q & (! read_nominal_out)) # (add_sub5.result[0..0] & read_nominal_out))); + dummy_scandataout = pll_scandataout; + encode_out[] = ( C4_ena_state.q, (C2_ena_state.q # C3_ena_state.q), (C1_ena_state.q # C3_ena_state.q)); + input_latch_enable = (idle_state.q & (write_param # read_param)); + pll_areset = (pll_areset_in # (areset_state.q & reconfig_wait_state.q)); + pll_configupdate = (configupdate_state.q & (! configupdate3_state.q)); + pll_scanclk = clock; + pll_scanclkena = ((rotate_width_counter_enable & (! rotate_width_counter_done)) # reconfig_seq_data_state.q); + pll_scandata = (scan_cache_out & ((rotate_width_counter_enable # reconfig_seq_data_state.q) # reconfig_post_state.q)); + power_up = ((((((((((((((((((((! reset_state.q) & (! idle_state.q)) & (! read_init_state.q)) & (! read_first_state.q)) & (! read_data_state.q)) & (! read_last_state.q)) & (! read_init_nominal_state.q)) & (! read_first_nominal_state.q)) & (! read_data_nominal_state.q)) & (! read_last_nominal_state.q)) & (! write_init_state.q)) & (! write_data_state.q)) & (! write_init_nominal_state.q)) & (! write_nominal_state.q)) & (! reconfig_init_state.q)) & (! reconfig_counter_state.q)) & (! reconfig_seq_ena_state.q)) & (! reconfig_seq_data_state.q)) & (! reconfig_post_state.q)) & (! reconfig_wait_state.q)); + read_addr_counter_enable = (((read_first_state.q # read_data_state.q) # read_first_nominal_state.q) # read_data_nominal_state.q); + read_addr_counter_out[] = cntr2.q[]; + read_addr_counter_sload = (read_init_state.q # read_init_nominal_state.q); + read_addr_counter_sload_value[] = (read_addr_decoder_out[] & (read_init_state.q # read_init_nominal_state.q)); + read_addr_decoder_out[] = (((((((((((((((((((((((((((((((((((( B"0", B"0", B"0", B"0", B"0", B"0", B"0", B"0") # ( B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_c), B"0")) # ( B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_low_r), B"0", B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_vco & sel_param_high_i_postscale), B"0", B"0", (sel_type_vco & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_odd_CP_unused), B"0", (sel_type_cplf & sel_param_odd_CP_unused), B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_high_i_postscale), B"0", B"0", (sel_type_n & sel_param_high_i_postscale), (sel_type_n & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused), B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r), B"0", B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0")) # ( B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", (sel_type_m & sel_param_high_i_postscale))) # ( B"0", B"0", (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused), (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), B"0")) # ( B"0", B"0", (sel_type_m & sel_param_nominal_count), B"0", B"0", (sel_type_m & sel_param_nominal_count), B"0", B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale))) # ( B"0", B"0", (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c0 & sel_param_low_r), B"0", B"0", B"0", B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", (sel_type_c1 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c1 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c1 & sel_param_low_r), B"0", (sel_type_c1 & sel_param_low_r), B"0", B"0", (sel_type_c1 & sel_param_low_r), B"0")) # ( B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c2 & sel_param_high_i_postscale), B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale), B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r), B"0", B"0", (sel_type_c2 & sel_param_low_r), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0")) # ( B"0", (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale))) # ( (sel_type_c4 & sel_param_odd_CP_unused), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused))) # ( (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0")); + read_nominal_out = tmp_nominal_data_out_state.q; + reconfig_addr_counter_enable = reconfig_seq_data_state.q; + reconfig_addr_counter_out[] = cntr12.q[]; + reconfig_addr_counter_sload = reconfig_seq_ena_state.q; + reconfig_addr_counter_sload_value[] = (reconfig_seq_ena_state.q & seq_addr_wire[]); + reconfig_done = ((! pll_scandone) & (dummy_scandataout # (! dummy_scandataout))); + reconfig_post_done = pll_scandone; + reconfig_width_counter_done = ((((((! cntr13.q[0..0]) & (! cntr13.q[1..1])) & (! cntr13.q[2..2])) & (! cntr13.q[3..3])) & (! cntr13.q[4..4])) & (! cntr13.q[5..5])); + reconfig_width_counter_enable = reconfig_seq_data_state.q; + reconfig_width_counter_sload = reconfig_seq_ena_state.q; + reconfig_width_counter_sload_value[] = (reconfig_seq_ena_state.q & seq_sload_value[]); + rotate_addr_counter_enable = ((((C0_data_state.q # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q); + rotate_addr_counter_out[] = cntr15.q[]; + rotate_addr_counter_sload = ((((C0_ena_state.q # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + rotate_addr_counter_sload_value[] = (((((c0_wire[] & rotate_decoder_wires[0..0]) # (c1_wire[] & rotate_decoder_wires[1..1])) # (c2_wire[] & rotate_decoder_wires[2..2])) # (c3_wire[] & rotate_decoder_wires[3..3])) # (c4_wire[] & rotate_decoder_wires[4..4])); + rotate_decoder_wires[] = decode11.eq[]; + rotate_width_counter_done = (((((! cntr14.q[0..0]) & (! cntr14.q[1..1])) & (! cntr14.q[2..2])) & (! cntr14.q[3..3])) & (! cntr14.q[4..4])); + rotate_width_counter_enable = ((((C0_data_state.q # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q); + rotate_width_counter_sload = ((((C0_ena_state.q # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + rotate_width_counter_sload_value[] = B"10010"; + scan_cache_address[] = ((((addr_counter_out[] & addr_counter_enable) # (read_addr_counter_out[] & read_addr_counter_enable)) # (rotate_addr_counter_out[] & rotate_addr_counter_enable)) # (reconfig_addr_counter_out[] & reconfig_addr_counter_enable)); + scan_cache_in = shift_reg_serial_out; + scan_cache_out = altsyncram4.q_a[0..0]; + scan_cache_write_enable = (write_data_state.q # write_nominal_state.q); + sel_param_bypass_LF_unused = (((! counter_param_latch[0..0]) & (! counter_param_latch[1..1])) & counter_param_latch[2..2]); + sel_param_c = (((! counter_param_latch[0..0]) & counter_param_latch[1..1]) & (! counter_param_latch[2..2])); + sel_param_high_i_postscale = (((! counter_param_latch[0..0]) & (! counter_param_latch[1..1])) & (! counter_param_latch[2..2])); + sel_param_low_r = ((counter_param_latch[0..0] & (! counter_param_latch[1..1])) & (! counter_param_latch[2..2])); + sel_param_nominal_count = ((counter_param_latch[0..0] & counter_param_latch[1..1]) & counter_param_latch[2..2]); + sel_param_odd_CP_unused = ((counter_param_latch[0..0] & (! counter_param_latch[1..1])) & counter_param_latch[2..2]); + sel_type_c0 = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c1 = (((counter_type_latch[0..0] & (! counter_type_latch[1..1])) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c2 = ((((! counter_type_latch[0..0]) & counter_type_latch[1..1]) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c3 = (((counter_type_latch[0..0] & counter_type_latch[1..1]) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c4 = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & counter_type_latch[3..3]); + sel_type_cplf = ((((! counter_type_latch[0..0]) & counter_type_latch[1..1]) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_m = (((counter_type_latch[0..0] & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_n = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_vco = (((counter_type_latch[0..0] & counter_type_latch[1..1]) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + seq_addr_wire[] = B"00110101"; + seq_sload_value[] = B"110110"; + shift_reg_clear = (read_init_state.q # read_init_nominal_state.q); + shift_reg_load_enable = ((idle_state.q & write_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + shift_reg_load_nominal_enable = ((idle_state.q & write_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + shift_reg_serial_in = scan_cache_out; + shift_reg_serial_out = ((((((((shift_reg[17].q & shift_reg_width_select[0..0]) # (shift_reg[17].q & shift_reg_width_select[1..1])) # (shift_reg[17].q & shift_reg_width_select[2..2])) # (shift_reg[17].q & shift_reg_width_select[3..3])) # (shift_reg[17].q & shift_reg_width_select[4..4])) # (shift_reg[17].q & shift_reg_width_select[5..5])) # (shift_reg[17].q & shift_reg_width_select[6..6])) # (shift_reg[17].q & shift_reg_width_select[7..7])); + shift_reg_shift_enable = ((read_data_state.q # read_last_state.q) # write_data_state.q); + shift_reg_shift_nominal_enable = ((read_data_nominal_state.q # read_last_nominal_state.q) # write_nominal_state.q); + shift_reg_width_select[] = width_decoder_select[]; + w1565w = B"0"; + w1592w = B"0"; + w64w = B"0"; + width_counter_done = (((((! cntr3.q[0..0]) & (! cntr3.q[1..1])) & (! cntr3.q[2..2])) & (! cntr3.q[3..3])) & (! cntr3.q[4..4])); + width_counter_enable = ((((read_first_state.q # read_data_state.q) # write_data_state.q) # read_data_nominal_state.q) # write_nominal_state.q); + width_counter_sload = (((read_init_state.q # write_init_state.q) # read_init_nominal_state.q) # write_init_nominal_state.q); + width_counter_sload_value[] = width_decoder_out[]; + width_decoder_out[] = (((((( B"0", B"0", B"0", B"0", B"0") # ( width_decoder_select[2..2], B"0", B"0", B"0", width_decoder_select[2..2])) # ( B"0", B"0", B"0", B"0", width_decoder_select[3..3])) # ( B"0", B"0", width_decoder_select[5..5], width_decoder_select[5..5], width_decoder_select[5..5])) # ( B"0", B"0", B"0", width_decoder_select[6..6], B"0")) # ( B"0", B"0", width_decoder_select[7..7], B"0", B"0")); + width_decoder_select[] = ( ((sel_type_cplf & sel_param_low_r) # (sel_type_cplf & sel_param_odd_CP_unused)), (sel_type_cplf & sel_param_high_i_postscale), ((((((((((((((sel_type_n & sel_param_high_i_postscale) # (sel_type_n & sel_param_low_r)) # (sel_type_m & sel_param_high_i_postscale)) # (sel_type_m & sel_param_low_r)) # (sel_type_c0 & sel_param_high_i_postscale)) # (sel_type_c0 & sel_param_low_r)) # (sel_type_c1 & sel_param_high_i_postscale)) # (sel_type_c1 & sel_param_low_r)) # (sel_type_c2 & sel_param_high_i_postscale)) # (sel_type_c2 & sel_param_low_r)) # (sel_type_c3 & sel_param_high_i_postscale)) # (sel_type_c3 & sel_param_low_r)) # (sel_type_c4 & sel_param_high_i_postscale)) # (sel_type_c4 & sel_param_low_r)), w1592w, ((sel_type_cplf & sel_param_bypass_LF_unused) # (sel_type_cplf & sel_param_c)), ((sel_type_n & sel_param_nominal_count) # (sel_type_m & sel_param_nominal_count)), w1565w, (((((((((((((((sel_type_vco & sel_param_high_i_postscale) # (sel_type_n & sel_param_bypass_LF_unused)) # (sel_type_n & sel_param_odd_CP_unused)) # (sel_type_m & sel_param_bypass_LF_unused)) # (sel_type_m & sel_param_odd_CP_unused)) # (sel_type_c0 & sel_param_bypass_LF_unused)) # (sel_type_c0 & sel_param_odd_CP_unused)) # (sel_type_c1 & sel_param_bypass_LF_unused)) # (sel_type_c1 & sel_param_odd_CP_unused)) # (sel_type_c2 & sel_param_bypass_LF_unused)) # (sel_type_c2 & sel_param_odd_CP_unused)) # (sel_type_c3 & sel_param_bypass_LF_unused)) # (sel_type_c3 & sel_param_odd_CP_unused)) # (sel_type_c4 & sel_param_bypass_LF_unused)) # (sel_type_c4 & sel_param_odd_CP_unused))); + write_from_rom = GND; +END; +--VALID FILE diff --git a/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1_pllrcfg_t4q.tdf b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1_pllrcfg_t4q.tdf new file mode 100644 index 0000000..fae939f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/altpll_reconfig1_pllrcfg_t4q.tdf @@ -0,0 +1,582 @@ +--altpll_reconfig CBX_AUTO_BLACKBOX="ALL" device_family="Cyclone III" busy clock counter_param counter_type data_in data_out pll_areset pll_areset_in pll_configupdate pll_scanclk pll_scanclkena pll_scandata pll_scandataout pll_scandone read_param reconfig reset write_param +--VERSION_BEGIN 9.1SP2 cbx_altpll_reconfig 2010:03:24:20:43:42:SJ cbx_altsyncram 2010:03:24:20:43:42:SJ cbx_cycloneii 2010:03:24:20:43:43:SJ cbx_lpm_add_sub 2010:03:24:20:43:43:SJ cbx_lpm_compare 2010:03:24:20:43:43:SJ cbx_lpm_counter 2010:03:24:20:43:43:SJ cbx_lpm_decode 2010:03:24:20:43:43:SJ cbx_lpm_mux 2010:03:24:20:43:43:SJ cbx_mgl 2010:03:24:21:01:05:SJ cbx_stratix 2010:03:24:20:43:43:SJ cbx_stratixii 2010:03:24:20:43:43:SJ cbx_stratixiii 2010:03:24:20:43:43:SJ cbx_util_mgl 2010:03:24:20:43:43:SJ VERSION_END + + +-- Copyright (C) 1991-2010 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +include "altsyncram.inc"; +FUNCTION cycloneiii_lcell_comb (cin, dataa, datab, datac, datad) +WITH ( DONT_TOUCH, LUT_MASK, SUM_LUTC_INPUT) +RETURNS ( combout, cout); +FUNCTION lpm_add_sub (aclr, add_sub, cin, clken, clock, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0]) +WITH ( CARRY_CHAIN, CARRY_CHAIN_LENGTH, LPM_DIRECTION, LPM_PIPELINE, LPM_REPRESENTATION, LPM_WIDTH, ONE_INPUT_IS_CONSTANT, REGISTERED_AT_END, USE_WYS) +RETURNS ( cout, overflow, result[LPM_WIDTH-1..0]); +FUNCTION lpm_compare (aclr, clken, clock, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0]) +WITH ( LPM_PIPELINE, LPM_REPRESENTATION, LPM_WIDTH, ONE_INPUT_IS_CONSTANT) +RETURNS ( aeb, agb, ageb, alb, aleb, aneb); +FUNCTION lpm_counter (aclr, aload, aset, cin, clk_en, clock, cnt_en, data[LPM_WIDTH-1..0], sclr, sload, sset, updown) +WITH ( lpm_avalue, lpm_direction, lpm_modulus, lpm_port_updown, lpm_pvalue, lpm_svalue, lpm_width) +RETURNS ( cout, eq[15..0], q[LPM_WIDTH-1..0]); +FUNCTION lpm_decode (aclr, clken, clock, data[LPM_WIDTH-1..0], enable) +WITH ( CASCADE_CHAIN, IGNORE_CASCADE_BUFFERS, LPM_DECODES, LPM_PIPELINE, LPM_WIDTH) +RETURNS ( eq[LPM_DECODES-1..0]); + +--synthesis_resources = altsyncram 1 lpm_add_sub 2 lpm_compare 1 lpm_counter 7 lpm_decode 1 lut 3 reg 80 +OPTIONS ALTERA_INTERNAL_OPTION = "ADV_NETLIST_OPT_ALLOWED=""NEVER_ALLOW"";suppress_da_rule_internal=C106;{-to le_comb10} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=2;{-to le_comb8} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=0;{-to le_comb9} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=1;{-to idle_state} POWER_UP_LEVEL=LOW;{-to read_data_nominal_state} POWER_UP_LEVEL=LOW;{-to read_data_state} POWER_UP_LEVEL=LOW;{-to read_first_nominal_state} POWER_UP_LEVEL=LOW;{-to read_first_state} POWER_UP_LEVEL=LOW;{-to read_init_nominal_state} POWER_UP_LEVEL=LOW;{-to read_init_state} POWER_UP_LEVEL=LOW;{-to read_last_nominal_state} POWER_UP_LEVEL=LOW;{-to read_last_state} POWER_UP_LEVEL=LOW;{-to reconfig_counter_state} POWER_UP_LEVEL=LOW;{-to reconfig_init_state} POWER_UP_LEVEL=LOW;{-to reconfig_post_state} POWER_UP_LEVEL=LOW;{-to reconfig_seq_data_state} POWER_UP_LEVEL=LOW;{-to reconfig_seq_ena_state} POWER_UP_LEVEL=LOW;{-to reconfig_wait_state} POWER_UP_LEVEL=LOW;{-to reset_state} POWER_UP_LEVEL=HIGH;{-to write_data_state} POWER_UP_LEVEL=LOW;{-to write_init_nominal_state} POWER_UP_LEVEL=LOW;{-to write_init_state} POWER_UP_LEVEL=LOW;{-to write_nominal_state} POWER_UP_LEVEL=LOW"; + +SUBDESIGN altpll_reconfig1_pllrcfg_t4q +( + busy : output; + clock : input; + counter_param[2..0] : input; + counter_type[3..0] : input; + data_in[8..0] : input; + data_out[8..0] : output; + pll_areset : output; + pll_areset_in : input; + pll_configupdate : output; + pll_scanclk : output; + pll_scanclkena : output; + pll_scandata : output; + pll_scandataout : input; + pll_scandone : input; + read_param : input; + reconfig : input; + reset : input; + write_param : input; +) +VARIABLE + altsyncram4 : altsyncram + WITH ( + NUMWORDS_A = 144, + OPERATION_MODE = "SINGLE_PORT", + WIDTH_A = 1, + WIDTH_BYTEENA_A = 1, + WIDTHAD_A = 8 + ); + le_comb10 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "F0F0", + SUM_LUTC_INPUT = "datac" + ); + le_comb8 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "AAAA", + SUM_LUTC_INPUT = "datac" + ); + le_comb9 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "CCCC", + SUM_LUTC_INPUT = "datac" + ); + areset_init_state_1 : dffe; + areset_state : dffe; + C0_data_state : dffe; + C0_ena_state : dffe; + C1_data_state : dffe; + C1_ena_state : dffe; + C2_data_state : dffe; + C2_ena_state : dffe; + C3_data_state : dffe; + C3_ena_state : dffe; + C4_data_state : dffe; + C4_ena_state : dffe; + configupdate2_state : dffe; + configupdate3_state : dffe; + configupdate_state : dffe; + counter_param_latch_reg[2..0] : dffe; + counter_type_latch_reg[3..0] : dffe; + idle_state : dffe + WITH ( + power_up = "low" + ); + nominal_data[17..0] : dffe; + read_data_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_data_state : dffe + WITH ( + power_up = "low" + ); + read_first_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_first_state : dffe + WITH ( + power_up = "low" + ); + read_init_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_init_state : dffe + WITH ( + power_up = "low" + ); + read_last_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_last_state : dffe + WITH ( + power_up = "low" + ); + reconfig_counter_state : dffe + WITH ( + power_up = "low" + ); + reconfig_init_state : dffe + WITH ( + power_up = "low" + ); + reconfig_post_state : dffe + WITH ( + power_up = "low" + ); + reconfig_seq_data_state : dffe + WITH ( + power_up = "low" + ); + reconfig_seq_ena_state : dffe + WITH ( + power_up = "low" + ); + reconfig_wait_state : dffe + WITH ( + power_up = "low" + ); + reset_state : dffe + WITH ( + power_up = "high" + ); + shift_reg[17..0] : dffeas; + tmp_nominal_data_out_state : dffe; + tmp_seq_ena_state : dffe; + write_data_state : dffe + WITH ( + power_up = "low" + ); + write_init_nominal_state : dffe + WITH ( + power_up = "low" + ); + write_init_state : dffe + WITH ( + power_up = "low" + ); + write_nominal_state : dffe + WITH ( + power_up = "low" + ); + add_sub5 : lpm_add_sub + WITH ( + LPM_WIDTH = 9 + ); + add_sub6 : lpm_add_sub + WITH ( + LPM_WIDTH = 8 + ); + cmpr7 : lpm_compare + WITH ( + LPM_WIDTH = 8 + ); + cntr1 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr12 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr13 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 6 + ); + cntr14 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 5 + ); + cntr15 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr2 : lpm_counter + WITH ( + lpm_direction = "UP", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr3 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 5 + ); + decode11 : lpm_decode + WITH ( + LPM_DECODES = 5, + LPM_WIDTH = 3 + ); + addr_counter_enable : WIRE; + addr_counter_out[7..0] : WIRE; + addr_counter_sload : WIRE; + addr_counter_sload_value[7..0] : WIRE; + addr_decoder_out[7..0] : WIRE; + c0_wire[7..0] : WIRE; + c1_wire[7..0] : WIRE; + c2_wire[7..0] : WIRE; + c3_wire[7..0] : WIRE; + c4_wire[7..0] : WIRE; + counter_param_latch[2..0] : WIRE; + counter_type_latch[3..0] : WIRE; + cuda_combout_wire[2..0] : WIRE; + dummy_scandataout : WIRE; + encode_out[2..0] : WIRE; + input_latch_enable : WIRE; + power_up : WIRE; + read_addr_counter_enable : WIRE; + read_addr_counter_out[7..0] : WIRE; + read_addr_counter_sload : WIRE; + read_addr_counter_sload_value[7..0] : WIRE; + read_addr_decoder_out[7..0] : WIRE; + read_nominal_out : WIRE; + reconfig_addr_counter_enable : WIRE; + reconfig_addr_counter_out[7..0] : WIRE; + reconfig_addr_counter_sload : WIRE; + reconfig_addr_counter_sload_value[7..0] : WIRE; + reconfig_done : WIRE; + reconfig_post_done : WIRE; + reconfig_width_counter_done : WIRE; + reconfig_width_counter_enable : WIRE; + reconfig_width_counter_sload : WIRE; + reconfig_width_counter_sload_value[5..0] : WIRE; + rotate_addr_counter_enable : WIRE; + rotate_addr_counter_out[7..0] : WIRE; + rotate_addr_counter_sload : WIRE; + rotate_addr_counter_sload_value[7..0] : WIRE; + rotate_decoder_wires[4..0] : WIRE; + rotate_width_counter_done : WIRE; + rotate_width_counter_enable : WIRE; + rotate_width_counter_sload : WIRE; + rotate_width_counter_sload_value[4..0] : WIRE; + scan_cache_address[7..0] : WIRE; + scan_cache_in : WIRE; + scan_cache_out : WIRE; + scan_cache_write_enable : WIRE; + sel_param_bypass_LF_unused : WIRE; + sel_param_c : WIRE; + sel_param_high_i_postscale : WIRE; + sel_param_low_r : WIRE; + sel_param_nominal_count : WIRE; + sel_param_odd_CP_unused : WIRE; + sel_type_c0 : WIRE; + sel_type_c1 : WIRE; + sel_type_c2 : WIRE; + sel_type_c3 : WIRE; + sel_type_c4 : WIRE; + sel_type_cplf : WIRE; + sel_type_m : WIRE; + sel_type_n : WIRE; + sel_type_vco : WIRE; + seq_addr_wire[7..0] : WIRE; + seq_sload_value[5..0] : WIRE; + shift_reg_clear : WIRE; + shift_reg_load_enable : WIRE; + shift_reg_load_nominal_enable : WIRE; + shift_reg_serial_in : WIRE; + shift_reg_serial_out : WIRE; + shift_reg_shift_enable : WIRE; + shift_reg_shift_nominal_enable : WIRE; + shift_reg_width_select[7..0] : WIRE; + w1565w : WIRE; + w1592w : WIRE; + w64w : WIRE; + width_counter_done : WIRE; + width_counter_enable : WIRE; + width_counter_sload : WIRE; + width_counter_sload_value[4..0] : WIRE; + width_decoder_out[4..0] : WIRE; + width_decoder_select[7..0] : WIRE; + write_from_rom : NODE; + +BEGIN + altsyncram4.address_a[] = scan_cache_address[]; + altsyncram4.clock0 = clock; + altsyncram4.data_a[] = ( scan_cache_in); + altsyncram4.wren_a = scan_cache_write_enable; + le_comb10.dataa = encode_out[0..0]; + le_comb10.datab = encode_out[1..1]; + le_comb10.datac = encode_out[2..2]; + le_comb8.dataa = encode_out[0..0]; + le_comb8.datab = encode_out[1..1]; + le_comb8.datac = encode_out[2..2]; + le_comb9.dataa = encode_out[0..0]; + le_comb9.datab = encode_out[1..1]; + le_comb9.datac = encode_out[2..2]; + areset_init_state_1.clk = clock; + areset_init_state_1.d = pll_scandone; + areset_state.clk = clock; + areset_state.d = (areset_init_state_1.q & (! reset)); + C0_data_state.clk = clock; + C0_data_state.d = (C0_ena_state.q # (C0_data_state.q & (! rotate_width_counter_done))); + C0_ena_state.clk = clock; + C0_ena_state.d = (C1_data_state.q & rotate_width_counter_done); + C1_data_state.clk = clock; + C1_data_state.d = (C1_ena_state.q # (C1_data_state.q & (! rotate_width_counter_done))); + C1_ena_state.clk = clock; + C1_ena_state.d = (C2_data_state.q & rotate_width_counter_done); + C2_data_state.clk = clock; + C2_data_state.d = (C2_ena_state.q # (C2_data_state.q & (! rotate_width_counter_done))); + C2_ena_state.clk = clock; + C2_ena_state.d = (C3_data_state.q & rotate_width_counter_done); + C3_data_state.clk = clock; + C3_data_state.d = (C3_ena_state.q # (C3_data_state.q & (! rotate_width_counter_done))); + C3_ena_state.clk = clock; + C3_ena_state.d = (C4_data_state.q & rotate_width_counter_done); + C4_data_state.clk = clock; + C4_data_state.d = (C4_ena_state.q # (C4_data_state.q & (! rotate_width_counter_done))); + C4_ena_state.clk = clock; + C4_ena_state.d = reconfig_init_state.q; + configupdate2_state.clk = clock; + configupdate2_state.d = configupdate_state.q; + configupdate3_state.clk = (! clock); + configupdate3_state.d = configupdate2_state.q; + configupdate_state.clk = clock; + configupdate_state.d = reconfig_post_state.q; + counter_param_latch_reg[].clk = clock; + counter_param_latch_reg[].clrn = (! reset); + counter_param_latch_reg[].d = counter_param[]; + counter_param_latch_reg[].ena = input_latch_enable; + counter_type_latch_reg[].clk = clock; + counter_type_latch_reg[].clrn = (! reset); + counter_type_latch_reg[].d = counter_type[]; + counter_type_latch_reg[].ena = input_latch_enable; + idle_state.clk = clock; + idle_state.clrn = (! reset); + idle_state.d = ((((((((((idle_state.q & (! read_param)) & (! write_param)) & (! reconfig)) & (! write_from_rom)) # read_last_state.q) # (write_data_state.q & width_counter_done)) # (write_nominal_state.q & width_counter_done)) # read_last_nominal_state.q) # (reconfig_wait_state.q & reconfig_done)) # reset_state.q); + nominal_data[].clk = clock; + nominal_data[].clrn = (! reset); + nominal_data[].d = ( cmpr7.aeb, data_in[8..0], add_sub6.result[7..0]); + read_data_nominal_state.clk = clock; + read_data_nominal_state.clrn = (! reset); + read_data_nominal_state.d = ((read_first_nominal_state.q & (! width_counter_done)) # (read_data_nominal_state.q & (! width_counter_done))); + read_data_state.clk = clock; + read_data_state.clrn = (! reset); + read_data_state.d = ((read_first_state.q & (! width_counter_done)) # (read_data_state.q & (! width_counter_done))); + read_first_nominal_state.clk = clock; + read_first_nominal_state.clrn = (! reset); + read_first_nominal_state.d = read_init_nominal_state.q; + read_first_state.clk = clock; + read_first_state.clrn = (! reset); + read_first_state.d = read_init_state.q; + read_init_nominal_state.clk = clock; + read_init_nominal_state.clrn = (! reset); + read_init_nominal_state.d = ((idle_state.q & read_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + read_init_state.clk = clock; + read_init_state.clrn = (! reset); + read_init_state.d = ((idle_state.q & read_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + read_last_nominal_state.clk = clock; + read_last_nominal_state.clrn = (! reset); + read_last_nominal_state.d = ((read_first_nominal_state.q & width_counter_done) # (read_data_nominal_state.q & width_counter_done)); + read_last_state.clk = clock; + read_last_state.clrn = (! reset); + read_last_state.d = ((read_first_state.q & width_counter_done) # (read_data_state.q & width_counter_done)); + reconfig_counter_state.clk = clock; + reconfig_counter_state.clrn = (! reset); + reconfig_counter_state.d = ((((((((((reconfig_init_state.q # C0_data_state.q) # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q) # C0_ena_state.q) # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + reconfig_init_state.clk = clock; + reconfig_init_state.clrn = (! reset); + reconfig_init_state.d = (idle_state.q & reconfig); + reconfig_post_state.clk = clock; + reconfig_post_state.clrn = (! reset); + reconfig_post_state.d = ((reconfig_seq_data_state.q & reconfig_width_counter_done) # (reconfig_post_state.q & (! reconfig_post_done))); + reconfig_seq_data_state.clk = clock; + reconfig_seq_data_state.clrn = (! reset); + reconfig_seq_data_state.d = (reconfig_seq_ena_state.q # (reconfig_seq_data_state.q & (! reconfig_width_counter_done))); + reconfig_seq_ena_state.clk = clock; + reconfig_seq_ena_state.clrn = (! reset); + reconfig_seq_ena_state.d = tmp_seq_ena_state.q; + reconfig_wait_state.clk = clock; + reconfig_wait_state.clrn = (! reset); + reconfig_wait_state.d = ((reconfig_post_state.q & reconfig_post_done) # (reconfig_wait_state.q & (! reconfig_done))); + reset_state.clk = clock; + reset_state.d = power_up; + reset_state.prn = (! reset); + shift_reg[].clk = clock; + shift_reg[].clrn = (! reset); + shift_reg[].d = ( ((((shift_reg_load_nominal_enable & nominal_data[0].q) # (shift_reg_load_enable & data_in[0..0])) # (shift_reg_shift_enable & shift_reg[16].q)) # (shift_reg_shift_nominal_enable & shift_reg[16].q)), ((((shift_reg_load_nominal_enable & nominal_data[1].q) # (shift_reg_load_enable & data_in[1..1])) # (shift_reg_shift_enable & shift_reg[15].q)) # (shift_reg_shift_nominal_enable & shift_reg[15].q)), ((((shift_reg_load_nominal_enable & nominal_data[2].q) # (shift_reg_load_enable & data_in[2..2])) # (shift_reg_shift_enable & shift_reg[14].q)) # (shift_reg_shift_nominal_enable & shift_reg[14].q)), ((((shift_reg_load_nominal_enable & nominal_data[3].q) # (shift_reg_load_enable & data_in[3..3])) # (shift_reg_shift_enable & shift_reg[13].q)) # (shift_reg_shift_nominal_enable & shift_reg[13].q)), ((((shift_reg_load_nominal_enable & nominal_data[4].q) # (shift_reg_load_enable & data_in[4..4])) # (shift_reg_shift_enable & shift_reg[12].q)) # (shift_reg_shift_nominal_enable & shift_reg[12].q)), ((((shift_reg_load_nominal_enable & nominal_data[5].q) # (shift_reg_load_enable & data_in[5..5])) # (shift_reg_shift_enable & shift_reg[11].q)) # (shift_reg_shift_nominal_enable & shift_reg[11].q)), ((((shift_reg_load_nominal_enable & nominal_data[6].q) # (shift_reg_load_enable & data_in[6..6])) # (shift_reg_shift_enable & shift_reg[10].q)) # (shift_reg_shift_nominal_enable & shift_reg[10].q)), ((((shift_reg_load_nominal_enable & nominal_data[7].q) # (shift_reg_load_enable & data_in[7..7])) # (shift_reg_shift_enable & shift_reg[9].q)) # (shift_reg_shift_nominal_enable & shift_reg[9].q)), ((((shift_reg_load_nominal_enable & nominal_data[8].q) # (shift_reg_load_enable & data_in[8..8])) # (shift_reg_shift_enable & shift_reg[8].q)) # (shift_reg_shift_nominal_enable & shift_reg[8].q)), ((((shift_reg_load_nominal_enable & nominal_data[9].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[7].q)) # (shift_reg_shift_nominal_enable & shift_reg[7].q)), ((((shift_reg_load_nominal_enable & nominal_data[10].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[6].q)) # (shift_reg_shift_nominal_enable & shift_reg[6].q)), ((((shift_reg_load_nominal_enable & nominal_data[11].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[5].q)) # (shift_reg_shift_nominal_enable & shift_reg[5].q)), ((((shift_reg_load_nominal_enable & nominal_data[12].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[4].q)) # (shift_reg_shift_nominal_enable & shift_reg[4].q)), ((((shift_reg_load_nominal_enable & nominal_data[13].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[3].q)) # (shift_reg_shift_nominal_enable & shift_reg[3].q)), ((((shift_reg_load_nominal_enable & nominal_data[14].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[2].q)) # (shift_reg_shift_nominal_enable & shift_reg[2].q)), ((((shift_reg_load_nominal_enable & nominal_data[15].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[1].q)) # (shift_reg_shift_nominal_enable & shift_reg[1].q)), ((((shift_reg_load_nominal_enable & nominal_data[16].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[0].q)) # (shift_reg_shift_nominal_enable & shift_reg[0].q)), ((((shift_reg_load_nominal_enable & nominal_data[17].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg_serial_in)) # (shift_reg_shift_nominal_enable & shift_reg_serial_in))); + shift_reg[].ena = ((((shift_reg_load_enable # shift_reg_shift_enable) # shift_reg_load_nominal_enable) # shift_reg_shift_nominal_enable) # shift_reg_clear); + shift_reg[].sclr = shift_reg_clear; + tmp_nominal_data_out_state.clk = clock; + tmp_nominal_data_out_state.d = ((read_last_nominal_state.q & (! idle_state.q)) # (tmp_nominal_data_out_state.q & idle_state.q)); + tmp_seq_ena_state.clk = clock; + tmp_seq_ena_state.d = (reconfig_counter_state.q & (C0_data_state.q & rotate_width_counter_done)); + write_data_state.clk = clock; + write_data_state.clrn = (! reset); + write_data_state.d = (write_init_state.q # (write_data_state.q & (! width_counter_done))); + write_init_nominal_state.clk = clock; + write_init_nominal_state.clrn = (! reset); + write_init_nominal_state.d = ((idle_state.q & write_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + write_init_state.clk = clock; + write_init_state.clrn = (! reset); + write_init_state.d = ((idle_state.q & write_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + write_nominal_state.clk = clock; + write_nominal_state.clrn = (! reset); + write_nominal_state.d = (write_init_nominal_state.q # (write_nominal_state.q & (! width_counter_done))); + add_sub5.cin = B"0"; + add_sub5.dataa[] = ( B"0", shift_reg[8..1].q); + add_sub5.datab[] = ( B"0", shift_reg[17..10].q); + add_sub6.cin = data_in[0..0]; + add_sub6.dataa[] = ( data_in[8..1]); + cmpr7.dataa[] = ( data_in[7..0]); + cmpr7.datab[] = B"00000001"; + cntr1.clock = clock; + cntr1.cnt_en = addr_counter_enable; + cntr1.data[] = addr_counter_sload_value[]; + cntr1.sload = addr_counter_sload; + cntr12.clock = clock; + cntr12.cnt_en = reconfig_addr_counter_enable; + cntr12.data[] = reconfig_addr_counter_sload_value[]; + cntr12.sload = reconfig_addr_counter_sload; + cntr13.clock = clock; + cntr13.cnt_en = reconfig_width_counter_enable; + cntr13.data[] = reconfig_width_counter_sload_value[]; + cntr13.sload = reconfig_width_counter_sload; + cntr14.clock = clock; + cntr14.cnt_en = rotate_width_counter_enable; + cntr14.data[] = rotate_width_counter_sload_value[]; + cntr14.sload = rotate_width_counter_sload; + cntr15.clock = clock; + cntr15.cnt_en = rotate_addr_counter_enable; + cntr15.data[] = rotate_addr_counter_sload_value[]; + cntr15.sload = rotate_addr_counter_sload; + cntr2.clock = clock; + cntr2.cnt_en = read_addr_counter_enable; + cntr2.data[] = read_addr_counter_sload_value[]; + cntr2.sload = read_addr_counter_sload; + cntr3.clock = clock; + cntr3.cnt_en = width_counter_enable; + cntr3.data[] = width_counter_sload_value[]; + cntr3.sload = width_counter_sload; + decode11.data[] = cuda_combout_wire[]; + addr_counter_enable = (write_data_state.q # write_nominal_state.q); + addr_counter_out[] = cntr1.q[]; + addr_counter_sload = (write_init_state.q # write_init_nominal_state.q); + addr_counter_sload_value[] = (addr_decoder_out[] & (write_init_state.q # write_init_nominal_state.q)); + addr_decoder_out[] = (((((((((((((((((((((((((((((((((((( B"0", B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_bypass_LF_unused)) # ( B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_c), (sel_type_cplf & sel_param_c))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_low_r), B"0", B"0", B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_vco & sel_param_high_i_postscale), B"0", B"0", (sel_type_vco & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_odd_CP_unused), (sel_type_cplf & sel_param_odd_CP_unused), (sel_type_cplf & sel_param_odd_CP_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale), B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_high_i_postscale), (sel_type_n & sel_param_high_i_postscale), B"0", (sel_type_n & sel_param_high_i_postscale), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused), B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_n & sel_param_low_r), B"0", B"0", B"0", (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r))) # ( B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0", B"0", B"0", (sel_type_n & sel_param_nominal_count), (sel_type_n & sel_param_nominal_count))) # ( B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", (sel_type_m & sel_param_high_i_postscale), (sel_type_m & sel_param_high_i_postscale), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused), (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r))) # ( B"0", B"0", (sel_type_m & sel_param_nominal_count), (sel_type_m & sel_param_nominal_count), B"0", (sel_type_m & sel_param_nominal_count), B"0", (sel_type_m & sel_param_nominal_count))) # ( B"0", B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c0 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c0 & sel_param_low_r), (sel_type_c0 & sel_param_low_r), (sel_type_c0 & sel_param_low_r))) # ( B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c1 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c1 & sel_param_low_r), B"0", (sel_type_c1 & sel_param_low_r), (sel_type_c1 & sel_param_low_r), B"0", B"0", (sel_type_c1 & sel_param_low_r))) # ( B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale), B"0", B"0", B"0", (sel_type_c2 & sel_param_high_i_postscale), B"0")) # ( B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r), B"0", (sel_type_c2 & sel_param_low_r), B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r))) # ( B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0", (sel_type_c3 & sel_param_low_r))) # ( B"0", (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), B"0")) # ( (sel_type_c4 & sel_param_high_i_postscale), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), B"0")) # ( (sel_type_c4 & sel_param_odd_CP_unused), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused))) # ( (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r))); + busy = ((! idle_state.q) # areset_state.q); + c0_wire[] = B"01000111"; + c1_wire[] = B"01011001"; + c2_wire[] = B"01101011"; + c3_wire[] = B"01111101"; + c4_wire[] = B"10001111"; + counter_param_latch[] = counter_param_latch_reg[].q; + counter_type_latch[] = counter_type_latch_reg[].q; + cuda_combout_wire[] = ( le_comb10.combout, le_comb9.combout, le_comb8.combout); + data_out[] = ( ((shift_reg[8].q & (! read_nominal_out)) # (add_sub5.result[8..8] & read_nominal_out)), ((shift_reg[7].q & (! read_nominal_out)) # (add_sub5.result[7..7] & read_nominal_out)), ((shift_reg[6].q & (! read_nominal_out)) # (add_sub5.result[6..6] & read_nominal_out)), ((shift_reg[5].q & (! read_nominal_out)) # (add_sub5.result[5..5] & read_nominal_out)), ((shift_reg[4].q & (! read_nominal_out)) # (add_sub5.result[4..4] & read_nominal_out)), ((shift_reg[3].q & (! read_nominal_out)) # (add_sub5.result[3..3] & read_nominal_out)), ((shift_reg[2].q & (! read_nominal_out)) # (add_sub5.result[2..2] & read_nominal_out)), ((shift_reg[1].q & (! read_nominal_out)) # (add_sub5.result[1..1] & read_nominal_out)), ((shift_reg[0].q & (! read_nominal_out)) # (add_sub5.result[0..0] & read_nominal_out))); + dummy_scandataout = pll_scandataout; + encode_out[] = ( C4_ena_state.q, (C2_ena_state.q # C3_ena_state.q), (C1_ena_state.q # C3_ena_state.q)); + input_latch_enable = (idle_state.q & (write_param # read_param)); + pll_areset = (pll_areset_in # (areset_state.q & reconfig_wait_state.q)); + pll_configupdate = (configupdate_state.q & (! configupdate3_state.q)); + pll_scanclk = clock; + pll_scanclkena = ((rotate_width_counter_enable & (! rotate_width_counter_done)) # reconfig_seq_data_state.q); + pll_scandata = (scan_cache_out & ((rotate_width_counter_enable # reconfig_seq_data_state.q) # reconfig_post_state.q)); + power_up = ((((((((((((((((((((! reset_state.q) & (! idle_state.q)) & (! read_init_state.q)) & (! read_first_state.q)) & (! read_data_state.q)) & (! read_last_state.q)) & (! read_init_nominal_state.q)) & (! read_first_nominal_state.q)) & (! read_data_nominal_state.q)) & (! read_last_nominal_state.q)) & (! write_init_state.q)) & (! write_data_state.q)) & (! write_init_nominal_state.q)) & (! write_nominal_state.q)) & (! reconfig_init_state.q)) & (! reconfig_counter_state.q)) & (! reconfig_seq_ena_state.q)) & (! reconfig_seq_data_state.q)) & (! reconfig_post_state.q)) & (! reconfig_wait_state.q)); + read_addr_counter_enable = (((read_first_state.q # read_data_state.q) # read_first_nominal_state.q) # read_data_nominal_state.q); + read_addr_counter_out[] = cntr2.q[]; + read_addr_counter_sload = (read_init_state.q # read_init_nominal_state.q); + read_addr_counter_sload_value[] = (read_addr_decoder_out[] & (read_init_state.q # read_init_nominal_state.q)); + read_addr_decoder_out[] = (((((((((((((((((((((((((((((((((((( B"0", B"0", B"0", B"0", B"0", B"0", B"0", B"0") # ( B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_c), B"0")) # ( B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_low_r), B"0", B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_vco & sel_param_high_i_postscale), B"0", B"0", (sel_type_vco & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_odd_CP_unused), B"0", (sel_type_cplf & sel_param_odd_CP_unused), B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_high_i_postscale), B"0", B"0", (sel_type_n & sel_param_high_i_postscale), (sel_type_n & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused), B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r), B"0", B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0")) # ( B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", (sel_type_m & sel_param_high_i_postscale))) # ( B"0", B"0", (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused), (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), B"0")) # ( B"0", B"0", (sel_type_m & sel_param_nominal_count), B"0", B"0", (sel_type_m & sel_param_nominal_count), B"0", B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale))) # ( B"0", B"0", (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c0 & sel_param_low_r), B"0", B"0", B"0", B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", (sel_type_c1 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c1 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c1 & sel_param_low_r), B"0", (sel_type_c1 & sel_param_low_r), B"0", B"0", (sel_type_c1 & sel_param_low_r), B"0")) # ( B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c2 & sel_param_high_i_postscale), B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale), B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r), B"0", B"0", (sel_type_c2 & sel_param_low_r), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0")) # ( B"0", (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale))) # ( (sel_type_c4 & sel_param_odd_CP_unused), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused))) # ( (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0")); + read_nominal_out = tmp_nominal_data_out_state.q; + reconfig_addr_counter_enable = reconfig_seq_data_state.q; + reconfig_addr_counter_out[] = cntr12.q[]; + reconfig_addr_counter_sload = reconfig_seq_ena_state.q; + reconfig_addr_counter_sload_value[] = (reconfig_seq_ena_state.q & seq_addr_wire[]); + reconfig_done = ((! pll_scandone) & (dummy_scandataout # (! dummy_scandataout))); + reconfig_post_done = pll_scandone; + reconfig_width_counter_done = ((((((! cntr13.q[0..0]) & (! cntr13.q[1..1])) & (! cntr13.q[2..2])) & (! cntr13.q[3..3])) & (! cntr13.q[4..4])) & (! cntr13.q[5..5])); + reconfig_width_counter_enable = reconfig_seq_data_state.q; + reconfig_width_counter_sload = reconfig_seq_ena_state.q; + reconfig_width_counter_sload_value[] = (reconfig_seq_ena_state.q & seq_sload_value[]); + rotate_addr_counter_enable = ((((C0_data_state.q # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q); + rotate_addr_counter_out[] = cntr15.q[]; + rotate_addr_counter_sload = ((((C0_ena_state.q # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + rotate_addr_counter_sload_value[] = (((((c0_wire[] & rotate_decoder_wires[0..0]) # (c1_wire[] & rotate_decoder_wires[1..1])) # (c2_wire[] & rotate_decoder_wires[2..2])) # (c3_wire[] & rotate_decoder_wires[3..3])) # (c4_wire[] & rotate_decoder_wires[4..4])); + rotate_decoder_wires[] = decode11.eq[]; + rotate_width_counter_done = (((((! cntr14.q[0..0]) & (! cntr14.q[1..1])) & (! cntr14.q[2..2])) & (! cntr14.q[3..3])) & (! cntr14.q[4..4])); + rotate_width_counter_enable = ((((C0_data_state.q # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q); + rotate_width_counter_sload = ((((C0_ena_state.q # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + rotate_width_counter_sload_value[] = B"10010"; + scan_cache_address[] = ((((addr_counter_out[] & addr_counter_enable) # (read_addr_counter_out[] & read_addr_counter_enable)) # (rotate_addr_counter_out[] & rotate_addr_counter_enable)) # (reconfig_addr_counter_out[] & reconfig_addr_counter_enable)); + scan_cache_in = shift_reg_serial_out; + scan_cache_out = altsyncram4.q_a[0..0]; + scan_cache_write_enable = (write_data_state.q # write_nominal_state.q); + sel_param_bypass_LF_unused = (((! counter_param_latch[0..0]) & (! counter_param_latch[1..1])) & counter_param_latch[2..2]); + sel_param_c = (((! counter_param_latch[0..0]) & counter_param_latch[1..1]) & (! counter_param_latch[2..2])); + sel_param_high_i_postscale = (((! counter_param_latch[0..0]) & (! counter_param_latch[1..1])) & (! counter_param_latch[2..2])); + sel_param_low_r = ((counter_param_latch[0..0] & (! counter_param_latch[1..1])) & (! counter_param_latch[2..2])); + sel_param_nominal_count = ((counter_param_latch[0..0] & counter_param_latch[1..1]) & counter_param_latch[2..2]); + sel_param_odd_CP_unused = ((counter_param_latch[0..0] & (! counter_param_latch[1..1])) & counter_param_latch[2..2]); + sel_type_c0 = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c1 = (((counter_type_latch[0..0] & (! counter_type_latch[1..1])) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c2 = ((((! counter_type_latch[0..0]) & counter_type_latch[1..1]) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c3 = (((counter_type_latch[0..0] & counter_type_latch[1..1]) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c4 = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & counter_type_latch[3..3]); + sel_type_cplf = ((((! counter_type_latch[0..0]) & counter_type_latch[1..1]) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_m = (((counter_type_latch[0..0] & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_n = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_vco = (((counter_type_latch[0..0] & counter_type_latch[1..1]) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + seq_addr_wire[] = B"00110101"; + seq_sload_value[] = B"110110"; + shift_reg_clear = (read_init_state.q # read_init_nominal_state.q); + shift_reg_load_enable = ((idle_state.q & write_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + shift_reg_load_nominal_enable = ((idle_state.q & write_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + shift_reg_serial_in = scan_cache_out; + shift_reg_serial_out = ((((((((shift_reg[17].q & shift_reg_width_select[0..0]) # (shift_reg[17].q & shift_reg_width_select[1..1])) # (shift_reg[17].q & shift_reg_width_select[2..2])) # (shift_reg[17].q & shift_reg_width_select[3..3])) # (shift_reg[17].q & shift_reg_width_select[4..4])) # (shift_reg[17].q & shift_reg_width_select[5..5])) # (shift_reg[17].q & shift_reg_width_select[6..6])) # (shift_reg[17].q & shift_reg_width_select[7..7])); + shift_reg_shift_enable = ((read_data_state.q # read_last_state.q) # write_data_state.q); + shift_reg_shift_nominal_enable = ((read_data_nominal_state.q # read_last_nominal_state.q) # write_nominal_state.q); + shift_reg_width_select[] = width_decoder_select[]; + w1565w = B"0"; + w1592w = B"0"; + w64w = B"0"; + width_counter_done = (((((! cntr3.q[0..0]) & (! cntr3.q[1..1])) & (! cntr3.q[2..2])) & (! cntr3.q[3..3])) & (! cntr3.q[4..4])); + width_counter_enable = ((((read_first_state.q # read_data_state.q) # write_data_state.q) # read_data_nominal_state.q) # write_nominal_state.q); + width_counter_sload = (((read_init_state.q # write_init_state.q) # read_init_nominal_state.q) # write_init_nominal_state.q); + width_counter_sload_value[] = width_decoder_out[]; + width_decoder_out[] = (((((( B"0", B"0", B"0", B"0", B"0") # ( width_decoder_select[2..2], B"0", B"0", B"0", width_decoder_select[2..2])) # ( B"0", B"0", B"0", B"0", width_decoder_select[3..3])) # ( B"0", B"0", width_decoder_select[5..5], width_decoder_select[5..5], width_decoder_select[5..5])) # ( B"0", B"0", B"0", width_decoder_select[6..6], B"0")) # ( B"0", B"0", width_decoder_select[7..7], B"0", B"0")); + width_decoder_select[] = ( ((sel_type_cplf & sel_param_low_r) # (sel_type_cplf & sel_param_odd_CP_unused)), (sel_type_cplf & sel_param_high_i_postscale), ((((((((((((((sel_type_n & sel_param_high_i_postscale) # (sel_type_n & sel_param_low_r)) # (sel_type_m & sel_param_high_i_postscale)) # (sel_type_m & sel_param_low_r)) # (sel_type_c0 & sel_param_high_i_postscale)) # (sel_type_c0 & sel_param_low_r)) # (sel_type_c1 & sel_param_high_i_postscale)) # (sel_type_c1 & sel_param_low_r)) # (sel_type_c2 & sel_param_high_i_postscale)) # (sel_type_c2 & sel_param_low_r)) # (sel_type_c3 & sel_param_high_i_postscale)) # (sel_type_c3 & sel_param_low_r)) # (sel_type_c4 & sel_param_high_i_postscale)) # (sel_type_c4 & sel_param_low_r)), w1592w, ((sel_type_cplf & sel_param_bypass_LF_unused) # (sel_type_cplf & sel_param_c)), ((sel_type_n & sel_param_nominal_count) # (sel_type_m & sel_param_nominal_count)), w1565w, (((((((((((((((sel_type_vco & sel_param_high_i_postscale) # (sel_type_n & sel_param_bypass_LF_unused)) # (sel_type_n & sel_param_odd_CP_unused)) # (sel_type_m & sel_param_bypass_LF_unused)) # (sel_type_m & sel_param_odd_CP_unused)) # (sel_type_c0 & sel_param_bypass_LF_unused)) # (sel_type_c0 & sel_param_odd_CP_unused)) # (sel_type_c1 & sel_param_bypass_LF_unused)) # (sel_type_c1 & sel_param_odd_CP_unused)) # (sel_type_c2 & sel_param_bypass_LF_unused)) # (sel_type_c2 & sel_param_odd_CP_unused)) # (sel_type_c3 & sel_param_bypass_LF_unused)) # (sel_type_c3 & sel_param_odd_CP_unused)) # (sel_type_c4 & sel_param_bypass_LF_unused)) # (sel_type_c4 & sel_param_odd_CP_unused))); + write_from_rom = GND; +END; +--VALID FILE diff --git a/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.bsf new file mode 100644 index 0000000..f4d66a5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.bsf @@ -0,0 +1,95 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2009 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 168) + (text "dcfifo0" (rect 62 1 105 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 152 25 164)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect 20 26 65 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "wrreq" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "wrreq" (rect 20 50 45 63)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "wrclk" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "wrclk" (rect 26 66 48 79)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "rdreq" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "rdreq" (rect 20 98 44 111)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "rdclk" (rect 0 0 27 14)(font "Arial" (font_size 8))) + (text "rdclk" (rect 26 114 47 127)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 144) + (input) + (text "aclr" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "aclr" (rect 20 138 37 151)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)(line_width 1)) + ) + (port + (pt 160 72) + (output) + (text "wrusedw[9..0]" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "wrusedw[9..0]" (rect 69 66 132 79)(font "Arial" (font_size 8))) + (line (pt 160 72)(pt 144 72)(line_width 3)) + ) + (port + (pt 160 96) + (output) + (text "q[31..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 105 90 141 103)(font "Arial" (font_size 8))) + (line (pt 160 96)(pt 144 96)(line_width 3)) + ) + (drawing + (text "8 bits x 1024 words" (rect 63 140 144 152)(font "Arial" )) + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 152)(line_width 1)) + (line (pt 144 152)(pt 16 152)(line_width 1)) + (line (pt 16 152)(pt 16 16)(line_width 1)) + (line (pt 16 84)(pt 144 84)(line_width 1)) + (line (pt 16 132)(pt 144 132)(line_width 1)) + (line (pt 16 66)(pt 22 72)(line_width 1)) + (line (pt 22 72)(pt 16 78)(line_width 1)) + (line (pt 16 114)(pt 22 120)(line_width 1)) + (line (pt 22 120)(pt 16 126)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.cmp b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.cmp new file mode 100644 index 0000000..1f8ad52 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.cmp @@ -0,0 +1,28 @@ +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component dcfifo0 + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + wrusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); +end component; diff --git a/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.qip b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.qip new file mode 100644 index 0000000..a22ffe4 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FIFO+" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "dcfifo0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "dcfifo0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "dcfifo0.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.vhd new file mode 100644 index 0000000..9db22fa --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo0.vhd @@ -0,0 +1,202 @@ +-- megafunction wizard: %LPM_FIFO+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: dcfifo_mixed_widths + +-- ============================================================ +-- File Name: dcfifo0.vhd +-- Megafunction Name(s): +-- dcfifo_mixed_widths +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY dcfifo0 IS + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + wrusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); +END dcfifo0; + + +ARCHITECTURE SYN OF dcfifo0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (9 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT dcfifo_mixed_widths + GENERIC ( + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + lpm_widthu_r : NATURAL; + lpm_width_r : NATURAL; + overflow_checking : STRING; + rdsync_delaypipe : NATURAL; + underflow_checking : STRING; + use_eab : STRING; + write_aclr_synch : STRING; + wrsync_delaypipe : NATURAL + ); + PORT ( + wrclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0); + aclr : IN STD_LOGIC ; + rdclk : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + wrreq : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + wrusedw <= sub_wire0(9 DOWNTO 0); + q <= sub_wire1(31 DOWNTO 0); + + dcfifo_mixed_widths_component : dcfifo_mixed_widths + GENERIC MAP ( + intended_device_family => "Cyclone III", + lpm_numwords => 1024, + lpm_showahead => "OFF", + lpm_type => "dcfifo", + lpm_width => 8, + lpm_widthu => 10, + lpm_widthu_r => 8, + lpm_width_r => 32, + overflow_checking => "ON", + rdsync_delaypipe => 5, + underflow_checking => "ON", + use_eab => "ON", + write_aclr_synch => "OFF", + wrsync_delaypipe => 5 + ) + PORT MAP ( + wrclk => wrclk, + rdreq => rdreq, + aclr => aclr, + rdclk => rdclk, + wrreq => wrreq, + data => data, + wrusedw => sub_wire0, + q => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "4" +-- Retrieval info: PRIVATE: Depth NUMERIC "1024" +-- Retrieval info: PRIVATE: Empty NUMERIC "1" +-- Retrieval info: PRIVATE: Full NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: Optimize NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: UsedW NUMERIC "1" +-- Retrieval info: PRIVATE: Width NUMERIC "8" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "1" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "32" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "0" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "1024" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "10" +-- Retrieval info: CONSTANT: LPM_WIDTHU_R NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTH_R NUMERIC "32" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF" +-- Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND aclr +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL q[31..0] +-- Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL rdclk +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq +-- Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL wrclk +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq +-- Retrieval info: USED_PORT: wrusedw 0 0 10 0 OUTPUT NODEFVAL wrusedw[9..0] +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +-- Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +-- Retrieval info: CONNECT: wrusedw 0 0 10 0 @wrusedw 0 0 10 0 +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0_waveforms.html FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.bsf new file mode 100644 index 0000000..7a4a386 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.bsf @@ -0,0 +1,95 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2009 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 168) + (text "dcfifo1" (rect 62 1 105 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 152 25 164)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "wrreq" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "wrreq" (rect 20 50 45 63)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "wrclk" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "wrclk" (rect 26 66 48 79)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "rdreq" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "rdreq" (rect 20 98 44 111)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "rdclk" (rect 0 0 27 14)(font "Arial" (font_size 8))) + (text "rdclk" (rect 26 114 47 127)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 144) + (input) + (text "aclr" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "aclr" (rect 20 138 37 151)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)(line_width 1)) + ) + (port + (pt 160 96) + (output) + (text "q[7..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[7..0]" (rect 111 90 141 103)(font "Arial" (font_size 8))) + (line (pt 160 96)(pt 144 96)(line_width 3)) + ) + (port + (pt 160 120) + (output) + (text "rdusedw[9..0]" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "rdusedw[9..0]" (rect 73 114 135 127)(font "Arial" (font_size 8))) + (line (pt 160 120)(pt 144 120)(line_width 3)) + ) + (drawing + (text "32 bits x 256 words" (rect 63 140 144 152)(font "Arial" )) + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 152)(line_width 1)) + (line (pt 144 152)(pt 16 152)(line_width 1)) + (line (pt 16 152)(pt 16 16)(line_width 1)) + (line (pt 16 84)(pt 144 84)(line_width 1)) + (line (pt 16 132)(pt 144 132)(line_width 1)) + (line (pt 16 66)(pt 22 72)(line_width 1)) + (line (pt 22 72)(pt 16 78)(line_width 1)) + (line (pt 16 114)(pt 22 120)(line_width 1)) + (line (pt 22 120)(pt 16 126)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.cmp b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.cmp new file mode 100644 index 0000000..a1b8d55 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.cmp @@ -0,0 +1,28 @@ +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component dcfifo1 + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + rdusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); +end component; diff --git a/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.qip b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.qip new file mode 100644 index 0000000..bf1428c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FIFO+" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "dcfifo1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "dcfifo1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "dcfifo1.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.vhd b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.vhd new file mode 100644 index 0000000..d05dd0a --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/dcfifo1.vhd @@ -0,0 +1,202 @@ +-- megafunction wizard: %LPM_FIFO+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: dcfifo_mixed_widths + +-- ============================================================ +-- File Name: dcfifo1.vhd +-- Megafunction Name(s): +-- dcfifo_mixed_widths +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY dcfifo1 IS + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + rdusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); +END dcfifo1; + + +ARCHITECTURE SYN OF dcfifo1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (9 DOWNTO 0); + + + + COMPONENT dcfifo_mixed_widths + GENERIC ( + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + lpm_widthu_r : NATURAL; + lpm_width_r : NATURAL; + overflow_checking : STRING; + rdsync_delaypipe : NATURAL; + underflow_checking : STRING; + use_eab : STRING; + write_aclr_synch : STRING; + wrsync_delaypipe : NATURAL + ); + PORT ( + wrclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + aclr : IN STD_LOGIC ; + rdclk : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + wrreq : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + rdusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(7 DOWNTO 0); + rdusedw <= sub_wire1(9 DOWNTO 0); + + dcfifo_mixed_widths_component : dcfifo_mixed_widths + GENERIC MAP ( + intended_device_family => "Cyclone III", + lpm_numwords => 256, + lpm_showahead => "OFF", + lpm_type => "dcfifo", + lpm_width => 32, + lpm_widthu => 8, + lpm_widthu_r => 10, + lpm_width_r => 8, + overflow_checking => "ON", + rdsync_delaypipe => 5, + underflow_checking => "ON", + use_eab => "ON", + write_aclr_synch => "OFF", + wrsync_delaypipe => 5 + ) + PORT MAP ( + wrclk => wrclk, + rdreq => rdreq, + aclr => aclr, + rdclk => rdclk, + wrreq => wrreq, + data => data, + q => sub_wire0, + rdusedw => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "4" +-- Retrieval info: PRIVATE: Depth NUMERIC "256" +-- Retrieval info: PRIVATE: Empty NUMERIC "1" +-- Retrieval info: PRIVATE: Full NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: Optimize NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: UsedW NUMERIC "1" +-- Retrieval info: PRIVATE: Width NUMERIC "32" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "1" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "8" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "1" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "0" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "0" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "256" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTHU_R NUMERIC "10" +-- Retrieval info: CONSTANT: LPM_WIDTH_R NUMERIC "8" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF" +-- Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND aclr +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL q[7..0] +-- Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL rdclk +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq +-- Retrieval info: USED_PORT: rdusedw 0 0 10 0 OUTPUT NODEFVAL rdusedw[9..0] +-- Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL wrclk +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +-- Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +-- Retrieval info: CONNECT: rdusedw 0 0 10 0 @rdusedw 0 0 10 0 +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1_waveforms.html FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.bsf new file mode 100644 index 0000000..f65e217 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri0" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect -3 -27 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[31..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "tridata[31..0]" (rect 84 -36 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "32" (rect 61 25 71 37)(font "Arial" )) + (text "32" (rect 13 25 23 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 56 28)(pt 64 20)(line_width 1)) + (line (pt 8 28)(pt 16 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.inc new file mode 100644 index 0000000..1b15c22 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri0 +( + data[31..0], + enabledt +) + +RETURNS ( + tridata[31..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.qip new file mode 100644 index 0000000..c70041d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri0.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.vhd new file mode 100644 index 0000000..494b3c2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri0.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri0.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri0 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_bustri0; + + +ARCHITECTURE SYN OF lpm_bustri0 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 32 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 32 0 BIDIR NODEFVAL tridata[31..0] +-- Retrieval info: CONNECT: tridata 0 0 32 0 @tridata 0 0 32 0 +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.bsf new file mode 100644 index 0000000..058fffb --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri1" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[2..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[2..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[2..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[2..0]" (rect 84 -30 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "3" (rect 63 25 68 37)(font "Arial" )) + (text "3" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.qip new file mode 100644 index 0000000..fd76bb2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri1.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.vhd new file mode 100644 index 0000000..47db597 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri1.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri1.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri1 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (2 DOWNTO 0) + ); +END lpm_bustri1; + + +ARCHITECTURE SYN OF lpm_bustri1 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (2 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 3 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "3" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "3" +-- Retrieval info: USED_PORT: data 0 0 3 0 INPUT NODEFVAL data[2..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 3 0 BIDIR NODEFVAL tridata[2..0] +-- Retrieval info: CONNECT: tridata 0 0 3 0 @tridata 0 0 3 0 +-- Retrieval info: CONNECT: @data 0 0 3 0 data 0 0 3 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.bsf new file mode 100644 index 0000000..36a4813 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri2" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[17..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[17..0]" (rect -3 -27 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[17..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "tridata[17..0]" (rect 84 -36 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "18" (rect 61 25 71 37)(font "Arial" )) + (text "18" (rect 13 25 23 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 56 28)(pt 64 20)(line_width 1)) + (line (pt 8 28)(pt 16 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.qip new file mode 100644 index 0000000..676e430 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri2.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.vhd new file mode 100644 index 0000000..0966743 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri2.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri2.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri2 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (17 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (17 DOWNTO 0) + ); +END lpm_bustri2; + + +ARCHITECTURE SYN OF lpm_bustri2 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (17 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (17 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 18 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "18" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "18" +-- Retrieval info: USED_PORT: data 0 0 18 0 INPUT NODEFVAL data[17..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 18 0 BIDIR NODEFVAL tridata[17..0] +-- Retrieval info: CONNECT: tridata 0 0 18 0 @tridata 0 0 18 0 +-- Retrieval info: CONNECT: @data 0 0 18 0 data 0 0 18 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri2.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.bsf new file mode 100644 index 0000000..2dde401 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri3" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[5..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[5..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[5..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[5..0]" (rect 84 -30 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "6" (rect 63 25 68 37)(font "Arial" )) + (text "6" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.qip new file mode 100644 index 0000000..8c41556 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri3.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.vhd new file mode 100644 index 0000000..2344712 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri3.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri3.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri3 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (5 DOWNTO 0) + ); +END lpm_bustri3; + + +ARCHITECTURE SYN OF lpm_bustri3 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (5 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 6 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "6" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "6" +-- Retrieval info: USED_PORT: data 0 0 6 0 INPUT NODEFVAL data[5..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 6 0 BIDIR NODEFVAL tridata[5..0] +-- Retrieval info: CONNECT: tridata 0 0 6 0 @tridata 0 0 6 0 +-- Retrieval info: CONNECT: @data 0 0 6 0 data 0 0 6 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri3.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.bsf new file mode 100644 index 0000000..cd9edcc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri4" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[4..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[4..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[4..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[4..0]" (rect 84 -30 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "5" (rect 63 25 68 37)(font "Arial" )) + (text "5" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.qip new file mode 100644 index 0000000..39eb21d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri4.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri4.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.vhd new file mode 100644 index 0000000..5bb209b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri4.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri4.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri4 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (4 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +END lpm_bustri4; + + +ARCHITECTURE SYN OF lpm_bustri4 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (4 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 5 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +-- Retrieval info: USED_PORT: data 0 0 5 0 INPUT NODEFVAL data[4..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 5 0 BIDIR NODEFVAL tridata[4..0] +-- Retrieval info: CONNECT: tridata 0 0 5 0 @tridata 0 0 5 0 +-- Retrieval info: CONNECT: @data 0 0 5 0 data 0 0 5 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri4.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri4.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri4_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.bsf new file mode 100644 index 0000000..1d9b178 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri5" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[7..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[7..0]" (rect 84 -30 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "8" (rect 63 25 68 37)(font "Arial" )) + (text "8" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.inc new file mode 100644 index 0000000..fdb4877 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri5 +( + data[7..0], + enabledt +) + +RETURNS ( + tridata[7..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.qip new file mode 100644 index 0000000..daa3efa --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri5.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri5.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri5.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri5.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.vhd new file mode 100644 index 0000000..e1973b4 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri5.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri5.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri5 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END lpm_bustri5; + + +ARCHITECTURE SYN OF lpm_bustri5 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 8 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 8 0 BIDIR NODEFVAL tridata[7..0] +-- Retrieval info: CONNECT: tridata 0 0 8 0 @tridata 0 0 8 0 +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri5.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri5.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri5.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri5.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri5_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.bsf new file mode 100644 index 0000000..4c9344e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri6" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[23..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[23..0]" (rect -3 -27 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[23..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "tridata[23..0]" (rect 84 -36 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "24" (rect 61 25 71 37)(font "Arial" )) + (text "24" (rect 13 25 23 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 56 28)(pt 64 20)(line_width 1)) + (line (pt 8 28)(pt 16 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.qip new file mode 100644 index 0000000..6b9f1df --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri6.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri6.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri6.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.vhd new file mode 100644 index 0000000..45f409f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri6.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri6.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri6 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +END lpm_bustri6; + + +ARCHITECTURE SYN OF lpm_bustri6 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 24 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "24" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "24" +-- Retrieval info: USED_PORT: data 0 0 24 0 INPUT NODEFVAL data[23..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 24 0 BIDIR NODEFVAL tridata[23..0] +-- Retrieval info: CONNECT: tridata 0 0 24 0 @tridata 0 0 24 0 +-- Retrieval info: CONNECT: @data 0 0 24 0 data 0 0 24 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri6.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri6.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri6.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri6.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri6_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.bsf new file mode 100644 index 0000000..399a828 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri7" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[3..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[3..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[3..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[3..0]" (rect 84 -30 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "4" (rect 63 25 68 37)(font "Arial" )) + (text "4" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.qip new file mode 100644 index 0000000..f32324c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri7.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri7.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri7.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.vhd new file mode 100644 index 0000000..4bf883d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri7.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri7.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri7 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (3 DOWNTO 0) + ); +END lpm_bustri7; + + +ARCHITECTURE SYN OF lpm_bustri7 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (3 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 4 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "4" +-- Retrieval info: USED_PORT: data 0 0 4 0 INPUT NODEFVAL data[3..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 4 0 BIDIR NODEFVAL tridata[3..0] +-- Retrieval info: CONNECT: tridata 0 0 4 0 @tridata 0 0 4 0 +-- Retrieval info: CONNECT: @data 0 0 4 0 data 0 0 4 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri7.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri7.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri7.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri7.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri7_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.bsf new file mode 100644 index 0000000..dcc4b63 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 40) + (text "lpm_bustri_BYT" (rect 2 1 110 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 96 24) + (bidir) + (text "tridata[7..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[7..0]" (rect 100 -30 113 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "8" (rect 71 25 76 37)(font "Arial" )) + (text "8" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 66 28)(pt 74 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.inc new file mode 100644 index 0000000..8cb4941 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri_BYT +( + data[7..0], + enabledt +) + +RETURNS ( + tridata[7..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.qip new file mode 100644 index 0000000..89e40bd --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri_BYT.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_BYT.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_BYT.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_BYT.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.vhd new file mode 100644 index 0000000..d24e3cb --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_BYT.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri_BYT.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri_BYT IS + PORT + ( + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END lpm_bustri_BYT; + + +ARCHITECTURE SYN OF lpm_bustri_byt IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 8 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 8 0 BIDIR NODEFVAL tridata[7..0] +-- Retrieval info: CONNECT: tridata 0 0 8 0 @tridata 0 0 8 0 +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_BYT.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_BYT.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_BYT.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_BYT.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_BYT_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.bsf new file mode 100644 index 0000000..6535d3e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 112 40) + (text "lpm_bustri_LONG" (rect 5 1 126 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect -3 -27 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 112 24) + (bidir) + (text "tridata[31..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "tridata[31..0]" (rect 116 -36 129 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 112 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "32" (rect 77 25 87 37)(font "Arial" )) + (text "32" (rect 13 25 23 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 72 28)(pt 80 20)(line_width 1)) + (line (pt 8 28)(pt 16 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.inc new file mode 100644 index 0000000..f180c48 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri_LONG +( + data[31..0], + enabledt +) + +RETURNS ( + tridata[31..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.qip new file mode 100644 index 0000000..67b7232 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri_LONG.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_LONG.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_LONG.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_LONG.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.tdf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.tdf new file mode 100644 index 0000000..0ec70d1 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.tdf @@ -0,0 +1,72 @@ +-------------------------------------------------------------------- +-- +-- LPM_BUSTRI Parameterized Megafunction +-- +-- Copyright (C) 1991-2013 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. +-- +-- Quartus II 13.1.0 Build 162 10/23/2013 +-- +-- Version 2.0 +-- +-------------------------------------------------------------------- + +SUBDESIGN lpm_bustri_LONG +( + tridata[32-1..0] : BIDIR; + data[32-1..0] : INPUT = VCC; + enabletr : INPUT = VCC; + enabledt : INPUT = VCC; + result[32-1..0] : OUTPUT; +) + +VARIABLE + % Are the enable inputs used? % + IF (USED(enabledt)) GENERATE + dout[32-1..0] : TRI; + END GENERATE; + IF (USED(enabletr)) GENERATE + din[32-1..0] : TRI; + END GENERATE; + +BEGIN + + ASSERT (32 > 0) + REPORT "Value of 32 parameter value must be greater than 0" + SEVERITY ERROR + HELP_ID LPM_BUSTRI_WIDTH; + + ASSERT (USED(enabledt) & USED(data)) + REPORT "lpm_bustri function requires data[] port -- Altera recommends using the TRI primitive instead" + SEVERITY ERROR + HELP_ID LPM_BUSTRI_DATA; + + % Connect buffers if they are used % + IF (USED(enabledt)) GENERATE + dout[].oe = enabledt; + dout[] = data[]; + tridata[] = dout[]; + END GENERATE; + + IF (USED(enabletr)) GENERATE + din[].oe = enabletr; + din[] = tridata[]; + result[] = din[]; + ELSE GENERATE + result[] = tridata[]; + END GENERATE; + IF !USED(result) GENERATE + result[] = GND; + END GENERATE; +END; diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.vhd new file mode 100644 index 0000000..3de83c0 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_LONG.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri_LONG.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri_LONG IS + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_bustri_LONG; + + +ARCHITECTURE SYN OF lpm_bustri_long IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 32 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 32 0 BIDIR NODEFVAL tridata[31..0] +-- Retrieval info: CONNECT: tridata 0 0 32 0 @tridata 0 0 32 0 +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_LONG.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_LONG.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_LONG.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_LONG.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_LONG_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.bsf new file mode 100644 index 0000000..4e882d1 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 112 40) + (text "lpm_bustri_WORD" (rect 2 1 129 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[15..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect -3 -27 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 112 24) + (bidir) + (text "tridata[15..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "tridata[15..0]" (rect 116 -36 129 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 112 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "16" (rect 77 25 87 37)(font "Arial" )) + (text "16" (rect 13 25 23 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 72 28)(pt 80 20)(line_width 1)) + (line (pt 8 28)(pt 16 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.inc new file mode 100644 index 0000000..09f6251 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri_WORD +( + data[15..0], + enabledt +) + +RETURNS ( + tridata[15..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.qip new file mode 100644 index 0000000..57bbe2e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri_WORD.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_WORD.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_WORD.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_WORD.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.vhd new file mode 100644 index 0000000..85cbdd1 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_bustri_WORD.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri_WORD.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri_WORD IS + PORT + ( + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +END lpm_bustri_WORD; + + +ARCHITECTURE SYN OF lpm_bustri_word IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 16 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16" +-- Retrieval info: USED_PORT: data 0 0 16 0 INPUT NODEFVAL data[15..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 16 0 BIDIR NODEFVAL tridata[15..0] +-- Retrieval info: CONNECT: tridata 0 0 16 0 @tridata 0 0 16 0 +-- Retrieval info: CONNECT: @data 0 0 16 0 data 0 0 16 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_WORD.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_WORD.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_WORD.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_WORD.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_WORD_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.bsf new file mode 100644 index 0000000..9ec3796 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.bsf @@ -0,0 +1,54 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 128 96) + (text "lpm_compare1" (rect 22 1 122 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 48) + (input) + (text "dataa[10..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "dataa[10..0]" (rect 20 42 77 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "datab[10..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "datab[10..0]" (rect 20 58 77 71)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 3)) + ) + (port + (pt 128 56) + (output) + (text "agb" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "agb" (rect 91 50 109 63)(font "Arial" (font_size 8))) + (line (pt 128 56)(pt 112 56)(line_width 1)) + ) + (drawing + (text "unsigned compare" (rect 36 17 112 29)(font "Arial" )) + (line (pt 16 16)(pt 112 16)(line_width 1)) + (line (pt 112 16)(pt 112 80)(line_width 1)) + (line (pt 112 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.inc new file mode 100644 index 0000000..bde0ab9 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_compare1 +( + dataa[10..0], + datab[10..0] +) + +RETURNS ( + AgB +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.qip new file mode 100644 index 0000000..ea93f3c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_COMPARE" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_compare1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_compare1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_compare1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_compare1.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.vhd new file mode 100644 index 0000000..a85e3b2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_compare1.vhd @@ -0,0 +1,127 @@ +-- megafunction wizard: %LPM_COMPARE% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_compare + +-- ============================================================ +-- File Name: lpm_compare1.vhd +-- Megafunction Name(s): +-- lpm_compare +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_compare1 IS + PORT + ( + dataa : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + datab : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + AgB : OUT STD_LOGIC + ); +END lpm_compare1; + + +ARCHITECTURE SYN OF lpm_compare1 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + + + + COMPONENT lpm_compare + GENERIC ( + lpm_representation : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + dataa : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + datab : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + AgB : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + AgB <= sub_wire0; + + lpm_compare_component : lpm_compare + GENERIC MAP ( + lpm_representation => "UNSIGNED", + lpm_type => "LPM_COMPARE", + lpm_width => 11 + ) + PORT MAP ( + dataa => dataa, + datab => datab, + AgB => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AeqB NUMERIC "0" +-- Retrieval info: PRIVATE: AgeB NUMERIC "0" +-- Retrieval info: PRIVATE: AgtB NUMERIC "1" +-- Retrieval info: PRIVATE: AleB NUMERIC "0" +-- Retrieval info: PRIVATE: AltB NUMERIC "0" +-- Retrieval info: PRIVATE: AneB NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LPM_PIPELINE NUMERIC "0" +-- Retrieval info: PRIVATE: Latency NUMERIC "0" +-- Retrieval info: PRIVATE: PortBValue NUMERIC "0" +-- Retrieval info: PRIVATE: Radix NUMERIC "10" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SignedCompare NUMERIC "0" +-- Retrieval info: PRIVATE: aclr NUMERIC "0" +-- Retrieval info: PRIVATE: clken NUMERIC "0" +-- Retrieval info: PRIVATE: isPortBConstant NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "11" +-- Retrieval info: CONSTANT: LPM_REPRESENTATION STRING "UNSIGNED" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_COMPARE" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "11" +-- Retrieval info: USED_PORT: AgB 0 0 0 0 OUTPUT NODEFVAL AgB +-- Retrieval info: USED_PORT: dataa 0 0 11 0 INPUT NODEFVAL dataa[10..0] +-- Retrieval info: USED_PORT: datab 0 0 11 0 INPUT NODEFVAL datab[10..0] +-- Retrieval info: CONNECT: AgB 0 0 0 0 @AgB 0 0 0 0 +-- Retrieval info: CONNECT: @dataa 0 0 11 0 dataa 0 0 11 0 +-- Retrieval info: CONNECT: @datab 0 0 11 0 datab 0 0 11 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.bsf new file mode 100644 index 0000000..684bbae --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.bsf @@ -0,0 +1,42 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 48) + (text "lpm_constant0" (rect 6 1 106 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 32 25 44)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[4..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[4..0]" (rect 93 -25 106 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 80 30)(font "Arial" )) + (text "5" (rect 87 25 92 37)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.qip new file mode 100644 index 0000000..bb19c49 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_constant0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant0.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.vhd new file mode 100644 index 0000000..63631cc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant0.vhd @@ -0,0 +1,108 @@ +-- megafunction wizard: %LPM_CONSTANT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_constant + +-- ============================================================ +-- File Name: lpm_constant0.vhd +-- Megafunction Name(s): +-- lpm_constant +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_constant0 IS + PORT + ( + result : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +END lpm_constant0; + + +ARCHITECTURE SYN OF lpm_constant0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + + + + COMPONENT lpm_constant + GENERIC ( + lpm_cvalue : NATURAL; + lpm_hint : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + result : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + result <= sub_wire0(4 DOWNTO 0); + + lpm_constant_component : lpm_constant + GENERIC MAP ( + lpm_cvalue => 0, + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "LPM_CONSTANT", + lpm_width => 5 + ) + PORT MAP ( + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: Radix NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: Value NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +-- Retrieval info: USED_PORT: result 0 0 5 0 OUTPUT NODEFVAL result[4..0] +-- Retrieval info: CONNECT: result 0 0 5 0 @result 0 0 5 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.bsf new file mode 100644 index 0000000..01fdb2b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.bsf @@ -0,0 +1,42 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 48) + (text "lpm_constant1" (rect 6 1 106 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 32 25 44)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[1..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[1..0]" (rect 93 -25 106 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 80 30)(font "Arial" )) + (text "2" (rect 87 25 92 37)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.inc new file mode 100644 index 0000000..9b556e7 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.inc @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_constant1 +( + +) + +RETURNS ( + result[1..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.qip new file mode 100644 index 0000000..2bc12e7 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_constant1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant1.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.vhd new file mode 100644 index 0000000..afa67ba --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant1.vhd @@ -0,0 +1,108 @@ +-- megafunction wizard: %LPM_CONSTANT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_constant + +-- ============================================================ +-- File Name: lpm_constant1.vhd +-- Megafunction Name(s): +-- lpm_constant +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_constant1 IS + PORT + ( + result : OUT STD_LOGIC_VECTOR (1 DOWNTO 0) + ); +END lpm_constant1; + + +ARCHITECTURE SYN OF lpm_constant1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (1 DOWNTO 0); + + + + COMPONENT lpm_constant + GENERIC ( + lpm_cvalue : NATURAL; + lpm_hint : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + result : OUT STD_LOGIC_VECTOR (1 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + result <= sub_wire0(1 DOWNTO 0); + + lpm_constant_component : lpm_constant + GENERIC MAP ( + lpm_cvalue => 0, + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "LPM_CONSTANT", + lpm_width => 2 + ) + PORT MAP ( + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: Radix NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: Value NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "2" +-- Retrieval info: USED_PORT: result 0 0 2 0 OUTPUT NODEFVAL result[1..0] +-- Retrieval info: CONNECT: result 0 0 2 0 @result 0 0 2 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.bsf new file mode 100644 index 0000000..a4b7697 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.bsf @@ -0,0 +1,42 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 48) + (text "lpm_constant2" (rect 6 1 106 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 32 25 44)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[7..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[7..0]" (rect 93 -25 106 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 80 30)(font "Arial" )) + (text "8" (rect 87 25 92 37)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.qip new file mode 100644 index 0000000..ad38485 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_constant2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant2.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.vhd new file mode 100644 index 0000000..f25e68f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant2.vhd @@ -0,0 +1,108 @@ +-- megafunction wizard: %LPM_CONSTANT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_constant + +-- ============================================================ +-- File Name: lpm_constant2.vhd +-- Megafunction Name(s): +-- lpm_constant +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_constant2 IS + PORT + ( + result : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END lpm_constant2; + + +ARCHITECTURE SYN OF lpm_constant2 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + + + + COMPONENT lpm_constant + GENERIC ( + lpm_cvalue : NATURAL; + lpm_hint : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + result : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + result <= sub_wire0(7 DOWNTO 0); + + lpm_constant_component : lpm_constant + GENERIC MAP ( + lpm_cvalue => 0, + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "LPM_CONSTANT", + lpm_width => 8 + ) + PORT MAP ( + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: Radix NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: Value NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: USED_PORT: result 0 0 8 0 OUTPUT NODEFVAL result[7..0] +-- Retrieval info: CONNECT: result 0 0 8 0 @result 0 0 8 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.bsf new file mode 100644 index 0000000..7616869 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.bsf @@ -0,0 +1,42 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 48) + (text "lpm_constant3" (rect 6 1 106 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 32 25 44)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[6..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[6..0]" (rect 93 -25 106 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 80 30)(font "Arial" )) + (text "7" (rect 87 25 92 37)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.qip new file mode 100644 index 0000000..615a781 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_constant3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant3.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.vhd new file mode 100644 index 0000000..5d47d8e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant3.vhd @@ -0,0 +1,108 @@ +-- megafunction wizard: %LPM_CONSTANT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_constant + +-- ============================================================ +-- File Name: lpm_constant3.vhd +-- Megafunction Name(s): +-- lpm_constant +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_constant3 IS + PORT + ( + result : OUT STD_LOGIC_VECTOR (6 DOWNTO 0) + ); +END lpm_constant3; + + +ARCHITECTURE SYN OF lpm_constant3 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (6 DOWNTO 0); + + + + COMPONENT lpm_constant + GENERIC ( + lpm_cvalue : NATURAL; + lpm_hint : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + result : OUT STD_LOGIC_VECTOR (6 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + result <= sub_wire0(6 DOWNTO 0); + + lpm_constant_component : lpm_constant + GENERIC MAP ( + lpm_cvalue => 0, + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "LPM_CONSTANT", + lpm_width => 7 + ) + PORT MAP ( + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: Radix NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: Value NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "7" +-- Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "7" +-- Retrieval info: USED_PORT: result 0 0 7 0 OUTPUT NODEFVAL result[6..0] +-- Retrieval info: CONNECT: result 0 0 7 0 @result 0 0 7 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.bsf new file mode 100644 index 0000000..181c667 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.bsf @@ -0,0 +1,42 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 48) + (text "lpm_constant4" (rect 6 1 106 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 32 25 44)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[10..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "result[10..0]" (rect 93 -31 106 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "2040" (rect 60 18 80 30)(font "Arial" )) + (text "11" (rect 85 25 95 37)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 80 28)(pt 88 20)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.inc new file mode 100644 index 0000000..a913739 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.inc @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_constant4 +( + +) + +RETURNS ( + result[10..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.qip new file mode 100644 index 0000000..44fa63f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_constant4.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant4.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant4.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.vhd new file mode 100644 index 0000000..e0fc73d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_constant4.vhd @@ -0,0 +1,108 @@ +-- megafunction wizard: %LPM_CONSTANT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_constant + +-- ============================================================ +-- File Name: lpm_constant4.vhd +-- Megafunction Name(s): +-- lpm_constant +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_constant4 IS + PORT + ( + result : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) + ); +END lpm_constant4; + + +ARCHITECTURE SYN OF lpm_constant4 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (10 DOWNTO 0); + + + + COMPONENT lpm_constant + GENERIC ( + lpm_cvalue : NATURAL; + lpm_hint : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + result : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + result <= sub_wire0(10 DOWNTO 0); + + lpm_constant_component : lpm_constant + GENERIC MAP ( + lpm_cvalue => 2040, + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "LPM_CONSTANT", + lpm_width => 11 + ) + PORT MAP ( + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: Radix NUMERIC "10" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: Value NUMERIC "2040" +-- Retrieval info: PRIVATE: nBit NUMERIC "11" +-- Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "2040" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "11" +-- Retrieval info: USED_PORT: result 0 0 11 0 OUTPUT NODEFVAL result[10..0] +-- Retrieval info: CONNECT: result 0 0 11 0 @result 0 0 11 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.bsf new file mode 100644 index 0000000..7fc7aaa --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.bsf @@ -0,0 +1,49 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 64) + (text "lpm_counter0" (rect 33 1 125 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 48 25 60)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 144 40) + (output) + (text "q[17..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[17..0]" (rect 89 34 125 47)(font "Arial" (font_size 8))) + (line (pt 144 40)(pt 128 40)(line_width 3)) + ) + (drawing + (text "up counter" (rect 84 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 48)(line_width 1)) + (line (pt 128 48)(pt 16 48)(line_width 1)) + (line (pt 16 48)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.qip new file mode 100644 index 0000000..a72845b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_COUNTER" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_counter0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_counter0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_counter0.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.vhd new file mode 100644 index 0000000..9135dbc --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_counter0.vhd @@ -0,0 +1,126 @@ +-- megafunction wizard: %LPM_COUNTER% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_counter + +-- ============================================================ +-- File Name: lpm_counter0.vhd +-- Megafunction Name(s): +-- lpm_counter +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_counter0 IS + PORT + ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (17 DOWNTO 0) + ); +END lpm_counter0; + + +ARCHITECTURE SYN OF lpm_counter0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (17 DOWNTO 0); + + + + COMPONENT lpm_counter + GENERIC ( + lpm_direction : STRING; + lpm_port_updown : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (17 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(17 DOWNTO 0); + + lpm_counter_component : lpm_counter + GENERIC MAP ( + lpm_direction => "UP", + lpm_port_updown => "PORT_UNUSED", + lpm_type => "LPM_COUNTER", + lpm_width => 18 + ) + PORT MAP ( + clock => clock, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: CNT_EN NUMERIC "0" +-- Retrieval info: PRIVATE: CarryIn NUMERIC "0" +-- Retrieval info: PRIVATE: CarryOut NUMERIC "0" +-- Retrieval info: PRIVATE: Direction NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: ModulusCounter NUMERIC "0" +-- Retrieval info: PRIVATE: ModulusValue NUMERIC "0" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "18" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "UP" +-- Retrieval info: CONSTANT: LPM_PORT_UPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_COUNTER" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "18" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: q 0 0 18 0 OUTPUT NODEFVAL q[17..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 18 0 @q 0 0 18 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.bsf new file mode 100644 index 0000000..6675606 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.bsf @@ -0,0 +1,63 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 96) + (text "lpm_ff0" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 53 71)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[31..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 50 125 63)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.qip new file mode 100644 index 0000000..d33c680 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff0.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.vhd new file mode 100644 index 0000000..4c17d8f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff0.vhd @@ -0,0 +1,127 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff0.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff0 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + enable : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_ff0; + + +ARCHITECTURE SYN OF lpm_ff0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enable : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(31 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 32 + ) + PORT MAP ( + enable => enable, + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "1" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: enable 0 0 0 0 INPUT NODEFVAL enable +-- Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL q[31..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +-- Retrieval info: CONNECT: @enable 0 0 0 0 enable 0 0 0 0 +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff0.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.bsf new file mode 100644 index 0000000..947a023 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_ff1" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[31..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.qip new file mode 100644 index 0000000..94b30af --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff1.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.vhd new file mode 100644 index 0000000..da02a15 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff1.vhd @@ -0,0 +1,122 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff1.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff1 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_ff1; + + +ARCHITECTURE SYN OF lpm_ff1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(31 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 32 + ) + PORT MAP ( + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL q[31..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.bsf new file mode 100644 index 0000000..b52c75b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_ff2" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 26 77 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[127..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 83 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.qip new file mode 100644 index 0000000..9c46273 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff2.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.vhd new file mode 100644 index 0000000..27b4c3a --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff2.vhd @@ -0,0 +1,122 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff2.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff2 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +END lpm_ff2; + + +ARCHITECTURE SYN OF lpm_ff2 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (127 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(127 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 128 + ) + PORT MAP ( + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 128 0 INPUT NODEFVAL data[127..0] +-- Retrieval info: USED_PORT: q 0 0 128 0 OUTPUT NODEFVAL q[127..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 128 0 @q 0 0 128 0 +-- Retrieval info: CONNECT: @data 0 0 128 0 data 0 0 128 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff2.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.bsf new file mode 100644 index 0000000..51248ea --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_ff3" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[23..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[23..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[23..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[23..0]" (rect 89 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.qip new file mode 100644 index 0000000..98d1312 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff3.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.vhd new file mode 100644 index 0000000..a86b4ee --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff3.vhd @@ -0,0 +1,122 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff3.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff3 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +END lpm_ff3; + + +ARCHITECTURE SYN OF lpm_ff3 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (23 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (23 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (23 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(23 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 24 + ) + PORT MAP ( + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "24" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "24" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 24 0 INPUT NODEFVAL data[23..0] +-- Retrieval info: USED_PORT: q 0 0 24 0 OUTPUT NODEFVAL q[23..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 24 0 @q 0 0 24 0 +-- Retrieval info: CONNECT: @data 0 0 24 0 data 0 0 24 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff3.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.bsf new file mode 100644 index 0000000..be432cb --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_ff4" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[15..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[15..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[15..0]" (rect 89 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.inc new file mode 100644 index 0000000..ea243d6 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_ff4 +( + clock, + data[15..0] +) + +RETURNS ( + q[15..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.qip new file mode 100644 index 0000000..f5a0a35 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff4.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff4.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff4.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.vhd new file mode 100644 index 0000000..a738a64 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff4.vhd @@ -0,0 +1,122 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff4.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff4 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +END lpm_ff4; + + +ARCHITECTURE SYN OF lpm_ff4 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (15 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(15 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 16 + ) + PORT MAP ( + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 16 0 INPUT NODEFVAL data[15..0] +-- Retrieval info: USED_PORT: q 0 0 16 0 OUTPUT NODEFVAL q[15..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 16 0 @q 0 0 16 0 +-- Retrieval info: CONNECT: @data 0 0 16 0 data 0 0 16 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff4.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff4.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff4_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.bsf new file mode 100644 index 0000000..a69af6e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_ff5" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect 20 26 65 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[7..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[7..0]" (rect 95 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.inc new file mode 100644 index 0000000..f65f941 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_ff5 +( + clock, + data[7..0] +) + +RETURNS ( + q[7..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.qip new file mode 100644 index 0000000..0d13267 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff5.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff5.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff5.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff5.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.vhd new file mode 100644 index 0000000..96063a2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff5.vhd @@ -0,0 +1,122 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff5.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff5 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END lpm_ff5; + + +ARCHITECTURE SYN OF lpm_ff5 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(7 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 8 + ) + PORT MAP ( + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL q[7..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0 +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff5.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff5.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff5.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff5.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff5_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.bsf new file mode 100644 index 0000000..73a2df0 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.bsf @@ -0,0 +1,63 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 96) + (text "lpm_ff6" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 26 77 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 53 71)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[127..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 83 50 125 63)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.inc new file mode 100644 index 0000000..c8a5a36 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_ff6 +( + clock, + data[127..0], + enable +) + +RETURNS ( + q[127..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.qip new file mode 100644 index 0000000..08e02f0 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff6.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff6.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff6.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff6.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.vhd new file mode 100644 index 0000000..5cc384d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_ff6.vhd @@ -0,0 +1,127 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff6.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff6 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + enable : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +END lpm_ff6; + + +ARCHITECTURE SYN OF lpm_ff6 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (127 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enable : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(127 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 128 + ) + PORT MAP ( + enable => enable, + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "1" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 128 0 INPUT NODEFVAL data[127..0] +-- Retrieval info: USED_PORT: enable 0 0 0 0 INPUT NODEFVAL enable +-- Retrieval info: USED_PORT: q 0 0 128 0 OUTPUT NODEFVAL q[127..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 128 0 @q 0 0 128 0 +-- Retrieval info: CONNECT: @enable 0 0 0 0 enable 0 0 0 0 +-- Retrieval info: CONNECT: @data 0 0 128 0 data 0 0 128 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff6.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff6.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff6.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff6.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff6_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.bsf new file mode 100644 index 0000000..1e24640 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.bsf @@ -0,0 +1,79 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 144) + (text "lpm_fifoDZ" (rect 41 2 133 21)(font "Arial" (font_size 10))) + (text "inst" (rect 8 125 31 140)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 24 89 40)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "wrreq" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "wrreq" (rect 20 48 51 64)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "rdreq" (rect 0 0 34 16)(font "Arial" (font_size 8))) + (text "rdreq" (rect 20 64 49 80)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 88 57 104)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "aclr" (rect 0 0 24 16)(font "Arial" (font_size 8))) + (text "aclr" (rect 20 112 41 128)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 160 32) + (output) + (text "q[127..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 90 24 141 40)(font "Arial" (font_size 8))) + (line (pt 160 32)(pt 144 32)(line_width 3)) + ) + (drawing + (text "(ack)" (rect 51 67 76 81)(font "Arial" )) + (text "128 bits x 128 words" (rect 31 114 134 128)(font "Arial" )) + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 128)(line_width 1)) + (line (pt 144 128)(pt 16 128)(line_width 1)) + (line (pt 16 128)(pt 16 16)(line_width 1)) + (line (pt 16 108)(pt 144 108)(line_width 1)) + (line (pt 16 90)(pt 22 96)(line_width 1)) + (line (pt 22 96)(pt 16 102)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.qip new file mode 100644 index 0000000..5444627 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FIFO+" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_fifoDZ.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_fifoDZ.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_fifoDZ.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.vhd new file mode 100644 index 0000000..95486bb --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifoDZ.vhd @@ -0,0 +1,178 @@ +-- megafunction wizard: %LPM_FIFO+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: scfifo + +-- ============================================================ +-- File Name: lpm_fifoDZ.vhd +-- Megafunction Name(s): +-- scfifo +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY lpm_fifoDZ IS + PORT + ( + aclr : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + rdreq : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +END lpm_fifoDZ; + + +ARCHITECTURE SYN OF lpm_fifodz IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (127 DOWNTO 0); + + + + COMPONENT scfifo + GENERIC ( + add_ram_output_register : STRING; + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + overflow_checking : STRING; + underflow_checking : STRING; + use_eab : STRING + ); + PORT ( + rdreq : IN STD_LOGIC ; + aclr : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0); + wrreq : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(127 DOWNTO 0); + + scfifo_component : scfifo + GENERIC MAP ( + add_ram_output_register => "OFF", + intended_device_family => "Cyclone III", + lpm_numwords => 128, + lpm_showahead => "ON", + lpm_type => "scfifo", + lpm_width => 128, + lpm_widthu => 7, + overflow_checking => "OFF", + underflow_checking => "OFF", + use_eab => "ON" + ) + PORT MAP ( + rdreq => rdreq, + aclr => aclr, + clock => clock, + wrreq => wrreq, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "1" +-- Retrieval info: PRIVATE: Clock NUMERIC "0" +-- Retrieval info: PRIVATE: Depth NUMERIC "128" +-- Retrieval info: PRIVATE: Empty NUMERIC "0" +-- Retrieval info: PRIVATE: Full NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "0" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "1" +-- Retrieval info: PRIVATE: Optimize NUMERIC "2" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "1" +-- Retrieval info: PRIVATE: UsedW NUMERIC "0" +-- Retrieval info: PRIVATE: Width NUMERIC "128" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "0" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "128" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "1" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "0" +-- Retrieval info: CONSTANT: ADD_RAM_OUTPUT_REGISTER STRING "OFF" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "ON" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "scfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "7" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "OFF" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "OFF" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT NODEFVAL aclr +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 128 0 INPUT NODEFVAL data[127..0] +-- Retrieval info: USED_PORT: q 0 0 128 0 OUTPUT NODEFVAL q[127..0] +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq +-- Retrieval info: CONNECT: @data 0 0 128 0 data 0 0 128 0 +-- Retrieval info: CONNECT: q 0 0 128 0 @q 0 0 128 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.bsf new file mode 100644 index 0000000..61b485b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.bsf @@ -0,0 +1,102 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 168) + (text "lpm_fifo_dc0" (rect 44 1 128 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 152 25 164)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 26 77 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "wrreq" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "wrreq" (rect 20 50 45 63)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "wrclk" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "wrclk" (rect 26 66 48 79)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "rdreq" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "rdreq" (rect 20 98 44 111)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "rdclk" (rect 0 0 27 14)(font "Arial" (font_size 8))) + (text "rdclk" (rect 26 114 47 127)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 144) + (input) + (text "aclr" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "aclr" (rect 20 138 37 151)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)(line_width 1)) + ) + (port + (pt 160 72) + (output) + (text "wrusedw[8..0]" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "wrusedw[8..0]" (rect 69 66 132 79)(font "Arial" (font_size 8))) + (line (pt 160 72)(pt 144 72)(line_width 3)) + ) + (port + (pt 160 96) + (output) + (text "q[127..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 99 90 141 103)(font "Arial" (font_size 8))) + (line (pt 160 96)(pt 144 96)(line_width 3)) + ) + (port + (pt 160 120) + (output) + (text "rdempty" (rect 0 0 46 14)(font "Arial" (font_size 8))) + (text "rdempty" (rect 102 114 140 127)(font "Arial" (font_size 8))) + (line (pt 160 120)(pt 144 120)(line_width 1)) + ) + (drawing + (text "128 bits x 512 words" (rect 58 140 144 152)(font "Arial" )) + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 152)(line_width 1)) + (line (pt 144 152)(pt 16 152)(line_width 1)) + (line (pt 16 152)(pt 16 16)(line_width 1)) + (line (pt 16 84)(pt 144 84)(line_width 1)) + (line (pt 16 132)(pt 144 132)(line_width 1)) + (line (pt 16 66)(pt 22 72)(line_width 1)) + (line (pt 22 72)(pt 16 78)(line_width 1)) + (line (pt 16 114)(pt 22 120)(line_width 1)) + (line (pt 22 120)(pt 16 126)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.inc new file mode 100644 index 0000000..d29fb88 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.inc @@ -0,0 +1,30 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_fifo_dc0 +( + aclr, + data[127..0], + rdclk, + rdreq, + wrclk, + wrreq +) + +RETURNS ( + q[127..0], + rdempty, + wrusedw[8..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.qip new file mode 100644 index 0000000..e883724 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FIFO+" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_fifo_dc0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_fifo_dc0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_fifo_dc0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_fifo_dc0.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.vhd new file mode 100644 index 0000000..8646d9c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_fifo_dc0.vhd @@ -0,0 +1,203 @@ +-- megafunction wizard: %LPM_FIFO+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: dcfifo + +-- ============================================================ +-- File Name: lpm_fifo_dc0.vhd +-- Megafunction Name(s): +-- dcfifo +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY lpm_fifo_dc0 IS + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0); + rdempty : OUT STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (8 DOWNTO 0) + ); +END lpm_fifo_dc0; + + +ARCHITECTURE SYN OF lpm_fifo_dc0 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (8 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_VECTOR (127 DOWNTO 0); + + + + COMPONENT dcfifo + GENERIC ( + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + overflow_checking : STRING; + rdsync_delaypipe : NATURAL; + underflow_checking : STRING; + use_eab : STRING; + write_aclr_synch : STRING; + wrsync_delaypipe : NATURAL + ); + PORT ( + wrclk : IN STD_LOGIC ; + rdempty : OUT STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (8 DOWNTO 0); + aclr : IN STD_LOGIC ; + rdclk : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0); + wrreq : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + rdempty <= sub_wire0; + wrusedw <= sub_wire1(8 DOWNTO 0); + q <= sub_wire2(127 DOWNTO 0); + + dcfifo_component : dcfifo + GENERIC MAP ( + intended_device_family => "Cyclone III", + lpm_numwords => 512, + lpm_showahead => "OFF", + lpm_type => "dcfifo", + lpm_width => 128, + lpm_widthu => 9, + overflow_checking => "OFF", + rdsync_delaypipe => 6, + underflow_checking => "OFF", + use_eab => "ON", + write_aclr_synch => "ON", + wrsync_delaypipe => 6 + ) + PORT MAP ( + wrclk => wrclk, + rdreq => rdreq, + aclr => aclr, + rdclk => rdclk, + wrreq => wrreq, + data => data, + rdempty => sub_wire0, + wrusedw => sub_wire1, + q => sub_wire2 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "4" +-- Retrieval info: PRIVATE: Depth NUMERIC "512" +-- Retrieval info: PRIVATE: Empty NUMERIC "1" +-- Retrieval info: PRIVATE: Full NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "1" +-- Retrieval info: PRIVATE: Optimize NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "1" +-- Retrieval info: PRIVATE: UsedW NUMERIC "1" +-- Retrieval info: PRIVATE: Width NUMERIC "128" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "0" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "128" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "0" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "512" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "9" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "OFF" +-- Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "6" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "OFF" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "ON" +-- Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "6" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND aclr +-- Retrieval info: USED_PORT: data 0 0 128 0 INPUT NODEFVAL data[127..0] +-- Retrieval info: USED_PORT: q 0 0 128 0 OUTPUT NODEFVAL q[127..0] +-- Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL rdclk +-- Retrieval info: USED_PORT: rdempty 0 0 0 0 OUTPUT NODEFVAL rdempty +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq +-- Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL wrclk +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq +-- Retrieval info: USED_PORT: wrusedw 0 0 9 0 OUTPUT NODEFVAL wrusedw[8..0] +-- Retrieval info: CONNECT: @data 0 0 128 0 data 0 0 128 0 +-- Retrieval info: CONNECT: q 0 0 128 0 @q 0 0 128 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +-- Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +-- Retrieval info: CONNECT: rdempty 0 0 0 0 @rdempty 0 0 0 0 +-- Retrieval info: CONNECT: wrusedw 0 0 9 0 @wrusedw 0 0 9 0 +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.bsf new file mode 100644 index 0000000..ddb325c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.bsf @@ -0,0 +1,53 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 80) + (text "lpm_latch0" (rect 49 1 123 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "gate" (rect 0 0 24 14)(font "Arial" (font_size 8))) + (text "gate" (rect 20 42 41 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 160 32) + (output) + (text "q[31..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 105 26 141 39)(font "Arial" (font_size 8))) + (line (pt 160 32)(pt 144 32)(line_width 3)) + ) + (drawing + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 64)(line_width 1)) + (line (pt 144 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.qip new file mode 100644 index 0000000..1bda27a --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_LATCH" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_latch0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_latch0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_latch0.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.vhd new file mode 100644 index 0000000..1eda161 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch0.vhd @@ -0,0 +1,110 @@ +-- megafunction wizard: %LPM_LATCH% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_latch + +-- ============================================================ +-- File Name: lpm_latch0.vhd +-- Megafunction Name(s): +-- lpm_latch +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_latch0 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + gate : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_latch0; + + +ARCHITECTURE SYN OF lpm_latch0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT lpm_latch + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + gate : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(31 DOWNTO 0); + + lpm_latch_component : lpm_latch + GENERIC MAP ( + lpm_type => "LPM_LATCH", + lpm_width => 32 + ) + PORT MAP ( + data => data, + gate => gate, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: aclr NUMERIC "0" +-- Retrieval info: PRIVATE: aset NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_LATCH" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: gate 0 0 0 0 INPUT NODEFVAL gate +-- Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL q[31..0] +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +-- Retrieval info: CONNECT: @gate 0 0 0 0 gate 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch0.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.bsf new file mode 100644 index 0000000..7197b2f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.bsf @@ -0,0 +1,53 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 80) + (text "lpm_latch1" (rect 49 1 123 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "gate" (rect 0 0 24 14)(font "Arial" (font_size 8))) + (text "gate" (rect 20 42 41 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 160 32) + (output) + (text "q[31..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 105 26 141 39)(font "Arial" (font_size 8))) + (line (pt 160 32)(pt 144 32)(line_width 3)) + ) + (drawing + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 64)(line_width 1)) + (line (pt 144 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.qip new file mode 100644 index 0000000..bc53d50 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_LATCH" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_latch1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_latch1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_latch1.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.vhd new file mode 100644 index 0000000..0afc209 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_latch1.vhd @@ -0,0 +1,110 @@ +-- megafunction wizard: %LPM_LATCH% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_latch + +-- ============================================================ +-- File Name: lpm_latch1.vhd +-- Megafunction Name(s): +-- lpm_latch +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_latch1 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + gate : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_latch1; + + +ARCHITECTURE SYN OF lpm_latch1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT lpm_latch + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + gate : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(31 DOWNTO 0); + + lpm_latch_component : lpm_latch + GENERIC MAP ( + lpm_type => "LPM_LATCH", + lpm_width => 32 + ) + PORT MAP ( + data => data, + gate => gate, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: aclr NUMERIC "0" +-- Retrieval info: PRIVATE: aset NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_LATCH" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: gate 0 0 0 0 INPUT NODEFVAL gate +-- Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL q[31..0] +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +-- Retrieval info: CONNECT: @gate 0 0 0 0 gate 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.bsf new file mode 100644 index 0000000..ce1e27e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.bsf @@ -0,0 +1,83 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 152 128) + (text "lpm_mux0" (rect 50 2 120 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 112 25 124)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data3x[31..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data3x[31..0]" (rect 4 27 66 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data2x[31..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data2x[31..0]" (rect 4 43 66 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data1x[31..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data1x[31..0]" (rect 4 59 66 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data0x[31..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data0x[31..0]" (rect 4 75 66 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 91 27 104)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 1)) + ) + (port + (pt 80 128) + (input) + (text "sel[1..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[1..0]" (rect 84 115 121 128)(font "Arial" (font_size 8))) + (line (pt 80 128)(pt 80 116)(line_width 3)) + ) + (port + (pt 152 72) + (output) + (text "result[31..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "result[31..0]" (rect 92 59 147 72)(font "Arial" (font_size 8))) + (line (pt 152 72)(pt 88 72)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 120)(line_width 1)) + (line (pt 88 32)(pt 88 112)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 120)(pt 88 112)(line_width 1)) + (line (pt 72 98)(pt 78 104)(line_width 1)) + (line (pt 78 104)(pt 72 110)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.inc new file mode 100644 index 0000000..b0bc2be --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.inc @@ -0,0 +1,28 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_mux0 +( + clock, + data0x[31..0], + data1x[31..0], + data2x[31..0], + data3x[31..0], + sel[1..0] +) + +RETURNS ( + result[31..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.qip new file mode 100644 index 0000000..5e8e2b6 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux0.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.vhd new file mode 100644 index 0000000..9d641a4 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux0.vhd @@ -0,0 +1,251 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux0.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux0 IS + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_mux0; + + +ARCHITECTURE SYN OF lpm_mux0 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (3 DOWNTO 0, 31 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (31 DOWNTO 0); + +BEGIN + sub_wire5 <= data0x(31 DOWNTO 0); + sub_wire4 <= data1x(31 DOWNTO 0); + sub_wire3 <= data2x(31 DOWNTO 0); + result <= sub_wire0(31 DOWNTO 0); + sub_wire1 <= data3x(31 DOWNTO 0); + sub_wire2(3, 0) <= sub_wire1(0); + sub_wire2(3, 1) <= sub_wire1(1); + sub_wire2(3, 2) <= sub_wire1(2); + sub_wire2(3, 3) <= sub_wire1(3); + sub_wire2(3, 4) <= sub_wire1(4); + sub_wire2(3, 5) <= sub_wire1(5); + sub_wire2(3, 6) <= sub_wire1(6); + sub_wire2(3, 7) <= sub_wire1(7); + sub_wire2(3, 8) <= sub_wire1(8); + sub_wire2(3, 9) <= sub_wire1(9); + sub_wire2(3, 10) <= sub_wire1(10); + sub_wire2(3, 11) <= sub_wire1(11); + sub_wire2(3, 12) <= sub_wire1(12); + sub_wire2(3, 13) <= sub_wire1(13); + sub_wire2(3, 14) <= sub_wire1(14); + sub_wire2(3, 15) <= sub_wire1(15); + sub_wire2(3, 16) <= sub_wire1(16); + sub_wire2(3, 17) <= sub_wire1(17); + sub_wire2(3, 18) <= sub_wire1(18); + sub_wire2(3, 19) <= sub_wire1(19); + sub_wire2(3, 20) <= sub_wire1(20); + sub_wire2(3, 21) <= sub_wire1(21); + sub_wire2(3, 22) <= sub_wire1(22); + sub_wire2(3, 23) <= sub_wire1(23); + sub_wire2(3, 24) <= sub_wire1(24); + sub_wire2(3, 25) <= sub_wire1(25); + sub_wire2(3, 26) <= sub_wire1(26); + sub_wire2(3, 27) <= sub_wire1(27); + sub_wire2(3, 28) <= sub_wire1(28); + sub_wire2(3, 29) <= sub_wire1(29); + sub_wire2(3, 30) <= sub_wire1(30); + sub_wire2(3, 31) <= sub_wire1(31); + sub_wire2(2, 0) <= sub_wire3(0); + sub_wire2(2, 1) <= sub_wire3(1); + sub_wire2(2, 2) <= sub_wire3(2); + sub_wire2(2, 3) <= sub_wire3(3); + sub_wire2(2, 4) <= sub_wire3(4); + sub_wire2(2, 5) <= sub_wire3(5); + sub_wire2(2, 6) <= sub_wire3(6); + sub_wire2(2, 7) <= sub_wire3(7); + sub_wire2(2, 8) <= sub_wire3(8); + sub_wire2(2, 9) <= sub_wire3(9); + sub_wire2(2, 10) <= sub_wire3(10); + sub_wire2(2, 11) <= sub_wire3(11); + sub_wire2(2, 12) <= sub_wire3(12); + sub_wire2(2, 13) <= sub_wire3(13); + sub_wire2(2, 14) <= sub_wire3(14); + sub_wire2(2, 15) <= sub_wire3(15); + sub_wire2(2, 16) <= sub_wire3(16); + sub_wire2(2, 17) <= sub_wire3(17); + sub_wire2(2, 18) <= sub_wire3(18); + sub_wire2(2, 19) <= sub_wire3(19); + sub_wire2(2, 20) <= sub_wire3(20); + sub_wire2(2, 21) <= sub_wire3(21); + sub_wire2(2, 22) <= sub_wire3(22); + sub_wire2(2, 23) <= sub_wire3(23); + sub_wire2(2, 24) <= sub_wire3(24); + sub_wire2(2, 25) <= sub_wire3(25); + sub_wire2(2, 26) <= sub_wire3(26); + sub_wire2(2, 27) <= sub_wire3(27); + sub_wire2(2, 28) <= sub_wire3(28); + sub_wire2(2, 29) <= sub_wire3(29); + sub_wire2(2, 30) <= sub_wire3(30); + sub_wire2(2, 31) <= sub_wire3(31); + sub_wire2(1, 0) <= sub_wire4(0); + sub_wire2(1, 1) <= sub_wire4(1); + sub_wire2(1, 2) <= sub_wire4(2); + sub_wire2(1, 3) <= sub_wire4(3); + sub_wire2(1, 4) <= sub_wire4(4); + sub_wire2(1, 5) <= sub_wire4(5); + sub_wire2(1, 6) <= sub_wire4(6); + sub_wire2(1, 7) <= sub_wire4(7); + sub_wire2(1, 8) <= sub_wire4(8); + sub_wire2(1, 9) <= sub_wire4(9); + sub_wire2(1, 10) <= sub_wire4(10); + sub_wire2(1, 11) <= sub_wire4(11); + sub_wire2(1, 12) <= sub_wire4(12); + sub_wire2(1, 13) <= sub_wire4(13); + sub_wire2(1, 14) <= sub_wire4(14); + sub_wire2(1, 15) <= sub_wire4(15); + sub_wire2(1, 16) <= sub_wire4(16); + sub_wire2(1, 17) <= sub_wire4(17); + sub_wire2(1, 18) <= sub_wire4(18); + sub_wire2(1, 19) <= sub_wire4(19); + sub_wire2(1, 20) <= sub_wire4(20); + sub_wire2(1, 21) <= sub_wire4(21); + sub_wire2(1, 22) <= sub_wire4(22); + sub_wire2(1, 23) <= sub_wire4(23); + sub_wire2(1, 24) <= sub_wire4(24); + sub_wire2(1, 25) <= sub_wire4(25); + sub_wire2(1, 26) <= sub_wire4(26); + sub_wire2(1, 27) <= sub_wire4(27); + sub_wire2(1, 28) <= sub_wire4(28); + sub_wire2(1, 29) <= sub_wire4(29); + sub_wire2(1, 30) <= sub_wire4(30); + sub_wire2(1, 31) <= sub_wire4(31); + sub_wire2(0, 0) <= sub_wire5(0); + sub_wire2(0, 1) <= sub_wire5(1); + sub_wire2(0, 2) <= sub_wire5(2); + sub_wire2(0, 3) <= sub_wire5(3); + sub_wire2(0, 4) <= sub_wire5(4); + sub_wire2(0, 5) <= sub_wire5(5); + sub_wire2(0, 6) <= sub_wire5(6); + sub_wire2(0, 7) <= sub_wire5(7); + sub_wire2(0, 8) <= sub_wire5(8); + sub_wire2(0, 9) <= sub_wire5(9); + sub_wire2(0, 10) <= sub_wire5(10); + sub_wire2(0, 11) <= sub_wire5(11); + sub_wire2(0, 12) <= sub_wire5(12); + sub_wire2(0, 13) <= sub_wire5(13); + sub_wire2(0, 14) <= sub_wire5(14); + sub_wire2(0, 15) <= sub_wire5(15); + sub_wire2(0, 16) <= sub_wire5(16); + sub_wire2(0, 17) <= sub_wire5(17); + sub_wire2(0, 18) <= sub_wire5(18); + sub_wire2(0, 19) <= sub_wire5(19); + sub_wire2(0, 20) <= sub_wire5(20); + sub_wire2(0, 21) <= sub_wire5(21); + sub_wire2(0, 22) <= sub_wire5(22); + sub_wire2(0, 23) <= sub_wire5(23); + sub_wire2(0, 24) <= sub_wire5(24); + sub_wire2(0, 25) <= sub_wire5(25); + sub_wire2(0, 26) <= sub_wire5(26); + sub_wire2(0, 27) <= sub_wire5(27); + sub_wire2(0, 28) <= sub_wire5(28); + sub_wire2(0, 29) <= sub_wire5(29); + sub_wire2(0, 30) <= sub_wire5(30); + sub_wire2(0, 31) <= sub_wire5(31); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_pipeline => 4, + lpm_size => 4, + lpm_type => "LPM_MUX", + lpm_width => 32, + lpm_widths => 2 + ) + PORT MAP ( + sel => sel, + clock => clock, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "2" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data0x 0 0 32 0 INPUT NODEFVAL data0x[31..0] +-- Retrieval info: USED_PORT: data1x 0 0 32 0 INPUT NODEFVAL data1x[31..0] +-- Retrieval info: USED_PORT: data2x 0 0 32 0 INPUT NODEFVAL data2x[31..0] +-- Retrieval info: USED_PORT: data3x 0 0 32 0 INPUT NODEFVAL data3x[31..0] +-- Retrieval info: USED_PORT: result 0 0 32 0 OUTPUT NODEFVAL result[31..0] +-- Retrieval info: USED_PORT: sel 0 0 2 0 INPUT NODEFVAL sel[1..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: result 0 0 32 0 @result 0 0 32 0 +-- Retrieval info: CONNECT: @data 1 3 32 0 data3x 0 0 32 0 +-- Retrieval info: CONNECT: @data 1 2 32 0 data2x 0 0 32 0 +-- Retrieval info: CONNECT: @data 1 1 32 0 data1x 0 0 32 0 +-- Retrieval info: CONNECT: @data 1 0 32 0 data0x 0 0 32 0 +-- Retrieval info: CONNECT: @sel 0 0 2 0 sel 0 0 2 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.bsf new file mode 100644 index 0000000..24ee953 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.bsf @@ -0,0 +1,111 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 152 192) + (text "lpm_mux1" (rect 50 2 120 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 176 25 188)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data7x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data7x[15..0]" (rect 4 27 66 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data6x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data6x[15..0]" (rect 4 43 66 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data5x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data5x[15..0]" (rect 4 59 66 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data4x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data4x[15..0]" (rect 4 75 66 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data3x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data3x[15..0]" (rect 4 91 66 104)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data2x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data2x[15..0]" (rect 4 107 66 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 72 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data1x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data1x[15..0]" (rect 4 123 66 136)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 72 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data0x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data0x[15..0]" (rect 4 139 66 152)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 72 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 155 27 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 72 168)(line_width 1)) + ) + (port + (pt 80 192) + (input) + (text "sel[2..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[2..0]" (rect 84 179 121 192)(font "Arial" (font_size 8))) + (line (pt 80 192)(pt 80 180)(line_width 3)) + ) + (port + (pt 152 104) + (output) + (text "result[15..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "result[15..0]" (rect 92 91 147 104)(font "Arial" (font_size 8))) + (line (pt 152 104)(pt 88 104)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 184)(line_width 1)) + (line (pt 88 32)(pt 88 176)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 184)(pt 88 176)(line_width 1)) + (line (pt 72 162)(pt 78 168)(line_width 1)) + (line (pt 78 168)(pt 72 174)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.inc new file mode 100644 index 0000000..e2f94a4 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.inc @@ -0,0 +1,32 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_mux1 +( + clock, + data0x[15..0], + data1x[15..0], + data2x[15..0], + data3x[15..0], + data4x[15..0], + data5x[15..0], + data6x[15..0], + data7x[15..0], + sel[2..0] +) + +RETURNS ( + result[15..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.qip new file mode 100644 index 0000000..8a445b2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux1.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.vhd new file mode 100644 index 0000000..a9ad991 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux1.vhd @@ -0,0 +1,271 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux1.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux1 IS + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +END lpm_mux1; + + +ARCHITECTURE SYN OF lpm_mux1 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (7 DOWNTO 0, 15 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire9 : STD_LOGIC_VECTOR (15 DOWNTO 0); + +BEGIN + sub_wire9 <= data0x(15 DOWNTO 0); + sub_wire8 <= data1x(15 DOWNTO 0); + sub_wire7 <= data2x(15 DOWNTO 0); + sub_wire6 <= data3x(15 DOWNTO 0); + sub_wire5 <= data4x(15 DOWNTO 0); + sub_wire4 <= data5x(15 DOWNTO 0); + sub_wire3 <= data6x(15 DOWNTO 0); + result <= sub_wire0(15 DOWNTO 0); + sub_wire1 <= data7x(15 DOWNTO 0); + sub_wire2(7, 0) <= sub_wire1(0); + sub_wire2(7, 1) <= sub_wire1(1); + sub_wire2(7, 2) <= sub_wire1(2); + sub_wire2(7, 3) <= sub_wire1(3); + sub_wire2(7, 4) <= sub_wire1(4); + sub_wire2(7, 5) <= sub_wire1(5); + sub_wire2(7, 6) <= sub_wire1(6); + sub_wire2(7, 7) <= sub_wire1(7); + sub_wire2(7, 8) <= sub_wire1(8); + sub_wire2(7, 9) <= sub_wire1(9); + sub_wire2(7, 10) <= sub_wire1(10); + sub_wire2(7, 11) <= sub_wire1(11); + sub_wire2(7, 12) <= sub_wire1(12); + sub_wire2(7, 13) <= sub_wire1(13); + sub_wire2(7, 14) <= sub_wire1(14); + sub_wire2(7, 15) <= sub_wire1(15); + sub_wire2(6, 0) <= sub_wire3(0); + sub_wire2(6, 1) <= sub_wire3(1); + sub_wire2(6, 2) <= sub_wire3(2); + sub_wire2(6, 3) <= sub_wire3(3); + sub_wire2(6, 4) <= sub_wire3(4); + sub_wire2(6, 5) <= sub_wire3(5); + sub_wire2(6, 6) <= sub_wire3(6); + sub_wire2(6, 7) <= sub_wire3(7); + sub_wire2(6, 8) <= sub_wire3(8); + sub_wire2(6, 9) <= sub_wire3(9); + sub_wire2(6, 10) <= sub_wire3(10); + sub_wire2(6, 11) <= sub_wire3(11); + sub_wire2(6, 12) <= sub_wire3(12); + sub_wire2(6, 13) <= sub_wire3(13); + sub_wire2(6, 14) <= sub_wire3(14); + sub_wire2(6, 15) <= sub_wire3(15); + sub_wire2(5, 0) <= sub_wire4(0); + sub_wire2(5, 1) <= sub_wire4(1); + sub_wire2(5, 2) <= sub_wire4(2); + sub_wire2(5, 3) <= sub_wire4(3); + sub_wire2(5, 4) <= sub_wire4(4); + sub_wire2(5, 5) <= sub_wire4(5); + sub_wire2(5, 6) <= sub_wire4(6); + sub_wire2(5, 7) <= sub_wire4(7); + sub_wire2(5, 8) <= sub_wire4(8); + sub_wire2(5, 9) <= sub_wire4(9); + sub_wire2(5, 10) <= sub_wire4(10); + sub_wire2(5, 11) <= sub_wire4(11); + sub_wire2(5, 12) <= sub_wire4(12); + sub_wire2(5, 13) <= sub_wire4(13); + sub_wire2(5, 14) <= sub_wire4(14); + sub_wire2(5, 15) <= sub_wire4(15); + sub_wire2(4, 0) <= sub_wire5(0); + sub_wire2(4, 1) <= sub_wire5(1); + sub_wire2(4, 2) <= sub_wire5(2); + sub_wire2(4, 3) <= sub_wire5(3); + sub_wire2(4, 4) <= sub_wire5(4); + sub_wire2(4, 5) <= sub_wire5(5); + sub_wire2(4, 6) <= sub_wire5(6); + sub_wire2(4, 7) <= sub_wire5(7); + sub_wire2(4, 8) <= sub_wire5(8); + sub_wire2(4, 9) <= sub_wire5(9); + sub_wire2(4, 10) <= sub_wire5(10); + sub_wire2(4, 11) <= sub_wire5(11); + sub_wire2(4, 12) <= sub_wire5(12); + sub_wire2(4, 13) <= sub_wire5(13); + sub_wire2(4, 14) <= sub_wire5(14); + sub_wire2(4, 15) <= sub_wire5(15); + sub_wire2(3, 0) <= sub_wire6(0); + sub_wire2(3, 1) <= sub_wire6(1); + sub_wire2(3, 2) <= sub_wire6(2); + sub_wire2(3, 3) <= sub_wire6(3); + sub_wire2(3, 4) <= sub_wire6(4); + sub_wire2(3, 5) <= sub_wire6(5); + sub_wire2(3, 6) <= sub_wire6(6); + sub_wire2(3, 7) <= sub_wire6(7); + sub_wire2(3, 8) <= sub_wire6(8); + sub_wire2(3, 9) <= sub_wire6(9); + sub_wire2(3, 10) <= sub_wire6(10); + sub_wire2(3, 11) <= sub_wire6(11); + sub_wire2(3, 12) <= sub_wire6(12); + sub_wire2(3, 13) <= sub_wire6(13); + sub_wire2(3, 14) <= sub_wire6(14); + sub_wire2(3, 15) <= sub_wire6(15); + sub_wire2(2, 0) <= sub_wire7(0); + sub_wire2(2, 1) <= sub_wire7(1); + sub_wire2(2, 2) <= sub_wire7(2); + sub_wire2(2, 3) <= sub_wire7(3); + sub_wire2(2, 4) <= sub_wire7(4); + sub_wire2(2, 5) <= sub_wire7(5); + sub_wire2(2, 6) <= sub_wire7(6); + sub_wire2(2, 7) <= sub_wire7(7); + sub_wire2(2, 8) <= sub_wire7(8); + sub_wire2(2, 9) <= sub_wire7(9); + sub_wire2(2, 10) <= sub_wire7(10); + sub_wire2(2, 11) <= sub_wire7(11); + sub_wire2(2, 12) <= sub_wire7(12); + sub_wire2(2, 13) <= sub_wire7(13); + sub_wire2(2, 14) <= sub_wire7(14); + sub_wire2(2, 15) <= sub_wire7(15); + sub_wire2(1, 0) <= sub_wire8(0); + sub_wire2(1, 1) <= sub_wire8(1); + sub_wire2(1, 2) <= sub_wire8(2); + sub_wire2(1, 3) <= sub_wire8(3); + sub_wire2(1, 4) <= sub_wire8(4); + sub_wire2(1, 5) <= sub_wire8(5); + sub_wire2(1, 6) <= sub_wire8(6); + sub_wire2(1, 7) <= sub_wire8(7); + sub_wire2(1, 8) <= sub_wire8(8); + sub_wire2(1, 9) <= sub_wire8(9); + sub_wire2(1, 10) <= sub_wire8(10); + sub_wire2(1, 11) <= sub_wire8(11); + sub_wire2(1, 12) <= sub_wire8(12); + sub_wire2(1, 13) <= sub_wire8(13); + sub_wire2(1, 14) <= sub_wire8(14); + sub_wire2(1, 15) <= sub_wire8(15); + sub_wire2(0, 0) <= sub_wire9(0); + sub_wire2(0, 1) <= sub_wire9(1); + sub_wire2(0, 2) <= sub_wire9(2); + sub_wire2(0, 3) <= sub_wire9(3); + sub_wire2(0, 4) <= sub_wire9(4); + sub_wire2(0, 5) <= sub_wire9(5); + sub_wire2(0, 6) <= sub_wire9(6); + sub_wire2(0, 7) <= sub_wire9(7); + sub_wire2(0, 8) <= sub_wire9(8); + sub_wire2(0, 9) <= sub_wire9(9); + sub_wire2(0, 10) <= sub_wire9(10); + sub_wire2(0, 11) <= sub_wire9(11); + sub_wire2(0, 12) <= sub_wire9(12); + sub_wire2(0, 13) <= sub_wire9(13); + sub_wire2(0, 14) <= sub_wire9(14); + sub_wire2(0, 15) <= sub_wire9(15); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_pipeline => 4, + lpm_size => 8, + lpm_type => "LPM_MUX", + lpm_width => 16, + lpm_widths => 3 + ) + PORT MAP ( + sel => sel, + clock => clock, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "3" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data0x 0 0 16 0 INPUT NODEFVAL data0x[15..0] +-- Retrieval info: USED_PORT: data1x 0 0 16 0 INPUT NODEFVAL data1x[15..0] +-- Retrieval info: USED_PORT: data2x 0 0 16 0 INPUT NODEFVAL data2x[15..0] +-- Retrieval info: USED_PORT: data3x 0 0 16 0 INPUT NODEFVAL data3x[15..0] +-- Retrieval info: USED_PORT: data4x 0 0 16 0 INPUT NODEFVAL data4x[15..0] +-- Retrieval info: USED_PORT: data5x 0 0 16 0 INPUT NODEFVAL data5x[15..0] +-- Retrieval info: USED_PORT: data6x 0 0 16 0 INPUT NODEFVAL data6x[15..0] +-- Retrieval info: USED_PORT: data7x 0 0 16 0 INPUT NODEFVAL data7x[15..0] +-- Retrieval info: USED_PORT: result 0 0 16 0 OUTPUT NODEFVAL result[15..0] +-- Retrieval info: USED_PORT: sel 0 0 3 0 INPUT NODEFVAL sel[2..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: result 0 0 16 0 @result 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 7 16 0 data7x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 6 16 0 data6x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 5 16 0 data5x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 4 16 0 data4x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 3 16 0 data3x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 2 16 0 data2x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 1 16 0 data1x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 0 16 0 data0x 0 0 16 0 +-- Retrieval info: CONNECT: @sel 0 0 3 0 sel 0 0 3 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.bsf new file mode 100644 index 0000000..b37c425 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.bsf @@ -0,0 +1,167 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 320) + (text "lpm_mux2" (rect 50 2 120 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 304 25 316)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data15x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data15x[7..0]" (rect 4 27 66 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data14x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data14x[7..0]" (rect 4 43 66 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data13x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data13x[7..0]" (rect 4 59 66 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data12x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data12x[7..0]" (rect 4 75 66 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data11x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data11x[7..0]" (rect 4 91 66 104)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data10x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data10x[7..0]" (rect 4 107 66 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 72 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data9x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data9x[7..0]" (rect 4 123 60 136)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 72 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data8x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data8x[7..0]" (rect 4 139 60 152)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 72 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "data7x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data7x[7..0]" (rect 4 155 60 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 72 168)(line_width 3)) + ) + (port + (pt 0 184) + (input) + (text "data6x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data6x[7..0]" (rect 4 171 60 184)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 72 184)(line_width 3)) + ) + (port + (pt 0 200) + (input) + (text "data5x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data5x[7..0]" (rect 4 187 60 200)(font "Arial" (font_size 8))) + (line (pt 0 200)(pt 72 200)(line_width 3)) + ) + (port + (pt 0 216) + (input) + (text "data4x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data4x[7..0]" (rect 4 203 60 216)(font "Arial" (font_size 8))) + (line (pt 0 216)(pt 72 216)(line_width 3)) + ) + (port + (pt 0 232) + (input) + (text "data3x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data3x[7..0]" (rect 4 219 60 232)(font "Arial" (font_size 8))) + (line (pt 0 232)(pt 72 232)(line_width 3)) + ) + (port + (pt 0 248) + (input) + (text "data2x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data2x[7..0]" (rect 4 235 60 248)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 72 248)(line_width 3)) + ) + (port + (pt 0 264) + (input) + (text "data1x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data1x[7..0]" (rect 4 251 60 264)(font "Arial" (font_size 8))) + (line (pt 0 264)(pt 72 264)(line_width 3)) + ) + (port + (pt 0 280) + (input) + (text "data0x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data0x[7..0]" (rect 4 267 60 280)(font "Arial" (font_size 8))) + (line (pt 0 280)(pt 72 280)(line_width 3)) + ) + (port + (pt 0 296) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 283 27 296)(font "Arial" (font_size 8))) + (line (pt 0 296)(pt 72 296)(line_width 1)) + ) + (port + (pt 80 320) + (input) + (text "sel[3..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[3..0]" (rect 84 307 121 320)(font "Arial" (font_size 8))) + (line (pt 80 320)(pt 80 308)(line_width 3)) + ) + (port + (pt 144 168) + (output) + (text "result[7..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[7..0]" (rect 90 155 139 168)(font "Arial" (font_size 8))) + (line (pt 144 168)(pt 88 168)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 312)(line_width 1)) + (line (pt 88 32)(pt 88 304)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 312)(pt 88 304)(line_width 1)) + (line (pt 72 290)(pt 78 296)(line_width 1)) + (line (pt 78 296)(pt 72 302)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.inc new file mode 100644 index 0000000..2334c7e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.inc @@ -0,0 +1,40 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_mux2 +( + clock, + data0x[7..0], + data10x[7..0], + data11x[7..0], + data12x[7..0], + data13x[7..0], + data14x[7..0], + data15x[7..0], + data1x[7..0], + data2x[7..0], + data3x[7..0], + data4x[7..0], + data5x[7..0], + data6x[7..0], + data7x[7..0], + data8x[7..0], + data9x[7..0], + sel[3..0] +) + +RETURNS ( + result[7..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.qip new file mode 100644 index 0000000..7b5db74 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux2.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux2.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.vhd new file mode 100644 index 0000000..cfece2e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux2.vhd @@ -0,0 +1,311 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux2.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux2 IS + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data10x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data11x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data12x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data13x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data14x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data15x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data8x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data9x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END lpm_mux2; + + +ARCHITECTURE SYN OF lpm_mux2 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (15 DOWNTO 0, 7 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire9 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire10 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire11 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire12 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire13 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire14 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire15 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire16 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire17 : STD_LOGIC_VECTOR (7 DOWNTO 0); + +BEGIN + sub_wire17 <= data0x(7 DOWNTO 0); + sub_wire16 <= data1x(7 DOWNTO 0); + sub_wire15 <= data2x(7 DOWNTO 0); + sub_wire14 <= data3x(7 DOWNTO 0); + sub_wire13 <= data4x(7 DOWNTO 0); + sub_wire12 <= data5x(7 DOWNTO 0); + sub_wire11 <= data6x(7 DOWNTO 0); + sub_wire10 <= data7x(7 DOWNTO 0); + sub_wire9 <= data8x(7 DOWNTO 0); + sub_wire8 <= data9x(7 DOWNTO 0); + sub_wire7 <= data10x(7 DOWNTO 0); + sub_wire6 <= data11x(7 DOWNTO 0); + sub_wire5 <= data12x(7 DOWNTO 0); + sub_wire4 <= data13x(7 DOWNTO 0); + sub_wire3 <= data14x(7 DOWNTO 0); + result <= sub_wire0(7 DOWNTO 0); + sub_wire1 <= data15x(7 DOWNTO 0); + sub_wire2(15, 0) <= sub_wire1(0); + sub_wire2(15, 1) <= sub_wire1(1); + sub_wire2(15, 2) <= sub_wire1(2); + sub_wire2(15, 3) <= sub_wire1(3); + sub_wire2(15, 4) <= sub_wire1(4); + sub_wire2(15, 5) <= sub_wire1(5); + sub_wire2(15, 6) <= sub_wire1(6); + sub_wire2(15, 7) <= sub_wire1(7); + sub_wire2(14, 0) <= sub_wire3(0); + sub_wire2(14, 1) <= sub_wire3(1); + sub_wire2(14, 2) <= sub_wire3(2); + sub_wire2(14, 3) <= sub_wire3(3); + sub_wire2(14, 4) <= sub_wire3(4); + sub_wire2(14, 5) <= sub_wire3(5); + sub_wire2(14, 6) <= sub_wire3(6); + sub_wire2(14, 7) <= sub_wire3(7); + sub_wire2(13, 0) <= sub_wire4(0); + sub_wire2(13, 1) <= sub_wire4(1); + sub_wire2(13, 2) <= sub_wire4(2); + sub_wire2(13, 3) <= sub_wire4(3); + sub_wire2(13, 4) <= sub_wire4(4); + sub_wire2(13, 5) <= sub_wire4(5); + sub_wire2(13, 6) <= sub_wire4(6); + sub_wire2(13, 7) <= sub_wire4(7); + sub_wire2(12, 0) <= sub_wire5(0); + sub_wire2(12, 1) <= sub_wire5(1); + sub_wire2(12, 2) <= sub_wire5(2); + sub_wire2(12, 3) <= sub_wire5(3); + sub_wire2(12, 4) <= sub_wire5(4); + sub_wire2(12, 5) <= sub_wire5(5); + sub_wire2(12, 6) <= sub_wire5(6); + sub_wire2(12, 7) <= sub_wire5(7); + sub_wire2(11, 0) <= sub_wire6(0); + sub_wire2(11, 1) <= sub_wire6(1); + sub_wire2(11, 2) <= sub_wire6(2); + sub_wire2(11, 3) <= sub_wire6(3); + sub_wire2(11, 4) <= sub_wire6(4); + sub_wire2(11, 5) <= sub_wire6(5); + sub_wire2(11, 6) <= sub_wire6(6); + sub_wire2(11, 7) <= sub_wire6(7); + sub_wire2(10, 0) <= sub_wire7(0); + sub_wire2(10, 1) <= sub_wire7(1); + sub_wire2(10, 2) <= sub_wire7(2); + sub_wire2(10, 3) <= sub_wire7(3); + sub_wire2(10, 4) <= sub_wire7(4); + sub_wire2(10, 5) <= sub_wire7(5); + sub_wire2(10, 6) <= sub_wire7(6); + sub_wire2(10, 7) <= sub_wire7(7); + sub_wire2(9, 0) <= sub_wire8(0); + sub_wire2(9, 1) <= sub_wire8(1); + sub_wire2(9, 2) <= sub_wire8(2); + sub_wire2(9, 3) <= sub_wire8(3); + sub_wire2(9, 4) <= sub_wire8(4); + sub_wire2(9, 5) <= sub_wire8(5); + sub_wire2(9, 6) <= sub_wire8(6); + sub_wire2(9, 7) <= sub_wire8(7); + sub_wire2(8, 0) <= sub_wire9(0); + sub_wire2(8, 1) <= sub_wire9(1); + sub_wire2(8, 2) <= sub_wire9(2); + sub_wire2(8, 3) <= sub_wire9(3); + sub_wire2(8, 4) <= sub_wire9(4); + sub_wire2(8, 5) <= sub_wire9(5); + sub_wire2(8, 6) <= sub_wire9(6); + sub_wire2(8, 7) <= sub_wire9(7); + sub_wire2(7, 0) <= sub_wire10(0); + sub_wire2(7, 1) <= sub_wire10(1); + sub_wire2(7, 2) <= sub_wire10(2); + sub_wire2(7, 3) <= sub_wire10(3); + sub_wire2(7, 4) <= sub_wire10(4); + sub_wire2(7, 5) <= sub_wire10(5); + sub_wire2(7, 6) <= sub_wire10(6); + sub_wire2(7, 7) <= sub_wire10(7); + sub_wire2(6, 0) <= sub_wire11(0); + sub_wire2(6, 1) <= sub_wire11(1); + sub_wire2(6, 2) <= sub_wire11(2); + sub_wire2(6, 3) <= sub_wire11(3); + sub_wire2(6, 4) <= sub_wire11(4); + sub_wire2(6, 5) <= sub_wire11(5); + sub_wire2(6, 6) <= sub_wire11(6); + sub_wire2(6, 7) <= sub_wire11(7); + sub_wire2(5, 0) <= sub_wire12(0); + sub_wire2(5, 1) <= sub_wire12(1); + sub_wire2(5, 2) <= sub_wire12(2); + sub_wire2(5, 3) <= sub_wire12(3); + sub_wire2(5, 4) <= sub_wire12(4); + sub_wire2(5, 5) <= sub_wire12(5); + sub_wire2(5, 6) <= sub_wire12(6); + sub_wire2(5, 7) <= sub_wire12(7); + sub_wire2(4, 0) <= sub_wire13(0); + sub_wire2(4, 1) <= sub_wire13(1); + sub_wire2(4, 2) <= sub_wire13(2); + sub_wire2(4, 3) <= sub_wire13(3); + sub_wire2(4, 4) <= sub_wire13(4); + sub_wire2(4, 5) <= sub_wire13(5); + sub_wire2(4, 6) <= sub_wire13(6); + sub_wire2(4, 7) <= sub_wire13(7); + sub_wire2(3, 0) <= sub_wire14(0); + sub_wire2(3, 1) <= sub_wire14(1); + sub_wire2(3, 2) <= sub_wire14(2); + sub_wire2(3, 3) <= sub_wire14(3); + sub_wire2(3, 4) <= sub_wire14(4); + sub_wire2(3, 5) <= sub_wire14(5); + sub_wire2(3, 6) <= sub_wire14(6); + sub_wire2(3, 7) <= sub_wire14(7); + sub_wire2(2, 0) <= sub_wire15(0); + sub_wire2(2, 1) <= sub_wire15(1); + sub_wire2(2, 2) <= sub_wire15(2); + sub_wire2(2, 3) <= sub_wire15(3); + sub_wire2(2, 4) <= sub_wire15(4); + sub_wire2(2, 5) <= sub_wire15(5); + sub_wire2(2, 6) <= sub_wire15(6); + sub_wire2(2, 7) <= sub_wire15(7); + sub_wire2(1, 0) <= sub_wire16(0); + sub_wire2(1, 1) <= sub_wire16(1); + sub_wire2(1, 2) <= sub_wire16(2); + sub_wire2(1, 3) <= sub_wire16(3); + sub_wire2(1, 4) <= sub_wire16(4); + sub_wire2(1, 5) <= sub_wire16(5); + sub_wire2(1, 6) <= sub_wire16(6); + sub_wire2(1, 7) <= sub_wire16(7); + sub_wire2(0, 0) <= sub_wire17(0); + sub_wire2(0, 1) <= sub_wire17(1); + sub_wire2(0, 2) <= sub_wire17(2); + sub_wire2(0, 3) <= sub_wire17(3); + sub_wire2(0, 4) <= sub_wire17(4); + sub_wire2(0, 5) <= sub_wire17(5); + sub_wire2(0, 6) <= sub_wire17(6); + sub_wire2(0, 7) <= sub_wire17(7); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_pipeline => 2, + lpm_size => 16, + lpm_type => "LPM_MUX", + lpm_width => 8, + lpm_widths => 4 + ) + PORT MAP ( + sel => sel, + clock => clock, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "4" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data0x 0 0 8 0 INPUT NODEFVAL data0x[7..0] +-- Retrieval info: USED_PORT: data10x 0 0 8 0 INPUT NODEFVAL data10x[7..0] +-- Retrieval info: USED_PORT: data11x 0 0 8 0 INPUT NODEFVAL data11x[7..0] +-- Retrieval info: USED_PORT: data12x 0 0 8 0 INPUT NODEFVAL data12x[7..0] +-- Retrieval info: USED_PORT: data13x 0 0 8 0 INPUT NODEFVAL data13x[7..0] +-- Retrieval info: USED_PORT: data14x 0 0 8 0 INPUT NODEFVAL data14x[7..0] +-- Retrieval info: USED_PORT: data15x 0 0 8 0 INPUT NODEFVAL data15x[7..0] +-- Retrieval info: USED_PORT: data1x 0 0 8 0 INPUT NODEFVAL data1x[7..0] +-- Retrieval info: USED_PORT: data2x 0 0 8 0 INPUT NODEFVAL data2x[7..0] +-- Retrieval info: USED_PORT: data3x 0 0 8 0 INPUT NODEFVAL data3x[7..0] +-- Retrieval info: USED_PORT: data4x 0 0 8 0 INPUT NODEFVAL data4x[7..0] +-- Retrieval info: USED_PORT: data5x 0 0 8 0 INPUT NODEFVAL data5x[7..0] +-- Retrieval info: USED_PORT: data6x 0 0 8 0 INPUT NODEFVAL data6x[7..0] +-- Retrieval info: USED_PORT: data7x 0 0 8 0 INPUT NODEFVAL data7x[7..0] +-- Retrieval info: USED_PORT: data8x 0 0 8 0 INPUT NODEFVAL data8x[7..0] +-- Retrieval info: USED_PORT: data9x 0 0 8 0 INPUT NODEFVAL data9x[7..0] +-- Retrieval info: USED_PORT: result 0 0 8 0 OUTPUT NODEFVAL result[7..0] +-- Retrieval info: USED_PORT: sel 0 0 4 0 INPUT NODEFVAL sel[3..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: result 0 0 8 0 @result 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 15 8 0 data15x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 14 8 0 data14x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 13 8 0 data13x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 12 8 0 data12x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 11 8 0 data11x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 10 8 0 data10x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 9 8 0 data9x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 8 8 0 data8x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 7 8 0 data7x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 6 8 0 data6x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 5 8 0 data5x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 4 8 0 data4x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 3 8 0 data3x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 2 8 0 data2x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 1 8 0 data1x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 0 8 0 data0x 0 0 8 0 +-- Retrieval info: CONNECT: @sel 0 0 4 0 sel 0 0 4 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.bsf new file mode 100644 index 0000000..c389543 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.bsf @@ -0,0 +1,60 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 80) + (text "lpm_mux3" (rect 10 2 80 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data1" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "data1" (rect 4 27 31 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 32 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "data0" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "data0" (rect 4 43 31 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 32 56)(line_width 1)) + ) + (port + (pt 40 80) + (input) + (text "sel" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "sel" (rect 44 67 57 80)(font "Arial" (font_size 8))) + (line (pt 40 80)(pt 40 68)(line_width 1)) + ) + (port + (pt 80 48) + (output) + (text "result" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "result" (rect 50 35 75 48)(font "Arial" (font_size 8))) + (line (pt 80 48)(pt 48 48)(line_width 1)) + ) + (drawing + (line (pt 32 24)(pt 32 72)(line_width 1)) + (line (pt 48 32)(pt 48 64)(line_width 1)) + (line (pt 32 24)(pt 48 32)(line_width 1)) + (line (pt 32 72)(pt 48 64)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.qip new file mode 100644 index 0000000..ca1e672 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux3.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.vhd new file mode 100644 index 0000000..b975686 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux3.vhd @@ -0,0 +1,115 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux3.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux3 IS + PORT + ( + data0 : IN STD_LOGIC ; + data1 : IN STD_LOGIC ; + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC + ); +END lpm_mux3; + + +ARCHITECTURE SYN OF lpm_mux3 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_2D (1 DOWNTO 0, 0 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC ; + +BEGIN + sub_wire6 <= data0; + sub_wire1 <= sub_wire0(0); + result <= sub_wire1; + sub_wire2 <= sel; + sub_wire3(0) <= sub_wire2; + sub_wire4 <= data1; + sub_wire5(1, 0) <= sub_wire4; + sub_wire5(0, 0) <= sub_wire6; + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_size => 2, + lpm_type => "LPM_MUX", + lpm_width => 1, + lpm_widths => 1 + ) + PORT MAP ( + sel => sub_wire3, + data => sub_wire5, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "1" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +-- Retrieval info: USED_PORT: data0 0 0 0 0 INPUT NODEFVAL data0 +-- Retrieval info: USED_PORT: data1 0 0 0 0 INPUT NODEFVAL data1 +-- Retrieval info: USED_PORT: result 0 0 0 0 OUTPUT NODEFVAL result +-- Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL sel +-- Retrieval info: CONNECT: result 0 0 0 0 @result 0 0 1 0 +-- Retrieval info: CONNECT: @data 1 1 1 0 data1 0 0 0 0 +-- Retrieval info: CONNECT: @data 1 0 1 0 data0 0 0 0 0 +-- Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.bsf new file mode 100644 index 0000000..a1c9ca0 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.bsf @@ -0,0 +1,60 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 136 80) + (text "lpm_mux4" (rect 42 2 112 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data1x[6..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data1x[6..0]" (rect 4 27 60 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 64 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data0x[6..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data0x[6..0]" (rect 4 43 60 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 64 56)(line_width 3)) + ) + (port + (pt 72 80) + (input) + (text "sel" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "sel" (rect 76 67 89 80)(font "Arial" (font_size 8))) + (line (pt 72 80)(pt 72 68)(line_width 1)) + ) + (port + (pt 136 48) + (output) + (text "result[6..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[6..0]" (rect 82 35 131 48)(font "Arial" (font_size 8))) + (line (pt 136 48)(pt 80 48)(line_width 3)) + ) + (drawing + (line (pt 64 24)(pt 64 72)(line_width 1)) + (line (pt 80 32)(pt 80 64)(line_width 1)) + (line (pt 64 24)(pt 80 32)(line_width 1)) + (line (pt 64 72)(pt 80 64)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.qip new file mode 100644 index 0000000..7712e39 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux4.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux4.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.vhd new file mode 100644 index 0000000..854a491 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux4.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux4.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux4 IS + PORT + ( + data0x : IN STD_LOGIC_VECTOR (6 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (6 DOWNTO 0); + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC_VECTOR (6 DOWNTO 0) + ); +END lpm_mux4; + + +ARCHITECTURE SYN OF lpm_mux4 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (6 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (6 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_2D (1 DOWNTO 0, 6 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (6 DOWNTO 0); + +BEGIN + sub_wire5 <= data0x(6 DOWNTO 0); + result <= sub_wire0(6 DOWNTO 0); + sub_wire1 <= sel; + sub_wire2(0) <= sub_wire1; + sub_wire3 <= data1x(6 DOWNTO 0); + sub_wire4(1, 0) <= sub_wire3(0); + sub_wire4(1, 1) <= sub_wire3(1); + sub_wire4(1, 2) <= sub_wire3(2); + sub_wire4(1, 3) <= sub_wire3(3); + sub_wire4(1, 4) <= sub_wire3(4); + sub_wire4(1, 5) <= sub_wire3(5); + sub_wire4(1, 6) <= sub_wire3(6); + sub_wire4(0, 0) <= sub_wire5(0); + sub_wire4(0, 1) <= sub_wire5(1); + sub_wire4(0, 2) <= sub_wire5(2); + sub_wire4(0, 3) <= sub_wire5(3); + sub_wire4(0, 4) <= sub_wire5(4); + sub_wire4(0, 5) <= sub_wire5(5); + sub_wire4(0, 6) <= sub_wire5(6); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_size => 2, + lpm_type => "LPM_MUX", + lpm_width => 7, + lpm_widths => 1 + ) + PORT MAP ( + sel => sub_wire2, + data => sub_wire4, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "7" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +-- Retrieval info: USED_PORT: data0x 0 0 7 0 INPUT NODEFVAL data0x[6..0] +-- Retrieval info: USED_PORT: data1x 0 0 7 0 INPUT NODEFVAL data1x[6..0] +-- Retrieval info: USED_PORT: result 0 0 7 0 OUTPUT NODEFVAL result[6..0] +-- Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL sel +-- Retrieval info: CONNECT: result 0 0 7 0 @result 0 0 7 0 +-- Retrieval info: CONNECT: @data 1 1 7 0 data1x 0 0 7 0 +-- Retrieval info: CONNECT: @data 1 0 7 0 data0x 0 0 7 0 +-- Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.bsf new file mode 100644 index 0000000..e63ce50 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.bsf @@ -0,0 +1,74 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 152 112) + (text "lpm_mux5" (rect 50 2 120 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 96 25 108)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data3x[63..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data3x[63..0]" (rect 4 27 66 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data2x[63..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data2x[63..0]" (rect 4 43 66 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data1x[63..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data1x[63..0]" (rect 4 59 66 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data0x[63..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data0x[63..0]" (rect 4 75 66 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 80 112) + (input) + (text "sel[1..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[1..0]" (rect 84 99 121 112)(font "Arial" (font_size 8))) + (line (pt 80 112)(pt 80 100)(line_width 3)) + ) + (port + (pt 152 64) + (output) + (text "result[63..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "result[63..0]" (rect 92 51 147 64)(font "Arial" (font_size 8))) + (line (pt 152 64)(pt 88 64)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 104)(line_width 1)) + (line (pt 88 32)(pt 88 96)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 104)(pt 88 96)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.inc new file mode 100644 index 0000000..a063f55 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.inc @@ -0,0 +1,27 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_mux5 +( + data0x[63..0], + data1x[63..0], + data2x[63..0], + data3x[63..0], + sel[1..0] +) + +RETURNS ( + result[63..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.qip new file mode 100644 index 0000000..08b2e74 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux5.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux5.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux5.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux5.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.vhd new file mode 100644 index 0000000..1d35347 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux5.vhd @@ -0,0 +1,373 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux5.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux5 IS + PORT + ( + data0x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (63 DOWNTO 0) + ); +END lpm_mux5; + + +ARCHITECTURE SYN OF lpm_mux5 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (63 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (63 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (3 DOWNTO 0, 63 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (63 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (63 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (63 DOWNTO 0); + +BEGIN + sub_wire5 <= data0x(63 DOWNTO 0); + sub_wire4 <= data1x(63 DOWNTO 0); + sub_wire3 <= data2x(63 DOWNTO 0); + result <= sub_wire0(63 DOWNTO 0); + sub_wire1 <= data3x(63 DOWNTO 0); + sub_wire2(3, 0) <= sub_wire1(0); + sub_wire2(3, 1) <= sub_wire1(1); + sub_wire2(3, 2) <= sub_wire1(2); + sub_wire2(3, 3) <= sub_wire1(3); + sub_wire2(3, 4) <= sub_wire1(4); + sub_wire2(3, 5) <= sub_wire1(5); + sub_wire2(3, 6) <= sub_wire1(6); + sub_wire2(3, 7) <= sub_wire1(7); + sub_wire2(3, 8) <= sub_wire1(8); + sub_wire2(3, 9) <= sub_wire1(9); + sub_wire2(3, 10) <= sub_wire1(10); + sub_wire2(3, 11) <= sub_wire1(11); + sub_wire2(3, 12) <= sub_wire1(12); + sub_wire2(3, 13) <= sub_wire1(13); + sub_wire2(3, 14) <= sub_wire1(14); + sub_wire2(3, 15) <= sub_wire1(15); + sub_wire2(3, 16) <= sub_wire1(16); + sub_wire2(3, 17) <= sub_wire1(17); + sub_wire2(3, 18) <= sub_wire1(18); + sub_wire2(3, 19) <= sub_wire1(19); + sub_wire2(3, 20) <= sub_wire1(20); + sub_wire2(3, 21) <= sub_wire1(21); + sub_wire2(3, 22) <= sub_wire1(22); + sub_wire2(3, 23) <= sub_wire1(23); + sub_wire2(3, 24) <= sub_wire1(24); + sub_wire2(3, 25) <= sub_wire1(25); + sub_wire2(3, 26) <= sub_wire1(26); + sub_wire2(3, 27) <= sub_wire1(27); + sub_wire2(3, 28) <= sub_wire1(28); + sub_wire2(3, 29) <= sub_wire1(29); + sub_wire2(3, 30) <= sub_wire1(30); + sub_wire2(3, 31) <= sub_wire1(31); + sub_wire2(3, 32) <= sub_wire1(32); + sub_wire2(3, 33) <= sub_wire1(33); + sub_wire2(3, 34) <= sub_wire1(34); + sub_wire2(3, 35) <= sub_wire1(35); + sub_wire2(3, 36) <= sub_wire1(36); + sub_wire2(3, 37) <= sub_wire1(37); + sub_wire2(3, 38) <= sub_wire1(38); + sub_wire2(3, 39) <= sub_wire1(39); + sub_wire2(3, 40) <= sub_wire1(40); + sub_wire2(3, 41) <= sub_wire1(41); + sub_wire2(3, 42) <= sub_wire1(42); + sub_wire2(3, 43) <= sub_wire1(43); + sub_wire2(3, 44) <= sub_wire1(44); + sub_wire2(3, 45) <= sub_wire1(45); + sub_wire2(3, 46) <= sub_wire1(46); + sub_wire2(3, 47) <= sub_wire1(47); + sub_wire2(3, 48) <= sub_wire1(48); + sub_wire2(3, 49) <= sub_wire1(49); + sub_wire2(3, 50) <= sub_wire1(50); + sub_wire2(3, 51) <= sub_wire1(51); + sub_wire2(3, 52) <= sub_wire1(52); + sub_wire2(3, 53) <= sub_wire1(53); + sub_wire2(3, 54) <= sub_wire1(54); + sub_wire2(3, 55) <= sub_wire1(55); + sub_wire2(3, 56) <= sub_wire1(56); + sub_wire2(3, 57) <= sub_wire1(57); + sub_wire2(3, 58) <= sub_wire1(58); + sub_wire2(3, 59) <= sub_wire1(59); + sub_wire2(3, 60) <= sub_wire1(60); + sub_wire2(3, 61) <= sub_wire1(61); + sub_wire2(3, 62) <= sub_wire1(62); + sub_wire2(3, 63) <= sub_wire1(63); + sub_wire2(2, 0) <= sub_wire3(0); + sub_wire2(2, 1) <= sub_wire3(1); + sub_wire2(2, 2) <= sub_wire3(2); + sub_wire2(2, 3) <= sub_wire3(3); + sub_wire2(2, 4) <= sub_wire3(4); + sub_wire2(2, 5) <= sub_wire3(5); + sub_wire2(2, 6) <= sub_wire3(6); + sub_wire2(2, 7) <= sub_wire3(7); + sub_wire2(2, 8) <= sub_wire3(8); + sub_wire2(2, 9) <= sub_wire3(9); + sub_wire2(2, 10) <= sub_wire3(10); + sub_wire2(2, 11) <= sub_wire3(11); + sub_wire2(2, 12) <= sub_wire3(12); + sub_wire2(2, 13) <= sub_wire3(13); + sub_wire2(2, 14) <= sub_wire3(14); + sub_wire2(2, 15) <= sub_wire3(15); + sub_wire2(2, 16) <= sub_wire3(16); + sub_wire2(2, 17) <= sub_wire3(17); + sub_wire2(2, 18) <= sub_wire3(18); + sub_wire2(2, 19) <= sub_wire3(19); + sub_wire2(2, 20) <= sub_wire3(20); + sub_wire2(2, 21) <= sub_wire3(21); + sub_wire2(2, 22) <= sub_wire3(22); + sub_wire2(2, 23) <= sub_wire3(23); + sub_wire2(2, 24) <= sub_wire3(24); + sub_wire2(2, 25) <= sub_wire3(25); + sub_wire2(2, 26) <= sub_wire3(26); + sub_wire2(2, 27) <= sub_wire3(27); + sub_wire2(2, 28) <= sub_wire3(28); + sub_wire2(2, 29) <= sub_wire3(29); + sub_wire2(2, 30) <= sub_wire3(30); + sub_wire2(2, 31) <= sub_wire3(31); + sub_wire2(2, 32) <= sub_wire3(32); + sub_wire2(2, 33) <= sub_wire3(33); + sub_wire2(2, 34) <= sub_wire3(34); + sub_wire2(2, 35) <= sub_wire3(35); + sub_wire2(2, 36) <= sub_wire3(36); + sub_wire2(2, 37) <= sub_wire3(37); + sub_wire2(2, 38) <= sub_wire3(38); + sub_wire2(2, 39) <= sub_wire3(39); + sub_wire2(2, 40) <= sub_wire3(40); + sub_wire2(2, 41) <= sub_wire3(41); + sub_wire2(2, 42) <= sub_wire3(42); + sub_wire2(2, 43) <= sub_wire3(43); + sub_wire2(2, 44) <= sub_wire3(44); + sub_wire2(2, 45) <= sub_wire3(45); + sub_wire2(2, 46) <= sub_wire3(46); + sub_wire2(2, 47) <= sub_wire3(47); + sub_wire2(2, 48) <= sub_wire3(48); + sub_wire2(2, 49) <= sub_wire3(49); + sub_wire2(2, 50) <= sub_wire3(50); + sub_wire2(2, 51) <= sub_wire3(51); + sub_wire2(2, 52) <= sub_wire3(52); + sub_wire2(2, 53) <= sub_wire3(53); + sub_wire2(2, 54) <= sub_wire3(54); + sub_wire2(2, 55) <= sub_wire3(55); + sub_wire2(2, 56) <= sub_wire3(56); + sub_wire2(2, 57) <= sub_wire3(57); + sub_wire2(2, 58) <= sub_wire3(58); + sub_wire2(2, 59) <= sub_wire3(59); + sub_wire2(2, 60) <= sub_wire3(60); + sub_wire2(2, 61) <= sub_wire3(61); + sub_wire2(2, 62) <= sub_wire3(62); + sub_wire2(2, 63) <= sub_wire3(63); + sub_wire2(1, 0) <= sub_wire4(0); + sub_wire2(1, 1) <= sub_wire4(1); + sub_wire2(1, 2) <= sub_wire4(2); + sub_wire2(1, 3) <= sub_wire4(3); + sub_wire2(1, 4) <= sub_wire4(4); + sub_wire2(1, 5) <= sub_wire4(5); + sub_wire2(1, 6) <= sub_wire4(6); + sub_wire2(1, 7) <= sub_wire4(7); + sub_wire2(1, 8) <= sub_wire4(8); + sub_wire2(1, 9) <= sub_wire4(9); + sub_wire2(1, 10) <= sub_wire4(10); + sub_wire2(1, 11) <= sub_wire4(11); + sub_wire2(1, 12) <= sub_wire4(12); + sub_wire2(1, 13) <= sub_wire4(13); + sub_wire2(1, 14) <= sub_wire4(14); + sub_wire2(1, 15) <= sub_wire4(15); + sub_wire2(1, 16) <= sub_wire4(16); + sub_wire2(1, 17) <= sub_wire4(17); + sub_wire2(1, 18) <= sub_wire4(18); + sub_wire2(1, 19) <= sub_wire4(19); + sub_wire2(1, 20) <= sub_wire4(20); + sub_wire2(1, 21) <= sub_wire4(21); + sub_wire2(1, 22) <= sub_wire4(22); + sub_wire2(1, 23) <= sub_wire4(23); + sub_wire2(1, 24) <= sub_wire4(24); + sub_wire2(1, 25) <= sub_wire4(25); + sub_wire2(1, 26) <= sub_wire4(26); + sub_wire2(1, 27) <= sub_wire4(27); + sub_wire2(1, 28) <= sub_wire4(28); + sub_wire2(1, 29) <= sub_wire4(29); + sub_wire2(1, 30) <= sub_wire4(30); + sub_wire2(1, 31) <= sub_wire4(31); + sub_wire2(1, 32) <= sub_wire4(32); + sub_wire2(1, 33) <= sub_wire4(33); + sub_wire2(1, 34) <= sub_wire4(34); + sub_wire2(1, 35) <= sub_wire4(35); + sub_wire2(1, 36) <= sub_wire4(36); + sub_wire2(1, 37) <= sub_wire4(37); + sub_wire2(1, 38) <= sub_wire4(38); + sub_wire2(1, 39) <= sub_wire4(39); + sub_wire2(1, 40) <= sub_wire4(40); + sub_wire2(1, 41) <= sub_wire4(41); + sub_wire2(1, 42) <= sub_wire4(42); + sub_wire2(1, 43) <= sub_wire4(43); + sub_wire2(1, 44) <= sub_wire4(44); + sub_wire2(1, 45) <= sub_wire4(45); + sub_wire2(1, 46) <= sub_wire4(46); + sub_wire2(1, 47) <= sub_wire4(47); + sub_wire2(1, 48) <= sub_wire4(48); + sub_wire2(1, 49) <= sub_wire4(49); + sub_wire2(1, 50) <= sub_wire4(50); + sub_wire2(1, 51) <= sub_wire4(51); + sub_wire2(1, 52) <= sub_wire4(52); + sub_wire2(1, 53) <= sub_wire4(53); + sub_wire2(1, 54) <= sub_wire4(54); + sub_wire2(1, 55) <= sub_wire4(55); + sub_wire2(1, 56) <= sub_wire4(56); + sub_wire2(1, 57) <= sub_wire4(57); + sub_wire2(1, 58) <= sub_wire4(58); + sub_wire2(1, 59) <= sub_wire4(59); + sub_wire2(1, 60) <= sub_wire4(60); + sub_wire2(1, 61) <= sub_wire4(61); + sub_wire2(1, 62) <= sub_wire4(62); + sub_wire2(1, 63) <= sub_wire4(63); + sub_wire2(0, 0) <= sub_wire5(0); + sub_wire2(0, 1) <= sub_wire5(1); + sub_wire2(0, 2) <= sub_wire5(2); + sub_wire2(0, 3) <= sub_wire5(3); + sub_wire2(0, 4) <= sub_wire5(4); + sub_wire2(0, 5) <= sub_wire5(5); + sub_wire2(0, 6) <= sub_wire5(6); + sub_wire2(0, 7) <= sub_wire5(7); + sub_wire2(0, 8) <= sub_wire5(8); + sub_wire2(0, 9) <= sub_wire5(9); + sub_wire2(0, 10) <= sub_wire5(10); + sub_wire2(0, 11) <= sub_wire5(11); + sub_wire2(0, 12) <= sub_wire5(12); + sub_wire2(0, 13) <= sub_wire5(13); + sub_wire2(0, 14) <= sub_wire5(14); + sub_wire2(0, 15) <= sub_wire5(15); + sub_wire2(0, 16) <= sub_wire5(16); + sub_wire2(0, 17) <= sub_wire5(17); + sub_wire2(0, 18) <= sub_wire5(18); + sub_wire2(0, 19) <= sub_wire5(19); + sub_wire2(0, 20) <= sub_wire5(20); + sub_wire2(0, 21) <= sub_wire5(21); + sub_wire2(0, 22) <= sub_wire5(22); + sub_wire2(0, 23) <= sub_wire5(23); + sub_wire2(0, 24) <= sub_wire5(24); + sub_wire2(0, 25) <= sub_wire5(25); + sub_wire2(0, 26) <= sub_wire5(26); + sub_wire2(0, 27) <= sub_wire5(27); + sub_wire2(0, 28) <= sub_wire5(28); + sub_wire2(0, 29) <= sub_wire5(29); + sub_wire2(0, 30) <= sub_wire5(30); + sub_wire2(0, 31) <= sub_wire5(31); + sub_wire2(0, 32) <= sub_wire5(32); + sub_wire2(0, 33) <= sub_wire5(33); + sub_wire2(0, 34) <= sub_wire5(34); + sub_wire2(0, 35) <= sub_wire5(35); + sub_wire2(0, 36) <= sub_wire5(36); + sub_wire2(0, 37) <= sub_wire5(37); + sub_wire2(0, 38) <= sub_wire5(38); + sub_wire2(0, 39) <= sub_wire5(39); + sub_wire2(0, 40) <= sub_wire5(40); + sub_wire2(0, 41) <= sub_wire5(41); + sub_wire2(0, 42) <= sub_wire5(42); + sub_wire2(0, 43) <= sub_wire5(43); + sub_wire2(0, 44) <= sub_wire5(44); + sub_wire2(0, 45) <= sub_wire5(45); + sub_wire2(0, 46) <= sub_wire5(46); + sub_wire2(0, 47) <= sub_wire5(47); + sub_wire2(0, 48) <= sub_wire5(48); + sub_wire2(0, 49) <= sub_wire5(49); + sub_wire2(0, 50) <= sub_wire5(50); + sub_wire2(0, 51) <= sub_wire5(51); + sub_wire2(0, 52) <= sub_wire5(52); + sub_wire2(0, 53) <= sub_wire5(53); + sub_wire2(0, 54) <= sub_wire5(54); + sub_wire2(0, 55) <= sub_wire5(55); + sub_wire2(0, 56) <= sub_wire5(56); + sub_wire2(0, 57) <= sub_wire5(57); + sub_wire2(0, 58) <= sub_wire5(58); + sub_wire2(0, 59) <= sub_wire5(59); + sub_wire2(0, 60) <= sub_wire5(60); + sub_wire2(0, 61) <= sub_wire5(61); + sub_wire2(0, 62) <= sub_wire5(62); + sub_wire2(0, 63) <= sub_wire5(63); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_size => 4, + lpm_type => "LPM_MUX", + lpm_width => 64, + lpm_widths => 2 + ) + PORT MAP ( + sel => sel, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "64" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "2" +-- Retrieval info: USED_PORT: data0x 0 0 64 0 INPUT NODEFVAL data0x[63..0] +-- Retrieval info: USED_PORT: data1x 0 0 64 0 INPUT NODEFVAL data1x[63..0] +-- Retrieval info: USED_PORT: data2x 0 0 64 0 INPUT NODEFVAL data2x[63..0] +-- Retrieval info: USED_PORT: data3x 0 0 64 0 INPUT NODEFVAL data3x[63..0] +-- Retrieval info: USED_PORT: result 0 0 64 0 OUTPUT NODEFVAL result[63..0] +-- Retrieval info: USED_PORT: sel 0 0 2 0 INPUT NODEFVAL sel[1..0] +-- Retrieval info: CONNECT: result 0 0 64 0 @result 0 0 64 0 +-- Retrieval info: CONNECT: @data 1 3 64 0 data3x 0 0 64 0 +-- Retrieval info: CONNECT: @data 1 2 64 0 data2x 0 0 64 0 +-- Retrieval info: CONNECT: @data 1 1 64 0 data1x 0 0 64 0 +-- Retrieval info: CONNECT: @data 1 0 64 0 data0x 0 0 64 0 +-- Retrieval info: CONNECT: @sel 0 0 2 0 sel 0 0 2 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.bsf new file mode 100644 index 0000000..2196842 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.bsf @@ -0,0 +1,111 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 152 192) + (text "lpm_mux6" (rect 50 2 120 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 176 25 188)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data7x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data7x[23..0]" (rect 4 27 66 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data6x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data6x[23..0]" (rect 4 43 66 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data5x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data5x[23..0]" (rect 4 59 66 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data4x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data4x[23..0]" (rect 4 75 66 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data3x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data3x[23..0]" (rect 4 91 66 104)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data2x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data2x[23..0]" (rect 4 107 66 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 72 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data1x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data1x[23..0]" (rect 4 123 66 136)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 72 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data0x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data0x[23..0]" (rect 4 139 66 152)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 72 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 155 27 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 72 168)(line_width 1)) + ) + (port + (pt 80 192) + (input) + (text "sel[2..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[2..0]" (rect 84 179 121 192)(font "Arial" (font_size 8))) + (line (pt 80 192)(pt 80 180)(line_width 3)) + ) + (port + (pt 152 104) + (output) + (text "result[23..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "result[23..0]" (rect 92 91 147 104)(font "Arial" (font_size 8))) + (line (pt 152 104)(pt 88 104)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 184)(line_width 1)) + (line (pt 88 32)(pt 88 176)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 184)(pt 88 176)(line_width 1)) + (line (pt 72 162)(pt 78 168)(line_width 1)) + (line (pt 78 168)(pt 72 174)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.inc new file mode 100644 index 0000000..3cf223d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.inc @@ -0,0 +1,32 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_mux6 +( + clock, + data0x[23..0], + data1x[23..0], + data2x[23..0], + data3x[23..0], + data4x[23..0], + data5x[23..0], + data6x[23..0], + data7x[23..0], + sel[2..0] +) + +RETURNS ( + result[23..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.qip new file mode 100644 index 0000000..051a945 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux6.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux6.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux6.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux6.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.vhd new file mode 100644 index 0000000..42d5aae --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_mux6.vhd @@ -0,0 +1,335 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux6.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux6 IS + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +END lpm_mux6; + + +ARCHITECTURE SYN OF lpm_mux6 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (7 DOWNTO 0, 23 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire9 : STD_LOGIC_VECTOR (23 DOWNTO 0); + +BEGIN + sub_wire9 <= data0x(23 DOWNTO 0); + sub_wire8 <= data1x(23 DOWNTO 0); + sub_wire7 <= data2x(23 DOWNTO 0); + sub_wire6 <= data3x(23 DOWNTO 0); + sub_wire5 <= data4x(23 DOWNTO 0); + sub_wire4 <= data5x(23 DOWNTO 0); + sub_wire3 <= data6x(23 DOWNTO 0); + result <= sub_wire0(23 DOWNTO 0); + sub_wire1 <= data7x(23 DOWNTO 0); + sub_wire2(7, 0) <= sub_wire1(0); + sub_wire2(7, 1) <= sub_wire1(1); + sub_wire2(7, 2) <= sub_wire1(2); + sub_wire2(7, 3) <= sub_wire1(3); + sub_wire2(7, 4) <= sub_wire1(4); + sub_wire2(7, 5) <= sub_wire1(5); + sub_wire2(7, 6) <= sub_wire1(6); + sub_wire2(7, 7) <= sub_wire1(7); + sub_wire2(7, 8) <= sub_wire1(8); + sub_wire2(7, 9) <= sub_wire1(9); + sub_wire2(7, 10) <= sub_wire1(10); + sub_wire2(7, 11) <= sub_wire1(11); + sub_wire2(7, 12) <= sub_wire1(12); + sub_wire2(7, 13) <= sub_wire1(13); + sub_wire2(7, 14) <= sub_wire1(14); + sub_wire2(7, 15) <= sub_wire1(15); + sub_wire2(7, 16) <= sub_wire1(16); + sub_wire2(7, 17) <= sub_wire1(17); + sub_wire2(7, 18) <= sub_wire1(18); + sub_wire2(7, 19) <= sub_wire1(19); + sub_wire2(7, 20) <= sub_wire1(20); + sub_wire2(7, 21) <= sub_wire1(21); + sub_wire2(7, 22) <= sub_wire1(22); + sub_wire2(7, 23) <= sub_wire1(23); + sub_wire2(6, 0) <= sub_wire3(0); + sub_wire2(6, 1) <= sub_wire3(1); + sub_wire2(6, 2) <= sub_wire3(2); + sub_wire2(6, 3) <= sub_wire3(3); + sub_wire2(6, 4) <= sub_wire3(4); + sub_wire2(6, 5) <= sub_wire3(5); + sub_wire2(6, 6) <= sub_wire3(6); + sub_wire2(6, 7) <= sub_wire3(7); + sub_wire2(6, 8) <= sub_wire3(8); + sub_wire2(6, 9) <= sub_wire3(9); + sub_wire2(6, 10) <= sub_wire3(10); + sub_wire2(6, 11) <= sub_wire3(11); + sub_wire2(6, 12) <= sub_wire3(12); + sub_wire2(6, 13) <= sub_wire3(13); + sub_wire2(6, 14) <= sub_wire3(14); + sub_wire2(6, 15) <= sub_wire3(15); + sub_wire2(6, 16) <= sub_wire3(16); + sub_wire2(6, 17) <= sub_wire3(17); + sub_wire2(6, 18) <= sub_wire3(18); + sub_wire2(6, 19) <= sub_wire3(19); + sub_wire2(6, 20) <= sub_wire3(20); + sub_wire2(6, 21) <= sub_wire3(21); + sub_wire2(6, 22) <= sub_wire3(22); + sub_wire2(6, 23) <= sub_wire3(23); + sub_wire2(5, 0) <= sub_wire4(0); + sub_wire2(5, 1) <= sub_wire4(1); + sub_wire2(5, 2) <= sub_wire4(2); + sub_wire2(5, 3) <= sub_wire4(3); + sub_wire2(5, 4) <= sub_wire4(4); + sub_wire2(5, 5) <= sub_wire4(5); + sub_wire2(5, 6) <= sub_wire4(6); + sub_wire2(5, 7) <= sub_wire4(7); + sub_wire2(5, 8) <= sub_wire4(8); + sub_wire2(5, 9) <= sub_wire4(9); + sub_wire2(5, 10) <= sub_wire4(10); + sub_wire2(5, 11) <= sub_wire4(11); + sub_wire2(5, 12) <= sub_wire4(12); + sub_wire2(5, 13) <= sub_wire4(13); + sub_wire2(5, 14) <= sub_wire4(14); + sub_wire2(5, 15) <= sub_wire4(15); + sub_wire2(5, 16) <= sub_wire4(16); + sub_wire2(5, 17) <= sub_wire4(17); + sub_wire2(5, 18) <= sub_wire4(18); + sub_wire2(5, 19) <= sub_wire4(19); + sub_wire2(5, 20) <= sub_wire4(20); + sub_wire2(5, 21) <= sub_wire4(21); + sub_wire2(5, 22) <= sub_wire4(22); + sub_wire2(5, 23) <= sub_wire4(23); + sub_wire2(4, 0) <= sub_wire5(0); + sub_wire2(4, 1) <= sub_wire5(1); + sub_wire2(4, 2) <= sub_wire5(2); + sub_wire2(4, 3) <= sub_wire5(3); + sub_wire2(4, 4) <= sub_wire5(4); + sub_wire2(4, 5) <= sub_wire5(5); + sub_wire2(4, 6) <= sub_wire5(6); + sub_wire2(4, 7) <= sub_wire5(7); + sub_wire2(4, 8) <= sub_wire5(8); + sub_wire2(4, 9) <= sub_wire5(9); + sub_wire2(4, 10) <= sub_wire5(10); + sub_wire2(4, 11) <= sub_wire5(11); + sub_wire2(4, 12) <= sub_wire5(12); + sub_wire2(4, 13) <= sub_wire5(13); + sub_wire2(4, 14) <= sub_wire5(14); + sub_wire2(4, 15) <= sub_wire5(15); + sub_wire2(4, 16) <= sub_wire5(16); + sub_wire2(4, 17) <= sub_wire5(17); + sub_wire2(4, 18) <= sub_wire5(18); + sub_wire2(4, 19) <= sub_wire5(19); + sub_wire2(4, 20) <= sub_wire5(20); + sub_wire2(4, 21) <= sub_wire5(21); + sub_wire2(4, 22) <= sub_wire5(22); + sub_wire2(4, 23) <= sub_wire5(23); + sub_wire2(3, 0) <= sub_wire6(0); + sub_wire2(3, 1) <= sub_wire6(1); + sub_wire2(3, 2) <= sub_wire6(2); + sub_wire2(3, 3) <= sub_wire6(3); + sub_wire2(3, 4) <= sub_wire6(4); + sub_wire2(3, 5) <= sub_wire6(5); + sub_wire2(3, 6) <= sub_wire6(6); + sub_wire2(3, 7) <= sub_wire6(7); + sub_wire2(3, 8) <= sub_wire6(8); + sub_wire2(3, 9) <= sub_wire6(9); + sub_wire2(3, 10) <= sub_wire6(10); + sub_wire2(3, 11) <= sub_wire6(11); + sub_wire2(3, 12) <= sub_wire6(12); + sub_wire2(3, 13) <= sub_wire6(13); + sub_wire2(3, 14) <= sub_wire6(14); + sub_wire2(3, 15) <= sub_wire6(15); + sub_wire2(3, 16) <= sub_wire6(16); + sub_wire2(3, 17) <= sub_wire6(17); + sub_wire2(3, 18) <= sub_wire6(18); + sub_wire2(3, 19) <= sub_wire6(19); + sub_wire2(3, 20) <= sub_wire6(20); + sub_wire2(3, 21) <= sub_wire6(21); + sub_wire2(3, 22) <= sub_wire6(22); + sub_wire2(3, 23) <= sub_wire6(23); + sub_wire2(2, 0) <= sub_wire7(0); + sub_wire2(2, 1) <= sub_wire7(1); + sub_wire2(2, 2) <= sub_wire7(2); + sub_wire2(2, 3) <= sub_wire7(3); + sub_wire2(2, 4) <= sub_wire7(4); + sub_wire2(2, 5) <= sub_wire7(5); + sub_wire2(2, 6) <= sub_wire7(6); + sub_wire2(2, 7) <= sub_wire7(7); + sub_wire2(2, 8) <= sub_wire7(8); + sub_wire2(2, 9) <= sub_wire7(9); + sub_wire2(2, 10) <= sub_wire7(10); + sub_wire2(2, 11) <= sub_wire7(11); + sub_wire2(2, 12) <= sub_wire7(12); + sub_wire2(2, 13) <= sub_wire7(13); + sub_wire2(2, 14) <= sub_wire7(14); + sub_wire2(2, 15) <= sub_wire7(15); + sub_wire2(2, 16) <= sub_wire7(16); + sub_wire2(2, 17) <= sub_wire7(17); + sub_wire2(2, 18) <= sub_wire7(18); + sub_wire2(2, 19) <= sub_wire7(19); + sub_wire2(2, 20) <= sub_wire7(20); + sub_wire2(2, 21) <= sub_wire7(21); + sub_wire2(2, 22) <= sub_wire7(22); + sub_wire2(2, 23) <= sub_wire7(23); + sub_wire2(1, 0) <= sub_wire8(0); + sub_wire2(1, 1) <= sub_wire8(1); + sub_wire2(1, 2) <= sub_wire8(2); + sub_wire2(1, 3) <= sub_wire8(3); + sub_wire2(1, 4) <= sub_wire8(4); + sub_wire2(1, 5) <= sub_wire8(5); + sub_wire2(1, 6) <= sub_wire8(6); + sub_wire2(1, 7) <= sub_wire8(7); + sub_wire2(1, 8) <= sub_wire8(8); + sub_wire2(1, 9) <= sub_wire8(9); + sub_wire2(1, 10) <= sub_wire8(10); + sub_wire2(1, 11) <= sub_wire8(11); + sub_wire2(1, 12) <= sub_wire8(12); + sub_wire2(1, 13) <= sub_wire8(13); + sub_wire2(1, 14) <= sub_wire8(14); + sub_wire2(1, 15) <= sub_wire8(15); + sub_wire2(1, 16) <= sub_wire8(16); + sub_wire2(1, 17) <= sub_wire8(17); + sub_wire2(1, 18) <= sub_wire8(18); + sub_wire2(1, 19) <= sub_wire8(19); + sub_wire2(1, 20) <= sub_wire8(20); + sub_wire2(1, 21) <= sub_wire8(21); + sub_wire2(1, 22) <= sub_wire8(22); + sub_wire2(1, 23) <= sub_wire8(23); + sub_wire2(0, 0) <= sub_wire9(0); + sub_wire2(0, 1) <= sub_wire9(1); + sub_wire2(0, 2) <= sub_wire9(2); + sub_wire2(0, 3) <= sub_wire9(3); + sub_wire2(0, 4) <= sub_wire9(4); + sub_wire2(0, 5) <= sub_wire9(5); + sub_wire2(0, 6) <= sub_wire9(6); + sub_wire2(0, 7) <= sub_wire9(7); + sub_wire2(0, 8) <= sub_wire9(8); + sub_wire2(0, 9) <= sub_wire9(9); + sub_wire2(0, 10) <= sub_wire9(10); + sub_wire2(0, 11) <= sub_wire9(11); + sub_wire2(0, 12) <= sub_wire9(12); + sub_wire2(0, 13) <= sub_wire9(13); + sub_wire2(0, 14) <= sub_wire9(14); + sub_wire2(0, 15) <= sub_wire9(15); + sub_wire2(0, 16) <= sub_wire9(16); + sub_wire2(0, 17) <= sub_wire9(17); + sub_wire2(0, 18) <= sub_wire9(18); + sub_wire2(0, 19) <= sub_wire9(19); + sub_wire2(0, 20) <= sub_wire9(20); + sub_wire2(0, 21) <= sub_wire9(21); + sub_wire2(0, 22) <= sub_wire9(22); + sub_wire2(0, 23) <= sub_wire9(23); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_pipeline => 2, + lpm_size => 8, + lpm_type => "LPM_MUX", + lpm_width => 24, + lpm_widths => 3 + ) + PORT MAP ( + sel => sel, + clock => clock, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "24" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "3" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data0x 0 0 24 0 INPUT NODEFVAL data0x[23..0] +-- Retrieval info: USED_PORT: data1x 0 0 24 0 INPUT NODEFVAL data1x[23..0] +-- Retrieval info: USED_PORT: data2x 0 0 24 0 INPUT NODEFVAL data2x[23..0] +-- Retrieval info: USED_PORT: data3x 0 0 24 0 INPUT NODEFVAL data3x[23..0] +-- Retrieval info: USED_PORT: data4x 0 0 24 0 INPUT NODEFVAL data4x[23..0] +-- Retrieval info: USED_PORT: data5x 0 0 24 0 INPUT NODEFVAL data5x[23..0] +-- Retrieval info: USED_PORT: data6x 0 0 24 0 INPUT NODEFVAL data6x[23..0] +-- Retrieval info: USED_PORT: data7x 0 0 24 0 INPUT NODEFVAL data7x[23..0] +-- Retrieval info: USED_PORT: result 0 0 24 0 OUTPUT NODEFVAL result[23..0] +-- Retrieval info: USED_PORT: sel 0 0 3 0 INPUT NODEFVAL sel[2..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: result 0 0 24 0 @result 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 7 24 0 data7x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 6 24 0 data6x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 5 24 0 data5x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 4 24 0 data4x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 3 24 0 data3x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 2 24 0 data2x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 1 24 0 data1x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 0 24 0 data0x 0 0 24 0 +-- Retrieval info: CONNECT: @sel 0 0 3 0 sel 0 0 3 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.bsf new file mode 100644 index 0000000..f4f1c7d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.bsf @@ -0,0 +1,76 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2009 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 168 112) + (text "lpm_muxDZ" (rect 54 2 135 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 96 25 108)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data1x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data1x[127..0]" (rect 4 27 72 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 80 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data0x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data0x[127..0]" (rect 4 43 72 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 80 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 59 27 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 80 72)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "clken" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clken" (rect 4 75 28 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 80 88)(line_width 1)) + ) + (port + (pt 88 112) + (input) + (text "sel" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "sel" (rect 92 99 105 112)(font "Arial" (font_size 8))) + (line (pt 88 112)(pt 88 100)(line_width 1)) + ) + (port + (pt 168 64) + (output) + (text "result[127..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "result[127..0]" (rect 102 51 163 64)(font "Arial" (font_size 8))) + (line (pt 168 64)(pt 96 64)(line_width 3)) + ) + (drawing + (line (pt 80 24)(pt 80 104)(line_width 1)) + (line (pt 96 32)(pt 96 96)(line_width 1)) + (line (pt 80 24)(pt 96 32)(line_width 1)) + (line (pt 80 104)(pt 96 96)(line_width 1)) + (line (pt 80 66)(pt 86 72)(line_width 1)) + (line (pt 86 72)(pt 80 78)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.qip new file mode 100644 index 0000000..34ffc75 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_muxDZ.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxDZ.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxDZ.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.vhd new file mode 100644 index 0000000..e9bd32e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ.vhd @@ -0,0 +1,377 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_muxDZ.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_muxDZ IS + PORT + ( + clken : IN STD_LOGIC := '1'; + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +END lpm_muxDZ; + + +ARCHITECTURE SYN OF lpm_muxdz IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_2D (1 DOWNTO 0, 127 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (127 DOWNTO 0); + +BEGIN + sub_wire5 <= data0x(127 DOWNTO 0); + result <= sub_wire0(127 DOWNTO 0); + sub_wire1 <= sel; + sub_wire2(0) <= sub_wire1; + sub_wire3 <= data1x(127 DOWNTO 0); + sub_wire4(1, 0) <= sub_wire3(0); + sub_wire4(1, 1) <= sub_wire3(1); + sub_wire4(1, 2) <= sub_wire3(2); + sub_wire4(1, 3) <= sub_wire3(3); + sub_wire4(1, 4) <= sub_wire3(4); + sub_wire4(1, 5) <= sub_wire3(5); + sub_wire4(1, 6) <= sub_wire3(6); + sub_wire4(1, 7) <= sub_wire3(7); + sub_wire4(1, 8) <= sub_wire3(8); + sub_wire4(1, 9) <= sub_wire3(9); + sub_wire4(1, 10) <= sub_wire3(10); + sub_wire4(1, 11) <= sub_wire3(11); + sub_wire4(1, 12) <= sub_wire3(12); + sub_wire4(1, 13) <= sub_wire3(13); + sub_wire4(1, 14) <= sub_wire3(14); + sub_wire4(1, 15) <= sub_wire3(15); + sub_wire4(1, 16) <= sub_wire3(16); + sub_wire4(1, 17) <= sub_wire3(17); + sub_wire4(1, 18) <= sub_wire3(18); + sub_wire4(1, 19) <= sub_wire3(19); + sub_wire4(1, 20) <= sub_wire3(20); + sub_wire4(1, 21) <= sub_wire3(21); + sub_wire4(1, 22) <= sub_wire3(22); + sub_wire4(1, 23) <= sub_wire3(23); + sub_wire4(1, 24) <= sub_wire3(24); + sub_wire4(1, 25) <= sub_wire3(25); + sub_wire4(1, 26) <= sub_wire3(26); + sub_wire4(1, 27) <= sub_wire3(27); + sub_wire4(1, 28) <= sub_wire3(28); + sub_wire4(1, 29) <= sub_wire3(29); + sub_wire4(1, 30) <= sub_wire3(30); + sub_wire4(1, 31) <= sub_wire3(31); + sub_wire4(1, 32) <= sub_wire3(32); + sub_wire4(1, 33) <= sub_wire3(33); + sub_wire4(1, 34) <= sub_wire3(34); + sub_wire4(1, 35) <= sub_wire3(35); + sub_wire4(1, 36) <= sub_wire3(36); + sub_wire4(1, 37) <= sub_wire3(37); + sub_wire4(1, 38) <= sub_wire3(38); + sub_wire4(1, 39) <= sub_wire3(39); + sub_wire4(1, 40) <= sub_wire3(40); + sub_wire4(1, 41) <= sub_wire3(41); + sub_wire4(1, 42) <= sub_wire3(42); + sub_wire4(1, 43) <= sub_wire3(43); + sub_wire4(1, 44) <= sub_wire3(44); + sub_wire4(1, 45) <= sub_wire3(45); + sub_wire4(1, 46) <= sub_wire3(46); + sub_wire4(1, 47) <= sub_wire3(47); + sub_wire4(1, 48) <= sub_wire3(48); + sub_wire4(1, 49) <= sub_wire3(49); + sub_wire4(1, 50) <= sub_wire3(50); + sub_wire4(1, 51) <= sub_wire3(51); + sub_wire4(1, 52) <= sub_wire3(52); + sub_wire4(1, 53) <= sub_wire3(53); + sub_wire4(1, 54) <= sub_wire3(54); + sub_wire4(1, 55) <= sub_wire3(55); + sub_wire4(1, 56) <= sub_wire3(56); + sub_wire4(1, 57) <= sub_wire3(57); + sub_wire4(1, 58) <= sub_wire3(58); + sub_wire4(1, 59) <= sub_wire3(59); + sub_wire4(1, 60) <= sub_wire3(60); + sub_wire4(1, 61) <= sub_wire3(61); + sub_wire4(1, 62) <= sub_wire3(62); + sub_wire4(1, 63) <= sub_wire3(63); + sub_wire4(1, 64) <= sub_wire3(64); + sub_wire4(1, 65) <= sub_wire3(65); + sub_wire4(1, 66) <= sub_wire3(66); + sub_wire4(1, 67) <= sub_wire3(67); + sub_wire4(1, 68) <= sub_wire3(68); + sub_wire4(1, 69) <= sub_wire3(69); + sub_wire4(1, 70) <= sub_wire3(70); + sub_wire4(1, 71) <= sub_wire3(71); + sub_wire4(1, 72) <= sub_wire3(72); + sub_wire4(1, 73) <= sub_wire3(73); + sub_wire4(1, 74) <= sub_wire3(74); + sub_wire4(1, 75) <= sub_wire3(75); + sub_wire4(1, 76) <= sub_wire3(76); + sub_wire4(1, 77) <= sub_wire3(77); + sub_wire4(1, 78) <= sub_wire3(78); + sub_wire4(1, 79) <= sub_wire3(79); + sub_wire4(1, 80) <= sub_wire3(80); + sub_wire4(1, 81) <= sub_wire3(81); + sub_wire4(1, 82) <= sub_wire3(82); + sub_wire4(1, 83) <= sub_wire3(83); + sub_wire4(1, 84) <= sub_wire3(84); + sub_wire4(1, 85) <= sub_wire3(85); + sub_wire4(1, 86) <= sub_wire3(86); + sub_wire4(1, 87) <= sub_wire3(87); + sub_wire4(1, 88) <= sub_wire3(88); + sub_wire4(1, 89) <= sub_wire3(89); + sub_wire4(1, 90) <= sub_wire3(90); + sub_wire4(1, 91) <= sub_wire3(91); + sub_wire4(1, 92) <= sub_wire3(92); + sub_wire4(1, 93) <= sub_wire3(93); + sub_wire4(1, 94) <= sub_wire3(94); + sub_wire4(1, 95) <= sub_wire3(95); + sub_wire4(1, 96) <= sub_wire3(96); + sub_wire4(1, 97) <= sub_wire3(97); + sub_wire4(1, 98) <= sub_wire3(98); + sub_wire4(1, 99) <= sub_wire3(99); + sub_wire4(1, 100) <= sub_wire3(100); + sub_wire4(1, 101) <= sub_wire3(101); + sub_wire4(1, 102) <= sub_wire3(102); + sub_wire4(1, 103) <= sub_wire3(103); + sub_wire4(1, 104) <= sub_wire3(104); + sub_wire4(1, 105) <= sub_wire3(105); + sub_wire4(1, 106) <= sub_wire3(106); + sub_wire4(1, 107) <= sub_wire3(107); + sub_wire4(1, 108) <= sub_wire3(108); + sub_wire4(1, 109) <= sub_wire3(109); + sub_wire4(1, 110) <= sub_wire3(110); + sub_wire4(1, 111) <= sub_wire3(111); + sub_wire4(1, 112) <= sub_wire3(112); + sub_wire4(1, 113) <= sub_wire3(113); + sub_wire4(1, 114) <= sub_wire3(114); + sub_wire4(1, 115) <= sub_wire3(115); + sub_wire4(1, 116) <= sub_wire3(116); + sub_wire4(1, 117) <= sub_wire3(117); + sub_wire4(1, 118) <= sub_wire3(118); + sub_wire4(1, 119) <= sub_wire3(119); + sub_wire4(1, 120) <= sub_wire3(120); + sub_wire4(1, 121) <= sub_wire3(121); + sub_wire4(1, 122) <= sub_wire3(122); + sub_wire4(1, 123) <= sub_wire3(123); + sub_wire4(1, 124) <= sub_wire3(124); + sub_wire4(1, 125) <= sub_wire3(125); + sub_wire4(1, 126) <= sub_wire3(126); + sub_wire4(1, 127) <= sub_wire3(127); + sub_wire4(0, 0) <= sub_wire5(0); + sub_wire4(0, 1) <= sub_wire5(1); + sub_wire4(0, 2) <= sub_wire5(2); + sub_wire4(0, 3) <= sub_wire5(3); + sub_wire4(0, 4) <= sub_wire5(4); + sub_wire4(0, 5) <= sub_wire5(5); + sub_wire4(0, 6) <= sub_wire5(6); + sub_wire4(0, 7) <= sub_wire5(7); + sub_wire4(0, 8) <= sub_wire5(8); + sub_wire4(0, 9) <= sub_wire5(9); + sub_wire4(0, 10) <= sub_wire5(10); + sub_wire4(0, 11) <= sub_wire5(11); + sub_wire4(0, 12) <= sub_wire5(12); + sub_wire4(0, 13) <= sub_wire5(13); + sub_wire4(0, 14) <= sub_wire5(14); + sub_wire4(0, 15) <= sub_wire5(15); + sub_wire4(0, 16) <= sub_wire5(16); + sub_wire4(0, 17) <= sub_wire5(17); + sub_wire4(0, 18) <= sub_wire5(18); + sub_wire4(0, 19) <= sub_wire5(19); + sub_wire4(0, 20) <= sub_wire5(20); + sub_wire4(0, 21) <= sub_wire5(21); + sub_wire4(0, 22) <= sub_wire5(22); + sub_wire4(0, 23) <= sub_wire5(23); + sub_wire4(0, 24) <= sub_wire5(24); + sub_wire4(0, 25) <= sub_wire5(25); + sub_wire4(0, 26) <= sub_wire5(26); + sub_wire4(0, 27) <= sub_wire5(27); + sub_wire4(0, 28) <= sub_wire5(28); + sub_wire4(0, 29) <= sub_wire5(29); + sub_wire4(0, 30) <= sub_wire5(30); + sub_wire4(0, 31) <= sub_wire5(31); + sub_wire4(0, 32) <= sub_wire5(32); + sub_wire4(0, 33) <= sub_wire5(33); + sub_wire4(0, 34) <= sub_wire5(34); + sub_wire4(0, 35) <= sub_wire5(35); + sub_wire4(0, 36) <= sub_wire5(36); + sub_wire4(0, 37) <= sub_wire5(37); + sub_wire4(0, 38) <= sub_wire5(38); + sub_wire4(0, 39) <= sub_wire5(39); + sub_wire4(0, 40) <= sub_wire5(40); + sub_wire4(0, 41) <= sub_wire5(41); + sub_wire4(0, 42) <= sub_wire5(42); + sub_wire4(0, 43) <= sub_wire5(43); + sub_wire4(0, 44) <= sub_wire5(44); + sub_wire4(0, 45) <= sub_wire5(45); + sub_wire4(0, 46) <= sub_wire5(46); + sub_wire4(0, 47) <= sub_wire5(47); + sub_wire4(0, 48) <= sub_wire5(48); + sub_wire4(0, 49) <= sub_wire5(49); + sub_wire4(0, 50) <= sub_wire5(50); + sub_wire4(0, 51) <= sub_wire5(51); + sub_wire4(0, 52) <= sub_wire5(52); + sub_wire4(0, 53) <= sub_wire5(53); + sub_wire4(0, 54) <= sub_wire5(54); + sub_wire4(0, 55) <= sub_wire5(55); + sub_wire4(0, 56) <= sub_wire5(56); + sub_wire4(0, 57) <= sub_wire5(57); + sub_wire4(0, 58) <= sub_wire5(58); + sub_wire4(0, 59) <= sub_wire5(59); + sub_wire4(0, 60) <= sub_wire5(60); + sub_wire4(0, 61) <= sub_wire5(61); + sub_wire4(0, 62) <= sub_wire5(62); + sub_wire4(0, 63) <= sub_wire5(63); + sub_wire4(0, 64) <= sub_wire5(64); + sub_wire4(0, 65) <= sub_wire5(65); + sub_wire4(0, 66) <= sub_wire5(66); + sub_wire4(0, 67) <= sub_wire5(67); + sub_wire4(0, 68) <= sub_wire5(68); + sub_wire4(0, 69) <= sub_wire5(69); + sub_wire4(0, 70) <= sub_wire5(70); + sub_wire4(0, 71) <= sub_wire5(71); + sub_wire4(0, 72) <= sub_wire5(72); + sub_wire4(0, 73) <= sub_wire5(73); + sub_wire4(0, 74) <= sub_wire5(74); + sub_wire4(0, 75) <= sub_wire5(75); + sub_wire4(0, 76) <= sub_wire5(76); + sub_wire4(0, 77) <= sub_wire5(77); + sub_wire4(0, 78) <= sub_wire5(78); + sub_wire4(0, 79) <= sub_wire5(79); + sub_wire4(0, 80) <= sub_wire5(80); + sub_wire4(0, 81) <= sub_wire5(81); + sub_wire4(0, 82) <= sub_wire5(82); + sub_wire4(0, 83) <= sub_wire5(83); + sub_wire4(0, 84) <= sub_wire5(84); + sub_wire4(0, 85) <= sub_wire5(85); + sub_wire4(0, 86) <= sub_wire5(86); + sub_wire4(0, 87) <= sub_wire5(87); + sub_wire4(0, 88) <= sub_wire5(88); + sub_wire4(0, 89) <= sub_wire5(89); + sub_wire4(0, 90) <= sub_wire5(90); + sub_wire4(0, 91) <= sub_wire5(91); + sub_wire4(0, 92) <= sub_wire5(92); + sub_wire4(0, 93) <= sub_wire5(93); + sub_wire4(0, 94) <= sub_wire5(94); + sub_wire4(0, 95) <= sub_wire5(95); + sub_wire4(0, 96) <= sub_wire5(96); + sub_wire4(0, 97) <= sub_wire5(97); + sub_wire4(0, 98) <= sub_wire5(98); + sub_wire4(0, 99) <= sub_wire5(99); + sub_wire4(0, 100) <= sub_wire5(100); + sub_wire4(0, 101) <= sub_wire5(101); + sub_wire4(0, 102) <= sub_wire5(102); + sub_wire4(0, 103) <= sub_wire5(103); + sub_wire4(0, 104) <= sub_wire5(104); + sub_wire4(0, 105) <= sub_wire5(105); + sub_wire4(0, 106) <= sub_wire5(106); + sub_wire4(0, 107) <= sub_wire5(107); + sub_wire4(0, 108) <= sub_wire5(108); + sub_wire4(0, 109) <= sub_wire5(109); + sub_wire4(0, 110) <= sub_wire5(110); + sub_wire4(0, 111) <= sub_wire5(111); + sub_wire4(0, 112) <= sub_wire5(112); + sub_wire4(0, 113) <= sub_wire5(113); + sub_wire4(0, 114) <= sub_wire5(114); + sub_wire4(0, 115) <= sub_wire5(115); + sub_wire4(0, 116) <= sub_wire5(116); + sub_wire4(0, 117) <= sub_wire5(117); + sub_wire4(0, 118) <= sub_wire5(118); + sub_wire4(0, 119) <= sub_wire5(119); + sub_wire4(0, 120) <= sub_wire5(120); + sub_wire4(0, 121) <= sub_wire5(121); + sub_wire4(0, 122) <= sub_wire5(122); + sub_wire4(0, 123) <= sub_wire5(123); + sub_wire4(0, 124) <= sub_wire5(124); + sub_wire4(0, 125) <= sub_wire5(125); + sub_wire4(0, 126) <= sub_wire5(126); + sub_wire4(0, 127) <= sub_wire5(127); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_pipeline => 1, + lpm_size => 2, + lpm_type => "LPM_MUX", + lpm_width => 128, + lpm_widths => 1 + ) + PORT MAP ( + sel => sub_wire2, + clken => clken, + clock => clock, + data => sub_wire4, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "1" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +-- Retrieval info: USED_PORT: clken 0 0 0 0 INPUT VCC clken +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data0x 0 0 128 0 INPUT NODEFVAL data0x[127..0] +-- Retrieval info: USED_PORT: data1x 0 0 128 0 INPUT NODEFVAL data1x[127..0] +-- Retrieval info: USED_PORT: result 0 0 128 0 OUTPUT NODEFVAL result[127..0] +-- Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL sel +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @clken 0 0 0 0 clken 0 0 0 0 +-- Retrieval info: CONNECT: result 0 0 128 0 @result 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 1 128 0 data1x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 0 128 0 data0x 0 0 128 0 +-- Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.bsf new file mode 100644 index 0000000..b7e3184 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.bsf @@ -0,0 +1,60 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2009 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 80) + (text "lpm_muxDZ2" (rect 10 2 99 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data1" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "data1" (rect 4 27 31 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 40 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "data0" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "data0" (rect 4 43 31 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 40 56)(line_width 1)) + ) + (port + (pt 48 80) + (input) + (text "sel" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "sel" (rect 52 67 65 80)(font "Arial" (font_size 8))) + (line (pt 48 80)(pt 48 68)(line_width 1)) + ) + (port + (pt 96 48) + (output) + (text "result" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "result" (rect 66 35 91 48)(font "Arial" (font_size 8))) + (line (pt 96 48)(pt 56 48)(line_width 1)) + ) + (drawing + (line (pt 40 24)(pt 40 72)(line_width 1)) + (line (pt 56 32)(pt 56 64)(line_width 1)) + (line (pt 40 24)(pt 56 32)(line_width 1)) + (line (pt 40 72)(pt 56 64)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.qip new file mode 100644 index 0000000..8203bc6 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_muxDZ2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxDZ2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxDZ2.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.vhd new file mode 100644 index 0000000..42e0c81 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxDZ2.vhd @@ -0,0 +1,115 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_muxDZ2.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_muxDZ2 IS + PORT + ( + data0 : IN STD_LOGIC ; + data1 : IN STD_LOGIC ; + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC + ); +END lpm_muxDZ2; + + +ARCHITECTURE SYN OF lpm_muxdz2 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_2D (1 DOWNTO 0, 0 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC ; + +BEGIN + sub_wire6 <= data0; + sub_wire1 <= sub_wire0(0); + result <= sub_wire1; + sub_wire2 <= sel; + sub_wire3(0) <= sub_wire2; + sub_wire4 <= data1; + sub_wire5(1, 0) <= sub_wire4; + sub_wire5(0, 0) <= sub_wire6; + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_size => 2, + lpm_type => "LPM_MUX", + lpm_width => 1, + lpm_widths => 1 + ) + PORT MAP ( + sel => sub_wire3, + data => sub_wire5, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "1" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +-- Retrieval info: USED_PORT: data0 0 0 0 0 INPUT NODEFVAL data0 +-- Retrieval info: USED_PORT: data1 0 0 0 0 INPUT NODEFVAL data1 +-- Retrieval info: USED_PORT: result 0 0 0 0 OUTPUT NODEFVAL result +-- Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL sel +-- Retrieval info: CONNECT: result 0 0 0 0 @result 0 0 1 0 +-- Retrieval info: CONNECT: @data 1 1 1 0 data1 0 0 0 0 +-- Retrieval info: CONNECT: @data 1 0 1 0 data0 0 0 0 0 +-- Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.bsf new file mode 100644 index 0000000..42d235c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.bsf @@ -0,0 +1,158 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2009 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 168 304) + (text "lpm_muxVDM" (rect 47 2 143 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 288 25 300)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data15x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data15x[127..0]" (rect 4 27 78 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 80 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data14x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data14x[127..0]" (rect 4 43 78 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 80 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data13x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data13x[127..0]" (rect 4 59 78 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 80 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data12x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data12x[127..0]" (rect 4 75 78 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 80 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data11x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data11x[127..0]" (rect 4 91 78 104)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 80 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data10x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data10x[127..0]" (rect 4 107 78 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 80 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data9x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data9x[127..0]" (rect 4 123 72 136)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 80 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data8x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data8x[127..0]" (rect 4 139 72 152)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 80 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "data7x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data7x[127..0]" (rect 4 155 72 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 80 168)(line_width 3)) + ) + (port + (pt 0 184) + (input) + (text "data6x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data6x[127..0]" (rect 4 171 72 184)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 80 184)(line_width 3)) + ) + (port + (pt 0 200) + (input) + (text "data5x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data5x[127..0]" (rect 4 187 72 200)(font "Arial" (font_size 8))) + (line (pt 0 200)(pt 80 200)(line_width 3)) + ) + (port + (pt 0 216) + (input) + (text "data4x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data4x[127..0]" (rect 4 203 72 216)(font "Arial" (font_size 8))) + (line (pt 0 216)(pt 80 216)(line_width 3)) + ) + (port + (pt 0 232) + (input) + (text "data3x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data3x[127..0]" (rect 4 219 72 232)(font "Arial" (font_size 8))) + (line (pt 0 232)(pt 80 232)(line_width 3)) + ) + (port + (pt 0 248) + (input) + (text "data2x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data2x[127..0]" (rect 4 235 72 248)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 80 248)(line_width 3)) + ) + (port + (pt 0 264) + (input) + (text "data1x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data1x[127..0]" (rect 4 251 72 264)(font "Arial" (font_size 8))) + (line (pt 0 264)(pt 80 264)(line_width 3)) + ) + (port + (pt 0 280) + (input) + (text "data0x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data0x[127..0]" (rect 4 267 72 280)(font "Arial" (font_size 8))) + (line (pt 0 280)(pt 80 280)(line_width 3)) + ) + (port + (pt 88 304) + (input) + (text "sel[3..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[3..0]" (rect 92 291 129 304)(font "Arial" (font_size 8))) + (line (pt 88 304)(pt 88 292)(line_width 3)) + ) + (port + (pt 168 160) + (output) + (text "result[127..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "result[127..0]" (rect 102 147 163 160)(font "Arial" (font_size 8))) + (line (pt 168 160)(pt 96 160)(line_width 3)) + ) + (drawing + (line (pt 80 24)(pt 80 296)(line_width 1)) + (line (pt 96 32)(pt 96 288)(line_width 1)) + (line (pt 80 24)(pt 96 32)(line_width 1)) + (line (pt 80 296)(pt 96 288)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.qip new file mode 100644 index 0000000..08a824e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_muxVDM.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxVDM.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxVDM.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.vhd new file mode 100644 index 0000000..662c8be --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_muxVDM.vhd @@ -0,0 +1,2225 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_muxVDM.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_muxVDM IS + PORT + ( + data0x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data10x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data11x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data12x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data13x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data14x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data15x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data8x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data9x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +END lpm_muxVDM; + + +ARCHITECTURE SYN OF lpm_muxvdm IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (15 DOWNTO 0, 127 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire9 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire10 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire11 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire12 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire13 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire14 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire15 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire16 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire17 : STD_LOGIC_VECTOR (127 DOWNTO 0); + +BEGIN + sub_wire17 <= data0x(127 DOWNTO 0); + sub_wire16 <= data1x(127 DOWNTO 0); + sub_wire15 <= data2x(127 DOWNTO 0); + sub_wire14 <= data3x(127 DOWNTO 0); + sub_wire13 <= data4x(127 DOWNTO 0); + sub_wire12 <= data5x(127 DOWNTO 0); + sub_wire11 <= data6x(127 DOWNTO 0); + sub_wire10 <= data7x(127 DOWNTO 0); + sub_wire9 <= data8x(127 DOWNTO 0); + sub_wire8 <= data9x(127 DOWNTO 0); + sub_wire7 <= data10x(127 DOWNTO 0); + sub_wire6 <= data11x(127 DOWNTO 0); + sub_wire5 <= data12x(127 DOWNTO 0); + sub_wire4 <= data13x(127 DOWNTO 0); + sub_wire3 <= data14x(127 DOWNTO 0); + result <= sub_wire0(127 DOWNTO 0); + sub_wire1 <= data15x(127 DOWNTO 0); + sub_wire2(15, 0) <= sub_wire1(0); + sub_wire2(15, 1) <= sub_wire1(1); + sub_wire2(15, 2) <= sub_wire1(2); + sub_wire2(15, 3) <= sub_wire1(3); + sub_wire2(15, 4) <= sub_wire1(4); + sub_wire2(15, 5) <= sub_wire1(5); + sub_wire2(15, 6) <= sub_wire1(6); + sub_wire2(15, 7) <= sub_wire1(7); + sub_wire2(15, 8) <= sub_wire1(8); + sub_wire2(15, 9) <= sub_wire1(9); + sub_wire2(15, 10) <= sub_wire1(10); + sub_wire2(15, 11) <= sub_wire1(11); + sub_wire2(15, 12) <= sub_wire1(12); + sub_wire2(15, 13) <= sub_wire1(13); + sub_wire2(15, 14) <= sub_wire1(14); + sub_wire2(15, 15) <= sub_wire1(15); + sub_wire2(15, 16) <= sub_wire1(16); + sub_wire2(15, 17) <= sub_wire1(17); + sub_wire2(15, 18) <= sub_wire1(18); + sub_wire2(15, 19) <= sub_wire1(19); + sub_wire2(15, 20) <= sub_wire1(20); + sub_wire2(15, 21) <= sub_wire1(21); + sub_wire2(15, 22) <= sub_wire1(22); + sub_wire2(15, 23) <= sub_wire1(23); + sub_wire2(15, 24) <= sub_wire1(24); + sub_wire2(15, 25) <= sub_wire1(25); + sub_wire2(15, 26) <= sub_wire1(26); + sub_wire2(15, 27) <= sub_wire1(27); + sub_wire2(15, 28) <= sub_wire1(28); + sub_wire2(15, 29) <= sub_wire1(29); + sub_wire2(15, 30) <= sub_wire1(30); + sub_wire2(15, 31) <= sub_wire1(31); + sub_wire2(15, 32) <= sub_wire1(32); + sub_wire2(15, 33) <= sub_wire1(33); + sub_wire2(15, 34) <= sub_wire1(34); + sub_wire2(15, 35) <= sub_wire1(35); + sub_wire2(15, 36) <= sub_wire1(36); + sub_wire2(15, 37) <= sub_wire1(37); + sub_wire2(15, 38) <= sub_wire1(38); + sub_wire2(15, 39) <= sub_wire1(39); + sub_wire2(15, 40) <= sub_wire1(40); + sub_wire2(15, 41) <= sub_wire1(41); + sub_wire2(15, 42) <= sub_wire1(42); + sub_wire2(15, 43) <= sub_wire1(43); + sub_wire2(15, 44) <= sub_wire1(44); + sub_wire2(15, 45) <= sub_wire1(45); + sub_wire2(15, 46) <= sub_wire1(46); + sub_wire2(15, 47) <= sub_wire1(47); + sub_wire2(15, 48) <= sub_wire1(48); + sub_wire2(15, 49) <= sub_wire1(49); + sub_wire2(15, 50) <= sub_wire1(50); + sub_wire2(15, 51) <= sub_wire1(51); + sub_wire2(15, 52) <= sub_wire1(52); + sub_wire2(15, 53) <= sub_wire1(53); + sub_wire2(15, 54) <= sub_wire1(54); + sub_wire2(15, 55) <= sub_wire1(55); + sub_wire2(15, 56) <= sub_wire1(56); + sub_wire2(15, 57) <= sub_wire1(57); + sub_wire2(15, 58) <= sub_wire1(58); + sub_wire2(15, 59) <= sub_wire1(59); + sub_wire2(15, 60) <= sub_wire1(60); + sub_wire2(15, 61) <= sub_wire1(61); + sub_wire2(15, 62) <= sub_wire1(62); + sub_wire2(15, 63) <= sub_wire1(63); + sub_wire2(15, 64) <= sub_wire1(64); + sub_wire2(15, 65) <= sub_wire1(65); + sub_wire2(15, 66) <= sub_wire1(66); + sub_wire2(15, 67) <= sub_wire1(67); + sub_wire2(15, 68) <= sub_wire1(68); + sub_wire2(15, 69) <= sub_wire1(69); + sub_wire2(15, 70) <= sub_wire1(70); + sub_wire2(15, 71) <= sub_wire1(71); + sub_wire2(15, 72) <= sub_wire1(72); + sub_wire2(15, 73) <= sub_wire1(73); + sub_wire2(15, 74) <= sub_wire1(74); + sub_wire2(15, 75) <= sub_wire1(75); + sub_wire2(15, 76) <= sub_wire1(76); + sub_wire2(15, 77) <= sub_wire1(77); + sub_wire2(15, 78) <= sub_wire1(78); + sub_wire2(15, 79) <= sub_wire1(79); + sub_wire2(15, 80) <= sub_wire1(80); + sub_wire2(15, 81) <= sub_wire1(81); + sub_wire2(15, 82) <= sub_wire1(82); + sub_wire2(15, 83) <= sub_wire1(83); + sub_wire2(15, 84) <= sub_wire1(84); + sub_wire2(15, 85) <= sub_wire1(85); + sub_wire2(15, 86) <= sub_wire1(86); + sub_wire2(15, 87) <= sub_wire1(87); + sub_wire2(15, 88) <= sub_wire1(88); + sub_wire2(15, 89) <= sub_wire1(89); + sub_wire2(15, 90) <= sub_wire1(90); + sub_wire2(15, 91) <= sub_wire1(91); + sub_wire2(15, 92) <= sub_wire1(92); + sub_wire2(15, 93) <= sub_wire1(93); + sub_wire2(15, 94) <= sub_wire1(94); + sub_wire2(15, 95) <= sub_wire1(95); + sub_wire2(15, 96) <= sub_wire1(96); + sub_wire2(15, 97) <= sub_wire1(97); + sub_wire2(15, 98) <= sub_wire1(98); + sub_wire2(15, 99) <= sub_wire1(99); + sub_wire2(15, 100) <= sub_wire1(100); + sub_wire2(15, 101) <= sub_wire1(101); + sub_wire2(15, 102) <= sub_wire1(102); + sub_wire2(15, 103) <= sub_wire1(103); + sub_wire2(15, 104) <= sub_wire1(104); + sub_wire2(15, 105) <= sub_wire1(105); + sub_wire2(15, 106) <= sub_wire1(106); + sub_wire2(15, 107) <= sub_wire1(107); + sub_wire2(15, 108) <= sub_wire1(108); + sub_wire2(15, 109) <= sub_wire1(109); + sub_wire2(15, 110) <= sub_wire1(110); + sub_wire2(15, 111) <= sub_wire1(111); + sub_wire2(15, 112) <= sub_wire1(112); + sub_wire2(15, 113) <= sub_wire1(113); + sub_wire2(15, 114) <= sub_wire1(114); + sub_wire2(15, 115) <= sub_wire1(115); + sub_wire2(15, 116) <= sub_wire1(116); + sub_wire2(15, 117) <= sub_wire1(117); + sub_wire2(15, 118) <= sub_wire1(118); + sub_wire2(15, 119) <= sub_wire1(119); + sub_wire2(15, 120) <= sub_wire1(120); + sub_wire2(15, 121) <= sub_wire1(121); + sub_wire2(15, 122) <= sub_wire1(122); + sub_wire2(15, 123) <= sub_wire1(123); + sub_wire2(15, 124) <= sub_wire1(124); + sub_wire2(15, 125) <= sub_wire1(125); + sub_wire2(15, 126) <= sub_wire1(126); + sub_wire2(15, 127) <= sub_wire1(127); + sub_wire2(14, 0) <= sub_wire3(0); + sub_wire2(14, 1) <= sub_wire3(1); + sub_wire2(14, 2) <= sub_wire3(2); + sub_wire2(14, 3) <= sub_wire3(3); + sub_wire2(14, 4) <= sub_wire3(4); + sub_wire2(14, 5) <= sub_wire3(5); + sub_wire2(14, 6) <= sub_wire3(6); + sub_wire2(14, 7) <= sub_wire3(7); + sub_wire2(14, 8) <= sub_wire3(8); + sub_wire2(14, 9) <= sub_wire3(9); + sub_wire2(14, 10) <= sub_wire3(10); + sub_wire2(14, 11) <= sub_wire3(11); + sub_wire2(14, 12) <= sub_wire3(12); + sub_wire2(14, 13) <= sub_wire3(13); + sub_wire2(14, 14) <= sub_wire3(14); + sub_wire2(14, 15) <= sub_wire3(15); + sub_wire2(14, 16) <= sub_wire3(16); + sub_wire2(14, 17) <= sub_wire3(17); + sub_wire2(14, 18) <= sub_wire3(18); + sub_wire2(14, 19) <= sub_wire3(19); + sub_wire2(14, 20) <= sub_wire3(20); + sub_wire2(14, 21) <= sub_wire3(21); + sub_wire2(14, 22) <= sub_wire3(22); + sub_wire2(14, 23) <= sub_wire3(23); + sub_wire2(14, 24) <= sub_wire3(24); + sub_wire2(14, 25) <= sub_wire3(25); + sub_wire2(14, 26) <= sub_wire3(26); + sub_wire2(14, 27) <= sub_wire3(27); + sub_wire2(14, 28) <= sub_wire3(28); + sub_wire2(14, 29) <= sub_wire3(29); + sub_wire2(14, 30) <= sub_wire3(30); + sub_wire2(14, 31) <= sub_wire3(31); + sub_wire2(14, 32) <= sub_wire3(32); + sub_wire2(14, 33) <= sub_wire3(33); + sub_wire2(14, 34) <= sub_wire3(34); + sub_wire2(14, 35) <= sub_wire3(35); + sub_wire2(14, 36) <= sub_wire3(36); + sub_wire2(14, 37) <= sub_wire3(37); + sub_wire2(14, 38) <= sub_wire3(38); + sub_wire2(14, 39) <= sub_wire3(39); + sub_wire2(14, 40) <= sub_wire3(40); + sub_wire2(14, 41) <= sub_wire3(41); + sub_wire2(14, 42) <= sub_wire3(42); + sub_wire2(14, 43) <= sub_wire3(43); + sub_wire2(14, 44) <= sub_wire3(44); + sub_wire2(14, 45) <= sub_wire3(45); + sub_wire2(14, 46) <= sub_wire3(46); + sub_wire2(14, 47) <= sub_wire3(47); + sub_wire2(14, 48) <= sub_wire3(48); + sub_wire2(14, 49) <= sub_wire3(49); + sub_wire2(14, 50) <= sub_wire3(50); + sub_wire2(14, 51) <= sub_wire3(51); + sub_wire2(14, 52) <= sub_wire3(52); + sub_wire2(14, 53) <= sub_wire3(53); + sub_wire2(14, 54) <= sub_wire3(54); + sub_wire2(14, 55) <= sub_wire3(55); + sub_wire2(14, 56) <= sub_wire3(56); + sub_wire2(14, 57) <= sub_wire3(57); + sub_wire2(14, 58) <= sub_wire3(58); + sub_wire2(14, 59) <= sub_wire3(59); + sub_wire2(14, 60) <= sub_wire3(60); + sub_wire2(14, 61) <= sub_wire3(61); + sub_wire2(14, 62) <= sub_wire3(62); + sub_wire2(14, 63) <= sub_wire3(63); + sub_wire2(14, 64) <= sub_wire3(64); + sub_wire2(14, 65) <= sub_wire3(65); + sub_wire2(14, 66) <= sub_wire3(66); + sub_wire2(14, 67) <= sub_wire3(67); + sub_wire2(14, 68) <= sub_wire3(68); + sub_wire2(14, 69) <= sub_wire3(69); + sub_wire2(14, 70) <= sub_wire3(70); + sub_wire2(14, 71) <= sub_wire3(71); + sub_wire2(14, 72) <= sub_wire3(72); + sub_wire2(14, 73) <= sub_wire3(73); + sub_wire2(14, 74) <= sub_wire3(74); + sub_wire2(14, 75) <= sub_wire3(75); + sub_wire2(14, 76) <= sub_wire3(76); + sub_wire2(14, 77) <= sub_wire3(77); + sub_wire2(14, 78) <= sub_wire3(78); + sub_wire2(14, 79) <= sub_wire3(79); + sub_wire2(14, 80) <= sub_wire3(80); + sub_wire2(14, 81) <= sub_wire3(81); + sub_wire2(14, 82) <= sub_wire3(82); + sub_wire2(14, 83) <= sub_wire3(83); + sub_wire2(14, 84) <= sub_wire3(84); + sub_wire2(14, 85) <= sub_wire3(85); + sub_wire2(14, 86) <= sub_wire3(86); + sub_wire2(14, 87) <= sub_wire3(87); + sub_wire2(14, 88) <= sub_wire3(88); + sub_wire2(14, 89) <= sub_wire3(89); + sub_wire2(14, 90) <= sub_wire3(90); + sub_wire2(14, 91) <= sub_wire3(91); + sub_wire2(14, 92) <= sub_wire3(92); + sub_wire2(14, 93) <= sub_wire3(93); + sub_wire2(14, 94) <= sub_wire3(94); + sub_wire2(14, 95) <= sub_wire3(95); + sub_wire2(14, 96) <= sub_wire3(96); + sub_wire2(14, 97) <= sub_wire3(97); + sub_wire2(14, 98) <= sub_wire3(98); + sub_wire2(14, 99) <= sub_wire3(99); + sub_wire2(14, 100) <= sub_wire3(100); + sub_wire2(14, 101) <= sub_wire3(101); + sub_wire2(14, 102) <= sub_wire3(102); + sub_wire2(14, 103) <= sub_wire3(103); + sub_wire2(14, 104) <= sub_wire3(104); + sub_wire2(14, 105) <= sub_wire3(105); + sub_wire2(14, 106) <= sub_wire3(106); + sub_wire2(14, 107) <= sub_wire3(107); + sub_wire2(14, 108) <= sub_wire3(108); + sub_wire2(14, 109) <= sub_wire3(109); + sub_wire2(14, 110) <= sub_wire3(110); + sub_wire2(14, 111) <= sub_wire3(111); + sub_wire2(14, 112) <= sub_wire3(112); + sub_wire2(14, 113) <= sub_wire3(113); + sub_wire2(14, 114) <= sub_wire3(114); + sub_wire2(14, 115) <= sub_wire3(115); + sub_wire2(14, 116) <= sub_wire3(116); + sub_wire2(14, 117) <= sub_wire3(117); + sub_wire2(14, 118) <= sub_wire3(118); + sub_wire2(14, 119) <= sub_wire3(119); + sub_wire2(14, 120) <= sub_wire3(120); + sub_wire2(14, 121) <= sub_wire3(121); + sub_wire2(14, 122) <= sub_wire3(122); + sub_wire2(14, 123) <= sub_wire3(123); + sub_wire2(14, 124) <= sub_wire3(124); + sub_wire2(14, 125) <= sub_wire3(125); + sub_wire2(14, 126) <= sub_wire3(126); + sub_wire2(14, 127) <= sub_wire3(127); + sub_wire2(13, 0) <= sub_wire4(0); + sub_wire2(13, 1) <= sub_wire4(1); + sub_wire2(13, 2) <= sub_wire4(2); + sub_wire2(13, 3) <= sub_wire4(3); + sub_wire2(13, 4) <= sub_wire4(4); + sub_wire2(13, 5) <= sub_wire4(5); + sub_wire2(13, 6) <= sub_wire4(6); + sub_wire2(13, 7) <= sub_wire4(7); + sub_wire2(13, 8) <= sub_wire4(8); + sub_wire2(13, 9) <= sub_wire4(9); + sub_wire2(13, 10) <= sub_wire4(10); + sub_wire2(13, 11) <= sub_wire4(11); + sub_wire2(13, 12) <= sub_wire4(12); + sub_wire2(13, 13) <= sub_wire4(13); + sub_wire2(13, 14) <= sub_wire4(14); + sub_wire2(13, 15) <= sub_wire4(15); + sub_wire2(13, 16) <= sub_wire4(16); + sub_wire2(13, 17) <= sub_wire4(17); + sub_wire2(13, 18) <= sub_wire4(18); + sub_wire2(13, 19) <= sub_wire4(19); + sub_wire2(13, 20) <= sub_wire4(20); + sub_wire2(13, 21) <= sub_wire4(21); + sub_wire2(13, 22) <= sub_wire4(22); + sub_wire2(13, 23) <= sub_wire4(23); + sub_wire2(13, 24) <= sub_wire4(24); + sub_wire2(13, 25) <= sub_wire4(25); + sub_wire2(13, 26) <= sub_wire4(26); + sub_wire2(13, 27) <= sub_wire4(27); + sub_wire2(13, 28) <= sub_wire4(28); + sub_wire2(13, 29) <= sub_wire4(29); + sub_wire2(13, 30) <= sub_wire4(30); + sub_wire2(13, 31) <= sub_wire4(31); + sub_wire2(13, 32) <= sub_wire4(32); + sub_wire2(13, 33) <= sub_wire4(33); + sub_wire2(13, 34) <= sub_wire4(34); + sub_wire2(13, 35) <= sub_wire4(35); + sub_wire2(13, 36) <= sub_wire4(36); + sub_wire2(13, 37) <= sub_wire4(37); + sub_wire2(13, 38) <= sub_wire4(38); + sub_wire2(13, 39) <= sub_wire4(39); + sub_wire2(13, 40) <= sub_wire4(40); + sub_wire2(13, 41) <= sub_wire4(41); + sub_wire2(13, 42) <= sub_wire4(42); + sub_wire2(13, 43) <= sub_wire4(43); + sub_wire2(13, 44) <= sub_wire4(44); + sub_wire2(13, 45) <= sub_wire4(45); + sub_wire2(13, 46) <= sub_wire4(46); + sub_wire2(13, 47) <= sub_wire4(47); + sub_wire2(13, 48) <= sub_wire4(48); + sub_wire2(13, 49) <= sub_wire4(49); + sub_wire2(13, 50) <= sub_wire4(50); + sub_wire2(13, 51) <= sub_wire4(51); + sub_wire2(13, 52) <= sub_wire4(52); + sub_wire2(13, 53) <= sub_wire4(53); + sub_wire2(13, 54) <= sub_wire4(54); + sub_wire2(13, 55) <= sub_wire4(55); + sub_wire2(13, 56) <= sub_wire4(56); + sub_wire2(13, 57) <= sub_wire4(57); + sub_wire2(13, 58) <= sub_wire4(58); + sub_wire2(13, 59) <= sub_wire4(59); + sub_wire2(13, 60) <= sub_wire4(60); + sub_wire2(13, 61) <= sub_wire4(61); + sub_wire2(13, 62) <= sub_wire4(62); + sub_wire2(13, 63) <= sub_wire4(63); + sub_wire2(13, 64) <= sub_wire4(64); + sub_wire2(13, 65) <= sub_wire4(65); + sub_wire2(13, 66) <= sub_wire4(66); + sub_wire2(13, 67) <= sub_wire4(67); + sub_wire2(13, 68) <= sub_wire4(68); + sub_wire2(13, 69) <= sub_wire4(69); + sub_wire2(13, 70) <= sub_wire4(70); + sub_wire2(13, 71) <= sub_wire4(71); + sub_wire2(13, 72) <= sub_wire4(72); + sub_wire2(13, 73) <= sub_wire4(73); + sub_wire2(13, 74) <= sub_wire4(74); + sub_wire2(13, 75) <= sub_wire4(75); + sub_wire2(13, 76) <= sub_wire4(76); + sub_wire2(13, 77) <= sub_wire4(77); + sub_wire2(13, 78) <= sub_wire4(78); + sub_wire2(13, 79) <= sub_wire4(79); + sub_wire2(13, 80) <= sub_wire4(80); + sub_wire2(13, 81) <= sub_wire4(81); + sub_wire2(13, 82) <= sub_wire4(82); + sub_wire2(13, 83) <= sub_wire4(83); + sub_wire2(13, 84) <= sub_wire4(84); + sub_wire2(13, 85) <= sub_wire4(85); + sub_wire2(13, 86) <= sub_wire4(86); + sub_wire2(13, 87) <= sub_wire4(87); + sub_wire2(13, 88) <= sub_wire4(88); + sub_wire2(13, 89) <= sub_wire4(89); + sub_wire2(13, 90) <= sub_wire4(90); + sub_wire2(13, 91) <= sub_wire4(91); + sub_wire2(13, 92) <= sub_wire4(92); + sub_wire2(13, 93) <= sub_wire4(93); + sub_wire2(13, 94) <= sub_wire4(94); + sub_wire2(13, 95) <= sub_wire4(95); + sub_wire2(13, 96) <= sub_wire4(96); + sub_wire2(13, 97) <= sub_wire4(97); + sub_wire2(13, 98) <= sub_wire4(98); + sub_wire2(13, 99) <= sub_wire4(99); + sub_wire2(13, 100) <= sub_wire4(100); + sub_wire2(13, 101) <= sub_wire4(101); + sub_wire2(13, 102) <= sub_wire4(102); + sub_wire2(13, 103) <= sub_wire4(103); + sub_wire2(13, 104) <= sub_wire4(104); + sub_wire2(13, 105) <= sub_wire4(105); + sub_wire2(13, 106) <= sub_wire4(106); + sub_wire2(13, 107) <= sub_wire4(107); + sub_wire2(13, 108) <= sub_wire4(108); + sub_wire2(13, 109) <= sub_wire4(109); + sub_wire2(13, 110) <= sub_wire4(110); + sub_wire2(13, 111) <= sub_wire4(111); + sub_wire2(13, 112) <= sub_wire4(112); + sub_wire2(13, 113) <= sub_wire4(113); + sub_wire2(13, 114) <= sub_wire4(114); + sub_wire2(13, 115) <= sub_wire4(115); + sub_wire2(13, 116) <= sub_wire4(116); + sub_wire2(13, 117) <= sub_wire4(117); + sub_wire2(13, 118) <= sub_wire4(118); + sub_wire2(13, 119) <= sub_wire4(119); + sub_wire2(13, 120) <= sub_wire4(120); + sub_wire2(13, 121) <= sub_wire4(121); + sub_wire2(13, 122) <= sub_wire4(122); + sub_wire2(13, 123) <= sub_wire4(123); + sub_wire2(13, 124) <= sub_wire4(124); + sub_wire2(13, 125) <= sub_wire4(125); + sub_wire2(13, 126) <= sub_wire4(126); + sub_wire2(13, 127) <= sub_wire4(127); + sub_wire2(12, 0) <= sub_wire5(0); + sub_wire2(12, 1) <= sub_wire5(1); + sub_wire2(12, 2) <= sub_wire5(2); + sub_wire2(12, 3) <= sub_wire5(3); + sub_wire2(12, 4) <= sub_wire5(4); + sub_wire2(12, 5) <= sub_wire5(5); + sub_wire2(12, 6) <= sub_wire5(6); + sub_wire2(12, 7) <= sub_wire5(7); + sub_wire2(12, 8) <= sub_wire5(8); + sub_wire2(12, 9) <= sub_wire5(9); + sub_wire2(12, 10) <= sub_wire5(10); + sub_wire2(12, 11) <= sub_wire5(11); + sub_wire2(12, 12) <= sub_wire5(12); + sub_wire2(12, 13) <= sub_wire5(13); + sub_wire2(12, 14) <= sub_wire5(14); + sub_wire2(12, 15) <= sub_wire5(15); + sub_wire2(12, 16) <= sub_wire5(16); + sub_wire2(12, 17) <= sub_wire5(17); + sub_wire2(12, 18) <= sub_wire5(18); + sub_wire2(12, 19) <= sub_wire5(19); + sub_wire2(12, 20) <= sub_wire5(20); + sub_wire2(12, 21) <= sub_wire5(21); + sub_wire2(12, 22) <= sub_wire5(22); + sub_wire2(12, 23) <= sub_wire5(23); + sub_wire2(12, 24) <= sub_wire5(24); + sub_wire2(12, 25) <= sub_wire5(25); + sub_wire2(12, 26) <= sub_wire5(26); + sub_wire2(12, 27) <= sub_wire5(27); + sub_wire2(12, 28) <= sub_wire5(28); + sub_wire2(12, 29) <= sub_wire5(29); + sub_wire2(12, 30) <= sub_wire5(30); + sub_wire2(12, 31) <= sub_wire5(31); + sub_wire2(12, 32) <= sub_wire5(32); + sub_wire2(12, 33) <= sub_wire5(33); + sub_wire2(12, 34) <= sub_wire5(34); + sub_wire2(12, 35) <= sub_wire5(35); + sub_wire2(12, 36) <= sub_wire5(36); + sub_wire2(12, 37) <= sub_wire5(37); + sub_wire2(12, 38) <= sub_wire5(38); + sub_wire2(12, 39) <= sub_wire5(39); + sub_wire2(12, 40) <= sub_wire5(40); + sub_wire2(12, 41) <= sub_wire5(41); + sub_wire2(12, 42) <= sub_wire5(42); + sub_wire2(12, 43) <= sub_wire5(43); + sub_wire2(12, 44) <= sub_wire5(44); + sub_wire2(12, 45) <= sub_wire5(45); + sub_wire2(12, 46) <= sub_wire5(46); + sub_wire2(12, 47) <= sub_wire5(47); + sub_wire2(12, 48) <= sub_wire5(48); + sub_wire2(12, 49) <= sub_wire5(49); + sub_wire2(12, 50) <= sub_wire5(50); + sub_wire2(12, 51) <= sub_wire5(51); + sub_wire2(12, 52) <= sub_wire5(52); + sub_wire2(12, 53) <= sub_wire5(53); + sub_wire2(12, 54) <= sub_wire5(54); + sub_wire2(12, 55) <= sub_wire5(55); + sub_wire2(12, 56) <= sub_wire5(56); + sub_wire2(12, 57) <= sub_wire5(57); + sub_wire2(12, 58) <= sub_wire5(58); + sub_wire2(12, 59) <= sub_wire5(59); + sub_wire2(12, 60) <= sub_wire5(60); + sub_wire2(12, 61) <= sub_wire5(61); + sub_wire2(12, 62) <= sub_wire5(62); + sub_wire2(12, 63) <= sub_wire5(63); + sub_wire2(12, 64) <= sub_wire5(64); + sub_wire2(12, 65) <= sub_wire5(65); + sub_wire2(12, 66) <= sub_wire5(66); + sub_wire2(12, 67) <= sub_wire5(67); + sub_wire2(12, 68) <= sub_wire5(68); + sub_wire2(12, 69) <= sub_wire5(69); + sub_wire2(12, 70) <= sub_wire5(70); + sub_wire2(12, 71) <= sub_wire5(71); + sub_wire2(12, 72) <= sub_wire5(72); + sub_wire2(12, 73) <= sub_wire5(73); + sub_wire2(12, 74) <= sub_wire5(74); + sub_wire2(12, 75) <= sub_wire5(75); + sub_wire2(12, 76) <= sub_wire5(76); + sub_wire2(12, 77) <= sub_wire5(77); + sub_wire2(12, 78) <= sub_wire5(78); + sub_wire2(12, 79) <= sub_wire5(79); + sub_wire2(12, 80) <= sub_wire5(80); + sub_wire2(12, 81) <= sub_wire5(81); + sub_wire2(12, 82) <= sub_wire5(82); + sub_wire2(12, 83) <= sub_wire5(83); + sub_wire2(12, 84) <= sub_wire5(84); + sub_wire2(12, 85) <= sub_wire5(85); + sub_wire2(12, 86) <= sub_wire5(86); + sub_wire2(12, 87) <= sub_wire5(87); + sub_wire2(12, 88) <= sub_wire5(88); + sub_wire2(12, 89) <= sub_wire5(89); + sub_wire2(12, 90) <= sub_wire5(90); + sub_wire2(12, 91) <= sub_wire5(91); + sub_wire2(12, 92) <= sub_wire5(92); + sub_wire2(12, 93) <= sub_wire5(93); + sub_wire2(12, 94) <= sub_wire5(94); + sub_wire2(12, 95) <= sub_wire5(95); + sub_wire2(12, 96) <= sub_wire5(96); + sub_wire2(12, 97) <= sub_wire5(97); + sub_wire2(12, 98) <= sub_wire5(98); + sub_wire2(12, 99) <= sub_wire5(99); + sub_wire2(12, 100) <= sub_wire5(100); + sub_wire2(12, 101) <= sub_wire5(101); + sub_wire2(12, 102) <= sub_wire5(102); + sub_wire2(12, 103) <= sub_wire5(103); + sub_wire2(12, 104) <= sub_wire5(104); + sub_wire2(12, 105) <= sub_wire5(105); + sub_wire2(12, 106) <= sub_wire5(106); + sub_wire2(12, 107) <= sub_wire5(107); + sub_wire2(12, 108) <= sub_wire5(108); + sub_wire2(12, 109) <= sub_wire5(109); + sub_wire2(12, 110) <= sub_wire5(110); + sub_wire2(12, 111) <= sub_wire5(111); + sub_wire2(12, 112) <= sub_wire5(112); + sub_wire2(12, 113) <= sub_wire5(113); + sub_wire2(12, 114) <= sub_wire5(114); + sub_wire2(12, 115) <= sub_wire5(115); + sub_wire2(12, 116) <= sub_wire5(116); + sub_wire2(12, 117) <= sub_wire5(117); + sub_wire2(12, 118) <= sub_wire5(118); + sub_wire2(12, 119) <= sub_wire5(119); + sub_wire2(12, 120) <= sub_wire5(120); + sub_wire2(12, 121) <= sub_wire5(121); + sub_wire2(12, 122) <= sub_wire5(122); + sub_wire2(12, 123) <= sub_wire5(123); + sub_wire2(12, 124) <= sub_wire5(124); + sub_wire2(12, 125) <= sub_wire5(125); + sub_wire2(12, 126) <= sub_wire5(126); + sub_wire2(12, 127) <= sub_wire5(127); + sub_wire2(11, 0) <= sub_wire6(0); + sub_wire2(11, 1) <= sub_wire6(1); + sub_wire2(11, 2) <= sub_wire6(2); + sub_wire2(11, 3) <= sub_wire6(3); + sub_wire2(11, 4) <= sub_wire6(4); + sub_wire2(11, 5) <= sub_wire6(5); + sub_wire2(11, 6) <= sub_wire6(6); + sub_wire2(11, 7) <= sub_wire6(7); + sub_wire2(11, 8) <= sub_wire6(8); + sub_wire2(11, 9) <= sub_wire6(9); + sub_wire2(11, 10) <= sub_wire6(10); + sub_wire2(11, 11) <= sub_wire6(11); + sub_wire2(11, 12) <= sub_wire6(12); + sub_wire2(11, 13) <= sub_wire6(13); + sub_wire2(11, 14) <= sub_wire6(14); + sub_wire2(11, 15) <= sub_wire6(15); + sub_wire2(11, 16) <= sub_wire6(16); + sub_wire2(11, 17) <= sub_wire6(17); + sub_wire2(11, 18) <= sub_wire6(18); + sub_wire2(11, 19) <= sub_wire6(19); + sub_wire2(11, 20) <= sub_wire6(20); + sub_wire2(11, 21) <= sub_wire6(21); + sub_wire2(11, 22) <= sub_wire6(22); + sub_wire2(11, 23) <= sub_wire6(23); + sub_wire2(11, 24) <= sub_wire6(24); + sub_wire2(11, 25) <= sub_wire6(25); + sub_wire2(11, 26) <= sub_wire6(26); + sub_wire2(11, 27) <= sub_wire6(27); + sub_wire2(11, 28) <= sub_wire6(28); + sub_wire2(11, 29) <= sub_wire6(29); + sub_wire2(11, 30) <= sub_wire6(30); + sub_wire2(11, 31) <= sub_wire6(31); + sub_wire2(11, 32) <= sub_wire6(32); + sub_wire2(11, 33) <= sub_wire6(33); + sub_wire2(11, 34) <= sub_wire6(34); + sub_wire2(11, 35) <= sub_wire6(35); + sub_wire2(11, 36) <= sub_wire6(36); + sub_wire2(11, 37) <= sub_wire6(37); + sub_wire2(11, 38) <= sub_wire6(38); + sub_wire2(11, 39) <= sub_wire6(39); + sub_wire2(11, 40) <= sub_wire6(40); + sub_wire2(11, 41) <= sub_wire6(41); + sub_wire2(11, 42) <= sub_wire6(42); + sub_wire2(11, 43) <= sub_wire6(43); + sub_wire2(11, 44) <= sub_wire6(44); + sub_wire2(11, 45) <= sub_wire6(45); + sub_wire2(11, 46) <= sub_wire6(46); + sub_wire2(11, 47) <= sub_wire6(47); + sub_wire2(11, 48) <= sub_wire6(48); + sub_wire2(11, 49) <= sub_wire6(49); + sub_wire2(11, 50) <= sub_wire6(50); + sub_wire2(11, 51) <= sub_wire6(51); + sub_wire2(11, 52) <= sub_wire6(52); + sub_wire2(11, 53) <= sub_wire6(53); + sub_wire2(11, 54) <= sub_wire6(54); + sub_wire2(11, 55) <= sub_wire6(55); + sub_wire2(11, 56) <= sub_wire6(56); + sub_wire2(11, 57) <= sub_wire6(57); + sub_wire2(11, 58) <= sub_wire6(58); + sub_wire2(11, 59) <= sub_wire6(59); + sub_wire2(11, 60) <= sub_wire6(60); + sub_wire2(11, 61) <= sub_wire6(61); + sub_wire2(11, 62) <= sub_wire6(62); + sub_wire2(11, 63) <= sub_wire6(63); + sub_wire2(11, 64) <= sub_wire6(64); + sub_wire2(11, 65) <= sub_wire6(65); + sub_wire2(11, 66) <= sub_wire6(66); + sub_wire2(11, 67) <= sub_wire6(67); + sub_wire2(11, 68) <= sub_wire6(68); + sub_wire2(11, 69) <= sub_wire6(69); + sub_wire2(11, 70) <= sub_wire6(70); + sub_wire2(11, 71) <= sub_wire6(71); + sub_wire2(11, 72) <= sub_wire6(72); + sub_wire2(11, 73) <= sub_wire6(73); + sub_wire2(11, 74) <= sub_wire6(74); + sub_wire2(11, 75) <= sub_wire6(75); + sub_wire2(11, 76) <= sub_wire6(76); + sub_wire2(11, 77) <= sub_wire6(77); + sub_wire2(11, 78) <= sub_wire6(78); + sub_wire2(11, 79) <= sub_wire6(79); + sub_wire2(11, 80) <= sub_wire6(80); + sub_wire2(11, 81) <= sub_wire6(81); + sub_wire2(11, 82) <= sub_wire6(82); + sub_wire2(11, 83) <= sub_wire6(83); + sub_wire2(11, 84) <= sub_wire6(84); + sub_wire2(11, 85) <= sub_wire6(85); + sub_wire2(11, 86) <= sub_wire6(86); + sub_wire2(11, 87) <= sub_wire6(87); + sub_wire2(11, 88) <= sub_wire6(88); + sub_wire2(11, 89) <= sub_wire6(89); + sub_wire2(11, 90) <= sub_wire6(90); + sub_wire2(11, 91) <= sub_wire6(91); + sub_wire2(11, 92) <= sub_wire6(92); + sub_wire2(11, 93) <= sub_wire6(93); + sub_wire2(11, 94) <= sub_wire6(94); + sub_wire2(11, 95) <= sub_wire6(95); + sub_wire2(11, 96) <= sub_wire6(96); + sub_wire2(11, 97) <= sub_wire6(97); + sub_wire2(11, 98) <= sub_wire6(98); + sub_wire2(11, 99) <= sub_wire6(99); + sub_wire2(11, 100) <= sub_wire6(100); + sub_wire2(11, 101) <= sub_wire6(101); + sub_wire2(11, 102) <= sub_wire6(102); + sub_wire2(11, 103) <= sub_wire6(103); + sub_wire2(11, 104) <= sub_wire6(104); + sub_wire2(11, 105) <= sub_wire6(105); + sub_wire2(11, 106) <= sub_wire6(106); + sub_wire2(11, 107) <= sub_wire6(107); + sub_wire2(11, 108) <= sub_wire6(108); + sub_wire2(11, 109) <= sub_wire6(109); + sub_wire2(11, 110) <= sub_wire6(110); + sub_wire2(11, 111) <= sub_wire6(111); + sub_wire2(11, 112) <= sub_wire6(112); + sub_wire2(11, 113) <= sub_wire6(113); + sub_wire2(11, 114) <= sub_wire6(114); + sub_wire2(11, 115) <= sub_wire6(115); + sub_wire2(11, 116) <= sub_wire6(116); + sub_wire2(11, 117) <= sub_wire6(117); + sub_wire2(11, 118) <= sub_wire6(118); + sub_wire2(11, 119) <= sub_wire6(119); + sub_wire2(11, 120) <= sub_wire6(120); + sub_wire2(11, 121) <= sub_wire6(121); + sub_wire2(11, 122) <= sub_wire6(122); + sub_wire2(11, 123) <= sub_wire6(123); + sub_wire2(11, 124) <= sub_wire6(124); + sub_wire2(11, 125) <= sub_wire6(125); + sub_wire2(11, 126) <= sub_wire6(126); + sub_wire2(11, 127) <= sub_wire6(127); + sub_wire2(10, 0) <= sub_wire7(0); + sub_wire2(10, 1) <= sub_wire7(1); + sub_wire2(10, 2) <= sub_wire7(2); + sub_wire2(10, 3) <= sub_wire7(3); + sub_wire2(10, 4) <= sub_wire7(4); + sub_wire2(10, 5) <= sub_wire7(5); + sub_wire2(10, 6) <= sub_wire7(6); + sub_wire2(10, 7) <= sub_wire7(7); + sub_wire2(10, 8) <= sub_wire7(8); + sub_wire2(10, 9) <= sub_wire7(9); + sub_wire2(10, 10) <= sub_wire7(10); + sub_wire2(10, 11) <= sub_wire7(11); + sub_wire2(10, 12) <= sub_wire7(12); + sub_wire2(10, 13) <= sub_wire7(13); + sub_wire2(10, 14) <= sub_wire7(14); + sub_wire2(10, 15) <= sub_wire7(15); + sub_wire2(10, 16) <= sub_wire7(16); + sub_wire2(10, 17) <= sub_wire7(17); + sub_wire2(10, 18) <= sub_wire7(18); + sub_wire2(10, 19) <= sub_wire7(19); + sub_wire2(10, 20) <= sub_wire7(20); + sub_wire2(10, 21) <= sub_wire7(21); + sub_wire2(10, 22) <= sub_wire7(22); + sub_wire2(10, 23) <= sub_wire7(23); + sub_wire2(10, 24) <= sub_wire7(24); + sub_wire2(10, 25) <= sub_wire7(25); + sub_wire2(10, 26) <= sub_wire7(26); + sub_wire2(10, 27) <= sub_wire7(27); + sub_wire2(10, 28) <= sub_wire7(28); + sub_wire2(10, 29) <= sub_wire7(29); + sub_wire2(10, 30) <= sub_wire7(30); + sub_wire2(10, 31) <= sub_wire7(31); + sub_wire2(10, 32) <= sub_wire7(32); + sub_wire2(10, 33) <= sub_wire7(33); + sub_wire2(10, 34) <= sub_wire7(34); + sub_wire2(10, 35) <= sub_wire7(35); + sub_wire2(10, 36) <= sub_wire7(36); + sub_wire2(10, 37) <= sub_wire7(37); + sub_wire2(10, 38) <= sub_wire7(38); + sub_wire2(10, 39) <= sub_wire7(39); + sub_wire2(10, 40) <= sub_wire7(40); + sub_wire2(10, 41) <= sub_wire7(41); + sub_wire2(10, 42) <= sub_wire7(42); + sub_wire2(10, 43) <= sub_wire7(43); + sub_wire2(10, 44) <= sub_wire7(44); + sub_wire2(10, 45) <= sub_wire7(45); + sub_wire2(10, 46) <= sub_wire7(46); + sub_wire2(10, 47) <= sub_wire7(47); + sub_wire2(10, 48) <= sub_wire7(48); + sub_wire2(10, 49) <= sub_wire7(49); + sub_wire2(10, 50) <= sub_wire7(50); + sub_wire2(10, 51) <= sub_wire7(51); + sub_wire2(10, 52) <= sub_wire7(52); + sub_wire2(10, 53) <= sub_wire7(53); + sub_wire2(10, 54) <= sub_wire7(54); + sub_wire2(10, 55) <= sub_wire7(55); + sub_wire2(10, 56) <= sub_wire7(56); + sub_wire2(10, 57) <= sub_wire7(57); + sub_wire2(10, 58) <= sub_wire7(58); + sub_wire2(10, 59) <= sub_wire7(59); + sub_wire2(10, 60) <= sub_wire7(60); + sub_wire2(10, 61) <= sub_wire7(61); + sub_wire2(10, 62) <= sub_wire7(62); + sub_wire2(10, 63) <= sub_wire7(63); + sub_wire2(10, 64) <= sub_wire7(64); + sub_wire2(10, 65) <= sub_wire7(65); + sub_wire2(10, 66) <= sub_wire7(66); + sub_wire2(10, 67) <= sub_wire7(67); + sub_wire2(10, 68) <= sub_wire7(68); + sub_wire2(10, 69) <= sub_wire7(69); + sub_wire2(10, 70) <= sub_wire7(70); + sub_wire2(10, 71) <= sub_wire7(71); + sub_wire2(10, 72) <= sub_wire7(72); + sub_wire2(10, 73) <= sub_wire7(73); + sub_wire2(10, 74) <= sub_wire7(74); + sub_wire2(10, 75) <= sub_wire7(75); + sub_wire2(10, 76) <= sub_wire7(76); + sub_wire2(10, 77) <= sub_wire7(77); + sub_wire2(10, 78) <= sub_wire7(78); + sub_wire2(10, 79) <= sub_wire7(79); + sub_wire2(10, 80) <= sub_wire7(80); + sub_wire2(10, 81) <= sub_wire7(81); + sub_wire2(10, 82) <= sub_wire7(82); + sub_wire2(10, 83) <= sub_wire7(83); + sub_wire2(10, 84) <= sub_wire7(84); + sub_wire2(10, 85) <= sub_wire7(85); + sub_wire2(10, 86) <= sub_wire7(86); + sub_wire2(10, 87) <= sub_wire7(87); + sub_wire2(10, 88) <= sub_wire7(88); + sub_wire2(10, 89) <= sub_wire7(89); + sub_wire2(10, 90) <= sub_wire7(90); + sub_wire2(10, 91) <= sub_wire7(91); + sub_wire2(10, 92) <= sub_wire7(92); + sub_wire2(10, 93) <= sub_wire7(93); + sub_wire2(10, 94) <= sub_wire7(94); + sub_wire2(10, 95) <= sub_wire7(95); + sub_wire2(10, 96) <= sub_wire7(96); + sub_wire2(10, 97) <= sub_wire7(97); + sub_wire2(10, 98) <= sub_wire7(98); + sub_wire2(10, 99) <= sub_wire7(99); + sub_wire2(10, 100) <= sub_wire7(100); + sub_wire2(10, 101) <= sub_wire7(101); + sub_wire2(10, 102) <= sub_wire7(102); + sub_wire2(10, 103) <= sub_wire7(103); + sub_wire2(10, 104) <= sub_wire7(104); + sub_wire2(10, 105) <= sub_wire7(105); + sub_wire2(10, 106) <= sub_wire7(106); + sub_wire2(10, 107) <= sub_wire7(107); + sub_wire2(10, 108) <= sub_wire7(108); + sub_wire2(10, 109) <= sub_wire7(109); + sub_wire2(10, 110) <= sub_wire7(110); + sub_wire2(10, 111) <= sub_wire7(111); + sub_wire2(10, 112) <= sub_wire7(112); + sub_wire2(10, 113) <= sub_wire7(113); + sub_wire2(10, 114) <= sub_wire7(114); + sub_wire2(10, 115) <= sub_wire7(115); + sub_wire2(10, 116) <= sub_wire7(116); + sub_wire2(10, 117) <= sub_wire7(117); + sub_wire2(10, 118) <= sub_wire7(118); + sub_wire2(10, 119) <= sub_wire7(119); + sub_wire2(10, 120) <= sub_wire7(120); + sub_wire2(10, 121) <= sub_wire7(121); + sub_wire2(10, 122) <= sub_wire7(122); + sub_wire2(10, 123) <= sub_wire7(123); + sub_wire2(10, 124) <= sub_wire7(124); + sub_wire2(10, 125) <= sub_wire7(125); + sub_wire2(10, 126) <= sub_wire7(126); + sub_wire2(10, 127) <= sub_wire7(127); + sub_wire2(9, 0) <= sub_wire8(0); + sub_wire2(9, 1) <= sub_wire8(1); + sub_wire2(9, 2) <= sub_wire8(2); + sub_wire2(9, 3) <= sub_wire8(3); + sub_wire2(9, 4) <= sub_wire8(4); + sub_wire2(9, 5) <= sub_wire8(5); + sub_wire2(9, 6) <= sub_wire8(6); + sub_wire2(9, 7) <= sub_wire8(7); + sub_wire2(9, 8) <= sub_wire8(8); + sub_wire2(9, 9) <= sub_wire8(9); + sub_wire2(9, 10) <= sub_wire8(10); + sub_wire2(9, 11) <= sub_wire8(11); + sub_wire2(9, 12) <= sub_wire8(12); + sub_wire2(9, 13) <= sub_wire8(13); + sub_wire2(9, 14) <= sub_wire8(14); + sub_wire2(9, 15) <= sub_wire8(15); + sub_wire2(9, 16) <= sub_wire8(16); + sub_wire2(9, 17) <= sub_wire8(17); + sub_wire2(9, 18) <= sub_wire8(18); + sub_wire2(9, 19) <= sub_wire8(19); + sub_wire2(9, 20) <= sub_wire8(20); + sub_wire2(9, 21) <= sub_wire8(21); + sub_wire2(9, 22) <= sub_wire8(22); + sub_wire2(9, 23) <= sub_wire8(23); + sub_wire2(9, 24) <= sub_wire8(24); + sub_wire2(9, 25) <= sub_wire8(25); + sub_wire2(9, 26) <= sub_wire8(26); + sub_wire2(9, 27) <= sub_wire8(27); + sub_wire2(9, 28) <= sub_wire8(28); + sub_wire2(9, 29) <= sub_wire8(29); + sub_wire2(9, 30) <= sub_wire8(30); + sub_wire2(9, 31) <= sub_wire8(31); + sub_wire2(9, 32) <= sub_wire8(32); + sub_wire2(9, 33) <= sub_wire8(33); + sub_wire2(9, 34) <= sub_wire8(34); + sub_wire2(9, 35) <= sub_wire8(35); + sub_wire2(9, 36) <= sub_wire8(36); + sub_wire2(9, 37) <= sub_wire8(37); + sub_wire2(9, 38) <= sub_wire8(38); + sub_wire2(9, 39) <= sub_wire8(39); + sub_wire2(9, 40) <= sub_wire8(40); + sub_wire2(9, 41) <= sub_wire8(41); + sub_wire2(9, 42) <= sub_wire8(42); + sub_wire2(9, 43) <= sub_wire8(43); + sub_wire2(9, 44) <= sub_wire8(44); + sub_wire2(9, 45) <= sub_wire8(45); + sub_wire2(9, 46) <= sub_wire8(46); + sub_wire2(9, 47) <= sub_wire8(47); + sub_wire2(9, 48) <= sub_wire8(48); + sub_wire2(9, 49) <= sub_wire8(49); + sub_wire2(9, 50) <= sub_wire8(50); + sub_wire2(9, 51) <= sub_wire8(51); + sub_wire2(9, 52) <= sub_wire8(52); + sub_wire2(9, 53) <= sub_wire8(53); + sub_wire2(9, 54) <= sub_wire8(54); + sub_wire2(9, 55) <= sub_wire8(55); + sub_wire2(9, 56) <= sub_wire8(56); + sub_wire2(9, 57) <= sub_wire8(57); + sub_wire2(9, 58) <= sub_wire8(58); + sub_wire2(9, 59) <= sub_wire8(59); + sub_wire2(9, 60) <= sub_wire8(60); + sub_wire2(9, 61) <= sub_wire8(61); + sub_wire2(9, 62) <= sub_wire8(62); + sub_wire2(9, 63) <= sub_wire8(63); + sub_wire2(9, 64) <= sub_wire8(64); + sub_wire2(9, 65) <= sub_wire8(65); + sub_wire2(9, 66) <= sub_wire8(66); + sub_wire2(9, 67) <= sub_wire8(67); + sub_wire2(9, 68) <= sub_wire8(68); + sub_wire2(9, 69) <= sub_wire8(69); + sub_wire2(9, 70) <= sub_wire8(70); + sub_wire2(9, 71) <= sub_wire8(71); + sub_wire2(9, 72) <= sub_wire8(72); + sub_wire2(9, 73) <= sub_wire8(73); + sub_wire2(9, 74) <= sub_wire8(74); + sub_wire2(9, 75) <= sub_wire8(75); + sub_wire2(9, 76) <= sub_wire8(76); + sub_wire2(9, 77) <= sub_wire8(77); + sub_wire2(9, 78) <= sub_wire8(78); + sub_wire2(9, 79) <= sub_wire8(79); + sub_wire2(9, 80) <= sub_wire8(80); + sub_wire2(9, 81) <= sub_wire8(81); + sub_wire2(9, 82) <= sub_wire8(82); + sub_wire2(9, 83) <= sub_wire8(83); + sub_wire2(9, 84) <= sub_wire8(84); + sub_wire2(9, 85) <= sub_wire8(85); + sub_wire2(9, 86) <= sub_wire8(86); + sub_wire2(9, 87) <= sub_wire8(87); + sub_wire2(9, 88) <= sub_wire8(88); + sub_wire2(9, 89) <= sub_wire8(89); + sub_wire2(9, 90) <= sub_wire8(90); + sub_wire2(9, 91) <= sub_wire8(91); + sub_wire2(9, 92) <= sub_wire8(92); + sub_wire2(9, 93) <= sub_wire8(93); + sub_wire2(9, 94) <= sub_wire8(94); + sub_wire2(9, 95) <= sub_wire8(95); + sub_wire2(9, 96) <= sub_wire8(96); + sub_wire2(9, 97) <= sub_wire8(97); + sub_wire2(9, 98) <= sub_wire8(98); + sub_wire2(9, 99) <= sub_wire8(99); + sub_wire2(9, 100) <= sub_wire8(100); + sub_wire2(9, 101) <= sub_wire8(101); + sub_wire2(9, 102) <= sub_wire8(102); + sub_wire2(9, 103) <= sub_wire8(103); + sub_wire2(9, 104) <= sub_wire8(104); + sub_wire2(9, 105) <= sub_wire8(105); + sub_wire2(9, 106) <= sub_wire8(106); + sub_wire2(9, 107) <= sub_wire8(107); + sub_wire2(9, 108) <= sub_wire8(108); + sub_wire2(9, 109) <= sub_wire8(109); + sub_wire2(9, 110) <= sub_wire8(110); + sub_wire2(9, 111) <= sub_wire8(111); + sub_wire2(9, 112) <= sub_wire8(112); + sub_wire2(9, 113) <= sub_wire8(113); + sub_wire2(9, 114) <= sub_wire8(114); + sub_wire2(9, 115) <= sub_wire8(115); + sub_wire2(9, 116) <= sub_wire8(116); + sub_wire2(9, 117) <= sub_wire8(117); + sub_wire2(9, 118) <= sub_wire8(118); + sub_wire2(9, 119) <= sub_wire8(119); + sub_wire2(9, 120) <= sub_wire8(120); + sub_wire2(9, 121) <= sub_wire8(121); + sub_wire2(9, 122) <= sub_wire8(122); + sub_wire2(9, 123) <= sub_wire8(123); + sub_wire2(9, 124) <= sub_wire8(124); + sub_wire2(9, 125) <= sub_wire8(125); + sub_wire2(9, 126) <= sub_wire8(126); + sub_wire2(9, 127) <= sub_wire8(127); + sub_wire2(8, 0) <= sub_wire9(0); + sub_wire2(8, 1) <= sub_wire9(1); + sub_wire2(8, 2) <= sub_wire9(2); + sub_wire2(8, 3) <= sub_wire9(3); + sub_wire2(8, 4) <= sub_wire9(4); + sub_wire2(8, 5) <= sub_wire9(5); + sub_wire2(8, 6) <= sub_wire9(6); + sub_wire2(8, 7) <= sub_wire9(7); + sub_wire2(8, 8) <= sub_wire9(8); + sub_wire2(8, 9) <= sub_wire9(9); + sub_wire2(8, 10) <= sub_wire9(10); + sub_wire2(8, 11) <= sub_wire9(11); + sub_wire2(8, 12) <= sub_wire9(12); + sub_wire2(8, 13) <= sub_wire9(13); + sub_wire2(8, 14) <= sub_wire9(14); + sub_wire2(8, 15) <= sub_wire9(15); + sub_wire2(8, 16) <= sub_wire9(16); + sub_wire2(8, 17) <= sub_wire9(17); + sub_wire2(8, 18) <= sub_wire9(18); + sub_wire2(8, 19) <= sub_wire9(19); + sub_wire2(8, 20) <= sub_wire9(20); + sub_wire2(8, 21) <= sub_wire9(21); + sub_wire2(8, 22) <= sub_wire9(22); + sub_wire2(8, 23) <= sub_wire9(23); + sub_wire2(8, 24) <= sub_wire9(24); + sub_wire2(8, 25) <= sub_wire9(25); + sub_wire2(8, 26) <= sub_wire9(26); + sub_wire2(8, 27) <= sub_wire9(27); + sub_wire2(8, 28) <= sub_wire9(28); + sub_wire2(8, 29) <= sub_wire9(29); + sub_wire2(8, 30) <= sub_wire9(30); + sub_wire2(8, 31) <= sub_wire9(31); + sub_wire2(8, 32) <= sub_wire9(32); + sub_wire2(8, 33) <= sub_wire9(33); + sub_wire2(8, 34) <= sub_wire9(34); + sub_wire2(8, 35) <= sub_wire9(35); + sub_wire2(8, 36) <= sub_wire9(36); + sub_wire2(8, 37) <= sub_wire9(37); + sub_wire2(8, 38) <= sub_wire9(38); + sub_wire2(8, 39) <= sub_wire9(39); + sub_wire2(8, 40) <= sub_wire9(40); + sub_wire2(8, 41) <= sub_wire9(41); + sub_wire2(8, 42) <= sub_wire9(42); + sub_wire2(8, 43) <= sub_wire9(43); + sub_wire2(8, 44) <= sub_wire9(44); + sub_wire2(8, 45) <= sub_wire9(45); + sub_wire2(8, 46) <= sub_wire9(46); + sub_wire2(8, 47) <= sub_wire9(47); + sub_wire2(8, 48) <= sub_wire9(48); + sub_wire2(8, 49) <= sub_wire9(49); + sub_wire2(8, 50) <= sub_wire9(50); + sub_wire2(8, 51) <= sub_wire9(51); + sub_wire2(8, 52) <= sub_wire9(52); + sub_wire2(8, 53) <= sub_wire9(53); + sub_wire2(8, 54) <= sub_wire9(54); + sub_wire2(8, 55) <= sub_wire9(55); + sub_wire2(8, 56) <= sub_wire9(56); + sub_wire2(8, 57) <= sub_wire9(57); + sub_wire2(8, 58) <= sub_wire9(58); + sub_wire2(8, 59) <= sub_wire9(59); + sub_wire2(8, 60) <= sub_wire9(60); + sub_wire2(8, 61) <= sub_wire9(61); + sub_wire2(8, 62) <= sub_wire9(62); + sub_wire2(8, 63) <= sub_wire9(63); + sub_wire2(8, 64) <= sub_wire9(64); + sub_wire2(8, 65) <= sub_wire9(65); + sub_wire2(8, 66) <= sub_wire9(66); + sub_wire2(8, 67) <= sub_wire9(67); + sub_wire2(8, 68) <= sub_wire9(68); + sub_wire2(8, 69) <= sub_wire9(69); + sub_wire2(8, 70) <= sub_wire9(70); + sub_wire2(8, 71) <= sub_wire9(71); + sub_wire2(8, 72) <= sub_wire9(72); + sub_wire2(8, 73) <= sub_wire9(73); + sub_wire2(8, 74) <= sub_wire9(74); + sub_wire2(8, 75) <= sub_wire9(75); + sub_wire2(8, 76) <= sub_wire9(76); + sub_wire2(8, 77) <= sub_wire9(77); + sub_wire2(8, 78) <= sub_wire9(78); + sub_wire2(8, 79) <= sub_wire9(79); + sub_wire2(8, 80) <= sub_wire9(80); + sub_wire2(8, 81) <= sub_wire9(81); + sub_wire2(8, 82) <= sub_wire9(82); + sub_wire2(8, 83) <= sub_wire9(83); + sub_wire2(8, 84) <= sub_wire9(84); + sub_wire2(8, 85) <= sub_wire9(85); + sub_wire2(8, 86) <= sub_wire9(86); + sub_wire2(8, 87) <= sub_wire9(87); + sub_wire2(8, 88) <= sub_wire9(88); + sub_wire2(8, 89) <= sub_wire9(89); + sub_wire2(8, 90) <= sub_wire9(90); + sub_wire2(8, 91) <= sub_wire9(91); + sub_wire2(8, 92) <= sub_wire9(92); + sub_wire2(8, 93) <= sub_wire9(93); + sub_wire2(8, 94) <= sub_wire9(94); + sub_wire2(8, 95) <= sub_wire9(95); + sub_wire2(8, 96) <= sub_wire9(96); + sub_wire2(8, 97) <= sub_wire9(97); + sub_wire2(8, 98) <= sub_wire9(98); + sub_wire2(8, 99) <= sub_wire9(99); + sub_wire2(8, 100) <= sub_wire9(100); + sub_wire2(8, 101) <= sub_wire9(101); + sub_wire2(8, 102) <= sub_wire9(102); + sub_wire2(8, 103) <= sub_wire9(103); + sub_wire2(8, 104) <= sub_wire9(104); + sub_wire2(8, 105) <= sub_wire9(105); + sub_wire2(8, 106) <= sub_wire9(106); + sub_wire2(8, 107) <= sub_wire9(107); + sub_wire2(8, 108) <= sub_wire9(108); + sub_wire2(8, 109) <= sub_wire9(109); + sub_wire2(8, 110) <= sub_wire9(110); + sub_wire2(8, 111) <= sub_wire9(111); + sub_wire2(8, 112) <= sub_wire9(112); + sub_wire2(8, 113) <= sub_wire9(113); + sub_wire2(8, 114) <= sub_wire9(114); + sub_wire2(8, 115) <= sub_wire9(115); + sub_wire2(8, 116) <= sub_wire9(116); + sub_wire2(8, 117) <= sub_wire9(117); + sub_wire2(8, 118) <= sub_wire9(118); + sub_wire2(8, 119) <= sub_wire9(119); + sub_wire2(8, 120) <= sub_wire9(120); + sub_wire2(8, 121) <= sub_wire9(121); + sub_wire2(8, 122) <= sub_wire9(122); + sub_wire2(8, 123) <= sub_wire9(123); + sub_wire2(8, 124) <= sub_wire9(124); + sub_wire2(8, 125) <= sub_wire9(125); + sub_wire2(8, 126) <= sub_wire9(126); + sub_wire2(8, 127) <= sub_wire9(127); + sub_wire2(7, 0) <= sub_wire10(0); + sub_wire2(7, 1) <= sub_wire10(1); + sub_wire2(7, 2) <= sub_wire10(2); + sub_wire2(7, 3) <= sub_wire10(3); + sub_wire2(7, 4) <= sub_wire10(4); + sub_wire2(7, 5) <= sub_wire10(5); + sub_wire2(7, 6) <= sub_wire10(6); + sub_wire2(7, 7) <= sub_wire10(7); + sub_wire2(7, 8) <= sub_wire10(8); + sub_wire2(7, 9) <= sub_wire10(9); + sub_wire2(7, 10) <= sub_wire10(10); + sub_wire2(7, 11) <= sub_wire10(11); + sub_wire2(7, 12) <= sub_wire10(12); + sub_wire2(7, 13) <= sub_wire10(13); + sub_wire2(7, 14) <= sub_wire10(14); + sub_wire2(7, 15) <= sub_wire10(15); + sub_wire2(7, 16) <= sub_wire10(16); + sub_wire2(7, 17) <= sub_wire10(17); + sub_wire2(7, 18) <= sub_wire10(18); + sub_wire2(7, 19) <= sub_wire10(19); + sub_wire2(7, 20) <= sub_wire10(20); + sub_wire2(7, 21) <= sub_wire10(21); + sub_wire2(7, 22) <= sub_wire10(22); + sub_wire2(7, 23) <= sub_wire10(23); + sub_wire2(7, 24) <= sub_wire10(24); + sub_wire2(7, 25) <= sub_wire10(25); + sub_wire2(7, 26) <= sub_wire10(26); + sub_wire2(7, 27) <= sub_wire10(27); + sub_wire2(7, 28) <= sub_wire10(28); + sub_wire2(7, 29) <= sub_wire10(29); + sub_wire2(7, 30) <= sub_wire10(30); + sub_wire2(7, 31) <= sub_wire10(31); + sub_wire2(7, 32) <= sub_wire10(32); + sub_wire2(7, 33) <= sub_wire10(33); + sub_wire2(7, 34) <= sub_wire10(34); + sub_wire2(7, 35) <= sub_wire10(35); + sub_wire2(7, 36) <= sub_wire10(36); + sub_wire2(7, 37) <= sub_wire10(37); + sub_wire2(7, 38) <= sub_wire10(38); + sub_wire2(7, 39) <= sub_wire10(39); + sub_wire2(7, 40) <= sub_wire10(40); + sub_wire2(7, 41) <= sub_wire10(41); + sub_wire2(7, 42) <= sub_wire10(42); + sub_wire2(7, 43) <= sub_wire10(43); + sub_wire2(7, 44) <= sub_wire10(44); + sub_wire2(7, 45) <= sub_wire10(45); + sub_wire2(7, 46) <= sub_wire10(46); + sub_wire2(7, 47) <= sub_wire10(47); + sub_wire2(7, 48) <= sub_wire10(48); + sub_wire2(7, 49) <= sub_wire10(49); + sub_wire2(7, 50) <= sub_wire10(50); + sub_wire2(7, 51) <= sub_wire10(51); + sub_wire2(7, 52) <= sub_wire10(52); + sub_wire2(7, 53) <= sub_wire10(53); + sub_wire2(7, 54) <= sub_wire10(54); + sub_wire2(7, 55) <= sub_wire10(55); + sub_wire2(7, 56) <= sub_wire10(56); + sub_wire2(7, 57) <= sub_wire10(57); + sub_wire2(7, 58) <= sub_wire10(58); + sub_wire2(7, 59) <= sub_wire10(59); + sub_wire2(7, 60) <= sub_wire10(60); + sub_wire2(7, 61) <= sub_wire10(61); + sub_wire2(7, 62) <= sub_wire10(62); + sub_wire2(7, 63) <= sub_wire10(63); + sub_wire2(7, 64) <= sub_wire10(64); + sub_wire2(7, 65) <= sub_wire10(65); + sub_wire2(7, 66) <= sub_wire10(66); + sub_wire2(7, 67) <= sub_wire10(67); + sub_wire2(7, 68) <= sub_wire10(68); + sub_wire2(7, 69) <= sub_wire10(69); + sub_wire2(7, 70) <= sub_wire10(70); + sub_wire2(7, 71) <= sub_wire10(71); + sub_wire2(7, 72) <= sub_wire10(72); + sub_wire2(7, 73) <= sub_wire10(73); + sub_wire2(7, 74) <= sub_wire10(74); + sub_wire2(7, 75) <= sub_wire10(75); + sub_wire2(7, 76) <= sub_wire10(76); + sub_wire2(7, 77) <= sub_wire10(77); + sub_wire2(7, 78) <= sub_wire10(78); + sub_wire2(7, 79) <= sub_wire10(79); + sub_wire2(7, 80) <= sub_wire10(80); + sub_wire2(7, 81) <= sub_wire10(81); + sub_wire2(7, 82) <= sub_wire10(82); + sub_wire2(7, 83) <= sub_wire10(83); + sub_wire2(7, 84) <= sub_wire10(84); + sub_wire2(7, 85) <= sub_wire10(85); + sub_wire2(7, 86) <= sub_wire10(86); + sub_wire2(7, 87) <= sub_wire10(87); + sub_wire2(7, 88) <= sub_wire10(88); + sub_wire2(7, 89) <= sub_wire10(89); + sub_wire2(7, 90) <= sub_wire10(90); + sub_wire2(7, 91) <= sub_wire10(91); + sub_wire2(7, 92) <= sub_wire10(92); + sub_wire2(7, 93) <= sub_wire10(93); + sub_wire2(7, 94) <= sub_wire10(94); + sub_wire2(7, 95) <= sub_wire10(95); + sub_wire2(7, 96) <= sub_wire10(96); + sub_wire2(7, 97) <= sub_wire10(97); + sub_wire2(7, 98) <= sub_wire10(98); + sub_wire2(7, 99) <= sub_wire10(99); + sub_wire2(7, 100) <= sub_wire10(100); + sub_wire2(7, 101) <= sub_wire10(101); + sub_wire2(7, 102) <= sub_wire10(102); + sub_wire2(7, 103) <= sub_wire10(103); + sub_wire2(7, 104) <= sub_wire10(104); + sub_wire2(7, 105) <= sub_wire10(105); + sub_wire2(7, 106) <= sub_wire10(106); + sub_wire2(7, 107) <= sub_wire10(107); + sub_wire2(7, 108) <= sub_wire10(108); + sub_wire2(7, 109) <= sub_wire10(109); + sub_wire2(7, 110) <= sub_wire10(110); + sub_wire2(7, 111) <= sub_wire10(111); + sub_wire2(7, 112) <= sub_wire10(112); + sub_wire2(7, 113) <= sub_wire10(113); + sub_wire2(7, 114) <= sub_wire10(114); + sub_wire2(7, 115) <= sub_wire10(115); + sub_wire2(7, 116) <= sub_wire10(116); + sub_wire2(7, 117) <= sub_wire10(117); + sub_wire2(7, 118) <= sub_wire10(118); + sub_wire2(7, 119) <= sub_wire10(119); + sub_wire2(7, 120) <= sub_wire10(120); + sub_wire2(7, 121) <= sub_wire10(121); + sub_wire2(7, 122) <= sub_wire10(122); + sub_wire2(7, 123) <= sub_wire10(123); + sub_wire2(7, 124) <= sub_wire10(124); + sub_wire2(7, 125) <= sub_wire10(125); + sub_wire2(7, 126) <= sub_wire10(126); + sub_wire2(7, 127) <= sub_wire10(127); + sub_wire2(6, 0) <= sub_wire11(0); + sub_wire2(6, 1) <= sub_wire11(1); + sub_wire2(6, 2) <= sub_wire11(2); + sub_wire2(6, 3) <= sub_wire11(3); + sub_wire2(6, 4) <= sub_wire11(4); + sub_wire2(6, 5) <= sub_wire11(5); + sub_wire2(6, 6) <= sub_wire11(6); + sub_wire2(6, 7) <= sub_wire11(7); + sub_wire2(6, 8) <= sub_wire11(8); + sub_wire2(6, 9) <= sub_wire11(9); + sub_wire2(6, 10) <= sub_wire11(10); + sub_wire2(6, 11) <= sub_wire11(11); + sub_wire2(6, 12) <= sub_wire11(12); + sub_wire2(6, 13) <= sub_wire11(13); + sub_wire2(6, 14) <= sub_wire11(14); + sub_wire2(6, 15) <= sub_wire11(15); + sub_wire2(6, 16) <= sub_wire11(16); + sub_wire2(6, 17) <= sub_wire11(17); + sub_wire2(6, 18) <= sub_wire11(18); + sub_wire2(6, 19) <= sub_wire11(19); + sub_wire2(6, 20) <= sub_wire11(20); + sub_wire2(6, 21) <= sub_wire11(21); + sub_wire2(6, 22) <= sub_wire11(22); + sub_wire2(6, 23) <= sub_wire11(23); + sub_wire2(6, 24) <= sub_wire11(24); + sub_wire2(6, 25) <= sub_wire11(25); + sub_wire2(6, 26) <= sub_wire11(26); + sub_wire2(6, 27) <= sub_wire11(27); + sub_wire2(6, 28) <= sub_wire11(28); + sub_wire2(6, 29) <= sub_wire11(29); + sub_wire2(6, 30) <= sub_wire11(30); + sub_wire2(6, 31) <= sub_wire11(31); + sub_wire2(6, 32) <= sub_wire11(32); + sub_wire2(6, 33) <= sub_wire11(33); + sub_wire2(6, 34) <= sub_wire11(34); + sub_wire2(6, 35) <= sub_wire11(35); + sub_wire2(6, 36) <= sub_wire11(36); + sub_wire2(6, 37) <= sub_wire11(37); + sub_wire2(6, 38) <= sub_wire11(38); + sub_wire2(6, 39) <= sub_wire11(39); + sub_wire2(6, 40) <= sub_wire11(40); + sub_wire2(6, 41) <= sub_wire11(41); + sub_wire2(6, 42) <= sub_wire11(42); + sub_wire2(6, 43) <= sub_wire11(43); + sub_wire2(6, 44) <= sub_wire11(44); + sub_wire2(6, 45) <= sub_wire11(45); + sub_wire2(6, 46) <= sub_wire11(46); + sub_wire2(6, 47) <= sub_wire11(47); + sub_wire2(6, 48) <= sub_wire11(48); + sub_wire2(6, 49) <= sub_wire11(49); + sub_wire2(6, 50) <= sub_wire11(50); + sub_wire2(6, 51) <= sub_wire11(51); + sub_wire2(6, 52) <= sub_wire11(52); + sub_wire2(6, 53) <= sub_wire11(53); + sub_wire2(6, 54) <= sub_wire11(54); + sub_wire2(6, 55) <= sub_wire11(55); + sub_wire2(6, 56) <= sub_wire11(56); + sub_wire2(6, 57) <= sub_wire11(57); + sub_wire2(6, 58) <= sub_wire11(58); + sub_wire2(6, 59) <= sub_wire11(59); + sub_wire2(6, 60) <= sub_wire11(60); + sub_wire2(6, 61) <= sub_wire11(61); + sub_wire2(6, 62) <= sub_wire11(62); + sub_wire2(6, 63) <= sub_wire11(63); + sub_wire2(6, 64) <= sub_wire11(64); + sub_wire2(6, 65) <= sub_wire11(65); + sub_wire2(6, 66) <= sub_wire11(66); + sub_wire2(6, 67) <= sub_wire11(67); + sub_wire2(6, 68) <= sub_wire11(68); + sub_wire2(6, 69) <= sub_wire11(69); + sub_wire2(6, 70) <= sub_wire11(70); + sub_wire2(6, 71) <= sub_wire11(71); + sub_wire2(6, 72) <= sub_wire11(72); + sub_wire2(6, 73) <= sub_wire11(73); + sub_wire2(6, 74) <= sub_wire11(74); + sub_wire2(6, 75) <= sub_wire11(75); + sub_wire2(6, 76) <= sub_wire11(76); + sub_wire2(6, 77) <= sub_wire11(77); + sub_wire2(6, 78) <= sub_wire11(78); + sub_wire2(6, 79) <= sub_wire11(79); + sub_wire2(6, 80) <= sub_wire11(80); + sub_wire2(6, 81) <= sub_wire11(81); + sub_wire2(6, 82) <= sub_wire11(82); + sub_wire2(6, 83) <= sub_wire11(83); + sub_wire2(6, 84) <= sub_wire11(84); + sub_wire2(6, 85) <= sub_wire11(85); + sub_wire2(6, 86) <= sub_wire11(86); + sub_wire2(6, 87) <= sub_wire11(87); + sub_wire2(6, 88) <= sub_wire11(88); + sub_wire2(6, 89) <= sub_wire11(89); + sub_wire2(6, 90) <= sub_wire11(90); + sub_wire2(6, 91) <= sub_wire11(91); + sub_wire2(6, 92) <= sub_wire11(92); + sub_wire2(6, 93) <= sub_wire11(93); + sub_wire2(6, 94) <= sub_wire11(94); + sub_wire2(6, 95) <= sub_wire11(95); + sub_wire2(6, 96) <= sub_wire11(96); + sub_wire2(6, 97) <= sub_wire11(97); + sub_wire2(6, 98) <= sub_wire11(98); + sub_wire2(6, 99) <= sub_wire11(99); + sub_wire2(6, 100) <= sub_wire11(100); + sub_wire2(6, 101) <= sub_wire11(101); + sub_wire2(6, 102) <= sub_wire11(102); + sub_wire2(6, 103) <= sub_wire11(103); + sub_wire2(6, 104) <= sub_wire11(104); + sub_wire2(6, 105) <= sub_wire11(105); + sub_wire2(6, 106) <= sub_wire11(106); + sub_wire2(6, 107) <= sub_wire11(107); + sub_wire2(6, 108) <= sub_wire11(108); + sub_wire2(6, 109) <= sub_wire11(109); + sub_wire2(6, 110) <= sub_wire11(110); + sub_wire2(6, 111) <= sub_wire11(111); + sub_wire2(6, 112) <= sub_wire11(112); + sub_wire2(6, 113) <= sub_wire11(113); + sub_wire2(6, 114) <= sub_wire11(114); + sub_wire2(6, 115) <= sub_wire11(115); + sub_wire2(6, 116) <= sub_wire11(116); + sub_wire2(6, 117) <= sub_wire11(117); + sub_wire2(6, 118) <= sub_wire11(118); + sub_wire2(6, 119) <= sub_wire11(119); + sub_wire2(6, 120) <= sub_wire11(120); + sub_wire2(6, 121) <= sub_wire11(121); + sub_wire2(6, 122) <= sub_wire11(122); + sub_wire2(6, 123) <= sub_wire11(123); + sub_wire2(6, 124) <= sub_wire11(124); + sub_wire2(6, 125) <= sub_wire11(125); + sub_wire2(6, 126) <= sub_wire11(126); + sub_wire2(6, 127) <= sub_wire11(127); + sub_wire2(5, 0) <= sub_wire12(0); + sub_wire2(5, 1) <= sub_wire12(1); + sub_wire2(5, 2) <= sub_wire12(2); + sub_wire2(5, 3) <= sub_wire12(3); + sub_wire2(5, 4) <= sub_wire12(4); + sub_wire2(5, 5) <= sub_wire12(5); + sub_wire2(5, 6) <= sub_wire12(6); + sub_wire2(5, 7) <= sub_wire12(7); + sub_wire2(5, 8) <= sub_wire12(8); + sub_wire2(5, 9) <= sub_wire12(9); + sub_wire2(5, 10) <= sub_wire12(10); + sub_wire2(5, 11) <= sub_wire12(11); + sub_wire2(5, 12) <= sub_wire12(12); + sub_wire2(5, 13) <= sub_wire12(13); + sub_wire2(5, 14) <= sub_wire12(14); + sub_wire2(5, 15) <= sub_wire12(15); + sub_wire2(5, 16) <= sub_wire12(16); + sub_wire2(5, 17) <= sub_wire12(17); + sub_wire2(5, 18) <= sub_wire12(18); + sub_wire2(5, 19) <= sub_wire12(19); + sub_wire2(5, 20) <= sub_wire12(20); + sub_wire2(5, 21) <= sub_wire12(21); + sub_wire2(5, 22) <= sub_wire12(22); + sub_wire2(5, 23) <= sub_wire12(23); + sub_wire2(5, 24) <= sub_wire12(24); + sub_wire2(5, 25) <= sub_wire12(25); + sub_wire2(5, 26) <= sub_wire12(26); + sub_wire2(5, 27) <= sub_wire12(27); + sub_wire2(5, 28) <= sub_wire12(28); + sub_wire2(5, 29) <= sub_wire12(29); + sub_wire2(5, 30) <= sub_wire12(30); + sub_wire2(5, 31) <= sub_wire12(31); + sub_wire2(5, 32) <= sub_wire12(32); + sub_wire2(5, 33) <= sub_wire12(33); + sub_wire2(5, 34) <= sub_wire12(34); + sub_wire2(5, 35) <= sub_wire12(35); + sub_wire2(5, 36) <= sub_wire12(36); + sub_wire2(5, 37) <= sub_wire12(37); + sub_wire2(5, 38) <= sub_wire12(38); + sub_wire2(5, 39) <= sub_wire12(39); + sub_wire2(5, 40) <= sub_wire12(40); + sub_wire2(5, 41) <= sub_wire12(41); + sub_wire2(5, 42) <= sub_wire12(42); + sub_wire2(5, 43) <= sub_wire12(43); + sub_wire2(5, 44) <= sub_wire12(44); + sub_wire2(5, 45) <= sub_wire12(45); + sub_wire2(5, 46) <= sub_wire12(46); + sub_wire2(5, 47) <= sub_wire12(47); + sub_wire2(5, 48) <= sub_wire12(48); + sub_wire2(5, 49) <= sub_wire12(49); + sub_wire2(5, 50) <= sub_wire12(50); + sub_wire2(5, 51) <= sub_wire12(51); + sub_wire2(5, 52) <= sub_wire12(52); + sub_wire2(5, 53) <= sub_wire12(53); + sub_wire2(5, 54) <= sub_wire12(54); + sub_wire2(5, 55) <= sub_wire12(55); + sub_wire2(5, 56) <= sub_wire12(56); + sub_wire2(5, 57) <= sub_wire12(57); + sub_wire2(5, 58) <= sub_wire12(58); + sub_wire2(5, 59) <= sub_wire12(59); + sub_wire2(5, 60) <= sub_wire12(60); + sub_wire2(5, 61) <= sub_wire12(61); + sub_wire2(5, 62) <= sub_wire12(62); + sub_wire2(5, 63) <= sub_wire12(63); + sub_wire2(5, 64) <= sub_wire12(64); + sub_wire2(5, 65) <= sub_wire12(65); + sub_wire2(5, 66) <= sub_wire12(66); + sub_wire2(5, 67) <= sub_wire12(67); + sub_wire2(5, 68) <= sub_wire12(68); + sub_wire2(5, 69) <= sub_wire12(69); + sub_wire2(5, 70) <= sub_wire12(70); + sub_wire2(5, 71) <= sub_wire12(71); + sub_wire2(5, 72) <= sub_wire12(72); + sub_wire2(5, 73) <= sub_wire12(73); + sub_wire2(5, 74) <= sub_wire12(74); + sub_wire2(5, 75) <= sub_wire12(75); + sub_wire2(5, 76) <= sub_wire12(76); + sub_wire2(5, 77) <= sub_wire12(77); + sub_wire2(5, 78) <= sub_wire12(78); + sub_wire2(5, 79) <= sub_wire12(79); + sub_wire2(5, 80) <= sub_wire12(80); + sub_wire2(5, 81) <= sub_wire12(81); + sub_wire2(5, 82) <= sub_wire12(82); + sub_wire2(5, 83) <= sub_wire12(83); + sub_wire2(5, 84) <= sub_wire12(84); + sub_wire2(5, 85) <= sub_wire12(85); + sub_wire2(5, 86) <= sub_wire12(86); + sub_wire2(5, 87) <= sub_wire12(87); + sub_wire2(5, 88) <= sub_wire12(88); + sub_wire2(5, 89) <= sub_wire12(89); + sub_wire2(5, 90) <= sub_wire12(90); + sub_wire2(5, 91) <= sub_wire12(91); + sub_wire2(5, 92) <= sub_wire12(92); + sub_wire2(5, 93) <= sub_wire12(93); + sub_wire2(5, 94) <= sub_wire12(94); + sub_wire2(5, 95) <= sub_wire12(95); + sub_wire2(5, 96) <= sub_wire12(96); + sub_wire2(5, 97) <= sub_wire12(97); + sub_wire2(5, 98) <= sub_wire12(98); + sub_wire2(5, 99) <= sub_wire12(99); + sub_wire2(5, 100) <= sub_wire12(100); + sub_wire2(5, 101) <= sub_wire12(101); + sub_wire2(5, 102) <= sub_wire12(102); + sub_wire2(5, 103) <= sub_wire12(103); + sub_wire2(5, 104) <= sub_wire12(104); + sub_wire2(5, 105) <= sub_wire12(105); + sub_wire2(5, 106) <= sub_wire12(106); + sub_wire2(5, 107) <= sub_wire12(107); + sub_wire2(5, 108) <= sub_wire12(108); + sub_wire2(5, 109) <= sub_wire12(109); + sub_wire2(5, 110) <= sub_wire12(110); + sub_wire2(5, 111) <= sub_wire12(111); + sub_wire2(5, 112) <= sub_wire12(112); + sub_wire2(5, 113) <= sub_wire12(113); + sub_wire2(5, 114) <= sub_wire12(114); + sub_wire2(5, 115) <= sub_wire12(115); + sub_wire2(5, 116) <= sub_wire12(116); + sub_wire2(5, 117) <= sub_wire12(117); + sub_wire2(5, 118) <= sub_wire12(118); + sub_wire2(5, 119) <= sub_wire12(119); + sub_wire2(5, 120) <= sub_wire12(120); + sub_wire2(5, 121) <= sub_wire12(121); + sub_wire2(5, 122) <= sub_wire12(122); + sub_wire2(5, 123) <= sub_wire12(123); + sub_wire2(5, 124) <= sub_wire12(124); + sub_wire2(5, 125) <= sub_wire12(125); + sub_wire2(5, 126) <= sub_wire12(126); + sub_wire2(5, 127) <= sub_wire12(127); + sub_wire2(4, 0) <= sub_wire13(0); + sub_wire2(4, 1) <= sub_wire13(1); + sub_wire2(4, 2) <= sub_wire13(2); + sub_wire2(4, 3) <= sub_wire13(3); + sub_wire2(4, 4) <= sub_wire13(4); + sub_wire2(4, 5) <= sub_wire13(5); + sub_wire2(4, 6) <= sub_wire13(6); + sub_wire2(4, 7) <= sub_wire13(7); + sub_wire2(4, 8) <= sub_wire13(8); + sub_wire2(4, 9) <= sub_wire13(9); + sub_wire2(4, 10) <= sub_wire13(10); + sub_wire2(4, 11) <= sub_wire13(11); + sub_wire2(4, 12) <= sub_wire13(12); + sub_wire2(4, 13) <= sub_wire13(13); + sub_wire2(4, 14) <= sub_wire13(14); + sub_wire2(4, 15) <= sub_wire13(15); + sub_wire2(4, 16) <= sub_wire13(16); + sub_wire2(4, 17) <= sub_wire13(17); + sub_wire2(4, 18) <= sub_wire13(18); + sub_wire2(4, 19) <= sub_wire13(19); + sub_wire2(4, 20) <= sub_wire13(20); + sub_wire2(4, 21) <= sub_wire13(21); + sub_wire2(4, 22) <= sub_wire13(22); + sub_wire2(4, 23) <= sub_wire13(23); + sub_wire2(4, 24) <= sub_wire13(24); + sub_wire2(4, 25) <= sub_wire13(25); + sub_wire2(4, 26) <= sub_wire13(26); + sub_wire2(4, 27) <= sub_wire13(27); + sub_wire2(4, 28) <= sub_wire13(28); + sub_wire2(4, 29) <= sub_wire13(29); + sub_wire2(4, 30) <= sub_wire13(30); + sub_wire2(4, 31) <= sub_wire13(31); + sub_wire2(4, 32) <= sub_wire13(32); + sub_wire2(4, 33) <= sub_wire13(33); + sub_wire2(4, 34) <= sub_wire13(34); + sub_wire2(4, 35) <= sub_wire13(35); + sub_wire2(4, 36) <= sub_wire13(36); + sub_wire2(4, 37) <= sub_wire13(37); + sub_wire2(4, 38) <= sub_wire13(38); + sub_wire2(4, 39) <= sub_wire13(39); + sub_wire2(4, 40) <= sub_wire13(40); + sub_wire2(4, 41) <= sub_wire13(41); + sub_wire2(4, 42) <= sub_wire13(42); + sub_wire2(4, 43) <= sub_wire13(43); + sub_wire2(4, 44) <= sub_wire13(44); + sub_wire2(4, 45) <= sub_wire13(45); + sub_wire2(4, 46) <= sub_wire13(46); + sub_wire2(4, 47) <= sub_wire13(47); + sub_wire2(4, 48) <= sub_wire13(48); + sub_wire2(4, 49) <= sub_wire13(49); + sub_wire2(4, 50) <= sub_wire13(50); + sub_wire2(4, 51) <= sub_wire13(51); + sub_wire2(4, 52) <= sub_wire13(52); + sub_wire2(4, 53) <= sub_wire13(53); + sub_wire2(4, 54) <= sub_wire13(54); + sub_wire2(4, 55) <= sub_wire13(55); + sub_wire2(4, 56) <= sub_wire13(56); + sub_wire2(4, 57) <= sub_wire13(57); + sub_wire2(4, 58) <= sub_wire13(58); + sub_wire2(4, 59) <= sub_wire13(59); + sub_wire2(4, 60) <= sub_wire13(60); + sub_wire2(4, 61) <= sub_wire13(61); + sub_wire2(4, 62) <= sub_wire13(62); + sub_wire2(4, 63) <= sub_wire13(63); + sub_wire2(4, 64) <= sub_wire13(64); + sub_wire2(4, 65) <= sub_wire13(65); + sub_wire2(4, 66) <= sub_wire13(66); + sub_wire2(4, 67) <= sub_wire13(67); + sub_wire2(4, 68) <= sub_wire13(68); + sub_wire2(4, 69) <= sub_wire13(69); + sub_wire2(4, 70) <= sub_wire13(70); + sub_wire2(4, 71) <= sub_wire13(71); + sub_wire2(4, 72) <= sub_wire13(72); + sub_wire2(4, 73) <= sub_wire13(73); + sub_wire2(4, 74) <= sub_wire13(74); + sub_wire2(4, 75) <= sub_wire13(75); + sub_wire2(4, 76) <= sub_wire13(76); + sub_wire2(4, 77) <= sub_wire13(77); + sub_wire2(4, 78) <= sub_wire13(78); + sub_wire2(4, 79) <= sub_wire13(79); + sub_wire2(4, 80) <= sub_wire13(80); + sub_wire2(4, 81) <= sub_wire13(81); + sub_wire2(4, 82) <= sub_wire13(82); + sub_wire2(4, 83) <= sub_wire13(83); + sub_wire2(4, 84) <= sub_wire13(84); + sub_wire2(4, 85) <= sub_wire13(85); + sub_wire2(4, 86) <= sub_wire13(86); + sub_wire2(4, 87) <= sub_wire13(87); + sub_wire2(4, 88) <= sub_wire13(88); + sub_wire2(4, 89) <= sub_wire13(89); + sub_wire2(4, 90) <= sub_wire13(90); + sub_wire2(4, 91) <= sub_wire13(91); + sub_wire2(4, 92) <= sub_wire13(92); + sub_wire2(4, 93) <= sub_wire13(93); + sub_wire2(4, 94) <= sub_wire13(94); + sub_wire2(4, 95) <= sub_wire13(95); + sub_wire2(4, 96) <= sub_wire13(96); + sub_wire2(4, 97) <= sub_wire13(97); + sub_wire2(4, 98) <= sub_wire13(98); + sub_wire2(4, 99) <= sub_wire13(99); + sub_wire2(4, 100) <= sub_wire13(100); + sub_wire2(4, 101) <= sub_wire13(101); + sub_wire2(4, 102) <= sub_wire13(102); + sub_wire2(4, 103) <= sub_wire13(103); + sub_wire2(4, 104) <= sub_wire13(104); + sub_wire2(4, 105) <= sub_wire13(105); + sub_wire2(4, 106) <= sub_wire13(106); + sub_wire2(4, 107) <= sub_wire13(107); + sub_wire2(4, 108) <= sub_wire13(108); + sub_wire2(4, 109) <= sub_wire13(109); + sub_wire2(4, 110) <= sub_wire13(110); + sub_wire2(4, 111) <= sub_wire13(111); + sub_wire2(4, 112) <= sub_wire13(112); + sub_wire2(4, 113) <= sub_wire13(113); + sub_wire2(4, 114) <= sub_wire13(114); + sub_wire2(4, 115) <= sub_wire13(115); + sub_wire2(4, 116) <= sub_wire13(116); + sub_wire2(4, 117) <= sub_wire13(117); + sub_wire2(4, 118) <= sub_wire13(118); + sub_wire2(4, 119) <= sub_wire13(119); + sub_wire2(4, 120) <= sub_wire13(120); + sub_wire2(4, 121) <= sub_wire13(121); + sub_wire2(4, 122) <= sub_wire13(122); + sub_wire2(4, 123) <= sub_wire13(123); + sub_wire2(4, 124) <= sub_wire13(124); + sub_wire2(4, 125) <= sub_wire13(125); + sub_wire2(4, 126) <= sub_wire13(126); + sub_wire2(4, 127) <= sub_wire13(127); + sub_wire2(3, 0) <= sub_wire14(0); + sub_wire2(3, 1) <= sub_wire14(1); + sub_wire2(3, 2) <= sub_wire14(2); + sub_wire2(3, 3) <= sub_wire14(3); + sub_wire2(3, 4) <= sub_wire14(4); + sub_wire2(3, 5) <= sub_wire14(5); + sub_wire2(3, 6) <= sub_wire14(6); + sub_wire2(3, 7) <= sub_wire14(7); + sub_wire2(3, 8) <= sub_wire14(8); + sub_wire2(3, 9) <= sub_wire14(9); + sub_wire2(3, 10) <= sub_wire14(10); + sub_wire2(3, 11) <= sub_wire14(11); + sub_wire2(3, 12) <= sub_wire14(12); + sub_wire2(3, 13) <= sub_wire14(13); + sub_wire2(3, 14) <= sub_wire14(14); + sub_wire2(3, 15) <= sub_wire14(15); + sub_wire2(3, 16) <= sub_wire14(16); + sub_wire2(3, 17) <= sub_wire14(17); + sub_wire2(3, 18) <= sub_wire14(18); + sub_wire2(3, 19) <= sub_wire14(19); + sub_wire2(3, 20) <= sub_wire14(20); + sub_wire2(3, 21) <= sub_wire14(21); + sub_wire2(3, 22) <= sub_wire14(22); + sub_wire2(3, 23) <= sub_wire14(23); + sub_wire2(3, 24) <= sub_wire14(24); + sub_wire2(3, 25) <= sub_wire14(25); + sub_wire2(3, 26) <= sub_wire14(26); + sub_wire2(3, 27) <= sub_wire14(27); + sub_wire2(3, 28) <= sub_wire14(28); + sub_wire2(3, 29) <= sub_wire14(29); + sub_wire2(3, 30) <= sub_wire14(30); + sub_wire2(3, 31) <= sub_wire14(31); + sub_wire2(3, 32) <= sub_wire14(32); + sub_wire2(3, 33) <= sub_wire14(33); + sub_wire2(3, 34) <= sub_wire14(34); + sub_wire2(3, 35) <= sub_wire14(35); + sub_wire2(3, 36) <= sub_wire14(36); + sub_wire2(3, 37) <= sub_wire14(37); + sub_wire2(3, 38) <= sub_wire14(38); + sub_wire2(3, 39) <= sub_wire14(39); + sub_wire2(3, 40) <= sub_wire14(40); + sub_wire2(3, 41) <= sub_wire14(41); + sub_wire2(3, 42) <= sub_wire14(42); + sub_wire2(3, 43) <= sub_wire14(43); + sub_wire2(3, 44) <= sub_wire14(44); + sub_wire2(3, 45) <= sub_wire14(45); + sub_wire2(3, 46) <= sub_wire14(46); + sub_wire2(3, 47) <= sub_wire14(47); + sub_wire2(3, 48) <= sub_wire14(48); + sub_wire2(3, 49) <= sub_wire14(49); + sub_wire2(3, 50) <= sub_wire14(50); + sub_wire2(3, 51) <= sub_wire14(51); + sub_wire2(3, 52) <= sub_wire14(52); + sub_wire2(3, 53) <= sub_wire14(53); + sub_wire2(3, 54) <= sub_wire14(54); + sub_wire2(3, 55) <= sub_wire14(55); + sub_wire2(3, 56) <= sub_wire14(56); + sub_wire2(3, 57) <= sub_wire14(57); + sub_wire2(3, 58) <= sub_wire14(58); + sub_wire2(3, 59) <= sub_wire14(59); + sub_wire2(3, 60) <= sub_wire14(60); + sub_wire2(3, 61) <= sub_wire14(61); + sub_wire2(3, 62) <= sub_wire14(62); + sub_wire2(3, 63) <= sub_wire14(63); + sub_wire2(3, 64) <= sub_wire14(64); + sub_wire2(3, 65) <= sub_wire14(65); + sub_wire2(3, 66) <= sub_wire14(66); + sub_wire2(3, 67) <= sub_wire14(67); + sub_wire2(3, 68) <= sub_wire14(68); + sub_wire2(3, 69) <= sub_wire14(69); + sub_wire2(3, 70) <= sub_wire14(70); + sub_wire2(3, 71) <= sub_wire14(71); + sub_wire2(3, 72) <= sub_wire14(72); + sub_wire2(3, 73) <= sub_wire14(73); + sub_wire2(3, 74) <= sub_wire14(74); + sub_wire2(3, 75) <= sub_wire14(75); + sub_wire2(3, 76) <= sub_wire14(76); + sub_wire2(3, 77) <= sub_wire14(77); + sub_wire2(3, 78) <= sub_wire14(78); + sub_wire2(3, 79) <= sub_wire14(79); + sub_wire2(3, 80) <= sub_wire14(80); + sub_wire2(3, 81) <= sub_wire14(81); + sub_wire2(3, 82) <= sub_wire14(82); + sub_wire2(3, 83) <= sub_wire14(83); + sub_wire2(3, 84) <= sub_wire14(84); + sub_wire2(3, 85) <= sub_wire14(85); + sub_wire2(3, 86) <= sub_wire14(86); + sub_wire2(3, 87) <= sub_wire14(87); + sub_wire2(3, 88) <= sub_wire14(88); + sub_wire2(3, 89) <= sub_wire14(89); + sub_wire2(3, 90) <= sub_wire14(90); + sub_wire2(3, 91) <= sub_wire14(91); + sub_wire2(3, 92) <= sub_wire14(92); + sub_wire2(3, 93) <= sub_wire14(93); + sub_wire2(3, 94) <= sub_wire14(94); + sub_wire2(3, 95) <= sub_wire14(95); + sub_wire2(3, 96) <= sub_wire14(96); + sub_wire2(3, 97) <= sub_wire14(97); + sub_wire2(3, 98) <= sub_wire14(98); + sub_wire2(3, 99) <= sub_wire14(99); + sub_wire2(3, 100) <= sub_wire14(100); + sub_wire2(3, 101) <= sub_wire14(101); + sub_wire2(3, 102) <= sub_wire14(102); + sub_wire2(3, 103) <= sub_wire14(103); + sub_wire2(3, 104) <= sub_wire14(104); + sub_wire2(3, 105) <= sub_wire14(105); + sub_wire2(3, 106) <= sub_wire14(106); + sub_wire2(3, 107) <= sub_wire14(107); + sub_wire2(3, 108) <= sub_wire14(108); + sub_wire2(3, 109) <= sub_wire14(109); + sub_wire2(3, 110) <= sub_wire14(110); + sub_wire2(3, 111) <= sub_wire14(111); + sub_wire2(3, 112) <= sub_wire14(112); + sub_wire2(3, 113) <= sub_wire14(113); + sub_wire2(3, 114) <= sub_wire14(114); + sub_wire2(3, 115) <= sub_wire14(115); + sub_wire2(3, 116) <= sub_wire14(116); + sub_wire2(3, 117) <= sub_wire14(117); + sub_wire2(3, 118) <= sub_wire14(118); + sub_wire2(3, 119) <= sub_wire14(119); + sub_wire2(3, 120) <= sub_wire14(120); + sub_wire2(3, 121) <= sub_wire14(121); + sub_wire2(3, 122) <= sub_wire14(122); + sub_wire2(3, 123) <= sub_wire14(123); + sub_wire2(3, 124) <= sub_wire14(124); + sub_wire2(3, 125) <= sub_wire14(125); + sub_wire2(3, 126) <= sub_wire14(126); + sub_wire2(3, 127) <= sub_wire14(127); + sub_wire2(2, 0) <= sub_wire15(0); + sub_wire2(2, 1) <= sub_wire15(1); + sub_wire2(2, 2) <= sub_wire15(2); + sub_wire2(2, 3) <= sub_wire15(3); + sub_wire2(2, 4) <= sub_wire15(4); + sub_wire2(2, 5) <= sub_wire15(5); + sub_wire2(2, 6) <= sub_wire15(6); + sub_wire2(2, 7) <= sub_wire15(7); + sub_wire2(2, 8) <= sub_wire15(8); + sub_wire2(2, 9) <= sub_wire15(9); + sub_wire2(2, 10) <= sub_wire15(10); + sub_wire2(2, 11) <= sub_wire15(11); + sub_wire2(2, 12) <= sub_wire15(12); + sub_wire2(2, 13) <= sub_wire15(13); + sub_wire2(2, 14) <= sub_wire15(14); + sub_wire2(2, 15) <= sub_wire15(15); + sub_wire2(2, 16) <= sub_wire15(16); + sub_wire2(2, 17) <= sub_wire15(17); + sub_wire2(2, 18) <= sub_wire15(18); + sub_wire2(2, 19) <= sub_wire15(19); + sub_wire2(2, 20) <= sub_wire15(20); + sub_wire2(2, 21) <= sub_wire15(21); + sub_wire2(2, 22) <= sub_wire15(22); + sub_wire2(2, 23) <= sub_wire15(23); + sub_wire2(2, 24) <= sub_wire15(24); + sub_wire2(2, 25) <= sub_wire15(25); + sub_wire2(2, 26) <= sub_wire15(26); + sub_wire2(2, 27) <= sub_wire15(27); + sub_wire2(2, 28) <= sub_wire15(28); + sub_wire2(2, 29) <= sub_wire15(29); + sub_wire2(2, 30) <= sub_wire15(30); + sub_wire2(2, 31) <= sub_wire15(31); + sub_wire2(2, 32) <= sub_wire15(32); + sub_wire2(2, 33) <= sub_wire15(33); + sub_wire2(2, 34) <= sub_wire15(34); + sub_wire2(2, 35) <= sub_wire15(35); + sub_wire2(2, 36) <= sub_wire15(36); + sub_wire2(2, 37) <= sub_wire15(37); + sub_wire2(2, 38) <= sub_wire15(38); + sub_wire2(2, 39) <= sub_wire15(39); + sub_wire2(2, 40) <= sub_wire15(40); + sub_wire2(2, 41) <= sub_wire15(41); + sub_wire2(2, 42) <= sub_wire15(42); + sub_wire2(2, 43) <= sub_wire15(43); + sub_wire2(2, 44) <= sub_wire15(44); + sub_wire2(2, 45) <= sub_wire15(45); + sub_wire2(2, 46) <= sub_wire15(46); + sub_wire2(2, 47) <= sub_wire15(47); + sub_wire2(2, 48) <= sub_wire15(48); + sub_wire2(2, 49) <= sub_wire15(49); + sub_wire2(2, 50) <= sub_wire15(50); + sub_wire2(2, 51) <= sub_wire15(51); + sub_wire2(2, 52) <= sub_wire15(52); + sub_wire2(2, 53) <= sub_wire15(53); + sub_wire2(2, 54) <= sub_wire15(54); + sub_wire2(2, 55) <= sub_wire15(55); + sub_wire2(2, 56) <= sub_wire15(56); + sub_wire2(2, 57) <= sub_wire15(57); + sub_wire2(2, 58) <= sub_wire15(58); + sub_wire2(2, 59) <= sub_wire15(59); + sub_wire2(2, 60) <= sub_wire15(60); + sub_wire2(2, 61) <= sub_wire15(61); + sub_wire2(2, 62) <= sub_wire15(62); + sub_wire2(2, 63) <= sub_wire15(63); + sub_wire2(2, 64) <= sub_wire15(64); + sub_wire2(2, 65) <= sub_wire15(65); + sub_wire2(2, 66) <= sub_wire15(66); + sub_wire2(2, 67) <= sub_wire15(67); + sub_wire2(2, 68) <= sub_wire15(68); + sub_wire2(2, 69) <= sub_wire15(69); + sub_wire2(2, 70) <= sub_wire15(70); + sub_wire2(2, 71) <= sub_wire15(71); + sub_wire2(2, 72) <= sub_wire15(72); + sub_wire2(2, 73) <= sub_wire15(73); + sub_wire2(2, 74) <= sub_wire15(74); + sub_wire2(2, 75) <= sub_wire15(75); + sub_wire2(2, 76) <= sub_wire15(76); + sub_wire2(2, 77) <= sub_wire15(77); + sub_wire2(2, 78) <= sub_wire15(78); + sub_wire2(2, 79) <= sub_wire15(79); + sub_wire2(2, 80) <= sub_wire15(80); + sub_wire2(2, 81) <= sub_wire15(81); + sub_wire2(2, 82) <= sub_wire15(82); + sub_wire2(2, 83) <= sub_wire15(83); + sub_wire2(2, 84) <= sub_wire15(84); + sub_wire2(2, 85) <= sub_wire15(85); + sub_wire2(2, 86) <= sub_wire15(86); + sub_wire2(2, 87) <= sub_wire15(87); + sub_wire2(2, 88) <= sub_wire15(88); + sub_wire2(2, 89) <= sub_wire15(89); + sub_wire2(2, 90) <= sub_wire15(90); + sub_wire2(2, 91) <= sub_wire15(91); + sub_wire2(2, 92) <= sub_wire15(92); + sub_wire2(2, 93) <= sub_wire15(93); + sub_wire2(2, 94) <= sub_wire15(94); + sub_wire2(2, 95) <= sub_wire15(95); + sub_wire2(2, 96) <= sub_wire15(96); + sub_wire2(2, 97) <= sub_wire15(97); + sub_wire2(2, 98) <= sub_wire15(98); + sub_wire2(2, 99) <= sub_wire15(99); + sub_wire2(2, 100) <= sub_wire15(100); + sub_wire2(2, 101) <= sub_wire15(101); + sub_wire2(2, 102) <= sub_wire15(102); + sub_wire2(2, 103) <= sub_wire15(103); + sub_wire2(2, 104) <= sub_wire15(104); + sub_wire2(2, 105) <= sub_wire15(105); + sub_wire2(2, 106) <= sub_wire15(106); + sub_wire2(2, 107) <= sub_wire15(107); + sub_wire2(2, 108) <= sub_wire15(108); + sub_wire2(2, 109) <= sub_wire15(109); + sub_wire2(2, 110) <= sub_wire15(110); + sub_wire2(2, 111) <= sub_wire15(111); + sub_wire2(2, 112) <= sub_wire15(112); + sub_wire2(2, 113) <= sub_wire15(113); + sub_wire2(2, 114) <= sub_wire15(114); + sub_wire2(2, 115) <= sub_wire15(115); + sub_wire2(2, 116) <= sub_wire15(116); + sub_wire2(2, 117) <= sub_wire15(117); + sub_wire2(2, 118) <= sub_wire15(118); + sub_wire2(2, 119) <= sub_wire15(119); + sub_wire2(2, 120) <= sub_wire15(120); + sub_wire2(2, 121) <= sub_wire15(121); + sub_wire2(2, 122) <= sub_wire15(122); + sub_wire2(2, 123) <= sub_wire15(123); + sub_wire2(2, 124) <= sub_wire15(124); + sub_wire2(2, 125) <= sub_wire15(125); + sub_wire2(2, 126) <= sub_wire15(126); + sub_wire2(2, 127) <= sub_wire15(127); + sub_wire2(1, 0) <= sub_wire16(0); + sub_wire2(1, 1) <= sub_wire16(1); + sub_wire2(1, 2) <= sub_wire16(2); + sub_wire2(1, 3) <= sub_wire16(3); + sub_wire2(1, 4) <= sub_wire16(4); + sub_wire2(1, 5) <= sub_wire16(5); + sub_wire2(1, 6) <= sub_wire16(6); + sub_wire2(1, 7) <= sub_wire16(7); + sub_wire2(1, 8) <= sub_wire16(8); + sub_wire2(1, 9) <= sub_wire16(9); + sub_wire2(1, 10) <= sub_wire16(10); + sub_wire2(1, 11) <= sub_wire16(11); + sub_wire2(1, 12) <= sub_wire16(12); + sub_wire2(1, 13) <= sub_wire16(13); + sub_wire2(1, 14) <= sub_wire16(14); + sub_wire2(1, 15) <= sub_wire16(15); + sub_wire2(1, 16) <= sub_wire16(16); + sub_wire2(1, 17) <= sub_wire16(17); + sub_wire2(1, 18) <= sub_wire16(18); + sub_wire2(1, 19) <= sub_wire16(19); + sub_wire2(1, 20) <= sub_wire16(20); + sub_wire2(1, 21) <= sub_wire16(21); + sub_wire2(1, 22) <= sub_wire16(22); + sub_wire2(1, 23) <= sub_wire16(23); + sub_wire2(1, 24) <= sub_wire16(24); + sub_wire2(1, 25) <= sub_wire16(25); + sub_wire2(1, 26) <= sub_wire16(26); + sub_wire2(1, 27) <= sub_wire16(27); + sub_wire2(1, 28) <= sub_wire16(28); + sub_wire2(1, 29) <= sub_wire16(29); + sub_wire2(1, 30) <= sub_wire16(30); + sub_wire2(1, 31) <= sub_wire16(31); + sub_wire2(1, 32) <= sub_wire16(32); + sub_wire2(1, 33) <= sub_wire16(33); + sub_wire2(1, 34) <= sub_wire16(34); + sub_wire2(1, 35) <= sub_wire16(35); + sub_wire2(1, 36) <= sub_wire16(36); + sub_wire2(1, 37) <= sub_wire16(37); + sub_wire2(1, 38) <= sub_wire16(38); + sub_wire2(1, 39) <= sub_wire16(39); + sub_wire2(1, 40) <= sub_wire16(40); + sub_wire2(1, 41) <= sub_wire16(41); + sub_wire2(1, 42) <= sub_wire16(42); + sub_wire2(1, 43) <= sub_wire16(43); + sub_wire2(1, 44) <= sub_wire16(44); + sub_wire2(1, 45) <= sub_wire16(45); + sub_wire2(1, 46) <= sub_wire16(46); + sub_wire2(1, 47) <= sub_wire16(47); + sub_wire2(1, 48) <= sub_wire16(48); + sub_wire2(1, 49) <= sub_wire16(49); + sub_wire2(1, 50) <= sub_wire16(50); + sub_wire2(1, 51) <= sub_wire16(51); + sub_wire2(1, 52) <= sub_wire16(52); + sub_wire2(1, 53) <= sub_wire16(53); + sub_wire2(1, 54) <= sub_wire16(54); + sub_wire2(1, 55) <= sub_wire16(55); + sub_wire2(1, 56) <= sub_wire16(56); + sub_wire2(1, 57) <= sub_wire16(57); + sub_wire2(1, 58) <= sub_wire16(58); + sub_wire2(1, 59) <= sub_wire16(59); + sub_wire2(1, 60) <= sub_wire16(60); + sub_wire2(1, 61) <= sub_wire16(61); + sub_wire2(1, 62) <= sub_wire16(62); + sub_wire2(1, 63) <= sub_wire16(63); + sub_wire2(1, 64) <= sub_wire16(64); + sub_wire2(1, 65) <= sub_wire16(65); + sub_wire2(1, 66) <= sub_wire16(66); + sub_wire2(1, 67) <= sub_wire16(67); + sub_wire2(1, 68) <= sub_wire16(68); + sub_wire2(1, 69) <= sub_wire16(69); + sub_wire2(1, 70) <= sub_wire16(70); + sub_wire2(1, 71) <= sub_wire16(71); + sub_wire2(1, 72) <= sub_wire16(72); + sub_wire2(1, 73) <= sub_wire16(73); + sub_wire2(1, 74) <= sub_wire16(74); + sub_wire2(1, 75) <= sub_wire16(75); + sub_wire2(1, 76) <= sub_wire16(76); + sub_wire2(1, 77) <= sub_wire16(77); + sub_wire2(1, 78) <= sub_wire16(78); + sub_wire2(1, 79) <= sub_wire16(79); + sub_wire2(1, 80) <= sub_wire16(80); + sub_wire2(1, 81) <= sub_wire16(81); + sub_wire2(1, 82) <= sub_wire16(82); + sub_wire2(1, 83) <= sub_wire16(83); + sub_wire2(1, 84) <= sub_wire16(84); + sub_wire2(1, 85) <= sub_wire16(85); + sub_wire2(1, 86) <= sub_wire16(86); + sub_wire2(1, 87) <= sub_wire16(87); + sub_wire2(1, 88) <= sub_wire16(88); + sub_wire2(1, 89) <= sub_wire16(89); + sub_wire2(1, 90) <= sub_wire16(90); + sub_wire2(1, 91) <= sub_wire16(91); + sub_wire2(1, 92) <= sub_wire16(92); + sub_wire2(1, 93) <= sub_wire16(93); + sub_wire2(1, 94) <= sub_wire16(94); + sub_wire2(1, 95) <= sub_wire16(95); + sub_wire2(1, 96) <= sub_wire16(96); + sub_wire2(1, 97) <= sub_wire16(97); + sub_wire2(1, 98) <= sub_wire16(98); + sub_wire2(1, 99) <= sub_wire16(99); + sub_wire2(1, 100) <= sub_wire16(100); + sub_wire2(1, 101) <= sub_wire16(101); + sub_wire2(1, 102) <= sub_wire16(102); + sub_wire2(1, 103) <= sub_wire16(103); + sub_wire2(1, 104) <= sub_wire16(104); + sub_wire2(1, 105) <= sub_wire16(105); + sub_wire2(1, 106) <= sub_wire16(106); + sub_wire2(1, 107) <= sub_wire16(107); + sub_wire2(1, 108) <= sub_wire16(108); + sub_wire2(1, 109) <= sub_wire16(109); + sub_wire2(1, 110) <= sub_wire16(110); + sub_wire2(1, 111) <= sub_wire16(111); + sub_wire2(1, 112) <= sub_wire16(112); + sub_wire2(1, 113) <= sub_wire16(113); + sub_wire2(1, 114) <= sub_wire16(114); + sub_wire2(1, 115) <= sub_wire16(115); + sub_wire2(1, 116) <= sub_wire16(116); + sub_wire2(1, 117) <= sub_wire16(117); + sub_wire2(1, 118) <= sub_wire16(118); + sub_wire2(1, 119) <= sub_wire16(119); + sub_wire2(1, 120) <= sub_wire16(120); + sub_wire2(1, 121) <= sub_wire16(121); + sub_wire2(1, 122) <= sub_wire16(122); + sub_wire2(1, 123) <= sub_wire16(123); + sub_wire2(1, 124) <= sub_wire16(124); + sub_wire2(1, 125) <= sub_wire16(125); + sub_wire2(1, 126) <= sub_wire16(126); + sub_wire2(1, 127) <= sub_wire16(127); + sub_wire2(0, 0) <= sub_wire17(0); + sub_wire2(0, 1) <= sub_wire17(1); + sub_wire2(0, 2) <= sub_wire17(2); + sub_wire2(0, 3) <= sub_wire17(3); + sub_wire2(0, 4) <= sub_wire17(4); + sub_wire2(0, 5) <= sub_wire17(5); + sub_wire2(0, 6) <= sub_wire17(6); + sub_wire2(0, 7) <= sub_wire17(7); + sub_wire2(0, 8) <= sub_wire17(8); + sub_wire2(0, 9) <= sub_wire17(9); + sub_wire2(0, 10) <= sub_wire17(10); + sub_wire2(0, 11) <= sub_wire17(11); + sub_wire2(0, 12) <= sub_wire17(12); + sub_wire2(0, 13) <= sub_wire17(13); + sub_wire2(0, 14) <= sub_wire17(14); + sub_wire2(0, 15) <= sub_wire17(15); + sub_wire2(0, 16) <= sub_wire17(16); + sub_wire2(0, 17) <= sub_wire17(17); + sub_wire2(0, 18) <= sub_wire17(18); + sub_wire2(0, 19) <= sub_wire17(19); + sub_wire2(0, 20) <= sub_wire17(20); + sub_wire2(0, 21) <= sub_wire17(21); + sub_wire2(0, 22) <= sub_wire17(22); + sub_wire2(0, 23) <= sub_wire17(23); + sub_wire2(0, 24) <= sub_wire17(24); + sub_wire2(0, 25) <= sub_wire17(25); + sub_wire2(0, 26) <= sub_wire17(26); + sub_wire2(0, 27) <= sub_wire17(27); + sub_wire2(0, 28) <= sub_wire17(28); + sub_wire2(0, 29) <= sub_wire17(29); + sub_wire2(0, 30) <= sub_wire17(30); + sub_wire2(0, 31) <= sub_wire17(31); + sub_wire2(0, 32) <= sub_wire17(32); + sub_wire2(0, 33) <= sub_wire17(33); + sub_wire2(0, 34) <= sub_wire17(34); + sub_wire2(0, 35) <= sub_wire17(35); + sub_wire2(0, 36) <= sub_wire17(36); + sub_wire2(0, 37) <= sub_wire17(37); + sub_wire2(0, 38) <= sub_wire17(38); + sub_wire2(0, 39) <= sub_wire17(39); + sub_wire2(0, 40) <= sub_wire17(40); + sub_wire2(0, 41) <= sub_wire17(41); + sub_wire2(0, 42) <= sub_wire17(42); + sub_wire2(0, 43) <= sub_wire17(43); + sub_wire2(0, 44) <= sub_wire17(44); + sub_wire2(0, 45) <= sub_wire17(45); + sub_wire2(0, 46) <= sub_wire17(46); + sub_wire2(0, 47) <= sub_wire17(47); + sub_wire2(0, 48) <= sub_wire17(48); + sub_wire2(0, 49) <= sub_wire17(49); + sub_wire2(0, 50) <= sub_wire17(50); + sub_wire2(0, 51) <= sub_wire17(51); + sub_wire2(0, 52) <= sub_wire17(52); + sub_wire2(0, 53) <= sub_wire17(53); + sub_wire2(0, 54) <= sub_wire17(54); + sub_wire2(0, 55) <= sub_wire17(55); + sub_wire2(0, 56) <= sub_wire17(56); + sub_wire2(0, 57) <= sub_wire17(57); + sub_wire2(0, 58) <= sub_wire17(58); + sub_wire2(0, 59) <= sub_wire17(59); + sub_wire2(0, 60) <= sub_wire17(60); + sub_wire2(0, 61) <= sub_wire17(61); + sub_wire2(0, 62) <= sub_wire17(62); + sub_wire2(0, 63) <= sub_wire17(63); + sub_wire2(0, 64) <= sub_wire17(64); + sub_wire2(0, 65) <= sub_wire17(65); + sub_wire2(0, 66) <= sub_wire17(66); + sub_wire2(0, 67) <= sub_wire17(67); + sub_wire2(0, 68) <= sub_wire17(68); + sub_wire2(0, 69) <= sub_wire17(69); + sub_wire2(0, 70) <= sub_wire17(70); + sub_wire2(0, 71) <= sub_wire17(71); + sub_wire2(0, 72) <= sub_wire17(72); + sub_wire2(0, 73) <= sub_wire17(73); + sub_wire2(0, 74) <= sub_wire17(74); + sub_wire2(0, 75) <= sub_wire17(75); + sub_wire2(0, 76) <= sub_wire17(76); + sub_wire2(0, 77) <= sub_wire17(77); + sub_wire2(0, 78) <= sub_wire17(78); + sub_wire2(0, 79) <= sub_wire17(79); + sub_wire2(0, 80) <= sub_wire17(80); + sub_wire2(0, 81) <= sub_wire17(81); + sub_wire2(0, 82) <= sub_wire17(82); + sub_wire2(0, 83) <= sub_wire17(83); + sub_wire2(0, 84) <= sub_wire17(84); + sub_wire2(0, 85) <= sub_wire17(85); + sub_wire2(0, 86) <= sub_wire17(86); + sub_wire2(0, 87) <= sub_wire17(87); + sub_wire2(0, 88) <= sub_wire17(88); + sub_wire2(0, 89) <= sub_wire17(89); + sub_wire2(0, 90) <= sub_wire17(90); + sub_wire2(0, 91) <= sub_wire17(91); + sub_wire2(0, 92) <= sub_wire17(92); + sub_wire2(0, 93) <= sub_wire17(93); + sub_wire2(0, 94) <= sub_wire17(94); + sub_wire2(0, 95) <= sub_wire17(95); + sub_wire2(0, 96) <= sub_wire17(96); + sub_wire2(0, 97) <= sub_wire17(97); + sub_wire2(0, 98) <= sub_wire17(98); + sub_wire2(0, 99) <= sub_wire17(99); + sub_wire2(0, 100) <= sub_wire17(100); + sub_wire2(0, 101) <= sub_wire17(101); + sub_wire2(0, 102) <= sub_wire17(102); + sub_wire2(0, 103) <= sub_wire17(103); + sub_wire2(0, 104) <= sub_wire17(104); + sub_wire2(0, 105) <= sub_wire17(105); + sub_wire2(0, 106) <= sub_wire17(106); + sub_wire2(0, 107) <= sub_wire17(107); + sub_wire2(0, 108) <= sub_wire17(108); + sub_wire2(0, 109) <= sub_wire17(109); + sub_wire2(0, 110) <= sub_wire17(110); + sub_wire2(0, 111) <= sub_wire17(111); + sub_wire2(0, 112) <= sub_wire17(112); + sub_wire2(0, 113) <= sub_wire17(113); + sub_wire2(0, 114) <= sub_wire17(114); + sub_wire2(0, 115) <= sub_wire17(115); + sub_wire2(0, 116) <= sub_wire17(116); + sub_wire2(0, 117) <= sub_wire17(117); + sub_wire2(0, 118) <= sub_wire17(118); + sub_wire2(0, 119) <= sub_wire17(119); + sub_wire2(0, 120) <= sub_wire17(120); + sub_wire2(0, 121) <= sub_wire17(121); + sub_wire2(0, 122) <= sub_wire17(122); + sub_wire2(0, 123) <= sub_wire17(123); + sub_wire2(0, 124) <= sub_wire17(124); + sub_wire2(0, 125) <= sub_wire17(125); + sub_wire2(0, 126) <= sub_wire17(126); + sub_wire2(0, 127) <= sub_wire17(127); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_size => 16, + lpm_type => "LPM_MUX", + lpm_width => 128, + lpm_widths => 4 + ) + PORT MAP ( + sel => sel, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "4" +-- Retrieval info: USED_PORT: data0x 0 0 128 0 INPUT NODEFVAL data0x[127..0] +-- Retrieval info: USED_PORT: data10x 0 0 128 0 INPUT NODEFVAL data10x[127..0] +-- Retrieval info: USED_PORT: data11x 0 0 128 0 INPUT NODEFVAL data11x[127..0] +-- Retrieval info: USED_PORT: data12x 0 0 128 0 INPUT NODEFVAL data12x[127..0] +-- Retrieval info: USED_PORT: data13x 0 0 128 0 INPUT NODEFVAL data13x[127..0] +-- Retrieval info: USED_PORT: data14x 0 0 128 0 INPUT NODEFVAL data14x[127..0] +-- Retrieval info: USED_PORT: data15x 0 0 128 0 INPUT NODEFVAL data15x[127..0] +-- Retrieval info: USED_PORT: data1x 0 0 128 0 INPUT NODEFVAL data1x[127..0] +-- Retrieval info: USED_PORT: data2x 0 0 128 0 INPUT NODEFVAL data2x[127..0] +-- Retrieval info: USED_PORT: data3x 0 0 128 0 INPUT NODEFVAL data3x[127..0] +-- Retrieval info: USED_PORT: data4x 0 0 128 0 INPUT NODEFVAL data4x[127..0] +-- Retrieval info: USED_PORT: data5x 0 0 128 0 INPUT NODEFVAL data5x[127..0] +-- Retrieval info: USED_PORT: data6x 0 0 128 0 INPUT NODEFVAL data6x[127..0] +-- Retrieval info: USED_PORT: data7x 0 0 128 0 INPUT NODEFVAL data7x[127..0] +-- Retrieval info: USED_PORT: data8x 0 0 128 0 INPUT NODEFVAL data8x[127..0] +-- Retrieval info: USED_PORT: data9x 0 0 128 0 INPUT NODEFVAL data9x[127..0] +-- Retrieval info: USED_PORT: result 0 0 128 0 OUTPUT NODEFVAL result[127..0] +-- Retrieval info: USED_PORT: sel 0 0 4 0 INPUT NODEFVAL sel[3..0] +-- Retrieval info: CONNECT: result 0 0 128 0 @result 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 15 128 0 data15x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 14 128 0 data14x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 13 128 0 data13x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 12 128 0 data12x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 11 128 0 data11x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 10 128 0 data10x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 9 128 0 data9x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 8 128 0 data8x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 7 128 0 data7x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 6 128 0 data6x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 5 128 0 data5x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 4 128 0 data4x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 3 128 0 data3x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 2 128 0 data2x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 1 128 0 data1x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 0 128 0 data0x 0 0 128 0 +-- Retrieval info: CONNECT: @sel 0 0 4 0 sel 0 0 4 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.bsf new file mode 100644 index 0000000..fb70a4b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.bsf @@ -0,0 +1,70 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 128) + (text "lpm_shiftreg0" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 112 25 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "load" (rect 0 0 23 14)(font "Arial" (font_size 8))) + (text "load" (rect 20 26 41 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "data[15..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 42 71 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 74 49 87)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 90 48 103)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 144 72) + (output) + (text "shiftout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 66 123 79)(font "Arial" (font_size 8))) + (line (pt 144 72)(pt 128 72)(line_width 1)) + ) + (drawing + (text "left shift" (rect 92 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 112)(line_width 1)) + (line (pt 128 112)(pt 16 112)(line_width 1)) + (line (pt 16 112)(pt 16 16)(line_width 1)) + (line (pt 16 74)(pt 22 80)(line_width 1)) + (line (pt 22 80)(pt 16 86)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.inc new file mode 100644 index 0000000..1c0c4a2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.inc @@ -0,0 +1,26 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_shiftreg0 +( + clock, + data[15..0], + load, + shiftin +) + +RETURNS ( + shiftout +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.qip new file mode 100644 index 0000000..a233319 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg0.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.vhd new file mode 100644 index 0000000..6e5d954 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg0.vhd @@ -0,0 +1,135 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg0.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg0 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + load : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +END lpm_shiftreg0; + + +ARCHITECTURE SYN OF lpm_shiftreg0 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + load : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + shiftout : OUT STD_LOGIC ; + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + shiftout <= sub_wire0; + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "LEFT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 16 + ) + PORT MAP ( + load => load, + clock => clock, + data => data, + shiftin => shiftin, + shiftout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "1" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "1" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "1" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +-- Retrieval info: PRIVATE: nBit NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "LEFT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 16 0 INPUT NODEFVAL data[15..0] +-- Retrieval info: USED_PORT: load 0 0 0 0 INPUT NODEFVAL load +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL shiftout +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +-- Retrieval info: CONNECT: @load 0 0 0 0 load 0 0 0 0 +-- Retrieval info: CONNECT: @data 0 0 16 0 data 0 0 16 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.bsf new file mode 100644 index 0000000..aa20405 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg1" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[1..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[1..0]" (rect 95 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "left shift" (rect 92 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.qip new file mode 100644 index 0000000..8a8e8a5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg1.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.vhd new file mode 100644 index 0000000..781fe1b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg1.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg1.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg1 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (1 DOWNTO 0) + ); +END lpm_shiftreg1; + + +ARCHITECTURE SYN OF lpm_shiftreg1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (1 DOWNTO 0); + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (1 DOWNTO 0); + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(1 DOWNTO 0); + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "LEFT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 2 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "1" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "1" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "LEFT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "2" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: q 0 0 2 0 OUTPUT NODEFVAL q[1..0] +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 2 0 @q 0 0 2 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.bsf new file mode 100644 index 0000000..0caa084 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg2" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "shiftout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 42 123 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 1)) + ) + (drawing + (text "right shift" (rect 88 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.qip new file mode 100644 index 0000000..3c5305b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg2.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.vhd new file mode 100644 index 0000000..ca02c26 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg2.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg2.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg2 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +END lpm_shiftreg2; + + +ARCHITECTURE SYN OF lpm_shiftreg2 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC ; + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + shiftout <= sub_wire0; + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "RIGHT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 4 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + shiftout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "0" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +-- Retrieval info: PRIVATE: nBit NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "4" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL shiftout +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.bsf new file mode 100644 index 0000000..d18b388 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg3" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "shiftout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 42 123 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 1)) + ) + (drawing + (text "right shift" (rect 88 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.inc new file mode 100644 index 0000000..4f70ce5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_shiftreg3 +( + clock, + shiftin +) + +RETURNS ( + shiftout +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.qip new file mode 100644 index 0000000..783fdea --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg3.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg3.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.vhd new file mode 100644 index 0000000..b87c221 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg3.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg3.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg3 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +END lpm_shiftreg3; + + +ARCHITECTURE SYN OF lpm_shiftreg3 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC ; + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + shiftout <= sub_wire0; + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "RIGHT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 2 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + shiftout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "0" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +-- Retrieval info: PRIVATE: nBit NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "2" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL shiftout +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.bsf new file mode 100644 index 0000000..658958d --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg4" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "shiftout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 42 123 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 1)) + ) + (drawing + (text "right shift" (rect 88 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.inc new file mode 100644 index 0000000..322863a --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_shiftreg4 +( + clock, + shiftin +) + +RETURNS ( + shiftout +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.qip new file mode 100644 index 0000000..363cd59 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg4.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg4.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg4.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.vhd new file mode 100644 index 0000000..3d8f5d1 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg4.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg4.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg4 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +END lpm_shiftreg4; + + +ARCHITECTURE SYN OF lpm_shiftreg4 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC ; + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + shiftout <= sub_wire0; + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "RIGHT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 5 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + shiftout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "0" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +-- Retrieval info: PRIVATE: nBit NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL shiftout +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.bsf new file mode 100644 index 0000000..a528c96 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg5" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[4..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[4..0]" (rect 95 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "right shift" (rect 88 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.inc new file mode 100644 index 0000000..431ed2c --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_shiftreg5 +( + clock, + shiftin +) + +RETURNS ( + q[4..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.qip new file mode 100644 index 0000000..9b71f4b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg5.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg5.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg5.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg5.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.vhd new file mode 100644 index 0000000..71a1232 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg5.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg5.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg5 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +END lpm_shiftreg5; + + +ARCHITECTURE SYN OF lpm_shiftreg5 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(4 DOWNTO 0); + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "RIGHT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 5 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "0" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "1" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: q 0 0 5 0 OUTPUT NODEFVAL q[4..0] +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 5 0 @q 0 0 5 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.bsf b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.bsf new file mode 100644 index 0000000..aa0296b --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg6" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[4..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[4..0]" (rect 95 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "right shift" (rect 88 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.inc b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.inc new file mode 100644 index 0000000..7767c57 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_shiftreg6 +( + clock, + shiftin +) + +RETURNS ( + q[4..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.qip b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.qip new file mode 100644 index 0000000..adb4909 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg6.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg6.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg6.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg6.cmp"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.vhd b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.vhd new file mode 100644 index 0000000..773243e --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/lpm_shiftreg6.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg6.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg6 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +END lpm_shiftreg6; + + +ARCHITECTURE SYN OF lpm_shiftreg6 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(4 DOWNTO 0); + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "RIGHT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 5 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "0" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "1" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: q 0 0 5 0 OUTPUT NODEFVAL q[4..0] +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 5 0 @q 0 0 5 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.bsf b/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.bsf new file mode 100644 index 0000000..6554c2f --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 232 120) + (text "altddio_out0" (rect 81 1 163 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 104 25 116)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h[3..0]" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "datain_h[3..0]" (rect 4 11 70 24)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 3)) + ) + (port + (pt 0 40) + (input) + (text "datain_l[3..0]" (rect 0 0 71 14)(font "Arial" (font_size 8))) + (text "datain_l[3..0]" (rect 4 27 67 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 42 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout[3..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "dataout[3..0]" (rect 169 11 229 24)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 3)) + ) + (drawing + (text "ddio" (rect 110 27 131 40)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 135 55)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 129 86)(font "Arial" )) + (text "high" (rect 92 84 109 96)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) diff --git a/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.inc b/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.inc new file mode 100644 index 0000000..f534925 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altddio_out0 +( + datain_h[3..0], + datain_l[3..0], + outclock +) + +RETURNS ( + dataout[3..0] +); diff --git a/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.ppf b/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.ppf new file mode 100644 index 0000000..3f3cfb5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.qip b/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.qip new file mode 100644 index 0000000..8193856 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altddio_out0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.ppf"] diff --git a/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.vhd b/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.vhd new file mode 100644 index 0000000..f129798 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altip_orig/root/altddio_out0.vhd @@ -0,0 +1,136 @@ +-- megafunction wizard: %ALTDDIO_OUT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_out + +-- ============================================================ +-- File Name: altddio_out0.vhd +-- Megafunction Name(s): +-- altddio_out +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_out0 IS + PORT + ( + datain_h : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) + ); +END altddio_out0; + + +ARCHITECTURE SYN OF altddio_out0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0); + + + + COMPONENT altddio_out + GENERIC ( + extend_oe_disable : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + dataout : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); + outclock : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (3 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + dataout <= sub_wire0(3 DOWNTO 0); + + altddio_out_component : altddio_out + GENERIC MAP ( + extend_oe_disable => "UNUSED", + intended_device_family => "Cyclone III", + invert_output => "ON", + lpm_type => "altddio_out", + oe_reg => "UNUSED", + power_up_high => "ON", + width => 4 + ) + PORT MAP ( + outclock => outclock, + datain_h => datain_h, + datain_l => datain_l, + dataout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "0" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "1" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "4" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "ON" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "ON" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "4" +-- Retrieval info: USED_PORT: datain_h 0 0 4 0 INPUT NODEFVAL datain_h[3..0] +-- Retrieval info: USED_PORT: datain_l 0 0 4 0 INPUT NODEFVAL datain_l[3..0] +-- Retrieval info: USED_PORT: dataout 0 0 4 0 OUTPUT NODEFVAL dataout[3..0] +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: CONNECT: @datain_h 0 0 4 0 datain_h 0 0 4 0 +-- Retrieval info: CONNECT: @datain_l 0 0 4 0 datain_l 0 0 4 0 +-- Retrieval info: CONNECT: dataout 0 0 4 0 @dataout 0 0 4 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_by_Gregory_Estrade/altpll4.mif b/FPGA_by_Gregory_Estrade/altpll4.mif new file mode 100644 index 0000000..e50eda2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/altpll4.mif @@ -0,0 +1,174 @@ +-- Copyright (C) 1991-2010 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + +-- MIF file representing initial state of PLL Scan Chain +-- Device Family: Cyclone III +-- Device Part: - +-- Device Speed Grade: 8 +-- PLL Scan Chain: Fast PLL (144 bits) +-- File Name: C:\FireBee\FPGA\altpll4.mif +-- Generated: Mon Dec 06 01:47:24 2010 + +WIDTH=1; +DEPTH=144; + +ADDRESS_RADIX=UNS; +DATA_RADIX=UNS; + +CONTENT BEGIN + 0 : 0; -- Reserved Bits = 0 (1 bit(s)) + 1 : 0; -- Reserved Bits = 0 (1 bit(s)) + 2 : 0; -- Loop Filter Capacitance = 0 (2 bit(s)) (Setting 0) + 3 : 0; + 4 : 1; -- Loop Filter Resistance = 27 (5 bit(s)) (Setting 27) + 5 : 1; + 6 : 0; + 7 : 1; + 8 : 1; + 9 : 0; -- VCO Post Scale = 0 (1 bit(s)) (VCO post-scale divider counter value = 2) + 10 : 0; -- Reserved Bits = 0 (5 bit(s)) + 11 : 0; + 12 : 0; + 13 : 0; + 14 : 0; + 15 : 0; -- Charge Pump Current = 1 (3 bit(s)) (Setting 1) + 16 : 0; + 17 : 1; + 18 : 1; -- N counter: Bypass = 1 (1 bit(s)) + 19 : 0; -- N counter: High Count = 0 (8 bit(s)) + 20 : 0; + 21 : 0; + 22 : 0; + 23 : 0; + 24 : 0; + 25 : 0; + 26 : 0; + 27 : 0; -- N counter: Odd Division = 0 (1 bit(s)) + 28 : 0; -- N counter: Low Count = 0 (8 bit(s)) + 29 : 0; + 30 : 0; + 31 : 0; + 32 : 0; + 33 : 0; + 34 : 0; + 35 : 0; + 36 : 0; -- M counter: Bypass = 0 (1 bit(s)) + 37 : 0; -- M counter: High Count = 6 (8 bit(s)) + 38 : 0; + 39 : 0; + 40 : 0; + 41 : 0; + 42 : 1; + 43 : 1; + 44 : 0; + 45 : 0; -- M counter: Odd Division = 0 (1 bit(s)) + 46 : 0; -- M counter: Low Count = 6 (8 bit(s)) + 47 : 0; + 48 : 0; + 49 : 0; + 50 : 0; + 51 : 1; + 52 : 1; + 53 : 0; + 54 : 0; -- clk0 counter: Bypass = 0 (1 bit(s)) + 55 : 0; -- clk0 counter: High Count = 3 (8 bit(s)) + 56 : 0; + 57 : 0; + 58 : 0; + 59 : 0; + 60 : 0; + 61 : 1; + 62 : 1; + 63 : 0; -- clk0 counter: Odd Division = 0 (1 bit(s)) + 64 : 0; -- clk0 counter: Low Count = 3 (8 bit(s)) + 65 : 0; + 66 : 0; + 67 : 0; + 68 : 0; + 69 : 0; + 70 : 1; + 71 : 1; + 72 : 1; -- clk1 counter: Bypass = 1 (1 bit(s)) + 73 : 0; -- clk1 counter: High Count = 0 (8 bit(s)) + 74 : 0; + 75 : 0; + 76 : 0; + 77 : 0; + 78 : 0; + 79 : 0; + 80 : 0; + 81 : 0; -- clk1 counter: Odd Division = 0 (1 bit(s)) + 82 : 0; -- clk1 counter: Low Count = 0 (8 bit(s)) + 83 : 0; + 84 : 0; + 85 : 0; + 86 : 0; + 87 : 0; + 88 : 0; + 89 : 0; + 90 : 1; -- clk2 counter: Bypass = 1 (1 bit(s)) + 91 : 0; -- clk2 counter: High Count = 0 (8 bit(s)) + 92 : 0; + 93 : 0; + 94 : 0; + 95 : 0; + 96 : 0; + 97 : 0; + 98 : 0; + 99 : 0; -- clk2 counter: Odd Division = 0 (1 bit(s)) + 100 : 0; -- clk2 counter: Low Count = 0 (8 bit(s)) + 101 : 0; + 102 : 0; + 103 : 0; + 104 : 0; + 105 : 0; + 106 : 0; + 107 : 0; + 108 : 1; -- clk3 counter: Bypass = 1 (1 bit(s)) + 109 : 0; -- clk3 counter: High Count = 0 (8 bit(s)) + 110 : 0; + 111 : 0; + 112 : 0; + 113 : 0; + 114 : 0; + 115 : 0; + 116 : 0; + 117 : 0; -- clk3 counter: Odd Division = 0 (1 bit(s)) + 118 : 0; -- clk3 counter: Low Count = 0 (8 bit(s)) + 119 : 0; + 120 : 0; + 121 : 0; + 122 : 0; + 123 : 0; + 124 : 0; + 125 : 0; + 126 : 1; -- clk4 counter: Bypass = 1 (1 bit(s)) + 127 : 0; -- clk4 counter: High Count = 0 (8 bit(s)) + 128 : 0; + 129 : 0; + 130 : 0; + 131 : 0; + 132 : 0; + 133 : 0; + 134 : 0; + 135 : 0; -- clk4 counter: Odd Division = 0 (1 bit(s)) + 136 : 0; -- clk4 counter: Low Count = 0 (8 bit(s)) + 137 : 0; + 138 : 0; + 139 : 0; + 140 : 0; + 141 : 0; + 142 : 0; + 143 : 0; +END; diff --git a/FPGA_by_Gregory_Estrade/firebee1.bdf b/FPGA_by_Gregory_Estrade/firebee1.bdf new file mode 100644 index 0000000..46507a2 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/firebee1.bdf @@ -0,0 +1,5837 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +//#pragma file_not_in_maxplusii_format +(header "graphic" (version "1.3")) +(properties + (page_setup "header_footer\nDate: %D\n%f\nProject: %j\n\nPage %p of %P\nRevision: %a\nmargin\n1\n1\n1\n1\norientation\n1\npaper_size\n9\npaper_source\n15\nfit_page_wide\n1\nfit_page_tall\n1\n") +) +(pin + (input) + (rect 208 1392 376 1408) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "FB_ALE" (rect 9 0 60 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 136 1408 192 1424)) +) +(pin + (input) + (rect 992 936 1160 952) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_WR" (rect 9 0 66 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 952 1000 968)) +) +(pin + (input) + (rect 168 296 336 312) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "CLK33M" (rect 9 0 64 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 104 312 176 328)) +) +(pin + (input) + (rect 992 960 1160 976) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_CS1" (rect 5 0 67 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 976 1000 992)) +) +(pin + (input) + (rect 992 984 1160 1000) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_CS2" (rect 5 0 67 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 1000 1000 1016)) +) +(pin + (input) + (rect 1008 360 1176 376) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_CS3" (rect 5 0 67 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 952 376 1008 392)) +) +(pin + (input) + (rect 992 1008 1160 1024) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "FB_SIZE0" (rect 5 0 69 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 1024 1000 1040)) +) +(pin + (input) + (rect 992 1032 1160 1048) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "FB_SIZE1" (rect 5 0 69 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 1048 1000 1064)) +) +(pin + (input) + (rect 992 1056 1160 1072) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_BURST" (rect 5 0 87 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 1072 1000 1088)) +) +(pin + (input) + (rect 936 1168 1104 1184) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "LP_BUSY" (rect 5 0 68 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1184 952 1200)) +) +(pin + (input) + (rect 856 1200 1024 1216) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nACSI_DRQ" (rect 5 0 85 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 808 1216 864 1232)) +) +(pin + (input) + (rect 856 1224 1024 1240) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nACSI_INT" (rect 5 0 75 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 808 1240 864 1256)) +) +(pin + (input) + (rect 936 1392 1104 1408) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "RxD" (rect 5 0 32 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1408 944 1424)) +) +(pin + (input) + (rect 936 1416 1104 1432) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "CTS" (rect 5 0 33 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1432 944 1448)) +) +(pin + (input) + (rect 936 1440 1104 1456) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "RI" (rect 5 0 19 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1456 944 1472)) +) +(pin + (input) + (rect 936 1464 1104 1480) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "DCD" (rect 5 0 36 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1480 944 1496)) +) +(pin + (input) + (rect 608 1488 776 1504) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "AMKB_RX" (rect 5 0 69 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 560 1504 616 1520)) +) +(pin + (input) + (rect 608 1512 776 1528) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "PIC_AMKB_RX" (rect 5 0 101 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 560 1528 616 1544)) +) +(pin + (input) + (rect 936 1544 1104 1560) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "IDE_RDY" (rect 5 0 66 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1560 944 1576)) +) +(pin + (input) + (rect 936 1568 1104 1584) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "IDE_INT" (rect 5 0 59 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1584 944 1600)) +) +(pin + (input) + (rect 936 1592 1104 1608) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "WP_CF_CARD" (rect 5 0 102 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1608 944 1624)) +) +(pin + (input) + (rect 872 1672 1040 1688) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "TRACK00" (rect 5 0 68 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1688 880 1704)) +) +(pin + (input) + (rect 872 1696 1040 1712) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nWP" (rect 5 0 35 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1712 880 1728)) +) +(pin + (input) + (rect 872 1744 1040 1760) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nDCHG" (rect 5 0 55 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1760 880 1776)) +) +(pin + (input) + (rect 936 1776 1104 1792) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "SD_DATA0" (rect 5 0 76 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1792 944 1808)) +) +(pin + (input) + (rect 936 1800 1104 1816) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "SD_DATA1" (rect 5 0 76 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1816 944 1832)) +) +(pin + (input) + (rect 936 1824 1104 1840) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "SD_DATA2" (rect 5 0 76 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1840 944 1856)) +) +(pin + (input) + (rect 936 1848 1128 1864) + (text "INPUT" (rect 157 0 193 13)(font "Arial" (font_size 6))) + (text "SD_CARD_DEDECT" (rect 5 0 140 15)(font "Arial" )) + (pt 192 8) + (drawing + (line (pt 116 12)(pt 141 12)(line_width 1)) + (line (pt 116 4)(pt 141 4)(line_width 1)) + (line (pt 145 8)(pt 192 8)(line_width 1)) + (line (pt 116 12)(pt 116 4)(line_width 1)) + (line (pt 141 4)(pt 145 8)(line_width 1)) + (line (pt 141 12)(pt 145 8)(line_width 1)) + ) + (text "VCC" (rect 160 7 184 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1864 952 1880)) +) +(pin + (input) + (rect 872 1360 1040 1376) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "MIDI_IN" (rect 5 0 55 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1376 880 1392)) +) +(pin + (input) + (rect 936 1256 1104 1272) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nSCSI_DRQ" (rect 5 0 86 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1272 944 1288)) +) +(pin + (input) + (rect 936 1872 1104 1888) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "SD_WP" (rect 5 0 55 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1888 952 1904)) +) +(pin + (input) + (rect 872 1720 1040 1736) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nRD_DATA" (rect 5 0 78 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1736 880 1752)) +) +(pin + (input) + (rect 936 1280 1104 1296) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nSCSI_C_D" (rect 5 0 84 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1296 944 1312)) +) +(pin + (input) + (rect 936 1304 1104 1320) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nSCSI_I_O" (rect 5 0 76 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1320 944 1336)) +) +(pin + (input) + (rect 936 1328 1104 1344) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nSCSI_MSG" (rect 5 0 85 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1344 944 1360)) +) +(pin + (input) + (rect 992 1104 1160 1120) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nDACK0" (rect 5 0 60 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 936 1120 1000 1136)) +) +(pin + (input) + (rect 984 2592 1152 2608) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "PIC_INT" (rect 5 0 59 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 928 2608 1000 2624)) +) +(pin + (input) + (rect 992 912 1160 928) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_OE" (rect 5 0 59 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 928 1000 944)) +) +(pin + (input) + (rect 360 2616 528 2632) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "TOUT0" (rect 5 0 51 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 304 2632 368 2648)) +) +(pin + (input) + (rect 360 2504 528 2520) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nMASTER" (rect 5 0 69 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 304 2520 368 2536)) +) +(pin + (input) + (rect 984 2640 1152 2656) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "DVI_INT" (rect 5 0 58 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 928 2656 992 2672)) +) +(pin + (input) + (rect 360 2408 528 2424) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nDACK1" (rect 5 0 60 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 304 2424 368 2440)) +) +(pin + (input) + (rect 984 2664 1152 2680) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nPCI_INTD" (rect 5 0 78 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 936 2680 992 2696)) +) +(pin + (input) + (rect 984 2688 1152 2704) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nPCI_INTC" (rect 5 0 78 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 936 2704 992 2720)) +) +(pin + (input) + (rect 984 2712 1152 2728) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nPCI_INTB" (rect 5 0 76 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 936 2728 992 2744)) +) +(pin + (input) + (rect 984 2736 1152 2752) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nPCI_INTA" (rect 5 0 75 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 928 2752 1000 2768)) +) +(pin + (input) + (rect 984 2616 1152 2632) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "E0_INT" (rect 5 0 53 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 928 2632 992 2648)) +) +(pin + (input) + (rect 872 1648 1040 1664) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nINDEX" (rect 5 0 55 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1664 880 1680)) +) +(pin + (input) + (rect 872 1624 1040 1640) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "HD_DD" (rect 5 0 55 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 808 1632 872 1648)) +) +(pin + (input) + (rect 96 -288 264 -272) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "MAIN_CLK" (rect 9 0 78 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 56 -304 120 -288)) +) +(pin + (input) + (rect 664 440 840 456) + (text "INPUT" (rect 141 0 177 13)(font "Arial" (font_size 6))) + (text "nRSTO_MCF" (rect 5 0 89 15)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 100 12)(pt 125 12)(line_width 1)) + (line (pt 100 4)(pt 125 4)(line_width 1)) + (line (pt 129 8)(pt 176 8)(line_width 1)) + (line (pt 100 12)(pt 100 4)(line_width 1)) + (line (pt 125 4)(pt 129 8)(line_width 1)) + (line (pt 125 12)(pt 129 8)(line_width 1)) + ) + (text "VCC" (rect 144 7 168 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 600 448 664 464)) +) +(pin + (output) + (rect 864 288 1040 304) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "CLK24M576" (rect 90 0 170 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 1040 304 1112 320)) +) +(pin + (output) + (rect 1832 832 2008 848) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "LP_STR" (rect 90 0 144 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 840 2064 856)) +) +(pin + (output) + (rect 1832 936 2008 952) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nACSI_ACK" (rect 90 0 166 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 952 2072 968)) +) +(pin + (output) + (rect 1832 960 2008 976) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nACSI_RESET" (rect 90 0 185 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 976 2072 992)) +) +(pin + (output) + (rect 1832 984 2008 1000) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nACSI_CS" (rect 90 0 158 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 1000 2072 1016)) +) +(pin + (output) + (rect 1832 1008 2008 1024) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "ACSI_DIR" (rect 90 0 154 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 1024 2064 1040)) +) +(pin + (output) + (rect 1832 1032 2008 1048) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "ACSI_A1" (rect 90 0 146 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 1048 2072 1064)) +) +(pin + (output) + (rect 1840 1112 2016 1128) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSCSI_ACK" (rect 90 0 167 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2016 1128 2072 1144)) +) +(pin + (output) + (rect 1840 1136 2016 1152) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSCSI_ATN" (rect 90 0 166 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2016 1152 2080 1168)) +) +(pin + (output) + (rect 1840 1160 2016 1176) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "SCSI_DIR" (rect 90 0 156 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2016 1176 2072 1192)) +) +(pin + (output) + (rect 1920 1264 2096 1280) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "MIDI_OLR" (rect 90 0 156 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1280 2152 1296)) +) +(pin + (output) + (rect 1920 1288 2096 1304) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "MIDI_TLR" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1304 2152 1320)) +) +(pin + (output) + (rect 1840 1320 2016 1336) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "TxD" (rect 90 0 114 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2016 1336 2080 1352)) +) +(pin + (output) + (rect 1840 1344 2016 1360) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "RTS" (rect 90 0 118 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2016 1360 2080 1376)) +) +(pin + (output) + (rect 1848 1368 2024 1384) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "DTR" (rect 90 0 119 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1384 2088 1400)) +) +(pin + (output) + (rect 2112 1400 2288 1416) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "AMKB_TX" (rect 90 0 152 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2288 1416 2392 1448)) +) +(pin + (output) + (rect 1848 1432 2024 1448) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "IDE_RES" (rect 90 0 151 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1448 2088 1464)) +) +(pin + (output) + (rect 1848 1456 2024 1472) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nIDE_CS0" (rect 90 0 158 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1472 2080 1488)) +) +(pin + (output) + (rect 1856 1480 2032 1496) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nIDE_CS1" (rect 90 0 158 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2032 1496 2088 1512)) +) +(pin + (output) + (rect 1848 1504 2024 1520) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nIDE_WR" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1520 2080 1536)) +) +(pin + (output) + (rect 1848 1528 2024 1544) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nIDE_RD" (rect 90 0 151 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1544 2080 1560)) +) +(pin + (output) + (rect 1848 1552 2024 1568) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nCF_CS0" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1568 2088 1584)) +) +(pin + (output) + (rect 1848 1576 2024 1592) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nCF_CS1" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1592 2088 1608)) +) +(pin + (output) + (rect 1920 1608 2096 1624) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nROM3" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1624 2152 1640)) +) +(pin + (output) + (rect 1920 1632 2096 1648) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nROM4" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1648 2152 1664)) +) +(pin + (output) + (rect 1920 1656 2096 1672) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nRP_UDS" (rect 90 0 157 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1672 2152 1688)) +) +(pin + (output) + (rect 1920 1680 2096 1696) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nRP_LDS" (rect 90 0 154 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1696 2152 1712)) +) +(pin + (output) + (rect 1856 1856 2032 1872) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSDSEL" (rect 90 0 145 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2032 1872 2096 1888)) +) +(pin + (output) + (rect 2136 1832 2312 1848) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nWR_GATE" (rect 90 0 166 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 1848 2376 1864)) +) +(pin + (output) + (rect 2136 1808 2312 1824) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nWR" (rect 90 0 121 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 1824 2376 1840)) +) +(pin + (output) + (rect 1928 1912 2104 1928) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "YM_QA" (rect 90 0 136 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2104 1928 2168 1944)) +) +(pin + (output) + (rect 1928 1936 2104 1952) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "YM_QB" (rect 90 0 137 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2104 1952 2168 1968)) +) +(pin + (output) + (rect 1928 1960 2104 1976) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "YM_QC" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2104 1976 2168 1992)) +) +(pin + (output) + (rect 1856 2040 2032 2056) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "SD_CLK" (rect 90 0 146 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2032 2056 2096 2072)) +) +(pin + (output) + (rect 1856 1712 2032 1728) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "DSA_D" (rect 90 0 137 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2032 1728 2096 1744)) +) +(pin + (output) + (rect 2080 72 2256 88) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VR[7..0]" (rect 90 0 139 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2256 88 2344 232)) +) +(pin + (output) + (rect 2000 96 2176 112) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VG[7..0]" (rect 90 0 139 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2176 112 2264 256)) +) +(pin + (output) + (rect 1912 120 2088 136) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VB[7..0]" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2088 136 2176 280)) +) +(pin + (output) + (rect 2528 320 2704 336) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VA[12..0]" (rect 90 0 145 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2704 336 2776 560)) +) +(pin + (output) + (rect 2400 344 2576 360) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVWE" (rect 90 0 128 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2576 360 2640 392)) +) +(pin + (output) + (rect 2304 368 2480 384) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVCAS" (rect 90 0 134 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2480 384 2552 416)) +) +(pin + (output) + (rect 2208 392 2384 408) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVRAS" (rect 90 0 134 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2384 408 2456 440)) +) +(pin + (output) + (rect 2040 416 2216 432) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVCS" (rect 90 0 126 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2216 432 2280 464)) +) +(pin + (output) + (rect 1944 560 2120 576) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VDM[3..0]" (rect 90 0 150 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2120 576 2192 656)) +) +(pin + (output) + (rect 1832 264 2008 280) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nPD_VGA" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 280 2064 296)) +) +(pin + (output) + (rect 1832 2416 2008 2432) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nIRQ[7..2]" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 2432 2112 2576)) +) +(pin + (output) + (rect 864 24 1040 40) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "CLK25M" (rect 90 0 145 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 1040 40 1096 56)) +) +(pin + (output) + (rect 1832 2632 2008 2648) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "TIN0" (rect 90 0 120 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 2648 2064 2664)) +) +(pin + (output) + (rect 1824 3280 2000 3296) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSRCS" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2000 3296 2056 3312)) +) +(pin + (output) + (rect 1824 3304 2000 3320) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSRBLE" (rect 90 0 145 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2000 3320 2056 3336)) +) +(pin + (output) + (rect 1824 3328 2000 3344) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSRBHE" (rect 90 0 147 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2000 3344 2056 3360)) +) +(pin + (output) + (rect 1824 3352 2000 3368) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSRWE" (rect 90 0 140 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2000 3368 2056 3384)) +) +(pin + (output) + (rect 616 2408 792 2424) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nDREQ1" (rect 90 0 147 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 792 2424 856 2440)) +) +(pin + (output) + (rect 608 2128 784 2144) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "LED_FPGA_OK" (rect 90 0 191 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 784 2144 848 2176)) +) +(pin + (output) + (rect 1824 3376 2000 3392) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSROE" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2000 3392 2064 3408)) +) +(pin + (output) + (rect 1944 440 2120 456) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VCKE" (rect 90 0 127 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2120 456 2184 488)) +) +(pin + (output) + (rect 2056 728 2232 744) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nFB_TA" (rect 90 0 140 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2232 744 2288 760)) +) +(pin + (output) + (rect 2712 880 2888 896) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nDDR_CLK" (rect 90 0 166 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2888 896 2960 928)) +) +(pin + (output) + (rect 2536 752 2712 768) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "DDR_CLK" (rect 90 0 158 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2712 768 2784 800)) +) +(pin + (output) + (rect 1832 464 2008 480) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "BA[1..0]" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 480 2080 528)) +) +(pin + (output) + (rect 2136 -72 2312 -56) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VSYNC_PAD" (rect 90 0 173 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 -56 2400 -24)) +) +(pin + (output) + (rect 2712 -88 2888 -72) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "HSYNC_PAD" (rect 90 0 176 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2888 -72 2976 -40)) +) +(pin + (output) + (rect 2712 32 2888 48) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nBLANK_PAD" (rect 90 0 180 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2888 48 2976 80)) +) +(pin + (output) + (rect 2712 160 2891 176) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "PIXEL_CLK_PAD" (rect 90 0 202 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2888 176 2976 208)) +) +(pin + (output) + (rect 1832 216 2008 232) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSYNC" (rect 90 0 137 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 232 2112 264)) +) +(pin + (output) + (rect 2136 1736 2312 1752) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nMOT_ON" (rect 90 0 157 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 1752 2376 1768)) +) +(pin + (output) + (rect 2136 1760 2312 1776) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSTEP_DIR" (rect 90 0 167 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 1776 2376 1792)) +) +(pin + (output) + (rect 2136 1784 2312 1800) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSTEP" (rect 90 0 134 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 1800 2376 1816)) +) +(pin + (output) + (rect 840 48 1016 64) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "CLKUSB" (rect 90 0 147 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 1000 64 1056 80)) +) +(pin + (output) + (rect 1832 856 2008 872) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "LPDIR" (rect 90 0 132 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 864 2064 880)) +) +(pin + (bidir) + (rect 1840 1088 2016 1104) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "SCSI_PAR" (rect 90 0 159 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2016 1104 2080 1120)) +) +(pin + (bidir) + (rect 1840 1184 2016 1200) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "nSCSI_RST" (rect 90 0 167 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2016 1200 2072 1216)) +) +(pin + (bidir) + (rect 1840 1208 2016 1224) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "nSCSI_SEL" (rect 90 0 166 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2016 1224 2080 1240)) +) +(pin + (bidir) + (rect 1840 1232 2016 1248) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "nSCSI_BUSY" (rect 90 0 177 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2016 1248 2072 1264)) +) +(pin + (bidir) + (rect 1856 1992 2032 2008) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "SD_CD_DATA3" (rect 90 0 191 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2032 2008 2096 2024)) +) +(pin + (bidir) + (rect 1856 2016 2032 2032) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "SD_CMD_D1" (rect 90 0 177 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2032 2032 2096 2048)) +) +(pin + (bidir) + (rect 1936 1064 2112 1080) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "SCSI_D[7..0]" (rect 90 0 172 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2112 1080 2176 1208)) +) +(pin + (bidir) + (rect 1904 888 2080 904) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "ACSI_D[7..0]" (rect 90 0 171 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2080 904 2144 1032)) +) +(pin + (bidir) + (rect 1960 808 2136 824) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "LP_D[7..0]" (rect 90 0 157 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2136 824 2200 952)) +) +(pin + (bidir) + (rect 176 1360 352 1376) + (text "BIDIR" (rect 151 0 182 13)(font "Arial" (font_size 6))) + (text "FB_AD[31..0]" (rect 5 0 88 15)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 120 4)(pt 98 4)(line_width 1)) + (line (pt 176 8)(pt 124 8)(line_width 1)) + (line (pt 120 12)(pt 98 12)(line_width 1)) + (line (pt 98 4)(pt 94 8)(line_width 1)) + (line (pt 98 12)(pt 94 8)(line_width 1)) + (line (pt 120 4)(pt 124 8)(line_width 1)) + (line (pt 124 8)(pt 120 12)(line_width 1)) + ) + (flipy) + (text "VCC" (rect 152 7 176 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 96 840 168 1352)) +) +(pin + (bidir) + (rect 2104 3232 2280 3248) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "IO[17..0]" (rect 90 0 143 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2280 3248 2344 3536)) +) +(pin + (bidir) + (rect 1944 3256 2120 3272) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "SRD[15..0]" (rect 90 0 159 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2120 3272 2184 3528)) +) +(pin + (bidir) + (rect 2040 536 2216 552) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "VDQS[3..0]" (rect 90 0 159 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2216 552 2288 632)) +) +(pin + (bidir) + (rect 2648 296 2824 312) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "VD[31..0]" (rect 90 0 147 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2824 312 2896 840)) +) +(symbol + (rect 544 2024 688 2088) + (text "lpm_counter0" (rect 33 1 148 20)(font "Arial" (font_size 10))) + (text "inst18" (rect 8 48 48 63)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 62 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 144 40) + (output) + (text "q[17..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[17..0]" (rect 89 34 140 50)(font "Arial" (font_size 8))) + (line (pt 144 40)(pt 128 40)(line_width 3)) + ) + (drawing + (text "up counter" (rect 84 17 152 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 48)(line_width 1)) + (line (pt 128 48)(pt 16 48)(line_width 1)) + (line (pt 16 48)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) +(symbol + (rect 440 2120 488 2152) + (text "WIRE" (rect 1 0 31 13)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 21 34 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 14 7)(pt 32 16)(line_width 1)) + (line (pt 14 25)(pt 14 7)(line_width 1)) + (line (pt 14 25)(pt 32 16)(line_width 1)) + ) +) +(symbol + (rect 464 1336 608 1432) + (text "lpm_ff0" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst1" (rect 8 80 39 95)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 64 74)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 50 140 66)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 1880 696 1944 776) + (text "NOR4" (rect 1 0 34 13)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 69 34 84)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 26 55)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 26 55)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 26 71)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 26 71)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 14 64)(line_width 1)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 72 47)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 72 47)(font "Courier New" (bold))(invisible)) + (line (pt 56 40)(pt 64 40)(line_width 1)) + ) + (drawing + (line (pt 14 29)(pt 25 29)(line_width 1)) + (line (pt 14 52)(pt 25 52)(line_width 1)) + (line (pt 14 29)(pt 14 13)(line_width 1)) + (line (pt 14 67)(pt 14 51)(line_width 1)) + (arc (pt 25 51)(pt 48 40)(rect -4 -7 55 52)(line_width 1)) + (arc (pt 48 40)(pt 25 29)(rect -4 29 55 88)(line_width 1)) + (arc (pt 8 45)(pt 8 35)(rect -13 24 20 57)(line_width 1)) + (circle (rect 48 36 56 44)(line_width 1)) + ) +) +(symbol + (rect 2632 872 2680 904) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 21 34 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 1896 -88 2128 32) + (text "altddio_out3" (rect 81 1 183 20)(font "Arial" (font_size 10))) + (text "inst5" (rect 8 104 39 119)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 61 27)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 57 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 61 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 50 16)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 243 27)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 138 43)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 147 58)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 152 89)(font "Arial" )) + (text "low" (rect 92 84 114 99)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2464 -104 2696 16) + (text "altddio_out3" (rect 81 1 183 20)(font "Arial" (font_size 10))) + (text "inst6" (rect 8 104 39 119)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 61 27)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 57 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 61 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 50 16)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 243 27)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 138 43)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 147 58)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 152 89)(font "Arial" )) + (text "low" (rect 92 84 114 99)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2464 16 2696 136) + (text "altddio_out3" (rect 81 1 183 20)(font "Arial" (font_size 10))) + (text "inst8" (rect 8 104 39 119)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 61 27)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 57 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 61 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 50 16)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 243 27)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 138 43)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 147 58)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 152 89)(font "Arial" )) + (text "low" (rect 92 84 114 99)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2464 144 2696 264) + (text "altddio_out3" (rect 81 1 183 20)(font "Arial" (font_size 10))) + (text "inst9" (rect 8 104 39 119)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 61 27)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 57 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 61 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 50 16)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 243 27)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 138 43)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 147 58)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 152 89)(font "Arial" )) + (text "low" (rect 92 84 114 99)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2368 120 2400 152) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst10" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 2408 144 2424 176) + (text "VCC" (rect 0 7 13 31)(font "Arial" (font_size 6))(vertical)) + (text "inst11" (rect 5 3 20 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 16 16) + (output) + (text "1" (rect 19 7 27 23)(font "Courier New" (bold))(invisible)) + (text "1" (rect 7 19 23 27)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 16)(pt 8 16)(line_width 1)) + ) + (drawing + (line (pt 8 8)(pt 8 24)(line_width 1)) + ) + (flipy_rotate90) +) +(symbol + (rect 1800 1728 1848 1760) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst14" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 1856 1752 1904 1784) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst15" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 1800 1776 1848 1808) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst16" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 1856 1800 1904 1832) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst17" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 1800 1824 1848 1856) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst19" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 448 -352 752 -104) + (text "altpll2" (rect 132 1 179 20)(font "Arial" (font_size 10))) + (text "inst12" (rect 8 229 48 244)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 44 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 304 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 287 56 303 72)(font "Arial" (font_size 8))) + (line (pt 304 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 304 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 287 80 303 96)(font "Arial" (font_size 8))) + (line (pt 304 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 304 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 287 104 303 120)(font "Arial" (font_size 8))) + (line (pt 304 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 304 144) + (output) + (text "c3" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c3" (rect 287 128 303 144)(font "Arial" (font_size 8))) + (line (pt 304 144)(pt 272 144)(line_width 1)) + ) + (port + (pt 304 168) + (output) + (text "c4" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c4" (rect 287 152 303 168)(font "Arial" (font_size 8))) + (line (pt 304 168)(pt 272 168)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 229 230 295 245)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 244 82)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 266 99)(font "Arial" )) + (text "Clk " (rect 59 111 83 126)(font "Arial" )) + (text "Ratio" (rect 85 111 119 126)(font "Arial" )) + (text "Ph (dg)" (rect 119 111 166 126)(font "Arial" )) + (text "DC (%)" (rect 164 111 211 126)(font "Arial" )) + (text "c0" (rect 63 129 78 144)(font "Arial" )) + (text "4/1" (rect 91 129 111 144)(font "Arial" )) + (text "240.00" (rect 120 129 164 144)(font "Arial" )) + (text "50.00" (rect 169 129 205 144)(font "Arial" )) + (text "c1" (rect 63 147 78 162)(font "Arial" )) + (text "4/1" (rect 91 147 111 162)(font "Arial" )) + (text "0.00" (rect 127 147 155 162)(font "Arial" )) + (text "50.00" (rect 169 147 205 162)(font "Arial" )) + (text "c2" (rect 63 165 78 180)(font "Arial" )) + (text "4/1" (rect 91 165 111 180)(font "Arial" )) + (text "180.00" (rect 120 165 164 180)(font "Arial" )) + (text "50.00" (rect 169 165 205 180)(font "Arial" )) + (text "c3" (rect 63 183 78 198)(font "Arial" )) + (text "4/1" (rect 91 183 111 198)(font "Arial" )) + (text "105.00" (rect 120 183 164 198)(font "Arial" )) + (text "50.00" (rect 169 183 205 198)(font "Arial" )) + (text "c4" (rect 63 201 78 216)(font "Arial" )) + (text "2/1" (rect 91 201 111 216)(font "Arial" )) + (text "270.00" (rect 120 201 164 216)(font "Arial" )) + (text "50.00" (rect 169 201 205 216)(font "Arial" )) + (line (pt 0 0)(pt 305 0)(line_width 1)) + (line (pt 305 0)(pt 305 249)(line_width 1)) + (line (pt 0 249)(pt 305 249)(line_width 1)) + (line (pt 0 0)(pt 0 249)(line_width 1)) + (line (pt 56 108)(pt 206 108)(line_width 1)) + (line (pt 56 125)(pt 206 125)(line_width 1)) + (line (pt 56 143)(pt 206 143)(line_width 1)) + (line (pt 56 161)(pt 206 161)(line_width 1)) + (line (pt 56 179)(pt 206 179)(line_width 1)) + (line (pt 56 197)(pt 206 197)(line_width 1)) + (line (pt 56 215)(pt 206 215)(line_width 1)) + (line (pt 56 108)(pt 56 215)(line_width 1)) + (line (pt 82 108)(pt 82 215)(line_width 3)) + (line (pt 116 108)(pt 116 215)(line_width 3)) + (line (pt 161 108)(pt 161 215)(line_width 3)) + (line (pt 205 108)(pt 205 215)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 232)(line_width 1)) + (line (pt 48 232)(pt 272 232)(line_width 1)) + (line (pt 48 56)(pt 48 232)(line_width 1)) + ) +) +(symbol + (rect -16 680 32 712) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst23" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 192 472 408 768) + (text "altpll_reconfig1" (rect 54 1 182 20)(font "Arial" (font_size 10))) + (text "inst7" (rect 8 277 39 292)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "reconfig" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "reconfig" (rect 20 32 73 48)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "read_param" (rect 0 0 80 16)(font "Arial" (font_size 8))) + (text "read_param" (rect 20 48 100 64)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "write_param" (rect 0 0 82 16)(font "Arial" (font_size 8))) + (text "write_param" (rect 20 64 102 80)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_in[8..0]" (rect 0 0 84 16)(font "Arial" (font_size 8))) + (text "data_in[8..0]" (rect 20 88 104 104)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "counter_type[3..0]" (rect 0 0 123 16)(font "Arial" (font_size 8))) + (text "counter_type[3..0]" (rect 20 104 143 120)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "counter_param[2..0]" (rect 0 0 136 16)(font "Arial" (font_size 8))) + (text "counter_param[2..0]" (rect 20 120 156 136)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "pll_scandataout" (rect 0 0 107 16)(font "Arial" (font_size 8))) + (text "pll_scandataout" (rect 20 160 127 176)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 16 168)(line_width 1)) + ) + (port + (pt 0 184) + (input) + (text "pll_scandone" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "pll_scandone" (rect 20 176 109 192)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 16 184)(line_width 1)) + ) + (port + (pt 0 208) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 20 200 56 216)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)(line_width 1)) + ) + (port + (pt 0 224) + (input) + (text "reset" (rect 0 0 34 16)(font "Arial" (font_size 8))) + (text "reset" (rect 20 216 54 232)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)(line_width 1)) + ) + (port + (pt 0 248) + (input) + (text "pll_areset_in" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_areset_in" (rect 20 240 106 256)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 16 248)(line_width 1)) + ) + (port + (pt 216 40) + (output) + (text "busy" (rect 0 0 33 16)(font "Arial" (font_size 8))) + (text "busy" (rect 169 32 202 48)(font "Arial" (font_size 8))) + (line (pt 216 40)(pt 200 40)(line_width 1)) + ) + (port + (pt 216 96) + (output) + (text "data_out[8..0]" (rect 0 0 94 16)(font "Arial" (font_size 8))) + (text "data_out[8..0]" (rect 117 88 211 104)(font "Arial" (font_size 8))) + (line (pt 216 96)(pt 200 96)(line_width 3)) + ) + (port + (pt 216 152) + (output) + (text "pll_scandata" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_scandata" (rect 124 144 210 160)(font "Arial" (font_size 8))) + (line (pt 216 152)(pt 200 152)(line_width 1)) + ) + (port + (pt 216 168) + (output) + (text "pll_scanclk" (rect 0 0 76 16)(font "Arial" (font_size 8))) + (text "pll_scanclk" (rect 132 160 208 176)(font "Arial" (font_size 8))) + (line (pt 216 168)(pt 200 168)(line_width 1)) + ) + (port + (pt 216 200) + (output) + (text "pll_scanclkena" (rect 0 0 101 16)(font "Arial" (font_size 8))) + (text "pll_scanclkena" (rect 111 192 212 208)(font "Arial" (font_size 8))) + (line (pt 216 200)(pt 200 200)(line_width 1)) + ) + (port + (pt 216 216) + (output) + (text "pll_configupdate" (rect 0 0 109 16)(font "Arial" (font_size 8))) + (text "pll_configupdate" (rect 104 208 213 224)(font "Arial" (font_size 8))) + (line (pt 216 216)(pt 200 216)(line_width 1)) + ) + (port + (pt 216 248) + (output) + (text "pll_areset" (rect 0 0 66 16)(font "Arial" (font_size 8))) + (text "pll_areset" (rect 141 240 207 256)(font "Arial" (font_size 8))) + (line (pt 216 248)(pt 200 248)(line_width 1)) + ) + (drawing + (line (pt 0 0)(pt 217 0)(line_width 1)) + (line (pt 217 0)(pt 217 297)(line_width 1)) + (line (pt 0 297)(pt 217 297)(line_width 1)) + (line (pt 0 0)(pt 0 297)(line_width 1)) + (line (pt 16 24)(pt 201 24)(line_width 1)) + (line (pt 201 24)(pt 201 273)(line_width 1)) + (line (pt 16 273)(pt 201 273)(line_width 1)) + (line (pt 16 24)(pt 16 273)(line_width 1)) + ) +) +(symbol + (rect 608 496 984 728) + (text "altpll4" (rect 168 1 215 20)(font "Arial" (font_size 10))) + (text "inst22" (rect 8 213 48 228)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 44 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 88 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "areset" (rect 0 0 42 16)(font "Arial" (font_size 8))) + (text "areset" (rect 4 80 46 96)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 88 96)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "scanclk" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "scanclk" (rect 4 104 57 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 88 120)(line_width 1)) + ) + (port + (pt 0 144) + (input) + (text "scandata" (rect 0 0 62 16)(font "Arial" (font_size 8))) + (text "scandata" (rect 4 128 66 144)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 88 144)(line_width 1)) + ) + (port + (pt 0 168) + (input) + (text "scanclkena" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "scanclkena" (rect 4 152 81 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 88 168)(line_width 1)) + ) + (port + (pt 0 192) + (input) + (text "configupdate" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "configupdate" (rect 4 176 90 192)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 88 192)(line_width 1)) + ) + (port + (pt 376 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 359 56 375 72)(font "Arial" (font_size 8))) + (line (pt 376 72)(pt 288 72)(line_width 1)) + ) + (port + (pt 376 96) + (output) + (text "scandataout" (rect 0 0 83 16)(font "Arial" (font_size 8))) + (text "scandataout" (rect 302 80 385 96)(font "Arial" (font_size 8))) + (line (pt 376 96)(pt 288 96)(line_width 1)) + ) + (port + (pt 376 120) + (output) + (text "scandone" (rect 0 0 66 16)(font "Arial" (font_size 8))) + (text "scandone" (rect 317 104 383 120)(font "Arial" (font_size 8))) + (line (pt 376 120)(pt 288 120)(line_width 1)) + ) + (port + (pt 376 144) + (output) + (text "locked" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "locked" (rect 335 128 379 144)(font "Arial" (font_size 8))) + (line (pt 376 144)(pt 288 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 301 214 367 229)(font "Arial" )) + (text "inclk0 frequency: 48.000 MHz" (rect 98 123 284 138)(font "Arial" )) + (text "Operation Mode: Normal" (rect 98 140 256 155)(font "Arial" )) + (text "Clk " (rect 99 167 123 182)(font "Arial" )) + (text "Ratio" (rect 125 167 159 182)(font "Arial" )) + (text "Ph (dg)" (rect 159 167 206 182)(font "Arial" )) + (text "DC (%)" (rect 204 167 251 182)(font "Arial" )) + (text "c0" (rect 103 185 118 200)(font "Arial" )) + (text "2/1" (rect 131 185 151 200)(font "Arial" )) + (text "0.00" (rect 167 185 195 200)(font "Arial" )) + (text "50.00" (rect 209 185 245 200)(font "Arial" )) + (line (pt 0 0)(pt 377 0)(line_width 1)) + (line (pt 377 0)(pt 377 233)(line_width 1)) + (line (pt 0 233)(pt 377 233)(line_width 1)) + (line (pt 0 0)(pt 0 233)(line_width 1)) + (line (pt 96 164)(pt 246 164)(line_width 1)) + (line (pt 96 181)(pt 246 181)(line_width 1)) + (line (pt 96 199)(pt 246 199)(line_width 1)) + (line (pt 96 164)(pt 96 199)(line_width 1)) + (line (pt 122 164)(pt 122 199)(line_width 3)) + (line (pt 156 164)(pt 156 199)(line_width 3)) + (line (pt 201 164)(pt 201 199)(line_width 3)) + (line (pt 245 164)(pt 245 199)(line_width 1)) + (line (pt 88 56)(pt 288 56)(line_width 1)) + (line (pt 288 56)(pt 288 216)(line_width 1)) + (line (pt 88 216)(pt 288 216)(line_width 1)) + (line (pt 88 56)(pt 88 216)(line_width 1)) + ) +) +(symbol + (rect 440 -88 744 144) + (text "altpll3" (rect 132 1 179 20)(font "Arial" (font_size 10))) + (text "inst13" (rect 8 213 48 228)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 44 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 304 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 287 56 303 72)(font "Arial" (font_size 8))) + (line (pt 304 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 304 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 287 80 303 96)(font "Arial" (font_size 8))) + (line (pt 304 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 304 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 287 104 303 120)(font "Arial" (font_size 8))) + (line (pt 304 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 304 144) + (output) + (text "c3" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c3" (rect 287 128 303 144)(font "Arial" (font_size 8))) + (line (pt 304 144)(pt 272 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 229 214 295 229)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 244 82)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 266 99)(font "Arial" )) + (text "Clk " (rect 59 111 83 126)(font "Arial" )) + (text "Ratio" (rect 86 111 120 126)(font "Arial" )) + (text "Ph (dg)" (rect 121 111 168 126)(font "Arial" )) + (text "DC (%)" (rect 166 111 213 126)(font "Arial" )) + (text "c0" (rect 63 129 78 144)(font "Arial" )) + (text "2/33" (rect 88 129 116 144)(font "Arial" )) + (text "0.00" (rect 129 129 157 144)(font "Arial" )) + (text "50.00" (rect 171 129 207 144)(font "Arial" )) + (text "c1" (rect 63 147 78 162)(font "Arial" )) + (text "16/33" (rect 85 147 121 162)(font "Arial" )) + (text "0.00" (rect 129 147 157 162)(font "Arial" )) + (text "50.00" (rect 171 147 207 162)(font "Arial" )) + (text "c2" (rect 63 165 78 180)(font "Arial" )) + (text "25/33" (rect 85 165 121 180)(font "Arial" )) + (text "0.00" (rect 129 165 157 180)(font "Arial" )) + (text "50.00" (rect 171 165 207 180)(font "Arial" )) + (text "c3" (rect 63 183 78 198)(font "Arial" )) + (text "16/11" (rect 85 183 121 198)(font "Arial" )) + (text "0.00" (rect 129 183 157 198)(font "Arial" )) + (text "50.00" (rect 171 183 207 198)(font "Arial" )) + (line (pt 0 0)(pt 305 0)(line_width 1)) + (line (pt 305 0)(pt 305 233)(line_width 1)) + (line (pt 0 233)(pt 305 233)(line_width 1)) + (line (pt 0 0)(pt 0 233)(line_width 1)) + (line (pt 56 108)(pt 208 108)(line_width 1)) + (line (pt 56 125)(pt 208 125)(line_width 1)) + (line (pt 56 143)(pt 208 143)(line_width 1)) + (line (pt 56 161)(pt 208 161)(line_width 1)) + (line (pt 56 179)(pt 208 179)(line_width 1)) + (line (pt 56 197)(pt 208 197)(line_width 1)) + (line (pt 56 108)(pt 56 197)(line_width 1)) + (line (pt 82 108)(pt 82 197)(line_width 3)) + (line (pt 118 108)(pt 118 197)(line_width 3)) + (line (pt 163 108)(pt 163 197)(line_width 3)) + (line (pt 207 108)(pt 207 197)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 216)(line_width 1)) + (line (pt 48 216)(pt 272 216)(line_width 1)) + (line (pt 48 56)(pt 48 216)(line_width 1)) + ) +) +(symbol + (rect 440 176 768 392) + (text "altpll1" (rect 144 1 191 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 197 31 212)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 44 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 328 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 311 56 327 72)(font "Arial" (font_size 8))) + (line (pt 328 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 328 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 311 80 327 96)(font "Arial" (font_size 8))) + (line (pt 328 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 328 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 311 104 327 120)(font "Arial" (font_size 8))) + (line (pt 328 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 328 144) + (output) + (text "locked" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "locked" (rect 287 128 331 144)(font "Arial" (font_size 8))) + (line (pt 328 144)(pt 272 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 253 198 319 213)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 244 82)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 266 99)(font "Arial" )) + (text "Clk " (rect 59 111 83 126)(font "Arial" )) + (text "Ratio" (rect 90 111 124 126)(font "Arial" )) + (text "Ph (dg)" (rect 128 111 175 126)(font "Arial" )) + (text "DC (%)" (rect 173 111 220 126)(font "Arial" )) + (text "c0" (rect 63 129 78 144)(font "Arial" )) + (text "1/66" (rect 92 129 120 144)(font "Arial" )) + (text "0.00" (rect 136 129 164 144)(font "Arial" )) + (text "50.00" (rect 178 129 214 144)(font "Arial" )) + (text "c1" (rect 63 147 78 162)(font "Arial" )) + (text "67/900" (rect 85 147 129 162)(font "Arial" )) + (text "0.00" (rect 136 147 164 162)(font "Arial" )) + (text "50.00" (rect 178 147 214 162)(font "Arial" )) + (text "c2" (rect 63 165 78 180)(font "Arial" )) + (text "67/90" (rect 89 165 125 180)(font "Arial" )) + (text "0.00" (rect 136 165 164 180)(font "Arial" )) + (text "50.00" (rect 178 165 214 180)(font "Arial" )) + (line (pt 0 0)(pt 329 0)(line_width 1)) + (line (pt 329 0)(pt 329 217)(line_width 1)) + (line (pt 0 217)(pt 329 217)(line_width 1)) + (line (pt 0 0)(pt 0 217)(line_width 1)) + (line (pt 56 108)(pt 215 108)(line_width 1)) + (line (pt 56 125)(pt 215 125)(line_width 1)) + (line (pt 56 143)(pt 215 143)(line_width 1)) + (line (pt 56 161)(pt 215 161)(line_width 1)) + (line (pt 56 179)(pt 215 179)(line_width 1)) + (line (pt 56 108)(pt 56 179)(line_width 1)) + (line (pt 82 108)(pt 82 179)(line_width 3)) + (line (pt 125 108)(pt 125 179)(line_width 3)) + (line (pt 170 108)(pt 170 179)(line_width 3)) + (line (pt 214 108)(pt 214 179)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 200)(line_width 1)) + (line (pt 48 200)(pt 272 200)(line_width 1)) + (line (pt 48 56)(pt 48 200)(line_width 1)) + ) +) +(symbol + (rect 944 416 1008 464) + (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "inst25" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 12)(pt 30 12)(line_width 1)) + (line (pt 14 37)(pt 31 37)(line_width 1)) + (line (pt 14 12)(pt 14 37)(line_width 1)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)(line_width 1)) + ) +) +(block + (rect 1264 2944 1672 3560) + (text "DSP" (rect 5 5 36 21)(font "Arial" (font_size 8))) (text "Mathias_Alles" (rect 5 602 95 617)(font "Arial" )) (block_io "CLK33M" (input)) + (block_io "MAIN_CLK" (input)) + (block_io "nFB_OE" (input)) + (block_io "nFB_WR" (input)) + (block_io "nFB_CS1" (input)) + (block_io "nFB_CS2" (input)) + (block_io "FB_SIZE0" (input)) + (block_io "FB_SIZE1" (input)) + (block_io "nFB_BURST" (input)) + (block_io "FB_ADR[31..0]" (input)) + (block_io "nRSTO" (input)) + (block_io "nFB_CS3" (input)) + (block_io "nSRCS" (output)) + (block_io "nSRBLE" (output)) + (block_io "nSRBHE" (output)) + (block_io "nSRWE" (output)) + (block_io "nSROE" (output)) + (block_io "DSP_INT" (output)) + (block_io "DSP_TA" (output)) + (block_io "FB_AD[31..0]" (bidir)) + (block_io "IO[17..0]" (bidir)) + (block_io "SRD[15..0]" (bidir)) + (mapper + (pt 408 416) + (bidir) + ) + (mapper + (pt 408 392) + (bidir) + ) + (mapper + (pt 408 368) + (bidir) + ) + (mapper + (pt 408 320) + (bidir) + ) + (mapper + (pt 408 440) + (bidir) + ) + (mapper + (pt 408 344) + (bidir) + ) + (mapper + (pt 408 296) + (bidir) + ) + (mapper + (pt 408 40) + (bidir) + ) + (mapper + (pt 0 56) + (bidir) + ) + (mapper + (pt 0 80) + (bidir) + ) + (mapper + (pt 0 104) + (bidir) + ) + (mapper + (pt 0 128) + (bidir) + ) + (mapper + (pt 0 152) + (bidir) + ) + (mapper + (pt 0 176) + (bidir) + ) + (mapper + (pt 0 248) + (bidir) + ) + (mapper + (pt 0 224) + (bidir) + ) + (mapper + (pt 0 272) + (bidir) + ) + (mapper + (pt 0 296) + (bidir) + ) + (mapper + (pt 408 72) + (bidir) + ) + (mapper + (pt 408 576) + (bidir) + ) + (mapper + (pt 0 320) + (bidir) + ) + (mapper + (pt 0 200) + (bidir) + ) +) +(block + (rect 1264 2344 1672 2904) + (text "interrupt_handler" (rect 5 5 118 21)(font "Arial" (font_size 8))) (text "nobody" (rect 5 546 52 561)(font "Arial" )) (block_io "MAIN_CLK" (input)) + (block_io "nFB_WR" (input)) + (block_io "nFB_CS1" (input)) + (block_io "nFB_CS2" (input)) + (block_io "FB_SIZE0" (input)) + (block_io "FB_SIZE1" (input)) + (block_io "FB_ADR[31..0]" (input)) + (block_io "PIC_INT" (input)) + (block_io "E0_INT" (input)) + (block_io "DVI_INT" (input)) + (block_io "nPCI_INTA" (input)) + (block_io "nPCI_INTB" (input)) + (block_io "nPCI_INTC" (input)) + (block_io "nPCI_INTD" (input)) + (block_io "nMFP_INT" (input)) + (block_io "nFB_OE" (input)) + (block_io "DSP_INT" (input)) + (block_io "VSYNC" (input)) + (block_io "HSYNC" (input)) + (block_io "DMA_DRQ" (input)) + (block_io "nIRQ[7..2]" (output)) + (block_io "INT_HANDLER_TA" (output)) + (block_io "ACP_CONF[31..0]" (output)) + (block_io "TIN0" (output)) + (block_io "FB_AD[31..0]" (bidir)) + (mapper + (pt 0 136) + (bidir) + ) + (mapper + (pt 0 160) + (bidir) + ) + (mapper + (pt 0 184) + (bidir) + ) + (mapper + (pt 0 88) + (bidir) + ) + (mapper + (pt 0 112) + (bidir) + ) + (mapper + (pt 0 40) + (bidir) + ) + (mapper + (pt 408 56) + (bidir) + ) + (mapper + (pt 408 80) + (bidir) + ) + (mapper + (pt 0 256) + (bidir) + ) + (mapper + (pt 0 280) + (bidir) + ) + (mapper + (pt 0 304) + (bidir) + ) + (mapper + (pt 0 208) + (bidir) + ) + (mapper + (pt 0 64) + (bidir) + ) + (mapper + (pt 0 376) + (bidir) + ) + (mapper + (pt 0 400) + (bidir) + ) + (mapper + (pt 0 328) + (bidir) + ) + (mapper + (pt 0 352) + (bidir) + ) + (mapper + (pt 0 432) + (bidir) + ) + (mapper + (pt 0 456) + (bidir) + ) + (mapper + (pt 0 480) + (bidir) + ) + (mapper + (pt 0 504) + (bidir) + ) + (mapper + (pt 408 504) + (bidir) + ) + (mapper + (pt 0 528) + (bidir) + ) + (mapper + (pt 408 240) + (bidir) + ) + (mapper + (pt 408 296) + (bidir) + ) +) +(block + (rect 1264 744 1672 2264) + (text "FalconIO_SDCard_IDE_CF" (rect 5 5 189 21)(font "Arial" (font_size 8))) (text "Wolfgang_Foerster_and_Fredi_Aschwanden" (rect 5 1506 295 1521)(font "Arial" )) (block_io "CLK33M" (input)) + (block_io "MAIN_CLK" (input)) + (block_io "CLK2M" (input)) + (block_io "CLK500k" (input)) + (block_io "nFB_CS1" (input)) + (block_io "FB_SIZE0" (input)) + (block_io "FB_SIZE1" (input)) + (block_io "nFB_BURST" (input)) + (block_io "FB_ADR[31..0]" (input)) + (block_io "LP_BUSY" (input)) + (block_io "nACSI_DRQ" (input)) + (block_io "nACSI_INT" (input)) + (block_io "nSCSI_DRQ" (input)) + (block_io "nSCSI_MSG" (input)) + (block_io "MIDI_IN" (input)) + (block_io "RxD" (input)) + (block_io "CTS" (input)) + (block_io "RI" (input)) + (block_io "DCD" (input)) + (block_io "AMKB_RX" (input)) + (block_io "PIC_AMKB_RX" (input)) + (block_io "IDE_RDY" (input)) + (block_io "IDE_INT" (input)) + (block_io "WP_CS_CARD" (input)) + (block_io "nINDEX" (input)) + (block_io "TRACK00" (input)) + (block_io "nRD_DATA" (input)) + (block_io "nDCHG" (input)) + (block_io "SD_DATA0" (input)) + (block_io "SD_DATA1" (input)) + (block_io "SD_DATA2" (input)) + (block_io "SD_CARD_DEDECT" (input)) + (block_io "SD_WP" (input)) + (block_io "nDACK0" (input)) + (block_io "nFB_WR" (input)) + (block_io "WP_CF_CARD" (input)) + (block_io "nWP" (input)) + (block_io "nFB_CS2" (input)) + (block_io "nRSTO" (input)) + (block_io "nSCSI_C_D" (input)) + (block_io "nSCSI_I_O" (input)) + (block_io "CLK2M4576" (input)) + (block_io "nFB_OE" (input)) + (block_io "VSYNC" (input)) + (block_io "HSYNC" (input)) + (block_io "DSP_INT" (input)) + (block_io "nBLANK" (input)) + (block_io "FDC_CLK" (input)) + (block_io "FB_ALE" (input)) + (block_io "ACP_CONF[31..24]" (input)) + (block_io "HD_DD" (input)) + (block_io "nIDE_CS1" (output)) + (block_io "nIDE_CS0" (output)) + (block_io "LP_STR" (output)) + (block_io "LP_DIR" (output)) + (block_io "nACSI_ACK" (output)) + (block_io "nACSI_RESET" (output)) + (block_io "nACSI_CS" (output)) + (block_io "ACSI_DIR" (output)) + (block_io "ACSI_A1" (output)) + (block_io "nSCSI_ACK" (output)) + (block_io "nSCSI_ATN" (output)) + (block_io "SCSI_DIR" (output)) + (block_io "SD_CLK" (output)) + (block_io "YM_QA" (output)) + (block_io "YM_QC" (output)) + (block_io "YM_QB" (output)) + (block_io "nSDSEL" (output)) + (block_io "STEP" (output)) + (block_io "MOT_ON" (output)) + (block_io "nRP_LDS" (output)) + (block_io "nRP_UDS" (output)) + (block_io "nROM4" (output)) + (block_io "nROM3" (output)) + (block_io "nCF_CS1" (output)) + (block_io "nCF_CS0" (output)) + (block_io "nIDE_RD" (output)) + (block_io "nIDE_WR" (output)) + (block_io "AMKB_TX" (output)) + (block_io "IDE_RES" (output)) + (block_io "DTR" (output)) + (block_io "RTS" (output)) + (block_io "TxD" (output)) + (block_io "MIDI_OLR" (output)) + (block_io "MIDI_TLR" (output)) + (block_io "nDREQ0" (output)) + (block_io "DSA_D" (output)) + (block_io "nMFP_INT" (output)) + (block_io "FALCON_IO_TA" (output)) + (block_io "STEP_DIR" (output)) + (block_io "WR_DATA" (output)) + (block_io "WR_GATE" (output)) + (block_io "DMA_DRQ" (output)) + (block_io "FB_AD[31..0]" (bidir)) + (block_io "LP_D[7..0]" (bidir)) + (block_io "ACSI_D[7..0]" (bidir)) + (block_io "SCSI_D[7..0]" (bidir)) + (block_io "SCSI_PAR" (bidir)) + (block_io "nSCSI_SEL" (bidir)) + (block_io "nSCSI_BUSY" (bidir)) + (block_io "nSCSI_RST" (bidir)) + (block_io "SD_CD_DATA3" (bidir)) + (block_io "SD_CDM_D1" (bidir)) + (mapper + (pt 0 128) + (bidir) + ) + (mapper + (pt 0 104) + (bidir) + ) + (mapper + (pt 0 56) + (bidir) + ) + (mapper + (pt 0 80) + (bidir) + ) + (mapper + (pt 0 224) + (bidir) + ) + (mapper + (pt 0 248) + (bidir) + ) + (mapper + (pt 0 272) + (bidir) + ) + (mapper + (pt 408 96) + (bidir) + ) + (mapper + (pt 408 120) + (bidir) + ) + (mapper + (pt 408 72) + (bidir) + ) + (mapper + (pt 408 152) + (bidir) + ) + (mapper + (pt 408 200) + (bidir) + ) + (mapper + (pt 408 224) + (bidir) + ) + (mapper + (pt 408 248) + (bidir) + ) + (mapper + (pt 408 272) + (bidir) + ) + (mapper + (pt 408 296) + (bidir) + ) + (mapper + (pt 408 424) + (bidir) + ) + (mapper + (pt 408 352) + (bidir) + ) + (mapper + (pt 408 328) + (bidir) + ) + (mapper + (pt 408 448) + (bidir) + ) + (mapper + (pt 408 400) + (bidir) + ) + (mapper + (pt 408 376) + (bidir) + ) + (mapper + (pt 408 472) + (bidir) + ) + (mapper + (pt 408 496) + (bidir) + ) + (mapper + (pt 408 608) + (bidir) + ) + (mapper + (pt 408 632) + (bidir) + ) + (mapper + (pt 408 528) + (bidir) + ) + (mapper + (pt 408 552) + (bidir) + ) + (mapper + (pt 408 584) + (bidir) + ) + (mapper + (pt 0 624) + (bidir) + ) + (mapper + (pt 0 656) + (bidir) + ) + (mapper + (pt 0 680) + (bidir) + ) + (mapper + (pt 0 704) + (bidir) + ) + (mapper + (pt 0 728) + (bidir) + ) + (mapper + (pt 0 752) + (bidir) + ) + (mapper + (pt 0 776) + (bidir) + ) + (mapper + (pt 408 664) + (bidir) + ) + (mapper + (pt 0 808) + (bidir) + ) + (mapper + (pt 0 832) + (bidir) + ) + (mapper + (pt 408 696) + (bidir) + ) + (mapper + (pt 408 720) + (bidir) + ) + (mapper + (pt 408 744) + (bidir) + ) + (mapper + (pt 408 768) + (bidir) + ) + (mapper + (pt 408 792) + (bidir) + ) + (mapper + (pt 408 816) + (bidir) + ) + (mapper + (pt 408 840) + (bidir) + ) + (mapper + (pt 0 856) + (bidir) + ) + (mapper + (pt 408 872) + (bidir) + ) + (mapper + (pt 408 896) + (bidir) + ) + (mapper + (pt 408 920) + (bidir) + ) + (mapper + (pt 408 944) + (bidir) + ) + (mapper + (pt 0 912) + (bidir) + ) + (mapper + (pt 0 936) + (bidir) + ) + (mapper + (pt 0 960) + (bidir) + ) + (mapper + (pt 0 984) + (bidir) + ) + (mapper + (pt 0 1008) + (bidir) + ) + (mapper + (pt 408 976) + (bidir) + ) + (mapper + (pt 408 1000) + (bidir) + ) + (mapper + (pt 408 1072) + (bidir) + ) + (mapper + (pt 408 1096) + (bidir) + ) + (mapper + (pt 408 1176) + (bidir) + ) + (mapper + (pt 0 296) + (bidir) + ) + (mapper + (pt 408 1256) + (bidir) + ) + (mapper + (pt 0 1040) + (bidir) + ) + (mapper + (pt 0 1064) + (bidir) + ) + (mapper + (pt 0 1088) + (bidir) + ) + (mapper + (pt 0 1112) + (bidir) + ) + (mapper + (pt 0 1136) + (bidir) + ) + (mapper + (pt 0 432) + (bidir) + ) + (mapper + (pt 0 464) + (bidir) + ) + (mapper + (pt 0 488) + (bidir) + ) + (mapper + (pt 0 520) + (bidir) + ) + (mapper + (pt 0 544) + (bidir) + ) + (mapper + (pt 0 568) + (bidir) + ) + (mapper + (pt 0 592) + (bidir) + ) + (mapper + (pt 408 1424) + (bidir) + ) + (mapper + (pt 0 320) + (bidir) + ) + (mapper + (pt 0 200) + (bidir) + ) + (mapper + (pt 0 344) + (bidir) + ) + (mapper + (pt 0 1168) + (bidir) + ) + (mapper + (pt 0 1192) + (bidir) + ) + (mapper + (pt 0 368) + (bidir) + ) + (mapper + (pt 0 392) + (bidir) + ) + (mapper + (pt 0 176) + (bidir) + ) + (mapper + (pt 0 1216) + (bidir) + ) + (mapper + (pt 408 48) + (bidir) + ) + (mapper + (pt 408 16) + (bidir) + ) + (mapper + (pt 0 1240) + (bidir) + ) + (mapper + (pt 408 1304) + (bidir) + ) + (mapper + (pt 408 1200) + (bidir) + ) + (mapper + (pt 408 1344) + (bidir) + ) + (mapper + (pt 408 1280) + (bidir) + ) + (mapper + (pt 408 1224) + (bidir) + ) + (mapper + (pt 408 1120) + (bidir) + ) + (mapper + (pt 408 1048) + (bidir) + ) + (mapper + (pt 408 1024) + (bidir) + ) + (mapper + (pt 0 32) + (bidir) + ) + (mapper + (pt 0 152) + (bidir) + ) + (mapper + (pt 408 1368) + (bidir) + ) + (mapper + (pt 0 1264) + (bidir) + ) + (mapper + (pt 0 1336) + (bidir) + ) + (mapper + (pt 0 888) + (bidir) + ) +) +(block + (rect 1264 -48 1672 728) + (text "Video" (rect 5 5 43 21)(font "Arial" (font_size 8))) (text "Fredi_Aschwanden" (rect 5 762 130 777)(font "Arial" )) (block_io "FB_ADR[31..0]" (input)) + (block_io "MAIN_CLK" (input)) + (block_io "nFB_CS1" (input)) + (block_io "nFB_CS2" (input)) + (block_io "nFB_CS3" (input)) + (block_io "nFB_WR" (input)) + (block_io "FB_SIZE0" (input)) + (block_io "FB_SIZE1" (input)) + (block_io "nRSTO" (input)) + (block_io "nFB_OE" (input)) + (block_io "FB_ALE" (input)) + (block_io "DDRCLK[3..0]" (input)) + (block_io "DDR_SYNC_66M" (input)) + (block_io "CLK33M" (input)) + (block_io "CLK25M" (input)) + (block_io "CLK_VIDEO" (input)) + (block_io "VR_D[8..0]" (input)) + (block_io "VR_BUSY" (input)) + (block_io "VR_RD" (output)) + (block_io "VG[7..0]" (output)) + (block_io "VB[7..0]" (output)) + (block_io "VR[7..0]" (output)) + (block_io "nBLANK" (output)) + (block_io "VA[12..0]" (output)) + (block_io "nVWE" (output)) + (block_io "nVCAS" (output)) + (block_io "nVRAS" (output)) + (block_io "nVCS" (output)) + (block_io "VDM[3..0]" (output)) + (block_io "nPD_VGA" (output)) + (block_io "VCKE" (output)) + (block_io "VSYNC" (output)) + (block_io "HSYNC" (output)) + (block_io "nSYNC" (output)) + (block_io "VIDEO_TA" (output)) + (block_io "PIXEL_CLK" (output)) + (block_io "BA[1..0]" (output)) + (block_io "VIDEO_RECONFIG" (output)) + (block_io "VR_WR" (output)) + (block_io "VDQS[3..0]" (bidir)) + (block_io "FB_AD[31..0]" (bidir)) + (block_io "VD[31..0]" (bidir)) + (mapper + (pt 408 448) + (bidir) + ) + (mapper + (pt 408 496) + (bidir) + ) + (mapper + (pt 408 592) + (bidir) + ) + (mapper + (pt 408 352) + (bidir) + ) + (mapper + (pt 408 760) + (bidir) + ) + (mapper + (pt 408 72) + (bidir) + ) + (mapper + (pt 0 392) + (bidir) + ) + (mapper + (pt 0 248) + (bidir) + ) + (mapper + (pt 0 272) + (bidir) + ) + (mapper + (pt 0 320) + (bidir) + ) + (mapper + (pt 0 344) + (bidir) + ) + (mapper + (pt 0 152) + (bidir) + ) + (mapper + (pt 0 104) + (bidir) + ) + (mapper + (pt 0 296) + (bidir) + ) + (mapper + (pt 408 128) + (bidir) + ) + (mapper + (pt 408 152) + (bidir) + ) + (mapper + (pt 408 176) + (bidir) + ) + (mapper + (pt 408 200) + (bidir) + ) + (mapper + (pt 408 224) + (bidir) + ) + (mapper + (pt 408 248) + (bidir) + ) + (mapper + (pt 408 272) + (bidir) + ) + (mapper + (pt 408 296) + (bidir) + ) + (mapper + (pt 0 416) + (bidir) + ) + (mapper + (pt 408 320) + (bidir) + ) + (mapper + (pt 408 472) + (bidir) + ) + (mapper + (pt 408 424) + (bidir) + ) + (mapper + (pt 408 400) + (bidir) + ) + (mapper + (pt 408 376) + (bidir) + ) + (mapper + (pt 0 224) + (bidir) + ) + (mapper + (pt 0 368) + (bidir) + ) + (mapper + (pt 0 200) + (bidir) + ) + (mapper + (pt 0 176) + (bidir) + ) + (mapper + (pt 408 568) + (bidir) + ) + (mapper + (pt 408 520) + (bidir) + ) + (mapper + (pt 0 648) + (bidir) + ) + (mapper + (pt 0 672) + (bidir) + ) + (mapper + (pt 0 616) + (bidir) + ) + (mapper + (pt 0 528) + (bidir) + ) + (mapper + (pt 408 656) + (bidir) + ) + (mapper + (pt 408 640) + (bidir) + ) + (mapper + (pt 408 624) + (bidir) + ) + (mapper + (pt 0 512) + (bidir) + ) +) +(connector + (text "FB_AD[31..0]" (rect 1682 776 1765 791)(font "Arial" )) + (pt 1832 792) + (pt 1672 792) + (bus) +) +(connector + (text "FB_ADR[31..0]" (rect 1146 1072 1240 1087)(font "Arial" )) + (pt 1112 1088) + (pt 1264 1088) + (bus) +) +(connector + (text "MAIN_CLK" (rect 1162 784 1231 799)(font "Arial" )) + (pt 1152 800) + (pt 1264 800) +) +(connector + (text "CLK33M" (rect 1210 760 1265 775)(font "Arial" )) + (pt 1200 776) + (pt 1264 776) +) +(connector + (text "CLK2M" (rect 1202 808 1249 823)(font "Arial" )) + (pt 1192 824) + (pt 1264 824) +) +(connector + (text "CLK500k" (rect 1202 832 1262 847)(font "Arial" )) + (pt 1192 848) + (pt 1264 848) +) +(connector + (text "LP_DIR" (rect 1682 848 1732 863)(font "Arial" )) + (pt 1672 864) + (pt 1832 864) +) +(connector + (text "LP_STR" (rect 1682 824 1736 839)(font "Arial" )) + (pt 1672 840) + (pt 1832 840) +) +(connector + (text "nACSI_ACK" (rect 1682 928 1758 943)(font "Arial" )) + (pt 1672 944) + (pt 1832 944) +) +(connector + (text "nACSI_RESET" (rect 1682 952 1777 967)(font "Arial" )) + (pt 1672 968) + (pt 1832 968) +) +(connector + (text "nACSI_CS" (rect 1682 976 1750 991)(font "Arial" )) + (pt 1672 992) + (pt 1832 992) +) +(connector + (text "ACSI_DIR" (rect 1682 1000 1746 1015)(font "Arial" )) + (pt 1672 1016) + (pt 1832 1016) +) +(connector + (text "ACSI_A1" (rect 1682 1024 1738 1039)(font "Arial" )) + (pt 1672 1040) + (pt 1832 1040) +) +(connector + (text "nSCSI_ATN" (rect 1682 1128 1758 1143)(font "Arial" )) + (pt 1672 1144) + (pt 1840 1144) +) +(connector + (text "SCSI_DIR" (rect 1682 1152 1748 1167)(font "Arial" )) + (pt 1672 1168) + (pt 1840 1168) +) +(connector + (text "nSCSI_DRQ" (rect 1114 1248 1195 1263)(font "Arial" )) + (pt 1264 1264) + (pt 1104 1264) +) +(connector + (text "nSCSI_MSG" (rect 1114 1320 1194 1335)(font "Arial" )) + (pt 1104 1336) + (pt 1264 1336) +) +(connector + (text "nSCSI_RST" (rect 1682 1176 1759 1191)(font "Arial" )) + (pt 1672 1192) + (pt 1840 1192) +) +(connector + (text "nSCSI_SEL" (rect 1680 1200 1756 1215)(font "Arial" )) + (pt 1672 1216) + (pt 1840 1216) +) +(connector + (text "nSCSI_BUSY" (rect 1682 1224 1769 1239)(font "Arial" )) + (pt 1672 1240) + (pt 1840 1240) +) +(connector + (text "TxD" (rect 1682 1312 1706 1327)(font "Arial" )) + (pt 1672 1328) + (pt 1840 1328) +) +(connector + (text "RTS" (rect 1682 1336 1710 1351)(font "Arial" )) + (pt 1672 1352) + (pt 1840 1352) +) +(connector + (text "DTR" (rect 1680 1360 1709 1375)(font "Arial" )) + (pt 1672 1376) + (pt 1848 1376) +) +(connector + (text "CTS" (rect 1114 1408 1142 1423)(font "Arial" )) + (pt 1104 1424) + (pt 1264 1424) +) +(connector + (text "RI" (rect 1114 1432 1128 1447)(font "Arial" )) + (pt 1104 1448) + (pt 1264 1448) +) +(connector + (text "DCD" (rect 1114 1456 1145 1471)(font "Arial" )) + (pt 1104 1472) + (pt 1264 1472) +) +(connector + (text "IDE_RDY" (rect 1114 1536 1175 1551)(font "Arial" )) + (pt 1264 1552) + (pt 1104 1552) +) +(connector + (text "IDE_INT" (rect 1114 1560 1168 1575)(font "Arial" )) + (pt 1104 1576) + (pt 1264 1576) +) +(connector + (text "IDE_RES" (rect 1682 1424 1743 1439)(font "Arial" )) + (pt 1672 1440) + (pt 1848 1440) +) +(connector + (text "nIDE_CS0" (rect 1682 1448 1750 1463)(font "Arial" )) + (pt 1672 1464) + (pt 1848 1464) +) +(connector + (text "nIDE_CS1" (rect 1682 1472 1750 1487)(font "Arial" )) + (pt 1672 1488) + (pt 1856 1488) +) +(connector + (text "nIDE_WR" (rect 1682 1496 1745 1511)(font "Arial" )) + (pt 1672 1512) + (pt 1848 1512) +) +(connector + (text "nIDE_RD" (rect 1682 1520 1743 1535)(font "Arial" )) + (pt 1672 1536) + (pt 1848 1536) +) +(connector + (text "nCF_CS0" (rect 1682 1544 1745 1559)(font "Arial" )) + (pt 1672 1560) + (pt 1848 1560) +) +(connector + (text "nCF_CS1" (rect 1682 1568 1745 1583)(font "Arial" )) + (pt 1672 1584) + (pt 1848 1584) +) +(connector + (text "WP_CF_CARD" (rect 1112 1584 1209 1599)(font "Arial" )) + (pt 1104 1600) + (pt 1264 1600) +) +(connector + (text "nSDSEL" (rect 1682 1848 1737 1863)(font "Arial" )) + (pt 1672 1864) + (pt 1856 1864) +) +(connector + (text "nDREQ0" (rect 1682 2152 1739 2167)(font "Arial" )) + (pt 1672 2168) + (pt 1856 2168) +) +(connector + (text "SD_CLK" (rect 1682 2032 1738 2047)(font "Arial" )) + (pt 1856 2048) + (pt 1672 2048) +) +(connector + (text "SD_DATA0" (rect 1114 1768 1185 1783)(font "Arial" )) + (pt 1104 1784) + (pt 1264 1784) +) +(connector + (text "SD_DATA1" (rect 1114 1792 1185 1807)(font "Arial" )) + (pt 1104 1808) + (pt 1264 1808) +) +(connector + (text "SD_DATA2" (rect 1114 1816 1185 1831)(font "Arial" )) + (pt 1104 1832) + (pt 1264 1832) +) +(connector + (text "SD_WP" (rect 1114 1864 1164 1879)(font "Arial" )) + (pt 1104 1880) + (pt 1264 1880) +) +(connector + (text "FB_ADR[31..0]" (rect 1146 2536 1240 2551)(font "Arial" )) + (pt 1112 2552) + (pt 1264 2552) + (bus) +) +(connector + (text "nFB_WR" (rect 1162 2416 1219 2431)(font "Arial" )) + (pt 1152 2432) + (pt 1264 2432) +) +(connector + (text "nFB_CS1" (rect 1154 2440 1216 2455)(font "Arial" )) + (pt 1152 2456) + (pt 1264 2456) +) +(connector + (text "FB_SIZE0" (rect 1154 2488 1218 2503)(font "Arial" )) + (pt 1152 2504) + (pt 1264 2504) +) +(connector + (text "FB_SIZE1" (rect 1154 2512 1218 2527)(font "Arial" )) + (pt 1152 2528) + (pt 1264 2528) +) +(connector + (text "MAIN_CLK" (rect 1162 2368 1231 2383)(font "Arial" )) + (pt 1152 2384) + (pt 1264 2384) +) +(connector + (text "nFB_CS2" (rect 1162 2464 1224 2479)(font "Arial" )) + (pt 1152 2480) + (pt 1264 2480) +) +(connector + (text "FB_AD[31..0]" (rect 1682 2384 1765 2399)(font "Arial" )) + (pt 1832 2400) + (pt 1672 2400) + (bus) +) +(connector + (text "nSCSI_ACK" (rect 1682 1104 1759 1119)(font "Arial" )) + (pt 1672 1120) + (pt 1840 1120) +) +(connector + (text "SCSI_PAR" (rect 1682 1080 1751 1095)(font "Arial" )) + (pt 1672 1096) + (pt 1840 1096) +) +(connector + (text "MIDI_OLR" (rect 1762 1256 1828 1271)(font "Arial" )) + (pt 1672 1272) + (pt 1920 1272) +) +(connector + (text "MIDI_TLR" (rect 1770 1280 1833 1295)(font "Arial" )) + (pt 1672 1296) + (pt 1920 1296) +) +(connector + (text "nROM3" (rect 1754 1600 1802 1615)(font "Arial" )) + (pt 1672 1616) + (pt 1920 1616) +) +(connector + (text "nROM4" (rect 1754 1624 1802 1639)(font "Arial" )) + (pt 1672 1640) + (pt 1920 1640) +) +(connector + (text "nRP_UDS" (rect 1744 1648 1811 1663)(font "Arial" )) + (pt 1672 1664) + (pt 1920 1664) +) +(connector + (text "nRP_LDS" (rect 1746 1672 1810 1687)(font "Arial" )) + (pt 1672 1688) + (pt 1920 1688) +) +(connector + (text "YM_QA" (rect 1762 1904 1808 1919)(font "Arial" )) + (pt 1672 1920) + (pt 1928 1920) +) +(connector + (text "YM_QB" (rect 1762 1928 1809 1943)(font "Arial" )) + (pt 1672 1944) + (pt 1928 1944) +) +(connector + (text "YM_QC" (rect 1762 1952 1810 1967)(font "Arial" )) + (pt 1672 1968) + (pt 1928 1968) +) +(connector + (text "LP_BUSY" (rect 1114 1160 1177 1175)(font "Arial" )) + (pt 1264 1176) + (pt 1104 1176) +) +(connector + (text "nACSI_DRQ" (rect 1034 1192 1114 1207)(font "Arial" )) + (pt 1024 1208) + (pt 1264 1208) +) +(connector + (text "nACSI_INT" (rect 1034 1216 1104 1231)(font "Arial" )) + (pt 1024 1232) + (pt 1264 1232) +) +(connector + (text "MIDI_IN" (rect 1050 1352 1100 1367)(font "Arial" )) + (pt 1040 1368) + (pt 1264 1368) +) +(connector + (text "RxD" (rect 1114 1384 1141 1399)(font "Arial" )) + (pt 1264 1400) + (pt 1104 1400) +) +(connector + (text "nINDEX" (rect 1050 1640 1100 1655)(font "Arial" )) + (pt 1040 1656) + (pt 1264 1656) +) +(connector + (text "TRACK00" (rect 1050 1664 1113 1679)(font "Arial" )) + (pt 1040 1680) + (pt 1264 1680) +) +(connector + (text "nWP" (rect 1050 1688 1080 1703)(font "Arial" )) + (pt 1040 1704) + (pt 1264 1704) +) +(connector + (text "nRD_DATA" (rect 1050 1712 1123 1727)(font "Arial" )) + (pt 1040 1728) + (pt 1264 1728) +) +(connector + (text "nDCHG" (rect 1050 1736 1100 1751)(font "Arial" )) + (pt 1040 1752) + (pt 1264 1752) +) +(connector + (text "SD_CARD_DEDECT" (rect 1138 1840 1273 1855)(font "Arial" )) + (pt 1264 1856) + (pt 1128 1856) +) +(connector + (text "SD_CD_DATA3" (rect 1682 1984 1783 1999)(font "Arial" )) + (pt 1672 2000) + (pt 1856 2000) +) +(connector + (text "SD_CDM_D1" (rect 1682 2008 1769 2023)(font "Arial" )) + (pt 1672 2024) + (pt 1856 2024) +) +(connector + (text "nSCSI_C_D" (rect 1114 1272 1193 1287)(font "Arial" )) + (pt 1104 1288) + (pt 1264 1288) +) +(connector + (text "nSCSI_I_O" (rect 1114 1296 1185 1311)(font "Arial" )) + (pt 1104 1312) + (pt 1264 1312) +) +(connector + (text "DSA_D" (rect 1682 1704 1729 1719)(font "Arial" )) + (pt 1672 1720) + (pt 1856 1720) +) +(connector + (text "FB_AD[31..0]" (rect 1682 8 1765 23)(font "Arial" )) + (pt 1832 24) + (pt 1672 24) + (bus) +) +(connector + (text "FB_ADR[31..0]" (rect 1146 328 1240 343)(font "Arial" )) + (pt 1112 344) + (pt 1264 344) + (bus) +) +(connector + (text "nFB_WR" (rect 1162 184 1219 199)(font "Arial" )) + (pt 1152 200) + (pt 1264 200) +) +(connector + (text "nFB_CS1" (rect 1154 208 1216 223)(font "Arial" )) + (pt 1152 224) + (pt 1264 224) +) +(connector + (text "FB_SIZE0" (rect 1154 256 1218 271)(font "Arial" )) + (pt 1152 272) + (pt 1264 272) +) +(connector + (text "FB_SIZE1" (rect 1154 280 1218 295)(font "Arial" )) + (pt 1152 296) + (pt 1264 296) +) +(connector + (text "nFB_CS2" (rect 1162 232 1224 247)(font "Arial" )) + (pt 1152 248) + (pt 1264 248) +) +(connector + (text "nBLANK" (rect 1682 184 1736 199)(font "Arial" )) + (pt 1672 200) + (pt 1832 200) +) +(connector + (text "nSYNC" (rect 1682 208 1729 223)(font "Arial" )) + (pt 1672 224) + (pt 1832 224) +) +(connector + (text "nFB_CS3" (rect 1186 352 1248 367)(font "Arial" )) + (pt 1264 368) + (pt 1176 368) +) +(connector + (text "nFB_WR" (rect 1170 928 1227 943)(font "Arial" )) + (pt 1264 944) + (pt 1160 944) +) +(connector + (text "nFB_CS1" (rect 1162 952 1224 967)(font "Arial" )) + (pt 1264 968) + (pt 1160 968) +) +(connector + (text "nFB_CS2" (rect 1170 976 1232 991)(font "Arial" )) + (pt 1264 992) + (pt 1160 992) +) +(connector + (text "FB_SIZE0" (rect 1162 1000 1226 1015)(font "Arial" )) + (pt 1264 1016) + (pt 1160 1016) +) +(connector + (text "FB_SIZE1" (rect 1162 1024 1226 1039)(font "Arial" )) + (pt 1264 1040) + (pt 1160 1040) +) +(connector + (text "nFB_BURST" (rect 1162 1048 1244 1063)(font "Arial" )) + (pt 1264 1064) + (pt 1160 1064) +) +(connector + (text "nDACK0" (rect 1250 1096 1305 1111)(font "Arial" )) + (pt 1264 1112) + (pt 1160 1112) +) +(connector + (text "nRSTO" (rect 1170 1120 1217 1135)(font "Arial" )) + (pt 1264 1136) + (pt 1160 1136) +) +(connector + (text "nPD_VGA" (rect 1682 256 1745 271)(font "Arial" )) + (pt 1672 272) + (pt 1832 272) +) +(connector + (text "PIC_INT" (rect 1162 2584 1216 2599)(font "Arial" )) + (pt 1152 2600) + (pt 1264 2600) +) +(connector + (text "nIRQ[7..2]" (rect 1682 2408 1745 2423)(font "Arial" )) + (pt 1672 2424) + (pt 1832 2424) + (bus) +) +(connector + (text "CLK2M4576" (rect 1202 856 1282 871)(font "Arial" )) + (pt 1192 872) + (pt 1264 872) +) +(connector + (text "nFB_OE" (rect 1170 904 1224 919)(font "Arial" )) + (pt 1264 920) + (pt 1160 920) +) +(connector + (text "nFB_OE" (rect 1170 160 1224 175)(font "Arial" )) + (pt 1264 176) + (pt 1160 176) +) +(connector + (text "nFB_OE" (rect 1170 2392 1224 2407)(font "Arial" )) + (pt 1264 2408) + (pt 1160 2408) +) +(connector + (text "DVI_INT" (rect 1162 2632 1215 2647)(font "Arial" )) + (pt 1152 2648) + (pt 1264 2648) +) +(connector + (text "nPCI_INTA" (rect 1162 2728 1232 2743)(font "Arial" )) + (pt 1152 2744) + (pt 1264 2744) +) +(connector + (text "nPCI_INTB" (rect 1162 2704 1233 2719)(font "Arial" )) + (pt 1152 2720) + (pt 1264 2720) +) +(connector + (text "nPCI_INTC" (rect 1162 2680 1235 2695)(font "Arial" )) + (pt 1152 2696) + (pt 1264 2696) +) +(connector + (text "nPCI_INTD" (rect 1162 2656 1235 2671)(font "Arial" )) + (pt 1152 2672) + (pt 1264 2672) +) +(connector + (text "nMFP_INT" (rect 1162 2760 1229 2775)(font "Arial" )) + (pt 1152 2776) + (pt 1264 2776) +) +(connector + (text "nMFP_INT" (rect 1682 2072 1749 2087)(font "Arial" )) + (pt 1672 2088) + (pt 1784 2088) +) +(connector + (text "E0_INT" (rect 1162 2608 1210 2623)(font "Arial" )) + (pt 1152 2624) + (pt 1264 2624) +) +(connector + (text "FB_AD[31..0]" (rect 1682 2968 1765 2983)(font "Arial" )) + (pt 1832 2984) + (pt 1672 2984) + (bus) +) +(connector + (text "FB_ADR[31..0]" (rect 1146 3224 1240 3239)(font "Arial" )) + (pt 1112 3240) + (pt 1264 3240) + (bus) +) +(connector + (text "MAIN_CLK" (rect 1162 3008 1231 3023)(font "Arial" )) + (pt 1152 3024) + (pt 1264 3024) +) +(connector + (text "CLK33M" (rect 1210 2984 1265 2999)(font "Arial" )) + (pt 1200 3000) + (pt 1264 3000) +) +(connector + (text "nFB_WR" (rect 1170 3056 1227 3071)(font "Arial" )) + (pt 1264 3072) + (pt 1160 3072) +) +(connector + (text "nFB_CS1" (rect 1162 3080 1224 3095)(font "Arial" )) + (pt 1264 3096) + (pt 1160 3096) +) +(connector + (text "nFB_CS2" (rect 1170 3104 1232 3119)(font "Arial" )) + (pt 1264 3120) + (pt 1160 3120) +) +(connector + (text "FB_SIZE0" (rect 1162 3152 1226 3167)(font "Arial" )) + (pt 1264 3168) + (pt 1160 3168) +) +(connector + (text "FB_SIZE1" (rect 1162 3176 1226 3191)(font "Arial" )) + (pt 1264 3192) + (pt 1160 3192) +) +(connector + (text "nFB_BURST" (rect 1162 3200 1244 3215)(font "Arial" )) + (pt 1264 3216) + (pt 1160 3216) +) +(connector + (text "nRSTO" (rect 1170 3248 1217 3263)(font "Arial" )) + (pt 1264 3264) + (pt 1160 3264) +) +(connector + (text "nFB_OE" (rect 1170 3032 1224 3047)(font "Arial" )) + (pt 1264 3048) + (pt 1160 3048) +) +(connector + (text "nSRCS" (rect 1682 3272 1730 3287)(font "Arial" )) + (pt 1824 3288) + (pt 1672 3288) +) +(connector + (text "nSRBLE" (rect 1682 3296 1737 3311)(font "Arial" )) + (pt 1824 3312) + (pt 1672 3312) +) +(connector + (text "nSRBHE" (rect 1682 3320 1739 3335)(font "Arial" )) + (pt 1824 3336) + (pt 1672 3336) +) +(connector + (text "nSRWE" (rect 1682 3344 1732 3359)(font "Arial" )) + (pt 1824 3360) + (pt 1672 3360) +) +(connector + (text "nSROE" (rect 1682 3368 1730 3383)(font "Arial" )) + (pt 1824 3384) + (pt 1672 3384) +) +(connector + (text "DSP_INT" (rect 1130 2832 1190 2847)(font "Arial" )) + (pt 1264 2848) + (pt 1120 2848) +) +(connector + (text "DSP_INT" (rect 1682 3000 1742 3015)(font "Arial" )) + (pt 1816 3016) + (pt 1672 3016) +) +(connector + (text "CLK500k" (rect 482 2040 542 2055)(font "Arial" )) + (pt 472 2056) + (pt 544 2056) +) +(connector + (pt 528 2416) + (pt 616 2416) +) +(connector + (text "FB_ALE" (rect 1194 304 1245 319)(font "Arial" )) + (pt 1264 320) + (pt 1184 320) +) +(connector + (text "DDRCLK[3..0]" (rect 1162 136 1252 151)(font "Arial" )) + (pt 1152 152) + (pt 1264 152) + (bus) +) +(connector + (text "DDR_SYNC_66M" (rect 1178 112 1292 127)(font "Arial" )) + (pt 1168 128) + (pt 1264 128) +) +(connector + (text "VD[31..0]" (rect 1682 288 1739 303)(font "Arial" )) + (pt 1672 304) + (pt 2648 304) + (bus) +) +(connector + (text "VA[12..0]" (rect 1682 312 1737 327)(font "Arial" )) + (pt 1672 328) + (pt 2528 328) + (bus) +) +(connector + (text "nVWE" (rect 1682 336 1720 351)(font "Arial" )) + (pt 1672 352) + (pt 2400 352) +) +(connector + (text "nVCAS" (rect 1690 360 1734 375)(font "Arial" )) + (pt 1672 376) + (pt 2304 376) +) +(connector + (text "nVRAS" (rect 1690 384 1734 399)(font "Arial" )) + (pt 1672 400) + (pt 2208 400) +) +(connector + (text "nVCS" (rect 1690 408 1726 423)(font "Arial" )) + (pt 1672 424) + (pt 2040 424) +) +(connector + (text "VCKE" (rect 1690 432 1727 447)(font "Arial" )) + (pt 1672 448) + (pt 1944 448) +) +(connector + (text "VSYNC" (rect 1682 136 1729 151)(font "Arial" )) + (pt 1672 152) + (pt 1832 152) +) +(connector + (text "HSYNC" (rect 1682 160 1731 175)(font "Arial" )) + (pt 1672 176) + (pt 1832 176) +) +(connector + (text "VB[7..0]" (rect 1754 112 1802 127)(font "Arial" )) + (pt 1672 128) + (pt 1912 128) + (bus) +) +(connector + (text "VG[7..0]" (rect 1842 88 1891 103)(font "Arial" )) + (pt 1672 104) + (pt 2000 104) + (bus) +) +(connector + (text "VR[7..0]" (rect 1922 64 1971 79)(font "Arial" )) + (pt 1672 80) + (pt 2080 80) + (bus) +) +(connector + (text "IO[17..0]" (rect 1962 3224 2015 3239)(font "Arial" )) + (pt 1672 3240) + (pt 2104 3240) + (bus) +) +(connector + (text "SRD[15..0]" (rect 1802 3248 1871 3263)(font "Arial" )) + (pt 1672 3264) + (pt 1944 3264) + (bus) +) +(connector + (text "SCSI_D[7..0]" (rect 1786 1056 1868 1071)(font "Arial" )) + (pt 1672 1072) + (pt 1936 1072) + (bus) +) +(connector + (text "ACSI_D[7..0]" (rect 1754 880 1835 895)(font "Arial" )) + (pt 1672 896) + (pt 1904 896) + (bus) +) +(connector + (text "LP_D[7..0]" (rect 1810 800 1877 815)(font "Arial" )) + (pt 1672 816) + (pt 1960 816) + (bus) +) +(connector + (text "AMKB_RX" (rect 786 1480 850 1495)(font "Arial" )) + (pt 776 1496) + (pt 1264 1496) +) +(connector + (text "CLK33M" (rect 346 288 401 303)(font "Arial" )) + (pt 336 304) + (pt 400 304) +) +(connector + (text "CLK25M" (rect 1202 608 1257 623)(font "Arial" )) + (pt 1192 624) + (pt 1264 624) +) +(connector + (text "TIMEBASE[17]" (rect 354 2120 446 2135)(font "Arial" )) + (pt 440 2136) + (pt 344 2136) +) +(connector + (text "TIMEBASE[17..0]" (rect 706 2048 813 2063)(font "Arial" )) + (pt 688 2064) + (pt 808 2064) + (bus) +) +(connector + (text "HSYNC" (rect 1130 2784 1179 2799)(font "Arial" )) + (pt 1264 2800) + (pt 1120 2800) +) +(connector + (text "VSYNC" (rect 1130 2808 1177 2823)(font "Arial" )) + (pt 1264 2824) + (pt 1120 2824) +) +(connector + (text "VSYNC" (rect 1130 1920 1177 1935)(font "Arial" )) + (pt 1264 1936) + (pt 1120 1936) +) +(connector + (text "HSYNC" (rect 1130 1896 1179 1911)(font "Arial" )) + (pt 1264 1912) + (pt 1120 1912) +) +(connector + (pt 488 2136) + (pt 608 2136) +) +(connector + (text "nFB_TA" (rect 1946 720 1996 735)(font "Arial" )) + (pt 1944 736) + (pt 2056 736) +) +(connector + (text "INT_HANDLER_TA" (rect 1682 2832 1805 2847)(font "Arial" )) + (pt 1672 2848) + (pt 1808 2848) +) +(connector + (text "DSP_TA" (rect 1682 3504 1736 3519)(font "Arial" )) + (pt 1672 3520) + (pt 1792 3520) +) +(connector + (text "Video_TA" (rect 1682 696 1743 711)(font "Arial" )) + (pt 1672 712) + (pt 1880 712) +) +(connector + (text "FALCON_IO_TA" (rect 1682 744 1785 759)(font "Arial" )) + (pt 1672 760) + (pt 1880 760) +) +(connector + (text "INT_HANDLER_TA" (rect 1810 728 1933 743)(font "Arial" )) + (pt 1880 744) + (pt 1800 744) +) +(connector + (text "DSP_TA" (rect 1810 712 1864 727)(font "Arial" )) + (pt 1880 728) + (pt 1800 728) +) +(connector + (pt 2680 888) + (pt 2712 888) +) +(connector + (pt 2632 888) + (pt 2504 888) +) +(connector + (pt 2504 888) + (pt 2504 760) +) +(connector + (text "DDRCLK[0]" (rect 2450 744 2525 759)(font "Arial" )) + (pt 2440 760) + (pt 2504 760) +) +(connector + (pt 2504 760) + (pt 2536 760) +) +(connector + (text "MAIN_CLK" (rect 1186 88 1255 103)(font "Arial" )) + (pt 1184 104) + (pt 1264 104) +) +(connector + (text "nRSTO" (rect 1194 40 1241 55)(font "Arial" )) + (pt 1184 56) + (pt 1264 56) +) +(connector + (text "BA[1..0]" (rect 1682 456 1730 471)(font "Arial" )) + (pt 1672 472) + (pt 1832 472) + (bus) +) +(connector + (text "PIXEL_CLK" (rect 2394 -64 2469 -49)(font "Arial" )) + (pt 2384 -48) + (pt 2464 -48) +) +(connector + (text "PIXEL_CLK" (rect 2394 56 2469 71)(font "Arial" )) + (pt 2384 72) + (pt 2464 72) +) +(connector + (text "nBLANK" (rect 2394 24 2448 39)(font "Arial" )) + (pt 2464 40) + (pt 2384 40) +) +(connector + (text "nBLANK" (rect 2394 40 2448 55)(font "Arial" )) + (pt 2464 56) + (pt 2384 56) +) +(connector + (pt 2696 -80) + (pt 2712 -80) +) +(connector + (pt 2696 40) + (pt 2712 40) +) +(connector + (text "PIXEL_CLK" (rect 1826 -48 1901 -33)(font "Arial" )) + (pt 1816 -32) + (pt 1896 -32) +) +(connector + (pt 2128 -64) + (pt 2136 -64) +) +(connector + (text "PIXEL_CLK" (rect 1682 232 1757 247)(font "Arial" )) + (pt 1744 248) + (pt 1672 248) +) +(connector + (text "PIXEL_CLK" (rect 2394 184 2469 199)(font "Arial" )) + (pt 2384 200) + (pt 2464 200) +) +(connector + (pt 2456 168) + (pt 2456 136) +) +(connector + (pt 2464 168) + (pt 2456 168) +) +(connector + (pt 2456 136) + (pt 2400 136) +) +(connector + (pt 2464 184) + (pt 2440 184) +) +(connector + (pt 2712 168) + (pt 2696 168) +) +(connector + (pt 2440 160) + (pt 2424 160) +) +(connector + (pt 2440 184) + (pt 2440 160) +) +(connector + (text "nFB_CS3" (rect 1170 3128 1232 3143)(font "Arial" )) + (pt 1264 3144) + (pt 1160 3144) +) +(connector + (text "nBLANK" (rect 1154 1968 1208 1983)(font "Arial" )) + (pt 1264 1984) + (pt 1144 1984) +) +(connector + (text "DSP_INT" (rect 1154 1944 1214 1959)(font "Arial" )) + (pt 1264 1960) + (pt 1144 1960) +) +(connector + (text "STEP_DIR" (rect 1682 1752 1751 1767)(font "Arial" )) + (pt 1672 1768) + (pt 1856 1768) +) +(connector + (pt 1904 1768) + (pt 2136 1768) +) +(connector + (pt 1904 1816) + (pt 2136 1816) +) +(connector + (text "WR_DATA" (rect 1682 1800 1749 1815)(font "Arial" )) + (pt 1672 1816) + (pt 1856 1816) +) +(connector + (text "DMA_DRQ" (rect 1130 2856 1199 2871)(font "Arial" )) + (pt 1264 2872) + (pt 1120 2872) +) +(connector + (text "DMA_DRQ" (rect 1682 2096 1751 2111)(font "Arial" )) + (pt 1784 2112) + (pt 1672 2112) +) +(connector + (text "FDC_CLK" (rect 1202 880 1268 895)(font "Arial" )) + (pt 1192 896) + (pt 1264 896) +) +(connector + (text "MOT_ON" (rect 1626 1728 1685 1743)(font "Arial" )) + (pt 1672 1744) + (pt 1800 1744) +) +(connector + (pt 1848 1744) + (pt 2136 1744) +) +(connector + (text "STEP" (rect 1626 1776 1662 1791)(font "Arial" )) + (pt 1672 1792) + (pt 1800 1792) +) +(connector + (pt 1848 1792) + (pt 2136 1792) +) +(connector + (text "WR_GATE" (rect 1690 1824 1758 1839)(font "Arial" )) + (pt 1672 1840) + (pt 1800 1840) +) +(connector + (pt 1848 1840) + (pt 2136 1840) +) +(connector + (text "FB_ALE" (rect 1186 1992 1237 2007)(font "Arial" )) + (pt 1144 2008) + (pt 1264 2008) +) +(connector + (text "AMKB_TX" (rect 1946 1392 2008 1407)(font "Arial" )) + (pt 1672 1408) + (pt 2112 1408) +) +(connector + (text "PIC_AMKB_RX" (rect 786 1504 882 1519)(font "Arial" )) + (pt 776 1520) + (pt 1264 1520) +) +(connector + (pt 400 -16) + (pt 440 -16) +) +(connector + (pt 440 248) + (pt 400 248) +) +(connector + (pt 400 -16) + (pt 400 248) +) +(connector + (pt 400 248) + (pt 400 304) +) +(connector + (text "CLK2M" (rect 754 -32 801 -17)(font "Arial" )) + (pt 744 -16) + (pt 816 -16) +) +(connector + (text "FDC_CLK" (rect 754 -8 820 7)(font "Arial" )) + (pt 744 8) + (pt 816 8) +) +(connector + (text "FB_AD[31..0]" (rect 370 1352 453 1367)(font "Arial" )) + (pt 352 1368) + (pt 464 1368) + (bus) +) +(connector + (text "FB_ADR[31..0]" (rect 642 1376 736 1391)(font "Arial" )) + (pt 608 1392) + (pt 760 1392) + (bus) +) +(connector + (text "DDR_SYNC_66M" (rect 378 1368 492 1383)(font "Arial" )) + (pt 368 1384) + (pt 464 1384) +) +(connector + (text "FB_ALE" (rect 386 1384 437 1399)(font "Arial" )) + (pt 376 1400) + (pt 464 1400) +) +(connector + (text "ACP_CONF[31..0]" (rect 1682 2568 1797 2583)(font "Arial" )) + (pt 1672 2584) + (pt 1832 2584) + (bus) +) +(connector + (text "ACP_CONF[31..24]" (rect 1146 2064 1269 2079)(font "Arial" )) + (pt 1136 2080) + (pt 1264 2080) + (bus) +) +(connector + (text "TIN0" (rect 1682 2624 1712 2639)(font "Arial" )) + (pt 1832 2640) + (pt 1672 2640) +) +(connector + (pt 1896 -48) + (pt 1856 -48) +) +(connector + (pt 1856 -48) + (pt 1856 -64) +) +(connector + (pt 1856 -64) + (pt 1896 -64) +) +(connector + (pt 2464 -64) + (pt 2424 -64) +) +(connector + (pt 2424 -80) + (pt 2424 -64) +) +(connector + (text "HD_DD" (rect 1050 1616 1100 1631)(font "Arial" )) + (pt 1040 1632) + (pt 1264 1632) +) +(connector + (text "CLK48M" (rect 754 40 809 55)(font "Arial" )) + (pt 744 56) + (pt 840 56) +) +(connector + (text "CLK25M" (rect 754 16 809 31)(font "Arial" )) + (pt 744 32) + (pt 864 32) +) +(connector + (text "DDRCLK[0]" (rect 762 -296 837 -281)(font "Arial" )) + (pt 752 -280) + (pt 848 -280) +) +(connector + (text "DDRCLK[1]" (rect 762 -272 837 -257)(font "Arial" )) + (pt 752 -256) + (pt 848 -256) +) +(connector + (text "DDRCLK[2]" (rect 762 -248 837 -233)(font "Arial" )) + (pt 752 -232) + (pt 848 -232) +) +(connector + (text "DDRCLK[3]" (rect 762 -224 837 -209)(font "Arial" )) + (pt 752 -208) + (pt 848 -208) +) +(connector + (text "DDR_SYNC_66M" (rect 762 -200 876 -185)(font "Arial" )) + (pt 752 -184) + (pt 848 -184) +) +(connector + (pt 408 672) + (pt 472 672) +) +(connector + (text "VIDEO_RECONFIG" (rect 74 496 199 511)(font "Arial" )) + (pt 192 512) + (pt 64 512) +) +(connector + (text "MAIN_CLK" (rect 330 -296 399 -281)(font "Arial" )) + (pt 264 -280) + (pt 448 -280) +) +(connector + (pt 408 640) + (pt 472 640) +) +(connector + (pt 408 624) + (pt 512 624) +) +(connector + (text "VR_D[8..0]" (rect 418 552 486 567)(font "Arial" )) + (pt 496 568) + (pt 408 568) + (bus) +) +(connector + (text "MAIN_CLK" (rect 122 664 191 679)(font "Arial" )) + (pt 112 680) + (pt 192 680) +) +(connector + (pt 536 720) + (pt 408 720) +) +(connector + (pt 1064 808) + (pt 1064 616) +) +(connector + (pt 1072 816) + (pt 1072 592) +) +(connector + (pt 472 672) + (pt 472 664) +) +(connector + (pt 472 640) + (pt 472 616) +) +(connector + (pt 512 624) + (pt 512 640) +) +(connector + (pt 536 720) + (pt 536 592) +) +(connector + (pt 536 592) + (pt 608 592) +) +(connector + (pt 472 616) + (pt 608 616) +) +(connector + (pt 512 640) + (pt 608 640) +) +(connector + (pt 472 664) + (pt 608 664) +) +(connector + (pt 408 688) + (pt 608 688) +) +(connector + (pt 984 592) + (pt 1072 592) +) +(connector + (pt 984 616) + (pt 1064 616) +) +(connector + (text "FB_ADR[5..2]" (rect 82 568 168 583)(font "Arial" )) + (pt 192 584) + (pt 72 584) + (bus) +) +(connector + (pt 1064 808) + (pt 80 808) +) +(connector + (pt 192 656) + (pt 80 656) +) +(connector + (pt 80 656) + (pt 80 808) +) +(connector + (pt 1072 816) + (pt 72 816) +) +(connector + (pt 192 640) + (pt 72 640) +) +(connector + (pt 72 640) + (pt 72 816) +) +(connector + (text "FB_ADR[8..6]" (rect 82 584 168 599)(font "Arial" )) + (pt 192 600) + (pt 72 600) + (bus) +) +(connector + (text "VR_RD" (rect 98 512 146 527)(font "Arial" )) + (pt 64 528) + (pt 192 528) +) +(connector + (text "VR_WR" (rect 98 528 148 543)(font "Arial" )) + (pt 64 544) + (pt 192 544) +) +(connector + (text "VR_D[8..0]" (rect 1170 464 1238 479)(font "Arial" )) + (pt 1144 480) + (pt 1264 480) + (bus) +) +(connector + (text "VDQS[3..0]" (rect 1674 504 1743 519)(font "Arial" )) + (pt 2040 544) + (pt 1960 544) + (bus) +) +(connector + (pt 1672 544) + (pt 1888 544) + (bus) +) +(connector + (pt 1888 544) + (pt 1888 568) + (bus) +) +(connector + (text "VDM[3..0]" (rect 1682 528 1742 543)(font "Arial" )) + (pt 1944 568) + (pt 1888 568) + (bus) +) +(connector + (pt 1672 520) + (pt 1960 520) + (bus) +) +(connector + (pt 1960 544) + (pt 1960 520) + (bus) +) +(connector + (text "VIDEO_RECONFIG" (rect 1674 560 1799 575)(font "Arial" )) + (pt 1672 576) + (pt 1792 576) +) +(connector + (text "VR_WR" (rect 1698 592 1748 607)(font "Arial" )) + (pt 1672 608) + (pt 1792 608) +) +(connector + (text "VR_BUSY" (rect 418 496 482 511)(font "Arial" )) + (pt 408 512) + (pt 480 512) +) +(connector + (text "VR_BUSY" (rect 1170 448 1234 463)(font "Arial" )) + (pt 1144 464) + (pt 1264 464) +) +(connector + (text "VR_RD" (rect 1698 576 1746 591)(font "Arial" )) + (pt 1792 592) + (pt 1672 592) +) +(connector + (text "nRSTO" (rect -86 680 -39 695)(font "Arial" )) + (pt -96 696) + (pt -16 696) +) +(connector + (pt 32 696) + (pt 192 696) +) +(connector + (text "FB_AD[24..16]" (rect 82 552 174 567)(font "Arial" )) + (pt 72 568) + (pt 192 568) + (bus) +) +(connector + (text "CLK48M" (rect 538 552 593 567)(font "Arial" )) + (pt 528 568) + (pt 608 568) +) +(connector + (text "CLK_VIDEO" (rect 1162 552 1241 567)(font "Arial" )) + (pt 984 568) + (pt 1264 568) +) +(connector + (text "CLK33M" (rect 1202 584 1257 599)(font "Arial" )) + (pt 1264 600) + (pt 1192 600) +) +(connector + (text "CLK500k" (rect 802 232 862 247)(font "Arial" )) + (pt 768 248) + (pt 864 248) +) +(connector + (text "CLK2M4576" (rect 802 256 882 271)(font "Arial" )) + (pt 768 272) + (pt 864 272) +) +(connector + (text "CLK24M576" (rect 802 280 882 295)(font "Arial" )) + (pt 768 296) + (pt 864 296) +) +(connector + (text "nRSTO" (rect 1018 424 1065 439)(font "Arial" )) + (pt 1008 440) + (pt 1096 440) +) +(connector + (pt 768 320) + (pt 872 320) +) +(connector + (pt 872 432) + (pt 944 432) +) +(connector + (pt 840 448) + (pt 944 448) +) +(connector + (pt 872 320) + (pt 872 432) +) +(connector + (text "HSYNC" (rect 2314 -96 2363 -81)(font "Arial" )) + (pt 2304 -80) + (pt 2424 -80) +) +(connector + (pt 2424 -80) + (pt 2464 -80) +) +(connector + (text "VSYNC" (rect 1746 -80 1793 -65)(font "Arial" )) + (pt 1736 -64) + (pt 1856 -64) +) +(junction (pt 2504 760)) +(junction (pt 400 248)) +(junction (pt 1856 -64)) +(junction (pt 2424 -80)) diff --git a/FPGA_by_Gregory_Estrade/firebee1.done b/FPGA_by_Gregory_Estrade/firebee1.done new file mode 100644 index 0000000..301e639 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/firebee1.done @@ -0,0 +1 @@ +Fri Mar 07 20:10:16 2014 diff --git a/FPGA_by_Gregory_Estrade/firebee1.qpf b/FPGA_by_Gregory_Estrade/firebee1.qpf new file mode 100644 index 0000000..49e7c57 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/firebee1.qpf @@ -0,0 +1,30 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 32-bit +# Version 13.1.0 Build 162 10/23/2013 SJ Web Edition +# Date created = 01:26:07 March 01, 2014 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "13.1" +DATE = "01:26:07 March 01, 2014" + +# Revisions + +PROJECT_REVISION = "firebee1" diff --git a/FPGA_by_Gregory_Estrade/firebee1.qsf b/FPGA_by_Gregory_Estrade/firebee1.qsf new file mode 100644 index 0000000..0730e08 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/firebee1.qsf @@ -0,0 +1,826 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2010 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II +# Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition +# Date created = 12:45:00 November 06, 2010 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# firebee1_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + + +# Project-Wide Assignments +# ======================== +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 8.1 +set_global_assignment -name PROJECT_CREATION_TIME_DATE "10:07:29 SEPTEMBER 03, 2009" +set_global_assignment -name LAST_QUARTUS_VERSION 13.1 + +# Pin & Location Assignments +# ========================== +set_location_assignment PIN_AB12 -to CLK33M +set_location_assignment PIN_G2 -to MAIN_CLK +set_location_assignment PIN_Y3 -to FB_AD[0] +set_location_assignment PIN_Y6 -to FB_AD[1] +set_location_assignment PIN_AA3 -to FB_AD[2] +set_location_assignment PIN_AB3 -to FB_AD[3] +set_location_assignment PIN_W6 -to FB_AD[4] +set_location_assignment PIN_V7 -to FB_AD[5] +set_location_assignment PIN_AA4 -to FB_AD[6] +set_location_assignment PIN_AB4 -to FB_AD[7] +set_location_assignment PIN_AA5 -to FB_AD[8] +set_location_assignment PIN_AB5 -to FB_AD[9] +set_location_assignment PIN_W7 -to FB_AD[10] +set_location_assignment PIN_Y7 -to FB_AD[11] +set_location_assignment PIN_U9 -to FB_AD[12] +set_location_assignment PIN_V8 -to FB_AD[13] +set_location_assignment PIN_W8 -to FB_AD[14] +set_location_assignment PIN_AA7 -to FB_AD[15] +set_location_assignment PIN_AB7 -to FB_AD[16] +set_location_assignment PIN_Y8 -to FB_AD[17] +set_location_assignment PIN_V9 -to FB_AD[18] +set_location_assignment PIN_V10 -to FB_AD[19] +set_location_assignment PIN_T10 -to FB_AD[20] +set_location_assignment PIN_U10 -to FB_AD[21] +set_location_assignment PIN_AA8 -to FB_AD[22] +set_location_assignment PIN_AB8 -to FB_AD[23] +set_location_assignment PIN_T11 -to FB_AD[24] +set_location_assignment PIN_AA9 -to FB_AD[25] +set_location_assignment PIN_AB9 -to FB_AD[26] +set_location_assignment PIN_U11 -to FB_AD[27] +set_location_assignment PIN_V11 -to FB_AD[28] +set_location_assignment PIN_W10 -to FB_AD[29] +set_location_assignment PIN_Y10 -to FB_AD[30] +set_location_assignment PIN_AA10 -to FB_AD[31] +set_location_assignment PIN_R7 -to FB_ALE +set_location_assignment PIN_N19 -to LED_FPGA_OK +set_location_assignment PIN_AB10 -to CLK24M576 +set_location_assignment PIN_J1 -to CLKUSB +set_location_assignment PIN_T4 -to CLK25M +set_location_assignment PIN_U8 -to FB_SIZE0 +set_location_assignment PIN_Y4 -to FB_SIZE1 +set_location_assignment PIN_T3 -to nFB_BURST +set_location_assignment PIN_T8 -to nFB_CS1 +set_location_assignment PIN_T9 -to nFB_CS2 +set_location_assignment PIN_V6 -to nFB_CS3 +set_location_assignment PIN_R6 -to nFB_OE +set_location_assignment PIN_T5 -to nFB_WR +set_location_assignment PIN_R5 -to TIN0 +set_location_assignment PIN_T21 -to nMASTER +set_location_assignment PIN_E11 -to nDREQ1 +set_location_assignment PIN_A12 -to nDACK1 +set_location_assignment PIN_B12 -to nDACK0 +set_location_assignment PIN_T22 -to TOUT0 +set_location_assignment PIN_AB17 -to DDR_CLK +set_location_assignment PIN_AA17 -to nDDR_CLK +set_location_assignment PIN_AB18 -to nVCAS +set_location_assignment PIN_T18 -to nVCS +set_location_assignment PIN_W17 -to nVRAS +set_location_assignment PIN_Y17 -to nVWE +set_location_assignment PIN_W20 -to VA[0] +set_location_assignment PIN_W22 -to VA[1] +set_location_assignment PIN_W21 -to VA[2] +set_location_assignment PIN_Y22 -to VA[3] +set_location_assignment PIN_AA22 -to VA[4] +set_location_assignment PIN_Y21 -to VA[5] +set_location_assignment PIN_AA21 -to VA[6] +set_location_assignment PIN_AA20 -to VA[7] +set_location_assignment PIN_AB20 -to VA[8] +set_location_assignment PIN_AB19 -to VA[9] +set_location_assignment PIN_V21 -to VA[10] +set_location_assignment PIN_U19 -to VA[11] +set_location_assignment PIN_AA18 -to VA[12] +set_location_assignment PIN_U15 -to VCKE +set_location_assignment PIN_M22 -to VD[0] +set_location_assignment PIN_M21 -to VD[1] +set_location_assignment PIN_P22 -to VD[2] +set_location_assignment PIN_R20 -to VD[3] +set_location_assignment PIN_P21 -to VD[4] +set_location_assignment PIN_R17 -to VD[5] +set_location_assignment PIN_R19 -to VD[6] +set_location_assignment PIN_U21 -to VD[7] +set_location_assignment PIN_V22 -to VD[8] +set_location_assignment PIN_R18 -to VD[9] +set_location_assignment PIN_P17 -to VD[10] +set_location_assignment PIN_R21 -to VD[11] +set_location_assignment PIN_N17 -to VD[12] +set_location_assignment PIN_P20 -to VD[13] +set_location_assignment PIN_R22 -to VD[14] +set_location_assignment PIN_N20 -to VD[15] +set_location_assignment PIN_T12 -to VD[16] +set_location_assignment PIN_Y13 -to VD[17] +set_location_assignment PIN_AA13 -to VD[18] +set_location_assignment PIN_V14 -to VD[19] +set_location_assignment PIN_U13 -to VD[20] +set_location_assignment PIN_V15 -to VD[21] +set_location_assignment PIN_W14 -to VD[22] +set_location_assignment PIN_AB16 -to VD[23] +set_location_assignment PIN_AB15 -to VD[24] +set_location_assignment PIN_AA14 -to VD[25] +set_location_assignment PIN_AB14 -to VD[26] +set_location_assignment PIN_V13 -to VD[27] +set_location_assignment PIN_W13 -to VD[28] +set_location_assignment PIN_AB13 -to VD[29] +set_location_assignment PIN_V12 -to VD[30] +set_location_assignment PIN_U12 -to VD[31] +set_location_assignment PIN_AA16 -to VDM[0] +set_location_assignment PIN_V16 -to VDM[1] +set_location_assignment PIN_U20 -to VDM[2] +set_location_assignment PIN_T17 -to VDM[3] +set_location_assignment PIN_AA15 -to VDQS[0] +set_location_assignment PIN_W15 -to VDQS[1] +set_location_assignment PIN_U22 -to VDQS[2] +set_location_assignment PIN_T16 -to VDQS[3] +set_location_assignment PIN_V1 -to nPD_VGA +set_location_assignment PIN_G18 -to VB[0] +set_location_assignment PIN_H17 -to VB[1] +set_location_assignment PIN_C22 -to VB[2] +set_location_assignment PIN_C21 -to VB[3] +set_location_assignment PIN_B22 -to VB[4] +set_location_assignment PIN_B21 -to VB[5] +set_location_assignment PIN_C20 -to VB[6] +set_location_assignment PIN_D20 -to VB[7] +set_location_assignment PIN_H19 -to VG[0] +set_location_assignment PIN_E22 -to VG[1] +set_location_assignment PIN_E21 -to VG[2] +set_location_assignment PIN_H18 -to VG[3] +set_location_assignment PIN_J17 -to VG[4] +set_location_assignment PIN_H16 -to VG[5] +set_location_assignment PIN_D22 -to VG[6] +set_location_assignment PIN_D21 -to VG[7] +set_location_assignment PIN_J22 -to VR[0] +set_location_assignment PIN_J21 -to VR[1] +set_location_assignment PIN_H22 -to VR[2] +set_location_assignment PIN_H21 -to VR[3] +set_location_assignment PIN_K17 -to VR[4] +set_location_assignment PIN_K18 -to VR[5] +set_location_assignment PIN_J18 -to VR[6] +set_location_assignment PIN_F22 -to VR[7] +set_location_assignment PIN_M6 -to ACSI_A1 +set_location_assignment PIN_B1 -to ACSI_D[0] +set_location_assignment PIN_G5 -to ACSI_D[1] +set_location_assignment PIN_E3 -to ACSI_D[2] +set_location_assignment PIN_C2 -to ACSI_D[3] +set_location_assignment PIN_C1 -to ACSI_D[4] +set_location_assignment PIN_D2 -to ACSI_D[5] +set_location_assignment PIN_H7 -to ACSI_D[6] +set_location_assignment PIN_H6 -to ACSI_D[7] +set_location_assignment PIN_L6 -to ACSI_DIR +set_location_assignment PIN_N1 -to AMKB_TX +set_location_assignment PIN_F15 -to DSA_D +set_location_assignment PIN_D15 -to DTR +set_location_assignment PIN_A11 -to DVI_INT +set_location_assignment PIN_G21 -to E0_INT +set_location_assignment PIN_M5 -to IDE_RES +set_location_assignment PIN_A8 -to IO[0] +set_location_assignment PIN_A7 -to IO[1] +set_location_assignment PIN_B7 -to IO[2] +set_location_assignment PIN_A6 -to IO[3] +set_location_assignment PIN_B6 -to IO[4] +set_location_assignment PIN_E9 -to IO[5] +set_location_assignment PIN_C8 -to IO[6] +set_location_assignment PIN_C7 -to IO[7] +set_location_assignment PIN_G10 -to IO[8] +set_location_assignment PIN_A15 -to IO[9] +set_location_assignment PIN_B15 -to IO[10] +set_location_assignment PIN_C13 -to IO[11] +set_location_assignment PIN_D13 -to IO[12] +set_location_assignment PIN_E13 -to IO[13] +set_location_assignment PIN_A14 -to IO[14] +set_location_assignment PIN_B14 -to IO[15] +set_location_assignment PIN_A13 -to IO[16] +set_location_assignment PIN_B13 -to IO[17] +set_location_assignment PIN_F7 -to LP_D[0] +set_location_assignment PIN_C4 -to LP_D[1] +set_location_assignment PIN_C3 -to LP_D[2] +set_location_assignment PIN_E7 -to LP_D[3] +set_location_assignment PIN_D6 -to LP_D[4] +set_location_assignment PIN_B3 -to LP_D[5] +set_location_assignment PIN_A3 -to LP_D[6] +set_location_assignment PIN_G8 -to LP_D[7] +set_location_assignment PIN_E6 -to LP_STR +set_location_assignment PIN_H5 -to MIDI_OLR +set_location_assignment PIN_B2 -to MIDI_TLR +set_location_assignment PIN_M4 -to nACSI_ACK +set_location_assignment PIN_M2 -to nACSI_CS +set_location_assignment PIN_M1 -to nACSI_RESET +set_location_assignment PIN_W2 -to nCF_CS0 +set_location_assignment PIN_W1 -to nCF_CS1 +set_location_assignment PIN_T7 -to nFB_TA +set_location_assignment PIN_R2 -to nIDE_CS0 +set_location_assignment PIN_R1 -to nIDE_CS1 +set_location_assignment PIN_P1 -to nIDE_RD +set_location_assignment PIN_P2 -to nIDE_WR +set_location_assignment PIN_F21 -to nIRQ[2] +set_location_assignment PIN_H20 -to nIRQ[3] +set_location_assignment PIN_F20 -to nIRQ[4] +set_location_assignment PIN_P5 -to nIRQ[5] +set_location_assignment PIN_P7 -to nIRQ[6] +set_location_assignment PIN_N7 -to nIRQ[7] +set_location_assignment PIN_AA1 -to nPCI_INTA +set_location_assignment PIN_V4 -to nPCI_INTB +set_location_assignment PIN_V3 -to nPCI_INTC +set_location_assignment PIN_P6 -to nPCI_INTD +set_location_assignment PIN_P3 -to nROM3 +set_location_assignment PIN_U2 -to nROM4 +set_location_assignment PIN_N5 -to nRP_LDS +set_location_assignment PIN_P4 -to nRP_UDS +set_location_assignment PIN_N2 -to nSCSI_ACK +set_location_assignment PIN_M3 -to nSCSI_ATN +set_location_assignment PIN_N8 -to nSCSI_BUSY +set_location_assignment PIN_N6 -to nSCSI_RST +set_location_assignment PIN_M8 -to nSCSI_SEL +set_location_assignment PIN_B20 -to nSDSEL +set_location_assignment PIN_B4 -to nSRBHE +set_location_assignment PIN_A4 -to nSRBLE +set_location_assignment PIN_B8 -to nSRCS +set_location_assignment PIN_F11 -to nSROE +set_location_assignment PIN_F8 -to nSRWE +set_location_assignment PIN_G14 -to nWR +set_location_assignment PIN_D17 -to nWR_GATE +set_location_assignment PIN_AA2 -to PIC_INT +set_location_assignment PIN_B18 -to RTS +set_location_assignment PIN_J6 -to SCSI_D[0] +set_location_assignment PIN_E1 -to SCSI_D[1] +set_location_assignment PIN_F2 -to SCSI_D[2] +set_location_assignment PIN_F1 -to SCSI_D[3] +set_location_assignment PIN_G4 -to SCSI_D[4] +set_location_assignment PIN_G3 -to SCSI_D[5] +set_location_assignment PIN_L8 -to SCSI_D[6] +set_location_assignment PIN_K8 -to SCSI_D[7] +set_location_assignment PIN_J7 -to SCSI_DIR +set_location_assignment PIN_M7 -to SCSI_PAR +set_location_assignment PIN_F13 -to SD_CD_DATA3 +set_location_assignment PIN_C15 -to SD_CLK +set_location_assignment PIN_E14 -to SD_CMD_D1 +set_location_assignment PIN_B5 -to SRD[0] +set_location_assignment PIN_A5 -to SRD[1] +set_location_assignment PIN_C6 -to SRD[2] +set_location_assignment PIN_G11 -to SRD[3] +set_location_assignment PIN_C10 -to SRD[4] +set_location_assignment PIN_F9 -to SRD[5] +set_location_assignment PIN_E10 -to SRD[6] +set_location_assignment PIN_H11 -to SRD[7] +set_location_assignment PIN_B9 -to SRD[8] +set_location_assignment PIN_A10 -to SRD[9] +set_location_assignment PIN_A9 -to SRD[10] +set_location_assignment PIN_B10 -to SRD[11] +set_location_assignment PIN_D10 -to SRD[12] +set_location_assignment PIN_F10 -to SRD[13] +set_location_assignment PIN_G9 -to SRD[14] +set_location_assignment PIN_H10 -to SRD[15] +set_location_assignment PIN_A18 -to TxD +set_location_assignment PIN_A17 -to YM_QA +set_location_assignment PIN_G13 -to YM_QB +set_location_assignment PIN_E15 -to YM_QC +set_location_assignment PIN_T1 -to WP_CF_CARD +set_location_assignment PIN_C19 -to TRACK00 +set_location_assignment PIN_M19 -to SD_WP +set_location_assignment PIN_B17 -to SD_DATA2 +set_location_assignment PIN_A16 -to SD_DATA1 +set_location_assignment PIN_B16 -to SD_DATA0 +set_location_assignment PIN_M20 -to SD_CARD_DEDECT +set_location_assignment PIN_H15 -to RxD +set_location_assignment PIN_B19 -to RI +set_location_assignment PIN_L7 -to PIC_AMKB_RX +set_location_assignment PIN_D19 -to nWP +set_location_assignment PIN_H2 -to nSCSI_MSG +set_location_assignment PIN_J3 -to nSCSI_I_O +set_location_assignment PIN_U1 -to nSCSI_DRQ +set_location_assignment PIN_H1 -to nSCSI_C_D +set_location_assignment PIN_A20 -to nRD_DATA +set_location_assignment PIN_C17 -to nDCHG +set_location_assignment PIN_J4 -to nACSI_INT +set_location_assignment PIN_K7 -to nACSI_DRQ +set_location_assignment PIN_E12 -to MIDI_IN +set_location_assignment PIN_G7 -to LP_BUSY +set_location_assignment PIN_Y1 -to IDE_RDY +set_location_assignment PIN_G22 -to IDE_INT +set_location_assignment PIN_F16 -to HD_DD +set_location_assignment PIN_A19 -to DCD +set_location_assignment PIN_H14 -to CTS +set_location_assignment PIN_Y2 -to AMKB_RX +set_location_assignment PIN_E16 -to nINDEX +set_location_assignment PIN_W19 -to BA[0] +set_location_assignment PIN_AA19 -to BA[1] +set_location_assignment PIN_K21 -to HSYNC_PAD +set_location_assignment PIN_K19 -to VSYNC_PAD +set_location_assignment PIN_G17 -to nBLANK_PAD +set_location_assignment PIN_F19 -to PIXEL_CLK_PAD +set_location_assignment PIN_F17 -to nSYNC +set_location_assignment PIN_G15 -to nSTEP_DIR +set_location_assignment PIN_F14 -to nSTEP +set_location_assignment PIN_G16 -to nMOT_ON + +# Classic Timing Assignments +# ========================== +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name TPD_REQUIREMENT "1 ns" +set_global_assignment -name TSU_REQUIREMENT "1 ns" +set_global_assignment -name TCO_REQUIREMENT "1 ns" +set_global_assignment -name TH_REQUIREMENT "1 ns" +set_global_assignment -name FMAX_REQUIREMENT "30 ns" + +# Analysis & Synthesis Assignments +# ================================ +set_global_assignment -name FAMILY "Cyclone III" +set_global_assignment -name TOP_LEVEL_ENTITY firebee1 +set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA +set_global_assignment -name DEVICE_FILTER_PIN_COUNT 484 +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE SPEED +set_global_assignment -name SAFE_STATE_MACHINE OFF +set_global_assignment -name STATE_MACHINE_PROCESSING "ONE-HOT" + +# Fitter Assignments +# ================== +set_global_assignment -name DEVICE EP3C40F484C6 +set_global_assignment -name ENABLE_DEVICE_WIDE_RESET ON +set_global_assignment -name ENABLE_DEVICE_WIDE_OE ON +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "PASSIVE SERIAL" +set_global_assignment -name FORCE_CONFIGURATION_VCCIO ON +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" +set_global_assignment -name FITTER_EFFORT "AUTO FIT" +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC ON +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION OFF +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING OFF +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING OFF +set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT FAST +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA ON +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA OFF +set_instance_assignment -name IO_STANDARD "2.5 V" -to DDR_CLK +set_instance_assignment -name IO_STANDARD "2.5 V" -to VA +set_instance_assignment -name IO_STANDARD "2.5 V" -to VD +set_instance_assignment -name IO_STANDARD "2.5 V" -to VDM +set_instance_assignment -name IO_STANDARD "2.5 V" -to VDQS +set_instance_assignment -name IO_STANDARD "2.5 V" -to nVWE +set_instance_assignment -name IO_STANDARD "2.5 V" -to nVRAS +set_instance_assignment -name IO_STANDARD "2.5 V" -to nVCS +set_instance_assignment -name IO_STANDARD "2.5 V" -to nVCAS +set_instance_assignment -name IO_STANDARD "2.5 V" -to nDDR_CLK +set_instance_assignment -name IO_STANDARD "2.5 V" -to VCKE +set_instance_assignment -name IO_STANDARD "2.5 V" -to LED_FPGA_OK +set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN "0 ns" +set_instance_assignment -name IO_STANDARD "2.5 V" -to BA +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to HSYNC_PAD +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to PIXEL_CLK_PAD +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to VB +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to VG +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to VR +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to VSYNC_PAD +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to nBLANK_PAD +set_instance_assignment -name IO_STANDARD "3.0-V LVCMOS" -to nSYNC +set_instance_assignment -name IO_STANDARD "3.0-V LVCMOS" -to nIRQ[2] +set_instance_assignment -name IO_STANDARD "3.0-V LVCMOS" -to nIRQ[3] +set_instance_assignment -name IO_STANDARD "3.0-V LVCMOS" -to nIRQ[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to AMKB_TX + +# Assembler Assignments +# ===================== +set_global_assignment -name GENERATE_TTF_FILE OFF +set_global_assignment -name GENERATE_RBF_FILE ON +set_global_assignment -name GENERATE_HEX_FILE OFF +set_global_assignment -name HEXOUT_FILE_START_ADDRESS 0XE0700000 + +# Simulator Assignments +# ===================== +set_global_assignment -name END_TIME "2 us" +set_global_assignment -name ADD_DEFAULT_PINS_TO_SIMULATION_OUTPUT_WAVEFORMS OFF +set_global_assignment -name SETUP_HOLD_DETECTION OFF +set_global_assignment -name GLITCH_DETECTION OFF +set_global_assignment -name CHECK_OUTPUTS OFF +set_global_assignment -name SIMULATION_MODE TIMING +set_global_assignment -name INCREMENTAL_VECTOR_INPUT_SOURCE firebee1.vwf + +# start EDA_TOOL_SETTINGS(eda_blast_fpga) +# --------------------------------------- + + # Analysis & Synthesis Assignments + # ================================ +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS OFF -section_id eda_blast_fpga + +# end EDA_TOOL_SETTINGS(eda_blast_fpga) +# ------------------------------------- + +# start CLOCK(fast) +# ----------------- + + # Classic Timing Assignments + # ========================== +set_global_assignment -name FMAX_REQUIREMENT "133 MHz" -section_id fast + +# end CLOCK(fast) +# --------------- + +# start ASSIGNMENT_GROUP(fast) +# ---------------------------- + + # Assignment Group Assignments + # ============================ +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER DDRCLK -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER DDRCLK[0] -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER DDRCLK[1] -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER DDRCLK[2] -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER DDRCLK[3] -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:b2v_Fredi_Aschwanden|DDRCLK" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:b2v_Fredi_Aschwanden|DDRCLK[0]" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:b2v_Fredi_Aschwanden|DDRCLK[1]" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:b2v_Fredi_Aschwanden|DDRCLK[2]" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:b2v_Fredi_Aschwanden|DDRCLK[3]" -section_id fast +#set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK" -section_id fast +#set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[0]" -section_id fast +#set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[1]" -section_id fast +#set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[2]" -section_id fast +#set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[3]" -section_id fast + +# end ASSIGNMENT_GROUP(fast) +# -------------------------- + +# ---------------------- +# start ENTITY(firebee1) + + # Classic Timing Assignments + # ========================== +set_instance_assignment -name CLOCK_SETTINGS fast -to DDRCLK +set_instance_assignment -name CLOCK_SETTINGS fast -to DDRCLK[0] +set_instance_assignment -name CLOCK_SETTINGS fast -to DDRCLK[1] +set_instance_assignment -name CLOCK_SETTINGS fast -to DDRCLK[2] +set_instance_assignment -name CLOCK_SETTINGS fast -to DDRCLK[3] +set_instance_assignment -name CLOCK_SETTINGS fast -to "video:b2v_Fredi_Aschwanden|DDRCLK" +set_instance_assignment -name CLOCK_SETTINGS fast -to "video:b2v_Fredi_Aschwanden|DDRCLK[0]" +set_instance_assignment -name CLOCK_SETTINGS fast -to "video:b2v_Fredi_Aschwanden|DDRCLK[1]" +set_instance_assignment -name CLOCK_SETTINGS fast -to "video:b2v_Fredi_Aschwanden|DDRCLK[2]" +set_instance_assignment -name CLOCK_SETTINGS fast -to "video:b2v_Fredi_Aschwanden|DDRCLK[3]" +#set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK" +#set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[0]" +#set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[1]" +#set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[2]" +#set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[3]" +set_instance_assignment -name INPUT_MAX_DELAY "4 ns" -from * -to FB_ALE +set_instance_assignment -name MAX_DELAY "5 ns" -from VD -to FB_AD +set_instance_assignment -name MAX_DELAY "5 ns" -from FB_AD -to VA +set_instance_assignment -name MAX_DELAY "5 ns" -from FB_AD -to nVRAS +set_instance_assignment -name MAX_DELAY "5 ns" -from FB_AD -to BA + + # Fitter Assignments + # ================== +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to LED_FPGA_OK +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VCKE +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to nVCS +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to FB_AD +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to BA +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to DDR_CLK +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VA +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDM +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDQS +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to nVWE +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to nVRAS +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to nVCAS +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to nDDR_CLK +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to HSYNC_PAD +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to PIXEL_CLK_PAD +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to VB +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to VG +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to VR +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to nBLANK_PAD +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to VSYNC_PAD +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nPD_VGA +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSYNC +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SRD +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to IO +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSRWE +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSROE +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSRCS +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSRBLE +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSRBHE +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to CLK24M576 +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to CLKUSB +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to CLK25M +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to AMKB_TX + + # Simulator Assignments + # ===================== +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to FB_AD +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to nACSI_DRQ +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to nACSI_INT +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_CARD_DEDECT +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_WP +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_DATA2 +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_DATA1 +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_DATA0 +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_CMD_D1 +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_CLK +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_CD_DATA3 + + # start LOGICLOCK_REGION(Root Region) + # ----------------------------------- + + # LogicLock Region Assignments + # ============================ +set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region" +set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region" + + # end LOGICLOCK_REGION(Root Region) + # --------------------------------- + + # start DESIGN_PARTITION(Top) + # --------------------------- + + # Incremental Compilation Assignments + # =================================== +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top + + # end DESIGN_PARTITION(Top) + # ------------------------- + +# end ENTITY(firebee1) +# -------------------- +set_location_assignment PIN_E5 -to LPDIR +set_location_assignment PIN_B11 -to nRSTO_MCF +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING ON +set_global_assignment -name ALLOW_POWER_UP_DONT_CARE ON +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to DDR_CLK +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VCKE +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to nDDR_CLK +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to nVCAS +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to nVCS +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to nVRAS +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to nVWE +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[0] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[1] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[2] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[3] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[4] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[4] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[5] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[5] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[6] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[6] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[7] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[7] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[8] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[8] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[9] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[9] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[10] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[10] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[11] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[11] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[12] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[12] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to BA[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to BA[0] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to BA[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to BA[1] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDM[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDM[0] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDM[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDM[1] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDM[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDM[2] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDM[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDM[3] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[0] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[1] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[2] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[3] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[4] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[4] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[5] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[5] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[6] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[6] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[7] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[7] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[8] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[8] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[9] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[9] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[10] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[10] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[11] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[11] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[12] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[12] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[13] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[13] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[14] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[14] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[15] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[15] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[16] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[16] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[17] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[17] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[18] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[18] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[19] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[19] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[20] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[20] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[21] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[21] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[22] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[22] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[23] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[23] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[24] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[24] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[25] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[25] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[26] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[26] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[27] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[27] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[28] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[28] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[29] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[29] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[30] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[30] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[31] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[31] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDQS[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDQS[0] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDQS[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDQS[1] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDQS[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDQS[2] +#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDQS[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDQS[3] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDM[0] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDM[1] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDM[2] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDM[3] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[0] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[1] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[2] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[3] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[4] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[5] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[6] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[7] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[8] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[9] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[10] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[11] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[12] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[13] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[14] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[15] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[16] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[17] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[18] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[19] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[20] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[21] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[22] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[23] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[24] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[25] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[26] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[27] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[28] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[29] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[30] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[31] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDQS[0] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDQS[1] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDQS[2] +set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDQS[3] +set_instance_assignment -name PAD_TO_CORE_DELAY 0 -to DDR_CLK +set_instance_assignment -name CKN_CK_PAIR ON -from nDDR_CLK -to DDR_CLK +set_global_assignment -name USE_CONFIGURATION_DEVICE OFF +set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall +set_global_assignment -name VERILOG_FILE firebee1.v +set_global_assignment -name SDC_FILE firebee1.sdc +set_global_assignment -name VERILOG_FILE Video/video.v +set_global_assignment -name VERILOG_FILE Video/DDR_CTR.v +set_global_assignment -name VERILOG_FILE Video/VIDEO_MOD_MUX_CLUTCTR.v +set_global_assignment -name VHDL_FILE Video/BLITTER/BLITTER.vhd +set_global_assignment -name VERILOG_FILE Interrupt_Handler/interrupt_handler.v +set_global_assignment -name VHDL_FILE DSP/DSP.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd +set_global_assignment -name VERILOG_FILE lpm_ffs.v +set_global_assignment -name VERILOG_FILE mux41.v +set_global_assignment -name QIP_FILE altip/altddio_bidir0.qip +set_global_assignment -name QIP_FILE altip/altddio_out0.qip +set_global_assignment -name QIP_FILE altip/altddio_out1.qip +set_global_assignment -name QIP_FILE altip/altddio_out2.qip +set_global_assignment -name QIP_FILE altip/lpm_compare1.qip +set_global_assignment -name QIP_FILE altip/lpm_constant0.qip +set_global_assignment -name QIP_FILE altip/lpm_constant1.qip +set_global_assignment -name QIP_FILE altip/lpm_constant2.qip +set_global_assignment -name QIP_FILE altip/lpm_constant3.qip +set_global_assignment -name QIP_FILE altip/lpm_constant4.qip +set_global_assignment -name QIP_FILE altip/lpm_mux0.qip +set_global_assignment -name QIP_FILE altip/lpm_mux1.qip +set_global_assignment -name QIP_FILE altip/lpm_mux2.qip +set_global_assignment -name QIP_FILE altip/lpm_mux3.qip +set_global_assignment -name QIP_FILE altip/lpm_mux4.qip +set_global_assignment -name QIP_FILE altip/lpm_mux5.qip +set_global_assignment -name QIP_FILE altip/lpm_mux6.qip +set_global_assignment -name QIP_FILE altip/lpm_muxDZ.qip +set_global_assignment -name QIP_FILE altip/lpm_muxDZ2.qip +set_global_assignment -name QIP_FILE altip/lpm_muxVDM.qip +set_global_assignment -name QIP_FILE altip/lpm_shiftreg0.qip +set_global_assignment -name QIP_FILE altip/lpm_shiftreg1.qip +set_global_assignment -name QIP_FILE altip/lpm_shiftreg2.qip +set_global_assignment -name QIP_FILE altip/lpm_shiftreg3.qip +set_global_assignment -name QIP_FILE altip/lpm_shiftreg4.qip +set_global_assignment -name QIP_FILE altip/lpm_shiftreg5.qip +set_global_assignment -name QIP_FILE altip/lpm_shiftreg6.qip +set_global_assignment -name QIP_FILE altip/altddio_out3.qip +set_global_assignment -name QIP_FILE altip/altpll_reconfig1.qip +set_global_assignment -name QIP_FILE altip/altpll0.qip +set_global_assignment -name QIP_FILE altip/altpll1.qip +set_global_assignment -name QIP_FILE altip/altpll2.qip +set_global_assignment -name QIP_FILE altip/altpll3.qip +set_global_assignment -name QIP_FILE altip/altpll4.qip +set_global_assignment -name QIP_FILE altip/lpm_counter0.qip +set_global_assignment -name QIP_FILE altip/altdpram0.qip +set_global_assignment -name QIP_FILE altip/altdpram1.qip +set_global_assignment -name QIP_FILE altip/altdpram2.qip +set_global_assignment -name QIP_FILE altip/lpm_fifo_dc0.qip +set_global_assignment -name QIP_FILE altip/lpm_fifoDZ.qip +set_global_assignment -name QIP_FILE altip/dcfifo0.qip +set_global_assignment -name QIP_FILE altip/dcfifo1.qip +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/firebee1.qws b/FPGA_by_Gregory_Estrade/firebee1.qws new file mode 100644 index 0000000000000000000000000000000000000000..2c267916f2523a0ad78b49ae913bf93fbb3187fd GIT binary patch literal 613 zcmbV}y-EW?6ot>O5mM#>EP{vxVMG1|OHr`063c+B*;$oDHzX?-;saTlC$P7%^+jxq z(eI9vN)dF1`!{>;xo2i~8(OY4jg)GtQYX4mp^1i6W6lP00TdArb*oI<>R}c$16m!IHpoE3pFk$etf3=a=uGGTnPkL9vf)LIf0qjGo75GKj9`m97U7PU ef2V0iFV9cQzhq;i)mPr};VbuJ7d+C!>R6v=H)zTL literal 0 HcmV?d00001 diff --git a/FPGA_by_Gregory_Estrade/firebee1.rbf b/FPGA_by_Gregory_Estrade/firebee1.rbf new file mode 100644 index 0000000000000000000000000000000000000000..99fa0be5853275aa489fd4c7595544e1bb0b31c4 GIT binary patch literal 1191788 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

u1!|smTkIaubx&8v_*UFM|J8qn(dPYSc&`B-a z@85BL>gJ1a2u#2dK3SY)+K0nE()JbY$I_!L8^DVfN5csoUOqmLBh!v`4=-#BzO6G- z!5N0ezis92n!}=Jb zJJyb6coSRhw^FIq^P`C^j&gVmAK{`uKaTC$pHdDmaByYaDSq)lSDdaxSyP%pC($y` z1Vx=go7AKhhF=QH%QBsf?Ku5c>8o9bSB*&RJMLeEhS}aC7Aw8ZLCL=_bj#ZGO(#UqWSi2w8$(Nma zFr8I~A6D{odL!5Bvngn;7Ev=D23?MvuwSS}3^m6Vj5GsdNoewqi9@wii=IDkM{z}7 zU-?d5tK5~v_@_UC4lhC#l;PzOYNRLvDmUR}(iJlf89{N;6`r%IP8g5hQZYk~RHxFEy?pd4d1MZZ<~gf&d1_9N=K<8tvD0D@lN{#e+z=ltO`(Wr?6XQ$Q4d_&cnb@ z<}u!&$_UEEmH?~P#2qi;7s zZiivB=D94=a9S4vO4IuA77NL;k&_~@%`i2Uq*F>%QEJVTlB`}wRrcu#^S=MpD-feJ zAzaxF#Nwbd!=BzG2vQm8U)>nQROC1)(^g^PF5t{2SMkw_0>MLCRYH;RJO5PCCd2QP zKY1`s%+wvjPZw89ZW&=nmTH*7Z0`TZ-uuVcmSy){yK2tNoSBr(wN(!F#|v5GlugC7 zk^(y9NwK2ULqRIh02jLzwS~dQRwsEv19?ajm`FrkGb!vcG*$_Xq84)CB6Xq{WQi6s zWKgVdjN8%+v8)$mu!o;2CAMTFgGRAYLPCJgckO-dy;bkM?rEF&20MG6dmnbAr=g|<^JJ<5Tp?KDourFgY8ZNL5@mZ@ot(d}raG|_oLeG_NWwOWcwfC@ z3t?9wh%AfWZjxXsTz%jiqkPMcRNdW-*9B$^nPW=mRq)#7G~*KJyv4xN8o!_MgA@0x zroh) zdrWu@V5Fk%RX_3*)v5+wcO`)wV?#91P9_PwrJ5p%k6|8?oVMBqz#h2`j!iOh#*68A z;jyWKK;H>G)*mD8Be?&?3$5{`yQUDn91<0uQb@!4DDG0uao^x4Z-*rBD87w1_c}Pe zE9eMS7u-N2DkK3fo-$%E*HH-iPjYK4w4P``s5pd=*UwNRJr_#Qh}frxEmsMZhxH_T zCny^e!)ZlAcIKx)Uzs{(SG-FP&*12f&Se}#1Fy7Bd(HSE*^UN0WYDw|I_e%lb~!jt z{U!VX19Jw+V$Gh0_l`D${~^;2=VNg7S#HZlZC^>tQx4tP0L%5HSYS}j9vHvU4`yCd zp@j-oeUUR7O)W#LSUZR#F8zp^W+31{D(vc@7GjEgc8b36>)#RZSRtnuiBCFz+mfXS z5r{MJ{Vk*#OQ|S`Ltn|u)=8o7V!P|a*kJeF|8l`bVOEvtaLO^%C1Pw~-d-{g>S=<_ z#PSl2hlox^BCptl1fEh8nJ@GNM9nIBgHe90EJSoUALuuO*!r&)`ENKigsqK_k~WT( zyAnd$y%HVrvjmY;sw+h~y^2GYHMMZ=!^!8h8+PXz0{W6>ym;sc>yv%pPALJHf&~yb zV7n3|rvg3YC)xXicW|5J^i?M#7|S32ZS{Z1kbU`|Xnd&ufrepC|3k*^zKZkW{~=TQ z`u}WtaK8T1*OzDd3D*~To_od#cT z`)C_#U?E6LTuhknP3*H(b*J>+KX*o=)iV4{DN8|Kbta;h@+#_hP8em(8`9N-nYWymeSLj zhXV!`h`xzBbIS7cMkV*A z&cboXv166jIhQ#rc|I!Vp-LuC&Vd@P+@u!>9W2Ri2c=11!e6~X{RNXSeO3EVjS{c_ zOddA|=#I$I1C|BF9iE-Mly}r!c40OoA{(gxf)2Y-hwQ?|@4z}}=bl!iTRFYTS!&-d ztr$5nZFG#XJIE@Cs3-Tqwi@*P?O>3AXGt+Y24^@IsvC7+(h-(w#hrSWpj?^C&=6Fm zd`s1HgVQCah$|ZUy_sU8 zq{l(Yb`5=L7Izp25fYiOpoL`@ zp5|54;^;4BBr9c-j8o7iO}lDNTcFU1Rwj&#Nw6(87inzK8VERh#QqIrA);v zs@6CB!r>$|5|Bi66D zT~R6U*hL=Ki|Uw0k-K2acthsdA>Ve7h4|uPo++1FvHjMIP)!r`n z?n9(T)ZiI|u`YWzbdJ!P0z{}C!M5kL<9guU%GaD2$s$uglwK2Xbs)H3QN83`D%63( z3d%I079oIfc0q1eTo#?IAmuN|BhyVX5P-4y5w0B~2MaX}Ft9AKJT9pp?+DnDEkXVI z%TGiSl|8U6ZCRmolfWk;vEAYBGwQA&`&~&&(}6rymR+qPsjW-7=TIbI$c38~Nof~y zQKn)G7~4)HxA0qm<3hFga5ybit9b@ zpeHVg?-l}2HXF_kN?qX+WFjeC7%;Z!G%27b@FcD)yVR>e%7!3?6EPsz=8@_Pu)PrOTHQBs32IZ8 z2y5g6Y_HxxdjVG@od83+Mb5JEsAY>EWh@tXc(O&ty zB$ZZ85;-(m(vUBLA%#w9Nxi7BJBR9K;V-h>$}Fkp65gvpLzTG~gTMXfCh>0&-^=h1 z@6A4Zl@C$FKZI?X+J~+1A?^RlU;L02egoz&oEwBMl)rB~_P*M$Us?SaD7UY_VzsQ* zMeitaUk^O`n_H`T+O}mIaiEh8yD!ae?Cu?^tIb_6Q%uv#T_-uzZ{^f2B%cf+o$ca< zL%HjPl>tk^;pC;V>A|62?qz6}`)KRMo3!D(BbsX5?aL%>eQ7m!Ql0tOK3jed=kX1s z(s#pmK@GfiP#;R$*QlFc--}E>pf4}*^55L+%dgMN zbA568;_nxi;RStp&I>keL^hfK@IO3J|KRanR^MsNr+j~z!5!3T;n+c=*kFtUu-Z1zybd1xe#2ZvrLbJ9YJPy%RL*PG7e6*_Ry2 zUPq|$K7F}snBMoiwAL!x^Wyu8JAK(I-q%Ymo_7=BPF#NeU)cH)u{)`;J^3`Xd!i(t zo7!gZqBP?tE4CSb*H880RcIiQY||T7aC<;se9P{rl3ptBwl&xv(f$NfFU_vj$~t>q z>dw?Wbq(J|clt8ybo+7fo%qgz@(n+|r}zNUK0rT3OqkDy2A+p_aW(spu3qfrrJZ_- z`&92=%v7#LyQf5 z+k^-_(HG^@CL+PS5sht}f%mqZ6+%bXHX*>W+%HmM_Z8ku9JT1S303fkXxPA(W_t>6 z^&Hu>H4;?HHw{HA_-lnD-@$92?7z!bhg<_nrIqT7<(tdR;TMlr?}Sa)qguf^CoT5T z?spoM>QyZlxBFh+KKx?6s{N2&?)HVI|Nrhq`?IrM7FTq)Bl=t4o`H8o`X1~K5q3xO zqC+RAKDy(4?VNt&$-5%GP9o-g&V}lX%w`7jG(FaNXf4{>}AL zo1}d4h)(`Zh3qv#=H);SndcxiP9?tHmW}eQ{61N5exUE8LG}4yhL?}c6DnPi>UPea zm(U;&sjb@<)yv_Y7j~J+%O@`Myg~KSf8qnZysR&KUO4^zpuYU(c_HpR+LE!akMK`% z`FDSeST69JAA#Th2Y>V1Tv{XoOWtyF$YGX^VhJ~PA zct<4H3g2g-_dMU#Yz?vMtk=yRiVkAQ+fHb|EKi-p8yH$o}Ow9GqmCff0LxP z$=jH%%2f93FO9u73XOJ<$sWk0=A}*2<}!mWJNX*{2{l!Cl;rOQsl#3UP#8Z67 z-y~|9itHX|cLh7G@5rx{`jfx=eGTn>wI8JPX-U}`D)qhP{7(AyQT9SJf1&iAkol{2 zc26;}RXcH8Y+GteIFxO^@;zrYj}3%m)w$dwOyX|L;@T zQ6IJn(eQ+J-SN8;FxBiz&>=#xUMP~;VJ~5U=P-;tvhV#6UCTc5+hN!8{14u-B z;6;OyFpyf?AVm7a?&1C8f?=?7E054W2j?acT0!eT(rU^?QOLsH)U&^!nJoTU81uOhoE@9tXp)a|$@Pj*!{!kH5sNJ}{?=kmvA0t>jyOjsrD zr853h`+=${@wF$oCSVX!JqO)&77I`ua zHwM33s;XPf#w1dI0oxWLd|M=wtVwpb?R?5I6%ktdSO!atfHOIMBLgv>V# z6gbrik+B+?sT;K)7S_|*Q_1aGWd)~S@?z$jTFc9gwfZ3&%le{571>{tM{z2&0iz06 zVJeydIK&;~G_BLIxg-MSG+Y)3mGAc#v!G|RmzqJPJRJx)$nF(hJ(~ z$(DQaxkIGP%IgT#tjTPpSWD?lDMVigCPA_qo}%FQQNqhwt#3-KWo~7&>W|>#mF}io zeg@y`vcfKyx6j5&Iis=Cf2mwhD>}_*oG~xX3>q3IM2_ky!w&pE#q;VCg*JOy;!Ud2 zOWJkfg6A4jX`zc06R1_C6^5#mI0BTTBnU~bQ-@jxplHRA0tzN29LL#!Lv6}*u^ni& zsrXcHLn+^MP`>R;rF_oROzB$ool>KNFKhLOp$z3*!DN0)IrifrdxRCqN8qVz%<=^# z!SJJUxgtl)tK^jvykeI`=V>{=zLMKO#pAdeWDlwUc5; zWe6s*kMLh1^yMV_M?v(y+(xs(RtNGzNWtNjE7cRn)1xxR;|=NRQG8UdH!I9b6iN!R z-`p<$Pq#z9heyoM#ZFQ$iAp zGZK8=Vf@%43VVoFqTWx>oG!nIIktW2E}2cYH##q8Ly+01QAF{}m5p7Ty7rUN9l@FBfwo&H#vG77_AKZVTVE!+|NJngDiO ztLlob8KHRX7YPK(MT81t!}kbk5X4_3MHJhJRQF6+@eQ`i@(aHO1X%S|nY}XhXqI8Q z8`5XW&rHbKPFY#f=ewQ*$hLzLrSx92rqlGKK&UJ1c>rc6>?-V1r67=;kbxaX11W=j zLlh9T0;YD{>Qx0hWk7AJud@`k3j>D<6|EFi&Gu)*E#)EP{Ef+`QxC1&ISDCLudS+8 z_L~fFx-@v$tcD*(O?l0VyM<5uxf;z51s^t6l*eT_Obesbwhy&o-xsxdw2hl-R@rGS zX<1Ia&1)mY&rw}Tlk1;$8TX8<)1tb0nf;Lky&tCfAy1Y|jW-#_MirOkky|<7P7uc; zu^EV9LDdp-Qzd0>S5%lFDN|btaj50$mpYY2A_uKFg!7Ss8Io$71hj^9F2kf-e!|kH zEyxif;8%Yx5k(G!{;r|bZSREPJWnDebA)uus5$PN$w)_v^W?qxVm-8Utv1@` zOkmKyju=}=n!;tqQZ|jo<3_RuE;=d$1wD}=HSk5ixmMy#aO)ZySORMD1|nK#uIg~ymuLo`-# zgfPXW2&)crS%sD4$N$>Y9-K>*=KyNY#RyrNv;m|{t^~e!M$~&}lCd-}wzCX=T?Z(i zrlyT282!~rmDKV*EhMeQRX^nM)l(%8hW*L|s;jG%Ljrlg$XZi7;7HZWiX22Usf&na z#&fKdS54OxVATvIaKu|a841)i7k&^-qo*}LSGgkTwp>uj+>g$CoXIHUC=y?L5>9W$n->^xG z;#8#WPjpdYDB26<#3(P>uB#nXut}_H*{cw)tG6nxs)d9J(Xfzj=}}au$cDE0D@ju@ z(23f2=`sLJMX1;Z7Q>i$_3*5eZ+(w;yK}G2cL*VCR}3P1pr%|j-67_%L}&tMM!H=4 zYj343_)#V1Qoy|B{L!mG&h=&>)mjb>NjhWV$RL8)h zR2fj-L`tPWkAMY>E#MR6eH&Bh9g}sHICS$3#&RvKs|pyS1js$`oog8ZmSxsdp8!fP ziF8_&tgwjOd~jRl*mtGl=5w4J9VR+8s6xNEOzW#ZlZd%o%kLV zJAT}eA4Iv=mQ^M8Isu)K1H3rNgrtj>LeEkKRJWZwu?QNNu&c;g8Iw-)K@eIU)(w|l z7Jka94f2p7tH0WEsWQHiL@lD6NU82>YBF?vxxU8S;nZW@=~RAKBaoG4Og*6 zkqnh$Ql!9DQV0i|Ffg6acuEcq%K!3i(emnf81i#xxgOXDI^uJI{l$taJUo zKf3<%%jho8%8j}d>+(+dGTo3vlFN?~zFRJDF3RzE88?^o>n8eBrk3T&N&XPUsF+;P zSwB3X2DL{g^lNB3N{@7dtK3Rn_oOHUOwB={krtIQn_FrUDz8`c=|;zg;<#|XS&eyG z5%P`*du36G9PtK?IN3}nH!O9L5&ct&(83tebI0}UEdJ741gRU!dQC@NhYtup?zpLS ziW@fx%jr3j@j6;9D6iY<&DFqE&^jUY^5*J7l}`PnJoMFPSC=QH>pxdsXIbg`v+m}z zNB*VDD^2a$_3CkSB^; z+goqMlT~@^ri+U(d&(^WM)8!O_4r^|bmqhcj#-|`FSWok3PrE^3omk>&L4Iz7SFEC=VV!zLmEJ z4}N*{uJk8wd}gF}_wbFU!mEc5p9NknRs_&-^T@~0FfKL1ReyOoxY$RxBVIU5c}C+* zEg5AR*kf6X2w@j?@m22YHQt#r_qC+e3OtUmcx$-v7)tKkd`vHNA>hrNlEJup35Z&& z?-N_8xSXBcj^#i6eX=AbgK5TAoey1S=MG1rpPC(ziuS4VhvHv-)dxbu4zgMwVjC1C zy6*H%vr--$uShZmUsfC#yYA?f;gLImKi*s)U^RRyxG!G%&m5_jN8JhY^u_4=&39<9 z$H$kKn+>@8wa=-a4_B-~8+^Yqjxl!K+4ESVh z?f=f#q$O1udd{DP((Zy-kgCOH;!0Vt0JjYnXiufI< z8Gmvt*C={o0X%rXM8h+W>KB2}&i4Jon?Q{j8Lz;btR5WIjHi|F%whDG>Kfc-Iz6-7 z%#n^(2y}0cpQWBQ6W5II%lZwqQZrTqnjpsq({dS%8RcX#;cRRYv)`ybtP88H)YF6P zBUr5wUrK?ul1Kx7yQ$bq!>VmW$^G~KuNcH$4^wsOg93Kkp#D;sPETZV1qH%A@WFGS@F+fWCHrfkCAbl;3RSEn3$1K zQhBvHVGoeXsMT(esa`3&j6Ydz;ABh}T*m8_%FOr>4gf46z}|8ze!aRG#e1t2=|u@x zQa+AofSVhSB&ze=%fwG>eASWCE^44_nOaXOpRD%(>r#IH=Vd{M649(orZryKm0&IK zouMV+ecN+O{Zx2yk(m}O3OY2Ejw{YwOiFooqi%HTXE(B9_FNrPqmmDULeL-8Zlm-u zO2?oQ^Q6L8v4&Uo`<@#-)XEMwJPgSXV+iYvGGVQfQ&)>*iMxntyep2y;(g3M)$zku zDI<|mEPbU`+>F8kS7D}7fiJP+Tq3~`6r8x{2qlmei9_*&-<1qONSIJtBuL8?Th)5e z;vleEn$%s=BFHNj<5`mNoU)R`EKo==t1IWa=b5g3 zh?R0%P!FzCs^l7vlvUoUF4AUADQI@9$LI3?a+v(p`O1D_jF;He!6y5-lS~wWPpA`N zL#;(Bgv2(@Pqm?=5kLJ4VsdQjoDYt!A=m zN{dot#b#^*VLp`~biaV3COk9PB_baxa65)sWrn#)w(3*LqX6B7PV0M1UX#s&d30rV z)Nzjte1+nO+Y71=# zN(NIDJfBj~IZo*5TY!N)CXFKN(aV(STGz0{$MhwSOH5YkPyFfO0a{MFm)%(au@)@4wkyN53(1?^v8*!1C&Yktm5=j61h225u+ zH;*|hvEa+URX2LKp+{KOW^P!jbo9N(+FV{J%j#W1jRdlkjzZ?Fe0-B-BVWuQ0bBtd zsgYlGX^2c8i%8H^$iT4q0(moFDhQl`v>6-iQ07Ar%|L9{qVwBxn)8&>2i#_bW|aP7 zQksb1t>r)sK9tl@4od_AAC2a!Q6k$!L z+?ib{eZ+{Zo#f%kH2aKP*O7`h<) zeJntRC)^>Ul(%)Pzcg`5N4x;XWAODNA*QyBa826~RCY>ymrj)S4ngF~;kg5<6Oz=1 zh7l{a(kvzQ5+MU;gMkH)kW_`vzKxrtDbR!?C*bULhMB>#9c-R~UsG#1t<6y#ugCuv z3R^p>&Xuw&E{{};rQ5(p6L|j!X)2(P^f)Yo3C<=0+f* zSlLN$!KtBmEUVF3#~C z-IYiGI5ZHo#0S{;O-C4n=hu2C; zszHSu^MS3f!fRuKy(Yn}5fi40XSF~9H5EA|u??ab`qt-8fedv6(~Be4mw)fOYG++j zRD0O3)lbd1N;VOuj~KvJm`ZJo*K+mqrXYJR%SGj^Txs59EZaOqNQf?;L9s8mJ-5R zIiq%rodPqL(3rC%#78wv9y-CYlrBQ#D08nP5|0b52w8a`)1}s4A3?@X@UQ%*g~+LE z7*lFX=u$!ngsF74?pk6?hH?VdAI5HYAAFJt_XmENBUS@!bV6V%ZXCi&h<4}+0>W9X zDo+Q3i==fqpqrr;%Mb}pbvNp~jEbd8kl+k&P-G`?h>n8l)yy~w(3e17C@ryyv35*- zNuNyk4Psb60?!gG;)`3hNkJyk+ory%f&9kVA*WH+$^T=Ln51n3(aEm%R8l?y%Q7ie z(=Ag8M?Fk3hwxSnns$P0C1}kcq{~B}MA4*WwSm%BAyV@$OlU#kw9)&ns+i)N^v{hT zB(K|8I=MIXiz_*!^Omi7y%vd#frgY7YEhD*hW2%=^PCQD0++A^9(@vt69d{p_?DC- z6X(@TBw$%)MQ0jVQ2ory(O*w-c9S+5Muw9XU#$0`vXqr*Dlt=*Hc=IFqC}oUiQ66M!)rk6T%u`NQSH78UmHAD!MD@uwUCEswvQ#56(NB;wZh1XTioPrJ)NTv!w4efax(e?SZqYpwtxH7N zI;#liqX1u6rQT6iuIr5hY0P9op~`#&eE-uSWxa^pIqEkhG2#}H0%&<{jA^(kgo=a~ z9{FG+uRu-(U|Qz)%~L_)YT9<1HUO!E&Dr)KDs4@al~vuFK&a7569HGQ=Q82X+)}hH z+#$WxUZ&J){UMpV1*!z6tXWw3EQ35Mt4Qxm4=Pm0pu`G3*F~u(NI0469M|5LMsGYJgtgY{8$Jl81W`_xOpm ziFh7+`c&yCql|C<_MMThIv8D1a(dU9aAAix3cz5j4W@}C7PvlST{3ljVckL6V5I9e z6XUIkD4pUQMmGc|q%B7p<>H!72FL7cBu3-X2(C(;GEHZa;sD^N+xf9BqRwS^fk=m1 zS`F2Tw$VvghpW(`b&)E94Omws-!xwtpYRAT+OY;#626kjC$|;(j@?pWIh;TKTecDi zuZ#(2QdNFeT2^xUzXvXQigOJ`)9y2MomMa;C8}r52;|Xd5}(-Nt??CcI;f{p0jnFy zkwKK`VpP9%+nzO4CyrZ~=)|2a2r67PoM@`yaN0C*I@w@MAqgs-&a9BDvtY`7a2U3+ zqH1U`cc4FD1aY8o{JkGYjZOLsRiTFx@D*Q6iS31}RDiL0Iu~~b{0^5k3R{JsyJod6 zi`(fodP6fv#Ohm{A(9dt8@xe8cCEu*CmJqiNfe+tWorjw7@T;C)`ry@j-iJXfT@HBmWs$!~Fo>o-en>xAac)G9D zKYHj?JuO|7OgmiYt17_MAo&z^z!FUmrE6qNqKZ{T8=VzONSS<&O%U!-(KwLpNL_5h z?@KE4qz2Q<@Be@J)~%WtU;JHUJH{H%mrOD}l{2uhanXpsfhV3hKez)((R0`RlJRHQ z+)JJn>&M1oEUW9t3VbOt(pkUNi&1fN^d>8~F?@43`qXWBs%GRo9v|@@+jzPu*T)-L zUXA4Wh(+n?(|CIRUc70JvynGXUI~6*h;QdM<+vOVEGlulI;9%-1Zbac?%pdwvmJc{ z#w%Jx+<8bqDHu6xPkjxx>sS}-Sd;Axfr%hIapNo6Y$6i| znR`F5A`iiLb>sK^NZO!u*X5JGTQp7pu6=XP=50|)dc5} zRmtm|$Sd(3hjkjbOUpHX(BsUR8`@rLJ+SYM^;x&c=V0j3t3fQ{jGsEd?sb1F@5Io> z)$I{q5u9Gz|KywQrrTVVYb!rd-t2$PudZzUj(2hK)?nXzq+dLEM9-L?E2ge9CPA~j z?qb6L_;hjFaottE#QbrJ#9gGT&P&I*vbS`YKS=tiP!H6lFM43@**X*&v^TnY8nTM9 z?13c1XemjWFb&8Ao~2O#2O~=PPw-%`|Id=HRyL>ytJUkM^#%f!dFu4kzz_<%h|{46 z^4_}$R{{7y!Gol--r}OSWZ=u{?Wbc1uig$v|M|x>&nr2f=QWrpN7uu^Fv`iz?JZV3 z@cy-1^`-ynd*dx_J^b=Gf_Sm#*~s}zKJ87dBR%88TMxVz1U@->OHT#`&xYULdf~Wm ze4AeMG7V;osCu!%M~BBG3SU6dHke1&6+;AIW=bEPnB=@izs;hI}h0BT$?F|$N5qX@$S65#!E97-$o7t z^w)(iE{Y%0%~3_rpsOLpoiUO9{LY(+$28&k=@){X;2_fagclSd`u@QKAHNtJD!-9k zpq%tKKXE%^-hb&hg2QV6)vq$T?v=9<=(_Lhp8WDpja_;DTjI+x9vwYAdlxUv!>jMU zdx-Z(-(kk%XD2`TaJbb7-uc`H{(N=wx?bpc6)W|hSB{3C8jtY8X%Jpth5U)0R%OPuC6pG+ZBX1Q=H7tkgN1m$F&;d zTt3V5lhqBK;BPFF^8}Mq9)0PCKr_uZ&m3u=f$s`$uIcgYa&&z5M0)yqE$hoSG<`?? zIk7FknW^Nhho2;g=_)JcM%HUF1f2Ki#=^zPDnzTRqnj}DV%(J%+qZ=OzGXZAC75N0Z zoA4$XFCvR1vKG9s0$*{}=XVkzvsh`6tA{-A3)k^*Oo^_1=2F>obo7-qp&{^5tYqMM zN~SBXoQ1r0$4BqJtJ)pMG_v))!kjl}cNAhxV@+*&GRO;C4NC_d+qX642 zS_X2e_fiK+|eXb4{G4cDUn2bc`}9;tn>5RQTj)ZhV=62 zmrKIhgr598t3hM$a`9S-Q_g9Q)PRl@d(fC+ z8t0ILTBn*Ffb@0?$cEQ=vsp<^WqXfCN#_%pD;PDy~;J- z<(^^>2z)LzgqaLyQ6Pt>HNIw_{H%~|(4I7F*3k%J#0d?x3DpS`fd2USM$^W+ySl*( zzf$q;xp*f_G)vp=YsqM-h{Km zA{x|YcY$wpn|2p?B8BYijNX!~>P7}3yWMpNQFlkz8DI@b+I(eA)%xx9iKC9zc=fF9 zKe=~xEG^kbMo@#W#*aqCbVZT5k6@+%5(Jh$f2LAOwuF33P^Uy1n_iBnV}ylQ>lM>W zvG9pne9W5FFa>@v>DwBgrrq?=s!Z!iE8Uw0Ruf50#UAi7 zwYXG%!>=`k4-olQ-y{%rpm5SuW!7etxI2Z6mRzI7RnQVc_YTCVo9vKL z>(S3BhXl?&{OP5j>^id z#5xrfI=ska*99t)1jN9VsqEMy5uyx9A^)(X~lemoh zDIvYGO-duB23~lw1-rQJ(jo~8@Bf5EfU8i*cA(64*aL173e&$Vr(((vcu!f|F}4}s z_^QutrrFd8gM|MiYlLtH2XtH~AJ!yP$efKq3M*s@9gKik(`Y}o{kgb+6O5rUCshQ= zDvksXdC~je%{w|=J8YRo#59N{^AqtS8zvTrNR&m6Xpe6l#mlHrhKvII$k?? zix+zOw?D$`K)1Jjuh)WZZ+Ru>PwT~%lm3VEwU_?xOEl99J#S4f^t9Js+6z5>S6{{H z>Ps}gSYM)fZ`{31qnC@Wwl5dGWJE826^HnYc)RmS51C`nyU*gnOq*Y zT|APboN-6RU3z<#E-$rF{ifujAyy;AYe^zC0VqQRfEbz}=^!$Kx>z{USF` zIY2qpxty$CSo3NRm2_5iAgkh>UqszcvQ|^4PU^-_Vz8yd)F^!op3i+i#6hf_z4|vM z4FkCYc87Z@lhxv->b@N8>2myySAZ+{MEpkaogvtB-gYfMr>X+FnzdZ)9cL1d8~d=+ zx3lw|VBhS8w3qU~M>*Hw?qTQT8pl6Z+ciMSjMH3kO->)>JfC{;j*1DURSPEAG^|Uo zAhJ}UwUgZ8(N(udIa%HF_DGHqf)~}Wx>)Jn@p!}yYih5qsG-XG!N8=-d#9@n@9$u2 z<%&P;5$Fee_Qe>w_dHaLj2kZVSKV6$-%QFLv zAUs!^){Ji?lN2$K^_-@xgj||pctRPGRxNNgZlDdo@qRx$pV zkT@rD^xh>lr*KTXlb)c2RQz3_Xy9OD6V{gC(TF|d%`bG)y%Z%5bqq>@qKy&1)5$tMNay7dJlYmd|L15hk7!)utr3(41px(*a{|Y~i)%wB3n+8g% zoS~4ufjflB$x!>3atQ^l&G>(d9EixrBE9 z1S&ODdYst=W7;=7W%ml!^hZr}3RXUCh*>*lsv6t&`CXX|%!5}=9SgyU+(*l&vvrgm zJ2T1=a~Rt0Sdl(E^^0CtSar-Ny`x&oa)%y1m2RMRuwkdbspBxT^akS=gGF1)p#W)Q zHnNEVjBUdv$*6uw5q#qq7A~nw42k{#Pm!ohhl7Li=#N1U5;(KzvghEWpmRW!w9OG@ za&>>MNm?Z?r27v!G3LBvlOAi$PH(Bw9kq}AhJ4@1>lrJemNk!a*lS)$qkSGOb2{eu z)0^O0KLw`>Ax&JFms`z7ATol#>OKR98H@jT?ve!)z&kyfY6WVLF%TEV7vxEg-kEw( zEcji;4N4zn6`>MN_{Ne(>WHv*XHvr9LINaJGX|sr572ZZ;Rs9=Hjx;T21TL@j}qUm zTLzvR3k@Hh15kG}OoQ60YBH9A`RWS(6z!#R4sAGtmrIcJM8TK<*Aa0*q0QJbKdw%B z@i#6@eg%A&9??BKvI&I_=0T{ru{Ed)93Ca=w4pz#AD+yWJLj`Ja zA-6hM1S742ltM=rp0#=Jrh$Vua<9rbR5enX=@||72Ol=OiZb@@raa0u6S1c%k}}a* zh`0xC3cNl7Q2oCYVuqsUrWpZ0<0;-1@3c);J6HXn8<_iqsK`Mbn|j42vbC`y{R82- z6L^48(b5J?5G4=F;zxPX((z@=uHmZ=)CQ2C(d`Y!O6@#VHTM(oK1{IzkI&2~cErJX%I%@SD@{kam zr9s$0hJaCZK7yzjUG^7yL%>=4TM%&Fh&q!Usj&%$EVHmmMh=+Su6)#1=@*nlpawC~ zjzAk#DKqNcbP||mK}13{H0eH%#*V%Uy9C22RHaX#Gfa>Y4(bN`Vee_%r)FQH1a?qQV^=D z6EW?LbRxEu)SZyBC{xpn9DrgtQU2uLt&%i%q>VM)B$>mJyuu~kfJ>EUvJk=ZNR)f9 z{i;PHPzSE7G7p!d=qol;F91$XJPFoNb8f&C<|su?jD-DB_sm&+%@piY&3|UHW7Hf$ zsX) zO|BzO3MX5el*we4lp)xY>|~NN&Mb52V(`=?RbGRl<9D9k2mC1-qP`Ctu(`VO?vm=) zwQuY!dxMa%uD|l9CX}m0{d)2cU2VlD0XQ1%3O@ya6%bikmK2c!uWVE_m7Y_J&?m_r zl_GR^U}&7*kxqL6!tehhP16Q>*ADkyB_PMd;2`$^&TPk5(sY_%J*HrCE~Y8+ynwYu zK_Hps)y0U{mQCsGDKf4D0=Ke}=0*kPmKCzFl6&!`JY|0z47ldSb8@d>BXX)BU>XG2 z8!c4(A`zdRrBn9>;3#Jb@5+ zmJ_PXwrrC%T^*;~nG@vii0RmZl0T6{*XyFjBy@Pma!pH&kl%tsXP(Vkfa|1U*uh-O zPEyqt+Jb9c!s-IKZ&emLi;t~UR*EKQ;)#{fu4Y=Mq?t+G{Cd(VVoPngCi-jt)mCMq ze5#xoR|h3|12@YFni8^#U1)1-;@$@^97}m`XVIyHCVr@0y%f!1s)5OQJL)IWO-e0D zlR?(X_7PQAN^)2BYOVmjT#Ys~-*vu2E%5YE3Cd_2sDT#99Ym|v;=EHdDiWK@EJRfB zh7Zd3{X`yRtHl&Mhmc8{NoaSQ7&3vYwJBV!BD6s33}Ab$T1b+r(UKCa6l@&KB+s^n zOwChFLec3Ec4peR`+xeQ`27 z-HvKTKl>k5LQ$yOWeSEW-Y+wd`)Q^T@<~wL>LH1{g^3Ln2|?+G;HL7_y{J?nz}Cgo zl_msL%Z$p+UU0D72OL@D9i+($U7rA<0%{cAgF2lEJcW^^Xl*KRA?hCZUH*>Iq%&$l zNB&_SY=BD$eEb_Jyly6({hQ9D8Ho&=qMbC8&}m5Q1imdqY(dL-&W2gVO~dF{78jwg z+?%Nm!R6G$C}OujE*=|C$QzQ=66#fgE3U8;uj+cyA`qiWH3Xy~5p39;O*@jwd{-4| zf@c|7zPPxnyUX3HF)1sKiTw!zpG*dcI$ArEo&?(-PaQO@0Mn)dFwF&pXw_qbt{+&S zhC<_vYNnB2S6z8i*!k;3)XFs;4u2(KYQUkj8jDEx6jr;nL6fO$Ity70!*oW+D{rj0*DL3*{F+qx#NRxDC%b@3rt=62pR9(gcyxFG$T`7@TaO!AsJA)8$=PH_rP zN{l`@b}KQ;G@_N80(i5GzwoEDJ2FbPGs??+z^^Ab7!g2iW-b;B{>;T_q+m%XnF?L- zNUYD97MY2c*tQqaJ#W|qua{jFf9F^9en-#wNyptten^x9?Zun?kNP+HR%0OG#72i$ zZb+VS|90gMFSuFz>P@-n?51=CP(LR`H~e%|bo|(hKQ-(T@-ITD$~OQEj&(-=N9gK2 zoB&-=)-=IzGx+Ar=Te$VIjiQEX`sY2m8`I;{x3?p9i$Nu>QeSZei8n2F+WigKoSYb;GTRf8};4OhVtkm+h7(n-Ot2c{q$g%=8p%@PNDz z2HP85Ag#-j!R5ZsS2-~M(l{81=T0fX=VK){ql>qKlcFi!2s2Q4x}o7p(5zcX`ENvN zju|?^D2h*}HFQAAi&r$Hg#VZTdw@|$T#bc2%6ESm%p)s2*2h=>{rY=-V2mf9e=Ha5 z0IpX~>{F0@9u0<;|8r&e-(UK%{wErqO;77yktT!rZGN2U9gPCWtCb;v6?ulz1E;?3%EdkgNKoT@gqw8`VVJTM*6@siEMhX-*~Uj5X&{Lt}H zc~JBc4ZkGH%QT1VF#R7QZv2CouiS1n8WC#?eL2^&l%~hCBOg}fxxkTM&M3pT#Wk-z z(9bCJg@}#gq41&OMba_~Gp-;B$}?W*X}l2gvi~Yh&KgqU?uT?^{4`$?0Jpcc5f0jr zm$=$`iEsE06f0f`Qbzh#%cJ(FkG!Vk|VO0g%2iWe^BEZ-Y;H1V;{1#%|k|OFmED$a(LtF_$ zDz17X?p5kT61T&~5FF5n00WVw%zoxg$eQsGB&%HWUkK{=BWB>ktNDv78 z=RY3^IGs0Ht&Uic@%DQD=N>B6lsSG?ac4yOCLBzY#5vyt!HfJECI4;)B^-RnLW_q= zz_X0IDX(V+6TBgHH6cQ%mRq4q#w6RulBi8U?(F{T&xj>xIh=mY(UoDb98@QD4hY#B!w@JE)_a8q!P%`*)HB^Rb0y}%$ZGyHdi@?pzAj2ed2d< zFJqdu!uLW}MKwN+ruxK7sU8`e-RL&)(>#9xH*_*ck&6^35@Zin0LdHQl*LXrs z5Mk*9D^0mLVIG27HSUO2>!=);2-V~J-jvkP>t&<=m%X=(u`S!~yJnTAo04gX@>K(k z2+?S3$2vg{D#V4{!~{lPZ<&+GkxJw~7%76uO({MCM;wtDLPV6&*A=@7#vEY*0SS3U zYQ&8JrHMd11jxEhB{rYx2NHNll%2SR^MH`WLm-hr{QhIiwfC+%=ib;v>8BpG=lGsu z&N=2>AGP*cd#xF*mI_tz64=rrnZn6x{i}~>;Bh9r&TdwpCQBN}R!Y6KDd|`LditPb zWjFJcg_52RHO$ug{L}$_GUG|9s%*M}IEk+nFJ84P&z2skN&SW@=GEJ8cWIQ`T$Y*+ zM`j!cAVC|h-4}-@oYsEvGair*1@7&&|orj^fII8`XuatD3yBY?!O0E^3yOuP! zYJ<&AqJTCM2nzUV*OT(MM*f=FhE!_^pCB~Agp2mcmnUmbhV#r_jOQMc3DBzMG!PwV z?!!rK%HQES{|4%?C@w+29|>#=UmS2jaWS5o(c5qTz+O^+iyd-^vz>!^Qyr@qV17k9 z#X~z|<+p!3vdimN>BtnCG$p>j#XcSBonJ+Y0nTDXF!%yuU!yc=k_G*Ohf8R5m1>;bYi+Gk;I9Bl3bv1$;@rQb7CloZoZR8PgO$0j(_k6^!Xn% z(G!M46yaef9JANKkB^0;5}Be`pE>^ZPqPL@D)D7RkI!{keJT%gMQ{ z{n!Vh{yRV4+K=-1%NRV0^L>Aqx8k(+bMsN0f1)0yY2W|otvK5wC-2X<;(Q+u^6)R` zRngbpXY=^oI@?1uyvIiG*3sK>^lqKE=R-8xyLD!iPwU+}4-ZG0kH6gi4^{gosC^#g z>05E$@IISg(L*%#K+oT7ls7$!^Nnw`-}if192+<*!1?D@vX|PWll%y5ptY9&CpZ?# zCfQhVM|g&&QDoUDy!PFZsvAyKj77=rLoz;B!R7&}FgiKM^uVD(9EqscmEW#vG~F?Jr09$W(HV;$tQri%%sh1tczDZ%h1^ z*rzpK^BO13>qgmJ=m;#1n$aUUTf6CXr9S-);0wGXgvcX9Inc zqonaC1*}HxVq5!=IvIkb8ggu8wLsvi*fW*@FFLWZ#zCFW5wW$E?IchL2Uhu{$ z)i&qUv$o^vy|t@_JH$MD!tsGtmv%dNjSlrv3FVX|Z#Q)vT${f5%Y_ryouI9+?Y>!< z7Gbp3)v&2s)?m>bS8k|F+NMJ^K`Muflyu-s2;9^YAQHK-z@=E*H&RfbD1@V<`v?A) zG{Cw7Gn@nyR=1Q9I)Jz2qEgmQ#p;^+t?=9ULR{$m>1>cM$gr0A59z@fc57Yu=*ON1=SY`YK z@E%7;^eED+NJvno=8BgVsP>Cj04vsUUaJWjvG$WB{#pkD3^2mRnlZH^JGWy#M<=Z> zwNa89CC?$xC~~?oeJ2P*3>=B?HxgWF1MvyGKoEhEO0q?RdDwC?MZsIaBg6vaZ7Ax< z>L}`frp;I{KER?qf?_U39@wPQ~Xu+;CcBKI&1Xw(_Nvv?|)vZgwL zlDTpR!)8GiU1v4466C>WmBc^2Hm!?9^Z_;p0a5rjFl7vuWpU$~ciA<1qd+Yglz0%H zFFAR63luP+7l~c0G<;c`o~FuPjfGacF-a(uGj=rK?7%{uYn{=oC~yZKD3*U}aT|*p zeT)&KnR*Z3d0ADeAH}pgU+TpcQ@qwcNzsK4>y8dFjcN7|hn^Lr2S-zbx zeNp}+mn)*Tk95#>a!*|pjE(3{ff@t~2l-%+dJr%Ox1hO0UguQON?wwowg(Ov@HEhp z1%Ayqp@2jdYVWP>kN#`4Qm$4R_9nSqy)+-KErVPx)fLnv`Z>ovQve+8Irklq0yRZ( zyK=NlOYn6S@*;2f@t~xWuWRlHct2kR^#UaaM|;~Bs`6p~2H9WTnwGQE4&T<1{J6Wi zqp})^@Dz!bT`UQ zHV{0Y-;6)CKFBR3Phg_SAyBh_&`B(h%8C~_GhoTEyf;|HtU~2w;)0@(36a_Js=B6t zzE5lVW>v2UM@Jljf?7CoW8+)(KUOj-Pwt3b!dcBw9F)3)ms;84yoW z$O9y>Dv`1yBxAE)#w?zWhRg|mtXOhn9C%9xb3rm7kIHjtHym#5JGY-dG_>Y2C4#CG zm1t=b$fi_hPz|EUqpibORocQxH6d%}k)s-k*mgiTL^>JRBaiNIF+c?oNe!$rp+j|o zXq^Kq!aiE;(D;5XMGWHjb79$Z=ah8f+X6Dg*C9|v3w+@2W{39;`3Zy{6>;P?CN(}K z2^-&j1EU&LGOqF*)j>K=~-( z3G&Es5+~>BcvAN$-cN?9DgCt0Zd_cn@5u)fa4*;fOZsYkrg~aO`C!RBPbrC?gksMW z)y2Bzd2-7MnL{-CW0(f{XAy2WM`eK;t*uIlRjAZp(***T0A+`eA&hhUm3K;Y=^2gp z<5qP%>dAz~X%M$Xf*=x$x;T(Q?kNqo0+`tNWW4n*mFFL()I!1$o`Ol?lKt4pk|F{= zOAnZ)MQLK(L00CiSE=DFGuy#$y5ue<@Wns)69=ptLsT{B=pI3L($*^)Z?!z{z@nixuPbG&YZg% zLQYFfhfGoxI5BMU{BJrr!T=_;?Z!jGgs6s{#`t5*__{E9q)0OdLZ2xx4Cw`(VJkSB zyrqA5^P>r85O7kFb8rdicdnJ|>F$H-^R&n2ce61?o!P)}XGBn$DF{MFkR@ z@PGX|u2woTmwFh1QRea#dxZLDR-%;?q0&tyny?VXMai@u?*K@-P(XYnzb3{@4Tfhh%L@Y1)JB0eVNwyFnesq* z41pLXM46r$w&YDOn=}#GEWAl}>DFj}TEC`klqcYh!ZhR|bmrn*osniMu*r)8UV@(~ zZ_oH`LZhN{MVdPB`ENkxJ5u4oRAl!9O98(T3~l(fY_76g+x}(!M)@B1-{aSVqpM*xWT;mCxQqJ?7(Ca;+H|MC>Kv47{4w?odoWTo z-lKEi_Eowr9klhRtE1k~#M%-h6qh)PcgTui^@|pN;a`!C!6U}$Ecf{LMO_HmY2Og z{@9}#KiYniXEp8Ba&1fwSG@*yg{4`*>%+juAVp9!{)6p)Pcz`#y^($9HF!6j5o_&V z!6CRV*?mWk_r^5wvLjR$Jv>^29o>nxa=keWCxeT7C&yU#*(kF~g?;!=RXjS?_7tPY z8>cmJhoHelrBPPOf+gh@)&KqLFaX0rMvWE3Z-JI5mz7ZvBCRARL_5tDF(xC&v)w|d0!BAh{{?dTx%fA)bZf@5Vna3Mehq##r z!j|w-lo$1kN!d(-7y2C1?VbH$;6#*_c6lkz%^|(br0z_Ng|~ipXA623>j=>p!->-N zhXtwihr=q$H3-MMb19R~bS^NjYGqFaMcI$4?d}x?Mp3YWl+<;jLyWHi^gO%KMr* z`Vy=BoH^sIA2#eV-f7EM2}Mpm%CYx$@R3nI`HJ+ronCa2-h)SR`tChO6usTuEwtVH z-VcK)-M&iii1O(n7SY3}ju**ch#fc_l*8R_v2U#0g!t{j4Yf?iSWJC%GW@l;)=hl3 z4G2JVMXxC9L(PEn-}B$dLW(`9C*fhHk(|94rMI+lJGN*(@RbTDWrFf(leH3FdsKBSDD=n{4V#2ECJIFLs4~OwIudDYtr`huNP&l#>sBA zhVgr3eWx9&Z=ZZ3{W~|;H<<(-5dhm6eIS!}YO}MO8bkWsZkXuu=>o=lCkbExcq#GF z-R`h>NKH&Al@?K!@`^@`5Y|Y#=Jt{1l+nizzn3hXbTPz->H#shW^I@#oC%NIhp^(k zw8Kk}=&JQ16R+d3yool1-+j0CJu{J4Klto+s7E(9mC`XX3h!KMixP@FW@6<<;vvA} z#5*o67&Lv;s@v`4BU!PDVq4!(_AkD3%ZitECfJ&(_UJ)vdfID5yIs+Tz)p(&!J9xM z)QTTgE1reArh)8g#nal}7wENP0;KId=EH$aj#E-0Mqo{fT z@Zg7wI#AR^BqyyEf0p=EUvVx|4oW@8W?pqdldZ9dV(hGCWX6dOZz)I5YH zOtnmvxDaB8E7E#mXvSu=rC0Q>6@Q)j=~XKp%UDA7$h-Vztls0nq}Hp(j?h{0w2i!N z7n{k96`!z@TNqE_hzLG4lU#fd|J-&9-)1WB7r9S2J*t|%HHeYlud;rvv@=WzRIC`8 z_%xNAXW_`(ivJQj9Kp?e^wi0vmhUH@Xfq&2NrL}rD7G$cXHF09_%FMN~tD~oO^ZX-QV9C@zp6RJI*=p!p;;-32)NK|OSYU}!i0QH<6;4^+JbYIA zoIF-MCiL?5^smoxE1i z8A$)V-+!h!vGwFCsm{In92_}U``TlRsyEf$lB##8^>YZ*F0Xgr{lPl8*1__MluCWt z$Gaqcqd#{%*=eg4FFhwh9%5cw@tAD#!9!W_lRQe6JOl)$5IB!MQnw~Vi_b()wD7RSgW2W|n=*5;&7Ou;R zQk0V>TcJ}cMpAqG^vs~dcL7Bq;kV2Ra-D2(iv0=Z%ZhpR?zTZ*zf`TW_j1(ung!a6 zX0sJTN-$y0Zm&bk+?SIMOR*1;cgRi+UJ_BB%_u2uiQgXR>HYr9SuWj#_)F*&>w+6> zSJY>*5wkBMXW+>nvn%PZ|4XT>ZUm;`DCR#-+_hpzB;KTz(@^SMga!t`JR^pAvZR)~ ziC!B5s?>7#y3XG(IGZH#q-NZRU_A(5n%AY@7KX@P`D3-lzT!qQ#eEe$r~?6F`JQwnSrvucl*DG>s4sY)KR2Z8X^>E9m9je1ZTpaT0?%s5 zp1QtfUr5C&1qB75j#d;Ga|BOLr$41azWXCJd!@L~3`YrtU5Qt&1(tY2tTK;HfNow) zpO@N`UZr@7GK1;F9?*YcA!c^_I{94j>txReQD$)R9i&ukL61>%O$~S_kFjY_8Rw8x zkgp?xl^jyR1k78#MkKM+>ss`PC1V!MN7%%=&<4l8YzpWFg}$CNfBt`KO%Ks%F23#C z-qoWxSAW}l6h~AIpTGU(!}$D@X% zrbm<>E-rqOktm9&^70dvmwdlZYhU|Xy%pzcU#k)Q*pKCie)dOOfhA$NaVe{oHkwjS zD%tW9*~x&bz!IyX%9}uX{p*_RS*@@~)hvRGxjvNN9{D4M{jfkCav0l7o(7 zL=DzwaF`o3H_f$kq74jujE`|1KWZ<8rcP*J2DUMh_EpOpovV=a{i^-|ZfzCCt#(xA zA;$t3J_!N#sD^PTNzGhm}W4D`}ErF2YOyCX6ZX-8?))ts(|FoB_*3U|#W4rzWKUgBi9cGR{q*0>!Ok&p#aA_) zAc(Nf#khsU8liIMCRvmVV*DA>(7S7J;z|Lxt2TH^0LEwhfG5}8kK?uF_WDJ8H*`;` z@!zP{mCKigZ$w_GE&K3RTLf!Lza;;^2IrDNqt%V20r)zE?wFIFd+C7v!hiq44>)~% z6Ybtr2lHytmeym=5y}>(sWz6ag*ytlGLi}_UeM8o7%w{%?=E?j4s8gbDC)>!y#cFm zI8C8V@K($^+K>FT$^(R%GOYCrYhZ|J6 zTV7xRqRxs_oBv`dQuJsY6HS{Z6=F6M_QE0L;O<7xkl~>@lPf{iS}|+dK!7Wgk*vYN zds_ofAcV4~=&k*sk8u~{W^kBphs;BrFs%VDTo+5qZ!*P!tSrk8xV$J~M5id;g!ICJ z)UB%Xiso#OY3w6qUMT9-vCkBSxsd%dbrLyuOl%Edki zB7_r2x=1XOA!%km@L&LIYrphwbH7{gU;Z}RnPv%|dkDD$o){F#*u## zqbfT#t++3F9;!X-4)$wkWATM{gA>2i+K#&Fu7eG~CJmvGI3j9G@6q7-{(385GiJ7DVVs!C&@ZfxxZ{eW%@2o3Cac(1|YHO2Lp2^v78MksXUl zd<3=yKd8eJe#P!;R5EbgE`|(?NBf`ucaB5MiREU0E2I2gvLZRZaCQPZGA4|Mmtq*t z9VAh^npRYvig7g-@~r~^FeuuEdpj8a@P{GW%UG^IWLaJ>#Ic(k5k4=LTmO2eiklYs ziYvedjq5AAAxof86q4+V%-kA)S;v|K!EhPv-qa*R8_WpBEB67TsBR-T<0pu~kk^dp zO%Cft8#{EG)wVO2=>b1X{IxYeA9*tUD_(K*qXE?nr!+@YdHBx+E{BZS&` z_4^iSt2pLNJPI^+JWc?uihxWw90GGq5*&s~BQNC` zg6txIGj|ohB!&qa+C18$79tDR##)AoY?;Nfg zrNBnEOV-FgQ0fqyqf$PBJj0<0lb}^(a~FfSN+-BYyxbg{v{%8tNIR5V5|;LqBiWTb ze1&wjhal2gB5mlCUb&UKcB!<<9-in9nn0Tfd}1zyf0F2OG)E3f0%vIMlNZSV#DTs3!GD;DFwG65Y!q=(kmcD2 z5!H;Qq6dLWKHlGQrzW?9nEcC<@7hTc+RTU@2SmaO)^ z>`4)!A0@B-aF;nO*QHp>N`vSP)`Y74$m9=1D;2J57oVEQ-B#8|aYxxxdJAgfiP;Us z2^=jSps=`+O@&xssisu-xB|o%{P0g~+@uaQIeYdHX;99=B)GhigMB8A1l4b}?>XOtGZ^#sKrf$dy zu*Bj@M%=?YCBg7;gY^_Qq=tG5CanMBl95m_GF~8rj~ZPW3P+OhoBp4qH{e|ECQnb@ zYbe!PmVhNbLsB^FcGmVSj`W;Px>g_mfmKGYdh07+_~ONvDAW@$pl}gE=G`Ncr8CSN z40@wD=_AOF+83MI4 z=g>p4AoeUK2Z91?%3I~ue#^hEF`7(5%BseELzz&C#%%K7bA;zw>Dom|qp!FH4y!8W zx?WH~)8QMhHvEtk)4R)%H)R?OT?O`GA_*>RLK^4^#2c0SeP$`T%Vx7|ylBHKn-Y;= zXMUd6)Amyy+Q)P{v2QyR9-suv1{P0(hI$UU-)#y*0xa5m@ zGqjX0 zIUR5;P&q&ZJ@MEShG?#%Od6c65HZIWY|krx&@6Z+M421P1hb;TVr>D@bEJlL1pF`tm}_XKR8ezSDWCQdrAXBX>Hrws+*G9wvD9hVJ&`xUy#^J4Hk|8hhKG zLP~I6QVv@Dlr>o@Q6mg2_f{v61|1ZAyfs{azBSxUtFt>K&}$*#DK@P2fOqkW@Ky(9 z!T=AP9iQ~`_UUgULSzz6ZnxCsU;+oAAw9__%2XET-T;vDdj@C{X0_s(O5!Ts%snlJ zs~+hBE6xel98Jku@2_%xQjU|Coam|QFGsCTED8q1C{Cdj{!f~W2w-LMb}yGbnjTvC zxIw)=0yK}omOm~X2@Vu`1*(Lw*0^y z+v#9c>o?!1wXD~qdG*Efi||+eaew9hMZU^2?ON`wFT2*E_pL8I?n#&3J6Fo$ZuIVi z=nH6_E4W62+H^J2uv+6cZ^Qav44i_GXnozc*xhqAY;U1v+DEu`1^Q^WF37%X5%gYF z5N+f{^#fs+w%k*Ju(GOMH0Nki2U`OC{hX*Ewt$oyI`6Yw*7ls_B+p!cT@TyIlMP=8#{~k(V&U_ zvTH1XfeZb`f}PK3O15RTRVxm34VwoOPThFE$Afo-40)RFwZr-POEw&tNyzo?h7x#| zUNB{ykKSOHyqJeNhzJKBP>eNkhZOAr1%Ay-fDc9u{zmbwwr$ zUHq%RACAPc!{wb;?_TGz?dC?KkjL}!zGJ#zX*($+qtXxXB^mngJH|^c0|RE#i*_+x z-sF>0cgzk5rX5#g9lXVonSG3*^w;K)Y6MGtGD6h$C|@TEG)J$sBbiF%zHqD|Y({ zRm-;8!&7TFugYBV+i$aFlF?mycP8s#$n?OV9FKi%qzZX;y4}~vBy@}<-uH(?;5F`+ z1tW1(i|IKy+RoyuC<>0XIjKoHWZl`4-uNxJH?Nh(g9sUgX;UJ5U+$@X1ftM&dfHmZ z%2E+WU)D9yIEw(yG2BvJWI*a8u8csVSOZzY~9Drf~cA7V^sTk)sP z%q?T43b!G@g42q(8)?iwP73RiNfoq16kQ~TgVCeWDO!o%cwX-%T;CaqU*(pmX?Ko9 zwY&Yg;LcN&YFi0M5}kc^B*g9}YDcQQ1kq;CU0n#afQ}d7ty1;ysiz!Z5^W^j)rCfF zDo?LFv_xaYv%;b7KB&-!wS%bq+l8X8E{Q&_-~HXPkWx&?70-`XyR-s#VH4tw37)ic z+pN^qlJ+@I?3dD!4s0~*ZK$;K%}pd@$m{BD?O!xLO#xdxgUM8B0@D=hy7h!a<`F^9 z>*1wZmBRk;;3anvfn()QaHO^~lT57z+DNGgZHovh@xE8}0&Kko1Q*indV2BPNF|;= zjWjU*vK#w;(Nhd}C0;Au{{!@|*hr+}Yp2|cb7wPyl?yU^s$FFczWPe79O$KMvii{Yev5Z$L8!-U;k9a&beQ zdW2a*QCc6<(-8pV)bC2PO4;#0UN3bUMf;sqlyz9DB=w#~C$KHiN~6{=EGF9kkTpC* zYzH4h)R;%n5K`^M{qL-OyjB&u>#OHUshd>)KS@8~#WZemWss9lPTK`D?^^JV_^b#W zx|Nl$w#hkA-~C;^y^BS|+2JlVy$g^I??z!6Xi&y|XMvkE0!u78aA(YAnY2qAXYT1; zE;W5pXzN%kz05S_$}zZn9Zx zU;Ov7YRwEa>LAPMmK^gxBr$Wfopvgz+*UjZSL%+(1B{i*!bp|)sw79eIY-_tU~S#< zgJj1<6LON2fyI=DVTCogSfnk-( zFiSZSw;jak6Se3QV28l8>tS->fIcJxCbZxt3M@ja5U?z)%Ktana%4QC#Og0v=kJ2n zTzU?!A_Avedfvv*mH6jKz)U?uF8}mGpAu1yGA!@H^#d&bUlWRr+uiKH7^#3+iZPZmJu z@rLlMzl)Ha^D>9inRbG_HV!(si)!ts|DLp14U3Q_dEN*BXPzgbbyOv>hECw5`OCLZWX55~Eso^w`*>1(BnCGYJgzfGoEUX6Eknnb-3 zG@;10%8uQbUf;o0o{-;M>0$-EwKM4%iql%nX+>`AVnp5|!J@qWX@T%xOeEF1lFSf8 zn6W_V%iJy7G#d`NRz(1Loq#AOK^$SKFRLVSCI7C*pqITy)X5D-AWXQY$Rc1$%3Iot z`829(OWr^$K1#46?xLHUN%%`Y)!LuRx8i)rqbGV4=PDmLk?R{Df0=Kh*&fB&-bAAZ zdGyH1RYqA4TkR7)f1oGs=lg7UaOIcr5Y0nHd4MX)J&(WWL7sbR*8@E>%6;{r_erZS zpPp)O57WH$7zJr zed$Zz_(uELFKfB$|E6u(zAO1glTxthHLH9O`4kVGCp5_DxN=DfGxd~n4mbWadhFiD_{k+s?6=@d zHW&Jq@Sp#dG~eRu;^;K=8AsP!W^rYb5H*SgJYt)6N1EVCIhpsX_VpLXCZ9>|I!av; zh^5Whcp!vbE$#W@J7Qk%bm9KM(xQ#@v zwAIjz-m#87q0=D~H&vFb`9&jTv?@7{XQl5n-dgABq9_FAQ(|^9O7OIy56)lV1xw=S z!+Og)q=^$Dv785~qLXmOEig(X76({+PYoQwx3eBhq6A_~?&>^Ee#|UM!a6Dv&s1Zlfde$mn5Y~FA(;(npoza2NDemFv??*n@dsfLw^a0fn9R~y8+jytFMc6C?Z5cmc8Sp`MkT%yh0A}SNWYZ1Fz7~xZ$ZLPpKptf9M*|BIHt(jYEQmivi@~P!rQvhYBW+VpoWw zSd?KwG|G>1b&@YloD)i?juOvwlwb-8EEp`^*^}tH8Gt9@u;ZNyZvV~nS;{$mk`Z4) z^7M-X0991a_hHR`B2zL@p??4BBgfB4igE1nkx5m|9u>&Z4?J7v%U#V7-&!ops{)3{ zpe|!~Re6vuJKm`f_l=%@V>bTW3Q zj%E$!ib<80O7FF0HL35_aHA?04rs;Ng4lLAtL{o zF=WH>7kOFwqUMmCIoSY>67|YZ3<_YaPoBPPFsw1;lk8rWNwO8HB3c=)o1TH1J1lf` z2jfT|M7or9e6nti-2w8h`8zuC}GIZE%^YO zc2$DVx>&On&?=QO56$pOvouKWr|T+#7{~|h-6yZmqJy_%b;xL zvu3p@EB4(wD>?BZJv_{^sw`HGn!~GrN?O6$Ne+sj7zJ)5Q6DXJUUCZRQbDkYjsEh#&#Z_Z1s}8oca|^Rr6lls zS)#RvE|tb2C&&fURi1%P@T|y4v-qI0C|hk~dHp~?lVKNSzwVeIc zWNSww!L;(Tg%*-Qo#Odv09;|WvOR!n?-NjNw zPv9qZTFy0R#wV<$Oizm0!kSAD%I?8hiYVywtK?_bf(|1~FE0zxS+&^0R?4HwJz4XB zstESV%c_$XL)sChS7b*_Ko)pf#6|WEEC`Az3Ur|ef?^c!Sy!T7bp~7r5vpB$d)xiG zVx>tPc(hBKx0y z1&G9DnQU5mR(F|AdTI#@2P9-Dx-me1!{ z$*&_1e*I*djadh+Ec}2+s7CUVvqW~(Pwj_lxls09b~lM=y(}7qz!RV76t}@d$u0-+ zMmg5G-&#aV>mF)ONk)c?S^=s7xKz%kW8ec7ER+~pwhouQG;wl*G0`j#;NrhZzjDSO zm8pnv)mD`w3^Wwad9% zffDCZGB!)QkV~YbMr?woSDJ+QOrTk<-V?ai|5H$(pJ+`!k)LWla#ZqM!X0u}qf!)T z;;1*cEfI8=zu~jWqPnI~{L9lif774}i^<3y2?uWv)8z6MtlOHd>W(S`l;8?bCFRW) zkE9Z!O|545XTBk&)h@=x7hD#xN2G*rfgfkQ_8%vAKeATKYj!xKcm4{DZmq?-JbLjQ z!a`gkkRHW2~^SZ3VL>7gGgq8`Myf;V7H%7%@KveQs@^OG%5<-i!t@>5M{W z!PH07M@WT~HN+kP%^&HP9=vtUQn~;MJt0i-XVP54-ImMhqthm z@pSz!siAM%rFX1*H`_OY!GAMT`A{mm5)fwB0>lX~gcKtvgz|(?z(w#cro$ zTkI8%`cB@QUd03IhH_88)bFP?Iut29SqqzPU_Kwc?LFchNAbV&i*7mq~r*KhmRTjuA z>if2|>Z?{a6QRV!KL5||q^47i`uLG?t{hok?g#hc5pdW1J{r&&^S-t4a1WU74cFG! z_TVkL(w{-jjmdRu zm)~Vv$n?epnn*@$Fato8mxyRFBk6X>tI|I(U;W;)OGcywh(~UQGWs^!6}4(H4o%vM z3x2DpF^F|A+NK9WL~-}l>0bnNKgLQFUavAR_x>;j7U>T|?sh;{6kkEyEOl5RtsT~Y z-f0?~YCe{L^f5yE`!T#h_cSF66JnZV+=wQszRAdvW}c}{G@M8fl)l_qYhu)<{P0dl zLZj;k?I(8avVGwTH#SD+NO-&FeK(gkWL%CAyI>vKd$}l6mfl@Q1s+!VGAQQ6NKfeu z*6AQ@<3XLI-rg6@r&r{y%*%Tj8Rffp6bJB;|8(k^jzdRY0f>F_(xIK3xxcY;yP2Yd z#z=yT9`YfY->Ju6cn8A%aA+{(eJD!nin7}+i=vSD!$t5`oL{p%i(nd^hc=?~oyzKb zAJm(6w?XP2=ndc*&3K;;GWUWrFDrSsL-wWr8hx2eV)wBSjm>TyU*p|6_>4w=z>cYrgiN)?EqX8TceL0Gz zrxXdpYk6&2Msozj ztNN(Q!o9^I;=BJR@!YzerY-UFyK0*$xAaki`eXo~RAhRwuh!0*jl-W8z4^UKc^dH4 zeQrI=hX;>dSI_dAzuu{1A^%z@FqtxIzjQ6F^?|I!heWoUWh5PkqD+hib=O53iLbu4 zrj+b@EIEzrkd^42X^paBdK^@1OA3r3_ro$=dfTng*4EGn41adn+@|d&W0 zO(uv-z9pRK$s%4WUeqT=cFDsJNtZaRk~Lg4`SC09I}#ss+UT!j1H_0zplYl4YO9m} zRMSd?^cGr+I5vs4%QR@kOLc-=!$hM~DDkf_5h<|6yVUHsR;U^mQLIR6>By9%6wEG6 zUk<1*vSq}bEgyUk|Km@?Ub3rIx9PNYHJsMe&6CzrIm4)(V#~LNs9NX~HvQ2u6Ypi7 zIMW_lZRI~sbd}49Esoacu6>gKgt5xJ`B_^8z?sJz-DJ}_bl1cP2DHZLoxcpiy zpi|t7!yJ+!U+noBxzz&oAS2k@LDMVxgv&I29z1?6xcaLBUM`BrLR66 z7D+7ayI7N>mq=7-uC0$+^eAQZ3|)aYEX=wj5qHnHr1$ zgFxntQr=w}0J|kawjzpKL$!iGMnsed=5CKQ?JlR&h^l&~NQSmJNJj?2ZbvPmSoQ_Z zC<)rB_qTSu^HF`-bwrp2fKI<1BZ~GP|FzVBoYHx?#%VsM9~l94c2j0^1E;G)F57Jj zD5sginjRPFc~JmyysPTzuP87Qp9%2<$b3eV2YNjFNA$AH)>lh;uK3ybg>7%5=^hGW z)x;(D3ms5&V?&l6LxGKev6T%7+6JXx*xQRcsj12kwH57>`-viy2fPF<@er-9(N+fE zVQ?j$M{%GuWnje~O;MDWkfNHC^N`>s48`d${{RWRWKV<4s;LN<+y^2BAbPgqkxsz+ z@F>xzHYuxZlc!olQPxe4VnohX+0?E{i6Yt=%G9fR_5~R=1|d&!Tm;AkF+_U}xy{s| zQ8XStW5pwo8Ogm@u($f{R4*puHUnKNm{?YB%*PrtO6q;;y`g4AHzvwisR&F&l8i!E z4Cx>BdWdF><6Ci_Jc?6~zl0t+nQwjB=$js*dF@f0e8-O7KAex@{QQ$BJlLZs+XFqS zU5~#U--@$6{v!JD=DytXV9%qz%tvu*MB2^fLq*iChl?IZQSCR4=*a^;Gs?r0D6c&h zH2c!$13l~nFKa}Xm-SYhw|EriVQs(bkG9+f9U|~t8rhYSWb)jz+)Cc6ta8qgJo_D`GZ7cc z|DJN!Bk2S;C-%hIiG9k&Q$@-CNS*)cO7niIk77!(A84;be5DLRuT6vH9< ztPSEl_E5Oo^RF19(NUMKx*{fUCxj=5&{hP4wm(A3METD(y^gXMIU@Y!9k zIBm;0?}!N(DucE^elV;Q0WZK*k4h z-`&x~-h^Qzr$jlF28jA-hbUM?4qF?)@ONdlm2rNu3QMkj-MWn?kOeD^D|CXXsy^qp zSNfIKA4=Wz#Tf(3L;@vdl#NOa_?mk&xw_;IR-ILXF_6gGX=I=%U8%A_zhu6BC3qk} zIDbn}Bj#)i2X#6WG9$o2J!efp5DO#>1<1Lf>M3c~q>rE;EQB3-wA6u-SUMMBFse>* z>f-7MsZ7Qt2Z}=K{DNP!KmOa#5=gFZ+a>yH|5E<5E0+I0J_=FRTxeT!Qh9l%)ew^b z(WeAI_Mwa`T6BO3g=QQD4+&}&7+6I)8%a+n#M&&n#A$8rh~OPPi=$m61&#FWCOIfZ z0X&k_$c{?Qo5^pSTl?Uh%Q*9Ivr)&@#Q=T?OKdHsp6FIG2 zRWyj}itiGj1Xs&G7KjM?tlikI1Y`Ud9efMujI!cnKt4E*{*ojqVt%7;-j?LJ_ zMQP5G2m$6=Vigm11F2J=3JG)jA~2F$+jO_GO~_gsU)23XVW*V3b6y6?CgfZ9;U_pI zST&1PECA=N_2dvHxM2x|Pp5)ZNKBoggnap&fwz&0I2t7S7ylu!s^saB_yS8Z(vqPOTJ(W~vv@I=fdl76${k<_L;l%I|(!KyFQA_3P> z11>gO60sg&z!GabC$3m_;j;M=ZA`$pW{%qR$yp<;z_&o7X67pGzpC|sa%Jh?VK2Q9UgnU-w=ZXKUGX12T&lCS7A)l4_ zdE!5-Oh0Mo^Ta<%$Y&*!xa^o>b8(vkh{-Sf9o@F zzT*GZxAu7p#|(U)_+u(QTjuk`f42EPw)R@${b>6C!CYh=zBcgV)zY&lcE-QPV*J{f za-8vx+2eN?kJWFGUiXaj($^ZTx|*`kx$ih?i*b=eVm3IhvFW}!%{I@?Km5;6$&cE} z8H%6?mU-FP;8o(RBaU2YHgO5z`nJzX*rLP~WjgYkE~yFotO(@`k^om$e13bfpol64 z5zj~U%&V$Nj9H3z6MYPECOUk|Vt`1T$l)oj7S8me0U-of;)zP2JLgJQbw!EPdi#^V zIL%m&VB&_*>)?-7R^lYt7<@c#wR{Rk4nVvM3BF7T$p+&T(K85T-lecvP6RG1%Yo-V zQ#_%7RjHa@!bK`T$lnC)s1I>I`zQWy3|21w)KdydK%jrezbtA(T}V1l3JQve3Jr=V zB_JzB;E5BNa0p4gS~8%hyQ|aWC8J8%=y@0nPBRqRT)}0Gq7EgJ{$}T(xlI^dGYOUz zLhOX_?8PRs-3L4+Tanr&Zu5&Almv%0abi*p0aVii23ii#gyTNQrozkV7!IU~t zO5CaLTuTF2f*FlqLERgQwQ-|561tEQOJeAX;HtC1bO>~Ax?2dU@5>#B$YS1p%|D}G z5WCT@fo8nxXIRX~wdoeSD{d%FfL9N6lc~PYz8c-$u5O@|#gwgU{nwh)gO9?Yw4N=R z1u7J@nI?5y>6LjOrPF;Is0z4q;|Ta>rJJa_FA@3bQv+I+u%Mcw6F4yfnn>oXqB{n$ z9Mrx^w>iKpE)lRWFpglBvn@i34=MKpykk&bc0TQb=3`$z)fnr>XtIyZfNtZBH#(_|IwGVvxBzyrURP$s`5TI^xB82 zCb6iAPY{#(Xo9%VCHnzG6BnkG6R%xRgZ{1P^%kR_{ob}~wb9qaH140=gIL%&y6&L9 z!=upzd2#e?582g$w&lW4PxK~-S3*RGAmbra3La46*PE>?!RaxaZgW!<8_mFnb_bQ5 znzyd(VslLvN#HhDJODyaWD^)=@CnJ*!r%Z8MYhI}BiEo23j2xz4J50ssPKwG6+HHc zoj?b~uCQjS;nYZU%!(nwPE}XL=W3Vz$ZYwl{lz~4 z>!?`%HN@lUJNooAr^uetW=f=Fv6gLO+oXV*!vDwG`-fVVW%qsi9qoBODxS(`Dv#z# zsfaa|tM<#dJY2U+;|i9{n#yJTm^8|@s5qS<@X=6FDo$f6!ypu5n>FQ|_9Je?vzQPO zWPChSLjNI!vKeBVtuzP$&vGoyLo!)70&lD( z%F>fmVQkI@M3#HjuW_P-&Da)*Jz1?KWRF8gro1F`ZW zKiq7NO$j%K1kietMAIS2)+pSr8gOXA-mtMPEXkd1nVGh*AYjhD1Vc+!v1DC#_1qm6 z={4kO>PXTs;Hi@aS%%1@OjIL1_EcPJiN^R$FB``w*W#7hM!D3M4?eGgsqRZ}zG$n& zf>uHp+ck)C0C&d8dNA|YfPd@PDEKK_D^yR=>0;^cwH;i-rZ7xejvs;RQelIBXA#-kx-^N%Q>-GE4Us`2h(r{GHi-WP97#x^%9fbp z%7XX2?+N4!Ss?*a?J5thqKJ?%gGxbKplM-R;?SOuAf!$37;2fI=S@=n<$ojsVZLkz zY2pFzD@8W6YC=!B>KirkKwVZTqqrjWf_)kaZoUsPwZ`bV790G7Y3mBqEF!?#<|0JL z%ZcFAUP5J5(g9|PL@k^6m{bC4Y7f?kK)qRfGzkh0u6#nv#0%U<#z*OBG`5~XXid6y zVvOz*9&itriMHU6m%ji~=O8zA`h%aAU}Q^~$|0ZPetArjBD|#`R-o{dH=+DnDSw zHi1l+OR3~Pq1ZH8T~rnZRYQwvKwSfwXxljL=uhBj6=gAosBCEmS|IiWIB7K^!r7K2 zMu?0uUE41tsce=+maH&KHNE;_>0y=)Rx^cjQAL53!2y+951y2irXm(rXrW!13a0@6 z#DCT>7fRNsW6uPqdz|A#(8?rDrK`2pFgH#RXuEDDLDRQ}iA@#@c&HzqT=hr7eziI- z3R!#{OoCBGgKQy^HkH9&f~S)JwdO&xHK9E$>}p@fOhKS^OOsY6DG9!f$;~=bQ>F}v zkA+(hPO#fUh)}{O5dyuo;XGmgE6KfStW@ny4q55dJxi6b1w#;O zGuVXp;1GK`q>HwtJB!`IIvT*URAE;X(u2^m8qyx@#sByJx=-O=!vFEkIW;Z<18Ymj zYs|g>93pfK*x2Z6miroRQ2U+os#BR_`XnWAC2wpi{fY@up$S*R#7s`H2Xi%Run+>1 zrNDzio4~KA#$S~V72`O*(KGSSWoN5sBWW#L!9__jv9^gmlkS^tRhE< z8^c)xL(JwY^tQ-^;2b&jQS=dvDkeA+aSaUmr4(<WZ88q4OXTg!wbG21@T*%p>bAXT)OMz0Y2}mD+ah2FOgtNI59>k5hXa$Lu1;= z1UUPpplv0QTG&l7w#P5mC#ezoXfY)(oEc!{JnSg^Oenm~+5f8DBfdN=n z!fZGU@}Cd=_x*5FR$c47il$gSucdw6S1$|Z? z6PN~uFGGwggi&I(1GummeSuj;*+dE!ZIt#ScNI66W!m7|Hq?R7X2$ArjaJ);=8}L5 zot)fALaf*-l8?x=DWzk?XvNJ~g91y0DygZAB?RmghCo`AcK?~`u5jqD&oCVGS3UKE zXJdVY$8lE(EvUBhGVKWFQNit|PA`b3777Np`bP-OOOUJC3qKs8h#}PeTv*_>#?R%f z|3V2R(Bel8RQfl^(P8_y+!5IQ`(goeVRcDv-t-jf*MTMOm!EO#Az+myqtuq5S^~3Z zXq~vyEJWouIro?dlb2cD;Ju2p~wTC$PYN6 z{_q^aeLq8hwfB5i%kD}4_-(UVPEO9=bg%XP>HX8z>(RcTHRUsw^PEvJ>K!?~?#jv0 zlZ8Gk!xlqhC=Kpq8t% zco|{!BZ9MfJ6(P)`dUAQD}Z0Pl@?!@vmWETyyIK(mzSdnJ9Cc^RDYJ$)W(g~%G4;1))J3Cn|LOxBel`g7QTE2OQMpz3-P1QQ%JAzqLjT07n>|` z3EEt(8Uvn)NwH0eiC-X2qp?gSy=06jGL`dpr%5@Th-V2Ubq#AE_ratY0M00N@sIu(1i#jfS5;7uOPB!3sdL4ZXy! z61=3&A?d7AHDgVeg0{eH6{6WQ^Jj_nwJygAJ;01l+zJw(70c!5p@=NyPCeN2Xfz8E z-iA%p;mVXH;?PP^S2&M0y_uu_E1mC4* zN{8WuU4)(De%n=KBEzzGluW5dd6ipr8x1&O@;aD6R^n-><%CJ-$?tJXyfaS-fEgZu zegU2y081rWYdjK(@rj0B%a&g|)i6OZ;}g)?o)CuNL*mMuIK&__#xJP|uq{?J;W!0I zN&&{v#G6Sjm`r7mH1b|WX#i|OSn2o_2v#e^fC7UDHyCkqz#9Maj*w}6E@iP($LgoQ zElIh5GL9lnSZZ)L^jgy^$972x0}ly4!jf>wd$4$Lp8eypl7<9Vc$TTF2+UL3{*xjs z8tNir?Yr_m<}9n#H`1tX^Tu49F=wfCRa@ZErdT7VXt=SaxefT(5{-{giU zMEa#)m8S1cl}ZunTW!Zu_}2ARb3{v{V^jI(2Iw$MeSbtH2{^hpduUhQE#<@~Ozlj( zyo^{N-dnd$w%z>Y8jp=C0ds(C6t7+hw{e3iB_dHahk6-hoV(=iA!Oxpu@eVamc#`x zg;!HFs@1ZV4$P)W@&!y-)+Lgt!WsxTfn|BE7+p;BDI&y{0R8%BAo`Qx#4HKTc+Oi? z%Arz13duZJLP0$`N;w)eb;PNLOMGQQpFL|QF3ci$v`V}(re0;{Od;43a0?P&=~ZKe zRsQa^c5~VahX<#8l~}ZVB#bIe{sha?0x`qc=*@1PJ>VCswg}Q@YO`%AY1=6)b5PtB zm|8=MbM*kQ2-&HW&nYpKi3d+A{qdexJ)~nPf997V29_8TKF%ek+|I02JW5&*R(H+i z9*KAcW)wc;N;F73i#)9KE(~Yc0JW9y7HIucJsP&nYLp#T1}gebNFkyDUTh%~%XN0v z0;+N{*$=Crr%qo8UJyjCERREft{(Vtju|mewvHn-^^zxPyE5-XuxiSzHp#)ya|M1U}T5iVc zu{^=4j;&X~<*u4#%og>cVU}g*I55~EO56?wYRpsIur8V#?+w*d7G3=WWL1X}d*Zgc zwU8w@i%`mXo53%^Ox5?XAfKBKIY2BST#9M~Y5g*mW`$Ym_j?~lt28b(7Gj!HkhMiQ z+ujS2FVNKc9$_`7qHk><^2$^{FiUv9>@QGep~oszvnxD^6&Y^$9~WE z>X&$5{cYioTJ0AvUSj=1@%R0nZ+z^xgPvCd^+i$pe5ik!R_*@6W(wo#5yyvf*U8C(9&6K*v)>kxTVFM!+^1g@t zY|^4DF}!Kof?*}ugI^<(HrWBuyo&sNz|xvP_y}yNoeaey-p8}cBaxNeUccY~Yx@}Z z5^EsW=H=cGgFXS4cCKqUCE0`Ri3P{U_&r+>_SCh?dy#OcFckvNlHvzg@734wCj`2v zm$qYJyIR1mn09U_6T&4yA0n~<}K3J5pR0LRp_ zo7|CClpe_1R>L_@gI$bm6{;L!V<$0xtQgdFgk=dV(D3ck3~!L2Fa8Cg(YVL#qVUNm z=y`33tD`XF`Mz%x|KI>6ZnKFJ)iGrQqM;&Df>jw&9pe!_SZ#P>hl-?VaXGwye6lyo ztT2@_;SVqscndaTo0b;TF(8lzQwHfo0XS76sWQ=)K{gg@gptH~h%q1=SOvT2Dk@qf zxbW2kkC0W9Y<$zgT7?v|ez6j^qm}KEjN$>Ph{iBM7IS9 z+Sn25Sdl#}{T*H1DvdQt|LBy|w<;29OuQ|BV;SaBzRhk#y^E5wG)*D7=D|u8_y#L$ zPp(6}<()A#o+tj^t766?t8*onDxK^g6{8_XC#C1VC=DsSh6nO1&=>~RJ4+E{%l#~Z znwFkMVL*=QimRja$U&j6a=0_L*=pe(`ib_#JhxWC4%)jl8!9lv^(Cp=uw0cL8c(`l zeDa_F^#lvt`vb{?wk3+|MhbnApXgaT{C%8Wq(JtKLq^Q8=6`U@nc(X$N6YR_UdlLbj`i zpivlR=mMGof;me~hX&8wAhZ!#lSW%-$Z!yGQ_-Z9UaHH*Sh#b>26$TvyhX+oBJ`py z)+8P6s<3EGSRy-BcYs#=oL8?HT`i4PV0|2xsVs^lK!O=^yz zZH;lR8rJ_UEUlEc359U{uG@PE4m9H@t*(ADVOz$({}Cgq*?fFD_C4d~-EcbU9}3X} z4CZtLVd1>_#8p4ng7x(1$>XvyKQ$(|&ic(qmig~-o+B3-tR(DB`JWSqlhss%E7ZUd z9a#5U3ugVMtTQuXRa2!-baIaV;i=m0=kq$u6*Iowl~dK-z)isk!U(sqI91NjFeF9^ z<;*oNBZ@JKjsyw==Ob#3QN)N9lZobo@uWH#ojtHIRrdmrOQ^uy`&k0?p%VlGn|au7 zF1KCtlRM~W&RkPrpvn`xoy(p~&krs9nK)YgYJ`K?7rVk}-vPtobs?dmYd-Kio?gEg2(T>KY*=`%Nt! zDnPWi&<50COYc$EZYof%8|%mdFU?XVN5#Xb;#LI^XlyuNr5I zC|afDvbkuA)}caWnwBh|@I7PxrIq0Yg`=>U-V!{4h}Fg+hzg8c8RD<~#oR}foLsM( zMa9h6Hi`}m7*%UhY9Y_@o2{Xe5?IeIQw)8GZw7NxG2$yAE!$$RGlzq32r60w;gcCVa18e z#TRtih^C@9wkWeu1G3l}NI%|$h9S|Uu04rO`v15MDZUnl4bOb)!|zAQ7py z1-B;WtYz7NOdjcslD)+#78uioQPr3B6l{ZWamd&Lu7dAi6^OGVW{gPMUJilSMpnim z524Lm#>fNrs+3&QiS@>p2ACum2@aE9p7;oS)Vx&H5tK@h@fU1uE=kc~75ka9MPO_R z_+r($HFGCCKU5Y?&4RnSZU>QN!9ioB=ENwW z_R>|!XrdrGUF;wQj;vKl_7e+i_6=;H7uH%eIQrrxGKtwQnJ;#PZHmEq9pNMeDAmcf zGjBr=18a5X7^hB3)0Z#)HTIn8?|)`3kjioWyiOc>VfCS@rq;c0G! z$~YY&Vd-p3y&+P70z1btwJKDd1Dzu|g5aZ_;|LAsRwsq)i+~37HCMD4YswW5`y!O$8pzKc z786_eGcYa}uR>aY9YP&gFX?`mI8$sKxvFiXzYoQ zzN?`#5G{ug*FjpyP0GjmgfkUX!eZAi~r~!!q}w~_{M~`_{_$|2=dt4$d(j^up+(V%W%|chUW5TZ8E8iYtsrY z!CH{e7fs+?k646^aRX!_0@$xUTsEj(fwG>2C_!{=joPbX5$x+oYiV+=K;%oeCU$(W zWp_pEJi2Lw1;J(tjADUhh6F5|fj$oYae*!U+oMJA_!YE1x|s73ry@v?1YRZ>&H_1) zlsF%a0h>`^#qAHrD29+$b@|Fw1EKBYP<}+PK^&1Bu=lsPd2j>geJ3qZnauWE%5eIU z=huc1wxg;yHO#6}mklWyxH53X^-!Z6A0cr0=S*@Vbt$`sTFL$robeRuun~r|##Y(4 zE%)Yt%SePFf-(qBWfoEB<@Z4#(KfO*z~41+^~lsiFYR;&*O|(FuVo$-l~(hp^d2aZ z=Qg|GoXy*Q4cdbswo^c`k~kxu8cEqgc++SDalcnZLhGQ3_9c9&mLFI7<)23$Jjc{O%3K_+ z&+fC9Y|9&c|KPKnBYu{Y8j*de^oOUlACCA9CvbOz5c995b!XxRmEf zLCzlDJu5vol8?wtjh*WrWqGE98?!LDm)M@c3TO2^*9@Cf&{3yfUP5$@%o0=sr@?Df zh1Prm?+9LOsa($ zb(-rsy}~2SU78qql$%_SH@e6678!TOil5Q4L)#bwa@Lhj&pUk?@rEy#VuOcTzFvNn zv=lDd%NVTjVdt_Qwa(RhGm9a+;K{B`q?_pQcz#AAeaFO7R=wz?F7N;xO~K`Nz@FnF zbdKLkJ{K|CXac6xHu9URWE(mGCxaMiQjMAr*q$*ws~*E28W`~~iu zLFI~L#6^6wOxxp;DLa0<#5nflyO)J_F(UuN6Q*=O^dGLz%64FZ$K%%r4y7khpZN^c z%hBU;be=HlPk7q~hxdQ!u{+5=J$3ruJuoAXa`WwR4N;DMW;E--M_(Sb#N2+HrX}Y^ z5r{jS&=)I*ueZmdD&N>lK>}9m=aG2fkthG|IA#p*Ud{zLdUsCTpE$VIlk+)*`+O{@ zl6lqQxxq;UkJ~0L?-oFO$Q%-7U5LuFc?iS-!R97hE9a16^)d~p)Sc6B6dMq5^d{-9 zq@ed1DKUJ2yxu-Jk-l!$>j(^vo{(Z$J$VvQ26l0@!3#F6Ct!G{SMqgGZU2kUknpJB z*jgqeuUsOGTld4R|Liy(pnd&cG$wd=xOuc*%la4oJc;GFxU0VHo*o}RdRqh0_m3Wp z<01Zt(+>|n~?-P7%@fkI!P#>n|I<76g2-fBWK6J+cxn z=1ZQaAuO{g<&NuUBLey%0nR`i#FaBnmI%ctU7fTi5J_2^BQ?gsbF7}1Uc#+kIM zn~xvMhR%-)U_CrvD+!M`!t`Z35g47IyM%r6!HKNO@pNC9N5@%PYPoAu$%N~v{Fy0| zP4k}C-OD-c^eP?pHY#$wF`We?nHBb;)V%(B>+~li9xHimJtf~pB_)0Y9c^0T7caGZ z@LsmkFRQ5W?RQZ9Xi$%M=K49!(PqU5rw_vgT88c7oLUFvS!qxE*lXkD0of(cEM;(Y>Ify85zAnejPHuf3-0ERLoy)sDo|_R;F} zvG8hTOt)H(@2wR`t!L}+f&0^6Djy2>`Sf^ya`vm!L;&oe!b}trUvvsT%>i%UWyuka zNo~KWCqRKS1_C=C4ay+P*?4&=d0g5kOo*0Z=Wv#Fdude%PooO?krRGxnJ$6iR z8PBFrnC$cy!kZ11=-hlUn(WSh6;_=cgpZHUKOib4JT!b|6@cvK%M!f2RW4n8OI_c; zSC*w_rVhZ~5@?rNid$e=;$@TlWyU9_a5S{yNEqG?tFdCC48(OhmjQ2zalJ{8>IL}# zuXTLkoTY`#36g4ae*g^AE1Kk6cW_4SUbscNGSbVqA z9RI-QKBtlypY!47Vf)&GccIutr8%P{_;NamQ#VxBnsHRVxfbxvx+Q-5uF#3T2XGy- z+itwSpSoUah?J`HJiS?!0CePVAqAhjnV3>|^E8ARmV~*n3`ZkcgzBGQQ&m>V(L~YC zD4qc@FbAZZ`p6@DaQ+^o@^vb!daM;dJjoGW>so@1j9+RHC{VTq=cE@{{+Vx?HXCF20oa7&mS$ z_yrN+dn?Sj(CFxnPCm>y>+$pZ>O8&BdPjl-j?SD;lV&_i#iSUS;Un3g;n{_|HaF>X zoAJ}6+62VQ9%)T3l@g@FXyj#+Gafy5l8mOL!9x&3d9**hAoDCWcX>q`IJK7eRgJVh zy4|Mw)r?Os{CI7?#5xR@-<3CF*#^GX_T)alA^MvLj&%kJ48ySrA6Gf*4tcNg41B;q zxOnLVM|V{A<#6lKC@ZY(B;LX3EsrlcHFD|cybdn?{Sl`6nO?~`I(q9ZebLUj78gD z;)8NpU^DSZ+eCv{UZN4N+RXSz%?tKevD8dh0cP-@B5f`?7ZrP0Lv(Bt+X;-RXXe6O z-JE(br~_A4SFurk)JbIWNnDqqMWZFzQ!dLdsFkey+@_ zgeC=?l)8xJ6rr41dNqc}%crcr7^QU90pUmGlCttb4`+xFmud@N@6v4%T;d^R3#TAJ zec#U{$Q!Vl3b^IsvPIs#J-ED-_nff+CQtXoQUca|iDiVLN7QmrEpm{F?O01AAes}5 zQcPf{iaGZ#v}MiAp+`fx?+!bjj01>EzBKP_vz_5jF3zyh97=prx2OI!dcYg>6NTh4z8utg<{D5CzQFKRx1)`(YRe4FMEoGes58s?52_Mw_dJoEy-&=PC5=iNt zg8+Axq&6|RZEOkf0XGlCGkub0%q>vhW#JQHu?O=#^%7^|#n!#7wS|{4Qe;iBOsT8m z(rGr%8JX02`D|`>Ef~JZhZzceqGm$k~< zGL@J4&X>}@n4i2Nv4Hhp>V3TUOVMdC_eLaslt_t0dN+za%6_l+xlA(n<- zidFp}u6VnmKADhyepMw8KM)v;9H$>>K|Eg1*>=mj1zK}j9h{ekl zdexo0U9aI+c0Z6XG#*##lUt=eKjAm?{Z`@b@Ky?L($dwnaTE5-nxt*@R9pRnRpGpP z;-JHf)|_@@;)py2A-uuXm3ina(B){aQ9HV?m&iZPns|oE_HjEE0eHP$tH-tr4Z!*E zA>w;n4pw`HkMk0Su4)|AltV}WeZCWJu#qCwZ2fHegW?UR zaecIwxfPa@2yu0#Q$>RJ=y+&MBKALH^P)4&5;$gW?!%B)@?8TdX-))1vnrOV2(Z%O zbpcB}c`Q8Eqr75fs<%Mw2|9wh(^q}0bp#G#e`2-Vk;v0FE3^=JOnas`kHW_KTVq&vO#yxLs z@P(HiWZ6(5)Ey^xFB5Ju4&Bsg5PCz-)ASO_7{pU{L6OtJLqDk zxHy=vu1m=kWhL%qi1);yJoyESaH!Zxl2=%_uwqx9Z3 z(bLP;Fqvvs14$iA_=Er;N_KSFX2pslL?9CeT*Wh!NT8(<*cQ|J0A=jLAjB?#iLkBA zy|$?)EnoUE8+dy{r=GlW!&S(Zn<^K7>$OrMs8iP+RXR*}aMt4jU#7YVrbBrpH2_~I zM!BPa&cu-yL3Nc5lgkI`6t5F*B6fL8P=H4-OmCUcgN|i~h{$FMtl0P<3M+uuP~8V& zIMQ?zh6~74(C{6IWT{>ya`tAtEW&KtlF2l|Px^Cngd?%J6-pYDDIf7hF9jdbwk0*< z)B;_=Ix*o>jFpR}t(egW2qL&kR?3C5E7hE~O+&R!DgWHh!y!K5-HF3IRVw|CqboP$ zHYfa6IjS}sd>?ICGE4jMsDvh*5=VF|+{(=FF{6%A&{Jfo+|nXFQUV$+p}JI4IWk zpsJG2|NOvU>u6_MBrm+n;?!T0*b9Hoke*@6tmU~@{kY_}%ljXcIQco2ncjb_oOQ+D z)HL?9wXDiL?r@%2wJ-v8daOwyy58YBl!f6zerG~5o>zQwir}E5Iua=#YDmLwM zV<;kwozokq8NQ4cgWD&>B8{m`RLh498ed=#$}X(imTxjS4X?w6N(||upOMM2e7G7J z*bkWxbi(CjTgn%TJqaWi_e!B6v;JaI8y6$eI$`2su|)rn11s(n*okvq#%tWug#5$P z-}@GN<(TiZRVL$s3rJI{8NQ%R!jaB7=afKd0Q4qGac#?2&r-$8Bq5!&NJ2bL3}h3r ztijsg0rd>o0T2LvIV^T$r0 zVhm_3jA_WR&d`$hx!8xL0Xi?A!N5_aXG0{2WrJ|Kl;DW9H?XKXhtSM1r#tG`0o(X* zH!I{r|5WtGN$@4()8JGS)#SS(YA4Q2P^$!h#e>YB_Pa6pv?X=A7BHs|*f<);o*I-9 zB{YO8(QTyXO1Ur}()yC4f@OTtvnMim1jns@8m~6t#ZWM(%urkdxN{mkMFeTfjmg3s zH%XASHkT3;M=>p|)CpTkk2IfCK&HGEhlI1HL;UC_tgT*-bDBExcHK+2Fj6#f<;zqUjK`cZZc2W!sRVZ2 zOt(J>tR2Gz_ML8f?#o_nn*Ok?aD&@)781&_@6>7uYmU%r|3#i!2&G%ja++R1dcd{& zLaj~-mbu_p!X#G(6_JENnj|8wKo;g=hfUOUGScuvNdQ+dssMhpMh^IJaPYVJCyU0F zexX5tEKwj?P)aoz%fQuD@IYde!l&+#EG^t*{_kX83rNT|$)7$AWTA!t4UTS+CUD*_)*Dy4nrc=oD5Lkt6}Ocj zts`9wBreAxBm)B})`0P(TVZN1qcB+us;mvd*@PG9#w2_tgv$h%6(8!#lc-!;F0N{h zSCow6B28qrfVbfHtU(X~pa})y!HFRjk+;Q0?F=s}S|<}OE4Iu^kg4{U| zmt#Unb!w!OG}|A7ndl0ttx$#?2TWOF&Mi;SS+*%h^2VCN5%^GcU3X-(Q{R&=wM*VH z^xRdm#-NY^QwUc8t;#LBZff!<3(?qDN{1tWFhv2d=A`>93;~-Dp&N7>s|CadPgX1VpZT+FSYb8ZuF|(dNW{Z3rd9k^ko3rbuYHRJIQd0qiXWmf59At^F); zh`69lTTJ9xkka&bwXkd8oWsR~G~%)56_Mf0G!pDOdVYh7#-M{o-SE+0!anQ2ylV-sDV&y?cz~Dnixv$O$DZ7!8R`A0f!7kP#w6h~`#EYwyG95}O>Q#9Ll9^l z)6~z_*QS%giq=nAW`!)IU0~tcAyIj&t?6(4pU|pDE+X$}Y4s-yhLO%Z>bmJIrz&n< zHr&FZZgvub3{$*1qirK{&`~nK$V;w;saUs64arST?U=i$vQ`5Z9YMHQV_S)M3CsDA zM-#cwVx5sJxerEWln$lTI*j5v!6du_Z&V1?M!U8Bt#L2QQ31K!>^Dvouk|hCMZ3lS zy!gu6>Z%9@Z))YIr&1zvN4TSv1-Mb8&1lWflq71hUXzvTz0MJ#j#i1du;eitjs>06 zdPg7$-gD6U8!%2|#0dJ@=ZR67R2>T6o8`tbI(ba4}Pl#bN<=(PEL`**egZ^bEn4~8M8wQ<@ru| zv@1w7B4rh!FJss>cI8=DUaX#au-NE(9Mm1f;auLaoi2+WmKwe~w$O>;Fub^s$vU%p zfh5{&-BKA&dF1z}5JEUNc}LCeaTTx(n;|})pu!#=&t8v17i_Mf@eNacUHy2?D@Q{? z^I^H*^&_^Ui9_7(pZ=-x!C~#}kPFVZq4#GFkK^=d`LV9vDkOT%TS`W62R*j`TCrQN zar=l9dRnVYZI*8Crj(Q0W$ZdGy$`q670#1762doIw{9Jsb#GMfc4dcsw~jv4(Oc!W z$~PqFV>o}4?-~0qu6Q(lM;BS;4tI9RzJV1R6YveNpbMs#)ou-4N1kUGIrI=kM_Wol z;pXprS?X-uy&RtwoopLVBF58lXMP6~-=rcyj4i`77#nqYV2lLQ#!a<+c=#vvv^h82 z`BrY-#nH`8<-g=~hlj_5;vdqpNJlsSBwm6jKF@!{ ziMUM+x|>H|_0c6?F{}bVL)@9PrIw%isZ)lUH*;2I5jXWd190;u z0b@WMcQxoY*y(f>9tKTX;g~u6kPYM|5!QGy?RAF?ZA|+%Noo2d-}S`{cUeook*jmC z`hu4L9p~`yNV}zUpLq38R+AA^a6d=uJuy7o6bR1F-Qjhj?pO`_W)WCpORe&76zDsup}tdR#&#PX;xqymE3<~DohK?a z%gnD>qs_d_s$^_s3dx6IwNea9n%vPNFRmHS+=pkzn`#p=N*?+y+pTb6PNm?R((^3K z6C1%puN{Zix0ufUkB`;I&PWkBPtv>Y^RExOtmMJ^`^$`9uW@+v#w`s9@63{6)-E2O zrxrJbH&t`9Kf0YOCd&iyb=_;9*Ml+YS^pSJf|Rm)cy#(ay{*hk1YTU>@#+@Z(h)Y^ za7(x0Df3v2Ty4rr!r{sz;8U6@T^S12)sHMxJMWP*Jc=dle3|jdwSAUZ>Dda2mv;r5 zcz7Ogz~*71AufbDo7sXGv~`NvV<8yEdl$&HKWPbq->A`ApY7%V4&}#JSWXJxE`g8ECS$` zGVyCj%}LAo29}aFLjNI6)Z6*bjCf(;o{r`M_5jX7d8ENv`R#+pyl`B*JL*x_eTnDx zNLlyiZZvCiNx39Wt(FcSnW`LLU9ok}VHWn#jWes9!?J(yATE{o2Y2)>H3u{^Bk_mN zo=uZ#6B&HhZ4{19zm0Pxrkj_SGhcBQr-yaR@l(U+B^QMzx>y?5^kgMaV8Do?xN7E6ioF3kz6HYr)< zT8*21S6@b3<$&4PD@IZ1Jm#YcX=#G zHLV$ICVX$h46DS0faA#%Yx)S%S_t?QcQIT9VEZxxs%i%&WzqD$b2y|nX`Dp63V>M3 zDfdbmJQt$phzn-x^pb@XzSO!DHVzyhV5@=&S!NeiF0y2IFq-UqZF5L6#VAxR6IY+Y zJ^d!X|e4j-hfT zEA~@3brIYO3!#)M&c+W%=7_I=l!>lcGOeKFYVRYV$x<%B&KQkMB)y>O$dE9HxOVX3 zE$bGGZXYEyIm=sm;aIzfTM(=k*Q|1!T(O+2LBKXk+RXgyy_D)H-xsw^3mIQ4|I2?{ zYWuG^l^0p`Dh@BM{1sls*|Zl}zV$739leV4t@irM({~zvr@grHm69*6@G4HeMDv|X zy^?cs`~AyS`~4SX$QM`M9|n1O=UbotwEhFlJMSzwKCRbZzEUsR3q8Z}f`|0-ogr(# z|Nf9K^t}K663hGTwU>9EE-|%NalX=CfBDXL^dgU54{9&;>|>ed{VO@cD=+lKu6et9 z73b^iRh;9Dh1Y{JmiePr`^Afw_|;c&S}gh>JFmPJw7iPLI-RfL{BWPI;`~Pc^Z)!Z z2tx6ahUE5Vwev?o&%20#-hdEh8_dgM{uXIm`VTWA6 z-NvWPHExo0Pj$V-J-Mfna~=PbQz0C+#bUo`@I$cZcQo7`QdD!LKbFCqjp7I(#_YYY)_K;!2_+GHbwkNLe-txtJ(u)1+IQAVc4I2WHd z54f|_BP>=+KiPq;%0cLV!j6bBQ7*R#4 zHROe%z?3G212N`J1uclQ-DXUN-34J8ay$e`5Egh=%t3PE(~`|>)-2X;&)fIkj!i}J z6Kt|D4I4n~akd4&_wNt~z>Jq2P{;NKo;qDu50pa)-uY%6WMcWL-FwWVJTu|iq?XP~ z=fqNj??Fl#9vy3RQ7|FA2&@Llm{ni%#ACK_M?YaiSY9?*VNEiJ-S7NjQG2G3k-uK` zIxb?3RN@?t)E`?lgx+~YK*6I3)G(MWn=0?;UN-LBUoYlVX_Jom7`P2CE^**xCq>yr zop?%Tta4hi@bV05MYdGgC3MrgRTC0WiU`xbrQwb{r96n|)T*dcR64i^rOqYbkwFWG z<0(iyJ7SP2BVAZPuS=Q1PhhC(B`;6b>^!jRDxrpp0?R>2aFHciixQ&oD926j3KR!b zY1MU>rWSQK!`wTvKXC_sWYCC-b`az!c0Riw!}sGOFuzfn!}f}{~t?Sws$VNRY&}# zV7@UW^L5sdRVP~{8ig;4z=YkjcE-ygRl+=|M zxL-~8?mal^pQboGh%6YkZ2(eKlr z(=#qS`;qLkukp*AI-_B_zoiBIXlA~@Iq4$*i>G@0zuN-Ugj zOqgsj+(f(?j)fnxoso(1z=z=MrGD7)HilBrU2e;7+m`I19m|BsI7G&0!p`isi3+Pa zU65iLs>}*=CO2=Ey-R%p;U~PjT<}eHp&lmwOnX8_X%~jUCXmz6Opc#p52Km<{sV^1 zhFPQbLEI<1v_ysQxH$VCe~F5${9IV@t0?%_y-R3iRm}jS3c%P<2%?np@l@1`%@sM& z8Af@7MyUb3mCcP)3j@`qMxsKSVvPg3WbmyS10&hFrmQD}((|V^taJ#NtSFd48CJ3wiWRXQ0Ku&bHX)a3Y7pjsg$|Xv8UJxN0I% zkVd2}#%MA{1|SaSz^;+X2AC5{?ivoN|DV5Cex-^^z}h>s6Fx^~Ji8*Ayy{ve@slOT zv_>`Vn~`bJ7mPbRgGvSDC=JXdse{~Y;m_%jDjuSe1rJ0q?2ZJ`Zt*ejvBe-IZ76$| zkEx`28b>L7yxpI3i6|1^5Ca4om4Pu!6-EG`W8@$H6GH0}kW@fvlP>^6S;YY^nlT0&`(outz)0C>40#2LC~vdBK1 z5pbyh6RsRvI@kVXP1;H2Ds<?PgC>9TWknP9;Fn_u~HF0dZ_`{ z9;7)O8xM<>B!H_30*7FLVXy%Yu}LMqUV>vP?+r#(PL8JqsTuSXI9I)TP!7tU{n~Js zCmmyB6>+465cW>FWkarlQub_6R?bqI?QmYh)SMX0ul4`oS2XI2rRUEQYeYg6p(|HKKf<=-x>b_I|iM5GONV%R))F6ag| zz)m|Lsg13HEttK-MUrby8i#X*M-|RLB>J!axOC+WWSt0CA?P?TX!hEN37{N|?ZyU~Ob0c1D zyK1q~b*e0Y%a^cET(1)iV8HBqzeQT|znwY1=|PADtOIDdRXW$?YEgrrJ1jeS=^l`9 z4V+Up3wA;0H&qltgFRl@Wo#C%p{p=CK~b-+>Nd55ymVst`sEoY@^!#j5@S=}EBdc1 z1jovB-e0;+dC*dDfl*K?Hgt&is3EHh$Es8m!kF-}REFg^!jPPhBB9}GpF;;STPeS$+rk350p+1LF-0yMs=8tm-q6dvR6M|Zm(WFL zA>ta?^|rI)*OZOiHIxoFlrP7qLK=t0H0W6JboUCbTX!Yug^DQSI}8Js$UPg=^O4AT zrbEWJluJ0dXVYxk(+i%EloFBXdf_Ey?rjZMRnnA$u7ymVmLpS**lTEQ)6Asy%(B)5 zWjk$-5Dw*|-@~~dM)n7ZpbebKGOu50!1f=SyDOUmJ`ak`4@YV$@pOr9wC7-` zkpF>GltyRT&AW_{e}kdBHBHmsQFk;d@Dj0Ui4vrRcMhq(v@lu;+qwx}6rvjJyhNdW z9S8Q{A|wbA0@sMIbPmRf9FhpEHjHgy$DmG-u&(pc&h2%=wt@DbNMM~`C`nZXoTZ8_ zS~c`?{F6zG2;>W3g^g-z#B{<#)714mfrjQ+cKC-jjFGh(7da!#F3Run*v*%|#CtkN z-90TDefjZxS@@`&a>4zWUhwr_;SOBC>Q~<1be=l3yB)GK&g%L4WYcp+)%Rai%YJm0 ziFaC23?zixFe_y$ID@aTKmI5}8Bm3&S0d?XRbPF#nhWOYjX-`o?wme(`eLZlJk&R$ zeBL*Arp?q%$A`nM&C`buBm6;-FgC7zqQ=PnC+OBM#m8eAIJZ)R}O&>;ZxV+%tI@Im|!`S=BT9#$^ zUF+T1^Ze43hC8LlP-->Nn(}qK7>&$hRDx#sp*1y^PQ{GE!zq&%vaOThY0@|$s*FZN zL_%8Aa~YQ%W4+idV@FnUk`%)LLTO|jb`<`e*;U;QUgIMsH%=SvJlpBivSQ2W zd&{XbP9J@9^DFlAyL--$RNvzH)u(rUe*I)~a`Z2L(>A;TC;ps07+===yw(rf`bUWW z19n0kgT1B@!+6q$fa+PD- z-1uZMHSqS--ZdM&5z#nj>ZeU+$$%%LmhF;3S^Fb~a9~W{W+Z6i)a+{Hx2c>Ir|pt^ ze&>zfo(eh@>>_4MDekz0*)@Vsx7wxsb6+M(Y^FJ-Jvgw^TWd#v>0 z5Cu> zyZs40{?Xb?w;rBo%SrpFt{!i-3rY*VuvMwGebb$hWJ|%PbtYh?7&N6_!!WE?&aJ<| z_lEkvnj9QQ`NX2}JGqK{<6m3hx{EZiB}cVg?Q)NEyLvk9<%I)<3`19YKe0J~{8bLD zSAQVy@yzk@**f-_Y!_-tX&%h|5?=E36Z>bBVO+lVNN?y_-JW9F^Q8ar^v*PClf-^J zn%D#JLyi}o^W8oh4DXM(>v#)1JQyAmXcnG5UfSuq-y5^pnO(je6N~cMGa{|WPM1Fxs2XB+u`<(54eN51i_?F%`wyP!RJV)nPbt@&_F zy`iUud7?Gw%xz|T5bBp|$~Tj5ZM}IN%6K|fNN~@Ux2BPnmkSYG-G{oaz#9~Woe9#K z<=DAl0P_zAk1D*C)a>cIV;0`+C*deR8+XfG5&qhogI@+>IzB#UeMt_8*B=cbFIP=v zPERjWn2l78f;?+%M%}#M>zzrV*=#PE@eSa8Hk7*fN`Fe2{+}l$CmoJy>#w}0NzhIo zeLr0@o+g-T+3!UV()Uz)eI_r+H+lgSVX*fYHXic07+luxmiE>wmupGayu78_aQ{gX zuJ7B*j#oeN2oi`l2)t%I6O>=8C8MNAR(JsnMv+-NgU=;tgSKNuq zop>ngS8hEyIkNBn-<-O>e!RV-8E>lqtm!>B1e{%%!b~4ZQ}EU{gl~Q9Li2(akO}Mi zDxcNyR@0NfTZj`40SrRg{^DSk80D-aEH&yzR4KE!FA0u7M+y+iq<0~{=3gpg$EzOr z+g~0t(H^%UgaadEX=hX_@S1-RSWgqhc>-Bh_wSoH%>oyHda+Ie&RH{ow%rJwT1yYu z)BEy5=ondZzJCmMiLT=bADEZmEp9HK%@wyp=OaeA*PMYZ_Pb6KRyip7ItyfNr zy_8$y4#6rOJFUF^a{rONlTBaa*(QdA1&Aldf#5+{fW!&gJx9&0|j3^YdiPgDr7$t#j5t`YQx58VTQJnulyLg5?B-l@}mzOK1t@ymm#MgTNj>*gE zd+&jbM}E#E=PdA8ZQ!bs@vF1gK%usKn;ibKX1uNQyDI%kODg%(KV0*Im4?8xr(OkV z)oUtYY*UCLTsi*_e<;lFLbCs&$9)iwJ$MD)BGwvDju56OLYF1zov4VxSKPs}1LjFf zcg8G%N>_v^%|1$G6N=-zQnq8|!pDyyRhas!4QpZeM+}50yafFH{nV{u#+R3g)x}0r zoqG{X+e8r6VzXz@#*{r5NtCWNzWA7g*aNMZ-qv6fw94p-yo-xMrzPipK{`C9wOF>( zJLhIU`GdwhvBA~M+b?f*(~=+fy>n0H@71iOOBEb`Vl|}YUmYhtfKMnRjJ>(+eQ7sV zs*~%M5b1r!d&1zoLIGxxD88&Hy>YQNY85zu)_Bc$9uQnxAYSKK-dAhOB;Ln~P=Ox? z;Y%(Lgb@l>4A)eP#9p%v7tyURFU6m3d+5%s^V??V*Y@Zu!(KB!DlTT(18mET@B3M; z)^zM2pFO56X7U0Ie&)gqZcy9$?Ozjja_8#1HgS#8CR*{$U!rkr6eAAoLt3>#ZT0zb zh3&=g_7NfnKG8`O&~tmy@!2qn;Ht*KsySd4+v0lQDI5`|?JsCC5eKlw51`fHK7w@) zhGzi0%F9czbNjA1&3G;#xg>q{rLt;wADAcR$K4r$57=r0=n(mu4HA!~rHR5HJ?$^S zWF-0qK4)ty@?(xd>Dg&WE7TUfBto!P=Cm|%%?r02_M>Na&IT|oyIgA$tWODb8dusn zAlB=*8C>wmX9(~SRnk2II!MZl z--v>L%|=NYd!SZeE@uXzty_RAkZ9G)v?JF`%IM52*ENl-R!pl*2$o;vW>+qj2dP4Z zk7J-O+|YPW!XtYn_hH9;*PW1?Ts$@i?mUnqK=_20mGc6^gdK7WwPiEq088NaWSm0-)SM-PTGXRqLf{6M)pnB?Be1YYkqg&{ z4ibsR35Vk+zgHT5Eh#Md23yY(tYqBfqHNyqRa3nL+{F|hRVrY#4%AxFr9JGp>+2`J3Ab+08E5zb&v1<1^wt>K_`tsUFftUq@$!< z0ZNP-1eBE>F=e873MWMK;$|;Q>MS1f5W!ZQ6rQd7jHX9-=C+)7C8M8E^r+04+XY}3 z!Mz6MYJ}OJ`lD8xXof+XXny6DxaeC=wy$^m8&~`+4V!3o^ZRVRK5xa@&09{EcgXbZ zFPaz6y+dZ2H?DwhdQoX@$vJq*zWrrgn`jPR@K*1!x#}BwrmOB{c`MFaZynXfo_YJr zm#sGRP@2s%Y{gmHvhN#trs*21Ejjh=Ky1b7Uf7aTZ^fCttjo)OFMQ*zI0r9tkEZLM zs7JrkR-BW*6=(WAAAi|SA8^U3QSC#)m)8dzvGZtc5A)On(KH3RE;x2XN`_Fd>d53l zsxnlTe3YOy5BL-mzQNN3S&=66K`J2dlcq_Tm!!{MeVNaJWmB@C3-0BB-T=|fLnVVA zU2(<}-ZJshZO45Z6qMGtp9m%-T6li+h@*1SMj90rfVQ351(+lxn47e2yeK;J@j7|- zCRtpW-6Jb~@{S*HB^LYCBTV|a_PqBu&Z@k!JWw}?xIshGX0*jKZ^H@Zb-b-M>j;o>cb)Iw|`a!Y?NJf zs{moso3<351Q&ZJObcF`7MP4$H(F zo@$jxRfew76tyE~s*2fa!at*A%3J7U1<9SOv}rU;{%8PqZ$?|mbh5qp@)w)c?p~fz z;BIhSq=b|W&Wu5^u=ip;##o2UXb46=dNPm+PV2&PH|T;X(?)v|r@^_OVyR)viLOk# zHK))eP4)1AYj=TNI=YHamqwP^O(756PHJ6wH!fH{&EQd{JVmRNP^b zzaXJ#Di(NEN<5+Uj7zu?iw;Ska$pQ$$&Or@_6nDmNVTC#OGK23Hr^At0-m9(aXugW ze-PB11sC{QuJqw2Rjqv&YQmH0MFw)HkY?~&g7pSo1L{(`FgHQDSF65Hw+{)t~XhZnI+%AWaER(q?`m<&_rpZ)#B_yB#d1G3(d(Mq&m;&@(pShM2 zhP=$6Ud&OI#H&l>YDrl+80Z5^u~@9PT_0KcASY!XD)YoNDHYbB6f8Zfpgx&=rbctIt6_1tRXG_j@wz&|ZS=1f zWtx?f?K&~c{8m`5qt~y1c35z67hN`$7ELJ~Vd$_rK$|r&+cifOq$DZFpkSEsj21C0 zGkkVJ4_tIdIWH(T{oyW_W)GMOx^+uYZ9-5G%CkP@)a;-6H}!q&5a8eePucWebQ9q< zqgQY9d^Jm>x7!j5R$9{eDD*;VLx?)-43nd;gwzPOk??+QBxQFIsBBLP*yig6rfkAmn&4~db_?uwbgnSpJ+g%Qp zL7=gt1J(1u(2EC;6x^gI9ZJhR6E)*W{N3N8kAA5#Kn;c-J484qf-21dqgfcMrAv_Y zU^X4?0B#b>qI>GbrFEI{kx~%EPpCRC0T7jwadhDWY!zmDY?ij;jB2&MZ`55^vG?R1qt5K1t9H`H20Xei&kTND#Rd4O{}lGH$nc< zucGEAitAIr-C&hlVyCy#C`L`n(Ch(eRLVwpW!ugK$Onl8?o|Y8ivv^b9ma*|K5^~Q zoo$#)fmQ`WL*EcE*_tO3ft&oamFSAXj(ALgB8Mu5*h%Fts!lCS%%$Lai3(3rg=11$ zF?KRsA3m5x9S- zwdMvyc(nzQcd>Uox3kN(vo_9dw6Ih`>FlSUlt2^HMPMi#z44kQ6{J9hqL4@+Wd)jg zdm&3!<|#VJ0Iz(>aG#58Vh9(PfAA-5OsyDq%aX^0D;mdMtg_>kGS97}S+VZQ02+c1 zL;>SL6$e(byS56@b22zN0G>w&9(j~r@dsuzh=9+71ZoR|*vUM&mmD>5o$@gkrnVAd zjBHny^RWxfr?TrRsx<}!*)HsQKqN|183#mk)**omubi(ofrELY7#P%a<-kfhY;Y-}&Rk(}=sA^QoUV3UG!X^HNBpBovGZpMdsRTzI7u zDFAk1=>#iBB5+cW09R6W4N(QCwTrej>*oSpS4@fH+PebHEDP_&rhY=jpci%da~LI{ z9#cjXVz%%_h?z~$6$p147j0O|BkO-%*|MGqscBx;HSV(uOi){j4b{e;>?aBxAIl7D zX>Wd=e;aS$1zehFT<)#(Y!DDyaSG1tE#a9vG{#mu0@5$59W8}IW`f1^(DN=Pk50AO zVlhNKYq~x`>S_mYkz|QoOT?9lFK{SQ!6xt?I3x+8%7VRE+B6HUdm=>_hJ>LH*@wa6 zS^6qaSX_D_aws)nSHXsv{WU$FlyJZGU!Y+t!UkIw7eJW{uXID8gZRFFxPF2RpNx^3 z*_$fUUI?T*k5$bK-DKf9Zj*43y7oH2lHVvi(}7t)@00<_EXtX(3<4}al>#D3K+8^o zAQp?V3nW{KXK<66O6owEo8w*PrRjs$CAvAG@?(`kmd#RE4^a~r9Wl?jn9#!~7RJ>oiO-7+ zOz~>p0x=WY85chbL;XNbeqEsV%n{R)#a|iq>dmtI&#v?vR-$_;`IGy(j1<>E_gq{k z145arh>Mc@q)7?oB*0yH7VATsIxhvn1S_nhfBeY)_P=j;j#*rIO7gR|GJ6^MotM^Z z3i-5s>ZILkud?6ii@d7v!S1P@y!vWYtj#*kSzyC5{%QKavGS_ZuHXq}$8{rV*{|nT zVWPJLq4Oc>lAvZyl&K0tO+kn)es*H{FwlGu$S2Fkw9Q?4kF=d#?Tmj~_%8V09Vyz> zwi%nmoO0IE7@esqWlpLQ`r9--G{>JCx(!AU7plQqZdFgeIW{2Jx{7oN$^cl#Ca?<2 zi{xCN1_bF!my?%nBlN|UXWJpB%ziv+u|GLK(bsW)Ogu53zVZY77iz^YY)}05kJW(O z^50AJSNGTi@R0CRvnqVBd*DRj-f9#6Qj1UNwaVUB&e+_2i2;E5;wose-(|Mrv2pcD z2>=~`8-*M}aVej23v3~DrlKc3r%#adjVA)Y$hV3HL`yTv7CS5w$!=#`j~#(%12V@n z%%*rsN#8|oA}0#a{jnuA<4#q`o5D;31~o!W0xqOs7*Nq#NDm^v4e1Cr88r4PoNY9+ zG;nz0jJvRbZZyB*P}yva2TW9IjUYrScD08E0W)yZZ%vzv1IaX$&g-L?DyLK za`C0$4At7ZSJNZ~!;u8YU`7zfJF$`XP+Qs$sV$l*WWd&RA$Qt#4`@&l(moPwRA8x= zL8C1UQ#aob_is-pZF6*~ZB0DnJ&s0g7sJ`vD)}+CFU4cL@DSU6Puy<}|Hpur*VcJ8 z!EZL-{ANyn@)o}z|FM+Y*S+oDc3Vm7@oiM}a2pa7 zsFbFHy!cRU!HeqN4jfO(+7kQ@KX4I42tR#Sb)KAzyJ2L;ufLnr(g-fm{d+%Tti>;B zCU9nb>5X$WYt1bI!QHzL-;{jA+d_Do$4d_%4uj+j08&Oc)biD8_yR}3if*v(YXC5T zUme>(X?B8mfOS^Gy81q-xfc9M&LJ)A^?A^JP-%v7=ykT%y=cbEj#4DTJc8%~$Im1mqg&E4&3H;{ z#uvWmrACvNlat@RH8@|9*qA`S@$$`Y@NkJ>7;Wcu{gK8l9jcacys9gA732 zAv6FgYbB=};0RcSvVfCW;f+ha07rDHkmf*HZ@MOCqoK13d_l8uFJi0X=m73xirLUo z)$L-ad!F&;(VwRux-_>Gp)vpZ=>=-5BOj9+NI7DIW5eq{6 zwvN7H#8bA<(J5n6cr(?F?UoGdi_I`72p5}PI;WgaU=|tf z@gk~v#{Ru!DCB*!8OR0GBwn?Y_o7&ec-&snP4$p9zK%lPKXfmV^4P~i$^j8(fA~Lv znB#6Qy(AKFt|bXPxCY?vUA6vr^)Xj-c!3Z*X4SZ5%mDut|>vQ^4f>?Y6N z+(3E_&7l>dAT4mzZn2moY?KIn5yxEJW|_OYG%<&8C{AV(v%6^XCJBXTmUiv2dPHHW z)$sui7wWMEjfqTS>@Y{{SQ@|unL>3@vw{%U7*LSFQ~A6?i?m<<^M%ZXxLqbpg!=8V z&8Ngt!G=6_JyI3ct}`jv`7p9QNowbN7NtRgY7f$Z{&PHsgFnh6fPtJAAgPHtM#r8dT7Zytkz;u}bcx zSazo@Eu@+#g>}7JusErHUS2Lk+KZxh^g47YPtG#aE7?ORTM zj!lAmW?aRh8}GP zy5Z&B>(cdZofo~#8+sNm{jE5?4e}yyY@(UlGEL^Sv1jtWEok0ElljT#w*}REekfgA zlny zBn#9mZ_CVzL_Se3^#^3Z#7Tivkd@19kVUezWwlG9Dk+?e3^Wz8DcrI20C$OS483hS z8A%*k8o{)sjfLl|JM$LUq>!{^hsgR9TM|Nd2(>CE|=fEp@UpNdbN9*$`6h$Jc+%-R=bj z5(7`8PV49Maq>E%4Qb#cEWOf(b+4@XF*I(H+E$Z=4=OI+l!fN*q^kK?OSF;jqorla zGFdda2|FQ>&5kUdlDPqswR9>GU20CZIG~iA8KT%g@qtT~rvg3*!SW%I@6=K}W${*d z*f4S30kl-LE~m+}cM}i8a+gR!Ls1ZNWA}w(OkMz`hbP$rQOZR3FZ{A%rOWq~;Ys%# zi90l~3R4d_!4h9mQX>*`{&8p$3OuEuZ^e}b&RBEefouUM_c;_`X!?ncjQD*U;VV53tTp&2L94vAcmbDAvFm>d??``6rC{Mnh|^=+x3B zB_*@ms2rFS5TQKapmTD``5cjIxVFJAcx2=%jxBQ2P!9*}BF)``_AXCYJ)bm~{zfK_M?A1~rPfkvX&y z_HigvJni}rSZbHL(+;I%sVsDKMg55>RYH?ivxvM$7os3wy$pBcn#O|GQP2G* zgO`3Ns`?i+HMBmD-t1%!Yqy*hPlw?g?UNV<_L_XOp~D34G(Wguh6Yoe zD!`b=*e25~>z`WFd^_JWQJq{lt59H%7p&%!CpOTNar@L9(aooG4EbAV_D_%Qu`{w;ZX(?k7h<#=vPN)$dXDd95sQ zk{Eiksitit4t%Z4g0R2xe`0nGVXMx>L8cgf5QO1x257YbQ&CES))5_*(kw{@(~P6b zXG1Pgt4tD>gA+{B0B|1zF+f&cVvK>PT$u*sCP*LIOH^m1ZY{|RKBR*bYf%PS`OT~= zu($?73gcY1WC^=hnUq-UT7(G8daMhS?@Su#3?J;%C7Hp-==QL^2^Sezv@ zS2)O1#JtGqF%3$JcRtZA;1DI&EcmhUZh&;YM8vE_!cLm?o}vrtG#ijQ8ibT_Gz|=Z zM~bP_p3(U-h%7@BU&Zy|G zgG`bn>?ARcx;i{h1Bnk%(b^ETlFS3Cey9ihI%p9NKNt4d^59@5Fr+4Onf5V|haFj6 z%}Wh<<(3^`S=1BBJN>19xMC@Nu9SBWxx{plX&Ss=8Z_W}h|a#h__bL=DqX|--J}ua zYv(cBBHlqdXNIVA`F^ZZTjLsZ#=x5TE^ z(owc#`b0VL%E`8fn99wvt8GW5Q)c0kc{MzeHMQAcB0(KMVqodXg0~W;vV+RTfb*Kn z8;$Q=6d|P7NF=oDgP)k^`Fe*?erNkbF^ELmGp*AuuKl(D3dxEdz!cO1B5ILEiN!BV z;L>ae|Nh3lqC7DIdZERYLva2T^>bI?%0b8b~4RT8B9C_#)6F3qM`gb1YTAWCPd zYssQH=;K3`rJ$tqNy{GQ1VcS0E15Xeu|Rl_7Lw%C$O?}B!k1=h6`iPaZ>(mfqZ|1g zba{?m0q7dUD7_D^n^LNUO}JW?uL}^{1$JnU_F9j-XTTW!8FRhC|HH#rGPYA9TAy`t zxPY!L#Q$Y}TX+Rl0{DkWuc)(<)Th{LHCY^#<)g&UmqK*2va)}lpqtEMp+?5XWj>IC zWR{@P7Pn->O_|hX)QQE$vM8^7)4dcuX9sH$n{wEVyc^W{KxFS>7gj!>n`;14lG#;S zOSl5QIAswxGVgSP{>1;+Y4STOJ@oV(#DR-`Lm?~=wH$P6*mmaXfPtnZd=BeBrK~CI zrBOWxd4r23;)UUELR-2x3+D(VZ1>5WoK*+(e3`R@yol|>(uYHQ%T?!M(a#e?^&p!~ z%dpw5jOHV^E|(+A1j~c*{Hs8g90;E@`-PvVLbejBtgsvh*<68?Kn+Vjdb&VvKL|cV zJeyW?i`E>UA;C(7DT;6y0Va_}72^vD4if57B>e#u#34wt0999d^FyC{fEJ5#bj^tJ zUib6DE;md5IxHdL6(O^vP*s?rspmK4Rj#$8zxS)QT0fXI71;UTP%+ESXT10q%ZWVZ z?;08!7PHyt#z6INTZ??bEf-2{FF2HiyQV`?b=4D`Q>7Ttt4s)A6UDudCH%Fk8_M1Z zKYTfg_u2Jg+(SB)T8`loRIixYO^g2}&CrQjOHy4%KBC2n^mXB8&lIg*FEjV_Xz}|` z|ER4ZxUgB-%6^n?ovcuiLYI!5P-3xE15OZ4TsYxthIrK7&UFP<1jh;uR2wC2Nd^=x zoLo#M$0vf4@h>Lzr0Zd}wQymDr};wjBKRVYNv7q+4$N49_zwncZ+ob)i#Z18DuQ9?OaJb&5qPX9 zzqZR!{e2ti6lvL!wMn~IFR`FpBCyLl&TlQ@)a-9Rw74C*zo`9BfZjQ0KUNp)oWQRG zA0qin!bHKX20^QW^6Mp@**}XAavxE_DcG4MWXiZTP=h}3A=+$5qPXXlXBgaUa;&^B zJt5Tw%@sy%ix!?fD1>6L+HhNuxf<%3G>I6PStszWI4cnR6ghHzx}N7z37{kl9MMI* zW;+cxCq(GORZV#gd)yfJ%WUgp@(^@8yKJXPiMQ8R-Y#hnK6pjQpf6A@FDU$Wuk@0i z5`KsC_~z2u_rE}_R|J(Bc=F@Uxp2KI1WyEBa$)6ma(-?}+nTI66SuBCJ>81G9wr?e znCZ7$)f2N!5lt9WxD;JZGlAB`2~QKqiTmVbC7wd{Sdapp8Suj}V#Wi$-o3;?J@9+1 zCEvhQ1dHpG-k(xz$AteJ7UP3lD;fp)y=>&`)BD2^A}SEF8tAg{dr7e^Kcg+&?w?m1 zwvWzW;XOch`sndcm}LoYw$%Xbls2S&=BJ4F?b`t~w&L9Ri5T>V&3T1ZSdUAcf1F!m zLH)t6!6sjxvF2%dn;yhk2kIjPY8?i6aXZ%&Y0Rk_uSQQ&?~vK@R-Bw@7A|lioZ3W_ z^HX5C%cNmEnVwSvPghtoJ@%8ZTSR&JWb&_L#XZCDa^a)DMH{9E{+L2+CT;ZZo(XtWU#PqcjeoxKHnWm1e9z zzJ6lx_s=db<>vhKoip|5>8nAU*6Xi)%SYnBzW)v_CK`9%HhA7o@=n@+=$hfTnNAAj zoj2-TA&0gPrN^AWgKd2&ylD#jul{RnKD%8ZTdiJxc@F$-A{;8p%m)Kl5O+IYXDYmso`B1W z@er>Wj}Z`+mt>|C8bS$_Ak~1*BX26uEO*j2o2DN42xfj`=I^HoG;cs?n>5+QcHFD8 z7efzx)FuEfemp114>R86vj-k&UwwEE9x>9n!N~hSp&n#^wl-H_87TPbNigHj1~_K? z{pmgR=>92@6!z&^S#1?~9i=@U-}=hvD*LVbiFCdGl{-o4`}cXXi2eF^Ob3NR$>y_{ z@38rdrH6nk7;9#{Tr3b6sv=n_JAD+bvZ2=mCIHjoPfl3N+=S9qDnJNUcGL6xNLABt}4m{VXQT8OQ#zmOkT86>zNAlA@-i>%@q_|C3*}|M<_c#;;1u z%UNF1YeQx>6nH8G0~Nxmm9oV!6X^`5>|d%Vs#}`t&#?Spt+z$qJczQN@2PR zPpPS6rxvs=Bx!D$6bGgtYs_#ECQ;UH+(!vo%fixO);cElPSsiVFf|wlI(29g@2Wt; zl!{tJ>0|Xw*P>eEZ8N^py-F|~@^al%Uce>ohAe;f*T}2c zM4Z1|dB$xDbY5V1)J~!vkzKB^L=SYdpn@<0T-yb(J#<>)^!6+@lH(#ZFyqlT!F} zeO9>HrP@Gk6?l38mmG!LJ`i{*s2BFgCu+ewEF1Xz!uM*%SJ$~fe2AK>8l7xqNSfhX z7s&fK1+dBP@I+Yibk zM(?Gy{ubnnZ=%_~_ZXLtQ`e?jkneV zj|lmCz1#VS)3$5k%~<2XObPUV?Jj~Dcs1_Ho6sxqp{xh>s7SJthYB>%DqnFKoN`>; z&CG8yGd*v`DNgk-rH<#3TX;4g4_;Qvaqb;EGk!9*zgSQl>v2R6!0A82rzT8+;zf3F zq1I_ustPq;&U#mhm0m=fFD7BDQfB-{1^Y0lpJ(L!^;`8-6(8$@&WDb52ju3=|wW_D6f)$H>&h(6;<3ZKUq8YXK@1N)zIvXi+ zDX{HweS_=}3(g?$CrSLvI17b=ZN-1)gjsQ-uyt0448kUrpkH~_mlLsZP*mh;i@Jnx zmbZ`D@XN7|PVRRq13B@U0g8x{>2bqalLVfsXPFpZ2p`1sth#D@Gck zvl4YU>R+E=&bx=!mw&wE=Ix4otE(#@XBY0EmElXT`V2@a)(Qp^j~wKJD^=}}dg*KyD>42vK`h^D0S zW@8~2|AT*$%`Wa-YKhwQ@{b%~Sb$;O&`rB|8TwZn``C4tkX>RJgtuF@tmkrDN-$mX=FLF7XArh!@BTbUM!<(FH}+HnUkT_P>A8GrUywbPVUKJErP&Y0*yh*n{8 z+#7~Kzz9Xoi&wZLYz!$JP<1+AI65FRu_>Pod_-!EQ2{S zmC~!2*$y?IhS9FYS11~7NZaC^BI$|sgoBYJNM*h)v~%dX`wMcms2hF89WOIS15p{y zrG(*?23;zRpkLm*+0$Z6+0wbl*jrM_wmJ=B=b@a-eF8J$DD?zh+E=G$*+zcKN zK`VA$kgBB)AcaW~%3S?Lqaz!l$dS&9v`ug3<-Ibhy1GW4>w_t?ZmjWJkK!v6LDV+F zvq?fwGF3p~6$Gm;Y8Ty-OmmfLnWQPpM7Co@^G|<6y$mc?QLm|3KY*5CB`kQzfKWj~ zK7#_HdtPQdl2-9R$;V})%eL%?Pl^XpW&xoz!*|M|&j%8EU94!{V-#=}m-N3wWXJj$ z>6Ws}u>1TI$|9jvI1^lD$yJXF3r(b!kVr9%BY0LA{zHTie=ZfEIh5qiXYD1B81Twx z%Ck5;$(E%gFhHgU!A);;3bloqj&_4&gmxx+c*O+CPyP^@rLsDSXzZ)Wswu0szMc^N z83t4#wV>yZ%XJB^v(tbc%67;|O!X%Sp(ti6zF^}ZXJ`iF;GNqb4MCZNW0Y{DSc-MH zp7z5oiylm4L7imX2wa5gk$E5C8j0CanM-$WZ5MbWe0U^Kpt7>6qK>`@RCBpA=>hkW zk(WQ>8jv`^k18og3`x<5&<4{HgOv7bKVvmEcV%A^TOm%e&cQr^_HwHus{@3G$W(^U z%E>Tv(LquhLk-BqASyD8SVoTT6$f34iLx%SXBsncl0)p39)`?iF}DyZNUIWA5}5%Vuq%nHHB_}gih$=cdr6A-+b>?0dH@O_yp|%$ zmi*69W-3|20siqL`>AhrntUJxhrq5-r>YSJTUDighZ5Yhh*+bsp4nZ z_SrIL!6F9%B0Tva4E@pa>{rl-kW_D$yWbZVpivth4mr{ zotKX-k@k^}vtys5)@>Iw!hnspA}28lIv}s1jAoB5X@Y77v*)&<;B3WYVQi3&NJUd^ zwnuaJN&PQ6iAqJTjWfEi}lF0 z>Ls#uatW0b;~PS=A4GkR)FYozM%h)l#aK=RoQG0)BE@3eX>wPYDni~NWS7tmAqs&Y z%Pd6VY+JZzfh`I17EQwp)5Ob#zz<4s zFRA7p=ms3_e8?qSVej95v|o}D3CZ}d8xS&POIdI55iFH^-)B; zS5`J%j1XuoqZKu0a50nD)HqA<>zxd_lw&@XlFp{Xa9q&V5CtTEx^5FJ^|-`9Wt2wi zopFf;ycwZeqx;f7)n(Ne#Z;e%)KS+mW3PTTFU!?EB9f3%tUbWJpba{3yyO9;tAxVc zv!`S;jNs^WI|9=hFE%%-KVb&(p)7^@kA5+>gT;6^7k~jW$TUu=%n#1H7euilQ@>b- zi7e!f6nu6QG*{l5s)Bh~TsD@ZRMWKXthb@R&vNI(~rX{FJfekswGP$6fgB7e7A?LXI zwc@5(!(;gjq#^%$GwyTXw*624NKF;QwaTo@^f{vsX8c+l*JP)nmV_>@JiFWyZl(j` zisme;9=Omlj}#BRAyT_C1$)?eU#gN~S(CO~*@VSml2r`-#z3LNG5JWUP%g`a;-wU- zuj*NDC?L$9=0go5x2h;0=RnVo)gx&bFInAnxn`wVV5!*F|N8$xjf=QX>V><3uNCy* zV1C2kc`|OY#Z)%Zy+oC+L!FEskldOy5;z7R(V z>R+~%W${FJRfL{2>!H@-Du}tM#n58i%)a&?N>xEGng@vkOGM~ zAsu>90x3e-bp`KZQva#?^rw0q3SbRaK*X6c(oM*NgbpnuQU+tMy9|6O5=F>mR`NPb zdnQ#=AB4yjNO)%MyhI|US6M?6va~kI8Y@9s52bn@oUTZ^-2hM~To?Hwwac&^Q&i{j2|Tr$dml`CMeCayqL9UL3{~E^L%SdaV9MZ zoO;7_=mliep_ciufA0^PWtOPEBJpgE?TbIew%Z@r9suvs56VMACt4|@AjwHHf+^a? z7v!!h#YB&D$yFjq*N_qcV-z~r7VERDP%2kO;u8vHfzEv?swS7PzCZ`WK|o1T91#B&m+%^7`Hepz56N^7>mXt!$p?WSgq@m)!?Wa3 z`JAa?LtabbKo;e&N>sj`V-m&n%&YODJGBuBTK8#dfPX88HHJRuSGrGK7XHlwI zdvkMIUY}vFt=08{oH70KgHV)9QJIJWSL5najr8!s=tBC9ve}0erJOBtkj|374&a5n zCQ!*j3MUD|J1S`_dd^%ndZAQMZGA;}(<*rW z46A9UH*uSN#T(E6w+(T3R&!F>Fep6WW7~7B^_;U{*e*qy^%PyRS;SA{ANz={T+&!w z@^ha2t0^W;hc&UTxCXO4WdL6|E97sg8^A-P?mD>Z>^Ddn`s1U%;xwU@Mn*sw3m

O(&?M2R!g*(}Cf`*vDy$Kc_60&izK{x4;Xinsnw`<@%d zm8N~Wz!_EX&BA#Me!bylL)+52EyqEtV}YlH)F%2D{L@1kJq*M^3&^!iiu&zG{(G(H zcj^|vTW|3*h>={~yu(8qDa(FqAoynp>g=`wYZu33C_1QFq z1k*GnLZ>vm9%P4Y+SFkkD>#kkvtbwPM2%9+z;VX7k(SAfmnxmIANDDXH+ivOO9(7M z-50WHatI&hw%`q89UHwZRl2pu9X}nM@vzg~em{cSS9oR|%+1OwcILeeJSdNltsP9? zAoMYW_-3Idv>k(6d`OI3^Wcc9cipmKc+M#FFa3SueCG}^jrP`Oe(}yLHgMVW+8gzf z7Od=Zn)*kXIVsNLs9wJLX71n0wSD(T<6Je3)f;97lfO|Wwz;RV>v!H!JDqXh9Wv&h z9Pgo|&psrW_YVyG&SiUg?2pyD{nHqPFGl?=Fkb36+%ewMPX5QS-?ROt#Yg=frQ5LC z4+(*MSkadKmnvkoAJhZIeZUKKZ`FHQ#UwoXx8s&Q)>a(gFX(eOG&^7Ql~ z`nY}NbR6X6ayO0i=xi7xiO<>k@ez~q@jtTWF;s=y9cTJpWZH^jE12YwR&~R8a%bnR zS-(Ebkx@N;=beb(`wdh*@Y;~TQ%vwY(Rr@so&dsl0iYiWv%Wms7yfQ^?GpH$dIN|w zR_pbc3Vh9YusUtQ6!pQ85_nk?=z2(16TZYoEGE>(6cu)?CMG_kmB!(0qpJ-(L_C5} zGu~jRp6`c21d;2w+UShL6o{QpPqcwuOY&mp&z`9bXOA5z@&SLe{OP-~7th|C!k3rR zB)cB?`}b?cvq6CwPouV>r|o$hnjh}hKy+wY=LPGx-!8BCtvW04pZbr8>Uv!PUcG#W zF^ijlrvvbq05@m+xR;A~*tK(jYsSl(b!t-cFW;H4;;2R@>|@7OiY-IE^rn6XnZS=d zWbd;5OmHMb!%#HKN;I08U$K`4Y|BP~40kpBua@GF_h1Mht_9iwlA#Tr;2M#oR zZSX$$G2~u$!-YCe>AmlTM?x-K)(rl%&(7~DjN5nKk(O6xfmL@7;(bGfglw4G^7y=a zp>2}}B-Ix5Ix8{bHwtB=g*t8oTICz=3ziv=eet^J2iVPUY4*SVFyxcEOegNEGFX1_ z4d!O(75J{dcW(%E{Jjs5Uqf`xd*_kowT_v-l^3n`$~A}glc*^ygy&K^KIj~=%PCqB z($d>P11EeDI16D$XA)*|hEUeW6;HtZy-P$4BjP0R!$>tehIGD1LMzHn;p}ZWf84zV zk(Yi6e4Pr*4PF?wUU!oTJ{HjNRCI~vxMM&W`)6M^@*5$P>8C!62v`E$xoiGjkN6?- z?%iT(fXx;1!$l!YSWXo=F(?aZ%cG0B*baMIL*se~Jxfd}EGtCnG_z8U05w~4be{1< zPZAviyqBG7FS;YMJ{_mtwln6YptqSzkM5*J zN&EjnnAkuGSaj4jymbAH4l}-_w1zeQhyR_<^iZ~X?+v^EddTNFepKI+uv-RVjyrEr zu$+A@C?NW@ffz^!;QA{=T<-*PG+gXzdoDyN%PeZFT+xz{JP~k2Fyl>LCfIop4tUkh zY?Aoei;HRLRa|ZgSXB5%vp%_eCYCR-6&yl3!LrqY(`bQL-Xlk4Ll$3wC$b?7>ca1t>UNiQUl{M@9;N%T$i59lt1R=Bl$|%0gglksn-K>PaO9eJ|ytr zQd1@h^-LGO)w^5S4c?MRq}jYVm?RR3VKC zkS$wr=4pgH0`c4ynWZ@J6n&OWC7`r0(@1z_j{^kAO3<~f!Y_WBly|t%mM);u?&ZuA zNyBR?`s2dzoh=!e)+5E`9$mQxN)^;p64jQTbop~$PJWTM;;;>7_@cJtXe$m|PS~)b zBK;jQed9__^H!Yqy@}>}3r^oe^TL~Gp4*Cpm!prd6-V!}sf|70zHw#Vieq23tm3od-VB_e9%^$7vu7| z^0uQ*9z$nQxdYABrKWevpyp6; zaL%kl7fgMoPuW??88)qQ5NBRUSt{d@%@FD0EV))G!pB0oP_{7UX_Qx&G%=ddPyx++-F^Ct9Bzysqh`b0J&g@Ge7?EYlP4JdqJmU<{&7`8*Q+yI)w zUgBX{td0;nod)rx_0JYE`-_FwxdQ7Vrk-Z=S-EsAuLZMaUePpo0BWDAwllH8jQ7M@ zz&NP}G9j$4)Ec!`D~&Q+Ip-sqq9j>q*O8Zq|4o4hr0|~5%BnmbNdU3C`u`C>t3*pw}{dJA=s0W1nd-(K~zRm4Yk@#6SV}zNWPK!P(p+oQ)-Mv zsXq}Riu-pFnP@#sF6UBWmV}VM>>BnN`8i60kuf}!`E+UX^CRvPLZK2!&TuQiPv{PPSyaV5vt%mh6p^)Pa>3;}mV`5GObHJs3eW%G4-;zs<$E#^?e!qL zKIw4dZUuUz4-Xz5PtLldz`I7PERwd~a}O z;%vyeY*mkvQX9txnY>WcQZrr(Sff8GJ0UaxMN7ZbZb5ED;ScHb|Fif0p|`Kueb;kN zKAD`fC43#Ha7`z1&G0q7F>#M7WnEP<}MIfhY+ z9!Xkai~6CR>ewPo{i}l7XX2%%QuQiEjYQa%K?M=U7!`$zulHKdXYc(z=iHeIruis- z*51$h@m@ck=d(V~{_G#$z0cuBtX44Sq9`=DgsAcKJp`PDyg>2x$Zmf5r$~uUQ~pg_ z$u*ci(KUR!8k_!<{aGqx+0VB3)`rmK+Mi$l?tQgl2X9$5SaCX+!Pt3u~ZBgCobl91_64Cj;Qg+M2YHh80;a);r= zFrfR^7W_*#YZ))PKVNw^4B&eT@#%{*bI;fQ90dqT^e5CtEq6g%=EY9SPX<1E`Br37K z7LjJIK(2@xK$4x+iYZP|mAnQ^4^`Js1huP7Scth;k}5`Obt+Lk%`-D{7^2%5nufu9 zYD;n$iap48c|7KJHT(rW-I}X^g7H`0-@dr2hjUH8;=LrlxC$k`ax74nvFUmlX>uTRd2kh?!q(sm73WDVmDAac7{(Mf)mjNxPe4gXG?cTj^(t$_k!l7s4@z?!LSd57^AfeI zom$R8StJ@9D99?q#Q-$j6>Y|Pg-tbHg4_U>3A##CYv^n8`bs1xoof_y&#||hCl6i_ zlz%LV)Dl*QNS}|9_FX@#5YuL^monL7g?IgU^}3P^O|l9{e=|b=Xw6KjXa_f)0Tk&P zmt!|skT2!fJT7oMNa>k=o7!aZGM~trq{if)YO%AP3jHB*#f9nN`ea~cVn63Z8ons( z78T956Uj^%FOkcB%2=dmF+@-_XapyvE%AAy^ zXfu$`G(GKVJumX>020eW5AqW(<_cVD@wY%P9iNB7{Ce_4ghF%^W>Q@v5LWtx5R-gU zkU1sNblSt>oT3;r*y1peCy!Ff5aJ7rT_ppB&^u>gaa*cuO1gN;RA56@@6xR7rhyZGgh) zR-Ov0D4&mvyo9$R<9P7q06{uXl4(amrh`pF8p8#wO&;AHjbo46tr#MJB%@?Z9kD8! zd%Jfd$ZkBWAeZOPH~w8~dA z^GS7yjIZmr#nX&gs}^0)tp^WuZO(A*`iv4-id1uy-B4v&F{keX+w`ED_8QL_0PX~)80`~*Y9zDo|nJxDEevKk=B`} zt7`BkXa1iDv`(mNsU2gI>FVh^#N}Q??NNxcRBVQ#eNhDWwt#c#2`(1nR*(HqG%E}J znFKQ4b{P*IWAm;V;Iuq(-qYH0>wSF-D%WK zJpELA@%R0$TrWO*XPi)bnD1@x*5R1#ZvAYa+&ueo z$ZY+Y_><2nE693=#C?;}+KbHM-)MIiZk(`^;$-)L^DY0gRF%dr6M&(9YD+T~J!Fwx za^36*;bgxgvr5b=!N1^tsltcAnLQ=@nkIU#A*VL0YK!#;RX)gSc3De|AdCND>wQ7K_!;k6<*vCp zXZE(TK4ou~y{-hYDb^EJ+B$zkvqHejyYH5Nd=S`n%QxCN*jvsEUjSR){p;4Oa(hdZ z@Y`;DCumuJ57$hxKli0t%jZ64s>V-o#)*w=ryf{l>**0k^6vauQ1?22TI2g#%eU2@ zI-S%zwmwovG(OM~kHPAS`Ek*5_nTk*Ssl?c`W1nE_JwEf2R{q?Ayr`?K3mD+ z+w*=JU(dHRpZ@)RqA&K0|Jver{KnRJ3V7=+Em!|5jtbrJBd7+Meg5+$*FZjb_U3Am zZ@#CWo;+!vf76|RKIe^RcXhDrc=_9hFC2cy`NL0@-entv;IwIxw4|>mN$cj4r))fj z)lWnA7`i6hYR3mCdzQW;!?;GUWmz|Px3$y%_HGtm_zR1wFAH0R8dPywwX|ERxoq6X z`=w3`A3J+gSC5$y)9^s{r%!WMqber<)5;Kh z<6Q!qvXU>{$LGGYpnO*3f5Ewt`Nms6ULW?_XW!F={7kJy@c(bU^C4$ajenYw3t7i| z^NiBqjpyN%FY?+>wP(tvWwj86K$s@U2^cAR9V~r6sRw)k8_B^!YCJoB(D2qzYIL($ zg?rPE*NJdbQHJHM4umAmZ(%p-dC1;%JEP0vxBhvm zM!WlQdH4y`4>Xjw-q0Tlxzs%Afyo5MvYxc}a&PiP+MeNm!oT0wO<8PSh4CEFCEC;6 z@hs%VUACt%C@uE1B%M5^oY^B=LeG}d5Uw4MSgZ{?dwYu<@~&F2eox}a<$gK2qWnIq zF1PpfI9fiJc%x(K-*$W>mnyeNX}!Ay7m-DAd}U?*Y@e_kLdX z-Hol9m`lwI;d&7RJ>g}LDa&Q)%+BXzmW|C`tb>*lqVFcjYlV|!Jzk_0&ESOwx{xi~ zIwtK81t3?G*VvS_Vd3#XTbh2BAbeQ|fGBDft()lE)yO8KcOmTEJfhU(ryQ_KaBn=C zVwF6pJmlnvNcL3XD#b0?bc2%$qT?ikVR_i9h0fkG*s{J@j(R0fX^leCOxn%OI7 zP2lrrP}5?W1OQL!o(h-eLNOD$znA2B@ZGY3eOcJ!UGjDbA2f8irIWPse(`9?ci$Zm z;GMm%hJSEh@^(>+IA{h{ZjplpEj@Pu7p%1vS%$D1D5C{)Co4*>G)=bic#|{}|ISaa zo@5<;i;~x#nO3b1~s7 zFFc(B^OL7HbZJBC-D-RC*nixkLHsio*ii4{ywq^XI};bVXO)J)pplYXCdBv}e-9Lb z5?{2mBvZpNAqk5%7X2R~E}PgXM__-feu|?wV8vT1TpeTq*RdNN73*=XSszzVtrM_+9c^-I;Y@xUyNW{*USmu?-UQqml?-9h& zBrUuP^^1uX3?^W;(tN-~E=J3qQi9x>E)dc?#|PxHs8VUo)24TV8~>3IJ&<Gynw9Hf`Fq|Q(HL;ee5^W^hHo3;M$!?3%sKO6=y2l~_5*t$VQ=ABCt@u(Fr|~3E z6hz;s!3$O5sSES%>9gsIpf@L#m*;`-{MXD{eg#e8FR1drX3sbn7s7HRAWx1&$(DtH zS!hO|e|)xG%%^0TWa(L?s-j|F8gBriilSxnC=0#J-6ybB8BtY6;q!E1fM53N^y(}n zS(Kb2Tay2`4nUrVbXelqvJ4MPG5ev%Pf-MNVM?U_x1fYM^jifB zNupZ&?I(VM!_QxIk#FiUqj1lunT0hm;8dLRYg8!3435YFkaut2O%>4 ztv{{jedA+>+^~@!Ug{mcwyW{06V`%Yf-g)*JMTW{)%v3V{p<;|9`+p5yFzobT6yon~4AeDUfT%iHP2tX&k zg?Ye0ZyCs}gyOec=&6f_19E&Cs60nyuGCOcy=u4*AH0%V>720?{(YMj_m>qlS~idw z=phM%f$u5o=3mT}=pBG_41exKL3y2FIVDO`$kvz4@+DbC$niAttVr!*NoEpVtUAwA ztL~7?SANy^bEWRo_ppVCAn<;H8AI=VQo6CkK-Z16$j3fuJ{#WzIoM6TCR$L*DT;P4 zzlS&zgL7YS>X4!$?H&kS6Qq`L9o@+E%$CbRHUjm?@tJ&$lSMtfvHiIZD-q5Rq3L^s zQ`16Vzig@HH=4l{(_!@dqZZeHAZw2}eiUt!j&0JD9PT$u8Ocph&MJk`L(};aM_Szj z#bgU8a_O#kF+>jdA_pv}1ia!wx9SK$dL&ILVJeKw1zUiVmt4j`lQc<&$QUH(QBGPB zvQ!0=CEJ*@=3hc>(J*e#*0>|!3z^~syFi*~89~U4roJ*mg}HXwLS~!pa)m50XPn8=9Iq+FWr zumPAE4N~Qh0$IQY!?}?ma=ebgsK5|r7|sYOked==P&mxMBsWZIB9=R~@PV$@=A0Rk zOsHv5zF{sE_+S3TtY_ez5`dmFVWV$kD4vEi1yC-V;WE*al=`W3W7;;{&~>X4()t72 zo16@{XOf=x3dey7N;h!SZmw*_0sBBiLTd*1>|N)8tol!dmN5?CZNU;UX{2;S|tR*n7a<q$Rx+7QKwJZtc9BwGcZH4NG(fe(jH+;6|MoxSQ6JWknJW2 zKsS`eQLV7N95|3*hWRuwI{=mhY{0p@7!?eDw;-3^)geAH$N=>Umkm;%x97gDvh_Be z3PcZ#$fY^0FrWr?Ct=NX3E-}G7tXV(H_>1O$wMrJAe^LN!Aj?+ody-4SByF2X#x?n>gdiw< z$rIyT_O4f8TX?WzpYo*t@!ul1I;ziV^5y^Cv@_2uff(+PxaBHjp}1@i!*G2y5#gj=X&8tEJ7dEEq7pSHh!6aNwjf26*@Wx{d#u8lD6zX9?hWtza zLaMJ}`P%W-C6Z+o?N>=a*XEVyYgMW6QS_?oRU~sg`TtwlwmQk)e(87SI`f32#;zBM zyOfQ5Q?8^*cd@Tbwz+*%9w6EPUyT%D86@pB6kgyIGD7Sl$RFTwwl3NkO6B#qKMXos zFGsuQAzp{uKX7i{`B`}OKFipHe`?MWgIW8u-jr?TmAq7$pi5q=n9MVKY&Ta`e0r{4 z5h(ghm%knYneLH3y$>oa%`1TZ-+!zxn#j78d3}{feCt(f>0a5DvsHO|uCn1-<@r3K*ic$#Z$EmIZxETFWK#6U zUmel57Ga`~Sj)q{R4BZv@DDk}8A1uF-1+l!U!sj)IQy?IH((DfmS^X{YelGE1F739 zNC7Y7*#3G?p|9mOQyw^l1w-<()JRNFh)uGTKCLa>=ThP&?>TH!d{ZPJ7*{|@7kTnz zA?|Z6Kl}$|P2zh$I=wIT{89VHNBKo3%P?_M{-@jbKYo$>!>}$h%ql?FR8=z4Hr!EW zm9f3-+XuH z3XBr=IQ!z^WuLjK42x<1;V+*ZD7N+es`sXkFy~eAIu@M^gbE;peJf8frwY;hN<3xyMWJ%#eB$|Y`Umnw1b={kQ|i!pnWe`J-1M^w>p*79)4 z({o-66-AzR^<`~L<^t~iv2!Xf<8@xIdQOgr`g);k(l6xg{9P8mpweEmJ4{u!Z&+SO z>kT~LKLPS<82!46oxPvZzezeHZAuA_HDcO+j^;UyBZ8usOF%jzw^SdnbCv57L_F9@ z=jvJIL4Fxr=Cu}o=nATw5(@Dj{K?ekHGTQS?bhGeN>fiueB)1W=B!^4^H@Uc%X??u1HnZ zsoRw2Bf0?7LzSBsEy}ujex!=c;OSJz`G{m(mZG)XeYjPL%Lil6ulw>J{=UkZd@(5x zH@&sD*&xD`d`jK~=ovi9JfkwJN;%HlRK@a)7~3J=tETh(z&wYR@|r3nK3Iza!61L% zdDqD9a9NWAxvbMT3q!lAVytEQy#1U$$y1q^=;4;%oL5zp!W}aHd2(Gllk~^HN$zZU zJDb1nOPk|Wc@C1x#Na8#QbCF=`D+-CkMt2PU-=#FS3#Dses!>4F*&ApljmSNYiET9 zeHDtYQ@ya@^nUV#4AUOZeSY5Tmvd!Xh8eMC8THN6>bRZp6)58@1K@c# znVq|eNT)_;xYVyehA-n)6C&&KVG&>6$ukIjyH-G7Ktl%hPr3xdgn5k~JtO zQg&(RLAzB<4bQH#kl;_WfASaGBd)z~w{L9kJo>)h@Z|gb=JDg|x~{$Nw~x0MkN@~5 zZax>b%-0#Z-tn5W+1D@MZtpz$N9tYerOMl?^5XIPH~Bi_*Q`qXnylq(sq*$$J)&9V z{g?W}Gs-J{$v@TcvXfUQ)t8^EzWmsCW#e^{I3q<~;&o4YhD(hva)hPof90zL8!&P* zF*HMb^|cVlP7{m95q%9+6sr_%rL8Yf5d7sTTqn}0wQS^@k`r&Q_3If|K51|KbmPMh z{fd~G_`*9l%X^Gh8(+VcWhVZsn8<_7&CaWhJl;qAj3Jk&_gDG|<*G_9kKg_B;m7|c zs@Si^5zT$@pfApMs~L3nM%}Hx@E-g9Z~kd|e9*6d2mTKI!~F;S`gh=H{I7q{bH=0b zN8@+uz)sU1JN{_=P94~3+GEEbjo+yQJ577+_@nVVbzrAyj~#zBey0xXH0`nDkH+uR zft{v3cKp%!ojS17w8xG=8oyHqcAECs@kir#>cCFZ9y|VM{7xO%Y1(7QAC2Fs13OK7 z?D(VcJ9S{EX^$O$G=8TJ>@@AMnF*zrf> zcj~}S(;hqiX#7qc*lF5h#~+Q~sRKJrd+hk5@jG>3r)iHJe>8rl4(v4TvEz@%@6>^v zragB2(fFM@u+y~1jz1c|QwMgM_So@9<9F)7PSYMc{%HJ89oT8wW5*wj->CyTO?&M4 zqwza+V5e!19e*@_rw;5i?XlyJ#_!aDou)l@{L%QGIcCFZ9y|VM{7xO%Y1(7QAC2Fs13OK7?D(Vc zJ9S{EX^$O$G=8TJ>@@AMnF*zrf>cj~}S z(;hqiX#7qc*lF5h#~+Q~sRKJrd+hk5@jG>3r)iHJe>8rl4(v4TvEz@%@6>^vragB2 z(fFM@u+y~1jz1c|QwMgM_So@9<9F)7PSYMc{%HJ89oT8wW5*wj->CyTO?&M4qwza+ zV5e!19e*@_rw;5i?XlyJ#_!aDou)l@{L%QGIcCFZ9y|VM{7xO%Y1(7QAC2Fs13OK7?D(VcJ9S{E zX^$O$G=8TJ>@@AMnF*zrf>cj~}S(;hqi zX#7qc*lF5h#~+Q~sRKJrd+hk5@jG>3r)iHJe>8rl4(v4TvEz@%@6>^vragB2(fFM@ zu+y~1jz1c|QwMgM_So@9<9F)7PSYMc{%HJ89oT8wW5*wj->CyTO?&M4qwza+V5e!1 z9e*@_rw;5i?XlyJ#_!aDou)l@{L%QGIcCFZ9y|VM{7xO%Y1(7QAC2Fs13OK7?D(VcJ9S{EX^$O$ zG=8TJ>@@AMnF*zrf>cj~}S(;hqiX#7qc z*lF5h#~+Q~sRKJrd+hk5@jG>3r)iHJe>8rl4(v4TvEz@%@6>^vragB2(fFM@u+y~1 zjz1c|QwMgM_So@9<9F)7PSYMc{%HJ89oT8wW5*wj->CyTO?&M4qwza+V5e!19e*@_ zrw;5i?XlyJ#_!aDou)l@{GN^PIl0dzShLnP!_Qi4eFjLlf|49=V$IEwsZNe3;|e2$ zNRudXvrWxBhvOHhN@qg%P%Uo=XjP0%7+SOog#e<>Rm0^-))i$~A}8Qt2?2`~(%OKB z@`CYzwy4qChlD^cF+oW_rAj<)Vbk2i^07^ORT@*!!p5!`yp9Y0cu?+wZe3F+8!PmIp z0L|0kQ)Uo)k#7oew06VoGU1ia+wb~1OwR>8*k#rgW@3f=W>qDVBgx@Tq^VspE@WQ8 ziJ(KhYL;;+DVLp@luId3R|pIAjcoShlt75%c1e$!o|X_}3^7kNGFLW9Gq!Xr$g|EY z;|akcHZ8Mm()5XiauNwk$dkjc(a$D`MQeZN&*{8ek)QR8c7`72U%?-#Qp7&OiR)#u zGjP!gdSL4qb&G631#Fx^;39iTPIC&Egn3*t1ifS>bYY%37kg^J%HDwXjXpH}6^5fY_9aG}O454>f;irWG$?FWb2N zrI2g$?29Xueq&zxf8|2`mG5osE_=Uq-gO4dyJqTczRid^bqTBsWh%@r5GA;EZj=D` zEv01g4Vqa>$O^EOngmE;Dw5bt6y!0ujt(7OaBq2>vFf31VXGd{nSuj^cv(&0O`&u9HBvs@K03Bvx#CLyTGXp}yX?Z(WqN@`y@q09%WHgJ0W$d>Tuhep zBjKEuL1$}IekOR4c_yju?Wtus*M$N^4^+sx^hhxjBMP0n8=MDmZ#UKkBgx@-$mopB zRkR68oD7foItYK`h~;Av++G@%2_AWl%|kOoQTLA9c+KckGGHVeS`}!zmUOJ)FifU9 zDX7R)MXxv&8A^2ml3e9oe(o5$CV7NQO)L*c?bc8-QNt}96~koPogBV$jp-rPvS8@) zW3qnBf6^36FoHs^E1})Ein>ujPQ2XfIM8~-*X0I>b8}QAcWlVH3Dk217`LLtq^=o< z*%h3t5-b&hxg?4;tymgIVMD5%&Ly1DY;~Doi8h6`HT59RECQpgmO;U4m=J>r;m|65 zkR-AYcV?tw-ehO0W*^emjCH*!s?Iw)XSLIyK_LdDp-^<#G|!)aJP1Isy$G-xSX+Zoe{gXS%#+#eA53;EOP^C|t}ZjllZQ^p zjn+0Pntx}hYrgttNx%I^no+|zQezsg;z87%>3HO|wn$(Zw@y$`e47xT(j2J(6_F_+ zQ?`W2WLa#z{o_E`=`e|VncgZ+Q=(S@P8Q@AmVG_Z`mQBm6O#i`XDDi|vWsYMMwk(i zRTq`>^v(()!_N$_sSIIBzH!@1Opk1f^bWYEc2PY0vf+Ue8S^7QN?zP4(B~vbm*r6! z7Gw<1I|?$pPwP2+T4gS92Bl#b3Bq)D(}IhnCoMfwNN{XV%c_h437ik^g=6y!*2*EP z(Ni<5A&9#(;7o>+y3X`Ac~$|9$Azq2vpmOdqr!3eDiCs&*{TFbo1|m0we+guG62gW zIRubD>uh$Ko}M@Up;XwKmsh%EWZt z^EEWnI{^1yGE9@gtqUci0~i^`&FLj->tVhiQE;rnEV_kWtM@!qYb_%)&t5DrNoN9F>2v=AdEkkLmOM~%J#`ClUHr6&M z6IhsaS6x{=rX45}%?cy}k2<+h8Qjg`?$|1U?9Z{yp&=7l-oDjq7Fa>&~7G}qN^PB^Tg(~hONQZ6l1UL|HRQMc^QuR} zq^SfoQMp@V3NgqT@=UVQe6y(nl8J&mlb2LHa|`ry1h&c%s6>{zR=Nz4KNmg#6%+s^ zlvXJg+_XNXkvE)-U=$gca8aOybUz>b+3WJkBeLXTL`vADKiI|yP*EgDO7UsDBs?~k z0tO=^Km6S&>{nU3oyji?umTMP)jdr#QMVLIe?Y_1B*V|^TNB!tTP*1XuuS)QAW>`C zf`nUb@q$Q6g$zewOo1Vn$qY|4`x2OjCOj!Z!tyTdOp4l$j&LVY$Tj)J9vcqi=o(4x z2*wZ(bk%`eOq5mazxdL0%3;Eh$@^t#CM3xxH_2pD{Gkp2A`HPjWj#;@i^=<9dd5ruj++l3w`RdBG1knnG`*ST*^j{;wH<* zNV8JB(LobC)8-Ih^9~l6i@`1eXp?pM0hyKTnJ(OV&MO5+YC z_Y_v9gvJ(;>J{_UO?**|OWT4$EKS(5xoF!Wlwr;Y7B6yyZFe3 zm9)7Ndg?;j$x?_>I3)PE0nKF$G1uL#ac)pG&;!4$ge1=tEr!ql84M_r|H;4D>}l38 z18|0Gv zy1@8ve=4Vueo43ad>cX`=WbFq@=cl2Qu?$cT!t|qM{y|zPo>!+JB-xl_8bOz^4BrL^>D?Cip&`2%Yq;R0}1)Y4aEk`8Jjmk%ZDM9^fK9Yu$kr=5zH^Fup}h+qO(%aG`D%Yf{NpNU?*CLReN$L3tq%*yTYJs#vNz$gktuXRejnt7F(f7QbPKYGEm%F zF3mx-b5}_cgFpxIj7Llgc?Khi4;fsFSTJ(NRf-2;CQV*XnQia9ThCiUvk>%<9@?B^FT`F=oP5z?lLuv(m@yRzw|0vNV% z&2|*VVn%}<$2|dybtT>|ASW<3Rb~uR-k|lWhzja3kHFT@t!NM@-J@c({|K286_d5rll$+_P*fi(cvS}f_*1G}ARO+d+m1&!IO6)DJlt{;OTQ~xdXCG31z~b668Rp5w z+SPU5(=O)fBC3Wn;FjXd{H#qSW+3JRUrhf?B4Z5jul;YD^Qw_Wc~_=uZlq}=+f(M% ztw=$ZNJe7jy7F8+1yW)MJEU6y6XHbTkcj!UfD{nFXZ+SGmF^~s`ltIK`m;wMI- z>N$J9-4jIl_WXHkA!RJ>d9RCuyIjnWujEHiBeYo~C=_e|hCksBTrs(rfs72B0_!WZdsa>`1yzg8q`KN?p|g6VMqZA9*tF+r3ix zyjPbHxHh)w3Io*c33OtKGH_plkK>mm-sKpAJVBfVYAUKz$X7IkIs)s$+iA4G7=+L) zYtc-&)0Av{fa!+SvrPox#cu@CDrM=z=fS)~=d63wUsne`YETuWkmo!B?y9iyR5hQ1 zT@uY#_#gTfK{xqFX=z#@^`4Oqe8-uRVulCVI}Ex=mwEH7OSGE}cNcJHOa*ZmUNWw# zEKBc#m;1`vWCI5_mO>gQCaXwlEeq9xE+{*KIM$Lfwz*Fyp|t%3v!(`0A^V|xkiAvO zBMSo0RaOl9N>!YIZ7tpd3)@rZ)F+M8lq03q@<;wG>dj5(FBKe9?j)`9*)v6OT2Egb zPg?(!y(znQ>zjPc**g7Df7U|rX2PF6>sjSSACL0@=zWB|-QIRpSwF9+ZmrYr#cq3l z+&-~<>Gv2_mgU{ss(y=Hi1T~zic+VS1@QE?|E5J%WWW0^N1N47tJczghzB0PdRkZD z)=xY~BmF+GnR2e>boxxNmPhva7)15e8pO=@e&~qw@YR}aP1#~qm3ALJQEM)_+81?1 zk0OtVXd?zXowSzq)B1j}Z1q8B&0XCcA9$C2>cjueA49p}llMf3#DwmirDmrwg5_<6 zS--q$rR1r*1a_t0-SxDY8@eN^wpnfMZq*VlORmP#N+d5>vg)$5SxpY%?l26~mR>m6 zp@uWpin-jr8^Fx1ER=4&W3nhqvG!_)`)~kS<)M|Xryh`>GZ|cDiYF)Sc0cEd`O-+qW|M}O4Bu>OYuBhvzyxS7N-ab zX-avwD8gjRAu$h`9WR{Im@kLy#`_ow;%LCxxod;ESy$t^fSYW8S95dim<_*u*IYOr zr_qQJi_%YJ*D>Dmc+lE9S7buBv)1B74N;NJsSU{(YnL2R_-P&f8~y-*HfU!+Uaq^F z<}y!Xu3H9V#n~8AY-aJq&}DPUO8(RlRP9X%(^!ThSXPL$M_rBP1r0JkbLp~|GTZ%a zO*4}$pV@%cK{Y*Mt4z;Mv2a^kuyAu~K@l#o&I|0QW7jo4fO*_BN6<2=K|Eg~Y3xas zF`ML|$C4)pfrf`f8$;Y=M^$M^+AcwritZf)I@t(GZ+(?S2??F-$KQ_MxE)*eo|W_fJZg4<3m$zjWqbjgu(VMj&*l#J%%-~M+L!R9nckyFRWm2P5J z)C*Qjl9lio&Z$qp>r%th)QnG*s+P(W_xEMpzbmN?Zwat(JeAD0%gJA<#tE>H_jWm@ z;hdq~;YI$@lB35xZUYos98QEYIg1h~6|wWe(2 ziiHKr8IqI+G4+tlAju&n8tw644XpVqwD@M<-Ki#VW(IFP@0Y^vwLD%odiqWL=H}^B zNp`$RnyO2gL}R;DuIVnh@U#l&Ue$bCOZhaXqcUwM7K$MFK1M^D&NkBLY)&hiXjC&| zCUXUH9Z1Yw7^WcFK0->1E@`vz<3x4n6d}P@9RtDRL^xMFwm7yZ7*2f3Hn5sz60MeA z7JfPP5#@$w0ef-J>c0c$C=&$V!j(Y~Iw4B^W%T1c@xcGl9%hB|$XrYj z{;RcM1)%wW>$RXP?Nyg7t5HRU@DY+OmQ_NUM+xav@mb}xoj08V*23j1khz54|8u2P zE$ux|K+6+}=LAwV-_#zTU#)JQ3~GxT5hC9*{6Q5g2+qCb3tuD`5t(OF6_=F^8B#B6 z0hwe`2Ro3&xH#eA@TIL)zyqr&tE5*A&%)->ak7>f2P~S_GAvDt6tLiyYZ*djSk0s= z%r1N+M_C!H#X?dv{?kZFuH<=_X+1?KkJ_8Fq+^LZIgQ_DOnY;D;^vZG4oBoN)0D+r zON#cfWmZ{c^(pn}n^7fmQ|68j;qHNCExCsCUY&=`p}D-;Ws=YkvuwuITCA$z3N?Pd z@!=&D2xKA7T81REjTCu$FIAc=8*+)OzBncnF0M^b6s`RSd}Q#GKl#Z|>LT)WU-!l* zb+Pz{Z+Po1_mX3@_OWlcdn?AHN8j{K&z?nGWy>b1zulwXDbqTx3H$FMARYlpG z{Qql}$B(N&j~`cGKK8M<-umJf+kg3-$AxjKoY87XaXzTYvxq*xwO6LMBfV@zc54tt zkYr^XiYW$RFyhT}Gh~`Py+KIn+%NjewtP^C`HW3NR&N)=ObWQAc4pH&qh~wX13KeZ zs6U*A+B1qtLU9*UR*Nft0xvTiFg}N z|;6dM^};y^iQw?ZPYXfwl)+~$UJ0Ll|y8PVJVTomqGjkN#Z-zL!kAvk?sc}-;~SgPl$rcrnF?)KDN;kYMt zNzXgVLa-|t8lg<-smxa!iUoB^>u7WB(&&E>4Bg9wdYInp%EFVl|jN&DzgY_9L}tu<&6xC zc29FN*yHifli-#?6^d$jXH%ren&c@JVbaL#St|{N3U-&NhmM(8jR!i137Q8X#kNd= zy$seXGTn6}n#+ZbU^N~=NO}62q9RN=+(qV`b19-Q-h_e$$;6P~M5cQt5xRyT$c3&I z6tc2r$l*#U3JDl@M=Nf~U_b;%D#L|6LYFNIU--XvLOGMURKrtb2xnM5iqIl0iaH9o z$Q@?oo2oFAp5%>ND8@PdQIX`OGrJ-!RKul7D7Nk)U~4s+%e+*_41t-hvt|K=-5cbN zns#RR3f2WsK}^n6q#H&@DZ=a-r5I5#04WgRo~PBZLR$|79vPDuj5g2Ax93?1uqf=e z{vnd0I|zU!=&J7AdZO2h$-<`grH^&x+ZtD3o&ah1+3;>E!yQ8BR7p1v#OkOJxP;Bo zG$|ntVoe7pU&t`SWh^`N491QO3_?v}MaiSrrG2D_E3}Gr2I~q~=%T$kQwDe8l&Pm} z$|_%wz+kAP3Zdh2@L+65eF_d|LO2L?%oP~~L0R9YnnHzJbIqjK@u&VJ!CjXO!7c{% zIkbj+gko2lur-ATxYvP6vw2y0lq;fsCw>sx1E*tg?J=zgqA8YBna!E-NOOeeJcdTJ z)8;O%JInx>2u&1KOll93bYGRPJ3z~l8AM{pHWR}Y5;XRG*s%%g*y=uP4zJ0 z^_mAf48uU>VK~7^43}~e8?GF&VE^Mm#)+W&pKWPcF2pkfSmX@LVWFS|5`hh^uN5I} zs#!R7z)b4op>tP>s(~!U)e2xspeJZE#=!{lNNLHd25O`ov&?0BT+Wy!q)m#D;wE16 zS!!3zH+_|2A+Ab3XWfzuN~ej3*z3pyMy_Q@fgzl`wf2AhepyLAWr{9tVpr6s9!L!q zWeCU>Y$zI7f#y<+Y*V6?;VBJXTAGsuRVz8l+1WVq2{enE13MT+o}1eZYym+DRW`>F zgREAR((pXY#SbJ9(NUDAF&I#B%0wE0Ftj9#u43FB+`*Dd5d>0b+M`MZ#-o2yHMpOv zUo_CT%y7}1=rcK*F(ma#m~ASSGa}uFHa{koYPvZ}l6%HTU!^}F+bqu@I26fK^HQTk zE+ti;fP@2Yb_htyjaQl~MieY=slo$A1LhJ#Of+0wy(ZT@*U*sH#YCQb3yAig-4<|J zacMnaxAIy_-&Ry0CS=LaOvlJ1UceMG(otw}OK?M?6gNjP8J=}gl_~UcV1xz!my+pK($^{tE>M*-%wCpXpbUlmJDhAt}X_y+1N}yZbD+3fH0ZE33qcB1icg-Zt z;f|@%+AsezKqJ*+cGi8<&QK={l>3|->9f#TNiU1@TDi=EP&RUuO0;}zuh<_+TzCi$ zSSY4AQU;4ZbJL9S+U5k=C^efF2IU~YpY6mF zBC_PjIIBW>!Qql2Rw;&DC*tT(*LA`}D&!1fK$cZE(`ARj%{MH!n~Z3pPh4ycPlsQ zJU(gQ8%w3k3Qz`Qs>(en;2On@Ub`&2DrvICAiHE%iAdq{K|?IuW;t0dc2zA+!I5an z^Xc^{#|(-sk0}3B?=h8MF98F{;4a5&XhWy8jNHKXfLOE~8o4kD+iaJG?GMkJZR^X> zEkaAuEd;=nWx9_hic6AUpHrr9+b<@Ndr>JCvMftV%LfYFrNZJtj=-161%yh7g5ivf zd{e@~J^cy&&x1fi)tIVFvpJ*_;VD5k4ciRnj0fac9VW>z#7pGZE+6+m-^fi`GEZmb zC)&#<9(NE!z^a}jv#%YA5mU+V%GSBeakM$x!)@raX_jl&!Ko15iwsj1`@TiK8kAY)qv@1hU1NKJ+v}Tmu%! zlfhIVq&Ui?)Et8mTLsLdM|#OE`b$4bHj;9l61_AjA~Tn$4;7>lFDUOYDH~;pY1jsy zl`BAjl$psH5y_iyug8^RJRo_JtVD8GMh>(|Lk-FPI4J|o)q_z5T)xa02!A**>rP6N zl?cr;^+Glr$#gEK7nXXdlb;f9uIYkIF*oCrBWqOHDD>7)sHWO$- z;txos&(QfI0VqHbj!0e7FRF~d7I|{mU;bCf33DZO;Z|Bl^^Tr9-6ZjM0y`0KY*O@i zKx25rZ}q2dbXnZ+$s3V`WK0D6H9abB2_h8+kg(V)m05MKWDgT);X80vQ~EvIgsyOyR16&6kG( zp($f#WecyWoY#`s`XYQNYgXC5>`0Y_+pN-kD9WnZ)e+6?S`v-&M&6ve&1^|f4vlKx z_Xp8(zP=!DKH*(;>8z(T{fNf&T{5UcDXp2lx^?=r^Npq}ytl04i(6$km$aT$J{A0k zCT+ZA;mDuAd^dj>2S1JK6=>f9`UmvY#u1tapOTyKgDU!8l(M_W_UO3Bf(Wm*fCcH0PK ztJCG=tD5zZ(yevEuveEnt>TRus=^FjYhcQ>V^y}h186P7%dS2R2ZSQRQ;vb)NU(q6 z-w@uMg~?Sr-ZX_s%Wz49L6)2u5^a-DQ2yR!xK~!+BnqSngXHQ#M$0y)>gv7<;yMJZe_u0J`vP$M;#Jc030=!n2x!m~&0poaAVls!MWY25)1vkZePZ z7L8C=2at@}LdztMpy8(R6p}J`ymOYZSfR2Ilu>s3%-iuje?mx3ToP3im?LK?g<4t@ z_1?N{VoIujY-UX9;#)S-(xk9t_wJJP-y}I(U9#)AAg<;^lIoB#XKCZ4Wz+Z&=TJS+ zIMS{oqG|`GG4;4Pbw8y&l&zYIHeJw$?3Ds!@eI)*qt%j~GLj?8wo%o_5URdpHi1>G z7Sr{kv&gj!$u?K)b$)bq2PkXxlAMrdpBF+&OG%2PDMr#@&?e_zwbm2%S|t@dZF*S} zWK*uCrQxa%!CdkZ+tY0I*Wj~bPHs9>ErpIr^V+o5`zmurkz8>jP6oW0HoD6+jya@M z5jyB;%_H+EPkkN2`)nbNbJ=sTJowVKW(9gp>X9ZYe6wsydic%$@G?86KIjEuOPILF?qpjNevVJ+*B1{RVil3L3^Hm*Qka!61mBnd9unrkgj3;|hkeCgF| z1*kl;!-$OOy!R9~m#7 z(NM*c9De@ggN!6keznYkGclK`fY()t3hX6ZCRMiSe1q#?N7@8M;R7W%LD}ppQJoNu zC|qXDVrj6J=&4af8cdZn1vUP-vc^eY=3%9kk49x-KM!&Ln|f<26LNCwY^cp_Y~ z5#5QDJW)Z?V1Z<4*Lf3xM!{(&?1{(35u(U@GpSQYHI*4v8%M1izY&6GR>z3yOKL4k zq1GA{jq#b*{=z>CCi3K0%+9)>wXdi=;yK0Yv|YzN|H|o)u4AWeuVVfx^fF>E1OHF# zcqO_1I}IBAiib|WO!hMHiv8REQJuwZ&eiRy^O=E$qL3c$ZIuzm)4LRCxVUrG!&`Ap z50kX=Bc_7k2C8$M!72a%Ve8h})`lD~7Y+yl=Vk(sx);FiUcp0Ef)^cBX3yu7U+Tcb zI%BYE57U7W8LXaMOh(siV4*4v&Kg{SrXzKeq=;e%3ZbeR$VRT4OL4sqqKKhKQzc)O zuBroD5%LWukvk%>08LOSC>WEvcOnYr+Qa(%e;+yK|0Mm0nN^{no4*^IDSr@1EE52?=|W$ zwsTXyo}n&Ycw>f&itqogL2ic1I5!b-{JQ{UfplS7(j)@Y zNAW~mAuxtivd?6hcZ=(M5E4d`h@ub)oaG=W*5`o{Ph*mI94Mn#}o+%@{MSMES9g6wh z@8C?LNY6H(<`k~J0>1t+&n4-^vYUG=(;dxZ>iZFah24`p?Da^4MXPSCH z1Dir2uSt>*BJAuN)!isy#*qLJ&U7(7<=;3S$St`vDQ8gz+@{6~ioDMEJRM-c(He52 z*c5sGZ}#2=O1AVW4?BIQGa6x{+-MC!z(nj3f+cLg1K7zpy!I#}C}Cj>0(N3pa0CgM zK!PB4055Fs5n~}_M-dnYVO}MJUl_t8V26bv2ZA4gWm`DNHs;|5LTuwjzzzYzf zKmPNds#E>$zIX1e-F5c<_P6)H|Nr0TRCRTCRaZFJv67uI%hA#BbDzk%xa58J!U!&S zJhc1&BT&VvNXi5iB5W+byr5XpgL8VUxNJS9BP;Xk8}rHn)NFG6hD$I=Sz%;7cq17c z&?Als2XJb`q6Is~4q$LhJgJURL`{*0>zV6PB)G_=^r@rDI5?yuP)v-Qk7P`dEtwTQ zGYpYdRyVaHKLL!HvXBu{j0KE0su4pc+%**51Rvb+fBwPhI2NHGAnJM;VT3moS_AJ$ z;hBe!z|oUi1V@ZT3PqWP8##lsJ+94^lErB#*U#rA#K! zP&87kn0rv%1RaQ#R+b<=I>R|4DDJ~0P*|Eg*eBw-nG+loVm9?u^Z2=U0*Yc(;+0&P z6C`Vd7>-Su(H+$OEFTliEbvI=YJ@r;?NHjlnS`Gg5_E+m<+C-994&T5&|8!NEaM z-2T)Zha`EiP(~`5`=)hDy-EfRR*9Q2K0K&1O$m^Y907ctz!WDZhwcir;sH%z4M!6} zE*21^k225T2~fot-rPY=%Gizfd?s`p1{mjW;-1n4qQofol-W=roW=kZ2e0@PajV5M z1x}R#>crIOL4C}Jc~gXLO>K^|e&Ev5>PbP!yyL z!*BdH{1d*Bgnyp^jc>KULL!V5=vJ!EF&W}2EwBPY#PxQG@W+VhoJB%%s0h6h0jNWP zH}FJx!10iy@G!d=?g0oh$W6u#wnQ0Ics`#iI3##1MZ=|0d=Z$m5Yu;{@h<4MCd7RJ(7i?>Bsd`I(e5OW%b)_O`@sRzT|9nzhLGkcSVAvHz{9n+ z5D6h^Xrcl%ks$dENI~+LaHL}@K>koMs%X#*cSzjz0n8`~m`peoTCoNWXG6neE8tKj z*RDLl{6c^)-!exqnia6#LK$lW`M5C)$faz$Fbk%fvWQdEwJ(!1`m~*iD77RMT)Uds zmk&Z>Jhk9(Z-hna7%@5_7%e%idZv#6ToqBDtPjf~F(YoMco+_dxu-BLWz&T@8ipVL zO<0d8z_v&du?Qw6Q-O@fL=_}C;!xpgaC4EgeHJM#e%m4-bFwKDO;9w}3ooOj{Qf{+ zfnnVcrbv`hrr_2@fh0W-ZjWR_69r-xt>JJ{O9wXRC!kC?G!K}JD#!lIU-b%FBY?9(XB@J8euRK>k=YQY%Q6Yk&mm-kZ>A&Y$(O3JV3?&?=MtMz;pnG_BYD6y(aKRt z4h%(bD8HLn)=CSr86Xo5!vWDiX0-eY319K=505}7R@LUf>-g|ro;lEEN^8z2%Z!%X zY)0d~OZGY~)?+MapPbBY!su4g4xM>NR-EfT!Z2$k!xfMB!Yn=Zxx zlnycl5Qh($4N!`}=0t>NiO$a&0XtEg=*|sjFh@sr^x6DfBryN>2c^7-fW#>sVF-EP z9xk*ay^&WL6d4tc6aGRh{-mPd{MTa$APF&8L?Ot69(m(`qiRZdVf*3Yp~krs6Z&M&m%5CVu9 zF^(>jBF+@|VAK>h8*JkYmHN#5(+qYu`5?rdMI;Gd5mzO{+y4h_4&yKpgNmP`@Fj1@ z@R7fTmCb;0h$7b``17J*QvOYF!a~Vz5CAiYA`b**LY6OK^d#i-caMm|;x-PxR0WSO z-b6wo`FDSpvnmB5dk*>;{=WqGtB6r4N4D_fl{SGX)b`gDO?vnQ{WYIOv5+4Pp~>F z)AMz3Pd$Y&L}Z%6nis&tMjs7GOAmh*JaMBZQN@3g&e1xNht;q)5XACnoz^WIJeFOf zvI<_V$b7+7PCK5MFQQ+Ifj>E6bg*2LO_RYDjE3pfgcjh|)}rv>dmjKAKf)0PU~#WZ zJ9ss;HTs~VPl6SP&mEbs0U8o(pmmpP`PKJvsF>*(=zX&-_Y_s6H=@RMk; z8sV-v|K{Y5&7X?1*~BhSPNIsw$~N3%^aOn$<5O|sGi1h5#sMPO_8mOXZC*CMj>{Y& zDa7{VQpgGMq?ppJY8%yMh*T@ z$4xOC<53@T$R<3=EQvYMXF<|{4y#*@cxV(Ez40i@O>!-nhfi}liSoir*jS~M)mkd{$>4H!=!bNd>`5d{oYa9TK<W zE%rLmJwX|=W3EjEEGHdlFh*%{0gklLZe85iiu)< z*sL%MC&s9;*U@d#?tnn+NW+R-MJl{O(OS3u*e+mPRD2D%oBLu$-FwE?(jOeW>y)R0H#l(w#Th0sOgU7HRBgD(NK@nvaXM~y1;&K0?kJYRxwzvDxL z$ri>0_%s}e!pf3Obc7GlF&;!@93=eMv~rvi9EHg}y-hD*AUa?i1lsMGb4V27rkw|^ z$nqPM#N7&u-f)wmC*E+Tz{M!kbGtdA#dl(LYiu+|O_N)61$?Z8HYNoJ7HflqEx#;z zWP2F*CW|v_gEyQP8lXbKa0-QCiqRq&5LUyUJTpyy`3VnjX%q}l;HLm!eIYctP$`>H z_#VX>c8jrEAZ+u=OLA$D9E@l%ZFDAZHJyk~1{aftse4~;I!~L~D9FNTos<@Ppc08{ zLWd%*^MXfA(_hYs^XojS0H8>g!)XMhnCp{`8yzMmB&$rO&YKynTBc+8FTdI`CRT=W zf`HJtiZmzmSY&}3SxNvxg7<}y@M^-*5Mc?5M0}KCq+1r7cOUtrQMJuN&u>)I$>e@q z@uTAV41HYsZmA&Ho6%0Tk+3*17;RJVTUUI}g-m63C!=F6Uc;U9jRX`eS=wPz>XHeM zEyQ4z)^cqp`t0y^f1gYV-ii|`sbQ4Awy#gc!3>^?GzgzL89`k)c?sj0ljjK|jJtGI zg3t)w(fXtj4W4a+RFxvpu}Nbs=A2|?QnLY7VlCL7d4Mdc*hXREVkPi3VJ)JLM{0^v zwH@UeV4TNVA|dm58nZ935LGv5G-jQvOjGdY=6Ki)=6N^+$M_ewT%kt>OdyWJ9Voe3 zGMZ^bmdk{t8=~Gbwv0Zs0tg_iHy$o7^}$V^raPLak0BRzjVhyqrbgV6{cS-LDB(p7 zi`s?_pb9KKu8b1kcsL0Ht|s5FMQbe{Yi};{@tF=YuO;(s(jj&ZL^ zQ)kWfvB@S~8y@?!4m0BzP3e8mniB*KkD>$Tncx1B_1pC^BBvLH(_QhBG192QR~%C~ z7bO~wwWzzPg!fplGC2dMtg*^d0s}F1Gi*j$TxCid-xwT0wJUy}Lm8VJ?=G0IU0=Xa zxMc2Vf`zBlvD8?EAS0)P)IoOgr6>KKqS`M~e~b>J=0-d{L{x|@YrBG1CY5(?qqQz zxa||$7dUNDj!`~b9Pce)h{(RER^X_>`F2y;pZ|+EvHp&PsH9;wFn$xBIT;{h9>w!c zf*V{|B4DHPs|b`SU5SzAMR*mQfK*SD$i@f)zfHirukZ_^)I9LRvGVs66U(6Vgsgnn z7Gbh!WZQ^qObi2%fn!o=x+h4{&A@UhFbD%;SAtZbPZu{gv=q&Q7@|r=YsxZM!@#?` zMWP0tm=!W{8vc6SFbkm%2OPfhYcNLnafo;E?1F-thH8Wm$#n54loSU5m=MFkoev7P z*u6x3y5NhBQINLtJ9m|p6 zT}EhxH|{{O3J-|F!%-y-Nc^#y=V?-&E{)T+!4w-1K89HwgP5aWHDWLbgwQfc$%I3H zqCfJ!#ZKXiYT&Uk7{@lzBgB@Cd2Pugf91_c2Y{kmddRCHIPiv})=0>c!4bGYQq%A_ z!T}kv!~mIK=`l-^+J~B8Y>}>q3;K zDS|i*D0pa6P0F3H3I%IWFI|CBiS8}{nocJ%H42L^z1EVdPx2b};)uV5!3Z8IBdv;B+T$bMmkLP?Q^u{gQYnRR9@|6lpaHF~hTr zSO&j>=75n74mpAa5n=Ej3bOs!5I1C(&`}~%|FNhi)O4I@L$gp5$PxJa7@^S)*fFi|MC1fI_3=kk=61VP~z-*M*aL5VAX(YBR1Snbo zb=Q+P-r(|p7=aQ2n;QTHJ1PMw@DmIVrhfMC!?c{$J+0BfkPXI|McLpG6=;e!Rq-rf z3`ATUQ5DkdK-Ccd1e*X`72b=fMI;iGi-p2!+I^p%QBl;jC7=iFqMdeVV1jhFlmIZ)1_CZ{_$IU=Wf*jNsU*Ts&h)sUoWGhXNiux36zr773k5%+xV6G_F9PDS|_5 zMRc;VLsz6`!Mz?AfRM25ov2{#9%8r`?H$awA|S2NToF8Qr3mW)Y;tl!XjCD(1Co%~ zY=zxw^Q4f>%PYv3R(!t|ghY4ab4XtMO`~Gjj60reDGF!9&zLzT?3+qC3N|V_yNi`gi7V2)Z&B?Ld11bv+GF9Ppf@3 z;BkNmi{Pfbjea)(gt!(Ofwv z6_168gj=@Tt}#NzBSc`VBXr20S%Qb|L_2&6jI=qKJu>7Qz9txtSUrJ4U|TE+SdMY| z+P}WLRRkoW8YXq~q$NZ|6az-7QJFqQYn{f35DA1491|JCJaCMx6>Z>ngb0mMK@5lB z2r(EQP^P#6^Lq+g1X0(nBp_E(DB$c9;V1%LI0if6XrhiRd>Z9JRfCPVlehkR?x+;k zKpV0WaccCM-q)%QUNe2a9lI_O;^v}l?964TH|8x(29ArSZHE1Zh-(YOf!!P)>Shn0 zT5-d1iZIFpVxg2qr}XK#SVsU;%!hpO-*+Pu7|jEw%Btf|6`^AzlTwbC#@4#Rf=9GT z!{QWOAQ~5`LK^;-mV7dA7=mLV*pMnOJ4C)#Sxgu~eZ1pSu@A9^- zIU(K--3~TirCYwm{a9$?``H2S(`!0 zs8EMU0i^J2OLmBg&$(vgsCX!jPSM+yPyc#yBWp~^Rv*D$j4^aXlp_3rT^#z4?wJ4v zKlP1xQpl+IQ%3cXfk(tq2@WPf948bf$ zKoP`vI#3e=9>T-Cn#aH?zIcNO4plB|X5oYJ3|e}$E`SQaW5SfCtPi20hd5`A-;06^ znHc8{2Q3by9u4}hzXlEp2`Z9DHxvfIs1&q|gh`FIBLYr+{V-$v8f#>}A{G?Vku_!= z@#fOSD2+LXbeu&VY9b9^6m?AoVmLN##5)g-FO2|VhJ%kY#R!fR=tDbA?FT8|An+$>Q%ryZqQ;PNPW3Nxb#Pvv+-Py+u%Gy52Kd)ZD8T?V z03fBoveHJWF+5(UF5{ZT*cc@_TE_CTN{rGRT{iw?hq@wEI21?S2Y4;}x@m(Cixs=i zwGnJK?($_FF4H8ig4c__*r>`RvOtJv(m)+qjP}R*ipw=+ktTKg-6;|ViVR~lx zwa@p^sPQM5fv=u~w4MpyM5FCfabjH}qwocSoA#+V-Y0a9pCN;Fyoyx>Y0PK#5vq(& z#%Jq*7bJN$tDJnQ`m6CpgGbP-#9F|4w%|O2Ch5<5x;M)ldr`|?<<9VthkS zypmHDcLEBMVlB3zi!}X+w>UkFn41(xS~Q*}edPuq;}}ug5k~rGsoPP6E?YU$qAm?; zgbg5Bg(1r58rfN87$umj#yTW~ijxiIMm7XE5$?0`uqo$H2$fD~@W zR|Ffi(0C6Gc%-pufFQ1L(JF2C=g<^WfT_$ zScqo@pjJfwo5y`LouX)k3NlJe6w5@5)ahi~JwSuUE>B)*S!q};R<<% z>Et%ngf+N}Mmw9uh?UA0NE-_u?Ad4Z>+o?z5K%YGOBA-QBW`;Z$%h)%;K#h)B-gKA z1z7@wlu=ntAaLPDKDv!DIC@g!E8xXhBzKbe-%%;qTnCt8U`VC)(X~^bO zk0S~9Hv)yErNMI3PwP}fG|Ut>n_9Ie^R=-6L~~B7ECBNOKCho~hX~z>)YKr9Y@1fx zn^pL@!UN#i_E>m;N*BSf+Uk%VMV%&~kGWlB)C6Ht*A#fDiA{+yA}H?wwaK@}2Z^l) zK*NWS$wAJ|#X&Us-qxoXhEc|MB@(K7YiXM$rqvjz)8ru2YZS@Xe7i@mX(ebAN=zKA zr$EUJ0%}ky8j-puWL~f+<<%tFQKQxHgUSHtaiEBZ+f>bIfSZ#cwm7scNBYJe=D|)n zk(q3O#TBoU(sxDRqIt#7ycX{O@gU{|kE6QtZ4DEVa<&kqaYc}eG>5*X;jMou9WRtm zCb>{e9%g<^ffVWBj@ElQw9-dK2A(<5P?QRNgl$!j?DPF9FVo}92~n8Vcse0UQ_GYn8j-n*cv7-`%W@GJ$tuzk z9dNU`E9`z2Z+uT!?#RZ>(@1tR??~f(Mr`1YCSuK{E1lSpIx61avdR>6X}9x5Foal` zW0L^X$NwtUrA}>Mt4>DC0xtCYRvgg?h@0+BG|4M$`y8nDpiY*Jf6cNr*@`-S)fw^2 z$y>%@5HmM!=gk%y7dWmm&8#VGtOY;)xEpIgr`?^aL@u=RD}9;rf;8knYF1iQQ5Z<9 z0l?^?id%R8U%Z6xkw>0*f)B5cJo1t!6!rx#c=~BBgm#*S;n5d7^|Vd%8&+QQqSw97 z>}EbghHK#~AGnqYw$@Pg`L~v}x8k6y{;4=J%%XAjVNxVcdR=%!0g*^ZQ#6MAErR*@ zt}R;G!x&kT7RE)=meB&V7EfesUW1ZGC3O?ePc6Q^@@m5^#4uRnLT}`J};IZOuS!$r|!-& zB|PvK7yLpcM9w?5`f%R-v+`d0IDg2d__=go%Cm;wg~axOv1@@LqVgM_LrPL3vlTP~ zq})(TJX;GNA&THUiz3Yx(;==1JUqKX%9uKupEhXZxONpoN01P4jSU%prdNF78!=5> z`k;)C;&2gqf`d}5@_qw_uQCL<8BK%q3||!W8_Q4lc5855U_qI97P1X2f;J6D`lEk7 zmW!NYj%F;XIH1Bm#NnQlh9Wo=M?Q>X!21{x1?BmYiA?SUQO$@Be(5QE7r{VD3?q&= zKx3@T0Gk+*LTgqN_$i|WZLq@KrZi9lp42wD09xKLkkN6~W>Zp)bUej6U~)lPAgmfJ zMTg<@?qIBi1D7)4P%d{9!+{}!Lvc)L)jc?dm~wLwk4*3t9|;v|IHK}I0zS%9)U~+| zW!gD}qbu{N2sbLIGmGOp^AI3r3gme5Z16`+s)0i#i4Y7=gi9J?rE-z9kp!<1 z2ow%$V756jO0^VSy7X+9at6H4p@K$ocIJdY6-l1%SkmoTOpE1N2CDAQ#=Fg z-~14=N(B*R31Ux%C9cCkxUPlTFiQCC4j|hkM2Q_KwPjHORvfetm3Em10WJRJF2W&Y zV=%axV8R&lkHi%1))Pz&R85cePGS#{a8WCu1Q-G9ionHuJD5VtpC;d)#k5fZS$={{ zVGTzUq`l+6Xr8X1#r``L%Tm?YZNMEQZ<~kIxlF)Er64CdF+faI>0Ndkn@qzY;D`bS2XR5)& z0qf|eUkN{Cnt>Kv*qODSm*$Ait1-K?9@CcKV0If45Ap?8pRcagOdFgcc2<5V!=eTa=2t( zFv@3A(5H&*Msrti+Jvo-fR?EGP?%Yxt%k!KsxLQSf6x5(2WCD66<0~YuGeN+QMCR zlC+@{aL;sZ_JWMGwJ1Epv0P|y>iqEZ+rm=o4EG~XIxSQBu?wdUaFr=D0!*i}ih;E#+Hhh& zfyoLLW4O^7PhUThRz#{!9|K7d*Gsj=Ei*b#a^;{Dhv5Lys0@=rBv8sMIuy-=*hQ&b z^}woZkfvMDF-c>XadO-!=9>1aJ`!+BH;tB?fF_|M^$h@~D6K1k9g)TmiMmVJM1bmW zl1_;T5D$p>p$i|>IYd22s5Ot-0L^0ER`j%epM;zH?gRv5i9EDaAO0mvKW5b} z(p_cK`pDR_#1VC%TyIab2$BjjKH^vr+2)ey_zrF-(~t0S#oKw2LsqFM>UxP9RX_>M zfAkDQ9b>H_b<`^h2Pb40e(aB-f(Eg!GboH2RkyZswf5=6tYn6#pv-b3XjuCFh@`aV z)^H?9hQdpyty^LP5tJ5nptkfEp6cw{47U&?nw{!Gq}jl*!|<-3mVMN;9#_{?Gm74p zuYzE1fv|}XxgzLA;N(F=5!a!5+|kRVMPSFt5@{G#Di|#ke%rpgW0L!fBEW;fLh5K% z78Hz!T9{xr8zki;CpYSvDp0Sf$@v8xj%6}D5>mKi=nu_B#u;ZPXtYkzJbtn3z@U(c(*ZDnR=Ds? z70wY3h_T^*0Di#Nk>a2TVsQDr6=c94IUPhtYWi;KMUVWible>0ph#qkJ8%<>V-U?x zzWlPwEU*(9Ml~%=lNwdkPc%ZR4rH3>^O~pS5*50#i7CvsFwHOC?WE2}HFVMF>l8ah z_Z*-ItKd)W6ZGKZkpsF;eD@bS!hCu>2tSEtEW+*JFWqWy#hIpC;l?wa~LEbiAPlpNeA` zjSjn2TU0?Pve9`~vFD;MaP4D0opm^|hUF3M; z5gXdppll&FJ2F}UJnW|1YyfAGUaIKDt$EPu8&1^xbsICOWvn-D0DLEabUWI1u=54d;mfNw#fY@@`}x8d|3U zZnbJebeN(9Xv!#VVAa896F#RR+C+Ae)hgWG)v4;0WI{8GmbR$W)#iDN95R_VW@o1< z7MV-MMG~!ouS|~>)_1GQDvN%27F5_Ag-%WbMJJ+Y22(1MoH`0?^eNB& zM^J_%b916WK|vJaK&X`pQn_fj(#K{;T4~#-w=LE9Q6qxZ2@xI|+ybUWq{)m6h3!%z zH}3((ORf?dP$r-yusG=>Z3$c5>YW)B=Rj>>(a)dV1w zk>=-&STAIBO*D+5Do>O?uP8UA+}q*?v?%!MbotWw8sFKu%8a@&pro5s%1t)I3~EuZ zSWM@2P#t6Y4Unk)PIMsVH?(~sgyXGlS0QxH8fzbVC zolbR1l|C);N)=@YEu*2R>*bEL*odJ@w5+AaAiOs$Kuc%Oup`spp+VqLoz~Y)q`HxSPL@QJ)EhD|RO1+83 zlbTwoq72SEa+egO+ffj?fq6%od<42G8BkcSVoY2n2OuNPH+te zmHB}y-ZU{MQv@lz;wOu&%1--RKg@)Sh^{1WR=7r4Lmlv!qIbS_cnM|c+R~+mcTUL6 z>I@V4J1h9eur0DpobB7$DVZUsXMO?R*{wW7shDly5USsJl0YlJcep6D%vtc1RLVpv zI1C5w3F?MQ8d3~F0Hz%R>{q@4xkEx7!`(!tb+LgW!NY_QsOI-MHJ}ng9)<&Acut^T zpkPV>aigNap@v$tgA0xMRgHkTLo*1Tj$x=xM z=`Kaw4efB_8cGtVSJ=Sg+h5?tW`!9!8E{DN8xn9VM9LchEan(Zt9^!of(S%iQ@tV{ zcT8|%$nxk#>9|VED&>R1qdEK}j0EG-r6?I=-sG!724H9J!j8yJ{2|P+H08Ao;V~K{l z8B=k~Ra+#%gdDN?!|)wHKUY+bxDM!ks76fmEsJT)025Lmto3A2np{Lmud@|Br?vIG zJ@k6=S*&*ZRXFUO!R!~y_FAO`u;H6NDH#$Yu~LN&*lLGsh(b*H7@DH(j#uLuus9UP zX`6$9C4@Y-M4GQalY8QNkFp(pm+4Zp!@1{TtO4bUt%c$G7SsZ`A%yf-Jbr2H95ma+ z?HLv2*@U0_g>8(Ichw9CDT+~ws=4LEZ9IOelIT<}f^6`S;VZyn9SWF-xGYCwjLsqv zqgIC&1Do$;Da|Z#Ye)r3u^!ODAx7Y0X?GnkTEQa+a5Xqh%Zs6EO~xcBb?Z7XeB*7Z zM|bzZ{)>Of-A5+eCYnXM2UazYDl1XUwJU9KMoE#_A=}`H%<(leP=rdUgsK(~gUg|vrws?vG>uLWbepwYM2$1!)?&l(@&7U1S(H$WxFw9It zMl@o2CGe#fflw*cLUdlJWuR=jFj_EymA`J!2(J(7W|CD z6aSYOuB;u@ycN$_sLWV!%onOI2oDT(iiVYzWEn`KOSkh(t@HLnsZaw&_?(uj$rV@& z7T97m`J;++Ll9R4C0L#nX1JWPb8M&>LvQ*B28bx?+EqcDsTN;w@tv`RUGHXrwv|zy-SbJf!GIN8GiLCD#x9t@m9FJCP<=8+YTt7dEz|sBLW;Si4)pBN z@Rn~O$6Ve{6~^mmiPn(U47VfaFpz1vRv>KWHrN1CdJK1u*dG4!wC?RnH&=tYT&FiR z=WaRa55u?ox$TB)ixu#K29HOIt}e+c+-%SExFt9c|Mt2Y-({BLZrxMP7!N3DhkKK2 zJf5!ii?RY~V?OP^pEH2@X!eRBqU+I_Hcx;bz`amAL>Idd z)C*`VNLu)l~D63c_ zx?)%(0KO21;)*9g#0&&5MAdm@hJ_)v;jjFgo(h-QG=B3=vV;#cwuX_3K87W)Hb5p) zaWl9SE2RXJhpCLNF&SQ3LX-z*I3i`mf})7)HDyIMP{ie}#(JVPa1;ktYNX9yKL7*| z{KSY&ut1X{3uewm7Qc>Yj|e~bS!j-AB1K)3A&A!*8smI(?_mVdT@GpcFuZ}p1Polv&oXE01U%EB80&83Yqw)3^ zdoJ2TKlpm%3ca}sKF`Lh;8jG1Et$WJEZ4#{vl^wZGGNtC zdKH~tOBN(_t744;h|kus=X6X~X?5b;f>7#e*QM6JT^8b^2;ynN_3BlUf7kMv@na=zhJ- zpS_r6|G4$YWaQ1122wk+$=x9Wn8g^J+)RT;FkEuDK`ad6XMPGb>#5rs63#FszY!-i zrqQgENdqQQ;>mT*LcjR1#w1AO;rdW_^KBWGZ9%p<$`AUYjn85*v4+_{55j$WVxHAf zQHFj`^v#=c)s^JAbH6P+5Bt7<07Wd~uG{jIt{OG2vkkSDujsY=)DUyMvo&;987UiC z^qocLgBdk_w^eP&dh#tdKJVj``Q&Yf(-a+uPGXnZR*OWsE*3kq>W~3J@GszpFa1`B zNL2?M<&wUYC8@XoGC0xJm})HUkV-!5*L2P9vzPaXp63Ec%``#42hn7-XOIYDTZ4riLOthq3YB;qRv%Gy}7VA=?8Z5!pVV zqGc_Imrb{sef%Iy*&Ai>9*IJ7>agjNeoZRCg=i==sxUN3OtxZB;58k?taJZ&qGqb{o2;#C9A;ZM=-k!cS<(=x+tbi7UM`nsfK>8^XWPG19i-pX?IxiHnc{sK;>vXuH4 zR5;LPj>R>VOo}`sWPa&DIExTQm0&5Og`dXHyE;WJj-r5Tk{1xmPmtjdrGi*0w=+%l z+@dv3ts8?UiF5hj*%u>(4XsMd$9y&Z8W?dZin;raZ_Z@4U&*UcLo|!I<7yGP7(Aq(5^C?>u5#NxJ33T~Nk2l+wDW(m+`tdPbFE!|=f`D`&^*4zofq ziHG4JGA-;xQ^yT;Koj5TI8+MSk}R9S{wb2~J-FXSNGWzm>b?W}#2~xAs=liU6?jO0_N8U-16;kE?z=X|IpbJF>ju zFH$W_=}yTt!q&*^;kHX}`##IZ{j2C)>8+_Zx<$mfw;fh`Mi}p$j-wrR?g^Q-fP0Y|B5} zJ@<%xiTn6hey>lii}pJ;D=DZ1MsVQErxm&4@VT_U=iiu}6(p-O z*-obHFdd;C-hrn+)a+!h5xPbu*B)tx{aO1Xi^8_>&gn?z=_23YO+T`r4$f_L;KR4x z^>_l7II)@8!&d$OF; zmTu>rd2MT#Ovu+!pF`G?zUn_*4m`DQnz_8Arm+;F2~CsTt0Qe2Epf_jdKf zp0O-FBi_Q&&^mY}XtTawp4S+4*Wr_ zZJ0Q+<_Az3S8?X(I$;hjtFAWsva?>#xO1-kqyBD9HxJP2Wrb#IeSb-7i_Hj>HF_QB zI-RVY8htQ=KlqDR*@t$6t;6IypY9&9J^b^RKIe}9{g=iTwZC|C*WfylhP9yp<(J(G zpXJ(F2@hoaz`QkKwGzy2GOL)jXZ!$bO67C`J?qgx~Fv2L$m58S|z)9LffStdgf#P z%={R?Y=&-M{CMOsKKjsHL@t(nk;>2C+@s+&uaDKME_UJGlB#%yGN?QiJEw@$MMN)> z{9xq1Zu8;ej0J0p2b%pBxG=B_k9d9#z;7o%6Ng$y%~y-Q|CuTZ)BiWtY)yPm{3i zzys`m&|7_T=&$}R|DN0aIo4!kRpY+`TmCyZoR5h-C92ql*dSrOK&wJ7 z#Q&Ap{7>bq_*{#WANKSr`Ip;n$o*X9y&my}D#QYnRstxu#DvxOXy}CV>%WSPPC#2-ZZ1KUro>f1wabDQC(69!kh5%G!-8!hXvc=Ei~LzktuUs~gBf6jvz z`6KvPQAllF2Zd*@okxhaBpQiE8<`qajjpWn>!D`m*HP7ps_Quq8v7&h?++Eit!XxM z+t#+LMM#Y73^YFdr8##)Z8`3N_3+!tui`(0oA+BMfM>wBohQU`BYA>~p;ZlUpFVHn zZC`;0kpFkTE88B;)7)a6fU-e%o+sAXIlJ{)_F%FDN5gNvU*8P;58ZI<8g|>B1{RxF z{0;qE*<6r67wi}3xUFR?^1NHir#@TX3AvMbvsxPi@XeCo(TV?W;m$8OS4qZb&(Si^ zV=iTZ))^lkQrz zMgr_sVe}kT`XcvlmDk~$>lc6V6HkmI|Htr4p5SB63tsT_(>xKhe8T?d3!Zw~rujec zzUW1-dmTP5=jfeZgpaeaM;>|NiIbD~55-|$^27wcMwfk9tK7L0{kd}|`tsXqNeMfV4ioB@e--y_pXsAf61TZDeJ6U7DbDtm2_;q_Y`R;l$JBKwqtW?~hwhWR zKSfVlmh1`c^6&M+J*o3a=o7S@`Lt|`s_UkF+W|%FTE$=-E|&HZW^Jfn(c86jo4A<2 zcew1Sv&(;M{7*7e!VMA{2EgD$)HRKxvS0yU19MK%F0aQOy#{TKycsSZgVtx1m{Y^d zdWV=pr=fRx38UKDTg}w~dxt89%(8GmZ~MDMj@?O2{&{PxRxSnh*hl}$p1>(|*L2;} zWZO3!1J)$yv(EO~$SZSqu3X_#1%B->VwmZ6|8`n{j3#LO9QS~$Igao?*@|qr+soKj z03@`)GLIcW!xl)&!cVWz#LQ zPOq~u#=@MI5*ZJSwziXx`v(mI1g||syhF5v{gIY(OThNcqx%AD_w>EF`>X5>nNw{i zHWR<}t}`yA1g^qrVYu6(GZC=Yb8HJSsgAAC)m^)KiCd`fZhsutdB0ShC+*-&0`2g+ zOLa`9?~FpF6s4u&@h}KpJNfg^V555WX17z|7gcr$DL1UnX%+Ca*{M9ITXuL4u>RkE zS8h(bO$LUZ$r%lu?64$?EDNe}#0OyqJ`JDsm!buFOR|ohzouTYbSK*32ONI+=lBNu z9VHB!bE+clCLAN{Rg};vZbkCf-d@;0+b^RnEe2`N+@YC^@ zdW}B9gfy^oR=P;GK8LKEJ{=iL7v7RU#=|1-{+{R9sjlR#aVu%7)K$i=7F?3Hbnj2^ z=RO|mGMz6yz;e_vy#x%kpaU%?K%X0zSD~A%^W%RW)ipYz)r0_G zgQqQNImnH#ilo(r?bGMPV)xlO^D@XTGw9aGyyIKqH#Dj-bz0r>5oAKK?sPt5E|sum zl^LO2r$e&*w4kmac7?IGH}s!$uc}v1R*Q}lA5qWOZ$X&l>41Cz*z`($ z4S&^CBw}7=Xm9ALd{*&Sf%))a^CRlpTXAOIUq-g`S~7nb*~)9l{KaVP6>0NtK(127 z7wYO}s(k&&L@RP0Y+VV{IHDKQ_1%ewLu@MEhRUSk=+K~dMU+Vy*YL`V7Tup${JfR> z8U5^^?pN2Iz%8!5l_zjMs6Bz}O8~bj3x2JNBID{+IL-5}$_D=^h!PJebIa;tX3Sfr zL_=tY*sS8IeBv?+z$&y9bxqqPON=ysmmN<{{cPw*56b1*)DOrp@pn}&8O7JL)3Ls?luMBcyQq`in$I2ES)<;1kRRoC9Rja*ic%I|fH{WpR+WXQgcGsRaZ+GO`%uUuld-m(fSlI=B zJNZxJ9|id&p3&0sba>Rtq;pa}uc7G4A0@`K$l%f_t_L z<}+Q-KgQ0V+A=RQrVYMV;4|>k>$=F2-f|Z~yHIZzLoe)LuG^G0T?5;*ixYdp+v(+h z-uvKLO*sd9dmZ?`|LOMTI?U8{;Bp@w-4!^%OLPE_@1OIf7-yFldl+)H4t(@u=V*I7 zF%4kS9>d)uwugVn>7(H%?mXlzxL4cfW4zg7c6v)@5k5HA(t%I;1eUR7t={eNGOPE_ zm(`DW*zw=`9XnV2m0QBIP{);vJ&*<#pzAA0=tZ=PEa9fOWr1cGcmPj~Aiv~Y}RC(c@W1`eh=@TNx#4gR95omXBxi@&+* zk-af~#W;8J^>|H%wbzo(JPX)!%TLA07l5t2BFzi5Ds3ry*5U;okSd?I_(wtW&KruB zR%6TJiZ>ivS>+mpxNPwUJ9psjZ?*neuxTo#TA0BW4Stz5do^mARq=xzhTpka>q6JB zYGI_!ff+Hf?bWCyzc$sw%6*-G$l}Ag`+K-=e>!RRZ~+hN)aUx`plOrscSwG`Dw9*0G+fi4#p5n!iqM<;7|b@0)0%<5%s=7yZ#Ip1H&D%XJ{G_`|QsF4w&)jC!4J{dUr> zQ0y@DoE^Y#Cm;XVbLJk>uD1i-H`nVee5iJM2M&!ty+1b=T{eE_$)wM_@?_Ha!y6N> z_{N0!tR5P_{_@%D?hAf9`GxP=zjougCzwy^xjxUPPmiDH77U#S=HB=BKL7BkI7dgf z{Z^d%RGgjb>OkCh2mG6>U2vN7y|R&v;w^7~id+5<2QEc!?orm3(mG+o$TgF8XiG=T@BWnx6CT5n6x3aO;bCY>>sA zKl+!pepl1t%e=*)g=6JOfy-Ds-=OX5=6s{}Wa%FMBJ{-;)IA=(Hr|-Pxn56YJg8=g zcMRMSFgtG^=!wkZz@Dc6JQnTN?zkfY&P4R}cp&50)xQCcKAybu=`f<8^_!j;j*kT2 zzI1pseiA)89$w+!%8s9rSNq3ozIf2%;irfHB&2f-9@ru{@3eUSVdlbgepJaRR*jDRpgC(s$kx`HXZAecV6ue zl}Gk>`01$TRj{L19^VxV9WWo)0;KwS_QiK(`h&iff$vj%`|v8PWw`sQyZoPRtWs;S zR}PQMV1uzQCIjjY*uiUtA4GTgS!M4$$lrc+csb6)3w0PacLsUkb7&K0d-@w+D8rps z^FKb{MY$(m{Mev|yt^-nWghd~y+U4z^@6_p;$e8)?!J)cRPGF~d*(T$6TckG9Q4i| zVVS6HoWji2SF7-eMrN0yvmF3I3C{i`mPFFc3f+j zTXtF%W5r>y7Ox`M5gPw;ILNpoPaWHn!_i~t8Ctg7(ePsKNRNlt@*)5{(pSgghq=lI zn5Pd_hQ}T|VikSvu_GBE$D{o7e@rlo&G3M3vIAfC3m2-c7s`G1?u{=7rvnmcfxHXhHOZ$a+iBhBz0|NIs8C-U)&z#UUYz0yxoh5ANDy9pKf`Nu7JZg*F)p)Q3q~e+O?k-9(n8O zzn#2=Wj%yb;J1^9|K4$r&immp{uUa)@1bTfwZY?YkeltmkNgL%KK^jcKLc-;jptv0 z)m2M$fWPB*pL{mQvWmiCX zY49{B|54C_J~+3~fx{Jl3r*gg;%NAYAM06v&eIc)SDs8d@6RZAviX!$R@g(8MPK+i zP_ryTjXt#O2KsVne7n8?Zt*^R_~bLQ+kd;|`X`_Dm%stvR0nS7SwNm)2f~}?vgRXIQ6l2U8h6*;~xh_)^MCDiVPkH+1mkIMr7&E-s{^tLd?m~bNq6s zyTa!Jny~B~IV-S}c|Q@lx|n!F&uS>hw><*;mOepxXA3KQ9`{;w&jM@@zfS8qeMQz5 z<7MG>&gcFHoqPl;-rc)a?me_}59hx0)L3+`J5BRvARoK<0Sa?%odYnZh@2ABQ)18i z(CX#{+Y+j!$kI*k2mTttdbcfe_8Qq6K|oIno;N1vO}tO?gx7jobb{vhk-zXIt?hX0 z?LfIZ$K791>nEz4a%IdpDD84AvCNzTb}j>3E~&j@D-kVD3S8N?N(FR#l^%HMkIk2R zb^h%A>}&iLSFPQ6>+lR^hJkj7?Syms*Hx#VuGMV7qv5@KeGZg!uCCD4s5zIq2Go_* zYbdu};wEaw98y!QPw_)PSMdkm+HGu6&N<1G-&u+Cg+8N-9qf5KAWU>c(2MjAzLS0^ z{+orx>2fr z$GgCx2JwdXm>*<#0uC2_bml5r zFqlV(z|=uT@b%;{Jo#I6(C+GZS<(l&QU}=L)^tM1Q4quMU;auEsnK==Jam82mGe6i zscH6)I~soJ&5Zg(%<=Hl%Ih8vZ=&(n@9n&ZZ%<#uUySxLbkw}#VscIYx99OQ~1QMB3#=lI*nH@~2K*y{J8@m*6c1jVyMqwNKpU8+C%GxV#| zcLS8WOg(t#=zuWC6+xlp8F264c{{?m(*0sTG~By&6(v46G@&CXx9}n2w~u@oATIQ1 z{Ns0@VrWYa?+Dp>GU**!>5DLM2hYom0N-4tv&Y26zW;9ntY9d$xa%g=0;8Pt5d(pn+6~8PpEUJ9zi-)_9Jo3a7 z<9HYLB~K{q3tsT_)2hQjJ5BiThZj8cv`zCHR&Mfh!nl@`6Mh=oOP-iuYYks>74^Utpk=paf?ek{iVTA zuAdC1uAfY*CpmNOlQTRQy5JSQx90Qs-@wY=O-0}*KPoJHU;W=2av$zqx0V<#)-P*; zRdOxys+><`eU*Jz{4o63=k|H`1gp<#_hjxXPAco;cj=?LCZw*7|LhOpx0BY!@44tJ zyX74~*8y~OMFbp=wdm2&@K3%Lv03g#<8_|?`G#bD!A?WDjmF1gjuV5+Kll@2_jNp? z=hd>BxOUE06Hg;iMCbTi^3F`&w@6l2_D=pPgO$L6y4eoY|1!A2D}KH@uecSx;`n@KCeX&$s(a_|_r^?nXOM4>dPB$)Wge2fD^z&%^xg6bELl z15f_o8hhYwyaT-A?Z#(0Ot8~|!>8ixwB$Mo*<0*gmai7xn|BCYp#$@i-?<1soF(P( z&9ypl8a)c_WQo3V-7FV?wWBeaDU@}t^dS?L*uWd+g*{l@kbp?_?c{r5DVRHXbZ?|4~H}|r@1uyx}@qhSvg#};p`Lf-m$S!pW=CY48`AFPmJa2z@SG{Du z>VxWv&(hc2$hP2z3oM)5?Y#xw^jdsJvqQJL-rOLpw&S&vZ~l=Roaa#5JAh}G{sa?_ zw3a;k6@=}IZ=fX{zzuXjhT)0V-$31mvn0BC0eSzgZpnwMy|v;RfSgg|gYp+<=(?&b@GV1C>fA%VM4rBLpK*+mlhD;~_HvZFUe~tH;Y1@7`^Z<7|AiES9(mXo( z{Xd1?zNHc9^P$zP8`lE_P3OUCuH5`p|Fv+uXwp`?emD*6*ZD;<6|F7^Kwod@w}k6o3Q{=U|DoPeDRe3yyybqfdGTPwP>cV@ zXM1Kec(={FjHe&eY6tc;e(w7`>=XVN9^>mlK0i2Nj;`DXy5IqBbzp9MTEcGT$dx=Lrm5Du#YZuu-Djuy4ItltTg`p_~x^n@2S_ggom@#vhl-~ z%bxuI?R^Q@Y)M((>Hq%D+?mV_J;SIYjOM!o>cFE(8`O*%pspc0iAV+?l|__RR7^r} zg2n_i<_x%iQ5mAR1jKnr9zjJ(h$KdM^o~nJF)oCNxMeho`>qcz2>F)!YCCo6obJD? z|E=oYuKK?BTdL}<>eHvY&-we-Z^p_I&%d)cplbY99C{BhEWt@rU>wg<_bvit~!w@Ho@c zp@!cpp`eEydInHQbwOJ_#sH|n2@1HDEZ_2VPIZED(um++B@P0Q$*{mTj0<2Z8n@cv zeFnM%U>I;@#LuXZ%0xDZw7CjTfu{t2 z$SWwO2-A>^j}+>B zNTNm5o7D%?E@I*5c5p8q_ z05DDBn zXu9q*ABU3g3@C8{+Y+2v0&ArPR8BG|>>V7E3XlR>olh%G)>H<~oS^a~Z3ihU1gy|8KMId(zwf+XZ zxc0!d;29?X)*`UERb>W-RKJ*C2-N@fV1asAME%$&*v(EK#^)Iq$1t?X z8!=$S+cu~G{=Z4T;~~=X#G|2=*$e=B(qrnC@u@GSPbb-vyrn?Y_#74&YpXL1&X=Q`~ARMTs2NmGjz3Ziq6AWUoM*Q`kMh6(^ zR&=0|qdbaIKqA4ZR%p#Q0|1t9Y*C`x;Dd|d8fgc-ALrt$Nn5T^MnAg510}qlfeXhG zju;hfMQind0VN2mU>ma*Px}cPtWDQ_`%faaWa8<&jOESbvI>Z&>-W}|utI0eOFnYT z35N8f`N9{Y4X#Mzs{k{X0-mib#5c|8z5}@x2MGgWX1$h+^vvTr(t#J?K`8kf666jL zB_2&&lyGeoZ*9zg<(b&U|5yUzN!1;1E_dDKA4LGaaJ75f5|2k5DoQl4rrE60nj8Z_ zAXh91gKG;I!q95)29b~XUKEjTq1tZ!rCkR06JHU*Ax+3LzzhMB%f;?^K8+#3PzBsx zdN7K;zMR^f?&HW23vlgQtF|U)0KhV333t31>&GoH@sGTQF+J3X1Dd#CB59>@d92!+ zgaPCW7)ppY)=yeI)S&*6U(TOS>Q=WNt=W{PZs>3_4UJ;V=A1KF544P^WP z>z<{!+BD1Hl$6t*$}B)bKj>DL7gh=4a%fw8Vszc(KbAER=JAGl0_nj8xL$O(%gcf{ zFpk78dzRwrR8nSVw3|(!#49g`g+slVY>g_vab=jQM%iwN*DTZ|X#! zD|#O<-C{-XkVxrMVe&baCLldc!aljfT@K47j4+6_YKrGPlz6kR!@HAk01MP#k{Jl` zkmVxsMGsIwKV?&0T4#1}?<6Y>fYc$cLmsY!nlNpoga#r*7#vF(+Mc>=3gsV9TP_J1L@lH2#IA z;O(a+n#RFnnIhiiqDIE<*?}P^%gI2+$pT!M2-1NeuIW%$5bHKdXRHed`M1;T+fFBGELhI=4>po z_`dfW*a!edu{JCO6=E|=Kf_0RndNGoV5W2E*UyaEv6~$NHeL$4c-3w3@r3uS-@Jk6 z@rwQNcE5|>AxiR~JMq+_kDySQSb~fhp$r=4++6NA4>^tqz)tCb6*er9=Ea4m9V`~z z^FGolp0D7PQfxaX(sg+@1+df7Hk_ryUi0}O>}1cil{}E!&}8)Pq2DU%7=vJ>Z^rRe_9po==Bd{X=-WYxbW|r^ zXI6QXUdjy`txtLa88RdxBxuIwbIow^&gVgbnUjQ1#xJ|=ui`j{gO7&k)RJ*$j1yZp zuogbgj6*lm`pw*r%^UdCMQS$)RH*>hBEW||TX!}SY)N+PIl;yR3~Lr@1DGR753ta6 zE4kk)YTrR%Ne57l5phLjv|@q#@vFMt-I#!Ty(d`CZhT7^7iCl17*!{0jh(DDU!s0!eta|!+~8E9B;}cO4^%`_PYWRh zsZ-G-EICpWI~ipeqntMSEH%dDW&;qSs?maUj&ng@{yg?{M2cqlc84IBP5rbLL#*Le z=jBLHm*Z>*S>oj=LK6g;rI2hDfp8HBz2;#Zema>jJicd@Ol>7stm$4)QQPksX|lv4 zsp0g5Vnmo~Z-GmT?hjr^x;tPfSq|{t1xcd{F6YD)6YnMsPC`Le;r`c$n0rA~D(5YL zdfQag^ z0k)9()Td$Ps5;aeEp-9dFF9#qjH&~C^duxDIB5zj<5~1F{=gZz!|IsH*l)g|hbO!fpk`{c-iH=hadLLXnFN@BDjU-Me`t2iCqa$?r*Rvf-1=gO6C zdDYdcJNhd(F638VZoJX9`s*(j_*N7CZJh@m=s3%j2P6wd+Z%eiv;W&V`l~oIZpFEB z1>W`hwB6kfw=(GtBRNvU7DD14B2fgI&tft0q(BbdbadgJukFB#o&sPGXP3bx4=%)r&-J} zE4q*uJ*WWJELqW=P|1=mI$KbnL7f2VeipVBj-o zcizrd*UJIcCDmPIBA7(qr3$-D7UnXf098Q&k)^>J$U`*WD)6fR*I}{u7L&M-0@{gD z;jFY^C!#H>EDIntVqNzyeh4ewv~!L$9A#rv_6ZzPJZeGUR#U9lkI9TX?2dLj5DbEKj7MP@B1oSz zKnPle8iS8)0Y;(wB>V=-b!r8tXCwCyn*DbLgv-X=3Nha3ZdAn5v&q6MsQ;c<$DPh$M& zpe=zXX0`H2A%y){v!kQ#nKoT z9xB#Axj+A*wg*qRm#nEZn=k-HXJ=jijPs*!rj&Gl+-cwYMc>#twx)PNh8@WilxBJK z2NTMLOoxX6R<#XvaCvd@qA@W}U!_0)06#tMWBeRv0pfbV3!+p~UcUXgg1cJxyaSrB zAp`XC3LGPK5FP+G+8d0CZ@ez!;e#DdUl3lixO1@M>9U%e4(=W7cv{CeLEX%eOo}w5lZ_9nI&Cv5=AhW8OH)3!pDO zY>AF0pAy|te|Y$C{FAHX7gE1iTyycx^u-l@4i0Ww-kZL-BFBL!CYLs1SYE*s2-WkD1(;d?cg#Z;pgRPwKjUZJ=FTwg{hBm`0hr-q zUEsa$V<{k=#Xx6!t7bBQTV8fOZhhbwsR!YA<4;v^L8^sq`^jXZe!$fv0OWy{`!6ci z!*XzaN5|gF-8J2vizi-t@srH*0N;<2BfkghZtCtmc>c}H|I~xNtEE#PJXi1Fy$&A% zcP=i=yIP;+GG)Oac~^UmvOta(`d-N3t%A&rP1mY;b8{?Ot@zFW3i99&$Y4<@GEwDF(c6ZZ#)OX!(!-t2ff%G@sw zFM^?ETNwE`C&+?9m<6NhQ7GIW=tr2;tS-|G&SODvRlaAh%b;+ z)6|Hs$!;NcBfdaRO;aPjCcA~)jramNHBF89n(P*GH{uKA)HF5XYqDF&-H0!cQ`6Ll zugPv9cO$+)PEAuIz9zec+>Q7GIW=tr2;tS-|G&SODvRlaAh%b;+)6|Hs$!;NcBfdaR zO;aPjCcA~)jramNHBF89n(P*GH{uKA)HF5XYqDF&-H0!cQ`6LlugPv9cO$+)PEAuI zz9zec+>Q7GIW=tr2;tS-|G&SODvRlaAh%b;+)6|Hs$!;NcBfdaRO;aPjCcA~)jramN zHBF89n(P*GH{uKA)HF5XYqDF&-H0!cQ`6LlugPv9cO$+)PEAuIz9zec+>Q7GIW=tr2 z;tS-|G&SODvRlaAh%b;+)6|Hs$!;NcBfdaRO;aPjCcA~)jramNHBF89n(P*GH{uKA z)HF5XYqDF&-H0!cQ`6LlugPv9cO$+)PEAuIz9zec+>Q7GIW=tr2;tS-|G&SODvRlaA zh%b;+)6|Hs$!;NcBfdaRO;aPjCcA~)jramNHBF89n(P*GH{uKA)HF5XYqDF&-H0!c zQ`6LlugPv9cO$+)PEAuIz9zec+>Q7GIW=tr2;tS-|G&SODvRlaAh%b;+)6|Hs$!;Nc zBfdaRO;aPjCcA~)jramNHBF89n(P*GH{uKA)HF5XYqDF&-H0!cQ`6LlugPv9cO$+) zPEAuIz9zec+>Q7GIW=tr2;tS-|G&SODvRlaAh%b;+)6|Hs$!;NcBfdaRO;aPjCcA~) zjramNHBF89n(P*GH{uKA)HF5XYqDF&-H0!cQ`6LlugPv9cO$+)PEAuIz9zec+>Q7G zIW=trc;+L@tsRjFe47K^5!`NLSu*+my**;O*lE(!~IQK;DmN;%*>Tt;RHa z3$FlrUj8%Q@iKGNyKY6*2BnW#OF5m+)RPNWBph$)<+u}1iH0<5TDq+P1K^78ag^yl zfxf^8{iRou*$;Y0U`5{8l5Gj3B*i59gu0>oM7EuqcRxJPF~axYZtF<{SCJq(kiaC9 zz!D2##b&HlXkM<+$=Jn3%pJVI*bv*QYEk#{Gr*n02@o=a8$fG2PQaEPaRIMB=3A}I zSRYt`7^R{uOTduBh+OM}w9}J-RO>{5xOZ#Yy4QE3K+=xkiQAskcr>xbLr5WDbhHZ0 zU-;k2OZWk$$wSDYWzyML==nes}fXqIzIq!{$|Z%CdQMF{0nyD2x4|5y-*V-9@sL?=HMt3xS?S&>(J6!~bg4)^%Xe z$$=|1#Qf4jnAh_in5G6z(V#JzG6cKbdPyh!R2{ou=5rrh6%67e0feoNBTo@+d@eB^;5o7zE89d~OOm9Z;f&6o~0WO%YGKrQa@sZEXCk#?10Mu}%<; z%%Bz{Y9{pk-h)*@5n;ZN0U!LPR8aqB)an|mEyExm7A(8F#4D&Fkmb-50;gV%rYF3c zEdTHRJf17FD=UCIxo1obUJ;2Y4tNH2Sg{aT)Icq;Vz^GLJeqo)06jC%3?!3!iMciXTnNdQ&R}xG`AMgNt#Zv4}RQuK0;=(?Nq!;Kq!)FRJ{Xze@+0 z6>e(W*i=>$wXz$QP_)u9Ti=VartuW5HuAj-IW@TBmtd9#a~dO_hR!ZoG)9&H8&^Wv zfhR-=#}>+dc!c5uu<;dY1~mhC`iu>l=%E6bYw<%e{uEtb4v{<{4{A_eA$fob`XH}F zEiVAJyi&+I3)GT7{o`dsSMqVmD5=380@UD+W1!)CpkSyX4W05h^S1WE;tCavNViTEV6w}h_^0FA{wPW;IK$!}s=c07`&RN0odHWDg0gXk{{<99q!OJxOy+oin52E-Gt zULo=9?y7JC4m?ppeuRnw79K7j%UITH+Zw^ePv-wkA0?hEYUoHq#fBr1boiGY&bZnc z^?u&JGvtTGpf&U&9T3NYtzm(^tR#)%5qOdmp)MVfqJSl|t&M1O;H4sdLi|_!JHdo; zk%L-xJRL;{^iE!4XHjuk47EcYtczsv*@CKW!}tT{vuzq1#3jtWp05e+%2* zacZ};qZrVIjZAGocOa4n7d)l0Ywub$S=_27X`Pn}r?wTobmwcU{L8e&=f~e0HGWxS zRES3t6RR(>deE>h0d&k~Z%M%i57zM*Z&=_bm5T;>lBxIl3?FJ__DZ-vtMRN5Tg1{M z?+!P-*n?Wg((SD+Is{@MGa8zLROdj{t(8s{kn9xuY5H{1@i;hvW8Y>geBk^-Vqj0#=mG>~n4F6g|xFg6xEqx4QrIw4t@;K5id@rQ1-D17^evj&3U zWLdImw_*wx-R+imdx*jJvc&uWHa)iJMulI24GKs+P%AJ#w@@}n{O$U(PDUz*DjcTi zNwB(znX`B{9P{!S9UZki7Dl*21n^Hr~M4y1l9ZI+E)x zOeD!+(UnzaO>;9Y3>Cx;3tV~10uU{l#e0f$Dt9~&eR4*CZjb$9{QB<&x8Ay5FP9fC z+;Xc~FT1O+zT*yKx+S$&t}K^VUA?-azjEV^H{5Xd-F@%c#dSBV@9yrsaN*WlA9#SG zx$P*+l?PljXS;Hx>m*&dW%Z3%bkwq^!!%#DfQOj}nmXCnh^rsA zzxM^Gb3r~Qid-nfPB7s*Wj^o@JsoYZO!x0&Q0hqosxl==PgcmdSZI-&3cl=`1_Y#} zsYLHX*f`}~*ISY14J4z$FO#lCR1Vr~7J@uWd@jSj8jH$Z_6dOy7NErVUkVDwiiKu! zK84u1CYb9u(~t7eT-Vg1g8$tEMJeP!@V~v21&d;%94dl3po~ON!}g$Ih$~PL1BhAH zxk8azkzH#LvU|NV6hp;ujg{pcRG-l%yIdkh6D($AoNyWJ4eAU453Ljky_+%5%Mj>h z58WOAK>*pvYyy-)R{#YTxg|L*;g07xSvpGMb0$G1()%oBk;`1ApX*3|u!(cteKDFs zlT)iQilm78ES|MJ|6_|(Vzshv$iR-I5~}YB!~=uygx`Ktw({Nv4X%5V4L){NU^>wZ zm+2(q9>!0OCF%|_IplN;lx#6%22noz-&l~Eh+t%P@MH>nGh!5;u@f}MM?&X&`mVr> zC5heol1FGWp)x~ef3S|MSeaKvY z%DaO>8AwMzY7IW7igYmL71<%u0wrVU1M?9@gYn>U0EvdwH9lZLk}U>Mpa+&WhIjpi za|Jf5pK7A>k%^oIruv2WP(4h;@OWhc6U!msZTXCOUmrCk^-~U!-FPh|)1jc#cL)jy zVp(&|l~LmV+b`QwVuJJY^HGzMVUHuHne68X4*d~gr$S-MA+UeLHw20mbHqXDwnD`^ zQR8i1LU>LwffLE09++|?3d|zH0NE*EirI?R!02}Tn?GqRABe#=&MVTL(r@@W?9v@U zFtcJuz3@c4R7%#dLro?h0D)YQ;LG!W#LFttr!tepz4p@HcL5~mV=~2Ab^x6m3PQdD zb`}2f@8U83UI#W|2Mj=vBa}USY0-V#YrL9~bSrD?Tn2!%G=Uj_EDwlU!%H6Nj}wXO z1h>|Vjd!Hu5B~E&lJY#Nmgscq-}PEVHYCcshmx16k6254J^MPy6s56>K)mOnyY`i; zGFcH{R*5k0-K3NONP(=)5~F9_b2$r;Fi5I zCt+3#!BDoj^&OO)#jpcb)at`Jp2r6GB{Zy*1+w6y`;gZ$lJZ96d1l##`HV>AAhMCO zQ>@OQ1fItl^!+Ld{7*=@WNGiZH@})bomASAR#oAg7`60j%bX)Buy3Uo?{!|N=eic4LaseaV+g9bjya{3?nnUI0cn z^nmw9u;a_f{Iz5Raj{wUa1)L8SaU3Z#mXrd52$jw z#Oc;0!U>T^wmEA2Ur{n^l*WmE_G{!9!dW`i3Euiu?}M`La3Z!Rnm3N3;?zfM(MyXTSBt z%Unl@2e`E8KI0MS6SBx5p2`unbScOj$Q-8|eiBEO$59@&J z0r7)$VcGcBK{elOqz0~ zHv=e<(q>KrIR&3gvZVg3;K}4lgs2|RGB}y!I2}urq&qEH?vr6d*x1YN1pD>BFD9we z$xae4CqZuEG|RasKKo5N63?XLS$x<1)yEK7cE{4YA5xQ&*<~ES?-kHjqg8M>^h9|w zS=g>wB4<=)kL5IGS#)o`O>Tb)ZpGnSaEw`QcPkFx&~xPh7wvAQIrF#TT#}oN=G=;N zxzA4bUF(VsR=J8GN#I1ACE{(NN;@@rFTQI znXMkOUhIal+x;Bn-E7XiHev5jvu8=pHSKRvJ1>No!Vmsyl)@1v+VVyL()+1hh!ZFa z((cyD8?cAT(ocG91)fm{%yv%ts?6C}HwNr%V@6$Tv2!s7YQL4zwyR}=u3t8I40K6h%;PBdA`IppxKi%KYM~eu)2IA4x4mdV?S>s-BC18( z&>@F~_H!?TGVqXB;HQ(lYBSoH+F0}9W4QM?c@m5a$&BCwIC>HctRb*ibPtu&$v%Wx z9-}VCV=X=243eI20K(}%{_{dD<&l^qOmM0pIhF^}HrPg3EwJNLE7FE~Vm?k4>UM4x z4|η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 literal 0 HcmV?d00001 diff --git a/FPGA_by_Gregory_Estrade/firebee1.sdc b/FPGA_by_Gregory_Estrade/firebee1.sdc new file mode 100644 index 0000000..0a81d12 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/firebee1.sdc @@ -0,0 +1,149 @@ +########################################################################### +# +# Generated by : Version 9.1 Build 222 10/21/2009 SJ Full Version +# +# Project : firebee1 +# Revision : firebee1 +# +# Date : Sat Mar 01 15:22:38 CET 2014 +# +########################################################################### + + +# WARNING: Ignored QSF Variable: Global TSU_REQUIREMENT = 1 ns +# WARNING: Ignored QSF Variable: Global TH_REQUIREMENT = 1 ns +# WARNING: Ignored QSF Variable: Global TPD_REQUIREMENT = 1 ns +# WARNING: Ignored QSF Variable: Global TCO_REQUIREMENT = 1 ns +# WARNING: Expected ENABLE_CLOCK_LATENCY to be set to 'ON', but it is set to 'OFF' +# In SDC, create_generated_clock auto-generates clock latency +# +# ------------------------------------------ +# +# Create generated clocks based on PLLs +derive_pll_clocks -use_tan_name +# +# ------------------------------------------ +# WARNING: Global Fmax translated to derive_clocks. Behavior is not identical +if {![info exist ::qsta_message_posted]} { + post_message -type warning "Original Global Fmax translated from QSF using derive_clocks" + set ::qsta_message_posted 1 +} +derive_clocks -period "30.303 ns" +# + + +# Original Clock Setting Name: CLK33M +create_clock -period "30.303 ns" \ + -name {CLK33M} {CLK33M} +# --------------------------------------------- + +# ** Clock Latency +# ------------- + +# ** Clock Uncertainty +# ----------------- + +derive_clock_uncertainty + +# ** Multicycles +# ----------- + +# ** Cuts +# ---- + +# ** Input/Output Delays +# ------------------- +# QSF: -name INPUT_MAX_DELAY 4 ns -from * -to FB_ALE +# Command requires a unique clock. Expand clock +#foreach_in_collection clk [get_clocks * ] { +# set_input_delay -add_delay -max 4 -clock [get_object_info -name $clk] [get_ports {FB_ALE}] +#} +#set_input_delay -add_delay -max 4 -clock {altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[4]} [get_ports {FB_ALE}] + +# ** Tpd requirements +# ---------------- + +# ** Setup/Hold Relationships +# ------------------------ + +# ** Tsu/Th requirements +# ------------------- + + +# ** Tco/MinTco requirements +# ----------------------- + +# +# Entity Specific Timing Assignments found in +# the Timing Analyzer Settings report panel +# +set_false_path -from [get_registers {*dcfifo*delayed_wrptr_g[*]}] -to [get_registers {*dcfifo*rs_dgwp*}] +set_false_path -from [get_registers {*dcfifo*rdptr_g[*]}] -to [get_registers {*dcfifo*ws_dgrp*}] + +set_clock_groups -asynchronous -group { \ +altpll4:b2v_inst22|altpll:altpll_component|altpll_qfk2:auto_generated|clk[0] \ +} \ +-group { \ +altpll3:b2v_inst13|altpll:altpll_component|altpll_jvs2:auto_generated|clk[3] \ +} \ +-group { \ +altpll3:b2v_inst13|altpll:altpll_component|altpll_jvs2:auto_generated|clk[2] \ +} \ +-group { \ +altpll3:b2v_inst13|altpll:altpll_component|altpll_jvs2:auto_generated|clk[1] \ +} \ +-group { \ +altpll3:b2v_inst13|altpll:altpll_component|altpll_jvs2:auto_generated|clk[0] \ +} \ +-group { \ +altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[4] \ +altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[3] \ +altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[2] \ +altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[1] \ +altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[0] \ +CLK33M \ +} \ +-group { \ +altpll1:b2v_inst|altpll:altpll_component|altpll_8tp2:auto_generated|clk[2] \ +altpll1:b2v_inst|altpll:altpll_component|altpll_8tp2:auto_generated|clk[1] \ +} \ +-group { \ +altpll1:b2v_inst|altpll:altpll_component|altpll_8tp2:auto_generated|clk[0] \ +} \ + + +set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[0]}] -setup -end 2 +set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[0]}] -hold -end 1 + +set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -to [get_clocks {CLK33M}] -setup -end 2 +set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -to [get_clocks {CLK33M}] -hold -end 1 + +set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[0]}] -to [get_clocks {CLK33M}] -setup -end 2 +set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[0]}] -to [get_clocks {CLK33M}] -hold -end 1 + +set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[3]}] -to [get_clocks {CLK33M}] -setup -end 2 +set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[3]}] -to [get_clocks {CLK33M}] -hold -end 1 + +set_multicycle_path -from [get_clocks {CLK33M}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -setup -end 2 +set_multicycle_path -from [get_clocks {CLK33M}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -hold -end 1 + +set_multicycle_path -from [get_clocks {CLK33M}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[1]}] -setup -end 2 +set_multicycle_path -from [get_clocks {CLK33M}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[1]}] -hold -end 1 + +# --------------------------------------------- + +# WARNING: Ignored QSF Variable: -name MAX_DELAY 5 ns -from VD -to FB_AD +# WARNING: Ignored QSF Variable: -name MAX_DELAY 5 ns -from FB_AD -to VA +# WARNING: Ignored QSF Variable: -name MAX_DELAY 5 ns -from FB_AD -to nVRAS +# WARNING: Ignored QSF Variable: -name MAX_DELAY 5 ns -from FB_AD -to BA +#set_max_delay -from [get_ports {VD[*]}] -to [get_ports {FB_AD[*]}] 5.000 +#set_max_delay -from [get_ports {FB_AD[*]}] -to [get_ports {VA[*]}] 5.000 +#set_max_delay -from [get_ports {FB_AD[*]}] -to [get_ports {nVRAS}] 5.000 +#set_max_delay -from [get_ports {FB_AD[*]}] -to [get_ports {BA[*]}] 5.000 + +# Constrain the input I/O path +set_input_delay -clock CLK33M -max 5 [all_inputs] +#set_input_delay -clock CLK33M -min 4 [all_inputs] + +# Constrain the output I/O path +set_output_delay -clock CLK33M -max 5 [all_outputs] diff --git a/FPGA_by_Gregory_Estrade/firebee1.sof b/FPGA_by_Gregory_Estrade/firebee1.sof new file mode 100644 index 0000000000000000000000000000000000000000..7fa2bf3dc64114480bcdb224bd6a084fc7eb6a85 GIT binary patch literal 1171602 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≫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�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

6^rMjOptePJaU>>-7`J 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Μ66_#q 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 MAIN_CLK, + nFB_CS1 => nFB_CS1, + nFB_CS2 => nFB_CS2, + nFB_CS3 => nFB_CS3, + nFB_WR => nFB_WR, + FB_SIZE0 => FB_SIZE0, + FB_SIZE1 => FB_SIZE1, + nRSTO => nRSTO, + nFB_OE => nFB_OE, + FB_ALE => FB_ALE, + DDR_SYNC_66M => DDR_SYNC_66M, + CLK33M => CLK33M, + CLK25M => CLK25M_ALTERA_SYNTHESIZED, + CLK_VIDEO => CLK_VIDEO, + VR_BUSY => VR_BUSY, + DDRCLK => DDRCLK, + FB_AD => FB_AD, + FB_ADR => FB_ADR, + VD => VD, + VDQS => VDQS, + VR_D => VR_D, + VR_RD => VR_RD, + nBLANK => nBLANK, + nVWE => nVWE, + nVCAS => nVCAS, + nVRAS => nVRAS, + nVCS => nVCS, + nPD_VGA => nPD_VGA, + VCKE => VCKE, + VSYNC => VSYNC, + HSYNC => HSYNC, + nSYNC => nSYNC, + VIDEO_TA => Video_TA, + PIXEL_CLK => PIXEL_CLK, + VIDEO_RECONFIG => VIDEO_RECONFIG, + VR_WR => VR_WR, + BA => BA, + VA => VA, + VB => VB, + VDM => VDM, + VG => VG, + VR => VR); + + +b2v_inst : altpll1 +PORT MAP(inclk0 => CLK33M, + c0 => CLK500k, + c1 => CLK2M4576, + c2 => CLK24M576, + locked => SYNTHESIZED_WIRE_5); + + +b2v_inst1 : lpm_ff0 +PORT MAP(clock => DDR_SYNC_66M, + enable => FB_ALE, + data => FB_AD, + q => FB_ADR); + + + + +b2v_inst12 : altpll2 +PORT MAP(inclk0 => MAIN_CLK, + c0 => DDRCLK(0), + c1 => DDRCLK(1), + c2 => DDRCLK(2), + c3 => DDRCLK(3), + c4 => DDR_SYNC_66M); + + +b2v_inst13 : altpll3 +PORT MAP(inclk0 => CLK33M, + c0 => CLK2M, + c1 => FDC_CLK, + c2 => CLK25M_ALTERA_SYNTHESIZED, + c3 => CLK48M); + + +nMOT_ON <= NOT(MOT_ON); + + + +nSTEP_DIR <= NOT(STEP_DIR); + + + +nSTEP <= NOT(STEP); + + + +nWR <= NOT(WR_DATA); + + + +b2v_inst18 : lpm_counter0 +PORT MAP(clock => CLK500k, + q => TIMEBASE); + + +nWR_GATE <= NOT(WR_GATE); + + + +nFB_TA <= NOT(Video_TA OR INT_HANDLER_TA OR DSP_TA OR FALCON_IO_TA); + + +b2v_inst22 : altpll4 +PORT MAP(inclk0 => CLK48M, + areset => SYNTHESIZED_WIRE_0, + scanclk => SYNTHESIZED_WIRE_1, + scandata => SYNTHESIZED_WIRE_2, + scanclkena => SYNTHESIZED_WIRE_3, + configupdate => SYNTHESIZED_WIRE_4, + c0 => CLK_VIDEO, + scandataout => SYNTHESIZED_WIRE_6, + scandone => SYNTHESIZED_WIRE_7); + + +SYNTHESIZED_WIRE_8 <= NOT(nRSTO); + + + +nRSTO <= SYNTHESIZED_WIRE_5 AND nRSTO_MCF; + +LED_FPGA_OK <= TIMEBASE(17); + + + +nDDR_CLK <= NOT(DDRCLK(0)); + + + +b2v_inst5 : altddio_out3 +PORT MAP(datain_h => VSYNC, + datain_l => VSYNC, + outclock => PIXEL_CLK, + dataout => VSYNC_PAD); + + +b2v_inst6 : altddio_out3 +PORT MAP(datain_h => HSYNC, + datain_l => HSYNC, + outclock => PIXEL_CLK, + dataout => HSYNC_PAD); + + +b2v_inst7 : altpll_reconfig1 +PORT MAP(reconfig => VIDEO_RECONFIG, + read_param => VR_RD, + write_param => VR_WR, + pll_scandataout => SYNTHESIZED_WIRE_6, + pll_scandone => SYNTHESIZED_WIRE_7, + clock => MAIN_CLK, + reset => SYNTHESIZED_WIRE_8, + counter_param => FB_ADR(8 DOWNTO 6), + counter_type => FB_ADR(5 DOWNTO 2), + data_in => FB_AD(24 DOWNTO 16), + busy => VR_BUSY, + pll_scandata => SYNTHESIZED_WIRE_2, + pll_scanclk => SYNTHESIZED_WIRE_1, + pll_scanclkena => SYNTHESIZED_WIRE_3, + pll_configupdate => SYNTHESIZED_WIRE_4, + pll_areset => SYNTHESIZED_WIRE_0, + data_out => VR_D); + + +b2v_inst8 : altddio_out3 +PORT MAP(datain_h => nBLANK, + datain_l => nBLANK, + outclock => PIXEL_CLK, + dataout => nBLANK_PAD); + + +b2v_inst9 : altddio_out3 +PORT MAP(datain_h => SYNTHESIZED_WIRE_9, + datain_l => SYNTHESIZED_WIRE_10, + outclock => PIXEL_CLK, + dataout => PIXEL_CLK_PAD); + + +b2v_Mathias_Alles : dsp +PORT MAP(CLK33M => CLK33M, + MAIN_CLK => MAIN_CLK, + nFB_OE => nFB_OE, + nFB_WR => nFB_WR, + nFB_CS1 => nFB_CS1, + nFB_CS2 => nFB_CS2, + FB_SIZE0 => FB_SIZE0, + FB_SIZE1 => FB_SIZE1, + nFB_BURST => nFB_BURST, + nRSTO => nRSTO, + nFB_CS3 => nFB_CS3, + FB_AD => FB_AD, + FB_ADR => FB_ADR, + IO => IO, + SRD => SRD, + nSRCS => nSRCS, + nSRBLE => nSRBLE, + nSRBHE => nSRBHE, + nSRWE => nSRWE, + nSROE => nSROE, + DSP_INT => DSP_INT, + DSP_TA => DSP_TA); + + +b2v_nobody : interrupt_handler +PORT MAP(MAIN_CLK => MAIN_CLK, + nFB_WR => nFB_WR, + nFB_CS1 => nFB_CS1, + nFB_CS2 => nFB_CS2, + FB_SIZE0 => FB_SIZE0, + FB_SIZE1 => FB_SIZE1, + PIC_INT => PIC_INT, + E0_INT => E0_INT, + DVI_INT => DVI_INT, + nPCI_INTA => nPCI_INTA, + nPCI_INTB => nPCI_INTB, + nPCI_INTC => nPCI_INTC, + nPCI_INTD => nPCI_INTD, + nMFP_INT => nMFP_INT, + nFB_OE => nFB_OE, + DSP_INT => DSP_INT, + VSYNC => VSYNC, + HSYNC => HSYNC, + DMA_DRQ => DMA_DRQ, + FB_AD => FB_AD, + FB_ADR => FB_ADR, + INT_HANDLER_TA => INT_HANDLER_TA, + TIN0 => TIN0, + ACP_CONF => ACP_CONF, + nIRQ => nIRQ); + + +b2v_Wolfgang_Foerster_and_Fredi_Aschwanden : falconio_sdcard_ide_cf +PORT MAP(CLK33M => CLK33M, + MAIN_CLK => MAIN_CLK, + CLK2M => CLK2M, + CLK500k => CLK500k, + nFB_CS1 => nFB_CS1, + FB_SIZE0 => FB_SIZE0, + FB_SIZE1 => FB_SIZE1, + nFB_BURST => nFB_BURST, + LP_BUSY => LP_BUSY, + nACSI_DRQ => nACSI_DRQ, + nACSI_INT => nACSI_INT, + nSCSI_DRQ => nSCSI_DRQ, + nSCSI_MSG => nSCSI_MSG, + MIDI_IN => MIDI_IN, + RxD => RxD, + CTS => CTS, + RI => RI, + DCD => DCD, + AMKB_RX => AMKB_RX, + PIC_AMKB_RX => PIC_AMKB_RX, + IDE_RDY => IDE_RDY, + IDE_INT => IDE_INT, + nINDEX => nINDEX, + TRACK00 => TRACK00, + nRD_DATA => nRD_DATA, + nDCHG => nDCHG, + SD_DATA0 => SD_DATA0, + SD_DATA1 => SD_DATA1, + SD_DATA2 => SD_DATA2, + SD_CARD_DEDECT => SD_CARD_DEDECT, + SD_WP => SD_WP, + nDACK0 => nDACK0, + nFB_WR => nFB_WR, + WP_CF_CARD => WP_CF_CARD, + nWP => nWP, + nFB_CS2 => nFB_CS2, + nRSTO => nRSTO, + nSCSI_C_D => nSCSI_C_D, + nSCSI_I_O => nSCSI_I_O, + CLK2M4576 => CLK2M4576, + nFB_OE => nFB_OE, + VSYNC => VSYNC, + HSYNC => HSYNC, + DSP_INT => DSP_INT, + nBLANK => nBLANK, + FDC_CLK => FDC_CLK, + FB_ALE => FB_ALE, + HD_DD => HD_DD, + SCSI_PAR => SCSI_PAR, + nSCSI_SEL => nSCSI_SEL, + nSCSI_BUSY => nSCSI_BUSY, + nSCSI_RST => nSCSI_RST, + SD_CD_DATA3 => SD_CD_DATA3, + SD_CDM_D1 => SD_CDM_D1, + ACP_CONF => ACP_CONF(31 DOWNTO 24), + ACSI_D => ACSI_D, + FB_AD => FB_AD, + FB_ADR => FB_ADR, + LP_D => LP_D, + SCSI_D => SCSI_D, + nIDE_CS1 => nIDE_CS1, + nIDE_CS0 => nIDE_CS0, + LP_STR => LP_STR, + LP_DIR => LP_DIR, + nACSI_ACK => nACSI_ACK, + nACSI_RESET => nACSI_RESET, + nACSI_CS => nACSI_CS, + ACSI_DIR => ACSI_DIR, + ACSI_A1 => ACSI_A1, + nSCSI_ACK => nSCSI_ACK, + nSCSI_ATN => nSCSI_ATN, + SCSI_DIR => SCSI_DIR, + SD_CLK => SD_CLK, + YM_QA => YM_QA, + YM_QC => YM_QC, + YM_QB => YM_QB, + nSDSEL => nSDSEL, + STEP => STEP, + MOT_ON => MOT_ON, + nRP_LDS => nRP_LDS, + nRP_UDS => nRP_UDS, + nROM4 => nROM4, + nROM3 => nROM3, + nCF_CS1 => nCF_CS1, + nCF_CS0 => nCF_CS0, + nIDE_RD => nIDE_RD, + nIDE_WR => nIDE_WR, + AMKB_TX => AMKB_TX, + IDE_RES => IDE_RES, + DTR => DTR, + RTS => RTS, + TxD => TxD, + MIDI_OLR => MIDI_OLR, + MIDI_TLR => MIDI_TLR, + DSA_D => DSA_D, + nMFP_INT => nMFP_INT, + FALCON_IO_TA => FALCON_IO_TA, + STEP_DIR => STEP_DIR, + WR_DATA => WR_DATA, + WR_GATE => WR_GATE, + DMA_DRQ => DMA_DRQ); + +SD_CMD_D1 <= SD_CDM_D1; +CLK25M <= CLK25M_ALTERA_SYNTHESIZED; +DDR_CLK <= DDRCLK(0); +CLKUSB <= CLK48M; +LPDIR <= LP_DIR; + +END bdf_type; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/firebee1_assignment_defaults.qdf b/FPGA_by_Gregory_Estrade/firebee1_assignment_defaults.qdf new file mode 100644 index 0000000..2119467 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/firebee1_assignment_defaults.qdf @@ -0,0 +1,687 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2010 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II +# Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition +# Date created = 08:49:57 June 14, 2010 +# +# -------------------------------------------------------------------------- # +# +# Note: +# +# 1) Do not modify this file. This file was generated +# automatically by the Quartus II software and is used +# to preserve global assignments across Quartus II versions. +# +# -------------------------------------------------------------------------- # + +set_global_assignment -name PROJECT_SHOW_ENTITY_NAME On +set_global_assignment -name PROJECT_USE_SIMPLIFIED_NAMES Off +set_global_assignment -name ENABLE_REDUCED_MEMORY_MODE Off +set_global_assignment -name VER_COMPATIBLE_DB_DIR export_db +set_global_assignment -name AUTO_EXPORT_VER_COMPATIBLE_DB Off +set_global_assignment -name SMART_RECOMPILE Off +set_global_assignment -name FLOW_DISABLE_ASSEMBLER Off +set_global_assignment -name FLOW_ENABLE_HC_COMPARE Off +set_global_assignment -name HC_OUTPUT_DIR hc_output +set_global_assignment -name SAVE_MIGRATION_INFO_DURING_COMPILATION Off +set_global_assignment -name FLOW_ENABLE_IO_ASSIGNMENT_ANALYSIS Off +set_global_assignment -name RUN_FULL_COMPILE_ON_DEVICE_CHANGE On +set_global_assignment -name FLOW_ENABLE_RTL_VIEWER Off +set_global_assignment -name READ_OR_WRITE_IN_BYTE_ADDRESS "Use global settings" +set_global_assignment -name FLOW_HARDCOPY_DESIGN_READINESS_CHECK On +set_global_assignment -name FLOW_ENABLE_PARALLEL_MODULES On +set_global_assignment -name ENABLE_COMPACT_REPORT_TABLE Off +set_global_assignment -name DEFAULT_HOLD_MULTICYCLE "Same as Multicycle" +set_global_assignment -name CUT_OFF_PATHS_BETWEEN_CLOCK_DOMAINS On +set_global_assignment -name CUT_OFF_READ_DURING_WRITE_PATHS On +set_global_assignment -name CUT_OFF_IO_PIN_FEEDBACK On +set_global_assignment -name DO_COMBINED_ANALYSIS Off +set_global_assignment -name IGNORE_CLOCK_SETTINGS Off +set_global_assignment -name ANALYZE_LATCHES_AS_SYNCHRONOUS_ELEMENTS On +set_global_assignment -name ENABLE_RECOVERY_REMOVAL_ANALYSIS Off +set_global_assignment -name ENABLE_CLOCK_LATENCY Off +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX7000B +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "HardCopy II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Cyclone IV E" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Stratix IV" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Cyclone III" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "HardCopy Stratix" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX7000AE +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family Cyclone +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Stratix II GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "MAX II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Arria II GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Stratix GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "HardCopy III" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX7000S +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Cyclone II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Cyclone IV GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "HardCopy IV" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Cyclone III LS" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Stratix III" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Arria GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX3000A +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Stratix II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family Stratix +set_global_assignment -name NUMBER_OF_SOURCES_PER_DESTINATION_TO_REPORT 10 +set_global_assignment -name NUMBER_OF_DESTINATION_TO_REPORT 10 +set_global_assignment -name NUMBER_OF_PATHS_TO_REPORT 200 +set_global_assignment -name DO_MIN_ANALYSIS Off +set_global_assignment -name DO_MIN_TIMING Off +set_global_assignment -name REPORT_IO_PATHS_SEPARATELY Off +set_global_assignment -name FLOW_ENABLE_TIMING_CONSTRAINT_CHECK Off +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX7000B +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "HardCopy II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone IV E" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix IV" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone III" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family "HardCopy Stratix" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX7000AE +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family Cyclone +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix II GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family "MAX II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Arria II GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family "Stratix GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "HardCopy III" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX7000S +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone IV GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "HardCopy IV" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone III LS" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix III" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Arria GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX3000A +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family Stratix +set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING Off +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family MAX7000B +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "HardCopy II" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix IV" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV E" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone III" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "HardCopy Stratix" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family MAX7000AE +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix II GX" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family Cyclone +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX II" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GX" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix GX" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family MAX7000S +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "HardCopy III" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone II" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV GX" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "HardCopy IV" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone III LS" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix III" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria GX" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family MAX3000A +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix II" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family Stratix +set_global_assignment -name TIMEQUEST_REPORT_NUM_WORST_CASE_TIMING_PATHS 100 +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX7000B +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "HardCopy II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Cyclone IV E" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Stratix IV" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Cyclone III" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "HardCopy Stratix" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX7000AE +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family Cyclone +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Stratix II GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "MAX II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Arria II GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Stratix GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "HardCopy III" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX7000S +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Cyclone II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Cyclone IV GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "HardCopy IV" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Cyclone III LS" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Stratix III" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Arria GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX3000A +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Stratix II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family Stratix +set_global_assignment -name MUX_RESTRUCTURE Auto +set_global_assignment -name ENABLE_IP_DEBUG Off +set_global_assignment -name SAVE_DISK_SPACE On +set_global_assignment -name DISABLE_OCP_HW_EVAL Off +set_global_assignment -name DEVICE_FILTER_PACKAGE Any +set_global_assignment -name DEVICE_FILTER_PIN_COUNT Any +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE Any +set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "" +set_global_assignment -name VERILOG_INPUT_VERSION Verilog_2001 +set_global_assignment -name VHDL_INPUT_VERSION VHDL_1993 +set_global_assignment -name FAMILY "Stratix II" +set_global_assignment -name TRUE_WYSIWYG_FLOW Off +set_global_assignment -name SMART_COMPILE_IGNORES_TDC_FOR_STRATIX_PLL_CHANGES Off +set_global_assignment -name STATE_MACHINE_PROCESSING Auto +set_global_assignment -name SAFE_STATE_MACHINE Off +set_global_assignment -name EXTRACT_VERILOG_STATE_MACHINES On +set_global_assignment -name EXTRACT_VHDL_STATE_MACHINES On +set_global_assignment -name IGNORE_VERILOG_INITIAL_CONSTRUCTS Off +set_global_assignment -name VERILOG_CONSTANT_LOOP_LIMIT 5000 +set_global_assignment -name VERILOG_NON_CONSTANT_LOOP_LIMIT 250 +set_global_assignment -name ADD_PASS_THROUGH_LOGIC_TO_INFERRED_RAMS On +set_global_assignment -name PARALLEL_SYNTHESIS -value ON +set_global_assignment -name DSP_BLOCK_BALANCING Auto +set_global_assignment -name MAX_BALANCING_DSP_BLOCKS "-1 (Unlimited)" +set_global_assignment -name NOT_GATE_PUSH_BACK On +set_global_assignment -name ALLOW_POWER_UP_DONT_CARE On +set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS Off +set_global_assignment -name REMOVE_DUPLICATE_REGISTERS On +set_global_assignment -name IGNORE_CARRY_BUFFERS Off +set_global_assignment -name IGNORE_CASCADE_BUFFERS Off +set_global_assignment -name IGNORE_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_ROW_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_LCELL_BUFFERS Off +set_global_assignment -name MAX7000_IGNORE_LCELL_BUFFERS AUTO +set_global_assignment -name IGNORE_SOFT_BUFFERS On +set_global_assignment -name MAX7000_IGNORE_SOFT_BUFFERS Off +set_global_assignment -name LIMIT_AHDL_INTEGERS_TO_32_BITS Off +set_global_assignment -name AUTO_GLOBAL_CLOCK_MAX On +set_global_assignment -name AUTO_GLOBAL_OE_MAX On +set_global_assignment -name MAX_AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name AUTO_IMPLEMENT_IN_ROM Off +set_global_assignment -name APEX20K_TECHNOLOGY_MAPPER Lut +set_global_assignment -name OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAX7000_OPTIMIZATION_TECHNIQUE Speed +set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MERCURY_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX6K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX10K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name ALLOW_XOR_GATE_USAGE On +set_global_assignment -name AUTO_LCELL_INSERTION On +set_global_assignment -name CARRY_CHAIN_LENGTH 48 +set_global_assignment -name FLEX6K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name FLEX10K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name MERCURY_CARRY_CHAIN_LENGTH 48 +set_global_assignment -name STRATIX_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name STRATIXII_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name CASCADE_CHAIN_LENGTH 2 +set_global_assignment -name PARALLEL_EXPANDER_CHAIN_LENGTH 16 +set_global_assignment -name MAX7000_PARALLEL_EXPANDER_CHAIN_LENGTH 4 +set_global_assignment -name AUTO_CARRY_CHAINS On +set_global_assignment -name AUTO_CASCADE_CHAINS On +set_global_assignment -name AUTO_PARALLEL_EXPANDERS On +set_global_assignment -name AUTO_OPEN_DRAIN_PINS On +set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP Off +set_global_assignment -name AUTO_ROM_RECOGNITION On +set_global_assignment -name AUTO_RAM_RECOGNITION On +set_global_assignment -name AUTO_DSP_RECOGNITION On +set_global_assignment -name AUTO_SHIFT_REGISTER_RECOGNITION Auto +set_global_assignment -name AUTO_CLOCK_ENABLE_RECOGNITION On +set_global_assignment -name STRICT_RAM_RECOGNITION Off +set_global_assignment -name ALLOW_SYNCH_CTRL_USAGE On +set_global_assignment -name FORCE_SYNCH_CLEAR Off +set_global_assignment -name AUTO_RAM_BLOCK_BALANCING On +set_global_assignment -name AUTO_RAM_TO_LCELL_CONVERSION Off +set_global_assignment -name AUTO_RESOURCE_SHARING Off +set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION Off +set_global_assignment -name MAX7000_FANIN_PER_CELL 100 +set_global_assignment -name USE_LOGICLOCK_CONSTRAINTS_IN_BALANCING On +set_global_assignment -name MAX_RAM_BLOCKS_M512 "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_M4K "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_MRAM "-1 (Unlimited)" +set_global_assignment -name IGNORE_TRANSLATE_OFF_AND_SYNTHESIS_OFF Off +set_global_assignment -name STRATIXGX_BYPASS_REMAPPING_OF_FORCE_SIGNAL_DETECT_SIGNAL_THRESHOLD_SELECT Off +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Cyclone III LS" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Cyclone III" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Stratix III" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "HardCopy III" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS Off -family "Arria GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS Off -family "Cyclone II" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS Off -family "HardCopy II" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS Off -family "Stratix II GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Cyclone IV E" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Cyclone IV GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS Off -family "Stratix II" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Stratix IV" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Arria II GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "HardCopy IV" +set_global_assignment -name SHOW_PARAMETER_SETTINGS_TABLES_IN_SYNTHESIS_REPORT On +set_global_assignment -name IGNORE_MAX_FANOUT_ASSIGNMENTS Off +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 +set_global_assignment -name OPTIMIZE_POWER_DURING_SYNTHESIS "Normal compilation" +set_global_assignment -name HDL_MESSAGE_LEVEL Level2 +set_global_assignment -name USE_HIGH_SPEED_ADDER Auto +set_global_assignment -name NUMBER_OF_REMOVED_REGISTERS_REPORTED 5000 +set_global_assignment -name NUMBER_OF_INVERTED_REGISTERS_REPORTED 100 +set_global_assignment -name SYNTH_CLOCK_MUX_PROTECTION On +set_global_assignment -name SYNTH_GATED_CLOCK_CONVERSION Off +set_global_assignment -name BLOCK_DESIGN_NAMING Auto +set_global_assignment -name SYNTH_PROTECT_SDC_CONSTRAINT Off +set_global_assignment -name SYNTHESIS_EFFORT Auto +set_global_assignment -name SHIFT_REGISTER_RECOGNITION_ACLR_SIGNAL On +set_global_assignment -name PRE_MAPPING_RESYNTHESIS Off +set_global_assignment -name SYNTH_MESSAGE_LEVEL Medium +set_global_assignment -name DISABLE_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone III LS" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone III" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix III" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "HardCopy III" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "HardCopy Stratix" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone II" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family Cyclone +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "HardCopy II" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV E" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix II" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix IV" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GX" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family Stratix +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "HardCopy IV" +set_global_assignment -name MAX_LABS "-1 (Unlimited)" +set_global_assignment -name ADCE_ENABLED Auto +set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL Normal +set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name ROUTER_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name FIT_ATTEMPTS_TO_SKIP 0.0 +set_global_assignment -name ECO_ALLOW_ROUTING_CHANGES Off +set_global_assignment -name DEVICE AUTO +set_global_assignment -name BASE_PIN_OUT_FILE_ON_SAMEFRAME_DEVICE Off +set_global_assignment -name ENABLE_JTAG_BST_SUPPORT Off +set_global_assignment -name MAX7000_ENABLE_JTAG_BST_SUPPORT On +set_global_assignment -name RESERVE_NCEO_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name STRATIXIII_UPDATE_MODE Standard +set_global_assignment -name STRATIX_UPDATE_MODE Standard +set_global_assignment -name STRATIXIII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name STRATIXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONEII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name APEX20K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name STRATIX_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name MERCURY_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX6K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX10K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name APEXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name USER_START_UP_CLOCK Off +set_global_assignment -name ENABLE_VREFA_PIN Off +set_global_assignment -name ENABLE_VREFB_PIN Off +set_global_assignment -name ALWAYS_ENABLE_INPUT_BUFFERS Off +set_global_assignment -name ENABLE_ASMI_FOR_FLASH_LOADER Off +set_global_assignment -name ENABLE_DEVICE_WIDE_RESET Off +set_global_assignment -name ENABLE_DEVICE_WIDE_OE Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "As output driving ground" +set_global_assignment -name FLEX10K_ENABLE_LOCK_OUTPUT Off +set_global_assignment -name ENABLE_INIT_DONE_OUTPUT Off +set_global_assignment -name RESERVE_NWS_NRS_NCS_CS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_RDYNBUSY_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family "Cyclone II" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family Cyclone +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family "Stratix II GX" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family "HardCopy II" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family "Arria GX" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family "Stratix II" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA2_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_OTHER_AP_PINS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name CRC_ERROR_CHECKING Off +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Stratix GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "HardCopy III" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Cyclone II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "HardCopy II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix IV" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "HardCopy IV" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone III LS" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone III" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix III" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "HardCopy Stratix" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Stratix II GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family Cyclone +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Stratix II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family Stratix +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off +set_global_assignment -name BLOCK_RAM_TO_MLAB_CELL_CONVERSION On +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_POWER_UP_CONDITIONS Auto +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_PAUSED_READ_CAPABILITIES Care +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING "Force All Tiles with Failing Timing Paths to High Speed" +set_global_assignment -name PROGRAMMABLE_POWER_MAXIMUM_HIGH_SPEED_FRACTION_OF_USED_LAB_TILES 1.0 +set_global_assignment -name GUARANTEE_MIN_DELAY_CORNER_IO_ZERO_HOLD_TIME On +set_global_assignment -name OPTIMIZE_POWER_DURING_FITTING "Normal compilation" +set_global_assignment -name OPTIMIZE_SSN Off -family "Cyclone III LS" +set_global_assignment -name OPTIMIZE_SSN Off -family "Cyclone III" +set_global_assignment -name OPTIMIZE_SSN Off -family "Stratix III" +set_global_assignment -name OPTIMIZE_SSN Off -family "HardCopy III" +set_global_assignment -name OPTIMIZE_SSN Off -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_SSN Off -family "Stratix IV" +set_global_assignment -name OPTIMIZE_SSN Off -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_SSN Off -family "HardCopy IV" +set_global_assignment -name OPTIMIZE_SSN Off -family "Arria II GX" +set_global_assignment -name OPTIMIZE_TIMING "Normal compilation" +set_global_assignment -name ECO_OPTIMIZE_TIMING Off +set_global_assignment -name ECO_REGENERATE_REPORT Off +set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING On +set_global_assignment -name FIT_ONLY_ONE_ATTEMPT Off +set_global_assignment -name FINAL_PLACEMENT_OPTIMIZATION Automatically +set_global_assignment -name FITTER_AGGRESSIVE_ROUTABILITY_OPTIMIZATION Automatically +set_global_assignment -name SEED 1 +set_global_assignment -name SLOW_SLEW_RATE Off +set_global_assignment -name PCI_IO Off +set_global_assignment -name TURBO_BIT On +set_global_assignment -name WEAK_PULL_UP_RESISTOR Off +set_global_assignment -name ENABLE_BUS_HOLD_CIRCUITRY Off +set_global_assignment -name AUTO_GLOBAL_MEMORY_CONTROLS Off +set_global_assignment -name MIGRATION_CONSTRAIN_CORE_RESOURCES On +set_global_assignment -name AUTO_PACKED_REGISTERS_STRATIXII AUTO +set_global_assignment -name AUTO_PACKED_REGISTERS_MAXII AUTO +set_global_assignment -name AUTO_PACKED_REGISTERS_CYCLONE Auto +set_global_assignment -name AUTO_PACKED_REGISTERS Off +set_global_assignment -name AUTO_PACKED_REGISTERS_STRATIX AUTO +set_global_assignment -name NORMAL_LCELL_INSERT On +set_global_assignment -name CARRY_OUT_PINS_LCELL_INSERT On +set_global_assignment -name AUTO_DELAY_CHAINS On +set_global_assignment -name XSTL_INPUT_ALLOW_SE_BUFFER Off +set_global_assignment -name TREAT_BIDIR_AS_OUTPUT Off +set_global_assignment -name AUTO_MERGE_PLLS On +set_global_assignment -name IGNORE_MODE_FOR_MERGE Off +set_global_assignment -name AUTO_TURBO_BIT ON +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC Off +set_global_assignment -name PHYSICAL_SYNTHESIS_LOG_FILE Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION Off +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING Off +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING Off +set_global_assignment -name IO_PLACEMENT_OPTIMIZATION On +set_global_assignment -name ALLOW_LVTTL_LVCMOS_INPUT_LEVELS_TO_OVERDRIVE_INPUT_BUFFER Off +set_global_assignment -name OVERRIDE_DEFAULT_ELECTROMIGRATION_PARAMETERS Off +set_global_assignment -name FITTER_EFFORT "Auto Fit" +set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN 0ns +set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT Normal +set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION AUTO +set_global_assignment -name ROUTER_REGISTER_DUPLICATION AUTO +set_global_assignment -name STRATIXGX_ALLOW_CLOCK_FANOUT_WITH_ANALOG_RESET Off +set_global_assignment -name AUTO_GLOBAL_CLOCK On +set_global_assignment -name AUTO_GLOBAL_OE On +set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name FITTER_EARLY_TIMING_ESTIMATE_MODE Realistic +set_global_assignment -name STRATIXGX_ALLOW_GIGE_UNDER_FULL_DATARATE_RANGE Off +set_global_assignment -name STRATIXGX_ALLOW_RX_CORECLK_FROM_NON_RX_CLKOUT_SOURCE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_PARALLEL_LOOPBACK_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_IN_SINGLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITHOUT_8B10B Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_POST8B10B_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_REVERSE_PARALLEL_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_USE_OF_GXB_COUPLED_IOS Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF_WITH_PLL Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_WEAK_PULLUP "As input tri-stated with weak pull-up" +set_global_assignment -name STOP_AFTER_CONGESTION_MAP Off +set_global_assignment -name ENABLE_HOLD_BACK_OFF On +set_global_assignment -name CONFIGURATION_VCCIO_LEVEL Auto +set_global_assignment -name FORCE_CONFIGURATION_VCCIO Off +set_global_assignment -name SYNCHRONIZER_IDENTIFICATION Off +set_global_assignment -name ENABLE_BENEFICIAL_SKEW_OPTIMIZATION On +set_global_assignment -name OPTIMIZE_FOR_METASTABILITY On +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off +set_global_assignment -name MAX_GLOBAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_REGIONAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_PERIPHERY_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz +set_global_assignment -name M144K_BLOCK_READ_CLOCK_DUTY_CYCLE_DEPENDENCY Off +set_global_assignment -name STRATIXIII_MRAM_COMPATIBILITY On +set_global_assignment -name FORCE_FITTER_TO_AVOID_PERIPHERY_PLACEMENT_WARNINGS Off +set_global_assignment -name AUTO_C3_M9K_BIT_SKIP Off +set_global_assignment -name EDA_SIMULATION_TOOL "" +set_global_assignment -name EDA_TIMING_ANALYSIS_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TIMING_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SYMBOL_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SIGNAL_INTEGRITY_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_BOUNDARY_SCAN_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TOOL "" +set_global_assignment -name EDA_FORMAL_VERIFICATION_TOOL "" +set_global_assignment -name EDA_RESYNTHESIS_TOOL "" +set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION On +set_global_assignment -name COMPRESSION_MODE Off +set_global_assignment -name CLOCK_SOURCE Internal +set_global_assignment -name CONFIGURATION_CLOCK_FREQUENCY "10 MHz" +set_global_assignment -name CONFIGURATION_CLOCK_DIVISOR 1 +set_global_assignment -name ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name FLEX6K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE Off +set_global_assignment -name FLEX10K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name MAX7000S_JTAG_USER_CODE FFFF +set_global_assignment -name STRATIX_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name APEX20K_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_JTAG_USER_CODE 7F +set_global_assignment -name MAX7000_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MAX7000_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name SECURITY_BIT Off +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX7000B +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "HardCopy II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV E" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Stratix IV" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone III" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "HardCopy Stratix" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX7000AE +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family Cyclone +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Stratix II GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Stratix GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "HardCopy III" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX7000S +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Cyclone II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "HardCopy IV" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone III LS" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Stratix III" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Arria GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX3000A +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Stratix II" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family Stratix +set_global_assignment -name CYCLONEIII_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIXII_CONFIGURATION_DEVICE Auto +set_global_assignment -name APEX20K_CONFIGURATION_DEVICE Auto +set_global_assignment -name MERCURY_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE Auto +set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIX_CONFIGURATION_DEVICE Auto +set_global_assignment -name APEX20K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name STRATIX_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE On +set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE Off +set_global_assignment -name GENERATE_TTF_FILE Off +set_global_assignment -name GENERATE_RBF_FILE Off +set_global_assignment -name GENERATE_HEX_FILE Off +set_global_assignment -name HEXOUT_FILE_START_ADDRESS 0 +set_global_assignment -name HEXOUT_FILE_COUNT_DIRECTION Up +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND "As output driving an unspecified signal" +set_global_assignment -name RELEASE_CLEARS_BEFORE_TRI_STATES Off +set_global_assignment -name AUTO_RESTART_CONFIGURATION On +set_global_assignment -name HARDCOPYII_POWER_ON_EXTRA_DELAY Off +set_global_assignment -name STRATIXII_MRAM_COMPATIBILITY Off +set_global_assignment -name CYCLONEII_M4K_COMPATIBILITY On +set_global_assignment -name ENABLE_OCT_DONE Off +set_global_assignment -name USE_CHECKERED_PATTERN_AS_UNINITIALIZED_RAM_CONTENT Off +set_global_assignment -name START_TIME 0ns +set_global_assignment -name SIMULATION_MODE TIMING +set_global_assignment -name AUTO_USE_SIMULATION_PDB_NETLIST Off +set_global_assignment -name ADD_DEFAULT_PINS_TO_SIMULATION_OUTPUT_WAVEFORMS On +set_global_assignment -name SETUP_HOLD_DETECTION Off +set_global_assignment -name SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off +set_global_assignment -name CHECK_OUTPUTS Off +set_global_assignment -name SIMULATION_COVERAGE On +set_global_assignment -name SIMULATION_COMPLETE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_1_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_0_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name GLITCH_DETECTION Off +set_global_assignment -name GLITCH_INTERVAL 1ns +set_global_assignment -name SIMULATOR_GENERATE_SIGNAL_ACTIVITY_FILE Off +set_global_assignment -name SIMULATION_WITH_GLITCH_FILTERING_WHEN_GENERATING_SAF On +set_global_assignment -name SIMULATION_BUS_CHANNEL_GROUPING Off +set_global_assignment -name SIMULATION_VDB_RESULT_FLUSH On +set_global_assignment -name VECTOR_COMPARE_TRIGGER_MODE INPUT_EDGE +set_global_assignment -name SIMULATION_NETLIST_VIEWER Off +set_global_assignment -name SIMULATION_INTERCONNECT_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATION_CELL_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATOR_GENERATE_POWERPLAY_VCD_FILE Off +set_global_assignment -name SIMULATOR_PVT_TIMING_MODEL_TYPE AUTO +set_global_assignment -name SIMULATION_WITH_AUTO_GLITCH_FILTERING AUTO +set_global_assignment -name DRC_TOP_FANOUT 50 +set_global_assignment -name DRC_FANOUT_EXCEEDING 30 +set_global_assignment -name DRC_GATED_CLOCK_FEED 30 +set_global_assignment -name HARDCOPY_FLOW_AUTOMATION MIGRATION_ONLY +set_global_assignment -name ENABLE_DRC_SETTINGS Off +set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES_THRESHOLD 25 +set_global_assignment -name DRC_DETAIL_MESSAGE_LIMIT 10 +set_global_assignment -name DRC_VIOLATION_MESSAGE_LIMIT 30 +set_global_assignment -name DRC_DEADLOCK_STATE_LIMIT 2 +set_global_assignment -name MERGE_HEX_FILE Off +set_global_assignment -name GENERATE_SVF_FILE Off +set_global_assignment -name GENERATE_ISC_FILE Off +set_global_assignment -name GENERATE_JAM_FILE Off +set_global_assignment -name GENERATE_JBC_FILE Off +set_global_assignment -name GENERATE_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_SVF_FILE Off +set_global_assignment -name GENERATE_CONFIG_ISC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JAM_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_HEXOUT_FILE Off +set_global_assignment -name ISP_CLAMP_STATE_DEFAULT "Tri-state" +set_global_assignment -name SIGNALPROBE_ALLOW_OVERUSE Off +set_global_assignment -name SIGNALPROBE_DURING_NORMAL_COMPILATION Off +set_global_assignment -name LOGICLOCK_INCREMENTAL_COMPILE_ASSIGNMENT Off +set_global_assignment -name POWER_DEFAULT_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_DEFAULT_INPUT_IO_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_USE_PVA On +set_global_assignment -name POWER_USE_INPUT_FILE "No File" +set_global_assignment -name POWER_USE_INPUT_FILES Off +set_global_assignment -name POWER_VCD_FILTER_GLITCHES On +set_global_assignment -name POWER_REPORT_SIGNAL_ACTIVITY Off +set_global_assignment -name POWER_REPORT_POWER_DISSIPATION Off +set_global_assignment -name POWER_USE_DEVICE_CHARACTERISTICS TYPICAL +set_global_assignment -name POWER_AUTO_COMPUTE_TJ On +set_global_assignment -name POWER_TJ_VALUE 25 +set_global_assignment -name POWER_USE_TA_VALUE 25 +set_global_assignment -name POWER_USE_CUSTOM_COOLING_SOLUTION Off +set_global_assignment -name POWER_BOARD_TEMPERATURE 25 +set_global_assignment -name INCREMENTAL_COMPILATION FULL_INCREMENTAL_COMPILATION +set_global_assignment -name AUTO_EXPORT_INCREMENTAL_COMPILATION Off +set_global_assignment -name INCREMENTAL_COMPILATION_EXPORT_NETLIST_TYPE POST_FIT +set_global_assignment -name OUTPUT_IO_TIMING_ENDPOINT "Near End" +set_global_assignment -name RTLV_REMOVE_FANOUT_FREE_REGISTERS On +set_global_assignment -name RTLV_SIMPLIFIED_LOGIC On +set_global_assignment -name RTLV_GROUP_RELATED_NODES On +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD Off +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD_TMV Off +set_global_assignment -name RTLV_GROUP_RELATED_NODES_TMV On +set_global_assignment -name EQC_CONSTANT_DFF_DETECTION On +set_global_assignment -name EQC_DUPLICATE_DFF_DETECTION On +set_global_assignment -name EQC_BBOX_MERGE On +set_global_assignment -name EQC_LVDS_MERGE On +set_global_assignment -name EQC_RAM_UNMERGING On +set_global_assignment -name EQC_DFF_SS_EMULATION On +set_global_assignment -name EQC_RAM_REGISTER_UNPACK On +set_global_assignment -name EQC_MAC_REGISTER_UNPACK On +set_global_assignment -name EQC_SET_PARTITION_BB_TO_VCC_GND On +set_global_assignment -name EQC_STRUCTURE_MATCHING On +set_global_assignment -name EQC_AUTO_BREAK_CONE On +set_global_assignment -name EQC_POWER_UP_COMPARE Off +set_global_assignment -name EQC_AUTO_COMP_LOOP_CUT On +set_global_assignment -name EQC_AUTO_INVERSION On +set_global_assignment -name EQC_AUTO_TERMINATE On +set_global_assignment -name EQC_SUB_CONE_REPORT Off +set_global_assignment -name EQC_RENAMING_RULES On +set_global_assignment -name EQC_PARAMETER_CHECK On +set_global_assignment -name EQC_AUTO_PORTSWAP On +set_global_assignment -name EQC_DETECT_DONT_CARES On +set_global_assignment -name EQC_SHOW_ALL_MAPPED_POINTS Off +set_global_assignment -name DUTY_CYCLE 50 -section_id ? +set_global_assignment -name INVERT_BASE_CLOCK Off -section_id ? +set_global_assignment -name MULTIPLY_BASE_CLOCK_PERIOD_BY 1 -section_id ? +set_global_assignment -name DIVIDE_BASE_CLOCK_PERIOD_BY 1 -section_id ? +set_global_assignment -name EDA_INPUT_GND_NAME GND -section_id ? +set_global_assignment -name EDA_INPUT_VCC_NAME VCC -section_id ? +set_global_assignment -name EDA_INPUT_DATA_FORMAT NONE -section_id ? +set_global_assignment -name EDA_SHOW_LMF_MAPPING_MESSAGES Off -section_id ? +set_global_assignment -name EDA_RUN_TOOL_AUTOMATICALLY Off -section_id ? +set_global_assignment -name RESYNTHESIS_RETIMING FULL -section_id ? +set_global_assignment -name RESYNTHESIS_OPTIMIZATION_EFFORT Normal -section_id ? +set_global_assignment -name RESYNTHESIS_PHYSICAL_SYNTHESIS Normal -section_id ? +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS On -section_id ? +set_global_assignment -name VCCPD_VOLTAGE 3.3V -section_id ? +set_global_assignment -name EDA_USER_COMPILED_SIMULATION_LIBRARY_DIRECTORY "" -section_id ? +set_global_assignment -name EDA_LAUNCH_CMD_LINE_TOOL Off -section_id ? +set_global_assignment -name EDA_NATIVELINK_GENERATE_SCRIPT_ONLY Off -section_id ? +set_global_assignment -name EDA_WAIT_FOR_GUI_TOOL_COMPLETION Off -section_id ? +set_global_assignment -name EDA_TRUNCATE_LONG_HIERARCHY_PATHS Off -section_id ? +set_global_assignment -name EDA_FLATTEN_BUSES Off -section_id ? +set_global_assignment -name EDA_MAP_ILLEGAL_CHARACTERS Off -section_id ? +set_global_assignment -name EDA_GENERATE_TIMING_CLOSURE_DATA Off -section_id ? +set_global_assignment -name EDA_GENERATE_POWER_INPUT_FILE Off -section_id ? +set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS NOT_USED -section_id ? +set_global_assignment -name EDA_RTL_SIM_MODE NOT_USED -section_id ? +set_global_assignment -name EDA_MAINTAIN_DESIGN_HIERARCHY Off -section_id ? +set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST Off -section_id ? +set_global_assignment -name EDA_WRITE_DEVICE_CONTROL_PORTS Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_TCL_FILE Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_SIGNALS_TO_TCL_FILE "All Except Combinational Logic Element Outputs" -section_id ? +set_global_assignment -name EDA_ENABLE_GLITCH_FILTERING Off -section_id ? +set_global_assignment -name EDA_WRITE_NODES_FOR_POWER_ESTIMATION OFF -section_id ? +set_global_assignment -name EDA_SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off -section_id ? +set_global_assignment -name EDA_WRITER_DONT_WRITE_TOP_ENTITY Off -section_id ? +set_global_assignment -name EDA_VHDL_ARCH_NAME structure -section_id ? +set_global_assignment -name EDA_IBIS_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_MUTUAL_COUPLING Off -section_id ? +set_global_assignment -name EDA_FORMAL_VERIFICATION_ALLOW_RETIMING Off -section_id ? +set_global_assignment -name EDA_BOARD_BOUNDARY_SCAN_OPERATION PRE_CONFIG -section_id ? +set_global_assignment -name EDA_GENERATE_RTL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_GENERATE_GATE_LEVEL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_OFFSET 0ns -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_DUTY_CYCLE 50 -section_id ? +set_global_assignment -name APEX20K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MAX7K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MERCURY_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX6K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX10K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_ASSIGNMENTS REPLACE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_LOGICLOCK_REGIONS REPLACE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_PROMOTE_ASSIGNMENTS On -section_id ? -entity ? diff --git a/FPGA_by_Gregory_Estrade/fpga.s19 b/FPGA_by_Gregory_Estrade/fpga.s19 new file mode 100644 index 0000000..1542f66 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/fpga.s19 @@ -0,0 +1,74489 @@ +S00B0000667067612E7331394B +S315E0700000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +S315E0700010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A +S315E07000206AF7F7F7F7F5F5F3FBF3FBFBF3F1F9F99D +S315E0700030FDF9F9FDFDF9FFF9FFFFFBFFFDFDFDF9A8 +S315E0700040FDF9F9F9FFFBFBFFFBF1EEFFFFFFFFFFA9 +S315E0700050FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A +S315E0700060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A +S315E0700070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A +S315E0700080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A +S315E0700090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A +S315E07000A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A +S315E07000B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +S315E07000C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +S315E07000D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA +S315E07000E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA +S315E07000F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA +S315E0700100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +S315E0700110FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +S315E0700120FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +S315E0700130FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +S315E0700140FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +S315E0700150FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +S315E0700160FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315E0700170FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315E0700180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315E0700190FFFFFFFFFFFFFFFFFF000000000202020C +S315E07001A002000000000000000000000000000000F7 +S315E07001B000000000000000000000000000020202E3 +S315E07001C002000000000202020200000000000000CF +S315E07001D000000000000000000000000000000000C9 +S315E07001E000000000000202020200000000000000B1 +S315E07001F000000000000000000000000000000000A9 +S315E0700200000000000002020202000000000202028A +S315E07002100200000000000000000000000000000086 +S315E07002200000000000000000000000000002020272 +S315E07002300200000000000000000000000000000066 +S315E07002400000000000000000000000000002020252 +S315E0700250020000000002020202000000000000003E +S315E07002600000000000000000000000000000000038 +S315E07002700000000000020202020202020200000018 +S315E07002800000000000000000000000000000000018 +S315E070029000000000000000000002020202020202FA +S315E07002A002000000000000000000000000000000F6 +S315E07002B000000000000000000000000000020202E2 +S315E07002C002000000000000000000000000000000D6 +S315E07002D000000000000000000000000000020202C2 +S315E07002E002000000000202020200000000000000AE +S315E07002F000000000000000000000000000000000A8 +S315E07003000000000000000000000202020202020289 +S315E07003100200000000000000000000000000000085 +S315E07003200000000000000000000000000002020271 +S315E0700330020202020200000000000000000000005D +S315E07003400000000000000000000000000000000057 +S315E07003500000000000000000000000000000000047 +S315E07003600000000000000000000000000000000037 +S315E0700370000202020200000000000000000000001F +S315E07003800000000000000000000000000000000017 +S315E070039000020202020202020200000000000000F7 +S315E07003A000000000000000000000000000000000F7 +S315E07003B000000000000000000002020202020202D9 +S315E07003C002000000000202020202020202000000C5 +S315E07003D00000000000000000000000000022222261 +S315E07003E02220202020202020202222222202020207 +S315E07003F00200000000000000000000000020202045 +S315E07004002020202020202020202020202020202096 +S315E07004102002020202000000000202020202020250 +S315E07004200220202020202020202020202020202094 +S315E070043020202020200202020200000000000000BE +S315E070044000000000002020202020202020202020F6 +S315E07004502020202020202020200000000000000026 +S315E07004600000000000000000002020202020202056 +S315E07004702020202020202020202020202000000086 +S315E070048000000000000000000000000000202020B6 +S315E07004902020202020202020202020202020202006 +S315E07004A020000000000000000000000000000000D6 +S315E07004B00020202020202020202020202020202006 +S315E07004C02020202020000000000000000000000036 +S315E07004D00000000000202020202020202020202066 +S315E07004E02020202020202020200202020202020288 +S315E07004F002020202020000000020202020202020BC +S315E070050020202020200000000000000000000000F5 +S315E0700510000000000000000000000000000202027F +S315E07005200220202020202020200000000000000073 +S315E0700530000000000002020202020202020202024F +S315E07005400200000000000000002020202020202073 +S315E07005502000000000000000000000000000000025 +S315E070056000000000000000000000000000202020D5 +S315E07005702020202020000000000000000000000085 +S315E07005800000000000000000000000000000000015 +S315E070059000000000000202020200000000000000FD +S315E07005A000000000000000000000000000000000F5 +S315E07005B0002020202002020202020202020202024F +S315E07005C002020202020000000000000000000000CB +S315E07005D000202020202020202000000000000000C5 +S315E07005E000000000000000000000000000000000B5 +S315E07005F000020202020000000020202020202020BD +S315E07006002000000000202020203030303000000034 +S315E07006100000000000020202020202020220202014 +S315E0700620200202020200000000202020202020206C +S315E07006302000000000000000000000000000000044 +S315E0700640000202020202020202020202020000003C +S315E070065000202020200000000020202020202020E4 +S315E07006602000000000000000000000000000000014 +S315E0700670000202020220202020000000000000009C +S315E07006800000000000000000000000000000000014 +S315E07006900000000000000000000000000000000004 +S315E07006A000101010100202020202020202000000A4 +S315E07006B000000000000000000000000000020202DE +S315E07006C002020202020202020200000000000000C2 +S315E07006D000000000000202020200000000000000BC +S315E07006E000020202020000000000000000000000AC +S315E07006F000000000000000000000000000000000A4 +S315E07007000002020202000000000000000002020285 +S315E07007100200000000000000000000000000000081 +S315E07007200000000000000000002020202020202093 +S315E07007302020202020000000001010101000000083 +S315E0700740000000000000000000000000000202024D +S315E070075002000000000202020200000000202020D9 +S315E07007602000000000000000000000000000000013 +S315E070077000000000005C5C5C5CA3A3A3A300000027 +S315E070078000000000002020202020202020212121B0 +S315E070079021000000000000000000000000000000E2 +S315E07007A00000000000202020200000000020202013 +S315E07007B020000000002020202000000000202020E3 +S315E07007C020000000000000000000000000030303AA +S315E07007D00302020202010101010000000010101084 +S315E07007E0100101010100000000000000000000009F +S315E07007F00000000000010101010101010101010198 +S315E07008000100000000000000000000000000000091 +S315E0700810000000000002020202000000000000007A +S315E07008200000000000000000000000000000000072 +S315E07008300000000000000000000000000000000062 +S315E07008400000000000020202020202020200000042 +S315E07008500000000000010101010202020202020230 +S315E07008600202020202121212121212121202020292 +S315E07008700202020202020202021212121212121292 +S315E070088012121212121212121212121212121212F2 +S315E07008901232323232121212121212121210101068 +S315E07008A010101010101010101010101010101010F2 +S315E07008B010101010101010101010101010202020B2 +S315E07008C020000000000000000000000000000000B2 +S315E07008D000000000000000000000000000030303B9 +S315E07008E003030303030000000000000000000000A3 +S315E07008F000222222220202020202020202121212D4 +S315E07009001212121212020202020202020202020221 +S315E070091002323232321212121212121212121212F1 +S315E07009201212121212121212121212121212121251 +S315E07009301212121212101010101010101010101057 +S315E070094010101010101212121210101010303030E9 +S315E07009503010101010020202022020202000000049 +S315E070096000000000001010101000000000000000F1 +S315E07009700000000000010101010101010100000019 +S315E07009800000000000000000000000000000000011 +S315E070099000000000001212121230303030020202F3 +S315E07009A002202020200000000012121212101010F7 +S315E07009B010101010101010101010101010121212DB +S315E07009C012121212121212121210101010101010BF +S315E07009D01010101010101010101010101050505001 +S315E07009E050101010101010101010101010000000A1 +S315E07009F000000000000000000000000000000000A1 +S315E0700A000000000000000000000000000060606070 +S315E0700A1060202020200000000000000000434343D7 +S315E0700A20432020202060606060202020203030301D +S315E0700A303070707070202020202020202020202010 +S315E0700A4020303030307070707070707070707070A0 +S315E0700A507030303030303030303030303030303000 +S315E0700A603030303030505050501010101010101090 +S315E0700A701010101010343434341414141410101080 +S315E0700A8010101010100000000004040404040404A4 +S315E0700A9004040404044444444404040404040404C0 +S315E0700AA004040404046464646424242424444444F0 +S315E0700AB04404040404060606066464646424242478 +S315E0700AC0242424242434343434343434346060605C +S315E0700AD06070707070606060602020202024242434 +S315E0700AE024202020202020202020202020606060EC +S315E0700AF060202020202020202020202020000000C0 +S315E0700B000000000000000000000000000004040483 +S315E0700B100400000000040404040000000062626245 +S315E0700B206200000000000000000000000044444441 +S315E0700B30440000000040404040000000000404040F +S315E0700B40044040404004040404040404040000002B +S315E0700B5000000000006060606040404040424242F9 +S315E0700B604200000000020202020000000030303055 +S315E0700B703022222222404040400000000020202007 +S315E0700B802000000000262626262626262622222259 +S315E0700B9022000000000000000004040404040404C1 +S315E0700BA0040404040464646464040404040404042F +S315E0700BB00404040404666666660404040444444457 +S315E0700BC0440404040414141414444444440404040F +S315E0700BD004848484840404040484848484404040CB +S315E0700BE04040404040404040400000000004040463 +S315E0700BF004202020202222222220202020626262ED +S315E0700C006200000000B0B0B0B0A2A2A2A280808064 +S315E0700C10808080808020202020000000002626260C +S315E0700C2026222222228686868680808080C0C0C068 +S315E0700C30C0808080808080808000000000444444D2 +S315E0700C40440000000040404040808080808484847E +S315E0700C5084C0C0C0C084848484040404040000009A +S315E0700C6000000000004040404048484848F0F0F03E +S315E0700C70F0282828280404040400000000828282F8 +S315E0700C8082202020202020202020202020202020AC +S315E0700C902020202020A0A0A0A0A0A0A0A0303030CE +S315E0700CA030A0A0A0A03C3C3C3C28282828A4A4A4C2 +S315E0700CB0A42020202060606060A0A0A0A0B8B8B892 +S315E0700CC0B8282828288484848408080808181818FE +S315E0700CD01880808080363636361010101084848402 +S315E0700CE0840404040400000000000000000000001A +S315E0700CF00088888888181818180000000084848492 +S315E0700D008400000000B2B2B2B222222222000000B9 +S315E0700D100000000000888888882A2A2A2A2222224F +S315E0700D20222222222222222222A2A2A2A2AEAEAEA9 +S315E0700D30AE222222223E3E3E3E2222222272727251 +S315E0700D40722A2A2A2AA2A2A2A2A2A2A2A22E2E2E99 +S315E0700D502EA2A2A2A23A3A3A3A9E9E9E9E5D5D5D10 +S315E0700D605D000000002A2A2A2A0404040400000018 +S315E0700D70001C1C1C1C04040404909090901010102D +S315E0700D8010000000000808080828282828808080BD +S315E0700D90800C0C0C0C000000008080808008080835 +S315E0700DA008808080800000000008080808080808AD +S315E0700DB008808080800808080802020202000000AD +S315E0700DC000ACACACAC808080800C0C0C0C000000ED +S315E0700DD000404040400000000020202020202020DD +S315E0700DE0200404040480808080A0A0A0A0080808E5 +S315E0700DF008242424242020202024242424040404E9 +S315E0700E000400000000000000008080808000000088 +S315E0700E10000000000008080808080808080000003C +S315E0700E20000808080808080808000000000000002C +S315E0700E300018181818080808080808080888888824 +S315E0700E408820202020282828280C0C0C0C00000074 +S315E0700E5000828282822020202068686868A0A0A034 +S315E0700E60A0A0A0A0A02020202020202020202020AC +S315E0700E7020202020202020202028282828202020FC +S315E0700E802028282828A0A0A0A020202020A0A0A06C +S315E0700E90A0A0A0A0A020202020000000000000005C +S315E0700EA0000808080800000000A0A0A0A00000004C +S315E0700EB0004040404000000000202020200000005C +S315E0700EC0000C0C0C0C0C0C0C0C080808080000004C +S315E0700ED0000000000008080808000000000000009C +S315E0700EE00000000000000000000A0A0A0A00000084 +S315E0700EF0006060606008080808585858581010106C +S315E0700F00100000000050505050202020202020205B +S315E0700F102000000000000000006060606048484803 +S315E0700F204860606060282828282828282800000063 +S315E0700F30000000000000000000C0C0C0C0808080DB +S315E0700F40808989898900000000040404040404048B +S315E0700F500420202020000000000000000080808037 +S315E0700F60809090909080808080000000000000006B +S315E0700F7000131313130303030340404040000000C3 +S315E0700F8000404040400303030323232323434343AA +S315E0700F90438383838303030303030303030303038B +S315E0700FA0037373737363636363D3D3D3D3838383BB +S315E0700FB083A3A3A3A30303030323232323232323CB +S315E0700FC023333333330303030380808080000000D0 +S315E0700FD00014141414040404043232323210101063 +S315E0700FE0100000000080808080202020200000001B +S315E0700FF00040404040080808080808080808080843 +S315E0701000080000000000000000030303030303036D +S315E0701010030000000000000000000000000303036E +S315E07010200323232323030303031B1B1B1B1313132A +S315E070103013030303038383838327272727333333FA +S315E0701040331B1B1B1B1B1B1B1B3B3B3B3B1313131A +S315E0701050133333333333333333333333331313138A +S315E07010601398989898101010105050505050505047 +S315E07010705011111111101010101414141450505006 +S315E070108050454545454040404040404040C4C4C45A +S315E0701090C450505050404040404040404040404036 +S315E07010A0406E6E6E6E66666666444444444040408A +S315E07010B0404040404062626262E2E2E2E262626264 +S315E07010C0623737373732323232232323232A2A2ABA +S315E07010D02A626262623333333332323232323232DE +S315E07010E03232323232B2B2B2B23333333333333383 +S315E07010F03337373737323232321818181810101033 +S315E07011001054545454101010101616161610101061 +S315E0701110105050505014141414E0E0E0E000000059 +S315E0701120000000000048484848040404040404042D +S315E0701130040404040400000000C1C1C1C14141417E +S315E070114041404040400101010106060606000000EC +S315E07011500028282828000000005050505010101029 +S315E07011601000000000000000002020202030303009 +S315E07011703010101010909090903434343418181851 +S315E070118018B0B0B0B0303030307474747410101071 +S315E070119010141414141010101050505050141414DD +S315E07011A014707070701010101090909090D0D0D025 +S315E07011B0D0ACACACAC040404048484848400000039 +S315E07011C00050505050404040404040404000000089 +S315E07011D0008C8C8C8C000000000000000000000089 +S315E07011E0000303030300000000202020200000001D +S315E07011F00010101010101010100000000000000019 +S315E070120000E4E4E4E47070707010101010181818B0 +S315E070121018B4B4B4B450505050FCFCFCFC70707010 +S315E07012207070707070D4D4D4D450505050505050B8 +S315E0701230505050505050505050D7D7D7D7D4D4D4B0 +S315E0701240D4D4D4D4D450505050626262624040409C +S315E070125040404040404040404084848484000000E8 +S315E070126000000000000000000010101010000000E8 +S315E07012700000000000000000000101010100000014 +S315E070128000202020200000000046464646404040B0 +S315E0701290400202020200000000ACACACAC6A6A6AC2 +S315E07012A06AC4C4C4C44040404070707070C4C4C462 +S315E07012B0C47272727262626262727272724040403C +S315E07012C040C4C4C4C4C4C4C4C4C4C4C4C440404098 +S315E07012D04070707070505050505050505050505048 +S315E07012E050A2A2A2A20000000000000000000000D0 +S315E07012F00050505050000000000000000000000058 +S315E0701300001C1C1C1C0C0C0C0C00000000000000E7 +S315E070131000010101010C0C0C0C2C2C2C2C0C0C0C6F +S315E07013200CCECECECE0C0C0C0C8E8E8E8E0C0C0C97 +S315E07013300C7C7C7C7CAEAEAEAE5C5C5C5CA6A6A641 +S315E0701340A644444444000000000C0C0C0C2C2C2CDD +S315E07013502C4C4C4C4CAEAEAEAEAEAEAEAEBEBEBE31 +S315E0701360BE0C0C0C0C404040404040404050505049 +S315E07013705000000000909090901010101000000047 +S315E07013800000000000606060600000000000000087 +S315E070139000000000000C0C0C0C0C0C0C0C00000097 +S315E07013A00000000000808080800C0C0C0C0C0C0C93 +S315E07013B00C0C0C0C0CCFCFCFCF0C0C0C0CACACAC2B +S315E07013C0AC0C0C0C0C5C5C5C5C9C9C9C9C4C4C4C27 +S315E07013D04C0C0C0C0C2C2C2C2C7C7C7C7C9C9C9CC7 +S315E07013E09C9C9C9C9CBCBCBCBC1C1C1C1C707070EB +S315E07013F07070707070707070701010101010101037 +S315E07014001010101010101010101010101072727260 +S315E0701410721010101010101010101010102C2C2CC0 +S315E07014202C0C0C0C0C00000000000000009090905A +S315E0701430900C0C0C0C0C0C0C0C0C0C0C0C4F4F4F49 +S315E07014404F0F0F0F0F0C0C0C0C0C0C0C0C4C4C4C77 +S315E07014504C0F0F0F0F4F4F4F4F2F2F2F2F1F1F1F59 +S315E07014601F5F5F5F5F0F0F0F0F2F2F2F2F2F2F2F06 +S315E07014702F3F3F3F3F53535353535353535353535A +S315E07014805333333333B3B3B3B31313131313131396 +S315E07014901333333333101010101010101010101067 +S315E07014A010101010101D1D1D1D1C1C1C1C10101082 +S315E07014B01018181818E0E0E0E044444444040404CA +S315E07014C004040404048484848444444444C4C4C446 +S315E07014D0C44444444457575757C7C7C7C74444449E +S315E07014E044444444444444444447474747E7E7E771 +S315E07014F0E7C7C7C7C7C7C7C7C74747474743434392 +S315E070150043434343437373737363636363131313A5 +S315E07015101303030303232323230303030323232355 +S315E0701520232323232333333333030303038C8C8C3A +S315E07015308C8C8C8C8C1010101008080808707070E9 +S315E070154070D4D4D4D48484848484848484A4A4A479 +S315E0701550A4C4C4C4C4C4C4C4C4C4C4C4C4D4D4D4E5 +S315E0701560D4C4C4C4C4C4C4C4C4C4C4C4C4D7D7D79C +S315E0701570D7C7C7C7C7C4C4C4C4C4C4C4C4C4C4C4B6 +S315E0701580C4C7C7C7C76363636343434343434343C4 +S315E070159043434343430303030303030303333333F5 +S315E07015A03323232323131313130303030323232365 +S315E07015B02303030303AFAFAFAFAFAFAFAF33333395 +S315E07015C0330B0B0B0B40404040C4C4C4C49494949A +S315E07015D0948484848497979797D4D4D4D4C4C4C419 +S315E07015E0C4C4C4C4C4E4E4E4E4C4C4C4C4C4C4C4E5 +S315E07015F0C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C455 +S315E0701600C4C4C4C4C4C6C6C6C6C6C6C6C6404040C0 +S315E070161040404040404141414142424242AAAAAA2A +S315E0701620AA0202020212121212121212120202021C +S315E070163002020202022222222232323232161616B8 +S315E070164016161616163232323212121212FAFAFAD8 +S315E0701650FA767676763E3E3E3E1616161694949456 +S315E07016609454545454D4D4D4D4545454547C7C7C2C +S315E07016707CD4D4D4D454545454545454546D6D6D61 +S315E07016806D44444444CCCCCCCCCCCCCCCCC4C4C4DB +S315E0701690C44444444440404040404040405252522A +S315E07016A0524242424284848484000000000000007A +S315E07016B00002020202222222220202020203030333 +S315E07016C003020202020B0B0B0B0A0A0A0A323232CF +S315E07016D03223232323D6D6D6D64A4A4A4A2A2A2AF8 +S315E07016E02A0A0A0A0AAFAFAFAF6B6B6B6BFFFFFFED +S315E07016F0FF4A4A4A4A48484848CCCCCCCC58585815 +S315E070170058484848485B5B5B5B58585858CCCCCCDB +S315E0701710CCCCCCCCCCEDEDEDED48484848404040E3 +S315E07017204040404040404040404040404084848497 +S315E0701730840000000012121212020202020000007F +S315E0701740000000000001010101020202022A2A2AB9 +S315E07017502A0A0A0A0A0202020202020202C6C6C67F +S315E0701760C64A4A4A4A3A3A3A3A2A2A2A2A9E9E9ECB +S315E07017709E4A4A4A4AEEEEEEEE4A4A4A4A6A6A6A2F +S315E07017806AEEEEEEEE7A7A7A7A4A4A4A4A484848F9 +S315E07017904848484848DCDCDCDCCCCCCCCCDCDCDC57 +S315E07017A0DC585858584040404040404040414141E4 +S315E07017B04140404040848484840000000010101052 +S315E07017C0100000000040404040000000003232321D +S315E07017D032222222220808080808080808010101B6 +S315E07017E0012A2A2A2AA6A6A6A62222222222222274 +S315E07017F02222222222E6E6E6E622222222B6B6B6A7 +S315E0701800B62222222272727272A6A6A6A6626262BE +S315E070181062222222222222222262626262B6B6B656 +S315E0701820B6A6A6A6A6848484840000000050505014 +S315E0701830504040404072727272101010108080807A +S315E070184080000000000101010100000000404040FE +S315E0701850400000000000000000000000000C0C0CCE +S315E07018600C0C0C0C0C202020202828282880808046 +S315E070187080040404040606060624242424E4E4E42E +S315E0701880E424242424B5B5B5B534343434656565BB +S315E070189065B4B4B4B464646464252525252424242D +S315E07018A02464646464A4A4A4A4A4A4A4A4A5A5A51F +S315E07018B0A5252525256161616160606060404040D5 +S315E07018C04000000000888888880000000000000062 +S315E07018D00000000000404040400000000020202052 +S315E07018E02000000000040404040404040410101032 +S315E07018F0100000000080808080040404040C0C0C4E +S315E07019000C04040404C4C4C4C404040404868686B3 +S315E070191086040404046C6C6C6C848484845454541F +S315E070192054515151514A4A4A4A0000000014141465 +S315E0701930140C0C0C0C44444444ACACACACBCBCBC19 +S315E0701940BC94949494141414147070707050505035 +S315E07019505070707070303030303838383810101051 +S315E07019601010101010101010105050505010101021 +S315E070197010333333331010101094949494949494E9 +S315E07019809422222222000000000000000084848459 +S315E0701990848C8C8C8C84848484CCCCCCCC84848471 +S315E07019A0848D8D8D8D8D8D8D8DCCCCCCCC84848439 +S315E07019B084C4C4C4C485858585ADADADADCDCDCD0E +S315E07019C0CD9F9F9F9F959595958F8F8F8F8D8D8D41 +S315E07019D08D6161616173737373515151511111115D +S315E07019E011B9B9B9B9111111113333333333333303 +S315E07019F033737373731111111110101010101010DE +S315E0701A0010141414141414141410101010505050A0 +S315E0701A105090909090141414142E2E2E2E040404CC +S315E0701A2004CCCCCCCC040404049C9C9C9C0C0C0C88 +S315E0701A300C4C4C4C4C8484848445454545050505E1 +S315E0701A40050C0C0C0C4C4C4C4C8C8C8C8C8585851C +S315E0701A5085ADADADAD0D0D0D0D5353535351515184 +S315E0701A60514343434301010101ADADADAD33333372 +S315E0701A70331111111111111111313131311111115E +S315E0701A801133333333333333333333333311111158 +S315E0701A90111010101010101010545454545050501F +S315E0701AA0503B3B3B3B101010109C9C9C9C50505004 +S315E0701AB050ECECECEC4848484848484848C4C4C444 +S315E0701AC0C440404040404040404848484848484804 +S315E0701AD048DFDFDFDFC7C7C7C7CCCCCCCC494949C5 +S315E0701AE04940404040424242424242424262626221 +S315E0701AF0628E8E8E8E020202020202020222222280 +S315E0701B0022323232322222222212121212020202BF +S315E0701B10020202020222222222222222220202024F +S315E0701B20025656565662626262080808080000005D +S315E0701B30009C9C9C9C40404040DCDCDCDC58585867 +S315E0701B405848484848C4C4C4C440404040404040F7 +S315E0701B50404848484848484848DCDCDCDCC4C4C4F3 +S315E0701B60C4CCCCCCCC484848487373737363636316 +S315E0701B706340404040404040408484848423232333 +S315E0701B8023232323232323232323232323232323CF +S315E0701B902323232323232323233B3B3B3B2B2B2B47 +S315E0701BA02B3333333323232323676767676B6B6B7F +S315E0701BB06B2B2B2B2B2B2B2B2BBFBFBFBF6B6B6BCF +S315E0701BC06BCCCCCCCC4848484858585858CCCCCC40 +S315E0701BD0CC7B7B7B7B58585858484848484848489F +S315E0701BE048CECECECECCCCCCCCCCCCCCCC484848E7 +S315E0701BF04840404040404040404040404040404087 +S315E0701C0040313131312121212100000000000000F6 +S315E0701C1000424242422121212121212121212121FB +S315E0701C2021AFAFAFAFADADADAD232323236161611E +S315E0701C306131313131AFAFAFAFBDBDBDBDADADAD72 +S315E0701C40ADEDEDEDEDADADADADAFAFAFAFAFAFAF60 +S315E0701C50AFFFFFFFFFADADADADCCCCCCCC8C8C8CFB +S315E0701C608C9C9C9C9CCCCCCCCC9C9C9C9C9C9C9CAE +S315E0701C709C8C8C8C8C8C8C8C8C424242424040404A +S315E0701C80404040404000000000101010100000007E +S315E0701C9000000000000000000031313131212121C7 +S315E0701CA02100000000000000008E8E8E8EADADAD7E +S315E0701CB0AD21212121A1A1A1A1636363636D6D6D46 +S315E0701CC06D2F2F2F2F2D2D2D2D3D3D3D3D6F6F6FA0 +S315E0701CD06F7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D9C +S315E0701CE06D6F6F6F6F6F6F6F6F7F7F7F7F6D6D6D76 +S315E0701CF06D4C4C4C4C4C4C4C4C5C5C5C5C4C4C4C6D +S315E0701D004C73737373505050504040404040404065 +S315E0701D10408E8E8E8E0000000000000000000000F5 +S315E0701D20000000000000000000000000000000005D +S315E0701D300021212121212121210000000000000045 +S315E0701D4000C6C6C6C661616161292929292121219A +S315E0701D5021BDBDBDBD71717171EDEDEDED69696965 +S315E0701D606969696969F5F5F5F57171717171717125 +S315E0701D70717979797979797979FDFDFDFDF5F5F501 +S315E0701D80F5FDFDFDFD797979795050505050505000 +S315E0701D905050505050505050509C9C9C9C1010107D +S315E0701DA01010101010101010104242424200000045 +S315E0701DB0000000000000000000101010100000008D +S315E0701DC0000000000040404040B5B5B5B521212186 +S315E0701DD02108080808000000008E8E8E8E212121D1 +S315E0701DE021ADADADAD2929292969696969A5A5A591 +S315E0701DF0A5616161612121212139393939696969C1 +S315E0701E0069BDBDBDBDA5A5A5A5ADADADAD2929295C +S315E0701E102961616161616161617171717121212114 +S315E0701E2021848484840000000010101010000000EB +S315E0701E300031313131101010100000000000000048 +S315E0701E40000A0A0A0A0808080800000000000000F4 +S315E0701E5000848484840808080808080808080808C4 +S315E0701E6008FDFDFDFD292929298C8C8C8C08080834 +S315E0701E700808080808ADADADAD2929292929292911 +S315E0701E80292B2B2B2B29292929AFAFAFAFADADADC0 +S315E0701E90ADADADADAD2B2B2B2B31313131212121B8 +S315E0701EA0213131313121212121B7B7B7B7333333FE +S315E0701EB03333333333212121210000000000000049 +S315E0701EC00010101010101010101A1A1A1A080808BC +S315E0701ED008101010101010101084848484080808FC +S315E0701EE0080808080808080808DCDCDCDC080808CC +S315E0701EF0088C8C8C8C080808083B3B3B3BAFAFAF3B +S315E0701F00AF08080808888888885959595900000028 +S315E0701F100008080808080808082B2B2B2BAFAFAF72 +S315E0701F20AFAFAFAFAFAFAFAFAF2B2B2B2B2323231F +S315E0701F30232323232333333333232323233737379F +S315E0701F4037232323232323232323232323232323F7 +S315E0701F50232323232333333333232323238888888C +S315E0701F608888888888101010100000000035353594 +S315E0701F7035989898988888888888888888CCCCCCD2 +S315E0701F80CC888888888C8C8C8C8888888888888827 +S315E0701F90888C8C8C8C8888888888888888BBBBBBC2 +S315E0701FA0BBABABABAB8C8C8C8C8D8D8D8D8C8C8C6C +S315E0701FB08CAAAAAAAA222222222222222222222221 +S315E0701FC0222222222226262626222222223232325B +S315E0701FD0322222222272727272222222222222223B +S315E0701FE02222222222AAAAAAAAAAAAAAAA3232320B +S315E0701FF032222222220404040488888888989898D9 +S315E070200098888888889E9E9E9E989898988C8C8C46 +S315E07020108C88888888E8E8E8E88C8C8C8CC8C8C896 +S315E0702020C88888888888888888C8C8C8C88C8C8C8E +S315E07020308C8C8C8C8C9F9F9F9F8B8B8B8B40404026 +S315E070204040414141414040404002020202060606DC +S315E07020500622222222020202020202020202020286 +S315E0702060022222222232323232222222229A9A9A72 +S315E07020709A8A8A8A8A020202022222222266666686 +S315E070208066CACACACA9A9A9A9AAAAAAAAA8C8C8CB8 +S315E07020908CC8C8C8C8DCDCDCDCC8C8C8C8F9F9F9C3 +S315E07020A0F9DCDCDCDCC8C8C8C8C8C8C8C8E8E8E879 +S315E07020B0E8C8C8C8C8CCCCCCCCCCCCCCCCCCCCCCFE +S315E07020C0CCC8C8C8C8404040404040404043434305 +S315E07020D0434343434304040404000000000000004B +S315E07020E000030303036363636303030303131313BD +S315E07020F013131313138B8B8B8B8B8B8B8B2323236A +S315E07021002333333333171717179B9B9B9BBBBBBB91 +S315E0702110BB9B9B9B9BBFBFBFBFBBBBBBBBBFBFBF1D +S315E0702120BF9B9B9B9BD8D8D8D89C9C9C9CD8D8D8D6 +S315E0702130D8989898989A9A9A9AD8D8D8D89C9C9C75 +S315E07021409C9C9C9C9CAEAEAEAE8888888840404095 +S315E0702150404040404040404040000000008C8C8C45 +S315E07021608C00000000010101010101010100000085 +S315E070217000000000000000000001010101212121A2 +S315E070218021010101011313131311111111C7C7C7EF +S315E0702190C75151515129292929232323238D8D8D07 +S315E07021A08D41414141EDEDEDED494949496B6B6B2F +S315E07021B06BE7E7E7E763636363414141414848485A +S315E07021C04848484848CCCCCCCCC4C4C4C4CDCDCDAA +S315E07021D0CD484848484040404040404040414141F9 +S315E07021E041404040400C0C0C0C00000000101010F8 +S315E07021F01000000000000000000000000022222213 +S315E070220022222222228080808082828282010101C3 +S315E0702210012020202064646464E0E0E0E0B8B8B8AF +S315E0702220B8B0B0B0B0A4A4A4A4F0F0F0F0E4E4E4E4 +S315E0702230E4E0E0E0E0E8E8E8E8E4E4E4E4E0E0E014 +S315E0702240E0E0E0E0E0E8E8E8E8E0E0E0E0ECECECF4 +S315E0702250ECECECECECC4C4C4C4C0C0C0C0404040BC +S315E0702260404040404062626262404040400C0C0C2C +S315E07022700C00000000010101010000000040404038 +S315E07022804000000000000000000000000080808038 +S315E0702290808080808022222222222222220404044C +S315E07022A0048080808089898989A2A2A2A2A6A6A636 +S315E07022B0A6A2A2A2A2B6B6B6B6B2B2B2B2EAEAEA3C +S315E07022C0EAA6A6A6A6E2E2E2E2B2B2B2B2BABABAB8 +S315E07022D0BAF2F2F2F2BEBEBEBEBEBEBEBEB6B6B614 +S315E07022E0B6B2B2B2B272727272727272725050509A +S315E07022F050101010101C1C1C1C1010101011111115 +S315E070230011101010105050505010101010000000A6 +S315E07023100000000000808080808080808010101037 +S315E070232010000000000404040480808080ABABAB36 +S315E0702330ABA3A3A3A38C8C8C8C808080808C8C8C3C +S315E07023408CABABABABEBEBEBEBA7A7A7A7F3F3F3DE +S315E0702350F3B3B3B3B3ABABABABEBEBEBEBAFAFAF03 +S315E0702360AFB7B7B7B7BFBFBFBFBBBBBBBB7373734B +S315E07023707373737373737373733333333333333397 +S315E07023803333333333101010101010101050505088 +S315E07023905010101010121212121010101098989807 +S315E07023A09898989898202020200808080804040433 +S315E07023B00480808080808080808080808080808043 +S315E07023C080808080808383838383838383C0C0C0DF +S315E07023D0C080808080C0C0C0C083838383A3A3A3F2 +S315E07023E0A3C3C3C3C39393939393939393838383C7 +S315E07023F083838383836363636373737373535353A7 +S315E07024005313131313333333331313131333333326 +S315E0702410333333333373737373131313131010101F +S315E070242010101010109898989898989898313131B3 +S315E070243031181818181414141490909090A1A1A142 +S315E0702440A1808080808080808080808080909090E5 +S315E07024509080808080C0C0C0C080808080C2C2C250 +S315E0702460C28282828280808080C0C0C0C0818181C9 +S315E07024708182828282A2A2A2A282828282525252F7 +S315E070248052525252524242424202020202AAAAAA4E +S315E0702490AA3232323212121212121212127272728E +S315E07024A072121212123232323232323232363636EA +S315E07024B036161616161010101010101010989898F0 +S315E07024C098141414141E1E1E1E141414149494944A +S315E07024D0941414141484848484040404044C4C4CBE +S315E07024E04C84848484444444444545454537373771 +S315E07024F03700000000040404040C0C0C0C44444443 +S315E070250044BCBCBCBCACACACAC8484848404040475 +S315E070251004424242426060606060606060202020F9 +S315E070252020A0A0A0A0202020202020202020202055 +S315E07025302020202020202020203030303020202005 +S315E0702540203C3C3C3C2C2C2C2C3030303030303025 +S315E070255030F0F0F0F06C6C6C6C0C0C0C0C0C0C0C31 +S315E07025600C9C9C9C9C5C5C5C5CFDFDFDFD4C4C4C51 +S315E07025704C5C5C5C5CDCDCDCDC4F4F4F4F4C4C4CB9 +S315E07025804C4C4C4C4C4C4C4C4CDCDCDCDCCCCCCC75 +S315E0702590CCCCCCCCCC4C4C4C4C70707070606060D9 +S315E07025A060404040404040404009090909202020F1 +S315E07025B020202020202020202022222222202020BD +S315E07025C0202222222220202020A4A4A4A4A6A6A60B +S315E07025D0A6303030302020202038383838A4A4A4F3 +S315E07025E0A4BEBEBEBEB6B6B6B6F6F6F6F6A4A4A45D +S315E07025F0A484848484848484849C9C9C9C94949495 +S315E07026009494949494848484849C9C9C9C94949454 +S315E0702610948D8D8D8D8C8C8C8C84848484848484D0 +S315E070262084000000000000000000000000010101CD +S315E0702630013A3A3A3A2222222200000000000000D3 +S315E070264000010101012222222222222222222222BA +S315E070265022A7A7A7A7A6A6A6A623232323222222DC +S315E07026602222222222A7A7A7A7BEBEBEBEA6A6A6E4 +S315E0702670A6FEFEFEFEA6A6A6A6BFBFBFBFBFBFBF95 +S315E0702680BFBFBFBFBFA6A6A6A68484848484848405 +S315E0702690849C9C9C9C9C9C9C9C9E9E9E9E8484847C +S315E07026A0849C9C9C9C9C9C9C9C23232323000000E4 +S315E07026B00000000000000000009494949400000074 +S315E07026C00000000000010101011010101000000070 +S315E07026D00000000000000000000909090908080868 +S315E07026E008202020200808080887878787000000D0 +S315E07026F0000303030300000000E4E4E4E42323237F +S315E070270023949494940000000020202020848484F4 +S315E070271084232323232323232333333333000000FB +S315E070272000848484848484848494949494000000E3 +S315E0702730003131313110101010000000000000003F +S315E070274000AEAEAEAE00000000000000000000007B +S315E07027500000000000000000000000000000000023 +S315E070276000101010100000000000000000000000D3 +S315E070277000CCCCCCCC404040402828282800000033 +S315E0702780008686868640404040C6C6C6C640404003 +S315E07027904068686868E6E6E6E6505050504040406B +S315E07027A0407878787840404040FEFEFEFEFEFEFEC1 +S315E07027B0FEF6F6F6F640404040404040404040402D +S315E07027C04050505050505050509C9C9C9C00000083 +S315E07027D00010101010101010106363636300000097 +S315E07027E00000000000000000001010101000000053 +S315E07027F00000000000010101019C9C9C9C0000000F +S315E0702800000808080800000000858585850000003E +S315E070281000A4A4A4A4000000004B4B4B4B8484841A +S315E070282084434343430000000028282828636363F9 +S315E0702830639C9C9C9C8C8C8C8CB4B4B4B40000006F +S315E070284000737373737373737373737373000000CE +S315E070285000040404040000000010101010101010A2 +S315E070286010333333330000000010101010101010C6 +S315E070287010ABABABAB888888880000000000000026 +S315E07028800004040404888888888888888889898907 +S315E070289089CCCCCCCC888888888C8C8C8C88888841 +S315E07028A088898989898C8C8C8CA8A8A8A8888888BE +S315E07028B0889B9B9B9B989898988F8F8F8F8C8C8C8E +S315E07028C08CACACACACBBBBBBBB101010101010101A +S315E07028D0103030303010101010373737373333331D +S315E07028E033333333331010101010101010101010E3 +S315E07028F010101010101010101098989898989898CA +S315E07029009810101010101010102727272788888825 +S315E0702910888888888888888888DCDCDCDC88888891 +S315E0702920888C8C8C8C89898989888888888C8C8CB1 +S315E07029308C888888888888888889898989888888B9 +S315E070294088ACACACAC8C8C8C8C9F9F9F9F98989885 +S315E07029509803030303000000002020202033333364 +S315E0702960331414141410101010303030301010105E +S315E0702970103333333333333333333333331010105D +S315E070298010989898989898989810101010101010B1 +S315E0702990103737373798989898989898989898986D +S315E07029A098EEEEEEEE888888888C8C8C8C88888899 +S315E07029B088888888888C8C8C8C88888888A8A8A8D1 +S315E07029C0A899999999898989898C8C8C8C8C8C8CAD +S315E07029D08C8C8C8C8C8989898901010101010101BA +S315E07029E0012323232321212121AFAFAFAF21212161 +S315E07029F02121212121232323231111111101010109 +S315E0702A000111111111212121211313131313131322 +S315E0702A10133333333321212121CCCCCCCC4040400D +S315E0702A204018181818101010109494949440404060 +S315E0702A3040D4D4D4D4505050504A4A4A4AC4C4C4FC +S315E0702A40C44040404040404040484848484040408C +S315E0702A5040CCCCCCCCCCCCCCCCE5E5E5E5616161C9 +S315E0702A60614040404040404040404040406161618C +S315E0702A7061ADADADAD212121213333333331313108 +S315E0702A803163636363212121212121212133333392 +S315E0702A9033313131313131313131313131313131CE +S315E0702AA031BFBFBFBF333333333B3B3B3B31313158 +S315E0702AB0319494949410101010949494941010107F +S315E0702AC0107B7B7B7B949494945050505095959565 +S315E0702AD0952222222200000000101010100808082B +S315E0702AE008404040408C8C8C8C8C8C8C8C9494946C +S315E0702AF094000000004040404040404040636363C3 +S315E0702B006323232323808080800000000000000080 +S315E0702B100023232323232323232323232333333322 +S315E0702B2033333333332F2F2F2F2F2F2F2F2323236F +S315E0702B30233B3B3B3BB3B3B3B337373737373737E3 +S315E0702B403737373737F7F7F7F737373737B7B7B73F +S315E0702B50B7373737371414141494949494141414B0 +S315E0702B60141414141414141414141414149494944F +S315E0702B709494949494A4A4A4A4040404040000007B +S315E0702B80000000000000000000000000008C8C8C4B +S315E0702B908C0000000003030303030303030000003B +S315E0702BA0000000000000000000030303032323235A +S315E0702BB0230303030313131313131313138F8F8F4B +S315E0702BC08F030303032B2B2B2B33333333D7D7D717 +S315E0702BD0D713131313B7B7B7B7131313133B3B3BA3 +S315E0702BE03BB7B7B7B7333333331313131318181818 +S315E0702BF018101010109C9C9C9C9C9C9C9C95959588 +S315E0702C009510101010101010101010101003030310 +S315E0702C10030000000088888888000000001010100B +S315E0702C2010000000004040404001010101202020DA +S315E0702C30202020202004040404040404040101017B +S315E0702C40012020202028282828242424243F3F3FC0 +S315E0702C503F34343434A7A7A7A724242424A4A4A4F7 +S315E0702C60A4373737377C7C7C7CB4B4B4B474747472 +S315E0702C7074343434343F3F3F3F77777777BFBFBFA5 +S315E0702C80BFBCBCBCBC9494949414141414505050AF +S315E0702C90505050505072727272101010109898987E +S315E0702CA09810101010000000000000000040404036 +S315E0702CB04000000000000000000000000004040472 +S315E0702CC004040404043131313121212121808080D2 +S315E0702CD080050505050E0E0E0E24242424A4A4A456 +S315E0702CE0A424242424A4A4A4A4242424246C6C6CF6 +S315E0702CF06CA4A4A4A464646464242424243C3C3CAE +S315E0702D003C64646464BCBCBCBCACACACACB4B4B4E5 +S315E0702D10B4343434347070707060606060404040D9 +S315E0702D20400000000010101010101010101111115A +S315E0702D3011000000001010101010101010000000AC +S315E0702D4000000000008C8C8C8C8C8C8C8C000000CD +S315E0702D50000000000040404040CCCCCCCCAFAFAFE0 +S315E0702D60AFAFAFAFAF8C8C8C8CECECECECCCCCCC5E +S315E0702D70CCCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFE0 +S315E0702D80DFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFAD +S315E0702D90CFDFDFDFDFDFDFDFDFDFDFDFDF535353A1 +S315E0702DA0535353535353535353535353531F1F1F39 +S315E0702DB01F131313131010101010101010505050E2 +S315E0702DC05010101010323232321010101090909065 +S315E0702DD0909090909002020202000000000C0C0CA1 +S315E0702DE00C808080808888888880808080848484D5 +S315E0702DF08480808080B5B5B5B5A1A1A1A1C8C8C849 +S315E0702E00C8A4A4A4A4C0C0C0C08181818189898975 +S315E0702E1089C1C1C1C18D8D8D8D8F8F8F8F878787CA +S315E0702E2087838383834343434343434343515151AE +S315E0702E30510101010119191919010101011111114C +S315E0702E40111313131353535353010101010000007F +S315E0702E50000000000090909090909090901010106C +S315E0702E6010000000001C1C1C1C909090908B8B8BAB +S315E0702E708B808080808080808080808080808080F1 +S315E0702E808080808080C8C8C8C881818181F0F0F078 +S315E0702E90F0A0A0A0A088888888C0C0C0C0898989B1 +S315E0702EA089A8A8A8A8A0A0A0A0A0A0A0A06363637A +S315E0702EB06360606060636363632020202028282855 +S315E0702EC02823232323303030302020202020202058 +S315E0702ED020202020202323232323232323B3B3B3CB +S315E0702EE0B3A0A0A0A000000000000000001C1C1C05 +S315E0702EF01C80808080BBBBBBBB90909090C0C0C0F4 +S315E0702F00C080808080838383838080808088888807 +S315E0702F10888080808080808080808080808888883B +S315E0702F208881818181A8A8A8A8A8A8A8A8808080FF +S315E0702F3080808080800101010120202020202020D7 +S315E0702F402020202020BBBBBBBB3030303023232376 +S315E0702F50232020202020202020333333333030309C +S315E0702F6030303030303434343434343434333333E2 +S315E0702F703337373737BBBBBBBB30303030181818F8 +S315E0702F801810101010D0D0D0D01010101090909063 +S315E0702F909010101010181818189090909003030362 +S315E0702FA003000000000808080800000000989898E0 +S315E0702FB09888888888808080800000000000000003 +S315E0702FC00000000000000000000000000088888813 +S315E0702FD088000000000000000000000000131313DA +S315E0702FE01310101010030303030000000004040420 +S315E0702FF004171717171010101010101010D8D8D813 +S315E0703000D8545454541F1F1F1F17171717979797A5 +S315E07030109754545454D4D4D4D4545454545C5C5CBF +S315E07030205CD4D4D4D456565656545454545C5C5CE2 +S315E07030305C54545454CECECECECCCCCCCCC4C4C4DA +S315E0703040C444444444404040404040404040404096 +S315E07030504040404040111111110101010100000092 +S315E07030600000000000000000000101010101010103 +S315E070307001010101018F8F8F8F8D8D8D8D0303037C +S315E0703080030101010141414141CFCFCFCF9D9D9DCC +S315E07030909D8D8D8D8D9D9D9D9DCDCDCDCDDFDFDFC4 +S315E07030A0DFDFDFDFDFDFDFDFDFCDCDCDCDCCCCCC5B +S315E07030B0CC3C3C3C3C5D5D5D5D00000000CCCCCC26 +S315E07030C0CCDCDCDCDCDCDCDCDCDDDDDDDDCCCCCC26 +S315E07030D0CCDCDCDCDCDCDCDCDC4343434340404022 +S315E07030E0404040404040404040101010100000000A +S315E07030F0000000000000000000101010100000003A +S315E07031000000000000000000008D8D8D8D8C8C8C91 +S315E07031108C000000000404040442424242C8C8C85D +S315E0703120C88A8A8A8A8888888888888888CACACABB +S315E0703130CAD8D8D8D8C8C8C8C8D8D8D8D8C8C8C837 +S315E0703140C8DADADADADADADADADADADADAC8C8C8D1 +S315E0703150C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D829 +S315E0703160D8525252524040404050505050505050B9 +S315E0703170508383838300000000000000000000009D +S315E070318000000000000000000000000000000000E9 +S315E07031900008080808080808080000000000000099 +S315E07031A0008585858508080808080808080808085D +S315E07031B008DADADADA585858588A8A8A8A080808A9 +S315E07031C008080808088A8A8A8A0808080808080821 +S315E07031D00808080808080808088A8A8A8A8A8A8A8B +S315E07031E08A8A8A8A8A0808080800000000000000B7 +S315E07031F00000000000000000000000000000000079 +S315E07032000000000000000000000000000000000068 +S315E07032100000000000000000000000000000000058 +S315E07032200000000000000000000000000000000048 +S315E07032300000000000000000000000000000000038 +S315E07032400000000000000000000000000000000028 +S315E07032500000000000000000000000000000000018 +S315E07032600000000000000000000000000000000008 +S315E070327000000000000000000000000000000000F8 +S315E070328000000000000000000000000000000000E8 +S315E070329000000000000000000000000000000000D8 +S315E07032A000000000000000000000000000000000C8 +S315E07032B000000000000000000000000000000000B8 +S315E07032C000000000000000000000000000000000A8 +S315E07032D00000000000000000000000000000000098 +S315E07032E00000000000000000000000000000000088 +S315E07032F00000000000000000000000000000000078 +S315E07033000000000000000000000000000000000067 +S315E07033100000000000000000000000000000000057 +S315E07033200000000000000000000000000000000047 +S315E07033300000000000000000000000000000000037 +S315E07033400000000000000000000000000000000027 +S315E07033500000000000000000000000000000000017 +S315E07033600000000000000000000000000000000007 +S315E070337000000000000000000000000000000000F7 +S315E070338000000000000000000000000000000000E7 +S315E070339000000000000000000000000000000000D7 +S315E07033A000000000000000000000000000000000C7 +S315E07033B000000000000000000000000000000000B7 +S315E07033C000000000000000000000000000000000A7 +S315E07033D00000000000000000000000000000000097 +S315E07033E00000000000000000000000000000000087 +S315E07033F00000000000000000000000000000000077 +S315E07034000000000000000000000000000000000066 +S315E07034100000000000000000000000000000000056 +S315E07034200000000000000000000000000000000046 +S315E07034300000000000000000000000000000000036 +S315E07034400000000000000000000000000000000026 +S315E07034500000000000000000000000000000000016 +S315E07034600000000000000000000000000000000006 +S315E070347000000000000000000000000000000000F6 +S315E070348000000000000000000000000000000000E6 +S315E070349000000000000000000000000000000000D6 +S315E07034A000000000000000000000000000000000C6 +S315E07034B000000000000000000000000000000000B6 +S315E07034C000000000000000000000000000000000A6 +S315E07034D00000000000000000000000000000000096 +S315E07034E00000000000000000000000000000000086 +S315E07034F00000000000000000000000000000000076 +S315E07035000000000000000000000000000000000065 +S315E07035100000000000000000000000000000000055 +S315E07035200000000000000000000000000000000045 +S315E07035300000000000000000000000000000000035 +S315E07035400000000000000000000000000000000025 +S315E07035500000000000000000000000000000000015 +S315E07035600000000000000000000000000000000005 +S315E070357000000000000000000000000000000000F5 +S315E070358000000000000000000000000000000000E5 +S315E070359000000000000000000000000000000000D5 +S315E07035A000000000000000000000000000000000C5 +S315E07035B000000000000000000000000000000000B5 +S315E07035C000000000000000000000000000000000A5 +S315E07035D00000000000000000000000000000000095 +S315E07035E00000000000000000000000000000000085 +S315E07035F00000000000000000000000000000000075 +S315E07036000000000000000000000000000000000064 +S315E07036100000000000000000000000000000000054 +S315E07036200000000000000000000000000000000044 +S315E07036300000000000000000000000000000000034 +S315E07036400000000000000000000000000000000024 +S315E07036500000000000000000000000000000000014 +S315E07036600000000000000000000000000000000004 +S315E070367000000000000000000000000000000000F4 +S315E070368000000000000000000000000000000000E4 +S315E07036900000000000A8A8A8A8AFAFAFAF00000078 +S315E07036A000000000000000000000000000000000C4 +S315E07036B000000000000000000000000000000000B4 +S315E07036C000000000000000000000000000000000A4 +S315E07036D00000000000000080000000000000000014 +S315E07036E00000400000000000000000000000000044 +S315E07036F00000000040000000000000000000000034 +S315E07037000000000000000000000000000000000063 +S315E07037100000000000000000000000000000000053 +S315E07037200000000000000000000000000000000043 +S315E07037300000000000000000000000000000000033 +S315E070374080000000000000000000000000000000A3 +S315E07037500000000000000000000000000000000013 +S315E07037600000000000000000000000000000000003 +S315E070377000000000000000000000000000000000F3 +S315E070378000000000000000000000000000000000E3 +S315E070379000000000000000000000000000000000D3 +S315E07037A000000000000000000000000000000000C3 +S315E07037B00000000040000000000000000000000073 +S315E07037C000000000000040000000000080000000E3 +S315E07037D00000000100000000000000000000000092 +S315E07037E00000000000000000000000000000008003 +S315E07037F00000000000000000000000000000000073 +S315E07038000000000000000000000000000000000062 +S315E070381000008000060900000000000000000000C3 +S315E07038200000000000000000000000000000000042 +S315E07038300000000000000000000000000000000032 +S315E07038400000000000000000000000000000000022 +S315E07038500000000000000000000000000000000012 +S315E070386000000040000000000000000000000000C2 +S315E070387000000000000000000000000000000000F2 +S315E070388000000000000000000000000000000000E2 +S315E070389000000000000000000000000010000000C2 +S315E07038A000000000000000000000000000000000C2 +S315E07038B000000000000000000000000000000000B2 +S315E07038C000000000000000000000000000000000A2 +S315E07038D00000000000000000000000000000000092 +S315E07038E00000000000000000000000000000000082 +S315E07038F00000000000000000000000000000000072 +S315E07039000000000000000000000000000000000061 +S315E07039100000000000000000000000000000000051 +S315E07039200000004000000000000000000000000001 +S315E07039300000000000000000000000000000000031 +S315E07039400000000000000000000000000000000021 +S315E07039500000000000000000000000000000000011 +S315E07039600000000000000000000000000000000001 +S315E07039708000000000000000000000000000000071 +S315E070398000000000000000000000000000C76B00AF +S315E070399000000000000000000000000000000000D1 +S315E07039A000000000000000000000000000000000C1 +S315E07039B000000000000000000000000000000000B1 +S315E07039C000000000000000000000000000000000A1 +S315E07039D00000000000000000000000000000000091 +S315E07039E00000000000000000000000000000000081 +S315E07039F00000000000000000000000000000000071 +S315E0703A000000000000000000000000000000000060 +S315E0703A100000000000000000000000000000000050 +S315E0703A200000000000000000000000000000000040 +S315E0703A300000000000000000000000000000000030 +S315E0703A400000000000000000000000000000000020 +S315E0703A500000000000000000000000000000000010 +S315E0703A600000000000000000000000000000000000 +S315E0703A7000000000000000000000000000000000F0 +S315E0703A8000000000000000000000000000000000E0 +S315E0703A9000000000000000000000000000000000D0 +S315E0703AA000000000000000000000000000000000C0 +S315E0703AB000000000000000000000000000000000B0 +S315E0703AC000000000000000000000000000000000A0 +S315E0703AD00000000000000000000000000000000090 +S315E0703AE00000000000000000000000000000000080 +S315E0703AF00000000000000000000000000000000070 +S315E0703B000000000000003E490000000000000000D8 +S315E0703B10000000000000000000000000000000004F +S315E0703B20000000000000000000000000000000003F +S315E0703B30000000000000000000000000000000002F +S315E0703B4000000000000000000000000000400000DF +S315E0703B50000000000040000000000000000000408F +S315E0703B6000000000000000000000000000000000FF +S315E0703B7000000000000000000000000000000000EF +S315E0703B8000000000000000000000000000001000CF +S315E0703B9000000000000000000000000000000000CF +S315E0703BA0000000000000000000000080000000003F +S315E0703BB000000000000000000000000000000000AF +S315E0703BC0000000000000000000000000000000009F +S315E0703BD0000000000000000000000000000000008F +S315E0703BE0000000000000000000000000000000007F +S315E0703BF0000000000000000000000000000000006F +S315E0703C00000000000000000000000000000000005E +S315E0703C1000000000004000000000000000000040CE +S315E0703C20000000000000000000000000000000003E +S315E0703C30004000000000008000000000000000006E +S315E0703C40000000000000000000000000000000001E +S315E0703C50000000000000000000008000000000008E +S315E0703C60000080000000000000000000000000007E +S315E0703C70000000000000000000000000008000D19D +S315E0703C80630000000000000000000000000000007B +S315E0703C9000000000000000000000000000000000CE +S315E0703CA000000000000000000000000000000000BE +S315E0703CB000000000000000000000000000000000AE +S315E0703CC0000000000000000000000000000000009E +S315E0703CD0000000000000000000000000000000008E +S315E0703CE0000000000000000000000000000000007E +S315E0703CF0000000000000000000000000000000006E +S315E0703D00000000000000000000000000000000005D +S315E0703D10000000000000000000000000000000004D +S315E0703D20000000000000000000000000000000003D +S315E0703D30000000000000000000000000000000002D +S315E0703D40000000000000000000000000000000001D +S315E0703D50000000000000000000000000000000000D +S315E0703D6000000000000000000000000000000000FD +S315E0703D7000000000000000000000000000000000ED +S315E0703D8000000000000000000000000000000000DD +S315E0703D9000000000000000000000000000000000CD +S315E0703DA000000000000000000000000000000000BD +S315E0703DB000000000000000000000000000000000AD +S315E0703DC0000000000000000000000000000000009D +S315E0703DD0000000000000000000000000000000008D +S315E0703DE0000000000000000000000000000000007D +S315E0703DF000000000000000003E49000000000000E6 +S315E0703E00000000000000000000000000000000005C +S315E0703E10000000000000000000000000000000004C +S315E0703E20000000000000000000000000000000003C +S315E0703E30000000000000000000000000000000002C +S315E0703E40000000000000000000000000000000001C +S315E0703E50000000000000000000000000000000000C +S315E0703E6000000000000000000000000000000000FC +S315E0703E7000000000000000000000000000000000EC +S315E0703E8000000000000000000000000000000000DC +S315E0703E9000000000000000000000000000000000CC +S315E0703EA000000000000000000000000000000000BC +S315E0703EB000000000000000000000000000000000AC +S315E0703EC0000000000000000000000000000000009C +S315E0703ED0000000000000000000000000000000008C +S315E0703EE0000000000000000000000000000000007C +S315E0703EF0000000000000000000000000000000006C +S315E0703F00000000000000000000000000000000005B +S315E0703F10000000000000000000000000000000004B +S315E0703F20000000000000000000000000000000003B +S315E0703F30000000000000000000000000000000002B +S315E0703F40000000000000000000000000000000001B +S315E0703F50000000000000000000000000000000000B +S315E0703F6000000000000000000000000000000000FB +S315E0703F70003E490000000000000000000000000064 +S315E0703F8000000000000000000000000000000000DB +S315E0703F9000000000000000000000000000000000CB +S315E0703FA000000000000000000000000000000000BB +S315E0703FB000000000000000000000000000000000AB +S315E0703FC0000000000000000000000000000000009B +S315E0703FD0000000000000000000000000000000008B +S315E0703FE0000000000000000000000000000000007B +S315E0703FF0000000000000000000000000000000006B +S315E0704000000000000000000000000000000000005A +S315E0704010000000000000000000000000000000004A +S315E0704020000000000000000000000000000000003A +S315E0704030000000000000000000000000000000002A +S315E0704040000000000000000000000000000000001A +S315E0704050000000000000000000000000000000000A +S315E070406000000000000000000000000000000000FA +S315E070407000000000000000000000000000000000EA +S315E070408000000000000000000000000000000000DA +S315E070409000000000000000000000000000000000CA +S315E07040A000000000000000000000000000000000BA +S315E07040B000000000000000000000000000000000AA +S315E07040C0000000000000000000000000000000009A +S315E07040D0000000000000000000000000000000008A +S315E07040E0000000000000000000003E4900000000F3 +S315E07040F0000000000000000000000000000000006A +S315E07041000000000000000000000000000000000059 +S315E07041100000000000000000000000000000000049 +S315E07041200000000000000000000000000000000039 +S315E07041300000000000000000000000000000000029 +S315E07041400000000000000000000000000000000019 +S315E07041500000000000000000000000000000000009 +S315E070416000000000000000000000000000000000F9 +S315E070417000000000000000000000000000000000E9 +S315E070418000000000000000000000000000000000D9 +S315E070419000000000000000000000000000000000C9 +S315E07041A000000000000000000000000000000000B9 +S315E07041B000000000000000000000000000000000A9 +S315E07041C00000000000000000000000000000000099 +S315E07041D00000000000000000000000000000000089 +S315E07041E00000000000000000000000000000000079 +S315E07041F00000000000000000000000000000000069 +S315E07042000000000000000000000000000000000058 +S315E07042100000000000000000000000000000000048 +S315E07042200000000000000000000000000000000038 +S315E07042300000000000000000000000000000000028 +S315E07042400000000000000000000000000000000018 +S315E07042500000000000000000000000000000000008 +S315E07042600000003E4900000200000000000000006F +S315E070427000000000000040000200000000000004A2 +S315E07042800000000000000040000002000000000096 +S315E07042900400000000010000004000020000000081 +S315E07042A000000000000001000000000000020000B5 +S315E07042B000000000000000000100000000000200A5 +S315E07042C01000000000000020000100000000000067 +S315E07042D002001000800000002000000000000000D6 +S315E07042E000000000008000000000200000000000D8 +S315E07042F00000000000000000000000200000010047 +S315E07043000000400002001000000000040000000100 +S315E07043100000004000000200000000000400000001 +S315E070432000000000004000000000000000000400F3 +S315E070433020000000000040000000000000000000C7 +S315E070434000200000000000004000020000000000B5 +S315E07043500000002000010000004000000200100094 +S315E07043600000000020000000000000400000000097 +S315E070437000000000000000000000000000000000E7 +S315E070438000000000000000000000000000000000D7 +S315E07043900000100000000000002000000000000097 +S315E07043A00000000000008000040000000000000033 +S315E07043B000000000000000000000040000000000A3 +S315E07043C00000400000000000000000000000000057 +S315E07043D0000000004000000000000000C311000073 +S315E07043E00000000000000400000000000000000073 +S315E07043F00000000000000000000000000000000067 +S315E07044000000000000000000000000200000000036 +S315E07044100000000000000000000000000020000026 +S315E070442000000040000000000000000004000000F2 +S315E070443000000000004000000000000000000400E2 +S315E07044400000000000000000000000000000000412 +S315E07044500000000000000000000002000000000004 +S315E0704460000400000001000000400000020010009F +S315E070447000000400000000000000000000000000E2 +S315E07044800080000000000000000000000000000056 +S315E070449000000000000000200000000000000000A6 +S315E07044A002000000000000000000000000000000B4 +S315E07044B000000200000000000400000000000000A0 +S315E07044C00000000000000080000000000000000016 +S315E07044D00000000000000000000000040000000082 +S315E07044E0010000000000020000000000000400204F +S315E07044F00001000000400000020000000000000023 +S315E07045000000000000000040000200000080000093 +S315E07045100000000000001000000000000000000035 +S315E07045200000000000000000000000000000000035 +S315E07045308000100000000000000000000000020093 +S315E07045400000801004100000001000080000000059 +S315E0704550000000800068300020000101000040404B +S315E07045600202101000000004042020010100004047 +S315E07045704000020210100000040420200001010037 +S315E070458000404002021010000000040420200101E7 +S315E070459000004040000202000000000404202000F9 +S315E07045A001010000404002021010000000040420E7 +S315E07045B020010100004040000202101080800404D7 +S315E07045C020200001010000404002021010808000AF +S315E07045D00404202001010000404000020210108017 +S315E07045E08004042020000101000040400202101007 +S315E07045F08080000404202001010000404000020297 +S315E07046001010000004042020000101000040400268 +S315E07046100210100000000404202001010000404058 +S315E070462000020210100000040420200001010000C6 +S315E07046304040020210108080000404202001010036 +S315E07046400040400002021010808004042020000127 +S315E07046500100004040020210108080000404202017 +S315E07046600101000040400002021010000004042026 +S315E07046702000000000004040020210108080000020 +S315E07046800020200000000040400002020000908000 +S315E07046901404202010000000004040021210108028 +S315E07046A08000040420200000101050400002020038 +S315E07046B00080800414202000001008084050020298 +S315E07046C010108080100404202000000808406A085A +S315E07046D00000000200000000000000000000000082 +S315E07046E0000040000200000000000004000000002E +S315E07046F0000000400000020000000000040000001E +S315E07047000001000000400002000000000000000010 +S315E07047100000010000000000000200000000000040 +S315E07047200000000001000000000002001000000020 +S315E070473000000020000100000000000002001000F0 +S315E07047408000000020000000000000000000000073 +S315E07047500080000000002000000000000000000063 +S315E07047600000000000000020000001000000400092 +S315E0704770020010000000000400000001000000408C +S315E070478000000200000000000400000000000000CD +S315E0704790004000000000000000000400200000005F +S315E07047A00000400000000000000000000020000053 +S315E07047B00000000040000200000000000000002041 +S315E07047C00001000000400000020000000000000050 +S315E07047D02000000000000040000000000000000023 +S315E07047E00000000000000000000000000000000073 +S315E07047F00000000000000000000000000000000063 +S315E07048000000000000200000000000000000000032 +S315E070481000008000040000000000000000000000BE +S315E070482000000000000004000000000000004000EE +S315E07048300000000000000000000000000000000022 +S315E0704840400000000000002C320000000000000074 +S315E07048500000000000000000000000000000000002 +S315E070486000000000000000000000000000000000F2 +S315E070487000000000000000000000000000000000E2 +S315E070488000000000000000000000000000000000D2 +S315E070489000000000000000000000000000000000C2 +S315E07048A000000000000000000000000000000000B2 +S315E07048B000000000000000000000000000000000A2 +S315E07048C00000000000000000000000000000000092 +S315E07048D00000000000000000000000000000000082 +S315E07048E00000000000000000000000000000000072 +S315E07048F00000000000000000000000000000000062 +S315E07049000000000000000000000000000000000051 +S315E07049100000000000000000000000000000000041 +S315E07049200000000000000000000000000000000031 +S315E07049300000000000000000000000000000000021 +S315E07049400000000000000000000000000000000011 +S315E07049500000000000000000000000000000000001 +S315E070496000000000000000000000000000000000F1 +S315E070497000000000000000000000000000000000E1 +S315E070498000000000000000000000000000000000D1 +S315E070499000000000000000000000000000000000C1 +S315E07049A000000000000000000000000000000000B1 +S315E07049B000000000000000000000000000000000A1 +S315E07049C03E490000000000000000000000000010FA +S315E07049D00000000000000000000000000000001071 +S315E07049E00000000000000000000000000000000071 +S315E07049F0000000000000040000000000000000005D +S315E0704A000000000000000000200000000000000030 +S315E0704A100000000000000000000000000000000040 +S315E0704A200000000000000000000000000000000030 +S315E0704A3000000000000040000000000000000000E0 +S315E0704A400000000000000000000000000000000010 +S315E0704A500000000000000000000000000000000000 +S315E0704A6000000000000000000000000010000000E0 +S315E0704A7000000000000000000000000000000000E0 +S315E0704A8000000000000000000000000000000000D0 +S315E0704A9000000000000000000100000000000000BF +S315E0704AA000000000000000000000000000000000B0 +S315E0704AB00010008000000000000000000000000010 +S315E0704AC00000008000000000000000000000000010 +S315E0704AD0000000000000001400002000000000004C +S315E0704AE00000000000000000000000000000000070 +S315E0704AF00000400000000000000000000000000020 +S315E0704B00200000000000000000000000000000200F +S315E0704B10000000000000000000000000000000201F +S315E0704B20000000000000000000000000000000002F +S315E0704B3000000000002000004083960000000000A6 +S315E0704B40000000000000000000000000000000000F +S315E0704B5000000000000000000000000000000000FF +S315E0704B6000000000000000000000000000000000EF +S315E0704B7000000000000000000000000000000000DF +S315E0704B8000000000000000000000000000000000CF +S315E0704B9000000000000000000000000000000000BF +S315E0704BA0000000000000000000000000000000406F +S315E0704BB0000000000000000000000000000000009F +S315E0704BC0000000000000000000000000000000008F +S315E0704BD0000000000000000000000000000000007F +S315E0704BE0000000000000000000000000000000006F +S315E0704BF0000000000000000000000000000000005F +S315E0704C00000000000000000000000000000000004E +S315E0704C10000000000000000000000000000000003E +S315E0704C20000000000000000000000000000000002E +S315E0704C30000000000000000000000000000000001E +S315E0704C40000000000000000000000000000000000E +S315E0704C5000000020000000000000000000000000DE +S315E0704C6000000000000000000000004000000000AE +S315E0704C7000000000000000000000000000000000DE +S315E0704C80400000000000000000000000000000008E +S315E0704C9000000000000000000000000000000000BE +S315E0704CA000000000000000000000000000000000AE +S315E0704CB00000A743000000000000000000000000B4 +S315E0704CC0000000000000000000000000000000008E +S315E0704CD0000010000000000000000000000000006E +S315E0704CE0001000000000000000000000000000005E +S315E0704CF0000000000000000000000000000000005E +S315E0704D00000000000000000000000000000000004D +S315E0704D10000000000000000000000000000000003D +S315E0704D20000000000000000000000000000000002D +S315E0704D30000000000000000000000000000000001D +S315E0704D40000000000000000000000000000000000D +S315E0704D5000000000000000000000000000000000FD +S315E0704D6000000000000000000000000000000000ED +S315E0704D7000000000000000000000000000000000DD +S315E0704D8000000000000000000000000000000000CD +S315E0704D9000000000000000000000000000000000BD +S315E0704DA000000000000000000000000000000000AD +S315E0704DB0000000000080000000000000000000001D +S315E0704DC0000000000000000000000000000000008D +S315E0704DD0000000000000000000000000000000007D +S315E0704DE0000000000000000000000000000000006D +S315E0704DF0000000000000000000000000000000005D +S315E0704E00000000000000000000000000000000004C +S315E0704E10000000000000000000000000000000003C +S315E0704E2000000000000000000000001858000000BC +S315E0704E30000000000000000000000000000000001C +S315E0704E40000000000000000000000000000000000C +S315E0704E5000000000000000000000000000000000FC +S315E0704E6000040000000000000000000000000000E8 +S315E0704E7000000000000000000000000000000000DC +S315E0704E8000000000000000000000000000000000CC +S315E0704E9000000000000000000000000000000000BC +S315E0704EA000000000000000000000000000000000AC +S315E0704EB0000000000000000000000000000000009C +S315E0704EC0000000000000000000000000000000008C +S315E0704ED0000000000000000000000000000000007C +S315E0704EE0000000000000000000000000000000006C +S315E0704EF0000000000000000000000000000000005C +S315E0704F00000001000000000000000000000000004A +S315E0704F1000000000000000000000000000000080BB +S315E0704F20000000000000000000000000000000002B +S315E0704F30000000000000000000000000000000001B +S315E0704F40000000000000000000000000000000000B +S315E0704F5000000000000000000000000000000000FB +S315E0704F6000000000000000000000000000000000EB +S315E0704F7000000000000000000000200000000000BB +S315E0704F8000000000000000000000000000000000CB +S315E0704F9000000000000000000000000000000000BB +S315E0704FA0000000400EFF000000000000000000005E +S315E0704FB0000000001000000000000000000000008B +S315E0704FC0000000000000000000000000000000008B +S315E0704FD0000000000000000000000000000000007B +S315E0704FE0000000000000000000000020000000004B +S315E0704FF0000000000000000000000000000000005B +S315E0705000000000000000000000000000000000004A +S315E0705010000000000000000000000000000000003A +S315E0705020000000000000000000000000000000002A +S315E0705030008000000000000000000000000000009A +S315E0705040000000000000000000000000000000000A +S315E070505000000000000000000000000000000000FA +S315E070506000000000000000000000000000000000EA +S315E070507000000000000000000000000000000000DA +S315E070508000000000000000000000000000000000CA +S315E070509000000000000000000000000000000000BA +S315E07050A000000000000000000000000000000000AA +S315E07050B0000000000000000000000000000000009A +S315E07050C0000000000000000000000000000000008A +S315E07050D0000000000000000000000000000000007A +S315E07050E0000000000000000000000000000000006A +S315E07050F0000000000000000000000000000000005A +S315E07051000000000000000000000000000000000049 +S315E070511000000000000000000000000000F239000E +S315E07051200000000000000000000000000000000029 +S315E07051300000000000000000000000000000000019 +S315E07051400000000000000000000000000000000009 +S315E070515000000000000000000000000000000000F9 +S315E070516000000000000000000000000000000000E9 +S315E070517000000000000000000000000000000000D9 +S315E070518000000000000000000000000000000000C9 +S315E070519000000000000000000000000000000000B9 +S315E07051A000000000000000000000000000000000A9 +S315E07051B00000000000000000000000000000000099 +S315E07051C00000000000000000000000000000000089 +S315E07051D00000000000000000000000000000000079 +S315E07051E00000000000000000000000000000000069 +S315E07051F00000000000000000000000000000000059 +S315E07052000000000000000000000000000000100038 +S315E07052100000000000000000000000000000000038 +S315E07052200000000000000000000000000000000028 +S315E07052300000000004000000000000000000000014 +S315E07052400000000000000000000000000000000008 +S315E070525000000000000000000000000000000000F8 +S315E070526000000000000000000000000000000000E8 +S315E070527000000000000000000000000000200000B8 +S315E070528000000000000000000000000000000000C8 +S315E0705290000000000000E157000000000000000080 +S315E07052A000000000000000000000000000000000A8 +S315E07052B00000000000000000000000000000000098 +S315E07052C00000000000000000000000000000000088 +S315E07052D00000000000000000000000000000000078 +S315E07052E00000000000000000000000000000000068 +S315E07052F00000000000000000000000000000000058 +S315E07053000000000000000000000000000000000047 +S315E07053100000000000000000000000000000000037 +S315E07053200000000000000000000000000000000027 +S315E07053300000000000000000000000000000000017 +S315E070534000100000000000000000000000000000F7 +S315E070535000000000000000000000000000000000F7 +S315E070536000000000000000000000000000000000E7 +S315E070537000000000000000000000000000000000D7 +S315E070538000000000000000000000000000000000C7 +S315E070539000000000000000000000000000000000B7 +S315E07053A000000000000000000000000000000000A7 +S315E07053B00000000000000000000000000000000097 +S315E07053C00000000000000000000000000000000087 +S315E07053D00000000000000000000000000000000077 +S315E07053E00000000000000000000000000000000067 +S315E07053F00000000000000000000000000000000057 +S315E0705400000000000000000000000000000000B195 +S315E0705410BF00000000000000000000000000000077 +S315E07054200000000000000000000000000000000026 +S315E07054300000000000000000000000000000000016 +S315E07054400000000000000000000000000000000006 +S315E070545000000000000000000000000000000000F6 +S315E070546000000000000000000000000000004000A6 +S315E070547000000000000000000000000000000000D6 +S315E070548000000000001000000000000000000000B6 +S315E070549000000000000000000000000000000000B6 +S315E07054A000000000000000000000000000000000A6 +S315E07054B00000200000000000000000000000000076 +S315E07054C00000000000000000000000000000000086 +S315E07054D00000000000000000000000000000000076 +S315E07054E00000000000000000000000000000000066 +S315E07054F00000000000000000000000000000000056 +S315E07055000000000000000000000000000000000045 +S315E07055100000000000000000000000000000000035 +S315E07055200000000000001000000000000000000015 +S315E07055300000000000000000000000000000000015 +S315E070554000000000000000000000000000002000E5 +S315E070555000000000000000000000000000000000F5 +S315E070556000000000000000000000000000000000E5 +S315E070557000000000000000000000000000000000D5 +S315E07055800000000020000000A51E000000000000E2 +S315E070559000000000000000001000000000000000A5 +S315E07055A000000000000000000000000000000000A5 +S315E07055B00000000000000000000000000000000095 +S315E07055C00000000000000000000000000000000085 +S315E07055D00000000000000000000000000000000075 +S315E07055E00000000000000000000000000000000065 +S315E07055F00000000000000000000000000000000055 +S315E070560000000000000000008000000000000000C4 +S315E07056100000000000000000000000000000000034 +S315E07056200000000000000000000000000000000024 +S315E07056300000000000000000000000000000000014 +S315E07056400000000000000000000000000000000004 +S315E070565000000000000000000000000000000000F4 +S315E070566000000000000000000000000000000000E4 +S315E070567000000000000000001000000000000000C4 +S315E070568000000000000000000000000000000000C4 +S315E070569000000000000000000000000000000000B4 +S315E07056A00000000000000000100000000000000094 +S315E07056B00000000000000000000000000004000090 +S315E07056C00000000000000000000000000000000084 +S315E07056D00000000000200000000000000000000054 +S315E07056E00000000000000000000000000000000064 +S315E07056F00000000000000000000000000000000054 +S315E07057000035B70000000000000000000000000057 +S315E07057100000000000000000000000000000000033 +S315E07057200000000000000000000000000000000023 +S315E07057300000000000000000000000000000000013 +S315E07057400000000000000000000000000000000003 +S315E070575000500000000000000000000000000000A3 +S315E070576000000000000000000000001000000000D3 +S315E070577000000000000000000000000000000020B3 +S315E070578000000000000000000000000000000000C3 +S315E070579000000000000000000000000000000000B3 +S315E07057A000000000000000000000000000000000A3 +S315E07057B00000000000000000000000000000000093 +S315E07057C00000100000000000000000000000000073 +S315E07057D00000000000000000000000000000000073 +S315E07057E00000000000000000000000000000000063 +S315E07057F00000000000000000000000000000000053 +S315E07058000000000000000000000000002000000022 +S315E07058100000000000000000000000000000000032 +S315E07058200000000000000000000000000000000022 +S315E07058300000000000000000000000000000000012 +S315E07058400000000000000000000000000000000002 +S315E070585000000000000000000000400000000000B2 +S315E070586000000000000000000000000000000000E2 +S315E070587000000000000000000000A4B2000000007C +S315E070588000000000000000000000100000000000B2 +S315E070589000000000000000000000000000000000B2 +S315E07058A000000000000000000000000000000000A2 +S315E07058B00000000000000000000000000000000092 +S315E07058C00000000000000000000040000000000042 +S315E07058D00000000000000000000000000000000072 +S315E07058E00000000010000000000000000000000052 +S315E07058F000000000000000002080000000000000B2 +S315E07059000000000000000000000000000000000041 +S315E07059100000000000000000000000000000000031 +S315E07059200000000000000000000000000000000021 +S315E07059300000000000000000000000100000000001 +S315E07059400000000000000000000000000000000001 +S315E070595000000000000000000000000000000000F1 +S315E070596000000000000000000000100000000000D1 +S315E070597000000000000000000000000000000000D1 +S315E070598000000000002000000000000000000000A1 +S315E070599000000000000000000010000000000000A1 +S315E07059A000000000000000000000000000000000A1 +S315E07059B0040000000000000000000000000000008D +S315E07059C00000000000000000200000000000000061 +S315E07059D00000000040000000000000000000000031 +S315E07059E00000000000000000000000000000000061 +S315E07059F000000039300000000000000000000000E8 +S315E0705A000000000000000000000000000000000040 +S315E0705A100000000000000000000000000000000030 +S315E0705A200000000000000000000000000000000020 +S315E0705A300000000000000000000000000000000010 +S315E0705A400000000000000000000000000000000000 +S315E0705A5000000000000000000000000000000000F0 +S315E0705A6000000000000000000000000000000000E0 +S315E0705A7000000000000000000000000000000000D0 +S315E0705A800000008000000000000000000000000040 +S315E0705A9000000000000000000000000000000000B0 +S315E0705AA000000000000000000000000000000000A0 +S315E0705AB00000000000000000000000000000000090 +S315E0705AC00000000000000000008000000000000000 +S315E0705AD00000000000000000000000000000000070 +S315E0705AE000004000008000000000000000000000A0 +S315E0705AF00000000000000000000000000000000050 +S315E0705B00000000400000000000000000000000807F +S315E0705B1000000000000000000000008000000000AF +S315E0705B20000000000000000000000000000000001F +S315E0705B30000000000000000000000080000000008F +S315E0705B4000000000000000000000000000000000FF +S315E0705B50000000000080000000000000000000006F +S315E0705B60000000000000000000000000615A000024 +S315E0705B7000000000000000000000000000000000CF +S315E0705B80000000000000000000400000000000007F +S315E0705B9000000000000000000000000000000000AF +S315E0705BA0000000000000000000000000000000009F +S315E0705BB0000000000000000000000040000400004B +S315E0705BC0000000000000000000000000000000007F +S315E0705BD000008000000000000000000000000000EF +S315E0705BE0000000000000008000000000004000009F +S315E0705BF0000000000000000000000000000000004F +S315E0705C00000000000000000000000000000000003E +S315E0705C10000000000000000000000000000000002E +S315E0705C20000000000000000000000000000000001E +S315E0705C30000000000000000000000000000000000E +S315E0705C40000080000000000000000000000000007E +S315E0705C5000000000000000000000000000000000EE +S315E0705C6000000000000000000000000000000000DE +S315E0705C70000000800000000000000000000000004E +S315E0705C80800000000000000000000000000000003E +S315E0705C9000000000000000000000000000000000AE +S315E0705CA0000000000000000000800000000000001E +S315E0705CB0000000000000000000000000000000008E +S315E0705CC0800000000000008000000000000000007E +S315E0705CD000000000000000000000000000008000EE +S315E0705CE00000000000A5A700000000000000000012 +S315E0705CF0000000000000000000000000000000004E +S315E0705D00000000000000000000000000000000003D +S315E0705D10000000000000000000000000000000002D +S315E0705D2020000000000000000000000000000000FD +S315E0705D30800000000000000000000000000000008D +S315E0705D4000000000000000000000000000000000FD +S315E0705D5000000000000000000000000000000000ED +S315E0705D6000000000000000000000000000000000DD +S315E0705D7000000000000000000000000000000000CD +S315E0705D8000000000000000000000000000000000BD +S315E0705D9000000000000000000000000000000000AD +S315E0705DA0000000000000000000000000000000009D +S315E0705DB0000000000000000000000000000000008D +S315E0705DC0000000000000000000000000000000007D +S315E0705DD0000000000000000000000000000000026B +S315E0705DE0000000000000000000000000000000005D +S315E0705DF000000000000000001000000000800000BD +S315E0705E00000000000000000000000000000000003C +S315E0705E10000000000000002000000000000000000C +S315E0705E20000000000000000000000000000000001C +S315E0705E30000000000000000000000000000000000C +S315E0705E4000000000000000000000000000000000FC +S315E0705E50000000000000000000000000000082F971 +S315E0705E6000000000000000000000200000000000BC +S315E0705E7000000000000000000000000000000000CC +S315E0705E8000000000000000000000000000000000BC +S315E0705E9000000000000000000000000000000000AC +S315E0705EA0000000000000000010000000000000008C +S315E0705EB0000000000000000000000000000000008C +S315E0705EC0000000000000000000000000000000007C +S315E0705ED0000000000000000000000000000000006C +S315E0705EE0000000000000000000000000000000005C +S315E0705EF0000000000000000000000000000000004C +S315E0705F00000000000000000000000000000000003B +S315E0705F10000000000000000000000000000000002B +S315E0705F20000000000000000000000000000000001B +S315E0705F30000000000000000000000000000000000B +S315E0705F4000000000000000000100000000000000FA +S315E0705F5000000000000000000000000000000000EB +S315E0705F60000000000000008000000000000000005B +S315E0705F7000000000000000000000000000000000CB +S315E0705F8000000000000000000000000000000000BB +S315E0705F9000000000000000000000000000000000AB +S315E0705FA0000000000000200000000000000000007B +S315E0705FB0200000000000000000000000004000002B +S315E0705FC0000000000000000000000000000000007B +S315E0705FD00000000000000053020000000000000016 +S315E0705FE0000020000000000000000000000000003B +S315E0705FF0000000000000000000000000000000004B +S315E0706000000000000000000000000000000000003A +S315E070601000000000800000000000000000000000AA +S315E0706020100000000000000000000000000000000A +S315E0706030000000000000000000000000000000000A +S315E070604000000000000000000000000000000000FA +S315E070605000000000000000000000000000000000EA +S315E070606000000000000000000000000000000000DA +S315E070607000000000000000000000000000000000CA +S315E070608000000000000000000000000000000000BA +S315E070609000000000000000000000000000000000AA +S315E07060A0000000000000000000000000000000009A +S315E07060B0000000000000000000000000000000008A +S315E07060C0000000000000000000000000000000007A +S315E07060D0000000000000000000000000000000006A +S315E07060E0800000001000000000000080000000004A +S315E07060F0000000000000000000000000000000004A +S315E07061000020000000000000000000000000000019 +S315E07061100000000000000000000000000000002009 +S315E07061200000000000000000000000000000000019 +S315E07061300000000000000000000000000000000009 +S315E070614000000000000000000000000000000000F9 +S315E070615003420000000000000000000000000000A4 +S315E070616000000000000000000000000000000000D9 +S315E070617000000000000000000000000000000000C9 +S315E07061800000000000002000000000000000000099 +S315E070619000000000000000000000000000000000A9 +S315E07061A00000000000000000200000000000000079 +S315E07061B00000000000000000000000000000000089 +S315E07061C00000000000000000000000000000000079 +S315E07061D00000000000000000000000000040000029 +S315E07061E00000000000000000000000000000000059 +S315E07061F00000000000000000000000000000000049 +S315E07062000000000000000000000000000000000038 +S315E07062100000000000000000000000000000000028 +S315E07062200000000000000000000000000000000018 +S315E07062300000000000000000000100000000000007 +S315E070624000000000000000000000000000000000F8 +S315E070625000000000000000000000000200000000E6 +S315E070626000000000000000000000000000000000D8 +S315E070627000000000000000000000000000000000C8 +S315E070628000000000000000000000000000000000B8 +S315E070629000000000000000000000000000000000A8 +S315E07062A00020000000000000000000000000204018 +S315E07062B00000000000000000000000000000000088 +S315E07062C0000000000000000000CE37000000000073 +S315E07062D00000000000000000000000000000000068 +S315E07062E00000000000000000000000000000000058 +S315E07062F00000000000000000000000000000000048 +S315E07063000000000000000000000000000000000037 +S315E07063100000000000000000000000000000000027 +S315E07063200000000000000000000000000000000017 +S315E070633000000000000000001000000000000000F7 +S315E070634000000000000000000000000000000000F7 +S315E070635000000000000000000000000000000000E7 +S315E070636000000000000000000000000000000000D7 +S315E070637000000000000000000000000000000000C7 +S315E070638000000000000000000000000000000000B7 +S315E070639000000000000000000000000000000000A7 +S315E07063A00000000000000000000000000000000097 +S315E07063B00000000000000000000000000000000087 +S315E07063C00000000000000000000000000000000077 +S315E07063D00000000000000000000000000000000067 +S315E07063E00000000000000000000000000000000057 +S315E07063F00000000000000000000000000000000047 +S315E070640040000000000000000000000000000000F6 +S315E07064100000000000000000000000000001000025 +S315E07064200000000000000000000000000000000016 +S315E07064300000000000000000000000000001000005 +S315E07064400000561D00008080000000000000000083 +S315E070645000000000000000000000000000000000E6 +S315E070646000000000000000000000000000000000D6 +S315E070647000000000000000000000000000000000C6 +S315E070648000000000000000000000000000000000B6 +S315E070649000000000000000000000000000000000A6 +S315E07064A00000000000000000000000000000000096 +S315E07064B00000000000000000000000000000000086 +S315E07064C00000000000000000000000000000000076 +S315E07064D00000000000000000000000000000000066 +S315E07064E00000000000000000000000000000000056 +S315E07064F00000000000000000000000000000000046 +S315E07065000000000000000000000000000000000035 +S315E07065100000000000000000000000000000000025 +S315E07065200000000000000000000000000000000015 +S315E07065300000000000000000000000000000000005 +S315E070654000000000000000000000000000000000F5 +S315E070655000000000000000000000000000000000E5 +S315E070656000000000000000000000000000000000D5 +S315E070657000000000000000000000000000000000C5 +S315E070658000000000000000000000000000000000B5 +S315E070659000000000000000000000000000000000A5 +S315E07065A00000000000000000000000000000000095 +S315E07065B000000000000000000101009BBF00000029 +S315E07065C00000000000000000000000002000000055 +S315E07065D00000000000000000000000000000000065 +S315E07065E00000000000000000000000000000000055 +S315E07065F00000000000000000000000000000000045 +S315E07066000000000000000000000000000000000034 +S315E07066100000000000000000000000000000000024 +S315E07066200000000000000000000000100000000004 +S315E07066300000000000000000000000000000000004 +S315E070664000000000000000000000000000000000F4 +S315E070665000000000000000000000000000000000E4 +S315E070666000000000000000000000000000000000D4 +S315E070667000000000000000000000000000000000C4 +S315E070668000000000000000000000000000000000B4 +S315E070669000000000000000000000000000000000A4 +S315E07066A00000000000000000000000000000000094 +S315E07066B00000000000000000000000000000000084 +S315E07066C00000000000000000000000000000000074 +S315E07066D00000000000000000000000000000000064 +S315E07066E00000000000000000000000000000000054 +S315E07066F00000004000000000000000000000000004 +S315E07067000000000000000000000000000000010032 +S315E07067100000000000000000000000000000000023 +S315E07067200000000000000000000000000000000013 +S315E07067300000000003E2000000000000000000001E +S315E070674000000000000000000000000000000000F3 +S315E070675000000000000000000000000000000000E3 +S315E070676000000000200000000000000000000000B3 +S315E070677000000000000000000000000000000000C3 +S315E070678000100000000000000000000000000000A3 +S315E070679000000000000000000000000000000000A3 +S315E07067A00000000000000000000000000000000093 +S315E07067B00000000000000000000000000000000083 +S315E07067C00000000000000000400000000000000033 +S315E07067D00000000000000000000000000000000063 +S315E07067E000200000000000000000200000000020F3 +S315E07067F00000000000000000000000000000000043 +S315E07068000000000000010000000000000000000031 +S315E07068100000000000000000000000000000000022 +S315E07068200000000000000000000000000000000012 +S315E07068300000000000000000000000000000000002 +S315E070684000000000000000000000000000000000F2 +S315E070685000000000000000000000000000000000E2 +S315E070686000000000000000000000000000000000D2 +S315E070687000000000000000000000000000000000C2 +S315E070688000000000000000000000000000000000B2 +S315E07068900000000000004000000000000000000062 +S315E07068A00000000000000000000000000082B80058 +S315E07068B00000000000000000000000000000000082 +S315E07068C00000000000000000000000000000000072 +S315E07068D00000000000000000000000000000000062 +S315E07068E00000000000000000000000000000000052 +S315E07068F00000000000000000000000000000000042 +S315E07069000000000000000000000000000000000031 +S315E07069100000000000000000000000000000000021 +S315E07069200000000000000000000000000000000011 +S315E07069300000000000000000000000000000000001 +S315E070694000000000000000000000000000000000F1 +S315E070695000000000000000000000000000000000E1 +S315E070696000000000000000000020000000000000B1 +S315E070697000000000000000000000000000000000C1 +S315E070698000000000000000000000000000000000B1 +S315E070699000000000000000000000000000000000A1 +S315E07069A00000000000000000000000000000000091 +S315E07069B00000000000000000000000000000000081 +S315E07069C00000000000000000000000000000000071 +S315E07069D00000000000000000000000000000000061 +S315E07069E00000000000000000000000000000000051 +S315E07069F00000000000000000000000000000000041 +S315E0706A000000000000000000000000000000000030 +S315E0706A100000000000000000000000000000000020 +S315E0706A20000000000000E7800000000000000000A9 +S315E0706A300000000000000000000000000000000000 +S315E0706A4000000000000000000000000000000000F0 +S315E0706A5000000000002000000000000000000000C0 +S315E0706A6000000000000000000000000000000000D0 +S315E0706A7000000000000000000000000000000000C0 +S315E0706A8000000000000000000000000000000000B0 +S315E0706A9000000000000000000000000000000000A0 +S315E0706AA00000000000000000000000000000000090 +S315E0706AB00000000000000000000040000000000040 +S315E0706AC00000000000000000000000000000000070 +S315E0706AD00000000020000000000000000000000040 +S315E0706AE00000000000000000000000000000000050 +S315E0706AF00000000000000000000000000000000040 +S315E0706B00000000000000000000000000000000002F +S315E0706B10000000000000000000000000000000001F +S315E0706B20000000000000000000000000000000000F +S315E0706B3000000000000000000000000000000000FF +S315E0706B4000000000000000000000000000000000EF +S315E0706B5000000000000000000000000000000000DF +S315E0706B6000000000000000000000000000000000CF +S315E0706B7000000000000000000000000000000000BF +S315E0706B8000000000000000000000000000000000AF +S315E0706B90000000000000000000000000000000BFE0 +S315E0706BA00A00000080000000000000000000000005 +S315E0706BB0000000000000000000000000000000007F +S315E0706BC0000000000000000000000000000000006F +S315E0706BD0000000000000000000000000000000005F +S315E0706BE0000000000000000000000000100000003F +S315E0706BF0000000000000000000000000000000003F +S315E0706C00000000000004000000000000000000002A +S315E0706C10000000000000000000000000000000001E +S315E0706C20000000000000000000000000000000000E +S315E0706C3000000000000000000000000000000000FE +S315E0706C4000000000000000000000000000000000EE +S315E0706C5000000000002000000000000000000000BE +S315E0706C6000000000000000000000000000000000CE +S315E0706C7000010000000000000000000000000000BD +S315E0706C8000000000000000000000000000000000AE +S315E0706C90000000000000000000000000000000009E +S315E0706CA0000000000000000000000000000000008E +S315E0706CB0000000000000000000000000000000007E +S315E0706CC0000000000000000000000000000000006E +S315E0706CD0000000000000000000000000000000005E +S315E0706CE0000000000000000000000000000000004E +S315E0706CF0000000000000000000000000000000003E +S315E0706D0040000000000000000000000000000000ED +S315E0706D10000000000000000069F9000000000000BB +S315E0706D20000000000000000000000000000000000D +S315E0706D3000000000000000000000000000000000FD +S315E0706D4000000000000000000000000000000000ED +S315E0706D5000000000000000000000000000000000DD +S315E0706D6000000000000000000000000000000000CD +S315E0706D7000000000000000000000000000000000BD +S315E0706D8000000000000000000000000000000000AD +S315E0706D90000000000000000000000000000000009D +S315E0706DA0000000000000000000000000000000008D +S315E0706DB0000000000000000000000000000000007D +S315E0706DC0000000000000000000000000000000006D +S315E0706DD0000000000000000000000000000000005D +S315E0706DE0000000000000000000000000000000004D +S315E0706DF0000000000000000000000000000000003D +S315E0706E00000000000000000000000000000000002C +S315E0706E10000000000000000000000000000000001C +S315E0706E20000000000000000000000000000000000C +S315E0706E3000000000000000000000000000000000FC +S315E0706E4000000000000000000000000000000000EC +S315E0706E5000000000000000000000000000000000DC +S315E0706E6000000000000000000000000000000000CC +S315E0706E7000000000000000000000000000000000BC +S315E0706E8000000000000000000000000000000000AC +S315E0706E90003E490000000000000000000000000015 +S315E0706EA0000000000000000000000000000000008C +S315E0706EB0000000000000000000000000000000007C +S315E0706EC0000000000000000000000000000000006C +S315E0706ED0000000000000000000000000000000005C +S315E0706EE0000000000000000000000000000000004C +S315E0706EF0000000000000000000000000000000003C +S315E0706F00000000000000000000000000000000002B +S315E0706F10000000000000000000000000000000001B +S315E0706F20000000000000000000000000000000000B +S315E0706F3000000000000000000000000000000000FB +S315E0706F4000000000000000000000000000000000EB +S315E0706F5000000000000000000000000000000000DB +S315E0706F6000000000000000000000000000000000CB +S315E0706F7000000000000000000000000000000000BB +S315E0706F8000000000000000000000000000000000AB +S315E0706F90000000000000000000000000000000009B +S315E0706FA0000000000000000000000000000000008B +S315E0706FB0000000000000000000000000000000007B +S315E0706FC0000000000000000000000000000000006B +S315E0706FD0000000000000000000000000000000005B +S315E0706FE0000000000000000000000000000000004B +S315E0706FF0000000000000000001000000000000003A +S315E0707000000000000000000000006FB50000000006 +S315E0707010000000000000000000000000000000001A +S315E0707020000000000000000000000000000000000A +S315E070703000000000000000000000000000000000FA +S315E070704000000000000000000000000000000000EA +S315E070705000000000000000000000000000000000DA +S315E070706000000000000000000000000000000000CA +S315E070707000000000000000000000000000000000BA +S315E070708000000000000000000000000000000000AA +S315E0707090000000000000000000000000000000009A +S315E07070A0000000000000000000000000000000008A +S315E07070B0000000000000000000000000000000007A +S315E07070C0000000000000000000000000000000006A +S315E07070D0000000000000000000000000000000005A +S315E07070E0000000000000000000000000000000004A +S315E07070F0000000000000000000000000000000003A +S315E07071000000000000000000000000000000000029 +S315E07071100000000000000000000000000000000019 +S315E07071200000000000000000000000000000000009 +S315E070713000000000000000000000000000000000F9 +S315E070714000000000000000000000000000000000E9 +S315E070715000000000000000000000000000000000D9 +S315E070716000000000000000000000000000000000C9 +S315E070717000000000000000000000000000000000B9 +S315E07071800000003E49000000000000000000000022 +S315E07071900000000000000000000000000000000099 +S315E07071A00000000000000000000000000000000089 +S315E07071B00000000000000000000000000000000079 +S315E07071C00000000000000000000000000000000069 +S315E07071D00000000000000000000000000000000059 +S315E07071E00000000000000000000000000000000049 +S315E07071F00000000000000000000000000000000039 +S315E07072000000000000000000000000000000000028 +S315E07072100000000000000000000000000000000018 +S315E07072200000000000000000000000000000000008 +S315E070723000000000000000000000000000000000F8 +S315E070724000000000000000000000000000000000E8 +S315E070725000000000000000000000000000000000D8 +S315E070726000000000000000000000000000000000C8 +S315E070727000000000000000000000000000000000B8 +S315E070728000000000000000000000000000000000A8 +S315E07072900000000000000000000000000000000098 +S315E07072A00000000000000000000000000000000088 +S315E07072B00000000000000000000000000000000078 +S315E07072C00000000000000000000000000000000068 +S315E07072D00000000000000000000000000000000058 +S315E07072E00000000000000000000000000000000048 +S315E07072F00000000000000000000000003E490000B1 +S315E07073000000000000000000000000000000000027 +S315E07073100000000000000000000000000000000017 +S315E07073200000000000000000000000000000000007 +S315E070733000000000000000000000000000000000F7 +S315E070734000000000000000000000000000000000E7 +S315E070735000000000000000000000000000000000D7 +S315E070736000000000000000000000000000000000C7 +S315E070737000000000000000000000000000000000B7 +S315E070738000000000000000000000000000000000A7 +S315E07073900000000000000000000000000000000097 +S315E07073A00000000000000000000000000000000087 +S315E07073B00000000000000000000000000000000077 +S315E07073C00000000000000000000000000000000067 +S315E07073D00000000000000000000000000000000057 +S315E07073E00000000000000000000000000000000047 +S315E07073F00000000000000000000000000000000037 +S315E07074000000000000000000000000000000000026 +S315E07074100000000000000000000000000000000016 +S315E07074200000000000000000000000000000000006 +S315E070743000000000000000000000000000000000F6 +S315E070744000000000000000000000000000000000E6 +S315E070745000000000000000000000000000000000D6 +S315E070746000000000000000000000000000000000C6 +S315E070747000000000003E490000000000000000002F +S315E070748000000000000000000000000000000000A6 +S315E07074900000000000000000000000000000000096 +S315E07074A00000000000000000000000000000000086 +S315E07074B00000000000000000000000000000000076 +S315E07074C00000000000000000000000000000000066 +S315E07074D00000000000000000000000000000000056 +S315E07074E00000000000000000000000000000000046 +S315E07074F00000000000000000000000000000000036 +S315E07075000000000000000000000000000000000025 +S315E07075100000000000000000000000000000000015 +S315E07075200000000000000000000000000000000005 +S315E070753000000000000000000000000000000000F5 +S315E070754000000000000000000000000000000000E5 +S315E070755000000000000000000000000000000000D5 +S315E070756000000000000000000000000000000000C5 +S315E070757000000000000000000000000000000000B5 +S315E070758000000000000000000000000000000000A5 +S315E07075900000000000000000000000000000000095 +S315E07075A00000000000000000000000000000000085 +S315E07075B00000000000000000000000000000000075 +S315E07075C00000000000000000000000000000000065 +S315E07075D00000000000000000000000000000000055 +S315E07075E000000000000000000000000000003E49BE +S315E07075F00000000000000000000000000000000035 +S315E07076000000000000000000000000000000000024 +S315E07076100000000000000000000000000000000014 +S315E07076200000000000000000000000000000000004 +S315E070763000000000000000000000000000000000F4 +S315E070764000000000000000000000000000000000E4 +S315E070765000000000000000000000000000000000D4 +S315E070766000000000000000000000000000000000C4 +S315E070767000000000000000000000000000000000B4 +S315E070768000000000000000000000000000000000A4 +S315E07076900000000000000000000000000000000094 +S315E07076A00000000000000000000000000000000084 +S315E07076B00000000000000000000000000000000074 +S315E07076C00000000000000000000000000000000064 +S315E07076D00000000000000000000000000000000054 +S315E07076E00000000000000000000000000000000044 +S315E07076F00000000000000000000000000000000034 +S315E07077000000000000000000000000000000000023 +S315E07077100000000000000000000000000000000013 +S315E07077200000000000000000000000000000000003 +S315E070773000000000000000000000000000000000F3 +S315E070774000000000000000000000000000000000E3 +S315E070775000000000000000000000000000000000D3 +S315E0707760000000000000003E49000000000000003C +S315E070777000000000000000000000000000000000B3 +S315E070778000000000000000000000000000000000A3 +S315E07077900000000000000000000000000000000093 +S315E07077A00000000000000000000000000000000083 +S315E07077B00000000000000000000000000000000073 +S315E07077C00000000000000000000000000000000063 +S315E07077D00000000000000000000000000000000053 +S315E07077E00000000000000000000000000000000043 +S315E07077F00000000000000000000000000000000033 +S315E07078000000000000000000000000000000000022 +S315E07078100000000000000000000000000000000012 +S315E07078200000000000000000000000000000000002 +S315E070783000000000000000000000000000000000F2 +S315E070784000000000000000000000000000000000E2 +S315E070785000000000000000000000000000000000D2 +S315E070786000000000000000000000000000000000C2 +S315E070787000000000000000000000000000000000B2 +S315E070788000000000000000000000000000000000A2 +S315E07078900000000000000000000000000000000092 +S315E07078A00000000000000000000000000000000082 +S315E07078B00000000000000000000000000000000072 +S315E07078C00000000000000000000000000100000061 +S315E07078D00000000000000000000000000000000052 +S315E07078E003980000808000000000000000000000A7 +S315E07078F00000000000000000000000000000000032 +S315E07079000000000000000000000000000000000021 +S315E07079100000000000000000000000000000000011 +S315E07079200000000000000000000000000000000001 +S315E070793000000000000000000000000000000000F1 +S315E070794000000000000000000000000000000000E1 +S315E070795000000000000000000000000000000000D1 +S315E070796000000000000000000000000000000000C1 +S315E070797000000000000000000000000000000000B1 +S315E070798000000000000000000000000000000000A1 +S315E07079900000000000000000000000000000000091 +S315E07079A00000000000000000000000000000000081 +S315E07079B00000000000000000000000000000000071 +S315E07079C00000000000000000000000000000000061 +S315E07079D00000000000000000000000000000000051 +S315E07079E00000000000000000000000000000000041 +S315E07079F00000000000000000000000000000000031 +S315E0707A000000000000000000000000000000000020 +S315E0707A100000000000000000000000000000000010 +S315E0707A200000000000000000000000000000000000 +S315E0707A3000000000000000000000000000000000F0 +S315E0707A4000000000000000000000000000000000E0 +S315E0707A500000000000000101009BBF000000000074 +S315E0707A6000000000000000000000000000000000C0 +S315E0707A7000000000000000000000000000000000B0 +S315E0707A8000000000000000000000000000000000A0 +S315E0707A900000000000000000000000000000000090 +S315E0707AA00000000000000000000000000000000080 +S315E0707AB00000000000000000000000000000000070 +S315E0707AC00000000000000000000000000000000060 +S315E0707AD00000000000000000000000000000000050 +S315E0707AE00000000000000000000000000000000040 +S315E0707AF00000000000000000000000000000000030 +S315E0707B00000000000000000000000000000000001F +S315E0707B10000000000000000000000000000000000F +S315E0707B2000000000000000000000000000000000FF +S315E0707B3000000000000000000000000000000000EF +S315E0707B4000000000000000000000000000000000DF +S315E0707B5000000000000000000000000000000000CF +S315E0707B6000000000000000000000000000000000BF +S315E0707B7000000000000000000000000000000000AF +S315E0707B80000000000000000000000000000000009F +S315E0707B90000000000000000000000000000000008F +S315E0707BA0000000000000000000000000000000007F +S315E0707BB0000000000000000000000000000000006F +S315E0707BC0000100000000000000000000000000005E +S315E0707BD000006FD900000000000000000000000007 +S315E0707BE0000000000000000000000000000000003F +S315E0707BF0000000000000000000000000000000002F +S315E0707C00000000000000000000000000000000001E +S315E0707C10000000000000000000000000000000000E +S315E0707C2000000000000000000000000000000000FE +S315E0707C3000000000000000000000000000000000EE +S315E0707C4000000000000000000000000000000000DE +S315E0707C5000000000000000000000000000000000CE +S315E0707C6000000000000000000000000000000000BE +S315E0707C7000000000000000000000000000000000AE +S315E0707C80000000000000000000000000000000009E +S315E0707C90000000000000000000000000000000008E +S315E0707CA0000000000000000000000000000000007E +S315E0707CB0000000000000000000000000000000006E +S315E0707CC0000000000000000000000000000000005E +S315E0707CD0000000000000000000000000000000004E +S315E0707CE0000000000000000000000000000000003E +S315E0707CF0000000000000000000000000000000002E +S315E0707D00000000000000000000000000000000001D +S315E0707D10000000000000000000000000000000000D +S315E0707D2000000000000000000000000000000000FD +S315E0707D3000000000000000000000000000000000ED +S315E0707D4000000000000000000000003E4900000056 +S315E0707D5000000000200000000000000000000000AD +S315E0707D6000000000000000000000000000000000BD +S315E0707D7000000000000000000000000000000000AD +S315E0707D80000000000000000000000000000000009D +S315E0707D90000000000000000000000000000000008D +S315E0707DA0000000000000000000000000000000007D +S315E0707DB0000000000000000000000000000000006D +S315E0707DC0000000000000000000000000000000005D +S315E0707DD0000000000000000000000000000000004D +S315E0707DE0000000000000000000000000000000003D +S315E0707DF0000000000000000000000000000000002D +S315E0707E00000000000000000000000000000000001C +S315E0707E10000000000000000000000000000000000C +S315E0707E2000000000000000000000000000000000FC +S315E0707E3000000000000000000000000000000000EC +S315E0707E4000000000000000000000000000000000DC +S315E0707E5000000000000000000000000000000000CC +S315E0707E6000000000000000000000000000000000BC +S315E0707E7000000000000000000000000000000000AC +S315E0707E80000000000000000000000000000000009C +S315E0707E90000000000000000000000000000000008C +S315E0707EA0000000000000000000000000000000007C +S315E0707EB0000000000001000000000000000000006B +S315E0707EC0000000006FE200000000000000202004C7 +S315E0707ED00020000004002000000000000000000008 +S315E0707EE000000000000100000040010000004000BA +S315E0707EF0000000000000000000000000000200101A +S315E0707F000080020010008000000000000000000009 +S315E0707F1000000000000400200000040020000000C3 +S315E0707F2000000000000000000000000100000040BA +S315E0707F3001000000400000000000000000000000AA +S315E0707F4000000002001000800200100080000000B7 +S315E0707F5000000000000000000000000400200000A7 +S315E0707F600400200000000000000000000000000097 +S315E0707F700001000000400100000040000000000029 +S315E0707F800000000000000000000200100080020007 +S315E0707F9010008000000000000000000000000000FB +S315E0707FA00004002000000400200000000000000033 +S315E0707FB00000000000000001000000400100000029 +S315E0707FC04000000000000000000000000000000219 +S315E0707FD00010008002001000800000000000000029 +S315E0707FE000000000000000040020000004002000F3 +S315E0707FF0000000000000000000000000000100002A +S315E07080000040010000004000000000000000000099 +S315E070801000000000000200100080020010008000E6 +S315E070802000000000000100000000000000040020D5 +S315E070803000000400200000000000000000AD5F00BA +S315E0708040000080000000202000000000000000001A +S315E070805000000000000000000000000000000000CA +S315E070806000000000000000000000000000000000BA +S315E070807000000000000000000000000000000000AA +S315E0708080000000000000000000000000000000009A +S315E0708090000000000000000000000000000000008A +S315E07080A0000000000000000000000000000000007A +S315E07080B0000000000000000000000000000000006A +S315E07080C0000000000000000000000000000000005A +S315E07080D0000000000000000000000000000000004A +S315E07080E0000000000000000000000000000000003A +S315E07080F0000000000000000000000000000000002A +S315E07081000000000000000000000000000000000019 +S315E07081100000000000000000000000000000000009 +S315E070812000000000000000000000000000000000F9 +S315E070813000000000000000000000000000000000E9 +S315E070814000000000000000000000000000000000D9 +S315E070815000000000000000000000000000000000C9 +S315E070816000000000000000000000000000000000B9 +S315E070817000000000000000000000000000000000A9 +S315E07081800000000000000000000000000000000099 +S315E07081900000000000000000000000000000000089 +S315E07081A00000000000000001000000000000000078 +S315E07081B00000000000008172000000000000002056 +S315E07081C02000000000000000000000000000000039 +S315E07081D00000000000000000000000000000000049 +S315E07081E00000000000000000000000000000000039 +S315E07081F00000000000000000000000000000000029 +S315E07082000000000000000000000000000000000018 +S315E07082100000000000000000000000000000000008 +S315E070822000000000000000000000000000000000F8 +S315E070823000000000000000000000000000000000E8 +S315E070824000000000000000000000000000000000D8 +S315E070825000000000000000000000000000000000C8 +S315E070826000000000000000000000000000000000B8 +S315E070827000000000000000000000000000000000A8 +S315E07082800000000000000000000000000000000098 +S315E07082900000000000000000000000000000000088 +S315E07082A00000000000000000000000000000000078 +S315E07082B00000000000000000000000000000000068 +S315E07082C00000000000000000000000000000000058 +S315E07082D00000000000000000000000000000000048 +S315E07082E00000000000000000000000000000000038 +S315E07082F00000000000000000000000000000000028 +S315E07083000000000000000000000000000000000017 +S315E07083100000000000000000000000000000000007 +S315E070832000000000000000000000000000000035C2 +S315E07083303300000000000000202000000000000074 +S315E070834000000000000000000000000000000000D7 +S315E070835000000000000000000000000000000000C7 +S315E070836000000000000000000000000000000000B7 +S315E070837000000000000000000000000000000000A7 +S315E07083800000000000000000000000000000000097 +S315E07083900000000000000000000000000000000087 +S315E07083A00000000000000000000000000000000077 +S315E07083B00000000000000000000000000000000067 +S315E07083C00000000000000000000000000000000057 +S315E07083D00000000000000000000000000000000047 +S315E07083E00000000000000000000000000000000037 +S315E07083F00000000000000000000000000000000027 +S315E07084000000000000000000000000000000000016 +S315E07084100000000000000000000000000000000006 +S315E070842000000000000000000000000000000000F6 +S315E070843000000000000000000000000000000000E6 +S315E070844000000000000000000000000000000000D6 +S315E070845000000000000000000000000000000000C6 +S315E070846000000000000000000000000000000000B6 +S315E070847000000000000000000000000000000000A6 +S315E07084800000000000000000000000000000000096 +S315E07084900000000000000000000000000000000086 +S315E07084A0000000000000000035330000000000000E +S315E07084B00020200000000000000000000000000026 +S315E07084C00000000000000000000000000000000056 +S315E07084D00000000000000000000000000000000046 +S315E07084E00000000000000000000000000000000036 +S315E07084F00000000000000000000000000000000026 +S315E07085000000000000000000000000000000000015 +S315E07085100000000000000000000000000000000005 +S315E070852000000000000000000000000000000000F5 +S315E070853000000000000000000000000000000000E5 +S315E070854000000000000000000000000000000000D5 +S315E070855000000000000000000000000000000000C5 +S315E070856000000000000000000000000000000000B5 +S315E070857000000000000000000000000000000000A5 +S315E07085800000000000000000000000000000000095 +S315E07085900000000000000000000000000000000085 +S315E07085A00000000000000000000000000000000075 +S315E07085B00000000000000000000000000000000065 +S315E07085C00000000000000000000000000000000055 +S315E07085D00000000000000000000000000000000045 +S315E07085E00000000000000000000000000000000035 +S315E07085F00000000000000000000000000000000025 +S315E07086000000000000000000000000000000000014 +S315E07086100000000000000000000000000000000004 +S315E0708620003533000000000000002020000000004C +S315E070863000000000000000000000000000000000E4 +S315E070864000000000000000000000000000000000D4 +S315E070865000000000000000000000000000000000C4 +S315E070866000000000000000000000000000000000B4 +S315E070867000000000000000000000000000000000A4 +S315E07086800000000000000000000000000000000094 +S315E07086900000000000000000000000000000000084 +S315E07086A00000000000000000000000000000000074 +S315E07086B00000000000000000000000000000000064 +S315E07086C00000000000000000000000000000000054 +S315E07086D00000000000000000000000000000000044 +S315E07086E00000000000000000000000000000000034 +S315E07086F00000000000000000000000000000000024 +S315E07087000000000000000000000000000000000013 +S315E07087100000000000000000000000000000000003 +S315E070872000000000000000000000000000000000F3 +S315E070873000000000000000000000000000000000E3 +S315E070874000000000000000000000000000000000D3 +S315E070875000000000000000000000000000000000C3 +S315E070876000000000000000000000000000000000B3 +S315E070877000000000000000000000000000000000A3 +S315E07087800000000000000000000000000000000093 +S315E0708790000000000000000000003533000000001B +S315E07087A00000002020000000000000000000000033 +S315E07087B00000000000000000000000000000000063 +S315E07087C00000000000000000000000000000000053 +S315E07087D00000000000000000000000000000000043 +S315E07087E00000000000000000000000000000000033 +S315E07087F00000000000000000000000000000000023 +S315E07088000000000000000000000000000000000012 +S315E07088100000000000000000000000000000000002 +S315E070882000000000000000000000000000000000F2 +S315E070883000000000000000000000000000000000E2 +S315E070884000000000000000000000000000000000D2 +S315E070885000000000000000000000000000000000C2 +S315E070886000000000000000000000000000000000B2 +S315E070887000000000000000000000000000000000A2 +S315E07088800000000000000000000000000000000092 +S315E07088900000000000000000000000000000000082 +S315E07088A00000000000000000000000000000000072 +S315E07088B00000000000000000000000000000000062 +S315E07088C00000000000000000000000000000000052 +S315E07088D00000000000000000000000000000000042 +S315E07088E00000000000000000000000000000000032 +S315E07088F00000000000000000000000000000000022 +S315E07089000000000000000000000000000000000011 +S315E07089100000003533000000000000002020000059 +S315E070892000040020000000000000000000000000CD +S315E070893000000000000000010000004000000000A0 +S315E070894000000000000000000000000000000002CF +S315E07089500010008000000000000000000000000031 +S315E0708960000000000000000400200000000000008D +S315E070897000000000000000000000000000010000A0 +S315E07089800040000000000000000000000000000051 +S315E070899000000000000200100080000000000000EF +S315E07089A0000000000000000000000000000400204D +S315E07089B00000000000000000000000000000000061 +S315E07089C00000000100000040000000000000000010 +S315E07089D000000000000000000000000200100080AF +S315E07089E00000000000000000000000000000000031 +S315E07089F000000004002000000000000000000000FD +S315E0708A0000000000000000000001000000400000CF +S315E0708A100000000000000000000000000000000000 +S315E0708A20000200100080000000000000000000005E +S315E0708A3000000000000000000004002000000000BC +S315E0708A4000000000000000000000000000000001CF +S315E0708A500000004000000000000000000000000080 +S315E0708A60000000000000000200100080000000001E +S315E0708A70000000000000000000000000000000049C +S315E0708A80002000000000000000000000B8C20000F6 +S315E0708A90000000000000000000000400200000005C +S315E0708AA00000000000000000000000000000000070 +S315E0708AB0010000004000000000000000000000001F +S315E0708AC000000000000000000200100080000000BE +S315E0708AD00000000000000000000000000000000040 +S315E0708AE0040020000000000000000000000000000C +S315E0708AF000000000000001000000400000000000DF +S315E0708B00000000000000000000000000000002000D +S315E0708B10100080000000000000000000000000006F +S315E0708B2000000000000004002000000000000000CB +S315E0708B3000000000000000000000000001000000DE +S315E0708B40400000000000000000000000000000008F +S315E0708B50000000000200100080000000000000002D +S315E0708B60000000000000000000000000040020008B +S315E0708B70000000000000000000000000000000009F +S315E0708B80000001000000400000000000000000004E +S315E0708B9000000000000000000000020010008000ED +S315E0708BA0000000000000000000000000000000006F +S315E0708BB0000004002000000000000000000000003B +S315E0708BC0000000000000000001000000400000000E +S315E0708BD0000000000000000000000000000000003F +S315E0708BE0020010008000000000000000000000009D +S315E0708BF000000000000000000400200000000000FB +S315E0708C000000000000B3B8000000000000000000A3 +S315E0708C1000000004002000000000000000000000DA +S315E0708C2000000000000000000001000000400000AD +S315E0708C3000000000000000000000000000000000DE +S315E0708C40000200100080000000000000000000003C +S315E0708C50000000000000000000040020000000009A +S315E0708C6000000000000000000000000000000001AD +S315E0708C70000000400000000000000000000000005E +S315E0708C8000000000000000020010008000000000FC +S315E0708C90000000000000000000000000000000047A +S315E0708CA0002000000000000000000000000000004E +S315E0708CB0000000000001000000400000000000001D +S315E0708CC0000000000000000000000000000200103C +S315E0708CD000800000000000000000000000000000BE +S315E0708CE0000000000004002000000000000000000A +S315E0708CF000000000000000000000000100000040DD +S315E0708D00000000000000000000000000000000000D +S315E0708D10000000020010008000000000000000006B +S315E0708D2000000000000000000000000400200000C9 +S315E0708D3000000000000000000000000000000000DD +S315E0708D40000100000040000000000000000000008C +S315E0708D50000000000000000000020010008000002B +S315E0708D6000000000000000000000000000000000AD +S315E0708D700004002000000000000000000000B3B80E +S315E0708D8000000303141460600000030310144060D5 +S315E0708D900000070730304040000007073030C0C0A1 +S315E0708DA000000607303080C00101060670708080D2 +S315E0708DB00101060670708080010104066070008013 +S315E0708DC003031414E0E0000003031414E0E0000071 +S315E0708DD003031014C0E0000007073030C0C0000085 +S315E0708DE007073030C0C000000607303080C0010190 +S315E0708DF00606707080800101060670708080010141 +S315E0708E0004066070008003031414E0E000000303BE +S315E0708E101414E0E0000003031014C0E0000007073C +S315E0708E203030C0C0000007073030C0C00000060711 +S315E0708E30303080C001010606707080800101060640 +S315E0708E407070808001010406607000800303141462 +S315E0708E50E0E0000003031414E0E0000003031014E4 +S315E0708E60C0E0000007073030C0C0000007073030B0 +S315E0708E70C0C000000607303080C001010606707081 +S315E0708E8080800101060670708080010104066070C2 +S315E0708E90008003031414E0E0000003031414E0E020 +S315E0708EA0000003031014C0E0000007073030C0C0B4 +S315E0708EB0000007073030C0C000000607303080C0C1 +S315E0708EC00101060670708080010106067070808070 +S315E0708ED0010104066070008003031414E0E00000F2 +S315E0708EE002021C1CE0E000000202181CC0E0000058 +S315E0708EF006063838C1C100489E0000000000000038 +S315E0708F0000000020000000000000000000000000EB +S315E0708F1000000000000000000000000000000000FB +S315E0708F2000000000000000000000000000000000EB +S315E0708F3000000000000000000000000000000000DB +S315E0708F4000000000000000000000000000000000CB +S315E0708F5000000000000000000000000000000000BB +S315E0708F6000000000000000000000000000000000AB +S315E0708F70000000000000000000000000000000009B +S315E0708F80000000000000000000000000000000008B +S315E0708F90000000000000000000000000000000007B +S315E0708FA0000000000000000000000000000000006B +S315E0708FB0000000000000000000000000000000005B +S315E0708FC0000000000000000000000000000000004B +S315E0708FD0000000000000000000000000000000003B +S315E0708FE0000000000000000000000000000000002B +S315E0708FF0000000000000000000000000000000001B +S315E0709000000000000000000000000000000000000A +S315E070901000000000000000000000000000000000FA +S315E070902000000000000000000000000000000000EA +S315E070903000000000000000000000000000000000DA +S315E070904000000000000000000000000000000000CA +S315E070905000000000000000000000000000000000BA +S315E070906000000000000000000000000000000000AA +S315E0709070E674000000000000000000000000000040 +S315E0709080000000000000000000000000000000008A +S315E0709090000000000000000000000000000000007A +S315E07090A0000000000000000000000000000000006A +S315E07090B0000000000000000000000000000000005A +S315E07090C0000000000000000000000000000000004A +S315E07090D0000000000000000000000000000000003A +S315E07090E0000000000000000000000000000000002A +S315E07090F000400000000000000000000000000000DA +S315E07091000000000000000000000000000000000009 +S315E070911000000000000000000000000000000000F9 +S315E070912000000000040000000000000000000000E5 +S315E070913000000000000000000000000000000000D9 +S315E070914000000000000000000000000000000000C9 +S315E070915000000000000000000000000000000000B9 +S315E070916000000000000000000000000000000000A9 +S315E07091700000000000000000000000000000000099 +S315E07091800000000000000000000000000000000089 +S315E07091900000000000000000000000000000000079 +S315E07091A00000000000000000000000000000000069 +S315E07091B00000000000000000000000000000000059 +S315E07091C00000000000000000000000000000000049 +S315E07091D00000000000000000000000000000000039 +S315E07091E00000000000000000005AC9000000000006 +S315E07091F00000000000000000000000000000100009 +S315E07092000000000000000000000000000000000008 +S315E070921000000000000000000000000000000000F8 +S315E070922000000000000000000000000000000000E8 +S315E070923000000000000000000000000000000000D8 +S315E070924000000000000000000000000000000000C8 +S315E070925000000000000000000000000000000000B8 +S315E070926000000000000000000000000000000000A8 +S315E07092700000000000000000000000000000000098 +S315E07092800000000000000000000000000000000088 +S315E07092900000000000000000000000000000000078 +S315E07092A00000000000000000000000000000000068 +S315E07092B00000000000000000000000000000000058 +S315E07092C00000000000000000000000000000000048 +S315E07092D00000000000000000000000000000000038 +S315E07092E00000000000000000000000000000000028 +S315E07092F00000000000000000000000000000000018 +S315E07093000000000000000000000000000000000007 +S315E070931000000000000000000000000000000000F7 +S315E070932000000000000000000000000000000000E7 +S315E070933000000000000000000000000000000000D7 +S315E070934000000000000000000000000000000000C7 +S315E070935000000000000000000000000000000000B7 +S315E07093600000925A000000000000000000000000BB +S315E07093700000000000000000100000000000000087 +S315E07093800000000000000000000000000000000087 +S315E07093900000000000000000000000000000000077 +S315E07093A00000000000000000000000000000000067 +S315E07093B00000000000000000000000000000000057 +S315E07093C00000000000000000000000000040000007 +S315E07093D00000000000000000000000000000000037 +S315E07093E00000000000000000000000000000000027 +S315E07093F000000000400000000000000000000400D3 +S315E07094000000000000000000000000000000000006 +S315E070941000000000000000000000000000000000F6 +S315E070942000000000000000000000000000000000E6 +S315E070943000000000000000000000000000000000D6 +S315E070944000000000000000000000000000000000C6 +S315E070945010000000000000000000000000000000A6 +S315E070946000000000000000000000000000000000A6 +S315E07094700000000000000000000000000000000096 +S315E07094800000000000000000000000000000000086 +S315E07094900000000000000000000000000000000076 +S315E07094A00000000000000020000000000000000046 +S315E07094B00000000000000000000000000000000056 +S315E07094C00000000000000001000000000000000045 +S315E07094D00000000000000000000000F10000000045 +S315E07094E00000000000000000000000000000000026 +S315E07094F00000000000000000000000000000000016 +S315E07095000000000000000000000000000000000005 +S315E070951000000000000000000000000000000000F5 +S315E070952000000000000000000000000000000000E5 +S315E070953000000000000000000000000000000000D5 +S315E070954000000000000000000000000000000000C5 +S315E070955000000000000000000000000000000000B5 +S315E070956000000000000000000000000000000000A5 +S315E07095700000000000000000000000000000000095 +S315E07095800000000000000000000000000000000085 +S315E07095900000000000000000000000000000000075 +S315E07095A00000000000000000000000000000000065 +S315E07095B00000000000000000000000000000000055 +S315E07095C00000000000000000000000000000000045 +S315E07095D000000000000000000000000000000080B5 +S315E07095E00000000000000000000000000000000025 +S315E07095F00000000000000000000000000000000015 +S315E07096000000000000000000000000000000000004 +S315E070961000000000000000000000000000000000F4 +S315E070962000000000000000000000000000000000E4 +S315E070963000000000000000000000000000000000D4 +S315E070964000000000000000000000000000000100C3 +S315E070965000000000C2B90000000000000000000039 +S315E070966000000000000000000000000000000000A4 +S315E07096700000000000000000000000000000000094 +S315E07096800000000000000000000000000000000084 +S315E07096900000000000000000000000000000000074 +S315E07096A00000000000000000000000000000000064 +S315E07096B00000000000000000000000000000000054 +S315E07096C00000000000000000000000000000000044 +S315E07096D00000000000000000000000000000000034 +S315E07096E00000000000000000000000000000000024 +S315E07096F00000000000000000000000000000000014 +S315E07097000000000000000000000000000000000003 +S315E070971000000000000000000000000000000000F3 +S315E070972000000000000000000000000000000000E3 +S315E070973000000000000000000000000000000000D3 +S315E070974000000000000000000000000000000000C3 +S315E070975000000000000000000000000000000000B3 +S315E070976000000000000000000000000000000000A3 +S315E07097700000000000000000000000000000000093 +S315E07097800000000000000000000000000000000083 +S315E07097900000000000000000000000000000000073 +S315E07097A00000000000000000000000000000000063 +S315E07097B00000000000000000000000000000000053 +S315E07097C0000000000000000000000000003E4900BC +S315E07097D00000000000000000000000000000000033 +S315E07097E00000000000000000000000000000000023 +S315E07097F00000000000000000000000000000000013 +S315E07098000000000000000000000000000000000002 +S315E070981000000000000000000000000000000000F2 +S315E070982000000000000000000000000000000000E2 +S315E070983000000000000000000000000000000000D2 +S315E070984000000000000000000000000000000000C2 +S315E070985000000000000000000000000000000000B2 +S315E070986000000000000000000000000000000000A2 +S315E07098700000000000000000000000000000000092 +S315E07098800000000000000000000000000000000082 +S315E07098900000000000000000000000000000000072 +S315E07098A00000000000000000000000000000000062 +S315E07098B00000000000000000000000000000000052 +S315E07098C00000000000000000000000000000000042 +S315E07098D00000000000000000000000000000000032 +S315E07098E00000000000000000000000000000000022 +S315E07098F00000000000000000000000000000000012 +S315E07099000000000000000000000000000000000001 +S315E070991000000000000000000000000000000000F1 +S315E070992000000000000000000000000001000000E0 +S315E070993000000000000100000000000000000000D0 +S315E07099400000000000009726000000000000000004 +S315E070995000000000000000000000000000000000B1 +S315E070996000000000000000000000000000000000A1 +S315E07099700000000000000000000000000000000091 +S315E07099800000000000000000000000000000000081 +S315E07099900000000000000000000000000000000071 +S315E07099A00000000000000000000000000000000061 +S315E07099B00000000000000000000000000000000051 +S315E07099C00000000000000000000000000000000041 +S315E07099D00000000000000000000000000000000031 +S315E07099E00000000000000000000000000000000021 +S315E07099F00000000000000000000000000000000011 +S315E0709A000000000000000000000000000000000000 +S315E0709A1000000000000000000000000000000000F0 +S315E0709A2000000000000000000000000000000000E0 +S315E0709A3000000000000000000000000000000000D0 +S315E0709A4000000000000000000000000000000000C0 +S315E0709A5000000000000000000000000000000000B0 +S315E0709A6000000000000000000000000000000000A0 +S315E0709A700000000000000000000000000000000090 +S315E0709A800000000000000000000000000000000080 +S315E0709A900000000000000000000000000000000070 +S315E0709AA0000000000000010000000000000001005E +S315E0709AB00000000000000000000000000000003B15 +S315E0709AC02000000000000000000000000000000020 +S315E0709AD00000000000000000000000000000000030 +S315E0709AE00000000000000000000000000000000020 +S315E0709AF00000000000000000000000000000000010 +S315E0709B0000000000000000400000000000000000BF +S315E0709B1000000000000000000000000000000000EF +S315E0709B2000000000000000000000000000000000DF +S315E0709B3000000000000000000000000000000000CF +S315E0709B4000000000000000000000000000000000BF +S315E0709B5000000000000000000000000000000000AF +S315E0709B60000000000000000000000000000000009F +S315E0709B70000000000000000020000000000000006F +S315E0709B80000000000000000000000000000000007F +S315E0709B90000000000000000000000000000000006F +S315E0709BA0000000000000000000000000000000203F +S315E0709BB0000000000000000000000000000000004F +S315E0709BC0000000000000000000000000000000003F +S315E0709BD000000100000000400000010000000000ED +S315E0709BE0000000000000000000000001000000001E +S315E0709BF0000000000000000000000000000000000F +S315E0709C0000000000000000000000000000000000FE +S315E0709C1000000000000000000000000000000000EE +S315E0709C2000000000000000000000000000000000DE +S315E0709C3000020000000000006792000000000000D3 +S315E0709C4000000000000000000000000000000000BE +S315E0709C5000000000000000000000000000000000AE +S315E0709C60000000000000000000000000000000009E +S315E0709C70000000000000000000000000000000008E +S315E0709C80000000000000000000000000000000007E +S315E0709C90000000000000000000000000000000006E +S315E0709CA0000000000000000000000000000000005E +S315E0709CB0000000000000000000000000000000004E +S315E0709CC0000000000000000000000000000000003E +S315E0709CD0000000000000000000000000000000002E +S315E0709CE0000000000000000000000000000000001E +S315E0709CF0000000000000000000000000000000000E +S315E0709D0000000000000000000000000000000000FD +S315E0709D1000000000000000000000000000000000ED +S315E0709D2000000000000000000000000000000000DD +S315E0709D3000000000000000000000000000000000CD +S315E0709D4000000000000000000000000000000000BD +S315E0709D5000000000000000000000000000000000AD +S315E0709D60000000000000000000000000000000009D +S315E0709D70000000000000000000000000000000008D +S315E0709D80000000000000000000000000000000007D +S315E0709D90000000000000000000000000000000006D +S315E0709DA0000000000000000000000000000000005D +S315E0709DB0003E4900000000000000000000000000C6 +S315E0709DC0000000000000000000000000000000003D +S315E0709DD0000000000000000000000000000000002D +S315E0709DE0000000000000000000000000000000001D +S315E0709DF0000000000000000000000000000000000D +S315E0709E0000000000000000000000000000000000FC +S315E0709E1000000000000000000000000000000000EC +S315E0709E2000000000000000000000000000000000DC +S315E0709E3000000000000000000000000000000000CC +S315E0709E4000000000000000000000000000000000BC +S315E0709E5000000000000000000000000000000000AC +S315E0709E60000000000000000000000000000000009C +S315E0709E70000000000000000000000000000000008C +S315E0709E80000000000000000000000000000000007C +S315E0709E90000000000000000000000000000000006C +S315E0709EA0000000000000000000000000000000005C +S315E0709EB0000000000000000000000000000000004C +S315E0709EC0000000000000000000000000000000003C +S315E0709ED0000000000000000000000000000000002C +S315E0709EE0000000000000000000000000000000001C +S315E0709EF0000000000000000000000000000000000C +S315E0709F0000000000000000000000000000000000FB +S315E0709F1000000000000000000000000000000000EB +S315E0709F20000000000000000000003E490000000054 +S315E0709F3000000000000000000000000000000000CB +S315E0709F4000000000000000000000000000000000BB +S315E0709F5000000000000000000000000000000000AB +S315E0709F60000000000000000000000000000000009B +S315E0709F70004000000000000000000000000000004B +S315E0709F80000000000000000000000000000000007B +S315E0709F90000000000000000000000000000000006B +S315E0709FA0000000000000000000000000000000005B +S315E0709FB0000000000000000000000000000000004B +S315E0709FC0000000000000000000000000000000003B +S315E0709FD0000000000000000000000000000000002B +S315E0709FE000000000200000000000000000000000FB +S315E0709FF0000000000000000000000000000000000B +S315E070A00000000000000000000000000000000000FA +S315E070A01000000000000000000000200000000000CA +S315E070A02000000000000000000000000000000000DA +S315E070A03000000000000000000000000000000100C9 +S315E070A0400000400000000100000000000000000079 +S315E070A05000000000000001000000000000000000A9 +S315E070A060000000000000000000000000000000009A +S315E070A0700000000000000000010000000000000089 +S315E070A080000000000000000000000000000000007A +S315E070A0900000000000000000000000000200000068 +S315E070A0A0000000964A00000000000000000000007A +S315E070A0B0000000000000000000000000000000004A +S315E070A0C0000000000000000000000000000000003A +S315E070A0D0000000000000000000000000000000002A +S315E070A0E0000000000000000000000000000000001A +S315E070A0F0000000000000000000000000000000000A +S315E070A10000000000000000000000000000000000F9 +S315E070A11000000000000000000000000000000000E9 +S315E070A12000000000000000000000000000000000D9 +S315E070A13000000000000000000000000000000000C9 +S315E070A14000000000000000000000000000000000B9 +S315E070A15000000000000000000000000000000000A9 +S315E070A1600000000000000000000000000000000099 +S315E070A1700000000000000000000000000000000089 +S315E070A1800000000000000000000000000000000079 +S315E070A1900000000000000000000000000000000069 +S315E070A1A00000000000000000000000000000000059 +S315E070A1B00000000000000000000000000000000049 +S315E070A1C00000000000000000000000000000000039 +S315E070A1D00000000000000000000000000000000029 +S315E070A1E00000000000000000000000000000000019 +S315E070A1F00000000000000000000000000000000009 +S315E070A20000000000000000000000000000000000F8 +S315E070A2100000000000000000000000003E49000061 +S315E070A22080800000000000000000000000000000D8 +S315E070A23000000000000000000000000000000000C8 +S315E070A24000000000000000000000000000000000B8 +S315E070A25000000000000000000000000000000000A8 +S315E070A2600000000000000000000000000000000098 +S315E070A2700000000000000000000000000000000088 +S315E070A2800000000000000000000000000000000078 +S315E070A2900000000000000000000000000000000068 +S315E070A2A00000000000000000000000000000000058 +S315E070A2B00000000000000000000000000000000048 +S315E070A2C00000000000000000000000000000000038 +S315E070A2D00000000000000000000000000000000028 +S315E070A2E00000000000000000000000000000000018 +S315E070A2F00000000000000000000000000000000008 +S315E070A30000000000000000000000000000000000F7 +S315E070A31000000000000000000000000000000000E7 +S315E070A32000000000000000000000000000000000D7 +S315E070A33000000000000000000000000000000000C7 +S315E070A34000000000000000000000000000000000B7 +S315E070A35000000000000000000000000000000000A7 +S315E070A3600000000000000000000000000000000097 +S315E070A3700000000000000000000000000000000087 +S315E070A3800000000000000000000000000000000077 +S315E070A39000000101009BBF0000000000000000000B +S315E070A3A00000000000000000000000000000000057 +S315E070A3B00000000000000000000000000000000047 +S315E070A3C00000000000000000000000000000000037 +S315E070A3D00000000000000000000000000000000027 +S315E070A3E00000000000000000000000000000000017 +S315E070A3F00000000000000000000000000000000007 +S315E070A40000000000000000000000000000000000F6 +S315E070A41000000000000000000000000000000000E6 +S315E070A42000000000000000000000000000000000D6 +S315E070A43000000000000000000000000000000000C6 +S315E070A44000000000000000000000000000000000B6 +S315E070A45000000000000000000000000000000000A6 +S315E070A4600000000000000000000000000000000096 +S315E070A4700000000000000000000000000000000086 +S315E070A4800000000000000000000000000000000076 +S315E070A4900000000000000000000000000000000066 +S315E070A4A00000000000000000000000000000000056 +S315E070A4B00000000000000000000000000000000046 +S315E070A4C00000000000000000000000000000000036 +S315E070A4D00000000000000000000000000000000026 +S315E070A4E00000000000000000000000000000000016 +S315E070A4F00000000000000000000000000000000006 +S315E070A50000000000000000000000000000003E496E +S315E070A51000000000000000000000000000000000E5 +S315E070A52000000000000000000000000000000000D5 +S315E070A53000000000000000000000000000000000C5 +S315E070A54000000000000000000000000000000000B5 +S315E070A55000000000000000000000000000000000A5 +S315E070A5600000000000000000000000000000000095 +S315E070A5700000000000000000000000000000000085 +S315E070A5800000000000000000000000000000000075 +S315E070A5900000000000000000000000000000000065 +S315E070A5A00000000000000000000000000000000055 +S315E070A5B00000000000000000000000000000000045 +S315E070A5C00000000000000000000000000000000035 +S315E070A5D00000000000000000000000000000000025 +S315E070A5E00000000000000000000000000000000015 +S315E070A5F00000000000000000000000000000000005 +S315E070A60000000000000000000000000000000000F4 +S315E070A61000000000000000000000000000000000E4 +S315E070A62000000000000000000000000000000000D4 +S315E070A63000000000000000000000000000000000C4 +S315E070A64000000000000000000000000000000000B4 +S315E070A65000000000000000000000000000000000A4 +S315E070A6600000000000000000000000000000000094 +S315E070A6700000000000000000000000000000000084 +S315E070A680000000000000003E4900000000000000ED +S315E070A6900000000000000000000000000000000064 +S315E070A6A00000000000000000000000000000000054 +S315E070A6B00000000000000000000000000000000044 +S315E070A6C00000000000000000000000000000000034 +S315E070A6D00000000000000000000000000000000024 +S315E070A6E00000000000000000000000000000000014 +S315E070A6F00000000000000000000000000000000004 +S315E070A70000000000000000000000000000000000F3 +S315E070A71000000000000000000000000000000000E3 +S315E070A72000000000000000000000000000000000D3 +S315E070A73000000000000000000000000000000000C3 +S315E070A74000000000000000000000000000000000B3 +S315E070A75000000000000000000000000000000000A3 +S315E070A7600000000000000000000000000000000093 +S315E070A7700000000000000000000000000000000083 +S315E070A7800000000000000000000000000000000073 +S315E070A7900000000000000000000000000000000063 +S315E070A7A00000000000000000000000000000000053 +S315E070A7B00000000000000000000000000000000043 +S315E070A7C00000000000000000000000000000000033 +S315E070A7D00000000000000000000000000000000023 +S315E070A7E00000000000000000000000000000000013 +S315E070A7F00000000000000000000000000000000003 +S315E070A8003E4900000000000000000000000000006B +S315E070A81000000000000000000000000000000000E2 +S315E070A82000000000000000000000000000000000D2 +S315E070A83000000000000000000000000000000000C2 +S315E070A84000000000000000000000000000000000B2 +S315E070A85000000000000000000000000000000000A2 +S315E070A8600000000000000000000000000000000092 +S315E070A8700000000000000000000000000000000082 +S315E070A8800000000000000000000000000000000072 +S315E070A8900000000000000000000000000000000062 +S315E070A8A00000000000000000000000000000000052 +S315E070A8B00000000000000000000000000000000042 +S315E070A8C00000000000000000000000000000000032 +S315E070A8D00000000000000000000000000000000022 +S315E070A8E00000000000000000000000000000000012 +S315E070A8F00000000000000000000000000000000002 +S315E070A90000000000000000000000000000000000F1 +S315E070A91000000000000000000000000000000000E1 +S315E070A92000000000000000000000000000000000D1 +S315E070A93000000000000000000000000000000000C1 +S315E070A94000000000000000000000000000000000B1 +S315E070A95000000000000000000000000000000000A1 +S315E070A9600000000000000000000000000000000091 +S315E070A9700000000000000000003E490000000000FA +S315E070A9800000000000000000000000000000000071 +S315E070A9900000000000000000000000000000000061 +S315E070A9A00000000000000000000000000000000051 +S315E070A9B00000000000000000000000000000000041 +S315E070A9C00000000000000000000000000000000031 +S315E070A9D00000000000000000000000000000000021 +S315E070A9E00000000000000000000000000000000011 +S315E070A9F00000000000000000000000000000000001 +S315E070AA0000000000000000000000000000000000F0 +S315E070AA1000000000000000000000000000000000E0 +S315E070AA2000000000000000000000000000000000D0 +S315E070AA3000000000000000000000000000000000C0 +S315E070AA4000000000000000000000000000000000B0 +S315E070AA5000000000000000000000000000000000A0 +S315E070AA600000000000000000000000000000000090 +S315E070AA700000000000000000000000000000000080 +S315E070AA800000000000000000000000000000000070 +S315E070AA900000000000000000000000000000000060 +S315E070AAA00000000000000000000000000000000050 +S315E070AAB00000000000000000000000000000000040 +S315E070AAC00000000000000000000000000000000030 +S315E070AAD00000000000000000000000000000000020 +S315E070AAE0000000000000000000010000000100000E +S315E070AAF000000E19000000000000000000000000D9 +S315E070AB0000000000000000000000000000000000EF +S315E070AB1000000000000000000000000000000000DF +S315E070AB2000000000000000000000000000000000CF +S315E070AB3000000000000000000000000000000000BF +S315E070AB4000000000000000000000000000000000AF +S315E070AB50000000000000000000000000000000009F +S315E070AB60000000000000000000000000000000008F +S315E070AB70000000000000000000000000000000007F +S315E070AB80000000000000000000000000000000006F +S315E070AB90000000000000000000000000000000005F +S315E070ABA0000000000000000000000000000000004F +S315E070ABB0000000000000000000000000000000003F +S315E070ABC0000000000000000000000000000000002F +S315E070ABD0000000000000000000000000000000001F +S315E070ABE0000000000000000000000000000000000F +S315E070ABF000000000000000000000000000000000FF +S315E070AC0000000000000000000000000000000000EE +S315E070AC1000000000000000000000000000000000DE +S315E070AC2000000000000000000000000000000000CE +S315E070AC3000000000000000000000000000000000BE +S315E070AC4000000000000000000000000000000000AE +S315E070AC50000000000000000000000000000000009E +S315E070AC6000000000000000000000003E4900000007 +S315E070AC70000000000000000000000000000000007E +S315E070AC80000000000000000000000000000000006E +S315E070AC90000000000000000000000000000000005E +S315E070ACA0000000000000000000000000000000004E +S315E070ACB0000000000000000000000000000000003E +S315E070ACC0000000000000000000000000000000002E +S315E070ACD0000000000000000000000000000000001E +S315E070ACE0000000000000000000000000000000000E +S315E070ACF000000000000000000000000000000000FE +S315E070AD0000000000000000000000000000000000ED +S315E070AD1000000000000000000000000000000000DD +S315E070AD2000000000000000000000000000000000CD +S315E070AD3000000000000000000000000000000000BD +S315E070AD4000000000000000000000000000000000AD +S315E070AD50000000000000000000000000000000009D +S315E070AD60000000000000000000000000000000008D +S315E070AD70000000000000000000000000000000007D +S315E070AD80000000000000000000000000000000006D +S315E070AD90000000000000000000000000000000005D +S315E070ADA0000000000000000000000000000000004D +S315E070ADB0000000000000000000000000000000003D +S315E070ADC0000000000000000000000000000000002D +S315E070ADD0000000000000000000000000000000001D +S315E070ADE0000000003E490000008000000000000006 +S315E070ADF000000000000000000000000000000000FD +S315E070AE0000000000000000000000000000000000EC +S315E070AE1000000000000000000000000000000000DC +S315E070AE2000000000000000000000000000000000CC +S315E070AE3000000000000000000000000000000000BC +S315E070AE4000000000000000000000000000000000AC +S315E070AE50000000000000000000000000000000009C +S315E070AE60000000000000000000000000000000008C +S315E070AE70000000000000000000000000000000007C +S315E070AE80000000000000000000000000000000006C +S315E070AE90000000000000000000000000000000005C +S315E070AEA0000000000000000000000000000000004C +S315E070AEB0000000000000000000000000000000003C +S315E070AEC0000000000000000000000000000000002C +S315E070AED0000000000000000000000000000000001C +S315E070AEE0000000000000000000000000000000000C +S315E070AEF000000000000000000000000000000000FC +S315E070AF0000000000000000000000000000000000EB +S315E070AF1000000000000000000000000000000000DB +S315E070AF2000000000000000000000000000000000CB +S315E070AF3000000000000000000000000000000000BB +S315E070AF4000000000000000000000000000000000AB +S315E070AF50000000000000000000000000004B080048 +S315E070AF60000000000000000000000000000000008B +S315E070AF70000000000000000000000000000000007B +S315E070AF80000000000000000000000000000000006B +S315E070AF90000000000000000000000000000000005B +S315E070AFA0000000000000000000000000000000004B +S315E070AFB0000000000000000000000000000000003B +S315E070AFC0000000000000000000000000000000002B +S315E070AFD0000000000000000000000000000000001B +S315E070AFE0000000000000000000000000000000000B +S315E070AFF000000000000000000000000000000000FB +S315E070B00000000000000000000000000000000000EA +S315E070B01000000000000000000000000000000000DA +S315E070B02000000000000000000000000000000000CA +S315E070B03000000000000000000000000000000000BA +S315E070B04000000000000000000000000000000000AA +S315E070B050000000000000000000000000000000009A +S315E070B060000000000000000000000000000000008A +S315E070B070000000000000000000000000000000007A +S315E070B080000000000000000000000000000000006A +S315E070B090000000000000000000000000000000005A +S315E070B0A0000000000000000000000000000000004A +S315E070B0B0000000000000000000000000000000003A +S315E070B0C0000000000000000000000000000000002A +S315E070B0D0000100000000038900008000000000000D +S315E070B0E0000000000000000000000000000000000A +S315E070B0F000000000000000000000000000000000FA +S315E070B10000000000000000000000000000000000E9 +S315E070B11000000000000000000000000000000000D9 +S315E070B12000000000000000000000000000000000C9 +S315E070B13000000000000000000000000000000000B9 +S315E070B14000000000000000000000000000000000A9 +S315E070B1500000000000000000000000000000000099 +S315E070B1600000000000000000000000000000000089 +S315E070B1700000000000000000000000000000000079 +S315E070B1800000000000000000000000000000000069 +S315E070B1900000000000000000000000000000000059 +S315E070B1A00000000000000000000000000000000049 +S315E070B1B00000000000000000000000000000000039 +S315E070B1C00000000000000000000000000000000029 +S315E070B1D00000000000000000000000000000000019 +S315E070B1E00000000000000000000000000000000009 +S315E070B1F000000000000000000000000000000000F9 +S315E070B20000000000000000000000000000000000E8 +S315E070B21000000000000000000000000000000000D8 +S315E070B22000000000000000000000000000000000C8 +S315E070B23000000000000000000000000000000000B8 +S315E070B240000000000000000000000000000000BEEA +S315E070B250AE000000000000000000040020000004C2 +S315E070B2600020000000000000000000000000000068 +S315E070B27001000000400100000040000000000000F6 +S315E070B28000000000000000000200100080020010C4 +S315E070B29000800000000000000000000000000000D8 +S315E070B2A00400200000040020000000000000000000 +S315E070B2B000000000000001000000400100000040B6 +S315E070B2C00000000000000000000000000000020026 +S315E070B2D010008002001000800000000000000000F6 +S315E070B2E000000000000004002000000400200000C0 +S315E070B2F000000000000000000000000001000000F7 +S315E070B3004001000000400000000000000000000066 +S315E070B31000000000020010008002001000800000B3 +S315E070B32000000000000000000000000004002000A3 +S315E070B3300004002000000000000000000000000093 +S315E070B3400000010000004001000000400000000025 +S315E070B3500000000000000000000002001000800203 +S315E070B36000100080000000000000000000000000F7 +S315E070B370000004002000000400200000000000002F +S315E070B3800000000000000000010000004001000025 +S315E070B3900040000000000000000000000000000017 +S315E070B3A00200100080020010008000000000000023 +S315E070B3B000000000000000000400200000040020EF +S315E070B3C00000000000000000FBB00000000000007C +S315E070B3D00000000000000000000000000000000017 +S315E070B3E00000000000000000000000000000000007 +S315E070B3F000000000000000000000000000000000F7 +S315E070B40000000000000000000000000000000000E6 +S315E070B41000000000000000000000000000000000D6 +S315E070B42000000000000000000000000000000000C6 +S315E070B43000000000000000000000000000000000B6 +S315E070B44000000000000000000000000000000000A6 +S315E070B4500000000000000000000000000000000096 +S315E070B4600000000000000000000000000000000086 +S315E070B4700000000000000000000000000000000076 +S315E070B4800000000000000000000000000000000066 +S315E070B4900000000000000000000000000000000056 +S315E070B4A00000000000000000000000000000000046 +S315E070B4B00000000000000000000000000000000036 +S315E070B4C00000000000000000000000000000000026 +S315E070B4D00000000000000000000000000000000016 +S315E070B4E00000000000000000000000000000000006 +S315E070B4F000000000000000000000000000000000F6 +S315E070B50000000000000000000000000000000000E5 +S315E070B51000000000000000000000000000000000D5 +S315E070B52000000000000000000000000000000000C5 +S315E070B53000000000000000000000000000000000B5 +S315E070B540003E49000000000000000000000000001E +S315E070B5500000000000000000000000000000000095 +S315E070B5600000000000000000000000000000000085 +S315E070B5700000000000000000000000000000000075 +S315E070B5800000000000000000000000000000000065 +S315E070B5900000000000000000000000000000000055 +S315E070B5A00000000000000000000000000000000045 +S315E070B5B00000000000000000000000000000000035 +S315E070B5C00000000000000000000000000000000025 +S315E070B5D00000000000000000000000000000000015 +S315E070B5E00000000000000000000000000000000005 +S315E070B5F000000000000000000000000000000000F5 +S315E070B60000000000000000000000000000000000E4 +S315E070B61000000000000000000000000000000000D4 +S315E070B62000000000000000000000000000000000C4 +S315E070B63000000000000000000000000000000000B4 +S315E070B64000000000000000000000000000000000A4 +S315E070B6500000000000000000000000000000000094 +S315E070B6600000000000000000000000000000000084 +S315E070B6700000000000000000000000000000000074 +S315E070B6800000000000000000000000000000000064 +S315E070B6900000000000000000000000000000000054 +S315E070B6A00000000000000000000000000000000044 +S315E070B6B0000000000000000000003E4900008080AD +S315E070B6C00000000000000000000000000000000024 +S315E070B6D00000000000000000000000000000000014 +S315E070B6E00000000000000000000000000000000004 +S315E070B6F000000000000000000000000000000000F4 +S315E070B70000000000000000000000000000000000E3 +S315E070B71000000000000000000000000000000000D3 +S315E070B72000000000000000000000000000000000C3 +S315E070B73000000000000000000000000000000000B3 +S315E070B74000000000000000000000000000000000A3 +S315E070B7500000000000000000000000000000000093 +S315E070B7600000000000000000000000000000000083 +S315E070B7700000000000000000000000000000000073 +S315E070B7800000000000000000000000000000000063 +S315E070B7900000000000000000000000000000000053 +S315E070B7A00000000000000000000000000000000043 +S315E070B7B00000000000000000000000000000000033 +S315E070B7C00000000000000000000000000000000023 +S315E070B7D00000000000000000000000000000000013 +S315E070B7E00000000000000000000000000000000003 +S315E070B7F000000000000000000000000000000000F3 +S315E070B80000000000000000000000000000000000E2 +S315E070B81000000000000000000000000000000000D2 +S315E070B82000000000000000000000000000000000C2 +S315E070B830000000CBEF0000000000000000000000F8 +S315E070B84000000000000000000000000000000000A2 +S315E070B8500000000000000000000000000000000092 +S315E070B8600000000000000000000000000000000082 +S315E070B8700000000000000000000000000000000072 +S315E070B8800000000000000000000000000000000062 +S315E070B8900000000000000000000000000000000052 +S315E070B8A00000000000000000000000000000000042 +S315E070B8B00000000000000000000000000000000032 +S315E070B8C00000000000000000000000000000000022 +S315E070B8D00000000000000000000000000000000012 +S315E070B8E00000000000000000000000000000000002 +S315E070B8F000000000000000000000000000000000F2 +S315E070B90000000000000000000000000000000000E1 +S315E070B91000000000000000000000000000000000D1 +S315E070B92000000000000000000000000000000000C1 +S315E070B93000000000000000000000000000000000B1 +S315E070B94000000000000000000000000000000000A1 +S315E070B9500000000000000000000000000000000091 +S315E070B9600000000000000000000000000000000081 +S315E070B9700000000000000000000000000000000071 +S315E070B9800000000000000000000000000000000061 +S315E070B9900000000000000000000000000000000051 +S315E070B9A00000000000000000000000003E490000BA +S315E070B9B00000000000000000000000000000000031 +S315E070B9C00000000000000000000000000000000021 +S315E070B9D00000000000000000000000000000000011 +S315E070B9E00000000000000000000000000000000001 +S315E070B9F000000000000000000000000000000000F1 +S315E070BA0000000000000000000000000000000000E0 +S315E070BA1000000000000000000000000000000000D0 +S315E070BA2000000000000000000000000000000000C0 +S315E070BA3000000000000000000000000000000000B0 +S315E070BA4000000000000000000000000000000000A0 +S315E070BA500000000000000000000000000000000090 +S315E070BA600000000000000000000000000000000080 +S315E070BA700000000000000000000000000000000070 +S315E070BA800000000000000000000000000000000060 +S315E070BA900000000000000000000000000000000050 +S315E070BAA00000000000000000000000000000000040 +S315E070BAB00000000000000000000000000000000030 +S315E070BAC00000000000000000000000000000000020 +S315E070BAD00000000000000000000000000000000010 +S315E070BAE00000000000000000000000000000000000 +S315E070BAF000000000000000000000000000000000F0 +S315E070BB0000000000000000000000000000000000DF +S315E070BB1000000000000000000000000000000000CF +S315E070BB2000000000003E4900000000000000000038 +S315E070BB3000000000000000000000000000000000AF +S315E070BB40000000000000000000000000000000009F +S315E070BB50000000000000000000000000000000008F +S315E070BB60000000000000000000000000000000007F +S315E070BB70000000000000000000000000000000006F +S315E070BB80000000000000000000000000000000005F +S315E070BB90000000000000000000000000000000004F +S315E070BBA0000000000000000000000000000000003F +S315E070BBB0000000000000000000000000000000002F +S315E070BBC0000000000000000000000000000000001F +S315E070BBD0000000000000000000000000000000000F +S315E070BBE000000000000000000000000000000000FF +S315E070BBF000000000000000000000000000000000EF +S315E070BC0000000000000000000000000000000000DE +S315E070BC1000000000000000000000000000000000CE +S315E070BC2000000000000000000000000000000000BE +S315E070BC3000000000000000000000000000000000AE +S315E070BC40000000000000000000000000000000009E +S315E070BC50000000000000000000000000000000008E +S315E070BC60000000000000000000000000000000007E +S315E070BC70000000000000000000000000000000006E +S315E070BC80000000000000000000000000000000005E +S315E070BC9000000000000000000000000000003E49C7 +S315E070BCA0000000000000000000000000040020001A +S315E070BCB0000000000000000000000000000000002E +S315E070BCC000000100000040000000000000000000DD +S315E070BCD0000000000000000000000200100080007C +S315E070BCE000000000000000000000000000000000FE +S315E070BCF000000400200000000000000000000000CA +S315E070BD00000000000000000001000000400000009C +S315E070BD1000000000000000000000000000000000CD +S315E070BD20020010008000000000000000000000002B +S315E070BD300000000000000000040020000000000089 +S315E070BD40000000000000000000000000000001009C +S315E070BD50000040000000000000000000000000004D +S315E070BD6000000000000002001000800000000000EB +S315E070BD700000000000000000000000000000040069 +S315E070BD80200000000000000000000000000000003D +S315E070BD90000000000100000040000000000000000C +S315E070BDA0000000000000000000000000020010002B +S315E070BDB080000000000000000000000000000000AD +S315E070BDC000000000040020000000000000000000F9 +S315E070BDD000000000000000000000010000004000CC +S315E070BDE000000000000000000000000000000000FD +S315E070BDF0000002001000800000000000000000005B +S315E070BE0000000000000000000000040020000000B8 +S315E070BE1000000000000000B3B80000000000000061 +S315E070BE200000000000040020000000000000000098 +S315E070BE30000000000000000000000001000000406B +S315E070BE40000000000000000000000000000000009C +S315E070BE5000000002001000800000000000000000FA +S315E070BE600000000000000000000000040020000058 +S315E070BE70000000000000000000000000000000006C +S315E070BE80000100000040000000000000000000001B +S315E070BE9000000000000000000002001000800000BA +S315E070BEA0000000000000000000000000000000003C +S315E070BEB00004002000000000000000000000000008 +S315E070BEC000000000000000010000004000000000DB +S315E070BED0000000000000000000000000000000020A +S315E070BEE0001000800000000000000000000000006C +S315E070BEF000000000000000040020000000000000C8 +S315E070BF0000000000000000000000000000010000DA +S315E070BF10004000000000000000000000000000008B +S315E070BF200000000000020010008000000000000029 +S315E070BF300000000000000000000000000004002087 +S315E070BF40000000000000000000000000000000009B +S315E070BF50000000010000004000000000000000004A +S315E070BF6000000000000000000000000200100080E9 +S315E070BF70000000000000000000000001000000006A +S315E070BF800000000400200000000000000000000037 +S315E070BF90A36900000000000000000000000004003B +S315E070BFA0200000000000000000000000000000001B +S315E070BFB000000000010000004000000000000000EA +S315E070BFC00000000000000000000000000200100009 +S315E070BFD0800000000000000000000000000000008B +S315E070BFE000000000040020000000000000000000D7 +S315E070BFF000000000000000000000010000004000AA +S315E070C00000000000000000000000000000000000DA +S315E070C0100000020010008000000000000000000038 +S315E070C0200000000000000000000004002000000096 +S315E070C03000000000000000000000000000000000AA +S315E070C0400100000040000000000000000000000059 +S315E070C05000000000000000000200100080000000F8 +S315E070C060000000000000000000000000000000007A +S315E070C0700400200000000000000000000000000046 +S315E070C0800000000000000100000040000000000019 +S315E070C0900000000000000000000000000000020048 +S315E070C0A010008000000000000000000000000000AA +S315E070C0B00000000000000400200000000000000006 +S315E070C0C00000000000000000000000000100000019 +S315E070C0D040000000000000000000000000000000CA +S315E070C0E00000000002001000800000000000000068 +S315E070C0F000000000000000000000000004002000C6 +S315E070C100000000000000000000B3B8000003031454 +S315E070C11014606000000303101440600000070730ED +S315E070C120304040000007073030C0C00000060730DE +S315E070C1303080C001010606707080800101060670CD +S315E070C140708080010104066070008003031414E0BF +S315E070C150E0000003031414E0E0000003031014C0D1 +S315E070C160E0000007073030C0C0000007073030C07D +S315E070C170C000000607303080C0010106067070808E +S315E070C180800101060670708080010104066070000F +S315E070C1908003031414E0E0000003031414E0E000ED +S315E070C1A00003031014C0E0000007073030C0C00081 +S315E070C1B00007073030C0C000000607303080C0018D +S315E070C1C0010606707080800101060670708080013D +S315E070C1D00104066070008003031414E0E0000003BD +S315E070C1E0031414E0E0000003031014C0E00000073D +S315E070C1F0073030C0C0000007073030C0C00000060E +S315E070C20007303080C001010606707080800101063B +S315E070C210067070808001010406607000800303146C +S315E070C22014E0E0000003031414E0E00000030310E0 +S315E070C23014C0E0000007073030C0C00000070730C8 +S315E070C24030C0C000000607303080C00101060670BD +S315E070C25070808001010606707080800101040660BE +S315E070C26070008003031414E0E0000002021C1CE07E +S315E070C270E000000202181CC0E0000006063838C074 +S315E070C280C00018CE00000080000000000000000032 +S315E070C2900000000000000000000000000000000048 +S315E070C2A00000000000000000000000000000000038 +S315E070C2B00000000000000000000000000000000028 +S315E070C2C00000000000000000000000000000000018 +S315E070C2D00000000000000000000000000000000008 +S315E070C2E000000000000000000000000000000000F8 +S315E070C2F000000000000000000000000000000000E8 +S315E070C30000000000000000000000000000000000D7 +S315E070C31000000000000000000000000000000000C7 +S315E070C32000000000000000000000000000000000B7 +S315E070C33000000000000000000000000000000000A7 +S315E070C3400000000000000000000000000000000097 +S315E070C3500000000000000000000000000000000087 +S315E070C3600000000000000000000000000000000077 +S315E070C3700000000000000000000000000000000067 +S315E070C3800000000000000000000000000000000057 +S315E070C3900000000000000000000000000000000047 +S315E070C3A00000000000000000000000000000000037 +S315E070C3B00000000000000000000000000000000027 +S315E070C3C00000000000000000000000000000000017 +S315E070C3D00000000000000000000000000000000007 +S315E070C3E000000000000000000000000000000000F7 +S315E070C3F000000000000000000000004B0800000094 +S315E070C40000000000000000000000000000100000C6 +S315E070C41000000000000000000000000000000000C6 +S315E070C42000000000000000000000000000000000B6 +S315E070C43000000000000000000000000000000000A6 +S315E070C4400000000000000000000000000000000096 +S315E070C4500000000000000000000000000000000086 +S315E070C4600000000000000000000000000000000076 +S315E070C4700000000000000000000000010000000065 +S315E070C48000000000000000000000000080000000D6 +S315E070C4900000000000000000000000000000000046 +S315E070C4A00000000000000000000000000000000036 +S315E070C4B00000000000000000000000000000000026 +S315E070C4C000000000000000000040000000000000D6 +S315E070C4D00000000000000000000000000000000006 +S315E070C4E000000000000000000000000000000000F6 +S315E070C4F000000000000000000000000000000000E6 +S315E070C50000000000000000000000000000040000D1 +S315E070C51000000000000000000000000000000000C5 +S315E070C5200000000000000080000000000000000035 +S315E070C5300000000000000000002000000000000085 +S315E070C5400000000000000000000000000000000095 +S315E070C5500000000000000000000000000000000085 +S315E070C5600000000000000000000000000000000075 +S315E070C570000000002535000080000000000000008B +S315E070C5800000000000000000000000000000000055 +S315E070C5900000000000000000000000000000000045 +S315E070C5A00000000000200000000000000000000015 +S315E070C5B00000000000000000000000000000000025 +S315E070C5C00000000000000000000000000000000015 +S315E070C5D00000000000000000000000000000000005 +S315E070C5E000000000000000000000000000000000F5 +S315E070C5F000000000000000000000000000000000E5 +S315E070C60000000000000000000000000000000000D4 +S315E070C61000000000000000000000000000000000C4 +S315E070C62000000000000000000000000000000000B4 +S315E070C63000000000000000000000000000000000A4 +S315E070C6400000000000000000000000000000000094 +S315E070C6500000000000000000000000000000000084 +S315E070C6600000000000000000000000000000000074 +S315E070C6700000000000000000000000000000000064 +S315E070C6800000000000000000000000000000000054 +S315E070C6900000000000000000000000000000000044 +S315E070C6A00000000000000000000000000000000034 +S315E070C6B00000000000000000000000000000000024 +S315E070C6C00000000000000000000000000000000014 +S315E070C6D00000000000000000000000000000000004 +S315E070C6E000000000000000000000000000477B0032 +S315E070C6F000000000000000000000000000000000E4 +S315E070C70000000000000000000000000000000000D3 +S315E070C71000000000000000000000000000000000C3 +S315E070C72000000000000000000000000000000000B3 +S315E070C73000000000000000000000000000000000A3 +S315E070C7400000000000000000000000000000000093 +S315E070C7500000000000000000000100000000000082 +S315E070C7600000000000000000000000000000000073 +S315E070C77080000000000000000000000000000000E3 +S315E070C7800000000000000000000000000000000053 +S315E070C7900000000000000000000000000000000043 +S315E070C7A000000040000000000000000000000000F3 +S315E070C7B00000000000000000000000000000000023 +S315E070C7C00000000000000000000000000000000013 +S315E070C7D00000000000000000000000000000000003 +S315E070C7E000000000000000000000000000000000F3 +S315E070C7F000000000000000000000000000000000E3 +S315E070C8000080000000000000000000000000000052 +S315E070C81000000000000000200000000000000000A2 +S315E070C82000000000000000000000000000000000B2 +S315E070C83000000000000000000000000000000000A2 +S315E070C8400000000000000000000000000000000092 +S315E070C8500000000000000000000000000020000062 +S315E070C8600000000000005917000000000000000002 +S315E070C8700000000000000000000000000000000062 +S315E070C8800000000000000000000000000000000052 +S315E070C8900000000000000000200000000000000022 +S315E070C8A00000000000000000000000000000000032 +S315E070C8B00000000000000000000000000000000022 +S315E070C8C00000000000000000000000000000000012 +S315E070C8D00000000000000000000000000000000002 +S315E070C8E000000000000000000000000000000000F2 +S315E070C8F000000000000000000000000000000000E2 +S315E070C90000000000000000000000000000000000D1 +S315E070C91000000000000000000000000000000000C1 +S315E070C92000000000000000000000000000000000B1 +S315E070C93000000000000000000000000000000000A1 +S315E070C9400000000000000000000000000000000091 +S315E070C9500000000000000000000000000000000081 +S315E070C9600000000000000000000000000000000071 +S315E070C9700000000000000000000000000000000061 +S315E070C980000000000000000000040000000000004D +S315E070C9900000000000000000000000000000000041 +S315E070C9A00000000000000000000000000000000031 +S315E070C9B00000000000000000000000000000000021 +S315E070C9C00000000000000000000000000000000011 +S315E070C9D0000000000000000000000000000000EF12 +S315E070C9E0CE00000000000000000000000000000023 +S315E070C9F000000000000000000000000000000000E1 +S315E070CA0000000000000000000000000000000000D0 +S315E070CA1000000000000000000000000000000000C0 +S315E070CA2000000000000000000000000000000000B0 +S315E070CA3000000000000000000000000000000000A0 +S315E070CA400000000000000000000000000000000090 +S315E070CA500000000000000000000000000000000080 +S315E070CA600000000000000000000000000000000070 +S315E070CA700000000000000000000000000000000060 +S315E070CA800000000000000000000000000000000050 +S315E070CA900000000000000000000000000000000040 +S315E070CAA00000000000000000000000000000000030 +S315E070CAB00000000000000000000000000000000020 +S315E070CAC00000000000000000000000000000000010 +S315E070CAD00000000000000000000000000000000000 +S315E070CAE000000000000000000000000000000000F0 +S315E070CAF000000000000000000000000000000000E0 +S315E070CB0000000000000000000000000000000000CF +S315E070CB1000000000000000000000000000000000BF +S315E070CB2000000000000000000000000000000000AF +S315E070CB30000000000000000000000000000000009F +S315E070CB40000000000000000000000000000000008F +S315E070CB5000000000000000003E49000080800000F8 +S315E070CB60000000000000000000000000000000006F +S315E070CB70000000000000000000000000000000005F +S315E070CB80000000000000000000000000000000004F +S315E070CB90000000000000000000000000000000003F +S315E070CBA0000000000000000000000000000000002F +S315E070CBB0000000000000000000000000000000001F +S315E070CBC0000000000000000000000000000000000F +S315E070CBD000000000000000000000000000000000FF +S315E070CBE000000000000000000000000000000000EF +S315E070CBF000000000000000000000000000000000DF +S315E070CC0000000000000000000000000000000000CE +S315E070CC1000000000000000000000000000000000BE +S315E070CC2000000000000000000000000000000000AE +S315E070CC30000000000000000000000000000000009E +S315E070CC40000000000000000000000000000000008E +S315E070CC50000000000000000000000000000000007E +S315E070CC60000000000000000000000000000000006E +S315E070CC70000000000000000000000000000000005E +S315E070CC80000000000000000000000000000000004E +S315E070CC90000000000000000000000000000000003E +S315E070CCA0000000000000000000000000000000002E +S315E070CCB000000000000000000000400000000000DE +S315E070CCC0000000000000000000000000000001010C +S315E070CCD000AF8C00000000000000000000000000C3 +S315E070CCE000000000000000000000000000000000EE +S315E070CCF000000000000000000000000000000000DE +S315E070CD0000000000000000000000000000000000CD +S315E070CD1000000000000000000000000000000000BD +S315E070CD2000000000000000000000000000000000AD +S315E070CD30000000000000000000000000000000009D +S315E070CD40000000000000000000000000000000008D +S315E070CD50000000000000000000000000000000007D +S315E070CD60000000000000000000000000000000006D +S315E070CD70000000000000000000000000000000005D +S315E070CD80000000000000000000000000000000004D +S315E070CD90000000000000000000000000000000003D +S315E070CDA0000000000000000000000000000000002D +S315E070CDB0000000000000000000000000000000001D +S315E070CDC0000000000000000000000000000000000D +S315E070CDD000000000000000000000000000000000FD +S315E070CDE000000000000000000000000000000000ED +S315E070CDF000000000000000000000000000000000DD +S315E070CE0000000000000000000000000000000000CC +S315E070CE10400000000000000000000000000000007C +S315E070CE2000000000000000000000000000000000AC +S315E070CE30000000400000000000000000000000005C +S315E070CE4000000000000000000000C53A000000008D +S315E070CE50000000000000000000000000000000007C +S315E070CE60000000000000000000000000000000006C +S315E070CE70000000000000000000000000000000005C +S315E070CE80000000000000000000000000000000004C +S315E070CE90000000000000000000000000000000003C +S315E070CEA0000000000000000000000000000000002C +S315E070CEB0000000000000000000000000000000001C +S315E070CEC0000000000000000000000000000000000C +S315E070CED000000000000000000000000000000000FC +S315E070CEE000000000000000000000000000000000EC +S315E070CEF000000000000000000000000000000000DC +S315E070CF0000000000000000000000000000000000CB +S315E070CF1000000000000000000000000000000000BB +S315E070CF2000000000000000000000000000000000AB +S315E070CF30000000000000000000000000000000009B +S315E070CF40000000000000000000000000000000008B +S315E070CF50000000000000000000000000000000007B +S315E070CF60000000000000000000000000000040002B +S315E070CF70000000000040000000000000000000001B +S315E070CF80000000000000000000000000000000004B +S315E070CF90000000000000000000000000000000003B +S315E070CFA0000000000000000000000000000000002B +S315E070CFB0000000000000000000000000000000001B +S315E070CFC0000001F8CC000000000000000000000046 +S315E070CFD000000000000000000000000000000000FB +S315E070CFE000000000000000000000000000000000EB +S315E070CFF000000000000000000000000000000000DB +S315E070D00000000000000000000000000000000000CA +S315E070D01000000000000000000000000000000000BA +S315E070D02000000000000000000000000000000000AA +S315E070D030000000000000000000000000000000009A +S315E070D040000000000000000000000000000000008A +S315E070D050000000000000000000000000000000007A +S315E070D060000000000000000000000000000000006A +S315E070D070000000000000000000000000000000005A +S315E070D080000000000000000000000000000000004A +S315E070D090000000000000000000000000000000003A +S315E070D0A0000000000000000000000000000000002A +S315E070D0B0000000000000000000000000000000001A +S315E070D0C0000000000000000000000000000000000A +S315E070D0D000000000000000000000000000000000FA +S315E070D0E000000000000000000000000000004000AA +S315E070D0F000000000000000000000000000000000DA +S315E070D10000000000000000000000000000000000C9 +S315E070D11000000000000000000000000000000000B9 +S315E070D12000000000000000000000000000000000A9 +S315E070D1300000000000000000000000006E690000C2 +S315E070D1400000000000000000000000000000000089 +S315E070D1500000000000000000000000000000000079 +S315E070D1600000000000000000000000000000000069 +S315E070D1700000000000000000000000000000000059 +S315E070D1800000000000000000000000000000000049 +S315E070D1900000000000000000000000000000000039 +S315E070D1A00000000000000000000000000000000029 +S315E070D1B00000000000000000000000000000000019 +S315E070D1C00000000000000000000000000000000009 +S315E070D1D000000000000000000000000000000000F9 +S315E070D1E000000000000000000000000000000000E9 +S315E070D1F000000000000000000000000000000000D9 +S315E070D20000000000000000000000000000000000C8 +S315E070D21000000000000000000000000000000000B8 +S315E070D22000000000000000000000000000000000A8 +S315E070D2300000000000000000000000000000000098 +S315E070D2400000000000000000000000000000000088 +S315E070D2500000000000000000000000000000000078 +S315E070D2600000000000000000000000000000000068 +S315E070D2700000000000000000000000000000000058 +S315E070D2800000000000000000000000000000000048 +S315E070D2900000000000000000000000000000000038 +S315E070D2A00000000000000000000000000000000028 +S315E070D2B000000000003E4900000080000000000011 +S315E070D2C00000000000000000000000000000000008 +S315E070D2D000000000000000000000000000000000F8 +S315E070D2E000000000000000000000000000000000E8 +S315E070D2F000000000000000000000000000000000D8 +S315E070D30000000000000000000000000000000000C7 +S315E070D31000000000000000000000000000000000B7 +S315E070D32000000000000000000000000000000000A7 +S315E070D3300000000000000000000000000000000097 +S315E070D3400000000000000000000000000000000087 +S315E070D3500000000000000000000000000000000077 +S315E070D3600000000000000000000000000000000067 +S315E070D3700000000000000000000000000000000057 +S315E070D3800000000000000000000000000000000047 +S315E070D3900000000000000000000000000000000037 +S315E070D3A00000000000000000000000000000000027 +S315E070D3B00000000000000000000000000000000017 +S315E070D3C00000000000000000000000000000000007 +S315E070D3D000000000000000004000000000000000B7 +S315E070D3E000000000000000004000000000000000A7 +S315E070D3F000000000000000000000000000000000D7 +S315E070D40000000000000000000000000000000000C6 +S315E070D41000000000000000000000000000000000B6 +S315E070D42000000000000000000000000100007CA287 +S315E070D4300000000000000000000000008000000016 +S315E070D4400000000000000000000000000000000086 +S315E070D4500000000000000000000000000000000076 +S315E070D4600000000000000000000000000000000066 +S315E070D4700000000000000000000000000000000056 +S315E070D4800000000000000000000000000000000046 +S315E070D4900000000000000000000000000000000036 +S315E070D4A00000000000000000000000000000000026 +S315E070D4B00000000000000000000000000000000016 +S315E070D4C00000000000000000000000000000000006 +S315E070D4D000000000000000000000000000000000F6 +S315E070D4E000000000000000000000000000000000E6 +S315E070D4F000000000000000000000000000000000D6 +S315E070D50000000000000000000000000000000000C5 +S315E070D51000000000000000000000000000000000B5 +S315E070D52000000000000000000000000000000000A5 +S315E070D5300000000000000000000000000000000095 +S315E070D5400000000000000000000000000000000085 +S315E070D5500000000040000000000000000000000035 +S315E070D5600000000000000000000000000000004025 +S315E070D5700000000000000000000000000000400015 +S315E070D5800000000000000000000040000000000005 +S315E070D5900000000000000000000000000000000035 +S315E070D5A00000000000000108C1000000000000005B +S315E070D5B00000000000000000000000000000008095 +S315E070D5C00000000000000000000000000000000005 +S315E070D5D000000000000000000000000000000000F5 +S315E070D5E000000000000000000000000000000000E5 +S315E070D5F000000000000000000000000000000000D5 +S315E070D60000000000000000000000000000000000C4 +S315E070D61000000000000000000000000000000000B4 +S315E070D62000000000000000000000000000000000A4 +S315E070D6300000000000000000000000000000000094 +S315E070D6400000000000000000000000000000000084 +S315E070D6500000000000000000000000000000000074 +S315E070D6600000000000000000000000000000000064 +S315E070D6700000000000000000000000000000000054 +S315E070D6800000000000000000000000000000000044 +S315E070D6900000000000000000000000000000000034 +S315E070D6A00000000000000000000000000000000024 +S315E070D6B00000000000000000000000000000000014 +S315E070D6C00000000000000000000000000000000004 +S315E070D6D000000000000000000000000000000000F4 +S315E070D6E000000000000000000000000000004000A4 +S315E070D6F00000004000000000000000400000400014 +S315E070D70000000000000000000000000000000000C3 +S315E070D71000000000000000000001000000000000B2 +S315E070D720446C0000000000000000000000000000F3 +S315E070D7300000000000000000000000000000000093 +S315E070D7400000000000000000000000000000000083 +S315E070D7500000000000000000000000000000000073 +S315E070D7600000000000000000000000000000000063 +S315E070D7700000000000000000000000000000000053 +S315E070D7800000000000000000000000000000000043 +S315E070D7900000000000000000000000000000000033 +S315E070D7A00000000000000000000000000000000023 +S315E070D7B00000000000000000000000000000000013 +S315E070D7C00000000000000000000000000000000003 +S315E070D7D000000000000000000000000000000000F3 +S315E070D7E000000000000000000000000000000000E3 +S315E070D7F000000000000000000000000000000000D3 +S315E070D80000000000000000000000000000000000C2 +S315E070D81000000000000000000000000000000000B2 +S315E070D82000000000000000000000000000000000A2 +S315E070D8300000000000000000000000000000000092 +S315E070D8400000000000000000000040000000000042 +S315E070D8500000000000000000000000000000000072 +S315E070D8600000000000400000000000000000000022 +S315E070D8700000000000000000004000000000000012 +S315E070D8800000000000000000000000000000000042 +S315E070D8900000000000000000004C96000000000050 +S315E070D8A00000000000000000000000000000000022 +S315E070D8B00000000000000000000000000000000012 +S315E070D8C00000000000000000000000000000000002 +S315E070D8D000000000000000000000000000000000F2 +S315E070D8E000000000000000000000000000000000E2 +S315E070D8F000000000000000000000000000000000D2 +S315E070D90000000000000000000000000000000000C1 +S315E070D91000000000000000000000000000000000B1 +S315E070D92000000000000000000000000000000000A1 +S315E070D9300000000000000000000000000000000091 +S315E070D9400000000000000000000000000000000081 +S315E070D9500000000000000000000000000000000071 +S315E070D9600000000000000000000000000000000061 +S315E070D9700000000000000000000000000000000051 +S315E070D9800000000000000000000000000000000041 +S315E070D9900000000000000000000000000000000031 +S315E070D9A00000000000000000000000000000000021 +S315E070D9B00000000000000000000000000000000011 +S315E070D9C00000000000000000000000000000000001 +S315E070D9D000400000000000000000000000000000B1 +S315E070D9E000000000000000000000004000000000A1 +S315E070D9F000000000000000000000000000000000D1 +S315E070DA0000000000000000000000000000000000C0 +S315E070DA1000006A47000000000000000000000000FF +S315E070DA2000000000000000000000000000000000A0 +S315E070DA300000000000000000000000000000000090 +S315E070DA400000000000000000000000000000000080 +S315E070DA500000000000000000000000000000000070 +S315E070DA600000000000000000000000000000000060 +S315E070DA700000000000000000000000000000000050 +S315E070DA800000000000000000000000000000000040 +S315E070DA900000000000000000000000000000000030 +S315E070DAA00000000000000000000000000000000020 +S315E070DAB00000000000000000000000000000000010 +S315E070DAC00000000000000000000000000000000000 +S315E070DAD000000000000000000000000000000000F0 +S315E070DAE000000000000000000000000000000000E0 +S315E070DAF000000000000000000000000000000000D0 +S315E070DB0000000000000000000000000000000000BF +S315E070DB1000000000000000000000000000000000AF +S315E070DB20000000000000000000000000000000009F +S315E070DB30000000000000000000000000000000008F +S315E070DB40000000000000000000000000000000007F +S315E070DB50400000000000000000000000000000002F +S315E070DB60000000000000000000000000000000005F +S315E070DB70000000000000000000000000000000004F +S315E070DB8000000000000000000000003E1D000000E4 +S315E070DB90000000000000000000000000000000002F +S315E070DBA0000000000000000000000000000000001F +S315E070DBB0000000000000000000000000000000000F +S315E070DBC000000000000000000000000000000000FF +S315E070DBD000000000000000000000000000000000EF +S315E070DBE000000000000000000000000000000000DF +S315E070DBF000000000000000000000000000000000CF +S315E070DC0000000000000000000000000000000000BE +S315E070DC1000000000000000000000000000000000AE +S315E070DC20000000000000000000000000000000009E +S315E070DC30000000000000000000000000000000008E +S315E070DC40000000000000000000000000000000007E +S315E070DC50000000000000000000000000000000006E +S315E070DC60000000000000000000000000000000005E +S315E070DC70000000000000000000000000000000004E +S315E070DC80000000000000000000000000000000003E +S315E070DC90000000000000000000000000000000002E +S315E070DCA000000000000000004000000000000000DE +S315E070DCB0000000000000000000000000000000000E +S315E070DCC000000000000000000000000000000000FE +S315E070DCD000000000000000000000000000000000EE +S315E070DCE0000000000000000000000040000000009E +S315E070DCF000000000000000000000000000000000CE +S315E070DD000000000047AC00000000000000000000CA +S315E070DD1000000000000000000000000000000000AD +S315E070DD20000000000000000000000000000000009D +S315E070DD30000000000000000000000000000000008D +S315E070DD40000000000000000000000000000000007D +S315E070DD50000000000000000000000000000000006D +S315E070DD60000000000000000000000000000000005D +S315E070DD70000000000000000000000000000000004D +S315E070DD80000000000000000000000000000000003D +S315E070DD90000000000000000000000000000000002D +S315E070DDA0000000000000000000000000000000001D +S315E070DDB0000000000000000000000000000000000D +S315E070DDC000000000000000000000000000000000FD +S315E070DDD000000000000000000000000000000000ED +S315E070DDE000000000000000000000000000000000DD +S315E070DDF000000000000000000000000000000000CD +S315E070DE0000000000000000000000000000000000BC +S315E070DE1000000000000000000000000000000000AC +S315E070DE20000000000000000040000000000000005C +S315E070DE30000000000000000000000000000000008C +S315E070DE40000000000000000000000000000000007C +S315E070DE50000000000000000000000000000000006C +S315E070DE60000000000000000000000000000000005C +S315E070DE7000000000000000000000000000692C00B7 +S315E070DE80000000000000000000000000000000003C +S315E070DE90000000000000000000000000000000002C +S315E070DEA0000000000000000000000000000000001C +S315E070DEB0000000000000000000000000000000000C +S315E070DEC000000000000000000000000000000000FC +S315E070DED000000000000000000000000000000000EC +S315E070DEE000000000000000000000000000000000DC +S315E070DEF000000000000000000000000000000000CC +S315E070DF0000000000000000000000000000000000BB +S315E070DF1000000000000000000000000000000000AB +S315E070DF20000000000000000000000000000000009B +S315E070DF30000000000000000000000000000000008B +S315E070DF40000000000000000000000000000000007B +S315E070DF50000000000000000000000000000000006B +S315E070DF60000000000000000000000000000000005B +S315E070DF70000000000000000000000000000000004B +S315E070DF80000000000000000000000000000000003B +S315E070DF90000000000000000000000000000000002B +S315E070DFA0000000000000000000000000000000001B +S315E070DFB000000000000000004000000000000000CB +S315E070DFC000000000000000000000000000000000FB +S315E070DFD000004000000000000000000000000000AB +S315E070DFE000000000000000000000000000000000DB +S315E070DFF00000000000000BB9000080800000000007 +S315E070E00000000000000000000000000000000000BA +S315E070E01000000000000000000000000000000000AA +S315E070E020000000000000000000000000000000009A +S315E070E030000000000000000000000000000000008A +S315E070E040000000000000000000000000000000007A +S315E070E050000000000000000000000000000000006A +S315E070E060000000000000000000000000000000005A +S315E070E070000000000000000000000000000000004A +S315E070E080000000000000000000000000000000003A +S315E070E090000000000000000000000000000000002A +S315E070E0A0000000000000000000000000000000001A +S315E070E0B0000000000000000000000000000000000A +S315E070E0C000000000000000000000000000000000FA +S315E070E0D000000000000000000000000000000000EA +S315E070E0E000000000000000000000000000000000DA +S315E070E0F000000000000000000000000000000000CA +S315E070E10000000000000000000000000000000000B9 +S315E070E11000000000004000004000000040000000E9 +S315E070E12040000000400000000000400000000000D9 +S315E070E1300000000000000000000000000000400049 +S315E070E1400000000040000000000000000000000039 +S315E070E15000004000000000400000000000000000E9 +S315E070E160000000000000000000000000010100A8AF +S315E070E170F400000000000000000000000000000055 +S315E070E1800000000000000000000000000000000039 +S315E070E1900000000000000000000000000000000029 +S315E070E1A00000000000000000000000000000000019 +S315E070E1B00000000000000000000000000000000009 +S315E070E1C000000000000000000000000000000000F9 +S315E070E1D000000000000000000000000000000000E9 +S315E070E1E000000000000000000000000000000000D9 +S315E070E1F000000000000000000000000000000000C9 +S315E070E20000000000000000000000000000000000B8 +S315E070E21000000000000000000000000000000000A8 +S315E070E2200000000000000000000000000000000098 +S315E070E2300000000000000000000000000000000088 +S315E070E2400000000000000000000000000000000078 +S315E070E2500000000000000000000000000000000068 +S315E070E2600000000000000000000000000000000058 +S315E070E2700000000000000000000000000000000048 +S315E070E28000000000000000000000000000000040F8 +S315E070E29000000000400000004000000000000000A8 +S315E070E2A00000004000000000000000400000000098 +S315E070E2B04000000000004000000000400040000008 +S315E070E2C000004000004000400000004000000000F8 +S315E070E2D000400000000000000000000000000000A8 +S315E070E2E000000000000000005C7700800000000085 +S315E070E2F000000000000000000000000000000000C8 +S315E070E30000000000000000000000000000000000B7 +S315E070E31000000000000000000000000000000000A7 +S315E070E3200000000000000000000000000000000097 +S315E070E3300000000000000000000000000000000087 +S315E070E3400000000000000000000000000000000077 +S315E070E3500000000000000000000000000000000067 +S315E070E3600000000000000000000000000000000057 +S315E070E3700000000000000000000000000000000047 +S315E070E3800000000000000000000000000000000037 +S315E070E3900000000000000000000000000000000027 +S315E070E3A00000000000000000000000000000000017 +S315E070E3B00000000000000000000000000000000007 +S315E070E3C000000000000000000000000000000000F7 +S315E070E3D000000000000000000000000000000000E7 +S315E070E3E000000000000000000000000000000000D7 +S315E070E3F000000000000000000000000000000000C7 +S315E070E40000000000004000000040000040400000B6 +S315E070E4100040000000400000000000000000000026 +S315E070E4204000000000400000000000000000404096 +S315E070E4300000000000000000000040000000000046 +S315E070E44000004040000000400000000000000000B6 +S315E070E4500000000000000000000000000000000066 +S315E070E46000A0540000000000000000000000000062 +S315E070E4700000000000000000000000000000000046 +S315E070E4800000000000000000000000000000000036 +S315E070E4900000000000000000000000000000000026 +S315E070E4A00000000000000000000000000000000016 +S315E070E4B00000000000000000000000000000000006 +S315E070E4C000000000000000000000000000000000F6 +S315E070E4D000000000000000000000000000000000E6 +S315E070E4E000000000000000000000000000000000D6 +S315E070E4F000000000000000000000000000000000C6 +S315E070E50000000000000000000000000000000000B5 +S315E070E51000000000000000000000000000000000A5 +S315E070E5200000000000000000000000000000000095 +S315E070E5300000000000000000000000000000000085 +S315E070E5400000000000000000000000000000000075 +S315E070E5500000000000000000000000000000000065 +S315E070E5600000000000000000000000000000000055 +S315E070E5700000000000000000000000000000000045 +S315E070E5800040400000000000004040000000000035 +S315E070E5900000000000000000000000000000000025 +S315E070E5A000000000000000400000000000000000D5 +S315E070E5B00000000000000000400000000000004085 +S315E070E5C040000000000000000000000100000000B4 +S315E070E5D0000000000000000000008B5D00000000FD +S315E070E5E0000000000004002000000400200000008D +S315E070E5F00000000000000000000000010000004084 +S315E070E6000100000040000000000000000000000073 +S315E070E6100000000200100080020010008000000080 +S315E070E6200000000000000000000000040020000070 +S315E070E6300400200000000000000000000000000060 +S315E070E64000010000004001000000400000000000F2 +S315E070E65000000000000000000002001000800200D0 +S315E070E66010008000000000000000000000000000C4 +S315E070E67000040020000004002000000000000000FC +S315E070E68000000000000000010000004001000000F2 +S315E070E69040000000000000000000000000000002E2 +S315E070E6A000100080020010008000000000000000F2 +S315E070E6B000000000000000040020000004002000BC +S315E070E6C000000000000000000000000000010000F3 +S315E070E6D00040010000004000000000000000000063 +S315E070E6E000000000000200100080020010008000B0 +S315E070E6F000000000000000000040404040040020A0 +S315E070E70000404440600000000040404000000000CF +S315E070E7100040404100000040010000004000000061 +S315E070E720000000000000004000000002001000C081 +S315E070E7300200100080000000004040000000000071 +S315E070E740000000040120000004002000000000002A +S315E070E750000000DEB3000000800000000000000052 +S315E070E76000000000000000000000000000800000D3 +S315E070E7700000000000000000000000000000000043 +S315E070E7800000000000000000000000000000000033 +S315E070E7900000000000000000000000000000000023 +S315E070E7A00000000000000000000000000000000013 +S315E070E7B00000000000000000000000000000000003 +S315E070E7C000000000000000000000000000000000F3 +S315E070E7D000000000000000000000000000000000E3 +S315E070E7E000000000000000000000000000000000D3 +S315E070E7F000000000000000000000000000000000C3 +S315E070E80000000000000000000000000000000000B2 +S315E070E81000000000000000000000000000000000A2 +S315E070E8200000000000000000000000000000000092 +S315E070E8300000000000000000000000000000000082 +S315E070E8400000000000000000000000000000000072 +S315E070E8500000000000000000000000000000000062 +S315E070E8600000000000000000000000000000000052 +S315E070E8700000404040400000000040404040000042 +S315E070E8800000404000400000000000000040000032 +S315E070E89000000000000000004040000000000000A2 +S315E070E8A00040404000000000004040400000000092 +S315E070E8B00000404000000001010000000000000080 +S315E070E8C00000000000000000000100004794008096 +S315E070E8D000000000000000000000000000000000E2 +S315E070E8E000000000000000000000000000000000D2 +S315E070E8F000000000000000000000000000000000C2 +S315E070E90000000000000000000000000000000000B1 +S315E070E91000000000000000000000000000000000A1 +S315E070E9200000000000000000000000000000000091 +S315E070E9300000000000000000000000000000000081 +S315E070E9400000000000000000000000000000000071 +S315E070E9500000000000000000000000000000000061 +S315E070E9600000000000000000000000000000000051 +S315E070E9700000000000000000000000000000000041 +S315E070E9800000000000000000000000000000000031 +S315E070E9900000000000000000000000000000000021 +S315E070E9A00000000000000000000000000000000011 +S315E070E9B00000000000000000000000000000000001 +S315E070E9C000000000000000000000000000000000F1 +S315E070E9D000000000000000000000000000000000E1 +S315E070E9E000000000000000000000004040404000D1 +S315E070E9F00000004040404000000000000000400081 +S315E070EA000000000000004000000000000000000070 +S315E070EA100000004040000000000040404000000060 +S315E070EA2000004000000000000000004040000000D0 +S315E070EA300000000000000000000000000000000080 +S315E070EA400000000000915900000000000000000086 +S315E070EA500000000000000000000000000000000060 +S315E070EA600000000000000000000000000000000050 +S315E070EA700000000000000000000000000000000040 +S315E070EA800000000000000000000000000000000030 +S315E070EA900000000000000000000000000000000020 +S315E070EAA00000000000000000000000000000000010 +S315E070EAB00000000000000000000000000000000000 +S315E070EAC000000000000000000000000000000000F0 +S315E070EAD000000000000000000000000000000000E0 +S315E070EAE000000000000000000000000000000000D0 +S315E070EAF000000000000000000000000000000000C0 +S315E070EB0000000000000000000000000000000000AF +S315E070EB10000000000000000000000000000000009F +S315E070EB20000000000000000000000000000000008F +S315E070EB30000000000000000000000000000000007F +S315E070EB40000000000000000000000000000000006F +S315E070EB50000000000000000000000000000000005F +S315E070EB60000000004040404000000000404040404F +S315E070EB70000000000000400000000000404040003F +S315E070EB80000000000000000000004040404000002F +S315E070EB90000040000000000000004000404000001F +S315E070EBA0000000004040000000000000000000008F +S315E070EBB0000000000000000000000000000047F5C3 +S315E070EBC000000000000000000000000000000000EF +S315E070EBD000000000000000000000000000000000DF +S315E070EBE000000000000000000000000000000000CF +S315E070EBF000000000000000000000000000000000BF +S315E070EC0000000000000000000000000000000000AE +S315E070EC10000000000000000000000000000000009E +S315E070EC20000000000000000000000000000000008E +S315E070EC30000000000000000000000000000000007E +S315E070EC40000000000000000000000000000000006E +S315E070EC50000000000000000000000000000000005E +S315E070EC60000000000000000000000000000000004E +S315E070EC70000000000000000000000000000000003E +S315E070EC80000000000000000000000000000000002E +S315E070EC90000000000000000000000000000000001E +S315E070ECA0000000000000000000000000000000000E +S315E070ECB000000000000000000000000000000000FE +S315E070ECC000000000000000000000000000000000EE +S315E070ECD0000000000000000000000000004000405E +S315E070ECE040000000004040000000000000000040CE +S315E070ECF0000000000000004000000000000000007E +S315E070ED00000000404040400000000000004040002D +S315E070ED1000000000004040000000000000004000DD +S315E070ED20000000000000000000000000000000008D +S315E070ED3000000000000000A2620000000000000079 +S315E070ED40000000000000000000000000000000006D +S315E070ED50000000000000000000000000000000005D +S315E070ED60000000000000000000000000000000004D +S315E070ED70000000000000000000000000000000003D +S315E070ED80000000000000000000000000000000002D +S315E070ED90000000000000000000000000000000001D +S315E070EDA0000000000000000000000000000000000D +S315E070EDB000000000000000000000000000000000FD +S315E070EDC000000000000000000000000000000000ED +S315E070EDD000000000000000000000000000000000DD +S315E070EDE000000000000000000000000000000000CD +S315E070EDF000000000000000000000000000000000BD +S315E070EE0000000000000000000000000000000000AC +S315E070EE10000000000000000000000000000000009C +S315E070EE20000000000000000000000000000000008C +S315E070EE30000000000000000000000000000000007C +S315E070EE40000000000000000000000000000000006C +S315E070EE50000000000000004000000000000040409C +S315E070EE60000000000000000000400000000000000C +S315E070EE70004000000000000000000000000040407C +S315E070EE80000000000000000000000000000000002C +S315E070EE9000000000000040000000000000000000DC +S315E070EEA0000000000000000000000000000000000C +S315E070EEB026160000000000000000000000000000C0 +S315E070EEC000000000000000000000000000000000EC +S315E070EED000000000000000000000000000000000DC +S315E070EEE000000000000000000000000000000000CC +S315E070EEF000000000000000000000000000000000BC +S315E070EF0000000000000000000000000000000000AB +S315E070EF10000000000000000000000000000000009B +S315E070EF20000000000000000000000000000000008B +S315E070EF30000000000000000000000000000000007B +S315E070EF40000000000000000000000000000000006B +S315E070EF50000000000000000000000000000000005B +S315E070EF60000000000000000000000000000000004B +S315E070EF70000000000000000000000000000000003B +S315E070EF80000000000000000000000000000000002B +S315E070EF90000000000000000000000000000000001B +S315E070EFA0000000000000000000000000000000000B +S315E070EFB000000000000000000000000000000000FB +S315E070EFC000000000000000000000000000000040AB +S315E070EFD0004040000000000000404000000000409B +S315E070EFE0404040000000004040404000000000000B +S315E070EFF0004000000040400000000000000040407B +S315E070F000400000000000404040000000004040002A +S315E070F010400000000000000000000000000000005A +S315E070F02000000000000000000001EE00000000009B +S315E070F0300000000000000004002000000000000056 +S315E070F0400000000000000000000000000001000069 +S315E070F050004000000000000000000000000000001A +S315E070F06000000000000200100080000000000000B8 +S315E070F0700000000000000000000000000004002016 +S315E070F080000000000000000000000000000000002A +S315E070F09000000001000000400000000000000000D9 +S315E070F0A00000000000000000000000020010008078 +S315E070F0B000000000000000000000000000000000FA +S315E070F0C000000004002000000000000000000000C6 +S315E070F0D00000000000000000000100000040000099 +S315E070F0E000000000000000000000000000000000CA +S315E070F0F00002001000800000000000000000000028 +S315E070F1000000000000000000000400200000000085 +S315E070F1100000000000000000000000000000000198 +S315E070F1200000004000000000000000000000000049 +S315E070F13000000000000000020010008000000000E7 +S315E070F1400000000000000000004000000000000425 +S315E070F15000204040000000004040404000000000B9 +S315E070F1600000404000010000004040000000000048 +S315E070F1700000000000004000404000000002401027 +S315E070F18000800000000040404000000000000000E9 +S315E070F19000000000000400200000000000000000F5 +S315E070F1A000002F68000000000000000000800000F2 +S315E070F1B004002000000000000000000000000000D5 +S315E070F1C000000000000001000000400000000000A8 +S315E070F1D000000000000000000000000000000200D7 +S315E070F1E01000800000000000000000000000000039 +S315E070F1F00000000000000400200000000000000095 +S315E070F20000000000000000000000000001000000A7 +S315E070F2104000000000000000000000000000000058 +S315E070F22000000000020010008000000000000000F6 +S315E070F2300000000000000000000000000400200054 +S315E070F2400000000000000000000000000000000068 +S315E070F2500000010000004000000000000000000017 +S315E070F26000000000000000000000020010008000B6 +S315E070F2700000000000000000000000000000000038 +S315E070F2800000040020000000000000000000000004 +S315E070F29000000000000000000100000040000000D7 +S315E070F2A00000000000000000000000000000000008 +S315E070F2B00200100080000000000000000000000066 +S315E070F2C00000004000000000040020400000000044 +S315E070F2D000000000000000000000000000000100D7 +S315E070F2E00000400000000000000000000000000088 +S315E070F2F00000000000000200100080000000000026 +S315E070F3000000400000000000000000000000040063 +S315E070F310200000010000000000000074D100000031 +S315E070F3200000000000000000000400200000000063 +S315E070F3300000000000000000000000000000000176 +S315E070F3400000004000000000000000000000000027 +S315E070F35000000000000000020010008000000000C5 +S315E070F3600000000000000000000000000000000443 +S315E070F3700020000000000000000000000000000017 +S315E070F38000000000000100000040000000000000E6 +S315E070F3900000000000000000000000000002001005 +S315E070F3A00080000000000000000000000000000087 +S315E070F3B000000000000400200000000000000000D3 +S315E070F3C000000000000000000000000100000040A6 +S315E070F3D000000000000000000000000000000000D7 +S315E070F3E00000000200100080000000000000000035 +S315E070F3F00000000000000000000000040020000093 +S315E070F40000000000000000000000000000000000A6 +S315E070F4100001000000400000000000000000000055 +S315E070F42000000000000000000002001000800000F4 +S315E070F4300000000000000000000000400000000036 +S315E070F4400004006000000000000000404000000082 +S315E070F45000000040400000010000000000000000D5 +S315E070F4600000000000000000000000000000000244 +S315E070F4700010008000000000004000000000000066 +S315E070F4800000000000000004002000000000000002 +S315E070F490000000007595000083831414606000001E +S315E070F4A0030310144060000007073030404000004E +S315E070F4B007073030C0C000000607303080C0010159 +S315E070F4C0060670708080010106067070808001010A +S315E070F4D004066070008003031414E0E00000030388 +S315E070F4E01414E0E0000003031014C0E00000070706 +S315E070F4F03030C0C0000007073030C0C000000607DB +S315E070F500303080C001010606707080800101060609 +S315E070F510707080800101040660700080030314142B +S315E070F520E0E0000003031414E0E0000003031014AD +S315E070F530C0E0000007073030C0C000000707303079 +S315E070F540C0C000000607303080C00101060670704A +S315E070F550808001010606707080800101040660708B +S315E070F560008003031414E0E0000003031414E0E0E9 +S315E070F570000003031014C0E0000007073030C0C07D +S315E070F580000007073030C0C000000607303080C08A +S315E070F5900101060670708080010106067070808039 +S315E070F5A0010104066070008003031414E0E00000BB +S315E070F5B003031414E0E0000003031014C0E000003D +S315E070F5C007073030C0C0000007073030C0C0000009 +S315E070F5D00607303080C00101060670708080010138 +S315E070F5E00606707080800101040660700080030377 +S315E070F5F01414E0E0000002021C1CE0E000000202CD +S315E070F600181CC0E0000006063838C1C100BD3800DD +S315E070F6100000000000000000000000000000000094 +S315E070F6200000800000000000000000000000000004 +S315E070F6300000000000000000000000000000000074 +S315E070F6400000000000000000000000000000000064 +S315E070F6500000000000000000000000000000000054 +S315E070F6600000000000000000000000000000000044 +S315E070F6700000000000000000000000000000000034 +S315E070F6800000000000000000000000000000000024 +S315E070F6900000000000000000000000000000000014 +S315E070F6A00000000000000000000000000000000004 +S315E070F6B000000000000000000000000000000000F4 +S315E070F6C000000000000000000000000000000000E4 +S315E070F6D000000000000000000000000000000000D4 +S315E070F6E000000000000000000000000000000000C4 +S315E070F6F000000000000000000000000000000000B4 +S315E070F70000000000000000000000000000000000A3 +S315E070F7100000000000000000000000000000000093 +S315E070F7200000000000000000000000000000000083 +S315E070F7300000000000000000000000000000000073 +S315E070F7400000000000000000000000000000000063 +S315E070F75000000000400000404000004040000040D3 +S315E070F7604000004040000040000000000000000043 +S315E070F7700000000000000000000000000000000033 +S315E070F780000000000000D39600800000000000003A +S315E070F7900000000000000000000000000000000013 +S315E070F7A00000000000000000000000000000000003 +S315E070F7B000000000000000000000000000000000F3 +S315E070F7C000000000000000004000000000000000A3 +S315E070F7D000000000000200000000100000000000C1 +S315E070F7E08000000000000000000000000000000043 +S315E070F7F000000000000000000000000000000000B3 +S315E070F80000000000000000000000000000000000A2 +S315E070F8100000000000000000000000000000000092 +S315E070F8200000000000000000000000000000000082 +S315E070F830000000040000000020000000000000004E +S315E070F8400000000000000000000000000000000062 +S315E070F8500000000000000000000200000000000050 +S315E070F8600000000000000000000000000000000042 +S315E070F8700000000000000000000000000000000032 +S315E070F8800000000000000000000000000000000022 +S315E070F8900000000000000000000000000000000012 +S315E070F8A000000000000000000000004000000000C2 +S315E070F8B000000000000000000000000000000000F2 +S315E070F8C000000000001000000000000000000000D2 +S315E070F8D000000000000000000000000000000000D2 +S315E070F8E000000000010000000000000000000000C1 +S315E070F8F00000000000000000000000000000008A28 +S315E070F900DE00000000000000000000008000000043 +S315E070F9100000000000000000000000000000000091 +S315E070F9200000000000000000000000000000000081 +S315E070F9300000000000000000000000000000000071 +S315E070F9400000000000000000000000000000000061 +S315E070F9500000000000000000000000000000000051 +S315E070F9600000000000000000000000000000000041 +S315E070F9700000000000000000000000000000000031 +S315E070F9800000000000000000000000000000000021 +S315E070F9900000000000000000000000000000000011 +S315E070F9A00000000000000000000000000000000001 +S315E070F9B000000000000000000000000000000000F1 +S315E070F9C000000000000000000000000000000000E1 +S315E070F9D000000000000000000000000000000000D1 +S315E070F9E000000000000000000000000000000000C1 +S315E070F9F000000000000000000000000000000000B1 +S315E070FA0000000000000000000000000000000000A0 +S315E070FA100000000000000000000000000000000090 +S315E070FA200000000000000000000000000000000080 +S315E070FA300000000000000000000000000000000070 +S315E070FA400000000000000000000000000000000060 +S315E070FA500000000000000000000000000000000050 +S315E070FA60000000000000000000000000000100003F +S315E070FA70000100000000000060940000000000003B +S315E070FA8000000000008000000000000000000000A0 +S315E070FA900000000000000000000000000000000010 +S315E070FAA000004000000000000000000000000000C0 +S315E070FAB0000200000000000010008000000000005E +S315E070FAC000000000000000000000000000000000E0 +S315E070FAD000000000000000000000000000000000D0 +S315E070FAE000000000000000000000000000000000C0 +S315E070FAF000000000000000000000000000000000B0 +S315E070FB00000000000000000000000000000000049B +S315E070FB10000000000000200000000000000000006F +S315E070FB20000000000000000000000000000000007F +S315E070FB30000000000000000000000000000200006D +S315E070FB40000000000000000000000000000000005F +S315E070FB50000000000000000000000000000000004F +S315E070FB60000000000000000000000000000000003F +S315E070FB70000000000000000000000000000000002F +S315E070FB80000000000000000000000000000000001F +S315E070FB90000000000000000000000000000000000F +S315E070FBA000000000000000000000000000000000FF +S315E070FBB000000000000001000000000000000000EE +S315E070FBC000000000000000000000000000000000DF +S315E070FBD000000000000000000000000000000000CF +S315E070FBE000000000000100000001000000000000BD +S315E070FBF0008550000000800000000000000000005A +S315E070FC00000000000000000000000000000000009E +S315E070FC10000000000000000000000000000000008E +S315E070FC20000000000000000000000000000000007E +S315E070FC30000000000000000000000000000000006E +S315E070FC40000000000000000000000000000000005E +S315E070FC50000000000000000000000000000000004E +S315E070FC60000000000000000000000000000000003E +S315E070FC70000000000000000000000000000000002E +S315E070FC80000000000000000000000000000000001E +S315E070FC90000000000000000000000000000000000E +S315E070FCA000000000000000000000000000000000FE +S315E070FCB000000000000000000000000000000000EE +S315E070FCC000000000000000000000000000000000DE +S315E070FCD000000000000000000000000000000000CE +S315E070FCE000000000000000000000000000000000BE +S315E070FCF000000000000000000000000000000000AE +S315E070FD00000000000000000000000000000000009D +S315E070FD10000000000000000000000000000000008D +S315E070FD20000000000000000000000000000000007D +S315E070FD30000000400000000000000000000000002D +S315E070FD40000000000000000000100000000000004D +S315E070FD50000000000000000000000000000000004D +S315E070FD600000000000000000000023E400800000B6 +S315E070FD70000000000000000000000000000000002D +S315E070FD80000000000000000000000000000000001D +S315E070FD90000000000000000000000000000000000D +S315E070FDA000000000000000000000000000000000FD +S315E070FDB000000000000000000000000000000000ED +S315E070FDC000000000000000000000000000000000DD +S315E070FDD000000000000000000000000000000000CD +S315E070FDE000000000000000000000000000000000BD +S315E070FDF0000000000000000000000080000000002D +S315E070FE00000000000000000000000000000000009C +S315E070FE10000000000000000000000000000000008C +S315E070FE20000000000000000000000000000000007C +S315E070FE30000000000000000000000000000000006C +S315E070FE40000000000000000000000000000000005C +S315E070FE50000000000000000000000000000000004C +S315E070FE60000000000000000000000000000000003C +S315E070FE70000000000000000000000000000000002C +S315E070FE80000000000000000000000000000000001C +S315E070FE90000000000000000000000000000000000C +S315E070FEA000000000000000000000000000000000FC +S315E070FEB000000000000000400000000000000000AC +S315E070FEC000000000000000000000000000000000DC +S315E070FED000000000000000000000000000000000CC +S315E070FEE00000001A42000000000000000000000060 +S315E070FEF000000000000000000000000000000000AC +S315E070FF00000000000000000000000000000000009B +S315E070FF10000000000000000000000000000000008B +S315E070FF20000000000000000000000000000000007B +S315E070FF30000000000000000000000000000000006B +S315E070FF4000000000000000000000008000000000DB +S315E070FF50000000008000000000800000000000004B +S315E070FF60000000000000000000000000000000003B +S315E070FF7000008000000000000000000000000000AB +S315E070FF80000000000000000000000000000000001B +S315E070FF90000000000000000000000000000000000B +S315E070FFA000000000000000000000000000000000FB +S315E070FFB000000000000000000000000000000000EB +S315E070FFC000000000000000000000000000000000DB +S315E070FFD000000000000000000000000000000000CB +S315E070FFE000000000000000000000000000000000BB +S315E070FFF000000000000000000000000000000000AB +S315E07100000000000000000000000000000000400059 +S315E07100100000000000000000000000000000000089 +S315E07100200000000000000000000000000000000079 +S315E07100300000000000000000000000000000000069 +S315E07100400000000000000000000000000000000059 +S315E07100500000000000000000000000002702000020 +S315E07100600000000000000000000000000000000039 +S315E07100700000000000000000000000000000000029 +S315E07100800000000000000000000000000000000019 +S315E07100900000000000000000000000000000000009 +S315E07100A000000000000000000000000000000000F9 +S315E07100B000000000000000000000000000000000E9 +S315E07100C000000080000000000000000000800000D9 +S315E07100D000000000000000000000000000000000C9 +S315E07100E00080000000000000000000008080000039 +S315E07100F000000000000000000000000000000000A9 +S315E07101000000000000000000000000000000000098 +S315E07101100000000000000000000000000000000088 +S315E07101200000000000000000000000000000000078 +S315E07101300000000000000000000000000000000068 +S315E07101400000000000000000000000000000000058 +S315E07101500000000000000000000000000000000048 +S315E07101600000000000000000000000000000000038 +S315E07101700000000000000000000000000000000028 +S315E071018000000000000000400000000000000000D8 +S315E071019000000000000000000000000040000000C8 +S315E07101A000000000000000000040000000000000B8 +S315E07101B000000000000000000000000000000000E8 +S315E07101C000000000000000000000000000000000D8 +S315E07101D00000010000ADE800000000000000000032 +S315E07101E000000000000000000000000000000000B8 +S315E07101F000000000000000000000000000000000A8 +S315E07102000000000000000000000000000000000097 +S315E07102100000000000000000000000000000000087 +S315E07102200000000000000000000000000000000077 +S315E07102300000000000000000000000000000000067 +S315E071024000000000000000000000100000000080C7 +S315E07102500000000000000000000000000000000047 +S315E07102600000000000000000000000000000000037 +S315E071027000000000000000000000000000000080A7 +S315E07102800000000000000000000000000000000017 +S315E07102900000000000000000000000000000000007 +S315E07102A000000000000000000020000000000000D7 +S315E07102B000000000000000000000000000000000E7 +S315E07102C000000000000000000000000000000000D7 +S315E07102D000000000000000000000000000000000C7 +S315E07102E000000000000000000000000000000000B7 +S315E07102F000010000000000000000000000000000A6 +S315E07103000000000000000000000000000000000096 +S315E07103100000000000000000000000000000000086 +S315E07103200000000000000000000000000000000076 +S315E07103300000000100000000000000000000000065 +S315E071034000000000000000000000000000004C38D2 +S315E071035000000000000000000080000000000000C6 +S315E07103600000000000000000000000000000000036 +S315E07103700000000000000000000000000000000026 +S315E07103800000000000000000000000000000000016 +S315E07103900000000000000000000000000000000006 +S315E07103A000000000000000000000000000000000F6 +S315E07103B000000000000000000000000000000000E6 +S315E07103C00000001000000080000000000000000046 +S315E07103D08000000000000000000000000000000046 +S315E07103E000000000000000000000000000000000B6 +S315E07103F000000000000000000000000000000000A6 +S315E07104000000000000000000000000000000000095 +S315E07104100000000000000000000000000000000085 +S315E07104200000000000000000000000000000000075 +S315E07104300000000000000000000000000000000065 +S315E07104400000000000000000000000000000000055 +S315E07104500000000000000000000000000000000045 +S315E07104600000000000000000000100000000000034 +S315E07104700000000000000000000000000000000025 +S315E07104800000000000000000000000000000000015 +S315E07104900000000000000000000000000000000005 +S315E07104A000000000000000000000000000000000F5 +S315E07104B000000000000000000000000000000000E5 +S315E07104C00000000000010059D400000000000000A7 +S315E07104D000000000000000000000000000000000C5 +S315E07104E000000000000000000000000000000000B5 +S315E07104F000000000000000000000000000000000A5 +S315E07105000000000000000000000000000000000094 +S315E07105100000000000000000000000000000000084 +S315E07105200000000000000000000000000000000074 +S315E07105300000000000000000000000000000000064 +S315E07105400000000000000000000000000000000054 +S315E07105500000000000000000000000000000000044 +S315E07105600000000000000000000000000000000034 +S315E07105700000000000000000000000000000000024 +S315E07105800000000000000000000000000000000014 +S315E07105900000000000000000000000000000000004 +S315E07105A000000000000000000000000000000000F4 +S315E07105B000000000000000000000000000000000E4 +S315E07105C000000000000000000000000000000000D4 +S315E07105D000000000000000000000000000000000C4 +S315E07105E000000000000000000000000000000000B4 +S315E07105F00000000000000000000040000000000064 +S315E07106000000000000000000000000000000000093 +S315E07106100000000000000000000000000000000083 +S315E07106200000000000000000000000000000000073 +S315E07106300000000000000000000000000000000063 +S315E07106407CDD0000000000000000000000000000FA +S315E07106500000000000000000000000000000000043 +S315E07106600000000000000000000000000000000033 +S315E07106700000000000000000000000000000000023 +S315E07106800000000000000000000000000000000013 +S315E07106900000000000000000000000000000000003 +S315E07106A000000000000000000000000000000000F3 +S315E07106B000000000000000000000000000000000E3 +S315E07106C000000000000000000000000000000000D3 +S315E07106D000000000000000000000000000000000C3 +S315E07106E00000000000000000008000000000000033 +S315E07106F000000000000000000000000000000000A3 +S315E07107000000000000000000000000000000000092 +S315E07107100000002000000000000000000000000062 +S315E07107200000000000000000000000000000000072 +S315E07107300000000000000000000000000000000062 +S315E07107400000000000000000000000000000000052 +S315E07107500000000000000000000000000000000042 +S315E07107600000000000000000000000000000000032 +S315E07107700000000000000000000000000000000022 +S315E07107800000000000000000000000000000000012 +S315E07107900000000000000000000000000001000001 +S315E07107A000000000000000000000000000000000F2 +S315E07107B0000000000000000000B9B8000000000071 +S315E07107C000000000000000000000000000000000D2 +S315E07107D000000000000000000000000000000000C2 +S315E07107E000000000000000000000000000000000B2 +S315E07107F000000000000000000000000000000000A2 +S315E07108000000000000000000000000000000000091 +S315E07108100000000000000000000000000000000081 +S315E07108200000000000000000008000800000000071 +S315E07108300000000000000000000000000000000061 +S315E07108400000000000000000000000000000000051 +S315E07108500000000000000000000000000000000041 +S315E07108600000000000000000000000000000000031 +S315E07108700000000000000000000000000000000021 +S315E07108800000000000000000000000000000000011 +S315E07108900000000000000000000000000000000001 +S315E07108A000000000000000000000000000000000F1 +S315E07108B000000000000000000000000000000000E1 +S315E07108C000000000000000000000000000000000D1 +S315E07108D000000000000000000000000000000000C1 +S315E07108E00000004000000000000000000000000071 +S315E07108F000000000000000000000000000000000A1 +S315E07109000000000000000000000000000000000090 +S315E07109100000000000000000000000000000000080 +S315E07109200000000000000000000000000000000070 +S315E0710930000047FE0000808000000000000000001B +S315E071094000000000000080000000000000000000D0 +S315E07109500000000000000000000000000000000040 +S315E07109600000000000000000000000000000000030 +S315E07109700000000000000000000000000000000020 +S315E07109800000000000000000000000000000000010 +S315E07109900000000000000000000000000000000000 +S315E07109A000000000000000000000000000000000F0 +S315E07109B000000000000000000000000000000000E0 +S315E07109C000000000000000000000000000000000D0 +S315E07109D000000000000000000000000000000000C0 +S315E07109E000000000000000000000000000000000B0 +S315E07109F000000000000000000000000000000000A0 +S315E0710A00000000000000000000000000000000008F +S315E0710A10000000000000000000000000000000007F +S315E0710A20000000000000000000000000000000006F +S315E0710A30000000000000000000000000000000005F +S315E0710A40000000000000000000000000000000004F +S315E0710A50000000000000000000000000000000003F +S315E0710A60000000000000000000000000000000002F +S315E0710A70000000000000000000000000000000001F +S315E0710A80000000000000000000000000000000000F +S315E0710A9000000000000001000000000000000001FD +S315E0710AA00000000000000000010100EB850000007D +S315E0710AB000000000000000000000000000000000DF +S315E0710AC000000000000000000000000000000000CF +S315E0710AD000000000000000000000000000000000BF +S315E0710AE000000000000000000000000000000000AF +S315E0710AF0000000000000000000000000000000009F +S315E0710B00000000000000000000000000000000008E +S315E0710B10000000000000000000000000000000007E +S315E0710B20000000000000000000000000000000006E +S315E0710B30000000000000000000000000000000005E +S315E0710B40000000000000000000000000000000004E +S315E0710B50000000000000000000000000000000003E +S315E0710B60000000000000000000000000000000002E +S315E0710B70000000000000000000000000000000001E +S315E0710B80000000000000000000000000000000000E +S315E0710B9000000000000000000000000000000000FE +S315E0710BA000000000000000000000000000000000EE +S315E0710BB000000000000000000000000000000000DE +S315E0710BC000000000000000000000000000000000CE +S315E0710BD000000000000000000000000000000000BE +S315E0710BE000000000000000000000000000000000AE +S315E0710BF0000000000000000000000000000000009E +S315E0710C00000000000000000000000000000000008D +S315E0710C10000000000000000000000000000000007D +S315E0710C20000000003E4900000000000000000000E6 +S315E0710C30000000000000000000000000000000005D +S315E0710C40000000000000000000000000000000004D +S315E0710C50000000000000000000000000000000003D +S315E0710C60000000000000000000000000000000002D +S315E0710C70000000000000000000000000000000001D +S315E0710C80000000000000000000000000000000000D +S315E0710C9000000000000000000000000000000000FD +S315E0710CA000000000000000000000000000000000ED +S315E0710CB000000000000000000000000000000000DD +S315E0710CC000000000000000000000000000000000CD +S315E0710CD000000000000000000000000000000000BD +S315E0710CE000000000000000000000000000000000AD +S315E0710CF0000000000000000000000000000000009D +S315E0710D00000000000000000000000000000000008C +S315E0710D10000000000000000000000000000000007C +S315E0710D20000000000000000000000000000000006C +S315E0710D30000000000000000000000000000000005C +S315E0710D40000000000000000000000000000000004C +S315E0710D50000000000000000000000000000000003C +S315E0710D60000000000000000000000000000000002C +S315E0710D70000000000000000000000000000000001C +S315E0710D80000000000000000000000000000000000C +S315E0710D90000000000000000000000000003E490075 +S315E0710DA000000000000000000000000000000000EC +S315E0710DB000000000000000000000000000000000DC +S315E0710DC000000000000000000000000000000000CC +S315E0710DD000000000000000000000000000000000BC +S315E0710DE000000000000000000000000000000000AC +S315E0710DF0000000000000000000000000000000009C +S315E0710E00000000000000000000000000000000008B +S315E0710E10000000000000000000000000000000007B +S315E0710E20000000000000000000000000000000006B +S315E0710E30000000000000000000000000000000005B +S315E0710E40000000000000000000000000000000004B +S315E0710E50000000000000000000000000000000003B +S315E0710E60000000000000000000000000000000002B +S315E0710E70000000000000000000000000000000001B +S315E0710E80000000000000000000000000000000000B +S315E0710E9000000000000000000000000000000000FB +S315E0710EA000000000000000000000000000000000EB +S315E0710EB000000000000000000000000000000000DB +S315E0710EC000000000000000000000000000000000CB +S315E0710ED000000000000000000000000000000000BB +S315E0710EE000000000000000000000000000000000AB +S315E0710EF0000000000000000000000000000000009B +S315E0710F00000000000000000000000000000000008A +S315E0710F100000000000003E490000000000000000F3 +S315E0710F20000000000000000000000000000000006A +S315E0710F30000000000000000000000000000000005A +S315E0710F40000000000000000000000000000000004A +S315E0710F50000000000000000000000000000000003A +S315E0710F60000000000000000000000000000000002A +S315E0710F70000000000000000000000000000000001A +S315E0710F80000000000000000000000000000000000A +S315E0710F9000000000000000000000000000000000FA +S315E0710FA000000000000000000000000000000000EA +S315E0710FB000000000000000000000000000000000DA +S315E0710FC000000000000000000000000000000000CA +S315E0710FD000000000000000000000000000000000BA +S315E0710FE000000000000000000000000000000000AA +S315E0710FF0000000000000000000000000000000009A +S315E07110000000000000000000000000000000000089 +S315E07110100000000000000000000000000000000079 +S315E07110200000000000000000000000000000000069 +S315E07110300000000000000000000000000000000059 +S315E07110400000000000000000000000000000000049 +S315E07110500000000000000000000000000000000039 +S315E07110600000000000000000000000000000000029 +S315E07110700000000000000000000000000000000019 +S315E07110800000000000000000000000000000003ECB +S315E071109049000000000000000000000000000000B0 +S315E07110A000000000000000000000000000000000E9 +S315E07110B000000000000000000000000000000000D9 +S315E07110C000000000000000000000000000000000C9 +S315E07110D000000000000000000000000000000000B9 +S315E07110E000000000000000000000000000000000A9 +S315E07110F00000000000000000000000000000000099 +S315E07111008000000000000000000000000000000008 +S315E07111100000000000000000000000000000000078 +S315E07111200000000000000000000000000000000068 +S315E07111300000000000000000000000000000000058 +S315E07111400000000000000000000000000000000048 +S315E07111500000000000000000000000000000000038 +S315E07111600000000000000000000000000000000028 +S315E07111700000000000000000000000000000000018 +S315E07111800000000000000000000000000000000008 +S315E071119000000000000000000000000000000000F8 +S315E07111A000000000000000000000000000000000E8 +S315E07111B000000000000000000000000000000000D8 +S315E07111C000000000000000000000000000000000C8 +S315E07111D000000000000000000000000000000000B8 +S315E07111E000000000000000000000000000000000A8 +S315E07111F00000000000000000000000000000000098 +S315E071120000000000000000005C310000800000007A +S315E07112100000000000000000000000000000000077 +S315E07112200000000000000000000000000000000067 +S315E07112300000000000000000000000000000000057 +S315E07112400000000000000000000000000000000047 +S315E07112500000000000000000000000000000000037 +S315E07112600000000000000000000000000000000027 +S315E07112700000000000000000000000000000000017 +S315E07112800000000000000000000000000000000007 +S315E071129000000000000000000000000000000000F7 +S315E07112A000000000000000000000000000000000E7 +S315E07112B000000000000000000000000000000000D7 +S315E07112C000000000000000000000000000000000C7 +S315E07112D000000000000000000000000000000000B7 +S315E07112E000000000000000000000000000000000A7 +S315E07112F00000000000000000000000000000000097 +S315E07113000000000000000000000000000000000086 +S315E07113100000000000000000000000000000000076 +S315E07113200000000000000000000000000000000066 +S315E07113300000000000000000000000000000000056 +S315E07113400000000000000000000000000000000046 +S315E07113500000000000000000000000000000000036 +S315E07113600000000000000000000000000000000026 +S315E07113700000000000000000000000000000000016 +S315E071138000BEAE000000000000000000000000009A +S315E071139000000000000000000000000000000000F6 +S315E07113A000000000000000000000000000000000E6 +S315E07113B000000000000000000000000000000000D6 +S315E07113C000000000000000000000000000000000C6 +S315E07113D000000000000000000000000000000000B6 +S315E07113E000000000000000000000000000000000A6 +S315E07113F00080000000000000000000000000000016 +S315E07114000000000000000000000000000000000085 +S315E07114100000000000000000000000000000000075 +S315E07114200000000000000000000000000000000065 +S315E07114300000000000000000000000000000000055 +S315E07114400000000000000000000000000000000045 +S315E07114500000000000000000000000000000000035 +S315E07114600000000000000000000000000000000025 +S315E07114700000000000000000000000000000000015 +S315E07114800000000000000000000000000000000005 +S315E071149000000000000000000000000000000000F5 +S315E07114A000000000000000000000400000000000A5 +S315E07114B000000000000000000000000000000000D5 +S315E07114C000000000000000000000000000000000C5 +S315E07114D000000000000000000000000000000000B5 +S315E07114E000000000000000000000000000000000A5 +S315E07114F000000000000000000000FA780000000023 +S315E07115000000800000000000000000000000000004 +S315E07115100000000000000000000000000000000074 +S315E07115200000000000000000000000000000000064 +S315E07115300000000000000000000000000000000054 +S315E07115400000000000000000000000000000000044 +S315E07115500000000000000000000000000000000034 +S315E07115600000000000000000000080800000000024 +S315E07115700000000000000000000000000000000014 +S315E07115800000000000000000000000000000000004 +S315E071159000000000000000000000000000000000F4 +S315E07115A000000000000000000000000000000000E4 +S315E07115B000000000000000000000000000000000D4 +S315E07115C000000000000000000000000000000000C4 +S315E07115D000000000000000000000000000000000B4 +S315E07115E000000000000000000000000000000000A4 +S315E07115F00000000000000000000000000000000094 +S315E07116000000000000000000000000000000000083 +S315E07116100000000000000000000000000000000073 +S315E07116200000000040000000000000000000000023 +S315E07116300000000000000000000000000000000053 +S315E07116400000000000000000000000000000000043 +S315E07116500000000000000000000000000000000033 +S315E07116600000000000000000000000000000000023 +S315E07116700100007BD6000000000000800000000041 +S315E07116800000000000000000000000000000000003 +S315E071169000000000000000000000000000000000F3 +S315E07116A000000000000000000000000000000000E3 +S315E07116B000000000000000000000000000000000D3 +S315E07116C000000000000000000000000000000000C3 +S315E07116D000000000000000000000000000000000B3 +S315E07116E000000000000000000000000000000000A3 +S315E07116F00000000000000000000000000000000093 +S315E07117000000000000000000000000000000000082 +S315E07117100000000000000000000000000000000072 +S315E07117200000000000000000000000000000000062 +S315E07117300000000000000000000000000000000052 +S315E07117400000000000000000000000000000000042 +S315E07117500000000000000000000000000000000032 +S315E07117600000000000000000000000000000000022 +S315E07117700000000000000000000000000000000012 +S315E07117800000000000000000000000000000000002 +S315E071179000000000000000000000000000000000F2 +S315E07117A000000000000000000000000000000000E2 +S315E07117B000000000000000000000000000000000D2 +S315E07117C000000000000000000000000000000000C2 +S315E07117D000000000000000000000000000000000B2 +S315E07117E000000000000000000000000091BB000056 +S315E07117F00000000000000000000000000000000092 +S315E07118000000000000000000000000000000000081 +S315E07118100000000000000000000000000000000071 +S315E07118200000000000000000000000000000000061 +S315E07118300000000000000000000000000000000051 +S315E07118400000000000000000000000000000000041 +S315E071185000000000000000000000008000000000B1 +S315E07118600000000000000000000000000000000021 +S315E07118700000000000000000000000000000000011 +S315E07118800000000000000000000000000000000001 +S315E071189000000000000000000000000000000000F1 +S315E07118A000000000000000000000000000000000E1 +S315E07118B000000000000000000000000000000000D1 +S315E07118C000000000000000000000000000000000C1 +S315E07118D000000000000000000000000000000000B1 +S315E07118E000000000000000000000000000000000A1 +S315E07118F00000000000000000000000000000000091 +S315E07119000000000000000000000000000000000080 +S315E07119100000000000400000000000000000000030 +S315E07119200000000000000000000000000000000060 +S315E07119300000000000000000000000000000000050 +S315E07119400000000000000000000000000000000040 +S315E0711950000000000000010000000000000000002F +S315E07119600000000100EA4300800000000000000072 +S315E071197004002000000400200000000000000000C8 +S315E0711980000000000000010000004001000000407E +S315E071199000000000000000000000000000000200EE +S315E07119A010008002001000800000000000000000BE +S315E07119B00000000000000400200000040020000088 +S315E07119C000000000000000000000000001000000BF +S315E07119D04001000080C0000000000000000000002F +S315E07119E0000000000200100080020010008000007C +S315E07119F0000000000000000000000000040020006C +S315E0711A00000400200000000000000000000000005B +S315E0711A1000000100000040010000004000000000ED +S315E0711A2000000000000000000000020010008002CB +S315E0711A3000100080000000000000000000000000BF +S315E0711A4000000400200000040020000000000000F7 +S315E0711A5000000000000000000100000040010000ED +S315E0711A6000400000000000000000000000000000DF +S315E0711A7002001000800200100080000000000000EB +S315E0711A800000000000000000040020000004406037 +S315E0711A9000000000000000000000000000000100EE +S315E0711AA0000040010000004000000000000000005E +S315E0711AB000000000000002001000800200100080AB +S315E0711AC000000000000000000000000000000401BA +S315E0711AD02000000400200000000000000000115FFB +S315E0711AE0000000000000000000000000000000009F +S315E0711AF0000000000000000000000000000000008F +S315E0711B00000000000000000000000000000000007E +S315E0711B10000000000000000000000000000000006E +S315E0711B20000000000000000000000000000000005E +S315E0711B30000000000000000000000000000000004E +S315E0711B4000000000000000000000000000800000BE +S315E0711B50000000000000000000000000000000002E +S315E0711B60000000000000000000000000000000001E +S315E0711B70000000000000000000000000000000000E +S315E0711B8000000000000000000000000000000000FE +S315E0711B9000000000000000000000000000000000EE +S315E0711BA000000000000000000000000000000000DE +S315E0711BB000000000000000000000000000000000CE +S315E0711BC000000000000000000000000000000000BE +S315E0711BD000000000000000000000000000000000AE +S315E0711BE0000000000000000000000000000000009E +S315E0711BF0000000000000000000000000000000008E +S315E0711C0000000000000000404000000000000000FD +S315E0711C10000000000000000000000000000000006D +S315E0711C20000000000000000000000000000000005D +S315E0711C30000000000000000000000000000000004D +S315E0711C40000000000000000000000000000000003D +S315E0711C50000000000000000AEF0000000000000034 +S315E0711C60000000000000000000000000000000001D +S315E0711C70000000000000000000000000000000000D +S315E0711C8000000000000000000000000000000000FD +S315E0711C9000000000000000000000000000000000ED +S315E0711CA000000000000000000000000000000000DD +S315E0711CB000000000000000000000000000000000CD +S315E0711CC000000000000000000000000000000000BD +S315E0711CD000000000000000000000000000000000AD +S315E0711CE0000000000000000000000000000000009D +S315E0711CF0000000000000000000000000000000008D +S315E0711D00000000000000000000000000000000007C +S315E0711D10000000000000000000000000000000006C +S315E0711D20000000000000000000000000000000005C +S315E0711D30000000000000000000000000000000004C +S315E0711D40000000000000000000000000000000003C +S315E0711D50000000000000000000000000000000002C +S315E0711D60000000000000000000000000000000001C +S315E0711D70000000000000000000000000000000000C +S315E0711D80404000000000000000000000000000007C +S315E0711D9000000000000000000000000000000000EC +S315E0711DA000000000000000000000000000000000DC +S315E0711DB000000000000000000000000000000000CC +S315E0711DC000000000000000000000000000000000BC +S315E0711DD023AD0000808000000000000000000000DC +S315E0711DE0000000000000000000000000000000009C +S315E0711DF0000000000000000000000000000000008C +S315E0711E00000000000000000000000000000000007B +S315E0711E10000000000000000000000000000000006B +S315E0711E20000000000000000000000000000000005B +S315E0711E30000000000000000000000000000000004B +S315E0711E40000000000000000000000000000000003B +S315E0711E50000000000000000000000000000000002B +S315E0711E60000000000000000000000000000000001B +S315E0711E70000000000000000000000000000000000B +S315E0711E8000000000000000000000000000000000FB +S315E0711E9000000000000000000000000000000000EB +S315E0711EA000000000000000000000000000000000DB +S315E0711EB000000000000000000000000000000000CB +S315E0711EC000000000000000000000000000000000BB +S315E0711ED000000000000000000000000000000000AB +S315E0711EE0000000000000000000000000000000009B +S315E0711EF0000000000000000000404000000000000B +S315E0711F00000000000000000000000000000000007A +S315E0711F10000000000000000000000000000000006A +S315E0711F20000000000000000000000000000000005A +S315E0711F30000000000000000000000000000000004A +S315E0711F40000000000000010100865B000000000057 +S315E0711F50000000000000000000000000000000002A +S315E0711F60000000000000000000000000000000001A +S315E0711F70000000000000000000000000000000000A +S315E0711F8000000000000000000000000000000000FA +S315E0711F9000000000000000000000000000000000EA +S315E0711FA000000000000000000000000000000000DA +S315E0711FB000000000000000000000000000000000CA +S315E0711FC000000000000000000000000000000000BA +S315E0711FD000000000000000000000000000000000AA +S315E0711FE0000000000000000000000000000000009A +S315E0711FF0000000000000000000000000000000008A +S315E07120000000000000000000000000000000000079 +S315E07120100000000000000000000000000000000069 +S315E07120200000000000000000000000000000000059 +S315E07120300000000000000000000000000000000049 +S315E07120400000000000000000000000000000000039 +S315E07120500000000000000000000000000000000029 +S315E07120600000000000000000000000000000000019 +S315E07120700000000000000000000000000000000009 +S315E071208000000000000000000000000000000000F9 +S315E071209000000000000000000000000000000000E9 +S315E07120A000000000000000000000000000000000D9 +S315E07120B000000000000000000000000000000000C9 +S315E07120C000003E4900000000000000000000000032 +S315E07120D000000000000000000000000000000000A9 +S315E07120E00000000000000000000000000000000099 +S315E07120F00000000000000000000000000000000089 +S315E07121000000000000000000000000000000000078 +S315E07121100000000000000000000000000000000068 +S315E07121200000000000000000000000000000000058 +S315E07121300000000000000000000000000000000048 +S315E07121400000000000000000000000000000000038 +S315E07121500000000000000000000000000000000028 +S315E07121600000000000000000000000000000000018 +S315E07121700000000000000000000000000000000008 +S315E071218000000000000000000000000000000000F8 +S315E071219000000000000000000000000000000000E8 +S315E07121A000000000000000000000000000000000D8 +S315E07121B000000000000000000000000000000000C8 +S315E07121C000000000000000000000000000000000B8 +S315E07121D000000000000000000000000000000000A8 +S315E07121E00000000000000000000000000000000098 +S315E07121F00000000000000000000000000000000088 +S315E07122000000000000000000000000000000000077 +S315E07122100000000000000000000000000000000067 +S315E07122200000000000000000000000000000000057 +S315E071223000000000000000000000003E49000000C0 +S315E07122400000000000000000000000000000000037 +S315E07122500000000000000000000000000000000027 +S315E07122600000000000000000000000000000000017 +S315E07122700000000000000000000000000000000007 +S315E071228000000000000000000000000000000000F7 +S315E071229000000000000000000000000000000000E7 +S315E07122A000000000000000000000000000000000D7 +S315E07122B000000000000000000000000000000000C7 +S315E07122C000000000000000000000000000000000B7 +S315E07122D000000000000000000000000000000000A7 +S315E07122E00000000000000000000000000000000097 +S315E07122F00000000000000000000000000000000087 +S315E07123000000000000000000000000000000000076 +S315E07123100000000000000000000000000000000066 +S315E07123200000000000000000000000000000000056 +S315E07123300000000000000000000000000000000046 +S315E07123400000000000000000000000000000000036 +S315E07123500000000000000000000000000000000026 +S315E07123600000000040400000000000000000000096 +S315E07123700000000000000000000000000000000006 +S315E071238000000000000000000000000000000000F6 +S315E071239000000000000000000000000000000000E6 +S315E07123A000000000000000000000000000000000D6 +S315E07123B00000000023AD00000000000000000000F6 +S315E07123C00000040020000000000000000000000092 +S315E07123D00000000000000000010000004000000065 +S315E07123E00000000000000000000000000000000096 +S315E07123F002001000800000000000000000000000F4 +S315E07124000000000000000000040020000000000051 +S315E07124100000000000000000000000000000010064 +S315E07124200000400000000000000000000000000015 +S315E071243000000000000002001000800000000000B3 +S315E07124400000000000000000000000000000040031 +S315E07124502000000000000000000000000000000005 +S315E071246000000000010000004000000000000000D4 +S315E071247000000000000000000000000002001000F3 +S315E07124808000000000000000000000000000000075 +S315E071249000000000040020000000000000000000C1 +S315E07124A00000000000000000000001000000400094 +S315E07124B000000000000000000000000000000000C5 +S315E07124C00000020010008000000000000000000023 +S315E07124D00000000000000000000004002040400001 +S315E07124E00000000000000000000000000000000095 +S315E07124F00100000040000000000000000000000044 +S315E071250000000000000000000200100080000000E2 +S315E07125100000000000000000000000000000000064 +S315E071252004002000000000000000000000AE5C0026 +S315E07125300000000000000000000000040020000020 +S315E071254000000080000000000000000000000000B4 +S315E071255000010000004000000000000000000000E3 +S315E07125600000000000000000000200100080000082 +S315E07125700000000000000000000000000000000004 +S315E071258000040020000000000000000000000000D0 +S315E071259000000000000000010000004000000000A3 +S315E07125A000000000000000000000000000000002D2 +S315E07125B00010008000000000000000000000000034 +S315E07125C00000000000000004002000000000000090 +S315E07125D000000000000000000000000000010000A3 +S315E07125E00040000000000000000000000000000054 +S315E07125F000000000000200100080000000000000F2 +S315E0712600000000000000000000000000000400204F +S315E07126100000000000000000000000000000000063 +S315E07126200000000100000040000000000000000012 +S315E071263000000000000000000000000200100080B1 +S315E07126400000000000000000000000000000000033 +S315E071265000000004002000000000000000000000FF +S315E071266000000000000000000001000000400000D2 +S315E07126700000000000000000000000000000000003 +S315E07126800002001000800000000000000000000061 +S315E071269000000000000000000004002000000000BF +S315E07126A00000000100003159000000000000000048 +S315E07126B0000000000400200000000000000000009F +S315E07126C00000000000000000000001000000400072 +S315E07126D000000000000000000000000000000000A3 +S315E07126E00000020010008000000000000000000001 +S315E07126F0000000000000000000000400200000005F +S315E07127000000000000000000000000000000000072 +S315E07127100100000040000000000000000000000021 +S315E071272000000000000000000200100080000000C0 +S315E07127300000000000000000000000000000000042 +S315E0712740040020000000000000000000000000000E +S315E071275000000000000001000000400000000000E1 +S315E07127600000000000000000000000000000020010 +S315E07127701000800000000000000000000000000072 +S315E071278000000000000004002000000000000000CE +S315E071279000000000000000000000000001000000E1 +S315E07127A04000000000000000000000000000000092 +S315E07127B00000000002001000800000000000000030 +S315E07127C0000000000000000000000000040020008E +S315E07127D000000000000000000000000000000000A2 +S315E07127E00000010000004000000000000000000051 +S315E07127F000000000000000000000020010008000F0 +S315E07128000000000000000000000000000000000071 +S315E0712810000004002000000000000000000000B38A +S315E0712820B8000003031414606000800303101440C1 +S315E0712830600000070730304040000007073030C0C5 +S315E0712840C000000607303080C00101060670708056 +S315E071285080010106067070808001010406607000D7 +S315E07128608003031414E0E0000003031414E0E000B5 +S315E07128700003031014C0E0000007073030C0C00049 +S315E07128800007073030C0C000000607303080C00155 +S315E07128900106067070808001010606707080800105 +S315E07128A00104066070008003031414E0E000000385 +S315E07128B0031414E0E0000003031014C0E000000705 +S315E07128C0073030C0C0000007073030C0C0000006D6 +S315E07128D007303080C0010106067070808001010604 +S315E07128E00670708080010104066070008003031435 +S315E07128F014E0E0000003031414E0E00000030310A9 +S315E071290014C0E0000007073030C0C0000007073090 +S315E071291030C0C000000607303080C0010106067085 +S315E07129207080800101060670708080010104066086 +S315E071293070008003031414E0E0000003031414E054 +S315E0712940E0000003031014C0E0000007073030C058 +S315E0712950C0000007073030C0C00000060730308085 +S315E0712960C0010106067070808001010606707080F4 +S315E071297080010104066070008003031414E0E00036 +S315E07129800002021C1CE0E000000202181CC0E0001C +S315E07129900006063838C0C000EFE60000008000008F +S315E07129A00000000000800000000000000000000050 +S315E07129B000000000000000000000000000000000C0 +S315E07129C000000000000000000000000000000000B0 +S315E07129D000000000000000000000000000000000A0 +S315E07129E00000000000000000000000000000000090 +S315E07129F00000000000000000000000000000000080 +S315E0712A0000000000000000000000800000000000EF +S315E0712A10000000000000000000000000000000005F +S315E0712A20000000000000000000000000000000004F +S315E0712A30000000000000000000000000000000003F +S315E0712A40000000000000000000000000000000002F +S315E0712A50000000000000000000000000000000001F +S315E0712A60000000000000000000000000000000000F +S315E0712A7000000000000000000000000000000000FF +S315E0712A8000000000000000000000000000000000EF +S315E0712A9000000000000000000000000000000000DF +S315E0712AA000000000000000000000000000000000CF +S315E0712AB000000000000000000000000000000000BF +S315E0712AC0000000004000000000000000000000006F +S315E0712AD0000000000000000000000000000000009F +S315E0712AE0000000000000000000000000000000008F +S315E0712AF0000000000000000000000000000000007F +S315E0712B00000000000000000000000000000000006E +S315E0712B1000DF5B0000000000000000000000000024 +S315E0712B20000000000000000000000000000000004E +S315E0712B30000000000000000000000020000000001E +S315E0712B40000000000000000000000000000000002E +S315E0712B50000000000000000000000000000000001E +S315E0712B60000000000000000000000000000000000E +S315E0712B7000000000000000000000000000000000FE +S315E0712B8000000000000000000000000000000000EE +S315E0712B9000000000000000000000000000000000DE +S315E0712BA000000000000000000000000000000000CE +S315E0712BB000000000000000000000000000000000BE +S315E0712BC000000000000000000000000000000000AE +S315E0712BD0000080000000000000000000000000001E +S315E0712BE0000000000000000000000000000000008E +S315E0712BF0000000000000000000000000000000007E +S315E0712C00000000000000000000000000000000006D +S315E0712C10000000000000000000000000000000005D +S315E0712C20000000000000000000000000000000004D +S315E0712C30000000000000000000000000000000003D +S315E0712C40000000000000000000000000000000002D +S315E0712C50000000000000000000000000000000001D +S315E0712C60000000000000000000000000000000000D +S315E0712C7000000000000000000000000000000000FD +S315E0712C8000000000000000000000073D0000800029 +S315E0712C90000000800000000000000000000000005D +S315E0712CA000000000000000000000000000000000CD +S315E0712CB000000000000000000000000000000000BD +S315E0712CC0000000000000000000000000000010009D +S315E0712CD0000000000000000000000000000000009D +S315E0712CE0000000000000000000000000000000008D +S315E0712CF0000000000000000000000000000000007D +S315E0712D00000000000000000000000000000000006C +S315E0712D10000000000000000000000000000000005C +S315E0712D20000000000000000000000000000000004C +S315E0712D3000000000000000000000000020000020FC +S315E0712D40000000002000000000000000000000000C +S315E0712D50000000000000000000000000000000001C +S315E0712D60000000000000000000000000000000000C +S315E0712D7000000000000000000000000000000000FC +S315E0712D8000000000000000000000000000000000EC +S315E0712D9000000000000000000000000000000000DC +S315E0712DA000000000000000000000000000000000CC +S315E0712DB000000000000000000000000000000000BC +S315E0712DC000000000000000000000000000000000AC +S315E0712DD0000000000000000000000000000020007C +S315E0712DE0000000000000000040000000000000004C +S315E0712DF0000000000000000000000001000000007B +S315E0712E00000000F4E800000000000000008000000F +S315E0712E10000000000020000000000000000000003B +S315E0712E20000000000000000000000000000000004B +S315E0712E30000000000000000000000000000000003B +S315E0712E40000000000000001000000000000000001B +S315E0712E50000000000000000000000000000000001B +S315E0712E60000000000000000000000000000000000B +S315E0712E7000000000000000000000000000000000FB +S315E0712E8000000000000000000000000000000000EB +S315E0712E9000000000000000000000000000000000DB +S315E0712EA000000000000000000000000000000000CB +S315E0712EB0000000000020000000000000002000007B +S315E0712EC000000000000000000000000000000000AB +S315E0712ED0000000000000000000000000000000009B +S315E0712EE0000000000000000000000100000000008A +S315E0712EF0000000000000000000000000000000007B +S315E0712F00000000000000000000000000000000006A +S315E0712F10000000000000000000000000000000005A +S315E0712F20000000000000000000000000000000004A +S315E0712F30000000000000000000000000000000003A +S315E0712F40000000000000000000000000000000002A +S315E0712F50000000000000000000000000000000001A +S315E0712F6000400000000000000000000000000000CA +S315E0712F70000000000000000000000000180D0000D5 +S315E0712F8000000000000000000000000000000000EA +S315E0712F9000000000000000000000000000000000DA +S315E0712FA000000000000000000000000000000000CA +S315E0712FB000000000000000000000000000000000BA +S315E0712FC000000000000000000000000000000000AA +S315E0712FD0000000000000000000000000000000009A +S315E0712FE0000000000000000000000000000000008A +S315E0712FF0000000000000000000000000000000007A +S315E07130000000000000000000000000000000000069 +S315E07130100000000000000000000000000000000059 +S315E07130200000000000000000000000000000000049 +S315E07130300000200000000000000000000000000019 +S315E071304000000000000000000000800000000000A9 +S315E07130500000000000000000000000000000000019 +S315E07130600000000000000000000000000000000009 +S315E071307000000000000000000000000000000000F9 +S315E071308000000000000000000000000000000000E9 +S315E071309000000000000000000000000000000000D9 +S315E07130A000000000000000000000000000000000C9 +S315E07130B000000000000000000000000000000000B9 +S315E07130C00000000000000000000000000000002089 +S315E07130D00000000000000000000000000000000099 +S315E07130E00000000000000000000000000001000088 +S315E07130F00000000000C5280000000000000000008C +S315E071310000000000000000800000000000000000E8 +S315E07131100000000000000000000000000000000058 +S315E07131200000000000000000000000000000000048 +S315E07131300000000000000000000000000000000038 +S315E07131400000000000000000000000000000000028 +S315E07131500000000000000000000000000000000018 +S315E07131600000000000000000000000000000000008 +S315E071317000000000000000000000000000000000F8 +S315E07131800000000000000000000000800000000068 +S315E071319000000000000000000000000000000000D8 +S315E07131A000000000000000000000000000000000C8 +S315E07131B000000000000000000000000000000000B8 +S315E07131C000000000000000000000000000000000A8 +S315E07131D00000000000000000000000000000000098 +S315E07131E00000000000000000000000000000000088 +S315E07131F00000000000000000000000000000000078 +S315E07132000000000000000000000000000000000067 +S315E07132100000000000000000000000000000000057 +S315E07132200000000000000000000000000000000047 +S315E07132300000000000000000000000000000000037 +S315E07132400000000000000000000000000000000027 +S315E07132500000000000000000000000000000000116 +S315E071326000000000000000000100000000007AB3D9 +S315E071327000008080000000000000000000000000F7 +S315E071328000000000000000000000000000000000E7 +S315E071329000000000000000000000000000000000D7 +S315E07132A000000000000000000000000000000000C7 +S315E07132B000000000000000000000000000000000B7 +S315E07132C000000000000000000000000000000000A7 +S315E07132D00000000000000000000000000000000097 +S315E07132E00000000000000000000000000000000087 +S315E07132F00000000000000000000000000000000077 +S315E07133000000000000000000000000000000000066 +S315E07133100000000000000000000000000000000056 +S315E07133200000000000000000000000000000000046 +S315E07133300000000000000000000000000000000036 +S315E07133400000000000000000000000000000000026 +S315E07133500000000000000000000000000000000016 +S315E07133600000000000000000000000000000000006 +S315E071337000000000000000000000000000000000F6 +S315E07133800000000000000000000000000000008066 +S315E071339000000000000000000000000000000000D6 +S315E07133A000000000000000000000000000000000C6 +S315E07133B000000000000000000000000000000000B6 +S315E07133C000000000000000000000000000000000A6 +S315E07133D00000000000000000000000000000000096 +S315E07133E000000000010100ACFE00000000000000DA +S315E07133F000000000000000008000000000000000F6 +S315E07134000000000000000000000000000000000065 +S315E07134100000000000000000000000000000000055 +S315E07134200000000000000000000000000000000045 +S315E07134300000000000000000000000000000000035 +S315E07134400000000000000000000000000000000025 +S315E07134500000000000000000000000000000000015 +S315E07134600000000000000000000000000000000005 +S315E071347000000000000000000000000000000000F5 +S315E071348000000000000000000000000000000000E5 +S315E071349000000000000000000000000000000000D5 +S315E07134A000000000000000000000000000000000C5 +S315E07134B000000000000000000000000000000000B5 +S315E07134C000000000000000000000000000000000A5 +S315E07134D00000000000000000000000000000000095 +S315E07134E00000000000000000000000000000000085 +S315E07134F00000000000000000000000000000000075 +S315E071350000000000000000008000000000000000E4 +S315E07135100000000000000000000000000000000054 +S315E07135200000000000000000000000000000000044 +S315E07135300000000000000000000000000000000034 +S315E07135400000000000000000000000000000000024 +S315E07135500100000000000000000001000000000012 +S315E071356046A7000000000000000000000000000017 +S315E071357000000000000000000000000000000000F4 +S315E071358000000000000000000000000000000000E4 +S315E071359000000000000000000000000000000000D4 +S315E07135A000000000000000000000000000000000C4 +S315E07135B000000000000000000000000000000000B4 +S315E07135C000000000000000000000000000000000A4 +S315E07135D00000000000000000000000000000000094 +S315E07135E00000000000000000000000000000000084 +S315E07135F00000000000000000000000000000000074 +S315E07136000000000000008000000000000080000063 +S315E07136100000000000000000000000000000000053 +S315E07136200000000000000000000000000000000043 +S315E07136300000000000000000000000000000000033 +S315E07136400000000000000000000000000000000023 +S315E07136500000000000000000000000000000000013 +S315E07136600000000000000000000000000000000003 +S315E071367000000000000000000000000001000000F2 +S315E071368000000000000000000000000000000000E3 +S315E071369000000000000000000000000000000000D3 +S315E07136A000000000000000000000000000000000C3 +S315E07136B000000000000000000000000000000000B3 +S315E07136C000000000000000000000000000000000A3 +S315E07136D00000000000000000003E2D000000000028 +S315E07136E00000000000000000000000000000000083 +S315E07136F00000000000000000000000000000000073 +S315E07137000000000000000000000000000000000062 +S315E07137100000000000000000000000000000000052 +S315E07137200000000000000000000000000000000042 +S315E07137300000000000000000000000000000000032 +S315E07137400000000000000000000000000000000022 +S315E07137500000000000000000000000000000000012 +S315E07137600000000000000000000000000000000002 +S315E071377000000000000000000000000000000000F2 +S315E071378000000000000000000000000000000000E2 +S315E071379000000000000000000000000000000000D2 +S315E07137A000000000000000000000000000000000C2 +S315E07137B000000000000000000000000000000000B2 +S315E07137C000000000000000000000000000000000A2 +S315E07137D00000000000000000000000000000000092 +S315E07137E00000000000000000000000000000000082 +S315E07137F00000000000010000000000000000010070 +S315E07138000000000000000000000000000000000061 +S315E07138100000000000000000000000000000000051 +S315E07138200000000000000000000000000000000041 +S315E07138300000000100000000000000000000000030 +S315E07138400000000000000000000000000000000021 +S315E0713850000080CC000000000000000000000000C5 +S315E07138600000000000000000000000000000000001 +S315E071387000000000000000000000000000000000F1 +S315E071388000000000000000000000000000000000E1 +S315E071389000000000000000000000000000000000D1 +S315E07138A000000000000000000000000000000000C1 +S315E07138B000000000000000000000000000000000B1 +S315E07138C000000000000000000000000000000000A1 +S315E07138D00000000000000000000000000000000091 +S315E07138E00000000000000000000000000000000081 +S315E07138F00000000000000000000000000000000071 +S315E07139000000000000000000000000000000000060 +S315E07139100000000000000000000000000000000050 +S315E07139200000000000000000000000000000000040 +S315E07139300000000000000000000000000000000030 +S315E07139400000000000000000000000000000000020 +S315E07139500000000000000000000000000000000010 +S315E07139600000000000000000000000000000000000 +S315E071397000000000000000000000000000000000F0 +S315E071398000000000000000000000000000000000E0 +S315E071399000000000000000000000000000000000D0 +S315E07139A000000000000000000000000000000000C0 +S315E07139B000000000000000000000000000000000B0 +S315E07139C000000000000000000000003E4900000019 +S315E07139D00000000000000000000000000000000090 +S315E07139E00000000000000000000000000000000080 +S315E07139F00000000000000000000000000000000070 +S315E0713A00000000000000000000000000000000005F +S315E0713A10000000000000000000000000000000004F +S315E0713A20000000000000000000000000000000003F +S315E0713A30000000000000000000000000000000002F +S315E0713A40000000000000000000000000000000001F +S315E0713A50000000000000000000000000000000000F +S315E0713A6000000000000000000000000000000000FF +S315E0713A7080000000000000008000000000000000EF +S315E0713A8000000000000000000000000000000000DF +S315E0713A9000000000000000000000000000000000CF +S315E0713AA000000000000000000000000000000000BF +S315E0713AB000000000000000000000000000000000AF +S315E0713AC0000000000000000000000000000000009F +S315E0713AD0000000000000000000000000000000008F +S315E0713AE0000000000000000000000000000000007F +S315E0713AF0000000000000000000000000000000006F +S315E0713B00000000000000000000000000000000005E +S315E0713B10000000000000000000000000000000004E +S315E0713B20000000000000000000000000000000003E +S315E0713B30000000000000000000000000000000002E +S315E0713B40000100009250000000000000000000003B +S315E0713B50000000000000000000000000000000000E +S315E0713B6000000000000000000000000000000000FE +S315E0713B7000000000000000000000000000000000EE +S315E0713B8000000000000000000000000000000000DE +S315E0713B9000000000000000000000000000000000CE +S315E0713BA000000000000000000000000000000000BE +S315E0713BB000000000000000000000000000000000AE +S315E0713BC0000000000000000000000000000000009E +S315E0713BD0000000000000000000000000000000008E +S315E0713BE0000000000000000000000000000000007E +S315E0713BF0000000000000000000000000000000006E +S315E0713C00000000000000000000000000000000005D +S315E0713C10000000000000000000000000000000004D +S315E0713C20000000000000000000000000000000003D +S315E0713C30000000000000000000000000000000002D +S315E0713C40000000000000000000000000000000001D +S315E0713C50000000000000000000000000000000000D +S315E0713C6000000000000000000000000000000000FD +S315E0713C7000000000000000000000000000000000ED +S315E0713C8000000000000000000000000000000000DD +S315E0713C9000000000000000000000000000000000CD +S315E0713CA000000000000000000000000000000000BD +S315E0713CB0000000000000000000000000003E490026 +S315E0713CC0000000000000000080000000000000001D +S315E0713CD0000000000000000000000000000000008D +S315E0713CE0000000000000000000000000000000007D +S315E0713CF0000000000000000000000000000000006D +S315E0713D00000000000000000000000000000000005C +S315E0713D10000000000000000000000000000000004C +S315E0713D20000000000000000000000000000000003C +S315E0713D30000000000000000000000000000000002C +S315E0713D40000000000000000000000000000000001C +S315E0713D50000000000000000000000000000000000C +S315E0713D6000000000000000000000000000000000FC +S315E0713D7000000000000000000000000000000000EC +S315E0713D8000000000000000000000000000000000DC +S315E0713D9000000000000000000000000000000000CC +S315E0713DA000000000000000000000000000000000BC +S315E0713DB000000000000000000000000000000000AC +S315E0713DC0000000000000000000000000000000009C +S315E0713DD0000000000000000000000000000000008C +S315E0713DE0000000000000000000000000000000007C +S315E0713DF0000000000000000000000000000000006C +S315E0713E00000000000000000000000000000000005B +S315E0713E10000000000000000000000000000000004B +S315E0713E20000000000000000000000000000000003B +S315E0713E30000000000000C961000000800000000081 +S315E0713E40000000000000000000000000000000001B +S315E0713E50000000000000000000000000000000000B +S315E0713E6000000000000000000000000000000000FB +S315E0713E7000000000000000000000000000000000EB +S315E0713E8000000000000000000000000000000000DB +S315E0713E9000000000000000000000000000000000CB +S315E0713EA000000000000000000000000000000000BB +S315E0713EB000000000000000000000000000000000AB +S315E0713EC0000000000000000000000000000000009B +S315E0713ED0000000000000000000000000000000008B +S315E0713EE0000000000000000000000000000000007B +S315E0713EF0000000000000000000000000000000006B +S315E0713F00000000000000000000000000000000005A +S315E0713F10000000000000000000000000000000004A +S315E0713F20000000000000000000000000000000003A +S315E0713F30000000000000000000000000000000002A +S315E0713F40000000000000000000000000000000001A +S315E0713F50000000000000000000000000000000000A +S315E0713F6000000000000000000000000000000000FA +S315E0713F7000000000000000000000000000000000EA +S315E0713F8000000000000000000000000000000000DA +S315E0713F9000000000000000000000000000000000CA +S315E0713FA00000000000000000000000000000004B6F +S315E0713FB008000000000000000000000000000000A2 +S315E0713FC0000000000000000000000000000000009A +S315E0713FD0000000000000000000000000000000008A +S315E0713FE0000000000000000000000000000000007A +S315E0713FF0000000000000000000000000000000006A +S315E07140000000000000000000000000000000000059 +S315E07140100000000000000000000000000000000049 +S315E07140200000000000000000000000000000000039 +S315E07140300000000000000000000000000000000029 +S315E07140400000000000000000000000000000000019 +S315E07140500000000000000000000000000000000009 +S315E071406000000000000000000000000000000000F9 +S315E071407000000000000000000000000000000000E9 +S315E071408000000000000000000000000000000000D9 +S315E071409000000000000000000000000000000000C9 +S315E07140A000000000000000000000000000000000B9 +S315E07140B000000000000000000000000000000000A9 +S315E07140C00000000000000000000000000000000099 +S315E07140D00000000000000000000000000000000089 +S315E07140E00000000000000000000000000000000079 +S315E07140F00000000000000000000000000000000069 +S315E07141000000000000000000000000000000000058 +S315E07141100000000000000000000000000000000048 +S315E071412000000000000000003E4900008000000031 +S315E07141300000000000000000000000000000000028 +S315E07141400000000000000000000000000000000018 +S315E07141500000000000000000000000000000000008 +S315E071416000000000000000000000000000000000F8 +S315E071417000000000000000000000000000000000E8 +S315E071418000000000000000000000000000000000D8 +S315E071419000000000000000000000000000000000C8 +S315E07141A000000000000000000000000000000000B8 +S315E07141B000000000000000000000000000000000A8 +S315E07141C00000000000000000000000000000000098 +S315E07141D00000000000000000000000000000000088 +S315E07141E00000000000000000000000000000000078 +S315E07141F00000000000000000000000000000000068 +S315E07142000000000000000000000000000000000057 +S315E07142100000000000000000000000000000000047 +S315E07142200000000000000000000000000000000037 +S315E07142300000000000000000000000000000000027 +S315E07142400000000000000000000000000000000017 +S315E07142500000000000000000000000000000000007 +S315E071426000000000000000000000000000000000F7 +S315E071427000000000000000000000000000000000E7 +S315E071428000000000000000000000000000000000D7 +S315E071429000000000000000000000000000000000C7 +S315E07142A000BEAE000000000000000000000000004B +S315E07142B000000000000000000000000000000000A7 +S315E07142C00000000000000000000000000000000097 +S315E07142D00000000000000000000000000000000087 +S315E07142E00000000000000000000000000000000077 +S315E07142F00000000000000000000000000000000067 +S315E07143000000000000000000000000000000000056 +S315E07143100000000000000000000000000000000046 +S315E07143200000000000000000000000000000000036 +S315E07143300000000000000000000000000000000026 +S315E07143400000000000000000000000000000000016 +S315E07143500000000000000000000000000000000006 +S315E071436000000000000000000000000000000000F6 +S315E071437000000000000000000000000000000000E6 +S315E071438000000000000000000000000000000000D6 +S315E071439000000000000000000000000000000000C6 +S315E07143A000000000000000000000000000000000B6 +S315E07143B000000000000000000000000000000000A6 +S315E07143C00000000000000000000000000000000096 +S315E07143D00000000000000000000000000000000086 +S315E07143E00000000000000000000000000000000076 +S315E07143F00000000000000000000000000000000066 +S315E07144000000000000000000000000000000000055 +S315E0714410000000000000000000003E4900000000BE +S315E07144200000000000000000000000000000000035 +S315E07144300000000000000000000000000000000025 +S315E07144400000000000000000000000000000000015 +S315E07144500000000000000000000000000000000005 +S315E071446000000000000000000000000000000000F5 +S315E071447000000000000000000000000000000000E5 +S315E071448000000000000000000000000000000000D5 +S315E071449000000000000000000000000000000000C5 +S315E07144A000000000000000000000000000000000B5 +S315E07144B000000000000000000000000000000000A5 +S315E07144C00000000000000000000000000000000095 +S315E07144D00000000000000000000000000000000085 +S315E07144E00000000000000000000000000000000075 +S315E07144F00000000000000000000000000000000065 +S315E07145000000000000000000000000000000000054 +S315E07145100000000000000000000000000000000044 +S315E07145200000000000000000000000000000000034 +S315E07145300000000000000000000000000000000024 +S315E07145400000000000000000000000000000000014 +S315E07145500000000000000000000000000000000004 +S315E071456000000000000000000000000000000000F4 +S315E071457000000000000000000000000000000000E4 +S315E071458000000000000000000000000000000000D4 +S315E07145900000003E490000000000000000008000BD +S315E07145A000000000000000000000000000000000B4 +S315E07145B000000000000000000000000000000000A4 +S315E07145C00000000000000000000000000000000094 +S315E07145D00000000000000000000000000000000084 +S315E07145E00000000000000000000000000000000074 +S315E07145F00000000000000000000000000000000064 +S315E07146000000000000000000000000000000000053 +S315E07146100000000000000000000000000000000043 +S315E07146200000000000000000000000000000000033 +S315E07146300000000000000000000000000000000023 +S315E07146400000000000000000000000000000000013 +S315E07146500000000000000000000000000000000003 +S315E071466000000000000000000000000000000000F3 +S315E071467000000000000000000000000000000000E3 +S315E071468000000000000000000000000000000000D3 +S315E071469000000000000000000000000000000000C3 +S315E07146A000000000000000000000000000000000B3 +S315E07146B000000000000000000000000000000000A3 +S315E07146C00000000000000000000000000000000093 +S315E07146D00000000000000000000000000000000083 +S315E07146E00000000000000000000000000000000073 +S315E07146F00000000000000000000000010000000062 +S315E0714700000000010000000000000000956100005B +S315E07147108080000000000000000000000000000042 +S315E07147200000000000000000000000000000000032 +S315E07147300000000000000000000000000000000022 +S315E07147400000000000000000000000000000000012 +S315E07147500000000000000000000000000000000002 +S315E071476000000000000000000000000000000000F2 +S315E071477000000000000000000000000000000000E2 +S315E071478000000000000000000000000000000000D2 +S315E071479000000000000000000000000000000000C2 +S315E07147A000000000000000000000000000000000B2 +S315E07147B000000000000000000000000000000000A2 +S315E07147C00000000000000000000000000000000092 +S315E07147D00000000000000000000000000000000082 +S315E07147E00000000000000000000000000000000072 +S315E07147F00000000000000000000000000000000062 +S315E07148000000000000000000000000000000000051 +S315E07148100000000000000000000000000000000041 +S315E07148200000000000000000000000000000000031 +S315E07148300000000000000000000000000000000021 +S315E07148400000000000000000000000000000000011 +S315E07148500000000000000000000000000000000001 +S315E071486000000000000000000000000000000000F1 +S315E071487000010000000000000000000000000000E0 +S315E07148800000010100A66E000000000000000000BB +S315E071489000000000000000000000000000000000C1 +S315E07148A000000000000000000000000000000000B1 +S315E07148B000000000000000000000000000000000A1 +S315E07148C00000000000000000000000000000000091 +S315E07148D00000000000000000000000000000000081 +S315E07148E00000000000000000000000000000000071 +S315E07148F00000000000000000000000000000000061 +S315E07149000000000000000000000000000000000050 +S315E07149100000000000000000000000000000000040 +S315E07149200000000000000000000000000000000030 +S315E07149300000000000000000000000000000000020 +S315E07149400000000000000000000000000000000010 +S315E07149500000000000000000000000000000000000 +S315E071496000000000000000000000000000000000F0 +S315E071497000000000000000000000000000000000E0 +S315E071498000000000000000000000000000000000D0 +S315E071499000000000000000000000000000000000C0 +S315E07149A000000000000000000000000000000000B0 +S315E07149B000000000000000000000000000000000A0 +S315E07149C00000000000000000000000000000000090 +S315E07149D00000000000000000000000000000000080 +S315E07149E00000000000000000000000000000000070 +S315E07149F000000000000000000000000000003E49D9 +S315E0714A0000000000000000000080000000000000CF +S315E0714A10000000000000000000000000000000003F +S315E0714A20000000000000000000000000000000002F +S315E0714A30000000000000000000000000000000001F +S315E0714A40000000000000000000000000000000000F +S315E0714A5000000000000000000000000000000000FF +S315E0714A6000000000000000000000000000000000EF +S315E0714A7000000000000000000000000000000000DF +S315E0714A8000000000000000000000000000000000CF +S315E0714A9000000000000000000000000000000000BF +S315E0714AA000000000000000000000000000000000AF +S315E0714AB0000000000000000000000000000000009F +S315E0714AC0000000000000000000000000000000008F +S315E0714AD0000000000000000000000000000000007F +S315E0714AE0000000000000000000000000000000006F +S315E0714AF0000000000000000000000000000000005F +S315E0714B00000000000000000000000000000000004E +S315E0714B10000000000000000000000000000000003E +S315E0714B20000000000000000000000000000000002E +S315E0714B30000000000000000000000000000000001E +S315E0714B40000000000000000000000000000000000E +S315E0714B5000000000000000000000000000000000FE +S315E0714B6000000000010001000000000000000100EB +S315E0714B7000000000000000A89D0000000000000099 +S315E0714B8000000000000000000000000000000000CE +S315E0714B9000000000000000000000000000000000BE +S315E0714BA000000000000000000000000000000000AE +S315E0714BB0000000000000000000000000000000009E +S315E0714BC0000000000000000000000000000000008E +S315E0714BD0000000000000000000000000000000007E +S315E0714BE0000000000000000000000000000000006E +S315E0714BF0000000000000000000000000000000005E +S315E0714C00000000000000000000000000000000004D +S315E0714C10000000000000000000000000000000003D +S315E0714C20000000000000000000000000000000002D +S315E0714C30000000000000000000000000000000001D +S315E0714C40000000000000000000000000000000000D +S315E0714C5000000000000000000000000000000000FD +S315E0714C6000000000000000000000000000000000ED +S315E0714C7000000000000000000000000000000000DD +S315E0714C8000000000000000000000000000000000CD +S315E0714C9000000000000000000000000000000000BD +S315E0714CA000000000000000000000000000000000AD +S315E0714CB0000000000000000000000000000000009D +S315E0714CC0000000000000000000000000000000008D +S315E0714CD0000000000000000001000001010000007A +S315E0714CE0000000000000000000000000000000006D +S315E0714CF04EDC00000000000000000004002000000F +S315E0714D000400200000000000000000000000000028 +S315E0714D1000010000004001000000400000000000BA +S315E0714D200000000000000000000200100080020098 +S315E0714D30100080000000000000000000000000008C +S315E0714D4000040020000004002000000000000000C4 +S315E0714D5000000000000000010000004001000000BA +S315E0714D6040000000000000000000000000000002AA +S315E0714D7000100080020010008000000000000000BA +S315E0714D800000000000000004002000000400200084 +S315E0714D9000000000000000000000000000010000BB +S315E0714DA0004001000000400000000000000000002B +S315E0714DB00000000000020010008002001000800078 +S315E0714DC00000000000000000000000000004002068 +S315E0714DD00000040020000000000000000000000058 +S315E0714DE000000001000000400100000040000000EA +S315E0714DF000000000000000000000000200100080CA +S315E0714E0002001000800000000000000000000000B9 +S315E0714E1000000004002000000400200000000000F3 +S315E0714E2000000000000000000001000000400100E9 +S315E0714E3000004000000000000000000000000000DB +S315E0714E4000020010008002001000800000000000E7 +S315E0714E5000000000000000000004002000000400D3 +S315E0714E60200000000000000000FBB0000000000020 +S315E0714E7000000000000000000000000000000000DB +S315E0714E8000000000000000000000000000000000CB +S315E0714E9000000000000000000000000000000000BB +S315E0714EA000000000000000000000000000000000AB +S315E0714EB0000000000000000000000000000000009B +S315E0714EC0000000000000000000000000000000008B +S315E0714ED0000000000000000000000000000000007B +S315E0714EE0000000000000000000000000000000006B +S315E0714EF0000000000000000000000000000000005B +S315E0714F00000000000000000000000000000000004A +S315E0714F10000000000000000000000000000000003A +S315E0714F20000000000000000000000000000000002A +S315E0714F30000000000000000000000000000000001A +S315E0714F40000000000000000000000000000000000A +S315E0714F5000000000000000000000000000000000FA +S315E0714F6000000000000000000000000000000000EA +S315E0714F7000000000000000000000000000000000DA +S315E0714F8000000000000000000000000000000000CA +S315E0714F9000000000000000000000000000000000BA +S315E0714FA000000000000000000000000000000000AA +S315E0714FB0000000000000000000000000000000009A +S315E0714FC0000000000000000000000000000000008A +S315E0714FD00000000000000000000000000000000179 +S315E0714FE000006F8900000000000000000000000072 +S315E0714FF0000000000000000000000000000000005A +S315E07150000000000000000000000000000000000049 +S315E07150100000000000000000000000000000000039 +S315E07150200000000000000000000000000000000029 +S315E07150300000000000000000000000000000000019 +S315E07150400000000000000000000000000000000009 +S315E071505000000000000000000000000000000000F9 +S315E071506000000000000000000000000000000000E9 +S315E071507000000000000000000000000000000000D9 +S315E071508000000000000000000000000000000000C9 +S315E071509000000000000000000000000000000000B9 +S315E07150A000000000000000000000000000000000A9 +S315E07150B00000000000000000000000000000000099 +S315E07150C00000000000000000000000000000000089 +S315E07150D00000000000000000000000000000000079 +S315E07150E00000000000000000000000000000000069 +S315E07150F00000000000000000000000000000000059 +S315E07151000000000000000000000000000000000048 +S315E07151100000000000000000000000000000000038 +S315E07151200000000000000000000000000000000028 +S315E07151300000000000000000000000000000000018 +S315E07151400000000100000101000000010000000004 +S315E071515000000000000000000000008F4C0000001D +S315E071516000000000000000000000000000000000E8 +S315E071517000000000000000000000000000000000D8 +S315E071518000000000000000000000000000000000C8 +S315E071519000000000000000000000000000000000B8 +S315E07151A000000000000000000000000000000000A8 +S315E07151B00000000000000000000000000000000098 +S315E07151C00000000000000000000000000000000088 +S315E07151D00000000000000000000000000000000078 +S315E07151E00000000000000000000000000000000068 +S315E07151F00000000000000000000000000000000058 +S315E07152000000000000000000000000000000000047 +S315E07152100000000000000000000000000000000037 +S315E07152200000000000000000000000000000000027 +S315E07152300000000000000000000000000000000017 +S315E07152400000000000000000000000000000000007 +S315E071525000000000000000000000000000000000F7 +S315E071526000000000000000000000000000000000E7 +S315E071527000000000000000000000000000000000D7 +S315E071528000000000000000000000000000000000C7 +S315E071529000000000000000000000000000000000B7 +S315E07152A000000000000000000000000000000000A7 +S315E07152B00000000000000000000000000000000097 +S315E07152C00000000000000000000000000000000087 +S315E07152D0000000003E490000008000000000000070 +S315E07152E00000000000000000000000000000000067 +S315E07152F00000000000000000000000000000000057 +S315E07153000000000000000000000000000000000046 +S315E07153100000000000000000000000000000000036 +S315E07153200000000000000000000000000000000026 +S315E07153300000000000000000000000000000000016 +S315E07153400000000000000000000000000000000006 +S315E071535000000000000000000000000000000000F6 +S315E071536000000000000000000000000000000000E6 +S315E071537000000000000000000000000000000000D6 +S315E071538000000000000000000000000000000000C6 +S315E071539000000000000000000000000000000000B6 +S315E07153A000000000000000000000000000000000A6 +S315E07153B00000000000000000000000000000000096 +S315E07153C00000000000000000000000000000000086 +S315E07153D00000000000000000000000000000000076 +S315E07153E00000000000000000000000000000000066 +S315E07153F00000000000000000000000000000000056 +S315E07154000000000000000000000000000000000045 +S315E07154100000000000000000000000000000000035 +S315E07154200000000000000000000000000000000025 +S315E07154300000000000000000000000000000000015 +S315E0715440000000000000000000000000004B0800B2 +S315E071545000000000000000000000000000000000F5 +S315E071546000000000000000000000000000000000E5 +S315E071547000000000000000000000000000000000D5 +S315E071548000000000000000000000000000000000C5 +S315E071549000000000000000000000000000000000B5 +S315E07154A000000000000000000000000000000000A5 +S315E07154B00000000000000000000000000000000095 +S315E07154C00000000000000000000000000000000085 +S315E07154D00000000000000000000000000000000075 +S315E07154E00000000000000000000000000000000065 +S315E07154F00000000000000000000000000000000055 +S315E07155000000000000000000000000000000000044 +S315E07155100000000000000000000000000000000034 +S315E07155200000000000000000000000000000000024 +S315E07155300000000000000000000000000000000014 +S315E07155400000000000000000000000000000000004 +S315E071555000000000000000000000000000000000F4 +S315E071556000000000000000000000000000000000E4 +S315E071557000000000000000000000000000000000D4 +S315E071558000000000000000000000000000000000C4 +S315E071559000000000000000000000000000000000B4 +S315E07155A000000000000000000000000000000000A4 +S315E07155B00000000000000000000000000000000094 +S315E07155C00000000000003E4900008000000000007D +S315E07155D00000000000000000000000000000000074 +S315E07155E00000000000000000000000000000000064 +S315E07155F00000000000000000000000000000000054 +S315E07156000000000000000000000000000000000043 +S315E07156100000000000000000000000000000000033 +S315E07156200000000000000000000000000000000023 +S315E07156300000000000000000000000000000000013 +S315E07156400000000000000000000000000000000003 +S315E071565000000000000000000000000000000000F3 +S315E071566000000000000000000000000000000000E3 +S315E071567000000000000000000000000000000000D3 +S315E071568000000000000000000000000000000000C3 +S315E071569000000000000000000000000000000000B3 +S315E07156A000000000000000000000000000000000A3 +S315E07156B00000000000000000000000000000000093 +S315E07156C00000000000000000000000000000000083 +S315E07156D00000000000000000000000000000000073 +S315E07156E00000000000000000000000000000000063 +S315E07156F00000000000000000000000000000000053 +S315E07157000000000000000000000000000000000042 +S315E07157100000000000000000000000000000000032 +S315E07157200000000000000000000000000000000022 +S315E0715730000000000000000000000000000000BE54 +S315E0715740AE00000000000000000000000004002030 +S315E071575000000000000000000000000000000000F2 +S315E071576000000001000000400000000000000000A1 +S315E07157700000000000000000000000020010008040 +S315E071578000000000000000000000000000000000C2 +S315E0715790000000040020000000000000000000008E +S315E07157A00000000000000000000100000040000061 +S315E07157B00000000000000000000000000000000092 +S315E07157C000020010008000000000000000000000F0 +S315E07157D0000000000000000000040020000000004E +S315E07157E00000000000000000000000000000000161 +S315E07157F00000004000000000000000000000000012 +S315E071580000000000000000020010008000000000AF +S315E0715810000000000000000000000000000000042D +S315E07158200020000000000000000000000000000001 +S315E071583000000000000100000040000000000000D0 +S315E071584000000000000000000000000000020010EF +S315E07158500080000000000000000000000000000071 +S315E071586000000000000400200000000000000000BD +S315E07158700000000000000000000000010000004090 +S315E071588000000000000000000000000000000000C1 +S315E0715890000000020010008000000000000000001F +S315E07158A0000000000000000000000004002000007D +S315E07158B00000000000000000B3B800000000000026 +S315E07158C0000000000000040020000000000000005D +S315E07158D00000000000000000000000000100000070 +S315E07158E04000000000000000000000000000000021 +S315E07158F000000000020010008000000000000000BF +S315E0715900000000000000000000000000040020001C +S315E07159100000000000000000000000000000000030 +S315E071592000000100000040000000000000000000DF +S315E0715930000000000000000000000200100080007E +S315E07159400000000000000000000000000000000000 +S315E071595000000400200000000000000000000000CC +S315E0715960000000000000000001000000400000009F +S315E071597000000000000000000000000000000000D0 +S315E0715980020010008000000000000000000000002E +S315E0715990000000000000000004002000000000008C +S315E07159A0000000000000000000000000000001009F +S315E07159B00000400000000000000000000000000050 +S315E07159C000000000000002001000800000000000EE +S315E07159D0000000000000000000000000000004006C +S315E07159E02000000000000000000000000000000040 +S315E07159F0000000000100000040000000000000000F +S315E0715A00000000000000000000000000020010002D +S315E0715A1080000000000000000000000000000000AF +S315E0715A2000000000040020000000000000000000FB +S315E0715A3000B3B800000000000000000000000004A0 +S315E0715A4000200000000000000000000000000000DF +S315E0715A5000000000000100000040000000000000AE +S315E0715A6000000000000000000000000000020010CD +S315E0715A70008000000000000000000000000000004F +S315E0715A80000000000004002000000000000000009B +S315E0715A90000000000000000000000001000000406E +S315E0715AA0000000000000000000000000000000009F +S315E0715AB000000002001000800000000000000000FD +S315E0715AC0000000000000000000000004002000005B +S315E0715AD0000000000000000000000000000000006F +S315E0715AE0000100000040000000000000000000001E +S315E0715AF000000000000000000002001000800000BD +S315E0715B00000000000000000000000000000000003E +S315E0715B10000400200000000000000000000000000A +S315E0715B2000000000000000010000004000000000DD +S315E0715B30000000000000000000000000000000020C +S315E0715B40001000800000000000000000000000006E +S315E0715B5000000000000000040020000000000000CA +S315E0715B6000000000000000000000000000010000DD +S315E0715B70004000000000000000000000000000008E +S315E0715B80000000000002001000800000000000002C +S315E0715B90000000000000000000000000000400208A +S315E0715BA000000100000000000000727400008383B1 +S315E0715BB014146060000003031014406000000707CE +S315E0715BC030304040000007073030C0C000000607A3 +S315E0715BD0303080C0010106067070808001010606D2 +S315E0715BE070708080010104066070008003031414F4 +S315E0715BF0E0E0000003031414E0E000000303101476 +S315E0715C00C0E0000007073030C0C000000707303041 +S315E0715C10C0C000000607303080C001010606707012 +S315E0715C208080010106067070808001010406607053 +S315E0715C30008003031414E0E0000003031414E0E0B1 +S315E0715C40000003031014C0E0000007073030C0C045 +S315E0715C50000007073030C0C000000607303080C052 +S315E0715C600101060670708080010106067070808001 +S315E0715C70010104066070008003031414E0E0000083 +S315E0715C8003031414E0E0000003031014C0E0000005 +S315E0715C9007073030C0C0000007073030C0C00000D1 +S315E0715CA00607303080C00101060670708080010100 +S315E0715CB0060670708080010104066070008003033F +S315E0715CC01414E0E0000003031414E0E000000303A1 +S315E0715CD01014C0E0000007073030C0C000000707AD +S315E0715CE03030C0C000000607303080C001010606C2 +S315E0715CF07070808001010606707080800101040673 +S315E0715D006070008003031414E0E0000002021C1CC2 +S315E0715D10E0E000000202181CC0E000000606383818 +S315E0715D20C1C100BD380000000000000000000000A5 +S315E0715D30000000000000000000000000000000000C +S315E0715D4000000000000000000000000000000000FC +S315E0715D5000000000000000000000000000000000EC +S315E0715D6000000000000000000000000000000000DC +S315E0715D7000000000000000000000000000000000CC +S315E0715D8000000000000000000000000000000000BC +S315E0715D9000000000000000000000000000000000AC +S315E0715DA0000000000000000000000000000000009C +S315E0715DB0000000000000000000000000000000008C +S315E0715DC0000000000000000000000000000000007C +S315E0715DD0000000000000000000000000000000006C +S315E0715DE0000000000000000000000000000000005C +S315E0715DF0000000000000000000000000000000004C +S315E0715E00000000000000000000000000000000003B +S315E0715E10000000000000000000000000000000002B +S315E0715E20000000000000000000000000000000001B +S315E0715E30000000000000000000000000000000000B +S315E0715E4000000000000000000000000000000000FB +S315E0715E5000000000000000000000000000000000EB +S315E0715E6000000000000000000000000000000000DB +S315E0715E7000000000000000000000000000000000CB +S315E0715E8000000000000000000000000000000000BB +S315E0715E900000000000000000000000003E490080A4 +S315E0715EA0000000000000000000000000000000009B +S315E0715EB0000000000000000000000000000000008B +S315E0715EC0000000000000000000000000000000007B +S315E0715ED0000000000000000000000000000000006B +S315E0715EE0000000000000000000000000000000005B +S315E0715EF00000000010000000000000040000000037 +S315E0715F0000000080000000000000000000000000BA +S315E0715F10000000000000000000000000000000002A +S315E0715F20000000000000000000000000000000001A +S315E0715F30000000000000000000000000000000000A +S315E0715F4000000000000000000000000000000000FA +S315E0715F5000000010000000000000000000000000DA +S315E0715F6000000000000000000000000000000000DA +S315E0715F7000000000000000000000000000000000CA +S315E0715F8000000080000000000000004000000004F6 +S315E0715F90000000002000000000000000000000008A +S315E0715FA0000000000000000000000000000000009A +S315E0715FB0000000000000000000000000004000004A +S315E0715FC0000000000000000000000000000000007A +S315E0715FD0000000000000000000000000000000006A +S315E0715FE0000000000000000000000000000000005A +S315E0715FF0000000000000000000000000000000004A +S315E071600000000000000040000000000000000000F9 +S315E071601000000000000DB800000000000000000064 +S315E07160200000000000000000000000000000000019 +S315E07160300000000000000000000000000000000009 +S315E071604000000000000000000000000000000000F9 +S315E071605000000000000000000000000000000000E9 +S315E071606000000000000000000000000000000000D9 +S315E071607000000000000000000000000000000000C9 +S315E071608000000000000000000000000000000000B9 +S315E071609000000000000000000000000000000000A9 +S315E07160A00000000000000000000000000000000099 +S315E07160B00000000000000000000000000000000089 +S315E07160C00000000000000000000000000000000079 +S315E07160D00000000000000000000000000000000069 +S315E07160E00000000000000000000000000000000059 +S315E07160F00000000000000000000000000000000049 +S315E07161000000000000000000000000000000000038 +S315E07161100000000000000000000000000000000028 +S315E07161200000000000000000000000000000000018 +S315E07161300000000000000000000000000000000008 +S315E071614000000000000000000000000000000000F8 +S315E071615000000000000000000000000000000000E8 +S315E071616000000000000000000000000000000000D8 +S315E071617000000000000000010000000000000000C7 +S315E07161800000000000000000000000000000F3D5F0 +S315E071619000000000000000000000000000000000A8 +S315E07161A00000000000000000000000000000000098 +S315E07161B00000000000000000000000000000000088 +S315E07161C00000000000000000000000000000100068 +S315E07161D00000000000000000000000000000000464 +S315E07161E00000000000000000000000000000000058 +S315E07161F00000000000000000000000000000000048 +S315E07162000000000000000000000000000000000037 +S315E07162100000000000000000000000000000000027 +S315E07162200000000000000000000000000000000017 +S315E07162300000000000000000000000000000000007 +S315E071624000000000000000000000000000000000F7 +S315E07162500000000000000080000000000000000067 +S315E071626000000000000000000000000400000000D3 +S315E071627000002000000000000000000000000000A7 +S315E071628000000000000000000000000000000000B7 +S315E071629000000000000000000000000000000000A7 +S315E07162A00000000000000000000000000000000097 +S315E07162B00000000000000000000000000000000087 +S315E07162C00000000000000000000000000000000077 +S315E07162D00000000000000000000000000000000067 +S315E07162E00000000000000000000000000000000057 +S315E07162F00000000000000000000000000000000047 +S315E0716300000000000000009BA300000000000000F8 +S315E07163100000000020000000000000000000000006 +S315E07163200000000000000000000000000000000016 +S315E07163300000000000000000000000000000000006 +S315E071634000000000000000000000000000000000F6 +S315E071635000000000000000000000000000000000E6 +S315E071636000000000000000000000000000000000D6 +S315E071637000000000000000000000000000000000C6 +S315E07163800000000000000000000000000000008036 +S315E071639000000000000000000000000000000000A6 +S315E07163A00000000000000000000000000000000096 +S315E07163B00000000000000000000000000000000086 +S315E07163C00000000000000000000000000000000076 +S315E07163D00000001000000000000000000000000056 +S315E07163E00000000000000000000000000000000056 +S315E07163F00000000000000000000000000000000046 +S315E071640000000040000000000000000000000000F5 +S315E07164100000000000000000000000000000000025 +S315E07164200000000000000000000000000000000015 +S315E07164300000000000000000000000000000000005 +S315E071644000000000000000000040000000000000B5 +S315E071645000000000000000000000000000000000E5 +S315E071646000000000000000000100000000000000D4 +S315E071647000000000000000000000000000010000C4 +S315E07164800FBF008000000000000000000000000067 +S315E071649000000000000000000000000000000000A5 +S315E07164A00000000000000000000000000000000095 +S315E07164B00000000000000000000000000000000085 +S315E07164C00000000000000000000000000000000075 +S315E07164D00000000000000000000000000000000065 +S315E07164E00000000000000000000000000000000055 +S315E07164F00000000000000000000000000000000045 +S315E07165000000000000000000000000000000000034 +S315E07165100000000000000000000000000000000024 +S315E07165200000000000000000000000000000000014 +S315E07165300000000000000000000000000000000004 +S315E071654000000000000000000000000000000000F4 +S315E071655000000000000000000000000000000000E4 +S315E071656000000000000000000000000000000000D4 +S315E071657000000000000000000000000000000000C4 +S315E071658000000000000000000000000000000000B4 +S315E071659000000000000000000000000000000000A4 +S315E07165A00000000000000000000000000000000094 +S315E07165B00000000000000000000000000000000084 +S315E07165C00000000000000000000000000000000074 +S315E07165D00000000000000000000000000000000064 +S315E07165E00000000000000000000000000000000054 +S315E07165F0000000000000000000D8E9000000000083 +S315E07166000020000000000000000000000000000013 +S315E07166100000000000000000000000000000000023 +S315E07166200000000000000000000000000000000013 +S315E07166300000000000000000000000000000000003 +S315E071664000000000000000000000000000000000F3 +S315E071665000000000000000000000000000000000E3 +S315E071666000000000000000000000000000000000D3 +S315E071667000000000000000000000000000000000C3 +S315E071668000000000000000000000000000000000B3 +S315E071669000000000000000000000000000000000A3 +S315E07166A00000000000000000000000000000000093 +S315E07166B00000000000000000000000000000000083 +S315E07166C00000000000000000000000000000000073 +S315E07166D00000000000000000000000000000000063 +S315E07166E00000000000000000000000000000000053 +S315E07166F000000000000000800000000000000000C3 +S315E07167000000000000000000000000000000000032 +S315E07167100000000000000000000000000000000022 +S315E07167200000000000000000000000000000000012 +S315E07167300000000000000000000000000000000002 +S315E071674000000000000000000000000000000000F2 +S315E071675000000000000000000000000000000000E2 +S315E071676000000000000000000000000000000000D2 +S315E071677000003CCF000000000000000000000000B7 +S315E071678000000000000000000000000000000000B2 +S315E071679000000000000000000000000000000000A2 +S315E07167A00000000000000000000000000000000092 +S315E07167B00000000000000000000000000000000082 +S315E07167C00000000000000000000000000000000072 +S315E07167D00000000000000000000000000000000062 +S315E07167E00000000000000000000000000000000052 +S315E07167F00000000000000000000000000000000042 +S315E07168000000000000000000000000000000000031 +S315E07168100000000000000000000000000000000021 +S315E07168200000000000000000000000000000000011 +S315E07168300000000000000000000000000000000001 +S315E071684000000000000000000000000000000000F1 +S315E071685000000000000000000000000000000000E1 +S315E07168600000000000000000000000000000008051 +S315E071687000000000000000000000000000000000C1 +S315E071688000000000000000000000000000000000B1 +S315E071689000000000000000000000000000000000A1 +S315E07168A00000000000000000000000000000000091 +S315E07168B00000000000000000000000000000000081 +S315E07168C00000000000000000000000000000000071 +S315E07168D00000000000000000000000000000000061 +S315E07168E00000000000000000000000143700000006 +S315E07168F00000000000000000000000000000000041 +S315E07169000000000000000000000000000000000030 +S315E07169100000000000000000000000000000000020 +S315E07169200000000000000000000000000000000010 +S315E07169300000000000000000000000000000000000 +S315E071694000000000000000000000000000000000F0 +S315E071695000000000000000000000000000000000E0 +S315E071696000000000000000000000000000000000D0 +S315E071697000000000000000000000000000000000C0 +S315E071698000000000000000000000000000000000B0 +S315E071699000000000000000000000000000000000A0 +S315E07169A00000000000000000000000000000000090 +S315E07169B00000000000000000000000000000000080 +S315E07169C00000000000200000000000000000000050 +S315E07169D00000000000000000000000000000000060 +S315E07169E00000000000000000000000000000000050 +S315E07169F00000000000000000000000000000000040 +S315E0716A00000000000000000000000000000000002F +S315E0716A10000000000000000000000000000000001F +S315E0716A20000000000000000000000000000000000F +S315E0716A3000000000000000000000000000000000FF +S315E0716A4000000000000000000100000000000000EE +S315E0716A5000000000000000000000000000000000DF +S315E0716A60000000009C0500000000000000000080AE +S315E0716A7000000000000000000000000000000000BF +S315E0716A8000000000000000000000000000000000AF +S315E0716A90000000000000000000000000000000009F +S315E0716AA0000000000000000000000000000000008F +S315E0716AB0000000000000000000000000000000007F +S315E0716AC0000000000000000000000000000000006F +S315E0716AD0000000000000000000000000000000005F +S315E0716AE0000000000000000000000000000000004F +S315E0716AF0000000000000000000000000000000003F +S315E0716B00000000000000000000000000000000002E +S315E0716B10000000000000000000000000000000001E +S315E0716B20000000000000000000000000000000000E +S315E0716B3000000000000000000000000000000000FE +S315E0716B4000000000000000000000000000000000EE +S315E0716B5000000000000000000000000000000000DE +S315E0716B6000000000000000000000000000000000CE +S315E0716B7000000000000000000000000000000000BE +S315E0716B8000000000000000000000000000000000AE +S315E0716B90000000000000000000000000000000009E +S315E0716BA0000000000000000000000000000000008E +S315E0716BB0000000000000000000000000000000007E +S315E0716BC0000001000000000000000000000000006D +S315E0716BD00000000000000000000000000037E30044 +S315E0716BE0000000000000000000000000000000004E +S315E0716BF0000000000000000000000000000000003E +S315E0716C00000000000000000000000000000000002D +S315E0716C10000000000000000000000000000000001D +S315E0716C20000000000000000000000000000000000D +S315E0716C3000000000000000000000000000000000FD +S315E0716C4000000000000000000000000000000000ED +S315E0716C5000000000000000000000000000000000DD +S315E0716C6000000000000000000000000000000000CD +S315E0716C7000000000000000000000000000000000BD +S315E0716C8000000000000000000000000000000000AD +S315E0716C90000000000000000000000000000000009D +S315E0716CA0000000000000000000000000000000008D +S315E0716CB0000000000000000000000000000000007D +S315E0716CC0000000000000000000000000000000006D +S315E0716CD0000000000000000000000000000000005D +S315E0716CE0000000000000000000000000000000004D +S315E0716CF0000000000000000000000000000000003D +S315E0716D00000000000000000000000000000000002C +S315E0716D10000000000000000000000000000000001C +S315E0716D20000000000000000000000000000000000C +S315E0716D3000000000000000000000000000000000FC +S315E0716D4000000000000000000000000000000000EC +S315E0716D500000000000003E49000000000000000055 +S315E0716D6000000000000000000000000000000000CC +S315E0716D7000000000000000000000000000000000BC +S315E0716D8000000000000000000000000000000000AC +S315E0716D90000000000000000000000000000000009C +S315E0716DA0000000000000000000000000000000008C +S315E0716DB0000000000000000000000000000000007C +S315E0716DC0000000000000000000000000000000006C +S315E0716DD0000000000000000000000000000000005C +S315E0716DE0000000000000000000000000000000004C +S315E0716DF0000000000000000000000000000000003C +S315E0716E00000000000000000000000000000000002B +S315E0716E10000000000000000000000000000000001B +S315E0716E20000000000000000000000000000000000B +S315E0716E3020000000000000000000000000000000DB +S315E0716E4000000000000000000000000000000000EB +S315E0716E5000000000000000000000000000000000DB +S315E0716E6000000000000000000000000000000000CB +S315E0716E7000000000000000000000000000000000BB +S315E0716E8000000000000000000000000000000000AB +S315E0716E90000000000000000000000000000000009B +S315E0716EA0000000000000000000000000000000008B +S315E0716EB0000000000000000000000000000000007B +S315E0716EC00000000000000000000000000000009FCC +S315E0716ED085000000000000000000000000000000D6 +S315E0716EE0000000000000000000000000000000004B +S315E0716EF0000000000000000000000000000000003B +S315E0716F00000000000000000000000000000000002A +S315E0716F10000000000000000000000000000000001A +S315E0716F20000000000000000000000000000000000A +S315E0716F3000000000000000000000000000000000FA +S315E0716F4000000000000000000000000000000000EA +S315E0716F5000000000000000000000000000000000DA +S315E0716F6000000000000000000000000000000000CA +S315E0716F7000000000000000000000000000000000BA +S315E0716F8000000000000000000000000000000000AA +S315E0716F90000000000000000000000000000000009A +S315E0716FA0000000000000000000000000000000008A +S315E0716FB0000000000000000000000000000000007A +S315E0716FC0000000000000000000000000000000006A +S315E0716FD0000000000000000000000000000000005A +S315E0716FE0000000000000000000000000000000004A +S315E0716FF0000000000000000000000000000000003A +S315E07170000000000000000000000000000000000029 +S315E07170100000000000000000000000000000000019 +S315E07170200000000000000000000000000000000009 +S315E071703000000000000000000000000000000000F9 +S315E071704000000000000000003E4900008080000062 +S315E07170500000000000000000000000000000800059 +S315E071706000000000000000000000000000000000C9 +S315E071707000000000000000000000000000000000B9 +S315E071708000000000000000000000000000000000A9 +S315E07170900000000000000000000000000000000099 +S315E07170A00000000000000000000000000000000089 +S315E07170B00000000000000000000000000000000079 +S315E07170C00000000000000000000000000000000069 +S315E07170D00000000000000000000000000000000059 +S315E07170E00000000000000000000000000000000049 +S315E07170F00000000000000000000000000000000039 +S315E07171000000000000000000000000000000000028 +S315E07171100000000000000000000000000000000018 +S315E07171200000000000000000000000000000000008 +S315E071713000000000000000000000000000000000F8 +S315E071714000000000000000000000000000000000E8 +S315E071715000000000000000000000000000000000D8 +S315E071716000000000000000000000000000000000C8 +S315E071717000000000000000000000000000000000B8 +S315E071718000000000000000000000000000000000A8 +S315E07171900000000000000000000000000000000098 +S315E07171A00000000000000000000000000000000088 +S315E07171B00000000000010000000000000000010175 +S315E07171C000B55D0000000000000000000000000056 +S315E07171D00000000000000000000000000000000058 +S315E07171E00000000000000000000000000000000048 +S315E07171F00000000000000000000000000000000038 +S315E07172000000000000000000000000000000000027 +S315E07172100000000000000000000000000000000017 +S315E07172200000000000000000000000000000000007 +S315E071723000000000000000000000000000000000F7 +S315E071724000000000000000000000000000000000E7 +S315E071725000000000000000000000000000000000D7 +S315E071726000000000000000000000000000000000C7 +S315E071727000000000000000000000000000000000B7 +S315E071728000000000000000000000000000000000A7 +S315E07172900000000000000000000000000000000097 +S315E07172A00000000000000000000000000000000087 +S315E07172B00000000000000000000000000000000077 +S315E07172C00000000000000000000000000000000067 +S315E07172D00000000000000000000000000000000057 +S315E07172E00000000000000000000000000000000047 +S315E07172F00000000000000000000000000000000037 +S315E07173000000000000000000000000000000000026 +S315E07173100000000000000000000000000000000016 +S315E07173200000000000000000000000000000000006 +S315E0717330000000000000000000003E49000000006F +S315E071734000000000000000000000000000000000E6 +S315E071735000000000000000000000000000000000D6 +S315E071736000000000000000000000000000000000C6 +S315E071737000000000000000000000000000000000B6 +S315E071738000000000000000000000000000000000A6 +S315E07173900000000000000000000000000000000096 +S315E07173A00000000000000000000000000000000086 +S315E07173B00000000000000000000000000000000076 +S315E07173C00000000000000000000000000000000066 +S315E07173D00000000000000000000000000000000056 +S315E07173E00000000000000000000000000000000046 +S315E07173F00000000000000000000000000000000036 +S315E07174000000000000000000000000000000000025 +S315E07174100000000000000000000000000000000015 +S315E07174200000000000000000000000000000000005 +S315E071743000000000000000000000000000000000F5 +S315E071744000000000000000000000000000000000E5 +S315E071745000000000000000000000000000000000D5 +S315E071746000000000000000000000000000000000C5 +S315E071747000000000000000000000000000000000B5 +S315E071748000000000000000000000000000000000A5 +S315E07174900000000000000000000000000000000095 +S315E07174A00000000000000000000000000000000085 +S315E07174B00000003E490000000000000000000000EE +S315E07174C00000000000000000000000000000000065 +S315E07174D00000000000000000000000000000000055 +S315E07174E00000000000000000000000000000000045 +S315E07174F00000000000000000000000000000000035 +S315E07175000000000000000000000000000000000024 +S315E07175100000000000000000000000000000000014 +S315E07175200000000000000000000000000000000004 +S315E071753000000000000000000000000000000000F4 +S315E071754000000000000000000000000000000000E4 +S315E071755000000000000000000000000000000000D4 +S315E071756000000000000000000000000000000000C4 +S315E071757000000000000000000000000000000000B4 +S315E071758000000000000000000000000000000000A4 +S315E07175900000000000000000000000000000000094 +S315E07175A00000000000000000000000000000000084 +S315E07175B00000000000000000000000000000000074 +S315E07175C00000000000000000000000000000000064 +S315E07175D00000000000000000000000000000000054 +S315E07175E00000000000000000000000000000000044 +S315E07175F00000000000000000000000000000000034 +S315E07176000000000000000000000000000000000023 +S315E07176100000000000000000000000000000000013 +S315E07176200000000000000000000000003E4900007C +S315E071763000000000000000000000000000000000F3 +S315E071764000000000000000000000000000000000E3 +S315E071765000000000000000000000000000000000D3 +S315E071766000000000000000000000000000000000C3 +S315E071767000000000000000000000000000000000B3 +S315E071768000000000000000000000000000000000A3 +S315E07176900000000000000000000000000000000093 +S315E07176A00000000000000000000000000000000083 +S315E07176B00000000000000000000000000000000073 +S315E07176C00000000000000000000000000000000063 +S315E07176D00000000000000000000000000000000053 +S315E07176E00000000000000000000000000000000043 +S315E07176F00000000000000000000000000000000033 +S315E07177000000000000000000000000000000000022 +S315E07177100000000000000000000000000000000012 +S315E07177200000000000000000000000000000000002 +S315E071773000000000000000000000000000000000F2 +S315E071774000000000000000000000000000000000E2 +S315E071775000000000000000000000000000000000D2 +S315E071776000000000000000000000000000000000C2 +S315E071777000000000000000000000000000000000B2 +S315E071778000000000000000000000000000000000A2 +S315E07177900000000000000000000000000000000092 +S315E07177A000000000003E49000000000000000000FB +S315E07177B00000000000000000000000000000000072 +S315E07177C00000000000000000000000000000000062 +S315E07177D00000000000000000000000000000000052 +S315E07177E00000000000000000000000000000000042 +S315E07177F00000000000000000000000000000000032 +S315E07178000000000000000000000000000000000021 +S315E07178100000000000000000000000000000000011 +S315E07178200000000000000000000000000000000001 +S315E071783000000000000000000000000000000000F1 +S315E071784000000000000000000000000000000000E1 +S315E071785000000000000000000000000000000000D1 +S315E071786000000000000000000000000000000000C1 +S315E071787000000000000000000000000000000000B1 +S315E071788000000000000000000000000000000000A1 +S315E07178900000000000000000000000000000000091 +S315E07178A00000000000000000000000000000000081 +S315E07178B00000000000000000000000000000000071 +S315E07178C00000000000000000000000000000000061 +S315E07178D00000000000000000000000000000000051 +S315E07178E00000000000000000000000000000000041 +S315E07178F00000000000000000000000000000000031 +S315E07179000000000000000000000000000000000020 +S315E071791000000000000000000000000100006F8917 +S315E07179200000000000000000000000000000000000 +S315E071793000000000000000000000000000000000F0 +S315E071794000000000000000000000000000000000E0 +S315E071795000000000000000000000000000000000D0 +S315E071796000000000000000000000000000000000C0 +S315E071797000000000000000000000000000000000B0 +S315E071798000000000000000000000000000000000A0 +S315E07179900000000000000000000000000000000090 +S315E07179A00000000000000000000000000000000080 +S315E07179B00000000000000000000000000000000070 +S315E07179C00000000000000000000000000000000060 +S315E07179D00000000000000000000000000000000050 +S315E07179E00000000000000000000000000000000040 +S315E07179F00000000000000000000000000000000030 +S315E0717A00000000000000000000000000000000001F +S315E0717A10000000000000000000000000000000000F +S315E0717A2000000000000000000000000000000000FF +S315E0717A3000000000000000000000000000000000EF +S315E0717A4000000000000000000000000000000000DF +S315E0717A5000000000000000000000000000000000CF +S315E0717A6000000000000000000000000000000000BF +S315E0717A7000000000000000000000000000000000AF +S315E0717A80000000000000000000000000000000009F +S315E0717A90000000000000003E490000000000000008 +S315E0717AA0000000000000000000000000000000007F +S315E0717AB0000000000000000000000000000000006F +S315E0717AC0000000000000000000000000000000005F +S315E0717AD0000000000000000000000000000000004F +S315E0717AE0000000000000000000000000000000003F +S315E0717AF0000000000000000000000000000000002F +S315E0717B00000000000000000000000000000000001E +S315E0717B10000000000000000000000000000000000E +S315E0717B2000000000000000000000000000000000FE +S315E0717B3000000000000000000000000000000000EE +S315E0717B4000000000000000000000000000000000DE +S315E0717B5000000000000000000000000000000000CE +S315E0717B6000000000000000000000000000000000BE +S315E0717B7000000000000000000000000000000000AE +S315E0717B80000000000000000000000000000000009E +S315E0717B90000000000000000000000000000000008E +S315E0717BA0000000000000000000000000000000007E +S315E0717BB0000000000000000000000000000000006E +S315E0717BC0000000000000000000000000000000005E +S315E0717BD0000000000000000000000000000000004E +S315E0717BE0000000000000000000000000000000003E +S315E0717BF0000000000000000000000000000000002E +S315E0717C00000000000000000000000100000000001C +S315E0717C103F98000000800000000000008000000036 +S315E0717C2000000000000000000000000000000000FD +S315E0717C3000000000000000000000000000000000ED +S315E0717C4000000000000000000000000000000000DD +S315E0717C5000000000000000000000000000000000CD +S315E0717C6000000000000000000000000000000000BD +S315E0717C7000000000000000000000000000000000AD +S315E0717C80000000000000000000000000000000009D +S315E0717C90000000000000000000000000000000008D +S315E0717CA0000000000000000000000000000000007D +S315E0717CB0000000000000000000000000000000006D +S315E0717CC0000000000000000000000000000000005D +S315E0717CD0000000000000000000000000000000004D +S315E0717CE0000000000000000000000000000000003D +S315E0717CF0000000000000000000000000000000002D +S315E0717D00000000000000000000000000000000001C +S315E0717D10000000000000000000000000000000000C +S315E0717D2000000000000000000000000000000000FC +S315E0717D3000000000000000000000000000000000EC +S315E0717D4000000000000000000000000000000000DC +S315E0717D5000000000000000000000000000000000CC +S315E0717D6000000000000000000000000000000000BC +S315E0717D7000000000000000000000000000000001AB +S315E0717D800000000000000000007A3A0000000000E8 +S315E0717D90000000008000000000000000000000000C +S315E0717DA0000000000000000000000000000000007C +S315E0717DB0000000000000000000000000000000006C +S315E0717DC0000000000000000000000000000000005C +S315E0717DD0000000000000000000000000000000004C +S315E0717DE0000000000000000000000000000000003C +S315E0717DF0000000000000000000000000000000002C +S315E0717E00000000000000000000000000000000001B +S315E0717E10000000000000000000000000000000000B +S315E0717E2000000000000000000000000000000000FB +S315E0717E3000000000000000000000000000000000EB +S315E0717E4000000000000000000000000000000000DB +S315E0717E5000000000000000000000000000000000CB +S315E0717E6000000000000000000000000000000000BB +S315E0717E7000000000000000000000000000000000AB +S315E0717E80000000000000000000000000000000009B +S315E0717E90000000000000000000000000000000008B +S315E0717EA0000000000000000000000000000000007B +S315E0717EB0000000000000000000000000000000006B +S315E0717EC0000000000000000000000000000000005B +S315E0717ED0000000000000000000000000000000004B +S315E0717EE0000000000000000000000000000000003B +S315E0717EF00000000000000000000100000001000029 +S315E0717F000000F93100008000000000000000000070 +S315E0717F10000000000000000000000000000000000A +S315E0717F2000000000000000000000000000000000FA +S315E0717F3000000000000000000000000000000000EA +S315E0717F4000000000000000000000000000000000DA +S315E0717F5000000000000000000000000000000000CA +S315E0717F6000000000000000000000000000000000BA +S315E0717F7000000000000000000000000000000000AA +S315E0717F80000000000000000000000000000000009A +S315E0717F90000000000000000000000000000000008A +S315E0717FA0000000000000000000000000000000007A +S315E0717FB0000000000000000000000000000000006A +S315E0717FC0000000000000000000000000000000005A +S315E0717FD0000000000000000000000000000000004A +S315E0717FE0000000000000000000000000000000003A +S315E0717FF0000000000000000000000000000000002A +S315E07180000000000000000000000000000000000019 +S315E07180100000000000000000000000000000000009 +S315E071802000000000000000000000000000000000F9 +S315E071803000000000000000000000000000000000E9 +S315E071804000000000000000000000000000000000D9 +S315E071805000000000000000000000000000000000C9 +S315E071806000000000000000000000000001000000B8 +S315E071807000000000000000000000007FAE0000007C +S315E07180800000000000000400200000040020000051 +S315E07180900000000000000000000000000100000088 +S315E07180A040010000004000000000000000000000F8 +S315E07180B00000000002001000800200100080000045 +S315E07180C00000000000000000000000000400200035 +S315E07180D00004002000000000000000000000000025 +S315E07180E000000100000040010000004000000000B7 +S315E07180F00000000000000000000002001000800295 +S315E07181000010008000000000000000000000000088 +S315E071811000000400200000040020000000000000C0 +S315E071812000000000000000000100000040010000B6 +S315E071813000400000000000000000000000000000A8 +S315E071814002001000800200100080000000000000B4 +S315E07181500000000000000000040020000004002080 +S315E071816000000000000000000000000000000100B7 +S315E07181700000400100000040000000000000000027 +S315E07181800000000000000200100080020010008074 +S315E07181900000000000000000000000000000040084 +S315E07181A02000000400200000000000000000000034 +S315E07181B000000000010000004001000000400000E6 +S315E07181C00000000000000000000000000200100046 +S315E07181D08002001000800000000000000000000036 +S315E07181E000000000040120000004002000000000EF +S315E07181F0000000003AB0000000000000000000003E +S315E07182000000000000000000000000000000000017 +S315E07182100000000000000000000000000000000007 +S315E071822000000000000000000000000000000000F7 +S315E071823000000000000000000000000000000000E7 +S315E071824000000000000000000000000000000000D7 +S315E071825000000000000000000000000000000000C7 +S315E071826000000000000000000000000000000000B7 +S315E071827000000000000000000000000000000000A7 +S315E07182800000000000000000000000000000000097 +S315E07182900000000000000000000000000000000087 +S315E07182A00000000000000000000000000000000077 +S315E07182B00000000000000000000000000000000067 +S315E07182C00000000000000000000000000000000057 +S315E07182D00000000000000000000000000000000047 +S315E07182E00000000000000000000000000000000037 +S315E07182F00000000000000000000000000000000027 +S315E07183000000000000000000000000000000000016 +S315E07183100000000000000000000000000000000006 +S315E071832000000000000000000000000000000000F6 +S315E071833000000000000000000000000000000000E6 +S315E071834000000000000000000000000000000000D6 +S315E071835000000000000000000000000000000000C6 +S315E0718360000000000000000000000000003E49002F +S315E071837000000000000000000000000000000000A6 +S315E07183800000000000000000000000000000000096 +S315E07183900000000000000000000000000000000086 +S315E07183A00000000000000000000000000000000076 +S315E07183B00000000000000000000000000000000066 +S315E07183C00000000000000000000000000000000056 +S315E07183D00000000000000000000000000000000046 +S315E07183E00000000000000000000000000000000036 +S315E07183F00000000000000000000000000000000026 +S315E07184000000000000000000000000000000000015 +S315E07184100000000000000000000000000000000005 +S315E071842000000000000000000000000000000000F5 +S315E071843000000000000000000000000000000000E5 +S315E071844000000000000000000000000000000000D5 +S315E071845000000000000000000000000000000000C5 +S315E071846000000000000000000000000000000000B5 +S315E071847000000000000000000000000000000000A5 +S315E07184800000000000000000000000000000000095 +S315E07184900000000000000000000000000000000085 +S315E07184A00000000000000000000000000000000075 +S315E07184B00000000000000000000000000000000065 +S315E07184C00000000000000000000000000000000055 +S315E07184D00000000000000000000000000000000045 +S315E07184E00000000000003E490000000000000000AE +S315E07184F00000000000000000000000000000000025 +S315E07185000000000000000000000000000000000014 +S315E07185100000000000000000000000000000000004 +S315E071852000000000000000000000000000000000F4 +S315E071853000000000000000000000000000000000E4 +S315E071854000000000000000000000000000000000D4 +S315E071855000000000000000000000000000000000C4 +S315E071856000000000000000000000000000000000B4 +S315E071857000000000000000000000000000000000A4 +S315E07185800000000000000000000000000000000094 +S315E07185900000000000000000000000000000000084 +S315E07185A00000000000000000000000000000000074 +S315E07185B00000000000000000000000000000000064 +S315E07185C00000000000000000000000000000000054 +S315E07185D00000000000000000000000000000000044 +S315E07185E00000000000000000000000000000000034 +S315E07185F00000000000000000000000000000000024 +S315E07186000000000000000000000000000000000013 +S315E07186100000000000000000000000000000000003 +S315E071862000000000000000000000000000000000F3 +S315E071863000000000000000000000000000000000E3 +S315E071864000000000000000000000000000000000D3 +S315E07186500000000000000000000000000101006E53 +S315E0718660190000000000000000000000000000009A +S315E071867000000000000000000000000000000000A3 +S315E07186800000000000000000000000000000000093 +S315E07186900000000000000000000000000000000083 +S315E07186A00000000000000000000000000000000073 +S315E07186B00000000000000000000000000000000063 +S315E07186C00000000000000000000000000000000053 +S315E07186D00000000000000000000000000000000043 +S315E07186E00000000000000000000000000000000033 +S315E07186F00000000000000000000000000000000023 +S315E07187000000000000000000000000000000000012 +S315E07187100000000000000000000000000000000002 +S315E071872000000000000000000000000000000000F2 +S315E071873000000000000000000000000000000000E2 +S315E071874000000000000000000000000000000000D2 +S315E071875000000000000000000000000000000000C2 +S315E071876000000000000000000000000000000000B2 +S315E071877000000000000000000000000000000000A2 +S315E07187800000000000000000000000000000000092 +S315E07187900000000000000000000000000000000082 +S315E07187A00000000000000000000000000000000072 +S315E07187B00000000000000000000000000000000062 +S315E07187C00000000000000000000000000000000052 +S315E07187D000000000000000003E49000000000000BB +S315E07187E00000000000000000000000000000000032 +S315E07187F00000000000000000000000000000000022 +S315E07188000000000000000000000000000000000011 +S315E07188100000000000000000000000000000000001 +S315E071882000000000000000000000000000000000F1 +S315E071883000000000000000000000000000000000E1 +S315E071884000000000000000000000000000000000D1 +S315E071885000000000000000000000000000000000C1 +S315E071886000000000000000000000000000000000B1 +S315E071887000000000000000000000000000000000A1 +S315E07188800000000000000000000000000000000091 +S315E07188900000000000000000000000000000000081 +S315E07188A00000000000000000000000000000000071 +S315E07188B00000000000000000000000000000000061 +S315E07188C00000000000000000000000000000000051 +S315E07188D00000000000000000000000000000000041 +S315E07188E00000000000000000000000000000000031 +S315E07188F00000000000000000000000000000000021 +S315E07189000000000000000000000000000000000010 +S315E07189100000000000000000000000000000000000 +S315E071892000000000000000000000000000000000F0 +S315E071893000000000000000000000000000000000E0 +S315E071894000000000000000000000000000000000D0 +S315E0718950003E490000000000000000000000000039 +S315E071896000000000000000000000000000000000B0 +S315E071897000000000000000000000000000000000A0 +S315E07189800000000000000000000000000000000090 +S315E07189900000000000000000000000000000000080 +S315E07189A00000000000000000000000000000000070 +S315E07189B00000000000000000000000000000000060 +S315E07189C00000000000000000000000000000000050 +S315E07189D00000000000000000000000000000000040 +S315E07189E00000000000000000000000000000000030 +S315E07189F00000000000000000000000000000000020 +S315E0718A00000000000000000000000000000000000F +S315E0718A1000000000000000000000000000000000FF +S315E0718A2000000000000000000000000000000000EF +S315E0718A3000000000000000000000000000000000DF +S315E0718A4000000000000000000000000000000000CF +S315E0718A5000000000000000000000000000000000BF +S315E0718A6000000000000000000000000000000000AF +S315E0718A70000000000000000000000000000000009F +S315E0718A80000000000000000000000000000000008F +S315E0718A90000000000000000000000000000000007F +S315E0718AA0000000000000000000000000000000006F +S315E0718AB0000000000000000000000000000000005F +S315E0718AC0000000000000000000003E4900000000C8 +S315E0718AD0000000000000000004002000000000001B +S315E0718AE0000000000000000000000000000001002E +S315E0718AF000004000000000000000000000000000DF +S315E0718B00000000000000020010008000000000007C +S315E0718B1000000000000000000000000000000400FA +S315E0718B2020000000000000000000000000000000CE +S315E0718B30000000000100000040000000000000009D +S315E0718B4000000000000000000000000002001000BC +S315E0718B50800000000000000000000000000000003E +S315E0718B60000000000400200000000000000000008A +S315E0718B70000000000000000000000100000040005D +S315E0718B80000000000000000000000000000000008E +S315E0718B9000000200100080000000000000000000EC +S315E0718BA0000000000000000000000400200000004A +S315E0718BB0000000000000000000000000000000005E +S315E0718BC0010000004000000000000000000000000D +S315E0718BD000000000000000000200100080000000AC +S315E0718BE0000000000000000000000000000000002E +S315E0718BF004002000000000000000000000000000FA +S315E0718C0000000000000001000000400000000000CC +S315E0718C1000000000000000000000000000000200FB +S315E0718C20100080000000000000000000000000005D +S315E0718C3000000000000004002000000000000000B9 +S315E0718C40000000B3B8000000000000000000000062 +S315E0718C500004002000000000000000000000000099 +S315E0718C60000000000000000100000040000000006C +S315E0718C70000000000000000000000000000000029B +S315E0718C8000100080000000000000000000000000FD +S315E0718C900000000000000004002000000000000059 +S315E0718CA0000000000000000000000000000100006C +S315E0718CB0004000000000000000000000000000001D +S315E0718CC000000000000200100080000000000000BB +S315E0718CD00000000000000000000000000004002019 +S315E0718CE0000000000000000000000000000000002D +S315E0718CF000000001000000400000000000000000DC +S315E0718D00000000000000000000000002001000807A +S315E0718D1000000000000000000000000000000000FC +S315E0718D2000000004002000000000000000000000C8 +S315E0718D30000000000000000000010000004000009B +S315E0718D4000000000000000000000000000000000CC +S315E0718D50000200100080000000000000000000002A +S315E0718D600000000000000000000400200000000088 +S315E0718D70000000000000000000000000000000019B +S315E0718D80000000400000000000000000000000004C +S315E0718D9000000000000000020010008000000000EA +S315E0718DA00000000000000000000000010000000467 +S315E0718DB0002100000000000000010000B71400006F +S315E0718DC00000000000000000000004002000000028 +S315E0718DD0000000000000000000000000000000003C +S315E0718DE001000000400000000000000000000000EB +S315E0718DF0000000000000000002001000800000008A +S315E0718E00000000000000000000000000000000000B +S315E0718E1004002000000000000000000000000000D7 +S315E0718E2000000000000001000000400000000000AA +S315E0718E3000000000000000000000000000000200D9 +S315E0718E40100080000000000000000000000000003B +S315E0718E500000000000000400200000000000000097 +S315E0718E6000000000000000000000000001000000AA +S315E0718E70400000000000000000000000000000005B +S315E0718E8000000000020010008000000000000000F9 +S315E0718E900000000000000000000000000400200057 +S315E0718EA0000000000000000000000000000000006B +S315E0718EB0000001000000400000000000000000001A +S315E0718EC000000000000000000000020010008000B9 +S315E0718ED0000000000000000000000000000000003B +S315E0718EE00000040020000000000000000000000007 +S315E0718EF000000000000000000100000040000000DA +S315E0718F00000000000000000000000000000000000A +S315E0718F100200100080000000000000000000000068 +S315E0718F2000000000000000000400200001000000C5 +S315E0718F300000000000BE2800000303141460600006 +S315E0718F400003031014406000000707303040400012 +S315E0718F500007073030C0C000000607303080C0011E +S315E0718F6001060670708080010106067070808001CE +S315E0718F700104066070008003031414E0E00000034E +S315E0718F80031414E0E0000003031014C0E0000007CE +S315E0718F90073030C0C0000007073030C0C00000069F +S315E0718FA007303080C00101060670708080010106CD +S315E0718FB006707080800101040660700080030314FE +S315E0718FC014E0E0000003031414E0E0000003031072 +S315E0718FD014C0E0000007073030C0C000000707305A +S315E0718FE030C0C000000607303080C001010606704F +S315E0718FF07080800101060670708080010104066050 +S315E071900070008003031414E0E0000003031414E01D +S315E0719010E0000003031014C0E0000007073030C021 +S315E0719020C0000007073030C0C0000006073030804E +S315E0719030C0010106067070808001010606707080BD +S315E071904080010104066070008003031414E0E000FF +S315E07190500003031414E0E0000003031014C0E00001 +S315E07190600007073030C0C0000007073030C0C000CD +S315E0719070000607303080C0010106067070808001FD +S315E0719080010606707080800101040660700080033D +S315E0719090031414E0E0000002021C1CE0E000000290 +S315E07190A002181CC0E0000006063838C0C00018CEB1 +S315E07190B00000000000000000000000000000000059 +S315E07190C00000000000000000000000000000000049 +S315E07190D00000000000000000000000000000000039 +S315E07190E00000000000000000000000000000000029 +S315E07190F00000000000000000000000000000000019 +S315E07191000000000000000000000000000000000008 +S315E071911000000000000000000000000000000000F8 +S315E071912000000000000000000000000000000000E8 +S315E071913000000000000000000000000000000000D8 +S315E071914000000000000000000000000000000000C8 +S315E071915000000000000000000000000000000000B8 +S315E071916000000000000000000000000000000000A8 +S315E07191700000000000000000000000000000000098 +S315E07191800000000000000000000000000000000088 +S315E07191900000000000000000000000000000000078 +S315E07191A00000000000000000000000000000000068 +S315E07191B00000000000000000000000000000000058 +S315E07191C00000000000000000000000000000000048 +S315E07191D00000000000000000000000000000000038 +S315E07191E00000000000000000000000000000000028 +S315E07191F00000000000000000000000000000000018 +S315E07192000000000000000000000000000000000007 +S315E071921000000000000000000000000000000000F7 +S315E0719220000000000000003E490000000000000060 +S315E071923000000000000000000400000000000000D3 +S315E071924000000000000000000000000000000000C7 +S315E071925000000000000000000000000000000000B7 +S315E071926000000000000000000000000000000000A7 +S315E07192700000000000000000000000000000000097 +S315E071928000000000000000200000000000800000E7 +S315E07192900000000000000001000000000000000076 +S315E07192A00000000000000000000000000000000067 +S315E07192B00000000000000000000000000000000057 +S315E07192C00000000000000000000000000000000047 +S315E07192D00000000000000000000000000000000037 +S315E07192E000000000004000000000000000000000E7 +S315E07192F00000000000020000000000000000000015 +S315E07193000000000000000000000000000000000006 +S315E071931000000000000000000000000000000000F6 +S315E071932000000000000000000000000000000000E6 +S315E071933000000000000000000000000000000000D6 +S315E071934000000000000000000000000000000000C6 +S315E071935000000000000000000000000000000000B6 +S315E071936000000000000000000000000000000000A6 +S315E07193700000000000000000000000000000000096 +S315E07193800000000000000000000000000000000086 +S315E07193900000000000000000000000000000002056 +S315E07193A01FAC00000000000000000080000000001B +S315E07193B00000000000000000000000000000000056 +S315E07193C00000000000000000000000000000000046 +S315E07193D00020000000000000000000000000000016 +S315E07193E00000000000000000000000000000000026 +S315E07193F00000000000000000000000000000800096 +S315E07194000000000000000000000000000000000005 +S315E07194100000000000000000000000000000008075 +S315E071942000000000000000000000000000000000E5 +S315E071943000000000000000000000000000000000D5 +S315E071944000000000000000000000000000000000C5 +S315E071945000000000000000000000000000000000B5 +S315E071946000000000000000000000000000000000A5 +S315E07194700000000000000000000000000000000095 +S315E07194800000000000000000000000000000000085 +S315E07194900000000000000000000000000000000075 +S315E07194A00000000000000000000000000000000065 +S315E07194B00000000000000000000000000000000055 +S315E07194C00000000000000000000000000000000045 +S315E07194D00000000000000000000000000000000035 +S315E07194E00000000000000000000000000000000025 +S315E07194F00000000000000000000000000000000015 +S315E07195000000000000000000000000000000000004 +S315E071951000010000000000000022250000000000AC +S315E07195200000000004800000000000000000000060 +S315E071953000000000000000000000000000000000D4 +S315E071954000000000000000000000000000000000C4 +S315E071955000000000000000000000000000000000B4 +S315E071956000000000000000000000000000000000A4 +S315E07195700020000000000000000000000000000074 +S315E07195800000000000010000000000000000000083 +S315E071959000000000000000008000000000000000F4 +S315E07195A00000000000000000000000000000000064 +S315E07195B00000000000000000000000000000000054 +S315E07195C00000000000000000000000000000004004 +S315E07195D00000000000000000000000000000000034 +S315E07195E00000000200000000000000000000000022 +S315E07195F00000000000000000000000000000000014 +S315E07196000000000000000000000000000000000003 +S315E071961000000000000000000000000000000000F3 +S315E071962000000000000000000000000000000000E3 +S315E071963000000000000000000000000000000000D3 +S315E071964000000000000000000000000000000000C3 +S315E071965000000000000000000000000000000000B3 +S315E071966000000000000000000000000000000000A3 +S315E07196700000000000000000000000000000000093 +S315E07196800000000000000000002001000000000062 +S315E071969000004162000000000000000000000000D0 +S315E07196A00000000000000000000000000000000063 +S315E07196B00000000000000000000000000000000053 +S315E07196C00000000020000000000000000000000023 +S315E07196D00000000000000000000000000000000033 +S315E07196E000000000000000000000000000000080A3 +S315E07196F00000000000000000000000000000000013 +S315E07197000000000000000000000000000000000002 +S315E07197100000000000800000000000000000000072 +S315E071972000000000000000000000000000000000E2 +S315E071973000000000000000000000000000000000D2 +S315E071974000000000000000000000000000000000C2 +S315E071975000000000000000000000000000000000B2 +S315E071976000000000000000000000000000000000A2 +S315E07197700000000000000000000000000000000092 +S315E07197800000000000000000000000000000000082 +S315E07197900000000000000000000000000000000072 +S315E07197A00000000000000000000000000000000062 +S315E07197B00000000000000000000000000000000052 +S315E07197C00000000000000000000000000000000042 +S315E07197D00000000000000000000000000000000032 +S315E07197E00000000000000000000000000000000022 +S315E07197F00000000000000100000000000000000011 +S315E07198000000010000000000000000CFF800000039 +S315E071981000000000000000000000000000002000D1 +S315E071982000000000000000000000000000000000E1 +S315E071983000000000000000000000000000000000D1 +S315E071984000000000000000000000000000000000C1 +S315E071985000000000000000000000000000000000B1 +S315E071986000000000000000000000000000000000A1 +S315E07198700000000000000000000000000000000091 +S315E07198800000000000000000000000000000000081 +S315E07198900000000000000000000000000000000071 +S315E07198A00000000000000000000000000000000061 +S315E07198B00000000000000000000000000000000051 +S315E07198C00000000000000000000000000000000041 +S315E07198D00000000000000000000000000000000031 +S315E07198E00000000000000000000000000000000021 +S315E07198F00000000000000000000000000000000011 +S315E07199000000000000000000000000000000000000 +S315E071991000000000000000000000000000000000F0 +S315E071992000000000000000000000000000000000E0 +S315E071993000000000000000000000000000000000D0 +S315E071994000000000000000000000000000000000C0 +S315E071995000000000000000000000000000000000B0 +S315E071996000000000000000000000000000000000A0 +S315E0719970000000000000000000010000000000008F +S315E071998000000000416F0000808000000000008050 +S315E07199900000000000000000000000000000000070 +S315E07199A00000000000000000000000000000000060 +S315E07199B00000000000000000000000000000000050 +S315E07199C00000000000000000000000000000000040 +S315E07199D00000000000000000000000000000000030 +S315E07199E00000000000000000000000000000000020 +S315E07199F00000000000000000000000000000000010 +S315E0719A0000000000000000000000000000000000FF +S315E0719A1000000000000000000000000000000000EF +S315E0719A2000000000000000000000000000000000DF +S315E0719A3000000000000000000000000000000000CF +S315E0719A4000000000000000000000000000000000BF +S315E0719A5000000000000000000000000000000000AF +S315E0719A60000000000000000000000000000000009F +S315E0719A70000000000000000000008000000000000F +S315E0719A8000000000000000000000800000000000FF +S315E0719A90000000000000000000000000000000006F +S315E0719AA0000000000000000000000000000000005F +S315E0719AB000800000000000000000000000000000CF +S315E0719AC0000000000000000000000000000000003F +S315E0719AD0000000000000000000000000000000002F +S315E0719AE0000000000000000000000000000000001F +S315E0719AF000000000000000000000010100C1C80084 +S315E0719B00000000000000000080000000000000007E +S315E0719B1020000000000000000000000000000000CE +S315E0719B2000000000000000000000000000000000DE +S315E0719B3000000000000000000000000000000000CE +S315E0719B4000000000000000000000000000000000BE +S315E0719B5000000000000000000000000000000000AE +S315E0719B60000000000000000000000000000000009E +S315E0719B70000000000000000000000000000000008E +S315E0719B80000000000000000000000000000000007E +S315E0719B90000000000000000000000000000000006E +S315E0719BA0000000000000000000000000000000005E +S315E0719BB0000000000000000000000000000000004E +S315E0719BC0000000000000000000000000000000003E +S315E0719BD0000000000000000000000000000000002E +S315E0719BE0000000000000000000000000000000001E +S315E0719BF0000080000000000000000000000000008E +S315E0719C00000000800000000000000000000000007D +S315E0719C1000000000000000000000000000000000ED +S315E0719C20000000000000000000008000000000005D +S315E0719C3000000000000000000000000000000000CD +S315E0719C4000000000000000000000000000000000BD +S315E0719C5000000000000000000000000000000000AD +S315E0719C60000000000000000000000000000000009D +S315E0719C700000000000008258008000000000000033 +S315E0719C80000000000000000000000000000000007D +S315E0719C90000000000000000000000000000000006D +S315E0719CA0000000000000000000000000000000005D +S315E0719CB0000000000000000000000000000000004D +S315E0719CC000000000004000000000000000000000FD +S315E0719CD0000000000000000000000000000000002D +S315E0719CE0000000000000000000000000000000001D +S315E0719CF0000000000000000000000000000000000D +S315E0719D0000000000000000000000000000000000FC +S315E0719D1000000000000000000000000000000000EC +S315E0719D20000000800000000000000000000000005C +S315E0719D3000000000000000000000000000000000CC +S315E0719D4000000000000000000000000000000000BC +S315E0719D5000000000000000000000000000000000AC +S315E0719D60000000000000000000000000000000009C +S315E0719D70000000000000000000000000000000008C +S315E0719D80000000000000000000000000000000007C +S315E0719D90000001000000000001000000000000006A +S315E0719DA000000000000000008000000000000000DC +S315E0719DB0000000000000000000000000000000004C +S315E0719DC0000000000000000000010000000000003B +S315E0719DD0000000000000000000000000000000002C +S315E0719DE0000000000000000000000000000000A27A +S315E0719DF08B00000000000000000000000000000081 +S315E0719E00000000800000000000000000000000007B +S315E0719E1000000000000000000000000000000000EB +S315E0719E2000000000000000000000000000000000DB +S315E0719E3000000000000000000000000000000000CB +S315E0719E4000000000000000000000000000000000BB +S315E0719E5000000000000000000000000000000000AB +S315E0719E60000000000000000000000000000000009B +S315E0719E70000000000000000000000000000000008B +S315E0719E80000000000000000000000000000000007B +S315E0719E90000000000000000000000000000000006B +S315E0719EA0000000000000000000000000000000005B +S315E0719EB0000000000000000000000000000000004B +S315E0719EC0000000000000000000000000000000003B +S315E0719ED0000000000000000000000000000000002B +S315E0719EE0000000000000000000000000000000001B +S315E0719EF0000000000000000000000000000000000B +S315E0719F0000000000000000000000000000000000FA +S315E0719F1001000000000000000000000000000000E9 +S315E0719F2000000000000000000000000000000000DA +S315E0719F3000000000000000000000000000000000CA +S315E0719F4000000100000000000000000000000000B9 +S315E0719F5000000000000000000000000000000000AA +S315E0719F600000000000000000314400000000000025 +S315E0719F70000000000000000000000000000000800A +S315E0719F80000000000000000000000000000000007A +S315E0719F90000000000000000000000000000000006A +S315E0719FA0000000000000000000000000000000005A +S315E0719FB0000000000000000000000000000000004A +S315E0719FC0000000000000000000000000000000003A +S315E0719FD0000000000000000000000000000000002A +S315E0719FE0000000000000000000000000000000001A +S315E0719FF0000000000000000000000000000000000A +S315E071A00000000000000000000000000000000000F9 +S315E071A01000000000000000000000000000000000E9 +S315E071A02000000000000000000000000000000000D9 +S315E071A03000000000000000000000000000000000C9 +S315E071A04000000000000000000000000000000000B9 +S315E071A05000000000000000000000000000000000A9 +S315E071A0600000000000000000000000000000000099 +S315E071A0700000000000000000000000000000000089 +S315E071A0800000000001000000000000000000000078 +S315E071A0900000000000000000000000000000000069 +S315E071A0A00000000000000000000000000000000059 +S315E071A0B00000000000010000000000000000000048 +S315E071A0C00000000000000000000000000000000039 +S315E071A0D00000000000000000000000000000000029 +S315E071A0E000F35B000000000000000000800000004B +S315E071A0F00000000000000000000000000000000009 +S315E071A10000000000000000000000000000000000F8 +S315E071A11000000000000000000000000000000000E8 +S315E071A12000000000000000000000000000000000D8 +S315E071A1304000000000000000000000000000000088 +S315E071A14000000000000000000000000000000000B8 +S315E071A15000000000000000000000000000000000A8 +S315E071A1600000000000000000000000000000000098 +S315E071A1700000000000000000000000000000000088 +S315E071A18000000000000000000000000000008000F8 +S315E071A1900000000000000000000000000000000068 +S315E071A1A00000000000000000000000000000000058 +S315E071A1B00000000000000000000000000000000048 +S315E071A1C00000000000000000000000000000000038 +S315E071A1D000000000008000000000000000000000A8 +S315E071A1E00000000000000000000000000000000018 +S315E071A1F00000000000000000000000000000000008 +S315E071A20000000000000000000000000000000000F7 +S315E071A2100000800000000000000000000000000067 +S315E071A22000000000000000000000000000000000D7 +S315E071A23000000000000000000000000000000000C7 +S315E071A24000000000000000000000000000000000B7 +S315E071A25000000000000000000000176D00800000A3 +S315E071A2600000000000000000000000000000000097 +S315E071A2700080000000000000000000000000000007 +S315E071A2800000000000000000000000000000000077 +S315E071A2900000000000000000000000000000000067 +S315E071A2A00000000000000000000000000000000057 +S315E071A2B00000000000000000000000000000000047 +S315E071A2C00000000000000000000000000000000037 +S315E071A2D00000000000000000000000000000000027 +S315E071A2E00000000000000000000000000000000017 +S315E071A2F00000000000000000000000000000000007 +S315E071A30000000000000000000000000000000000F6 +S315E071A31000000000000000000000000000000000E6 +S315E071A32000000000000000000000000000000000D6 +S315E071A33000000000000000000000000000000000C6 +S315E071A34000000000000000000000000000000000B6 +S315E071A35000000000000000000000000000000000A6 +S315E071A3600000000000000000000000000000000096 +S315E071A3700000000000000000000000000000000086 +S315E071A3800000000000000000000000000000000076 +S315E071A3900000000000000000000000000000000066 +S315E071A3A00000000000000000000000000000000056 +S315E071A3B00000000000000000000000000000000046 +S315E071A3C00000000000000000000000000000000036 +S315E071A3D0000000A5FA000000000000000000000087 +S315E071A3E08000000000000000800000000000000016 +S315E071A3F00000000000000000000000000000000006 +S315E071A40000000000000000000000000000000000F5 +S315E071A41000000000000000000000000000000000E5 +S315E071A42000000000000000000000000000000000D5 +S315E071A43000000000000000000000000000000000C5 +S315E071A44000000000000000000000000000000000B5 +S315E071A45000000000000000000000000000000000A5 +S315E071A4600000000000000000000000000000000095 +S315E071A4700000000000000000000000000000000085 +S315E071A4800000000000000000000000000000000075 +S315E071A4900000000000000000000000000000000065 +S315E071A4A00000000000000000000000000000000055 +S315E071A4B00000000000000000000000000000000045 +S315E071A4C00000000000000000000000000000000035 +S315E071A4D00000000000000000000000000000000025 +S315E071A4E00000000000000000000000000000000015 +S315E071A4F00000000000000000000000000000000005 +S315E071A50000000000000000000000000000000000F4 +S315E071A51000000000000000000000000000000000E4 +S315E071A52000000000000000000000000000000000D4 +S315E071A53000000000000000000000000000000000C4 +S315E071A540000000000000000000000000143500006B +S315E071A55000000000000000000000000000000000A4 +S315E071A5600000000000000000000000000000000094 +S315E071A5700000000000000000000000000000000084 +S315E071A5800000000000000000000000000000000074 +S315E071A5900000000000000000000000000000000064 +S315E071A5A00000000000000000000000000000000054 +S315E071A5B00000000000000000000000000000000044 +S315E071A5C00000000000000000000000000000000034 +S315E071A5D00000000000000000000000000000000024 +S315E071A5E00000000000000000000000000000000014 +S315E071A5F00000000000000000000000000000000004 +S315E071A60000000000000000000000000000000000F3 +S315E071A61000000000000000000000000000000000E3 +S315E071A62000000000000000000000000000000000D3 +S315E071A63000000000000000000000000000000000C3 +S315E071A64000000000000000000000000000000000B3 +S315E071A65000000000000000000000000000000000A3 +S315E071A6600000000000000000000000000000000093 +S315E071A6700000000000000000000000000000000083 +S315E071A6800000000000000000000000000000000073 +S315E071A6900000000000000000000000000000000063 +S315E071A6A00000000000000000000000000000000053 +S315E071A6B00000000000000000000000000000000043 +S315E071A6C000000100006F890000000000000000003A +S315E071A6D00000000000000000000000000000000023 +S315E071A6E00000000000000000000000000000000013 +S315E071A6F00000000000000000000000000000000003 +S315E071A70000000000000000000000000000000000F2 +S315E071A71000000000000000000000000000000000E2 +S315E071A72000000000000000000000000000000000D2 +S315E071A73000000000000000000000000000000000C2 +S315E071A74000000000000000000000000000000000B2 +S315E071A75000000000000000000000000000000000A2 +S315E071A7600000000000000000000000000000000092 +S315E071A7700000000000000000000000000000000082 +S315E071A7800000000000000000000000000000000072 +S315E071A7900000000000000000000000000000000062 +S315E071A7A00000000000000000000000000000000052 +S315E071A7B00000000000000000000000000000000042 +S315E071A7C00000000000000000000000000000000032 +S315E071A7D00000000000000000000000000000000022 +S315E071A7E00000000000000000000000000000000012 +S315E071A7F00000000000000000000000000000000002 +S315E071A80000000000000000000000000000000000F1 +S315E071A81000000000000000000000000000000000E1 +S315E071A82000000000000000000000000000000000D1 +S315E071A83000000000000000000000000000003E493A +S315E071A84000000000000000000000000000000000B1 +S315E071A85000000000000000000000000000000000A1 +S315E071A8600000000000000000000000000000000091 +S315E071A8700000000000000000000000000000000081 +S315E071A8800000000000000000000000000000000071 +S315E071A8900000000000000000000000000000000061 +S315E071A8A00000000000000000000000000000000051 +S315E071A8B00000000000000000000000000000000041 +S315E071A8C00000000000000000000000000000000031 +S315E071A8D00000000000000000000000000000000021 +S315E071A8E00000000000000000000000000000000011 +S315E071A8F00000000000000000000000000000000001 +S315E071A90000000000000000000000000000000000F0 +S315E071A91000000000000000000000000000000000E0 +S315E071A92000000000000000000000000000000000D0 +S315E071A93000000000000000000000000000000000C0 +S315E071A94000000000000000000000000000000000B0 +S315E071A95000000000000000000000000000000000A0 +S315E071A9600000000000000000000000000000000090 +S315E071A9700000000000000000000000000000000080 +S315E071A9800000000000000000000000000000000070 +S315E071A9900000000000000000000000000000000060 +S315E071A9A00000000000000000000000000000000050 +S315E071A9B0000000000001003FD90000000000000027 +S315E071A9C00000000000000000000000000000000030 +S315E071A9D00000000000000000000000000000000020 +S315E071A9E00000000000000000000000000000000010 +S315E071A9F00000000000000000000000000000000000 +S315E071AA0000000000000000000000000000000000EF +S315E071AA1000000000000000000000000000000000DF +S315E071AA2000000000000000000000000000000000CF +S315E071AA3000000000000000000000000000000000BF +S315E071AA4000000000000000000000000000000000AF +S315E071AA50000000000000000000000000000000009F +S315E071AA60000000000000000000000000000000008F +S315E071AA70000000000000000000000000000000007F +S315E071AA80000000000000000000000000000000006F +S315E071AA90000000000000000000000000000000005F +S315E071AAA0000000000000000000000000000000004F +S315E071AAB0000000000000000000000000000000003F +S315E071AAC0000000000000000000000000000000002F +S315E071AAD0000000000000000000000000000000001F +S315E071AAE0000000000000000000000000000000000F +S315E071AAF000000000000000000000000000000000FF +S315E071AB0000000000000000000000000000000000EE +S315E071AB1000000000000000000000000000000000DE +S315E071AB2000000000000000000000000000000000CE +S315E071AB303E49000000000000000000000000000037 +S315E071AB4000000000000000000000000000000000AE +S315E071AB50000000000000000000000000000000009E +S315E071AB60000000000000000000000000000000008E +S315E071AB70000000000000000000000000000000007E +S315E071AB80000000000000000000000000000000006E +S315E071AB90000000000000000000000000000000005E +S315E071ABA0000000000000000000000000000000004E +S315E071ABB0000000000000000000000000000000003E +S315E071ABC0000000000000000000000000000000002E +S315E071ABD0000000000000000000000000000000001E +S315E071ABE0000000000000000000000000000000000E +S315E071ABF000000000000000000000000000000000FE +S315E071AC0000000000000000000000000000000000ED +S315E071AC1000000000000000000000000000000000DD +S315E071AC2000000000000000000000000000000000CD +S315E071AC3000000000000000000000000000000000BD +S315E071AC4000000000000000000000000000000000AD +S315E071AC50000000000000000000000000000000009D +S315E071AC60000000000000000000000000000000008D +S315E071AC70000000000000000000000000000000007D +S315E071AC80000000000000000000000000000000006D +S315E071AC90000000000000000000000000000000005D +S315E071ACA00000000000000000003E490000000000C6 +S315E071ACB0000000000080000000000000008000003D +S315E071ACC0000000000000000000000000000000002D +S315E071ACD0000000000000000000000000000000001D +S315E071ACE0000000000000000000000000000000000D +S315E071ACF000000000000000000000000000000000FD +S315E071AD0000000000000000000000000000000000EC +S315E071AD1000000000000000000000000000000000DC +S315E071AD2000000000000000000000000000000000CC +S315E071AD3000000000000000000000000000000000BC +S315E071AD4000000000000000000000000000000000AC +S315E071AD50000000000000000000000000000000009C +S315E071AD60000000000000000000000000000000008C +S315E071AD70000000000000000000000000000000007C +S315E071AD80000000000000000000000000000000006C +S315E071AD90000000000000000000000000000000005C +S315E071ADA0000000000000000000000000000000004C +S315E071ADB0000000000000000000000000000000003C +S315E071ADC0000000000000000000000000000000002C +S315E071ADD0000000000000000000000000000000001C +S315E071ADE0000000000000000000000000000000000C +S315E071ADF000000000000000000000000000000000FC +S315E071AE0000000000000000000000000000000000EB +S315E071AE1000000000000000000000000000000000DB +S315E071AE200000C39600008080000000000000000072 +S315E071AE30000000000000008000000000000000003B +S315E071AE4000000000000000000000000000000000AB +S315E071AE50000000000000000000000000000000009B +S315E071AE60000000000000000000000000000000008B +S315E071AE70000000000000000000000000000000007B +S315E071AE80000000000000000000000000000000006B +S315E071AE90000000000000000000000000000000005B +S315E071AEA0000000000000000000000000000000004B +S315E071AEB0000000000000000000000000000000003B +S315E071AEC0000000000000000000000000000000002B +S315E071AED0000000000000000000000000000000001B +S315E071AEE0000000000000000000000000000000000B +S315E071AEF000000000000000000000000000000000FB +S315E071AF0000000000000000000000000000000000EA +S315E071AF1000000000000000000000000000000000DA +S315E071AF2000000000000000000000000000000000CA +S315E071AF3000000000000000000000000000000000BA +S315E071AF4000000000000000000000000000000000AA +S315E071AF50000000000000000000000000000000009A +S315E071AF60000000000000000000000000000000008A +S315E071AF70000000000000000000000000000000007A +S315E071AF80000000000000000000000000000000006A +S315E071AF900000000000000000010100FB220000003B +S315E071AFA0000000000000000000000000000000004A +S315E071AFB0000000000000000000000000000000003A +S315E071AFC0000000000000000000000000000000002A +S315E071AFD0000000000000000000000000000000001A +S315E071AFE0000000000000000000000000000000000A +S315E071AFF000000000000000000000000000000000FA +S315E071B00000000000000000000000000000000000E9 +S315E071B01000000000000000000000000000000000D9 +S315E071B02000000000000000000000000000000000C9 +S315E071B03000000000000000000000000000000000B9 +S315E071B04000000000000000000000000000000000A9 +S315E071B0500000000000000000000000000000000099 +S315E071B0600000000000000000000000000000000089 +S315E071B0700000000000000000000000000000000079 +S315E071B0800000000000000000000000000000000069 +S315E071B0900000000000000000000000000000000059 +S315E071B0A00000000000000000000000000000000049 +S315E071B0B00000000000000000000000000000000039 +S315E071B0C00000000000000000000000000000000029 +S315E071B0D00000000000000000000000000000000019 +S315E071B0E00000000000000000000000000000000009 +S315E071B0F000000000000000000000000000000000F9 +S315E071B10000000000000000000000000000000000E8 +S315E071B110000000003E490080000000000000008051 +S315E071B12000000000000000800080000000000000C8 +S315E071B13000000000000000000000000000000000B8 +S315E071B14000000000000000000000000000000000A8 +S315E071B1500000000000000000000000000000000098 +S315E071B1600000000000000000000000000000000088 +S315E071B1700000000000000000000000000000000078 +S315E071B1800000000000000000000000000000000068 +S315E071B1900000000000000000000000000000000058 +S315E071B1A00000000000000000000000000000000048 +S315E071B1B00000000000000000000000000000000038 +S315E071B1C00000000000000000000000000000000028 +S315E071B1D00000000000000000000000000000000018 +S315E071B1E00000000000000000000000000000000008 +S315E071B1F000000000000000000000000000000000F8 +S315E071B20000000000000000000000000000000000E7 +S315E071B21000000000000000000000000000000000D7 +S315E071B22000000000000000000000000000000000C7 +S315E071B23000000000000000000000000000000000B7 +S315E071B24000000000000000000000000000000000A7 +S315E071B2500000000000000000000000000000000097 +S315E071B2600000000000000000000000000000000087 +S315E071B2700000000000000000000000000000000077 +S315E071B28000000000000000000000000000A6F500CC +S315E071B29000000000000000000000000000008000D7 +S315E071B2A00000008000000080000000000000000047 +S315E071B2B00000000000000000000000000000000037 +S315E071B2C00000000000000000000000000000000027 +S315E071B2D00000000000000000000000000000000017 +S315E071B2E00000000000000000000000000000000007 +S315E071B2F000000000000000000000000000000000F7 +S315E071B30000000000000000000000000000000000E6 +S315E071B31000000000000000000000000000000000D6 +S315E071B32000000000000000000000000000000000C6 +S315E071B33000000000000000000000000000000000B6 +S315E071B34000000000000000000000000000000000A6 +S315E071B3500000000000000000000000000000000096 +S315E071B3600000000000000000000000000000000086 +S315E071B3700000000000000000000000000000000076 +S315E071B3800000000000000000000000000000000066 +S315E071B3900000000000000000000000000000000056 +S315E071B3A00000000000000000000000000000000046 +S315E071B3B00000000000000000000000000000000036 +S315E071B3C00000000000000000000000000000000026 +S315E071B3D00000000000000000000000000000000016 +S315E071B3E00000000000000000000000000000000006 +S315E071B3F000000000000000000000000000000000F6 +S315E071B400000000000000C6D500000000000000004A +S315E071B4100004002000000400A0000000000000000D +S315E071B4200000000000000001000000400100000083 +S315E071B4304000000000000000000000000000000273 +S315E071B4400010008002001000800000000000000083 +S315E071B450000000000000000400200000040020004D +S315E071B4600000000000000000000000000001000084 +S315E071B47000400100000040000000000000000000F4 +S315E071B4800000000000020010008002001000800041 +S315E071B4900000000000000000000000000004002031 +S315E071B4A00000040020000000000000000000000021 +S315E071B4B000000001000000400100000040000000B3 +S315E071B4C00000000000000000000000020010008093 +S315E071B4D00200100080000000000000000000000083 +S315E071B4E000000004002000000400200000000000BD +S315E071B4F000000000000000000001000000400100B3 +S315E071B50000004000000000000000000000000000A4 +S315E071B51000020010008002001000800000000000B0 +S315E071B520000000000000000000040020000004009C +S315E071B5302000000000000000000000000000000193 +S315E071B5400000004001000000400000000000000023 +S315E071B55000000000000000020010008002001000F0 +S315E071B56080000000000000000000000000000005FF +S315E071B57000200000040020000000000000000052DE +S315E071B580AE000000000000000000000000000000B6 +S315E071B5900000000000000000000000000000000054 +S315E071B5A00000000000000000000000000000000044 +S315E071B5B00000000000000000000000000000000034 +S315E071B5C00000000000000000000000000000000024 +S315E071B5D00000000000000000000000000000000014 +S315E071B5E00000000000000000000000000000000004 +S315E071B5F000000000000000000000000000000000F4 +S315E071B60000000000000000000000000000000000E3 +S315E071B61000000000000000000000000000000000D3 +S315E071B62000000000000000000000000000000000C3 +S315E071B63000000000000000000000000000000000B3 +S315E071B64000000000000000000000000000000000A3 +S315E071B6500000000000000000000000000000000093 +S315E071B6600000000000000000000000000000000083 +S315E071B6700000000000000000000000000000000073 +S315E071B6800000000000000000000000000000000063 +S315E071B6900000000000000000000000000000000053 +S315E071B6A00000000000000000000000000000000043 +S315E071B6B00000000000000000000000000000000033 +S315E071B6C00000000000000000000000000000000023 +S315E071B6D00000000000000000000000000000000013 +S315E071B6E00000000000000000000000000000000003 +S315E071B6F000000000000100006F890080000000007A +S315E071B7000000000000000000000000000080000062 +S315E071B7100080000000000000000000000000000052 +S315E071B72000000000000000000000000000000000C2 +S315E071B73000000000000000000000000000000000B2 +S315E071B74000000000000000000000000000000000A2 +S315E071B7500000000000000000000000000000000092 +S315E071B7600000000000000000000000000000000082 +S315E071B7700000000000000000000000000000000072 +S315E071B7800000000000000000000000000000000062 +S315E071B7900000000000000000000000000000000052 +S315E071B7A00000000000000000000000000000000042 +S315E071B7B00000000000000000000000000000000032 +S315E071B7C00000000000000000000000000000000022 +S315E071B7D00000000000000000000000000000000012 +S315E071B7E00000000000000000000000000000000002 +S315E071B7F000000000000000000000000000000000F2 +S315E071B80000000000000000000000000000000000E1 +S315E071B81000000000000000000000000000000000D1 +S315E071B82000000000000000000000000000000000C1 +S315E071B83000000000000000000000000000000000B1 +S315E071B84000000000000000000000000000000000A1 +S315E071B8500000000000000000000000000000000091 +S315E071B8600000000000000000000000000000000081 +S315E071B87000EACF00000000000000000000000000B8 +S315E071B8800000000000000000000000000000000061 +S315E071B8900000000000000000000000000000000051 +S315E071B8A00000000000000000000000000000000041 +S315E071B8B00000000000000000000000000000000031 +S315E071B8C00000000000000000000000000000000021 +S315E071B8D00000000000000000000000000000000011 +S315E071B8E00000000000000000000000000000000001 +S315E071B8F000000000000000000000000000000000F1 +S315E071B90000000000000000000000000000000000E0 +S315E071B91000000000000000000000000000000000D0 +S315E071B92000000000000000000000000000000000C0 +S315E071B93000000000000000000000000000000000B0 +S315E071B94000000000000000000000000000000000A0 +S315E071B9500000000000000000000000000000000090 +S315E071B9600000000000000000000000000000000080 +S315E071B9700000000000000000000000000000000070 +S315E071B9800000000000000000000000000000000060 +S315E071B9900000000000000000000000000000000050 +S315E071B9A00000000000000000000000000000000040 +S315E071B9B00000000000000000000000000000000030 +S315E071B9C00000000000000000000000000000000020 +S315E071B9D0000000000000000100000000000000000F +S315E071B9E00000000000000000000003B50000000048 +S315E071B9F000000000000000000000000000000000F0 +S315E071BA0000000000000000000000000000000000DF +S315E071BA1000000000000000000000000000000000CF +S315E071BA2000000000000000000000000000000000BF +S315E071BA3000000000000000000000000000000000AF +S315E071BA40000000000000000000000000000000009F +S315E071BA50000000000000000000000000000000008F +S315E071BA60000000000000000000000000000000007F +S315E071BA70000000000000000000000000000000006F +S315E071BA80000000000000000000000000000000005F +S315E071BA90000000000000000000000000000000004F +S315E071BAA0000000000000000000000000000000003F +S315E071BAB0000000000000000000000000000000002F +S315E071BAC0000000000000000000000000000000001F +S315E071BAD0000000000000000000000000000000000F +S315E071BAE000000000000000000000000000000000FF +S315E071BAF000000000000000000000000000000000EF +S315E071BB0000000000000000000000000000000000DE +S315E071BB1000000000000000000000000000000000CE +S315E071BB2000000000000000000000000000000000BE +S315E071BB3000000000000000000000000000000000AE +S315E071BB40000000000000000000000000000000009E +S315E071BB50000000000000000000000000000000008E +S315E071BB600000003E490000000000000000000000F7 +S315E071BB70000000000000000000000000000000006E +S315E071BB80000000000000000000000000000000005E +S315E071BB90000000000000000000000000000000004E +S315E071BBA0000000000000000000000000000000003E +S315E071BBB0000000000000000000000000000000002E +S315E071BBC0000000000000000000000000000000001E +S315E071BBD0000000000000000000000000000000000E +S315E071BBE000000000000000000000000000000000FE +S315E071BBF000000000000000000000000000000000EE +S315E071BC0000000000000000000000000000000000DD +S315E071BC1000000000000000000000000000000000CD +S315E071BC2000000000000000000000000000000000BD +S315E071BC3000000000000000000000000000000000AD +S315E071BC40000000000000000000000000000000009D +S315E071BC50000000000000000000000000000000008D +S315E071BC60000000000000000000000000000000007D +S315E071BC70000000000000000000000000000000006D +S315E071BC80000000000000000000000000000000005D +S315E071BC90000000000000000000000000000000004D +S315E071BCA0000000000000000000000000000000003D +S315E071BCB0000000000000000000000000000000002D +S315E071BCC0000000000000000000000000000000001D +S315E071BCD00000000000000000000000003E49000086 +S315E071BCE000000000000000000000000000000000FD +S315E071BCF000000000000000000000000000000000ED +S315E071BD0000000000000000000000000000000000DC +S315E071BD1000000000000000000000000000000000CC +S315E071BD2000000000000000000000000000000000BC +S315E071BD3000000000000000000000000000000000AC +S315E071BD40000000000000000000000000000000009C +S315E071BD50000000000000000000000000000000008C +S315E071BD60000000000000000000000000000000007C +S315E071BD70000000000000000000000000000000006C +S315E071BD80000000000000000000000000000000005C +S315E071BD90000000000000000000000000000000004C +S315E071BDA0000000000000000000000000000000003C +S315E071BDB0000000000000000000000000000000002C +S315E071BDC0000000000000000000000000000000001C +S315E071BDD0000000000000000000000000000000000C +S315E071BDE000000000000000000000000000000000FC +S315E071BDF000000000000000000000000000000000EC +S315E071BE0000000000000000000000000000000000DB +S315E071BE1000000000000000000000000000000000CB +S315E071BE2000000000000000000000000000000000BB +S315E071BE3000000000000000000000000000000000AB +S315E071BE40000000000000000000000000000000009B +S315E071BE5000000000003E4900000000000000000004 +S315E071BE600000000400200000000000000000000057 +S315E071BE70000000000000000000010000004000002A +S315E071BE80000000000000000000000000000000005B +S315E071BE9000020010008000000000000000000000B9 +S315E071BEA00000000000000000000400200000000017 +S315E071BEB0000000000000000000000000000000012A +S315E071BEC000000040000000000000000000000000DB +S315E071BED00000000000000002001000800000000079 +S315E071BEE000000000000000000000000000000004F7 +S315E071BEF000200000000000000000000000000000CB +S315E071BF000000000000010000004000000000000099 +S315E071BF1000000000000000000000000000020010B8 +S315E071BF20008000000000000000000000000000003A +S315E071BF300000000000040020000000000000000086 +S315E071BF400000000000000000000000010000004059 +S315E071BF50000000000000000000000000000000008A +S315E071BF6000000002001000800000000000000000E8 +S315E071BF700000000000000000000000040020000046 +S315E071BF80000000000000000000000000000000005A +S315E071BF900001000000400000000000000000000009 +S315E071BFA000000000000000000002001000800000A8 +S315E071BFB0000000000000000000000000000000002A +S315E071BFC00004002000000000000000000000B3B88B +S315E071BFD000000000000000000000000004002000E6 +S315E071BFE000000000000000000000000000000000FA +S315E071BFF000000100000040000000000000000000A9 +S315E071C0000000000000000000000002001000800047 +S315E071C01000000000000000000000000000000000C9 +S315E071C0200000040020000000000000000000000095 +S315E071C0300000000000000000010000004000000068 +S315E071C0400000000000000000000000000000000099 +S315E071C05002001000800000000000000000000000F7 +S315E071C0600000000000000000040020000000000055 +S315E071C0700000000000000000000000000000010068 +S315E071C0800000400000000000000000000000000019 +S315E071C09000000000000002001000800000000000B7 +S315E071C0A00000000000000000000000000000040035 +S315E071C0B02000000000000000000000000000000009 +S315E071C0C000000000010000004000000000000000D8 +S315E071C0D000000000000000000000000002001000F7 +S315E071C0E08000000000000000000000000000000079 +S315E071C0F000000000040020000000000000000000C5 +S315E071C1000000000000000000000001000000400097 +S315E071C11000000000000000000000000000000000C8 +S315E071C1200000020010008000000000000000000026 +S315E071C1300000000000000000000004002000000084 +S315E071C14000000000000000B3B8000000000000002D +S315E071C1500000000000040020000000000000000064 +S315E071C1600000000000000000000000010000004037 +S315E071C1700000000000000000000000000000000068 +S315E071C18000000002001000800000000000000000C6 +S315E071C1900000000000000000000000040020000024 +S315E071C1A00000000000000000000000000000000038 +S315E071C1B000010000004000000000000000000000E7 +S315E071C1C00000000000000000000200100080000086 +S315E071C1D00000000000000000000000000000000008 +S315E071C1E000040020000000000000000000000000D4 +S315E071C1F000000000000000010000004000000000A7 +S315E071C20000000000000000000000000000000002D5 +S315E071C2100010008000000000000000000000000037 +S315E071C2200000000000000004002000000000000093 +S315E071C23000000000000000000000000000010000A6 +S315E071C2400040000000000000000000000000000057 +S315E071C25000000000000200100080000000000000F5 +S315E071C2600000000000000000000000000004002053 +S315E071C2700000000000000000000000000000000067 +S315E071C2800000000100000040000000000000000016 +S315E071C29000000000000000000000000200100080B5 +S315E071C2A00000000000000000000000000000000037 +S315E071C2B00000000400200000000000000000000003 +S315E071C2C0B3B8000083831414606000000303101494 +S315E071C2D0406000000707303040400000070730300B +S315E071C2E0C0C000000607303080C0010106067070DC +S315E071C2F0808001010606707080800101040660701D +S315E071C300008003031414E0E0000003031414E0E07A +S315E071C310000003031014C0E0000007073030C0C00E +S315E071C320000007073030C0C000000607303080C01B +S315E071C33001010606707080800101060670708080CA +S315E071C340010104066070008003031414E0E000004C +S315E071C35003031414E0E0000003031014C0E00000CE +S315E071C36007073030C0C0000007073030C0C000009A +S315E071C3700607303080C001010606707080800101C9 +S315E071C3800606707080800101040660700080030308 +S315E071C3901414E0E0000003031414E0E0000003036A +S315E071C3A01014C0E0000007073030C0C00000070776 +S315E071C3B03030C0C000000607303080C0010106068B +S315E071C3C0707080800101060670708080010104063C +S315E071C3D06070008003031414E0E00000030314149A +S315E071C3E0E0E0000003031014C0E0000007073030FE +S315E071C3F0C0C0000007073030C0C00000060730300B +S315E071C40080C00101060670708080010106067070B9 +S315E071C4108080010104066070008003031414E0E07B +S315E071C420000002021C1CE0E000000202181CC0E0E1 +S315E071C430000006063838C1C100BD380000000000B2 +S315E071C4400000000000000080000000000000000015 +S315E071C4500000000000000000000000000000000085 +S315E071C4600000000000000000000000000000000075 +S315E071C4700000000000000000000000000000000065 +S315E071C4800000000000000000000000000000000055 +S315E071C4900000000000000000000000000000000045 +S315E071C4A00000000000000000000000000000000035 +S315E071C4B00000000000000000000000000000000025 +S315E071C4C00000000000000000000000000000000015 +S315E071C4D00000000000000000000000000000000005 +S315E071C4E000000000000000000000000000000000F5 +S315E071C4F000000000000000000000000000000000E5 +S315E071C50000000000000000000000000000000000D4 +S315E071C51000000000000000000000000000000000C4 +S315E071C52000000000000000000000000000000000B4 +S315E071C53000000000000000000000000000000000A4 +S315E071C5400000000000000000000000000000000094 +S315E071C5500000000000000000000000000000000084 +S315E071C5600000000000000000000000000000000074 +S315E071C5700000000000000000000000000000000064 +S315E071C5800000000000000000000000000000000054 +S315E071C5900000000000000000000000000000000044 +S315E071C5A00000000000000000000000000000000034 +S315E071C5B00000420200800000000000000000000060 +S315E071C5C000000000000000000000000000000040D4 +S315E071C5D00000000000000000000000000000000004 +S315E071C5E000000004000004000000000000000000EC +S315E071C5F000000000000000000000000000000000E4 +S315E071C60000000000000000000000000000000000D3 +S315E071C61000000000000000000000000000000020A3 +S315E071C62000000000000000000000000000000000B3 +S315E071C63000000000000000000000000000000000A3 +S315E071C6400000000000000000000000000000000093 +S315E071C650000004000000000000000000000000007F +S315E071C6600000000000000000000000000000000073 +S315E071C6700000000000000000000000000000000063 +S315E071C6800000000000000000002000000000000033 +S315E071C6900000000000000000000000000000000043 +S315E071C6A00000001000000000000000000000000023 +S315E071C6B00000000000000000000000000000000023 +S315E071C6C00000000000000000000000000000000013 +S315E071C6D00000000000000000000000000000000003 +S315E071C6E000000000000000400000000000000000B3 +S315E071C6F000000000000000000000000000000000E3 +S315E071C70000000000000000000000000000000000D2 +S315E071C71000000000000000000000000000000000C2 +S315E071C7200000000080000000000000AF7E00000005 +S315E071C7300000000000000000000000800000000022 +S315E071C7408000000000000000000000000000000012 +S315E071C7500000000000000000000000000000000082 +S315E071C7600000000000000000000000000000000072 +S315E071C7700000000000000000000000000000000062 +S315E071C7800000000000000000000000000000000052 +S315E071C7900000000000000000000000000000000042 +S315E071C7A00000000000000000000000000000000032 +S315E071C7B00000000000000000000000000000000022 +S315E071C7C00000000000000000000000000000000012 +S315E071C7D00000000000000000000000000000000002 +S315E071C7E000000000000000000000000000000000F2 +S315E071C7F000000000000000000000000000000000E2 +S315E071C80000000000000000000000000000000000D1 +S315E071C81000000000000000000000000000000000C1 +S315E071C82000000000000000000000000000000000B1 +S315E071C83000000000000000000000000000000000A1 +S315E071C8400000000000010000000000000000000090 +S315E071C8500000000000000000000000000000000081 +S315E071C8600000000000000000000000000000000071 +S315E071C8700000000000000000000000000000000061 +S315E071C8800000000000000000010000000000000050 +S315E071C8900000000000004000000000000000000001 +S315E071C8A00000000096DC00000000000000000000BF +S315E071C8B00000000000000000000000000000000021 +S315E071C8C00000000000000000000000000000000011 +S315E071C8D00000000000000000000000000000000001 +S315E071C8E000000000000000000000000000000000F1 +S315E071C8F000000000000000200000000000000000C1 +S315E071C9000000000000000000800000000000000050 +S315E071C91000000000000000000000000000000000C0 +S315E071C92000000000000000000000000000000000B0 +S315E071C93000000000000000000000000000000000A0 +S315E071C940040000000000000000000000000000008C +S315E071C9500000000000000000000000000000000080 +S315E071C9600000000000000000000000000000000070 +S315E071C9700000000000000000000000000000000060 +S315E071C9800000000000000000000000000000000050 +S315E071C9900000000000000000000000000000000040 +S315E071C9A00000000000000000000000000000000030 +S315E071C9B00000000000000000000000000000000020 +S315E071C9C00000000000000000000000000000000010 +S315E071C9D00000000000000000000000000000000000 +S315E071C9E000000000000000000000000000000000F0 +S315E071C9F00000000000000000000000000000800060 +S315E071CA00000000000000000000000000000000408F +S315E071CA100000000000000000000000000044490032 +S315E071CA20000000000000000000000000008000002F +S315E071CA30000000800000000000000000000000001F +S315E071CA40000000000000004000000000000000004F +S315E071CA50000000000000000000000000000000007F +S315E071CA60000000000000000000000000000004006B +S315E071CA70000000040000000000000000000000005B +S315E071CA80000000000000000000000000000000004F +S315E071CA90000000000000000000000000000000003F +S315E071CAA0000000000000000000000000000000002F +S315E071CAB0000000000000000000000000000000001F +S315E071CAC0000000000000000000000000000000000F +S315E071CAD000000000000000000000000000000000FF +S315E071CAE000000000000000000000000000000000EF +S315E071CAF000000000000000000000000000000000DF +S315E071CB0000200000000000000100000000000000AD +S315E071CB1000000000000000000000000000000000BE +S315E071CB20000000000000000000000000000000109E +S315E071CB30000000000000010000000000000000009D +S315E071CB40000000000000000000000000000000008E +S315E071CB50000000000000000000000000000000403E +S315E071CB60000000000000000000000000000000006E +S315E071CB70000000000000000000000001000000005D +S315E071CB80000000000000000000000000000000004E +S315E071CB900100000000003BB300800000008000004F +S315E071CBA0000000000000000000000000000000002E +S315E071CBB0000000000000000000000000000000001E +S315E071CBC0000000000000000000000000000000000E +S315E071CBD000000000000000000000000000000000FE +S315E071CBE000000000000000000000000000000000EE +S315E071CBF000000000000000000000000000000000DE +S315E071CC0000000000000000000000000000000000CD +S315E071CC10000000008000000000000000000000003D +S315E071CC2000000000000000000000000000000000AD +S315E071CC30800000000000000000000000000000001D +S315E071CC40000000000000000000000000000000008D +S315E071CC50000000000000000000000000000000007D +S315E071CC60000000000000000000000000000000006D +S315E071CC70000000000000000000000000000000005D +S315E071CC80000000000000000000000000000000004D +S315E071CC90000000000000000000000000000000003D +S315E071CCA0000000000000000000000000000000002D +S315E071CCB0000000000000000000000000000000001D +S315E071CCC0000000000000000000000000000000000D +S315E071CCD000000000000000000000000000000000FD +S315E071CCE000000000000000000000000000000000ED +S315E071CCF000000000000000000000000000000000DD +S315E071CD00000000000000000000000000000000AC20 +S315E071CD108400000000000000000000000000000038 +S315E071CD2000000000000000000000000000000000AC +S315E071CD30000000000000000000000000000000009C +S315E071CD40000000000000000000000000000000008C +S315E071CD50000000000000000000000000000000007C +S315E071CD60000000000000000000000000000000006C +S315E071CD70000000000000000000000000000000005C +S315E071CD80000000000000000000000000000000004C +S315E071CD90000000000000000000000000000000003C +S315E071CDA0000000000000000000000000000000002C +S315E071CDB0000000000000000000000000000000001C +S315E071CDC0000000000000000000000000000000000C +S315E071CDD000000000000000000000000000000000FC +S315E071CDE000000000000000000000000000000000EC +S315E071CDF000000000000000000000000000000000DC +S315E071CE0000000000000000000000000000000000CB +S315E071CE1000000000000000000000000000000000BB +S315E071CE2000000000000000000000000000000000AB +S315E071CE30800000000000000000000000000000001B +S315E071CE40000000000000000000000000000000008B +S315E071CE50000000000000000000000000000000007B +S315E071CE60000000000000000000000000000000006B +S315E071CE70000000000000000000000000000000005B +S315E071CE80000000000000000009080000000000003A +S315E071CE90000000000000000000000000000000003B +S315E071CEA0000000000000000000000000000000002B +S315E071CEB0000000000000000000000000000000001B +S315E071CEC0000000000000000000000000000000000B +S315E071CED000000000000000000000000000000000FB +S315E071CEE000000000000000000000000000000000EB +S315E071CEF000000000000000000000000000000000DB +S315E071CF00000000000080000000000000000000004A +S315E071CF1000000000000000000000000000000000BA +S315E071CF2000000000000000000000000000000000AA +S315E071CF30000000000000000000000000000000009A +S315E071CF40000000000000000000000000000000008A +S315E071CF50000000000000000000000000000000007A +S315E071CF60000000000000000000000000000000006A +S315E071CF70000000000000000000000000000000005A +S315E071CF80000000000000000000000000000000004A +S315E071CF90000000000000000000000000000000003A +S315E071CFA000000000000000000080000000000000AA +S315E071CFB0000000000000000000000000000000001A +S315E071CFC0000000000000000000000000000000000A +S315E071CFD000000000000000000000000000000000FA +S315E071CFE000000000000000000000000000000000EA +S315E071CFF000000000000000000000000000000000DA +S315E071D0000075F7000000000000000000000000005D +S315E071D01000000000000000000000000000000000B9 +S315E071D02000000000000000000000000000000000A9 +S315E071D0300000000000000000000000000000000099 +S315E071D0400000000000000000000000000000000089 +S315E071D0500000000000000000000000000000000079 +S315E071D06080000000000000000000000000000000E9 +S315E071D0700000000000000000000000000000000059 +S315E071D0800000000000000000000000000000000049 +S315E071D09000000000000000000000400000000000F9 +S315E071D0A00000000000000000000000000000000029 +S315E071D0B00000000000000000000000800000000099 +S315E071D0C00000000000000000000000000000000009 +S315E071D0D000000000000000000000000000000000F9 +S315E071D0E000000000000000000000000000000000E9 +S315E071D0F000000000000000000000000000000000D9 +S315E071D1000000000080000000000000000000000048 +S315E071D11000000000000000000000000000000000B8 +S315E071D12000000000000000000000000000000000A8 +S315E071D1300000000000000000000000000000000098 +S315E071D1400000000000000000000000000000000088 +S315E071D1500000000000000000000000000000000078 +S315E071D1600000000000000000000000000000000068 +S315E071D170000000000000000000005D5B00000000A0 +S315E071D1800000000000000000000000000000000048 +S315E071D1900000000000000000000000000000000038 +S315E071D1A00000000000000000000000000000000028 +S315E071D1B00000000000000000000000000000000018 +S315E071D1C00000000000000000000000000000000008 +S315E071D1D000000000000000000000000000000000F8 +S315E071D1E000000000000000000000000000000000E8 +S315E071D1F000000000000000000000000000000000D8 +S315E071D20000000000000000000000000000000000C7 +S315E071D21000000000000000000000000000000000B7 +S315E071D22000000000000000000000000000000000A7 +S315E071D2300000000000000000000000000000000097 +S315E071D2400000000000000000000000000000000087 +S315E071D2500000000000000000000000000000000077 +S315E071D2600000000000000000000000000000000067 +S315E071D2700000000000000000000000000000000057 +S315E071D2800000000000000000000000000000000047 +S315E071D2900000000000000000000000000000000037 +S315E071D2A00000000000000000000000000000000027 +S315E071D2B00000000000000000000000000000000017 +S315E071D2C00000000000000000000000000000000007 +S315E071D2D000000000010000000000000000000000F6 +S315E071D2E000000000000000000000000000000000E7 +S315E071D2F0000000AF8900000000000000000000009F +S315E071D30000000000000000000000000000000000C6 +S315E071D31000000000000000000000000000000000B6 +S315E071D32000000000000000000000000000000000A6 +S315E071D3300000000000000000000000000000000096 +S315E071D3400000000000000000000000000000000086 +S315E071D3500000000000000000000000000000000076 +S315E071D3600000000000000000000000000000000066 +S315E071D3700000000000000000000000000000000056 +S315E071D3800000000000000000000000000000000046 +S315E071D3900000000000000000000000000000000036 +S315E071D3A00000000000000000000000000000000026 +S315E071D3B00000000000000000000000000000000016 +S315E071D3C00000000000000000000000000000000006 +S315E071D3D000000000000000000000000000000000F6 +S315E071D3E000000000000000000000000000000000E6 +S315E071D3F000000000000000000000000000000000D6 +S315E071D40000000000000000000000000000000000C5 +S315E071D41000000000000000000000000000000000B5 +S315E071D42000000000000000000000000000000000A5 +S315E071D4300000000000000000000000000000000095 +S315E071D4400000000000000000000000000000000085 +S315E071D4500000000000000000000000000000000075 +S315E071D4600000000000000000000000003E490000DE +S315E071D4700000000000000000000000000000000055 +S315E071D4800000000000000000000000000000000045 +S315E071D4900000000000000000000000000000000035 +S315E071D4A00000000000000000000000000000000025 +S315E071D4B00000000000000000000000000000000015 +S315E071D4C00000000000000000000000800000000085 +S315E071D4D000000000000000000000000000000000F5 +S315E071D4E000000000000000000000000000000000E5 +S315E071D4F000000000000000000000000000000000D5 +S315E071D5000000000000400000000000000000000084 +S315E071D51000000000000000000000000000000000B4 +S315E071D5200000000000800000000000000000000024 +S315E071D5300000000000000000000000000000000094 +S315E071D5400000000000000000000000000000000084 +S315E071D5500000000000000000000000000000000074 +S315E071D56000000000000000000000000000000080E4 +S315E071D5700000000000000000000000000000000054 +S315E071D5800000000000000000000000000000000044 +S315E071D5900000000000000000000000000000000034 +S315E071D5A00000000000000000000000000000000024 +S315E071D5B00000000000000000000000000000000014 +S315E071D5C00000000000000000000000000000000004 +S315E071D5D000000000000000000000000000000000F4 +S315E071D5E000000000002EAF00000000000000000007 +S315E071D5F00080000000000000000000000000000054 +S315E071D60000000000000000000000000000000000C3 +S315E071D61000000000000000000000000000000000B3 +S315E071D62000000000000000000000000000000000A3 +S315E071D6300000000000000000000000000000000093 +S315E071D6400000000000000000000000000000000083 +S315E071D6500000000000000000000000000000000073 +S315E071D6600000000000000000000000000000000063 +S315E071D6700000000000000000000000000000000053 +S315E071D6800000000000000000000000000000000043 +S315E071D6900000000000000000000000000000000033 +S315E071D6A00000000000000000000000000000000023 +S315E071D6B00000000000000000000000000000000013 +S315E071D6C00000000000000000000000000000000003 +S315E071D6D000000000000000000000000000000000F3 +S315E071D6E000000000000000000000000000000000E3 +S315E071D6F000000000000000000000000000000000D3 +S315E071D70000000000000000000000000000000000C2 +S315E071D71000000000000000000000000000000000B2 +S315E071D72000000000000000000000000000000000A2 +S315E071D7300000000000000000000000000000000092 +S315E071D7400000000000000000000000000000000082 +S315E071D75000000000000000000000000000005EBE56 +S315E071D76000008080000000000000000080000000E2 +S315E071D77000000000800000000000000000000000D2 +S315E071D7800000000000000000000000000000000042 +S315E071D7900000000000000000000000000000000032 +S315E071D7A00000000000000000000000000000000022 +S315E071D7B00000000000000000000000000000000012 +S315E071D7C00000000000000000000000000000000002 +S315E071D7D000000000000000000000000000000000F2 +S315E071D7E000000000000000000000000000000000E2 +S315E071D7F000000000000000000000000000000000D2 +S315E071D80000000000000000000000000000000000C1 +S315E071D81000000000000000000000000000000000B1 +S315E071D82000000000000000000000000000000000A1 +S315E071D8300000000000000000000000000000000091 +S315E071D8400000000000000000000000000000000081 +S315E071D8500000000000000000000000000000000071 +S315E071D8600000000000000000000000000000000061 +S315E071D8700000000000000000000000000000000051 +S315E071D8800000000000000000000000000000000041 +S315E071D8900000000000000000000000000000000031 +S315E071D8A00000000000000000000000000000000021 +S315E071D8B00000000000000000000000000000000011 +S315E071D8C00000000000000000000000010000000000 +S315E071D8D000000000010100C9160000000000000010 +S315E071D8E000000000000000000000000000000000E1 +S315E071D8F000000000000000000000000000000000D1 +S315E071D90000000000000000000000000000000000C0 +S315E071D91000000000000000000000000000000000B0 +S315E071D92000000000000000000000000000000000A0 +S315E071D9300000000000000000000000000000000090 +S315E071D9400000000000000000000000000000000080 +S315E071D9500000000000000000000000000000000070 +S315E071D9600000000000000000000000000000000060 +S315E071D9700000000000000000000000000000000050 +S315E071D9800000000000000000000000000000000040 +S315E071D9900000000000000000000000000000000030 +S315E071D9A00000000000000000000000000000000020 +S315E071D9B00000000000000000000000000000000010 +S315E071D9C00000000000000000000000000000000000 +S315E071D9D000000000000000000000000000000000F0 +S315E071D9E000000000000000000000000000000000E0 +S315E071D9F000000000000000000000000000000000D0 +S315E071DA0000000000000000000000000000000000BF +S315E071DA1000000000000000000000000000000000AF +S315E071DA20000000000000000000000000000000009F +S315E071DA30000000000000000000000000000000008F +S315E071DA40000000000000000000000000000000007F +S315E071DA503E49008000000000000000000000000068 +S315E071DA60000000000000000000000000000000005F +S315E071DA70000000000000000000000000000000004F +S315E071DA80000000000000000000000000000000003F +S315E071DA90000000000000000000000000000000002F +S315E071DAA0000000000000000000000000000000001F +S315E071DAB0000000000000000000000000000000000F +S315E071DAC000000000000000000000000000000000FF +S315E071DAD000000000000000000000000000000000EF +S315E071DAE000000000000000000000000000000000DF +S315E071DAF000000000000000000000000000000000CF +S315E071DB0000000000000000000000000000000000BE +S315E071DB1000000000000000000000000000000000AE +S315E071DB20000000000000000000000000000000009E +S315E071DB30000000000000000000000000000000008E +S315E071DB40000000000000000000000000000000007E +S315E071DB50000000000000000000000000000000006E +S315E071DB60000000000000000000000000000000005E +S315E071DB70000000000000000000000000000000004E +S315E071DB80000000000000000000000000000000003E +S315E071DB90000000000000000000000000000000002E +S315E071DBA0000000000000000000000000000000001E +S315E071DBB0000000000000000000000000000000000E +S315E071DBC0000000000000000000D8E900000000003D +S315E071DBD000000000000000000000000000000000EE +S315E071DBE000000000000000000000000000000000DE +S315E071DBF000000000000000000000000000000000CE +S315E071DC0000000000000000000000000000000000BD +S315E071DC1000000000000000000000000000000000AD +S315E071DC20000000000000000000000000000000009D +S315E071DC30000000000000000000000000000000008D +S315E071DC40000000000000000000000000000000007D +S315E071DC50000000000000000000000000000000006D +S315E071DC60000000000000000000000000000000005D +S315E071DC70000000000000000000000000000000004D +S315E071DC80000000000000000000000000000000003D +S315E071DC90000000000000000000000000000000002D +S315E071DCA0000000000000000000000000000000001D +S315E071DCB0000000000000000000000000000000000D +S315E071DCC000000000000000000000000000000000FD +S315E071DCD000000000000000000000000000000000ED +S315E071DCE000000000000000000000000000000000DD +S315E071DCF000000000000000000000000000000000CD +S315E071DD0000000000000000000000000000000000BC +S315E071DD1000000000000000000000000000000000AC +S315E071DD20000000000000000000000000000000009C +S315E071DD30000000000000000000000000000000008C +S315E071DD4000003E49000000000000000000000000F5 +S315E071DD50000000000000000000000000000000006C +S315E071DD60000000000000000000000000000000005C +S315E071DD70000000000000000000000000000000004C +S315E071DD80000000000000000000000000000000003C +S315E071DD90000000000000000000000000000000002C +S315E071DDA0000000000000000000000000000000001C +S315E071DDB0000000000000000000000000000000000C +S315E071DDC000000000000000000000000000000000FC +S315E071DDD000000000000000000000000000000000EC +S315E071DDE000000000000000000000000000000000DC +S315E071DDF000000000000000000000000000000000CC +S315E071DE0000000000000000000000000000000000BB +S315E071DE1000000000000000000000000000000000AB +S315E071DE20000000000000000000000000000000009B +S315E071DE30000000000000000000000000000000008B +S315E071DE40000000000000000000000000000000007B +S315E071DE50000000000000000000000000000000006B +S315E071DE60000000000000000000000000000000005B +S315E071DE70000000000000000000000000000000004B +S315E071DE80000000000000000000000000000000003B +S315E071DE90000000000000000000000000000000002B +S315E071DEA0000000000000000000000000000000001B +S315E071DEB000000000000000000000003E4900000084 +S315E071DEC000000000000000000000000000000000FB +S315E071DED000000000000000000000000000000000EB +S315E071DEE000000000000000000000000000000000DB +S315E071DEF000000000000000000000000000000000CB +S315E071DF0000000000000000000000000000000000BA +S315E071DF1000000000000000000000000000000000AA +S315E071DF20000000000000000000000000000000009A +S315E071DF30000000000000000000000000000000008A +S315E071DF40000000000000000000000000000000007A +S315E071DF50000000000000000000000000000000006A +S315E071DF60000000000000000000000000000000005A +S315E071DF70000000000000000000000000000000004A +S315E071DF80000000000000000000000000000000003A +S315E071DF90000000000000000000000000000000002A +S315E071DFA0000000000000000000000000000000001A +S315E071DFB0000000000000000000000000000000000A +S315E071DFC000000000000000000000000000000000FA +S315E071DFD000000000000000000000000000000000EA +S315E071DFE000000000000000000000000000000000DA +S315E071DFF000000000000000000000000000000000CA +S315E071E00000000000000000000000000000000000B9 +S315E071E01000000000000000000000000000000000A9 +S315E071E0200000000000000000000000000000000099 +S315E071E030000000003E490080000000000000008002 +S315E071E0400000000000000000000000000000000079 +S315E071E0500000000000000000000000000000000069 +S315E071E0600000000000000000000000000000000059 +S315E071E0700000000000000000000000000000000049 +S315E071E0800000000000000000000000000000000039 +S315E071E0900000000000000000000000000000000029 +S315E071E0A00000000000000000000000000000000019 +S315E071E0B00000000000000000000000000000000009 +S315E071E0C000000000000000000000000000000000F9 +S315E071E0D000000000000000000000000000000000E9 +S315E071E0E000000000000000000000000000000000D9 +S315E071E0F000000000000000000000000000000000C9 +S315E071E10000000000000000000000000000000000B8 +S315E071E11000000000000000000000000000000000A8 +S315E071E1200000000000000000000000000000000098 +S315E071E1300000000000000000000000000000000088 +S315E071E1400000000000000000000000000000000078 +S315E071E1500000000000000000000000000000000068 +S315E071E1600000000000000000000000000000000058 +S315E071E1700000000000000000000000000000000048 +S315E071E1800000000000000000000000000000000038 +S315E071E1900000000000000000000000000000000028 +S315E071E1A0000000000000000000000000002FC10028 +S315E071E1B00000000080000000000000000000000088 +S315E071E1C000000000000000000000000000000000F8 +S315E071E1D000000000000000000000000000000000E8 +S315E071E1E000000000000000000000000000000000D8 +S315E071E1F000000000000000000000000000000000C8 +S315E071E20000000000000000000000000000000000B7 +S315E071E21000000000000000000000000000000000A7 +S315E071E2200000000000000000000000000000000097 +S315E071E2300000000000000000000000000000000087 +S315E071E2400000000000000000000000000000000077 +S315E071E2500000000000000000000000000000000067 +S315E071E2600000000000000000000000000000000057 +S315E071E2700000000000000000000000000000000047 +S315E071E2800000000000000000000000000000000037 +S315E071E2900000000000000000000000000000000027 +S315E071E2A00000000000000000000000000000000017 +S315E071E2B00000000000000000000000000000000007 +S315E071E2C000000000000000000000000000000000F7 +S315E071E2D000000000000000000000000000000000E7 +S315E071E2E000000000000000000000000000000000D7 +S315E071E2F000000000000000000000000000000000C7 +S315E071E30000000000000000000000000000000000B6 +S315E071E31000000000000000000000000000010000A5 +S315E071E32000000000000081A5000000000000000070 +S315E071E3300000000000000000000000000000000086 +S315E071E3400000000000000000000000000000000076 +S315E071E3500000000000000000000000000000000066 +S315E071E3600000000000000000000000000000000056 +S315E071E3700000000000000000000000000000000046 +S315E071E3800000000000000000000000000000000036 +S315E071E3900000000000000000000000000000000026 +S315E071E3A00000000000000000000000000000000016 +S315E071E3B00000000000000000000000000000000006 +S315E071E3C000000000000000000000000000000000F6 +S315E071E3D000000000000000000000000000000000E6 +S315E071E3E000000000000000000000000000000000D6 +S315E071E3F000000000000000000000000000000000C6 +S315E071E40000000000000000000000000000000000B5 +S315E071E41000000000000000000000000000000000A5 +S315E071E4200000000000000000000000000000000095 +S315E071E4300000000000000000000000000000000085 +S315E071E4400000000000000000000000000000000075 +S315E071E4500000000000000000000000000000000065 +S315E071E4600000000000000000000000000000000055 +S315E071E4700000000000000000000000000000000045 +S315E071E4800000000000000000000000000000000035 +S315E071E4900000000000000000000100000000003FE5 +S315E071E4A098000000000080000000000000000000FD +S315E071E4B00000000000000000000000000000000005 +S315E071E4C000000000000000000000000000000000F5 +S315E071E4D000000000000000000000000000000000E5 +S315E071E4E000000000000000000000000000000000D5 +S315E071E4F000000000000000000000000000000000C5 +S315E071E50000000000000000000000000000000000B4 +S315E071E51000000000000000000000000000000000A4 +S315E071E5200000000000000000000000000000000094 +S315E071E5300000000000000000000000000000000084 +S315E071E5400000000000000000000000000000000074 +S315E071E5500000000000000000000000000000000064 +S315E071E5600000000000000000000000000000000054 +S315E071E5700000000000000000000000000000000044 +S315E071E5800000000000000000000000000000000034 +S315E071E5900000000000000000000000000000000024 +S315E071E5A00000000000000000000000000000000014 +S315E071E5B00000000000000000000000000000000004 +S315E071E5C000000000000000000000000000000000F4 +S315E071E5D000000000000000000000000000000000E4 +S315E071E5E000000000000000000000000000000000D4 +S315E071E5F000000000000000000000000000000000C4 +S315E071E60000000000000000000000000000000001B2 +S315E071E6100000000100000000BC6500000000000081 +S315E071E6200000000000000000000000000000000093 +S315E071E6300000000000000000000000000000000083 +S315E071E6400000000000000000000000000000000073 +S315E071E6500000000000000000000000000000000063 +S315E071E6600000000000000000000000000000000053 +S315E071E6700000000000000000000000000000000043 +S315E071E6800000000000000000000000000000000033 +S315E071E6900000000000000000000000000000000023 +S315E071E6A00000000000000000000000000000000013 +S315E071E6B00000000000000000000000000000000003 +S315E071E6C000000000000000000000000000000000F3 +S315E071E6D000000000000000000000000000000000E3 +S315E071E6E000000000000000000000000000000000D3 +S315E071E6F000000000000000000000000000000000C3 +S315E071E70000000000000000000000000000000000B2 +S315E071E71000000000000000000000000000000000A2 +S315E071E7200000000000000000000000000000000092 +S315E071E7300000000000000000000000000000000082 +S315E071E7400000000000000000000000000000000072 +S315E071E7500000000000000000000000000000000062 +S315E071E7600000000000000000000000000000000052 +S315E071E7700000000000000000000000000000000042 +S315E071E7800000000000000000000000000000000032 +S315E071E790003E490000000000000000000400200077 +S315E071E7A000040020000000000000000000000000EE +S315E071E7B00000010000004001000000400000000080 +S315E071E7C0000000000000000000000200100080025E +S315E071E7D00010008000000000000000000000000052 +S315E071E7E0000004002000000400200000000000008A +S315E071E7F00000000000000000010000004001000080 +S315E071E8000040000000000000000000000000000071 +S315E071E810020010008002001000800000000000007D +S315E071E8200000000000000000040020000004002049 +S315E071E8300000000000000000000000000000010080 +S315E071E84000004001000000400000000000000000F0 +S315E071E850000000000000020010008002001000803D +S315E071E860000000000000000000000000000004004D +S315E071E87020000004002000000000000000000000FD +S315E071E88000000000010000004001000000400000AF +S315E071E890000000000000000000000000020010000F +S315E071E8A080020010008000000000000000000000FF +S315E071E8B000000000040020000004002000000000B9 +S315E071E8C000000000000000000000010000004001AF +S315E071E8D000000040000000000000000000000000A1 +S315E071E8E000000200100080020010008000000000AD +S315E071E8F00000000000000000000004002000000499 +S315E071E90000200000000000000000FBB000000000E5 +S315E071E91000000000000000000000000000000000A0 +S315E071E9200000000000000000000000000000000090 +S315E071E9300000000000000000000000000000000080 +S315E071E9400000000000000000000000000000000070 +S315E071E9500000000000000000000000000000000060 +S315E071E9600000000000000000000000000000000050 +S315E071E9700000000000000000000000000000000040 +S315E071E9800000000000000000000000000000000030 +S315E071E9900000000000000000000000000000000020 +S315E071E9A00000000000000000000000000000000010 +S315E071E9B00000000000000000000000000000000000 +S315E071E9C000000000000000000000000000000000F0 +S315E071E9D000000000000000000000000000000000E0 +S315E071E9E000000000000000000000000000000000D0 +S315E071E9F000000000000000000000000000000000C0 +S315E071EA0000000000000000000000000000000000AF +S315E071EA10000000000000000000000000000000009F +S315E071EA20000000000000000000000000000000008F +S315E071EA30000000000000000000000000000000007F +S315E071EA40000000000000000000000000000000006F +S315E071EA50000000000000000000000000000000005F +S315E071EA60000000000000000000000000000000004F +S315E071EA70000000000000000000000000000000003F +S315E071EA800000003E490000000000000000000000A8 +S315E071EA90000000000000000000000000000000001F +S315E071EAA0000000000000000000000000000000000F +S315E071EAB000000000000000000000000000000000FF +S315E071EAC000000000000000000000000000000000EF +S315E071EAD000000000000000000000000000000000DF +S315E071EAE000000000000000000000000000000000CF +S315E071EAF000000000000000000000000000000000BF +S315E071EB0000000000000000000000000000000000AE +S315E071EB10000000000000000000000000000000009E +S315E071EB20000000000000000000000000000000008E +S315E071EB30000000000000000000000000000000007E +S315E071EB40000000000000000000000000000000006E +S315E071EB50000000000000000000000000000000005E +S315E071EB60000000000000000000000000000000004E +S315E071EB70000000000000000000000000000000003E +S315E071EB80000000000000000000000000000000002E +S315E071EB90000000000000000000000000000000001E +S315E071EBA0000000000000000000000000000000000E +S315E071EBB000000000000000000000000000000000FE +S315E071EBC000000000000000000000000000000000EE +S315E071EBD000000000000000000000000000000000DE +S315E071EBE000000000000000000000000000000000CE +S315E071EBF00000000000000000000000003E49000037 +S315E071EC0000000000000000000000000000000000AD +S315E071EC10000000000000000000000000000000009D +S315E071EC20000000000000000000000000000000008D +S315E071EC30000000000000000000000000000000007D +S315E071EC40000000000000000000000000000000006D +S315E071EC50000000000000000000000000000000005D +S315E071EC60000000000000000000000000000000004D +S315E071EC70000000000000000000000000000000003D +S315E071EC80000000000000000000000000000000002D +S315E071EC90000000000000000000000000000000001D +S315E071ECA0000000000000000000000000000000000D +S315E071ECB000000000000000000000000000000000FD +S315E071ECC000000000000000000000000000000000ED +S315E071ECD000000000000000000000000000000000DD +S315E071ECE000000000000000000000000000000000CD +S315E071ECF000000000000000000000000000000000BD +S315E071ED0000000000000000000000000000000000AC +S315E071ED10000000000000000000000000000000009C +S315E071ED20000000000000000000000000000000008C +S315E071ED30000000000000000000000000000000007C +S315E071ED40000000000000000000000000000000006C +S315E071ED50000000000000000000000000000000005C +S315E071ED60000000000000000000000000000000004C +S315E071ED7000000000003E49000000000000000000B5 +S315E071ED80000000000000000000000000000000002C +S315E071ED90000000000000000000000000000000001C +S315E071EDA0000000000000000000000000000000000C +S315E071EDB000000000000000000000000000000000FC +S315E071EDC000000000000000000000000000000000EC +S315E071EDD000000000000000000000000000000000DC +S315E071EDE000000000000000000000000000000000CC +S315E071EDF000000000000000000000000000000000BC +S315E071EE0000000000000000000000000000000000AB +S315E071EE10000000000000000000000000000000009B +S315E071EE20000000000000000000000000000000008B +S315E071EE30000000000000000000000000000000007B +S315E071EE40000000000000000000000000000000006B +S315E071EE50000000000000000000000000000000005B +S315E071EE60000000000000000000000000000000004B +S315E071EE70000000000000000000000000000000003B +S315E071EE80000000000000000000000000000000002B +S315E071EE90000000000000000000000000000000001B +S315E071EEA0000000000000000000000000000000000B +S315E071EEB000000000000000000000000000000000FB +S315E071EEC000000000000000000000000000000000EB +S315E071EED000000000000000000000000000000000DB +S315E071EEE000000000000000000000000000003E4944 +S315E071EEF000000000000000000000000000000000BB +S315E071EF0000000000000000000000000000000000AA +S315E071EF10000000000000000000000000000000009A +S315E071EF20000000000000000000000000000000008A +S315E071EF30000000000000000000000000000000007A +S315E071EF40000000000000000000000000000000006A +S315E071EF50000000000000000000000000000000005A +S315E071EF60000000000000000000000000000000004A +S315E071EF70000000000000000000000000000000003A +S315E071EF80000000000000000000000000000000002A +S315E071EF90000000000000000000000000000000001A +S315E071EFA0000000000000000000000000000000000A +S315E071EFB000000000000000000000000000000000FA +S315E071EFC000000000000000000000000000000000EA +S315E071EFD000000000000000000000000000000000DA +S315E071EFE000000000000000000000000000000000CA +S315E071EFF000000000000000000000000000000000BA +S315E071F00000000000000000000000000000000000A9 +S315E071F0100000000000000000000000000000000099 +S315E071F0200000000000000000000000000000000089 +S315E071F0300000000000000000000000000000000079 +S315E071F0400000000000000000000000000000000069 +S315E071F0500000000000000000000000000000000059 +S315E071F060000000000000003E4900000000000000C2 +S315E071F0700000000000000000000000000000000039 +S315E071F0800000000000000000000000000000000029 +S315E071F0900000000000000000000000000000000019 +S315E071F0A00000000000000000000000000000000009 +S315E071F0B000000000000000000000000000000000F9 +S315E071F0C000000000000000000000000000000000E9 +S315E071F0D000000000000000000000000000000000D9 +S315E071F0E000000000000000000000000000000000C9 +S315E071F0F000000000000000000000000000000000B9 +S315E071F10000000000000000000000000000000000A8 +S315E071F1100000000000000000000000000000000098 +S315E071F1200000000000000000000000000000000088 +S315E071F1300000000000000000000000000000000078 +S315E071F1400000000000000000000000000000000068 +S315E071F1500000000000000000000000000000000058 +S315E071F1600000000000000000000000000000000048 +S315E071F1700000000000000000000000000000000038 +S315E071F1800000000000000000000000000000000028 +S315E071F1900000000000000000000000000000000018 +S315E071F1A00000000000000000000000000000000008 +S315E071F1B000000000000000000000000000000000F8 +S315E071F1C000000000000000000000000000000000E8 +S315E071F1D000000000000000000000000000000000D8 +S315E071F1E03E4900000000000000000000000004003D +S315E071F1F02000000000000000000000000000000098 +S315E071F2000000000001000000400000000000000066 +S315E071F2100000000000000000000000000200100085 +S315E071F2208000000000000000000000000000000007 +S315E071F2300000000004002000000000000000000053 +S315E071F2400000000000000000000001000000400026 +S315E071F2500000000000000000000000000000000057 +S315E071F26000000200100080000000000000000000B5 +S315E071F2700000000000000000000004002000000013 +S315E071F2800000000000000000000000000000000027 +S315E071F29001000000400000000000000000000000D6 +S315E071F2A00000000000000000020010008000000075 +S315E071F2B000000000000000000000000000000000F7 +S315E071F2C004002000000000000000000000000000C3 +S315E071F2D00000000000000100000040000000000096 +S315E071F2E000000000000000000000000000000200C5 +S315E071F2F01000800000000000000000000000000027 +S315E071F3000000000000000400200000000000000082 +S315E071F3100000000000000000000000000100000095 +S315E071F3204000000000000000000000000000000046 +S315E071F33000000000020010008000000000000000E4 +S315E071F3400000000000000000000000000400200042 +S315E071F350000000000000000000B3B80000000000EB +S315E071F36000000000000000040020000000800000A2 +S315E071F3700000000000000000000000000001000035 +S315E071F38000400000000000000000000000000000E6 +S315E071F3900000000000020010008000000000000084 +S315E071F3A000000000000000000000000000040020E2 +S315E071F3B000000000000000000000000000000000F6 +S315E071F3C000000001000000400000000000000000A5 +S315E071F3D00000000000000000000000020010008044 +S315E071F3E000000000000000000000000000000000C6 +S315E071F3F00000000400200000000000000000000092 +S315E071F4000000000000000000000100000040000064 +S315E071F4100000000000000000000000000000000095 +S315E071F42000020010008000000000000000000000F3 +S315E071F4300000000000000000000400200000000051 +S315E071F4400000000000000000000000000000000164 +S315E071F4500000004000000000000000000000000015 +S315E071F46000000000000000020010008000000000B3 +S315E071F4700000000000000000000000000000000431 +S315E071F4800020000000000000000000000000000005 +S315E071F49000000000000100000040000000000000D4 +S315E071F4A000000000000000000000000000020010F3 +S315E071F4B00080000000000000000000000000000075 +S315E071F4C000000000000400200000000000000000C1 +S315E071F4D000002E9000000000000000000080000097 +S315E071F4E004002000000000000000000000000000A1 +S315E071F4F00000000000000100000040000000000074 +S315E071F50000000000000000000000000000000200A2 +S315E071F5101000800000000000000000000000000004 +S315E071F5200000000000000400200000000000000060 +S315E071F5300000000000000000000000000100000073 +S315E071F5404000000000000000000000000000000024 +S315E071F55000000000020010008000000000000000C2 +S315E071F5600000000000000000000000000400200020 +S315E071F5700000000000000000000000000000000034 +S315E071F58000000100000040000000000000000000E3 +S315E071F5900000000000000000000002001000800082 +S315E071F5A00000000000000000000000000000000004 +S315E071F5B000000400200000000000000000000000D0 +S315E071F5C000000000000000000100000040000000A3 +S315E071F5D000000000000000000000000000000000D4 +S315E071F5E00200100080000000000000000000000032 +S315E071F5F00000000000000000040020000000000090 +S315E071F60000000000000000000000000000000100A2 +S315E071F6100000400000000000000000000000000053 +S315E071F62000000000000002001000800000000000F1 +S315E071F630000000000000000000000000000004006F +S315E071F640200000000000000000000044900000036C +S315E071F6500314146060000003031014406000000797 +S315E071F6600730304040000007073030C0C000000668 +S315E071F67007303080C0010106067070808001010696 +S315E071F68006707080800101040660700080030314C7 +S315E071F69014E0E0000003031414E0E000000303103B +S315E071F6A014C0E0000007073030C0C0000007073023 +S315E071F6B030C0C000000607303080C0010106067018 +S315E071F6C07080800101060670708080010104066019 +S315E071F6D070008003031414E0E0000003031414E0E7 +S315E071F6E0E0000003031014C0E0000007073030C0EB +S315E071F6F0C0000007073030C0C00000060730308018 +S315E071F700C001010606707080800101060670708086 +S315E071F71080010104066070008003031414E0E000C8 +S315E071F7200003031414E0E0000003031014C0E000CA +S315E071F7300007073030C0C0000007073030C0C00096 +S315E071F740000607303080C0010106067070808001C6 +S315E071F7500106067070808001010406607000800306 +S315E071F760031414E0E0000003031414E0E000000366 +S315E071F770031014C0E0000007073030C0C000000776 +S315E071F780073030C0C000000607303080C001010686 +S315E071F7900670708080010106067070808001010438 +S315E071F7A0066070008003031414E0E0000002021C9E +S315E071F7B01CE0E000000202181CC0E00000060638FA +S315E071F7C038C0C00018CE0000000000000000000044 +S315E071F7D000000000000000000000000000000000D2 +S315E071F7E000000000000000000000000000000000C2 +S315E071F7F000000000000000000000000000000000B2 +S315E071F80000000000000000000000000000000000A1 +S315E071F8100000000000000000000000000000000091 +S315E071F8200000000000000000000000000000000081 +S315E071F8300000000000000000000000000000000071 +S315E071F8400000000000000000000000000000000061 +S315E071F8500000000000000000000000000000000051 +S315E071F8600000000000000000000000000000000041 +S315E071F8700000000000000000000000000000000031 +S315E071F8800000000000000000000000000000000021 +S315E071F8900000000000000000000000000000000011 +S315E071F8A00000000000000000000000000000000001 +S315E071F8B000000000000000000000000000000000F1 +S315E071F8C000000000000000000000000000000000E1 +S315E071F8D000000000000000000000000000000000D1 +S315E071F8E000000000000000000000000000000000C1 +S315E071F8F000000000000000000000000000000000B1 +S315E071F90000000000000000000000000000000000A0 +S315E071F9100000000000000000000000000000000090 +S315E071F9200000000000000000000000000000000080 +S315E071F930000000000000000000000000003E4900E9 +S315E071F9400000000000000000000000000000000060 +S315E071F9500000000000000020000000000000000030 +S315E071F9600000000000000000000000000000000040 +S315E071F9700000000000000000000000000000000030 +S315E071F9800000000000000000000000000000000020 +S315E071F9900000000000000000000000000000000010 +S315E071F9A000000000001000000000000000000000F0 +S315E071F9B000000000004000000000000000000000B0 +S315E071F9C000000000000000000000000000000000E0 +S315E071F9D000000000000000000000020000000000CE +S315E071F9E00000000000000000000000000000800040 +S315E071F9F000000000000000000000000000000000B0 +S315E071FA00000000000000000000000000000000009F +S315E071FA10000000000000000000000000000000008F +S315E071FA20000000000000000000000000000000007F +S315E071FA3000000000000010008000000000000000DF +S315E071FA40000000000000000000002000000000003F +S315E071FA50000000000000010000000000000000004E +S315E071FA60000000000000000000000000000000003F +S315E071FA70000000000000000000000000000000002F +S315E071FA80000000000000000000000000000000001F +S315E071FA90000000000004000000000000000000000B +S315E071FAA000000000000000000000000000000000FF +S315E071FAB0000000000000DFB600000000000000005A +S315E071FAC000000000000000000000000000000000DF +S315E071FAD0000080000000000000000000000000004F +S315E071FAE000000000000000000000000000100000AF +S315E071FAF000000000000000000000000000000000AF +S315E071FB00000000000000000000000000000000009E +S315E071FB10000000000000000000000000000000008E +S315E071FB20000000000000000000000000000000007E +S315E071FB30000000000000000000000000000000006E +S315E071FB40000000000000000000000000000000005E +S315E071FB50000000000000000000000000000000004E +S315E071FB6000000020000000002000000000000000FE +S315E071FB70200000000000000000000000000000000E +S315E071FB80000000000000000000000000000000001E +S315E071FB90000000000000000000000000000000000E +S315E071FBA000000000000000000000000000000000FE +S315E071FBB000000000000000000000000000000000EE +S315E071FBC000000000000000000000000000000000DE +S315E071FBD000000000000000000000000000000000CE +S315E071FBE000000000000000000000000000000000BE +S315E071FBF000000000000000000000000000000000AE +S315E071FC00010000000000000001002000000000007B +S315E071FC10010000000000000000000000000000008C +S315E071FC200000000000010000000000000000005D1F +S315E071FC30C8000000000000000000000000000000A5 +S315E071FC40002000000000000000000000000000003D +S315E071FC50000000000000000000000000000000004D +S315E071FC60000000000000100000000000000000002D +S315E071FC70000000000000000000000000000000002D +S315E071FC80000000000000000000000000000000001D +S315E071FC9000000000000000000000000000000040CD +S315E071FCA000000000000000000000000000000200FB +S315E071FCB000000000000000000000000000000000ED +S315E071FCC000000000000000000000000000000000DD +S315E071FCD000000000000000000000000000000000CD +S315E071FCE0002000000000000000200000000000007D +S315E071FCF000000000000000000000000000000000AD +S315E071FD00000000000000000000000000000000009C +S315E071FD10000000000000000000000000000000008C +S315E071FD20000000000000000000000000000000007C +S315E071FD30000000000000000000000000000000006C +S315E071FD40000000000000000000000000000000005C +S315E071FD50000000000000000000000000000000004C +S315E071FD60000000000000000000000000000000003C +S315E071FD7000000000000000000001000000400000EB +S315E071FD80000100000000000000010000000000001A +S315E071FD90000000000000000000000000000001000B +S315E071FDA0000000000000000031AF0000000000001C +S315E071FDB000000000000000000000000000000000EC +S315E071FDC0000000800000000000000000000000005C +S315E071FDD000000000000000000000000000000000CC +S315E071FDE000000000000000000000000000000000BC +S315E071FDF000000000000000000000000000000000AC +S315E071FE00000000000000000000000000000000009B +S315E071FE10000000000000000000000000000000008B +S315E071FE20000000000000000000100000000000006B +S315E071FE30000000000000000000000000000000006B +S315E071FE40000000000000000000000000000000005B +S315E071FE50000000000000200000000000000000002B +S315E071FE60000000000000000000000000000000003B +S315E071FE7000000000000080000000000000000000AB +S315E071FE80000000000000000000000000000000001B +S315E071FE90000000000000000000000000000000000B +S315E071FEA000000000000000000000000000000000FB +S315E071FEB0000000000000000000001000800000005B +S315E071FEC000000000000000000000000000000000DB +S315E071FED001002000000000000000000000000000AA +S315E071FEE000000000000001000000000000000000BA +S315E071FEF0000000000000000000000020000000008B +S315E071FF000000000000000000010000000000000099 +S315E071FF100004000000000000000000000000000086 +S315E071FF200004CD00000000000000000000000000A9 +S315E071FF30000000000000000000000000000000006A +S315E071FF40000000000000000000000000000000005A +S315E071FF50000000000000000000000000000000004A +S315E071FF60000000000000000000000000000000003A +S315E071FF70000000000000000000000000000000002A +S315E071FF80000000000000000000000000000000001A +S315E071FF90000000000000000000000000000000000A +S315E071FFA000000000000000000000000000000000FA +S315E071FFB0000000000000000000000080000000006A +S315E071FFC000000000000000000000000000000000DA +S315E071FFD000000000000000000000000000000000CA +S315E071FFE000000000000000000000000000000000BA +S315E071FFF000000000000000000000000000000000AA +S315E07200000000000000000000000000000000000098 +S315E07200100000000000000000000000000000000088 +S315E07200200000000000000000000000000000000078 +S315E07200300000000000000000000000000000000068 +S315E072004000000000000000008000000000000000D8 +S315E07200500000000000000000000000000000000048 +S315E07200600000000000000000000000000000000038 +S315E07200700000000000000000000000000000000028 +S315E07200800000000000000000000000000000000018 +S315E0720090000000000000000000008FF10000808088 +S315E07200A00000000000008000000000000000000078 +S315E07200B000000000000000000000200000000000C8 +S315E07200C000000000000000000000000000000000D8 +S315E07200D000000000000000000000000000000000C8 +S315E07200E000000000000000000000000000000000B8 +S315E07200F000000000000000000000000000000000A8 +S315E07201000000000000000000000000000000000097 +S315E07201100000000000000000000000000000000087 +S315E07201200000000000000000000000000000000077 +S315E07201300000000000000000000000000000000067 +S315E07201400000000000000000000000000000000057 +S315E07201500000000000000000000000000000000047 +S315E07201600000000000000000000000000000000037 +S315E07201700000000000000000000000000000000027 +S315E07201800000000000000000000000000000000017 +S315E07201900000000000000000000000000000000007 +S315E07201A000000000000000000000000000000000F7 +S315E07201B000000000000000000000000000000000E7 +S315E07201C00000000000000080000000000000000057 +S315E07201D000000000000000000000000000000000C7 +S315E07201E000000000000000000000000000000000B7 +S315E07201F000000000000000000000000000000000A7 +S315E07202000000000000000000000000000000000096 +S315E07202100101008858000000000000000000800024 +S315E07202200000000000000000000000000000000076 +S315E07202300000000000000000000000000000000066 +S315E07202400000000000000000000000000000000056 +S315E07202500000000000000000000000000000000046 +S315E07202600000000000000000000000000000000036 +S315E07202700000000000000000000000000000000026 +S315E07202800000000000000000000000000000000016 +S315E07202900000000000000000000000000000000006 +S315E07202A000000000000000000000000000000000F6 +S315E07202B000000000000000000000000000000000E6 +S315E07202C000000000000000000000000000000000D6 +S315E07202D000000000000000000000000000000000C6 +S315E07202E000000000000000000000000000000000B6 +S315E07202F000000000000000000000000000000000A6 +S315E07203000000000000000000000000000000000095 +S315E07203100000000000000000000000000000000085 +S315E07203200000000000000000000000000000000075 +S315E072033000000000000000000000800000000000E5 +S315E072034080000000000000000000000000000000D5 +S315E07203500000000000000000000000000000000045 +S315E07203600000000000000000000000000000000035 +S315E07203700000000000000000000000000000000025 +S315E0720380000000000000000000000000950B002055 +S315E07203900000000000000000000000000000000005 +S315E07203A000000000000000000000000000000000F5 +S315E07203B000000000000000000000000000000000E5 +S315E07203C000000000000000000000000000000000D5 +S315E07203D00000000000000000000000800000000045 +S315E07203E000000000000000000000000000000000B5 +S315E07203F000000000000000000000000000000000A5 +S315E07204000000000000000000000000000000000094 +S315E07204100000000000000000000000000000000084 +S315E07204200000000000000000000000000000000074 +S315E072043000000000000000000080000000000000E4 +S315E07204400000000000000000000000000000000054 +S315E07204500000000000000000000000000000000044 +S315E07204600000000000000000000000000000000034 +S315E07204700000000000000000000000000000000024 +S315E07204800000000000000000000000000000000014 +S315E07204900000000000000000000000000000000004 +S315E07204A000000000000000000000000000000000F4 +S315E07204B000000000000000000000000000000000E4 +S315E07204C000000000000000000000000000000000D4 +S315E07204D000000000000000000000000000000000C4 +S315E07204E000000000000000000000000000000000B4 +S315E07204F00000008000000000000000000000000024 +S315E072050000000000005FCF00000000000000000065 +S315E07205100000000000000000000000000000000083 +S315E07205200000000000000000000000000000000073 +S315E07205300000000000000000000000000000000063 +S315E07205400000000000000000000000000000000053 +S315E07205500000000000000000000000000000000043 +S315E07205600000000000000000000000000000000033 +S315E07205700000000000000000000000000000000023 +S315E07205800000000000000000000000000000000013 +S315E07205900000000000000000000000000000000003 +S315E07205A000000000000000000000000000000000F3 +S315E07205B000000000000000000000000000000000E3 +S315E07205C000000000000000000000000000000000D3 +S315E07205D000000000000000000000000000000000C3 +S315E07205E000000000000000000000000000000000B3 +S315E07205F000000000000000000000000000000000A3 +S315E07206000000000000000000000000000000000092 +S315E07206100000000000000000000000000000000082 +S315E07206200000000000000000000000000000000072 +S315E07206300000000000000000000000000000000062 +S315E07206400000000000000000000000000000000052 +S315E07206500000000000000000000000000000000042 +S315E07206600000000000000000000000000000000032 +S315E072067000000000000000000000000000003E499B +S315E072068000002000000000000000000000000000F2 +S315E07206900000000000000000000000000000000002 +S315E07206A000000000000000000000000000000000F2 +S315E07206B000000000000000000000000000000000E2 +S315E07206C000000000000000000000000000000000D2 +S315E07206D000000000000000000000000000000000C2 +S315E07206E000000000000000000000000000000001B1 +S315E07206F000000000000000000000000000000000A2 +S315E07207000000000000000000000000000000000091 +S315E07207100000000000000000000000000000000081 +S315E07207200000000000000000000000000000000071 +S315E07207300000000000000000000000000000000061 +S315E07207400000000000000000000000000000000051 +S315E07207500000000000000000000000000000000041 +S315E07207600000000000000000000000000000000031 +S315E07207700000000000000000000000000000000021 +S315E07207800000000000000000000000000000000011 +S315E07207900000000000000000000000000000000001 +S315E07207A000000000000000000000000000000000F1 +S315E07207B000000000000000000000000000000000E1 +S315E07207C000000000000000000000000000000000D1 +S315E07207D000000000000000000000000000000000C1 +S315E07207E000000000000000000000000000000000B1 +S315E07207F0000000000000002FE3000000000000008F +S315E07208000080000000000000000000000000000010 +S315E07208100000000000000000000000000000000080 +S315E07208200000000000000000000000000000000070 +S315E07208300000000000000000000000000000000060 +S315E072084000000000000000800000000000000000D0 +S315E07208500000000000000000000000000000000040 +S315E07208600000000000000000000000000000000030 +S315E07208700000000000000000000000000000000020 +S315E07208800000000000000000000000000000000010 +S315E07208900000000000000000000000000000000000 +S315E07208A00000000080000000000000000000000070 +S315E07208B000000000000000000001000000000000DF +S315E07208C000000000000000000000000000000000D0 +S315E07208D000000000000000000000000000000000C0 +S315E07208E000000000000000000000000000000000B0 +S315E07208F000000000000000000000000000000000A0 +S315E0720900000000000000000000000000000000008F +S315E0720910000000000000000000000000000000007F +S315E0720920000000000000000000000000000000006F +S315E0720930000000000000000000000000000000005F +S315E0720940000000000000000000000000000000004F +S315E072095000000000000000000000000000008000BF +S315E0720960000000000000000000000000000000002F +S315E0720970DEA200008000000000000000000000001F +S315E0720980000000000000000000000000000000000F +S315E072099000000000000000000000000000000000FF +S315E07209A000000000000000000000000000000000EF +S315E07209B000000000000000000000000000000000DF +S315E07209C000000000000000000000000000000000CF +S315E07209D000000000000000000000000000000000BF +S315E07209E000000000000000000000000000000000AF +S315E07209F0000000000000000000000000000000009F +S315E0720A00000000000000000000000000000000008E +S315E0720A10000000000000000000000000000000007E +S315E0720A20000000000000000000000000000000006E +S315E0720A30000000000000000000000000000000005E +S315E0720A40000000000000000000000000000000004E +S315E0720A50000000000000000000000000000000003E +S315E0720A60000000000000000000000000000000002E +S315E0720A70000000000000000000000000000000001E +S315E0720A80000000000000000000000000000000000E +S315E0720A9000000000000000000000000000000000FE +S315E0720AA000000000000000000000000000000000EE +S315E0720AB000000000000000000000000000000000DE +S315E0720AC000000000000000000000000000000000CE +S315E0720AD000000000000000000000000000000000BE +S315E0720AE04000000000000000008F6D000000000072 +S315E0720AF0000000800000000000000000000000809E +S315E0720B00000000000000000000000000000000008D +S315E0720B10000000000000000000000000000000007D +S315E0720B20000000000000000000000000000000006D +S315E0720B30000000000000000000000000000000005D +S315E0720B40000000000000000000000000000000004D +S315E0720B50000000000000000000000000000000003D +S315E0720B60000000000000000000000000000000002D +S315E0720B70000000000000000000000000000000001D +S315E0720B80000000000000000000000000000000000D +S315E0720B9000000000000000000000000000000000FD +S315E0720BA000000000000000000000000000000000ED +S315E0720BB000000000000000000000000000000000DD +S315E0720BC000000000000000000000000000000000CD +S315E0720BD000000000000000000000000000000000BD +S315E0720BE000000000000000000000000000000000AD +S315E0720BF0000000000000000000000000000000009D +S315E0720C00000000000000000000000000000000008C +S315E0720C10000000000000000000000000000000007C +S315E0720C20000000000000000000000000000000006C +S315E0720C30000000000000000000000000000000005C +S315E0720C40000000000000000000000000000000004C +S315E0720C50010000000000000000000001000000003A +S315E0720C600000C5D200000000000000000000000095 +S315E0720C70000000000000000000000000000000001C +S315E0720C80000000000000000000000000000000000C +S315E0720C9000000000000000000000000000000000FC +S315E0720CA000000000000000000000000000000000EC +S315E0720CB000000000000000000000000000000000DC +S315E0720CC000000000000000000000000000000000CC +S315E0720CD000000000000000000000000000000000BC +S315E0720CE000000000000000000000000000000000AC +S315E0720CF0000000000000000000000000000000009C +S315E0720D00000000000000000000000000000000008B +S315E0720D10000000000000000000000000000000007B +S315E0720D20000000000000000000000000000000006B +S315E0720D30000000000000000000000000000000005B +S315E0720D40000000000000000000000000000000004B +S315E0720D50000000000000000000000000000000003B +S315E0720D60000000000000000000000000000000002B +S315E0720D70000000000000000000000000000000001B +S315E0720D80000000000000000000000000000000000B +S315E0720D9000000000000000000000000000000000FB +S315E0720DA000000000000000000000000000000000EB +S315E0720DB000000000000000000000000000000000DB +S315E0720DC000000000000000000000000000000000CB +S315E0720DD000000000000000000000003E4900000034 +S315E0720DE000000000000000000000000000000000AB +S315E0720DF0000000000000000000000000000000009B +S315E0720E00000000000000000000000000000000008A +S315E0720E10000000000000000000000000000000007A +S315E0720E20000000000000000000000000000000006A +S315E0720E30000000000000000000000000000000005A +S315E0720E40000000000000000000000000000000004A +S315E0720E50000000000000000000000000000000003A +S315E0720E60000000000000000000000000000000002A +S315E0720E70000000000000000000000000000000001A +S315E0720E80000000000000000000000000000000000A +S315E0720E9000000000000000000000000000000000FA +S315E0720EA000000000000000000000000000000000EA +S315E0720EB000000000000000000000000000000000DA +S315E0720EC000000000000000000000000000000000CA +S315E0720ED000000000000000000000000000000000BA +S315E0720EE000000000000000000000000000000000AA +S315E0720EF0000000000000000000000000000000009A +S315E0720F000000000000000000000000000000000089 +S315E0720F100000000000000000000000000000000079 +S315E0720F200000000000000000000000000000000069 +S315E0720F300000000000000000000000000000000059 +S315E0720F400000000000000000000000000000000049 +S315E0720F50000000003E4900000000000000000000B2 +S315E0720F600000000000000000000000000000000029 +S315E0720F700000000000000000000000000000000019 +S315E0720F800000000000000000000000000000000009 +S315E0720F9000000000000000000000000000000000F9 +S315E0720FA000000000000000000000000000000000E9 +S315E0720FB000000000000000000000000000000000D9 +S315E0720FC000000000000000000000000000000000C9 +S315E0720FD000000000000000000000000000000000B9 +S315E0720FE000000000000000000000000000000000A9 +S315E0720FF00000000000000000000000000000000099 +S315E07210000000000000000000000000000000000088 +S315E07210100000000000000000000000000000000078 +S315E07210200000000000000000000000000000000068 +S315E07210300000000000000000000000000000000058 +S315E07210400000000000000000000000000000000048 +S315E07210500000000000000000000000000000000038 +S315E07210600000000000000000000000000000000028 +S315E07210700000000000000000000000000000000018 +S315E07210800000000000000000000000000000000008 +S315E072109000000000000000000000000000000000F8 +S315E07210A000000000000000000000000000000000E8 +S315E07210B000000000000000000000000000000000D8 +S315E07210C0000000000000400000000001007E1D00EC +S315E07210D08000000000000000000000000000000038 +S315E07210E000000000000000000000000000000000A8 +S315E07210F00000000000000000000000000000000098 +S315E07211000000000000000000000000000000000087 +S315E07211100000000000000000000000000000000077 +S315E07211200000000000000000000000000000000067 +S315E07211300000000000000000000000000000000057 +S315E07211400000000000000000000000000000000047 +S315E07211500000000000000000000000000000000037 +S315E07211600000000000000000000000000000000027 +S315E07211700000000000000000000000000000000017 +S315E07211800000000000000000000000000000000007 +S315E072119000000000000000000000000000000000F7 +S315E07211A000000000000000000000000000000000E7 +S315E07211B000000000000000000000000000000000D7 +S315E07211C000000000000000000000000000000000C7 +S315E07211D000000000000000000000000000000000B7 +S315E07211E000000000000000000000000000000000A7 +S315E07211F00000000000000000000000000000000097 +S315E07212000000000000000000000000000000000086 +S315E07212100000000000000000000000000000000076 +S315E07212200000000000000000000000000000000066 +S315E07212300000000000000000000000000000000056 +S315E0721240000000000000D8E9000000000000000085 +S315E07212500000000000000000000000000000000036 +S315E07212600000000000000000000000000000000026 +S315E07212700000000000000000000000000000000016 +S315E07212800000000000000000000000000000000006 +S315E072129000000000000000000000000000000000F6 +S315E07212A000000000000000000000000000000000E6 +S315E07212B000000000000000000000000000000000D6 +S315E07212C000000000000000000000000000000000C6 +S315E07212D000000000000000000000000000000000B6 +S315E07212E000000000000000000000000000000000A6 +S315E07212F00000000000000000000000000000000096 +S315E07213000000000000000000000000000000000085 +S315E07213100000000000000000000000000000000075 +S315E07213200000000000000000000000000000000065 +S315E07213300000000000000000000000000000000055 +S315E07213400000000000000000000000000000000045 +S315E07213500000000000000000000000000000000035 +S315E07213600000000000000000000000000000000025 +S315E07213700000000000000000000000000000000015 +S315E07213800000000000000000000000000000000005 +S315E072139000000000000000000000000000000000F5 +S315E07213A000000000000000000000000000000000E5 +S315E07213B00000000000000000000000000000003E97 +S315E07213C049000000000000000000008000000000FC +S315E07213D00000008000000000000000000000000035 +S315E07213E000000000000000000000000000000000A5 +S315E07213F00000000000000000000000000000000095 +S315E07214000000000000000000000000000000000084 +S315E07214100000000000000000000000000000000074 +S315E07214200000000000000000000000000000000064 +S315E07214300000000000000000000000000000000054 +S315E07214400000000000000000000000000000000044 +S315E07214500000000000000000000000000000000034 +S315E07214600000000000000000000000000000000024 +S315E07214700000000000000000000000000000000014 +S315E07214800000000000000000000000000000000004 +S315E072149000000000000000000000000000000000F4 +S315E07214A000000000000000000000000000000000E4 +S315E07214B000000000000000000000000000000000D4 +S315E07214C000000000000000000000000000000000C4 +S315E07214D000000000000000000000000000000000B4 +S315E07214E000000000000000000000000000000000A4 +S315E07214F00000000000000000000000000000000094 +S315E07215000000000000000000000000000000000083 +S315E07215100000000000000000000000000000000073 +S315E07215200000000000000000000000000000400023 +S315E07215300000000000000000C14200008080000050 +S315E072154000000000000000000000000000008000C3 +S315E07215500000000000000000000000000000000033 +S315E07215600000000000000000000000000000000023 +S315E07215700000000000000000000000000000000013 +S315E07215800000000000000000000000000000000003 +S315E072159000000000000000000000000000000000F3 +S315E07215A000000000000000000000000000000000E3 +S315E07215B000000000000000000000000000000000D3 +S315E07215C000000000000000000000000000000000C3 +S315E07215D000000000000000000000000000000000B3 +S315E07215E000000000000000000000000000000000A3 +S315E07215F00000000000000000000000000000000093 +S315E07216000000000000000000000000000000000082 +S315E07216100000000000000000000000000000000072 +S315E07216200000000000000000000000000000000062 +S315E07216300000000000000000000000000000000052 +S315E07216400000000000000000000000000000000042 +S315E07216500000000000000000000000000000000032 +S315E07216600000000000000000000000000000000022 +S315E07216700000000000000000000000000000000012 +S315E07216800000000000000000000000000000000002 +S315E072169000000000000000000000000000000000F2 +S315E07216A000000000000000000000000000000101E0 +S315E07216B000489E00000000000000000000000000EC +S315E07216C000000000000000000000000000000000C2 +S315E07216D000000000000000000000000000000000B2 +S315E07216E000000000000000000000000000000000A2 +S315E07216F00000000000000000000000000000000092 +S315E07217000000000000000000000000000000000081 +S315E07217100000000000000000000000000000000071 +S315E07217200000000000000000000000000000000061 +S315E07217300000000000000000000000000000000051 +S315E07217400000000000000000000000000000000041 +S315E07217500000000000000000000000000000000031 +S315E07217600000000000000000000000000000000021 +S315E07217700000000000000000000000000000000011 +S315E07217800000000000000000000000000000000001 +S315E072179000000000000000000000000000000000F1 +S315E07217A000000000000000000000000000000000E1 +S315E07217B000000000000000000000000000000000D1 +S315E07217C000000000000000000000000000000000C1 +S315E07217D000000000000000000000000000000000B1 +S315E07217E000000000000000000000000000000000A1 +S315E07217F00000000000000000000000000000000091 +S315E07218000000000000000000000000000000000080 +S315E0721810000000000000010000000000000000006F +S315E072182000400000000000000000325B0080000013 +S315E07218300000000000800000000000000080000050 +S315E072184080000000000000000000000000000000C0 +S315E07218500000000000000000000000000000000030 +S315E07218600000000000000000000000000000000020 +S315E07218700000000000000000000000000000000010 +S315E07218800000000000000000000000000000000000 +S315E072189000000000000000000000000000000000F0 +S315E07218A000000000000000000000000000000000E0 +S315E07218B000000000000000000000000000000000D0 +S315E07218C000000000000000000000000000000000C0 +S315E07218D000000000000000000000000000000000B0 +S315E07218E000000000000000000000000000000000A0 +S315E07218F00000000000000000000000000000000090 +S315E0721900000000000000000000000000000000007F +S315E0721910000000000000000000000000000000006F +S315E0721920000000000000000000000000000000005F +S315E0721930000000000000000000000000000000004F +S315E0721940000000000000000000000000000000003F +S315E0721950000000000000000000000000000000002F +S315E0721960000000000000000000000000000000001F +S315E0721970000000000000000000000000000000000F +S315E072198000000000000000000000000000000000FF +S315E072199000000000000000000000400000000000AF +S315E07219A0000000248A000000000000000000000031 +S315E07219B0000000008000000000800000008000004F +S315E07219C000000000000000000000000000000000BF +S315E07219D000000000000000000000000000000000AF +S315E07219E0000000000000000000000000000000009F +S315E07219F0000000000000000000000000000000008F +S315E0721A00000000000000000000000000000000007E +S315E0721A10000000000000000000000000000000006E +S315E0721A20000000000000000000000000000000005E +S315E0721A30000000000000000000000000000000004E +S315E0721A40000000000000000000000000000000003E +S315E0721A50000000000000000000000000000000002E +S315E0721A60000000000000000000000000000000001E +S315E0721A70000000000000000000000000000000000E +S315E0721A8000000000000000000000000000000000FE +S315E0721A9000000000000000000000000000000000EE +S315E0721AA000000000000000000000000000000000DE +S315E0721AB000000000000000000000000000000000CE +S315E0721AC000000000000000000000000000000000BE +S315E0721AD000000000000000000000000000000000AE +S315E0721AE0000000000000000000000000000000009E +S315E0721AF0000000000000000000000000000000008E +S315E0721B00000000000000000000000000000000007D +S315E0721B10000040000000000000000000C401000068 +S315E0721B200000000000000004002000000400200015 +S315E0721B30000000000000000000000000000100004C +S315E0721B4000400100000040000000000000000000BC +S315E0721B500000000000020010008002001000800009 +S315E0721B6000000000000000000000000000040020F9 +S315E0721B7000000400200000000000000000000000E9 +S315E0721B80000000010000004001000000400000007B +S315E0721B90000000000000000000000002001000805B +S315E0721BA0020010008000000000000000000000004B +S315E0721BB00000000400200000040020000000000085 +S315E0721BC0000000000000000000010000004001007B +S315E0721BD0000040000000000000000000000000006D +S315E0721BE00002001000800200100080000000000079 +S315E0721BF00000000000000000000400200000040065 +S315E0721C00200000000000000000000000000000015B +S315E0721C1000000040010000004000000000000000EB +S315E0721C2000000000000000020010008002001000B8 +S315E0721C3080000000000000000000000000000004C8 +S315E0721C4000200000040020000000000000000000F8 +S315E0721C5000000000000100000040010000004000AA +S315E0721C60000000000000000000000000000200100A +S315E0721C7000800200100080000000000000000000FA +S315E0721C8000000000000400200000040020000000B4 +S315E0721C900000000000FBB000000000000000000041 +S315E0721CA0000000000000008000000000000000005C +S315E0721CB000000000000000000000000000000000CC +S315E0721CC000000000000000000000000000000000BC +S315E0721CD000000000000000000000000000000000AC +S315E0721CE0000000000000000000000000000000009C +S315E0721CF0000000000000000000000000000000008C +S315E0721D00000000000000000000000000000000007B +S315E0721D10000000000000000000000000000000006B +S315E0721D20000000000000000000000000000000005B +S315E0721D30000000000000000000000000000000004B +S315E0721D40000000000000000000000000000000003B +S315E0721D50000000000000000000000000000000002B +S315E0721D60000000000000000000000000000000001B +S315E0721D70000000000000000000000000000000000B +S315E0721D8000000000000000000000000000000000FB +S315E0721D9000000000000000000000000000000000EB +S315E0721DA000000000000000000000000000000000DB +S315E0721DB000000000000000000000000000000000CB +S315E0721DC000000000000000000000000000000000BB +S315E0721DD000000000000000000000000000000000AB +S315E0721DE0000000000000000000000000000000009B +S315E0721DF0000000000000000000000000000000008B +S315E0721E00000000000000000000000000000056C75D +S315E0721E1000800000000000000000000000000000EA +S315E0721E20000000800000008000000000000000005A +S315E0721E30000000000000000000000000000000004A +S315E0721E40000000000000000000000000000000003A +S315E0721E50000000000000000000000000000000002A +S315E0721E60000000000000000000000000000000001A +S315E0721E70000000000000000000000000000000000A +S315E0721E8000000000000000000000000000000000FA +S315E0721E9000000000000000000000000000000000EA +S315E0721EA000000000000000000000000000000000DA +S315E0721EB000000000000000000000000000000000CA +S315E0721EC000000000000000000000000000000000BA +S315E0721ED000000000000000000000000000000000AA +S315E0721EE0000000000000000000000000000000009A +S315E0721EF0000000000000000000000000000000008A +S315E0721F000000000000000000000000000000000079 +S315E0721F100000000000000000000000000000000069 +S315E0721F200000000000000000000000000000000059 +S315E0721F300000000000000000000000000000000049 +S315E0721F400000000000000000000000000000000039 +S315E0721F500000000000000000000000000000000029 +S315E0721F600000000000000000000000000000000019 +S315E0721F700101000000000000000000000040400087 +S315E0721F8000000000000000C48800000000000000AD +S315E0721F9000000000000000000000000000000000E9 +S315E0721FA000000000000000000000000000000000D9 +S315E0721FB000000000000000000000000000000000C9 +S315E0721FC000000000000000000000000000000000B9 +S315E0721FD000000000000000000000000000000000A9 +S315E0721FE00000000000000000000000000000000099 +S315E0721FF00000000000000000000000000000000089 +S315E07220000000000000000000000000000000000078 +S315E07220100000000000000000000000000000000068 +S315E07220200000000000000000000000000000000058 +S315E07220300000000000000000000000000000000048 +S315E07220400000000000000000000000000000000038 +S315E07220500000000000000000000000000000000028 +S315E07220600000000000000000000000000000000018 +S315E07220700000000000000000000000000000000008 +S315E072208000000000000000000000000000000000F8 +S315E072209000000000000000000000000000000000E8 +S315E07220A000000000000000000000000000000000D8 +S315E07220B000000000000000000000000000000000C8 +S315E07220C000000000000000000000000000000000B8 +S315E07220D000000000000000000000000000000000A8 +S315E07220E00000000000000000000000000000000098 +S315E07220F00000000000004040000000000000000008 +S315E07221000D5E00000000000000000000000000000C +S315E07221100000000000000000000000000000000067 +S315E07221200000000000000000000000000000000057 +S315E07221300000000000000000000000000000000047 +S315E07221400000000000000000000000000000000037 +S315E07221500000000000000000000000000000000027 +S315E07221600000000000000000000000000000000017 +S315E07221700000000000000000000000000000000007 +S315E072218000000000000000000000000000000000F7 +S315E072219000000000000000000000000000000000E7 +S315E07221A000000000000000000000000000000000D7 +S315E07221B000000000000000000000000000000000C7 +S315E07221C000000000000000000000000000000000B7 +S315E07221D000000000000000000000000000000000A7 +S315E07221E00000000000000000000000000000000097 +S315E07221F00000000000000000000000000000000087 +S315E07222000000000000000000000000000000000076 +S315E07222100000000000000000000000000000000066 +S315E07222200000000000000000000000000000000056 +S315E07222300000000000000000000000000000000046 +S315E07222400000000000000000000000000000000036 +S315E07222500000000000000000000000000000000026 +S315E07222600000000000000000000000000000000016 +S315E07222700000000000000100006F8900000000000D +S315E072228000000000000000000000000000000000F6 +S315E072229000000000000000000000000000000000E6 +S315E07222A000000000000000000000000000000000D6 +S315E07222B000000000000000000000000000000000C6 +S315E07222C000000000000000000000000000000000B6 +S315E07222D000000000000000000000000000000000A6 +S315E07222E00000000000000000000000000000000096 +S315E07222F00000000000000000000000000000000086 +S315E07223000000000000000000000000000000000075 +S315E07223100000000000000000000000000000000065 +S315E07223200000000000000000000000000000000055 +S315E07223300000000000000000000000000000000045 +S315E07223400000000000000000000000000000000035 +S315E07223500000000000000000000000000000000025 +S315E07223600000000000000000000000000000000015 +S315E07223700000000000000000000000000000000005 +S315E072238000000000000000000000000000000000F5 +S315E072239000000000000000000000000000000000E5 +S315E07223A000000000000000000000000000000000D5 +S315E07223B000000000000000000000000000000000C5 +S315E07223C000000000000000000000000000000000B5 +S315E07223D000000000000000000000000000000000A5 +S315E07223E00000000000000000404000000000000015 +S315E07223F000000D5E0000000000000000000000001A +S315E07224000000000000000000000000000000000074 +S315E07224100000000000000000000000000000000064 +S315E07224200000000000000000000000000000000054 +S315E07224300000000000000000000000000000000044 +S315E07224400000000000000000000000000000000034 +S315E07224500000000000000000000000000000000024 +S315E07224600000000000000000000000000000000014 +S315E07224700000000000000000000000000000000004 +S315E072248000000000000000000000000000000000F4 +S315E072249000000000000000000000000000000000E4 +S315E07224A000000000000000000000000000000000D4 +S315E07224B000000000000000000000000000000000C4 +S315E07224C000000000000000000000000000000000B4 +S315E07224D000000000000000000000000000000000A4 +S315E07224E00000000000000000000000000000000094 +S315E07224F00000000000000000000000000000000084 +S315E07225000000000000000000000000000000000073 +S315E07225100000000000000000000000000000000063 +S315E07225200000000000000000000000000000000053 +S315E07225300000000000000000000000000000000043 +S315E07225400000000000000000000000000000000033 +S315E07225500000000000000000000000000000000023 +S315E072256000404000000000000001000CCE000000B8 +S315E072257000000000000000000004002000000000DF +S315E072258000000000000000000000000000000001F2 +S315E072259000000040000000000000000000000000A3 +S315E07225A00000000000000002001000800000000041 +S315E07225B000000000000000000000000000000004BF +S315E07225C00020000000000000000000000000000093 +S315E07225D00000000000010000004000000000000062 +S315E07225E00000000000000000000000000002001081 +S315E07225F00080000000000000000000000000000003 +S315E0722600000000000004002000000000000000004E +S315E07226100000000000000000000000010000004021 +S315E07226200000000000000000000000000000000052 +S315E072263000000002001000800000000000000000B0 +S315E0722640000000000000000000000004002000000E +S315E07226500000000000000000000000000000000022 +S315E072266000010000004000000000000000000000D1 +S315E07226700000000000000000000200100080000070 +S315E072268000000000000000000000000000000000F2 +S315E072269000040020000000000000000000000000BE +S315E07226A00000000000000001000000400000000091 +S315E07226B000000000000000000000000000000002C0 +S315E07226C00010008000000000000000000000000022 +S315E07226D000000000000000040020404000000000FE +S315E07226E00000000080AF0000000000000000000063 +S315E07226F000000400200000000000000080000000DE +S315E07227000000000000000000010000004000000030 +S315E07227100000000000000000000000000000000061 +S315E072272002001000800000000000000000000000BF +S315E0722730000000000000000004002000000000001D +S315E07227400000000000000000000000000000010030 +S315E072275000004000000000000000000000000000E1 +S315E0722760000000000000020010008000000000007F +S315E072277000000000000000000000000000000400FD +S315E072278020000000000000000000000000000000D1 +S315E072279000000000010000004000000000000000A0 +S315E07227A000000000000000000000000002001000BF +S315E07227B08000000000000000000000000000000041 +S315E07227C0000000000400200000000000000000008D +S315E07227D00000000000000000000001000000400060 +S315E07227E00000000000000000000000000000000091 +S315E07227F000000200100080000000000000000000EF +S315E0722800000000000000000000000400200000004C +S315E07228100000000000000000000000000000000060 +S315E0722820010000004000000000000000000000000F +S315E072283000000000000000000200100080000000AE +S315E07228400000000000000000000000000000000030 +S315E072285004002000400000000000000000B886007E +S315E0722860000000000000000000000084002000006C +S315E07228700000000000000000000000000000000000 +S315E072288000010000004000000000000000000000AF +S315E0722890000000000000000000020010008000004E +S315E07228A000000000000000000000000000000000D0 +S315E07228B0000400200000000000000000000000009C +S315E07228C0000000000000000100000040000000006F +S315E07228D0000000000000000000000000000000029E +S315E07228E00010008000000000000000000000000000 +S315E07228F0000000000000000400200000000000005C +S315E0722900000000000000000000000000000100006E +S315E0722910004000000000000000000000000000001F +S315E072292000000000000200100080000000000000BD +S315E0722930000000000000000000000000000400201B +S315E0722940000000000000000000000000000000002F +S315E072295000000001000000400000000000000000DE +S315E0722960000000000000000000000002001000807D +S315E072297000000000000000000000000000000000FF +S315E072298000000004002000000000000000000000CB +S315E0722990000000000000000000010000004000009E +S315E07229A000000000000000000000000000000000CF +S315E07229B0000200100080000000000000000000002D +S315E07229C0000000000000000000040020000000008B +S315E07229D0000000000000CFF30000838314146060EF +S315E07229E000000303101440600000070730304040D7 +S315E07229F0000007073030C0C000000607303080C0E4 +S315E0722A000101060670708080010106067070808092 +S315E0722A10010104066070008003031414E0E0000014 +S315E0722A2003031414E0E0000003031014C0E0000096 +S315E0722A3007073030C0C0000007073030C0C0000062 +S315E0722A400607303080C00101060670708080010191 +S315E0722A5006067070808001010406607000800303D0 +S315E0722A601414E0E0000003031414E0E00000030332 +S315E0722A701014C0E0000007073030C0C0000007073E +S315E0722A803030C0C000000607303080C00101060653 +S315E0722A907070808001010606707080800101040604 +S315E0722AA06070008003031414E0E000000303141462 +S315E0722AB0E0E0000003031014C0E0000007073030C6 +S315E0722AC0C0C0000007073030C0C0000006073030D3 +S315E0722AD080C0010106067070808001010606707082 +S315E0722AE08080010104066070008003031414E0E044 +S315E0722AF0000003031414E0E0000003031014C0E0C6 +S315E0722B00000007073030C0C0000007073030C0C091 +S315E0722B1000000607303080C00101060670708080C2 +S315E0722B200101060670708080010104066070008003 +S315E0722B3003031414E0E0000002021C1CE0E0000053 +S315E0722B400202181CC0E0000006063838C1C100BD9A +S315E0722B5038000000000000000000000000000000E5 +S315E0722B60000000000000000000000000000000000D +S315E0722B7000000000000000000000000000000000FD +S315E0722B8000000000000000000000000000000000ED +S315E0722B9000000000000000000000000000000000DD +S315E0722BA000000000000000000000000000000000CD +S315E0722BB000000000000000000000000000000000BD +S315E0722BC000000000000000000000000000000000AD +S315E0722BD0000000000000000000000000000000009D +S315E0722BE0000000000000000000000000000000008D +S315E0722BF0000000000000000000000000000000007D +S315E0722C00000000000000000000000000000000006C +S315E0722C10000000000000000000000000000000005C +S315E0722C20000000000000000000000000000000004C +S315E0722C30000000000000000000000000000000003C +S315E0722C40000000000000000000000000000000002C +S315E0722C50000000000000000000000000000000001C +S315E0722C60000000000000000000000000000000000C +S315E0722C7000000000000000000000000000000000FC +S315E0722C8000000000000000000000000000000000EC +S315E0722C9000000000000000000000000000000000DC +S315E0722CA000000000000000000000000000000000CC +S315E0722CB000000000000000000000000000000000BC +S315E0722CC000000000000000003E4900000000000025 +S315E0722CD0000000000000000000000000000000009C +S315E0722CE000000000000000000000001080000000FC +S315E0722CF0000000000000000000000000000000007C +S315E0722D00000000000000000000000000000000006B +S315E0722D1000008000000000000000000000000000DB +S315E0722D20000000000000000000000000000000004B +S315E0722D30000000000000000000000000000000003B +S315E0722D400000000000000000000000000000000823 +S315E0722D50000000000000000000000000000000001B +S315E0722D6000000000000000000000000000002000EB +S315E0722D7000000000000000000000000000000000FB +S315E0722D8000000000000000000000000000000000EB +S315E0722D9000000000000000000000000000000000DB +S315E0722DA0000000000000004000000000000000008B +S315E0722DB000000000000000000000000000000000BB +S315E0722DC000000000000000000000000000000000AB +S315E0722DD0000000000000000000000000000000009B +S315E0722DE00000000000000000000008000000000083 +S315E0722DF0000000000000000000000000000000007B +S315E0722E00000000108000000000000000000040009A +S315E0722E1000000000000000000080000000000020BA +S315E0722E20000000000000000000000000000000004A +S315E0722E30000000000000000000000000000000003A +S315E0722E400041420000000000200000000000000087 +S315E0722E50000000000000000000000080008000001A +S315E0722E6000000000002000000000000000000000EA +S315E0722E7000000000000000000000000000000000FA +S315E0722E8000000000000000000000000000000000EA +S315E0722E9000000000000000000000000000000000DA +S315E0722EA000000000000000000000000000000000CA +S315E0722EB000000000000000000000000000000000BA +S315E0722EC000000000000000000000000000000000AA +S315E0722ED0000000000000000000000000000000009A +S315E0722EE0000000000000000000000000000000008A +S315E0722EF0000000000000000000000000000000007A +S315E0722F000000000000000000000000000000000069 +S315E0722F100000000000000000000000000000000059 +S315E0722F200000000000000000000000000000000049 +S315E0722F300000000000000000000000000000000039 +S315E0722F400000000000000000000000000000000029 +S315E0722F500000000000000000000000000000000019 +S315E0722F600000000000000000000000000000000009 +S315E0722F7000000000000000000000000000000000F9 +S315E0722F8000000000000000000000000000000000E9 +S315E0722F9000000000000000000000000000000000D9 +S315E0722FA000000000000000000100000000000000C8 +S315E0722FB000000000010000000000FA470000000077 +S315E0722FC000000000000000000000000000000000A9 +S315E0722FD00000000000000000000000000000000099 +S315E0722FE00000000000000000000000000000000089 +S315E0722FF000000000000000000000000080000000F9 +S315E07230000000000000000000000000000000000068 +S315E07230100000000000000000000000000000000058 +S315E07230200000000800000000000000000000000040 +S315E07230300000000000000000000000000000000038 +S315E07230400000000000000000000000000000000028 +S315E072305000000000000000002000000000000000F8 +S315E07230600000000000000000000000000000000008 +S315E072307000000000000000000000000000000000F8 +S315E072308000000000000000000000000000000000E8 +S315E072309000000000000000000000000000000000D8 +S315E07230A000000000000000000000000000000000C8 +S315E07230B000000000000000000000000000000000B8 +S315E07230C000000000000000000000000000000000A8 +S315E07230D00000000000000001000000000000000097 +S315E07230E00000000000000000000000000000000088 +S315E07230F00000000000000000000000004000000038 +S315E07231000000000000000000000000000000000067 +S315E07231100000000000000000000000000000000057 +S315E07231200000000000000000000000000000000047 +S315E0723130000000A7C30000000000200000000000AD +S315E07231400000000000000000000000000080008027 +S315E072315000000000000000200000000000000000F7 +S315E07231600000000000000000000000000000000007 +S315E07231708000001000000000000000000000000067 +S315E072318000000000000000000000010000000000E6 +S315E072319000000000000000000000000000000000D7 +S315E07231A000000000000000000000000000000000C7 +S315E07231B000000000000000000000000000000000B7 +S315E07231C000000000000000000000000000000000A7 +S315E07231D00000000000000000000000000000000097 +S315E07231E00000000000000000000000000000000087 +S315E07231F00000000000000000000000000000000077 +S315E07232000000000000000000000000000000000066 +S315E07232100000000000000000000000000000000056 +S315E07232200000000000000000000000000000004006 +S315E07232300000000000000000000000000000000036 +S315E07232400000000000000000000000000000000026 +S315E07232500000000000000000000000000000000016 +S315E072326000000000000000000000000000000800FE +S315E072327000000000000000000000000000000000F6 +S315E072328001000000000000008000001000800000D5 +S315E072329000000000000000000000010000000000D5 +S315E07232A0000000200000010000010000B2E600000C +S315E07232B08000000000000000000000000000002016 +S315E07232C00000000000000000000000000000002086 +S315E07232D00000000000000000000000000000000096 +S315E07232E00000000000000000000000200000002046 +S315E07232F00000000000000000000000000000000076 +S315E07233000000000000000000000000000000000065 +S315E07233100000000000000000000000000000000055 +S315E07233200000000000000000000000000000000045 +S315E07233300000000000000000000000000000000035 +S315E07233400000000000000000000000000000000025 +S315E07233500000000000000000000000000000000015 +S315E07233600000000000000000000000000000000005 +S315E072337000000000000000000000000000000000F5 +S315E072338000000000000000000000000000000000E5 +S315E07233900000004000000000000000000000000095 +S315E07233A000800040000000000000000000000040C5 +S315E07233B00000400000000000000000000000000075 +S315E07233C000000000000000000000000000000000A5 +S315E07233D00000000000000000004000000000000055 +S315E07233E00000000000000000000000000000000085 +S315E07233F00000000000000000000000400000000035 +S315E072340000000000000000000000400000004000E4 +S315E072341000000000004000000000000040000000D4 +S315E072342000000000008AB900000000000000000001 +S315E072343000000000000000000080000000000000B4 +S315E07234400000000000000000000000000000000024 +S315E07234500000000000000000000000000000000014 +S315E07234600000000000000000000000000000000004 +S315E072347000000000000000000000000000000000F4 +S315E072348000000000000000000000000000000000E4 +S315E072349000000000000000000000000000000000D4 +S315E07234A000000000000000000000000000000000C4 +S315E07234B000000000000000000000000000000000B4 +S315E07234C000000000000000000000000000000000A4 +S315E07234D00000000000000000000000000000000094 +S315E07234E00000000000000000000000000000000084 +S315E07234F00000000000000000000000000040000034 +S315E07235000000000000000000000000000000000063 +S315E07235100000000000000000000000000000000053 +S315E072352000000080000000000000000000000000C3 +S315E072353000000000000000004000000040000000B3 +S315E072354000000000000000000000000000000040E3 +S315E07235500000000000000000000000000000000013 +S315E07235600000000000000000000000000000000003 +S315E072357000000000000000000000000000000000F3 +S315E072358000000000000000000040000000000000A3 +S315E07235900000000000000000000000000000B779A3 +S315E07235A000000000000000000000000000000000C3 +S315E07235B00080000000000000000000000000000033 +S315E07235C000000000000000000000000000000000A3 +S315E07235D00000000000000000000000000020000073 +S315E07235E00000200000000000000000000000000063 +S315E07235F00000000000000000000000000000000073 +S315E07236000000000000000000000000000000000062 +S315E07236100000000000000000000000000000000052 +S315E07236200000000000000000000000000000000042 +S315E07236300000000000000000000000000000000032 +S315E07236400000000000000000000000000000000022 +S315E07236500000000000000000000000000000000012 +S315E07236600000000000000000000000000000000002 +S315E072367000000000000000000000000000000000F2 +S315E072368000000000000040000000000000000000A2 +S315E07236900000000080000040000000800000000092 +S315E07236A000000000000000000000000000000000C2 +S315E07236B00000000000004000000000000000000072 +S315E07236C00000000000000000000000400000000062 +S315E07236D00000000000000000000000000000000092 +S315E07236E00000000000000000000000000000000082 +S315E07236F00000000000000000000000004000000032 +S315E072370000000000000000004000000000400000E1 +S315E07237100000000000000014D70020000000000046 +S315E07237200000000000000000000000000000000041 +S315E07237300000000000000000000000000000000031 +S315E07237400000000000008000008000000000000021 +S315E07237500000000000000000000000000000000011 +S315E072376000200000000000000000000000000000E1 +S315E072377000000000000000000020000000000000D1 +S315E072378000000000000000000000000000000000E1 +S315E072379000000000000000000000000000000000D1 +S315E07237A000000000000000000000000000000000C1 +S315E07237B000000000000000000000000000000000B1 +S315E07237C000000000000000000000000000000000A1 +S315E07237D00000000000000000000000000000000091 +S315E07237E00000000000000000000000000000000081 +S315E07237F000008000004000000000000000000000B1 +S315E072380000400000000000800000000000000000A0 +S315E07238100000000000000000000000004000000010 +S315E0723820000000000000000000000000000000013F +S315E07238300000000000000000000000000000000030 +S315E07238400000000000000000000000000000000020 +S315E07238500000000000000000000000000000008090 +S315E07238608000000000000000000000000000000080 +S315E07238700000400000000000000000000000400070 +S315E072388000000000000000000000000002000000DE +S315E072389090CC0000200000000000000000008000D4 +S315E07238A000000000000000000000000000000000C0 +S315E07238B000000000000000000000000000000000B0 +S315E07238C000000000000000000000000000000000A0 +S315E07238D00000000000000000000000000000000090 +S315E07238E0000000010000000000000000000000007F +S315E07238F00020000000000000000000000000000050 +S315E0723900000000000000000000000000000000005F +S315E0723910000000000000000000000000000000004F +S315E0723920000000000000000000000000000000003F +S315E0723930000000000000000000000000000000002F +S315E0723940000000000000000000000000000000001F +S315E0723950000000000000000000000000000000000F +S315E072396000000000000000000000000000400000BF +S315E072397000000000000000000000000000000000EF +S315E072398000000000000000000000000000000000DF +S315E0723990000000000040000000000000000000008F +S315E07239A000000000000000000000000000000000BF +S315E07239B000000000000000000000000000000000AF +S315E07239C0000000000000000000000000000000009F +S315E07239D0000000004000000000000000000000004F +S315E07239E0000000000000000000000040000000003F +S315E07239F0000000000000000000000000000000006F +S315E0723A0000000000000000000075A70080000000C2 +S315E0723A10000000000000000000000000000000004E +S315E0723A20000000000000000000000000000000003E +S315E0723A30000000000000000000000000000000002E +S315E0723A40000000000000000000000000000000001E +S315E0723A5000000020000000000000000000000000EE +S315E0723A6000000000000000000000000000000000FE +S315E0723A7000000000000000000000000000000000EE +S315E0723A8000000000000000000000000000000000DE +S315E0723A9000000000000000000000000000000000CE +S315E0723AA000000000000000000000000000000000BE +S315E0723AB000000000000000000000000000000000AE +S315E0723AC0000000000000000000000000000000009E +S315E0723AD0000000000000000000000000000000008E +S315E0723AE0000000000000000000000000000000007E +S315E0723AF0000000000000000000000000000000006E +S315E0723B00000000000000000000000000000000005D +S315E0723B10000000000000000000000000000000004D +S315E0723B20000000000000000000000000000000003D +S315E0723B30000000000000000000000000000000002D +S315E0723B40000000000000000000000000000000001D +S315E0723B50000000000000000000000000000000000D +S315E0723B6000000000000000000000000000400000BD +S315E0723B70004000000000004000000000000000006D +S315E0723B800000C22E000000000000000000000000ED +S315E0723B9000000000000000002000000000000000AD +S315E0723BA0000000000000002000000000000000009D +S315E0723BB000008080000000000000000000000000AD +S315E0723BC0000000000000000000000000000000009D +S315E0723BD0000000000000000000000000000000008D +S315E0723BE0000000000000000000000000000000007D +S315E0723BF0000000000000000000000000000000006D +S315E0723C00000000000000000000000000000000005C +S315E0723C10000000000000000000000000000000004C +S315E0723C20000000000000000000000000000000003C +S315E0723C30000000000000000000000000000000002C +S315E0723C40000000000000000000000000000000001C +S315E0723C50000000000000000000000000008000008C +S315E0723C6000000000000000000000004000000000BC +S315E0723C70008000000000000000000000000000006C +S315E0723C8000000000000000000000000000000000DC +S315E0723C9000000000000000000000010000000000CB +S315E0723CA000000000000000000000000000000000BC +S315E0723CB000000000000000000000000000000000AC +S315E0723CC0000000000000000000800080000000009C +S315E0723CD0000000000000000000000000000000008C +S315E0723CE0000000000000000000000000000000007C +S315E0723CF00000004000000000020000D6C200000092 +S315E0723D00000000000020000000000000000000003B +S315E0723D1000000020000000200000002000000000EB +S315E0723D2000000020000000002000000000000000FB +S315E0723D30000000000000000000000000200000000B +S315E0723D40000000000000000000000000000000001B +S315E0723D50000000000000000000000000000000000B +S315E0723D6000000000000020000000000000000000DB +S315E0723D7000000000000000000000000000000000EB +S315E0723D8000000000000000000000000000000000DB +S315E0723D9000000000000000000000000000000000CB +S315E0723DA000000000000000000000000000000000BB +S315E0723DB000000000000000000000000000000000AB +S315E0723DC0000000000000000000000000000000009B +S315E0723DD0000000000000000000000000000000008B +S315E0723DE000000000000040000000000000000040FB +S315E0723DF000400000004000000000000000000000EB +S315E0723E00000000000000000000000000000000005A +S315E0723E1000000000000000000040004000000000CA +S315E0723E2000000000000000000000004000000000FA +S315E0723E30000000000000000000000000000000002A +S315E0723E40004000000000000000000000400000009A +S315E0723E5000000000000000000040000000000000CA +S315E0723E60000000000000004000000000000000407A +S315E0723E7000000040CA3800008080000000000000A8 +S315E0723E80000000000000000080002000000020001A +S315E0723E90000020000020000000000000000020006A +S315E0723EA0200000000000000000000000000000009A +S315E0723EB000000000000000000000000000000000AA +S315E0723EC0000000000000000000000000000000009A +S315E0723ED0000000000000000000000000000000008A +S315E0723EE0000000000000000000000000000000007A +S315E0723EF0000000000000000000000000000000006A +S315E0723F000000000000000000000000000000000059 +S315E0723F100000000000000000000000000000000049 +S315E0723F200000000000000000000000000000000039 +S315E0723F300000000000000000000000000000000029 +S315E0723F400000000000000000000000000000000019 +S315E0723F5000000000004000000000000000000000C9 +S315E0723F6000000000000000000000000000000000F9 +S315E0723F7000000000000000000000000000000000E9 +S315E0723F800000000000000040000000400000004019 +S315E0723F900000000000000000000000000000004089 +S315E0723FA000000000000000000000000000000000B9 +S315E0723FB000000000000000000000000000000000A9 +S315E0723FC00000400000000000000000000000000059 +S315E0723FD00000000000000000000000000000000089 +S315E0723FE000000000000000000000410100A0F300A4 +S315E0723FF00000000000000000000000000000000069 +S315E07240000000000000000000000000000000000058 +S315E07240100000000000000000000000000020000028 +S315E07240200000000000000000000000000000000038 +S315E07240300000000000000000000000000000000028 +S315E07240400000000000000000000000000000000018 +S315E07240500000000000000000000000000000000008 +S315E072406000000000000000000000000000000000F8 +S315E072407000000000000000000000000000000000E8 +S315E072408000000000000000000000000000000000D8 +S315E072409000000000000000000000000000000000C8 +S315E07240A000000000000000000000000000000000B8 +S315E07240B000000000000000000000000000000000A8 +S315E07240C00000000000000000000000004000000058 +S315E07240D00000000000400000000000000000000048 +S315E07240E00000000000000000000040000000000038 +S315E07240F000400040000000000000000000004000A8 +S315E07241000000400000000000000000000000000017 +S315E07241100000400000000000400040000000400047 +S315E072412000000000000040000000000000000000F7 +S315E072413000000000000000000000400000000000E7 +S315E072414000004000000000000000000000000000D7 +S315E07241500000000000000000000000000000000007 +S315E0724160000000000000C58C000000200000000086 +S315E072417000000000000000000020000000000000C7 +S315E07241802000000020000000002000000000000077 +S315E072419020000000000000000000000000000000A7 +S315E07241A00000000000002000000000000000000097 +S315E07241B00000000000002000000000000000000087 +S315E07241C00000000000000000000000000000000097 +S315E07241D02000000000000000000000000000000067 +S315E07241E00000000000000000000000000000000077 +S315E07241F00000000000000000000000000000000067 +S315E07242000000000000000000000000000000000056 +S315E07242100000000000000000000000000000000046 +S315E07242200000000000000000000000000000000036 +S315E07242300000000000000000000000000000000026 +S315E07242400000000000000000000000000000000016 +S315E07242500000000000000000000000000000000006 +S315E072426000000000000000004000000000000000B6 +S315E072427000000000000000000000000000000000E6 +S315E07242804000000000004000000000000000000056 +S315E07242904000000000000000000000000000000086 +S315E07242A000000000000000000000000000000000B6 +S315E07242B000000000000000000000000000000000A6 +S315E07242C000000000000000004040000000400000D6 +S315E07242D00000000000400000000000004000000AFC +S315E07242E078000000000000000000000000000000FE +S315E07242F00000200000000000000000000000000046 +S315E07243000000000000000000000000000000000055 +S315E07243100000000000000000000000000000000045 +S315E07243200000000000000000000000000000000035 +S315E07243300000000000000000000000000000000025 +S315E07243400000000000000000000000000000000015 +S315E07243500000000000000000000000000000000005 +S315E072436000000000000000000000000000000000F5 +S315E072437000000000000000000000000000000000E5 +S315E072438000000000000000000000000000000000D5 +S315E072439000000000000000000000000000000000C5 +S315E07243A000000000000000000000000000000000B5 +S315E07243B000000000000000000000000000000000A5 +S315E07243C00000000000000000400000004000000015 +S315E07243D00000000000000000000000000000000085 +S315E07243E00000000000004000000000000000000035 +S315E07243F00000000000000000000000000000000065 +S315E072440000000040000000004000000000000000D4 +S315E07244100000000000000000000000400000000004 +S315E07244200000000000000000000000000000000034 +S315E072443000400000000000000000000000000000E4 +S315E07244400000000000000000000000000000000014 +S315E0724450000000000000000044E2000000000000DE +S315E072446020000000000000000000000000000000D4 +S315E072447000000000000000000000000000002000C4 +S315E072448000000000000000000000000000000000D4 +S315E07244900000000000000020002000000000000084 +S315E07244A00000000000000020000000000000000094 +S315E07244B000000000000000000000000000000000A4 +S315E07244C00000002000000000000000000000000074 +S315E07244D00000000000000000000000000000000084 +S315E07244E00000000000000000000000000000000074 +S315E07244F00000000000000000000000000000000064 +S315E07245000000000000000000000000000000000053 +S315E07245100000000000000000000000000000000043 +S315E07245200000000000000000000000000000000033 +S315E072453000000000000000004000000000000000E3 +S315E07245404000000040000000000000000000400053 +S315E07245500000000040004000000000000000400043 +S315E072456000000000000000000000000000000000F3 +S315E07245700000000000400000000040000000400023 +S315E072458000000000004000400000400040000000D3 +S315E07245900000400000000000000000000040000043 +S315E07245A000000000000000000000000000000000B3 +S315E07245B00000000000000000000000000000400063 +S315E07245C00000400000000000000040000000000013 +S315E07245D040785A00000000200000000080000000D1 +S315E07245E00000000000000020002000000000000033 +S315E07245F020002000002000000000000000200000E3 +S315E07246000020000000000000000000000000000032 +S315E07246100000000000000000000000000000000042 +S315E07246200000002000000000000000000000000012 +S315E07246300000000000000000000020000000000002 +S315E07246400000000000000000000000000000000012 +S315E07246500000000000000000000000000000000002 +S315E072466000000000000000000000000000000000F2 +S315E072467000000000000000000000000000000000E2 +S315E072468000000000000000000000000000000000D2 +S315E072469000000000000000000000000000000000C2 +S315E07246A000000000000000000000000000000000B2 +S315E07246B000000000000000000000000000000000A2 +S315E07246C00000000000000000000000000000000092 +S315E07246D00000000000000000000000000000000082 +S315E07246E000000000400000004000000040000000B2 +S315E07246F00000000000000000000000000000000062 +S315E07247000000000000000000000000000000000051 +S315E07247100000000000000000000040000000000001 +S315E072472000000000000000000000004000000040B1 +S315E072473000000000004000000040000000000000A1 +S315E07247400040000000400000000043DB00008000F3 +S315E072475000002000200000000000000000000000C1 +S315E072476000000000002000000000000000000000D1 +S315E072477020200000000000000000000000000000A1 +S315E072478000000000000000000000000000000000D1 +S315E072479000000000000000000000002000000000A1 +S315E07247A000000000000000000000000000000000B1 +S315E07247B000000000000000000000000000000000A1 +S315E07247C00000000000000000000000000000000091 +S315E07247D00000000000000000000000000000000081 +S315E07247E00000000000000000000000000000000071 +S315E07247F00000000000000000000000000000000061 +S315E07248000000000000000000000000000000000050 +S315E07248100000000000000000000000000000000040 +S315E07248200000000000000000000000000000000030 +S315E072483000000000000000000000000000400000E0 +S315E07248400000000000000000000000000000000010 +S315E072485000000000000000000000000040000000C0 +S315E07248604000000040000000000000000000000070 +S315E072487000000000000000000000000000000000E0 +S315E07248800000000000000000000000000040000090 +S315E07248900000004000000000000000000000000080 +S315E07248A04000000040000000000000000000000030 +S315E07248B040000000404000000000000040000000A0 +S315E07248C0000000153F0000000000008000000000BC +S315E07248D00000000000000000000000000000000080 +S315E07248E00000000000000000000000000000000070 +S315E07248F00000000000200000000000000000000040 +S315E0724900000000000000000000000000000000004F +S315E0724910000000000000000000000000000000003F +S315E0724920000000000000000000000000000000002F +S315E0724930000000000000000000000000000000001F +S315E0724940000000000000000000000000000000000F +S315E072495000000000000000000000000000000000FF +S315E072496000000000000000000000000000000000EF +S315E072497000000000000000000000000000000000DF +S315E072498000000000000000000000000000000000CF +S315E072499000000000000000000000000000000000BF +S315E07249A000000000000000000000000000000000AF +S315E07249B0400000000000000000000000000000005F +S315E07249C0000000000000004000004000000000000F +S315E07249D0000000000000000000000000000000007F +S315E07249E0000000000000000000000000000000006F +S315E07249F0000000000000000000000000000000005F +S315E0724A00000000000000000000000000000000004E +S315E0724A10000000000000000000000000000000003E +S315E0724A2000000000400000000000000000000000EE +S315E0724A30400000000000010000000000776C0000FA +S315E0724A4000002000000020000000000000000020AE +S315E0724A50000020002020000020200000200020001E +S315E0724A60200000002020002000200020000020000E +S315E0724A70000000000000000000000000202000009E +S315E0724A80000000000000000000000000200020008E +S315E0724A9000000000000000000000000000000000BE +S315E0724AA0000000000000202000000000000000006E +S315E0724AB0000000000000000000000000000000009E +S315E0724AC0000000000000000000000000000000008E +S315E0724AD0000000000000000000000000000000007E +S315E0724AE0000000000000000000000000000000006E +S315E0724AF0000000000000000000000000000000005E +S315E0724B00000000000000000000000000000000004D +S315E0724B1000000000000000000000000040400000BD +S315E0724B20000000400000004000000000000000406D +S315E0724B30000000000000000000004000000040009D +S315E0724B4040400000400000000000000000004040CD +S315E0724B5000004040004000400040000000000000BD +S315E0724B6000000000004000004040000040400000AD +S315E0724B7000000000000000000000000000000000DD +S315E0724B80000040000000000000004000000000004D +S315E0724B90004000000000000000000000004000003D +S315E0724BA0400000004000004000004000400000006D +S315E0724BB040400000401C50000000002080002000B1 +S315E0724BC0000000000000000020000000002020002D +S315E0724BD000002000002000200020000000002000DD +S315E0724BE0200000000020000000000000000000002D +S315E0724BF0000000000000200000000000000000003D +S315E0724C00000000000000000000000000000000004C +S315E0724C10000000000000000000000000000000003C +S315E0724C20200000000000000000000000000000000C +S315E0724C30000000000000000000000000000000001C +S315E0724C40000000000000000000000000000000000C +S315E0724C5000000000000000000000000000000000FC +S315E0724C6000000000000000000000000000000000EC +S315E0724C7000000000000000000000000000000000DC +S315E0724C8000000000000000000000000000000000CC +S315E0724C9000000000004000000000000000400040FC +S315E0724CA000400040000000000040000000000000EC +S315E0724CB0000000400000000000400040004000009C +S315E0724CC0000000000000000040000000400000000C +S315E0724CD0400040000000004000000040000000403C +S315E0724CE000000000400000400000000000000040AC +S315E0724CF0000000000000000040004000000000409C +S315E0724D00000040000000400000000000000000408B +S315E0724D1000000000000000000040000000400000BB +S315E0724D2000000000004000000140400040009F6F1C +S315E0724D3000000000000020200000000000000000DB +S315E0724D40000000002020000000000000202000008B +S315E0724D50000000002020000000000000202000007B +S315E0724D6000000000000000000000000000200000CB +S315E0724D7000000000000000000000000000200000BB +S315E0724D8000000000000000000000000000000000CB +S315E0724D90000000000000000000002000000000009B +S315E0724DA000000000000000000000000000000000AB +S315E0724DB0000000000000000000000000000000009B +S315E0724DC0000000000000000000000000000000008B +S315E0724DD0000000000000000000000000000000007B +S315E0724DE0000000000000000000000000000000006B +S315E0724DF0000000000000000000000000000000005B +S315E0724E00000000000000000000000000000000004A +S315E0724E10400000000000000040400000000000007A +S315E0724E20004000000000000000000000000040406A +S315E0724E30400000000000400000000000000000405A +S315E0724E40000000000000404000000000000040400A +S315E0724E5000000000000040400000000000004040FA +S315E0724E6000000000000000400000000000000000AA +S315E0724E7000000000000000000000000000000000DA +S315E0724E80000000000000000000000000004000008A +S315E0724E9000000000404000000000000040400000BA +S315E0724EA000000000404000BFA40080000000200027 +S315E0724EB020200400200000040020000000002000F2 +S315E0724EC000000000002000000100080060010028D8 +S315E0724ED000400000002020000000000000000000FA +S315E0724EE00200100080022010008000000000000026 +S315E0724EF000000000000000200400200000040020F2 +S315E0724F000000000000000000000000000000010048 +S315E0724F100800600100080040000000000000000088 +S315E0724F200000000000000200100080020010008005 +S315E0724F300000000000000000000000000000040015 +S315E0724F4020000004002000000000000000000000C5 +S315E0724F500000000001000800400100080040000067 +S315E0724F6000000000000000000000000002001000D7 +S315E0724F7080020010008000000000000000000000C7 +S315E0724F800000000004002000004400200000000041 +S315E0724F90404000400000000000004140080040012F +S315E0724FA00008004000004040004000000000404021 +S315E0724FB00000020010008002001000800000400035 +S315E0724FC04000000000000000404004002000404421 +S315E0724FD04060000000000040000000000000000099 +S315E0724FE00100080040010008004000004000000097 +S315E0724FF000000000000000000200100080020010B5 +S315E07250000080000000000000000000000000400088 +S315E07250100400200000444060000000000040404070 +S315E07250200DBD0000000000002020200000000000FE +S315E072503000000000000000000000000000202000D8 +S315E072504000000000002000200000000000200000A8 +S315E072505020000000000000000000000000000000D8 +S315E072506000000000000000000000000000000000E8 +S315E072507020000000000000000000000000000000B8 +S315E072508000000000000000000000000020000000A8 +S315E072509000000000000000000000000000000000B8 +S315E07250A000000000000000000000000000000000A8 +S315E07250B00000000000000000000000000000000098 +S315E07250C00000000000000000000000000000000088 +S315E07250D00000000000000000000000000000000078 +S315E07250E00000000000000000000000000000000068 +S315E07250F00000000000000000000000000000000058 +S315E07251000040000000000000000000000000000007 +S315E072511000000040000000000000000000000040B7 +S315E072512040404000000000404000000000000000E7 +S315E07251300000000000000000004000000000004097 +S315E07251400000000000000040404040000000000007 +S315E07251500040400000000000000000000000000077 +S315E072516000000000000000000000000000000000E7 +S315E072517000000000000000000000000000000000D7 +S315E07251800000000000004040000000000040000007 +S315E0725190000000000040004040C5A800000000008A +S315E07251A02020000000000000000000000000000067 +S315E07251B00000000000000020200000000000002037 +S315E07251C02000000000000000200000000000000047 +S315E07251D00000000000000000202000000000000037 +S315E07251E00000000000000000202000000000000027 +S315E07251F00000000000000000000000000000000057 +S315E07252000000000000000000000000000000000046 +S315E07252100000000000000000000000000000000036 +S315E07252200000000000000000000000000000000026 +S315E07252300000000000000000000000000000000016 +S315E07252400000000000000000000000000000000006 +S315E072525000000000000000000000000000000000F6 +S315E072526000000000000000000000000000000000E6 +S315E07252700000000000000000000040000000000096 +S315E072528000004040000000000000000040400000C6 +S315E07252900000000000000000000000400000000076 +S315E07252A04000000000000000000000000000000066 +S315E07252B00000404000000000000040400000000096 +S315E07252C00000000000000000004000000000000046 +S315E07252D00000000000000000000000000000000076 +S315E07252E00000000000000000000000000000000066 +S315E07252F00000000000000000000000000000000056 +S315E07253000040000100000040004000000000400044 +S315E072531000002CBC0000000000000000000000004D +S315E072532000000000000000000020200000000020C5 +S315E07253302000200000000000202020000000000075 +S315E072534000002000000000000000000000000000E5 +S315E072535000000000000000000000000000000000F5 +S315E072536000000000000000000000000000000000E5 +S315E072537000000000000000000000000000002000B5 +S315E072538000000000000000000000000000000000C5 +S315E072539000000000000000000000000000000000B5 +S315E07253A000000000000000000000000000000000A5 +S315E07253B00000000000000000000000000000000095 +S315E07253C00000000000000000000000000000000085 +S315E07253D00000000000000000000000000000000075 +S315E07253E00000000000000000000000000000000065 +S315E07253F00000000040000000000000000000000015 +S315E07254000000000000400000000000000000000004 +S315E072541000000000000000000000400000000000F4 +S315E07254200000000000000000000000000000000024 +S315E07254300000000000000000000000000000000014 +S315E07254400040404040000000000000404000000084 +S315E072545000000000000000000000000000000000F4 +S315E072546000000000000000000000000000000000E4 +S315E07254700000000000000000400000000000004054 +S315E072548000000000000000000101000D560000005F +S315E07254900000002000000000000000000000000094 +S315E07254A000202020000000002020202000000000C4 +S315E07254B02020202000000000202020200000000094 +S315E07254C00000000000000000000000200000000064 +S315E07254D00000000000000000000000200000000054 +S315E07254E00000000000000000000000000000000064 +S315E07254F00000000000000000000000000000000054 +S315E07255000000000000000000000000000000000043 +S315E07255100000000000000000000000000000000033 +S315E07255200000000000000000000000000000000023 +S315E07255300000000000000000000000000000000013 +S315E07255400000000000000000000000000000000003 +S315E072555000000000000000000000000000000000F3 +S315E072556000000000000000000000000040000000A3 +S315E07255700000000040404000000000000000404093 +S315E07255800000000000000000000000000040000083 +S315E072559000000000000000000000000000000000B3 +S315E07255A00000000040400000000000000000000023 +S315E07255B00000000040400000000000004040000093 +S315E07255C00000000040400000000000000000000003 +S315E07255D04040400000000000004040000000000033 +S315E07255E000004000000000000040400000000000A3 +S315E07255F04040404000000000404000400000000093 +S315E072560040000000611D0000000000000000000084 +S315E07256100000000000000000000000002000000012 +S315E072562000002000000000000000200020000000C2 +S315E07256300020202020000000000000000000000092 +S315E072564000000020000000000000000000000000E2 +S315E072565000000020000000000000000000000000D2 +S315E072566000000000000000000000000000000000E2 +S315E072567020000000000000000000000000000000B2 +S315E072568000000000000000000000000000000000C2 +S315E072569000000000000000000000000000000000B2 +S315E07256A000000000000000000000000000000000A2 +S315E07256B00000000000000000000000000000000092 +S315E07256C00000000000000000000000000000000082 +S315E07256D00000000000000000000000000000000072 +S315E07256E000000000000040000000000000404000A2 +S315E07256F04000000000000000000000000000000012 +S315E07257000000000000404000000000004000000081 +S315E07257100000000000000000000000000000000031 +S315E072572000000000000000000000000000004000E1 +S315E07257300000000000404000000000000040400011 +S315E07257400000000000000000004040000000000081 +S315E072575000000000000000000000400000000000B1 +S315E072576000000000000000000000000040000000A1 +S315E072577000404000000000000000000000D161001F +S315E072578000000000002000000000000000000000A1 +S315E07257900000000000000000000020002000000071 +S315E07257A00000000000200000000020000000000061 +S315E07257B00000000000000000000000002000000071 +S315E07257C00000000000000000000000000020000061 +S315E07257D00000000000000000000000000000000071 +S315E07257E00000000000000000200000000000000041 +S315E07257F00000000000000000000000000000000051 +S315E07258000000000000000000000000000000000040 +S315E07258100000000000000000000000000000000030 +S315E07258200000000000000000000000000000000020 +S315E07258300000000000000000000000000000000010 +S315E07258400000000000000000000000000000000000 +S315E072585000000000000000000000000000004000B0 +S315E072586000000000000000000000000000000000E0 +S315E072587040400000000000004000000000000040D0 +S315E072588000000000000000000000000000000000C0 +S315E07258900000000000004040000000000000000030 +S315E07258A000000000000000000000000000000000A0 +S315E07258B00000000000004040000000000000000010 +S315E07258C000004000404000000000404040400000C0 +S315E07258D000004000404000000000404040000000F0 +S315E07258E000000040000000000000000000400000E0 +S315E07258F00000404000003E3700000000000000005B +S315E0725900000000000400200000000000000000001B +S315E07259100000000020002000000001002820400066 +S315E072592000000000200000000000000000000000FF +S315E0725930000002001000800000000000000000007D +S315E072594000000000002000000000040020000000BB +S315E072595000000000000000000000000000000000EF +S315E07259600100080040000000000000000000000096 +S315E0725970000000000000000002001000800000003D +S315E072598000000000000000000000000000000000BF +S315E0725990040020000000000000000000000000008B +S315E07259A00000000000000100080040000000000056 +S315E07259B0000000000000000000000000000002008D +S315E07259C010008000000000000000000000000000EF +S315E07259D0000000000000040060000000000000000B +S315E07259E00000000000000000004000000100080016 +S315E07259F000400000000000000000000000004000CF +S315E0725A000000000002001000C0000000000000006C +S315E0725A10000000000000000000000000040020000A +S315E0725A20000000000040400000000000000000405E +S315E0725A304000010008004000000000000000400045 +S315E0725A400000004000004000000002405000C0002C +S315E0725A5000000040000000000000000000000000AE +S315E0725A60000004002000000000000000000000BBFF +S315E0725A704F0000000000002000200000800400209B +S315E0725A80000000000020000000000000000000009E +S315E0725A900000000120080040000000000020200005 +S315E0725AA0000000000000000000000002001000A0EC +S315E0725AB0000000000000000000000000000000206E +S315E0725AC0000000040020000000000000000000005A +S315E0725AD00000000000000000000100080040000025 +S315E0725AE0000000000000000000000000000000005E +S315E0725AF000020010008000000000000000000000BC +S315E0725B000000000000000000000400200000000019 +S315E0725B10000000000000000000000000000000012C +S315E0725B2000080040000000000000000000000000D5 +S315E0725B30000000000000000200100080000000007B +S315E0725B4000000000000000000000000000000004F9 +S315E0725B50402000000000000000000040000000004D +S315E0725B600000004000010008000000000000000094 +S315E0725B7000000000000000000000000000020010BB +S315E0725B80408000000000004040000000000000007D +S315E0725B900000000000040020004000000000000049 +S315E0725BA00000000000000000000000010008004054 +S315E0725BB0000000000000000000000000000000008D +S315E0725BC000000002001000800000000000000000EB +S315E0725BD000000000000000000000000440200040C9 +S315E0725BE00000000000000040C25400000000000007 +S315E0725BF0200000800000040020000000000000A0E9 +S315E0725C0000000000000020200000000001002820B3 +S315E0725C1040000000000000200000000000000000CC +S315E0725C20000000000200100080000000000000008A +S315E0725C3000000000000000000000000004002000E8 +S315E0725C4000000000000000000000000000000000FC +S315E0725C500000010028004000000000000000000083 +S315E0725C60000000000000000000000200100080004A +S315E0725C7000000000000000000000000000000000CC +S315E0725C800000040020000000000000000000000098 +S315E0725C900000000000000000010008004000000063 +S315E0725CA0000000000000000000000000000000009C +S315E0725CB002001000800000000000000000000000FA +S315E0725CC00000000000000000040020000000000058 +S315E0725CD0000040000000000000000000000001002B +S315E0725CE008004000000000004000000000000000D4 +S315E0725CF0400000000000020010408000000000003A +S315E0725D004000000000000000404000000000040077 +S315E0725D10600000000000000040400000000000004B +S315E0725D200040000001000800400000000000400052 +S315E0725D3000000000000000000000000002001000F9 +S315E0725D4080000000000000000000000000004040FB +S315E0725D500000000004006040000000000000400007 +S315E0725D6000606B000003031C1C60600000030318F4 +S315E0725D701C406000000707383840400000070738CB +S315E0725D8038C0C000000607303880C001010E0E70C0 +S315E0725D9070808001010E0E7070808001010C0E60C1 +S315E0725DA070008003031C1CE0E0000003031C1CE08F +S315E0725DB0E000000303181CC0E0000007073838C093 +S315E0725DC0C0000007073838C0C000000607303880C8 +S315E0725DD0C001010E0E7070808001010E0E7070802F +S315E0725DE08001010C0E6070008003031C1CE0E00071 +S315E0725DF00003031C1CE0E000000303181CC0E00073 +S315E0725E000007073838C0C0000007073838C0C0003E +S315E0725E10000607303880C001010E0E707080800176 +S315E0725E20010E0E7070808001010C0E6070008003AE +S315E0725E30031C1CE0E0000003031C1CE0E00000030E +S315E0725E4003181CC0E0000007073838C0C00000071E +S315E0725E50073838C0C000000607303880C001010E2E +S315E0725E600E7070808041010E0E7070808001010CA0 +S315E0725E700E6070008003031C1CE0E0000003031C4C +S315E0725E801CE0E000000303181CC0E00000070738BE +S315E0725E9038C0C0000007073838C0C00000060730B7 +S315E0725EA03880C001010E0E7070808001010E0E7096 +S315E0725EB070808001010C0E6070008003031C1CE090 +S315E0725EC0E0000002021C1CE0E000000202181CC0A6 +S315E0725ED0E0000006063838C0C0008DC2000000003F +S315E0725EE000000000000000800000000000000000DA +S315E0725EF0000000000000000000000000000000004A +S315E0725F000000000000000000000000000000000039 +S315E0725F100000000000000000000000000000000029 +S315E0725F200000000000000000000000000000000019 +S315E0725F300000000000000000000000000000000009 +S315E0725F4000000000000000000000000000000000F9 +S315E0725F5000000000000000000000000000000000E9 +S315E0725F6000000000000000000000000000000000D9 +S315E0725F7000000000000000000000000000000000C9 +S315E0725F8000000000000000000000000000000000B9 +S315E0725F9000000000000000000000000000000000A9 +S315E0725FA00000000000000000000000000000000099 +S315E0725FB00000000000000000000000000000000089 +S315E0725FC00000000000000000000000000000000079 +S315E0725FD000000000000000000000004000004000E9 +S315E0725FE00000000000000000000000000000000059 +S315E0725FF00000000000000000000000000000000049 +S315E07260000000000000000000000000000000000038 +S315E07260100000000000000000000000000000000028 +S315E07260200000000000000000000000000000000018 +S315E07260300000000000000000000000000000000008 +S315E072604000000000000000000000000000000000F8 +S315E0726050000000CEE8000000000000000000000032 +S315E07260600000000000000000008000000000000058 +S315E072607000000000000000000000000000000000C8 +S315E07260800000000000000000000000000400200094 +S315E072609000000000000000000000000000000000A8 +S315E07260A01000000000000000000002000000000086 +S315E07260B00000000000000000000000000000000088 +S315E07260C01000000020000400000000000000000044 +S315E07260D00000000000000000000000000000000068 +S315E07260E0000000000000000001000000400800000F +S315E07260F00000000000000000000000000000000048 +S315E072610000000000000010008000000000000000A7 +S315E07261100000000000000000002000000000000007 +S315E072612000000004000040000000000000000000D3 +S315E07261300000000000000000000000000000000007 +S315E072614000000000000000000000000000000000F7 +S315E07261500000000000000000000000000000800067 +S315E072616000000000000000000000000000000000D7 +S315E072617000000000000000000100000000000000C6 +S315E07261808000000000000000000000000000000037 +S315E072619000000000000000000000000000000000A7 +S315E07261A00000000000002000000000000000000077 +S315E07261B00000000000000000000000000000000087 +S315E07261C000000000000000000000000052340000F1 +S315E07261D00000000000000000000000000000000067 +S315E07261E000000080000000000000000000000000D7 +S315E07261F00000000020000000000000000020000007 +S315E07262000000000000000000002000000000000016 +S315E07262100000000000000000000000000000000026 +S315E07262200000000000000000000000000000000016 +S315E07262300000000000000000000000000000000006 +S315E072624000000000000000000000000000000800EE +S315E072625000000000000000000000000000000000E6 +S315E07262608000000000000000000000000000000056 +S315E072627000000000000000000000000000000000C6 +S315E072628000000000000000000000000000000000B6 +S315E072629000000000000000000000000000000000A6 +S315E07262A00000000000400000000000000040000016 +S315E07262B00000000000000000004000000000000046 +S315E07262C00000000000000000000000000000000076 +S315E07262D000004000000000000000400000000000E6 +S315E07262E040000000000000000000004000000000D6 +S315E07262F000000000400000000000000000000040C6 +S315E072630000000040000000400000000000000000B5 +S315E07263100000000040000000400000004000004025 +S315E07263200000004000000000000000004000000095 +S315E072633000000000000000000040000000000000C5 +S315E0726340000000000099F00000000000000000006C +S315E07263500000000000000000000000008000000065 +S315E072636000000000000000000000000020000000B5 +S315E072637000000000000000000000000000000200C3 +S315E07263801000002000000000000000000000000085 +S315E07263900000000000000400200000000000000081 +S315E07263A00000000000000000000000000000000095 +S315E07263B00000000000000000000000000000000085 +S315E07263C0000000000000000800000000000000006D +S315E07263D000000000000000000080000000000000E5 +S315E07263E00000000000000000000000000000000055 +S315E07263F00000000000004000000000000000000005 +S315E07264000000000000000000000000000000000034 +S315E07264100000000000000000000000000000000024 +S315E07264200000000000000000000000000000000014 +S315E07264300000000000000000000000000000000004 +S315E072644000000000000000000000000000000000F4 +S315E07264500000000080000000400000000000000024 +S315E072646000000000000000000000000000000000D4 +S315E072647000000000000000000000000000000000C4 +S315E072648000000000000000000000000000000000B4 +S315E07264900000000000000000000000004000000064 +S315E07264A04000000000000000000000010001000052 +S315E07264B0000000400000000000000000000096F4BA +S315E07264C00000000000000000000000000000000074 +S315E07264D00000000000000000000000000000000064 +S315E07264E00000000000000000000000000000000054 +S315E07264F02000000000000000000000000000000024 +S315E07265000000000000000000000000000000000033 +S315E072651000000000040020000000000000000000FF +S315E07265200000000000000000000000000000000013 +S315E07265300000000000000000000000000000000003 +S315E072654000000000100000000000000000000000E3 +S315E072655000000000000000000000000000000000E3 +S315E072656000000000000000000000000000080000CB +S315E07265700100000040000000000000000000000082 +S315E07265800000000000000000000010008000000023 +S315E072659000000000000000400000000400200040FF +S315E07265A00000000000000000000000400000000053 +S315E07265B00000000010000000000000000000000073 +S315E07265C000000000400000000000000040000000F3 +S315E07265D000008000000000000000000000400000A3 +S315E07265E00000000000400000000000000000000013 +S315E07265F00040000000400000004000000100000082 +S315E07266000000000000004000000040000000400072 +S315E072661000004000000000000000000000004000A2 +S315E072662000000000000000000000000000002000F2 +S315E0726630000000000000002B1400000000000000C3 +S315E072664000000000000000000000000000200000D2 +S315E072665000000000000000000000000000000000E2 +S315E07266600000000020000000200000000000000092 +S315E072667000000000000000200000000000000000A2 +S315E072668000000000001000000000000000000000A2 +S315E07266900000000020000000000000000000000082 +S315E07266A00000000000000000000000000000000092 +S315E07266B00000000000000000000000000000000082 +S315E07266C00000000000000000000000400000000032 +S315E07266D00000000000000000000000000000000062 +S315E07266E00000000000000000000000000000000052 +S315E07266F00000000000000000000000000000000042 +S315E072670000000000000000004000000000000000F1 +S315E072671000000000000000400000400000000000A1 +S315E07267200040004000000000408040000000400051 +S315E07267300000000000000000400040000000000081 +S315E07267400000000000000000000040000000400071 +S315E072675000004000000000000000000000000000A1 +S315E07267600080400100000000000000000000000010 +S315E072677000000000000000000000000000000000C1 +S315E072678000000000000000000000000000000000B1 +S315E07267900000400000000000000000000000000061 +S315E07267A000000040000000004000000000000040D1 +S315E07267B08BA0000080800000000000000000000056 +S315E07267C00000000000000000000000000000000071 +S315E07267D00000000000000000000000000000000061 +S315E07267E00000000000000000000000200000000031 +S315E07267F00000000000000000000000000020000021 +S315E07268000000000000000000000000000000000030 +S315E07268100000000000000000200000000000000000 +S315E072682020200000000000000000000000000000D0 +S315E07268300000000000000000000000000000000000 +S315E07268400000000000000000000040000040000070 +S315E07268504000000000000000004000000000000060 +S315E072686000000000000000000000000000000000D0 +S315E07268704000000000000000000000000000000080 +S315E07268800000000000000000000040000000000070 +S315E072689000000000000000000000000000000000A0 +S315E07268A00000000000000000004000000000004010 +S315E07268B000000000000000000000000040008000C0 +S315E07268C00000000000000000000040000000000030 +S315E07268D00080000000000000800000000000000060 +S315E07268E0000000000100000000000040000000000F +S315E07268F00000000000100000000000000000000030 +S315E0726900000000000000000000000000000000002F +S315E0726910000000000000000000000000000000001F +S315E072692000000000000041010086AE000000000099 +S315E072693000000000000000000000002000000000DF +S315E072694000000000000000000000000000000000EF +S315E0726950000000000000200000000020000000009F +S315E0726960000000002000000020000000000000008F +S315E072697000000000000000000000000000000000BF +S315E072698000000000000000000000000000000000AF +S315E0726990002000000000000020002000000000003F +S315E07269A0000000000000000000000000000000008F +S315E07269B0000000000000000000000000400000003F +S315E07269C000000040000040000000000000000000EF +S315E07269D0000000400000000000000000000000001F +S315E07269E0000000000000000000400000000000000F +S315E07269F000000000000000000000004000000000FF +S315E0726A00000040000000000040000000400000006E +S315E0726A100000000000400000000000C040000000DE +S315E0726A20000040000000000040000000400000004E +S315E0726A3000000000004000800000000000400000FE +S315E0726A4040004000004000000000800000000000AE +S315E0726A50008080000041000000000000000100009C +S315E0726A6000000000000000000000000000000000CE +S315E0726A7000000000000000000000000000000000BE +S315E0726A80000000000040000000000000000000006E +S315E0726A9000000000400000000000004000004000DE +S315E0726AA000403F150000000020200000000020009A +S315E0726AB0000000000020000000000000000020003E +S315E0726AC0000000000000000000000000000000006E +S315E0726AD0000000000000000000000000000000005E +S315E0726AE0000000000000000000000000200000002E +S315E0726AF00000000020000000000000000100080015 +S315E0726B0000000000000000000000400000000000ED +S315E0726B1000000000200000000000000000000000FD +S315E0726B20000000000000000000000000000000000D +S315E0726B3000000000000000000000004000000000BD +S315E0726B40000000000040000000000040000000006D +S315E0726B50000040000000000000000200100000008B +S315E0726B60000000000000004000000000000000008D +S315E0726B70000000004000004000000000000000003D +S315E0726B80400000000000000000000000000000006D +S315E0726B90400000000000000000000000000000005D +S315E0726BA0000000000000000000000000008000000D +S315E0726BB00040000000000000040120000000000018 +S315E0726BC0000000000000000000000000000000006D +S315E0726BD0000000000000000000000000000000005D +S315E0726BE0000000000000000000000000000000004D +S315E0726BF0000000000000000000000000000000003D +S315E0726C0000000000000000000000400000004000AC +S315E0726C1000000000000008004000006CFB0000006D +S315E0726C2000202000000000000000000000000000CC +S315E0726C3000000000000000000000000000000000FC +S315E0726C4000000000000000000000000000000000EC +S315E0726C5000000000000000000000000000000000DC +S315E0726C6000000000002000000000000000000000AC +S315E0726C70000000000000000000000000002000009C +S315E0726C8000000000000000000000000000000000AC +S315E0726C90000000000000000000000000000000009C +S315E0726CA0000000000000000000000000000000008C +S315E0726CB0000000000000000000000000000040003C +S315E0726CC0000000000040000000000000000000002C +S315E0726CD0000000000000000000000000000000005C +S315E0726CE0400000000000000000000000000000000C +S315E0726CF040000000000000004000000000000000BC +S315E0726D00000000000000000000000000000000002B +S315E0726D10000000000000000000000000000000001B +S315E0726D20000000000000000000000000000000000B +S315E0726D3000000000000000000000000000000000FB +S315E0726D4000000000000000000000000000000000EB +S315E0726D5000000000000000000000000000000000DB +S315E0726D6000000000000000000000000000000000CB +S315E0726D7000000000000000000000000000000000BB +S315E0726D8000000000000000000000000000000000AB +S315E0726D9040000000A1380000000000000000002062 +S315E0726DA0000000000000000020000020000000004B +S315E0726DB0000000000000000000000000000000007B +S315E0726DC0000000000000000000000000000000006B +S315E0726DD0000000000000000000000000000000005B +S315E0726DE0000000000020000000000000000000002B +S315E0726DF000000000000000000000000040000000FB +S315E0726E00000000000020000000000000000000000A +S315E0726E10000000000000000000000000000000001A +S315E0726E20000000000000000000000000000000000A +S315E0726E3000000000400000000000000000000000BA +S315E0726E4000000000400000000000000000000000AA +S315E0726E5000000000000000000000000000000000DA +S315E0726E6000000000000000000000000000000000CA +S315E0726E70000000000000000000004000000000007A +S315E0726E8000000000000000000000000000000000AA +S315E0726E90000000000000000000000000000000009A +S315E0726EA0000000000000000000000000000000008A +S315E0726EB0000000000000000000000000000000007A +S315E0726EC0000000000000000000000000000000006A +S315E0726ED0000000000000000000000000000000005A +S315E0726EE0000000000000000000000000000000004A +S315E0726EF000000000000000000000000000400000FA +S315E0726F00000000000000004000000000003C7C0031 +S315E0726F100000000000000000000000000000000019 +S315E0726F2000000000000000000020000000000000E9 +S315E0726F3000000000000000000000000000000000F9 +S315E0726F4000000000000000000000000000002000C9 +S315E0726F5000000000000000000000000000000000D9 +S315E0726F608000000000000100080000000000000040 +S315E0726F7000000000000000000000000000000000B9 +S315E0726F8000000000000000000000000000000000A9 +S315E0726F900000000000000000000000000000000099 +S315E0726FA00000000000004000000000000000000049 +S315E0726FB00000000000000000000000000000000079 +S315E0726FC00000000002001000000000000000000057 +S315E0726FD00000000000000000000000000000004019 +S315E0726FE00000000000000000000000000000000049 +S315E0726FF000000000000000000000400000000000F9 +S315E07270000000000000000000000000000000000028 +S315E07270100000000000000000800000000040000058 +S315E072702000000400200100000000000000000000E3 +S315E072703000000000000000000000000000000000F8 +S315E072704000000000000000000000000000000000E8 +S315E072705000000000000000000000000000000000D8 +S315E072706000000000000000000000000000000000C8 +S315E072707000004000004000000040000000000000F8 +S315E0727080080000000000A8F0000000000000000008 +S315E07270900000000000000000000000000000000098 +S315E07270A00000000020000020000000000000000048 +S315E07270B00000002000000000000000002000200018 +S315E07270C00000000000000000000000000000000068 +S315E07270D00000000000000020000000000000000038 +S315E07270E00020000000000000000000000000000028 +S315E07270F000002000000000000000000000200000F8 +S315E07271000000000000000000000000000000000027 +S315E07271100000000000000000000000000000000017 +S315E07271200000004000000040000000000000004047 +S315E072713000000040000000000000000000000000B7 +S315E072714000000000000000000000000000000000E7 +S315E072715000000000000000000000000000000000D7 +S315E07271600000000040000000000000000000000087 +S315E072717000000000000000000000000000000000B7 +S315E07271800000000000400000000000000000000067 +S315E07271900000000000000000400000004000000017 +S315E07271A000000000000000400000400000000040C7 +S315E07271B00000404000004040000040400000404077 +S315E07271C000000000000000000040000040004000A7 +S315E07271D000400000404000000040000040400000D7 +S315E07271E04040000000400000400000000000000047 +S315E07271F00000000000000000000000400000009A5D +S315E0727200FA0000000000000000000000000000002C +S315E072721000000000200000000020000000000000D6 +S315E07272200000000000000000000000000000000006 +S315E072723020000000000000000000000000000000D6 +S315E072724000002000000000000000000000000000C6 +S315E072725000000000000000000000000000000000D6 +S315E07272600000002000000000000000000000200086 +S315E072727000000000000000000000000000000000B6 +S315E072728000000000000000000000000000000000A6 +S315E07272900000004000000040000000400000400096 +S315E07272A00000400000000040000040000000400086 +S315E07272B000000000000000000040000000400040B6 +S315E07272C000000000004000000000000000400000E6 +S315E07272D00040000000400000004000000000000096 +S315E07272E00040000000400000000000000000400086 +S315E07272F00000000000000000000000000000000036 +S315E07273000000000000400000004000004000000065 +S315E07273100000000000000040000040000000000095 +S315E07273200000000000000000000000000000000005 +S315E072733000000000000000000000000000000000F5 +S315E072734000000000000000000000000000000000E5 +S315E072735000000000000000000000000000000000D5 +S315E072736000000000010000000000000000000000C4 +S315E0727370000000000000000087FD000000800000B1 +S315E07273800000000000000000000000000020000085 +S315E07273900000000000000000000000000000000095 +S315E07273A00000000000000000000000000000000085 +S315E07273B00000000000000020000000000000000055 +S315E07273C00000000000000020000000000000000045 +S315E07273D00000002000000000000000002000000015 +S315E07273E00000002000000000000000000000000025 +S315E07273F02000000000000000000000000000000015 +S315E072740000000000000000000000400000004000A4 +S315E07274100000400000000000000000000000400094 +S315E07274200000000000000000000000000000000004 +S315E07274304000000040000000000000004000000034 +S315E07274400000000040000000400000004000000024 +S315E07274504000000000000000000000400000000054 +S315E072746000000000000000000000000000000000C4 +S315E07274700000000040000000000000000000000074 +S315E072748000000000000000000000000000000000A4 +S315E07274900000000000000000000000000000000094 +S315E07274A00000000000000000000000000000000084 +S315E07274B00000000000000000000000000000000074 +S315E07274C00040000000000000000000000000000024 +S315E07274D00000000000000000000000000000000054 +S315E07274E00000000000000000000000000000000044 +S315E07274F000DEB7000000000000000000200000007F +S315E07275000000000000000000000000000000000023 +S315E07275100000000000000000000000000000000013 +S315E072752000002000002000000000000020000000A3 +S315E07275300000002000000000200000002000000093 +S315E072754000000000000000000000000000000000E3 +S315E072755000000000000000000000000000000000D3 +S315E072756000000000200000000000000000000000A3 +S315E072757000000000000000000000000000000000B3 +S315E072758000000000004000000040000000400000E3 +S315E07275900000000000000000004000000040000013 +S315E07275A00000000000000000000000400000004003 +S315E07275B000000040000000400000000000000040B3 +S315E07275C000000040000000400000400000000000A3 +S315E07275D04000000000000000000000000000000013 +S315E07275E00000000000000000000000000000004003 +S315E07275F000000000000000000000000000400000F3 +S315E07276004000000040000000000000400000004022 +S315E07276100000000000000000000000000000000012 +S315E07276200000000000000000000000000000000002 +S315E072763000000000000000000000000000000000F2 +S315E072764000000000000000000000000000000000E2 +S315E07276500000000000400000000000000000000092 +S315E0727660000000000000000000009142000080006F +S315E072767000000000000000000000000000000000B2 +S315E07276800000000000000000000000002000000082 +S315E07276900000000000000000000000000000000092 +S315E07276A00000000000000000002000000000000062 +S315E07276B000002000000000200020000020000000F2 +S315E07276C00000002000000000000000000000000042 +S315E07276D00020000000000000000000000000000032 +S315E07276E00000000000000000000000000000000042 +S315E07276F00000000000000000000000000000000032 +S315E072770000000000000000000000004000000000E1 +S315E072771000000000000000004000000000000000D1 +S315E07277200000000000000000000000000000000001 +S315E072773000000000000000000000000000000000F1 +S315E07277400000400000000040000000000000000061 +S315E07277500000400000000000000040000000004011 +S315E07277600000000000000000004000000000000081 +S315E07277700040000000000000400000000000000031 +S315E072778040000000400000000000000040400000A1 +S315E072779000000000004000000040000000400000D1 +S315E07277A00040000000400000000000000000404081 +S315E07277B00000400000000040000040400000004031 +S315E07277C00000004000004040000000400000000061 +S315E07277D040000000000000400000000000000000D1 +S315E07277E00000003A430000000000200000000000A4 +S315E07277F00000000000000000000000002000000011 +S315E07278000000000000000000000000002000000000 +S315E072781000200000000000000000002000200000B0 +S315E072782000000000000020000000000000000000E0 +S315E072783000000000000000000000000000000000F0 +S315E072784000000000000000000000000000000000E0 +S315E072785000000000000000000000000000000000D0 +S315E072786000000000000000000000000000000000C0 +S315E072787000000000000000000000000000000000B0 +S315E072788000000040000000400000000040000000E0 +S315E07278900000004000000000000000000000000050 +S315E07278A00000400000000000000000000000000040 +S315E07278B00000000000000000000000000000000070 +S315E07278C00000000000000000000000000000000060 +S315E07278D00000000040000000000000000000000010 +S315E07278E04000000000000000000000000000000000 +S315E07278F000000000400000000000000000000040B0 +S315E0727900000000000000000000000000000000001F +S315E0727910000000000000000000000000000000000F +S315E072792000000000000000000000000000000000FF +S315E072793000000000000000000000000000000000EF +S315E072794000000000000000000000000000000000DF +S315E0727950000000000000000000000000D760000098 +S315E0727960200000000000000000000000000000009F +S315E0727970200000000000000000002000000000006F +S315E0727980000020000000000000000000000000007F +S315E0727990002000000000000000000000000000006F +S315E07279A0000020000000000000000000000000005F +S315E07279B0000000000000000000000000200000004F +S315E07279C0000000000000000000000000200000003F +S315E07279D0000000000000000000000000000000004F +S315E07279E0000000000000000000000000000000003F +S315E07279F000000000000000000000400000000000EF +S315E0727A00000000000000000000000000000000001E +S315E0727A1000000040000000000000000000000000CE +S315E0727A2000000000000000000000000000000000FE +S315E0727A3000000000000000400000000000000000AE +S315E0727A40004000000000400000000000000000005E +S315E0727A5000000000000000000000000000000000CE +S315E0727A6000000000000000000000000000000000BE +S315E0727A70000000400000000000000040000000002E +S315E0727A80000000000000000000000000000000009E +S315E0727A90000000000000000000000000000000008E +S315E0727AA0000000000000000000000000000000007E +S315E0727AB0000000000000000000000000000000006E +S315E0727AC000000000004000000000000000004000DE +S315E0727AD00000000000BFD7000000000000000000B8 +S315E0727AE0000000000000000000000000000000003E +S315E0727AF000000000000000000000002000002000EE +S315E0727B0000000000000000002000000000000020DD +S315E0727B1020000000000000000000000000000000ED +S315E0727B2020000000000000000000000000000000DD +S315E0727B3000000000200000000000000000200000AD +S315E0727B4000000000000000000020000000000000BD +S315E0727B5000000000000000000000000000000000CD +S315E0727B6000000000000000400000004000000040FD +S315E0727B70000000000000000000000040000000006D +S315E0727B80000000000000000000000000000000009D +S315E0727B9000400000000000400040000000000000CD +S315E0727BA000400000004000000040000000000000BD +S315E0727BB000000000004000004000000000000040AD +S315E0727BC0400000400000400040000040000000001D +S315E0727BD0000000000000400000404000004000004D +S315E0727BE040000000000000000000000000000000FD +S315E0727BF000004000000000000000000000004000AD +S315E0727C00000040000000400000004000000040001C +S315E0727C1040000000000000000000000000000000CC +S315E0727C2040000000000000404000000040000000FC +S315E0727C30000000404000000040000000000000002C +S315E0727C400000000000000000000000000000025486 +S315E0727C5000008080000000000000200000000000AC +S315E0727C6000000000000000000000000000000000BC +S315E0727C7000000000000000000000000000000000AC +S315E0727C80000000000000000000000000000000009C +S315E0727C90000000000000000000000000000000008C +S315E0727CA0000000000000000000000000000000007C +S315E0727CB0000000000000000000000000000000006C +S315E0727CC0000000000000000000000000000000005C +S315E0727CD0000000000000000000000000000000004C +S315E0727CE0000000000000000000000000000000003C +S315E0727CF0000000000000000000000000000000002C +S315E0727D00000000000000000000000000000000001B +S315E0727D10000000000000000000000000000000000B +S315E0727D2000000000000000000000000000000000FB +S315E0727D3000000000000000000000000000000000EB +S315E0727D4000000000000000000000000000000000DB +S315E0727D50000000000000004000000000004000004B +S315E0727D60004000000000000000000000000000007B +S315E0727D7000000000000000000000000000000000AB +S315E0727D80000000000000000000000000000000009B +S315E0727D90000000000000000000000000000000008B +S315E0727DA0000000000000000000000000000000007B +S315E0727DB0000000400000000000000000000000002B +S315E0727DC0000000000000008BC4000000000000000C +S315E0727DD0000020000000000000000000200000000B +S315E0727DE000200000200000000020000000200000BB +S315E0727DF000000000000000000000200020002000CB +S315E0727E0000000000000020000000002000000000DA +S315E0727E1000000000000020002000000000000000CA +S315E0727E20000020000000200000000020000000207A +S315E0727E3000002000000000000000000000000020AA +S315E0727E4000000000000000000000000000000000DA +S315E0727E50000000000000000000004000000040004A +S315E0727E6000004000004000000040000000004000BA +S315E0727E70004000000040000000000000000000002A +S315E0727E8040000000400000000000000040000000DA +S315E0727E9000000000400000004000000040000000CA +S315E0727EA0000000000040400040000040400000003A +S315E0727EB0400000004000004000000000004000006A +S315E0727EC0000000000000000000004000400000409A +S315E0727ED0004040000040004040000000004000408A +S315E0727EE000000000400000004000000000000000BA +S315E0727EF0000000404000000000000040000000402A +S315E0727F004000004000000000000040000000400019 +S315E0727F100000000000400000400000000040400009 +S315E0727F2000004000400000000040400041000000B8 +S315E0727F3000000000000001000000000000400000A8 +S315E0727F40DE8D00002000000020000020000000000E +S315E0727F500000002000000000000000000020000089 +S315E0727F600000000000002000000020000000200059 +S315E0727F7000200020000020200000200020000000E9 +S315E0727F802000000000000000200000002020000019 +S315E0727F900020000000000000000000200000000049 +S315E0727FA02000000000000000000000000000002039 +S315E0727FB00000002000000020000000000000000029 +S315E0727FC00000000000000000000000000000000059 +S315E0727FD000000000000000000000000000400040C9 +S315E0727FE000400040000000000000400040400040B9 +S315E0727FF00000000000000000000000000000000029 +S315E07280004000400000000000000000000000000098 +S315E072801000000000000000000000000000400000C8 +S315E072802000000040000040000040004000000000F8 +S315E07280300000000040000000000000000040000068 +S315E07280404040000000004000000040400000000098 +S315E07280500040000000000000404000004000400088 +S315E07280604000400000000000000040400000400078 +S315E07280700000404000004040000040000000000068 +S315E07280800000000040000000400040004040004018 +S315E07280900040000040400000400000004000000048 +S315E07280A04040004000000100000040000040000136 +S315E07280B0004000000000000000E60D000000000035 +S315E07280C00000200000000000000000000000000038 +S315E07280D00000000000000000000000000000000048 +S315E07280E000000000000000002000000000000020F8 +S315E07280F020000000000000202000000000000020A8 +S315E072810020000000000000202000000000000000B7 +S315E07281100000000000000000000000000000000007 +S315E072812000000000000000000000000000002000D7 +S315E072813000000000000000000000000000000000E7 +S315E07281400000000000000000000000000040400057 +S315E072815000000000004040000000000000404000C7 +S315E07281600000000000404000000000000000000037 +S315E072817000000040400000000000004040000000A7 +S315E072818000000000400000000000004040000000D7 +S315E07281900000404040400000000000404000000007 +S315E07281A00000004040000000000000404000000077 +S315E07281B000000000000000000040400000000000E7 +S315E07281C00040400000000000004040000000000057 +S315E07281D00040400000000000004040000000000047 +S315E07281E00000400000000000004040000000000077 +S315E07281F00040400000000000000000000000004067 +S315E07282004000000000000040400000000000004016 +S315E07282104000000000000040400000000000004006 +S315E072822000000000000000000000000000000000F6 +S315E07282300000B136000000000000002000040020BB +S315E07282400000040020000020000000000000000092 +S315E07282500000000100080040010008004000000034 +S315E0728260000000000000002020000002001000A0C4 +S315E072827022001000800000000020200000000000B4 +S315E0728280000000040020000004002000002000002E +S315E0728290000000000000000000010008004001003C +S315E07282A0080040000000000000000000000000002E +S315E07282B00002001000800200100080000000000042 +S315E07282C000000000000000004004002000000400EE +S315E07282D02000000000000000000000000000000125 +S315E07282E000080040010008004000000000000000A5 +S315E07282F00000000000400002001000800200100042 +S315E07283008000000000000000000000404000000411 +S315E072831000200040040020000000004040004000C1 +S315E072832000000040404100080000010008004000E3 +S315E07283300040004000000000000040000002001013 +S315E07283400080424010008000000000004000000003 +S315E072835000000040000400200000044020000000FD +S315E072836000004040400000000040400140080040EC +S315E0728370010008004000004000000000000000001C +S315E072838000404002001000C04240100080000040F1 +S315E07283900000400000000040404040040020000021 +S315E07283A004406000000000004040408DC9000000BB +S315E07283B00000202020000000000000000000000005 +S315E07283C00000000000000000000000000000000055 +S315E07283D00000000000000000000000000000000045 +S315E07283E02020000000000000202020200000000075 +S315E07283F000002020000000000000002000000000C5 +S315E072840000000000000020200000000000000000D4 +S315E07284100000000000000000000000000000000004 +S315E072842000000000000000000000000000000000F4 +S315E072843000000000000000000000000000000000E4 +S315E072844000000000000000000000000000000000D4 +S315E072845000000000000000000000000000000000C4 +S315E072846000000000000000000000000000000000B4 +S315E07284700000000000000000000000000040000064 +S315E07284800000000000404040000000000040400054 +S315E07284900000000040004000000000000000000004 +S315E07284A00000000000000000000000000040000034 +S315E07284B00000000040000000000040404040000024 +S315E07284C00000400040000000000040400040000014 +S315E07284D000000000400000000000000040000000C4 +S315E07284E000004000400000000000000000000000B4 +S315E07284F040000000000000000000000000000000E4 +S315E07285000000400000000000000000400000000093 +S315E07285104040000000000000404000000000000003 +S315E0728520400000008E89000000000020202000003C +S315E072853000000000000000000000000000000000E3 +S315E072854000000000000000000000000000000000D3 +S315E072855000000000000000000000002000000000A3 +S315E07285600000002020000000002020000000000033 +S315E07285700020200000000000000000000000000063 +S315E07285800000000000000000000000000000000093 +S315E07285900000000000000000000000000000000083 +S315E07285A00000000000000000000000000000000073 +S315E07285B00000000000000000400000000000000023 +S315E07285C00000400000000040000000000000004093 +S315E07285D00000400000000000000000000000000003 +S315E07285E000000000004000000000000000000000F3 +S315E07285F00000000000000000000000000000000023 +S315E07286000000000000400000000000000040400052 +S315E07286104000000000404040000000000000000002 +S315E07286200000004000400000000000000000000072 +S315E07286300000004040400000000000404000400062 +S315E07286400000000000404000000000000000400012 +S315E07286500000000000000000000000400040400002 +S315E072866000000000000000000040004040000000F2 +S315E07286700040404040000000000000400000000062 +S315E072868000404040000000000000000000000000D2 +S315E072869000404000000000000040000000AB7100A6 +S315E07286A00000000000002000000000000000000052 +S315E07286B00000000000000000000000000000000062 +S315E07286C00000000000000000000000000000000052 +S315E07286D00000000000000000000000002020000002 +S315E07286E000000000000000000000202000200000D2 +S315E07286F00000000000000000002000000000000002 +S315E07287000000000000000000000000000000000011 +S315E07287100000000000000000000000000000000001 +S315E072872000000000000000000000000000000000F1 +S315E072873000000000000000000040000000000000A1 +S315E072874000000000000000000000000000000000D1 +S315E07287500000000000000000004000000000000081 +S315E072876000000000000000000000000000000000B1 +S315E07287700000000000000000400000000000004021 +S315E07287804040000000004000400000000000000091 +S315E07287900000000000000000000000000040004001 +S315E07287A000000000000000000000000040000040F1 +S315E07287B00000000040404040000000004040404061 +S315E07287C000000000000000000000000040400000D1 +S315E07287D00000000000004000000000000000000001 +S315E07287E000004040404000000000000040400000B1 +S315E07287F000000000000000000000000040000000E1 +S315E07288000000000040400000000000004040000010 +S315E07288100000004040406D6B0000008000000000E8 +S315E07288202000000000000000000000202020000070 +S315E07288300000000020200000000000002000000080 +S315E07288400000000020000000000000200000000090 +S315E07288500000000000000000000000202000000080 +S315E07288600000000000002000000000000000000090 +S315E07288700000002000000000000020000000000060 +S315E07288800000202000000000000020000000000030 +S315E07288900000000000000000000000000000000080 +S315E07288A00000000000000000000000000000000070 +S315E07288B00000000000000000000000400000000020 +S315E07288C00000000000000000000000000000000050 +S315E07288D00000000000000000000000000000000040 +S315E07288E000000000000000000000400000000040B0 +S315E07288F040000000000000000000000000000040A0 +S315E0728900400000000000004000000000000000008F +S315E072891000000000004000000000000000000000BF +S315E0728920000000000040400000000000000000006F +S315E072893000000000004040404000000000000000DF +S315E0728940400000000040404040000000000000008F +S315E0728950400000000000000000000040404040007F +S315E0728960000000400040000000000040400040006F +S315E0728970000000004000400000000040404040001F +S315E0728980000000000000000000000000400000C986 +S315E0728990C00000000000202000000000000000007F +S315E07289A0000000002020000000000000000000002F +S315E07289B0000000000000200000000000000020001F +S315E07289C0000000002020000000000000000000000F +S315E07289D0000000002020000000000000202020207F +S315E07289E000000000000000000000202000000000EF +S315E07289F000000000200000000000000000000000FF +S315E0728A0000000000200000000000000000000000EE +S315E0728A1000000000000000000000000000000000FE +S315E0728A2000000000000000000000000000000000EE +S315E0728A3000000000000000000000000000000000DE +S315E0728A4000000000000000000000000000000000CE +S315E0728A5000000000000000000000000000000000BE +S315E0728A60000000000000000000004040000000002E +S315E0728A70000000000000000040400000000000001E +S315E0728A80004000000000000000000000000000004E +S315E0728A9000000000000000000000000000004040FE +S315E0728AA0404000000000400000000000000040402E +S315E0728AB040000000000000004000000000000000DE +S315E0728AC000000000000040400000000000000000CE +S315E0728AD0000000000040000000000000404040003E +S315E0728AE0000000004000404000000000000040002E +S315E0728AF0000000004000000000000000404000005E +S315E0728B000000000040000000776A0000800000204C +S315E0728B10200020000000000000000000002000207D +S315E0728B20200000000020202020000000002020000D +S315E0728B30200000000020200000000000000000007D +S315E0728B40000000000000002020000000002020004D +S315E0728B50000000000020200000000000000000007D +S315E0728B60000000000020200000000020200020000D +S315E0728B7000000020202020000000002020000000DD +S315E0728B80000000000000000000000000000000008D +S315E0728B90000000000000000000000000000000007D +S315E0728BA0000000000000000000000000000000006D +S315E0728BB0000000000000000000000000000000005D +S315E0728BC0004000000000000000000000000000000D +S315E0728BD0000000000000000000000000000000003D +S315E0728BE0000000000000000000000000000000002D +S315E0728BF0004040000000000000000000000000009D +S315E0728C00000000000000004040000000000000008C +S315E0728C10000000000000004040000000000000007C +S315E0728C20000040000000000000004000000000006C +S315E0728C30000000000000000040000000000000009C +S315E0728C40000040000000000000000000000040400C +S315E0728C50400000000000000000000000004000003C +S315E0728C6000000000004000404000000000000000EC +S315E0728C7000000000004040404000000000404040DC +S315E0728C8040CE2E000000000020200000000000040C +S315E0728C90002000000000000000200000000020001C +S315E0728CA00020000000012008206000000000200083 +S315E0728CB0200000000000000000000000000200102A +S315E0728CC0008000000000000000000000000020208C +S315E0728CD000200000000400200000000000000020D8 +S315E0728CE00000000020002020000000012008006043 +S315E0728CF000000000200020000000000000000000DC +S315E0728D000000000200100080000000000000000079 +S315E0728D1000000000000000000000000400200000D7 +S315E0728D2000000000000040000000000000000000AB +S315E0728D300001000800400000000000000000000092 +S315E0728D4000000000000000000002001040800000F9 +S315E0728D5000000000000000000000000000000000BB +S315E0728D600004002000000000000040400000000007 +S315E0728D700000000000000001000800000000000092 +S315E0728D804040000000000000000000000000000209 +S315E0728D90001000800000000040004040000000002B +S315E0728DA000004000000000040020400000000000C7 +S315E0728DB00000000000000000000000000001000852 +S315E0728DC000400000000000400000000000000000CB +S315E0728DD00000000000024050008000000000000029 +S315E0728DE00000000000000000404000000004406007 +S315E0728DF0000000000000404000009F4100000000BB +S315E0728E0000000000000000000400200000000000E6 +S315E0728E1000000000000000000000000000000100F9 +S315E0728E200800400000000000000000000000002082 +S315E0728E300000000000000200100080000000000048 +S315E0728E4000000000000000000000000000000400C6 +S315E0728E50200000000000000000000000000000009A +S315E0728E600000000001000800400000000000000061 +S315E0728E700000000000000000000000000200100088 +S315E0728E8080000000000000000000000000004000CA +S315E0728E904000000004402000400000000000400056 +S315E0728EA04000000000400000400001000800400061 +S315E0728EB0000000004040000000000040000040005A +S315E0728EC000000200104080000000000040004000F8 +S315E0728ED000000040000000000000040020000000D6 +S315E0728EE0000000000040000000000040000040006A +S315E0728EF00100080000400000000040000000000091 +S315E0728F000040004000000000024010408000000077 +S315E0728F100040004000000000000040000000000039 +S315E0728F200400204000000000000000400000000045 +S315E0728F300000404000000100080040000000000010 +S315E0728F400000400000000040000040000000020007 +S315E0728F5010008000000000000000400000000040A9 +S315E0728F600000000000000400200000000000000085 +S315E0728F700000004C740000000000000000000000D9 +S315E0728F800004002000000000002000000000000045 +S315E0728F900000000000000001000800400000000030 +S315E0728FA00000000000000000000020000000000247 +S315E0728FB00030208000000000002020000000000049 +S315E0728FC000202000000000040020000000000020C5 +S315E0728FD00000000000000000000000000001000830 +S315E0728FE000400000000000000000000000000000E9 +S315E0728FF00000000000020010008000000000000087 +S315E072900000000000000000004000000000040020A4 +S315E072901000000000000000000000000000000000F8 +S315E0729020000000010008004000000000000000009F +S315E07290300000000000004000000000020010008006 +S315E07290400000000000404000000000000000000048 +S315E072905000000004006040000000000000400000D4 +S315E0729060000000000000400000010008004000001F +S315E07290700000000040000000000000004000000018 +S315E072908000020010008000000000004000000000B6 +S315E07290900000000040000000000400200000000014 +S315E07290A00000004000000000000000000000000127 +S315E07290B000080040000000000040000000000000D0 +S315E07290C00000000000000002005040800000000036 +S315E07290D000400000000000000000000000000004F4 +S315E07290E000200000000000000000000096CF0000A3 +S315E07290F083831C1C606000000303181C4060000040 +S315E0729100070738384040000007073838C0C000000B +S315E07291100607303880C001010E0E70708080010142 +S315E07291200E0E7070808001010C0E60700080030379 +S315E07291301C1CE0E0000003031C1CE0E000000303DB +S315E0729140181CC0E0000007073838C0C000000707E7 +S315E07291503838C0C000000607303880C001010E0EF4 +S315E07291607070808001010E0E7070808001010C0EAD +S315E07291706070008003031C1CE0E0000003031C1C0B +S315E0729180E0E000000303181CC0E00000070738386F +S315E0729190C0C0000007073838C0C000000607303884 +S315E07291A080C001010E0E7070808001010E0E70702B +S315E07291B0808001010C0E6070008003031C1CE0E0ED +S315E07291C0000003431C1CE0E000004303181CC0E0EF +S315E07291D0000007073838C0C0000007073838C0C03B +S315E07291E000000607303880C001010E0E7070808074 +S315E07291F001010E0E7070808001010C0E60700080AD +S315E072920003031C1CE0E0000003031C1CE0E000000A +S315E07292100303181CC0E0000007073838C0C000001E +S315E072922007073838C0C000000607303880C0010131 +S315E07292300E0E7070808001010E0E707080800101DA +S315E07292400C0E6070008003031C1CE0E0000002025A +S315E07292501C1CE0E000000202181CC0E000000606DA +S315E07292603838C1C100233B00002020000000000016 +S315E07292700020000000000000000000000000000076 +S315E07292800000000000000000000000000000000086 +S315E07292900000000000000000000000000000000076 +S315E07292A00000000000000000000000000000000066 +S315E07292B00000000000000000000000000000000056 +S315E07292C00000000000000000000000000000000046 +S315E07292D00000000000000000000000000000000036 +S315E07292E00000000000000000000000000000000026 +S315E07292F00000000000000000000000000000000016 +S315E07293000000000000000000000000000000000005 +S315E072931000000000000000000000000000000000F5 +S315E072932000000000000000000000000000000000E5 +S315E07293300000000000000000000000004000004055 +S315E07293400000004000000040000000000000000045 +S315E072935000000000000000000000000000000000B5 +S315E072936000000000000000000000000000000000A5 +S315E07293700000000000000000000000000000000095 +S315E07293800000000000000000000000000000000085 +S315E07293900000000000000000000000000000000075 +S315E07293A00000000000000000000000000000000065 +S315E07293B00000000000000000000000000000000055 +S315E07293C00000000000000000000000000000004005 +S315E07293D04000000000000040400000000000C49918 +S315E07293E00000000000000000000000000000000025 +S315E07293F000100000000000000008000000000040BD +S315E07294000000000000000000000000000000000004 +S315E072941000000000000000000000000000000000F4 +S315E072942000000000000000000000000000000000E4 +S315E072943000000000000000000000000000000000D4 +S315E072944000000000000000000200000000000000C2 +S315E072945000000000000000000000000000000000B4 +S315E07294608000000000000000000080010010000093 +S315E07294700000000000000000000000000000000094 +S315E07294800000000000000000000000000000000084 +S315E07294900000000000000000000000000000000074 +S315E07294A0200000040000040000000000000000003C +S315E07294B00000000000000000000000000000000054 +S315E07294C00000000000000000000000000000000044 +S315E07294D00000000000000000000000000000000034 +S315E07294E00000000000000000000000000000000024 +S315E07294F00000000000000000000000000000000014 +S315E07295000000000000000000000000000000000003 +S315E072951000000040000000000000000000000000B3 +S315E072952000000000000000000000000000000000E3 +S315E072953000000000000000000000040000000000CF +S315E07295408000000000000000000000000000000043 +S315E0729550000000000000001C510000000020200006 +S315E072956000000000000000000000000000000000A3 +S315E07295700000000000000020200000000000000053 +S315E07295800000002000000000200000000000000043 +S315E07295902000000020000000000000000000000033 +S315E07295A00000000020000000200000000000000023 +S315E07295B000000000002020000020000010000000E3 +S315E07295C000200000002000000020000020000000C3 +S315E07295D00000000000000000000000000000000033 +S315E07295E000000000000000000000000040000000E3 +S315E07295F00000000000000000000000000000000013 +S315E07296000000000000000000000000000000000002 +S315E072961000000000000000000000000000000000F2 +S315E07296200040400000000000000000000000400022 +S315E07296300000000000400040000000000000000052 +S315E07296400040000000400000000000000000000042 +S315E07296500000000000404000000000000000000032 +S315E072966000004000000000000000400040000000E2 +S315E072967000400000000140000001400000000000D0 +S315E072968000000000004040000000400000000000C2 +S315E07296900000000000000000000000000040000032 +S315E07296A00000000000000000010000400000000021 +S315E07296B00000000001000000000000000000004011 +S315E07296C00040004000000000400100000000400041 +S315E07296D0932A000000002000000000000000000055 +S315E07296E00000000000000000000000000000000022 +S315E07296F00000000000000000000000000000000012 +S315E07297000000000000000000000000000000000001 +S315E072971000000000000020000000000000000000D1 +S315E072972000000000000000000000000000000000E1 +S315E072973000000000001000000000000000000000C1 +S315E072974000000000000000000000000000000000C1 +S315E07297500010000000000000800000000000000021 +S315E07297600000000000400000000000000000000061 +S315E07297700000000000000000000000000000000091 +S315E07297800000000000000000000000400000000041 +S315E072979000000000000000000000400040000000F1 +S315E07297A000000000000000004000000000400000E1 +S315E07297B000000000000000000040000000400000D1 +S315E07297C00000000000000000000000000000400001 +S315E07297D000000000000000000000000000004000F1 +S315E07297E000000000000040000040000000000000A1 +S315E07297F00000000000000000000000000000000011 +S315E07298000000000000000000000000000000000000 +S315E072981000000000000040000000000000000000B0 +S315E07298200000000000000000000080000000000060 +S315E072983000000000400000004040002041000000AF +S315E07298400041000000000000404FA400000000004C +S315E07298502000000000000000000000000000000090 +S315E07298600000000000000000002020000000000060 +S315E07298700008004000200000000020000000000008 +S315E07298800000200000002000000000000000000040 +S315E07298900000000000002000000020000000000030 +S315E07298A000000000000000202000002000002000E0 +S315E07298B000000020000000200000002000002000D0 +S315E07298C000000000000000000200000080000000BE +S315E07298D00000000000000000000000000000000030 +S315E07298E00000000000000000000000000000000020 +S315E07298F0000000000000000000000001000000000F +S315E072990000000000000000000000000000400000BF +S315E072991000000000000000000000000000000000EF +S315E07299200000000000000400204000040000000077 +S315E072993000000000000000000000000000000000CF +S315E0729940000000000000000000400000000000007F +S315E072995000000040400000000000000040000000EF +S315E0729960000000000000000140000001400000001D +S315E072997000000000000000404000000040000000CF +S315E0729980000000000000000000000040000000003F +S315E0729990000000000000000000000100004000002E +S315E07299A0000000000000010000000000000000005E +S315E07299B0000004000000000000000000000000004B +S315E07299C000002A770000000000000020000000205E +S315E07299D0000000000000000020000000000000000F +S315E07299E000000000200000000000000020000000DF +S315E07299F020200000000000200000000000000000AF +S315E0729A0000000000002000000000000000000000DE +S315E0729A1000000000002000000000000000000000CE +S315E0729A20000000004000000020000000004000003E +S315E0729A3000000000000020000000000000000000AE +S315E0729A40000000000000000000000000000000803E +S315E0729A5000400040000040000040000040800000EE +S315E0729A60000000000000404000000000004000409E +S315E0729A70000000400000000000000040000000000E +S315E0729A80000000004000000000000000000000003E +S315E0729A9000000040000000000000004000000000EE +S315E0729AA0000040000000000000000000000000001E +S315E0729AB0000000000000000000400000000000000E +S315E0729AC040000000004000000000000000000000BE +S315E0729AD000000000004000000000000000400000AE +S315E0729AE0000000000000000000004000000000409E +S315E0729AF0000000010000004000000041000000404C +S315E0729B0000000000004000000000000000000000BD +S315E0729B10400000000000000000000040010000006C +S315E0729B20000000004000004000000000000000005D +S315E0729B300000000000000000000000CDC000000040 +S315E0729B40000000000000000000000000002000207D +S315E0729B50000000200020000000200000000000004D +S315E0729B60000000200000000000000000000000007D +S315E0729B70000000000000002020000000000000004D +S315E0729B80000000000000000000000000000000403D +S315E0729B900000002000000000000000000000200429 +S315E0729BA000004000002000000040000000000000BD +S315E0729BB0000000000000000000000000000000004D +S315E0729BC000004000000000000000000000000000FD +S315E0729BD0400000000000000040004000400000002D +S315E0729BE000004000000000000000000000000000DD +S315E0729BF0004000000000000000000000000000408D +S315E0729C0000400000000000000000000000000000BC +S315E0729C10400000000000000040000000000000006C +S315E0729C2000000000000000000000000000000000DC +S315E0729C30000000000000000000000040000000008C +S315E0729C40000000400000400000000000000000003C +S315E0729C50800000000000000001000000000000002B +S315E0729C600100000001000000000100004000000059 +S315E0729C70000040000000000001000040000000000B +S315E0729C80000000000000000000000000400000003C +S315E0729C9000000000000000004000400000000040AC +S315E0729CA000004001000000000000400000000800D3 +S315E0729CB000000000443C000000800000002000002C +S315E0729CC0000000000000200020200000202000009C +S315E0729CD000002000000000000000000020002000CC +S315E0729CE0002000002000000000200000000000209C +S315E0729CF000002000000000200000000000000000CC +S315E0729D0000000000000000004000000000000000BB +S315E0729D10000000000040000000000000002000008B +S315E0729D2000000000000000200000000000000000BB +S315E0729D3000000000000000000000000000000000CB +S315E0729D40000080400040004000400040000040803B +S315E0729D5000000000400040000000004000000040AB +S315E0729D60000000000000000000004000004000001B +S315E0729D70000000000000000040400000000000000B +S315E0729D8000000000004000000000000000004000FB +S315E0729D9000004040000000000000000000000000EB +S315E0729DA0000000000000000000000000004000001B +S315E0729DB0000040400000000000000000400000008B +S315E0729DC0400000000000000040800000000000003B +S315E0729DD040000000000000000000000040010000AA +S315E0729DE000004000000140000040004000400000DA +S315E0729DF0000100004000000040000000000000008A +S315E0729E00000040000000000000000000004000007A +S315E0729E10000000004000000000400000400000002A +S315E0729E2000000000400000000000000000468200D2 +S315E0729E3000200000000000000000000000000000AA +S315E0729E40002000000000000000000000000000009A +S315E0729E50000000200000000000000000000000008A +S315E0729E60000000000000002000000000002000203A +S315E0729E70000000000000000000000000000000008A +S315E0729E8000010008400000400000000000004000B1 +S315E0729E90000000000000000000000000000020004A +S315E0729EA0000000000000400000000000000000001A +S315E0729EB00000000000000000000000000100000049 +S315E0729EC00040010000000040000040000000000079 +S315E0729ED04020000002400040000000000040000206 +S315E0729EE0001000004000000000400040000000004A +S315E0729EF00000000000000000004000000000400189 +S315E0729F0000000000000000000000000000400000B9 +S315E0729F1000000000000000000000000000000000E9 +S315E0729F200000004000000000000000400000000059 +S315E0729F3000000000004000404000000000040040C5 +S315E0729F400000400040000000000000000000000039 +S315E0729F500000000000000000000040000040000029 +S315E0729F604000004000000000000000000100000018 +S315E0729F7040000000004000004000000000000000C9 +S315E0729F8000000040000000004000000000000000F9 +S315E0729F900000000000004000004000480040000061 +S315E0729FA0000042000000D0F00000810000000000D6 +S315E0729FB00000000000000000000000000000000049 +S315E0729FC00000000000000000000000200000000019 +S315E0729FD00000000000000000000000000000000029 +S315E0729FE000000000000020000000000000000000F9 +S315E0729FF00000000000000000000001000800000000 +S315E072A00000000000000000000000000000000000F8 +S315E072A0104000000000000000000000000000004068 +S315E072A02000000000000000000000000000000000D8 +S315E072A0304000000000000000000000000000000088 +S315E072A0404000000000000000002000000000000058 +S315E072A0504000000000000000020010000000000056 +S315E072A0600000400000000000000000000000000058 +S315E072A0700000400000000000000000000000004008 +S315E072A0800000000000004000000000000000000038 +S315E072A0900000000000000000000000000000000068 +S315E072A0A000000000400000000000000000400000D8 +S315E072A0B00040000000000400400000000040000084 +S315E072A0C00000000000000000000000000000000038 +S315E072A0D000000000400000000000000040000000A8 +S315E072A0E00000000000010000004000000000400097 +S315E072A0F00000400000000000000000400000000088 +S315E072A10000000000000000000000000000000000F7 +S315E072A110400000004800000000000000000000243B +S315E072A1204100200000000000000000000000000076 +S315E072A1300000000000000000000000200000200087 +S315E072A14000000000000000000000000000000000B7 +S315E072A1500000000000000000002000000000000087 +S315E072A1600000000000000000000000000000000097 +S315E072A1700000000000000000000000000000000087 +S315E072A1800000000000000000000000000000000077 +S315E072A1902000000000000000000000000000000047 +S315E072A1A00000000000000000000000000000000057 +S315E072A1B000004000000000000000000000400000C7 +S315E072A1C000000000000000000000000000004000F7 +S315E072A1D000000000000000000000000040000000E7 +S315E072A1E00000000000000000000000000000000017 +S315E072A1F040010000000000000000000000000000C6 +S315E072A20000000000000000000000000000000000F6 +S315E072A21000000000400000000000000000000000A6 +S315E072A2200000000000000000004000000000000096 +S315E072A2302000000040000000000000000000000066 +S315E072A24000000000000001000000000000000000B5 +S315E072A2500000400000000000000000000000000066 +S315E072A2600000000000000000000000000000000096 +S315E072A2700000000000000000000040000000000046 +S315E072A28000000000000000000000004000000040F6 +S315E072A2900000000000000000B09200000000000024 +S315E072A2A00000000000000000000000002000000036 +S315E072A2B00000000000000000000000000000000046 +S315E072A2C00000000020000000000000000000000016 +S315E072A2D00000000000000000002000000000000006 +S315E072A2E000000000000000000000000000000040D6 +S315E072A2F00040000000000000000040000000000086 +S315E072A30000000000000000000000000000000000F5 +S315E072A3100000000000000000000000004000400065 +S315E072A32000000000000000000100000000010000D3 +S315E072A3300000000000000040000000400000004005 +S315E072A3400200000000000000000000000000004073 +S315E072A35000000000000000000000000000000000A5 +S315E072A3600000400000000000000000000000400015 +S315E072A3700000000000000000000000000000000085 +S315E072A3800000000000000000000000000000000075 +S315E072A3900000000000000000000000000000000065 +S315E072A3A00000000000000000000000000000000055 +S315E072A3B00000000000000001000000000000000044 +S315E072A3C00080000000000000400000000000000075 +S315E072A3D00000000000000000000000000000000025 +S315E072A3E00000000000000000000000000000000015 +S315E072A3F00000000000000000000000000000000005 +S315E072A4000000000000000000000000000060020092 +S315E072A41000B1F20000000000000000000000000041 +S315E072A4200000000000000000002000002000000094 +S315E072A43000200000000000000000000000000000A4 +S315E072A4400000000020000000000020000020000054 +S315E072A4500000000000000000000020000000200064 +S315E072A4600040204000000000000000006000400054 +S315E072A47000000000200000004000000020400000C4 +S315E072A48000000060000000002000000000000000F4 +S315E072A4900000000000000000000000000000000064 +S315E072A4A00000000000000000000000004000000014 +S315E072A4B00000000000004000000040000040000084 +S315E072A4C000004000000000000000000000000000F4 +S315E072A4D000000000004040000000000000000000A4 +S315E072A4E000000000000000000000000040000000D4 +S315E072A4F000004000000000000000000000000000C4 +S315E072A50000000000000000000000000000000000F3 +S315E072A5100000000040000000400000000040000023 +S315E072A52040000000000000400040400000000000D3 +S315E072A53040000000400000000000400000000040C3 +S315E072A5400000004000004000000000000000000033 +S315E072A55000000000000000000000000000000000A3 +S315E072A5600000000000004000004000000000000013 +S315E072A5700040000000000000000000004000000003 +S315E072A58000400000000000000000444700008080A8 +S315E072A5902000000020000000000000000000000023 +S315E072A5A00000000000000000000000000020000033 +S315E072A5B00000000000002000000000000000002003 +S315E072A5C00000200000000000000000000000000013 +S315E072A5D02000200000002000000020000000400063 +S315E072A5E00000400020000000000020002040000033 +S315E072A5F02000200020000000000040000000000063 +S315E072A6002000004000000000000000000000000092 +S315E072A6100000000000000000000000004000004062 +S315E072A62000000000000000000000000000000000D2 +S315E072A63000000000000000000000000000000000C2 +S315E072A64000000040000040004040000000000000B2 +S315E072A6500000000000000000004000000040000022 +S315E072A6600000000000000000000040000000400012 +S315E072A6700000400000000000000000000000000042 +S315E072A68040000000004000000000000000000040B2 +S315E072A69000000000400000000000000040000000E2 +S315E072A6A00000000000000000010000000000004011 +S315E072A6B00000000000000000000000000000000042 +S315E072A6C000000040000000400100000000000000B1 +S315E072A6D000000000000000000000000040000000E2 +S315E072A6E000000100004000000000000000000000D1 +S315E072A6F000400000000000000000000000000000C2 +S315E072A700010140F55F00000000000000000020003B +S315E072A71000000000000000002000000000000000C1 +S315E072A72000000000000000000000000000200000B1 +S315E072A7300000002000000000002000000000000081 +S315E072A7400000002000202000000000000000000051 +S315E072A75000000000000000000000000000000000A1 +S315E072A7600000002000000000000000200000000051 +S315E072A7700000000000000000000000000000000081 +S315E072A7800000000000400000004040004000000071 +S315E072A7900040000000000000000000000000000021 +S315E072A7A040000000000000400000000000000000D1 +S315E072A7B00000000000000000000000000000000041 +S315E072A7C000000000000000000000000000004000F1 +S315E072A7D00000000000000000000000000000000021 +S315E072A7E04000000000400000004000000040000011 +S315E072A7F000000000000000000000000000400000C1 +S315E072A8000000400000000000000040000000004030 +S315E072A81000400000000000400000400000004000E0 +S315E072A8200040000040000000000000000000000050 +S315E072A830000000400000400000000000000000013F +S315E072A8400000000000000040000000000000000070 +S315E072A8500000000000004000000000000000000060 +S315E072A8600000000000000000000000000000000090 +S315E072A87000000000000040000000000096F90000B1 +S315E072A8800000000000000000000020000000002030 +S315E072A8900000000000002000000020000000000020 +S315E072A8A00000002000000000000000000000000030 +S315E072A8B00000000000002000000020000000000000 +S315E072A8C00000000000002000400020000000200090 +S315E072A8D000000000000000000000204000000000C0 +S315E072A8E02000000000000000200020000000004070 +S315E072A8F00000400000000000004000004000000040 +S315E072A90000000000000000000000000040000000AF +S315E072A910000000000040000000000000004000005F +S315E072A920000000000000000000400000000000008F +S315E072A930000000400000000000000000000000007F +S315E072A940000000400000000000000000000000006F +S315E072A950004000000000000000000000000000005F +S315E072A960000000000000000000000000000040004F +S315E072A970000000000000000000000000000000007F +S315E072A980000000000000000000000000000000006F +S315E072A990000000000000000000000040000000001F +S315E072A9A0000000000000000040000000000000000F +S315E072A9B000000040000000000000000000004000BF +S315E072A9C000000040000000000000004000000000AF +S315E072A9D000000000000000000000000000004000DF +S315E072A9E0400000000000000000400000000000008F +S315E072A9F00000000000928D00200000000020200080 +S315E072AA0000000000000000000000000000000000EE +S315E072AA1000000000000000000000002000000000BE +S315E072AA2000002000000000000000000000000000AE +S315E072AA30000000000000000000002000000000009E +S315E072AA40000000000000000040000000000000006E +S315E072AA50000000200000000000000000000000007E +S315E072AA60000000004020000000000000000000002E +S315E072AA70000000000000000000000000000000007E +S315E072AA8040000040000000000000000000000040AE +S315E072AA9000000000400000000000000040000000DE +S315E072AAA0000000000000000000000000000000004E +S315E072AAB000000040000000000000004000000000BE +S315E072AAC0000000000000000000000000000000002E +S315E072AAD000000000000000000000000000400000DE +S315E072AAE0000000000000000000000000000000000E +S315E072AAF000000000000000000000000000004000BE +S315E072AB0000000000000000000000000000000000ED +S315E072AB1000000000000000000000000000000000DD +S315E072AB2000000000000000000000000000000000CD +S315E072AB30000000000000000000000040000000007D +S315E072AB40000000000000000000004000000000006D +S315E072AB50000000000000000000400000000000005D +S315E072AB600000000000000000000000004000EED58A +S315E072AB70000000000000000000000000000000007D +S315E072AB80200000000000000000000000000000004D +S315E072AB90000000000000000000200000000000003D +S315E072ABA0000020000000000000000000000020000D +S315E072ABB000000000000000000000000040000000FD +S315E072ABC0000000002000000000000000000000000D +S315E072ABD0000000400000000040000000000000009D +S315E072ABE0000000000000000000000000000000000D +S315E072ABF000000000000000000000000000000000FD +S315E072AC00000040000040000000000000000000006C +S315E072AC10000000000000000000000000004000009C +S315E072AC20000000400000004000000000000000400C +S315E072AC30000000000000000000000000000040007C +S315E072AC4040004000000000000000000000400000EC +S315E072AC50000000000000000000000000000000009C +S315E072AC60000000000000000000000000000000008C +S315E072AC70000000000000000000000000000000007C +S315E072AC80000000000000000100000000000000006B +S315E072AC9000400000004000000000000000000001DB +S315E072ACA0000000000000000001400100000000000A +S315E072ACB0000001000000004000400000000000407B +S315E072ACC000000000000000000000004000000000EC +S315E072ACD0000000000000000000000000000000001C +S315E072ACE0000000000000005F740000002000000019 +S315E072ACF000000000000000000000002000000000DC +S315E072AD00000000200000000020000000000000208B +S315E072AD10000000000000002000000000000020009B +S315E072AD20000020000000000000000000000020008B +S315E072AD3000002000000060000040000040000000BB +S315E072AD4000400020000000002040000000000000EB +S315E072AD50200000000000000000000020000000203B +S315E072AD60000000000000000000000000000000008B +S315E072AD70000000000000000000400000000000003B +S315E072AD8000004000000000000040000000000000EB +S315E072AD90004000404000000000000000000040005B +S315E072ADA0000000400000004000000040000040004B +S315E072ADB000000040004000000000000000000000BB +S315E072ADC000000000000000000000400000000000EB +S315E072ADD000004000000000000000000000000000DB +S315E072ADE0000000000000000000000000000000000B +S315E072ADF000000000000000000040000000000000BB +S315E072AE0000000000000000000000000000010000E9 +S315E072AE1000000000000000000000000000010000D9 +S315E072AE2000000000000000000000000000000000CA +S315E072AE3000000000000001000000000000000000B9 +S315E072AE40000000000000000000000000400000402A +S315E072AE500040004000000001400000004000000099 +S315E072AE606CE00000000000002000000020000000FE +S315E072AE7000000000002000000020000000200020FA +S315E072AE8000200020002000000020000000000000EA +S315E072AE90002000000000000000000000000000003A +S315E072AEA0000000000000000000000000000000004A +S315E072AEB0000000000000000020000000000000001A +S315E072AEC000000000000020000000000000200000EA +S315E072AED000000000200000000000000000000000FA +S315E072AEE0000000400000000000000000000000408A +S315E072AEF0000000400000404000000000000000003A +S315E072AF0000000040000000000000000000000000A9 +S315E072AF1000000000000000000000000000000000D9 +S315E072AF200040000000000000004000000000000049 +S315E072AF3000400000004000000000000040000000F9 +S315E072AF4000000000000000000000000000000000A9 +S315E072AF500000000000000000000000000000000099 +S315E072AF600000000000004000000000000000000049 +S315E072AF700000000000000000000000000040000039 +S315E072AF800040000000000000400000400041000068 +S315E072AF900040000000004000000040004000000158 +S315E072AFA00000000040000040010000000000004088 +S315E072AFB00000004000000000000000004100404038 +S315E072AFC000000000000000000040000000400000A9 +S315E072AFD04000000000400000002F500000200000FA +S315E072AFE00000000000000000000000000000000009 +S315E072AFF020000000000000000000000000000000D9 +S315E072B00000000000000000200000000000000000C8 +S315E072B0100000000000002000000000200000000098 +S315E072B0200000000040004000000000000000000048 +S315E072B0300000002000000000000000000000000098 +S315E072B0400000000000000040000000200000002028 +S315E072B0504000000000400000000000000000000018 +S315E072B0600000000000000000000000000000000088 +S315E072B07000000000000040000040000000004000B8 +S315E072B08000400000000000004000000000000000E8 +S315E072B0900000000000000000000000000000000058 +S315E072B0A00000000000000040000000000000000008 +S315E072B0B04000000000000040000000000000004078 +S315E072B0C00000000000000000000000000000000028 +S315E072B0D000400000000000000000000000000000D8 +S315E072B0E00000000000000000000000004000400088 +S315E072B0F00000400000400000000000010000004037 +S315E072B1000000004000000000004000000000000067 +S315E072B1100040000000000000000000000000400057 +S315E072B1200000004000010000000000000000000086 +S315E072B1300000000000000000000040000000004037 +S315E072B1400000000000000000000040000040000027 +S315E072B150000021070000008020200000202000006F +S315E072B16000000000000000200000202000200020E7 +S315E072B17000002000200000000000000020002000F7 +S315E072B18000000000202000000020000020200000C7 +S315E072B1902000200000200020002000002060000037 +S315E072B1A06060000060400000000020200000200087 +S315E072B1B04020002000006000202040200000202077 +S315E072B1C00000402040200020400060000000400067 +S315E072B1D040000000400040000000000040000040D7 +S315E072B1E000004000004000004000400040000000C7 +S315E072B1F00040000040400040004000400000000077 +S315E072B2000040000040000000000000004000000026 +S315E072B2100000400040004000400000400000000096 +S315E072B2200000404000004040000000000000404046 +S315E072B23000400000004000000040000000000000F6 +S315E072B2400000000000000000400000000000000066 +S315E072B2500000000000004040000040400000404016 +S315E072B26000004040004000400040000040400000C6 +S315E072B27041400000404000000040004000000000F5 +S315E072B28040004000400000400000000000400041E5 +S315E072B2900000000000400040000040000000000096 +S315E072B2A000000000000000400000010000000040C5 +S315E072B2B000000040004000400040004000000000F6 +S315E072B2C040400000000000004100401DCA0020001E +S315E072B2D02000002020000020000000000000000096 +S315E072B2E02000200000200000200020002000000046 +S315E072B2F00000002020002000200000200000002036 +S315E072B3000020002000200020002000200020000005 +S315E072B31000000020002040200060402040204000D5 +S315E072B3200040000060002000002000200060002045 +S315E072B3300040002000600020002000202000006015 +S315E072B3402000200000000000000000400000000025 +S315E072B3500000004000000040400000400000000095 +S315E072B3600000000040000040400000000000004085 +S315E072B3704000400040000040000000000000000075 +S315E072B3804000000000004000004000000000004065 +S315E072B3904000000000004000400000000040000055 +S315E072B3A00040004000004000400040004000400085 +S315E072B3B040004000400000400000000000400000F5 +S315E072B3C000000000000000000000004000000000E5 +S315E072B3D00040004040004000000000004000400095 +S315E072B3E000404000400140000000400000010000C3 +S315E072B3F000404000004000000100004000010000F3 +S315E072B4000040000000004000000001000040000122 +S315E072B4100040004040000041000000404000000053 +S315E072B4200000000000000040400040000000000004 +S315E072B43000000000000000404000004000000040B4 +S315E072B44040004000355300008000000020200000DC +S315E072B45000200000000020000020202020000000D4 +S315E072B46000002020200000000020202020000000A4 +S315E072B47000002020000000000020202000000000D4 +S315E072B48000002020200000000000202000000000C4 +S315E072B4900000606000000020000040000000000034 +S315E072B4A02020200000000000202020000000004044 +S315E072B4B020200000000000002020000000000000B4 +S315E072B4C00000000000000000000000000000000024 +S315E072B4D04040000000000040404000000000004094 +S315E072B4E04040400000000040404040000000004004 +S315E072B4F04040000000400000000040000000404074 +S315E072B50040000000000040400000000000004040A3 +S315E072B5104000000000004040000000000000404093 +S315E072B52000000000000040400000000000404000C3 +S315E072B53000000000000000000000000000000000B3 +S315E072B54040000000004000000000000040400000A3 +S315E072B5500000000040400000000000004040000093 +S315E072B5600100004040404000010100004040000000 +S315E072B570000100004040000001010000404100006F +S315E072B580004001000000410100004040000001015E +S315E072B5900000404000000100004040000000000151 +S315E072B5A00000404040000000000040400000000003 +S315E072B5B00040404000000000004040410005C100EC +S315E072B5C000000000202000200400000000040000BB +S315E072B5D00000202020200000000020202020010012 +S315E072B5E00800602120280040000020002020000092 +S315E072B5F0000020002020020010008002003000804F +S315E072B600000020002020000000002020000004003E +S315E072B61000004044406000000020006040400000AE +S315E072B6200020002041400800200100080040000090 +S315E072B6302020206000000000004040400200100020 +S315E072B64080424050008000000000000000000000D0 +S315E072B650404040400400200040444060000000004A +S315E072B66040404040000000004040014008000001B8 +S315E072B67000080000000040004040000000000000AA +S315E072B680000002001000804240500080000000007E +S315E072B690000000000000000040400400200040442A +S315E072B6A04060000000000000000000000000404022 +S315E072B6B041000800400100080000000040404000E0 +S315E072B6C0000000000040004002001000804200507E +S315E072B6D00080000000004040010100004000004090 +S315E072B6E00501210100044060000001014040404034 +S315E072B6F001010101000000000800000000080101DC +S315E072B7000101404000000101010140404000030197 +S315E072B7101000C002001000800101000040400000ED +S315E072B72000004040004004002000404440600000B9 +S315E072B730000040400040AABE000000000020200049 +S315E072B7400000000000000000000000002020200041 +S315E072B7500000002020000000000000000000200031 +S315E072B76000000020202020000000002020000000C1 +S315E072B77000000000202020000000000000202000D1 +S315E072B7800000002020200000000000000000000001 +S315E072B79000202060000000000000206040000000F1 +S315E072B7A00000200000000000004040400000000061 +S315E072B7B000400000000000000040000000000000B1 +S315E072B7C000404000000000000000404040000000E1 +S315E072B7D00000400040000000000040004000000011 +S315E072B7E000000040000000000000000000000000C1 +S315E072B7F04000000000000000000000000000004071 +S315E072B80000000000000000000000000000000000E0 +S315E072B81000004000000000004040000000000040D0 +S315E072B8204000000000000000000040000000000040 +S315E072B83000000000000000004000000000404040B0 +S315E072B84040000000004000404000000000000000A0 +S315E072B850400101000000000000010101010000400A +S315E072B860400000010100000000010101010000003A +S315E072B87000000000000000010101014040400001AB +S315E072B88001010140400000010100000000000000DB +S315E072B890000101000040400000000000404000004E +S315E072B8A0000000400040400000000000000000265A +S315E072B8B0050000000000200000000000000000000B +S315E072B8C000000000002020000000000020000020A0 +S315E072B8D00000000020200020000000002000200070 +S315E072B8E00000000020002000000000000020002080 +S315E072B8F000000000200000000000000020000000B0 +S315E072B900000000000000000000002020402000003F +S315E072B91000002000406000000000002020200000AF +S315E072B920000060604020000000004000000000005F +S315E072B930000040000000000000000000000000006F +S315E072B94000004040004000000000404040400000DF +S315E072B950000040404040000000004040404000008F +S315E072B960000000000000000040404040000000007F +S315E072B970404000000000000000004040000000006F +S315E072B98040404040000000000000404000000000DF +S315E072B990404040400000000040404040000000004F +S315E072B9A000000040000000000000000000000000FF +S315E072B9B040000000000040400040000000004000EF +S315E072B9C0004000000000404040400101000040009D +S315E072B9D00040010101014000000000000101000089 +S315E072B9E0000001010101404000400000000000003B +S315E072B9F001010101404000000101010140400000E7 +S315E072BA00010100004000000000000101400000401A +S315E072BA1000000000000000400000000040004040CE +S315E072BA2000000000400000406C12000000000000C0 +S315E072BA30202000000000000000000000000000006E +S315E072BA40200000000000200000000000000000005E +S315E072BA50000000000020200020000000000000200E +S315E072BA60200000000000000000000000000020003E +S315E072BA7020000000000000202000000000000040CE +S315E072BA8040000000200040404000000020000040DE +S315E072BA90400000002020200000000000202060000E +S315E072BAA000000000404040000000000040404000BE +S315E072BAB0000000404000000000000000404000002E +S315E072BAC0000000004000400000000000400040001E +S315E072BAD0000000000000000000000000000000000E +S315E072BAE000000000000000000000400000000000BE +S315E072BAF000000000000000000000000000000000EE +S315E072BB00000000004000000000004040000000001D +S315E072BB10004040404000000000404040000000000D +S315E072BB2000000000000000404000400000000040BD +S315E072BB30404040000000000040404000000000002D +S315E072BB400000400101000000000000010101010057 +S315E072BB500000000000010100000000010101010087 +S315E072BB6040000000000000000001010101404000B9 +S315E072BB7000010101014040000001010000000000E7 +S315E072BB80000000010100004040000000004040401B +S315E072BB90000000000000000000000000000001410B +S315E072BBA04082D60000000000000000200000000085 +S315E072BBB000000000000020000020000000000020CD +S315E072BBC0200000000000202000000000000000209D +S315E072BBD000000000000000000020000000002000CD +S315E072BBE000000000000020000000000000000000DD +S315E072BBF020200000000000004040000000204000CD +S315E072BC0000000000200040400000000000202020DC +S315E072BC1000000000604020000000000040000000CC +S315E072BC2000000000400000000000000040400000FC +S315E072BC30000000004040404000000000000000406C +S315E072BC40000000004040004000000000400040401C +S315E072BC5000000000000000000000404000400000CC +S315E072BC60000000000000000000000000004000003C +S315E072BC7000000000000000000000404000000000EC +S315E072BC8000000000000000000000000040400000DC +S315E072BC90000000000040000000000000000000000C +S315E072BCA0000000400000000040000040000000007C +S315E072BCB0004000400000000000400000000000006C +S315E072BCC0400000400000000000004040000000001C +S315E072BCD0400040400000000000000000000000004C +S315E072BCE0000000000000404000000000000000007C +S315E072BCF000000000000040000000000000000000AC +S315E072BD00404000000000404040400000000000005B +S315E072BD10000000000000004000409ABC00000000F5 +S315E072BD20000020200000000000000000000000007B +S315E072BD30200000000000000000000000000000206B +S315E072BD40200000000000000000000000000000007B +S315E072BD50000000000000000020000000000000006B +S315E072BD60002000000000000000000000000000005B +S315E072BD7000000000002020204000000000000020AB +S315E072BD8000000000002020000000000000000020FB +S315E072BD9020000000000040000000000000004000AB +S315E072BDA0000000000000000000000000004040407B +S315E072BDB0400000000040404000000000004040406B +S315E072BDC0000000000040400000000000000000009B +S315E072BDD0000000000040400000000000000000008B +S315E072BDE0000000000040400000000000000000007B +S315E072BDF000000040400000000000000040400000EB +S315E072BE00000000000040400000000000004000001A +S315E072BE10000000000000000000000040000000008A +S315E072BE20000000000000000000400000000000007A +S315E072BE3000400000000000000000404000000000EA +S315E072BE40000000404000000000004040400000005A +S315E072BE50000000000000000000000000000000008A +S315E072BE60000000000000000000000000000000007A +S315E072BE7040000000000000000040000000000000EA +S315E072BE80404000000000000000400000000000009A +S315E072BE90000000A66500000000000000002000001F +S315E072BEA000000000000000002000002000000000FA +S315E072BEB000200000000000000020000000000000EA +S315E072BEC020000000000000000000000000000000FA +S315E072BED000200000000000002000000000000000CA +S315E072BEE000000000000000000000000000002020BA +S315E072BEF040400000000000004040000000002000CA +S315E072BF0020204000000060406020000000004040B9 +S315E072BF1000000000000040400000000000004040C9 +S315E072BF200000000000004000004000000000000039 +S315E072BF300000000000004000000000000000400029 +S315E072BF404040000000000000000000004040004059 +S315E072BF500000000000400000000000000000004009 +S315E072BF600000000000404000000000004040400039 +S315E072BF7000000000000000000000000040400000E9 +S315E072BF800000000000004040000000000000400099 +S315E072BF9000000000004000000000000000400000C9 +S315E072BFA000004000004000000000404040000000F9 +S315E072BFB00000000000000000000000000000000029 +S315E072BFC000000000000000000000004000000000D9 +S315E072BFD000000000000000000040000000000000C9 +S315E072BFE000000000000000000000000000000000F9 +S315E072BFF00000004000000000000040000000000069 +S315E072C0000000000000000000000040402E6F0000BB +S315E072C01000000000000000000000040000000000C4 +S315E072C0200000200000000000000000000000000098 +S315E072C030012008004000000000000000000000003F +S315E072C04000000000000000000200300080000000E6 +S315E072C05000002020200000000040000040000000A8 +S315E072C06004000040400000000040404040000000F4 +S315E072C07020404040400001000800004000000040BF +S315E072C0804000400000000040404040000000024096 +S315E072C0905040C000000000000000400000000000B8 +S315E072C0A04040400000000400200000000000000054 +S315E072C0B040000000000000000000000001000800DF +S315E072C0C00000000000000000000000000000000018 +S315E072C0D04000000002001000800000000000000036 +S315E072C0E00000000000404000400000000400604094 +S315E072C0F00000000000000000000000000040404028 +S315E072C100400001000800004000000040404000008E +S315E072C11000000000000000000000020050008000F5 +S315E072C12000000040400040000000000000000000F7 +S315E072C1300000040020004000000000000000000043 +S315E072C140000000000000000000000800000000008F +S315E072C1500000000000000000000000000000000087 +S315E072C16002001000800000000000004000000000A5 +S315E072C1700000000000000000040020400000000003 +S315E072C1800000000040B3D100000000000020000073 +S315E072C1900000000400002000000000002000000003 +S315E072C1A0000000002020000000010028204000006E +S315E072C1B000002000002000000000200020000000A7 +S315E072C1C00002003000A00000000020000000000025 +S315E072C1D00000002020000000000440002000000063 +S315E072C1E00000002000000000200020000000000196 +S315E072C1F0200800200000000020000000000000007F +S315E072C2000000000000000002001000800000000044 +S315E072C21000000000000000000000000000000004C2 +S315E072C2204020000000000000400000000000000016 +S315E072C230400000000001000800004000000000001D +S315E072C2404000000000000000004000000002001004 +S315E072C25000C00000000000000000000000000000C6 +S315E072C2600000000000040020000000000000000052 +S315E072C270000000000000400000000001000800001D +S315E072C2800000000040000000000000000000000016 +S315E072C29000000002001000800000000000000000B4 +S315E072C2A00000000000404000000000044020400012 +S315E072C2B00000000000404000000000000040004026 +S315E072C2C0000001080000400000000040004000004D +S315E072C2D00000000000000000000240100080000034 +S315E072C2E00000004000000000000040000040000036 +S315E072C2F00004402000400000000040000000C90831 +S315E072C3000000000000000020000000000400200091 +S315E072C3100000000020000000000000002000000085 +S315E072C320000001000820400000000000002000002C +S315E072C33000000000200000000000020010208000D3 +S315E072C34000000000202000000000000040400000D5 +S315E072C35000000400600000000000202000000000E1 +S315E072C360000000200000000001000800000000004C +S315E072C3700000002000000000000000000000000045 +S315E072C3800200100080000000000000400000000083 +S315E072C3900000404000000000040020400000000061 +S315E072C3A000000040000000000000004000000100B4 +S315E072C3B0080040000000000040000000000000009D +S315E072C3C04000000000000200500080000000000003 +S315E072C3D04040000000000000404000000000040001 +S315E072C3E02000000000000000004000000000000095 +S315E072C3F0004000000100080040000000000000005C +S315E072C4000000000000004000000000000200500042 +S315E072C41080000000000040400000000000000000C4 +S315E072C4200000000004006000000000000000000050 +S315E072C430000000000000000000000100080040005B +S315E072C4400000000000000000000000000040000054 +S315E072C45000000200100080000000000000400000B2 +S315E072C4600000000000000000000004002000000050 +S315E072C470000000000040002E9C000003031C1C60BC +S315E072C4806000000303181C4060002007073838403C +S315E072C49040200007073838C0C020200607303880B1 +S315E072C4A0C021010E0E7070808001210E0E707080B8 +S315E072C4B08001010C0E6070008023031C1CE0E0001A +S315E072C4C00003031C1CE0E000000303181CC0E0003C +S315E072C4D00047473838C0C0200047473838C0C020C8 +S315E072C4E0004607303880C001410E0E707080804180 +S315E072C4F0410E0E7070808041410C0E607000804378 +S315E072C500431C1CE0E0000003431C1CE0E000000357 +S315E072C51043181CC0E0000047473838C0C0000047E7 +S315E072C520473838C0C000000607303880C001010EB7 +S315E072C5300E7070808041010E0E7070808001010C69 +S315E072C5400E6070008043031C1CE0E0000003031CD5 +S315E072C5501CE0E000000343181CC0E00000474738C7 +S315E072C56038C0C0000007073838C0C0000006073080 +S315E072C5703880C001010E0E7070808001010E0E705F +S315E072C58070808041010C0E6070008043031C1CE0D9 +S315E072C590E1000003431C1CE1E100004303181CC1E7 +S315E072C5A0E0000007073838C1C1000007073838C114 +S315E072C5B0C000000607303980C001010E0E7171802D +S315E072C5C08001410E0E7171808001410C0E60710026 +S315E072C5D08043031C1CE1E0000042021C1CE0E00008 +S315E072C5E0000242181CC0E0000006463838C0C0009F +S315E072C5F010E50000000000000000000000000000EE +S315E072C6000000000000002020000000000000002072 +S315E072C6100000202000002020000020000000000022 +S315E072C6200000000000002000000000000000002072 +S315E072C63000000000000000000000000000000000A2 +S315E072C64000000000000000400000000000204040B2 +S315E072C65000000000002040400000000000000000E2 +S315E072C6600000000040400000000000004040000072 +S315E072C67000000000404000000000000040000000A2 +S315E072C6800000000040000000004000004040000052 +S315E072C6900000000040400000004000004000000042 +S315E072C6A000000000000000000000004000004000B2 +S315E072C6B000000000000000000000004000004000A2 +S315E072C6C000000000000000000000000000000040D2 +S315E072C6D000004040000040400000400000000000C2 +S315E072C6E000000000000000000000000000000000F2 +S315E072C6F00000000000000000004000004000000062 +S315E072C700004000004000000000010000000100004F +S315E072C710414100000000000000000000000000003F +S315E072C72001000000000000000100000000000000AF +S315E072C73000000000000000010000000000000000A0 +S315E072C7400000000000004040000041000000004090 +S315E072C7500000000000000000000000400000400001 +S315E072C76000000040000041000004EE0004000008F2 +S315E072C7700000000000004000000000000000000021 +S315E072C7800000000000000000000000000000000051 +S315E072C7900000000000000000000000000000000041 +S315E072C7A02000000000000000000000000000000011 +S315E072C7B0000000000000040000000000000000001D +S315E072C7C000000000000000400000000000000000D1 +S315E072C7D00000000000000000000000000000000001 +S315E072C7E000000000000000000000000000000000F1 +S315E072C7F000000000000000000040000000000000A1 +S315E072C80000000000000000000000000000000000D0 +S315E072C81000000000000000000000000000000000C0 +S315E072C82000000000000000000000000000000000B0 +S315E072C8300000000000000000000000800000000020 +S315E072C8400000000000000000000000000000000090 +S315E072C8500000000000000000000000000000000080 +S315E072C8600000000000000000000000000000000070 +S315E072C8700000000000002000000000000000000040 +S315E072C8800000000000000000000000000000000050 +S315E072C890000000000000000000000000000100003F +S315E072C8A00000000000000000000000000000000030 +S315E072C8B00000080000000000000000000000000018 +S315E072C8C00000000000000000000000000000000010 +S315E072C8D000000000000000400000000000000000C0 +S315E072C8E0000099FA0020000000002000000000001D +S315E072C8F000000000000000000000000000000020C0 +S315E072C900002000000020000000000000202000202F +S315E072C910000020000020000000000000200020003F +S315E072C92000002000000000002010000020000040FF +S315E072C930000000000040000000000020000000003F +S315E072C94040000000600000000000002000200000AF +S315E072C950000000200000000000000000000000005F +S315E072C960000000000000000000000000000000006F +S315E072C97000000000004000000000400000000000DF +S315E072C98000000040000000000040000000000020AF +S315E072C99000000000200000200000000000000000FF +S315E072C9A000400000000000000000000000000000EF +S315E072C9B000000040000000000000000000000000DF +S315E072C9C0000040000000000000400000000000008F +S315E072C9D040000000000000000000000000000000BF +S315E072C9E000004000000000000000000000000000AF +S315E072C9F000000000000000000000000000000000DF +S315E072CA0000000000010000000000000000000000CD +S315E072CA10014000000000000000000000000000007D +S315E072CA20000000000040000100000001000020004C +S315E072CA3000400001000060000000000000000001FC +S315E072CA40000000000000000040004000404000008E +S315E072CA504000004000000000400100346400200005 +S315E072CA60000020000000000000000000000000004E +S315E072CA7000002000002000000020002000000020BE +S315E072CA8000000000200020002000000000000020CE +S315E072CA9000000000000000200000002000000000FE +S315E072CAA0200000000000000000000000000000000E +S315E072CAB000000000000000000000000040200000BE +S315E072CAC0000000000020200000000040200000006E +S315E072CAD000000000000000000000000000000000FE +S315E072CAE000000000000000000000000000000000EE +S315E072CAF0000000400040004000000000004000409E +S315E072CB00000000400000000000000000002000006D +S315E072CB10000000000000400000004000000000003D +S315E072CB2000000000000000000080000040000000ED +S315E072CB30000000000000000000000040000000005D +S315E072CB40000000400000000040000000000000000D +S315E072CB50000000000000000000000000000000007D +S315E072CB60000000000000000000000000000000006D +S315E072CB70000000000000000000000000000100005C +S315E072CB80000000000000000000010000000000004C +S315E072CB900000000000000800000000000000000035 +S315E072CBA0010000000100400000004000010040006A +S315E072CBB0000000000000000001000000000000001C +S315E072CBC0004000404000004040000000400000008D +S315E072CBD0400000003AA700000000000000000000DC +S315E072CBE000200000040000200000000000000000A9 +S315E072CBF00000000000000008000000200000400075 +S315E072CC00000000200000000000000000000020008C +S315E072CC10000000000000000000000000102000008C +S315E072CC2000004000000000400000040020200000E8 +S315E072CC30004000000000000000000000000000401C +S315E072CC40000000000000000000400000000000004C +S315E072CC50000040000000000000000000000000003C +S315E072CC60000000000000000040000000000000002C +S315E072CC70004000000000000000000000000000001C +S315E072CC8000002040000000000000200000000000CC +S315E072CC90000000000000000000000000000000003C +S315E072CCA000000000000000004000000000000000EC +S315E072CCB0000000000000000000000000000000001C +S315E072CCC0000000000000000000000000000000000C +S315E072CCD000000000400000000000000000000000BC +S315E072CCE000000000000000000000000000000000EC +S315E072CCF000000000000000000000000000002000BC +S315E072CD00000000004000004000000000000100004A +S315E072CD10000000000000004000000040000000201B +S315E072CD2000000000000000200000400140000040CA +S315E072CD30000000004000000000000000000000005B +S315E072CD4000000000000000000000000000A8D7000C +S315E072CD50000000000000000000000000000000007B +S315E072CD60000000000000000000000000000000006B +S315E072CD70002000000000000000000000002000001B +S315E072CD80000000000000000000000000000000004B +S315E072CD90000000000000000000000000000000003B +S315E072CDA000004000000000400000000000000000AB +S315E072CDB0000000000000000000000000000000001B +S315E072CDC0000000000000000000000000000000000B +S315E072CDD000000000000000000000004000000000BB +S315E072CDE0000000000000000080000000000000006B +S315E072CDF0000080000000000000000000004000001B +S315E072CE0000000000000000000000000000000000CA +S315E072CE10000000000000000000000000400000007A +S315E072CE2000000000000000000000000000000000AA +S315E072CE30000000000000000000000000000000009A +S315E072CE40000000000000000000000000000000008A +S315E072CE50000000000000000000000000000000007A +S315E072CE600000000000000000010000000000000069 +S315E072CE700000008000000080010000000000000059 +S315E072CE800100000000000000000000000000000049 +S315E072CE9000000000004000004001000000000000B9 +S315E072CEA000000000000000000040000000400000AA +S315E072CEB000000000000040000000000000000000DA +S315E072CEC0000000000000F8D300000000000000003F +S315E072CED000000000000000000000000000000000FA +S315E072CEE000000000000000000000000000000000EA +S315E072CEF000000000000000000000000000000000DA +S315E072CF0000000000000000000000000000000000C9 +S315E072CF1000000000000000000000000000040000B5 +S315E072CF2000000000000000000000000000000000A9 +S315E072CF300000000000000000000000000000000099 +S315E072CF400000000000000040000000000000000049 +S315E072CF500000000000000000000000000000000079 +S315E072CF600000000000000000000000000000000069 +S315E072CF700000000000000000000000000000000059 +S315E072CF800000000000000000000000000000000049 +S315E072CF900000000000000000000000000000000039 +S315E072CFA00000000000000000000000000000000029 +S315E072CFB00000000000000000000000008000000099 +S315E072CFC000000040000000000000000000000000C9 +S315E072CFD000000000000040000000000000000000B9 +S315E072CFE08000000000000000000000000000000069 +S315E072CFF000000000000000000000000000000000D9 +S315E072D00000000000000000000000000000000000C8 +S315E072D01000000000000000000000000000000000B8 +S315E072D02000000000000000000000000000000000A8 +S315E072D0300000000000000000000800000000000B85 +S315E072D040DE000000000000000000000000000000AA +S315E072D0500000000000000000000000000000000078 +S315E072D0600000002000000000000000000000000048 +S315E072D0700000000000000000000000000000000058 +S315E072D0800000000000000000000000000000000048 +S315E072D09000000000400000000000000000000000F8 +S315E072D0A00000000000000000000000000000000028 +S315E072D0B00000000000000000000000000000000018 +S315E072D0C000400000000000000000000000000000C8 +S315E072D0D00000000000000000000080000000000078 +S315E072D0E000000000000000000000000000000040A8 +S315E072D0F000000000000000000000000000000000D8 +S315E072D10000000000000000000000000000000000C7 +S315E072D11000000000000000000000000000000000B7 +S315E072D12000000000000000000000000000000000A7 +S315E072D1300000000000000000000000000040000057 +S315E072D1400000000000000000000000000000400047 +S315E072D1500000000000000000000001000000000076 +S315E072D16000000000000000008000000100000000E6 +S315E072D1700000000100000000000000000000000056 +S315E072D1800000000000004000000001000000000006 +S315E072D19000000000000000000000004000000000F7 +S315E072D1A000000000000000004000000000000000E7 +S315E072D1B0000000000000000054A90000000000001A +S315E072D1C00000000000000000000000000000000007 +S315E072D1D000000000000000200000000000000000D7 +S315E072D1E000000000000000000000000000000000E7 +S315E072D1F000000000002000000000000000000000B7 +S315E072D2000000004000000000000000000000000086 +S315E072D2100000002000000000200000000000000076 +S315E072D22000000000000000000000000000000000A6 +S315E072D2300000000000000000000000000040000056 +S315E072D2400000000000000000000000000000400046 +S315E072D2500000404000400000000000004000000076 +S315E072D26000804000000000000000000000000000A6 +S315E072D2700000000000000000004000000000000016 +S315E072D2800000000000000100000040000000000005 +S315E072D29000000000000000004000000000000000F6 +S315E072D2A000400000000000000000000000000000E6 +S315E072D2B00000000000000000000000000000000016 +S315E072D2C000000000000000000000004000000000C6 +S315E072D2D00000000000400000004000000040000036 +S315E072D2E00000000000400000000000000000004066 +S315E072D2F00040000000000000000000000000000096 +S315E072D3000000000000000000400000004000000045 +S315E072D31000000000004000000000404000000000F5 +S315E072D3200000000000004000000000000000000065 +S315E072D3300054EB0000000000000000000000000056 +S315E072D3400000000000000000000000000000000085 +S315E072D3500000000000000000000000000000000075 +S315E072D3600000000000000000000000000000002045 +S315E072D3700000000000000000000000000000000055 +S315E072D3800000000000000000000000000000000045 +S315E072D3900000000000000000000000000000000035 +S315E072D3A00000000000000000000000000000000025 +S315E072D3B000000000000040000000000000000000D5 +S315E072D3C00000000000000000000000000000000005 +S315E072D3D000000000000000000000000000000000F5 +S315E072D3E000000000000000000000000000000000E5 +S315E072D3F000000000000000000000000000000000D5 +S315E072D4000000004000000000000000000000000084 +S315E072D41000000000000000000000000000000000B4 +S315E072D42000000000000000000000000000000000A4 +S315E072D4304000000000000000000000000000000054 +S315E072D4400000000000400000000000000000000044 +S315E072D4500000000000000000000000000000400034 +S315E072D4600000000000000000004000000000000024 +S315E072D4700000000000000000000000000000000054 +S315E072D4800000000000000000004000000000000004 +S315E072D4900000000000000000000000000000000034 +S315E072D4A00000000000000000000044A6000000003A +S315E072D4B00000000000000000000000000000000014 +S315E072D4C000000000000000000000200000000000E4 +S315E072D4D000000000000000000000000000000000F4 +S315E072D4E000000000000000000000000000000000E4 +S315E072D4F000000000000000000000000000000000D4 +S315E072D50000000000000000000020000000000000A3 +S315E072D5100000000000000000002000000000000093 +S315E072D52000000000000000000000000000000000A3 +S315E072D5300000000000000000000000000000000093 +S315E072D5404000000040400040000000000040000043 +S315E072D5500000004000000000000000000000000033 +S315E072D5600000000000000000000000400000000023 +S315E072D5700000000000000000000000000000000053 +S315E072D5800000000000000000000040000000000003 +S315E072D59000000040000000000000000000000000F3 +S315E072D5A00000000000000000000000000000000023 +S315E072D5B00000000000000000000000000000000013 +S315E072D5C000000000000000004000000000000000C3 +S315E072D5D040000000000000000000000000000000B3 +S315E072D5E000000000400000000000000000000000A3 +S315E072D5F00000000000000000000000000000400093 +S315E072D6000000000000000040000000000000400042 +S315E072D6100000000000000040000000000000000072 +S315E072D620000000ABCF000000000000000000000028 +S315E072D6300000000000000000000000000000000092 +S315E072D6400000000000000000000000000000000082 +S315E072D6500000000000000000000000000000000072 +S315E072D6600000000000000000000000200000400002 +S315E072D6700000000000000000000000000000002032 +S315E072D6800000000000000000000000000000000042 +S315E072D6900000000000000000000000000000000032 +S315E072D6A00000000000000000000000000000000022 +S315E072D6B00000000000000000000000000000000012 +S315E072D6C00000000000000000000000008000000082 +S315E072D6D000000000000000000000000000000000F2 +S315E072D6E000000000000000000000000000000000E2 +S315E072D6F000010000000000000000000000000000D1 +S315E072D70000000000000000000000000000000000C1 +S315E072D71000000000000000000000000000000000B1 +S315E072D72000000000000000000000000000000000A1 +S315E072D7300000000000000000000000000000000091 +S315E072D7400000000000400000000000000000000041 +S315E072D7500000000000000000000000000000000071 +S315E072D7600000000000000000000000000000000061 +S315E072D7700000004000000000000000000000000011 +S315E072D7800000000040000000000000000000000001 +S315E072D790000000000000000000000000B29C0000E3 +S315E072D7A00000000000000000000000000000000021 +S315E072D7B00000000000000000000000000000000011 +S315E072D7C00000000000000000000000000000000001 +S315E072D7D000000000000000000000000000000000F1 +S315E072D7E000000000000000000000000000000000E1 +S315E072D7F000000000000000000000000000000000D1 +S315E072D80000000000000000000000000000000000C0 +S315E072D81000000000000000000000000000000000B0 +S315E072D82000000000000000000000000000000000A0 +S315E072D8300000000000000000000000000000000090 +S315E072D8400000000000000000000000000000000080 +S315E072D8500000000000000000000000000000000070 +S315E072D8600000000000000000000000000000000060 +S315E072D8700000000000000000000000000000000050 +S315E072D8800000000000000000000000000000000040 +S315E072D8900000000000000000000000000000000030 +S315E072D8A00000000000000000000000000000000020 +S315E072D8B00000000000000000000000000000000010 +S315E072D8C00000000000000000000000000000000000 +S315E072D8D000000000000000000000000000000000F0 +S315E072D8E000000000000000000000000000000000E0 +S315E072D8F000000000000000000000000000000000D0 +S315E072D90000000000000000000000000000000000BF +S315E072D91000000000003E4900000000000000000028 +S315E072D920000000000000000000000000000000009F +S315E072D930000000000000000000000000000000008F +S315E072D940000000000000000000000000000000007F +S315E072D950000000000000000000000000000000006F +S315E072D960000000000000000000000000000000005F +S315E072D970000000000000000000000000000000004F +S315E072D980000000000000000000000000000000003F +S315E072D990000000000000000000000000000000002F +S315E072D9A0000000000000000000000000000000001F +S315E072D9B0000000000000000000000000000000000F +S315E072D9C000000000000000000000000000000000FF +S315E072D9D000000000000000000000000000000000EF +S315E072D9E000000000000000000000000000000000DF +S315E072D9F000000000000000000000000000000000CF +S315E072DA0000000000000000000000000000000000BE +S315E072DA1000000000000000000000000000000000AE +S315E072DA20000000000000000000000000000000009E +S315E072DA30000000000000000000000000000000008E +S315E072DA40000000000000000000000000000000007E +S315E072DA50000000000000000000000000000000006E +S315E072DA60000000000000000000000000000000005E +S315E072DA70000000000000000000000000000000004E +S315E072DA8000000000000000000000000000003E49B7 +S315E072DA90000000000000000000000000000000002E +S315E072DAA0000000000000000000000000000000001E +S315E072DAB0000000000000000000000000000000000E +S315E072DAC000000000000000000000000000000000FE +S315E072DAD000000000000000000000000000000000EE +S315E072DAE000000000000000000000000000000000DE +S315E072DAF000000000000000000000000000000000CE +S315E072DB0000000000000000000000000000000000BD +S315E072DB1000000000000000000000000000000000AD +S315E072DB20000000000000000000000000000000009D +S315E072DB30000000000000000000000000000000008D +S315E072DB40000000000000000000000000000000007D +S315E072DB50000000000000000000000000000000006D +S315E072DB60000000000000000000000000000000005D +S315E072DB70000000000000000000000000000000004D +S315E072DB80000000000000000000000000000000003D +S315E072DB90000000000000000000000000000000002D +S315E072DBA0000000000000000000000000000000001D +S315E072DBB0000000000000000000000000000000000D +S315E072DBC000000000000000000000000000000000FD +S315E072DBD000000000000000000000000000000000ED +S315E072DBE000000000000000000000000000000000DD +S315E072DBF000000000000000000000000000000000CD +S315E072DC00000000000000003E490000000000000035 +S315E072DC1000000000000000000000000000000000AC +S315E072DC20000000000000000000000000000000009C +S315E072DC30000000000000000000000000000000008C +S315E072DC40000000000000000000000000000000007C +S315E072DC50000000000000000000000000000000006C +S315E072DC60000000000000000000000000000000005C +S315E072DC70000000000000000000000000000000004C +S315E072DC80000000000000000000000000000000003C +S315E072DC90000000000000000000000000000000002C +S315E072DCA0000000000000000000000000000000001C +S315E072DCB0000000000000000000000000000000000C +S315E072DCC000000000000000000000000000000000FC +S315E072DCD000000000000000000000000000000000EC +S315E072DCE000000000000000000000000000000000DC +S315E072DCF000000000000000000000000000000000CC +S315E072DD0000000000000000000000000000000000BB +S315E072DD1000000000000000000000000000000000AB +S315E072DD20000000000000000000000000000000009B +S315E072DD30000000000000000000000000000000008B +S315E072DD40000000000000000000000000000000007B +S315E072DD50000000000000000000000000000000006B +S315E072DD60000000000000000000000000000000005B +S315E072DD70000000000000000000000000000000004B +S315E072DD803E490000000000000000000000000000B4 +S315E072DD90000000000000000000000000000000002B +S315E072DDA0000000000000000000000000000000001B +S315E072DDB0000000000000000000000000000000000B +S315E072DDC000000000000000000000000000000000FB +S315E072DDD000000000000000000000000000000000EB +S315E072DDE000000000000000000000000000000000DB +S315E072DDF000000000000000000000000000000000CB +S315E072DE0000000000000000000000000000000000BA +S315E072DE1000000000000000000000000000000000AA +S315E072DE20000000000000000000000000000000009A +S315E072DE30000000000000000000000000000000008A +S315E072DE40000000000000000000000000000000007A +S315E072DE50000000000000000000000000000000006A +S315E072DE60000000000000000000000000000000005A +S315E072DE70000000000000000000000000000000004A +S315E072DE80000000000000000000000000000000003A +S315E072DE90000000000000000000000000000000002A +S315E072DEA0000000000000000000000000000000001A +S315E072DEB0000000000000000000000000000000000A +S315E072DEC000000000000000000000000000000000FA +S315E072DED000000000000000000000000000000000EA +S315E072DEE000000000000000000000000000000000DA +S315E072DEF00000000000000000003E49000000000043 +S315E072DF0000000000000000000000000000000000B9 +S315E072DF1000000000000000000000000000000000A9 +S315E072DF200000000000000000000000000000000099 +S315E072DF300000000000000000000000000000000089 +S315E072DF400000000000000000000000000000000079 +S315E072DF500000000000000000000000000000000069 +S315E072DF600000000000000000000000000000000059 +S315E072DF700000000000000000000000000000000049 +S315E072DF800000000000000000000000000000000039 +S315E072DF900000000000000000000000000000000029 +S315E072DFA00000000000000000000000000000000019 +S315E072DFB00000000000000000000000000000000009 +S315E072DFC000000000000000000000000000000000F9 +S315E072DFD000000000000000000000000000000000E9 +S315E072DFE000000000000000000000000000000000D9 +S315E072DFF000000000000000000000000000000000C9 +S315E072E00000000000000000000000000000000000B8 +S315E072E01000000000000000000000000000000000A8 +S315E072E0200000000000000000000000000000000098 +S315E072E0300000000000000000000000000000000088 +S315E072E0400000000000000000000000000000000078 +S315E072E0500000000000000000000000000000000068 +S315E072E0600000000000000000000000000000000058 +S315E072E07000003E49000000000000000000000000C1 +S315E072E0800000000000000000000000000000000038 +S315E072E0900000000000000000000000000000000028 +S315E072E0A00000000000000000000000000000000018 +S315E072E0B00000000000000000000000000000000008 +S315E072E0C000000000000000000000000000000000F8 +S315E072E0D000000000000000000000000000000000E8 +S315E072E0E000000000000000000000000000000000D8 +S315E072E0F000000000000000000000000000000000C8 +S315E072E10000000000000000000000000000000000B7 +S315E072E11000000000000000000000000000000000A7 +S315E072E1200000000000000000000000000000000097 +S315E072E1300000000000000000000000000000000087 +S315E072E1400000000000000000000000000000000077 +S315E072E1500000000000000000000000000000000067 +S315E072E1600000000000000000000000000000000057 +S315E072E1700000000000000000000000000000000047 +S315E072E1800000000000000000000000000000000037 +S315E072E1900000000000000000000000000000000027 +S315E072E1A00000000000000000000000000000000017 +S315E072E1B00000000000000000000000000000000007 +S315E072E1C000000000000000000000000000000000F7 +S315E072E1D000000000000000000000000000000000E7 +S315E072E1E000000000000000000000003E4900000050 +S315E072E1F000000000000000000000000000000000C7 +S315E072E20000000000000000000000000000000000B6 +S315E072E21000000000000000000000000000000000A6 +S315E072E2200000000000000000000000000000000096 +S315E072E2300000000000000000000000000000000086 +S315E072E2400000000000000000000000000000000076 +S315E072E2500000000000000000000000000000000066 +S315E072E2600000000000000000000000000000000056 +S315E072E2700000000000000000000000000000000046 +S315E072E2800000000000000000000000000000000036 +S315E072E2900000000000000000000000000000000026 +S315E072E2A00000000000000000000000000000000016 +S315E072E2B00000000000000000000000000000000006 +S315E072E2C000000000000000000000000000000000F6 +S315E072E2D000000000000000000000000000000000E6 +S315E072E2E000000000000000000000000000000000D6 +S315E072E2F000000000000000000000000000000000C6 +S315E072E30000000000000000000000000000000000B5 +S315E072E31000000000000000000000000000000000A5 +S315E072E3200000000000000000000000000000000095 +S315E072E3300000000000000000000000000000000085 +S315E072E3400000000000000000000000000000000075 +S315E072E3500000000000000000000000000000000065 +S315E072E360000000003E4900000000000000000000CE +S315E072E3700000000000000000000000000000000045 +S315E072E3800000000000000000000000000000000035 +S315E072E3900000000000000000000000000000000025 +S315E072E3A00000000000000000000000000000000015 +S315E072E3B00000000000000000000000000000000005 +S315E072E3C000000000000000000000000000000000F5 +S315E072E3D000000000000000000000000000000000E5 +S315E072E3E000000000000000000000000000000000D5 +S315E072E3F000000000000000000000000000000000C5 +S315E072E40000000000000000000000000000000000B4 +S315E072E41000000000000000000000000000000000A4 +S315E072E4200000000000000000000000000000000094 +S315E072E4300000000000000000000000000000000084 +S315E072E4400000000000000000000000000000000074 +S315E072E4500000000000000000000000000000000064 +S315E072E4600000000000000000000000000000000054 +S315E072E4700000000000000000000000000000000044 +S315E072E4800000000000000000000000000000000034 +S315E072E4900000000000000000000000000000000024 +S315E072E4A00000000000000000000000000000000014 +S315E072E4B00000000000000000000000000000000004 +S315E072E4C000000000000000000000000000000000F4 +S315E072E4D0000000000000000000000000003E49005D +S315E072E4E000000000000000000004002000000000B0 +S315E072E4F000000000000000000000000000000001C3 +S315E072E500000800400000000000000000000000006B +S315E072E5100000000000000002001000800000000011 +S315E072E520000000000000000000000000000000048F +S315E072E5300020000000000000000000000000000063 +S315E072E540000000000001000800400000000000002A +S315E072E5500000000000000000000000000002001051 +S315E072E56000800000000000000000000000000000D3 +S315E072E570000000000004002000000000000000001F +S315E072E58000000000000000000000000100080040EA +S315E072E5900000000000000000000000000000000023 +S315E072E5A00000000200100080000000000000000081 +S315E072E5B000000000000000000000000400200000DF +S315E072E5C000000000000000000000000000000000F3 +S315E072E5D0000100080040000000000000000000009A +S315E072E5E00000000000000000000200100080000041 +S315E072E5F000000000000000000000000000000000C3 +S315E072E600000400200000000000000000000000008E +S315E072E6100000000000000001000800400000000059 +S315E072E6200000000000000000000000000000000290 +S315E072E63000100080000000000000000000000000F2 +S315E072E640000000000000000400200000000000004E +S315E072E650000000000000B181000000000000000030 +S315E072E6600000000000000000000000000000000052 +S315E072E6700000000000000000000000000000000042 +S315E072E6800000000000000000000000000000000032 +S315E072E6900000000000000000000000000000000022 +S315E072E6A00000000000000000000000000000000012 +S315E072E6B00000000000000000000000000000000002 +S315E072E6C000000000000000000000000000000000F2 +S315E072E6D000000000000000000000000000000000E2 +S315E072E6E000000000000000000000000000000000D2 +S315E072E6F000000000000000000000000000000000C2 +S315E072E70000000000000000000000000000000000B1 +S315E072E71000000000000000000000000000000000A1 +S315E072E7200000000000000000000000000000000091 +S315E072E7300000000000000000000000000000000081 +S315E072E7400000000000000000000000000000000071 +S315E072E7500000000000000000000000000000000061 +S315E072E7600000000000000000000000000000000051 +S315E072E7700000000000000000000000000000000041 +S315E072E7800000000000000000000000000000000031 +S315E072E7900000000000000000000000000000000021 +S315E072E7A00000000000000000000000000000000011 +S315E072E7B00000000000000000000000000000000001 +S315E072E7C00000000000000000000000000000003EB3 +S315E072E7D04900000000000000000000000000000098 +S315E072E7E000000000000000000000000000000000D1 +S315E072E7F000000000000000000000000000000000C1 +S315E072E80000000000000000000000000000000000B0 +S315E072E81000000000000000000000000000000000A0 +S315E072E8200000000000000000000000000000000090 +S315E072E8300000000000000000000000000000000080 +S315E072E8400000000000000000000000000000000070 +S315E072E8500000000000000000000000000000000060 +S315E072E8600000000000000000000000000000000050 +S315E072E8700000000000000000000000000000000040 +S315E072E8800000000000000000000000000000000030 +S315E072E8900000000000000000000000000000000020 +S315E072E8A00000000000000000000000000000000010 +S315E072E8B00000000000000000000000000000000000 +S315E072E8C000000000000000000000000000000000F0 +S315E072E8D000000000000000000000000000000000E0 +S315E072E8E000000000000000000000000000000000D0 +S315E072E8F000000000000000000000000000000000C0 +S315E072E90000000000000000000000000000000000AF +S315E072E910000000000000000000000000000000009F +S315E072E920000000000000000000000000000000008F +S315E072E930000000000000000000000000000000007F +S315E072E94000000000000000003E49000000000000E8 +S315E072E950000000000000000000000000000000005F +S315E072E960000000000000000000000000000000004F +S315E072E970000000000000000000000000000000003F +S315E072E980000000000000000000000000000000002F +S315E072E990000000000000000000000000000000001F +S315E072E9A0000000000000000000000000000000000F +S315E072E9B000000000000000000000000000000000FF +S315E072E9C000000000000000000000000000000000EF +S315E072E9D000000000000000000000000000000000DF +S315E072E9E000000000000000000000000000000000CF +S315E072E9F000000000000000000000000000000000BF +S315E072EA0000000000000000000000000000000000AE +S315E072EA10000000000000000000000000000000009E +S315E072EA20000000000000000000000000000000008E +S315E072EA30000000000000000000000000000000007E +S315E072EA40000000000000000000000000000000006E +S315E072EA50000000000000000000000000000000005E +S315E072EA60000000000000000000000000000000004E +S315E072EA70000000000000000000000000000000003E +S315E072EA80000000000000000000000000000000002E +S315E072EA90000000000000000000000000000000001E +S315E072EAA0000000000000000000000000000000000E +S315E072EAB000000000000000000000000000000000FE +S315E072EAC0003E490000000000000000000000000067 +S315E072EAD000000000000000000000000000000000DE +S315E072EAE000000000000000000000000000000000CE +S315E072EAF000000000000000000000000000000000BE +S315E072EB0000000000000000000000000000000000AD +S315E072EB10000000000000000000000000000000009D +S315E072EB20000000000000000000000000000000008D +S315E072EB30000000000000000000000000000000007D +S315E072EB40000000000000000000000000000000006D +S315E072EB50000000000000000000000000000000005D +S315E072EB60000000000000000000000000000000004D +S315E072EB70000000000000000000000000000000003D +S315E072EB80000000000000000000000000000000002D +S315E072EB90000000000000000000000000000000001D +S315E072EBA0000000000000000000000000000000000D +S315E072EBB000000000000000000000000000000000FD +S315E072EBC000000000000000000000000000000000ED +S315E072EBD000000000000000000000000000000000DD +S315E072EBE000000000000000000000000000000000CD +S315E072EBF000000000000000000000000000000000BD +S315E072EC0000000000000000000000000000000000AC +S315E072EC10000000000000000000000000000000009C +S315E072EC20000000000000000000000000000000008C +S315E072EC30000000000000000000003E4900000000F5 +S315E072EC40000000000000000000000000000000006C +S315E072EC50000000000000000000000000000000005C +S315E072EC60000000000000000000008000000000804C +S315E072EC70000000000000000000000000000000003C +S315E072EC800000000000000800000000000000000024 +S315E072EC90000000000000000000000000000000001C +S315E072ECA0000000000000000000000000000000000C +S315E072ECB000000040000000000000000000000000BC +S315E072ECC000000000000000000000002000000000CC +S315E072ECD0000000000000000000000000000080005C +S315E072ECE000000000000000000000000000000004C8 +S315E072ECF000000000000000000000000000000000BC +S315E072ED0000000000000000000000000000000000AB +S315E072ED10000000000000000000000000000000009B +S315E072ED20000000000000000000400000000000004B +S315E072ED30000000000000000000000000000000007B +S315E072ED40000000000000000000000000000000006B +S315E072ED50000000000000200000000000000000003B +S315E072ED60000000000000000000000000000000004B +S315E072ED70000000000000000000000000000000003B +S315E072ED8000000000000000800000000000000000AB +S315E072ED90000000000000000000000000000000001B +S315E072EDA000000000000000000000100000020000F9 +S315E072EDB00000000AB400000000000000000000003D +S315E072EDC000000000000000000000000000000000EB +S315E072EDD000000000000000000000000000000000DB +S315E072EDE000000000000000000000000000000000CB +S315E072EDF000000000000000000000000000000000BB +S315E072EE0000000000000000400000004000000040EA +S315E072EE10000000000000000000000000000000009A +S315E072EE20000000000000400000000000000000004A +S315E072EE3000004000000000400000400000000000BA +S315E072EE40000000000000000000000000000000006A +S315E072EE50000000000000000000000000004000001A +S315E072EE60000000000000000000000000000000004A +S315E072EE70000000000000000000000000000000003A +S315E072EE80000000000000000000000000000000002A +S315E072EE9000000000000040000000000000000000DA +S315E072EEA0000000000000000000000000000000000A +S315E072EEB000000000000000000000000000000000FA +S315E072EEC000000000000000000000000000000000EA +S315E072EED000000000000000000000000000000000DA +S315E072EEE000000000000000000000000000000000CA +S315E072EEF000000000000000000000000000000000BA +S315E072EF0000000000000000000000000000000000A9 +S315E072EF100000000000000000000000400000000059 +S315E072EF200000000000000000000000006A770000A8 +S315E072EF300000000000000000000000000000000079 +S315E072EF400000000000000000000000000000000069 +S315E072EF500000000000000000000000000000000059 +S315E072EF600000000000000000000000000000000049 +S315E072EF700000000001000000000000000000000038 +S315E072EF800000000000000000000000000000000029 +S315E072EF9000000000000000400000000000000000D9 +S315E072EFA00000000000000000000000000000000009 +S315E072EFB04000000080000000000000000000000039 +S315E072EFC000000004000000000000000000000000E5 +S315E072EFD000000000000000000000000000000000D9 +S315E072EFE000000000000000000000000000000000C9 +S315E072EFF000000000000000000000000000000000B9 +S315E072F00000000000000000000000000000000000A8 +S315E072F0100000000000000000000000000000000098 +S315E072F0200000000000000000000000000000000088 +S315E072F0300000000000000000000000000000000078 +S315E072F0400000000000000000000000000000000068 +S315E072F0500000000000000000000000000000000058 +S315E072F0600000000000000000000000000000000048 +S315E072F0700000000000000000000000000002000036 +S315E072F0800000000010000000000000000000000018 +S315E072F0900000000000000000000000000000000018 +S315E072F0A00000000000C4B200000000000000000092 +S315E072F0B000000000000000000000000000000000F8 +S315E072F0C000000000000000000000000000000000E8 +S315E072F0D000000000000000000000000000000000D8 +S315E072F0E000008000000000800000000000000000C8 +S315E072F0F00000000000000000004000000040000038 +S315E072F100004000000000000000000000002008003F +S315E072F1100000000000000000400000000000000057 +S315E072F1200000000040000000000000004000000007 +S315E072F1300000000000000000000000000000000077 +S315E072F1400000002000000000000000000000004007 +S315E072F1500000000000000000000000000000000057 +S315E072F1600000000000000000000000000000000047 +S315E072F1700000000000000000000000000000000037 +S315E072F18000000000000000004000000000000000E7 +S315E072F1900000000000000000000000000000000017 +S315E072F1A000500000000000000000000000000000B7 +S315E072F1B000000000000000000000000000000000F7 +S315E072F1C000000000000000000000200000000000C7 +S315E072F1D000000000000001000000000000000000D6 +S315E072F1E00000000000000000000040000000000087 +S315E072F1F00000000000000000000000000000008037 +S315E072F2000000000000000000000000000040000066 +S315E072F21000000000000000000000000000005454EE +S315E072F2200000002000002000000000200000000026 +S315E072F2300000000024000020000000000000000032 +S315E072F2400000000000200020000000000000000026 +S315E072F2502000000000000000000000000000000036 +S315E072F2600000000000000000000000000000040042 +S315E072F27000400000000000000000000000000040B6 +S315E072F2800000000000000000804000000000000066 +S315E072F29000000000000040000000000000000000D6 +S315E072F2A00000000000000000000000400000400086 +S315E072F2B000000000000000000000004000000000B6 +S315E072F2C00000000000000000400000000000004066 +S315E072F2D000000000000000000000000000000000D6 +S315E072F2E000000000000000000000000000000000C6 +S315E072F2F000000000000000000000000000000000B6 +S315E072F300000000000000000000000000000800009D +S315E072F3100000000000000000800000000000000015 +S315E072F3200000000000000000000000000000000085 +S315E072F33000000080000000000000000000000000F5 +S315E072F3400000000000000000000000000000000065 +S315E072F3500000004000000000000000000000000015 +S315E072F3600000000000000000000000000000000045 +S315E072F37000800000000000000000000000000000B5 +S315E072F38000004000004000000000000000000000A5 +S315E072F39000000000000000F0D00020808000000035 +S315E072F3A000000000000000000020000000000000E5 +S315E072F3B00000000000004000002000000000000095 +S315E072F3C000000000002000000000000000000000C5 +S315E072F3D000000000000000000000000000000000D5 +S315E072F3E000000000000000000000000000000020A5 +S315E072F3F000000800000000000000000000000000AD +S315E072F400000000000040000000000000080020003C +S315E072F410000000400000000048000040004000008C +S315E072F4204000000000800020000000000000400064 +S315E072F43000400000000000000040000000000000F4 +S315E072F4400000400040000000000000000040400064 +S315E072F4504000000000000000000000000000000014 +S315E072F4600000000000000000000000000000000044 +S315E072F47000000000004000000000000000000000F4 +S315E072F4800000000000000000000000000000000024 +S315E072F4900000000000000000000000000000000014 +S315E072F4A00000000000000000000000000000000004 +S315E072F4B000000000000000008040000800000040EC +S315E072F4C00000000000000000800000000010000054 +S315E072F4D000000000000000000000000000000000D4 +S315E072F4E00000000000004000000000000000004044 +S315E072F4F00000000000004000004000000000000034 +S315E072F5000000000000000001000000400001014020 +S315E072F510CC4D00200000000000000000000000005A +S315E072F5200000200000002000000000000000000043 +S315E072F5300000200000000020000000000000000033 +S315E072F5400000200000000000000000000000000043 +S315E072F550000000000000000000000000000000044F +S315E072F5600000000000000000200000000000000023 +S315E072F57000004000000000000000000000004000B3 +S315E072F580000000000000080040000000400000009B +S315E072F59000004840004000000000400000004000CB +S315E072F5A06000000000000000000040000040000023 +S315E072F5B00000400000000000000000400040000033 +S315E072F5C00000000000004000404000000000000023 +S315E072F5D000000000000000000000000000000000D3 +S315E072F5E000000000000000000000000000000000C3 +S315E072F5F000000000000000000000000000000000B3 +S315E072F60000000000000000000000000000000000A2 +S315E072F6100000000000000000000000000000100082 +S315E072F6200000000000000000000000000000000082 +S315E072F6300040800000000000400000000000000072 +S315E072F640000000000010400000000008000000000A +S315E072F6504000000000000000000000000000000012 +S315E072F6600000000000000000400000000000000002 +S315E072F6704000400040000040000000000000000032 +S315E072F68000000000400000400083A10080000000FE +S315E072F69000400000000000000000000000200000B2 +S315E072F6A000000000000000000020000000002000C2 +S315E072F6B000000000200000000020000000000000B2 +S315E072F6C000000000000000000000000000000000E2 +S315E072F6D00000000000000000000000400000000092 +S315E072F6E000000000000000000000000000000000C2 +S315E072F6F000000000000000000000000000000000B2 +S315E072F7000000000000000000000000004000400021 +S315E072F7100000000000000000000000000040004011 +S315E072F7200000000000004000004040000000004081 +S315E072F7300040000000000000000000000000000031 +S315E072F7400000000000000000000000000000000061 +S315E072F75000400000400000040000000000000000CD +S315E072F7600000000000000000400000000000000001 +S315E072F77000000000000000000040000000000000F1 +S315E072F7800000000000000000000000000000000021 +S315E072F7900000000000000000000000000000000011 +S315E072F7A000000000000000002000000000000000E1 +S315E072F7B000000000004000000000000000000000B1 +S315E072F7C000000000000000000000000000400000A1 +S315E072F7D00000000000000000000000400000000091 +S315E072F7E000000000000000000000000000000000C1 +S315E072F7F000000000000000000000000000000000B1 +S315E072F80000008E18000020000000000000002000BA +S315E072F8100000000000000000000000000020000070 +S315E072F8200000000000000000200000000020000040 +S315E072F8300000200000000000000000400000000010 +S315E072F8400000000000000000000000000000000060 +S315E072F8500000000000000000000000000000000050 +S315E072F8600000000000000000000000000000000040 +S315E072F8700000000000000000000000000000000030 +S315E072F88000000000000040400000000000000000A0 +S315E072F8900000000000000000000000000000000010 +S315E072F8A00000400040000000000000004000000040 +S315E072F8B000000000000000000000000000000000F0 +S315E072F8C000000000000000000000000000000000E0 +S315E072F8D00000000000000000000000400000000090 +S315E072F8E00040000000000000000000000000000080 +S315E072F8F000000000000000000000000000000000B0 +S315E072F900000000000000000000000000000000009F +S315E072F910000000000000000000000000000000008F +S315E072F9200000000000000000000000004800100027 +S315E072F930000000000000000000000000000000006F +S315E072F940000000000040000000000000000010000F +S315E072F9500000000008000000000000000000000047 +S315E072F960000000000000000000000000000000003F +S315E072F97000000040000000000000003D350000007D +S315E072F980000000000000000000000000000000001F +S315E072F990000000000000000000000000000000000F +S315E072F9A000000000000000000000000000000000FF +S315E072F9B000000000000000000000000000000000EF +S315E072F9C000000020000000000000000000000000BF +S315E072F9D000000000040020000000000000000000AB +S315E072F9E000000000000000000000000000000000BF +S315E072F9F000000000000000000000000000000000AF +S315E072FA00000000004000000000000000000000401E +S315E072FA10000000000000000000000000000000008E +S315E072FA20000000000000000000000000000000007E +S315E072FA30000000000000004000000000000000002E +S315E072FA4000004000000040000000000000000000DE +S315E072FA50000000000000400000000000000000000E +S315E072FA60000000000000000000000000000000003E +S315E072FA70000000000000000000000000000000002E +S315E072FA80000000000000000000000000000000001E +S315E072FA90000000000000000000000000000000000E +S315E072FAA000000000000000400000000000000000BE +S315E072FAB000000000000000000000000000000000EE +S315E072FAC000000000000000000000000000000000DE +S315E072FAD000000000000000000000000000000000CE +S315E072FAE000000000000000000000000000000000BE +S315E072FAF000000000D75000000080000040000000C7 +S315E072FB00000000000000000020000000000000007D +S315E072FB10000000200000000000000000000000006D +S315E072FB20000000000000000000000000000000007D +S315E072FB30000000000000000000000000000000006D +S315E072FB4000004000004000000000000000000000DD +S315E072FB500000000800004000000000000000000005 +S315E072FB60200000000000000000000000000000001D +S315E072FB70000000000000000000000000000000002D +S315E072FB8000000000000000000000400000000000DD +S315E072FB90004000000000000040400000400000000D +S315E072FBA000000000000000000000000000000000FD +S315E072FBB000000000000000000000000000000000ED +S315E072FBC000040000000000000000000000000000D9 +S315E072FBD000000000000000000000000000000000CD +S315E072FBE0000000400000000000000000000000007D +S315E072FBF000000000000000000000000000000000AD +S315E072FC00000000000000000000000000000000009C +S315E072FC10000000002000000000000000000000006C +S315E072FC20000000000000000000000000000000007C +S315E072FC30000000000000000000000000000000006C +S315E072FC40000000000000400000000000000000001C +S315E072FC50000000000000000000000000000000004C +S315E072FC60000000000000000000000000004C64008C +S315E072FC70800000000000000000000080000000002C +S315E072FC80008020000020000000002000000000003C +S315E072FC90200000000000000000002000002020008C +S315E072FCA000002000000000000000000000000000DC +S315E072FCB0000000000000000000000000400040006C +S315E072FCC040000000204000000000400000000000FC +S315E072FCD0000000000000000000000020400000006C +S315E072FCE000000000000000000008000808000000A4 +S315E072FCF000000000000000000000000000000000AC +S315E072FD00000000000000000000000000000000405B +S315E072FD10000000400000000000000000000000004B +S315E072FD20000000000000000000400000000000003B +S315E072FD30000000000000000000000000000000006B +S315E072FD40000000000000000000000000000000005B +S315E072FD50000000000000000000000010000000003B +S315E072FD60000000000000000000000000000000102B +S315E072FD70000000000000001000000000000000001B +S315E072FD8000100000001000000000000000000000FB +S315E072FD9000100000000000000000000000001000EB +S315E072FDA000000000000000000000000000000000FB +S315E072FDB000000000000000000000000000000000EB +S315E072FDC0000000000000000000004000000000009B +S315E072FDD0000000000000400000000000400040000B +S315E072FDE000004000000058C3000020000000000040 +S315E072FDF000000080000000000000000000800000AB +S315E072FE00000000000000000020000000200000005A +S315E072FE10000000000000000000000000000000008A +S315E072FE20000000000000000000000000002000005A +S315E072FE30000020000000000000000000000000004A +S315E072FE40000000000000000000000000000000005A +S315E072FE5000004000000000000000000000200000EA +S315E072FE60000000000000000000000000000000003A +S315E072FE7040400000000000000000400040004000EA +S315E072FE8000000000000000000000000000000040DA +S315E072FE90004000000000400040000000400000000A +S315E072FEA000000000000000000000000000000000FA +S315E072FEB000000000000000400000000000000000AA +S315E072FEC000000000000000000000000000000000DA +S315E072FED0000000000000100000000010001000009A +S315E072FEE000000000000000000000000000001000AA +S315E072FEF0000010000000000000000000100000008A +S315E072FF000010000000000000000000000000000089 +S315E072FF100000000000080000000000000000000081 +S315E072FF200000080000000000000000000000000071 +S315E072FF300000000000000000000000000000000069 +S315E072FF4000400000000000000000000040000000D9 +S315E072FF500000000040000000000000000000001DEC +S315E072FF60DD0000000000000000000000000000203C +S315E072FF7000002000200000000020200000000000A9 +S315E072FF8020000000000000000000200000200000B9 +S315E072FF9000200000000000200000000000000000C9 +S315E072FFA000000000000000000000004000000000B9 +S315E072FFB000000000000000000000000000000000E9 +S315E072FFC000000000000000000000000000000000D9 +S315E072FFD00000400000000000000000000000000089 +S315E072FFE00000000000000000000000004000000079 +S315E072FFF040000000000000004000000040004000A9 +S315E07300000000000000004000000000000040000017 +S315E07300100000000000000040000000000000400007 +S315E07300200000000000000000000040000000000037 +S315E07300300000400000000000000000000000000027 +S315E07300400000000000000000000000000000000057 +S315E07300500000000000001000000000000000000037 +S315E07300600000000000100000000010000000000017 +S315E07300700000000000000000000000000000000027 +S315E073008010000000000000101000000000000010D7 +S315E07300900000000000000000000000000000000007 +S315E07300A000000000000000000000000000000000F7 +S315E07300B000000000000000000000000000000040A7 +S315E07300C00000004000000000000000400000000057 +S315E07300D000400000000100400ED600002000000042 +S315E07300E000000000000000000000000000000000B7 +S315E07300F00000000000200020000000000000200047 +S315E07301000000000000000000000000000000000096 +S315E07301100000000000000000000000000000000086 +S315E07301200000000000000000000000000000000076 +S315E07301300000004000000000000000000020000006 +S315E07301400000000000000000000000000020000036 +S315E073015000000000400000000040000000000000C6 +S315E073016000000000000000004000000000000000F6 +S315E07301700000000000000000000000000000000026 +S315E07301800000000000000000000000000000000016 +S315E07301900000400000000000000000004000000086 +S315E07301A000000000000000400000000000000000B6 +S315E07301B000000000000000000000000000000000E6 +S315E07301C000000000000000000000000000000000D6 +S315E07301D000000000000000000000000000000000C6 +S315E07301E01000000000000000000000000000100096 +S315E07301F00000000000001010000000000000000086 +S315E07302000000000000000000000000000000000095 +S315E07302100000000000000000000000000000000085 +S315E07302200000000000000000000000000000000075 +S315E07302300000000000000000000000000000400025 +S315E07302404000000000004000000000400000000095 +S315E073025000ADB200000000000000000000200000C6 +S315E07302600000000000200000000000000000000015 +S315E07302700020000000000000000000000000000005 +S315E073028000000000000000200000000000000000F5 +S315E07302900020000000000000000000000040004065 +S315E07302A00000400000400000000000000000000075 +S315E07302B00000000000004000000000400000000065 +S315E07302C000000000000000000000000000000000D5 +S315E07302D00000000000000000000040000000000085 +S315E07302E00000000000000000000000000040004035 +S315E07302F00000000000000040000040000000000025 +S315E07303000040000000000000004000000000000014 +S315E07303100000000000000000000000000000004044 +S315E07303200000004000000000000000000000000034 +S315E07303300000000000000000000000000000000064 +S315E07303400000000000000000000000000000000054 +S315E07303500000000000000000000000000000000044 +S315E07303600000000000000000000000000000000034 +S315E07303700000000000000000000000000000000024 +S315E07303800000000000000000000000000000000014 +S315E07303900000000000000000000000000000000004 +S315E07303A00000000000000000400000004000000074 +S315E07303B000400000000000000000000000000000A4 +S315E07303C0000000000000000001003DF400000000A2 +S315E07303D000000000000000000000200000000000A4 +S315E07303E000000000000000000000000000000000B4 +S315E07303F00020002000000000002000000000000044 +S315E07304000000000000000000000000000000000093 +S315E07304100000000000000000000000000000000083 +S315E07304202000000000000020000000000000000033 +S315E07304300000000020000000400000000000000003 +S315E07304400000000000000000000000000000000053 +S315E07304500000000000000000000000004000404083 +S315E073046000004000000000000000000000004000B3 +S315E073047000000000000040000000000000004000A3 +S315E073048000000000000000000000000040000000D3 +S315E07304904000000000000000004000000000000083 +S315E07304A000000000000000000000000000000000F3 +S315E07304B000000000000000000000000000000000E3 +S315E07304C000000000000000000000000000000000D3 +S315E07304D000000000000000000000000000000000C3 +S315E07304E000000000000000000000100000000000A3 +S315E07304F00010000000000000000000000000000093 +S315E07305000000000000000000000000000000000092 +S315E07305100000000000000000000000000000000082 +S315E07305200000000000000000000000004000000032 +S315E073053000000000400000000000000000004040A2 +S315E073054000000029EA00000000002000000000001F +S315E07305500000000000000000000000000000002022 +S315E07305600000000000000000000000000000002012 +S315E07305700000000000000000000000000000000022 +S315E073058000000000000020000000000000000000F2 +S315E07305900000600000000000000000000040000062 +S315E07305A000000000400000000000000000000000B2 +S315E07305B000000000000000000020000000000000C2 +S315E07305C000000000000000000000000000000000D2 +S315E07305D000000000000000000000000000000000C2 +S315E07305E00000000040000000000000000000000072 +S315E07305F04000000000000000000000000000000062 +S315E073060000004000000040000000000000004000D1 +S315E07306100000000000000000000000000000000081 +S315E07306200000000000000000000000000000000071 +S315E07306300000100010000000000000000000000041 +S315E07306400000000000001000000000000010000031 +S315E07306500000000000000010000000100000000021 +S315E07306600000000000000000000000000000000031 +S315E07306700000000010000000000000000000000011 +S315E07306800000000000000000000000000000000011 +S315E07306900000000000000000000000000000000001 +S315E07306A04000000000004000000000000000000071 +S315E07306B0000000000000000000000000C4F9000024 +S315E07306C00020000000000000000020000000000091 +S315E07306D00000002000200000000000000000000081 +S315E07306E02000000000000000000000000000000091 +S315E07306F00000000000000000200000000000000081 +S315E07307000000000000000000000000000000000090 +S315E07307100000000000000000000000000000000080 +S315E07307200000000000000000000000000020000050 +S315E07307300000000000000000000000000000004020 +S315E07307400000000040000000004000400000000090 +S315E07307500000000000000000400000000000000000 +S315E07307600000000000000000000000000000000030 +S315E073077000000000004000000000000000000000E0 +S315E07307800000000000000000000040000000004090 +S315E07307900000000000000000000000000000000000 +S315E07307A000000000000000000000000000000000F0 +S315E07307B000100000000000000000100000100000B0 +S315E07307C010000000000000000000000000001000B0 +S315E07307D000000000000000000000000000001010A0 +S315E07307E00000100000001000000000000000000090 +S315E07307F000000000000000000000000000000000A0 +S315E0730800000000000000000000000000000000008F +S315E0730810000000000000000000000000000000007F +S315E0730820000000004000000000000001000000002E +S315E0730830000000000014A900008080000000200082 +S315E0730840000000000000200000000000000000002F +S315E0730850000000000000000000000000000000003F +S315E0730860000000000000000000000000000000002F +S315E0730870000000000000000000000000000000001F +S315E073088000004000000000000000000000002000AF +S315E073089000000000000000200000000000000000DF +S315E07308A000000000000000000000000040000000AF +S315E07308B0000800000048000000000000000000008F +S315E07308C000000000000000000000000000000000CF +S315E07308D0000000000040000000000000400000003F +S315E07308E000000000000000000000000000000000AF +S315E07308F0000000000000000000000000400000005F +S315E0730900000000000000000000000000000000008E +S315E0730910000000000000000000000000000000007E +S315E0730920000000000000000000000000000000006E +S315E0730930000000000000000000000010000000004E +S315E0730940000000000000000000000000000000004E +S315E0730950000000000000000000000000000000003E +S315E0730960000000001000000000000000000000001E +S315E073097000000000000040000000000000000000DE +S315E0730980000000000000000000000000000000000E +S315E073099000000000000000000000000000000000FE +S315E07309A000400000004000000000000141002EEE10 +S315E07309B0002000000000000000008000000000201E +S315E07309C0000020000000200020000020000000202E +S315E07309D0000000200000000000200020002000201E +S315E07309E0000000000020000000000000000000008E +S315E07309F0000000000020000000204000000000001E +S315E0730A00404000000000400000004000400000004D +S315E0730A10000000002000000000000020000000003D +S315E0730A200000002000002000000008000808000015 +S315E0730A3040004000000000400040004000004000DD +S315E0730A40004000000040000000004040000040000D +S315E0730A5040000040000040004000000000004040BD +S315E0730A60000000000040000040004000004000002D +S315E0730A7000000000000000000000000040000000DD +S315E0730A80000000000000000000000000000000000D +S315E0730A9000000000000000000000001000001000DD +S315E0730AA000000010000010000000000000000010BD +S315E0730AB0000010100000101000001000000000008D +S315E0730AC0101000001010000000100000001000006D +S315E0730AD00010000010100000000000000010080075 +S315E0730AE0100000000000000000000000000000405D +S315E0730AF0000000000000000000000000000000009D +S315E0730B00000000000000000000004000004000000C +S315E0730B1000004040000040000000404000004040BC +S315E0730B2000004000000040AE82008000200000001C +S315E0730B30002080000000000000000000002000009C +S315E0730B4000000020002020002000002000000000AC +S315E0730B5020002000000000200000000000200000BC +S315E0730B6000002000000020000000002000000000CC +S315E0730B70000000000000204040000040000000003C +S315E0730B80600000002000000020400000000000002C +S315E0730B90200000000000000000004000200000007C +S315E0730BA000000000000000000000000000000000EC +S315E0730BB040000000000000000040400000004000DC +S315E0730BC0000040004000004000000000400000408C +S315E0730BD000404000000000400000000000004000BC +S315E0730BE0004000000000000000000000000000402C +S315E0730BF0000000004000004000404000000000009C +S315E0730C00000000000000000000000000000000008B +S315E0730C10000000000000001010000000000010004B +S315E0730C20000000001000000000000010100000102B +S315E0730C30100000100000000000001000001010000B +S315E0730C40000000000010100010000000000010000B +S315E0730C50100000000000100000100000000000000B +S315E0730C60000000000000000000000000000000002B +S315E0730C7000000000000000000000000000000040DB +S315E0730C8000000040000040004000004000004000CB +S315E0730C9000404000000000010000000000404000FA +S315E0730CA0C154000000000020202020000020000036 +S315E0730CB0000020000020202000008000000020209B +S315E0730CC0000000000000202020000000000020202B +S315E0730CD0000000000020200000000000000020203B +S315E0730CE000000000000020000000000000006060CB +S315E0730CF040000020000000000000000020200000FB +S315E0730D00000000002000000000000040200000000A +S315E0730D1040000000202000000000000800000000F2 +S315E0730D2000000800004000000000000040400000A2 +S315E0730D30000000004040000000000000404040001A +S315E0730D40000000404040000000000000404000000A +S315E0730D50004000000000400000004000000000007A +S315E0730D6000404040400000000000404000000000AA +S315E0730D70000040400000000000000000000000009A +S315E0730D80000000000000000000000000000000000A +S315E0730D9010100000000000001000000000000000CA +S315E0730DA010100000000000001010000000000000AA +S315E0730DB0000000000000101000000000000010109A +S315E0730DC0000000000000101000000000000000109A +S315E0730DD000000000000000000000000000000000BA +S315E0730DE008000000000000000000000000000000A2 +S315E0730DF000000000000000400000000000004040DA +S315E0730E004000000000004040400000000000404009 +S315E0730E10400000000040404000244E000000000007 +S315E0730E200000000004000000000400000000000061 +S315E0730E3020208000000020200020010008004021CF +S315E0730E400008004000002020202000000000202041 +S315E0730E50000002001000A022203000800000202055 +S315E0730E600000000000000000202004000000404461 +S315E0730E700020000020206020000000002020404079 +S315E0730E800100080020210008000000006060402097 +S315E0730E90000000004848400002001000C002401005 +S315E0730EA000800000400000000000000000404000A9 +S315E0730EB00400200000044060000000004040404011 +S315E0730EC00000000000004140080000010008000037 +S315E0730ED00000404000000000000040404040020037 +S315E0730EE01000C04200100080000040400000000087 +S315E0730EF00000000000000400200000040020000051 +S315E0730F00000000000000000000101010010008004F +S315E0730F10401100080040000010101010000000009F +S315E0730F200000000002001000800200100080000044 +S315E0730F301010000000000000000000000400201004 +S315E0730F4010040020000000001010000000000000F4 +S315E0730F5000000100080040010000004000000000AE +S315E0730F600000000000000000000002001000800294 +S315E0730F700010008000004040404000000000400048 +S315E0730F800000040020004004406000000000000000 +S315E0730F900040E59A000000800000000000000000B9 +S315E0730FA000000000000000000020000000000020A8 +S315E0730FB02020000000000020000000000000000078 +S315E0730FC02020000000000020000000000000002048 +S315E0730FD02020200000000020200000000000000018 +S315E0730FE00020200000000040404040000020202008 +S315E0730FF060404000002020000040400000202000B8 +S315E073100000000000002020204000000000080800D7 +S315E07310104000000000004000400000000000400077 +S315E07310200000000000000000000000000000000067 +S315E07310300000000000404000000000000000004097 +S315E07310404000000000000000000000404000000087 +S315E073105000000040404040000000004040000000B7 +S315E073106000000000400000000000000000000000E7 +S315E07310700000000000000000000000000000000017 +S315E073108000100010100000000010000000000000C7 +S315E07310900010100000000000001010101000000097 +S315E07310A000000000000000000010100000000000C7 +S315E07310B000001000000000100000000000000000B7 +S315E07310C000101000000000000000000000000000A7 +S315E07310D000000000000000000000000000000000B7 +S315E07310E000000000000000000000000000000000A7 +S315E07310F000404000000000004000000000000000D7 +S315E07311004040000000000000004000418F00800076 +S315E07311100000000000000000000000000000000076 +S315E073112020202020000000002000002000000000A6 +S315E073113000200000000000000000202000000000F6 +S315E073114020000000000000002020202000000000A6 +S315E07311502020000000000000202020200000000076 +S315E07311600000404000002020206040400000202026 +S315E07311700000404000002020000000000000202016 +S315E0731180006000000000000800400000080800400E +S315E073119040000000000000000000000000000000B6 +S315E07311A00000000000004000404000000000000026 +S315E07311B04040000000004000404000000000000096 +S315E07311C000000000000000000000000000000000C6 +S315E07311D000000000404000000000000040400000B6 +S315E07311E000000000000000000000000000000000A6 +S315E07311F00000000000000000000000101010000066 +S315E07312000000001000000000000010101000000045 +S315E07312100000000000000000000000000000000075 +S315E07312200000101000000000000000000000000045 +S315E07312301000100000000000000010100000000015 +S315E07312400000000000000000000000000000000045 +S315E07312500000000000000000000000000000000035 +S315E07312600000000000000000000000000000000025 +S315E073127040000040000000004000404000000000D5 +S315E073128040400040A724000000000000000000007A +S315E073129000000000000000000000000000000000F5 +S315E07312A00000002020000000002000000000000085 +S315E07312B000002000000000000000000000000000B5 +S315E07312C00020202020000000002020000000000005 +S315E07312D00020202020000000000000000000002015 +S315E07312E02060200000000020204040000000002025 +S315E07312F0200000000000006060600000000000480D +S315E07313004040000000080840000040000000000074 +S315E07313100000000000000000000000000000004034 +S315E07313204000000000000000000000000000000024 +S315E073133000404000000000000000000000000000D4 +S315E073134000000000000000000000000000404000C4 +S315E073135000000000004040000000000000000000B4 +S315E07313600000000000000000000000000000000024 +S315E073137000000000101010000000001000000000D4 +S315E07313800000001010100000000000101010100094 +S315E073139000000000000000000000001010000000D4 +S315E07313A000101000100000000000100000000000A4 +S315E07313B000000010000000000000000000000000C4 +S315E07313C000000000000000000000000000000000C4 +S315E07313D000000000000000000000000000000000B4 +S315E07313E00000004040000000004040400000000064 +S315E07313F0004040000000000000000040406AF60034 +S315E07314000000000000000000000000000000000083 +S315E07314100000200000000000000000000000000053 +S315E07314200000002000000000000020200000000003 +S315E07314300000202000000000000000000000000013 +S315E07314400000000000000000000000000000000043 +S315E07314500000000040400000000000004040000033 +S315E073146000000000404000000000000000000000A3 +S315E07314700000204000000000080800400000000063 +S315E073148000000040000000000000000000000000C3 +S315E07314900000000000000000000040400000000073 +S315E07314A000000040000000000000000000000000A3 +S315E07314B00000000000004000000000000000000093 +S315E07314C000000000000000004040000000004040C3 +S315E07314D000000000000000000000000000000000B3 +S315E07314E00000000000000000000000000010000093 +S315E07314F00000000010100000000000000000100063 +S315E07315000000000000000000000000000000000082 +S315E07315100000000010100000000000000010000042 +S315E07315200000001010100000000000001010000012 +S315E07315300000000000000000000000000000000052 +S315E07315400000000000000000000000000000000042 +S315E073155000000000404000000000404040400000B2 +S315E073156000000000404000000000000000000000A2 +S315E0731570000040010000848B000000000020202062 +S315E073158020000000000000000000000020200000A2 +S315E073159000000000000000000000000000202000B2 +S315E07315A000000000002000000000002000000000A2 +S315E07315B000000000000000000000000000000000D2 +S315E07315C000000000000000000000000000000000C2 +S315E07315D000000000000000000000000000000000B2 +S315E07315E00000000000000000000000402000000042 +S315E07315F00008084000000000000000400000000002 +S315E07316000000000000000000000000000000000081 +S315E07316100000004000000000004040404000000031 +S315E073162000000040400000000000000000000000E1 +S315E07316304000000000000040404040000000000011 +S315E07316400040400000000040400000000000000041 +S315E07316500000000000000000000000000000000031 +S315E07316600000000000100000000000000000000011 +S315E073167000000000000000000000000000101010E1 +S315E073168010000000000000000000001000101000C1 +S315E073169000000000001010000000001000100000B1 +S315E07316A000000000001010000000000000000000C1 +S315E07316B000000000000000000000000000000000D1 +S315E07316C00000000000000000000000000040400041 +S315E07316D00000000040000000000000000000000071 +S315E07316E00000000000400000000000004000007CA5 +S315E07316F0E20000000000202020200000000000002F +S315E07317000000000020200000000000002000000020 +S315E07317100000000000202020000000000000000010 +S315E07317200000000020000000000000000000000040 +S315E07317300000000000000000000000002020000010 +S315E07317400000000040404040000000000040404080 +S315E073175000000000000040400000000000000000B0 +S315E073176000000000604000000000080840400000F0 +S315E07317700000004000400000000000000000000090 +S315E073178000000000000000000000400000000000C0 +S315E07317900000000000400000000000000040000070 +S315E07317A00000000000000000404000000000000060 +S315E07317B00000000000000000000040000000000090 +S315E07317C040404040000000000000000000000000C0 +S315E07317D000000000000000000000000000000010A0 +S315E07317E00000000000001010000000000000000080 +S315E07317F01000000000000010100000000000000060 +S315E0731800000000000000000000000000000000106F +S315E0731810000000000000101000000000000010102F +S315E0731820000000000000000000000000000000005F +S315E0731830000000000000000000000000000000004F +S315E0731840000000000000404000000000400000007F +S315E073185000000000000040400000000000000000AF +S315E073186000000000404001005D83000000000000BE +S315E073187000000000000004000000000000002000EB +S315E073188000000000000000000000000001000800F6 +S315E073189040000000000000000000000000000000AF +S315E07318A0000000000200100080000000000000004D +S315E07318B0000000000060200040000000044060402B +S315E07318C040000000004000404000000000404040FF +S315E07318D04000010008000000000000404040600046 +S315E07318E0000000484840400000000240104080007D +S315E07318F0000000000000400000000000000000004F +S315E0731900000004406040000000000000000000009A +S315E073191000000000004040000100080000000000E5 +S315E0731920000000000000000000000000000000005E +S315E073193002001000800000000040404040000000BC +S315E0731940000000000000000004002000000000001A +S315E0731950000000000000000010000000000001001D +S315E073196008004000000000000000000000000000D6 +S315E0731970101000000000020010108000000000004C +S315E073198000000000001010101000000000000410AA +S315E073199020000000000000101000000000000000AE +S315E07319A00000000001000800404000000000000055 +S315E07319B0000000000000000000000000020010407C +S315E07319C0C00000000000400000000000000000407E +S315E07319D0000000000400200000000000000040004A +S315E07319E0003ACB0080000000000000000080000495 +S315E07319F000002000000000A00000000000000000CE +S315E0731A0020000000000100280040000000000000F4 +S315E0731A10002000000000000000000000000200103B +S315E0731A2000800000000000000000000000000000DD +S315E0731A304000000000040060204000000000004009 +S315E0731A400040000000004000004000010008000074 +S315E0731A5040000000400060000000000008400040C5 +S315E0731A6000000802005000C00000000000400000C3 +S315E0731A700000000000404000000000040020004029 +S315E0731A80000000000000004000000000004000403D +S315E0731A900001000800004000000000400000000064 +S315E0731AA0000000000000000000020010008000004B +S315E0731AB000000000000000000000000000000000CD +S315E0731AC00004002000000000000000000000000099 +S315E0731AD00000000000000001000800400000000064 +S315E0731AE0000000000000000000000000000000029B +S315E0731AF000100080000000100000000000000000ED +S315E0731B000000000000000004002000000000000058 +S315E0731B101010000000000000000000000001000843 +S315E0731B200840000000000000000000000000000014 +S315E0731B30000000000002001000C00000000000007A +S315E0731B400000000000004000400000000004402058 +S315E0731B5000000000000040004000321F000000005B +S315E0731B6000000000000000008400200000000080F8 +S315E0731B7000200000000000002000000000000100CB +S315E0731B800800400000000000200000000000000094 +S315E0731B90000000000000020010008000000000005A +S315E0731BA00000000000000000400000000000040098 +S315E0731BB020000000000000000000000000000000AC +S315E0731BC00000000001000800400000000000000073 +S315E0731BD0000000000000000000000000020010009A +S315E0731BE0800000000000004000000000000040009C +S315E0731BF000000000040060000000000000004000E8 +S315E0731C000000000000000000000001000800400032 +S315E0731C1000000000000000000000000040400000EB +S315E0731C200000020010408000000000004040000009 +S315E0731C300000000000000000000004002000000027 +S315E0731C40000000000000000000001000000000002B +S315E0731C5001000800400000000000001000000000D2 +S315E0731C600000101000000000020010008000000069 +S315E0731C7000100000000000001000000000000000EB +S315E0731C8014002000000000000000000000000000C7 +S315E0731C9000000000000001000800400000000000A2 +S315E0731CA000000000000000000000000000000200D9 +S315E0731CB010408000000000004000000000000000BB +S315E0731CC00000000000000400204000000000000057 +S315E0731CD0000000B36A000083A31C1C60600000234D +S315E0731CE003181C406000200707383840400000079F +S315E0731CF0073838C0C000200607303880C021010E8F +S315E0731D000E7070808001010E0E7070808001010C80 +S315E0731D100E6070008003031C1CE0E0000003031CEC +S315E0731D201CE0E000004343181CC0E000004747385E +S315E0731D3038C0C0000007073838C0C0000006073057 +S315E0731D403880C001010E0E7070808001010E0E7036 +S315E0731D5070808001410C0E6070008003031C1CE0F0 +S315E0731D60E0000003031C1CE0E000000303181CC042 +S315E0731D70E0000047473838C0C0000007073838C06E +S315E0731D80C000000607303880C001010E0E70708007 +S315E0731D908041410E0E7070808041410C0E60700080 +S315E0731DA08003031C1CE0E0000003031C1CE0E0005E +S315E0731DB0000303181CC0E0000007073838C0C000F2 +S315E0731DC00007073838C0C000000607303880C00106 +S315E0731DD0010E0E7070808001010E0E7070808001AE +S315E0731DE0010C0E6070008003031C1CE0E00000032E +S315E0731DF0031C1CE0E000000303181CC0E0000007AE +S315E0731E00073838C0C0000007073838C0C00000067E +S315E0731E1007303880C001010E0E7070808001010EAC +S315E0731E200E7070808001010C0E6070008003031CDD +S315E0731E301CE0E0000002021C1CE0E0000042021815 +S315E0731E401CC0E0000046463838C1C1001B9800004C +S315E0731E5000200000000000002000000000000000E9 +S315E0731E6000002000000000000000000000000000F9 +S315E0731E7000002000000020000000000000000020A9 +S315E0731E8000000020000000000000000000000000D9 +S315E0731E900000002000000000000000400000404009 +S315E0731EA00000404000004040000040000000000099 +S315E0731EB00020000000000000002000000000000089 +S315E0731EC00020000000000000000000000000000099 +S315E0731ED04000000000000000000000000000000069 +S315E0731EE00000000000000000004000004000000019 +S315E0731EF04000000000000000000000000000000049 +S315E0731F000000000000000040000040000000404078 +S315E0731F100000004000000000000000000000000028 +S315E0731F200000000000000000000000000000000058 +S315E0731F300000000000000000000000000000000048 +S315E0731F4010100000100000000010000000000000F8 +S315E0731F500000000000000000000000000000000028 +S315E0731F6000000000000000000000001000001000F8 +S315E0731F7000000010000010000000000800000800D8 +S315E0731F8000000000000000000000000000000000F8 +S315E0731F9000000000000000000000000000000000E8 +S315E0731FA00000000000000000000000400000400058 +S315E0731FB00000004000000000000000400000000048 +S315E0731FC0000040000016E100000000000000000081 +S315E0731FD000000000000000000000000000000000A8 +S315E0731FE00000000000000000000000000000000098 +S315E0731FF00000000000000000000000000000000088 +S315E07320000000000000000000000000000000000077 +S315E07320100000000000000000000000000000000067 +S315E073202040000000002000000000000000000000F7 +S315E07320300000000000000000000000000000000047 +S315E07320400000000000000004000000000000000033 +S315E07320500000000000000000100000000000000017 +S315E073206000000000000000000000010000004000D6 +S315E073207000000000000000000000000000000800FF +S315E073208000000000000000000000000000000000F7 +S315E073209000000000000000000000000000000000E7 +S315E07320A000000000000000000000000000000000D7 +S315E07320B000000000000000000000000000000000C7 +S315E07320C000000080000000000000100080000000A7 +S315E07320D000000000000000000000000000000000A7 +S315E07320E00000000000000004000000000000000093 +S315E07320F00000002000400000000000000000000027 +S315E07321000000400000000000000000000000000036 +S315E07321100000000000000000000000000000000066 +S315E07321200000000000000000000000000000000056 +S315E07321300000000000000000000000000000CB3E3D +S315E073214000000000000000000080000000000000B6 +S315E073215000000000202000000020000000000000C6 +S315E073216000000000002000000000000000000020D6 +S315E07321700000000000000000000000000000000006 +S315E073218000000000000000000000000040000000B6 +S315E073219040004000000000000000400000004800DE +S315E07321A00000400040000000000000002000000036 +S315E07321B0000000004000600040000000084000009E +S315E07321C000000000404000000000000000400000F6 +S315E07321D00000000040000000400080400000000066 +S315E07321E040000000000000002000000000400000F6 +S315E07321F00000000000000000004000400000000006 +S315E073220000004040000000000000000000000000F5 +S315E07322100040000000000000000000000000000025 +S315E07322200000000000000000000000000000000055 +S315E07322300000000000000000000000000000000045 +S315E07322400000000000000000000000000000000035 +S315E07322500000000000000000000000001000000015 +S315E073226000000000000010000000100000000000F5 +S315E07322700000000000000000000000000000000005 +S315E07322800000000000000080000000000000000075 +S315E073229000000000000000000000000000000000E5 +S315E07322A00000004000000000000000400040000015 +S315E07322B000000040000040F700000000000000202E +S315E07322C00000000000000000000000002000200075 +S315E07322D00000000000000000000000000000002085 +S315E07322E00000000000002000000000000000000075 +S315E07322F00000000000000000000000000000002065 +S315E073230000000000000000004000004000000020D4 +S315E07323100000004000400040000000400000000064 +S315E07323200000000000000000000000000000400014 +S315E0732330004000000800400010000000000040006C +S315E073234000000000000040000000000000000000F4 +S315E07323500000008040000000000000000000000064 +S315E073236000200000000008000000000000004000AC +S315E073237000004000000000000000000000000000C4 +S315E07323800000000000000000000040004000000074 +S315E073239000000000000000000000000000000000E4 +S315E07323A000000000000000000000000000000000D4 +S315E07323B000000000000000000000000000000000C4 +S315E07323C000000000000000000000000000000000B4 +S315E07323D00000000000100000000000000000000094 +S315E07323E00020000000000000000000000000000074 +S315E07323F00000000000000000000000000000000084 +S315E07324000000000000000000000000000000000073 +S315E07324100000000000000000000000000000000063 +S315E073242000000000000000400000000040000000D3 +S315E07324307C4A0000000000000000008000000000FD +S315E07324400000000000000000000000200000000013 +S315E07324500000000000000000000000002000000003 +S315E073246000002000000000000000000000000000F3 +S315E073247000000000000000000000000000004000C3 +S315E073248000000000000000000000000000000000F3 +S315E0732490084000000040000000000000000020003B +S315E07324A04000000000004020000000000000000033 +S315E07324B00000000000004000000000000000000083 +S315E07324C000000000000040040000404000000000EF +S315E07324D040400000000000000000000000000040E3 +S315E07324E000000100000040000000000000400040D2 +S315E07324F000000000404000000000000000000040C3 +S315E07325000000000000000000000000000000000072 +S315E07325100000000000000000000000000000000062 +S315E07325200000000000000000000000000000000052 +S315E073253000000000000000000000000000000080C2 +S315E073254000001000800000000000000000000000A2 +S315E073255000000004000000001000000010000000FE +S315E073256000000000000000000000000000400000D2 +S315E07325700000000000000000000080000000000082 +S315E073258000000000000000000000000000000000F2 +S315E07325900000000000004040000000000040000022 +S315E07325A00000000000000000405CA8000084040006 +S315E07325B00000000000002040000000000000000062 +S315E07325C000000000004400000000400000006000CE +S315E07325D00000002000000000000000000000000082 +S315E07325E00000004010000000000000000000000042 +S315E07325F000000000000040000040000000400000C2 +S315E073260004000000004000000000004000000000ED +S315E073261040000000400000000000000000400000A1 +S315E07326202000000000000000000000000000000031 +S315E07326300000200000000040004000200000004041 +S315E07326400000004000000040000000000000004071 +S315E07326504000000000004000000040000000000061 +S315E07326600000004000000000000000000000400091 +S315E073267000000000000000400000000000000000C1 +S315E07326800040000000000000400000000000000071 +S315E07326900000100000001000000000100080000031 +S315E07326A04000008000000000000000004000008051 +S315E07326B00040000000000000000000000040001031 +S315E07326C00000000000800000000000800000008031 +S315E07326D000801000000000000000580000000000B9 +S315E07326E00000400000000000000000000000000051 +S315E07326F00000000000000000000000000000000081 +S315E07327000000002000000000000800000000400800 +S315E073271000000040000040080000080000000000D0 +S315E07327200000B95C000000000020002000040000F7 +S315E073273000000000240024000000240000002000B4 +S315E07327400004200020200000040060000400200044 +S315E073275000000000200004000000000000000000FC +S315E073276000000000001000000000000000000020E0 +S315E073277000000040040000000000000000000000BC +S315E0732780000040000400006000000000000000004C +S315E07327904000000000000000004000000000600000 +S315E07327A00000004000400000000000000000400010 +S315E07327B00000000040000000008040002000400060 +S315E07327C08040000040400000080000000400002044 +S315E07327D00000000000000000400000000000400020 +S315E07327E00000000000000000000000080000400048 +S315E07327F00000000060000000000000000000000020 +S315E073280000000040004000000000004000000000AF +S315E073281000004000000000000010004000000000CF +S315E073282000400000000000004010000000100000AF +S315E0732830000000004000000000400000004000106F +S315E0732840000000080000000000000000000000180F +S315E07328500000008000000000000000000008000097 +S315E073286000004000000000000000000000000000CF +S315E073287000000000000000000800000000000000F7 +S315E073288000000000000000000000080000000000E7 +S315E07328900040000000080040000000E476000400F9 +S315E07328A00000200000200400000000000004002067 +S315E07328B00000042000000040000000240000200017 +S315E07328C00024002020040020000000000020040003 +S315E07328D0000000004000000000000010000000004F +S315E07328E0000000000000000000400040004440008B +S315E07328F000000020000040000000000000440000DB +S315E073290000200040000000000040000000000000CE +S315E0732910000020400000006000000000004000401E +S315E073292080000000200000000000000000000000AE +S315E0732930000000000020400040800000400000409E +S315E07329400048000000000000402000000000000086 +S315E0732950004000004000000000000000000000009E +S315E07329600000000008000040400000006000000026 +S315E0732970000000000000000000000040004040003E +S315E073298000000000401000001000004010008000BE +S315E0732990000010004000000000004000000000400E +S315E07329A0408040000000100000100000004000402E +S315E07329B00000400000000040001000000800000026 +S315E07329C00000008000100000001000008810000076 +S315E07329D00000000040000800000000000000000056 +S315E07329E0000000000000000000000000000000008E +S315E07329F0080000000020000000000008000000004E +S315E0732A004800000000000000400000400008080095 +S315E0732A104000000063150000000000000000004065 +S315E0732A200000000000040000000000000004400005 +S315E0732A306000000020000040040000000004000075 +S315E0732A4020000000200000000000000004001000D9 +S315E0732A50002000400000000040004000000000003D +S315E0732A6000400000000040004000004000204000AD +S315E0732A700000000000000000000000400040040079 +S315E0732A8000000000000000000040000000000000AD +S315E0732A9040000000000000400000000000A00000BD +S315E0732AA0400000002000006000002000404000006D +S315E0732AB00000404020408040000000004000802835 +S315E0732AC000000000400000000000004000000040ED +S315E0732AD0000000000000404000400000400040203D +S315E0732AE0000040400000000000000000000000000D +S315E0732AF0000040000000000000000000000000201D +S315E0732B0040004000000000000000000000000000EC +S315E0732B10000040000040001000005000000000007C +S315E0732B2000000000000000100000000000004000FC +S315E0732B3010000000000000000800500000000810BC +S315E0732B4040000000004000000000000000000000AC +S315E0732B5000000000000000000000000000004000DC +S315E0732B600000000000000000000000000000080004 +S315E0732B700000000080000000000000080000400034 +S315E0732B80000000004040000000000000080DB8009F +S315E0732B900000000000000000004000000000040098 +S315E0732BA00080000000004400000000000000000008 +S315E0732BB0400020000000000000000000002000003C +S315E0732BC0000000000000000000000000004000006C +S315E0732BD0000000400000000000004000000000001C +S315E0732BE000400000004040000000000000000000CC +S315E0732BF00000000000440000000000000000000038 +S315E0732C0000000040000000004000000000200000CB +S315E0732C1000000000040080000000000000200000B7 +S315E0732C2040000000000000400000000000604080AB +S315E0732C3000400000000000000800000000000000F3 +S315E0732C4000000000000000000040000000000000EB +S315E0732C50000000000000004000000000004000009B +S315E0732C60000000000000000000000000000000000B +S315E0732C70000040000000000000400040000000003B +S315E0732C80000000000000000000104000000000405B +S315E0732C90001040000000000000000000000000008B +S315E0732CA0000000000000004000100000000000007B +S315E0732CB008000040000000000010000080000000E3 +S315E0732CC000000000000000000000000000000000AB +S315E0732CD0000000000000000000000000000000009B +S315E0732CE0000000000000000000000000000000008B +S315E0732CF00000100008000000000040000000000023 +S315E0732D000000000000005324008000000000000073 +S315E0732D100400000000000000000000000000000056 +S315E0732D2000400000000020000004000000000000E6 +S315E0732D300400000000000000000000000000000036 +S315E0732D4010000000000000000000400000000000DA +S315E0732D5000000000000000004000000000000000DA +S315E0732D6020000000000000000000000000000004E6 +S315E0732D70000000000000000000000080000000007A +S315E0732D8000000000000000000000000000000040AA +S315E0732D90200000000000000000000000200020007A +S315E0732DA0000000004000000000000000000040004A +S315E0732DB0000000000040000000000000000040003A +S315E0732DC000000000000040000000404000004000AA +S315E0732DD0000000000000000000000000000000009A +S315E0732DE0000000400000000000004000000000000A +S315E0732DF0000000000000000000000000000000007A +S315E0732E000000000000000000000000000000000069 +S315E0732E100000000000004000000010000000000009 +S315E0732E200000000000000000080000100000000031 +S315E0732E3000000000000000004000000000000040B9 +S315E0732E400000000000000000000000000000000029 +S315E0732E500000000000000000000000000000000019 +S315E0732E600800000000800000000000000000000081 +S315E0732E70000000000000400040000000000000A6D3 +S315E0732E80D200000000000000000000000000000017 +S315E0732E900000400000000000000000200000000079 +S315E0732EA000000000000000000000002000000000A9 +S315E0732EB00000000000000004000000000020000095 +S315E0732EC000000000000000000000000000000000A9 +S315E0732ED00000000000000000000000000000000099 +S315E0732EE00000000000000000400000000000000049 +S315E0732EF000000000000000000040000000004000F9 +S315E0732F0000000040000000200000400000000000C8 +S315E0732F1000000020000040000000004000000000B8 +S315E0732F200000000000000000804020000400000064 +S315E0732F300020000000000000000000000000000018 +S315E0732F404000000000000000000020000040000088 +S315E0732F500000000000000000000000000000000018 +S315E0732F6040000000000000000000002000000000A8 +S315E0732F7000000000000000000000000000000000F8 +S315E0732F8000000000100000000000000000000000D8 +S315E0732F900040000000400000000000000000000058 +S315E0732FA00000000000000000080040000000000080 +S315E0732FB00000000000004000000000000000000078 +S315E0732FC00000000000000000400000000000000068 +S315E0732FD00000000000000000000000000000000098 +S315E0732FE00000000000000000400000000000000048 +S315E0732FF0000000000000000863E9000000400000E4 +S315E073300000000000000000000000000000004040E7 +S315E07330100040000000000000000004000000000013 +S315E07330200000000000040000002000000000000023 +S315E073303000000000000000000000000040004000B7 +S315E07330400000000000000000000000402040000483 +S315E073305000000040005000401040000000000000F7 +S315E07330600000000000000000000000040000000003 +S315E073307000400040004020402000000000000000B7 +S315E07330800040000060004000400020204000002027 +S315E07330900040000000000000002040000020000017 +S315E07330A04000000020000000000000200000002027 +S315E07330B00000004000000000400000000000000037 +S315E07330C040000000000040000000000000000040E7 +S315E07330D00000000000000000000000000000000097 +S315E07330E00000000000400010000000000000000037 +S315E07330F000000000000000004000400000000010E7 +S315E07331000000000000000000000000000000000066 +S315E073311000400000100000000040000000000000C6 +S315E07331200010000010000000000000000000000026 +S315E07331300000000000000000000000000000000036 +S315E0733140000000080008000000080000000000000E +S315E073315040000000000000000000000000000000D6 +S315E073316000480000000000000000000000000800B6 +S315E0733170002CA50000A080004000400080000040C5 +S315E073318000440040000000208000000000000004BE +S315E07331900000400000002000000000040000000072 +S315E07331A000000000000000000000000004000000C2 +S315E07331B000000000000000000040004000000040F6 +S315E07331C00040000000000000400000000000000026 +S315E07331D00000000000000000000040000000000056 +S315E07331E00000000000400000000000002000000026 +S315E07331F00000000000004000000000000000000036 +S315E07332000000000000000000000000000000000065 +S315E07332100000000000404000000000004000000095 +S315E073322000400000000000200000002000000000C5 +S315E07332300000400000000040000040000000000075 +S315E073324000000000000000400000400000000000A5 +S315E073325000000000000000000000000040000000D5 +S315E07332600000000000000040000000004000004045 +S315E073327000000000001000000000000000000000E5 +S315E07332800000001000000050000000000000000085 +S315E07332900040000000400000400000000040400095 +S315E07332A000080000000000000000000008000000B5 +S315E07332B0000000000000400000000008000000402D +S315E07332C04000004000000040000000404000000065 +S315E07332D000000040400000000000000000400000D5 +S315E07332E040010000000000010100D77000000000FB +S315E07332F00000000000000000040000000000000071 +S315E07333000404000000000000000400000000000058 +S315E07333100000202000000000202040000040000054 +S315E073332000004000000440001000000000000000B0 +S315E073333000000000000040000000000004000000F0 +S315E07333404000000000000000400000004000000064 +S315E07333500000000000000000400040000040000054 +S315E07333600000002000004000000040000000000064 +S315E073337000000000000000000000400000000000B4 +S315E07333802000000000000040808000000000000084 +S315E07333900000000040000040000000000000400014 +S315E07333A00040000000000000000000400000400004 +S315E07333B000000000000000000000000000000000B4 +S315E07333C000000040000000000000004000400040A4 +S315E07333D00040000000000000100000000040000004 +S315E07333E000000000400000000040000000400000C4 +S315E07333F000500000500010000000000000000000C4 +S315E07334000040100000400040000000000000000093 +S315E073341040001040000000000000100000000000B3 +S315E073342000000000004000000000004000000000C3 +S315E073343000000000000800000000000040480000A3 +S315E073344000000000400000000000000000000000E3 +S315E0733450000040400000000008000000400000004B +S315E07334604000006683008004000000200000000036 +S315E073347000000000040000000000000000000000EF +S315E0733480600000000000000000000000000000443F +S315E0733490400000040000000000000000044000004B +S315E07334A00000004000400000000000000000000043 +S315E07334B000000000000000000004000000000000AF +S315E07334C0000000000000004000000040000004001F +S315E07334D00000000000400000000000000000002033 +S315E07334E00000000040000000000000000000000043 +S315E07334F00000000000400040000000002000400093 +S315E07335000000200000002000000000000000000022 +S315E07335100000400000000000000000000000000012 +S315E07335200000000000000000400000000040004082 +S315E07335300000000000000040004000000000004072 +S315E073354000000040000000000000000000400000A2 +S315E07335500000500000001000100000000000100092 +S315E07335601000000010001080400000000000000012 +S315E07335704000000000400000000000001000000062 +S315E07335800010000000000000000000401000000082 +S315E07335900080000000000000000000000000000052 +S315E07335A0000008000000000000000000004040003A +S315E07335B00040000000000000000000000000000072 +S315E07335C0000000400000000048000000000000001A +S315E07335D0000000080000000000000008ED3900005C +S315E07335E00000000000000000000000000000000082 +S315E07335F0000004000000000000000400002000004A +S315E07336000000000000400000000000000000000021 +S315E073361000000000000400004000400000000000CD +S315E07336200000000000000000000040400040000081 +S315E07336300000000400000400000010000000000019 +S315E073364000004040000000000000000000000000A1 +S315E07336500000000000000000000000000000000011 +S315E073366000000000004000000000000000002000A1 +S315E07336700000200000000000002000002040004011 +S315E073368000000000000000400000000000000000A1 +S315E07336900000400000400000000000000000000051 +S315E07336A000000000000000000000000000000000C1 +S315E07336B00000000000000000400040000000000031 +S315E07336C00000000000000000400040000000000021 +S315E07336D04000400000000000001000000000000001 +S315E07336E00080000000000000000040004000001071 +S315E07336F000000000000000000040001048000000D9 +S315E07337000000000000400040000000800000000060 +S315E07337100000000000000000000000000000000050 +S315E07337200000000000000000000000000000004000 +S315E073373000000040000000004000000000000000B0 +S315E073374040000000000008000000000000080000D0 +S315E07337500000000000E91E00000000040000000005 +S315E073376000000004002000000000000000000000DC +S315E0733770000000004000000000400400000000006C +S315E073378000000000000000000000000000000000E0 +S315E07337900000000000000000000040000000000090 +S315E07337A00000000000000000000000000000004080 +S315E07337B00000000000000000000000000000004070 +S315E07337C00000000000000000000000400000000060 +S315E07337D00000000020004000400040000000002090 +S315E07337E00040000000000000000000000000000040 +S315E07337F000000000400000000020004000000000D0 +S315E073380000200000000000402000002000000000BF +S315E0733810000000000000000000000000400000000F +S315E073382000000000000000004000000000000000FF +S315E073383000000000000000004000000040000000AF +S315E0733840000000104000000000000000400000404F +S315E073385000000000000000000000000000000010FF +S315E073386000000000000040000000000000000000BF +S315E073387000000000000000000000000000100000DF +S315E0733880000040000040000000000000000000005F +S315E073389000000000000000000000000000000000CF +S315E07338A000000000000000000000000000000000BF +S315E07338B00000400000400800000000000000000027 +S315E07338C008000000000000000000000000009056B1 +S315E07338D0000000000000000000442000000000002B +S315E07338E000004000000000000400400000000000FB +S315E07338F0000000000000000000000000000000006F +S315E0733900000000000000000000000000000000005E +S315E0733910004000000000400040400000000000004E +S315E073392000000000000040000000000000000000FE +S315E0733930000000000000000000000000000000002E +S315E073394000000000000000000000002000000000FE +S315E073395000000000200040000000000000000000AE +S315E073396000002000000020000000000000000000BE +S315E0733970200000002040000000000000200000004E +S315E0733980000000000020000000000000004000007E +S315E0733990000000000000000000400040000000004E +S315E07339A0000000000040000000000000000000007E +S315E07339B0000000000000000000000000000000406E +S315E07339C010000000000000000000000040001040FE +S315E07339D000008000100000000000400000000000BE +S315E07339E0000040401010000040000000000000009E +S315E07339F0100040000000000000001010801000006E +S315E0733A00100000000000400000000000000000000D +S315E0733A10000000000000000000000000000000004D +S315E0733A2000000040000000000000000000000000FD +S315E0733A30000000000000000000400040004000006D +S315E0733A4000000000000000370400800004000080DE +S315E0733A5000000000000000000020000000000000ED +S315E0733A60200000000000000000000000004000009D +S315E0733A7040000004000000000000000000000000A9 +S315E0733A8000000000000000000000000000000000DD +S315E0733A90000000000000000000004000000000008D +S315E0733AA0000040000000400000000000000000003D +S315E0733AB0000040000000000040000000000000002D +S315E0733AC040200000400000000000000000004000BD +S315E0733AD000000000600000000000000000400000ED +S315E0733AE0004000400000800000000000000000007D +S315E0733AF000000000400000000000000000000040ED +S315E0733B0000400000000000000000004000000000DC +S315E0733B10000000000000400000000000000000000C +S315E0733B2000000000000000000000000040000000FC +S315E0733B3040000000000000000000000010000000DC +S315E0733B4000100000000000100000000000000000FC +S315E0733B50000000000000004000000000000040008C +S315E0733B60000050000000000000000000400000006C +S315E0733B7000000000000000000040000000000000AC +S315E0733B8000000000000000000000000000000000DC +S315E0733B9008000000000000000800000800000000B4 +S315E0733BA0000000000000000000000000400040003C +S315E0733BB00000000000000000004000000000080064 +S315E0733BC0F2B500000400000004000000800000006D +S315E0733BD00000000000000000040000000000000088 +S315E0733BE00400000000000000000004000000040070 +S315E0733BF004400000000040000000001000000000D8 +S315E0733C0040004000000000000000000000000000DB +S315E0733C1000400000000000000000440000000000C7 +S315E0733C2000000000400000000000000000002000DB +S315E0733C30000000000000000000000000000000002B +S315E0733C4000002000400000000000000000000000BB +S315E0733C50000040000000000000000000004080000B +S315E0733C60400000000000000000004000000000007B +S315E0733C7000000000000000000000000000000000EB +S315E0733C8000000000000000000000000000000000DB +S315E0733C90000000000000000000000000000040404B +S315E0733CA000000000000000000000000000000000BB +S315E0733CB0000040000000000000000010000000005B +S315E0733CC0001000400080000040000010400000003B +S315E0733CD0000000400000000000001000000010002B +S315E0733CE000000000000000000000000000000080FB +S315E0733CF0000010000000000000000000000000005B +S315E0733D00000000000000000000000000000000401A +S315E0733D10000000000000000000000000000000004A +S315E0733D20000000000000000000000008000008002A +S315E0733D300900000000000800003CBB00000404001A +S315E0733D4000400040000000400044000400002040B2 +S315E0733D50044060000000000404000004000020003A +S315E0733D60002000440400000000640040400000406E +S315E0733D7000000004440000004000004040004000A2 +S315E0733D80400000400040000000000040400000009A +S315E0733D90004040004000000050000000004000007A +S315E0733DA00000400000040000000000000000000076 +S315E0733DB0000040002000600020000040000000404A +S315E0733DC0000000402000000000402000600020005A +S315E0733DD0002040204000000080600060402000200A +S315E0733DE040000040600000400040000000202000DA +S315E0733DF0402060004000000040000040004000406A +S315E0733E004000000000404000000000000040000059 +S315E0733E100000400000400040000000000000000089 +S315E0733E200000004040004010004040000040500059 +S315E0733E300000000000501000100000105000004019 +S315E0733E400000001010004000400010000000001059 +S315E0733E500010001000101000400000000040400009 +S315E0733E600050000040004000001800100000000001 +S315E0733E7000000000000800000000000000000040A1 +S315E0733E8000000008400008400040080000084000B9 +S315E0733E904000400040000000400000400040400801 +S315E0733EA00000000848000000000040000000000920 +S315E0733EB00008932200040000042000000000C00004 +S315E0733EC000000000004000000004000000004020F5 +S315E0733ED00004400000004000440000042000040495 +S315E0733EE06000040000000000000000004040140081 +S315E0733EF04040000040400000404000400040000069 +S315E0733F004000000040000000400000000400000094 +S315E0733F105000000040000000400000000040000038 +S315E0733F202000000040400000000000002020400018 +S315E0733F3020204000204000200040000020000020A8 +S315E0733F400000400060200000202000004000400098 +S315E0733F50E080606000200000200000400020400008 +S315E0733F606000400040002000202040400000000038 +S315E0733F700040000040004000404000004000004028 +S315E0733F800000000000000040000000400040000018 +S315E0733F9040000000000040000040000000400010B8 +S315E0733FA04050000040500000500000000000001038 +S315E0733FB04040100000000010001000100050004058 +S315E0733FC00000404000104000100010104040100008 +S315E0733FD01010400010004000001040100000500028 +S315E0733FE00000504010000000004000000000400058 +S315E0733FF00000000000000000000000004008000020 +S315E0734000004000000008000040000000000040008F +S315E073401040000000080000400040000040084008EF +S315E07340204001080000000008000008237800000043 +S315E073403004040400000004002000000400000000F3 +S315E0734040040000000000000404000000000000000B +S315E07340504400000000000404040420000000000093 +S315E0734060000040000000040400404010000000001F +S315E073407000404000000000000040400004000000E3 +S315E0734080004440600404000010504000000000004B +S315E07340900040404000004000200000400000004027 +S315E07340A04000000000000060600000000000406017 +S315E07340B06040000000006060600000000000406047 +S315E07340C06000000020004040C00000000020204057 +S315E07340D04040000000006040404000004000200087 +S315E07340E000400000406000000000000000404040D7 +S315E07340F00000000000404040000000000040400027 +S315E07341000000000000404000000000004040400016 +S315E073411000000000404040000000001050404000A6 +S315E07341200000401010000040000000505040800036 +S315E07341300000505050000000000000404040000076 +S315E073414010101040400000000010185040000000AE +S315E07341500000104040000000001010C00000000096 +S315E073416000000000000008004000000800000000A6 +S315E07341700000400000000808004040000000080806 +S315E073418000404000000000000040400000000008CE +S315E07341900040404000000008084840000000000866 +S315E07341A0080801002F2E00000004046424000000B8 +S315E07341B000000040000020000020006000000004C2 +S315E07341C00424204040010008002405000800400450 +S315E07341D00464646000000000004000000002001404 +S315E07341E004C04200000080000000000000000000F0 +S315E07341F0004040004000002000000000400404003E +S315E0734200000000000000000000404041400800004C +S315E0734210012028000000000000404000000000007C +S315E073422000000002001000E0226070008000004091 +S315E07342304020200000000060404060040000000061 +S315E07342400480C000000000202040400000000020F1 +S315E07342502001000800000100080000000020200093 +S315E073426000000000000000000002001000C00240E1 +S315E07342705000800000404000000000000000404015 +S315E0734280400400200000044060000000004040400D +S315E07342904000001010404041400800101110180013 +S315E07342A00000001040004080000000101000000283 +S315E07342B0001000C042405000801010000000000063 +S315E07342C0000000185840400400200000044020001D +S315E07342D0001010D0500000000000004040010000C4 +S315E07342E000000100000040000040000000000008EC +S315E07342F00800004000020018088042401000800069 +S315E07343000040404040000008080000000004002020 +S315E073431008484C00200000080848484000F0E200D6 +S315E07343200000040404446060000000000040404064 +S315E07343300000042000604040040400002020404058 +S315E07343400000042420200000000404040060000040 +S315E07343500000004040400000000400000000000040 +S315E073436000000000000000000000404040400000F4 +S315E07343700000000040400004000000000040000020 +S315E073438000004040400000000000202000000000D4 +S315E07343904000404000000000000000000000000004 +S315E07343A02060602000000000000020200000000074 +S315E07343B00040404000000000000080000000000064 +S315E07343C02020400000000000000000000000000014 +S315E07343D020000000000060200000000000000000E4 +S315E07343E00000000000000040400000000000404074 +S315E07343F00000000000000000404000000000404064 +S315E07344004000000000000040400000000000105033 +S315E07344100000000010101000000000000010404083 +S315E073442000800000104000000000000000404000E3 +S315E073443000001010505000000000000058184000B3 +S315E073444000000000000000400000000040C00000D3 +S315E07344500000000000004040000000000000000083 +S315E07344600000004040400000000000404040000073 +S315E07344700000400040400000000040404040000023 +S315E073448008080000000000000000080800000000B3 +S315E07344900808080800407E11000000040004446028 +S315E07344A060000000000040404000000020006040D3 +S315E07344B0400404040020204040000004242020002F +S315E07344C000040000042040000000000040000000EB +S315E07344D0000004000000000000000000000000007F +S315E07344E000000000000040000000000000004000F3 +S315E07344F004000000100000000000000000404000CF +S315E07345000000002020000000000000404000000092 +S315E07345100000000020000000006020202000000062 +S315E073452000604060200000000040404060000000F2 +S315E073453000000000800000002000604040000000A2 +S315E07345400000000040000000000000000000006072 +S315E07345506000000000000000000000000000004062 +S315E073456000404000000000404000000000000000F2 +S315E073457000404000000000000040400000000000E2 +S315E07345804040400000101000004040000000001062 +S315E073459010000000001000004080000000100000D2 +S315E07345A040000000004040000000000000000000F2 +S315E07345B04000000010484840000000000000004042 +S315E07345C04000001010D05040400000000000004052 +S315E07345D04000000000000000000000004000000002 +S315E07345E000080800404040000008084040400000D2 +S315E07345F00000004040004000000808000000000092 +S315E07346000000000008000000000808000800409F52 +S315E07346104700000000006424000000000000400032 +S315E073462000000000240060000000040420204040E5 +S315E073463000000000240400000000000460604020D5 +S315E07346400000000040004040000000000000000051 +S315E07346500000000000000000000000000000000001 +S315E073466000000000000040000000000010000000A1 +S315E07346700000000000004000000000002020000061 +S315E07346800000400040400000000040200040000071 +S315E07346900000206060200000000000202020000061 +S315E07346A00000004040400000000000008000000071 +S315E07346B02020000040000000000000000000000021 +S315E07346C000000000000000006060000000000000D1 +S315E07346D000004000000000000040400000000000C1 +S315E07346E040400000000000000000000000000000F1 +S315E07346F000004000000000000000400000000000E1 +S315E073470010500000000000001000000000000010D0 +S315E07347100000008000000000000000000000004080 +S315E07347204000000000000040000000001010480840 +S315E07347300000000000004000004000000000008020 +S315E07347404040000000004040000000000000000010 +S315E07347500000000040004040000000004040404040 +S315E07347600000000040000040000000000000400030 +S315E073477000000808000000000000000000000000D0 +S315E07347800000080840404000B7B60000000400404F +S315E07347900060600000000000004040000000000080 +S315E07347A02040400000000020204040000000002030 +S315E07347B020000004040004006000000000000040D4 +S315E07347C0400000040000000000000000000000004C +S315E07347D00000000000404040400000000000000080 +S315E07347E040040000000000000000000000404000AC +S315E07347F00000000000000000000000000000000060 +S315E073480000000000004020000000004040404000EF +S315E073481000000040000000000000000040000000BF +S315E0734820000000004080800000000020204000006F +S315E073483000000000000000000000000020000000FF +S315E0734840004060000000000000000000000000006F +S315E0734850004040400000000000000000000000003F +S315E0734860000000000000000000000040400000006F +S315E073487000400000000000101040400040000000BF +S315E073488000101000000000001000408000000010CF +S315E0734890100010000000000000404000000010000F +S315E07348A000000000000000404040400000000000AF +S315E07348B0004040000000009000404000000000000F +S315E07348C000404000000000000000000000000040CF +S315E07348D0400000080000004000000008004040402F +S315E07348E040000000000000400000000000000000EF +S315E07348F000000000000008000000000000404800CF +S315E073490040667D00000000000040000000000000EB +S315E0734910000000000000000020000000000000001E +S315E0734920000000000000000000000000000000002E +S315E073493060000000000000000000000000040000BA +S315E0734940000000000000000000000000000040408E +S315E073495000000000000000000040000400000000BA +S315E0734960000000000000000040400000000000006E +S315E073497000000000000000000000000000000000DE +S315E0734980000000004000000000000000404000000E +S315E0734990000000004000000000000000000000007E +S315E07349A0000000002020004000000000000000002E +S315E07349B000000000000000000000604000000000FE +S315E07349C0000000000000000000000000004000004E +S315E07349D0000000000000000000000000400000003E +S315E07349E0000000004040000000000040404000002E +S315E07349F0001000000000000000001010000000002E +S315E0734A00000040100080000010500000000000001D +S315E0734A10404000000000000050000000000000006D +S315E0734A2040404000000000001000404000000000DD +S315E0734A30008040400000000000000000000000001D +S315E0734A4000000000000000000000000008080040BD +S315E0734A5000400000080840404040000000000000AD +S315E0734A6000400000000000000000000000000000AD +S315E0734A70000000000000000040005FD80000000462 +S315E0734A80000040606000000000004040400000000D +S315E0734A9020206040400000000020204040000000DD +S315E0734AA02020204000000000044060000000000069 +S315E0734AB040404000000400000000000000000000D9 +S315E0734AC0000000000000000000404000000000000D +S315E0734AD040004004000000000000000000000000F9 +S315E0734AE0000000000000000000000000000000006D +S315E0734AF000000000000000000000000000400040DD +S315E0734B0040000000004000000000000000000000CC +S315E0734B10000000000000000000000020000000001C +S315E0734B20000000000000000000000000000000002C +S315E0734B30000000606000000000000000000000005C +S315E0734B40000000000000000000000000000000000C +S315E0734B50000000000000000000000000004040007C +S315E0734B60000000400000000000101040400000000C +S315E0734B7000000010100000000010000040800000EC +S315E0734B8000000000400000000000005040000010EC +S315E0734B9000000000000000101050504000000000BC +S315E0734BA0000000404000001010D0500000000000EC +S315E0734BB0000000404000000000000000000000001C +S315E0734BC040404000000800004040400000080040BC +S315E0734BD0404040000000004040000000000000003C +S315E0734BE00000000000000000080000000000000064 +S315E0734BF0084040640E000000000060206060000022 +S315E0734C000004400040400000200060204040000067 +S315E0734C102020606040400001200820204000000012 +S315E0734C206060604000000000400000000000000685 +S315E0734C30000000C0000000004000004000000000DB +S315E0734C4040000000000000040020000000040000A3 +S315E0734C5040000000000000000000000000010008B2 +S315E0734C6000000000000000000000000000000000EB +S315E0734C700000000000020010008000000000000049 +S315E0734C800000000000002000000000000004002087 +S315E0734C90000000000000000000000000000040007B +S315E0734CA000000001000800000000000060600000E2 +S315E0734CB000000000400000000000000200100080C9 +S315E0734CC0000000000000004000000000000040000B +S315E0734CD00000000400204040000000000040000097 +S315E0734CE00000000000000000000100081010000042 +S315E0734CF0000000004000808000000000000000001B +S315E0734D0000020010108000000000000000000000A8 +S315E0734D1010104040000000000004002040400000F6 +S315E0734D200000000000000000000040404040000129 +S315E0734D300008004000000000400000000000000092 +S315E0734D404040404000000002405040C00000000078 +S315E0734D500000000000000000400000400000000476 +S315E0734D60002000400000000040404040A86600007C +S315E0734D70000400002000200000000404002000006E +S315E0734D800020000020000000000024002000000046 +S315E0734D900100282000000004002004200000000029 +S315E0734DA000000000000000040240001080000000D4 +S315E0734DB0000000000000000000004000400000001A +S315E0734DC0040460000000040000500000400000008E +S315E0734DD00040000040000100080000400000004071 +S315E0734DE00000000000000020400040000000024088 +S315E0734DF0104080000000000000400000000000004A +S315E0734E004000000000000400602040000020002005 +S315E0734E104040000000000000204000000100080050 +S315E0734E2000400000004000000000000000000000A9 +S315E0734E3040000000020050408000000000000000C7 +S315E0734E400000000000400000000000000400204065 +S315E0734E500000000000004000000000001000400069 +S315E0734E600000010018000040000000500000400000 +S315E0734E708000000000100000000002001040800077 +S315E0734E800000000000004000000000000000000089 +S315E0734E9000000400700000000010000080000000B5 +S315E0734EA00000000000000000010008084000000058 +S315E0734EB00000000000000000080000000000000889 +S315E0734EC002001000800000000000000000000000F7 +S315E0734ED000000000000000000440680000000000CD +S315E0734EE00000484000587D0000000000000000000C +S315E0734EF00000000400200000000004000000000031 +S315E0734F00000004000000000000010008000000003B +S315E0734F100000000000000000000000000000000038 +S315E0734F200002005040800000000000404000000096 +S315E0734F3000000000000000000004002040000000B4 +S315E0734F4000000000400000000000000000000001C7 +S315E0734F5000080040000000000000000000000000B0 +S315E0734F600000200000000002001000800000000036 +S315E0734F700040400000000000002020000000000414 +S315E0734F8000200000000000000000000000000000A8 +S315E0734F9000404000000100082040000000000020AF +S315E0734FA00000000000000040400000000002001016 +S315E0734FB00080000000000000400000000000004098 +S315E0734FC040000000000400600000000000000000E4 +S315E0734FD0400000000000100040000001001800408F +S315E0734FE000000000000010000000000000404000D8 +S315E0734FF000000002005000800000000010404000F6 +S315E07350000000001000004000000000040060000093 +S315E07350100000000010404000000000000040400027 +S315E0735020000100080040000000000040000000009E +S315E07350300000004000000000000200100080000045 +S315E07350400000004040000000000000404000000007 +S315E0735050000C00204000000000000000000087E61E +S315E0735060000003431C1C606000004343181C40604F +S315E07350700000474738384040000047473838C0C0DB +S315E073508000004607303880C021410E0E7070808074 +S315E073509061410E0E7070808041010C0E607000806D +S315E07350A003031C1CE0E0000003031C1CE0E00000AB +S315E07350B00303181CC0E0000047073838C0C010006F +S315E07350C007073838C0C000004607303880C0014152 +S315E07350D00E0E7070808041010E0E707080800141FB +S315E07350E00C0E6070008043431C1CE0E00000034339 +S315E07350F01C1CE0E000004343181CC0E000000747B7 +S315E07351003838C0C0000047473838C0C0000046078B +S315E0735110303880C001410E0E7070808041010E0EF2 +S315E07351207070808041010C0E6070008043431C1CDC +S315E0735130E0E0000003031C1CE0E000000343181CDE +S315E0735140C0E0000047473838C0C00000074738382A +S315E0735150C0C000000607303880C001010E0E7070C3 +S315E0735160808041410E0E7070808001010C0E60707C +S315E0735170008043031C1CE0E0000003031C1CE0E01A +S315E073518000000303181CC0E0000007073838C0C0EE +S315E0735190000007073838C0C000000607303880C003 +S315E07351A001010E0E7070808001010E0E70708080AA +S315E07351B001010C0E6070008003031C1CE0E000002C +S315E07351C002021C1CE0E000004202181CC0E0000072 +S315E07351D006063838C0C00037C80004000004004033 +S315E07351E0400000000000004040000004040000405E +S315E07351F0400000000400004440000004000020006A +S315E07352000000000404406004000000000040400019 +S315E07352100000000400000000000000000000000031 +S315E073522000000000000000000000000000004000E5 +S315E073523000040000100000100000000000004000B1 +S315E07352400000040000040020400004400004004015 +S315E07352500000000000000000000000404000004035 +S315E07352600000004000000020000000402000000025 +S315E07352704000004000000080000000404000000055 +S315E073528000000040400000400000000000004000C5 +S315E073529000404000000000000000400000400000B5 +S315E07352A00000400000000000000000000000000065 +S315E07352B00000000000004000004040000040000095 +S315E07352C00040000000000000004000000000000005 +S315E07352D01000001000000000400000005000004085 +S315E07352E00000000000000000400010000000000015 +S315E07352F0000000000000000000180000000000003D +S315E07353000000000000000800000800000000000034 +S315E07353100000000000000000000000000000000034 +S315E07353200000000808000008000000080000000004 +S315E073533000000000000000000800000008004008BC +S315E073534000000000080000080000000008000008E4 +S315E0735350837B0000000000000000000000000000F6 +S315E0735360000000000000800000000008000000104C +S315E073537000000000000000000000000000000000D4 +S315E07353800000200000000040000000000000000064 +S315E073539000000000000000000000000000000000B4 +S315E07353A00000010000008000000000000000000023 +S315E07353B00000000000000000000000000000000094 +S315E07353C00000000000000000001000000000000074 +S315E07353D0000000000000000800000000000100006B +S315E07353E000800800000000000000000000000000DC +S315E07353F00000000000000000000000000000000054 +S315E07354000200000000000000000000000000000041 +S315E073541000000040000000000000000000000000F3 +S315E073542000000000000000600000000000000000C3 +S315E07354300000000000000000000000000000000013 +S315E073544000004000000000000000000000000000C3 +S315E073545000000000000000000000000000000000F3 +S315E073546000000000000000000000000000000000E3 +S315E073547000000000000000000000000000000000D3 +S315E073548000800000000000000080000000000000C3 +S315E073549000000000000000000000000000000000B3 +S315E07354A00000100000000000000040000000000053 +S315E07354B00000000000000000000000000000000093 +S315E07354C0000000000000000000A890000000200427 +S315E07354D04000004000000040000000000000800033 +S315E07354E04004000040000410000014000020000097 +S315E07354F0200000000060000000200000004400006F +S315E073550020400000000000000000000000000000E2 +S315E0735510000000000044400000000000000000406E +S315E0735520000000000400000000001040004440004A +S315E07355300000000000000000000000000000000012 +S315E073554040200000000000000020004000404000C2 +S315E07355500000004000000040004000000000A00092 +S315E073556000404000000000000000004000400040A2 +S315E07355700000000040004000000000000000000052 +S315E073558000200040002000000040000000200040A2 +S315E07355904000004000400000000000004000400072 +S315E07355A00020400000000000000000004000000002 +S315E07355B00000000000000000000000000000000092 +S315E07355C00000000000000000000080000000000002 +S315E07355D00000004000004000000000000050001092 +S315E07355E00040000000000000400000004010000092 +S315E07355F04000004000000800000008000000004082 +S315E07356000000000000000000000000000000000041 +S315E073561000400000000000004000000000000800A9 +S315E07356200040080000000040004001000040000018 +S315E073563000000000000000000000000000000040D1 +S315E0735640000002F300000000040000000000000008 +S315E0735650000000002000800080440000000000107D +S315E07356600420000014200040000000000020000029 +S315E073567000000000000000000020000000000000B1 +S315E07356800000000080000000000000000040000001 +S315E07356904000000000000000000000000000000071 +S315E07356A00000000000040000000000080000000095 +S315E07356B000000040000000000060004000000000B1 +S315E07356C00020000000C000000000000000000000A1 +S315E07356D00000000100000000A04000004040000010 +S315E07356E000000000400000004000400000000000A1 +S315E07356F04000004000000000006000400020000011 +S315E07357000000400000000040000040400000000040 +S315E073571000000000000040400000000000000000B0 +S315E073572000000000400040000000000000000000A0 +S315E07357300000000000000000000000000000000010 +S315E07357404000004080004000000000004000000080 +S315E07357500080000000400010800040004000000020 +S315E073576000000000000000000000000000000008D8 +S315E07357700000000800000000004000400000000048 +S315E07357800000000048000000000000000000000078 +S315E07357900000400000000008000000080000000060 +S315E07357A000000000000000000000000000000000A0 +S315E07357B00000000000080000000000AA9700000047 +S315E07357C00020400000400000004000000000004060 +S315E07357D00000000000006000000000000000000010 +S315E07357E00000002800000040000060000000004454 +S315E07357F00000004000000000000000100000000000 +S315E0735800000000000000000400000000000000003B +S315E0735810400000000000000400000000005000405B +S315E073582040000100000000000000000000000000DE +S315E073583000000000000000000000000000400000CF +S315E073584040100000400000000040400000400000AF +S315E0735850000000000000000040000000000040006F +S315E07358600000000000000040000008000001000096 +S315E0735870000000000000400000000000000000206F +S315E0735880020000000000400000000000000000007D +S315E073589000004020004000000000000000000020EF +S315E07358A0000000000000000000000000000040005F +S315E07358B0000040000000004000000000000000000F +S315E07358C0000000000000000000400000000000102F +S315E07358D000000000000000000100400000004010DE +S315E07358E0000040000040000001000000400000009E +S315E07358F0400000000000000000000000000000000F +S315E073590000000040000000000000000000001000EE +S315E073591000000040008000004000004001000840A5 +S315E0735920000000000000000000000000000000001E +S315E0735930004000005C060000000000000044280000 +S315E073594040600000000000000440002000400000BA +S315E073595020040000000000000000000000200000AA +S315E07359600000000004280000000020000000000092 +S315E073597000040000000004000000000000000000C6 +S315E0735980000000000040006000000000000000001E +S315E0735990400000804000000040100080000000409E +S315E07359A000000000000000400000004000040040DA +S315E07359B0000000000000000000004000000000004E +S315E07359C000000000C00040000000400000004800F6 +S315E07359D0400040000000C080000008000000400066 +S315E07359E0000408000040000000000008000000000A +S315E07359F000400000000820000000002000000000C6 +S315E0735A004000000000400000000008000040000075 +S315E0735A10080800200000000000000000000000807D +S315E0735A2008000000004010000000000000000000C5 +S315E0735A30004010000090000000000080000080002D +S315E0735A4000100000000000000000000000080000E5 +S315E0735A500000000000100000000000480000000095 +S315E0735A60001000A00800400000004020080000007D +S315E0735A700040000000000000000000000000004845 +S315E0735A8000000008000000000800000000000000AD +S315E0735A9000000000080860001000000000000088A5 +S315E0735AA04000000000080000002000080042F300F8 +S315E0735AB00000000400000000040000000000002065 +S315E0735AC00000000000000000000400000000040075 +S315E0735AD00000000000040000000000000000000069 +S315E0735AE00000040000000400000000000000400015 +S315E0735AF00000000400000000000000040000000441 +S315E0735B000000000004000400000000000000000430 +S315E0735B101000040000400000008000C00000008018 +S315E0735B200080A000800080000000000440000000B8 +S315E0735B30000080000040008040000080000000000C +S315E0735B4080200880800000000000008000080000CC +S315E0735B500000800000000008080000000800000054 +S315E0735B6000000840000000000040000000200040F4 +S315E0735B700000000000002000000000000400200088 +S315E0735B80000000000000000000200000000000009C +S315E0735B90002000080000000000000008800000A854 +S315E0735BA0A00008000080000080080000800000006C +S315E0735BB00080000800000000008000800000000004 +S315E0735BC00000080000080000000800000000400024 +S315E0735BD00040088000000080000000000100100013 +S315E0735BE0800800100000000008001000004000006C +S315E0735BF00008000000004000000000000000000004 +S315E0735C0000000000000800100040000800000000DB +S315E0735C10080000000800000000000000000000001B +S315E0735C200000000000108FD20000000000000000AA +S315E0735C30680400000000000000000400000020007B +S315E0735C4000042004000000000000000000040000CF +S315E0735C50200000000000040820000000200000047B +S315E0735C6000000000000000000000000400000000D7 +S315E0735C70000000000400004004000000000420005F +S315E0735C800040000000004004000050100080000057 +S315E0735C9000000000C0000000004000A00000C0004B +S315E0735CA08440000400004000100000004040000003 +S315E0735CB0000040800000804000802000C88000081B +S315E0735CC0400000C0000800C000000000880000002B +S315E0735CD040080008000800000000000048000000CB +S315E0735CE00040004000000028400000000000002053 +S315E0735CF0000040000000004020000000000000406B +S315E0735D0000200800000000000000200008000000EA +S315E0735D1000008800008000402880000800008000B2 +S315E0735D200000001000800000808000000800800002 +S315E0735D3080000080100000000000000008080008E2 +S315E0735D40000000000000000050400088000840009A +S315E0735D50800000000080080000000050000800008A +S315E0735D600008000000004000000000000000004052 +S315E0735D7000080000000008000000000010080000A2 +S315E0735D801000400008000020000018000000080022 +S315E0735D9000C0080000000000000000200008103C6E +S315E0735DA0B000002404000840040040000000000036 +S315E0735DB00000000000000000002020000400002026 +S315E0735DC0000000002000000000000020000000003A +S315E0735DD000002040000400000000040000000400FE +S315E0735DE00000000000000400000004001000000042 +S315E0735DF0004000000000004440040040600084005E +S315E0735E0000000000000040000050000000000004A5 +S315E0735E1000000000000080000040004000000040E9 +S315E0735E200080000040000000400000402000400079 +S315E0735E304004400000404000001008C0C00000006D +S315E0735E4080000000000000C00000600000004020F9 +S315E0735E500000000000000000004800200408400035 +S315E0735E60000008000020400000200000000400400D +S315E0735E7000000000000000000800000020000000A1 +S315E0735E800000000000000040000080400028000091 +S315E0735E9000002018008000000000100890000080C9 +S315E0735EA00000100810800000D80000000088000091 +S315E0735EB02000100000000000400000000080000891 +S315E0735EC000004000100000900000081000800048B9 +S315E0735ED04008000000000000880040000000000059 +S315E0735EE00000004000002000000800004000400071 +S315E0735EF000000900480000000008000808000000E0 +S315E0735F00400000400800A0000000081040000800B0 +S315E0735F1008400008000040000C1300040000040071 +S315E0735F200000040020008000000000000000000074 +S315E0735F3000002000000004000000000000000000E4 +S315E0735F400000800000000000000000000000000474 +S315E0735F5000000000000000000400000000000000E4 +S315E0735F6000000004000000000000000000000000D4 +S315E0735F7004400000004020000000400000000000E4 +S315E0735F8000800000000000000440000000000000F4 +S315E0735F900040004000000000000000000000000028 +S315E0735FA00000000040000000000004400000000014 +S315E0735FB00000000048400000000080000000000080 +S315E0735FC04000000000000000000000000000000038 +S315E0735FD000000000000000400000004800004000A0 +S315E0735FE00020000000000000000000000000000434 +S315E0735FF000000008400000000008000000000000F8 +S315E07360000080000080080000000000280000000007 +S315E0736010000000000000808000000000080010000F +S315E0736020000800000000000000000000000000000F +S315E07360300000000000008000000000000010001067 +S315E07360400000000008008000000800000000000067 +S315E0736050000800000000000000000000400000009F +S315E07360600008000000004000000000090000000086 +S315E07360700000000008000000004008000000000077 +S315E073608080000000000000000000000000000040F7 +S315E07360900075D10000000000000000004000000021 +S315E07360A00000000400000000000000002000000073 +S315E07360B00000000000002000000000000000000067 +S315E07360C00000000000400004000000000000000033 +S315E07360D00000000000000000040000000000100053 +S315E07360E00000004000000040004004000000000093 +S315E07360F00400000000000000000040000000000003 +S315E07361000010000000000000800000000000004066 +S315E07361104000000000004000000040000000400026 +S315E07361200000000000000040000000408000800096 +S315E0736130400000000000000800000000402000005E +S315E073614000000000000000000000480000000008A6 +S315E0736150000000000000000008400000000000207E +S315E07361600000200000002000000800080000000086 +S315E0736170000000000800000000400000000000205E +S315E0736180000000000000800000000000081000100E +S315E073619000000000100080000000004000000800CE +S315E07361A000002000009000000000000000000000E6 +S315E07361B0000000000000000000000008001040002E +S315E07361C00000000000000000000000000000000076 +S315E07361D00000000000004000200000000000000006 +S315E07361E04000000000004800000000000000880046 +S315E07361F000000000000010000000000000080040EE +S315E073620000000800080000000000213000200000B4 +S315E073621000084000000000000000000000000000DD +S315E073622000000000000000000020000000000000F5 +S315E073623000000000000020000000000000002000C5 +S315E073624008000000000400000000000000000000E9 +S315E073625000000000000000000000000000400000A5 +S315E07362600000000000400000008000000000000015 +S315E073627000004400100000000000008000000400ED +S315E07362800000000000000000000000008000000035 +S315E07362900000800000000000204000400000000085 +S315E07362A00000400010000000000000000000000045 +S315E07362B00080000000001000002040000000000095 +S315E07362C00000000000200000240000000000002011 +S315E07362D00000000000000004000040000000000021 +S315E07362E00000000000000020000000000000000035 +S315E07362F000000000004000000000040000100000F1 +S315E07363000000200000000000000000000000000014 +S315E07363100000000090000000800000000000000014 +S315E0736320000000004000000000000800004000008C +S315E073633000800000000000000000484000000000FC +S315E0736340000000800040000000000000000008002C +S315E073635000000000000000000000000000000000E4 +S315E07363600000080008000000000000000000400084 +S315E07363700800204000001000000008004000000004 +S315E07363800000005A56000000000000000000844040 +S315E073639000000000000000000000000000000000A4 +S315E07363A00000200000040000000000000000000070 +S315E07363B00000002000000004000000000000000060 +S315E07363C00000440000000000000000000000000030 +S315E07363D040040000000040000000000000000000E0 +S315E07363E00000004000000000000000000000000014 +S315E07363F000000000000000000000000000C0000084 +S315E073640000400000000000100000000000000000E3 +S315E07364100040000000000008400000C000000800D3 +S315E0736420400000000000000000400800000000008B +S315E073643000000000000000000008000000000000FB +S315E07364400000000000002000002000402000000053 +S315E073645000200000000000000000200000000000A3 +S315E073646020000000000000000000000000000800AB +S315E07364700000002088000000009000800800000003 +S315E07364800000000000100020009018000080081043 +S315E0736490000000000008001000000000000800186B +S315E07364A000080010000000000000080000008800EB +S315E07364B00000001010000000001800080000000043 +S315E07364C0000000100000000000004000000000081B +S315E07364D000000008100000000000000800080040FB +S315E07364E0000000000000000000000000080000004B +S315E07364F000000040400040004000000026AF00006E +S315E07365000000000000200000800020400020000012 +S315E07365100000000000000020000000000000000002 +S315E073652004000000000000000000000000400000CE +S315E073653000000000000004000000040000400400B6 +S315E0736540000000000044004000000000000000006E +S315E07365500000400040000000000000000000000062 +S315E0736560000000005000040400000000004000003A +S315E073657080000400000000000000004000004000BE +S315E07365800040800000400000000000000080000032 +S315E07365904080000000000040000000800000000022 +S315E07365A0000000000000080000000040000000004A +S315E07365B00000000000000000000000200000000062 +S315E07365C00000002000000060000040002000000092 +S315E07365D0000800000028000800000000000000002A +S315E07365E000000000000000000000080880100000B2 +S315E07365F02000000000000000000000100000208072 +S315E073660000000000000000000000000008008008A1 +S315E07366100008000800000000000000000000800091 +S315E07366208080008000008000000010000000000001 +S315E073663000000000000000080000000000000000F9 +S315E073664000000000000000004000000000000000B1 +S315E07366500000000000001000080000000000004089 +S315E073666000000000000000000000000000000000D1 +S315E07366700000000040FAF100000000000000000096 +S315E07366800000000000002000000000002000000071 +S315E07366900000000000000000040004002000200059 +S315E07366A0002000000000000000040000000000402D +S315E07366B00040000000000000000000004000000001 +S315E07366C0000000000000000000040000000000006D +S315E07366D00000000000000000400040008000000061 +S315E07366E0000000408000000000048000008000008D +S315E07366F00080000000400000004000000040000001 +S315E073670000000080080000400000000000000080E8 +S315E07367100080080008000080000000800000400050 +S315E07367200800400000000008004000000000080078 +S315E073673000000000000000000040000000000000C0 +S315E07367400000000000000000002040000000000090 +S315E073675000000000000000000000000020000000C0 +S315E073676000000000000000000000000000000010C0 +S315E07367702000000010800000100000008000000080 +S315E07367800000000000000008000000000000800820 +S315E07367908000008000001000000000000010000080 +S315E07367A000100800000000800800000800000000E8 +S315E07367B00000000000400000000008000000080030 +S315E07367C00000000000000000000000000000000070 +S315E07367D000000800400000000000001000400000C8 +S315E07367E0000800000000000000000000000088F7C9 +S315E07367F00000000020000000000000000000000020 +S315E073680000002020000000000000000000000000EF +S315E0736810206000000000000000000000000000049B +S315E0736820000000000000000000000000000000000F +S315E073683000004000000000000000000000000000BF +S315E0736840000000400004000040000000000000006B +S315E073685000040000000014000000000000000000C7 +S315E0736860000000000000008000000000000000004F +S315E0736870000000000000008000000000000000003F +S315E073688000000000000800000000000080000040E7 +S315E07368900008000000000000000000000000000097 +S315E07368A00000000000004000000000080040000007 +S315E07368B0000000002000000008000000080000004F +S315E07368C0000040000000000000000008000000081F +S315E07368D0000000000800000008000000100000003F +S315E07368E0008000002800000020008080100800006F +S315E07368F00008000000000000100000000000000027 +S315E0736900000000001000000000000000000000001E +S315E0736910000008000000800000000000000008404E +S315E0736920001000400010000000100000100000008E +S315E073693000100000001000000010000800080010AE +S315E07369400800000048400800000000000010000046 +S315E0736950100000000000000000400040100010002E +S315E07369600010001000000037F00000000000000087 +S315E073697000000000000000000000000000000000BE +S315E073698000000000000000000004000000000004A6 +S315E0736990000000002000000000200000400000001E +S315E07369A0000040004000000000000000000000000E +S315E07369B040000000004000400400000000000000BA +S315E07369C020000060000000000000000000100000DE +S315E07369D000000000000000000040000024400000BA +S315E07369E0000000400000000000000000000000000E +S315E07369F00000008000000040004800000000C00076 +S315E0736A0000804000004080400040000000000048E5 +S315E0736A100048080000400000000000000800000085 +S315E0736A200000004008000040000000400000000045 +S315E0736A3048000800002000400000004000000020ED +S315E0736A4000080000002008000008000000000000B5 +S315E0736A500008000000001000000080200000000025 +S315E0736A60800010000010000000008000001080100D +S315E0736A70880010000000000000000800000000001D +S315E0736A80000000000040001000000040000000001D +S315E0736A9010000080000000100010000000000800E5 +S315E0736AA0100000000000080000000010080000104D +S315E0736AB040000008000000000000000000000040F5 +S315E0736AC008004000000000000000000000004000E5 +S315E0736AD0400000000000000000000000000010000D +S315E0736AE013150000000000200000000020000400E1 +S315E0736AF000000040000000000000000000000040BD +S315E0736B0000000000000000000000000000004000EC +S315E0736B100000000000000000000004000000040014 +S315E0736B200040000040000040000000000000040048 +S315E0736B300040000004000000000000000400004470 +S315E0736B4000400000040000000440800000004000A4 +S315E0736B50000080408000000080000000000000001C +S315E0736B60000000000000400000800000400040008C +S315E0736B7000000000004000000000000000008000FC +S315E0736B8000000040800000000000000000080008DC +S315E0736B900000000800000000000000000000400054 +S315E0736BA0004000000000000020000000000000002C +S315E0736BB0002000000000000000000000080800004C +S315E0736BC0000000000800000000002000080000003C +S315E0736BD008000010000000000800000080000000BC +S315E0736BE000008000000000080000100000000000B4 +S315E0736BF000000000000800000000000000000888A4 +S315E0736C0000000000900000000000800050001000BB +S315E0736C100048000000400050000000000000400003 +S315E0736C20400010000000000000001000000040006B +S315E0736C3000000040000000000000000000000000BB +S315E0736C400000400000000800000000000000004063 +S315E0736C5000401000000000000066210000200000E4 +S315E0736C6000000000000000000000000000000000CB +S315E0736C70400000000000000000000000000000007B +S315E0736C8000000000000000000000000000000004A7 +S315E0736C900000000000040000000400000000400053 +S315E0736CA00000000000000000000400000000000087 +S315E0736CB00000000000000000000000000000000477 +S315E0736CC00000000400000000000000000000000067 +S315E0736CD0000000000000000000804000000010008B +S315E0736CE0000000000000000000000000004000000B +S315E0736CF000000000000000000000000000004000FB +S315E0736D00000000000000000000000000000000002A +S315E0736D10480040000000000020080000000000006A +S315E0736D20004020004000000000004000000000002A +S315E0736D3000002000000000000000000020000000BA +S315E0736D400000000020000000002000980000800092 +S315E0736D50A00000000000000000800000002000801A +S315E0736D6000000000000000000000000000000000CA +S315E0736D70100000001000000000000000000000009A +S315E0736D80000000000000000000000000800000101A +S315E0736D900000080000000000000000000000000092 +S315E0736DA00800000000400000400000000000000002 +S315E0736DB000000000001800100000000040004000D2 +S315E0736DC00000000800000000000000000000000062 +S315E0736DD00000F9820000004000000000000000009F +S315E0736DE0000000000000000000000000000040000A +S315E0736DF00000000000000024000000000000000016 +S315E0736E000000000400000000000000000000000025 +S315E0736E100040000000000000400000000000000099 +S315E0736E200000004000000004000040000000000085 +S315E0736E3000000000000040000000800000400000F9 +S315E0736E4000008000004000800000000000000000A9 +S315E0736E5000000000000040000040000040004000D9 +S315E0736E600008000000000000800000000008000039 +S315E0736E7000000000000080000040000000000000F9 +S315E0736E800800004000000000000008000000000059 +S315E0736E9040000800000020400000000000000800E9 +S315E0736EA000200020400000000000000000200000E9 +S315E0736EB00000000000000020000000000000002039 +S315E0736EC01800002000000000000020B000000080E1 +S315E0736ED000000090200000000000000800000000A1 +S315E0736EE000000000000010000008008000008080B1 +S315E0736EF00000800000000000800010001000080011 +S315E0736F0008000080080080000000001008000010F0 +S315E0736F100000001040004000000008004000100030 +S315E0736F2000100000000000000000000000001000E8 +S315E0736F300000101000100000000000400000000088 +S315E0736F401000100000001000100000996A00008025 +S315E0736F508000000000000000000000240000000034 +S315E0736F600000000020000000002000000000000088 +S315E0736F7000000004000000000000000000000000B4 +S315E0736F8000000000000004000000000000000000A4 +S315E0736F900400000000000040000000040000400010 +S315E0736FA00000000000400000000000000040000008 +S315E0736FB04400400000800080000000400080040030 +S315E0736FC00000000040004080004000000000000028 +S315E0736FD00000800000000080000040000800000010 +S315E0736FE00000000040008000000800000080000000 +S315E0736FF000000000000040000000000000000000F8 +S315E0737000000000000040000000000000480000009F +S315E073701000000000000020000000000000000000F7 +S315E073702000000000000000000000080000000008F7 +S315E0737030000000000000000000009000000010084F +S315E073704000100000000000100000000000001000B7 +S315E0737050000000000000000000000008000080004F +S315E0737060100000000000000800000000008000002F +S315E07370700000004000000000000048000000100817 +S315E0737080000040000000100000000010080000003F +S315E073709000000040100800004008000000000000F7 +S315E07370A040080000100000000000004000400000AF +S315E07370B000000000100048004000000000000000DF +S315E07370C000000000BFAD00000000200000000004D7 +S315E07370D080000044000020000000002000002040F3 +S315E07370E02000202000000004200020002000000083 +S315E07370F020000000000400000400000000000040CF +S315E07371000400040004400400404000004000000016 +S315E0737110000004000400000040440000400000004A +S315E0737120000000400000000040040090440480002A +S315E0737130000000804000800004000400808000406E +S315E07371408000400000004000000040C00000800066 +S315E07371500000804800C0084008408000888000082E +S315E0737160000048800000800080400000404000003E +S315E073717000080040000000000000080840084000D6 +S315E0737180000000482000400020000000402008086E +S315E0737190604008002060002000000800200008001E +S315E07371A00800200008000800080000000000000046 +S315E07371B008100800B0001830808028008020900006 +S315E07371C01010801080208000388000180090080826 +S315E07371D0100000000800009000100000008000001E +S315E07371E0000800800000800080008008500080085E +S315E07371F090001800405008800848105000001000B6 +S315E0737200180010100000101000000810400050180D +S315E0737210400000080000080000400808401008001D +S315E07372200000001000104040101000400000484875 +S315E07372300010405000400010401040004093D100D1 +S315E07372408020000000200000802000000000000085 +S315E07372500000002000000000000000004000002055 +S315E0737260400404000000002000000020000000201D +S315E073727000000000000040004000004000000000F5 +S315E07372800040000400000000004040004000400061 +S315E07372900040400000000060006400000040000011 +S315E07372A00000400010800084C00000000080408031 +S315E07372B04000046000800080C00000004000400091 +S315E07372C0004040000000000000C0000040080800D5 +S315E07372D00000400040800000000000008000800055 +S315E07372E040800040004000000008080000004000B5 +S315E07372F000080008400800400000400840280048A5 +S315E07373002000200020400028200800000000002014 +S315E07373100000400000200020200828000000000044 +S315E0737320200800200000200000280020B800A008F4 +S315E073733000209000802000209000801080100030A4 +S315E073734030001000180080001000000000080008EC +S315E07373500010180010080088081040081008900004 +S315E0737360C010000000001080508808101000500014 +S315E073737008005008100808100000000010080018F4 +S315E07373805000000818004810100808004018001054 +S315E073739040000840080000081040100040104010FC +S315E07373A0004000484000104848001040401010402C +S315E07373B000101000001018FB000000000000000031 +S315E07373C000040020000004800000000080800000BC +S315E07373D080000000000000000000040400000000CC +S315E07373E000000000002000000000040400400000DC +S315E07373F00004040444400000000000044040000020 +S315E07374000000000444400004000000004440000013 +S315E073741000042000404000000404041050C000043F +S315E073742004400000808040000004406080800000DB +S315E073743000004040808000000000404000000000F3 +S315E07374400000C04000000008080040C000000000D3 +S315E07374500008C0C0000000000000C040000000004B +S315E073746008084840000800000000080040080800CB +S315E07374704040000000080828606000000000000833 +S315E073748068604000000000006040000000000028D3 +S315E07374902820200000280808080000000020202883 +S315E07374A00800000000083838A0800008000030307B +S315E07374B088800000000010308080000000081810FB +S315E07374C08000000000080800000000181818088003 +S315E07374D000000008181880800000000010108080FB +S315E07374E000000008181848C000000008181840404B +S315E07374F04008004010100800400008085050400053 +S315E07375000008084858501000000000084840000082 +S315E07375100010185050400000000010084040000072 +S315E073752000081810404000000010101000000029F9 +S315E0737530160000000000606040000000000040009C +S315E073754000200000A02060C0C00000002000404082 +S315E073755001000C0464050008004000006060400010 +S315E0737560000004044444000002001404C4460010FE +S315E073757000800000040400000000000004044040A2 +S315E0737580000020004040002000000404404000401A +S315E073759004040404101081800C0400018088000048 +S315E07375A000004404E0E00000000000408080828038 +S315E07375B01000C04240500080000040404000000090 +S315E07375C008080000808004002000C88CC0600000BA +S315E07375D00000C0C000000000000048080140000041 +S315E07375E04001000000000808400040400000080821 +S315E07375F02828206002001000E86A2030008000002E +S315E0737600604040400000000008082020040008089D +S315E0737610080C00200000202028280000000008281D +S315E0737620B0A0818000005031909080C000000000CF +S315E073763090B0808000000818808002001000800AF5 +S315E07376400010008008081018008000000808989859 +S315E0737650C0C0040030109054C0E0000018180858F9 +S315E07376608080000008185810010000000001101017 +S315E07376700000080840404040000008085858405051 +S315E073768002001000884A001000800000101000000D +S315E07376900000001048480000040038181014002059 +S315E07376A00000101050100000E69C0000000000403F +S315E07376B040206000000000004040C0000000000071 +S315E07376C020004000000020202040400404042420D1 +S315E07376D02000000000000020600000040404044061 +S315E07376E040000004040404000000000000040400E9 +S315E07376F00000000000040440400000000040400029 +S315E07377000000002424404040400404040410108028 +S315E07377100000040000808000000000444460E00044 +S315E0737720000000000080C0808000000000000000C0 +S315E073773080000040400000000000080000808000E8 +S315E07377400000004848C0C0000000008080000000D0 +S315E07377500000080840400000000000000000000040 +S315E073776008000000000000000828286020000000E0 +S315E073777000684020200000000000000000000000C8 +S315E07377800028082000000008080808000000000030 +S315E0737790000808000000000808A0908000000010B0 +S315E07377A010908080800000101080808000000018A8 +S315E07377B01000800000000008080000008000081830 +S315E07377C01880800000080818188080000010105098 +S315E07377D09080800000101848080000000010181010 +S315E07377E01000000000000010100000080848404038 +S315E07377F000000000085850404000000000084000B8 +S315E073780000000000001010000000001000080800DF +S315E0737810000000181800000000000010001050402F +S315E073782040A35C00800000000000206000000000C0 +S315E073783000404040000000000020004000000020AF +S315E073784020204040040404242020000000000000AF +S315E07378500040000004040404000000000400000477 +S315E073786000000000000004040000000000000004B3 +S315E07378704040000000004000000000000404404067 +S315E0737880000004040004101000000404000080806B +S315E0737890808000004404E0E0800000000000808007 +S315E07378A0808000000040404000000000404000003F +S315E07378B0000008000000808000000000C888008097 +S315E07378C000000000C0C0000000000000480800404F +S315E07378D000000000000000000808000040400000BF +S315E07378E0080808082060000000006868202000008F +S315E07378F000004040404000000000002800200000E7 +S315E07379000800000800000000202020280000000086 +S315E07379100028B8B0808000000000A0A0808000003E +S315E073792000009090808000001018808000000000B6 +S315E0737930000800000000100810180000000018107E +S315E0737940C8C88080000010105010808000000008C6 +S315E07379500840C0C00000080818104040000000004E +S315E0737960101000000808404040000000080818584E +S315E073797050400000000008480000000008000000C6 +S315E07379800000000000000808000000001018100056 +S315E073799000000000000010504040BD3500000000BC +S315E07379A0002020400000000000400000000000209E +S315E07379B020604040000000200040400000040424A2 +S315E07379C004000000000000606060200000040444CE +S315E07379D04440400000000000000000000000000486 +S315E07379E004000000000000000040400000000000BA +S315E07379F0000000000024244040004004040000100E +S315E0737A0010000000000000808080000000444460A5 +S315E0737A106080800000000080C080800000400040ED +S315E0737A204000000000404000000000000800408075 +S315E0737A30800000000048C88080000000008080005D +S315E0737A40000000000000404000000000000000005D +S315E0737A50000000000000000000000008084020005D +S315E0737A60000000000000200000000000000000009D +S315E0737A70000000200020000000000000000000006D +S315E0737A80000000000000000000080090980000006D +S315E0737A90000000808080800000100080800000007D +S315E0737AA0001810101000000000080000000000002D +S315E0737AB00818100000000010105858C0C0000010DD +S315E0737AC0101050C04000000008400840400000001D +S315E0737AD00010104040000000001010000008084835 +S315E0737AE0400000000000005010404000000000001D +S315E0737AF040000000000000100000000000000008D5 +S315E0737B00080000000018100000000000000000509C +S315E0737B10100000A23A0000000000000020600000A0 +S315E0737B20000000004040000000000020004000001C +S315E0737B3000002020404004040404202000000000DC +S315E0737B4000002060000004040000404000000400D0 +S315E0737B5000040000000000000000000000000000C8 +S315E0737B604004400000000000004040400000000078 +S315E0737B700000004000000004100000000400000054 +S315E0737B800000808000000404800000000000000014 +S315E0737B9080800000000040400040000000000000CC +S315E0737BA00000000008080000808000000000C8881C +S315E0737BB0C0C000000000C0C00000000000004048E4 +S315E0737BC04040000000000000000008000000004094 +S315E0737BD0000008000000606000000000002820201C +S315E0737BE00000000040004040000000000008202034 +S315E0737BF000000800000800000000202000080000D4 +S315E0737C0000000810B0B000800000002080908080F3 +S315E0737C1000000000808000800000080880000000FB +S315E0737C20000000080000000008080008008000005B +S315E0737C3008004040808000000000C0808080000023 +S315E0737C40181840084040000018101010000000009B +S315E0737C500000101000000000000000400000080063 +S315E0737C6050181010000000004008000000000000EB +S315E0737C701000000000001000000000000000080083 +S315E0737C80100000000000001050104040B48F000058 +S315E0737C90000000000040000000000000000000004B +S315E0737CA00000002000400000000000000000000417 +S315E0737CB0040404000000000000000040000000041B +S315E0737CC00400000000000000000000000000000057 +S315E0737CD0000000000000000000000000000000004B +S315E0737CE0004000400000000000000040000000007B +S315E0737CF00010100000000400000000800000004443 +S315E0737D000400800000000000008080000000000096 +S315E0737D1000400000000000000000000000000000CA +S315E0737D20008080000000000888008000000000C02A +S315E0737D30C000000000000048404040000000000022 +S315E0737D40000000000800004000000000080000404A +S315E0737D504000000000684000000000000000404062 +S315E0737D6040000000002020202000000000000000FA +S315E0737D700000000000000000000000000020A0806A +S315E0737D80000000000090808000000010108080806A +S315E0737D900000000000008000000000000800000002 +S315E0737DA000000000088000000000005050800000D2 +S315E0737DB000000010C080000000001000404040004A +S315E0737DC000101810100000000000101000000000F2 +S315E0737DD000000040000000000818101010000000BA +S315E0737DE00008400000000000001010004000000092 +S315E0737DF010000000000000000010000000000010FA +S315E0737E0000105000005AB800000000004040606067 +S315E0737E100000000000406040000000002020404069 +S315E0737E2000000020202040400404042420200000A9 +S315E0737E3000000000606000000404000040400000A1 +S315E0737E4004000004000000000000000000000000D1 +S315E0737E500000000440000000000040000000000045 +S315E0737E6000000000000000000004000000000000B5 +S315E0737E7000000000808000000404000000000000A1 +S315E0737E800000000000000000000010000000000089 +S315E0737E9000C0000000000000000000800000000049 +S315E0737EA0C888C0C0000000008080000000000000A9 +S315E0737EB00000000000000000000000000000000069 +S315E0737EC000400000000000002020000000000000D9 +S315E0737ED02060000000004000000000000000202841 +S315E0737EE00020000008000008000000000000000801 +S315E0737EF0000000000800B0B0000000000000800041 +S315E0737F008080000000008010000000000000100078 +S315E0737F1000000000000800000000000800080000F0 +S315E0737F200000080080000080000000005050808050 +S315E0737F300000000840080080000010001010404068 +S315E0737F400000000010100000000010101040000048 +S315E0737F5000004000000000000000400040400000C8 +S315E0737F601000405000000000100000000000000008 +S315E0737F7008001000000000001000105040400F7120 +S315E0737F800000000000606060600000000440006074 +S315E0737F9040000020206060404000002000606040A8 +S315E0737FA04000052408206000000000606040400047 +S315E0737FB00000044040000000000002001000C00012 +S315E0737FC000000040000040000000000000000000D8 +S315E0737FD00000040000400000000000000000000004 +S315E0737FE000000000404040000100080000800000EF +S315E0737FF00004000000000000000000000000000024 +S315E07380000200101080000000000000000000000075 +S315E073801000000000400000000408A080000000009B +S315E07380200000800040000000000000000000010036 +S315E0738030080000000000000000400000000000405F +S315E07380400000000000000200104080000000000005 +S315E07380504000000000000020202000000000040023 +S315E073806000000000000000000000000000000000B7 +S315E0738070000000000100080040000000001010003E +S315E07380800000000000000010100000000200000075 +S315E0738090800000000000000000000000001010C027 +S315E07380A040000000045070C0400000000000400033 +S315E07380B000000000001000404000010008101000AE +S315E07380C000000010104000000000000000000000F7 +S315E07380D0000002005040C000000000504000000065 +S315E07380E00000100000004000000004402000400043 +S315E07380F0000000400040408D040000000000004096 +S315E0738100400000000084044000400080000040000E +S315E073811040000000000040000040000500080040F9 +S315E073812000000000400040000000000440000040F2 +S315E07381300000000200540080000000000000000010 +S315E073814000000000400400400000000444004000CA +S315E073815000002000000000000000000000400080E6 +S315E07381600005000800004080000004400000008025 +S315E073817000000040000000000002401040808000D4 +S315E0738180000080000040000008000040008000000E +S315E073819000040820800000000000000000000000DA +S315E07381A0080000080000000100080800400000080D +S315E07381B04000000000000000200000000000000204 +S315E07381C0083040800000000000000000000000005E +S315E07381D000280000000008040008200000000000EA +S315E07381E0200800000000180010800000000100085D +S315E07381F008400000000000000000000000000008D6 +S315E0738200000000000002080010800000081008005B +S315E0738210000000000800104040800000000400E009 +S315E073822040800000080008100000000008004800C5 +S315E07382300000000110080810400000000000401024 +S315E0738240000000080840000000000002081010C09B +S315E07382500000000040000040000000000040000005 +S315E07382600000000C00200000000000000010000079 +S315E0738270D33B000000000000008000000000040013 +S315E07382800000000000000000000000000000000095 +S315E07382900000000001040800400000000000000038 +S315E07382A0000000000000000000000000060010401F +S315E07382B08000000000004040000000000000000065 +S315E07382C000000000040020000000000000000040F1 +S315E07382D00000000400004040000001000800400078 +S315E07382E000000000000000000000000040400000B5 +S315E07382F0000002001000800000000000C0000000D3 +S315E07383000000000000400000000004002080000030 +S315E0738310000000008040000000000800000000003C +S315E073832001000800400000000000000000000000AB +S315E0738330080040000000000002001000800000000A +S315E073834000002000000000000000000000000000B4 +S315E073835004002000000000000000000000000000A0 +S315E07383602008008000000100382040000000000073 +S315E07383701030008000000000101080000000020042 +S315E07383801000800000000000008000000000100074 +S315E07383908000000000000410A00000000000000050 +S315E07383A000C000000000101000000000010008107B +S315E07383B040000000000810000000000000001000FC +S315E07383C0000000000200500080000000180000006A +S315E07383D00000000010004040000000000410604000 +S315E07383E0000000000000000000D7880000A3A31C73 +S315E07383F01C606000002303181C4060002087073868 +S315E0738400384040202007073838C0C02020060730A0 +S315E07384103880C021210E0E7070808021010E0E709F +S315E073842070808001010C0E6070008003031C1CE0F9 +S315E0738430E0000003031C1CE0E000000303181CC00B +S315E0738440E0000007473838C0C0000007073838C077 +S315E0738450C000000607303880C001010E0E707080D0 +S315E07384608061010E0E7070808041010C0E607000A9 +S315E07384708003031C1CE0E0000003031C1CE0E00027 +S315E0738480000343181CC0E0000047473838C0C000FB +S315E07384900007473838C0C000004607303880C0014F +S315E07384A0010E0E7070808041210E0E7070808061B7 +S315E07384B0410C0E6070008063431C1CE0E0000063B7 +S315E07384C0231C1CE0E000002303181CC0E000200717 +S315E07384D0073838C0C0000007073838C0C020000628 +S315E07384E007303880C011010E0E7070808001010E66 +S315E07384F00E7070808001010C0E6070009003031C97 +S315E07385001CE0E0100003031C1CE0E000000303180A +S315E07385101CC0E0001007073838C0C00000070738F2 +S315E073852038C0C000004607303880C001410E0E7077 +S315E073853070808041410E0E7070808041010C0E6038 +S315E073854070008003431C1CE0E0000002021C1CE088 +S315E0738550E000000202181CC0E0000006463838C18D +S315E0738560C1006AA3000000000000202000000000A4 +S315E07385700000000000000000202000000000000062 +S315E07385802020000000000000202000000000000012 +S315E07385902020000000000000000004040000040432 +S315E07385A0000004000000040000000400000004045E +S315E07385B0000004000000000000000000040000005A +S315E07385C00000000000040010040010000404000022 +S315E07385D0040000000000000000006000000000409E +S315E07385E000000000000000000000000000000080B2 +S315E07385F00000800008088000000000C0080000004A +S315E07386000000404008080080000080400008000039 +S315E07386100800400000000008000008080000080891 +S315E07386204000080020000000604000080040080099 +S315E073863020400800002000006000080820000800C1 +S315E07386402000080800000820000008080000080061 +S315E07386500000080000002000008000000000100009 +S315E07386608088000008000000080800000800000089 +S315E07386700808000008100000180800001800000041 +S315E07386800800000000100000080800000018000051 +S315E07386900808000008080000080800000800400009 +S315E07386A000000000004000080040000800000808D1 +S315E07386B04000080050000808000008100000100889 +S315E07386C040001000000000100000181000000800C1 +S315E07386D000000010000000004040005860000000F9 +S315E07386E00000000000000000000000000000000031 +S315E07386F00000000000200000000000000000000001 +S315E07387000000000000000000000000000000000010 +S315E07387100000000000000000000000000000000000 +S315E07387200000000000000000000000000000600090 +S315E073873000000000000000000000000000000010D0 +S315E073874000000000000000000000000000000000D0 +S315E073875000000000000000000000000000000000C0 +S315E073876000000000000000000000000000000000B0 +S315E07387700000000040000000000000000000000060 +S315E07387800000000000000000000000008000000010 +S315E07387900000000000000000000000000000000080 +S315E07387A00000000000000000000000000000000070 +S315E07387B00000200000000000000000000000000040 +S315E07387C00000000000000000000000000000000050 +S315E07387D000000000000080000000000000000000C0 +S315E07387E000000000000000002000000040000000D0 +S315E07387F00000000000000000000000000000000020 +S315E0738800000000000000000000000000000000000F +S315E073881000000000000000000000000000000000FF +S315E073882000000000000000000000000000000000EF +S315E073883000000000000000000000000000000000DF +S315E073884000000000000000000000000000000000CF +S315E0738850000000005A74002000000400400000008D +S315E073886080400000004000200040000000800000CF +S315E073887020400020004000000000000000000400DB +S315E0738880000004000000000000400000040000083F +S315E0738890400040400000400000000000040000007B +S315E07388A000000000004000000000000040000004EB +S315E07388B000000000000000008000000000000400DB +S315E07388C000000000000004040080000000C00040C7 +S315E07388D00000004000000000000000004000C000FF +S315E07388E0000000000000884000008000400840005F +S315E07388F00000000000804000000800C0000800404F +S315E0738900002840000000000000200000402800001E +S315E073891040482000400028004020080040004800FE +S315E07389204000000040000000000000000800000066 +S315E0738930000000004000000000000000000000009E +S315E073894008000000082800000080200000A0000056 +S315E073895000200800080000000800000000800010F6 +S315E0738960000000000000000000000000008000002E +S315E073897000008000009000005000001000008000AE +S315E0738980000000400000C00000004000000000400E +S315E07389900000200000000000000000000018000046 +S315E07389A008000020000000200000080000000040DE +S315E07389B00008400840080000000080000000100036 +S315E07389C0001000000000000000000800082C9F0063 +S315E07389D000000024000000000000000000000060BA +S315E07389E0000000400040008000000040002000408E +S315E07389F0000000000000040000000000000000001A +S315E0738A000000400000040000000440000400000081 +S315E0738A1000000000000400001000000000000040A9 +S315E0738A2000000000000000000000000000000000ED +S315E0738A300000000000000084000000000000000455 +S315E0738A4010040000000000404000000040000000F9 +S315E0738A5000000040400000800000000000000008B5 +S315E0738A600000800040000000000000000000880065 +S315E0738A7000400080000008000000000000000000D5 +S315E0738A80000000000000000000002800000008005D +S315E0738A900000200000000800000000000040000015 +S315E0738AA000400020000020000000000040000000AD +S315E0738AB0000000000000000000080000000008004D +S315E0738AC000000084400000800000200800080010C9 +S315E0738AD00008000000000000100000000000000025 +S315E0738AE000000000000080000000008000008000AD +S315E0738AF0004080000040800000000000400000C09D +S315E0738B0000000000000000000040002000000000AC +S315E0738B1000000800000000080008000000000000E4 +S315E0738B20200000080040000800004810000008001C +S315E0738B3000000000000000000000000000000000DC +S315E0738B40000800000000A2B300002000000040000F +S315E0738B50008000400040000000200000000000009C +S315E0738B60002000000000000000000000000000008C +S315E0738B700000000004000000000000000000000098 +S315E0738B8000480000000040004000000000000000C4 +S315E0738B900000040000000000000000000000400038 +S315E0738BA000000400000000000000800000000000E8 +S315E0738BB04000048000004000000000800000008058 +S315E0738BC000000000000000100000000000000040FC +S315E0738BD02000000040000000804000000000000814 +S315E0738BE040000000000000004000000800C00000E4 +S315E0738BF000400028400000000000002040004020B4 +S315E0738C00080040004000400020004000080040009B +S315E0738C1040004000800000080000000000000800EB +S315E0738C2000000000200000000000200000080000A3 +S315E0738C300000000000000820001000200000000083 +S315E0738C402000080000000000808010000000008013 +S315E0738C5000000800000000000000808000000000B3 +S315E0738C60000000000000000010001000001000007B +S315E0738C702000000000000000080000004000000033 +S315E0738C80080000000000000800000000000000106B +S315E0738C90000000000000200000000000000000005B +S315E0738CA00000400000400800000000008000000063 +S315E0738CB01000001000000000000000000800080D1E +S315E0738CC0F5000880000004800050000000000000FA +S315E0738CD0180000000000000010000000040004000B +S315E0738CE000000400400000000400000400000400DB +S315E0738CF000000004040000140000140000000400E7 +S315E0738D000000000040001000001000400004104016 +S315E0738D100000004000008000000410000000000026 +S315E0738D2000000000000000000000C0008400800026 +S315E0738D300000400000040000801000000000008086 +S315E0738D401000000000000000000000000000009822 +S315E0738D500C800008001000602000000000C0C8000E +S315E0738D6000400440000010000040200000080000AE +S315E0738D7040040004000008000000100840002000D2 +S315E0738D802000080040002010000008004008200082 +S315E0738D90400000084000002020080000000000802A +S315E0738DA0000840000000800010000000040808106E +S315E0738DB00004800000005080100010200000208026 +S315E0738DC02000004020000040400880400020200042 +S315E0738DD000000020000800080800000000002110D1 +S315E0738DE00000002100008000000000800000008089 +S315E0738DF00008008000002000000000004000001022 +S315E0738E0000000000000020000000000000000009E0 +S315E0738E102000000000000040002000000000000079 +S315E0738E200020002000000000000020000800000081 +S315E0738E30200010000008000071E700000400000045 +S315E0738E400000000400401040000000040000000031 +S315E0738E500400000044001000000000001008001435 +S315E0738E604000000010000000000008000800000049 +S315E0738E704004000000000400100004080004000031 +S315E0738E80000020000C400000040004000000000015 +S315E0738E90000000000000040040100400008004009D +S315E0738EA08000000000004000000080000000804069 +S315E0738EB0800004C400000000400410000420000099 +S315E0738EC0400000C400009000400000008000200CC9 +S315E0738ED08008001000000000002000800080000081 +S315E0738EE0080000140800000800000080000040003D +S315E0738EF08020000000080000080400000000000065 +S315E0738F0000001020000000000000000400000000D4 +S315E0738F100000008000041040000000802000200064 +S315E0738F200000000000200080000000001010000028 +S315E0738F300040008000800040008000A000008000B8 +S315E0738F400020002000000000080000000010200050 +S315E0738F5020200000800000800000000880002000D0 +S315E0738F600080000000008000008000401000204078 +S315E0738F7000000008000020204000000008200000E8 +S315E0738F8000000000002000200000000020201000F8 +S315E0738F900000000000400080000000000800004070 +S315E0738FA000000880000000000000080800000000D0 +S315E0738FB0003D2100080400000480500004004010C6 +S315E0738FC0004000200004000004000000044010008C +S315E0738FD00000000000140800000000040014000004 +S315E0738FE004000800000800001440040000040000B8 +S315E0738FF00010000000080440001010004804400010 +S315E0739000044000044000000000000004001000006B +S315E0739010000010000000008000000000800004C023 +S315E0739020800000804000000480408400844000009B +S315E0739030C0000410040000000040000004809000AB +S315E0739040D8000008080000208448082000104080FB +S315E0739050008060000080008008000040180408006B +S315E073906000000000000000400800002008004800EF +S315E07390702008200000000040200000100008004097 +S315E0739080200040000C00004000200028000004107F +S315E0739090C000080080200000800000100000280453 +S315E07390A09800040000101800009010002010008053 +S315E07390B040A0802000800080000000200000003087 +S315E07390C0000000000000100820082800008000005F +S315E07390D080110000A00800000080800080000080FE +S315E07390E08000880010400020400000000800200047 +S315E07390F0300000000800200000200000000000207F +S315E07391002000000000202010000000200000004036 +S315E07391100000002028000000004000080000000066 +S315E07391200020002808100801000059860008140082 +S315E07391300400000000004000000000000028040066 +S315E0739140000010000C000000005000040054000002 +S315E07391500400000000000000000000000040000072 +S315E0739160000020000020000000040804080010003E +S315E0739170000010005004001000004440100000008E +S315E07391800000004000000000000060004000048022 +S315E073919040100004000000200400004000000410AA +S315E07391A000002080002080804400008420000000BE +S315E07391B000540000400400B040002000440008085A +S315E07391C00080404000000008040010008040000862 +S315E07391D004A80020804800400800100000008000CA +S315E07391E0100020000000001044401024000400002A +S315E07391F010080040006000083008004400000400D6 +S315E0739200A0200800002008080000004800000010B5 +S315E073921000000008000048300060000000400000D5 +S315E0739220000000800010000020080000008000901D +S315E073923000000800400000008800000000300800CD +S315E0739240000800000008200800002808000040001D +S315E07392500080000080881088000058A000E00800B5 +S315E073926040001000180000002000200800300000C5 +S315E073927008100000480048300000602800400808E5 +S315E07392800000080028000000000020082000080005 +S315E07392900048000000080000000008080000000015 +S315E07392A0208008159300000404000000000C008081 +S315E07392B000000000000000080080100000040000B9 +S315E07392C0000000101004000004000000000000001D +S315E07392D00000000000000000000000040000000031 +S315E07392E000000004040810000000100000000000F5 +S315E07392F00080004000000000004000000000000015 +S315E07393000000600040000004400000000000000020 +S315E073931000000000000000000010000000002000C4 +S315E073932000400000000000400400102440000000EC +S315E073933010E00020408400004000000000000000C0 +S315E07393400008000480000000000800800000004070 +S315E07393501000001000001000000000200000000064 +S315E07393600410000000040004100000280000002030 +S315E073937000000000000400048020000000000800E4 +S315E07393800000000000000000000000000000000084 +S315E07393902080400000000004800000008000081078 +S315E07393A000200800000000004000000800400000B4 +S315E07393B088000000000000200000000000000000AC +S315E07393C0000020000000000000000000000008001C +S315E07393D0000000002000400000400000080000008C +S315E07393E000000000200000200000000000000000E4 +S315E07393F02000000000104800000800000008000884 +S315E073940000000020000008001000000000000000CB +S315E0739410000000080000000800000188B2490080DF +S315E07394201000000000000000402000000000000073 +S315E0739430840000000000000000000000000000202F +S315E073944004000000000024000000000080000040DB +S315E07394500000002000000000000000000000000093 +S315E073946000000000000040040000000004900000CB +S315E07394700000000000000000000000000000000093 +S315E07394800000000010240000000400040040000007 +S315E073949004000000000000000000001000008000DF +S315E07394A0000000000000000400000400000000401B +S315E07394B000080040000040000000040000000000C7 +S315E07394C040040000080000000008400000000000AF +S315E07394D0800800000000000000000000000020008B +S315E07394E000000000004000000000000000400000A3 +S315E07394F000000000080000002000080000080000DB +S315E073950000000000000000080000102000000000CA +S315E07395101000000000000000000000000000008062 +S315E0739520000080000000000000400000000000081A +S315E0739530900000000800000020088000100800205A +S315E07395404080008008000000100880400800002872 +S315E07395500000000010300000000020000000000052 +S315E073956010080000004800004000000000000800FA +S315E07395700000000800000040000000000028000022 +S315E07395800000000800000000000000000000080072 +S315E07395900000004000F9D60008000000000000005B +S315E07395A0900000000000000020002000000008008A +S315E07395B000000000004000005000000000200000A2 +S315E07395C00000000000000000000000000000000042 +S315E07395D020000000000800000000001000000010EA +S315E07395E00000001000004000000000000000004092 +S315E07395F0000004800400000000008000000080008A +S315E07396000000200000008000000000802000008041 +S315E073961000808004000004200000004040800000C9 +S315E07396200000000000000000000800002080000039 +S315E07396300000000010000000000000000020A00001 +S315E073964000080000000000000000001000000000A9 +S315E07396500000084040100000000000000000000019 +S315E073966040002810080020000000000000200000E1 +S315E07396700000000000004000000010000000000839 +S315E073968040000000000000004000000400000000FD +S315E073969000008000000000000000001000000000E1 +S315E07396A00000000000000000000000000000000061 +S315E07396B008000000000800000000000000008000C1 +S315E07396C0408000000010C000008000000000000031 +S315E07396D000000000002008000000000000100000F9 +S315E07396E00800001000E000200000000000000020E9 +S315E07396F00000800000000000000000004000001041 +S315E073970008000000000000400000002000005DAD8E +S315E073971000000410000400100000000000002000A8 +S315E073972000001400080400000000080000000000B8 +S315E07397300000000000000800102000000444001838 +S315E073974000080000040400040000000000000004A8 +S315E07397500000000400000800001000000000000094 +S315E073976000000000000000000000000000000000A0 +S315E073977000000000100040000004001000008000AC +S315E07397800000000010009000800084004400002078 +S315E07397900000002040004000001000005000004030 +S315E07397A000400804080000480040A00000000000E4 +S315E07397B000108044800000100000000000000000EC +S315E07397C00000201004002040002000000400000088 +S315E07397D000100004000000040008202000000008C8 +S315E07397E000000010000000000000200000100000E0 +S315E07397F000200000100000001000000000000000D0 +S315E07398000000000008200400000000000080000053 +S315E07398108000200800800020002000000000000087 +S315E0739820004020802008000008000040000080000F +S315E073983008800080000000008080000000000000C7 +S315E07398400000000060001000000000000020080027 +S315E07398500000000820000000000000002000000067 +S315E073986010000000300040002000102000000000CF +S315E073987000000000200000082000080000400010EF +S315E073988000000010000020444400008080000000C7 +S315E073989000040008880000000800000004000000CF +S315E07398A0000000000000000008000400000004004F +S315E07398B000000000002010000000004000000000DF +S315E07398C008000000000818000000000000000044D3 +S315E07398D0140000000000000000100040100040007B +S315E07398E000404400000004400000000004800000D3 +S315E07398F00400000084000000804004004000000083 +S315E073990020000000200010000000006010800004BA +S315E07399100010000000000C000800000400000020A6 +S315E07399208000000C8000000008400000000000008A +S315E0739930000010000020100000001000000000007E +S315E0739940000000000020000010002000102000003E +S315E07399500000000000040020000000084020002002 +S315E0739960600000000020000000000000000000001E +S315E0739970000000000010000000000000000000007E +S315E0739980000000200080000460000008A0000000D2 +S315E0739990800080000000200020800000000080200E +S315E07399A000000020800000000000000000609000CE +S315E07399B010000000400000800020008000000000DE +S315E07399C000000000000000000800000000000840EE +S315E07399D000000020000000002000000000000000EE +S315E07399E000002800000000000000102000000020A6 +S315E07399F000000000000000000800100000010100F4 +S315E0739A00FFBC001008080000081000040000000006 +S315E0739A1008000800080000100004080000001400A5 +S315E0739A20000000000000081000000C0000000008B1 +S315E0739A3000000000000008000400000008000000B9 +S315E0739A40001800000010000800000040000010003D +S315E0739A504000000004000400000000000000000065 +S315E0739A600000000004000000840080000000400055 +S315E0739A700000004080000004500410000004000061 +S315E0739A80840080040004000010000000840080302D +S315E0739A90000020100004000000000400002000080D +S315E0739AA000088000000000140004000000000400B9 +S315E0739AB000440000000008100000100000000004DD +S315E0739AC000080000000020000000100000082000DD +S315E0739AD000000000200000000000200000000020CD +S315E0739AE004001000000000001040000000000000B9 +S315E0739AF020000000800020802000000080008000AD +S315E0739B0008000000000000000040000000000000B4 +S315E0739B1000000000000000000008E0000000000004 +S315E0739B200800002010001000002000000000000074 +S315E0739B3090200000400000000010000800000000C4 +S315E0739B40100000001000200000000000100000204C +S315E0739B5040000000400000000020080000200010D4 +S315E0739B600000101000000000000000000008200054 +S315E0739B700020000008000808007B960080000000C3 +S315E0739B800010040000000000000004000000000064 +S315E0739B9000080000000000400010040000000014FC +S315E0739BA004004010000008000400040000100000E8 +S315E0739BB00000000000000000000000000040000804 +S315E0739BC000000000000000000000000000004000FC +S315E0739BD000100000000000000000000050000000CC +S315E0739BE00000100000000000000400800000000088 +S315E0739BF000000040000080100000440000000000F8 +S315E0739C00000020C0000000200000000800000800EB +S315E0739C1008000000001008000000000000080800BB +S315E0739C200820000020000000004000000000400013 +S315E0739C3008000008000000080000000008000000AB +S315E0739C4000000800000000000000000408000004A3 +S315E0739C50000000100000102000000000000000006B +S315E0739C6004000000000000200090800000000080E7 +S315E0739C7000000020000020000020800080404000AB +S315E0739C80000880000000000000404000080040002B +S315E0739C9040000000000020004000008080080000C3 +S315E0739CA08000000000008000400000C0000000005B +S315E0739CB0400000000000000000006000004000006B +S315E0739CC0000040000000000000100000002040008B +S315E0739CD0002040000008100800000008000008009B +S315E0739CE008000000000000000000000000000020F3 +S315E0739CF00000A554000004100000000000000000FE +S315E0739D00000400000000041000000450000400008A +S315E0739D1000000000000400000000000000002400C2 +S315E0739D20000000000000000000004000000000009A +S315E0739D3000000000000400000804000000040000B6 +S315E0739D40000000000000000000000000400000007A +S315E0739D504000400000000084400000000400001052 +S315E0739D6000100400000000040000008000000400FE +S315E0739D700000000000004000000000000000000446 +S315E0739D800080084090080040100800000000004082 +S315E0739D90000800000080000040A0100000000000F2 +S315E0739DA00000000000000008000000000000000052 +S315E0739DB000201810000000100000000000080010DA +S315E0739DC000000408002000000000001400000000FA +S315E0739DD00010000000140000000000142000004092 +S315E0739DE0000000000080000000000000000020007A +S315E0739DF000000800080020082000000000000000B2 +S315E0739E00A000000000000000002000000040800079 +S315E0739E100000000000000000000000401000800019 +S315E0739E2000000000000010000000000000000000C9 +S315E0739E300000000800004000080800000000002051 +S315E0739E400000002000000000000000000800200071 +S315E0739E500000000000082000000000200008001049 +S315E0739E6000000040002000000000003B2E001800B8 +S315E0739E70040000000000000000080000000000007D +S315E0739E80080010000000000000000000000410004D +S315E0739E9000080000040000000040000010440004C5 +S315E0739EA000400000000000000810000004000000FD +S315E0739EB00050001000401000000000001044000045 +S315E0739EC010000040000000000000000010000000D9 +S315E0739ED00000008000000000008000401000008059 +S315E0739EE000C0000400000020100000A02000001451 +S315E0739EF000000000800000001080000000000400F5 +S315E0739F000000200000048000000010800084100030 +S315E0739F1000040000001000000000000000280000AC +S315E0739F2000200000082020084800000000400000E0 +S315E0739F30000000300008000000001000100004006C +S315E0739F402000000000000000000000040020000074 +S315E0739F500000000000001000000000006000000038 +S315E0739F6000400000204000000000000000000000F8 +S315E0739F700080200000680040000000000020000020 +S315E0739F800000000000802000008080008020000038 +S315E0739F9000000000000000000000000000800020C8 +S315E0739FA020000000000000000008002000000020F0 +S315E0739FB00000000000002000000020000000000008 +S315E0739FC000302000000000000000000010080000D0 +S315E0739FD000202000000800000000000020080000B8 +S315E0739FE000080020E02700000000000400000000E5 +S315E0739FF000000000002400000000000000040008D8 +S315E073A00010000010000010000804000000000000BB +S315E073A01048042000400000004000001000000800E3 +S315E073A020000000000010000048000000400000003F +S315E073A0300040000000000000500000000000000037 +S315E073A04000000000004000048010000004000000DF +S315E073A050400400008000440000100000804000408F +S315E073A0608000004000004000200000400030040003 +S315E073A07020000000000000008000000480480040DB +S315E073A080000000000000002000009040004800003F +S315E073A0901008100410001000140000000400000003 +S315E073A0A0000020000000001000000008040000001B +S315E073A0B000000000080040000000000000000000FF +S315E073A0C03000040000000000000000000000000003 +S315E073A0D000100000000000000020008000800000F7 +S315E073A0E0000000008000208000000000480000208F +S315E073A0F0000000002040002000400800000000003F +S315E073A1000000200000400000000000000000000096 +S315E073A1100000000020000080000000100000000036 +S315E073A12000000000100000000800000000100000AE +S315E073A1301010000000000000000000100000000096 +S315E073A140001000002000000000080000000010204E +S315E073A15010000000000010001010001000A237007D +S315E073A16080000000081000000008000000080000EE +S315E073A1700810040000001800000000100000100032 +S315E073A1800000000000100800000440000018000002 +S315E073A1900410040000080000000000000000000046 +S315E073A1A008000000000000104000000000400000BE +S315E073A1B00000000000000000000000000000000046 +S315E073A1C00000000000000000040000000000000032 +S315E073A1D0000080000040042000200020442000009E +S315E073A1E00000002404000000041020000480300006 +S315E073A1F000001080800080000800801000200000BE +S315E073A2000800000000800008080014002000100019 +S315E073A210002404200030002000080400000C08002D +S315E073A22000204C00000440000020040800140400E1 +S315E073A230000400000020000010000000000004008D +S315E073A24000000000040000040000002000100080FD +S315E073A2500000800000000080448000206000080059 +S315E073A260080000002080000040001000000000009D +S315E073A27000082088080000200080004000080000E5 +S315E073A28030000080000000800000004000000040C5 +S315E073A2900000004000000000000000000000000025 +S315E073A2A00000400010400000004000001000000075 +S315E073A2B00060000010401000000000000010000075 +S315E073A2C00008000008000000000000000000000025 +S315E073A2D0280000200010454F000000040000000035 +S315E073A2E0000000000000000040000040000008008D +S315E073A2F000000408000000000000000000000000F9 +S315E073A30000180008000000000000001008000000BC +S315E073A31000000000040000000800040400100004BC +S315E073A320000400044000000040000040000000000C +S315E073A3300040004000000000404000000000008044 +S315E073A34000008000001000000404400004000000D8 +S315E073A35000004040000000840000004000801004CC +S315E073A3600000A004002010040020900000100000FC +S315E073A3700000100800000000000000080004080058 +S315E073A3800000000800040000040008000004080050 +S315E073A3901010001000000004000800000008000020 +S315E073A3A0000000400000080000000000000000000C +S315E073A3B00000000050000050001000004000100044 +S315E073A3C00000000000208000000000000000000094 +S315E073A3D0000000000000000040000040000000089C +S315E073A3E00080008000000000008000000000000094 +S315E073A3F0400040000000000000000010001820003C +S315E073A4000000008000000000000000000000001063 +S315E073A4104000000000000000300000000000000073 +S315E073A42000000000000000000800000000000000CB +S315E073A43000000000000000000000000000000000C3 +S315E073A44000100000000040000000000000000874E7 +S315E073A450EE00081400008014140004880008000855 +S315E073A460000800100008081410000C0050081000D3 +S315E073A47008040000000004000014002828040048C3 +S315E073A48008140C100010000C0800000000081008F7 +S315E073A4900C0000000000004C000400545000400023 +S315E073A4A040000040100040004000004440000000BF +S315E073A4B040004004900084401004000404109004AB +S315E073A4C0804040809044800004B000A40020803037 +S315E073A4D004404004106490042010B000B40000AC53 +S315E073A4E04030006C081400000000104C081000089F +S315E073A4F080488008CC0088241800201008300410A7 +S315E073A50000540438102C00200030000000140004BE +S315E073A51018002810443008040400200800240814A6 +S315E073A520000020042040200010202010502020102E +S315E073A5300450001000500014001400000000902036 +S315E073A540800080000020200400206080200000CC82 +S315E073A55048200088C8200080680000600000000082 +S315E073A5604020806840A82000402820C00020008852 +S315E073A57080008010508000109000000000C09000B2 +S315E073A580204000004020100000100000000020086A +S315E073A5900810004020080040000000200000502012 +S315E073A5A03000006000000060000018202008000002 +S315E073A5B0000010080008082000080018000000409A +S315E073A5C00020300010210000E84500081408008CD4 +S315E073A5D010040088000008080440080810400C08BE +S315E073A5E010400C18000000001000000C000400146A +S315E073A5F0004814142824000410100400100C0050B2 +S315E073A6000400080008080000000C10040818000491 +S315E073A61010001014000004004000400000044000E5 +S315E073A62000000040000000400000008040005484B9 +S315E073A6300080008044100080140490C000C410C4ED +S315E073A640104004040080448004E4000420004400C5 +S315E073A650149020001484302004C8200008804C94A1 +S315E073A66020004008400000B80080002800D4002095 +S315E073A6705408100810001440100030000040041015 +S315E073A68000001830004028102448003000280004E9 +S315E073A6902000082800200808140040000400202049 +S315E073A6A000300000300030000010000004000000AD +S315E073A6B010006400102040A00080408000804000BD +S315E073A6C00000A0800420800820A00800C008204075 +S315E073A6D0A0C8000040102020400020000040A06089 +S315E073A6E0084080006080204008E000902000908061 +S315E073A6F018001000008000C00080209020002040E9 +S315E073A7000040000000000000102840082008000008 +S315E073A7100050005020100000300008002060001048 +S315E073A7202040180800000000000000080028000818 +S315E073A7302000100820100000400078180000283828 +S315E073A7400000040000000C1C1C0400000400000858 +S315E073A750080440000404041C18484000040410185C +S315E073A760180800000C04541410080000000C0C7454 +S315E073A77050000000000C0C505000000018080C004C +S315E073A78000000000141C1C44400000000414044044 +S315E073A79040000400001050444000000000000040F8 +S315E073A7A040000000141010C0800000044400908044 +S315E073A7B0804004044454508080000404446470C0B0 +S315E073A7C080001004046460400000041414A0A00028 +S315E073A7D00000001C9CE4E0200400001858CCC00084 +S315E073A7E0000004383888C0000404003838000000DC +S315E073A7F008044430300000400C0C08303000000090 +S315E073A800040C1C3830200000040C082020300000B3 +S315E073A810141C1C0C200000000000342020000400EF +S315E073A820201010040020000404143000000000001F +S315E073A83000302080800000004020208880000004E3 +S315E073A84028606080800008080860608080000000EF +S315E073A850606060000000000808E0E080000000002F +S315E073A86008E0E020000020101880C000000000001F +S315E073A87020E0C00000002030105040000800400087 +S315E073A88030080000000828705000000000000070D7 +S315E073A890300000000008006060000000101810200F +S315E073A8A0200000001818082820000000081810007F +S315E073A8B040600000003838000100830B0000000C94 +S315E073A8C00C1C0C0000000020080808406004040417 +S315E073A8D00C484840400404181000100100040414A6 +S315E073A8E0151010004000083C3C100000000C0404F6 +S315E073A8F0045050020008088C06001000801C1C14DB +S315E073A9001C00000000141404444040000020004082 +S315E073A910004060000000004040004000001414D086 +S315E073A920D001000C0404059098808004045414C08C +S315E073A930D0808004046404706002800004E466607E +S315E073A9407000801014B49000800000080CCC8C600A +S315E073A950E0000030189000406000003C3CA020C04E +S315E073A960C0040438381830414000043031202800E0 +S315E073A97000080C0060507000000404342410700268 +S315E073A980001404A86A006000800C1C1C1C20600084 +S315E073A9900000002444004000001010004000400412 +S315E073A9A00414142020404000003000A0A0C1C00869 +S315E073A9B0002001A0A080C00404286840408080087D +S315E073A9C0086868808082801000A00240500080088A +S315E073A9D008C8C8A0A000000000A0A8E0E00400102A +S315E073A9E000989C40E000000000A0A080800000304A +S315E073A9F03040504140000000010010004000006804 +S315E073AA006810100000000050500020020008088013 +S315E073AA1002001000801808100020200000181808A3 +S315E073AA200820000400380810144040000020002875 +S315E073AA3000000026980000000C0C1C1C00000000AF +S315E073AA400808080840400004141C584840400004B5 +S315E073AA501018000000000004040410100000000C3D +S315E073AA601C7C40400000040C44445050000008082D +S315E073AA70040C00000000101C545040400000000419 +S315E073AA804444404000001010404040400000000045 +S315E073AA904040404000000404D0D0000004040404A5 +S315E073AAA09090808004041450C040808000046464F5 +S315E073AAB020108000000064642020008000109080E5 +S315E073AAC0000000001C188CDCC06000001010001041 +S315E073AAD0C0C000003C3C202080800404282830005D +S315E073AAE000000000041000200000000870203030E1 +S315E073AAF000000404646460000000100468286000C9 +S315E073AB0000001C1C5C5460200000000044244000DC +S315E073AB10000000004000400004040414606000007C +S315E073AB2000000030E0E0808000000000A0A080001C +S315E073AB300404480840408080080868680000808004 +S315E073AB4000000020404000800808A888808000004C +S315E073AB50000068E0E0E000000010181840400000D4 +S315E073AB600000E0E0800000003030505040400000CC +S315E073AB70000010000000000068684040000000001C +S315E073AB80705000000000080840404040000008187C +S315E073AB9000102020000010180808000000001018AC +S315E073ABA01010404000000000000000009A1E0000F4 +S315E073ABB0001C08180C000000000000000840C000EC +S315E073ABC004000040484040000418100008000004E8 +S315E073ABD0001014101000000000381C000000000480 +S315E073ABE00414045050000008080404000000000C2C +S315E073ABF00C10140000000004004444004000000000 +S315E073AC000050104040000000004000004000001477 +S315E073AC1014C0C00080040404049090808004005043 +S315E073AC20148080808004004424606000000000602B +S315E073AC3004404000001000B090002000001818DCBB +S315E073AC40CC60E0000010108000404000003C3C30D7 +S315E073AC5030C0C0040038384860000000002020206F +S315E073AC602000000800600030300000040074644087 +S315E073AC7020000004046020402000001C08505C4063 +S315E073AC800000000000741440000000000050104003 +S315E073AC9000040400047070000000002000E0E0800F +S315E073ACA08000000000A080808004042868406080F3 +S315E073ACB08000086868800000800000200020400063 +S315E073ACC0000808C84820A0000000008000C0C0004B +S315E073ACD00010009808C0C00000000080A0C0C0004B +S315E073ACE000103040404040000000000010000000BB +S315E073ACF00078581010000000005050001000000853 +S315E073AD00080020200000001808100020200000082A +S315E073AD10000008000000001800101000000000009A +S315E073AD200008000000635C000080800008180000E3 +S315E073AD300000000008084040000404044840404016 +S315E073AD400004101808000000000400000010000062 +S315E073AD50000018780010000004040414505000003A +S315E073AD600000040400000000000804100000000066 +S315E073AD70101444440000000000000000404000004E +S315E073AD80000040404000000004048080000004049A +S315E073AD9004040010808000001450C080808000049A +S315E073ADA06464002080000000606000000000001012 +S315E073ADB0B0B0200000000808CCCCC04000001010F2 +S315E073ADC00080404000003C3C2020C0C000002828A2 +S315E073ADD0604040400000040020000000000830603E +S315E073ADE07070000000002424204000000000206002 +S315E073ADF020400000080818100040000000000464BA +S315E073AE0000400000000000400040040400002020E1 +S315E073AE10404000000030A0A0C0C00000000000A0C9 +S315E073AE2000000404480820208080080028280000D9 +S315E073AE3000000000404040000000080868C80000B9 +S315E073AE40000000000080C0C0000000000808C0C019 +S315E073AE500000000080800000000010104040404079 +S315E073AE6000000000100000000000585800000000C9 +S315E073AE7000005050100000000808000000000000B9 +S315E073AE8008181010202000000008000000000000E1 +S315E073AE901018101000000000100010110100D33ECE +S315E073AEA00000000C08100400000000080000000019 +S315E073AEB000040000040808000004041010000000F9 +S315E073AEC00004041014101000000000602C404000D1 +S315E073AED0000C04444C000000000808000800000061 +S315E073AEE0000C085454404000001404004040000035 +S315E073AEF000000040400040000000004000004000B9 +S315E073AF00001414C0C000000404040490908080040C +S315E073AF100044440000808004046464E0E000800040 +S315E073AF20006064606000001010B0B000800000083C +S315E073AF30084C2CA0A0000000008008000000000868 +S315E073AF40088008C0C00400181850700000000000A4 +S315E073AF50002030000008006028001000000C00504C +S315E073AF6058303000000C004808202000001C1840C0 +S315E073AF704C202000000000603000000000101040FC +S315E073AF80000000000010144040000000003020C0B4 +S315E073AF904080800000000080A00080000068088088 +S315E073AFA08080800800282880000080000020000050 +S315E073AFB00000000808C84820A000000000C0C020B8 +S315E073AFC0A0000000009000008000000000E0E04078 +S315E073AFD0C000002020505000000000000000100068 +S315E073AFE000000068284040000000000000000000F8 +S315E073AFF000000040404040000018083000000000A8 +S315E073B00000181800280000000008080000404000FF +S315E073B01000080000000000F6010080000000101038 +S315E073B02000000000000008080000000400000800AB +S315E073B03000000000100000000000000000000000A7 +S315E073B04000000000004040400000040C4C44000047 +S315E073B05000000000080000000000000C4040404083 +S315E073B0600000000040400040000000000000404047 +S315E073B07000000000404000400000040440C00000AF +S315E073B0800404040400808000000000404000800057 +S315E073B09000002420602080000000606060200000D3 +S315E073B0A0101080800000000008182CC88020000073 +S315E073B0B00000008000000000080800008000000027 +S315E073B0C008187050000000000000302000000008EF +S315E073B0D03060302000000000000000000000000433 +S315E073B0E00840000000001818080020000000000067 +S315E073B0F00040000000000000004000000000001067 +S315E073B10000000000000000100000808000000000D6 +S315E073B11020A0800000000868C04080000000282856 +S315E073B12000400000000000200000000008082888A6 +S315E073B13020200000000040402020000000000000B6 +S315E073B14000000000000060E0800000002020101086 +S315E073B1500000000000001000000000002868404076 +S315E073B1600000000010100000000000004040404066 +S315E073B1700000081800100000000010000000000036 +S315E073B1800000000000000000000010100000000046 +S315E073B19054570000000400181C0000000000000073 +S315E073B1A00000000000000400080000000400000036 +S315E073B1B008000000000004101000000000400C00BE +S315E073B1C00000000404040400000000080800000006 +S315E073B1D000000008001010000000000000004000AE +S315E073B1E04000000000404000000000000040000006 +S315E073B1F040000004048080000004040404909080FE +S315E073B200800400004000000080000020242020001D +S315E073B2108000000004202000001000B0B020A000E1 +S315E073B220001808080CA0A0000000008000200000B1 +S315E073B2300008088000008004000818103000000041 +S315E073B2400000002020000008006060203000000449 +S315E073B2500040404010000008004040400000000CF1 +S315E073B26008404C40000000000040504000000010D1 +S315E073B2700040504000000000044040000000001011 +S315E073B280004040800000000000808000000000481D +S315E073B2900880A08080080068688020008000000035 +S315E073B2A000004000000808880820A00000000000A5 +S315E073B2B00000200000000090000080000000008085 +S315E073B2C08040400000000050400000000000003065 +S315E073B2D010000000001818000000000000000000D5 +S315E073B2E000000000000000000000000808100000E5 +S315E073B2F0000000001000080000000000000000409D +S315E073B300400000080000100000A1440000000000A7 +S315E073B310181800000000000408282000000400004C +S315E073B32000000000000000000800000000010008B3 +S315E073B330000000000000004000000000000404006C +S315E073B3400000000000020000008000000000000022 +S315E073B35000000000001040400000000000040020E0 +S315E073B3604040000000004040000000000400008000 +S315E073B3700000000504080000000000000000400023 +S315E073B380800000002420602080000002606060A0DE +S315E073B3900000001020A02000000000080C008000D0 +S315E073B3A000000004408020000000000800008000D8 +S315E073B3B00000000830104040000100082020000023 +S315E073B3C000086060706000000000404000400000CC +S315E073B3D00002404000C00000000848400040000002 +S315E073B3E00000404000600000000440600040000040 +S315E073B3F000004040404000000010404040400001E3 +S315E073B400000800A0000000000840808000000000F3 +S315E073B4100820202000000002405040800000000811 +S315E073B42008802040000000000000000000000004D7 +S315E073B4300020000000000000000000000000000093 +S315E073B44000100000000100083030000008081810F2 +S315E073B4500000000000000000000000000002001081 +S315E073B46010800000000800100000000010000000CB +S315E073B470000000000004000000000000101010102F +S315E073B48000004E1B000000100C14000000000000CA +S315E073B490040C20000080040410081000000004006F +S315E073B4A000000000000401040808004000000000EA +S315E073B4B00C00000000000800000000000008020015 +S315E073B4C000108000001000000C0000000004004033 +S315E073B4D0000000000000040420400000000000406B +S315E073B4E00000000000000400108000000500080062 +S315E073B4F000400000000004C090000000040420A097 +S315E073B5000000000006044010800000000000A40064 +S315E073B5100000000000080400000000000C44808076 +S315E073B5200000000000080000000004080008504016 +S315E073B5300000050038083040000000680010400045 +S315E073B54000000C4000004000000C02480030C000D0 +S315E073B55000080404000020000000004000402000C2 +S315E073B5600000041420200000000400000000000026 +S315E073B57000003000000000000100080880000000B1 +S315E073B580000820208000000008002880E00000000A +S315E073B59002001010A08000000000004020000000B0 +S315E073B5A00008000000000010040020000000000006 +S315E073B5B000000000000000000000400000000100F1 +S315E073B5C00828004000000808001000000000001082 +S315E073B5D020201000000002003000A00000000020D0 +S315E073B5E00000000000080008200020000018040096 +S315E073B5F00000000000002820080000C14D00808094 +S315E073B6000000080000000000008C0020000000002D +S315E073B6100088000000000000000810000000000130 +S315E073B620000800400000000C0060500000000004B9 +S315E073B6300C50000000000002081000800000000CAF +S315E073B64000404000000000100000400000000014BD +S315E073B65010600000000000000000400000000000E1 +S315E073B6600040800000010408004000000004004030 +S315E073B670008000000000004050808000000600302B +S315E073B6806080000000040400A0000000001C1000AD +S315E073B69080000000000418A08000000000081080FD +S315E073B6A000000000001000000000000104280040C4 +S315E073B6B00000000C001030000000000808002000B5 +S315E073B6C00000000200100080000000000840400007 +S315E073B6D0000000001020000000000004006040003D +S315E073B6E00000001010404000000000000000000061 +S315E073B6F00001002820408000000000000080000068 +S315E073B70000000000408080000002000030800000EE +S315E073B710000808A080000000000000E000000000C0 +S315E073B72000041080A000000000000040C00000008C +S315E073B7300000000000000001000830400000000037 +S315E073B740005040000000000000000000000000020E +S315E073B7500050608000000008100000000000000048 +S315E073B760000000000000000400200000000000104C +S315E073B7701800000003CE000003031C1C6060000089 +S315E073B7800303181C406000004747383840400010F8 +S315E073B79047473838C0C000100607303880C01111EB +S315E073B7A00E0E7070808001010E0E707080805101F4 +S315E073B7B00C0E6070009003031C1CE0E010000303A2 +S315E073B7C01C1CE0E010000343181CC0E000000707F0 +S315E073B7D03838C0C0001007073838C0C000104607B5 +S315E073B7E0303880C011510E0E7070808001510E0E8C +S315E073B7F07070808041010C0E6070009043431C1C96 +S315E073B800E0E0100043631C1CE0E000106343181C87 +S315E073B810C0E0003047473838C0C0200047073838A3 +S315E073B820C0C000000607303880C001010E0E70708C +S315E073B830808001110E0E7070808011010C0E6070A5 +S315E073B840009003031C1CE0E0101003031C1CE0E0F3 +S315E073B85000100303181CC0E0000007073838C0C0A7 +S315E073B860000007473838C0C000004607303880C04C +S315E073B87001010E0E7070808041410E0E70708080F3 +S315E073B88001410C0E6070008043431C1CE0E0000035 +S315E073B89003031C1CE0E000004343181CC0E00000F7 +S315E073B8A047073838C0C0000007473838C0C00000C3 +S315E073B8B04607303880C001010E0E707080800141FA +S315E073B8C00E0E7070808041010C0E60700080030371 +S315E073B8D01C1CE0E0000022021C1CE0E000000202F7 +S315E073B8E0181CC0E0000006063838C0C000363400C5 +S315E073B8F00400000C040000000000000000000000DB +S315E073B9000004040008000008180404080044040056 +S315E073B910100404000000001010000C000008000082 +S315E073B9200000000000000010000C000000000000A2 +S315E073B9300014040000140400000410000014000056 +S315E073B9400000004000000000040000000000100446 +S315E073B9508000000040001040801000000410408416 +S315E073B960044000040000108404504000000000000E +S315E073B970040040041400C004004040100040E0009E +S315E073B98004000000102000000840000030000000B2 +S315E073B9900840042020C40420200400200000040092 +S315E073B9A000000400000C00000000040020040800FE +S315E073B9B020000000200404002004040020040C206E +S315E073B9C000141000001400200000000000000000C6 +S315E073B9D00000000004000004002000008000000066 +S315E073B9E00020008004000000000000000420000036 +S315E073B9F0080000880000000000000000000000005E +S315E073BA0000000000000080000080000000002000BD +S315E073BA100080000800400000000080003000001045 +S315E073BA20100000201040001000000000000000002D +S315E073BA300000002000000000000000004000080045 +S315E073BA40000000000000000000000800000018205D +S315E073BA5000180800000008000008080040180840B5 +S315E073BA6000080801000088DA00000000000000000A +S315E073BA7008000000000000000010000080000000D5 +S315E073BA8000000000000000000000008000000000DD +S315E073BA90001000000000000000000000000000003D +S315E073BAA000000000000000000000000000800000BD +S315E073BAB0000000000000000000000000000000002D +S315E073BAC0000000000000000000000000000000001D +S315E073BAD0000000000080000000004000000010003D +S315E073BAE000000000000000000000000000000000FD +S315E073BAF000000040000000000000000000000000AD +S315E073BB0000000000000000000000000020000000BC +S315E073BB1000000000000000000000000000000000CC +S315E073BB20000000000000000000000000200000009C +S315E073BB3000000000000000000000000000000000AC +S315E073BB40000100080000080040000000000000004B +S315E073BB50000000000000000000000000000000008C +S315E073BB60000000000000000000004000000000003C +S315E073BB70000000000000000000000000000000016B +S315E073BB80000000000000000000000000000000005C +S315E073BB90000000002000000000000000000000002C +S315E073BBA000000000000000000000000000000080BC +S315E073BBB000000000000000000000000040000000EC +S315E073BBC00000000000001400000000000000000008 +S315E073BBD0000000000000000000000000000000DE2E +S315E073BBE07F000000000800104000800000000000A5 +S315E073BBF08000040000040000000800000004000058 +S315E073BC000004000014001000000C40000000000067 +S315E073BC10000004000C0004000000040000000000B3 +S315E073BC2008001000000010040000144040000000FB +S315E073BC3000104000400000000000000010001000FB +S315E073BC40000080100440000400000010008004002F +S315E073BC504000800000004000040000000400400043 +S315E073BC60000400000040001000800400040040104F +S315E073BC70004040000000000000C0000000000080AB +S315E073BC808800100000808040040800601C000020DB +S315E073BC9000002000000C00000010080000000800FF +S315E073BCA0300800000008000800280820080000009B +S315E073BCB0000804001040040800200800200000007B +S315E073BCC000000004003000000010000000000000D7 +S315E073BCD000800000000004008000800000900000F7 +S315E073BCE000202000A0000800008000080000000883 +S315E073BCF00000080080000000000000A0000000487B +S315E073BD0000000018009000000080000080004000F2 +S315E073BD1008100008104000600000002000100000CA +S315E073BD202000000000000000401000002800000022 +S315E073BD300000000000000000000000200008400042 +S315E073BD400000081010000800401800001000000002 +S315E073BD5000000800000009000FE5008004080010E9 +S315E073BD600000000000000000000000000400000076 +S315E073BD70000800000000000000000400000000005E +S315E073BD801008000000000400040010040004000022 +S315E073BD900000000400C0000000000800000000007E +S315E073BDA000000004100000000010000000400000D6 +S315E073BDB00000000000100000000000900000800406 +S315E073BDC00000005000000000440000008080004046 +S315E073BDD0108400001004004000040000000400001A +S315E073BDE01000000004040010000040400000000052 +S315E073BDF00000400080002080000008001000000072 +S315E073BE0000001820000400200000000020000C0051 +S315E073BE1000000000080800080000000000000000B1 +S315E073BE200828000000000000000000040040100035 +S315E073BE300400000008200000000000000400100069 +S315E073BE400000000000000000000000000000000099 +S315E073BE502000808048000000000000004000800859 +S315E073BE600000000000000000000020200800000031 +S315E073BE700000008000800800008000081000900039 +S315E073BE800000200000800800409000800000102031 +S315E073BE9000000000000010000000400800000000F1 +S315E073BEA00010000000082000000000000000000001 +S315E073BEB01040000028001040000000001800000049 +S315E073BEC000400020000000000000000008000000B1 +S315E073BED000B72C000000000400004400800000005E +S315E073BEE00040840000000400000000040000040029 +S315E073BEF00000000008001004040000040040000085 +S315E073BF0000000C00000008000400000000000400BC +S315E073BF100010008010000010100400004000004084 +S315E073BF200000000040000000000000000000000078 +S315E073BF301400000000004004008000000000800050 +S315E073BF408000400000000000008000002000000038 +S315E073BF500080100020004000008000800000001088 +S315E073BF600040000800000800000000880000800020 +S315E073BF7000108000000000C0C000000400401800FC +S315E073BF80004000100010000020000C1000000000BC +S315E073BF900000502800002008000000000820080078 +S315E073BFA000000008000000000008002000040800FC +S315E073BFB020000000000000200000100000080020B0 +S315E073BFC000000080000408004005000800049000AB +S315E073BFD000002000002000600000008000280000C0 +S315E073BFE000080000000080000010000020100040F0 +S315E073BFF04008182000000000000000801000400098 +S315E073C0000000080008004000004000000020000126 +S315E073C010000020080000000000200040000000003F +S315E073C0200000000000000000000000A000000028EF +S315E073C0300000000000001000080004180000100063 +S315E073C04000000008000000000800E6D000002000B1 +S315E073C0501004101000080000000000000000140037 +S315E073C060004080000044001004440000000000001B +S315E073C07010140000004000000048000000000800B3 +S315E073C080000008000010000000000800000800002F +S315E073C0900000100010000000008010004000000057 +S315E073C0A00000000000000000001000000000000027 +S315E073C0B00000800880048000000080800004000097 +S315E073C0C000800010000000800000080000040000FB +S315E073C0D00000000000000000800020000000000067 +S315E073C0E0008000008040000480000480000004802B +S315E073C0F0000040000000000088000030800010005F +S315E073C10000000C04000C100000800000000010001A +S315E073C110002010000800080820000000101020001E +S315E073C12010300000008010003020801000081008E6 +S315E073C13000100000A000100800008000200000003E +S315E073C14000000000100020008088002000008800B6 +S315E073C150080080200800000020200000000000286E +S315E073C16000008000A88018C000000000400000288E +S315E073C17040000008400000000000880000881000BE +S315E073C1804000A000400000400000000008000040AE +S315E073C19000001020002000400000004000009000E6 +S315E073C1A000204000600000580000080010000020E6 +S315E073C1B00000200000000040101008000000200876 +S315E073C1C02008103FF800040000000000000044005F +S315E073C1D000180018000C00000000000400001000B6 +S315E073C1E000081000100400000800000000000000C2 +S315E073C1F000000000000000001000100010000000B6 +S315E073C2000000001014080000001400000000000095 +S315E073C2100004000000041000000000180000040889 +S315E073C220000000000000000400100000040000009D +S315E073C23000000000000000000000000000000000A5 +S315E073C24000000000000000000080000000500410B1 +S315E073C2505000800000000000008004280000000009 +S315E073C2600000800000102000001080101000000411 +S315E073C270140008100000040000480000000000806D +S315E073C280000010202800000000000080001000006D +S315E073C29040000028000008002840800000280020A5 +S315E073C2A000080008000000200000000000182000CD +S315E073C2B00000000810082088880000000000008055 +S315E073C2C00000100000100000000000200000800055 +S315E073C2D00010000000280030400008200010000025 +S315E073C2E0200000100020080010A000880000A010B5 +S315E073C2F040000020100020002018100000000820E5 +S315E073C3000000004000000810200028000000000034 +S315E073C31010200030100000200030000000002040A4 +S315E073C32000003000010008000050000008400000E3 +S315E073C3300000800000080000001101209B980000B7 +S315E073C340040000040000100C000800001000000454 +S315E073C350000000C0040000401404085004100400F8 +S315E073C36000001010000000400000000040000000D4 +S315E073C3700000000800100000000000001804100020 +S315E073C380000014001010000000000080000044005C +S315E073C3901000001800000000040000100000000008 +S315E073C3A00410008000048880040000008000800090 +S315E073C3B0040000800010000000800000000000040C +S315E073C3C0000000000000000400C000002000000030 +S315E073C3D000008084280080000000800480108024A0 +S315E073C3E000100000900010040000100810002010E8 +S315E073C3F0000000000400001C00000000800800003C +S315E073C400100000800000180800482000080010386B +S315E073C410000070B0000800200030008800000010B3 +S315E073C420200000000000B0003008000000380088EB +S315E073C43000880000000010800000000090003000CB +S315E073C44088000020800820000000100020000820EB +S315E073C45000004000A810A09008408010002040081B +S315E073C4600048300880400810204000200000009803 +S315E073C470001040201000402800000000400008181B +S315E073C480002040300020000020601020101040A0F3 +S315E073C4900000306000002000600000200001000012 +S315E073C4A000102020000840000000508010000000BB +S315E073C4B00000202800741A00001004000000000039 +S315E073C4C00000081000000008000400501804080477 +S315E073C4D0240000080000100000000410040010049B +S315E073C4E00004040040001004000010080000100867 +S315E073C4F0000000000800100004100814401000004B +S315E073C50040040400100480000000001000000018CE +S315E073C5100040001810240000000810800014040086 +S315E073C5200010000080240098008080000070800076 +S315E073C53000000004100000400000000010400000FE +S315E073C540001018040000048000000044000000009E +S315E073C55000008000000040800080000808009024FE +S315E073C56000000010440000100420001000000008D2 +S315E073C5700020004400000004080028000020200882 +S315E073C5800000104000002080400000602C10000086 +S315E073C5903008200000000050000000044000040052 +S315E073C5A000000000A41008100010001000208000A6 +S315E073C5B01000802000404008201088201020208042 +S315E073C5C0002000080000000000700000100000402A +S315E073C5D00090A010200040882008801080000000A2 +S315E073C5E000501080001000105820C00000000800B2 +S315E073C5F040000020300000002000300020080028B2 +S315E073C60030400020000800100028000008200028B1 +S315E073C61000082000000088100028000800080020A9 +S315E073C6200018080008003080102000108030B0BC7D +S315E073C6300000000000000000000010008000000011 +S315E073C6400000000000001800000010080000000061 +S315E073C650100000040000040800000400000000005D +S315E073C6600400001000080000000000000000000055 +S315E073C670080000102000401000000C0400140000B5 +S315E073C6800000010010040000000000040020100008 +S315E073C690000000000000000000000000000C000035 +S315E073C6A00000000000000000000400040000000029 +S315E073C6B000000000000000000000000080000000A1 +S315E073C6C00000000000000000000000800000004051 +S315E073C6D00000080010000000000000100040001089 +S315E073C6E000001000000000180000000000000000C9 +S315E073C6F00000000000002008000000280000000091 +S315E073C7000000400020280000000000200000000028 +S315E073C7104000000000000000000000000000000080 +S315E073C72010100800000000800000180000002000D0 +S315E073C7300010000000100018000000000000200048 +S315E073C7400000400000001000001000300008105098 +S315E073C7500020080000000000003008800810000088 +S315E073C7600040080040000000004000000020000088 +S315E073C77000000010000000080050000028000020B0 +S315E073C7800000000000080000300800000000000010 +S315E073C79000000000004008000000080800000000E8 +S315E073C7A0000000001008007144001000000400004F +S315E073C7B004000000100000000400041000000400F0 +S315E073C7C008042000000000000000000010000000D4 +S315E073C7D0009400000004000000180000000004004C +S315E073C7E00800080000000000040010000044100078 +S315E073C7F00000204000000000008000000000000000 +S315E073C80000000040100004000000000880000004EF +S315E073C81000001000000000000000000080004000EF +S315E073C820000000000000000020400000000040000F +S315E073C830000000001000000004004000004C0000FF +S315E073C8400000000000040000800080000000800803 +S315E073C850200000000800000000000400000400004F +S315E073C8600020000008000000000400001000000033 +S315E073C870000000201000000000000000000014001B +S315E073C88000000020000000001000000020000008F7 +S315E073C8900400000000002084000000000000201067 +S315E073C8A00000000080000000080000000080200007 +S315E073C8B0000030000008000000000880000000005F +S315E073C8C0004080000080000080000000009000902F +S315E073C8D0000040000000000010002010000000007F +S315E073C8E0800800000010100010000000000008200F +S315E073C8F00000000000000000100000280000002087 +S315E073C90000080000000000001088002800080000FE +S315E073C910000000100000000000203000000020102E +S315E073C920B2FE000000000000000000000000880076 +S315E073C9300008000000500000000000040000000042 +S315E073C940000000000000000000000000000000404E +S315E073C950000000000000080000100000000000481E +S315E073C9600010000400080000000000000000000052 +S315E073C970000000000000000000180000000800003E +S315E073C980000000000000100010000400000000909A +S315E073C9902088108004000020108000000000001042 +S315E073C9A0000000000000041080000000100408007E +S315E073C9B0008000000000000000001000000000048A +S315E073C9C00000000000080000009004000000000072 +S315E073C9D00400002000100000000000200000440066 +S315E073C9E0004000080008200000200000004000001E +S315E073C9F000A4000000400000000000180080000062 +S315E073CA0090000000000400004000000000280010C1 +S315E073CA100000080000801000000000000020000005 +S315E073CA2040400028002800000000A00000004000FD +S315E073CA3000400000300000000000000020000020ED +S315E073CA400000080000000000000000000010000075 +S315E073CA500080000000008000200400000020000039 +S315E073CA6000000800202000000020100020000000D5 +S315E073CA7008000000000000000000000000200040F5 +S315E073CA8000002000000000000000200000000040CD +S315E073CA90080090000000088000F7300000000000F6 +S315E073CAA0000000000010080000080000100000906D +S315E073CAB000000008001004000800041000000014D1 +S315E073CAC010040000000000000010000000100010C9 +S315E073CAD000040010000000000000000000040800DD +S315E073CAE000000000000004000000100000100000C9 +S315E073CAF000000000001000040000000004001000B5 +S315E073CB0004000000800000000000001000800000B8 +S315E073CB10000000008000000000000000000000003C +S315E073CB200400800000001080040040000000000054 +S315E073CB300800008000000000044090000000001030 +S315E073CB4010400004400008000008040000000000E4 +S315E073CB50000010000000100000000000000000005C +S315E073CB600000480008001800204000000010000094 +S315E073CB700000000000000000200000080008000824 +S315E073CB80000000000000000010003000008000008C +S315E073CB90000000100010002010000000108030002C +S315E073CBA0200000283000000000000008002000008C +S315E073CBB000000000201810280080000800180018F4 +S315E073CBC01800104800000000000050080800200814 +S315E073CBD0000000080000200000000000004800008C +S315E073CBE040004028400800000000100000080020C4 +S315E073CBF00008000000000000000818000000003084 +S315E073CC00100000200000001010001008000008203B +S315E073CC100000E1BB0000000000000000040000001B +S315E073CC200000000000008800080010000400000007 +S315E073CC30000000000000000000000000000000108B +S315E073CC400000000410000000000000000000000077 +S315E073CC50000000000000000000100000000000105B +S315E073CC600000000004000000000000001000001047 +S315E073CC7000000000000000000000000000000080DB +S315E073CC8000000000000010000000000080000000BB +S315E073CC9000000000000000008000100000000000AB +S315E073CCA000000000008000080000000000008080A3 +S315E073CCB040000800000000080000000810000000B3 +S315E073CCC000001400001000000000000004000000E3 +S315E073CCD0800010400000200000001000004020009B +S315E073CCE0000000100028001000080000100000008B +S315E073CCF02008000000000000200020201000000043 +S315E073CD00000800000000202000201000000008004A +S315E073CD100000208000002008009800000000000852 +S315E073CD2000002800900800000000000020000000CA +S315E073CD3000004000000040600040000000004860D2 +S315E073CD408000402000108040002008400000000072 +S315E073CD500000200010000000280000000020000002 +S315E073CD6000200000404020004000401020000000FA +S315E073CD7000402000000000000008000000000000F2 +S315E073CD80080000000100080000000071DB000004E9 +S315E073CD90000000140000040008001000000000000A +S315E073CDA000000008000000001000000018001000EA +S315E073CDB010000000100000000000000018000000E2 +S315E073CDC018041000100000000010000008040000B2 +S315E073CDD000000000100010000000100000001000BA +S315E073CDE014001000000010040000100000000000A2 +S315E073CDF000000000000000081000000000000000C2 +S315E073CE001000048000000000800080000000000035 +S315E073CE100000000000000010000010008000000811 +S315E073CE204000000040000000000400100004080009 +S315E073CE300800000800500800000000001000000021 +S315E073CE400000000000100010400000200000000009 +S315E073CE500000000000000000000000000000000079 +S315E073CE600008000808000000000000000000200031 +S315E073CE700000000000000000000880000088002029 +S315E073CE800000800800088000001000080010000011 +S315E073CE900000000080100820000000100000100061 +S315E073CEA000000000800000A0804000A00020000089 +S315E073CEB00000000080000080000010080000800081 +S315E073CEC008001000000020000008001000080010A1 +S315E073CED000400000001000000000000000080000A1 +S315E073CEE000081000000000000000000020000000B1 +S315E073CEF00000000810000000000008100000002089 +S315E073CF000001000002F200100004000000040008B3 +S315E073CF1000000000000008000000000000080000A8 +S315E073CF200808000410000004000000040000080074 +S315E073CF301008000800000008000000080400000064 +S315E073CF400000001000100000001000100000000048 +S315E073CF500000000000000000000000000000000078 +S315E073CF6000000000040000000000000080000000E4 +S315E073CF700000000000000000100000000000000444 +S315E073CF8000000000040000040000000000000480BC +S315E073CF900000000800000400400080040000000068 +S315E073CFA00000000000000090004010400000000008 +S315E073CFB004040000000000000000001000000800F8 +S315E073CFC000000800000018000000080000000000E0 +S315E073CFD00000000000080040000000002000002070 +S315E073CFE008080000001000000000000000080000C0 +S315E073CFF01020100000000000000010002000200048 +S315E073D000000000008020000008000000000000809F +S315E073D0100000000020002000000000003800080037 +S315E073D0200000001800400000008000004020080067 +S315E073D03050000000409000006000000040000800CF +S315E073D04040400000000000000000000810002000CF +S315E073D0500000005000100000000040200040000077 +S315E073D06000080000000000003008001020000000F7 +S315E073D070000000004000200800000010201B620042 +S315E073D0801000000000100000001000000000000017 +S315E073D0900000081000000400080000000000000013 +S315E073D0A00000000000000000000800000000000817 +S315E073D0B000000000000000000000000000000C000B +S315E073D0C000180000080000000000040004000000DF +S315E073D0D000000000000000000400000000000000F3 +S315E073D0E0008000140400000000000000000000103F +S315E073D0F0000000000004800000040000000400004B +S315E073D10000080400000000001000000000000000AA +S315E073D110000080000000004000C8004410080018BA +S315E073D120000400000000080400000400001000047E +S315E073D1301000000000000000000000000000000086 +S315E073D1400020400000000000000000000010000016 +S315E073D15040105000001000080000000000000000BE +S315E073D16000000000000000000000001000800000D6 +S315E073D170000080001000000000000008100000802E +S315E073D1800000000810080000100000000000000016 +S315E073D1903000100000180000000000401008000086 +S315E073D1A000208000000000000000000008800000FE +S315E073D1B000000020000000000000000000000000F6 +S315E073D1C04000000000000000001020000000200076 +S315E073D1D00000200000002000002000000020001066 +S315E073D1E0000000002000000000000008000000209E +S315E073D1F000000030010019FA00040000000400008A +S315E073D2000000000000040004100010040000000099 +S315E073D21000000004000000040000000400000008A1 +S315E073D22000000000000000000000000000000000A5 +S315E073D2300010000000000000000000000000000085 +S315E073D2400000000000000000000000000000000085 +S315E073D250000000000000000000000400000010045D +S315E073D26000000000000010000000000080001000C5 +S315E073D27000000000000000000000000000840000D1 +S315E073D28000000400800004001000000000000000AD +S315E073D2900004000000000400000000000000140019 +S315E073D2A000000018000000000800400004000000C1 +S315E073D2B000001400000000000008000008000000F1 +S315E073D2C00008000010000020500800200020000035 +S315E073D2D0002010102010000000080010001000005D +S315E073D2E0000000000000080000000020000000209D +S315E073D2F00020000000000000100010A000A000084D +S315E073D300008000802008100800000008200000005C +S315E073D31000100810000000000040080000100040F4 +S315E073D3200000008000100000C00000000000000054 +S315E073D330000000001000000010000000002010083C +S315E073D34000000040000010084000000800000000E4 +S315E073D3500040101800004000000020200800002064 +S315E073D360000000000000000800000000000000FC60 +S315E073D3706D000000100000001000000000100000B7 +S315E073D3800000000000000000001004100000000020 +S315E073D390000000000000001800000000100000000C +S315E073D3A00000000000000000000000000000000024 +S315E073D3B01000000000000000000000000000000004 +S315E073D3C00000000000000000000000000000000004 +S315E073D3D00000000000000000000080008000008074 +S315E073D3E0000000800000000000040000000400005C +S315E073D3F000040000000000009000000000040080BC +S315E073D4000000000000000000000000000000004083 +S315E073D410840000000400000000400840000000049F +S315E073D42000000004001040040000000000008000CB +S315E073D43008001000100000080820000040000000FB +S315E073D4400800002000000000000000000000000853 +S315E073D45000080010000028000000200000200020D3 +S315E073D4600020801010000000008000000000802083 +S315E073D470002080201000000000200000080000005B +S315E073D480000000000000000000B00000000800404B +S315E073D4900018000000480880108020100870000013 +S315E073D4A020083800500008006000100000000028D3 +S315E073D4B000202008002040004000400810000020B3 +S315E073D4C0000000480000000810000000200000087B +S315E073D4D04000000010000000000010000000000093 +S315E073D4E0100010000000000095FB00000010000023 +S315E073D4F000000000000010000008000008000000B3 +S315E073D500100000040000001000000010000000008E +S315E073D51000000010000C000000000010000800106E +S315E073D520000000000000000000000000001C000086 +S315E073D530081000000010000000100000000010004A +S315E073D5400010000000001000000000000000000062 +S315E073D55000000000000000100000000000000080E2 +S315E073D56000000000800400000000000000000000DE +S315E073D57000000000000000000050000000400000C2 +S315E073D58000000000400000000040085400C00004A2 +S315E073D5900000001000401000001000000400481066 +S315E073D5A0000400000400801000100000000000007A +S315E073D5B000000000000000000000000000086000AA +S315E073D5C0000010080008000010000010002008009A +S315E073D5D0003000102008000000108000000000807A +S315E073D5E000000020080000000000000800000000B2 +S315E073D5F00000000800800000000020000800000022 +S315E073D6000010080080800020002040200000000009 +S315E073D6108000000080000800200000000000000089 +S315E073D6200000004000000000002000000000000041 +S315E073D6300800100000000040002000000000000019 +S315E073D64000400000002040000040000000000000A1 +S315E073D6500008000010000040080000000000000011 +S315E073D6601047FB00008080040000100008000000F3 +S315E073D6701008001000000000000000100000000019 +S315E073D6800C00080000040000000010040000000015 +S315E073D6901000000000000000000000000000000021 +S315E073D6A00000000010000000000000000000000011 +S315E073D6B0040000000000000000000000000000000D +S315E073D6C000000000000004000010040800000010D1 +S315E073D6D0000080000000800000000400000080006D +S315E073D6E000000400040000008010100480000400B1 +S315E073D6F0009000040C400000000000800000000071 +S315E073D7000000000088000000000000000004000034 +S315E073D7100000000008000010040000000000000094 +S315E073D7200000000000081000082000000000000060 +S315E073D7300010200000000000000000001000000050 +S315E073D7400000001000000000000800000000000068 +S315E073D7502000000000008008000000900000003800 +S315E073D7600000000000000080000080100000001040 +S315E073D7700000000080001008200000000000002078 +S315E073D7800000000000100000002000000008000008 +S315E073D79080000000004010002050002008000000C8 +S315E073D7A00010000800004008000000000020304030 +S315E073D7B000000000002000000020000010000000C0 +S315E073D7C000002000100000000000100000000010B0 +S315E073D7D000000000200000002000A38B0010001062 +S315E073D7E00000101400108018000008000000000804 +S315E073D7F0101008100C140800000010080004000054 +S315E073D8000404001000001010080010000800000067 +S315E073D8100410000000000000000000080400000887 +S315E073D820001008001000000014040000140000004B +S315E073D830100000001000040010000400000004044F +S315E073D84000900404008000008000000000100000D7 +S315E073D850000004800480000004000004000004005B +S315E073D860008014840000008010008444800048081F +S315E073D870400C0040804080C0044400900004581877 +S315E073D8800010484810044808001C000010001000FF +S315E073D890400010000C00000010001010402008102B +S315E073D8A00800080048402000080030300050284047 +S315E073D8B0080820001008000008081010000800008F +S315E073D8C000200000381020003008002090208000EF +S315E073D8D08090208020A0100020008800B0003828B7 +S315E073D8E0801080082000A008000000281080000047 +S315E073D8F000200800B020904830401800284000000F +S315E073D9007008104890409000C81008209808501886 +S315E073D910602018006800406000001010281048204E +S315E073D9204010483040000840102010600000482046 +S315E073D9304840082000001020084028284000301096 +S315E073D9402010201020100010080040001820000856 +S315E073D950202010E0FA00801004001000140080000C +S315E073D960100010000004000800040010000000140A +S315E073D97010000410100004101000040010040810C6 +S315E073D980001C1000001800101800041010000000AE +S315E073D99000000000000410080418081000101000BE +S315E073D9A00014100000101000001010000010100496 +S315E073D9B000101000000000041000000400080000CE +S315E073D9C00090100000100000008094008004048032 +S315E073D9D0800404000004000C00041000840080003E +S315E073D9E080008010144004080040000080408004EA +S315E073D9F04400004C8854800C08C400445C005C000E +S315E073DA0004481400040010040010401004001004CD +S315E073DA10004000101800002818400008280000088D +S315E073DA2010400010384000385820300800180020A5 +S315E073DA300810000810003000100028100030300085 +S315E073DA40380020088020200000B800A0A81000004D +S315E073DA5020102000308008301008108000100880F5 +S315E073DA60902820080000100038002008008010007D +S315E073DA70E00080400060205040801000285008008D +S315E073DA8088603008805080101860100008200018F5 +S315E073DA90001008000010400040280860601850200D +S315E073DAA0402000102008002000280020502000109D +S315E073DAB000086000104000103008080010080000ED +S315E073DAC01000180020101820201030000A1E0000E5 +S315E073DAD00004141404000004000818180C008000F5 +S315E073DAE00404981808000004040C1C1808000004C9 +S315E073DAF004141410000000000C1C18100000000839 +S315E073DB00081C181010000010000000001000000040 +S315E073DB101C1C10000000001010141000000400100C +S315E073DB201010140000000004101010000000000430 +S315E073DB3000108000000004000010888000000000E0 +S315E073DB401010808000040404040080000004048C38 +S315E073DB500000000000001414808000000000140C24 +S315E073DB60C0C0000400000008C4C000040404181810 +S315E073DB70C0C0000004041818584040080454141038 +S315E073DB80080000000C041010108000000008183024 +S315E073DB9010000008080828001000000010187860CC +S315E073DBA00000001818182020200000381818080004 +S315E073DBB020000018383000000000001838308080EC +S315E073DBC0000800003030880000080800303090808C +S315E073DBD000080808383080800018082828201000CC +S315E073DBE00008183820A0000000101858E060000004 +S315E073DBF000201818D0C0000000283838F0C00000A4 +S315E073DC00000038384040000800003030080040001B +S315E073DC10082868702000000008007070100000107B +S315E073DC2008086060000000001018606000000001E2 +S315E073DC3010182020000000001818084000000008A3 +S315E073DC4038301000008453000000140414140000EC +S315E073DC50000038181010002004048C0C181800808B +S315E073DC6004041C1C08080100040444150008004061 +S315E073DC700C0C1C1C101000000808081C1000020095 +S315E073DC80000080020000008008081C1400000000F9 +S315E073DC90101010100000000020101010002000007B +S315E073DCA004001010000000000000909001000800CE +S315E073DCB040018080804000001010808000000404E2 +S315E073DCC00404800002001404080A00100080101493 +S315E073DCD08084808000000004C40C40400000200073 +S315E073DCE0C88880A0040400045010C0C004001C144B +S315E073DCF018180100040414150010004008081004F5 +S315E073DD005050808000001848706002001808A86AB6 +S315E073DD1040400080100028082040000018180000DA +S315E073DD20202004001818181C000000002828002082 +S315E073DD30000000001818B0B08180000060019020E8 +S315E073DD400040080820309090808008081828A0B01A +S315E073DD5082800808A82A002000801808202880807E +S315E073DD6000001010F810002004000000909480A0CA +S315E073DD7000003838B8B08080000010100800010049 +S315E073DD8000007011101000000008280870200000D1 +S315E073DD9000086000507002000008A802603000803E +S315E073DDA000107830602000000000001000200400AE +S315E073DDB02808181C002000002828302000000C4595 +S315E073DDC0000000000400100000000010181010009E +S315E073DDD00004040C0C181000000404080808000082 +S315E073DDE000000400000000000004040C0C10100096 +S315E073DDF000080808080000000000000000000000AA +S315E073DE000000000C040000000000000000000000A9 +S315E073DE1000000000000000000000040000000000A5 +S315E073DE2000000090900000000000008080008000F9 +S315E073DE300010109090000000040400000000000041 +S315E073DE4004080800000080101000008080000000C5 +S315E073DE50004CC440400000000088C8808000040481 +S315E073DE6008105880800004040408000000000014C1 +S315E073DE701010000000080C000010108080000048AD +S315E073DE800020200000000848000000000000107821 +S315E073DE907040000000080800002000000008080039 +S315E073DEA018000000003038202000000000181830F9 +S315E073DEB03080800000002000900000000820009071 +S315E073DEC08080800008301820A08000080820280091 +S315E073DED000008010182020808000000010101000D1 +S315E073DEE0000000000090C0C0C000003838B0E0C049 +S315E073DEF08000003000004040400000002010100019 +S315E073DF0000000000286020000000005070604000B0 +S315E073DF100000004060606000001000105040200078 +S315E073DF200000001820000000000808181800000020 +S315E073DF3000301810300000FDFD00808014040414D6 +S315E073DF400000000000001000000004040C0C0090B8 +S315E073DF50000004001414000000000404040400002C +S315E073DF6000000C0C141410100000000000000000F8 +S315E073DF70000000000000000000000004141C000014 +S315E073DF800000000000040000000000000000000034 +S315E073DF900000000000000000000000049080000014 +S315E073DFA004000000809080000000101080000000E4 +S315E073DFB004000004808000000400080800000000EC +S315E073DFC0101000048080000000004404000000008C +S315E073DFD000008888000004040004D090C0C00400E8 +S315E073DFE014001018404000001014001000000808D8 +S315E073DFF040400000808000004008100000000800E8 +S315E073E00060280000000010002008000000001810CF +S315E073E0102030200000001800101800000000383887 +S315E073E0202030000000001800B0B08080000030306F +S315E073E030800000000808200090808080080810287F +S315E073E040A0A00080080020280000000018082028FF +S315E073E050000000000010D0104040000000109088CF +S315E073E06000000000101890808080000018101010D7 +S315E073E0700000000010100010000000006808106037 +S315E073E08000000000604050700000000020000000B7 +S315E073E09000001010703000600000000010100000E7 +S315E073E0A0000008081018000000002808102000007F +S315E073E0B058B00000000004000000000000000800F3 +S315E073E0C01080000404040C0800000000000808082F +S315E073E0D000000000040000100000000C0C0C0C1093 +S315E073E0E010000008080808000000000000000000A7 +S315E073E0F00000000C08040C000000000000000000A3 +S315E073E10000000000000000000000000000000000B6 +S315E073E1100000000000809000000000000080800096 +S315E073E12080000000100000000000040400808000FE +S315E073E1300000040808000000000010000080800062 +S315E073E140000000044400000000000088880000001E +S315E073E150000400105880C00004001008004040001E +S315E073E16000141010000000080C404040400000000E +S315E073E17000084040400000000808404040000000AE +S315E073E180104840000000000000202000000000005E +S315E073E1900000180000000020282020000000000086 +S315E073E1A01000A0800000000010008000000008004E +S315E073E1B000008080000000301820208000000020DE +S315E073E1C028000000001018302080000000000000D6 +S315E073E1D080400000001000C0C0C00000000800E0EE +S315E073E1E0C080800000200050504000000000000016 +S315E073E1F00000000000400020400000000050705016 +S315E073E20000000000000060000000001000105000E5 +S315E073E210400000000118100000000008080000002C +S315E073E220000000101800000000B58900000010001F +S315E073E2300014000000001818101000000000180801 +S315E073E240080800000400181C180800000000000409 +S315E073E2500000000008081808101000000808080CF1 +S315E073E260000000000000000000000000100000182D +S315E073E2700000000000000000000000000000000045 +S315E073E2800000000000000000000000000000101015 +S315E073E2900000000000000000000000001000808015 +S315E073E2A000000404040400000000040404040000F5 +S315E073E2B000001010009080800000000080008080D5 +S315E073E2C000000000C0808080040010009010000001 +S315E073E2D000000C0418080000040414141010000065 +S315E073E2E000004040001080800000480810000000E5 +S315E073E2F00808480800000000100068484040000025 +S315E073E30018102020002000000810181800000000E4 +S315E073E3101038000000000000083020008080000004 +S315E073E32020008000000000082000A0908080080094 +S315E073E3301808A00080800800280800000000100874 +S315E073E3402000200000001800C04000000000080014 +S315E073E3508090000000002820A0B0808000000010AC +S315E073E36000000000000020000020000000002008EC +S315E073E3700060000000007020505000000000202074 +S315E073E3804020000000002000006000000010001034 +S315E073E390000000001010100840400000200000202C +S315E073E3A00000C4AD00000004040404000000000093 +S315E073E3B010100800000000000008000000000004D0 +S315E073E3C004000000000404040400000000000000E0 +S315E073E3D010100000000000000000000000000000C4 +S315E073E3E000000000000808100800000000000000AC +S315E073E3F000000000000000000000000000000000C4 +S315E073E40000000000000000100000000000000000A3 +S315E073E41000000000001010909000800000000000E3 +S315E073E42000000000000000000000001010100080E3 +S315E073E430800000000040C080800000000040C08083 +S315E073E44080000404041000000004040404000000C7 +S315E073E450000004101000000000000040401000802F +S315E073E4608000000040001000000000004000000043 +S315E073E470001010302040000000101028202000000B +S315E073E480000000001000000000383020200000007B +S315E073E490003020103080000000002000800000086B +S315E073E4A0000000108080000008000000800000007B +S315E073E4B0002020000000000800202020200000003B +S315E073E4C010501000000000000010C0004000003043 +S315E073E4D03030E0C000000030000040000000000073 +S315E073E4E020202000000000002820600000000010BB +S315E073E4F010404000000000000040400000000000B3 +S315E073E5000000400000000010000000000000001052 +S315E073E51010404000000808101000007F0D00000056 +S315E073E520000000140000000000001000000000006E +S315E073E530080800000000040000041000000000005A +S315E073E540000400000000000000001010000000004E +S315E073E5500000000000000000000000000000180842 +S315E073E560080000000000000000000000000000004A +S315E073E5700000000000000010000000000000000032 +S315E073E5801000000000000000808000000000100012 +S315E073E5900000000000000000000000000000000022 +S315E073E5A00000000010001010800000001000000052 +S315E073E5B00000000000008000000000001000808072 +S315E073E5C04000000000000040000000001010101032 +S315E073E5D00000000000000010000000004040000052 +S315E073E5E00000000040400000000010006040404022 +S315E073E5F0000008002020000000000800001800005A +S315E073E6000000202020200000000008002000808009 +S315E073E61000001000800000000000200080808080F1 +S315E073E6200000102800000000080000080000000049 +S315E073E63010000000000000000000C0004000000071 +S315E073E64000008000000000002800808080800000C9 +S315E073E6500000202000000000000000200000000001 +S315E073E6600048402000000000100010500000000039 +S315E073E6700000002000001000200040200000001081 +S315E073E68000000000000010000008000000002000F9 +S315E073E690002000008F76008000000000000000007C +S315E073E6A000000400200000000000000800000000E5 +S315E073E6B00000000000000000010008105000000098 +S315E073E6C000000000000000000000000000000000F1 +S315E073E6D00200000080000000000800000000000057 +S315E073E6E000000000000000000400200000000000AD +S315E073E6F000000000000000000000000000000100C0 +S315E073E7000000C000000000001000000000000000E0 +S315E073E71000000000000002001000800000001010EE +S315E073E720100000000000000000000000000004403C +S315E073E730E0004000000010100000400404000000F8 +S315E073E74000000000050018004000000000000050C3 +S315E073E750400000000040404040000000024040405E +S315E073E760C000000000100000000000000028200038 +S315E073E77000000000040000000000002020202000BC +S315E073E7800000000000002080000001001800400037 +S315E073E7900000000000008080000000000000000020 +S315E073E7A0000002001000800000000000000000007E +S315E073E7B0000000000000000000000400800000007C +S315E073E7C00000000000400000000000200040000050 +S315E073E7D00100082000000000000040600000000017 +S315E073E7E000101040000000000200400080000000AE +S315E073E7F00000004000000000001010000000000060 +S315E073E80004002000000000000000000000BA4E0083 +S315E073E810000004000004000000000814043800003F +S315E073E820000000980018000004001C0008100000A7 +S315E073E83004011408085000000008080000100000E6 +S315E073E84000081C00100000000002000010800000A9 +S315E073E8501C0010000000000000000014000000001F +S315E073E86010040420000000000410100000000000F3 +S315E073E8700004001000000005000000508000000056 +S315E073E8800000001000000004000400000000040211 +S315E073E89000140080800004100400000000001400DF +S315E073E8A0008800800000000484200000000400005B +S315E073E8B00000000000000400480000000001041896 +S315E073E8C0085040000000040040000080000010186B +S315E073E8D0200000000802002810C000000010200885 +S315E073E8E000600000000808202000000008041008FB +S315E073E8F0200000000800100000000000083000004F +S315E073E90080000001003828D0000000081020802025 +S315E073E910008008000830001000000802001810A0FC +S315E073E920800000180008200000000810080020008E +S315E073E9300000100C10880080000008000808000032 +S315E073E940000018000038000000013008082040007D +S315E073E95000080040001000000008100000300000BE +S315E073E960000A000810800000000040080020000044 +S315E073E970100028000020000010040028004000006A +S315E073E980182020000000D9380000000010100000A5 +S315E073E99000800000040020000000000010008000EA +S315E073E9A000000000000000000000010008004000C5 +S315E073E9B000000000100000000000000000000000EE +S315E073E9C00000020010008000000000080000000054 +S315E073E9D0000010000000000000000410200000009A +S315E073E9E000000000000000000000000000000000CE +S315E073E9F001000800C00000000000100080800000E5 +S315E073EA000000000080000000020410008000000097 +S315E073EA100014008000000000040080000000000085 +S315E073EA2004006040000000001818000000000404B1 +S315E073EA301800000000000100080040000000040414 +S315E073EA40501000000000000050700000000002004B +S315E073EA50700080000000001000200000000010101D +S315E073EA6020000000000004002000000000000010F9 +S315E073EA700000000000000000800000000100181094 +S315E073EA80400000000000101000000000000000309D +S315E073EA90808000000200100080000000001000A0DB +S315E073EAA0000000000000E0000000000014080020F1 +S315E073EAB000000000001000000000000020000000CD +S315E073EAC0000001002800400000000008004000003C +S315E073EAD0000000006040000000000200306080002B +S315E073EAE00000100060400000000000180000000005 +S315E073EAF0000004102000000000000000000000D1B8 +S315E073EB0001000083831C1C606000800303181C40B3 +S315E073EB10600000870738384040000007073838C080 +S315E073EB20C010100607303880C001110E0E70708069 +S315E073EB308001110E0E7070808011010C0E607000F2 +S315E073EB409003031C1CE0E0101003031C1CE0E010B0 +S315E073EB50100303181CC0E0100007073838C0C01054 +S315E073EB600007073838C0C000000607303880C00198 +S315E073EB70010E0E7070808001010E0E707080800140 +S315E073EB80010C0E6070088003031C1CE0E0000003B8 +S315E073EB90031C1CE0E000000303181CC0E000000740 +S315E073EBA0073838C0C0000007073838C0C0101006F1 +S315E073EBB007303880C011010E0E7070808011210EFF +S315E073EBC00E7070808011010C0E6070008023031C40 +S315E073EBD01CE0E0101003031C1CE0E0001023031894 +S315E073EBE01CC0E0001007073838C0C00000070738BC +S315E073EBF038C0C000000607303880C001010E0E70C1 +S315E073EC0070808001010E0E7070808001210C0E60A1 +S315E073EC1070008003231C1CE0E0000003431C1CE02F +S315E073EC20E000004343181CC0E0000047473838C093 +S315E073EC30C0000047473838C0C00000460730388008 +S315E073EC40C011110E0E7070808021010E0E707080EF +S315E073EC508011410C0E6070008003031C1CE0E01011 +S315E073EC601002021C1CE0E000000202181CC0E00067 +S315E073EC701006063838C0C0009E270004000004045E +S315E073EC80000000000000080800040080000000088F +S315E073EC9000000000040408180004101004041000B7 +S315E073ECA00000000000081000040000100C081010AB +S315E073ECB000001000000000000010000010100000BB +S315E073ECC0001000001010000010100000101000007B +S315E073ECD000000000001000040000048000000080C3 +S315E073ECE000008000000000000000800000000000CB +S315E073ECF00000040400000080000004000000080027 +S315E073ED000080000000000000000008000000040816 +S315E073ED10000008000000080084800008040000007A +S315E073ED2080000008000408000004101000081000BA +S315E073ED300008001008000020080820000800000002 +S315E073ED400808006008002000081840000808000062 +S315E073ED5018080020000820000808000000080000DA +S315E073ED600808000000180000180800000000000002 +S315E073ED7000000088000088080010000010000808F2 +S315E073ED80100000080020080800000008002018089A +S315E073ED900000081000001000400000004040001022 +S315E073EDA00000100040C028300000100080400000D2 +S315E073EDB00000000040000000000010100008101072 +S315E073EDC00800300000000010000000400000000062 +S315E073EDD00000000000000000101800001808000092 +S315E073EDE0080000000008000008180000180800007A +S315E073EDF010FB8000800000000000000000000000AF +S315E073EE000000000000000000004000000000000069 +S315E073EE100000000000000010000000000000000089 +S315E073EE200000000000000000000000000000000089 +S315E073EE300000000000000000000000000000000079 +S315E073EE400000000000000000000000004000000029 +S315E073EE500000000000000000000000000400000451 +S315E073EE600020000000000000000000000000000029 +S315E073EE700000000000002000000000000000000019 +S315E073EE8000000000000001000000000800004000E0 +S315E073EE900080000000000000000000000000000099 +S315E073EEA00000000000008000000000000000000089 +S315E073EEB000000000000000000000000040000000B9 +S315E073EEC020000000000000000000000000000000C9 +S315E073EED000000000000000000000000000000000D9 +S315E073EEE000000000000000000000000000000000C9 +S315E073EEF00000200000000000800000000000000019 +S315E073EF0000000000000000000000000000000000A8 +S315E073EF100000000000000000000000100000000088 +S315E073EF200000000000000000000000000000000088 +S315E073EF300000000000000000000000000000000078 +S315E073EF400000000020000020000000000000000028 +S315E073EF500000000000000000000000000000000058 +S315E073EF60000000000000000000000AFC000004142A +S315E073EF700890000800001000080000000000000080 +S315E073EF800C0400084004101800000008000000009C +S315E073EF90142410000800004008040020080000084C +S315E073EFA080001080080000000004000018000014C0 +S315E073EFB008080000000014000000001000000000C4 +S315E073EFC00000000000000000000000100080141034 +S315E073EFD00410000004800014000000040080008028 +S315E073EFE00000008004000000800000800440000000 +S315E073EFF000040090001400000000040060108040DC +S315E073F0000008008000001000008000800C0000887B +S315E073F01000400000144000000000001004000008E7 +S315E073F02004000008000040001040000020000010BB +S315E073F0300008402008200000000040000000002087 +S315E073F040000000001008001800000018000000001F +S315E073F050800008300000200000000020000000005F +S315E073F06020008000208000200018008800980000AF +S315E073F07000180000800000880008200028100000B7 +S315E073F0800000009008980010801040800080208077 +S315E073F0900008501080002080000010089000009057 +S315E073F0A02000080010000010000000200008000097 +S315E073F0B00000400000100840000800200000000037 +S315E073F0C00040000018000000000000002800001057 +S315E073F0D02010002000080008000000003800080037 +S315E073F0E0080800A9C60000001800048000000000AC +S315E073F0F0000000000000000004000000400004006F +S315E073F1000010000008000000100400000008000072 +S315E073F110000C000000000004800000000000000006 +S315E073F1200000040000100004000400001000100446 +S315E073F1300000080004000000000400200000000046 +S315E073F14000000000000010840010000004000000BE +S315E073F150001000040000000000800000048000102E +S315E073F160000000000084004000000080800014006E +S315E073F170000000000000801000080040000010004E +S315E073F18000000000000800104008000010000000B6 +S315E073F19000080000401000000800000000000000B6 +S315E073F1A0001000400020200000100000082020001E +S315E073F1B000000000000000000000000010000800DE +S315E073F1C0100820001008000010000008300000004E +S315E073F1D0000010088020000000000000000000809E +S315E073F1E0800008900000800800000028008000007E +S315E073F1F008000800001000280000200008802000A6 +S315E073F20000084800800000000010000800000000BD +S315E073F21008000000900000000000000010000000ED +S315E073F2200000000000000000000000600000001015 +S315E073F2302000000000000000002000001000000025 +S315E073F24001200010002008000000100000104008A4 +S315E073F250000000001820000808000028D18900008B +S315E073F26014000410000800009008000000000080FD +S315E073F2700008001004080000100C000000040000F1 +S315E073F2800040002410000000004000040000280045 +S315E073F2900008000010900818000000000000080045 +S315E073F2A000180008000000000000000400001000D1 +S315E073F2B000000000000000000010000000001000D5 +S315E073F2C00004001000800000900400004004000079 +S315E073F2D080000000000000000000800000000000D5 +S315E073F2E0000000000400100000000000046000004D +S315E073F2F0008140080000800000042000C084000004 +S315E073F3000080104080800440002000080000050063 +S315E073F31000204400000008004000000000000000E8 +S315E073F32000002008400000000000C000400000001C +S315E073F3300024000000000000000000000000000050 +S315E073F3402000800000000000200000000000001094 +S315E073F35000002000800020000000200000800800EC +S315E073F360100000100000000000800020000028104C +S315E073F3708000008800001098000090001000008064 +S315E073F38020800040108010002080000010000800EC +S315E073F39000902000080008200010000000200008FC +S315E073F3A0000000000000000820480008002000006C +S315E073F3B00000004000080000000000000000180094 +S315E073F3C0003000000020002000080010200000003C +S315E073F3D00000200000924B0080803000000400049F +S315E073F3E0080000000008100400841400800800C0C0 +S315E073F3F00008000000180000081040000410000028 +S315E073F4001008100408440004081000080080000087 +S315E073F4101004000000080000000000400004000033 +S315E073F42000000004401000000000000010004000DF +S315E073F4300000040004000000040004000004180047 +S315E073F440400004000080000004004000100000004B +S315E073F4500000140020801400080408440000100023 +S315E073F4604000000010084000C0085000000088000B +S315E073F47000084080C00000800480000010800040D7 +S315E073F4801C00000000044000001000009000000023 +S315E073F49024000000001000000020000000100000AF +S315E073F4A008000000100020001008000000000800AB +S315E073F4B0000000003000000000000048000000007B +S315E073F4C0D0001820000000000010102080000020FB +S315E073F4D000801000000020000000000010000020F3 +S315E073F4E00080300020080028000010008000002013 +S315E073F4F088000000C000C01000106000C008100053 +S315E073F5001080080008A020000000082000100840C2 +S315E073F5100010400000002000000000100010408042 +S315E073F52000400000000800000030A000000000006A +S315E073F530000000001000601088000000080000085A +S315E073F540200000080080400010000000100016CA7A +S315E073F5500000400008000040100440000000000076 +S315E073F5602000000000440000004000080004000092 +S315E073F5700000000000004028040400000000102092 +S315E073F5801000000400100000044000004004100066 +S315E073F590001040000000180060005400480000406E +S315E073F5A00400000010000400008050184010400072 +S315E073F5B0180000000040800008040020400000802E +S315E073F5C0080000840800000C0000800008040000B6 +S315E073F5D010000000004000000020000040C0000062 +S315E073F5E080000000000400400000000C10080400D6 +S315E073F5F008001000800840080000000000080000C2 +S315E073F6000000000000000804100010000060000015 +S315E073F6100058000000800000104004400004000021 +S315E073F62000400040000008000020100000000000C9 +S315E073F63000102004200010082020000000000000C5 +S315E073F6400800000800000010802000082004200055 +S315E073F6500800002098000008000800008000000001 +S315E073F66000900000080810800000000060080000A9 +S315E073F6700888000020000000000000000000001071 +S315E073F6800080080000480020800800000000400069 +S315E073F6900808100000080020002000000000200089 +S315E073F6A00000000000006800802008000028400089 +S315E073F6B00800100040000000000000000000000891 +S315E073F6C0000020280020004A49000040200800007E +S315E073F6D00000440800000800100404801000C0080D +S315E073F6E0408000480000001000001000080014403D +S315E073F6F02008040810040C0020140810000C000005 +S315E073F7000400004000000C100000500000000C00E4 +S315E073F71020405004400840000044000000100004FC +S315E073F720400040100410001408000000000004803C +S315E073F73000180400044080000000000400C01000BC +S315E073F74000040000040080200410040888040040CC +S315E073F7501000004040001000004080484000040064 +S315E073F760400008000C904080008004100080880000 +S315E073F7700048001C00000804000010000040001060 +S315E073F7800014102400002050000010080000000050 +S315E073F79000100840400010000020005800000800E8 +S315E073F7A00800002004000010000000200844001048 +S315E073F7B000200090082000000800000028100000D8 +S315E073F7C0C0208020380004000028000000A010004C +S315E073F7D00800800800B02000200010000018080020 +S315E073F7E080000080004008C0588010080020008028 +S315E073F7F01000008000088020102000800820081088 +S315E073F80008C0080000000040000018000000001067 +S315E073F810A04040200000002000000020001040209F +S315E073F8200080200800004038281098004000080047 +S315E073F83000080000080000200040100000000000EF +S315E073F840866900001C08400018005820000000106C +S315E073F850000000002010000000000C3000100004CF +S315E073F8605018000400000000008810040000003007 +S315E073F870000800001014005C001000040020000073 +S315E073F8800C0000001040001440100004101000003B +S315E073F890041040004010001400400000208010580F +S315E073F8A0000010004CB0000010400000801080A0F3 +S315E073F8B00C0008001000000010400000800004886F +S315E073F8C0000080400404001C00400028040010007F +S315E073F8D01020800000002C8800000080400000406B +S315E073F8E014488020004000000800001060081004EF +S315E073F8F00010000004180000404090801000905003 +S315E073F9000020104010002004280800002010640036 +S315E073F910002000000020800014000010000000109A +S315E073F920C01800100800000010300058000860147A +S315E073F93000080038000080001020802880900010B6 +S315E073F940800000E0188010100000003800C0280026 +S315E073F95000000020100010308018402098008800C6 +S315E073F960104008400000880080001050A8008018FE +S315E073F970200080802008808800200040800080007E +S315E073F9800000004020000800008810009020004826 +S315E073F990102010C800080008000810104000280066 +S315E073F9A0003000902000002000000810008018004E +S315E073F9B0184020003800200000D710000000000037 +S315E073F9C00010000820000000000000000020000086 +S315E073F9D00000000000000000000008000044000082 +S315E073F9E000009000000000102000000000000004FA +S315E073F9F048000000000000200000040800004000FA +S315E073FA0040001000040000200000400010000000D9 +S315E073FA1004004010002000800010800008000010F1 +S315E073FA201000400000000000088008800004000019 +S315E073FA301000000000000000800880004000000015 +S315E073FA4014084000000000000000008000008020E1 +S315E073FA5000000000000000000000C0082000000065 +S315E073FA60000000000010900000000000008000100D +S315E073FA7000400000000008000000100000000020B5 +S315E073FA8008200800000060000000200400008000E9 +S315E073FA90000000000080000040000010000020001D +S315E073FAA000000020100000000000000800000000C5 +S315E073FAB00000000020000000200000000018000095 +S315E073FAC0000000001008004800000000300000004D +S315E073FAD0801000400800000800000000401000009D +S315E073FAE0000000006010000008200000000080089D +S315E073FAF080000000400080200000000000800000CD +S315E073FB00000000000000800000400000C00000001C +S315E073FB100800001000000000000000200000000054 +S315E073FB2020800000000080000000600010200000CC +S315E073FB300000B8C800800400000008100000000050 +S315E073FB4080001000009000000808000008400010D4 +S315E073FB5000440000000000040000000408040000F4 +S315E073FB60000000080000001000001000000C000008 +S315E073FB700004000000100000000014000000000004 +S315E073FB8010040000100000001010000000000000D8 +S315E073FB90000000100040002000000000000080809C +S315E073FBA010000000400010000000000040008000DC +S315E073FBB000000000000004040000000000000C00D8 +S315E073FBC01010000000000004000088000000C00868 +S315E073FBD00014000000040008400000000400480818 +S315E073FBE00004004000040004080000005000000018 +S315E073FBF0000010200000000000000000000020104C +S315E073FC00000000100000002000041000002800002F +S315E073FC10000000000000000000000000100040003B +S315E073FC200814000000100080001000802010880087 +S315E073FC300018000000004080101000000000000073 +S315E073FC4080000000000088100020000000008000A3 +S315E073FC50000000004000008008000010000008006B +S315E073FC60880000000080000000000800000000002B +S315E073FC700000008000204000080000008040000083 +S315E073FC8000100010000020000800000000000028AB +S315E073FC9000004000001028000000084020008000AB +S315E073FCA00800100000080000282000144C0018001B +S315E073FCB04008000040000000001000000000000053 +S315E073FCC01000000004000030000000101000000077 +S315E073FCD00000000400200000000000100000001087 +S315E073FCE0000004001000000000000800000000009F +S315E073FCF0000000000000100000000000000040005B +S315E073FD00000000000000000000104800000000043E +S315E073FD108000000080000000000000240000000066 +S315E073FD200000000000000000040000000000000076 +S315E073FD3000080040000000200000000000200000E2 +S315E073FD400800000000000000000000400000000012 +S315E073FD500000081000002000000000001000000002 +S315E073FD60000000000080801080100040000010400A +S315E073FD700000040000000000040000000000000022 +S315E073FD800000000000000010180000900800180042 +S315E073FD90401010000000080060000000000028001A +S315E073FDA0000040000000000000B000800000A000EA +S315E073FDB000000000000020000020000000000000AA +S315E073FDC000000000081030008000001008000000FA +S315E073FDD010008000000000800000100090002000FA +S315E073FDE0000000000020801000000000000000000A +S315E073FDF000000000180080102000080020000008B2 +S315E073FE004000000008400050000000000010008031 +S315E073FE100000000008000010001008000008000051 +S315E073FE2000000000F8580000000000200C000040BD +S315E073FE300080401000000000484000000000100001 +S315E073FE400000000000000000083000000000001011 +S315E073FE5000600000000000000000000004080000DD +S315E073FE600040004000004000104000000000040025 +S315E073FE70400840004000080040004400484000004D +S315E073FE800000100000000000C00040000040800049 +S315E073FE9000000000004080800004004004800800F9 +S315E073FEA000040004080000000004000044000000A1 +S315E073FEB004000000000000000004400000000000A1 +S315E073FEC040800000404000408018000000000000C1 +S315E073FED010400800040004080010000010040044F9 +S315E073FEE000084000200800100000004000004000B9 +S315E073FEF000200000000028502818001000080000B9 +S315E073FF000000100800000000000000000048002018 +S315E073FF100000000000000000008000800000100870 +S315E073FF20800080802000C06880608008C040200028 +S315E073FF300000000008000000400090000000000090 +S315E073FF408000800080400000000080000010000008 +S315E073FF5000200000102000000008000800000000E8 +S315E073FF601000800000008000000010000008000010 +S315E073FF7000000088600000000000000000800000C0 +S315E073FF801000000060000010000000000000C000D8 +S315E073FF9080000010000880000008000000CF3800E1 +S315E073FFA00080A00800100400000000880000100024 +S315E073FFB080000008001C0000240000000400000814 +S315E073FFC00400000008200020000800000008100468 +S315E073FFD00800000410001004000000000008001080 +S315E073FFE0000018000000000000000400000000009C +S315E073FFF00000000010000000400800401000000000 +S315E0740000100000100048100000000000048000009A +S315E0740010040000000000000000040000800000807E +S315E0740020000000000000000000C010044000000062 +S315E074003000408000000080400000400000000000A6 +S315E0740040000044001C00001808400000080000008E +S315E074005000000004440000000000000000002010CE +S315E07400604000400000100020080000004800100026 +S315E07400700000004000000000004000000000004066 +S315E0740080080000000000000000000000000000000E +S315E074009000000000000028801000201000400008D6 +S315E07400A0000000000000000020004000002040A88E +S315E07400B0000040080000401800004800400010208E +S315E07400C0000000000008800080000000002000109E +S315E07400D088402000400000880020000000000040B6 +S315E07400E0008000002000000000200040001000089E +S315E07400F080006000000000400020C000008008001E +S315E074010000400080200000100000008008400010CD +S315E0740110080000009800358500000000000000002B +S315E074012000000000040040005000100420000000AD +S315E07401300018000004000000040000100000000035 +S315E074014000204800001000000000000008000000D5 +S315E074015000000008000000040840000000000000F1 +S315E074016000000000000000004000040000100008D9 +S315E07401700000000008000C001000040800000400F1 +S315E074018000800C00004000000000000004800800BD +S315E074019000000040000000000800000000000000BD +S315E07401A00000001040400000808800000008000055 +S315E07401B0044C000000400000809000000000000045 +S315E07401C000000000000400000000100800000000B9 +S315E07401D000100010404000000420000000000020E1 +S315E07401E040200008000020000008000000004000E5 +S315E07401F000000808000004082000403000080000F1 +S315E074020020000800000080180000801000000880BC +S315E074021000000000080800900020001000000010A4 +S315E0740220008800000000000000000800000008805C +S315E0740230008018102810080000000000001000006C +S315E074024008000000A00880400820800000004000FC +S315E07402500800800000000000200008001000000084 +S315E07402600000400000800800802000200800001094 +S315E07402700080408000000000100080200000000034 +S315E0740280000000000000000020000010000020F7CD +S315E0740290660080080008000000400810001000089E +S315E07402A000000000000800000400040020001C00A8 +S315E07402B0000004100400001048000000200000282C +S315E07402C0080010000010000800000000000000089C +S315E07402D00000000000000000100000004000000074 +S315E07402E01000001018000004000000084000000030 +S315E07402F00000000000008008000000000000080014 +S315E074030000000000400000004000000000004000D3 +S315E074031000400400004000000080000004800800F3 +S315E07403204004000000008000000000000000008827 +S315E07403300000000810000000480000000000000003 +S315E07403400000000000000800080000000000000043 +S315E074035000000000080000000800004010000010D3 +S315E074036000000000000000001000200000004000C3 +S315E0740370000000000008400000104000100848002B +S315E074038080004010A0000050000000004000000013 +S315E0740390002800000000000000000000209020000B +S315E07403A00000100020001080000000000000000033 +S315E07403B080001000400000000040B840400000009B +S315E07403C00080001000C0100000200800000000004B +S315E07403D0000850200028400080609000B8000000BB +S315E07403E000004000400040000000000000000000F3 +S315E07403F000002810000000C000000000081008800B +S315E07404000000080000004810BC7D001000100000D9 +S315E074041000000004000000000800005000004000E6 +S315E07404200000200000000000001000000000000042 +S315E074043000000020000400000018200004000004FE +S315E074044000100000000000004010000014000000DE +S315E074045000400004000000000800000000000004F2 +S315E07404600004000400000000000000008010040096 +S315E074047000000090000004000080040000400000CA +S315E07404808000804000000800000000440000000086 +S315E07404904000000000000000000000000040800002 +S315E07404A00080000800000000000000000400000066 +S315E07404B000000008001800100000000000000000B2 +S315E07404C00000000000000000002000002040000052 +S315E07404D0000000400000300000080000002000002A +S315E07404E0000000000000000020000800000000206A +S315E07404F01000000020001080000000008000200042 +S315E0740500A000200000100008000010000010400059 +S315E0740510C8001040102000000008401000002000C1 +S315E07405201080000000002000600000000000101041 +S315E07405300080002010000000400000204080000091 +S315E07405400000802000000008000000008000000029 +S315E07405504000002000008000401040000000004091 +S315E074056000400000002000000000004000408000D1 +S315E07405700000C0D0000008C0004000400000084001 +S315E0740580001D06000044000000000000005000005A +S315E074059000000020000000000000040000000000DD +S315E07405A00800000400000000100000000000004095 +S315E07405B00000000000100000100008000000005069 +S315E07405C00000000800001040004000000000001029 +S315E07405D00000001000040010080000000000000095 +S315E07405E00040000000000000005000000000000021 +S315E07405F00C000800C000000000004000000040004D +S315E074060080000000001000000400800000008040BC +S315E07406100000000000000000000008000000000870 +S315E07406200000400000004080000010000000000060 +S315E0740630004000081004180000000040400000006C +S315E07406400000004000001000400000000000400080 +S315E074065000000060001008000810000000100000A0 +S315E07406600000000000080000000000000000000028 +S315E07406701000400000080050000800000008000068 +S315E07406806000004008508008100000080000004830 +S315E07406900000000040000008002008503000000010 +S315E07406A01000104008102000002010000000100018 +S315E07406B000000000100010000080000000000080C0 +S315E07406C020C0800000400000208000880008000000 +S315E07406D000000080000000000880003000A00000E8 +S315E07406E00080400000000010000000000000008060 +S315E07406F01000802000808000008078F800000020E0 +S315E07407000030800034800000000400000000000027 +S315E0740710104000100010001040000000200010008F +S315E0740720000000100000000000400004000008080B +S315E0740730040000000000000000000040000000001B +S315E074074004001000100000000000400000000000EB +S315E074075000000000080000001000000000000080A7 +S315E0740760480000008000000000008000400008009F +S315E07407708000000000080000040000004000000053 +S315E07407800400000044044000000080400000400083 +S315E0740790004000400000008000000480004018081B +S315E07407A000080000000000000000000400000000E3 +S315E07407B0000000000000040008084000000000008B +S315E07407C008280000080800000808000010400040EF +S315E07407D00000200000000040000810001000000037 +S315E07407E040000000000010086000000000200000D7 +S315E07407F0000000000000100020100000000000005F +S315E074080000200000800020000008000020000000A6 +S315E0740810500040000000080040000888002080C0B6 +S315E074082000000840000000C000002080600800005E +S315E07408300820080000500030000000000800100096 +S315E0740840800800000040004008000000200080009E +S315E074085000002000001000500040000000800000FE +S315E074086000A000002000000000000010000020003E +S315E0740870000000A13C008080000000041000080025 +S315E074088000000000000000000004004000000800C2 +S315E074089004000000001000000000000000000000EA +S315E07408A0000020100000000010000040000000402E +S315E07408B00400000000000000000000100400440082 +S315E07408C0000008000000100000080000001440005A +S315E07408D000000000000000000000001000000000AE +S315E07408E004000000000800400000040000000080DE +S315E07408F0000000000000000010400000000000004E +S315E07409000000000080000000000008840000000081 +S315E07409104008000000000000000000504000100095 +S315E074092010000000000004000000000000501000F9 +S315E07409301000083000404000102000000000000065 +S315E0740940000000500040000000200000000010008D +S315E0740950001800100000000028100820081000108D +S315E074096000000018081008100000003000000000B5 +S315E0740970080000900000000000000000008088106D +S315E074098088000000000008008000000000200000DD +S315E0740990001000002800000010000000280000008D +S315E07409A000100000000800000000001000000000C5 +S315E07409B01020100000000000000808100020000855 +S315E07409C0002000000000200000000000000000008D +S315E07409D0000010002040000000004000000000000D +S315E07409E000000000080000004020000000B5000090 +S315E07409F040100000080000000000100010004000E5 +S315E0740A000000100800000000001000100000000054 +S315E0740A100000000000100000000800000020000440 +S315E0740A200000000000000000000000001000040454 +S315E0740A3000000800004000001000080000000400F8 +S315E0740A400000000000000000000008080000100428 +S315E0740A5040840080001800100400000000040000C8 +S315E0740A600000800008000004000008084000004010 +S315E0740A700000000000000400000000008000008018 +S315E0740A800000004000000800000000008000000044 +S315E0740A9000000000000000040000000000000000F8 +S315E0740AA0000004085000040000000000000000107C +S315E0740AB00000000800000000200000002000000094 +S315E0740AC02000100800001800080400000000000070 +S315E0740AD000000000100020000800002000A00020A4 +S315E0740AE000080000001000804040000000002090E4 +S315E0740AF0002800003008200000000000000000809C +S315E0740B0000000040080000002080000000000000A3 +S315E0740B108000000000000000400000089000000023 +S315E0740B2000104080000070004000000000200008C3 +S315E0740B30000000000000000000001020105020406B +S315E0740B400008000800200000400020002010080083 +S315E0740B50286000000000381000100000000040001B +S315E0740B602010002000D1790000482000180004000D +S315E0740B704008100008105000001010044C000000EB +S315E0740B80083000140008100400180024300000280F +S315E0740B9040304020000018241800000800001008B7 +S315E0740BA00000400810004C0000004810001000548B +S315E0740BB0040040040800180000004C0010000048CF +S315E0740BC040085008100400100004009840088000A3 +S315E0740BD01080000408840040408000C0000040801B +S315E0740BE00000004800C800400044104400400480FF +S315E0740BF00000C400408800000040800440084800BB +S315E0740C0008408840004000C08010104C0400580032 +S315E0740C10500040080C000000001408000C4000105E +S315E0740C200040004808603048006000000058004802 +S315E0740C30204800300840003860001068400000002A +S315E0740C4060000018080000404800201000100840BA +S315E0740C5018200800801800089000800050201028A2 +S315E0740C60184048A05028C028502820D01008A0006A +S315E0740C7030880050280028408010700008400850E2 +S315E0740C8000100870008000D000801040000020C87A +S315E0740C90204830C0A0185800C030D02008D0800852 +S315E0740CA020500020000020C8906810086800A0005A +S315E0740CB0104000A8A008006020C0400800404080B2 +S315E0740CC05000008040A010408840C0202080600022 +S315E0740CD00000801000C0A04000201040C0003C50CE +S315E0740CE00000443800802C201008041000140870AA +S315E0740CF00010402800000010201408600014000062 +S315E0740D003004000010100000402000200808703CF9 +S315E0740D100008041000400000080000040008000405 +S315E0740D20100004001400001044400058000840000D +S315E0740D30041000001810001000004C400840081021 +S315E0740D4000844000548048001890000004840840F1 +S315E0740D5084C80004408C0040000408480040000049 +S315E0740D60080400000404404000004010844000047D +S315E0740D70C08000004000040880040008008004007D +S315E0740D804040149840001008100000100040040021 +S315E0740D900000100000480044000040401800504035 +S315E0740DA02020105008006040002840204840300061 +S315E0740DB0603000003010001008080000440020087D +S315E0740DC0100800600818200000380008609800B821 +S315E0740DD040A800A85000A030000018681010A06861 +S315E0740DE000304060981000000088702800200848A1 +S315E0740DF02008104820C820208808000028004850A1 +S315E0740E00A0201000C0081050084080904018E08080 +S315E0740E102030C0088008C020C820D0200018808800 +S315E0740E20005088000050A040008860F800502810F8 +S315E0740E3040C00040084008104040300010A0400810 +S315E0740E4040807060108040708010401080884070E0 +S315E0740E5008A840002898406FA4000000101C1C20CD +S315E0740E604000040020181844C0000000041818401C +S315E0740E7000000404041C1840000004044010300808 +S315E0740E80000000080C6070100000040C0C14501084 +S315E0740E90000010080C4040000000041C1C40404058 +S315E0740EA00000041418404000040000101854400078 +S315E0740EB004040418184840000000041418D0C04014 +S315E0740EC000000414008080000C0C0C4040C08000CC +S315E0740ED0000C4C4840808000180804404000000034 +S315E0740EE0000454D0C0400000000000C0C0000400FC +S315E0740EF0000848CCC0000000000018C8C00000001C +S315E0740F000818584840000804041010180000080C2B +S315E0740F1004505000000008081070701000000808B3 +S315E0740F2028686050000008181878600000001018EF +S315E0740F30187800000000101818040020000010381B +S315E0740F4038180000000020383880C00008000030EF +S315E0740F5030A880400808087070A080000008087007 +S315E0740F60708080000008086060100000001818E0C7 +S315E0740F70E0200000081818E0E0400000201818C8C7 +S315E0740F80C0000000003038C0C00000000038B8E887 +S315E0740F90C0000800403030A880000808087070C0AF +S315E0740FA0808008084878708080000000886060203F +S315E0740FB00000001050E0E0C00000081890E0E00087 +S315E0740FC00000001858C8C0000000083838E8C0802F +S315E0740FD0037A0080001C1C1C1C40000000100048B2 +S315E0740FE0580060000034200818000004043C3C58A3 +S315E0740FF05801000C04301130100040080844445085 +S315E0741000700000040C0C1C5050020008088C4E0052 +S315E07410101000801C1C1C1C404000000414101800B6 +S315E074102000000020005818002004041C1C0810401E +S315E07410304000000404989081C008001415808080F4 +S315E0741040C00C0C4C48C04080800C0C040C80808230 +S315E07410500000008002001000800400509400C0007C +S315E07410600004048480808000002000C8C800A004C6 +S315E0741070040000D858C08004000C085858010000D9 +S315E074108004541510000040080814045010000008B9 +S315E0741090087060301002001808A82A002000801832 +S315E07410A018786820600000001838380000040038AA +S315E07410B0085018000000003818581800000000386E +S315E07410C038C0D0818000005011A0B0008008083884 +S315E07410D0288090808000087870B0A082801008A87C +S315E07410E02A2020008008183838E0E00000180870DC +S315E07410F038E0E004001818D8DC80A00000101090E6 +S315E0741100B88080000008082828C1C000003011208B +S315E074111020004008083020F0F08080080838385005 +S315E07411203002001000282A2030008010103040E091 +S315E0741130E0000018085010006004002808989C002D +S315E074114060000018186828C0C0945E0000001C1C7B +S315E07411500C0C4040000000100808404000000814E1 +S315E0741160382800000400181C787800000400103059 +S315E0741170103000000808444C50500000000C140471 +S315E07411805050000008084C4C00000000181C1C1C51 +S315E07411900000000014045050404000000000185055 +S315E07411A0000004041C1C5848404000000400909859 +S315E07411B0C0800000040080808080000C480840C035 +S315E07411C080800C0C40448080008008080000000099 +S315E07411D0000000008400C04000000000808480802D +S315E07411E000000000888080800000040408C080C08D +S315E07411F00004001C48504040000410100010000029 +S315E07412000808001400500000000860100020000078 +S315E074121008082820000000001808687060200000A4 +S315E07412201000383840400000081818584040000054 +S315E0741230181838584040000020389890C0C0000014 +S315E07412400010A0A080000808302800A080000000EC +S315E0741250507050E000000000202820200080001824 +S315E07412603028E060000018081000C0C000001818AC +S315E0741270D8C880000000101078F8C0000000080894 +S315E07412802828C0800000101020208000000810106C +S315E074129090B0000000081808F0B00000000028487C +S315E07412A060200000101080B0E0A00000080830D084 +S315E07412B08000000008081018404000003810A0E8CC +S315E07412C0C0C0B2FE0000001C1C1C1C2020000010D4 +S315E07412D00808180040000000003838000004041CB8 +S315E07412E01C787800000404103030100000080844BC +S315E07412F004706000000C0008185040000008080CE8 +S315E07413004C000000001C1C1C5C000000000000186F +S315E0741310180000000000101008004000001C1C08B3 +S315E074132000404000000004989000400000101480D3 +S315E074133080808004004848808080800008000880AF +S315E074134080000000004400404000000400401400A7 +S315E07413504000000000404400C00000000008400067 +S315E07413608000000404D05880800004000C00100053 +S315E07413700000041414000000000000101040100077 +S315E074138000080030001000000008002028404000EB +S315E0741390001810602000600000000070604040009B +S315E07413A00008081058404000000008004040400023 +S315E07413B000280880908080000010308000000000D3 +S315E07413C0002068A08080800000706080308080009B +S315E07413D0006868404000001808809860E0000008E3 +S315E07413E0002038A0A0000018181008C0C000002023 +S315E07413F000883800C000000808A0A8C0C00000102B +S315E0741400108080808008005040B0B000000000700A +S315E0741410380030808000002828202000000000304A +S315E074142020604000001800501000E00001081858D1 +S315E0741430D800C00000080868288080EC4C00008062 +S315E0741440941C0C0C202000000800080840C0000022 +S315E074145020300808000000002838485800000000D2 +S315E07414602010102000000008040C607000000804CE +S315E074147004044050000008084C44000000000808CA +S315E07414805C5C0000000004041050000000000000E2 +S315E0741490081040000404141400484040000004009E +S315E07414A0109040000000141080808080000C0808C2 +S315E07414B00080800008004044C0C000000000404046 +S315E07414C040000000040404000000000004044440EA +S315E07414D0C040000000000000804004040000088062 +S315E07414E08080040004180800000000041010000056 +S315E07414F00000080810140040000000080050004086 +S315E07415000000000028200000000010002850404031 +S315E07415100000100068780000000000005818000011 +S315E0741520000008006808000000001030D0D0C0C089 +S315E07415300000001000000000080828401020000099 +S315E07415400000606000900000000060600000000031 +S315E074155010081800E06000000000100080800000B1 +S315E0741560080810004040000000303080C0000000E1 +S315E0741570080820A0400000000010200080800008C9 +S315E0741580404090B000000008206090908000000019 +S315E074159068480000000000002030002000000000D1 +S315E07415A07050800000000808505040000000200091 +S315E07415B0A0E18180D981000000181814146020001D +S315E07415C000100050504040000010006030000004ED +S315E07415D000101438380000040010101030000008B1 +S315E07415E0084040103000000C04180C101000000085 +S315E07415F00008084000000014101010404000000479 +S315E07416000000084040000000005810000004000884 +S315E0741610000000000000001404D090804000001424 +S315E074162014808080800C0C04004000808008004C9C +S315E07416304C000000000808000000000000040050A0 +S315E0741640508080000004040480808000000800005C +S315E074165048000000000000D818000000000C0048A4 +S315E074166008000004000000100000000C0014444060 +S315E07416700000000808104000100000080028284008 +S315E074168040000018103828002000000010101800E0 +S315E074169000000010000808404000001810101840C0 +S315E07416A04000001018903040C00000000080000038 +S315E07416B00008006068900080800000606080908020 +S315E07416C000000000080000000010003828C0E000A8 +S315E07416D0000800F060E0E000000000405880800000 +S315E07416E000101090A8808000002808507840000010 +S315E07416F000101010100000080820200020000008D8 +S315E074170008303800400000000028282060000000FF +S315E0741710002000C0E000000800000000E0000000C7 +S315E074172000008800800000080020280080CE950024 +S315E074173080001808041460600000000010100000B7 +S315E074174000000800100000000400101408080000EF +S315E0741750040010103010000008084040100000002B +S315E074176008000010100000000000080800000000E7 +S315E0741770101400000000000000000000404000006B +S315E0741780000010400000000000080840000000005F +S315E0741790001090C0400000000000808080000000CF +S315E07417A00000004080000008404040000000080847 +S315E07417B000000000000000004040800000000000CF +S315E07417C0808480800000000008000040000004046B +S315E07417D0004000000000000C0040404000000000A3 +S315E07417E000000000000400104040000000004010BB +S315E07417F0004000000000204000000000100040009F +S315E074180000000000000010004040000000000000EE +S315E074181000000000001010000000000000180080B6 +S315E0741820800000001010000000000000004020A0BE +S315E074183000000000505040500000000000280000F6 +S315E074184000001808000860600000000070E0E0E046 +S315E0741850000000005040000000000000201000006E +S315E074186000001828707000000000101010100000BE +S315E07418700000181080800000000010004080000016 +S315E07418800000284800200000001080A0A08000001E +S315E07418900000200020000000000000184040000016 +S315E07418A02800102800004DC2000000080804140047 +S315E07418B0000000100000100000000000003030004E +S315E07418C000040010043038000004001020083000D2 +S315E07418D00008084000102000000008100410000002 +S315E07418E000000008080000000010000050004000EE +S315E07418F00004000000000000001000100000400426 +S315E07419000008000000000000000000C05000000065 +S315E074191000100000000080000000000000808000DD +S315E074192000000000000000000040004000000004D9 +S315E0741930000414000000000000040480C0000000ED +S315E074194000004800000404040400100000040004CD +S315E0741950040808000004000004100000000C0040B5 +S315E074196000400000000000000000000000080000D5 +S315E07419700000000000180028280020000000005035 +S315E07419804840400000180000404040000018101025 +S315E074199058404000000008802040C00000202080AD +S315E07419A0004000080070682020808000007060109D +S315E07419B00000000000200840000000001020300005 +S315E07419C000000018000000C0C0000010004048800D +S315E07419D0C00000200008280040000008184018C025 +S315E07419E080000010101010000000000000002000BD +S315E07419F00008087058000080800000280820200045 +S315E0741A000000002020C0C000000800000040400034 +S315E0741A100000000088000000000800000800007D57 +S315E0741A2018000000000804200000000000040020F4 +S315E0741A300000000020202020000000002030282034 +S315E0741A4000000001201038000000000820000000AB +S315E0741A50000000080000000000000002080000809A +S315E0741A60000000004040000000000000004000005C +S315E0741A700000000400204000000000000040000068 +S315E0741A800000000010C0000000010010000080009B +S315E0741A90000000000000800000000000400000002C +S315E0741AA0000200400080000000000000000000001A +S315E0741AB004040444C0000000000408200000000090 +S315E0741AC00404000000000004040C0000000000019F +S315E0741AD0040800000000000400000040000000005C +S315E0741AE0004000400000000200000080000000009A +S315E0741AF00040404000000000404000000000000C40 +S315E0741B0040004040000000105000404000000000DB +S315E0741B10404000000001000800404000000018400A +S315E0741B202070000000004000100000000002002059 +S315E0741B30008000000010104000000000100010004B +S315E0741B40C040000000145040000000002030200027 +S315E0741B50400000001008108000000001000810101A +S315E0741B6000000000080080800000000000200000F3 +S315E0741B700000000208400000000000000080808041 +S315E0741B8000000000404040400000000400000000F7 +S315E0741B900000000000000000EE0C000000000020D1 +S315E0741BA0142000000010044420200080003400005B +S315E0741BB04000000004041008000000000510001046 +S315E0741BC00000000000680000000000080400040043 +S315E0741BD00000000002000010C000000400000000D5 +S315E0741BE000000000040000000000000004046040EF +S315E0741BF000040000000018000000000410980000C3 +S315E0741C0000000110040800C0000C00000000008011 +S315E0741C100000040040000000000802400410800048 +S315E0741C200000004000400000000004008000400016 +S315E0741C300000044C20800000000000508840000042 +S315E0741C4000180418000000000100080800400004B1 +S315E0741C5008400050400000000840201000000008D2 +S315E0741C600248005080000000184008204000000040 +S315E0741C700800080000000000140400200000003092 +S315E0741C800030000000000000000810000000012091 +S315E0741C90080870000000000000200000000008083A +S315E0741CA010700080000802400030800000100008C8 +S315E0741CB0404040000008003000408000000004000E +S315E0741CC0102000000030000038000000000010080A +S315E0741CD080C0000001001808004000080028304069 +S315E0741CE02080000000400820000000000240081038 +S315E0741CF00080001000400000400000000800002052 +S315E0741D0000000000048008400000001820001880DD +S315E0741D100075A900808000080000C0000000000C77 +S315E0741D20102040000000040830000000000000208D +S315E0741D302000000000010028004000000008004078 +S315E0741D4010000000000000101000000000020850AF +S315E0741D5040800000001010400000000000100840B1 +S315E0741D604000000000141860000000000008000045 +S315E0741D700000000000000040C000000100080040C0 +S315E0741D8000000000040040800000000800004000ED +S315E0741D900000000200104080000000000000800097 +S315E0741DA00000000004C000000000000C00204000A9 +S315E0741DB000040400008000000004000000404000BD +S315E0741DC0000500081040000000000010400000000C +S315E0741DD00000000060000000000200502080000057 +S315E0741DE00000100000000000001810400000000021 +S315E0741DF0000C082000000000000808000000000045 +S315E0741E0000182800000000010018004000000008D7 +S315E0741E100850700080000008004040800000000216 +S315E0741E20083040800000000810E000000000001058 +S315E0741E3008402000000000140840A00000000000E4 +S315E0741E4000C0C00000000028100000000001002857 +S315E0741E5000C08000000000400080000000080030F0 +S315E0741E60500000000002003040800000000010A026 +S315E0741E70A0000000001000E08000000000141020B4 +S315E0741E8080000000000000800000CEBD0010030357 +S315E0741E901C1C606008000303181C406008000707F8 +S315E0741EA038384040080807473838C0C0100006077D +S315E0741EB0303880C001110E0E7070808051010E0EA4 +S315E0741EC07070888851010C0E6070008803031C1CC6 +S315E0741ED0E0E0080043031C1CE0E010080303181C50 +S315E0741EE0C0E0101007473838C0C0000047073838DC +S315E0741EF0C0C010004607303880C001410E0E7070C5 +S315E0741F00888041410E0E7070888001010C0E6070FD +S315E0741F10008003031C1CE0E0100043031C1CE0E09B +S315E0741F2000000343181CC0E0000007073838C0C03F +S315E0741F30001007473838C0C000100607303880C034 +S315E0741F4011010E0E7070808001110E0E707080801B +S315E0741F5011210C0E6070008003231C1CE0E010104D +S315E0741F6003231C1CE0E010102303181CC0E01010BF +S315E0741F7007073838C0C0302007073838C0C00000BB +S315E0741F800607303880C021210E0E707080802121C2 +S315E0741F900E0E7070808001010C0E60700080030379 +S315E0741FA01C1CE0E0000023031C1CE0E000000303BB +S315E0741FB0181CC0E0000047073838C0C0100007C7D7 +S315E0741FC03838C0C020000607303880C011010E0EC4 +S315E0741FD07070808011410E8E7070808001018C0E5D +S315E0741FE06070008023031C1CE0E0001002021C1CDD +S315E0741FF0E0E010000202181CC0E000000606383863 +S315E0742000C0C020BAC00014000000080000080080B8 +S315E074201000000800000800800000080004080804B6 +S315E074202004280000041000040400200400000000EA +S315E07420300010100404400004040010080C00000CA6 +S315E0742040000000040800000C0800000800400004CA +S315E074205004000010000000081000000010044000A6 +S315E0742060080400080044040010044000004484009E +S315E074207000040C00400C000040000040400080402A +S315E074208000040800008C00000000040080000000DA +S315E0742090401400400008080000000080C0000840BA +S315E07420A00008000000080800000800844018084092 +S315E07420B000081000000010040000000C0800000482 +S315E07420C0000000080C00100C081000080800400816 +S315E07420D00840000818000008000000101800601896 +S315E07420E010404010004040101040401038404030DE +S315E07420F00040C0000040400000C0000020000820FE +S315E0742100008800002000002020000000000000008D +S315E074211000000000000000008000000000000820BD +S315E074212080080800400000400000080000080040F5 +S315E07421300008100000100000C000088000280000AD +S315E074214000000000001000080800600888104008CD +S315E074215088400008000000880000000000200000AD +S315E07421600040C000188000180080001008000000CD +S315E0742170080000000800000808008020FC2E00001B +S315E074218000000000000000000000000000000000F5 +S315E074219000000000000000000000000000000000E5 +S315E07421A00000000000000000000000000000400095 +S315E07421B000000000000000000000000000000000C5 +S315E07421C000000000000000000000000000000200B3 +S315E07421D00010000000008000000000000000000015 +S315E07421E00000040000000000000000000000800011 +S315E07421F00000000000000000000000000000000085 +S315E07422000000000000000000000000000000000074 +S315E074221000000000000000000000000080000000E4 +S315E074222000000000000000000040000000400020B4 +S315E07422300000000000000000000000000000000044 +S315E074224004000020000020000000000000000000F0 +S315E07422500000000000000100000000000000000023 +S315E07422600000000000000000000000000000000014 +S315E07422700000000000000000000000000000800084 +S315E074228000000000000000000000000000000000F4 +S315E074229000000000000000000000000000000000E4 +S315E07422A00000000080000000000000000000000054 +S315E07422B00040100000000000000000000000000074 +S315E07422C000000000000000000000000000000000B4 +S315E07422D00000000000000000000000400000000064 +S315E07422E00000800000000000000000000000000014 +S315E07422F00000000008DEAE000010000440001C0080 +S315E0742300200008000010040000100044400410008F +S315E07423100000000000001004102004000400000017 +S315E0742320004800100000080008040090000010083F +S315E074233000400004000000000400001040000000AB +S315E074234014004000000010000000000000040010BB +S315E0742350001010400004000040000000089444009F +S315E0742360001400800000000400008000000804806F +S315E07423700048C00010048400080000002400804077 +S315E074238000000080080008000080A00000400008FB +S315E074239010800080008000000800009080400000FB +S315E07423A0000000100000100000000C00000010088F +S315E07423B040004010001818000000300000000008CB +S315E07423C040084000004800040000200800084088E7 +S315E07423D0000820100000100000000008080000103B +S315E07423E008208030200044B02080801000900020C7 +S315E07423F088000020100080100080200010008010FB +S315E074240010288800002000000000000018008010EA +S315E0742410E8000080300008008010800880008000AA +S315E0742420801000102010800810000000008010005A +S315E07424300080000000000000200008202000080052 +S315E07424404000002000800008000000080000000042 +S315E07424504000A80000000000802800208008680082 +S315E07424600000000000001020000830008040B76EC5 +S315E0742470008000040000000800000008000000006E +S315E074248000000004000400000000001000000010CA +S315E07424900000100010000000404000100010000022 +S315E07424A008042880100000080010400006000000B0 +S315E07424B0A0040000104000000008040000000400BE +S315E07424C0000000000404000000000050000000005A +S315E07424D040400000000C50040004100000000400AA +S315E07424E00000000000000804004000100000040032 +S315E07424F000000808000084000000000040000008A6 +S315E074250000000020004000A0009000000000800859 +S315E07425100000089800C004180000001000000000D5 +S315E07425200004100804040010000000000008100005 +S315E07425301040000020000008000800001008400861 +S315E07425400000000000080000800008000000001091 +S315E0742550000000001000000030000800102408801D +S315E0742560200000001000000000088000208000C0F9 +S315E07425700000008000000000004020080000080011 +S315E07425800000808000000000004008000800008819 +S315E074259040000088000000000000000000000020F9 +S315E07425A008800000008000100000A04000000000D9 +S315E07425B00000202000000800080040000000002011 +S315E07425C00880000020000000800000002000000069 +S315E07425D00008802000008900080800000000000060 +S315E07425E0000800100000C06A2700001000001040C8 +S315E07425F01400240000000050040020104000104035 +S315E07426001000000000000000040000200004040034 +S315E07426100000000800080000000000000000000050 +S315E074262010800000000000000800000000080000B0 +S315E074263000001000400000001000000000000000E0 +S315E07426400010100000000400000004008000008008 +S315E0742650400000008000800000040000008000005C +S315E07426600080080040801000806480000000002034 +S315E074267080400000008008000000800080000000B8 +S315E07426800800000080000040000000000000000028 +S315E07426900000000000000000100000000040000090 +S315E07426A008000040085000000800000014082000EC +S315E07426B000000040004000001400002000280000E4 +S315E07426C040080000241028000000002000080800DC +S315E07426D00000002020800000401401A080001080DB +S315E07426E00020000000001000100000800020100898 +S315E07426F00090100880008020000000080000001898 +S315E07427000890802080002010000080100000800077 +S315E0742710008080100090803000C00010000000003F +S315E074272000000000000000000040000000082000E7 +S315E0742730004000002008008000001000080000003F +S315E07427400000004000882000001000200000000017 +S315E07427506000000000000000083000000020000067 +S315E0742760F67C00000000000000000082000000001B +S315E074277080000000000000008000000000000020DF +S315E074278000000002002000000002000000000200C9 +S315E074279000000000000000000002000000000002DB +S315E07427A000000000000200000000000200000000CB +S315E07427B000020000000002000000000000000000BB +S315E07427C000000000000000000000000000000000AF +S315E07427D0000000000000000000000000000000009F +S315E07427E0000000000000000000000000000000008F +S315E07427F0000000000000000000000000000000007F +S315E0742800000000000000000000000000000000006E +S315E0742810000000000000000000000000000000005E +S315E0742820000000000000000000000000000000004E +S315E0742830000000000000000000000000000000003E +S315E0742840000000000000000000000000000000002E +S315E0742850000000000000000000000000000000001E +S315E0742860000000000000000000000000000000000E +S315E074287000000000000000000000000000000000FE +S315E0742880004000000000004000000000000000006E +S315E0742890000040000000004000000000004000001E +S315E07428A0000000400000000000000000000400008A +S315E07428B000000000000000000004000000000400B6 +S315E07428C000000005000000000004000100000000A4 +S315E07428D0010000000004000000E50400042120006B +S315E07428E0000800400802400011041820400000006F +S315E07428F000040100200A4008009020001004000142 +S315E074290022083000C0004001000802401000840034 +S315E07429100020000120080442001400A400000022F4 +S315E07429200010048120000008004008024000118471 +S315E074293010284008000000040120080240000090BE +S315E074294000001004000122082010C01040010008A5 +S315E074295002401000040004200001A0088042041024 +S315E074296080200020000200900481200008000840C6 +S315E07429700002401001840820000040000004012099 +S315E07429800842401000800000000400210208004064 +S315E07429909000001100080240100084000420000139 +S315E07429A020080002440070801000000200100481C8 +S315E07429B0200008000840000240100184082040000E +S315E07429C00000000401200802004000D0000010045A +S315E07429D000012208601080500001000802401004D3 +S315E07429E080000020000120080042041000A00020AE +S315E07429F00002001004002001080009C000824010A3 +S315E0742A000104882000004000008401200842005040 +S315E0742A10000000C00004802102080000D0004010CD +S315E0742A2001080340100480000020000120080042E1 +S315E0742A3004003080100000020010048020000800BA +S315E0742A400840000240100004882080004000000422 +S315E0742A500020FAF20000210400202C004088024095 +S315E0742A6000910410A840000000008C0100200820AA +S315E0742A704A0050820090040021004A100080000051 +S315E0742A80030048024000009430040000010008008E +S315E0742A90420014208000000006000010813400001B +S315E0742AA00C00404802001001842008000040000039 +S315E0742AB06C01002008204A0050028010048021082E +S315E0742AC00200508018000300080240000010042041 +S315E0742AD0002411800800C200940004202000020043 +S315E0742AE0900401A000800000480002401009002410 +S315E0742AF00880080080042441200048000240500207 +S315E0742B0008100400A1028010488000080100080043 +S315E0742B100210408004002224014008000240045060 +S315E0742B20843000002200100401A0008000004800F8 +S315E0742B300240100980042800480040040401002083 +S315E0742B400A200040508008900400210208401000DA +S315E0742B505000010008824010800004802004812027 +S315E0742B600800420094002000200086001004002132 +S315E0742B7000090008C000824010010480080020604B +S315E0742B8000008C0120004208004058008010048048 +S315E0742B902102081000C00040010008024000100045 +S315E0742BA01400200401A00880420014000020A080D4 +S315E0742BB0060010048021000800084100024010005D +S315E0742BC004802980004000000C0020547F0000003F +S315E0742BD0000000000000000000000000000000009B +S315E0742BE0000000000000000000000000000000008B +S315E0742BF0000000000000000000000000000000007B +S315E0742C00000000000000000000000000000000006A +S315E0742C10000000000000000000000000000000005A +S315E0742C20000000000000000000000000000000004A +S315E0742C30000000000000000000000000000000003A +S315E0742C40000000000000000000000000000000002A +S315E0742C50000000000000000000000000000000001A +S315E0742C60000000000000000000000000000000000A +S315E0742C7000000000000000000000000000000000FA +S315E0742C8000000000000000000000000000000000EA +S315E0742C9000000000000000000000000000000000DA +S315E0742CA000000000000000000000000000000000CA +S315E0742CB000000000000000000000000000000000BA +S315E0742CC000000000000000000000000000000000AA +S315E0742CD0000000000000000000000000000000009A +S315E0742CE0000000000000000000000000000000008A +S315E0742CF0000000000000000000000000000000007A +S315E0742D000000000000000000000000000000000069 +S315E0742D100000000000000000000000000000000059 +S315E0742D200000000000000000000000000000000049 +S315E0742D300000000000000000000000000000000039 +S315E0742D40000000003E490000004020001000000032 +S315E0742D500820400000000008000010000000002871 +S315E0742D600400000C10000000004000200000000089 +S315E0742D7010000018040010085000040408440014FD +S315E0742D8000000000000004000000000000004000A5 +S315E0742D908000001000000000000080400000000089 +S315E0742DA010100000500004000084000000000014BD +S315E0742DB00000800000001000000040400010000099 +S315E0742DC00000100004108000000000000004000001 +S315E0742DD000040044000000008000408040000000D1 +S315E0742DE00800008000804000808010140000000419 +S315E0742DF000000000008000000000000C00000020CD +S315E0742E0008C0000000000040000000300000000030 +S315E0742E1000000020000010100808001000000010E8 +S315E0742E2000001840000000000010000000000000E0 +S315E0742E300000880000000000000040400000002010 +S315E0742E400080081080100000802008800008006070 +S315E0742E500010000020000000080000400800600038 +S315E0742E60080020008010200000200001000000000F +S315E0742E700800000000002000800000000000000050 +S315E0742E804000000000000000000000200000000088 +S315E0742E900000002000001090000000000000008098 +S315E0742EA06000000000004000000000000000002800 +S315E0742EB00000800800000020100000080060310067 +S315E0742EC00020000020080010000000000000004808 +S315E0742ED0200000400C0000300010080000001000D4 +S315E0742EE000100800400000000008004000004000A8 +S315E0742EF00000000000100000000000041000400014 +S315E0742F0008000000001800000040000000000410F3 +S315E0742F100000000010000000000004000000000043 +S315E0742F20001410001000000000004400000000804F +S315E0742F30000000048000000004000000008000101F +S315E0742F4000000000800000000000004020000080C7 +S315E0742F5004080000000400000000001000000000F7 +S315E0742F6000080400080080000800008000180020B3 +S315E0742F70900400000000000000040000080000084F +S315E0742F800800000040040030000800180800000043 +S315E0742F9000A000000020000040004000000010087F +S315E0742FA02000000000008000002050002010000087 +S315E0742FB010001008000000901000001000200000BF +S315E0742FC000000000100080008000201008802800B7 +S315E0742FD00000080000001000005000000000C0006F +S315E0742FE000000000080000000000D0000008801017 +S315E0742FF008001000080000000820000020400000CF +S315E07430000000200800400040000000088000200016 +S315E0743010200010400820002000000000200000007E +S315E07430202040000800000000004000000020000876 +S315E07430300000000101004F3700000040203000001E +S315E0743040000400400000002000002050000008202A +S315E074305000100C000000041000000008004020007E +S315E07430600008004000040850004008040004100002 +S315E0743070400400000010004004080000001008003E +S315E07430800040000000000014000000008000100002 +S315E074309000000014000040000010009000100000D2 +S315E07430A0001400840000000080000040044000101A +S315E07430B0000400100084000010000000800000008E +S315E07430C000000004400004000080000040408400DA +S315E07430D0000008001000804080088010041C000086 +S315E07430E080000000000008A000841000400C00007E +S315E07430F0000428400000080000400000004400A0DE +S315E0743100100008000020081000A01000080020003D +S315E07431100000404018000008002000000000008015 +S315E0743120002000C01010200000100040180040007D +S315E0743130800000108800A00010800000000090005D +S315E07431400000C02010280020080000000840080095 +S315E0743150601008002000808010000000200100004C +S315E074316000000010000000003000080010000000AD +S315E07431700008000000004000000000200820004025 +S315E0743180000000080000002010002050000000201D +S315E07431900000A000000000400000400008000000AD +S315E07431A0000008008008200008300000000800CC09 +S315E07431B05C00006014000048000000000010004845 +S315E07431C0000000004000001C10082048080430008D +S315E07431D000144004100010000004005800000000C1 +S315E07431E008000040040004000010000000000820FD +S315E07431F04000401804000440100020040000000061 +S315E074320000000010004000004010000408000000B8 +S315E0743210004000040000000000800000000080040C +S315E074322000400000804000008000000004000000C0 +S315E07432308000000000000010000000001440001040 +S315E0743240004400900C000040000000800408005028 +S315E0743250408000900800488040840000004C904014 +S315E074326000000000000400000400000000000000FC +S315E074327000002000002084200000002008200000C8 +S315E07432801004008010A880000000300820080010A8 +S315E07432908010000010409000201050080040008814 +S315E07432A000002018802000002000100080202000FC +S315E07432B000002010400050880800300000800008AC +S315E07432C00000002800000008005010000000000014 +S315E07432D04000A010008040000008102000C00830B4 +S315E07432E00000000010000000481000102080B000BC +S315E07432F000102000100000202008401008804028AC +S315E07433002010400800002008000040000810004823 +S315E0743310201020000000002000480010000000008B +S315E07433200038085000080088DE3300000000001002 +S315E07433300800004000000008000000001000400093 +S315E074334018000000000000000000000400001000F7 +S315E074335010000000080000000000100000000400E7 +S315E0743360000000000040000020480010000000004B +S315E0743370400010040000000004000000004000005B +S315E0743380005000000400000000000000040000008B +S315E0743390000000000000000480004000000080008F +S315E07433A0000000000000040000800000000000003F +S315E07433B0000000000010001000440000100000003F +S315E07433C04000000080004000100010000000000083 +S315E07433D0000084000040084000000000000008007F +S315E07433E0002400000000000000000000000000203F +S315E07433F000000000000000000000100080000000E3 +S315E0743400800000000040000000008008000000001A +S315E07434100000000000002008008000080080000022 +S315E07434200000201000200040000000200000005042 +S315E07434300000001000000000000000000000100012 +S315E0743440080040001020000000004080000010409A +S315E0743450000008200000C0000000000020100000FA +S315E074346000004000108020003000000000100000D2 +S315E0743470002800005000080860102000400000009A +S315E0743480000000000000002840100000000000006A +S315E0743490000008000000000000200020000008087A +S315E07434A00028B20040100C10000004000000300048 +S315E07434B0004000000000000000041000000000005E +S315E07434C0100008044000000000000408001000002A +S315E07434D0000008000040000000000010000000003A +S315E07434E00000000040080004000000000000000036 +S315E07434F000008000001000000000000000000000E2 +S315E074350000000000000000000000800000000004DD +S315E07435101000000000004000300000800000000051 +S315E074352010000000000000000000000000000040F1 +S315E0743530000000200000002C0000000000000000E5 +S315E07435404000004000100800000800000020000061 +S315E074355000100000000004400000000000000000BD +S315E07435600080002000000000080000080000001041 +S315E0743570000004080000100020000000100800009D +S315E07435801000000000000050900000304008000079 +S315E074359000000000000000000080000000000080D1 +S315E07435A02000000008000000000810000000008001 +S315E07435B00000200020084000000000100000000019 +S315E07435C00000000840200080000800001008000099 +S315E07435D00000000000000000000008100000000079 +S315E07435E080000018002000800000000000000090B9 +S315E07435F00000000008004000200000000000080001 +S315E07436000000000000000000000000201000000030 +S315E074361000001008001000008000EF570020000042 +S315E07436200000400800800000000000000000000078 +S315E074363000000008004820000C2000001000000084 +S315E074364000000000004000000000000000000000E0 +S315E07436500004000000000000000800000000000004 +S315E0743660000004000020000040000000000000009C +S315E074367000000000000000000800004000000000A8 +S315E0743680000420000000000080000000000000003C +S315E074369000000000080000000000000000000000C8 +S315E07436A000100000400000000400000000800000EC +S315E07436B00000081000000004080000008084000088 +S315E07436C000C0004000000000048004000000001008 +S315E07436D00000008000000008100000001060000088 +S315E07436E02000840000002008200080000000008094 +S315E07436F02800100000002000284000005000000060 +S315E0743700000008000010004000208008001020200F +S315E0743710004000000000000000000000001000807F +S315E074372040800008402000000808000800000000FF +S315E074373000200000002000001000000000001000CF +S315E074374000000010000000000010280000000000D7 +S315E07437500000080000000000000000000000000007 +S315E0743760000020000000000000800000000000005F +S315E074377000000800004000009000002000200000D7 +S315E074378000208040000000000000004080400800F7 +S315E07437900000002339000014140008042C00001003 +S315E07437A000001800400020001004000440000000EF +S315E07437B0000010000020040000040008000400006B +S315E07437C000100040200000000040004000000C00A3 +S315E07437D00000000000000800000000004000140033 +S315E07437E000100040000000400000000000000440AB +S315E07437F01000000000000000000000000400001447 +S315E074380004000000804000000050000000540010E6 +S315E0743810000040000000000000000000001084007A +S315E074382000004000001000008000100800080C0042 +S315E074383000101000000000040010000000080400EE +S315E074384004000000000408100000000008000000F6 +S315E0743850004000000000800020000000000000002E +S315E0743860000000008000C008C000000800000008E6 +S315E07438700080004000001008200080280000400806 +S315E07438801000C0000000000000300000801000004E +S315E074389040080000004060000070004000880000AE +S315E07438A00000000000080000000000000800A010FE +S315E07438B00000800028000000000090000000000076 +S315E07438C0000088000000C000000008000008400006 +S315E07438D0001000000000000000000000000000007E +S315E07438E0001000000000000000100000200000003E +S315E07438F0000000080800000000080040000800000E +S315E074390000002000100000001000000011330000D9 +S315E074391000000050000000600000C00000000000DD +S315E07439200820004000000008000800000000004085 +S315E0743930100000003020000060000000000040002D +S315E07439400000000000400C005040080000500000E9 +S315E074395000400400001000000000000000000000B9 +S315E0743960000010000000000000004000000000406D +S315E0743970000000001000400000008000100000000D +S315E07439805000000400000000001000000000000079 +S315E074399000000000044000100000100000008000E9 +S315E07439A08000100080001090000000000000000805 +S315E07439B08000080088000480000000140000000005 +S315E07439C000400000000000400000002000080000F5 +S315E07439D000008000000000100000000000200800D5 +S315E07439E020000000004000000060000000000000BD +S315E07439F040000000000000000040000000000000ED +S315E0743A00000800000000000000102040000880005C +S315E0743A10080000100800204020000020000040103C +S315E0743A2000002008600000000000100050800000D4 +S315E0743A301000800000800880000010000000002064 +S315E0743A4000002000000000002000200000000000BC +S315E0743A5000000800000040000000000000080000BC +S315E0743A60000040000000100000000020106000100C +S315E0743A70010010000000000000400000000020403B +S315E0743A8000000000003A6F00000000002000001003 +S315E0743A900000000400000000001000000028000090 +S315E0743AA000100000400000002000200800480000DC +S315E0743AB010000000102000200040140810000000E0 +S315E0743AC00000000000000008500000100000000034 +S315E0743AD010400000000040140000400000000000A8 +S315E0743AE000000000100000000080000000400000AC +S315E0743AF00000001000008010008000008000800448 +S315E0743B00448004400004040000100010100000001B +S315E0743B1080000040000010000800000000008004EF +S315E0743B200000008800000408900400800000008013 +S315E0743B30180000000000000804001008100010804F +S315E0743B40001000000018000010000020200000188B +S315E0743B500000003800008000000000482040401853 +S315E0743B6010004000080000183000400820000810DB +S315E0743B7000000000000020180000000000000000B3 +S315E0743B8008000080000000000020000000000040F3 +S315E0743B900008000000080000000808001000880013 +S315E0743BA00000800000800008000000000080000033 +S315E0743BB000808040001000C800881000402000009B +S315E0743BC040084020000000000000000000000000F3 +S315E0743BD000000000200000002040001000500000AB +S315E0743BE02000000000400000085000000000400083 +S315E0743BF0000000200000400000006000100019E59D +S315E0743C0000000010644000004C0008000040000012 +S315E0743C10000000004000440000200000480020043A +S315E0743C204000400000000400000004400000000072 +S315E0743C30400010000004081000000840000048002E +S315E0743C404000084000004000000000000000000052 +S315E0743C5000000000000000100000000400000000F6 +S315E0743C600000005000900000108000000080040006 +S315E0743C7000000000000000000000000000000000EA +S315E0743C8000000000000000800400008004100800BA +S315E0743C9000041000048000000000000000080080AA +S315E0743CA0000000040010040000800480000004009A +S315E0743CB08080000000000000000000800800009092 +S315E0743CC00000000000000080002000000000C0003A +S315E0743CD00000001000800000004080081020000002 +S315E0743CE0008000100000000000880008002000003A +S315E0743CF000004800002000080000000000280000D2 +S315E0743D003000000000100010000000102020002099 +S315E0743D100040200000000060008000004048000081 +S315E0743D2000000000000008000000180000204000B9 +S315E0743D302000404000000040000000000000000049 +S315E0743D400000000000004040000020000000000079 +S315E0743D500000004000000000484000180000100019 +S315E0743D6050200000000028000000480000004000D9 +S315E0743D700000000000000055CB00080000000008B9 +S315E0743D8000401040000010001000000000400000E9 +S315E0743D902000240000000400000000100000000071 +S315E0743DA00000000000001400000010000000000095 +S315E0743DB00008000000000000100000000000000091 +S315E0743DC04000000400000000100000000010000431 +S315E0743DD00010000050000000000000C00000000069 +S315E0743DE000840010000010800000000000800000D5 +S315E0743DF000000000000000000000000000008400E5 +S315E0743E004000100080000000000000100000080070 +S315E0743E100000000000001008108400000480000018 +S315E0743E20840000080C000010000000000000000888 +S315E0743E300000480000000000002800300000000088 +S315E0743E400008002000008000100000000000000858 +S315E0743E500000000880100040500000088000004810 +S315E0743E604000000028000000000800000040000048 +S315E0743E700000280000404000000008400080400038 +S315E0743E800000001028404000400800000000104088 +S315E0743E9020404000800008200040008000000000C0 +S315E0743EA00000000088008010400000000000000060 +S315E0743EB02800000000000000081000000010000058 +S315E0743EC00000004000000000200000002008000010 +S315E0743ED01000102000000008002020403040300020 +S315E0743EE02000400000000800300028100000082080 +S315E0743EF0C13800000000000004000000204000000B +S315E0743F0000000800000020201000000008400000B7 +S315E0743F10081060240000100000100000001020401B +S315E0743F20000000400040000000400000040004006F +S315E0743F3000000400000800000000104000100000BB +S315E0743F4000000000000000001000400000000000C7 +S315E0743F500000000000800000800040008000400007 +S315E0743F6000000000800000048000000000000000F3 +S315E0743F701000000000000000000000400050000047 +S315E0743F80800000000018000400000C00000000002F +S315E0743F90000000080000088000000800000000002F +S315E0743FA0000008000000000000008000000000002F +S315E0743FB080000000080000002000300000080000C7 +S315E0743FC0006000882020002000000000000000202F +S315E0743FD000000000002000000000200000C0100077 +S315E0743FE008004020C00020100000200000000010EF +S315E0743FF008000810000008000000080000008000B7 +S315E074400000008000001000008080100000100000A6 +S315E0744010101000003000C008004880000010000056 +S315E07440200810800000204000000000200000000816 +S315E07440300000000000000000000000000000000026 +S315E074404000001000000000002000000800002000BE +S315E074405000000000000000000000000000002040A6 +S315E07440600000000000100040001F0B000410402008 +S315E074407010000000000010000000000000001004B2 +S315E074408000000000000030000000000000000004A2 +S315E07440901000042000500000002014080000000006 +S315E07440A040100000000000000040000000400000E6 +S315E07440B010000400000000401000000050000000F2 +S315E07440C0400000001004000004000000000000003E +S315E07440D044000000000400040004000000440000F2 +S315E07440E000004000100000004000000000000040A6 +S315E07440F000001000000400000040884080000000CA +S315E07441000000008000801000000000000000100035 +S315E074411000000000000000800000801000000080B5 +S315E0744120000000000000081000000080800000908D +S315E0744130100000000800000000080008000080007D +S315E07441401040009000400020001000000040000085 +S315E07441500080000000100000100000000010001045 +S315E0744160000010000000001800004030000050000D +S315E0744170000010000060000000001020081000002D +S315E0744180002800002000400000000000000000103D +S315E0744190000010001800004000000000200000003D +S315E07441A00000000000000000000000000020000095 +S315E07441B040000028200000200000000040000000BD +S315E07441C00000200000001800200000000000080035 +S315E07441D0000008000020004000000000000000001D +S315E07441E000005DDC0000000000002000000000001C +S315E07441F01040080010001000000000440000041491 +S315E074420000100414000008004020041000000004AC +S315E07442100000041000000004100400100000000008 +S315E07442200000000000001000001000000000000014 +S315E074423004100000000000000000000000100004FC +S315E07442400000100000000010C000001080000000A4 +S315E074425000000014000000008000001000840010CC +S315E07442600404001004000000001000048000000440 +S315E07442700098000000000488001000000018008810 +S315E0744280000000001010000000100810000000008C +S315E07442901000000000008410001080100800001068 +S315E07442A080080010000000000000000020000000FC +S315E07442B000000800000000081000800800200000DC +S315E07442C00800084800008008000000080010E000BC +S315E07442D000681040100020400000300000102000FC +S315E07442E000201000000010000000002040000000D4 +S315E07442F0080800000060002058000000100010203C +S315E07443000000002090204000000010001000000023 +S315E07443100820000000000800000000001000000003 +S315E074432000000000004000000020000000000020B3 +S315E07443300020000020200000200000000010000093 +S315E07443402000000010080000610008002000080842 +S315E07443500000000800402808002010592D00008055 +S315E074436080000000300000040000000040082000D7 +S315E07443700000000020004010000020400000000013 +S315E07443800010000000000004400800000000000077 +S315E0744390000808000004400000000008080000005F +S315E07443A004100040000000004000000040000000DF +S315E07443B0000000100000004000004000000004000F +S315E07443C00000000000000000100040000040000003 +S315E07443D000400000008040000040900000000000B3 +S315E07443E00000000000004000000000000008080023 +S315E07443F00004000000000000000000000800000057 +S315E0744400000000040000001008000008001400100A +S315E07444100800080000001800000090202000080042 +S315E074442000100000000008800030006000000040CA +S315E074443020001000800090000000001000000000D2 +S315E0744440800000005000000080000000002000089A +S315E074445000000000000000000020000000000000E2 +S315E0744460000808000000001800000000000000804A +S315E074447000000000000000000000200000000000C2 +S315E074448010000000000000000000000008000000BA +S315E0744490000000282000000000000000000000007A +S315E07444A000000000300000000000004000401000F2 +S315E07444B0000000400048004800400000000800008A +S315E07444C00000004100000000000000004000100001 +S315E07444D06001010005DE000014004010081460A0BD +S315E07444E0080010401040000030204404080000200A +S315E07444F004004800640054241000142008300410AA +S315E07445002040104004205000504004005C00141415 +S315E074451008400800480008084000400000100040C9 +S315E07445200440100010000440000010001000100059 +S315E07445301400540000000000408040508000D40015 +S315E07445401010049440800410C000100000000400B1 +S315E074455014005410040004000000000014C010801D +S315E074456014C0144018881008041884000010888059 +S315E074457008089000189800088400140018801C90AD +S315E07445800C081400100004980450081088001808E9 +S315E074459050508088301028980020000000002028B1 +S315E07445A0000018008028008028C0384098801800E1 +S315E07445B09888100048001810889028002800581031 +S315E07445C0E8805800C04038480020080020100000F9 +S315E07445D00810680048482020002010004038C000C9 +S315E07445E058001800082048005020085800F800A029 +S315E07445F0005000805800A850000080900000001021 +S315E07446008890009028088008600060082008700090 +S315E074461020601000000000000000084000205020D8 +S315E07446200010202000004860000040004008506000 +S315E07446300800503000401058200018402000080050 +S315E07446400000004020102000580010001005F5000E +S315E0744650900C0420006424403480401040100048DC +S315E07446602010201024400060002010207008304094 +S315E07446700438500014001420440060184020006090 +S315E074468000100040004400480040400400404418D4 +S315E07446904000044850000044100400040000005038 +S315E07446A05000005014000000040040144400000060 +S315E07446B000800000C014001414001400049000106C +S315E07446C0804000008004409400C00010D0041000C4 +S315E07446D00000401000144080100090000018108014 +S315E07446E0089400100090800008900000000000809C +S315E07446F0001C008410000000800008840010800410 +S315E0744700801010801008100840000000108030807F +S315E0744710201000801000200000201820A008E80077 +S315E0744720204838C00830C81088104038084008005F +S315E07447302800488008C00000000800C848102850C7 +S315E074474040201040200028000028304008003840FF +S315E074475000089840184058004810A00068001820D7 +S315E07447607800480000082880700010604880A850DF +S315E0744770108050001088489010800890580040B01F +S315E074478068801040002800280020002000001000F7 +S315E07447902000000000606008402000200020000037 +S315E07447A010600040002018600018300808104000BF +S315E07447B008201840093000080840480000400020EE +S315E07447C0500008201000B599000000001C1C6060C1 +S315E07447D0000000001818544040000014B8384040F7 +S315E07447E000000424383850400008040430302800AF +S315E07447F04000040C7070100000000C1C5450500003 +S315E074480000040C0C4840100000101C1C44400000CE +S315E074481000001414504000000000101044400000E2 +S315E0744820041410105040000004040010C0C00000CE +S315E074483004541010808000000414504080800004FA +S315E07448400414545080800014048000401000001456 +S315E07448501414C4C000000010189CC4800004001036 +S315E074486018189C800000000C1C1890800004040446 +S315E07448701C188880000C0414141088800000080842 +S315E07448801850C080000008083830A0800010000876 +S315E07448902820100000001878E0E0000000001858A6 +S315E07448A0E0E020000030181840C00000000028380E +S315E07448B0C8C0000000283838404000080000303096 +S315E07448C02800000808187870500000080818587016 +S315E07448D01000001008886060100000001858E0E0CE +S315E07448E0000000001038E0E0800000101098C8C0A6 +S315E07448F0000000101838C0C080000000282840402E +S315E074490000080000200008004000080060602000F5 +S315E0744910000008006070400000000048606010000D +S315E074492000001818606000000008183860604000E5 +S315E0744930002008084040200000003838404000F568 +S315E07449405000000008083C180000040038080018FD +S315E07449504060000008283838400000040818183809 +S315E0744960010000044001203000000000181C5010C3 +S315E074497000000C0C5C0C105002001C0CC4460000C9 +S315E074498000801C0C08484000000004005414000029 +S315E0744990040030100000002004041014401040405D +S315E07449A0040404041010C180080014159018004023 +S315E07449B0000444044040808004040404504082802F +S315E07449C004040002404000800404D4D40080000053 +S315E07449D01810DCDC00000000280008080020000045 +S315E07449E01C1C0808808004041C1C889801000404BC +S315E07449F044059090004008080808C0C08080080804 +S315E0744A003838A02002000000880A002000800808D8 +S315E0744A10F8F880C000000010B0B0A0A00400080050 +S315E0744A200004C0C0000020000828C08000003838A8 +S315E0744A307078414000007011A030004008081858A2 +S315E0744A409070000008085848901002000800404230 +S315E0744A50002000801810083880A000001010B8B844 +S315E0744A60204004003000D8DC40E000000818D0D8BC +S315E0744A70C0800000181878680140000070010000DA +S315E0744A80000008087070706000000808706040608C +S315E0744A9002001000882A60600080081858182060A8 +S315E0744AA00000080820004060040000000044000094 +S315E0744AB00000000000004040CF90000000080808A5 +S315E0744AC000000000001818084040C000003898380C +S315E0744AD03800400000040818180000000030301058 +S315E0744AE000000000003878500000000C0C0C4410F4 +S315E0744AF0000000040C4C4400000000040C0858004C +S315E0744B00000000001414044000000000004050004F +S315E0744B1000040400104000404004040404101080B3 +S315E0744B20400000001410800000040004044040803B +S315E0744B308000040444401080800404000040400077 +S315E0744B4000000494D04000000008185CD80000000F +S315E0744B500008080008000000000C180808808000AF +S315E0744B60041C109888000000040414909000000857 +S315E0744B70080800C0C00000080018183020000000C3 +S315E0744B80002808000000000808F8F0C000000010D3 +S315E0744B90002030A0A00000081800000000000020EB +S315E0744BA0202840004000002838383040400000108B +S315E0744BB01030A080800808581850D0808008080803 +S315E0744BC048109080800008000000000000181888E3 +S315E0744BD0A860C0000010108828602000001010D86B +S315E0744BE048404000000818D0500000000008082033 +S315E0744BF01800000000001010100000080860602023 +S315E0744C00100000080840705050000000004808602A +S315E0744C1060000000001868000000000008101040F2 +S315E0744C204000000000000000000000280000004082 +S315E0744C30408EC70080800C08785840400000100011 +S315E0744C40000800000000002450704040000428284A +S315E0744C507838404000001014201000000400181C3E +S315E0744C60105000000C0C4C4C105000000C084C4CCE +S315E0744C70404000000C0C48080000000004001414C6 +S315E0744C800000000000001000000004041010000092 +S315E0744C904040040404044090C0C000001414901012 +S315E0744CA00000040004040000808004000404105032 +S315E0744CB0808004040000404000000404D4D00080E6 +S315E0744CC000001810CCD000000000080008080000AE +S315E0744CD0000008140008808004041C089098000002 +S315E0744CE0040404048080000008080018C0808080F2 +S315E0744CF0080830288020000000000028002000000A +S315E0744D001818B89000800000000090908080000031 +S315E0744D1008001000C0C0000000000830C080000029 +S315E0744D202808787880C00000000000908080080031 +S315E0744D30404000C080800808405030908080080869 +S315E0744D404040000000000800003880200000101089 +S315E0744D50A8F820400000100050D840C000001808A1 +S315E0744D6070F80000000000002030000000002030E1 +S315E0744D701010000008086060207000000808607079 +S315E0744D800040000000000808606000000808185839 +S315E0744D902020000010180008000000000800004001 +S315E0744DA0400000002000000040402D3A000000085A +S315E0744DB00808400040000010104840000000003031 +S315E0744DC0003050404000000408387800400000008D +S315E0744DD0001000000000004858004000000C0C0C65 +S315E0744DE0040000000000080C4400400000040C4875 +S315E0744DF008004000000014040400000000000040B5 +S315E0744E004000000404000000004040040404045020 +S315E0744E100080400000040410800000000404048054 +S315E0744E200080800004040440108080040400004084 +S315E0744E304000000004848000000000080854C800A4 +S315E0744E40000000000800000000000004000000807C +S315E0744E508000040410909000000004040490800024 +S315E0744E60000808080090C000000000002000000060 +S315E0744E7000000020000000000018189890800000E0 +S315E0744E8000000040008080000000080040404000C0 +S315E0744E900020202840004000000000286880800040 +S315E0744EA00000009000000000084848800000000000 +S315E0744EB0000848B010000008000000004000000838 +S315E0744EC00090A060C0000010100808402000001098 +S315E0744ED000C040404000001808D050000000003088 +S315E0744EE03030000000000010000000000008087078 +S315E0744EF070100000000808504050100000000008D0 +S315E0744F000820200000000058080000000000080097 +S315E0744F10000000000000004000400000002820204F +S315E0744F20304040D13B00000010102010000000001B +S315E0744F3018080808000000000828080800000000A7 +S315E0744F402020001000000000000020100000000087 +S315E0744F50101000500000000040444050000004006F +S315E0744F60404000000000000044040000000000041B +S315E0744F704010000000000000404040400000100077 +S315E0744F800000000000000000101040C00400100093 +S315E0744F901010000004041000404000800404501413 +S315E0744FA0C0C000000400000000000000101040546F +S315E0744FB0008000001808909C00000000180010188B +S315E0744FC0000000001C141010808000000814809803 +S315E0744FD0000000000004909000800808080880C073 +S315E0744FE0000008000008A02080800000000820204F +S315E0744FF000001818E8E8E0C0000010101018A0A02F +S315E0745000000008000000404000002020C8884000EE +S315E074501000003030484880800000100020200000F6 +S315E074502000083048001000000000404850100000AE +S315E074503008000820000000001800C0A0E0E00000AE +S315E0745040101038F82000000010008088808000007E +S315E07450501808909080800000101020300040000006 +S315E07450602000101000000000000020700000000016 +S315E07450702020105000000000004060600000080826 +S315E074508008480060000008005050404000000000EE +S315E07450900040000000002020080900002071000094 +S315E07450A0001000180020000000080800400000000E +S315E07450B0002838082800000000000830300000009E +S315E07450C00000101000000000003070106000000056 +S315E07450D0000800104000000008484000000000008E +S315E07450E00844040040000010141040400000000022 +S315E07450F000404000000000001000000000000000C6 +S315E0745100000010C040000004101000000004040009 +S315E07451101040408080000010108080000000000085 +S315E074512000000000001414140000000000001004D5 +S315E0745130908000000008101018000000000010189D +S315E074514018808004041C0090800000040400008031 +S315E074515090800000080000C0800000080000002075 +S315E07451602080800000202020200000101820A0401D +S315E074517000000000080000E0200000080000004085 +S315E0745180400000202080C00040000020283030809D +S315E07451908000000000202080800000404040408075 +S315E07451A08000084050105080800008200000000005 +S315E07451B00000084868200000001010A828002000AD +S315E07451C00000100000808000001808404080000055 +S315E07451D00000001000000000000000000000000065 +S315E07451E000000030200000000000004000000000D5 +S315E07451F00040006000000000005808200000000035 +S315E074520008501000000000000008080000000020AC +S315E0745210200000000023A50000001000206000407C +S315E074522000001000080800000000002000400000A4 +S315E0745230000000000000004000001000280000009C +S315E074524000001010600000000000404000400000C4 +S315E074525004004848004000000000004040000000A0 +S315E074526000044000000000000000404040400000A0 +S315E074527000000000000000000000005040C0040080 +S315E07452800000100000000000000040C000000000B4 +S315E07452901000000000000000000000000000100094 +S315E07452A050508080000000008098000000000800E4 +S315E07452B000188080000018100018008000000800B4 +S315E07452C080088080000000008000008008000000F4 +S315E07452D0000000800800300880800000000020286C +S315E07452E0002000001810C8C0404000001010901054 +S315E07452F080A000000800400040C00000282048005C +S315E07453004080000000004040000000000000802063 +S315E074531080800008404880008080000040489010FB +S315E0745320808008000020400000000800C0884060CB +S315E074533000001010286820000000100000080080AB +S315E0745340000008185058008000000000303000005B +S315E07453500000001010100000000000003070000023 +S315E07453600000203010100000000000003020000023 +S315E0745370080008080000000010104040000000001B +S315E074538000000040000000002020084801003FB003 +S315E074539000800000002820000000001014000000C7 +S315E07453A000000020002000000000000008105000FB +S315E07453B00000010008180000000000000040000032 +S315E07453C0000000080000000000000A0800008000E9 +S315E07453D000000800400000000010140040000000C7 +S315E07453E000000440600000000000000000000000BF +S315E07453F00000000040C0400001000800408000004A +S315E0745400000000C040808000001010000000000022 +S315E0745410020000008000001010840000000000000C +S315E0745420000400808000000004903080800000005A +S315E0745430101090808000000400000080800001005D +S315E0745440080040C0000008000000000000000000F2 +S315E074545020000000000002202000800000101800E8 +S315E0745460000000000000004040400000000004001E +S315E07454702840400000202000404040000000082002 +S315E074548000000000010008008080800000404000B9 +S315E07454908080800008104010C08080000200000008 +S315E07454A0C00000000000002000000000100800802A +S315E07454B0A0000000040000000000000018404080D6 +S315E07454C00000001030301000000001100810500089 +S315E07454D00000001010101000000000100000000022 +S315E07454E00000020000308000000000180000000098 +S315E07454F00000180000000000000004080800000026 +S315E0745500003020604000008DF80000001004043084 +S315E074551020000080000404106000000014202000C5 +S315E0745520400000042400100000000005200C300048 +S315E07455304000000414000000000000000004500065 +S315E07455400000040200001080000000101004004007 +S315E074555000001000005000000000000454204000D9 +S315E074556000001004100000000000000050004080AD +S315E07455700001000C0050C080000050008000000064 +S315E07455800400000450000000040200001080800053 +S315E074559000004014000000000000049000000000C9 +S315E07455A000140CA0000000000C00008000800000D5 +S315E07455B00014008000800001041808C00000000890 +S315E07455C000008010000000000820100000000002B7 +S315E07455D028001080000010088000002000000808F1 +S315E07455E048088040000010044028000000000028AD +S315E07455F00010400000000000081080000001200840 +S315E074560088904080000000009020800000005000E8 +S315E07456108010808008020840108080000000001826 +S315E074562040800000000000C8806000000014800024 +S315E07456302080000000104088804000002010500850 +S315E0745640400000012018184040000000001040009F +S315E0745650000000002010202000000002602000807E +S315E07456600000000020004000000018001028200010 +S315E07456700000080C40082000000028002008000004 +S315E0745680D8EE0000000000000020000000001400C6 +S315E074569020400000000420000000000000001020FC +S315E07456A000000000010018004000000000002070B7 +S315E07456B000000000000050000000000002005000EE +S315E07456C0800000000000400000000000040000407C +S315E07456D000000000140020000000000000004000FC +S315E07456E00000000000000000000005001800C08003 +S315E07456F0000004000040008000000000500000003C +S315E074570000000200100080000000140080400000D9 +S315E0745710000018080000000000000C102080000053 +S315E074572000001018008000000400081800800000D3 +S315E0745730050008004000000000081010008000001A +S315E074574008000000000000000200100000000000E5 +S315E074575000080060000000001010A00000000000C7 +S315E07457600C1000E0000000000028408000000000FB +S315E074577018200040000001001810400000000808DE +S315E0745780704000000000080800600000000002009D +S315E074579070608000000018002060000000001010A7 +S315E07457A0000000000000041820000000000008302B +S315E07457B000000000000008004040000001000800FE +S315E07457C0400000000000001000000000000000200F +S315E07457D000000000020030608000000008086020CD +S315E07457E00000000010104040000000000408204053 +S315E07457F00000000030184000000240000083C31C23 +S315E07458001C606000004343181C4060101007473862 +S315E074581038C040100007473838C0C010004607301B +S315E07458203880C021410E0E7070808011110E0E709A +S315E074583070808051010C0E6070009043031C1CE074 +S315E0745840E0001003031C1CE0E010000303181CC006 +S315E0745850E0001007073838C0C0100007073838C0B2 +S315E0745860C000100607303880C001110E0E707080CB +S315E07458708011110E0E7070808001010C0E60700044 +S315E07458809003031C1CE0E0001003031C1CE0E00022 +S315E0745890100303181CC0E0100007073838C0C010A6 +S315E07458A00007073838C0C000100607303880C001DA +S315E07458B0010E0E7070808001010E0E707080800192 +S315E07458C0010C0E6070008003031C1CE0E010000302 +S315E07458D0431C1CE0E000104303181CC0E000000702 +S315E07458E0073838C0C0000007073838C0C010000653 +S315E07458F007303880C011110E0E7070808051310EF1 +S315E07459000E7070808011010C0E6070008003431C71 +S315E07459101CE0E0000043231C1CE0E00010030318C5 +S315E07459201CC0E0001007073838C0C01000070738FD +S315E074593038C0C020000607303880C001210E0E70D2 +S315E074594070808021010E0E7070808001010C0E60F3 +S315E074595070009003031C1CE0E0000002221C1CE0B3 +S315E0745960E000004202181CC0E0000006063838C1A8 +S315E0745970C100261700002040000800000800C0405F +S315E074598000180040081000401000000010280000C5 +S315E074599028100000100040000020000020400000A5 +S315E07459A0001000041010000C1050080C10000C08C5 +S315E07459B000000C18400018040000000000001010ED +S315E07459C000001400000000004000001000001010F9 +S315E07459D000001000008000000480000080001000C9 +S315E07459E080000010000010100004101004841000F1 +S315E07459F00404000084000000001400001404000095 +S315E0745A00000080C0100480000010800010180000B0 +S315E0745A1010080004081004041000040400080004CC +S315E0745A200810040410000480000080080040080098 +S315E0745A3040000088002008802000800800000800EC +S315E0745A4000600000600010008040000040600010BC +S315E0745A50600010000000000000801008800000283C +S315E0745A60004028108000000000000030000830106C +S315E0745A700808105000085030080830100000100074 +S315E0745A8000000000000000400000004000004020DC +S315E0745A9000000080001000401008800008104040AC +S315E0745AA010100080100000000000000020000000CC +S315E0745AB00000000000600008000000002000000004 +S315E0745AC00000000000000800400000000000001024 +S315E0745AD0000010084000080020400000400000006C +S315E0745AE00000000000000000000000DF9C00800061 +S315E0745AF000001000200000002000000000000000FC +S315E0745B00000000000000000000000000000000003B +S315E0745B10000000000000000000000000000000002B +S315E0745B20000000000000000000000000000000001B +S315E0745B30000000000000000000000000000000000B +S315E0745B4000000000000000000000010000004000BA +S315E0745B5000000000000000000000000000000010DB +S315E0745B600000080000000000400000000000000093 +S315E0745B7000080000000000000000002000000000A3 +S315E0745B8000000000000000000000000000000000BB +S315E0745B9000000000000000000000000000000000AB +S315E0745BA00040000000400000000010000800000003 +S315E0745BB0000000000000000000008000000000000B +S315E0745BC00000000400000000000000000000000077 +S315E0745BD0000000000040000000000000000000002B +S315E0745BE0000000000000000000000000200000003B +S315E0745BF000000040000000002000000000000000EB +S315E0745C0000000000000004000000000000000080B6 +S315E0745C10000000000000000000000000000000002A +S315E0745C200000000100000000000000000000000019 +S315E0745C3000002000080000000000000000000000E2 +S315E0745C4000000000000000000000000000000000FA +S315E0745C5000020000000000000000000000000000E8 +S315E0745C6000000000F42B000000000000400000106B +S315E0745C7040804010C000100000102050001020102A +S315E0745C802000107400281004001004002014000092 +S315E0745C902038001040140008101000100000004472 +S315E0745CA020000008000010000004801000001000BE +S315E0745CB000100000000040104000000000001020BA +S315E0745CC0004000104000040000040010000080044E +S315E0745CD0A00004900080002010040000401000042E +S315E0745CE0002000001404000000000800100C4000BE +S315E0745CF04084001040400010C4C8000000800000DA +S315E0745D001010001000A4080000D8049400040800E1 +S315E0745D1080100410002004900400000810000400B1 +S315E0745D20080000D800081080202008000000082031 +S315E0745D300000080000004080001020600020900001 +S315E0745D405060009000080010000020200820000831 +S315E0745D500040282000186000800000001090008049 +S315E0745D600020108008205000800880188000000011 +S315E0745D700000280820000840100000000010000011 +S315E0745D800808C000A00800400010408010100020F1 +S315E0745D9000002000881080008800000000082000C1 +S315E0745DA00010002000000020000000080000902889 +S315E0745DB04008D00020000028400008400040000859 +S315E0745DC01028000010C1080008402800212008109F +S315E0745DD00080400008A800000058002000CDA9000B +S315E0745DE00000001000400800500000C000401000A1 +S315E0745DF000002000005030080020000044200820F5 +S315E0745E0004000000000010040420080000100000E4 +S315E0745E1000180800000000000040000008000000C0 +S315E0745E200000008C0010000010000010000040001C +S315E0745E3010000000000000000000000010400000A8 +S315E0745E40000000000000880040A4000810008040B4 +S315E0745E5040100000001010000000208000100000C8 +S315E0745E600000000810000008000000005000004028 +S315E0745E7080400018001000880000108000100800B0 +S315E0745E801000488080040004000000100810002010 +S315E0745E9080100840001000400000080080500000A8 +S315E0745EA08020000000008008082000008000400088 +S315E0745EB0800000100040009000800000A000000800 +S315E0745EC0100010208008200C0800480000000070C4 +S315E0745ED0000000000000803000C0A0100880A81008 +S315E0745EE01080000000C00080000020002000080040 +S315E0745EF04880004000000000000800C0A000400890 +S315E0745F001000205000801000000000008000100097 +S315E0745F10200000080000280008001000200000009F +S315E0745F200820000800004000006090004000000077 +S315E0745F300028000A0040400010000000300000080D +S315E0745F4000084020200100283000080000001008F6 +S315E0745F50000040100000CD2600100000480000004C +S315E0745F6000000000108010002030001800000000CF +S315E0745F700090402010001000100000100400200073 +S315E0745F8000004030004000100400001000100000D3 +S315E0745F901004280400000000100000000000000057 +S315E0745FA010000000000000000040001040000000F7 +S315E0745FB010200040100100000410000400100000DE +S315E0745FC0000001048000C004002000048004400046 +S315E0745FD00000140000040014000000000000000437 +S315E0745FE04000508400000000041004C00400002047 +S315E0745FF0100010000000002084000010041000005F +S315E07460000800900004000000040400040008000482 +S315E074601000880000002800081000002800000060D6 +S315E07460200000100008000000080000200020002096 +S315E0746030001040640010000000000800002000001A +S315E07460404000000020002008000880000450000092 +S315E074605000000000000000004020000088001800E6 +S315E074606000000080080800000000100080000010A6 +S315E0746070000010080000000000400000000014005A +S315E07460802000202810000880088800000000000125 +S315E07460900000200000000000080000004008000036 +S315E07460A09008000048002050000040000000000006 +S315E07460B000080028000000C001000008000000008D +S315E07460C0000000C00008008020280000082000A41A +S315E07460D0370080C0000000000000000020000000CF +S315E07460E0000000000004040000200000200000040A +S315E07460F000040010040000000004002000040010F6 +S315E074610004002000000420100004140000000000C5 +S315E07461104004100404601000040000004400000011 +S315E07461204000000000000000100000000410002091 +S315E07461300008000000000020000000408400040015 +S315E074614000000020000000200000000044A0400091 +S315E07461501400000020000000000800002000002069 +S315E074616000000040000808000080100800043000B9 +S315E07461700004000040000000000000000800000079 +S315E074618054000400000004202008000440000800C5 +S315E0746190000000000000100800080000000C8804ED +S315E07461A000000030000008000000000000000860F5 +S315E07461B000809000000000000048100010002010DD +S315E07461C00000000000600080000000800020408035 +S315E07461D000008000880000800810800010C0000075 +S315E07461E00000000000000000000000480000880085 +S315E07461F000000000000001000000400008000000FC +S315E0746200C000000020400000000000004080000054 +S315E07462100000000000004010004000000000000094 +S315E074622001000000000000000020000000004000B3 +S315E0746230006800008000083008002840C0000008AC +S315E07462400080080040084000020E000000000000D4 +S315E0746250001020040000000000200004000000008C +S315E074626000500004000040200000200000001000F0 +S315E07462707000000000002000200000000000000014 +S315E07462800000000020000030040020200000000020 +S315E0746290002010042010000030040000900020104C +S315E07462A0000000700000000014000000000400000C +S315E07462B00020000420400000200400000004800058 +S315E07462C0041000000000000004201000000408041C +S315E07462D00000004000001400502000000000200080 +S315E07462E0040000002090004400001000008000804C +S315E07462F0200000100C000000080000000000600898 +S315E0746300000000000000208000004000280020000B +S315E07463100000100008000000200020400040041433 +S315E07463200000002000000400000008200040000087 +S315E0746330100000000000480000800480001008008F +S315E0746340400000201010000000000800200000400B +S315E0746350080040200000100000002080000000408B +S315E074636000608000009840000028402000088040CB +S315E0746370000008008800000008081000000880008B +S315E074638040004008100020800000002800200080B3 +S315E0746390000000800000089000000000801000807B +S315E07463A0000008008000600000000040080800401B +S315E07463B000000000000008002000000000000080DB +S315E07463C00053C200400000000000200004000000FA +S315E07463D00000200000000004040040100400402087 +S315E07463E02000042000100410007000040000002057 +S315E07463F020000004000004003000040020040000C3 +S315E07464001420200010004020100020042004140002 +S315E0746410300004400010000010001000104000141A +S315E07464200020080000000400002000002000C400E2 +S315E07464302004000400000004040000000000E400EE +S315E07464400044241000002C00840000080000003092 +S315E074645000400000004000080804008010080000B6 +S315E074646000241000000040000080000000000000DE +S315E074647000081000000020400804082000000040D6 +S315E0746480000800402008000000008018080000089A +S315E0746490A00C200050000400180000000020000446 +S315E07464A04008008830004000001000000000400002 +S315E07464B0201000000000601800C00000803010005A +S315E07464C08000000000A0000840880850000000D05A +S315E07464D00000002080000000400040800008104862 +S315E07464E00088480000000820014000000880000889 +S315E07464F0000808D000008820000000000800002092 +S315E074650000400000080020008000000080000800C1 +S315E07465101080010080001000800000280080204078 +S315E07465200040086008400008400808004008000081 +S315E0746530002800000008004140009CD000102804A8 +S315E07465404010200400200000481040401400002051 +S315E07465500000002000240000001440040000400401 +S315E07465600024000010002004102010000004000035 +S315E07465700820501820000400000804600020000C75 +S315E0746580000000002054200020200040200010006D +S315E0746590000410440000000420000500200400807C +S315E07465A00000100400801000240004002000001095 +S315E07465B000144040008000002044000004400000C5 +S315E07465C00000540000000404000021000000402490 +S315E07465D008A0400000000848040020C83008800C79 +S315E07465E00000202410B04000100044000020042075 +S315E07465F080100040048040200000186010000CA851 +S315E074660040200008000460000008002004480050A0 +S315E0746610081460080030008048100010084090109C +S315E0746620040028C00010480800A000800800888094 +S315E074663000000080200000801000A81000200000F8 +S315E07466400008000080500080000000004000200038 +S315E07466500000000050C00000A00000080080280878 +S315E07466600090400058000090400070200820080810 +S315E07466704008008040C00000000010080080000060 +S315E0746680582800804848202000C008006088000030 +S315E074669008082048000820008000208060C0084078 +S315E07466A00810004000900008800008000088602010 +S315E07466B0000800B97A0000100400200000002000F1 +S315E07466C00080000000001000000000002000004080 +S315E07466D000004400000400000000200010000000E8 +S315E07466E00400200010000000000000602010040088 +S315E07466F000000400300000200004040000000420C0 +S315E07467002000000000400000000004004010281043 +S315E074671000200C00002000000000000000000000D3 +S315E074672000200010000000000000000000001000CF +S315E0746730000400100400400000000000C0000004E3 +S315E0746740000400210000000000204000000000006A +S315E0746750480000000830000000040000000000005B +S315E074676000000040000000000010100080040040AB +S315E074677000300810000408000000280000004004FF +S315E07467800000080000040800200800001000003033 +S315E074679000084000000000C800100008C00018009F +S315E07467A00800000400080008000000000000000073 +S315E07467B00080000000001000001000080000401087 +S315E07467C0000000000000002000400000000080008F +S315E07467D008000000000000000000008000100010B7 +S315E07467E090002010002800000000000000880000DF +S315E07467F0000010000000008000080800008000001F +S315E0746800200088004820800800080000200000006E +S315E074681080000000802008404000000000400090A6 +S315E07468208000000000000080002021000F1F00801F +S315E074683020004000100000000008004000144000F2 +S315E074684000200000000000000000000000000000CE +S315E07468504400040000040020000000001000000062 +S315E07468600010081004000800000000080000400052 +S315E07468700000080000000000000000200400200072 +S315E0746880100000100000000000000000000000048A +S315E0746890000000000000001080000000000000040A +S315E07468A0000000100400000084000000C000000036 +S315E07468B0000000007000002000000000400000208E +S315E07468C00004008020000000080000000080002022 +S315E07468D0000800200000141040104004000010244A +S315E07468E08004A000000040800000084000400000E2 +S315E07468F000002800000000002000100000000040A6 +S315E07469000000101000000000008040000008000045 +S315E07469100040002000000004000000000080000039 +S315E074692080800000000080000000008820000020C5 +S315E074693000208000000000000000800000000000DD +S315E0746940000000000000400000200000080000A0E5 +S315E074695000100040000040000000004000000020ED +S315E074696000000000080000C000000080000008007D +S315E07469700040800000400800400000000000000075 +S315E074698000000000204000082000000020400000C5 +S315E07469900000081000000000000008001000080065 +S315E07469A020000000009A5300000800000000000474 +S315E07469B000404000100000000000000000000000ED +S315E07469C0042008000010000000000000000400002D +S315E07469D00000100000000000040000000000000049 +S315E07469E0000000000000000000000000000030001D +S315E07469F040100000000000000000080000000004E1 +S315E0746A000000040001000000000080002010000473 +S315E0746A102000000400042000000000104000004044 +S315E0746A2040000020040000000000000000040000A4 +S315E0746A3000000000000000004000080000000000B4 +S315E0746A400000000420404000880000000000204060 +S315E0746A50A000280400000000000000000000000010 +S315E0746A6000000000000020100014804000000800C0 +S315E0746A700000084000002000000000400064004868 +S315E0746A800000000000101000001004000000000078 +S315E0746A90004000202080000010200000400000200C +S315E0746AA000000010000010000000000000000080EC +S315E0746AB0000000000000400000000000002010000C +S315E0746AC00850108000000008000808001000000854 +S315E0746AD0000000400000000000084800000040008C +S315E0746AE000000000002000000000100020000000FC +S315E0746AF008200000400000000000000008000008C4 +S315E0746B00004000000000000000800000200000004B +S315E0746B100000000000080000084000000088DEB6AF +S315E0746B20000000000000100030201040000040001B +S315E0746B3000000000002000000000001000000000CB +S315E0746B40000000001000000000004000000000009B +S315E0746B5020100000000004000000000004000000A3 +S315E0746B60000004201000240000002400000000004F +S315E0746B703000000400000000000000000400000083 +S315E0746B8004003000040004300040000004001000EB +S315E0746B9000000000440410000000200000240000FF +S315E0746BA00004080400000400000000001000000067 +S315E0746BB020400000002000000000000000100004E7 +S315E0746BC0208010002008400410000000000010002F +S315E0746BD000000014200000001020401000000000A7 +S315E0746BE000400004000000000800000010000000EF +S315E0746BF0000050000008104000002000000800402B +S315E0746C00000000400004000800401000100000304E +S315E0746C108010003800000000202000000000008092 +S315E0746C20004020000000100000080048004000000A +S315E0746C3000008010400000104000080000080010BA +S315E0746C40000000884008000048000800200000406A +S315E0746C500000400000004800000000000000000052 +S315E0746C600000400000804008000000000000400082 +S315E0746C7010080000000800008080100800088000FA +S315E0746C8000001000000008400000000080000000D2 +S315E0746C90000880008840005F02000080A400400085 +S315E0746CA0000000000000000000000000008000000A +S315E0746CB030000010000000000010400000000020CA +S315E0746CC000100000000000204000004000001000AA +S315E0746CD020000000400000004000000000000010AA +S315E0746CE00020001004100014400000000000005062 +S315E0746CF01000000020100004201000040030000092 +S315E0746D0000000000000020042010000000000020B5 +S315E0746D100000000000000000400000202000000099 +S315E0746D201000000004000000000028006400000069 +S315E0746D300000000000040000000040200850040039 +S315E0746D400020005000000408001004000000000851 +S315E0746D5000040000084008400410100800400000D9 +S315E0746D600000000000001000000000000C6000400D +S315E0746D700000000000200000000020100000000069 +S315E0746D800000000040000010000020000400200015 +S315E0746D901000000000000020400010800000002079 +S315E0746DA00000008000000000100000008000000079 +S315E0746DB000004000000000100000081020001040A1 +S315E0746DC08000004000002840081000000008900091 +S315E0746DD00860000000000080800000000080080069 +S315E0746DE00040000000880000000000200000000061 +S315E0746DF00020000000000020000040000800200091 +S315E0746E002000000040000000100030000001010086 +S315E0746E1027D10000044004000400040020000400AC +S315E0746E202000000000000400044004000400200078 +S315E0746E305400440000000400440000001000000008 +S315E0746E405400140020040040002400004000102088 +S315E0746E5000004000300000000064100000000000F4 +S315E0746E600040200014000000000000040040000010 +S315E0746E700000000000004000000000000424100040 +S315E0746E800040040000002000002000000400000020 +S315E0746E90000020001000C800000044000000000458 +S315E0746EA0001400004000080000004010000048286C +S315E0746EB000804084000000100000080028040020D0 +S315E0746EC000000430000000104008000400002010A8 +S315E0746ED000000000000010000000100030000030D8 +S315E0746EE000300800001000002000000000080000D8 +S315E0746EF01400100090000000003000000040000014 +S315E0746F0000000010000000100000480000000000BF +S315E0746F1000208020002000008000000000000000B7 +S315E0746F200000800010000000401080005040000017 +S315E0746F3000000000000008002000008000800000CF +S315E0746F400088004000C000000000200000008800B7 +S315E0746F5000000800000800080000000000000008B7 +S315E0746F600000C8000040104080000040004000006F +S315E0746F7000000880000000004000084028000080FF +S315E0746F80000000200000000800CD3E005020000004 +S315E0746F900000005000000000100000001000000027 +S315E0746FA00010000000000410000000002010000033 +S315E0746FB00010000020000400000020000000000023 +S315E0746FC000240000200000200004100400040004E3 +S315E0746FD000000000000400000060000000401000A3 +S315E0746FE0000400004000000000500004006000044B +S315E0746FF0205000001020000000000000000400048F +S315E07470000000004000006000000000000000000086 +S315E0747010000020000004040000080040040004009E +S315E07470200C000000000800000000300000081004A6 +S315E07470302000400040000000040000000400003816 +S315E0747040200000100010000000000810002000006E +S315E074705020000020000020000040000000182000FE +S315E07470600010204000003000400000044000002082 +S315E07470700000000020100000800000008024000062 +S315E074708080200000800000000084100000401000A2 +S315E0747090080010000000000000400000000000003E +S315E07470A08010000000000080400080000080001026 +S315E07470B040000000002040001000001008000000AE +S315E07470C00040009000000000000000000000000096 +S315E07470D0001080002000000020000000000020085E +S315E07470E020000800200080000000201020008000AE +S315E07470F0000000100000100000400820004020004E +S315E074710000808C2F001400001000000000000000C6 +S315E07471101010040010100000100000004000000081 +S315E074712000000040000000200000000000000000A5 +S315E07471302040000000001000202000000040000005 +S315E07471400000000000000024000000000000404041 +S315E07471500000000000000000400040000000000055 +S315E074716000400000005000000040000400000000F1 +S315E074717000002000500000000020000440100000D1 +S315E07471804410000040000000502000000020000081 +S315E074719040040020000000000000000040040040AD +S315E07471A00000240080005000001000000010000071 +S315E07471B018100000100000000000500000000000ED +S315E07471C050004000000000000000000000080000CD +S315E07471D0002000000800004010000000000060007D +S315E07471E0000008000000008000004000100000006D +S315E07471F01080000010040000000040001000200021 +S315E0747200000000201000006000000048000000004C +S315E074721000000000000010100000100000001800CC +S315E07472200000000010000860000800400800080034 +S315E0747230008010002000800000000040080000007C +S315E0747240000000000000080800401000002040081C +S315E074725020600000280000000820000028200000BC +S315E0747260280000000020000020008000804000001C +S315E07472709040800080000020080060B0DF000000CD +S315E07472800000402000200000400000404000204004 +S315E07472900000001000100000000000000000400034 +S315E07472A000000020000040100000000000002040B4 +S315E07472B000000000400020000010204000040000A0 +S315E07472C00000000000000000000000400000000420 +S315E07472D000200000102004101000000000000004DC +S315E07472E010000000000000000040000000000400F0 +S315E07472F00000000000002000002000000400A80048 +S315E074730020000000200000000000400000000000A3 +S315E074731000206000000000000030004040000000E3 +S315E074732000000060000000004000000000000860FB +S315E07473300000002000400000000000000000204033 +S315E07473400840200400002000100000004000000007 +S315E07473500800200C00000000000C00000020000073 +S315E0747360000000002000000000000000082000007B +S315E074737000A40000804000000000208000000000AF +S315E07473800000001080001000008000100000000073 +S315E07473900000000000000000001000000000000083 +S315E07473A000000000000000002010204000000000F3 +S315E07473B040080000000040000008000000080000DB +S315E07473C00000000000100000000090000000208023 +S315E07473D0000000080000005000006800000800503B +S315E07473E000000040400000100000100000404080A3 +S315E07473F000000000C9A300000000200004000000A3 +S315E074740000000000000000000000040000200400FA +S315E07474102000040000000004204014000020000056 +S315E0747420201044200000000000001000000000005E +S315E0747430000000000020000060000004000004006A +S315E0747440200020042000000000000000000000007E +S315E0747450000400000000400000200000004000002E +S315E0747460042000000000000010002000000000006E +S315E074747000000000202000000004000400400040EA +S315E0747480002000000040000020000000000000081A +S315E074749000000000080008200800280800300004F6 +S315E07474A0000000000000000000000804080020004E +S315E07474B00000080008000800180000000000000042 +S315E07474C0000000400000000000000400000000001E +S315E07474D00000000000000000000000000000000052 +S315E07474E00000200010800000800010008000200062 +S315E07474F08010A00010000080000000002000000052 +S315E07475000000080000000000000000080000000011 +S315E07475100000480000400810000000000000006011 +S315E07475200008400000000000000000000800008031 +S315E07475300000000000000000C000000000400000F1 +S315E07475408000000000001008000080004000000881 +S315E07475500000000000100008004000080020080049 +S315E07475600040000020080008000080000080A200AF +S315E074757020000050001004000010201000000010DD +S315E07475800000201004200000041020000010040005 +S315E07475900410200004100000000010200010000009 +S315E07475A00000102400000000000004000000201019 +S315E07475B01000001000004010000064100000000489 +S315E07475C0500040102000400050004000040050007D +S315E07475D000000000100000041020000040000000CD +S315E07475E0401000000400040040000004400400045D +S315E07475F04400080040200400002400004000040019 +S315E07476000004001800400010100010080004140074 +S315E074761004004004000004000C2028140000000458 +S315E074762010000400000000000400002000200000A8 +S315E074763000000010040008000800000800001000B4 +S315E074764008000000000400000000100000100010A4 +S315E07476508000000000000000000000000000000050 +S315E07476600000008000000080400000000000000080 +S315E07476700000000000081000000000000000000098 +S315E07476800000400000000000000000000000000060 +S315E074769000000000800000000000100000000040C0 +S315E07476A00800000010200000084000000000000000 +S315E07476B00000000000000010000020000000002020 +S315E07476C000500000000000000000002000000000F0 +S315E07476D00800802000000080080000000010608030 +S315E07476E00000400008A037A1004000000000000040 +S315E07476F0000004000000000000000000000000002C +S315E0747700000000400064000000000000000000205B +S315E0747710000000000000040010000000004000407B +S315E0747720000010002014000000000000004020005B +S315E074773000000000000000001000000000000000DF +S315E0747740000000002000100020000000400004004B +S315E074775070000000000004042000004000000020D7 +S315E074776000040000000000001000000000000000AB +S315E074777000400000800000000008004000000000A7 +S315E07477800000000004001008000000000000004043 +S315E074779008000000000000000000004000000460E3 +S315E07477A000601000001000000000000004001000EB +S315E07477B020000000200000002040200000000000AF +S315E07477C0200000000000000000000000000000003F +S315E07477D000402000000000000000000000000000EF +S315E07477E0000000008010000000000000100000009F +S315E07477F0080018400080000000000000000000004F +S315E0747800008000180048900000000000100020007E +S315E074781000001000080008002000000000000000CE +S315E074782000000000000008000008000000000000EE +S315E074783000000000000800400000000060000050F6 +S315E0747840000008004000008020000048000020008E +S315E07478500080000000000000000100000000002A23 +S315E0747860680020449040400064102090500040002E +S315E07478701000000010002410304004000020045072 +S315E074788050002450201004101000005020044420AE +S315E074789000740070002424402040402020402400DE +S315E07478A060141400201010042004340000201460C6 +S315E07478B06010000004505000000040003044100492 +S315E07478C00450002404500004304440040004403062 +S315E07478D070000014040000044000002420400004FA +S315E07478E02040200C04400020740000600410040062 +S315E07478F040240044045804280000001800080014CA +S315E0747900802C4010700C7408400440181800043041 +S315E074791010001400006C3C00201020147000580015 +S315E0747920001C304814402400000828000030201061 +S315E074793010200810500C28540060002000304810C5 +S315E074794000507000006004003008005010000080A1 +S315E0747950300010A42C9000A0802000800080009459 +S315E0747960807000C00010201000100008480000402D +S315E07479701000108010800010108048900810008865 +S315E07479800000000840A810880000006860181068BD +S315E074799088400000C00800C8480040000000088025 +S315E07479A0008800080080188008D0200000280008AD +S315E07479B020800028006800082008C00828400028B5 +S315E07479C010A04800208808407000082000505080BD +S315E07479D00020E8008800A8402FCF004420700010F3 +S315E07479E000000000B0600044005000600010001019 +S315E07479F020600000204000400040040440502020F5 +S315E0747A000000204000401060002000002000204468 +S315E0747A1020006040300420200040245420000440BC +S315E0747A20000064240020444000300400500000004C +S315E0747A300000200050400000104400300004700044 +S315E0747A4004005020000000040000041004442000E8 +S315E0747A50002400000424003000042000080C000414 +S315E0747A6000044000400480440040040028040800F8 +S315E0747A706000000014700C285468809C60086020D4 +S315E0747A804008106410080004100000340808202C24 +S315E0747A9000204020041800284008006800044024B0 +S315E0747AA0100008380000200070102020002C502CA4 +S315E0747AB00000604020200400180000001000004020 +S315E0747AC00020100020401080100000041084100084 +S315E0747AD05080180020001020109020806050200004 +S315E0747AE0084080100000C80040000000100000004C +S315E0747AF080001018000810580040180890106800AC +S315E0747B0040004810800018489078004880000800CB +S315E0747B10101840008800000000000888000008087B +S315E0747B204000104080200808C02810089028C00043 +S315E0747B30403000400828C0400030004018A040E0C3 +S315E0747B400000A040105000802000C0C0210088E0F2 +S315E0747B5000B0A200008000143470200004001010FD +S315E0747B6010444020000024303000400000043434D7 +S315E0747B70705040000004143030100040000034703F +S315E0747B8070100000000014746000000010000464BB +S315E0747B90607000001414147460600000141414749B +S315E0747BA060200400301010544040000014347040DB +S315E0747BB0400004040434305040000004543430006F +S315E0747BC000400004047460400000000444606040B7 +S315E0747BD0000010044C606010008004044460E0000F +S315E0747BE0000000040C646000040020101854400087 +S315E0747BF004041C3838D8400000040438385840006F +S315E0747C000C04441430080000080C0474701000006E +S315E0747C100808087870000000140C0828201000008A +S315E0747C2000181868602000000C1C006060000400F6 +S315E0747C3028181054C00000000000304040000000D6 +S315E0747C400030388080000C0440303088804000007A +S315E0747C503030708000000000087050000000180892 +S315E0747C60004000000080001018404000000000183A +S315E0747C701848400000000818084840000000103812 +S315E0747C8038584000000000083878400008000000CA +S315E0747C900008000000080848500000000000086072 +S315E0747CA070100000080848686010008010180868B2 +S315E0747CB060000000001848E8E0400100201890C019 +S315E0747CC0C0200000083828C0C040C7450000000442 +S315E0747CD00430200020000030004000000000002046 +S315E0747CE0200020404000001414707001000C005015 +S315E0747CF011101800000000545420300000000014E5 +S315E0747D001400000200000084464000008014105401 +S315E0747D105440200000141014544040000010101019 +S315E0747D201040200000343410500000040004043085 +S315E0747D303001000C041415002800000404246400C7 +S315E0747D4010000000000040701002000000A84A40D5 +S315E0747D5000000000102050E0A000000000405C002D +S315E0747D6000000000105050406004040808181840E1 +S315E0747D7040000010301858414004000005300000FF +S315E0747D804008080030505000000808382870600237 +S315E0747D90000C0C882A0000008018186848206000DF +S315E0747DA0000C0C0060606000001808104080E00071 +S315E0747DB00000005060000000002020888881800464 +S315E0747DC0040001A0A0808000003020D09000000064 +S315E0747DD0004040C0C002000808C042001000001015 +S315E0747DE010D8D8804000001808900040400400285D +S315E0747DF008C044404000001810D09800000000000D +S315E0747E0000B83841000000400180000040000000E6 +S315E0747E10009000000000006060908002001808C8BE +S315E0747E204A202000001010C8C8C04000001810088E +S315E0747E3088008004000000801440C00000182840C8 +S315E0747E4088804039DA000000140400000000000065 +S315E0747E500010004000000000202020304040000068 +S315E0747E6000207030000000040000103000000000B4 +S315E0747E7044403020000000000004000000000000D0 +S315E0747E804004000000000404545000000000141480 +S315E0747E90143400400000101010100040000024203C +S315E0747EA010500000040400041010000004040404DC +S315E0747EB00000000004046024100000000000541068 +S315E0747EC00040000000004828004000001000104404 +S315E0747ED0A0A00000101450440000000010005048A8 +S315E0747EE04040040408381818404000001000480068 +S315E0747EF040400400000420200000080840001030D0 +S315E0747F0000000008282820200000080C0800002043 +S315E0747F1000001818080020200000000C4040604063 +S315E0747F2000000808401040000000000040400000D7 +S315E0747F3000003030888880000004000020808000D3 +S315E0747F4000002030505000000000504040408080D7 +S315E0747F500808404000000000001018180080000077 +S315E0747F6000185080C0C00000080840C0C0C00000BF +S315E0747F700010004080800000000030B880C000002F +S315E0747F800000008080800000000000908080000087 +S315E0747F90404010508080080808080000000010185F +S315E0747FA0084840C00000100808A0802001000000C6 +S315E0747FB01000C0400000081888C8C0808C5C0000BF +S315E0747FC000000034200020000010000000000000D3 +S315E0747FD000200000004040000004047060000004CB +S315E0747FE0040000100000000000446420200000003B +S315E0747FF00044444040000000000444402000000473 +S315E07480000050440000000004101444404000000096 +S315E0748010005000000000003024703040400400043A +S315E0748020046070004004000004102000000404247E +S315E074803024504000000400301000000000040008E2 +S315E07480400C0020000010005000E0A000001010505A +S315E07480500C0060000000104050404004000804101A +S315E0748060584040040018043850404004000004208E +S315E07480702000000C00040050500000080060680006 +S315E0748080400000080C082000000000180818006082 +S315E0748090600000001C2020606000000008500000B2 +S315E07480A00000000000404000000000202038988066 +S315E07480B08000043030A0A080800000302000008072 +S315E07480C08000004048505080800008400000000066 +S315E07480D000101018180080000008080898C0C00046 +S315E07480E00008000080C0C0000018004000808000D6 +S315E07480F000000010B88080000000000080808008D6 +S315E074810000000050C080800000606050508080089D +S315E0748110000008202000001010004840C00000084D +S315E074812018088020E00000000090904040000000B5 +S315E074813000808880C070D300000004042020000012 +S315E074814000000000000000000000002420204040F1 +S315E074815000000020207000000004002000300000C1 +S315E074816000000400202000000000404000400000B1 +S315E07481700000440400400000000444500040000045 +S315E07481801004041400400000000040500000000099 +S315E07481902420702000000004100000004000000459 +S315E07481A0000000100000040420204050000000008D +S315E07481B00000101000000000082800000000001005 +S315E07481C04014A0A0000000000010000000001000A1 +S315E07481D050484040000400005070404000040010D5 +S315E07481E018304040000010002020000000004000DD +S315E07481F0105000000008606000000000080C0800E1 +S315E0748200202000000818080020200000000C000060 +S315E0748210606000000800004000000000000040407C +S315E07482200000000020201818000000040020200040 +S315E07482300000000000000000808000004040C0D0D4 +S315E0748240000008000000000000000000989880001C +S315E07482500000001090404040000000008000404064 +S315E074826000000010A0A0404000000000800800005C +S315E0748270000000008000000000000000C040000024 +S315E074828000006060F0D000000000000020200000D4 +S315E0748290100880C0C040000010184880A02000007C +S315E07482A01010D01040000000080888A18180882C46 +S315E07482B00000000400202000000000100040404050 +S315E07482C040000020000020404000001014100040E0 +S315E07482D000040014101000000000005070203000FC +S315E07482E000000030140000000000000444000000A8 +S315E07482F0001410140400000000041054440000003C +S315E074830000000010004040000014047030000004C7 +S315E0748310000024001000000404101400000000049F +S315E0748320044054407000000000505040400000008B +S315E074833000684840400000100040004040000010D3 +S315E07483401040000000000010005050404000041837 +S315E074835000505840400000100048580000000000EB +S315E0748360002020000008000000405000000808408B +S315E074837048004000000400080820000000101008BF +S315E074838008606000000C080040002000000800103F +S315E07483904000400000000000000040000010002093 +S315E07483A0800080040020209030008000002020C0EF +S315E07483B0B08080000000000000000008004000006B +S315E07483C0000000000000108040000018000000006B +S315E07483D000000018004040404000000000401000DB +S315E07483E00000000000682840000000000000000063 +S315E07483F000000040400000000000002000505000E3 +S315E0748400000800604860200000000040088000001A +S315E0748410001810800800A000000000909000C000D2 +S315E074842000180080C880C00A9E000000000020206A +S315E07484300000000010100040000000000020000062 +S315E074844040400000342400100000000410000010C6 +S315E07484500000000014041030000000001004000056 +S315E0748460000000004000000000000410001000004E +S315E0748470000014000410004000001000001040409A +S315E074848000000000702000000400000400000000FA +S315E0748490040400100000000004044044504000004E +S315E07484A00000404040400000000040604040000052 +S315E07484B00010400000000000000000000000000012 +S315E07484C000104040000000000010504040400000A2 +S315E07484D01010404000000000000020200000000062 +S315E07484E0400010100000000040400000000000044E +S315E07484F000000020000000000000002000000004DE +S315E074850040402000000000004010400000000000E1 +S315E074851000004000000010100000800000040020FD +S315E0748520309080000000201050C080800000002051 +S315E074853000008080000000000000000000000000E1 +S315E074854000800000001800008080000000004048B1 +S315E0748550C0800000000020408080000000003030C1 +S315E074856080C00000000000008080000040400040B1 +S315E07485708080000000205050808000000000206061 +S315E07485800000001020400080000010180800202031 +S315E0748590000000008000400000000010C088808069 +S315E07485A0A4C2000000040030700000000010004017 +S315E07485B04040400000100000000000000400041079 +S315E07485C0000000000420001000000000004060601D +S315E07485D020000000000004000000000000640400B5 +S315E07485E00000000400100000000000041054440071 +S315E07485F00000000000500000000000100030700021 +S315E074860040040000044010404004001004100000D0 +S315E07486100004042024100000000000101000000084 +S315E074862000000020080000000010101040404000D8 +S315E07486300010107000000000001000000000000040 +S315E07486400418004058400000001000485000000034 +S315E074865000000020200000080004404040000000B4 +S315E07486600040480040000000000800202000001090 +S315E074867000080040400000000800000020000008E8 +S315E074868000500000000000000000000040000010F0 +S315E07486900000900000000010102020000000002070 +S315E07486A02080200000000000009090808008004048 +S315E07486B00000008000000080908080000000008050 +S315E07486C000808000000800C000C0C0000020209038 +S315E07486D080808000000000800880800000000080B8 +S315E07486E000808000000800C040808000002000D038 +S315E07486F0C080800800400840608000000080888068 +S315E0748700A000001018804020A000000800905000DF +S315E07487100000000800C08880C0F2BB0000000000C2 +S315E0748720202000000000101410000000000000007B +S315E07487300000000000001000001000000001102886 +S315E0748740005000000000100000500000000010000F +S315E0748750002000000002004000800000001020109D +S315E074876000000000100000100060000010040030EB +S315E0748770000000000000306040000000000000408F +S315E074878000000001201800100000000420200010F2 +S315E0748790000000001010101000000002002000809D +S315E07487A000001410005000000000101000100000CB +S315E07487B0000000140020000000000010D04040408B +S315E07487C000000010000000000001000820200000F6 +S315E07487D0000040001010000000004040000000005F +S315E07487E00006000020A00000001000000000000059 +S315E07487F000040000200000000004005000000000A7 +S315E07488000000000040400000000000000000000589 +S315E074881010182040000000000000008000000000F6 +S315E074882000001010808000020000008080000000CC +S315E0748830000080800000000000808080000000045A +S315E074884000A0C0C000000020202080C00000080006 +S315E0748850008080C000010008008080800000000075 +S315E074886040C08080000008204050808000020010E4 +S315E074887060E0800000000040808000001010480036 +S315E0748880202000001014400000000000000080C0AA +S315E07488908080AA4F0000000004200420000000003D +S315E07488A0045400200000001410102000000404009A +S315E07488B004001040000401001C2050400000000039 +S315E07488C030100000000000003400000000000204D4 +S315E07488D02010A0000010041004002000001004040E +S315E07488E02000400000001414206000000010001006 +S315E07488F06000000400002410000000000514080065 +S315E074890020400000043004001000000400700420CD +S315E074891010000000066C0010A00000041054000063 +S315E074892040000000141400206000000004043020AD +S315E074893000000424082098000004002400000800C5 +S315E0748940000401100C0810000008041024205000E4 +S315E07489500008000018201000000402200810A0008F +S315E0748960000010102800000000001C4020000000E9 +S315E074897000100C440060400000000000104000004D +S315E07489800010000010000000050008184000000008 +S315E07489900000008040000000003008000000000085 +S315E07489A00A00401080000010000010000000000073 +S315E07489B008000800000000000C00284000000000D9 +S315E07489C020200800000000000840180000000100A4 +S315E07489D00808000000000808404010000000000885 +S315E07489E02020000000000A281010A00000000020DB +S315E07489F028002000000800200080600000081410A1 +S315E0748A0000E000000020000028000059B0000000DB +S315E0748A100010100000008000001410200000000018 +S315E0748A20000000004000000000100000400000015B +S315E0748A300028004000000000040060000000000010 +S315E0748A40006020000000000200700080000000005A +S315E0748A500020000000000000104020000000000428 +S315E0748A600020000000000400000000000000001078 +S315E0748A7020000000000100281040000000000040C3 +S315E0748A8060000000000000004000000000020010DA +S315E0748A906080000000000020000000000000082054 +S315E0748AA000000000000408600000000000100040B0 +S315E0748AB04000000004383000000000010018204037 +S315E0748AC00000000400604000000000000000400068 +S315E0748AD0000000020010008000000000004040002A +S315E0748AE000000000000000000000000410200000F8 +S315E0748AF000000000200000000000000020000000DC +S315E0748B000001003810400000000000003000000052 +S315E0748B100000000010000000000200100080000059 +S315E0748B20000010404000000000001040000000000B +S315E0748B300014000020000000000818404000000007 +S315E0748B400000004040000001000800400000000002 +S315E0748B500040100000000000000060000000000209 +S315E0748B600010408000000008004020000000001063 +S315E0748B7008600000000000040060000000000008C7 +S315E0748B8020C0C0000974000003031C1C6060101050 +S315E0748B900303181C40600000070738384040003073 +S315E0748BA007073838C0C010100607303880C0111176 +S315E0748BB00E0E7070808011110E0E7070808011012F +S315E0748BC00C0E6070009003031C1CE0E010100303AD +S315E0748BD01C1CE0E010104343181CC0E0101047471B +S315E0748BE03838C0C0000047473838C0C01010460750 +S315E0748BF0303880C001010E0E7070808041410E0ED7 +S315E0748C007070808041410C0E6070008003431C1CC0 +S315E0748C10E0E0000003031C1CE0E000000303181C02 +S315E0748C20C0E0101007073838C0C01000070738389E +S315E0748C30C0C010000607303880C001010E0E707097 +S315E0748C40808011610E0E7070808001210C0E607050 +S315E0748C50008003031C1CE0E0000023031C1CE0E01E +S315E0748C6000002303181CC0E0102007073838C0C082 +S315E0748C70002007073838C0C000000607303880C0C7 +S315E0748C8021310E0E7070808021010E0E707080801E +S315E0748C9001010C0E6070008003031C1CE0E01010F0 +S315E0748CA003031C1CE0E000004303181CC0E0101032 +S315E0748CB007073838C0C0100007073838C0C000004E +S315E0748CC00607303880C001010E0E70708080014155 +S315E0748CD00E0E7070808001410C0E6070008003038C +S315E0748CE01C1CE0E0000002421C1CE0E000000202F2 +S315E0748CF0181CC0E0000006063838C0C0001818001A +S315E0748D000020600010206000108000100000000059 +S315E0748D100000000000000000000044101000003065 +S315E0748D200000001030000010200000301000040035 +S315E0748D30000404101004041000040400200400402D +S315E0748D400014140020101040001414006014000085 +S315E0748D504010100044100004041000400000004469 +S315E0748D60440030040010104004102000000000009D +S315E0748D7004004004000000000040400000000000D1 +S315E0748D800040000004000004044000040080400831 +S315E0748D900C00000C000000081800001008440018CD +S315E0748DA018000018000040001800041000040420A5 +S315E0748DB00004080000080C001004000060080C00B1 +S315E0748DC0000C0800200408200000080000000800D9 +S315E0748DD000000020000C00000000002000081000D5 +S315E0748DE00000008044200804000800000000000031 +S315E0748DF00008000400000000002030000400200495 +S315E0748E0080200080800000808040008800000000A0 +S315E0748E100000800010808008108080000880800840 +S315E0748E2000C0C008188080101880800818808018E8 +S315E0748E300080800038808030008080000080800070 +S315E0748E400080880000888800408880000080800068 +S315E0748E50408808000000080080080880800000C090 +S315E0748E60800008C0400800400000000000001800C0 +S315E0748E700008000040006C9C000400000000000044 +S315E0748E800000000000000000000000000000000088 +S315E0748E900000000000000000001000000000000068 +S315E0748EA00000000000000000000000000000000068 +S315E0748EB00000000000000000400000000080000098 +S315E0748EC000000000000000000000000080000000C8 +S315E0748ED00000000000000000000000000000000038 +S315E0748EE00000000000000000000000000000000028 +S315E0748EF00080000000000000000000000000000098 +S315E0748F0000000000000440000000200000000000A3 +S315E0748F1000000000000000000000000000000000F7 +S315E0748F2000000000000000000000000020000000C7 +S315E0748F3000000000000000080000000000000000CF +S315E0748F4000000000000000000000000000000800BF +S315E0748F5000000000000000000000000000000000B7 +S315E0748F600001000000000000400000000000000066 +S315E0748F700000000000000000000000000400000093 +S315E0748F800000000000000000000000000000000087 +S315E0748F90000800010000000000002000000000004E +S315E0748FA00000000000000000000000000000000067 +S315E0748FB0001040C000000000000000000000000047 +S315E0748FC00000000000000000000000000000000047 +S315E0748FD040000000020000000000000000000000F5 +S315E0748FE0000000000000000000000000000000FA2D +S315E0748FF0ED00002400000400008000000000100072 +S315E07490000010000000040024000004300000040096 +S315E07490100024201010000400001000A000000420BA +S315E0749020001400000040000000000004004000004E +S315E07490300400100450200400400000000020542076 +S315E074904020005000008004006000140000402004FA +S315E0749050740010844010500400000004A000040062 +S315E074906000703400200410A0400000100440000496 +S315E0749070400000000000000400101040001000A042 +S315E0749080008004101804080000080850144800D83A +S315E07490901840004004000000200020000810201052 +S315E07490A000100000200840080098380028002000CE +S315E07490B020184000002840280008600008000010CE +S315E07490C000085000B040000000008000600800080E +S315E07490D0100040800408000800300018002080006A +S315E07490E080101080000000800000002080001000D6 +S315E07490F00008803810200080080040000800000056 +S315E074910008400000000800008000800818E00000B5 +S315E074911010002000980008100800880000800800FD +S315E07491201820800060908010008800001000000015 +S315E0749130800000003000000808002040408820804D +S315E07491400000480000202800000020880000004944 +S315E074915000202081002820003080100080080090D4 +S315E074916080100000A000600009BC00200000002010 +S315E07491700400000000000010001000080000040065 +S315E07491800400000030040000002004002000000009 +S315E07491900000400080000000280014000000001069 +S315E07491A000000000008040002020800004200000C1 +S315E07491B00040200000100040000000004000000065 +S315E07491C00040000000001020040000002000004071 +S315E07491D000000000040080004040002004040020E9 +S315E07491E00000400000440000000040000000000061 +S315E07491F0040010004000008000000000000004003D +S315E07492001008004000002800080000000004000078 +S315E07492100000002040100828140400000028000014 +S315E0749220000010102000200000300800003000001C +S315E074923020000040000000001000080054600000A8 +S315E0749240000000800000600008100000C00000000C +S315E07492500020001020000000800000008000001054 +S315E074926080000020808000000000002010000000D4 +S315E074927080000040000008000028000000000000A4 +S315E074928000C000880010C080401000A0000090006C +S315E07492904008008008008000002098800000D80014 +S315E07492A080008000000000000000C0000008004854 +S315E07492B0000040400040888000080000280022003A +S315E07492C008000000A800080840000000A0000000A4 +S315E07492D020A00000100000100000100000A00000A4 +S315E07492E0C0C4B80000041000000000841000001030 +S315E07492F000040000000000002000000040040000AC +S315E07493000400000000101000040010000020140097 +S315E074931004000000000040000000000004000000AB +S315E0749320001004000010500004000010000020003B +S315E0749330142020001000008004000820140000406F +S315E07493400000641010844030100480000000240093 +S315E074935020040030508020101080000000100000BF +S315E074936000040000002000001080000010201000AF +S315E07493700420A0000430180000482000001C1044AB +S315E074938080505800400000000400102400080000DB +S315E074939000002010000004004820840880081800AB +S315E07493A0002000000048000800484008200008003B +S315E07493B0000010000000108000000000000010089B +S315E07493C0000000000000100C000C100000086000A3 +S315E07493D0000000981000080060010000000400001E +S315E07493E000180800880010A00000080000000000C3 +S315E07493F000204000000088000008000000000028FB +S315E07494000000008004002008001800000000000836 +S315E07494100800000040000020001000080000500121 +S315E074942000080000000030002000000820800000E2 +S315E074943020000000400000002010008800000000BA +S315E07494400110002000012008008810000000804808 +S315E074945000808000000000002000B1E700200004D6 +S315E0749460005000001000000000000010000004042A +S315E07494700000000000000000000000000000000092 +S315E074948010001020000000000044000004200000DA +S315E074949000000000001000200440200000040000DA +S315E07494A010002000002050000000040010000000AE +S315E07494B000004000200060000008504020000000DA +S315E07494C02000001400804400800020408090000456 +S315E07494D050E00000100450240040242000000000F6 +S315E07494E04404008460600050008000100000009026 +S315E07494F0004000408000400040001800804000803A +S315E07495004000004004000000040040200000040015 +S315E074951000000004200004000000000000000000C9 +S315E0749520000000402000000004000000100000006D +S315E074953000400000100000002000200000005008E9 +S315E074954000000000004000100000002090000000C1 +S315E07495500040000000008000000000000000800071 +S315E074956000008000000000200000000020000000E1 +S315E074957000000000100000400080280000800020F9 +S315E07495800000089000800008008000000080000061 +S315E074959000006000808000408000000088000000C9 +S315E07495A00800500000208040880000000008600039 +S315E07495B00008000000000000000000200080009019 +S315E07495C00000400098280000000000508000000071 +S315E07495D0000000B01D0010004000000400000410FC +S315E07495E04000000020000010201024000400040055 +S315E07495F0000000001000100000804400000000002D +S315E07496000004001040004000004410000040006078 +S315E07496100000000004601000000090001460000078 +S315E074962020002010244040000020000010040000B8 +S315E074963000400020040020000000000080001000BC +S315E0749640400000000000000000A00000844000001C +S315E074965080000000005000048100100000000080CB +S315E074966000004000040034000020800420000088DC +S315E07496701000200400002008000040000000804034 +S315E07496802018000804000000000000040000000038 +S315E07496900000004000100008004000800000000850 +S315E07496A0004008000004000428000000440800009C +S315E07496B00004000000000C80004000401800000028 +S315E07496C0000008004C0000000008004000040000A0 +S315E07496D000000000408C0000000000000000000064 +S315E07496E000000040080000082040800028000820A0 +S315E07496F02008000080000000003000000000000038 +S315E0749700000000400080000008000080400018005F +S315E0749710000000400000800000008000000000109F +S315E0749720000040000000800000400000002080003F +S315E0749730000000C000C140300028000000004080F6 +S315E0749740000000200000001880010100F7F6000018 +S315E074975030000400440010140000400000200000B3 +S315E0749760040010000400040400000000000000106F +S315E07497700000901000002000000004400004400047 +S315E07497804044001000000000208420104040200077 +S315E074979004001000B0542000600000102034004033 +S315E07497A000000040001400400000002058046000EF +S315E07497B02000200000801490044000002000C010B7 +S315E07497C0002010608000144410A400004000700073 +S315E07497D00041048010C42040801040C00010001482 +S315E07497E000009040046000C8000000201C00802047 +S315E07497F00040004000000400000418000800600007 +S315E074980004000000040004000000000040001000A2 +S315E0749810080040008000200800400400080014009E +S315E074982004000040001448000000040000000060DA +S315E07498300C4800400010080040000000082854005E +S315E074984000000800400000000000000000C80400AA +S315E07498508000000080000000000010000000000896 +S315E0749860000060008020000008000088208000006E +S315E0749870801020080010000080080080000080003E +S315E0749880800000804000C00810800000408008809E +S315E0749890000008409000002010008800000000A03E +S315E07498A048500080080000800000000040A041900D +S315E07498B040800000408010480000000020C0100086 +S315E07498C01000000000A1C4000000400004202050F5 +S315E07498D06000120050000000006000501000001498 +S315E07498E00400240084402010204000800000A0047E +S315E07498F0244000009020440020040000004C003016 +S315E074990000006000400040040000300000000020C9 +S315E074991024400030240020001000000014002011C0 +S315E07499201488102060004020002000204000304061 +S315E0749930142020002400C0242400100001101824F0 +S315E07499400000800400102400006004003000080069 +S315E07499506C0020041004040010002C0000001000B9 +S315E07499600000008000640000002440242008804049 +S315E074997040100020000020000020200004128034F3 +S315E074998014400000000010444000001041280840D4 +S315E07499904400000000000000100442005000004043 +S315E07499A000000000400800000800520410000400A3 +S315E07499B00840800830000800480440001000002089 +S315E07499C0108008402088000000D050200000084035 +S315E07499D0E00020C8400000000000C80400208000B9 +S315E07499E000004080880000600088C208900800800B +S315E07499F060088000200000082408700008008020B9 +S315E0749A00A0100000800000808440000000400080C8 +S315E0749A100080000008200030002000406000300024 +S315E0749A2000881020900008208020000000E80820BC +S315E0749A305000C0008810880000C808400048F072E2 +S315E0749A40000000200020001020800010005000006C +S315E0749A50000000000000000000000000204000004C +S315E0749A6000000000800000008000000000800044D8 +S315E0749A7010140000000040000000000000004044A4 +S315E0749A800000000000000000102400002000002008 +S315E0749A9000000000000000000080000420000000C8 +S315E0749AA0000000000080400000000000000000405C +S315E0749AB000000400000000006000400400000000A4 +S315E0749AC004004004004000008044000000000000F0 +S315E0749AD000000004000020001000000008000000F0 +S315E0749AE0200020084000000000000800000040202C +S315E0749AF00000008000040000000000000000200068 +S315E0749B000000040000004000002400000000000093 +S315E0749B100000000000200000400400000000000087 +S315E0749B200008004004000020000000000800200047 +S315E0749B300808400000000000000000004000080033 +S315E0749B40000000002000000800008000080000000B +S315E0749B5000080008000000008000200000000040BB +S315E0749B60008000C000000000000000000010200823 +S315E0749B700000000020000000080000000000000063 +S315E0749B80000060000040000080000000000000005B +S315E0749B900000200000000020408000080000001053 +S315E0749BA000002000000000000000004000000848AB +S315E0749BB000800040000800D62F000000100000046A +S315E0749BC000402000000000000000000000000000DB +S315E0749BD014000020400400800020200010000000E3 +S315E0749BE0100040000800000000000040000000047F +S315E0749BF000100000000000000020000010000000CB +S315E0749C0000000000081000000000100000000004CE +S315E0749C1000200044001020004020200000200000B6 +S315E0749C204430102000000000000020000010000006 +S315E0749C30000000000000100000202000000000106A +S315E0749C40000000080400000004000000003000007A +S315E0749C500000000000C04400000004402400000836 +S315E0749C6000000050000000000000000020002010FA +S315E0749C7040000000000000001004000010002804FA +S315E0749C8000000000000000000004100000404000E6 +S315E0749C9000000000001000480000000000100800FA +S315E0749CA00000080400000004000000040000000046 +S315E0749CB020008000000820000000008000100000F2 +S315E0749CC0000000408000400000000000008000803A +S315E0749CD000100000C000000020000060000880084A +S315E0749CE00080007080000000000000000040000862 +S315E0749CF0800000A0000000000000000000000000EA +S315E0749D0000000000000008A01000000040000060A1 +S315E0749D100010000030000000000000800000200801 +S315E0749D2000281000800090008000000000000040D1 +S315E0749D30A1CD00100040000000000000400A0000C1 +S315E0749D400000040060500000100000000400000CE5 +S315E0749D5000001000400000040020040024000010FD +S315E0749D6020000000200000000800200000006000D1 +S315E0749D700000000000200000042000004000000005 +S315E0749D8024000000000000100001100810000040DC +S315E0749D90000000000000000000000004002400241D +S315E0749DA000248000000000003114080000800000E8 +S315E0749DB0000000000000000020004820000020346D +S315E0749DC00000001000080010000000000000000011 +S315E0749DD020000000000010002080500000002000E9 +S315E0749DE0000000200000000200B0040450080040A7 +S315E0749DF000400000480008010008404000000040B0 +S315E0749E000000000400000200180000000840000092 +S315E0749E1000000000000002001004004000408010C2 +S315E0749E200000000000004000100000001000101058 +S315E0749E3080004010400040000000400020006000B8 +S315E0749E40000000000004402000000000080000004C +S315E0749E5088000000080210500000000008000000AE +S315E0749E6000000028041000000000205000000000EC +S315E0749E70A08000008420002000002000C0000000C4 +S315E0749E8000200000000000080000000800000080C8 +S315E0749E901020080008000000C00000480000000020 +S315E0749EA0000000084000080000054800000000407B +S315E0749EB00400001000000000000000000000000034 +S315E0749EC000200000000000000000000410041000F0 +S315E0749ED01000000020000010500004000000300064 +S315E0749EE000001400000000000004100440000400A8 +S315E0749EF01000040040000000004000040000001060 +S315E0749F00040010202400000004004000000010004B +S315E0749F1080100014000000000000208084002000FF +S315E0749F2000000000008020C400802000400420442B +S315E0749F30001000000000000000000400004000086B +S315E0749F400040000000000000004400001000000023 +S315E0749F500000000400002800200000000004000057 +S315E0749F600020000000240400040004000000000047 +S315E0749F70000000000000004000000800000004003B +S315E0749F80000000000000004000000048001000409F +S315E0749F9040000048040000001408008000000480BB +S315E0749FA000000080100000800448000800082008C3 +S315E0749FB02040008008400000201000402048000047 +S315E0749FC0080000002000200020000000000040008F +S315E0749FD05000080060005028800000000000001067 +S315E0749FE0400000400800100010000020A00020008F +S315E0749FF020000060000000400000000000A00000A7 +S315E074A0000000004000000000000000400000002056 +S315E074A0102800000080000000400000008000000876 +S315E074A020002066610000001000000000000004805B +S315E074A03010000040100080100000000004000010C2 +S315E074A0400000100060200000000020000004000002 +S315E074A0502080040000200040001000000000000092 +S315E074A06060006000000400100000000000000400BE +S315E074A07000001000001000000000000400104024EE +S315E074A0800010008000000000000000600020000462 +S315E074A0900000A000000000001080242000000000F2 +S315E074A0A000000440800000000004000020401424F6 +S315E074A0B000000040000000200000004000000000A6 +S315E074A0C000200000000040000000000000002400B2 +S315E074A0D00000480440000000000000004400000056 +S315E074A0E000000800000400000000000040000000CA +S315E074A0F000000400000000000800000008080000EA +S315E074A10000000000040000000000000000004010A1 +S315E074A1100000400000001000000000000000004055 +S315E074A1200800000040000000001800600000000015 +S315E074A1300000000000000000100000004000000075 +S315E074A14000004000000040001000002000100000F5 +S315E074A15000400040001000400010000000C0000005 +S315E074A16000002000000000000000800000001010D5 +S315E074A17000004000104000000000000000401000A5 +S315E074A1800000000800001088000040000000201065 +S315E074A1900800000060400000000010173500400021 +S315E074A1A0000010404400100000000400200000404D +S315E074A1B004000400400000300000200000000400A9 +S315E074A1C0001000001004C4101480002010400040F9 +S315E074A1D00004000000004020001000000000002091 +S315E074A1E000406000000000000000003000104000F5 +S315E074A1F00400102080000000401010006000000091 +S315E074A2000000040000000400104000040000000098 +S315E074A21080000000900000000400000000000010C0 +S315E074A2200400000000000000000000002000184058 +S315E074A230480040000004102000401800040000208C +S315E074A2400400002000000008600000000000200008 +S315E074A25004004004080008000008400000004000C4 +S315E074A2600000400000044000000C400004000800B8 +S315E074A2700000000000000000000000440010081018 +S315E074A2800800000000000000000000808010040850 +S315E074A290900000881040088008000000000000006C +S315E074A2A00040000000000020005000080028000074 +S315E074A2B008000000001000000000000000000040EC +S315E074A2C0000008804000000000000020000000004C +S315E074A2D00000000000000000000000000000805054 +S315E074A2E00000008000000020000000000040000034 +S315E074A2F00000000000000000000000200010400094 +S315E074A30040008000C810000000000000000000005B +S315E074A31020008040786100140020100000200000C6 +S315E074A320000010100004003000004010002000000F +S315E074A330004004000020000000048000008000005B +S315E074A340000000040000000010600000240000001B +S315E074A350002440040000000000800000000050204B +S315E074A3600010000000008000000000000000000003 +S315E074A3700000000040001000602000000040001063 +S315E074A3800020000000401000004000000000400083 +S315E074A39004000000200000000000100000400000EF +S315E074A3A000400420140000000400000010000000C7 +S315E074A3B0000004004440000004A000000000000017 +S315E074A3C0040000000000000000000000000000002F +S315E074A3D040000000000000000000000000080000DB +S315E074A3E000000008000000000000004000000000CB +S315E074A3F04000080000000000440000000400000073 +S315E074A4000008001000080080000000000000001042 +S315E074A410401000000010000000000000100008006A +S315E074A42000002000001000001000108010002008CA +S315E074A430004000080010400090002000000000403A +S315E074A440081000100000000040000000001000102A +S315E074A4500000100000004000000000100000100032 +S315E074A46000000020801000800000000040004030B2 +S315E074A470000010000000600020009008000000401A +S315E074A48000000018000090000080001000DB6200FD +S315E074A49000000400002020100010004000000000BE +S315E074A4A0041000700000004000000000200040002E +S315E074A4B0001020000410000060008000801000008E +S315E074A4C000100004001000000010000000000000FE +S315E074A4D000040000100000000000000000000010FE +S315E074A4E000000000000010041400800000000080EA +S315E074A4F000000000001000A00000008400000000CE +S315E074A50000000020800000200000401000000000E1 +S315E074A51000004000000000000000000000000000A1 +S315E074A520000000000000204004000060000000000D +S315E074A5300040004000000000000008000000000039 +S315E074A5400000000000000000004420000008000045 +S315E074A5500040000000000000000000000000000859 +S315E074A5600000000000080008000000000800001069 +S315E074A57000000000000000004000000840000000F9 +S315E074A5800000000040000080008800000000080021 +S315E074A59000002000000000001000200800402000A9 +S315E074A5A000000000000860000000200000000000C9 +S315E074A5B010000000080000002000004000000000C9 +S315E074A5C000100000000000004000000028000000B9 +S315E074A5D04000002000400040002000100000000011 +S315E074A5E04000000000000000004010800020008061 +S315E074A5F000081020000000104000000080001040A9 +S315E074A6002000000800A052060000000000000400CC +S315E074A610000000000010000000000000040040107C +S315E074A620000000000000400004000080008040004C +S315E074A63004000000200000000440000000800000D8 +S315E074A6402400800000200020401000000400001068 +S315E074A65000400000200000004000000000400000C0 +S315E074A6604020002000400010005480100000801448 +S315E074A6700020000000002010C0E010004060104090 +S315E074A6800000040000000000A0400000204000002C +S315E074A6902000000040000040001000400000000070 +S315E074A6A00010000010102050000000000080200010 +S315E074A6B000000000000040000008002000000000D8 +S315E074A6C0400000000C000000400000000040000064 +S315E074A6D00000400844400000000000000400000050 +S315E074A6E000000040040004400000044000080040FC +S315E074A6F00000041000000000100044000000080090 +S315E074A70000000000004080100000400880600000F7 +S315E074A71000400000000000004020004000000000FF +S315E074A720000000000020000000000000000060400F +S315E074A730001000200060000010000000000000001F +S315E074A74000100000000000201000000040300020DF +S315E074A750000080000000002000000000600000207F +S315E074A76010000000205000000000000000200000EF +S315E074A770000010000000402000401000000000FEC1 +S315E074A7801D000000204000000000000000000000F2 +S315E074A790104000200000000000004020402000002F +S315E074A7A0000040000000002020000010400000601F +S315E074A7B000000000001000000010204000000000BF +S315E074A7C00004004030000060000400340000200003 +S315E074A7D0000000104000000000004000000400008B +S315E074A7E020000000E000002000004000002000008F +S315E074A7F000000000000000000000A00080000000DF +S315E074A8000000200400002000000064000000004402 +S315E074A8100004000000100020000000400400000066 +S315E074A8202400000000000000240000000000000086 +S315E074A830000000040004000004000000004004006E +S315E074A8400000000008400000004000000000040022 +S315E074A8500040000000000040000000080000000016 +S315E074A8600000000004000000000008000440000836 +S315E074A8700040100014080000001000000080000082 +S315E074A880400000100010000000100000400000209E +S315E074A89000000000000010000008400010004010A6 +S315E074A8A000000000500000000800000800080000E6 +S315E074A8B0000020000030900000400000000000809E +S315E074A8C000000000000000000000000040001000DE +S315E074A8D000000000000000000000002000000000FE +S315E074A8E0000010400100000020000000000000009D +S315E074A8F00000000040004800518500600000000040 +S315E074A900104000000000000000000000002000403D +S315E074A9100400201000200010400000200000000019 +S315E074A92000600080000000000000000024000000C9 +S315E074A9300000000004040000000010200000000085 +S315E074A94004000000001440000000000000C0000095 +S315E074A9501000000000100000000004000000000475 +S315E074A96000000000800000000000005000000400B9 +S315E074A970000000200000000060500000200010007D +S315E074A9806000000020002040200000000800202025 +S315E074A9900400000000000000001020200020800069 +S315E074A9A000002020080400000004000000002000DD +S315E074A9B000000800084020000004000000000000C9 +S315E074A9C000000020000000080000000800080000F5 +S315E074A9D00400000000080000000800000008000001 +S315E074A9E00000000008040000000040800800000039 +S315E074A9F000000000000000000000000000000008F5 +S315E074AA0000200018000000080000000800000000A4 +S315E074AA1000080000500000800010000000000000F4 +S315E074AA2000000080000000000000000080000000CC +S315E074AA30000000000000008010000000100000001C +S315E074AA4000100040000000A000400000200000005C +S315E074AA5000000000002000000000100028400040C4 +S315E074AA608080000010801010000880308000200084 +S315E074AA70007970000480800000400400000000004B +S315E074AA8000000400004000000020100000400000B8 +S315E074AA9000000000004004008000801000000440C4 +S315E074AAA00000005000000000204400000000000098 +S315E074AAB0004060001000006000008040001000A0BC +S315E074AAC04000600040000010000460000000400098 +S315E074AAD004000000201080002040800014008000F4 +S315E074AAE000802000040000905000008000000020E8 +S315E074AAF000000000000000000000400000000000BC +S315E074AB0000000000000000100000000000000000DB +S315E074AB100000000000040000800000000000004017 +S315E074AB200000000000200000004400000020000047 +S315E074AB30004000000000000000000000000000007B +S315E074AB4000000000000000000800000000000000A3 +S315E074AB50080000000000040008000008000040003F +S315E074AB60800000080000000000800008000000007B +S315E074AB70001800004018000000000800200088005B +S315E074AB804010080010000000000000000080104033 +S315E074AB90000000000000000000100000000000004B +S315E074ABA0000000500040200000000010000000008B +S315E074ABB0000010000020000000000000900000007B +S315E074ABC040002000000000000060000000008000EB +S315E074ABD0000008A000000800000020400080084043 +S315E074ABE000080000000080110900A9CB00003000C5 +S315E074ABF0101400540004901000001050002010400F +S315E074AC00347000001400100020402020443000907E +S315E074AC10001080806040B034801044000020000052 +S315E074AC20740420001020006004000000004014004A +S315E074AC3030001000941064409000307004401000AE +S315E074AC40800410502410044034004060000050002A +S315E074AC50203400001034001400200420904010804A +S315E074AC602020908070A0040000C00440A0600040E2 +S315E074AC7030403000400020000400044400500820B6 +S315E074AC800060100040000000404C1050204024202A +S315E074AC9000802000200400086040080000000400E2 +S315E074ACA00404604804006440040840000044000062 +S315E074ACB00040004008400000000C00080408000052 +S315E074ACC0084408000800480040004800585004084A +S315E074ACD044004C0040044854080CD04018900C04CE +S315E074ACE0100080009810805800005C500040186096 +S315E074ACF0002050A048285080786000006820480002 +S315E074AD00100800006860006010E000005000000069 +S315E074AD105000080800100000785000401010C02061 +S315E074AD2010104040105008001000301020F0002041 +S315E074AD3000B000600010000000C0200070006000E9 +S315E074AD40004000400000309020200050200870B091 +S315E074AD5048608818601000D0080040502000408099 +S315E074AD600020906D1D0040046010041040048010B3 +S315E074AD700050040070040010043000646010106029 +S315E074AD80204010600460006480040080842010E435 +S315E074AD90C02044A000047000441010C0003440B0D9 +S315E074ADA0600040200074402450A440301040402499 +S315E074ADB02004001010C040104000200410E4044049 +S315E074ADC030C040006080E00460800050E40044904D +S315E074ADD08024200040A0D000204080404020802481 +S315E074ADE040B0200040300040102000004020004475 +S315E074ADF04020042004400048104060000060004495 +S315E074AE00401440200054000020808020000400009C +S315E074AE10400C400000000020002040044008006020 +S315E074AE200428400C4004004000400040004000000C +S315E074AE304400084400480000080048000800080080 +S315E074AE400804080000001C000804080008000C4010 +S315E074AE50580408C058801C40801480008000C800E4 +S315E074AE600008000010401040802018000000081010 +S315E074AE702000480000203000081088103840500048 +S315E074AE800060400000109000400080404800502070 +S315E074AE904000006000503000100010005000401078 +S315E074AEA0100008204010E0002040D0201040806060 +S315E074AEB00040102010204000204060000020106008 +S315E074AEC010204020802800709001C800B040001027 +S315E074AED01800D800588000B0D0289040E0090000EF +S315E074AEE000001454746000040030101044400000F4 +S315E074AEF004043430C04080000000303040C0800428 +S315E074AF00044430308080000404047470C00000008F +S315E074AF10040474700000000004046060100000040F +S315E074AF20141460602000000414146060200400208F +S315E074AF301050544040040404343040C0000004040B +S315E074AF403030C0C0400404043430808040000024B3 +S315E074AF5070708080000000047070A080001000247F +S315E074AF6060607000000010346460200000041418FF +S315E074AF704860000400201010544020040424343047 +S315E074AF8060C0000000242428204000080404042043 +S315E074AF9028004000040C4C60200000040C0440407F +S315E074AFA00000000008004060000000040C08400047 +S315E074AFB0000000000C484840400400000818444073 +S315E074AFC04004040008084040000404081818C0C08F +S315E074AFD0000C044010108880400808485050000067 +S315E074AFE00000085870705000000008086060200087 +S315E074AFF000001818486000000010105070400000FF +S315E074B00000201018404020000020383060400000D6 +S315E074B01000003010404000080000103028000000A6 +S315E074B0200000707040000000006070701000000056 +S315E074B03000006060000000101010606040000000C6 +S315E074B0401838E8E0000000001018C8C0A00000003E +S315E074B0503838F0C000D09F0000000010247400005F +S315E074B0600000101050404020040424044060C040A6 +S315E074B07000001020604041000C042031202800407C +S315E074B080040434247030000000004444404082805C +S315E074B0901004A02640400080141420604080000014 +S315E074B0A0141454D4C080000000005090C0A004046E +S315E074B0B03414602080400400141480300180080445 +S315E074B0C05405309800000000303010308080000065 +S315E074B0D03030707082800000800240400080101032 +S315E074B0E054542020000014140858602000001010F6 +S315E074B0F040404040040414043030404000000404EE +S315E074B1002028014004044005202000000004084C77 +S315E074B110602000000C0C4040000002001808C002D9 +S315E074B120207000800C044048000000000C00080801 +S315E074B130400000002800005040200404080008483D +S315E074B1400000040408089898C1C0040400019090B3 +S315E074B150808008081040501080800000105850908D +S315E074B16002801800802A401000800000585800A021 +S315E074B1700000101050D0808004000010181C40C0ED +S315E074B18000002820009000C000001000001041C0AC +S315E074B19000000001A000804000002020D010800054 +S315E074B1A00000501090008200100080020050008071 +S315E074B1B00010E060E000000010103898E0600400D1 +S315E074B1C03010581C00C0000008285878C0C0F955E3 +S315E074B1D00000001414141000000000000040400049 +S315E074B1E0000000043040C040400000201040600081 +S315E074B1F000000420203020000000040010203000FD +S315E074B2000000006440C0C0000004002060404000BC +S315E074B2100010148090800000001014D454000000D4 +S315E074B220000000C050000000040414E0E080000058 +S315E074B2300404241080000000000410901000000044 +S315E074B2400000001000808000003430F050808000F0 +S315E074B250004004004000001010545020000000101C +S315E074B2601410002020000010100000404000040478 +S315E074B270103070C0C00000040028280000040404E4 +S315E074B28004200000000000040020000000040C000C +S315E074B29000404000000808000020200000040C086C +S315E074B2A00800000000000C08084040000000004060 +S315E074B2B040404004040000404000000004080818C0 +S315E074B2C088C04004040000908080800808405040A4 +S315E074B2D010000000005840F0608000000800000094 +S315E074B2E04000001808D8D8A00000001010D0004024 +S315E074B2F0000000000098988040000030208000C074 +S315E074B30040000000308080C0400000000080008073 +S315E074B3100000002000901080000000505090508093 +S315E074B3200000002020004000001010C06080400043 +S315E074B33000000030B04080000010101058C040008B +S315E074B340002818F8F8C0C0AF4200000000000014EE +S315E074B350202000000000405000000000301440003F +S315E074B3604040000010306040808004002424202097 +S315E074B3700000040034642020000000044460C0C06F +S315E074B380000000000004604000001410A084A020B7 +S315E074B390000014109474000000000000D000400017 +S315E074B3A00400100490C08040000014148010000063 +S315E074B3B000003004008000800000501450508080FB +S315E074B3C00000202030708080000000000040000003 +S315E074B3D000000044206000000400081820200000EB +S315E074B3E0000010104040040010042020404000008B +S315E074B3F00004082800000404000420200000000073 +S315E074B400080C202000000C0800000000000008086A +S315E074B4100000202000000C084048000000000000F6 +S315E074B4204048000000000800000000000400080026 +S315E074B4300808004004000800D05040C00400000032 +S315E074B440808000800800000090D0000000001000AA +S315E074B4509000800000002028000000000000D0D892 +S315E074B460804000000000D000004000001010D89822 +S315E074B470C00000002030C040804000000000C09052 +S315E074B480C000000010002080008000003030509032 +S315E074B49000800000603000800080000000004040C2 +S315E074B4A000000000208060800000180028C88060DA +S315E074B4B000000000081840C00000082848F8C0C022 +S315E074B4C02BA3000000000014102020000000105090 +S315E074B4D0400000000014100010404000003030407E +S315E074B4E0408080000420200020000000042000201A +S315E074B4F0200000040024404040808000000020408A +S315E074B5004000001014040020A0000000145494803D +S315E074B510800000000000908080000400100010801D +S315E074B5200000000404108000000000041080008015 +S315E074B53080000004405000808000002420D0100079 +S315E074B54080000000040000000000000400400000D9 +S315E074B550000004100020200000000010104040009D +S315E074B5600404100020C0C000000400202000000481 +S315E074B5700404000000000000000400000000000065 +S315E074B5800000000000000008080000202000000809 +S315E074B5900040480000000000004040000000000049 +S315E074B5A000000000000000000000004000000400FD +S315E074B5B0000080C040000000000080000000000031 +S315E074B5C00090D080800000000000800080000000C1 +S315E074B5D00000200000101050504080000000000071 +S315E074B5E080C08000000000585800C0000030200081 +S315E074B5F0C040800000103000400080000000100061 +S315E074B600B000800000303010B000800000303010A0 +S315E074B6109000800000000000000000101010B020C0 +S315E074B620E00000000060A0408000000000101040C0 +S315E074B6304000000808B8B8C0C0FC6800000080107C +S315E074B64014142020000010101010000000002404D0 +S315E074B65040004000000010207070000004040000F8 +S315E074B66020200000040420242020000000006074E0 +S315E074B6701000000000002020604000001414200038 +S315E074B68000000000140450B040000000101050D0C8 +S315E074B690400004041004104040C0000010009010F4 +S315E074B6A040C0000014141090000000001000808068 +S315E074B6B00080000070704020808000002000002030 +S315E074B6C000001010345420200000141418182020A0 +S315E074B6D00000101010100040040434143030800060 +S315E074B6E0000024040028000000000004002000008C +S315E074B6F000000C0C002000000400000000000000B4 +S315E074B70000000000000000000C004048000000004B +S315E074B7100808404840000000080810504000040043 +S315E074B720080808400000040408009880808004003B +S315E074B7301010909000800800104890D00000080027 +S315E074B7401878D0300000080868684060000000107F +S315E074B7508088000000000000D05000000000001057 +S315E074B7608888404000000020A030000000003020AF +S315E074B770809000000000000000808000000060609F +S315E074B78050000000000030305080000000000000DF +S315E074B79040000000001000A0800000001010A0A877 +S315E074B7A06060000010101018008000000020B8A936 +S315E074B7B080403B360000001010101020200000007E +S315E074B7C000100000000000000000000000000020EF +S315E074B7D0107070000000002020202000000000049B +S315E074B7E004202000000000746080900000000020B7 +S315E074B7F0204040000000108090000000000010908F +S315E074B80040004000001010C040004000000010806E +S315E074B810904040000000104040004000000000905E +S315E074B820900000000000109080800000007070208E +S315E074B830408080000040400000000010101010208E +S315E074B84020000010100800202000001010000040B6 +S315E074B850400000000010300080000000002020004E +S315E074B860000000000420000000000008042000002E +S315E074B8700000080000000000000000000000000066 +S315E074B88000000848400000000000084040404000C6 +S315E074B89000080048484040000008004048000000A6 +S315E074B8A0000010000000000000101010900000006E +S315E074B8B000405090D000000000585070F000000036 +S315E074B8C0080048404000000000101000000000101E +S315E074B8D01050D0400000000000080800000000206E +S315E074B8E03020A0404000000030000000000000005E +S315E074B8F010000000000000200000D08000000070FE +S315E074B90070107080000000000020600000101010BD +S315E074B91010004000000000A82800800000101010FD +S315E074B92018000000000000B8B8C08076EB00008014 +S315E074B93000000010606000001010001000000000AD +S315E074B940200040000000000020306020808000006D +S315E074B9500000202000000000202400000000000009 +S315E074B9606020A0A08080000000002060000010101D +S315E074B970A0800080000010009090A080000010006D +S315E074B980808080800000100490C000C00000100029 +S315E074B990901040C00000101000800000000050407D +S315E074B9A0800000000000202000008080000000007D +S315E074B9B010000000000000406060000000001010FD +S315E074B9C020200000000010104040000010102020DD +S315E074B9D000000000000008280000000000040000D9 +S315E074B9E0000000000004000000000C0800040000E1 +S315E074B9F0000000000000000000000C004048000059 +S315E074BA0000000008000800000000080000000000C4 +S315E074BA1004000800000040400000080058100000D0 +S315E074BA2004000000909000800800000050100000B0 +S315E074BA300000181090A08000000820281020000054 +S315E074BA4010109098C04000001000908000400000F4 +S315E074BA5000108888800000001020C0C080000000BC +S315E074BA602020D0908000000000008080808000005C +S315E074BA706040B000008000003030908000800000AC +S315E074BA804040000000001000A0808080000010108C +S315E074BA90A0C8A020000010100088008000000020DC +S315E074BAA0C8E881805CDB0000000000101060600074 +S315E074BAB000101410200000000000000010000000C8 +S315E074BAC00030200000808000012028A06000800003 +S315E074BAD000000080000000000034600010000000E8 +S315E074BAE002000000800000000080908000000000EA +S315E074BAF01080A000200000101480A0000000000058 +S315E074BB00108080000000000010002000000001009A +S315E074BB1008808080800000001050008000000020C3 +S315E074BB200000000080000200101080000000000099 +S315E074BB30002020000000000800002000000004003F +S315E074BB4020404000000000002000000000000020BB +S315E074BB50200000000100080040000000000800001A +S315E074BB600000000000040000000000000200100065 +S315E074BB70800000000040400000000000000000006B +S315E074BB800000000004000000000000000000000057 +S315E074BB900000000000004000000001000810900062 +S315E074BBA000000000005010808000001010A090008B +S315E074BBB08000020050108000000000909000800029 +S315E074BBC0001010A090C080000000048880008000FF +S315E074BBD0002010808000800000003080C00080006B +S315E074BBE00100188000008000002020909080800082 +S315E074BBF0003030901080800002001020A000001009 +S315E074BC00108020208000000000E06000A00000109A +S315E074BC10049010000000000000B8B08080AA110003 +S315E074BC2000000004100420400000000404202000FA +S315E074BC300004040070000040000000004010400062 +S315E074BC400005003C00D0C0000004304400900000C1 +S315E074BC5004003044000000000402400410C00000F8 +S315E074BC60041044006000000000144010002000003E +S315E074BC701004042020000004142000204000040076 +S315E074BC80000020C0000004010408000040800000A9 +S315E074BC902000200000000000042440800000000220 +S315E074BCA04010408080000000000400200000040082 +S315E074BCB008400060000000040420600000040400F2 +S315E074BCC00060000000002400200800400001000C21 +S315E074BCD0284000000000044860000000000C4000AA +S315E074BCE000000000000240504080000004000000A4 +S315E074BCF000000000000000084000000000041C087A +S315E074BD0040000004000000400000040000089000B9 +S315E074BD100080000500088800408000080008D00014 +S315E074BD20008000084020802080000002001000A0FF +S315E074BD3000000008800800000000000020A0000059 +S315E074BD400000000480082040000028000000008005 +S315E074BD50000010208000008000010018A800C000D8 +S315E074BD6000006010800080000000002020808000C9 +S315E074BD700002005020A0000000002080A000000017 +S315E074BD80000008A0000000000004884020000000C5 +S315E074BD9000200028000009E300000000140060E0C1 +S315E074BDA0000000001410204000000000B0100000F5 +S315E074BDB0000000003010004000000104182040002C +S315E074BDC00000000050700000000004000030000025 +S315E074BDD0000006007020800000000014600000007F +S315E074BDE000000000204000000000041060400000E5 +S315E074BDF000001010404000000400200040000000E5 +S315E074BE0001002820C000000000040000800000004B +S315E074BE100000402000000000020430208000000092 +S315E074BE200000200000000000000000000000000098 +S315E074BE3004006000000000002000008000000000A4 +S315E074BE40000000000000010008004000000004004B +S315E074BE500040000000000004004000000000020002 +S315E074BE601000800000000808400000000000040094 +S315E074BE7040000000000004086000000000000000BC +S315E074BE80000000000000100000000000010018002F +S315E074BE904000000000085000000000000800004068 +S315E074BEA0000000000200205080000000181000A07E +S315E074BEB000000000000040C0000000001400608034 +S315E074BEC00000000010308000000000001000400008 +S315E074BED0000001001810400000000000107000001F +S315E074BEE00000000040400000000002005040800066 +S315E074BEF000000010400000000000181040A0000090 +S315E074BF0000001400E040000000001000C08000183B +S315E074BF10BB000083831C1C606010100303181C4074 +S315E074BF20600000070738384040000007073838C01B +S315E074BF30C000000607303880C001010E0E707080B4 +S315E074BF408001010E0E7070808001010C0E6070002D +S315E074BF508003031C1CE0E0000003031C1CE0E0000B +S315E074BF60000343181CC0E0100047073838C0C0000F +S315E074BF700007073838C0C000004607303880C00173 +S315E074BF80410E0E7070808041010E0E7070808001DB +S315E074BF90010C0E6070008043431C1CE0E00000431B +S315E074BFA0031C1CE0E000000303181CC0E00000075B +S315E074BFB0073838C0C0000007073838C0C00000062C +S315E074BFC007303880C001010E0E7070808001010E5A +S315E074BFD00E7070808001010C0E6070008023031C6B +S315E074BFE01CE0E0000003431C1CE0E000004303187F +S315E074BFF01CC0E0000047073838C0C0000047473827 +S315E074C00038C0C000004607303880C001410E0E705B +S315E074C01070808001410E0E7070808041410C0E601C +S315E074C02070008023431C1CE0E0000043431C1CE0CA +S315E074C030E000000303181CC0E0002007473838C04E +S315E074C040C0200047073838C0C00000460730388043 +S315E074C050C021410E0E7070808041010E0E707080AA +S315E074C0608001210C0E6070008003031C1CE0E0006C +S315E074C0700042221C1CE0E000000202181CC0E00032 +S315E074C0800006063838C1C1202534000020000014AB +S315E074C090400014100080100000000000000400004E +S315E074C0A0040400000404000004042000840020005A +S315E074C0B00004000004040040000000000084000056 +S315E074C0C000000000800400000004008004000020EA +S315E074C0D0000080800400002000008080001040048E +S315E074C0E0100084840000040000108000101000002A +S315E074C0F01010840410000404005004003010000092 +S315E074C1005000048400208400000084042060000051 +S315E074C11020200404202004004020041C2000100089 +S315E074C12000000010000410380404382004000020D5 +S315E074C1304404202004000020000420200400002091 +S315E074C140000C202004040000040000000008000035 +S315E074C150000C00000804200004040000000800003D +S315E074C1600008404000080000000000440008040491 +S315E074C17000000000080044440800040408000400B9 +S315E074C18000000000100008044000000000100000E9 +S315E074C1904040080810400000002008002000000815 +S315E074C1A0000000104040080840001800000000102D +S315E074C1B00000100000402020000020004000000035 +S315E074C1C00000100040000020000020400000400005 +S315E074C1D00000401000002000000010000000000085 +S315E074C1E0001000000000000000004020000820005D +S315E074C1F000084000080800001008800000200000D5 +S315E074C20030531E00800000000000000000000000B3 +S315E074C21000000000000000000000000000000000C4 +S315E074C22000000000004080000000000000000000F4 +S315E074C2300000000000000010000000000000000094 +S315E074C2400000000000000000000000000000000094 +S315E074C2500000000000000000000008000400000078 +S315E074C2600000000000000000000000000000000074 +S315E074C2700020000000000000000000000000000044 +S315E074C2800000000000000000000000000000000450 +S315E074C29000800000000000000000000000000000C4 +S315E074C2A00000000010000000000000000000000024 +S315E074C2B000000000000000000000001000080440C8 +S315E074C2C000000020000000000000000000000000F4 +S315E074C2D00000000000000000001000800000000074 +S315E074C2E000000000000000000000000000000000F4 +S315E074C2F000000000000000000000000000000000E4 +S315E074C30000000000000010000000000000200000A3 +S315E074C31000000000000000000000000000000000C3 +S315E074C32000800000000000000000800000000000B3 +S315E074C33000000000000000000000000000000000A3 +S315E074C3400000002000000000000000000000000172 +S315E074C3504000000000000000000000000000000043 +S315E074C3600000000020000000000000000000000053 +S315E074C37000000000000000000000D5270010400017 +S315E074C3800010000000E00000000000000000000063 +S315E074C390803000000000400014300080040020006B +S315E074C3A024100014002010100000500420400000F7 +S315E074C3B0004000040000000000000010044000008B +S315E074C3C0003044102000300000000000000000003F +S315E074C3D0000004001000001080000004300490C0D7 +S315E074C3E024140020041000800000000000002000E7 +S315E074C3F040200060840020002020006000000000DF +S315E074C4002004100020000400949400001C200040D6 +S315E074C4101060100008008004008010041014006C92 +S315E074C42000000000045820004000040400240000CA +S315E074C430001000041020004C00400C0800100000AE +S315E074C440000020080000000000000000004000002A +S315E074C45000000808801008000800000000000000D2 +S315E074C460001000000000180000980000400800006A +S315E074C470000000002000880000000800000008802A +S315E074C48008C028000000804008000800000008107A +S315E074C4900008000008002020000040000020000092 +S315E074C4A00000000088882000800000001000000072 +S315E074C4B088882000800000002000200080000000B2 +S315E074C4C0002040209000080000000000400040205A +S315E074C4D0000000000080000000408000200800207A +S315E074C4E0000068800000000040008000000000004A +S315E074C4F0000000489800400004000000000000A01E +S315E074C5000000000000000000008000100000004001 +S315E074C51000040000008400200020001010000010C9 +S315E074C5200010005030044000000040000004400059 +S315E074C53000000020000000000000502400201020BD +S315E074C5400000000004000000001004203000040025 +S315E074C5502080040034000090A0041000002400142D +S315E074C56000800010000020004010200084002000AD +S315E074C5700000000030000400000010840060000039 +S315E074C580A00010840000200000C04020000000805D +S315E074C5900000000000141044084000000004200C61 +S315E074C5A080002004040004080040000004103000F9 +S315E074C5B04800482400000000000000200800001035 +S315E074C5C000C0000000000440000000000080001875 +S315E074C5D000000000400000000000000000000018A9 +S315E074C5E00000009000000000400000000020000001 +S315E074C5F00000000000000000088000400000000019 +S315E074C60080488008000000900000000028000000C8 +S315E074C61020008000080000A00000000000A02008B0 +S315E074C62000000000180000000008200000800000F0 +S315E074C63040010020000800000000204010000000C7 +S315E074C6400000000000000000000000000000000090 +S315E074C6500000000020002008200000080000000010 +S315E074C6604000800000000000000000001831001453 +S315E074C67000000020100000005000000000040008D4 +S315E074C6800044006000040004001000003000104014 +S315E074C69000440020000004200000000400000000B4 +S315E074C6A00400001000000010000000000014804038 +S315E074C6B00000000000001000001000000000000000 +S315E074C6C0004000000000000000100400200000009C +S315E074C6D004104004000000000000080000000000A0 +S315E074C6E00020000004006000002000200000C0006C +S315E074C6F000002000000000040010040000001C008C +S315E074C70040180004100008000000048010000000C7 +S315E074C7100034000000008000500440000000000077 +S315E074C72020800000300000000000040000080000D3 +S315E074C730100000100000002000000000000000005F +S315E074C7400000000008080000000800300000040043 +S315E074C7500000000018000000004000080480400C4F +S315E074C76000000000000000008800000008000000DF +S315E074C770080000A00800080080000000000810000F +S315E074C78008001000080000002000000040000000CF +S315E074C79040200000001008008080000000000000C7 +S315E074C7A00000800880000000000020000000800087 +S315E074C7B0000800000020800008100080006000007F +S315E074C7C0C0200000000000008000008040000000EF +S315E074C7D000000040208010000000000020000008E7 +S315E074C7E000004008003BEF0080C0000000006000DD +S315E074C7F00000200000000000000040004430080003 +S315E074C80004402400402010000000000020040020B2 +S315E074C8100000204400000004000004400000000012 +S315E074C8200080000C4000044000000000400020003E +S315E074C830880040200000000000400800000000006E +S315E074C8400000000000000040004040180004004072 +S315E074C85000082400000084202000200C440000A07E +S315E074C8600400044040001100000040000000200075 +S315E074C8704000C0004408200000280000400000008A +S315E074C8800000001000000000440008200000401082 +S315E074C8900040000008000000040000200000600072 +S315E074C8A000042000008000000000400080002000AA +S315E074C8B000000000C4000000400040080080400012 +S315E074C8C0004000080008001000000000000404089E +S315E074C8D0000020000040000000C00080C00080001E +S315E074C8E00080000000800000008000004080084066 +S315E074C8F00068008020000000004000000040000056 +S315E074C900005000000080000000C0200000808040DD +S315E074C9100000000000000080088000A00000008095 +S315E074C920000000000020008020000000080000A045 +S315E074C930002000802000004000000000002000007D +S315E074C94000004000000080000000A008002000887D +S315E074C95020000000000000A800000088400092B3A8 +S315E074C960001004140020040000140050000000605D +S315E074C9700044000000000094000000401000000035 +S315E074C9800000000000000000000000000020042009 +S315E074C99040000000000000044000000000000000B9 +S315E074C9A000000004000000004040000400000004A1 +S315E074C9B020008000408000000C0014040000000891 +S315E074C9C00410808000001080080000000000080059 +S315E074C9D00000C000008000084000800820000420A9 +S315E074C9E00024402000008C100024002010000080F9 +S315E074C9F000400000400004A0004000884000003081 +S315E074CA00408800C000040000200C82284000C82042 +S315E074CA104000000000000484000000400040000470 +S315E074CA202008000020004004080800000C000010F4 +S315E074CA302000040000000000000000000440000034 +S315E074CA408000880000804000000000400000008004 +S315E074CA5000000000080040000000000000400000F4 +S315E074CA6000400080001008008000800010800020E4 +S315E074CA70000000C028000000800000401010001084 +S315E074CA80802810804000300000000808000088000C +S315E074CA900000400000000000000880000000000074 +S315E074CAA000480080000000000000404000C0002004 +S315E074CAB080000000000040008040A080000000007C +S315E074CAC00800000000000000000000800000A000E4 +S315E074CAD000000000000000827C000050100020007E +S315E074CAE060001400104000006000440000400470D0 +S315E074CAF0801C00441020400010000000000020005C +S315E074CB0020000000002004202004000044000000FF +S315E074CB1004400000000400400040000000040000EF +S315E074CB206000400844200000042040004800208053 +S315E074CB300C00000000000000400C0090080010009B +S315E074CB4040000000002400080020C0000824C0044F +S315E074CB504088000004480000013040204020000C6A +S315E074CB6000102000B04040000080680000004004DF +S315E074CB702080004018800000600000044008000433 +S315E074CB800040C200084040800020000000200004FD +S315E074CB900084000400204000002000006000400093 +S315E074CBA0042808000804804000300440080080002F +S315E074CBB000400040080440088010000000004480F3 +S315E074CBC0000C000060000040000040800088804057 +S315E074CBD0800080000000C00000000080800050806B +S315E074CBE00048200000908020000000008040000093 +S315E074CBF00080000000109000008008D000A0009033 +S315E074CC00004000000000000800008800A00000005A +S315E074CC10008008000000006000000068000000006A +S315E074CC2020002000C000608080000000000000202A +S315E074CC30008020008040000088000000A8002000EA +S315E074CC4000080000008000A00028000000090040F1 +S315E074CC5040AB000024104040001040200012005009 +S315E074CC6000140000500044000040142040300400DA +S315E074CC7060000004402000001000102400104004FE +S315E074CC800060000000440000400000600400000002 +S315E074CC90040004400004000040000060080008241A +S315E074CCA0580000000000000C0000000000040020A2 +S315E074CCB000000000444000100000040480000004FA +S315E074CCC00050000000680010000020C010002480AE +S315E074CCD000040800400400641000000480448000EE +S315E074CCE0000004800020080020000000000C001002 +S315E074CCF000800800244008006008004000E400401A +S315E074CD008400000000002400008040002000400001 +S315E074CD10C06000400C0040004408002C0000440051 +S315E074CD20000440E00400004C0000000C0000100019 +S315E074CD304808004008400008404000400080084031 +S315E074CD400000108000804000800400080000C000ED +S315E074CD50C800480088004440006000200088400015 +S315E074CD6048000848004000806808001048E4004025 +S315E074CD700000008008024010C80080005888004017 +S315E074CD809040080000804050086800800000808071 +S315E074CD900000A00000204080404008800840000069 +S315E074CDA048000080200040400040208060208000E1 +S315E074CDB080880020484028280000600048008000F1 +S315E074CDC018C000000004080840EF400000000000AE +S315E074CDD00000000020000000400004000004000091 +S315E074CDE000000000000000000000000000000000E9 +S315E074CDF00000240004400020080000000004000045 +S315E074CE000000000040000000000000400040040004 +S315E074CE1008002000402000082040001010000000A8 +S315E074CE200008000000000000000000000000400060 +S315E074CE300000000400000020240000100000080038 +S315E074CE4018006000403000200080000800400004B4 +S315E074CE5040040000000000800000040000000000B0 +S315E074CE600000004000000800000080480000000058 +S315E074CE701000080000008000800000000000000040 +S315E074CE800800800000200000002000000040000040 +S315E074CE90040000002840000800000400A010000010 +S315E074CEA004000000040840000800000008000000C8 +S315E074CEB00000400008400000004000000080400090 +S315E074CEC0008000000010000000A0080000080000C8 +S315E074CED00000000000000000084000082000000088 +S315E074CEE02048000010000000000000000000000070 +S315E074CEF00000000040904000800000000000000048 +S315E074CF00000048000000000080000020008020003F +S315E074CF1080200840080000200000000000000000A7 +S315E074CF2040000000006080000000800040000020A7 +S315E074CF3000200020480000000000400000001800B7 +S315E074CF400108AA2B008004100000001000004000C5 +S315E074CF5000000010000000004400001004004004CB +S315E074CF60080020000004002000001000102000508B +S315E074CF70000000000000000000040000000400004F +S315E074CF8000000400040000200000400000000000DF +S315E074CF900010000040000000000004004020400043 +S315E074CFA0002000000000000000000008000080007F +S315E074CFB000000000C0000020400000000000800077 +S315E074CFC000000004000000000000200040000000A3 +S315E074CFD04000000000000000200020000000000077 +S315E074CFE0440010000004000000002000004000200F +S315E074CFF044084000000000200420004000000000C7 +S315E074D000004080400008000040004000000400003A +S315E074D01004000000480040000040000000000000EA +S315E074D020000000000800000000000000000000009E +S315E074D030000000000040000000000004000800004A +S315E074D04000004800000010400040004000002088C6 +S315E074D0504000000000004000000080000040080826 +S315E074D0606000080000000800004080804000000076 +S315E074D070004000000000080040400000000080000E +S315E074D08000200000800000400000400000008000A6 +S315E074D0904008000000802000000000482000802046 +S315E074D0A000000008000020080000000000000000F6 +S315E074D0B0000000000000004000000086E900200047 +S315E074D0C04000400000400000021010000000805054 +S315E074D0D000000000004000201020004000000040E6 +S315E074D0E00000002000000000000044004020200002 +S315E074D0F00044004000002000000000000000000032 +S315E074D100000000240000080000000408000000008D +S315E074D110000000001000000000040000000044005D +S315E074D1200000102000000400000000000000000071 +S315E074D13000000000000000000400240040008000AD +S315E074D140004010000000800400040000000080002D +S315E074D1500408000000000000000004000000200045 +S315E074D16000480040001000000000040000000000C9 +S315E074D17000000000040000000440000000200400E9 +S315E074D1800000000008400000004040000000040871 +S315E074D190000008000000000000100040000040009D +S315E074D1A000440840000000004088000400100010AD +S315E074D1B08000000000000000804000000040800015 +S315E074D1C004000000002800000000000000000800D1 +S315E074D1D04000000008000000800400400800800061 +S315E074D1E042001008000008008008100008400000A3 +S315E074D1F0800008102000000000800000000000009D +S315E074D2000080000000000000000040800000000084 +S315E074D210400000000000000000008000200008804C +S315E074D2200040000840000000800018008000000004 +S315E074D230000400408AB2005000000020000020A4E0 +S315E074D24000001000004000002000002410000000E0 +S315E074D2504000000020000000000000000000000014 +S315E074D260000420040000000040200000402000007C +S315E074D270200440000000400000200000000004008C +S315E074D2800008004000000008000060000000040090 +S315E074D2900000000004000000800000000000400070 +S315E074D2A0000018000000800000000000800000000C +S315E074D2B000000004480400000000000080082040DC +S315E074D2C000000000000040044020004000008000A0 +S315E074D2D01000000000000420000000000040000080 +S315E074D2E000040020000000000800000000000000B8 +S315E074D2F040000000000000000000000440004840C8 +S315E074D30000000800000040400040000000040000F7 +S315E074D31000004000000004000000000000008008E7 +S315E074D320800000400000000400100C800000100033 +S315E074D33000400000000000408000000000002090E3 +S315E074D34040000800000000000000480040000000B3 +S315E074D350000000000000000000480000000000200B +S315E074D36000000000001000000000000080800080D3 +S315E074D37000000080000000008000008000200000B3 +S315E074D38020000088000020000880000000200000D3 +S315E074D39008800080002080000000000080C000004B +S315E074D3A0C0008000008000400000000800282E00C5 +S315E074D3B00080800000000000800000400000000053 +S315E074D3C090000000000004102000000000000040FF +S315E074D3D0000000002000000420000000002000107F +S315E074D3E000000000000000000000200004000000BF +S315E074D3F0000000402000000000000000000000086B +S315E074D400000008000400400008000000000004006A +S315E074D410000040100000000014082000880000009E +S315E074D420085000080000000400000000200000001E +S315E074D43000040080000000000000002000000000EE +S315E074D4400008000420080000000000000400200822 +S315E074D4500000209000000000200028000000200852 +S315E074D46000002000400008000020040000000800CE +S315E074D4700008004000000000000000000000080002 +S315E074D48008000000004000000000000000000000FA +S315E074D49048000400000000080000C000000080009E +S315E074D4A000800000400000008000080010000000CA +S315E074D4B0001020000000001000000000004000088A +S315E074D4C000003000008008000040001000000000FA +S315E074D4D000000000000000100000200000000020A2 +S315E074D4E0200000000000000000008000000000083A +S315E074D4F0000000080020004000000000000000006A +S315E074D5000020000020400008000000000000000039 +S315E074D5108040800000000000080000080000000061 +S315E074D520000800018100A343000000400000204091 +S315E074D530000000100004000000004000000000003D +S315E074D54040000040000000000000200400000000DD +S315E074D550004000006000441040000000002000001D +S315E074D56004004000200064044020400004000000F1 +S315E074D5700020440000200000000044002000002049 +S315E074D5800800082000004040000000800008408049 +S315E074D5901000000000000040004000000000008021 +S315E074D5A00040040060000000000020000004004019 +S315E074D5B080400400800000048000004008540000AD +S315E074D5C0488020402C00180008000000000040004D +S315E074D5D0000008004000000000080000042000403D +S315E074D5E00000000000004000000040000000000061 +S315E074D5F0000000040000400000080000000800007D +S315E074D6000040000008000400400000000000000034 +S315E074D610000040004000800000400000000400006C +S315E074D6200000000000008040100000004000800808 +S315E074D6304000000000000040800008008000000008 +S315E074D6400000000000000000000008000040000038 +S315E074D65000000010000008000000088000000000D0 +S315E074D6604000004008000080000000800000400098 +S315E074D6700000000000000000000008400000000008 +S315E074D68000800000000000000000204000402008F8 +S315E074D6904000000000000000088000000000004721 +S315E074D6A0CE0084002000000000000000000010009E +S315E074D6B000200000000400000000000000000000EC +S315E074D6C000000000000000000000000000001000F0 +S315E074D6D000202000000000000000000000000000B0 +S315E074D6E000000000004000000000000000000000A0 +S315E074D6F000400000004040000040200000000000B0 +S315E074D700080000400860008000000000000400008B +S315E074D71000000400400004082040000000000020DF +S315E074D72020400040204008400000000040000440D3 +S315E074D7302000000000000020000008000000200027 +S315E074D7400040000000040000000400000020000017 +S315E074D7500420002000400000000000006008000083 +S315E074D7600400000000440000000000000000000017 +S315E074D770000400000008000000480000400000407B +S315E074D7800008040008000080400000000010000853 +S315E074D79000100000000000000000000000000040DF +S315E074D7A0000010000010400000000000004000007F +S315E074D7B0100000000000200880400000800000880F +S315E074D7C0800000009000080000000008008000005F +S315E074D7D0208000000000000000000000000000004F +S315E074D7E00000000000000000400000000088000017 +S315E074D7F08008400000000000000000000000000007 +S315E074D8000000000000000000000000008000884076 +S315E074D81000000008088008409848000040000000B6 +S315E074D820000000100000000010000000000020005E +S315E074D8300400100020000000000000000000240036 +S315E074D840000000000000004000000000000000003E +S315E074D850006000000000000000000000000400000A +S315E074D86000080000000040000000000000000420F2 +S315E074D870000000000000000004000000000000004A +S315E074D880000000000010001000000000100000000E +S315E074D8900400000000040088000400000400000096 +S315E074D8A0000008840004008008004080040000083A +S315E074D8B010100008044004002450000000002408FE +S315E074D8C000000044000000000000000000000004B6 +S315E074D8D020000000000000000C00040000000000BE +S315E074D8E00440004000000000040000004000000016 +S315E074D8F00000000000000040000000000000048406 +S315E074D9000000080000008000500000400000840021 +S315E074D910100000001000C000104010000068800085 +S315E074D9200000400000000080004000C0000000409D +S315E074D93000002000000000000080000000000000ED +S315E074D94080000000000000800000008000000000FD +S315E074D9500000000800000000000000000000000065 +S315E074D9602000800000000000800008008000002095 +S315E074D970000000000000000000000020000000002D +S315E074D98000002000000008200000400000000000B5 +S315E074D99000212A00000040004000402040000000C2 +S315E074D9A00000400000000004100000600400004025 +S315E074D9B0004020000000000000000000200000008D +S315E074D9C0200000000000000000000000004000009D +S315E074D9D00000000040000000040000040000200085 +S315E074D9E000000820000000080004000000000000A9 +S315E074D9F000000000000020006080000004000000C9 +S315E074DA0000000080000000880000000000080000AC +S315E074DA1000408008000000200800A000000080009C +S315E074DA2000008020000000000000004000000000BC +S315E074DA3000000400040000400400004000000800F8 +S315E074DA4040040000002020080000002020000000B0 +S315E074DA5040000000004000000000000000000000EC +S315E074DA6000400000000000000040000000000004D8 +S315E074DA700004000000004000000080000800001070 +S315E074DA800000100000004000000800900000001044 +S315E074DA9000800000004010000080000000000000DC +S315E074DAA0000008000000000000800000000820006C +S315E074DAB000000008000008000000080000202000B4 +S315E074DAC000000000000000088008000000C00008A4 +S315E074DAD0802020088000000000000000000000089C +S315E074DAE0000000000000080000802008002000000C +S315E074DAF00000800000800000A000000000880000A4 +S315E074DB0000408000008000480000BD3E0000100028 +S315E074DB1010800000000000000000401000000000CB +S315E074DB20100000000040000000000000002000002B +S315E074DB300004000020000000000000000020000047 +S315E074DB406040000004000440000040002000000033 +S315E074DB5000000000200040000000000000002000EB +S315E074DB6000400800040000000800000004C0000043 +S315E074DB700000004000900000000800004800000427 +S315E074DB80000000044000A42040000060000000444F +S315E074DB90000420004028004020002000004020249B +S315E074DBA04000000000000000004810002020000043 +S315E074DBB000000000042000000020000000040000C3 +S315E074DBC0044000040808400004000000080C00004B +S315E074DBD00C00000008080000040000004000000487 +S315E074DBE000000000000000000008000000000400CF +S315E074DBF008000000000000000080004000081400E7 +S315E074DC0000008000000000000000000080000000BA +S315E074DC10000010800040102000000000000000802A +S315E074DC20080800081000000000000020000008004A +S315E074DC304000080000000000000000000000000042 +S315E074DC400000008040000080000000000028000012 +S315E074DC508000C020002000200028000000000000A2 +S315E074DC6000400000000880008000200000000000F2 +S315E074DC7020000000800000000000000008000000A2 +S315E074DC800000009F010080A02000004000000040DA +S315E074DC90000000000000304000200020002000005A +S315E074DCA000202000600000000000002000204000FA +S315E074DCB00400001020000000000000204000200452 +S315E074DCC000040000000000000000000000000000F6 +S315E074DCD0004000000400400000000000000800005E +S315E074DCE000000000000004008000000080000000D6 +S315E074DCF000008000000880000040000080204000A2 +S315E074DD0000000004000000200000000000002080F5 +S315E074DD10000000840000008808800000080080008D +S315E074DD2008800000100004000000240000000000D9 +S315E074DD300440000000000004000000000000000041 +S315E074DD40000800000000000400000000000000006D +S315E074DD50000000040000000008000000000000005D +S315E074DD600008000800404000000000000040C000C9 +S315E074DD7000001000000080000000100000888000A1 +S315E074DD808000400008808000800000008000000071 +S315E074DD9000000000000040080000000080008000E1 +S315E074DDA000800880000000008000804000000000D1 +S315E074DDB080008000800008800000000000000040C1 +S315E074DDC000000800000000400000000000000000B1 +S315E074DDD00080000080000040000000008000000029 +S315E074DDE000000000000040000040000020004000F9 +S315E074DDF0400000880040400040000080A39200008C +S315E074DE000000000000000000000040400010000028 +S315E074DE100000000000000404000000400000000060 +S315E074DE2000000000040000000040000000400040D4 +S315E074DE300000400000000000000000000000000048 +S315E074DE400000000004000004000000000000000070 +S315E074DE50000000080000000400000020000000003C +S315E074DE6000000820080010000004000400100004FC +S315E074DE700000000080000000200000000000004860 +S315E074DE800000044000000000000000204004000090 +S315E074DE902000000000902000000000004000001008 +S315E074DEA048000000400000480400004400000400FC +S315E074DEB000000000000040000000200400000000A4 +S315E074DEC000000040000004000000000000080000AC +S315E074DED00000000800400000400000000000000060 +S315E074DEE00040000040000000000000000000400018 +S315E074DEF00010400000000010000000000000000068 +S315E074DF0000000000601000000000400000200000E7 +S315E074DF1000400020000040000000000000001000F7 +S315E074DF20000000000080080000000000000000000F +S315E074DF30000080000000000000000000000080087F +S315E074DF40000000000000080000000000000000006F +S315E074DF50800040000000000000080080000000001F +S315E074DF6000002000400800000000000000000000EF +S315E074DF700020804000C99A002010204000402040D4 +S315E074DF808440005000100050007000242014204497 +S315E074DF900020204040000000200000000000002027 +S315E074DFA0200000202450100020000020204060044F +S315E074DFB0006404202440440040004420200400000F +S315E074DFC0004040004000080000480048004C4C0007 +S315E074DFD008000000002400088040281080600010CB +S315E074DFE010002C10088040084010000880080400D7 +S315E074DFF0400000602C40044000000040C0040088EB +S315E074E000200420C0402440840468600C64188800AE +S315E074E010180048040C50284044008010400040002A +S315E074E020006C600C042024000820002000204000CE +S315E074E03020002804004400004C00004044000840DE +S315E074E0400040040800440840400800400840044882 +S315E074E05000000040400040004008040800000080D2 +S315E074E0600088900090400000048054081480881062 +S315E074E0700010008050800810100000E0008030C06E +S315E074E080C010004840000800000800F8C02808C026 +S315E074E0904000801080000000000048000040100836 +S315E074E0A00008208080002090208800808000004056 +S315E074E0B00000400000088008800880082040400086 +S315E074E0C0000000880008200020C880000000A0003E +S315E074E0D0088000000000800000C0C00000C000207E +S315E074E0E00880800000C800480040800140804DAE42 +S315E074E0F00050000040408020405000500010442002 +S315E074E1004050200020000400642400004000604079 +S315E074E11020200000042000002060006004244050A9 +S315E074E12000204020004000400404600020040060A9 +S315E074E1300040000000000400244000006000000875 +S315E074E14024200004084008000C0020080000004069 +S315E074E150004080208000A800D0800004000010C039 +S315E074E1601840148800840040844880004048004485 +S315E074E170080C004004080060884C0044A02C0000A1 +S315E074E18084044888045800984008804C2028040881 +S315E074E190000C30004408600400080404484400009D +S315E074E1A000240060000020640008000C6000480051 +S315E074E1B00408000C00400000000840040000000859 +S315E074E1C040080000000040000000404004400800A1 +S315E074E1D000440040088044C000000050000840102D +S315E074E1E0004C9090400000108000809040400040C9 +S315E074E1F0905080B040009008C010002040800060CD +S315E074E2000000C80088C02830C800082000800800D4 +S315E074E210A0080010C8C8000008002010A000000084 +S315E074E220A000080000800000408000800080200884 +S315E074E230A080080080006000A0200028000008008C +S315E074E2400800C0004800002800200800080020806C +S315E074E25000408060004000000808C008002000000C +S315E074E26008884028400000BF30000000001020609D +S315E074E2706000040030101044C00000000430300028 +S315E074E28040000004202020404000000024202000AC +S315E074E2900000000024607020000000000060600050 +S315E074E2A00000000404604000000000000440000028 +S315E074E2B00000000C004040000400000808444020C0 +S315E074E2C000040408280040000004040038C0C000BC +S315E074E2D00000041030808000000C0C5040808000F8 +S315E074E2E004040C6060A08000000C0C646000000004 +S315E074E2F0000C0CE0E0000000000C0CE4E0200400EC +S315E074E300201808CCC0200404043878504000000477 +S315E074E310042C286840000804642020000000000CE7 +S315E074E3206C6060400000040C0C4040000000040C7B +S315E074E3300C40404000000404084840000000080C0B +S315E074E3400040400004000008484C400004040408FF +S315E074E35008C0C0000000001010C0C0800C0400109B +S315E074E360108880C0000010505080808000000070DB +S315E074E370508000001000886060000080000808E8A3 +S315E074E380E0000000000808A0A0000000080808C823 +S315E074E39080000000002030A0800000000008888023 +S315E074E3A0C08008000000A08880C008080060E08093 +S315E074E3B0800000080828A0A080000008884060005B +S315E074E3C00080080888A0A0A00000000080E0E0803B +S315E074E3D00001000888C8C0800000000828C8C1C0D1 +S315E074E3E08CFB0080000000004020000000101050FC +S315E074E3F050002000000424103000000404202000A3 +S315E074E40000010008004001000800400000042430C8 +S315E074E41030000000000000000002001404840600CE +S315E074E42050008000006444000000000C0C60600042 +S315E074E4300000002008484040400404242428084092 +S315E074E4404004040404C0C0C1C00800540580888038 +S315E074E450C00C0448408080808004046828A08082D0 +S315E074E460801C0CCC6E405000800008EC2C60E00000 +S315E074E470000C0CC40CA08000001818C8C08080047E +S315E074E480040C2C1808000004042C2C200801000449 +S315E074E49004042520280040080824242020000004D1 +S315E074E4A004000C404002001C0CC4060010008004FA +S315E074E4B0040008004000000C0C40000040000028F6 +S315E074E4C000400040600404040480404040000010B2 +S315E074E4D01088884140040450118090800000080040 +S315E074E4E008D0508000000018789090020000082050 +S315E074E4F02A6070000018008000206000001808B0E0 +S315E074E500A0202004003818580C80A0000030301089 +S315E074E51000000000000808888881C000004001A05F +S315E074E520A0808008086060A0E08080080808088001 +S315E074E530A082801000080A201000000808A8A8A08D +S315E074E540A000000000A0A080C004000000888CC079 +S315E074E550A000000808E8A880C0D7DC00000000002E +S315E074E5600020002000001010504000C00000040499 +S315E074E5701010400004042020200000000000202039 +S315E074E5800020000000002404307000000000400009 +S315E074E59020200000040444042020000000004464A9 +S315E074E5A0202000000C0C0000606000000800404071 +S315E074E5B0400004040C04082800000404040400C8A1 +S315E074E5C0C04000000414909880000C0418400000C9 +S315E074E5D08000000448688080808000000C48400019 +S315E074E5E000800008E8E8E02000000C0C0C808080D5 +S315E074E5F00000080048C0C080000404042818000025 +S315E074E60004042C2C000000400404040420280000B8 +S315E074E61008082C2C202000000C0C00084040000058 +S315E074E6200C0C0C0C00000000040400084000000010 +S315E074E6300C0C00000000000000084040404000045C +S315E074E64004040000404000001818808080800404B0 +S315E074E6501010908080800800080010908080080870 +S315E074E6603050909000000800202820200000001010 +S315E074E67070D0602000000818A0B0202000000808C0 +S315E074E6804850808000002020203000000000000008 +S315E074E6900888800000000000008080000808606040 +S315E074E6A020A08080080808082080800000000848C0 +S315E074E6B000000000080828A8A0200000000080A040 +S315E074E6C08000010000008880804000000808A8A04F +S315E074E6D0C000985D000000000000006000000010BB +S315E074E6E000505000000000143410100000040400C0 +S315E074E6F00040200000000000042000000000002418 +S315E074E70024103000000000000040000000040424DF +S315E074E710042020000000004424202000000C0C405B +S315E074E72000202000000008404040400400040C280B +S315E074E73008000004040404D05080C000001404A04F +S315E074E740A08080040408008080008004006C0C8043 +S315E074E7508080800000484C404000000800E8286053 +S315E074E760E000000C0C808C808000000808C04880B3 +S315E074E7708004040C0C180800000000282C08000023 +S315E074E78000040404042020000008082C2C20200037 +S315E074E790000400000C404000000C08040400000073 +S315E074E7A00004000000000000000C0C4000000000B3 +S315E074E7B000080848000000040004040040C0C000DB +S315E074E7C000080880800040040000108090800008F3 +S315E074E7D0001810D0108000080840009090000008DF +S315E074E7E000602820600000001090102020000008CF +S315E074E7F018203020200000080000188080000000F7 +S315E074E800201000000000000000880880C0000000AE +S315E074E81000A0A0008008006060E0E0808008080046 +S315E074E8200880A0808000000808404000000800A826 +S315E074E830A800A0000000008000C0C000000800C866 +S315E074E84000808000000808282080C06FD80000800F +S315E074E850800000000020000000005050000000001E +S315E074E860040410100000040400000000000000001E +S315E074E8702020002000000000240410100000000096 +S315E074E88000002000000004040404000000000000FE +S315E074E8902404000000000C0C202000000000080096 +S315E074E8A0404840400004242408280000040404047A +S315E074E8B058D0404000000414A0A0000004041C4496 +S315E074E8C000008000000408288080808008084C4896 +S315E074E8D040400000080028A8E0E000000C0C8C80A2 +S315E074E8E0C0800000080840C880800000040428182E +S315E074E8F0000000002828000000000404040420201E +S315E074E90000000808040420200000080808004040BD +S315E074E910000008080C0C0000000000000000000075 +S315E074E92000000404004000000000080000084040B5 +S315E074E93000040404000040C0000000008888400021 +S315E074E94000000000908000800008101810500080CD +S315E074E950000048089010000000082068602000005D +S315E074E9601000488020200000180830202020000085 +S315E074E9701010988080800000303020908000000075 +S315E074E98000000888400000000000000080000000DD +S315E074E990606000008080080800002000808000002D +S315E074E9A048084040000000002828A000000000004D +S315E074E9B000A0404000000000084000400000080845 +S315E074E9C02861410033FC0000001010000020200094 +S315E074E9D00000004050000000000424000000000421 +S315E074E9E00400200000000000002020000000000069 +S315E074E9F000246430300000000000002000000004B1 +S315E074EA000404040000000000004404202000000414 +S315E074EA1004404020200000080040404040040400C8 +S315E074EA20000020404004040000C8C00080000004D8 +S315E074EA301400000080000048400000808004044018 +S315E074EA40404040808004044444606000000C0464E8 +S315E074EA50E4C06000000404248C0000000000108010 +S315E074EA608800000400140C10000000000400044048 +S315E074EA70000000040404042020000000002828207C +S315E074EA802000000C0800084040000004000000006C +S315E074EA900000000400000000000000000040400098 +S315E074EAA0000000080000004000040400000000407C +S315E074EAB04000001000C00000000400000010108048 +S315E074EAC000000850509010800000005010D0D00024 +S315E074EAD00000080808000000001000901000000014 +S315E074EAE00000008090000000000800481800000054 +S315E074EAF00000000010000000000000808040C000AC +S315E074EB000000008000808008000000A06000000023 +S315E074EB1000202880200000080000000000000008A3 +S315E074EB20008000808000000000C04000800000008B +S315E074EB30008008408000000808800800C0946900DE +S315E074EB40800000000000202000000000500000005B +S315E074EB50000024040000000004042000000000000B +S315E074EB600000202000000000000024243030000063 +S315E074EB70000020002020000004040404602000004B +S315E074EB80000004040000000004040000404000009B +S315E074EB90000840400000040400082000000004045B +S315E074EBA000000000C04000001404000080800000F3 +S315E074EBB04840000000000000404000400000080C9F +S315E074EBC00000000000000C04E4E40080000004048B +S315E074EBD08008000000000008000800000004040C2F +S315E074EBE00010004000000000080000000404040463 +S315E074EBF00020000000000808200000000000080063 +S315E074EC00400000000000000000000000000000006A +S315E074EC10000000000008000000000000000800008A +S315E074EC20004000000000000000400000080810D01A +S315E074EC300000000000000000008008001040101082 +S315E074EC4000800808400090500000080008000000AA +S315E074EC50000000102040000000000000188800004A +S315E074EC60000000005040000000000000302000006A +S315E074EC7000000000000080000000000020A00000FA +S315E074EC800000000040A000000000000020800000AA +S315E074EC90000040000000000000000080000000005A +S315E074ECA0000040E0A0000000000008008040000082 +S315E074ECB008088880C0001589000000000000002064 +S315E074ECC02000000000405000000000040400100022 +S315E074ECD00004040000000040400000000020000032 +S315E074ECE00000002424001000000000000000200052 +S315E074ECF00004042424202000000000442420200082 +S315E074ED0000040440402020000008004040604004B5 +S315E074ED100008000020000004040000505800400081 +S315E074ED2000140420200080080048404040000000A1 +S315E074ED300040404040808008084040404000000069 +S315E074ED400860E0E0600000040480880000000000D1 +S315E074ED50004840000000000C0C0040000000040075 +S315E074ED6004000000000404040420000000040420ED +S315E074ED7020606000000C0840484040000004000039 +S315E074ED80004040000004004008000000000000401D +S315E074ED9040000000000800080000000000080800B9 +S315E074EDA0084000000018084848000004000010807D +S315E074EDB00080000808101890108000080808489031 +S315E074EDC0D000000808080800000000001010108049 +S315E074EDD00000000010101080800000080050100041 +S315E074EDE00000002000001000000000000000004059 +S315E074EDF040000000000000000008000000606000B1 +S315E074EE0000000000080000000000000000000000A0 +S315E074EE1000080000000000000000008040002000B0 +S315E074EE20000000800000000000080800000000896F +S315E074EE30B400000000000000202000000004100070 +S315E074EE400000000004000000000000040000000060 +S315E074EE50404000010008004000000000242000004B +S315E074EE60000000000000200000000006041000808E +S315E074EE700000000024002020000000042020202050 +S315E074EE800000000C402060400000202020000000BC +S315E074EE90000400005070404000011400206080803F +S315E074EEA008004840404000000000404040400000F8 +S315E074EEB00006404040C000000008E444E0E0000082 +S315E074EEC000048800000000000004486000000000B0 +S315E074EED00400400000400000000000080000000547 +S315E074EEE004000060000000000040202000000000E4 +S315E074EEF04840404000000002001040C0000000009E +S315E074EF000008000000000008404000000000000413 +S315E074EF1000280040000008080000004000000000DF +S315E074EF200000000000010008000000800808184096 +S315E074EF30100000800808004090000000080A0810DD +S315E074EF400080000010001010008000001000101007 +S315E074EF5080800000101450D00000000010103000C3 +S315E074EF60000000000000000040400001000820603E +S315E074EF7000000000000040400000000000000000B7 +S315E074EF800000000200500080000000000000000055 +S315E074EF900000000000A0200000000004080000004B +S315E074EFA00000000808000000C378000000000000BC +S315E074EFB0606000000000840440600000000400000B +S315E074EFC010000000042000400000000001002C0046 +S315E074EFD040000000000040001000000000600040A7 +S315E074EFE00000000402005040800000000000400071 +S315E074EFF00000000000400000000000000C046800FF +S315E074F00040000400080000004000000000004800D2 +S315E074F0104000010000084000800800044080C00001 +S315E074F020000004046060008000000A046030C08060 +S315E074F030000C0000E000A00000040084C0000000A2 +S315E074F0400010040428600000041000200000000092 +S315E074F05000000060084000000120002840400000E5 +S315E074F06000002000200000000C00000040000004B6 +S315E074F07002005000800000040008404000000008D0 +S315E074F0800000404000000008040420004000040032 +S315E074F0900008C04000000000080880004000050039 +S315E074F0A0080880400008000008008000000800405E +S315E074F0B01880000000000A085040808000080008AC +S315E074F0C0800080000000001080008000001804407A +S315E074F0D0982000000000100000008000000000800E +S315E074F0E00080400001000808E0008000080000404D +S315E074F0F0800000000000080000800000024010401C +S315E074F100808000000880008000000000000000603D +S315E074F1108000000804880060800000000080080019 +S315E074F12000535D0080800010000000008000000441 +S315E074F13000200000000000303000400000000000B5 +S315E074F1402000400000010408204000000000042074 +S315E074F150600000000000002020000000000204307F +S315E074F160408000000000040000000000000400007D +S315E074F17040000000000400200000000000000000D1 +S315E074F1804000000400002000000000010418204044 +S315E074F19080000000081000800000000004200000D9 +S315E074F1A00000000200102080000000000480C0000F +S315E074F1B00000000008A060000000000C0060000081 +S315E074F1C00000043800404000000004000000000025 +S315E074F1D000050408004000000004084040000000F8 +S315E074F1E000000C400000000000020810408000009F +S315E074F1F00000000040000000000000000000000075 +S315E074F20000040860000000000008080080000000A8 +S315E074F210000000008000000100080040800000004B +S315E074F2200040500080000000003010000000000232 +S315E074F2300010008000000010102040000000001054 +S315E074F240080080000000000400A000000000002018 +S315E074F2500080800000000008000000000001000843 +S315E074F26000400000000000000000000000000020E4 +S315E074F27000800000000A00104080000000000000DA +S315E074F28000000000000000E00000000000040060E0 +S315E074F2900000000000080040C000561D0000230373 +S315E074F2A01C1C606000000303181C40601000070714 +S315E074F2B038384040002007073838C0C000200607B9 +S315E074F2C0303880C001010E0E7070808021010E0E00 +S315E074F2D07070808001010C0E6070008003031C1C4A +S315E074F2E0E0E0000803031C1CE0E008080303181CB4 +S315E074F2F0C0E0000807073838C0C008080707383880 +S315E074F300C0C008000607303880C811010E0E707050 +S315E074F310888801010E0E7070888001010C0E607091 +S315E074F320088803031C1CE0E0080803031C1CE0E0E7 +S315E074F33000000303181CC0E0180007073838C0C083 +S315E074F340180807073838C0C008000607303880C880 +S315E074F35001010E0E7070808801010E0E7070808847 +S315E074F36001010C0E6070088803031C1CE0E00800C1 +S315E074F37003031C1CE0E000000343181CC0E000001B +S315E074F38007073838C0C0000007473838C0C00000E7 +S315E074F3900607303880C001010E0E7070808001015E +S315E074F3A00E0E7070808061010C0E607000800343F5 +S315E074F3B01C1CE0E0000003031C1CE0E000000303F7 +S315E074F3C0181CC0E0000007073838C0C020000707E3 +S315E074F3D03838C0C000000607303880C001010E0E10 +S315E074F3E07070808021010E0E7070808021210C0E69 +S315E074F3F06070008023231C1CE0E0000002021C1CE9 +S315E074F400E0E000000202181CC0E00000060638388E +S315E074F410C0C020A692000460000400202000000012 +S315E074F42000800000001000000000000000002000D2 +S315E074F430002000000000200000200000040000040A +S315E074F4400020200000200000000000000000000002 +S315E074F4500000200004202004002020000820200062 +S315E074F4600820200800200008000000002000002882 +S315E074F47020040020080080080804001000800000C2 +S315E074F480000000100008080000000800008C00006E +S315E074F49020000400000004000000000000000000EA +S315E074F4A0000008000000040020000000800018003E +S315E074F4B000180084000020408438200004002800EE +S315E074F4C000202000002000000800200000604004B6 +S315E074F4D00C00000C040000040C0000040800400C4E +S315E074F4E00C00000C0C0000080C0000080C0000086E +S315E074F4F00000000008400000000400000000000066 +S315E074F5000000400000008410000404000000800045 +S315E074F5100000000000008000000000002000806011 +S315E074F52000800000000000004000080000000000B9 +S315E074F53000000000000000000008080000080080D9 +S315E074F5400008080000280000002000808000008089 +S315E074F5508000008088004008880000800020000059 +S315E074F5608800008800202000002000000820A00801 +S315E074F57000808000000000000080800000800000B1 +S315E074F58008808000008000000800C020206C000025 +S315E074F5900000000000000000000000000000000011 +S315E074F5A000400020000000000000000000000000A1 +S315E074F5B00000000000000000000C000008000000DD +S315E074F5C004000000000000000000000000000000DD +S315E074F5D000000000000000000000000000002000B1 +S315E074F5E000000000000000000010000000000000B1 +S315E074F5F00000800000000000000000000000000031 +S315E074F6000000000000100000000000800000000010 +S315E074F6100020000000000000000000000000080068 +S315E074F6206000000000000000000000000000000020 +S315E074F6300000000000000000000000000000000070 +S315E074F6400000000000000000000000000000100050 +S315E074F6500000000000000000000000000000000050 +S315E074F6600000000000000000000000000000000040 +S315E074F6700000000000000000200000000000000010 +S315E074F6800000000010000000000008000000000008 +S315E074F690000100000000000000000000000000000F +S315E074F6A00000000000000000000000000000000000 +S315E074F6B000000000000000000000002000000000D0 +S315E074F6C000000000000000000000000000000000E0 +S315E074F6D000000100000000000000000000000000CF +S315E074F6E00000000000000020001000000000000090 +S315E074F6F000000000000000000000000000000000B0 +S315E074F7000000000000C055000060000010C040001A +S315E074F710000040000000001000100044002000A02B +S315E074F720140040200000A000400000000024040003 +S315E074F73020000000600000000000000000000400EB +S315E074F74000200000000024000044000000040000D3 +S315E074F750402000400020000000004000000000004F +S315E074F7600440000404000000080000800010040057 +S315E074F770000000048004804484107000000000409F +S315E074F7801020040000200000600060000C000004FB +S315E074F7904000440004000004000000000000401033 +S315E074F7A0000084000000001048000000E00004201F +S315E074F7B0000000000040000000000004000000604B +S315E074F7C00020000040244000084400000008004087 +S315E074F7D000000000000840000408C0004004000077 +S315E074F7E0000448000000000004880000080000805F +S315E074F7F0040008400080000004100000800000004F +S315E074F80008044000000000C89000000000104000AA +S315E074F81028804000004008404010084080000048BE +S315E074F820080000000008000800000800400080009E +S315E074F8300080002000000800400008C0800000003E +S315E074F840900080000000000000008008000800803E +S315E074F85040800800800020000080004000400040A6 +S315E074F86008400800000081200080002008000000A5 +S315E074F870000080000000008000000000008054C595 +S315E074F88000A00000006000000004402000000010AA +S315E074F890040010440020000000040020400000A48E +S315E074F8A00008400000000C00000000040040000066 +S315E074F8B000000000000000000410000000000000DA +S315E074F8C0040400208000000800204440000000008A +S315E074F8D0000000000000000000002004000000406A +S315E074F8E020280080000010040000200000840044FA +S315E074F8F0000000902000000000001004400020008A +S315E074F900000020000008000020000004012004002C +S315E074F91000000000000000401000000080000000BD +S315E074F9201060080004006020000000000000400041 +S315E074F93000000000000000600040008000284044A1 +S315E074F940000800008008000000000000000000408D +S315E074F9500008000040000000480004400000000079 +S315E074F9600084200000000080000C0000400080004D +S315E074F97000150000400000000808244000000080E4 +S315E074F980400000800010080000000020C040080815 +S315E074F99000500048000000C80000000000000800A5 +S315E074F9A00800002080000010808000002000000025 +S315E074F9B0000040088080000000108000818000080C +S315E074F9C0000000008000080080400000080080000D +S315E074F9D000108000600048400088000008800080C5 +S315E074F9E00108800000000000000000800000008034 +S315E074F9F000000000000800A4A4004000000090008D +S315E074FA00400000000040000000000000000000001C +S315E074FA10208010000000000040002000000020005C +S315E074FA200440200000000028204000000000000090 +S315E074FA3000002004000000002000400000000440A4 +S315E074FA40004000080000240004002000400000008C +S315E074FA5004000440000000440000000000000004BC +S315E074FA6020000004040000000080188400400000B8 +S315E074FA7000400020800000000044C0004030008454 +S315E074FA80000448004000000000042000000000006C +S315E074FA902000000004200000000404000000008040 +S315E074FAA000444000000028004400200004000000E8 +S315E074FAB00000200040008004080040840400100028 +S315E074FAC0004000000000880000000004008000444C +S315E074FAD00000000008000000000010080000044860 +S315E074FAE00000002000080000000000000000A000F4 +S315E074FAF000040000000000000800803000000020D0 +S315E074FB0040008028100000004000000000000080E3 +S315E074FB1000000008400000000000000000084000FB +S315E074FB2000000000C0000000000800000040000073 +S315E074FB300000000000000000000000400800000023 +S315E074FB400000008080000000082000000000000033 +S315E074FB5000002040000000002000000020000008A3 +S315E074FB60000000000000802000000000000080001B +S315E074FB704A33000000000000000000000018000096 +S315E074FB8040000000400400200000000000000080F7 +S315E074FB90000000000000000000000000000000000B +S315E074FBA0401000400000004000000000000000002B +S315E074FBB0000000004008004000000000004008001B +S315E074FBC00400000000004008046000000000080023 +S315E074FBD0000000000000080800C00000008000007B +S315E074FBE008804000000080000000400020084000CB +S315E074FBF00804C008000000000064000000800020D3 +S315E074FC0000000000204080000000800000880000B2 +S315E074FC102048204000200400000000402008000036 +S315E074FC20000000000000200000000000400000001A +S315E074FC30A0000000000008844000000000000000FE +S315E074FC400000280000000080000000000000400072 +S315E074FC5000401080004001000400008000000000B5 +S315E074FC600040004004008000000000000000002016 +S315E074FC70000000000040000000000000004080002A +S315E074FC8000000000002000000000800000008000FA +S315E074FC90108000000000800000008000100000006A +S315E074FCA000000000000000000000000000000000FA +S315E074FCB080000080400000000000000000000000AA +S315E074FCC000001000000000000000008000000080CA +S315E074FCD000000000800000000000000080000000CA +S315E074FCE0000000000000000000502F00002000001B +S315E074FCF0004000000000000020000000200000002A +S315E074FD0000400020000004000040000000000000F5 +S315E074FD100020000000400000802000000000200069 +S315E074FD200000000000000000400000200000000019 +S315E074FD300000000008000000000000200800000039 +S315E074FD4000000000000000400000000008004000D1 +S315E074FD504000000048000000000008000008400071 +S315E074FD6000080000004800000000080040000000A1 +S315E074FD7000080080400800040000800000000004D1 +S315E074FD806000002040000040000000000000000019 +S315E074FD900020000000000000002000204000000069 +S315E074FDA00020000000800000400000000080002079 +S315E074FDB000206800600000000060000000000000A1 +S315E074FDC00000000000000000200000000040002059 +S315E074FDD00080500000000040000000200000000099 +S315E074FDE00000400000008000000040A00000000019 +S315E074FDF00010408000000000200000000000800039 +S315E074FE002000000000000008000000000040000030 +S315E074FE108020000040000040002000000000000048 +S315E074FE2080400020008020004000000000000000B8 +S315E074FE3040000020004000400000000080400800C0 +S315E074FE4000000000000040000000000000000040D8 +S315E074FE5000000040000000008000000080000040C8 +S315E074FE60008000D3000000000000400000000000A5 +S315E074FE7010400020000060000060000020000004D4 +S315E074FE800000800000000000002000000000000078 +S315E074FE900040201000400000004000000000000018 +S315E074FEA00040000020004000084000000000080008 +S315E074FEB0000400000008004000000C002000000868 +S315E074FEC0400000000000084800084040880000C078 +S315E074FED000000800C80800C00000084000400800A0 +S315E074FEE000000804C840000000080004404800848C +S315E074FEF000200080000020048000402000000040C4 +S315E074FF00880000200800000004002000004020085B +S315E074FF1000000000200000204000200000004000A7 +S315E074FF2000800000000000000824402040004000EB +S315E074FF3000000000280000000000000000000040FF +S315E074FF400000005000608000410400500000000092 +S315E074FF5000000020404004008000400000000000E3 +S315E074FF600000004000000000400000C0000000C037 +S315E074FF700020000000000080002000000000000067 +S315E074FF808000108000400000A080008000005000D7 +S315E074FF904020000000000000000000002080000007 +S315E074FFA02000C0000000C0000000002000004040B7 +S315E074FFB0000000100000400800000000008000000F +S315E074FFC00000800000800000000000400000000097 +S315E074FFD000000000000000400000809CAC0000209F +S315E074FFE010004020000000000000004000102001D6 +S315E074FFF0400800406000000420408040000000009B +S315E075000004800030200000000440240000602000D9 +S315E07500100000004000004000000000404000100075 +S315E07500204200400000006000004000000000000053 +S315E0750030004000000008000040080000800008004D +S315E0750040004000601000008000000080080200900B +S315E07500504884000008204000004000004000200071 +S315E0750060004000000020440808C0000040002080E1 +S315E0750070000000000000000000D0004040200400B1 +S315E075008040200000600440000000200000000000F1 +S315E075009000000000004020404000002040200000A5 +S315E07500A0000000000000080040040024002000F075 +S315E07500B040005000000000400800400000000000CD +S315E07500C00000482000400000800080044080000069 +S315E07500D020000000040020000000C00020804000E1 +S315E07500E00020000000802000400000000040400035 +S315E07500F010008020400080401000204800408008B5 +S315E075010000000040004000004008000020000000AC +S315E0750110A000400000400000000000002000000044 +S315E0750120400C0080004000000080000800000040A0 +S315E07501300060600000000000800808000088400844 +S315E0750140A0000080000000C0000000000000000074 +S315E075015008004000BEA80000000010000000000086 +S315E07501600000000000000000200000000000000014 +S315E07501700000200080000000000400000000000080 +S315E075018000004000000000000000000000000000D4 +S315E075019020000000000000000000000000000000E4 +S315E07501A000000000000000000000000000000800EC +S315E07501B0000000000000800800000000000000005C +S315E07501C000000000200000900008000000002000FC +S315E07501D04000000000000020000000000000200440 +S315E07501E0000800000040002000000000000000004C +S315E07501F0408000040820000000004000000C00402C +S315E07502000000000020000000000000000000000073 +S315E075021000004000202000200000000000000000E3 +S315E0750220080000002020000020000000000000000B +S315E075023040000040004000004000002008401400E7 +S315E07502400000000040400000000020000000800033 +S315E075025000000000400000000000200000000000E3 +S315E0750260A000400000000000000000000000000053 +S315E075027000000028000000000000000040000000BB +S315E07502800000000000000000000000000000000013 +S315E07502900080000000000000000000000000000083 +S315E07502A0000000000800004000004000000000006B +S315E07502B000008040000000000000000000000040E3 +S315E07502C000000000000080000040000040E5AF003F +S315E07502D00020000000200000000000001040001023 +S315E07502E000000000000400400000400000400000EF +S315E07502F000008000000020000000000000140020CF +S315E075030000200000400000000040000000004000B2 +S315E075031010204000200000000000004000000000B2 +S315E07503200000400000000000000000200000000012 +S315E07503300000004020000000008000000080000002 +S315E07503400000C4000000000000040000C00000408A +S315E07503500000004000000000004000800000000042 +S315E075036000000000000000000000100040000000E2 +S315E0750370040020000000204000000400000000009A +S315E07503800000000000004000002000000000400072 +S315E0750390400000004000000000000004000000007E +S315E07503A000000001000000000000000800000000E9 +S315E07503B00000000000000000000000008000000062 +S315E07503C00000000000000000000000000000800052 +S315E07503D00000000000000000000000000000400082 +S315E07503E00000100020800040800020000080004062 +S315E07503F0000800000000400000000000000000005A +S315E07504004000008048000080000000000000000009 +S315E075041000004008000040000000000000000000F9 +S315E07504200000280040200000000000080000880059 +S315E07504304800000000000008008000404000000011 +S315E075044000000000000065E20000000000004000CA +S315E07504500000000000000000000100480040002098 +S315E075046000040000000000000000000000201000FD +S315E075047000000000042080004000004000000000FD +S315E0750480000000002040000000000000020040402F +S315E075049000600000800040000000000000000000E1 +S315E07504A00000004008000000000000000040001059 +S315E07504B0000000000000000A0000000000200000B7 +S315E07504C00800001040000000000000000000400039 +S315E07504D000000800400000000080000000000000F9 +S315E07504E00000004000000000400000000000000031 +S315E07504F00000000000000000000080000000000021 +S315E07505000000400000000008000000000800000040 +S315E075051000000040000400000080504000401000DC +S315E07505200000000000000000100000000040000020 +S315E0750530000000008004000080000000000000005C +S315E0750540242000000080002000408000000040006C +S315E0750550C000000000000000004000000040000000 +S315E07505600040000010400000008000000000000020 +S315E07505700000004800000020000000002000004058 +S315E0750580000000000000002000000004008000006C +S315E07505900000008000000000000000000000004040 +S315E07505A0000000000088000000000000A000800048 +S315E07505B0000000000000000000000000080000F3E5 +S315E07505C01D000000000000000000000000000000B3 +S315E07505D000000000000000000000000000000000C0 +S315E07505E00000000000000000000000002000000090 +S315E07505F000000000000000000000000000000000A0 +S315E0750600000000000000000000000040000000004F +S315E0750610080000000000000000000008000000006F +S315E07506200000080000000000000000000000000067 +S315E0750630000000000000000000000000000000005F +S315E075064000000040002000000000000000000000EF +S315E0750650000000000000000000000000000000003F +S315E075066000600000000000200000000000000000AF +S315E075067000000000000040000000000000002000BF +S315E0750680000000004000200040000060000000000F +S315E075069000000000000000000000000000000000FF +S315E07506A0004000000000400000000000400000002F +S315E07506B0200000000020000000000000000000009F +S315E07506C000000000000000000000000000200000AF +S315E07506D0204000200000000000000000000000003F +S315E07506E0400000000000000000000000000000006F +S315E07506F0000000000000000000000000000000009F +S315E075070000000000004000600000000000000000EE +S315E0750710000000000000000000000000000000007E +S315E0750720004000000000000000000000000000002E +S315E07507300000000000000000D54E0000000000003B +S315E0750740000000000000000000000000000000004E +S315E0750750000000000000000000002000000000001E +S315E0750760000000000000000000000000000000002E +S315E0750770000000000000000000000000000000001E +S315E075078000000000080000000000000800400000BE +S315E075079000080000000000000000000000000000F6 +S315E07507A040000000000000000000000000000000AE +S315E07507B0002000000040000000002000000040001E +S315E07507C0000060000000004000000000000000002E +S315E07507D0000000000000004020000000000000005E +S315E07507E000000000000000000000000000000000AE +S315E07507F0000020000000000000200000000000005E +S315E0750800000000000000002040000000000000002D +S315E0750810000000000000000000000000000000205D +S315E0750820000000000000000000000000000000006D +S315E0750830000000000000000000000000004000001D +S315E0750840000040200000000020000000004000404D +S315E0750850000000000000000000000000000000003D +S315E0750860000000000000000000000000000000002D +S315E075087000000000000000002000000000000000FD +S315E075088000200000000000000000000000004000AD +S315E0750890000000000040000000000000400000007D +S315E07508A000000000400000000000000000000000AD +S315E07508B0004D500000000000000000000000000040 +S315E07508C000000000000000000000000000000000CD +S315E07508D0000000200000000000000000000000009D +S315E07508E000000000000000000000000000000000AD +S315E07508F0000000000000000000000000004000005D +S315E07509000000000808000040000000000008000034 +S315E07509100000000000080000004000000000000034 +S315E0750920000000000000000000002000000000004C +S315E075093000000020000000000000600000000000DC +S315E0750940004000000000000000000000000000000C +S315E075095000000040000000000000000000000000FC +S315E0750960000000000000000000002000000000000C +S315E0750970002000000000400000004000002000005C +S315E0750980000000000000000000000000000000000C +S315E0750990000000000000000000600000000000405C +S315E07509A000000020000000000000000000000000CC +S315E07509B0000000000000000000000000002000209C +S315E07509C0200020000000000000000000000000008C +S315E07509D0000040000000000000000000000000007C +S315E07509E000000000000000000000000000000000AC +S315E07509F020000000000040006000000000000000DC +S315E0750A00000000000000004000000000000040000B +S315E0750A10000000000000000000000000004000003B +S315E0750A2000000000000000000000F7A500000000CF +S315E0750A30000000000000000000000000000000005B +S315E0750A40000000000000000000000000000000004B +S315E0750A50000000000000000000000000000000003B +S315E0750A60000000000000000000000000000000002B +S315E0750A700000000800000000000000000000000013 +S315E0750A80000000000000000000000000000000000B +S315E0750A9000000000000000000000000000000000FB +S315E0750AA000000000000000000000000000000000EB +S315E0750AB000000000200000000000000000000000BB +S315E0750AC000000000000000000000000000000000CB +S315E0750AD000000000000000000000000000000000BB +S315E0750AE000000000000000000000000000000000AB +S315E0750AF0000000000000000000000000000000009B +S315E0750B00000000000000000000000000000000008A +S315E0750B10000040000000000000000000000000003A +S315E0750B20000000000000000000000000000000006A +S315E0750B30000000000000000000000000000000005A +S315E0750B40000000200000000000000000000000002A +S315E0750B50000000000000000000000000000000003A +S315E0750B60000000000000000000000000000000002A +S315E0750B70000000000000000000000000000000001A +S315E0750B80000000000000000000000000000000000A +S315E0750B9000000000000000000000000000000000FA +S315E0750BA0000000C9B700000000000000000000006A +S315E0750BB000000000000000000000000000000000DA +S315E0750BC000000000000000000000000000000000CA +S315E0750BD000000000000000000000000000000000BA +S315E0750BE000000000000000000000000000000000AA +S315E0750BF0000000000000000000000000000000009A +S315E0750C000000000000000000000000000000000881 +S315E0750C100000000000000000000000000000000079 +S315E0750C200000000008000008000000000000000059 +S315E0750C300000000000000000000000000000000059 +S315E0750C400000000000000000000000000000000049 +S315E0750C500000000000000000002000000000000019 +S315E0750C600000000000000000000000000000000029 +S315E0750C700000000000000000000000000000000019 +S315E0750C800000000000000000000000000000000009 +S315E0750C9000000000000000000000000000000000F9 +S315E0750CA00020000000000020200000202000002029 +S315E0750CB000000000000000000000000000000000D9 +S315E0750CC000000000000000000000000000000000C9 +S315E0750CD000000000000000000000000000000000B9 +S315E0750CE02000000000000000000020000000000069 +S315E0750CF00000000000000000000000000000000099 +S315E0750D000000000000000000000000000000000088 +S315E0750D1000000000000000000000000068E300002D +S315E0750D200000000000000004002000000000000044 +S315E0750D30000000000000000000000000000100084F +S315E0750D4000402000000000000000000000000000E8 +S315E0750D5000000000000200100080000000000000A6 +S315E0750D600000000000000000000000000004002004 +S315E0750D700000000000000000000000080000000010 +S315E0750D8000000001000800400000000000000000BF +S315E0750D9000000000000020200000202200100080E6 +S315E0750DA000000000080000000000000000000040A0 +S315E0750DB00000004400200000000000000000000074 +S315E0750DC0000000000000000000010008004000007F +S315E0750DD00000000000000020002000000000000078 +S315E0750DE00002001000800000000000000000000016 +S315E0750DF000400000004000000044002000000000B4 +S315E0750E000000000000000000000000000000000186 +S315E0750E10000800600000000000000000000000000F +S315E0750E2000000000000000020010008000000000D5 +S315E0750E3040000000000000004000000000000004D3 +S315E0750E400020000000000000000000000000000027 +S315E0750E5000000000000100080040000000000000EE +S315E0750E600000000000000000000000000002001015 +S315E0750E700080400000000000000000000000000057 +S315E0750E8000000000000400200000000000000000E3 +S315E0750E90000000000035AF00000000000000000013 +S315E0750EA0040020000404200000000000000000009B +S315E0750EB000000000000001000800410108084040FC +S315E0750EC000000000000000000000000000000200C5 +S315E0750ED01000820210108080000000000000000003 +S315E0750EE000004000000044002000040420200000BB +S315E0750EF0000000000000000000000000010008008E +S315E0750F0041010808400000000000000000000000F4 +S315E0750F1000000000020010008202101080800000C0 +S315E0750F200000000000000000000000000400200042 +S315E0750F30040420000000000000000000000000002E +S315E0750F4000000100080041010808400000000000AB +S315E0750F500000000000000000000002001000C20260 +S315E0750F601010808000000000000000000000000006 +S315E0750F7000000400200004042000000000000000CA +S315E0750F8000000000000000000100080041010808AB +S315E0750F9040000000000000000000000000000000B6 +S315E0750FA00200100082021010808000000000000030 +S315E0750FB0000000000040000004402000040420000A +S315E0750FC000000000000000000000000000000100C5 +S315E0750FD008004101080860000000000000000000FC +S315E0750FE000000000000002001000820210108080F0 +S315E0750FF00000000000000000000000000000040092 +S315E0751000200004042020000000000000000087177F +S315E07510100000000000000000000000000000000075 +S315E07510200000000000000000000000000000000065 +S315E07510300000000000000000000000000000000055 +S315E07510400000000000000000000000000000000045 +S315E07510500000000000000000000000000000000035 +S315E07510600000000000000000000000000000000025 +S315E0751070000000000000000000000800000000000D +S315E07510800000000000000000000000000000000005 +S315E075109000004000080000000000000800000000A5 +S315E07510A000000000000000000000000000000000E5 +S315E07510B000000000000000000000000000000000D5 +S315E07510C00000000000000000000000000000202085 +S315E07510D00000202000000000000000400000000035 +S315E07510E000000000000000000000000000000000A5 +S315E07510F00000000000000000000000000000000095 +S315E07511000000000000000000000020000000000064 +S315E07511100000000000000000000000000000400034 +S315E07511200000000000000000000000000000000064 +S315E07511300000000000000000000000000000000054 +S315E07511400000000000000000000000000000000044 +S315E07511500000000000000000000000000000000034 +S315E07511600000000000000000000000000000000024 +S315E07511700000000000000000000000000000000014 +S315E0751180000000000000007F6A000000000000001B +S315E075119000000000040024040020000000000000A8 +S315E07511A00000000000000000000001000901480889 +S315E07511B04040000000000000000000000000000054 +S315E07511C0000002001202901080800000000000000E +S315E07511D00000000000000000000004002404202048 +S315E07511E000000000000000000000000000000000A4 +S315E07511F00100090140080040000000000000000001 +S315E07512000000000000000000020012029010C0808D +S315E0751210000000080000004000000000000000002B +S315E07512200400240400200000000000000000000017 +S315E07512300000000000000100092148080040002078 +S315E07512400000000000000000000000000000020041 +S315E0751250120290108080000000000000000000007F +S315E075126000000000000004002404002000000000D7 +S315E07512700000000000000000000000000100090108 +S315E07512804808004000000000002000000000000053 +S315E0751290000000000200120290108080000000003D +S315E07512A000000000000000000000000004002404B7 +S315E07512B000200000000000000000000000000000B3 +S315E07512C00000010009014808004020000000000008 +S315E07512D000200000000000000000020012029010DD +S315E07512E080C0000000000000400000000000000023 +S315E07512F00000040024042020000000000000000027 +S315E075130071DA002000000000000000000000000413 +S315E07513100020000000000000000000000000000052 +S315E07513200000000000010008004000000000000019 +S315E07513300000000000000000000000000002001040 +S315E075134000800000000000000000000000000000C2 +S315E0751350000000000004002000000000000000000E +S315E07513600040000000000000000000010008004099 +S315E075137000000000000000000000002000000020D2 +S315E075138000000022001028804000000000000000E8 +S315E075139000000000000000000000000400200000CE +S315E07513A000000000000000000000000000000000E2 +S315E07513B00001000800400000200000000000000069 +S315E07513C00000000000000000000200100080000030 +S315E07513D00000000000000000004000000040000032 +S315E07513E000440020400000000000000000000000FE +S315E07513F00000000000000001000800600000000029 +S315E0751400000000000000000020000000200000023F +S315E07514102030008000400000000000000000000061 +S315E0751420000000000000000400200000000000003D +S315E07514300000000040000000000000000001000808 +S315E07514400040000000000000000000000000000001 +S315E0751450000000000002001000800000000000009F +S315E075146000000000000000000000000000040020FD +S315E0751470000000000000000000C0F0000000000061 +S315E075148000000000000000040020000000000000DD +S315E075149000000000000000000000000000010008E8 +S315E07514A000400000000000000000000000000000A1 +S315E07514B0000000000002001000800000000000003F +S315E07514C0000000000000000000000000000400209D +S315E07514D000000000000000000000000000000000B1 +S315E07514E00000000108080040000000000000080048 +S315E07514F000080000000000000000000200100080F7 +S315E07515000000000000000000000000000000000080 +S315E0751510000000040020000000000000000000004C +S315E075152000000000000000000001000800402000F7 +S315E075153000000000000000200000200000002000F0 +S315E07515400002201000A0000000400000000000002E +S315E0751550000000000000000000040020000000000C +S315E0751560000000000000000000000000000000011F +S315E075157000080040000000000000200000000000A8 +S315E0751580000000000000000200100080000000006E +S315E0751590000000000000002000400000004000044C +S315E07515A00060400000000000000000000000000040 +S315E07515B00000000000010008004000000020000067 +S315E07515C000000000000000000000000000020010AE +S315E07515D000800000000000000000000000004000F0 +S315E07515E000004000000400200040000000000000FC +S315E07515F00000420C00000000000000000000000042 +S315E07516000404240020000000000000000000000033 +S315E07516100000000000000101090848404000000094 +S315E0751620000020002000000000000000000002021B +S315E0751630121090808000000000000000000000009D +S315E075164000000000000004042420200000000000D3 +S315E07516500000000000000000000000000101090024 +S315E07516604800400000000000004000000000000057 +S315E07516700000000002021210908088000000000051 +S315E075168000000000000000000000000004042400D3 +S315E0751690200000000000000000400000000000008F +S315E07516A00000010109084800400000000020000024 +S315E07516B00000000000000000000002021210908099 +S315E07516C0800000000000000000000000000000003F +S315E07516D00000040424002000000000000000000063 +S315E07516E00000000000000000010109084800400004 +S315E07516F0000000000000000000000000000000008F +S315E07517000202121090808000000000400000000088 +S315E07517100000000000000000040424002000000022 +S315E0751720000000000000000000000000000001015C +S315E075173009084800400000000000000000000000B5 +S315E07517400000000000000202121090C08000000048 +S315E075175000004000000000000000000000000404E6 +S315E07517602420200000000000000000D64F00000095 +S315E075177000000000000000000000042000000000EA +S315E075178000000000200000000000000000000000DE +S315E075179001000800400000000000000000000000A5 +S315E07517A0000000000000000002001000800000004C +S315E07517B000000000000000000000000000000000CE +S315E07517C0040020000000000000000000000000009A +S315E07517D0000000000800010800400000000000005D +S315E07517E0000000000000000000000000000002009C +S315E07517F0100080004000000000000020000000405E +S315E07518000000004000000460400000000000000099 +S315E07518100000000000000000000000000100084024 +S315E0751820000000000000000000400000000000001D +S315E0751830000000000200100080400000000000403B +S315E075184020000000000000000000000004200000F9 +S315E0751850000000000000002000000000000000000D +S315E07518600000010008400000200000000000004074 +S315E0751870000000000000000000000200100080403B +S315E075188000000000000000200000000000000000DD +S315E075189000000400000000000000000000000000E9 +S315E07518A00000000000000000010008400000000094 +S315E07518B0000000000060000000000000000000006D +S315E07518C002001000800000000000000040000000EB +S315E07518D00000000000000000040020000000000089 +S315E07518E0000000000DC300000000000000000000CD +S315E07518F0000000000000000000000000000000008D +S315E0751900000000000000000000000000000000007C +S315E0751910200000000000000000000000000000004C +S315E0751920000000000000000000000000000000005C +S315E0751930004000000040000000400000400000004C +S315E0751940000000000000000000000000000000003C +S315E0751950000000000000000000000000000000002C +S315E0751960000000000000000000000000000000001C +S315E0751970084008400000000000000000000000007C +S315E075198000000000000000000020000000000000DC +S315E075199000000000000000000000000000000000EC +S315E07519A000000000000000000000000000000000DC +S315E07519B0000000000000000000400000000000008C +S315E07519C000000000000000000000000000000000BC +S315E07519D0004000000000000000000000000000006C +S315E07519E0000000000000000020000000000000007C +S315E07519F0000000000000000000000000000000404C +S315E0751A00000000000000000000000000000000007B +S315E0751A10000000000000000000000000000000006B +S315E0751A20000000000000200000000020000000001B +S315E0751A30000000000000000000000000000000400B +S315E0751A40000000000000000000000000000000003B +S315E0751A50000000000000000000000000006637008E +S315E0751A60000000000000000000000000000000001B +S315E0751A70000000000000000000000000000000000B +S315E0751A8000000020000000000000000000000000DB +S315E0751A9000000000000000000000000000000000EB +S315E0751AA000000000000000000000000000000000DB +S315E0751AB000000000000000000000000000000000CB +S315E0751AC000000000000000000000000000000000BB +S315E0751AD00000000000000020200000202000080023 +S315E0751AE0000008000048000000080800000000003B +S315E0751AF0004000000040000000000000000000000B +S315E0751B00000000000000000000000000000020005A +S315E0751B1000000020002000002000002020000020AA +S315E0751B20200000200000004000004000000000009A +S315E0751B30000040000000400000004000000000008A +S315E0751B40000000000000000000000000000000003A +S315E0751B50000000002000000000000000000000000A +S315E0751B6000200000000000000000000000000000FA +S315E0751B7000400000000000000000000000000000CA +S315E0751B8000000000000000000000000000000000FA +S315E0751B9000000000000000000000002000002000AA +S315E0751BA0000000002000002000000000000000009A +S315E0751BB0000000400000000000000000000000404A +S315E0751BC000000000000000000000000000000000BA +S315E0751BD00000000000000CBE0000000000000000E0 +S315E0751BE0000000000000000000000000000000009A +S315E0751BF0000000000000000000000000000000008A +S315E0751C000020000000200000200000000000000019 +S315E0751C100000000000000000000000000000000069 +S315E0751C200000004000000040000000400000400059 +S315E0751C300000000000000000000000000000000049 +S315E0751C4000000000000000000000000800400800E9 +S315E0751C5000200000002000000020000020000000A9 +S315E0751C600000084800002000000040000000400029 +S315E0751C700000404000000000000000002040000029 +S315E0751C8000000000000000000000002000000000D9 +S315E0751C900000002000000020000000200000002069 +S315E0751CA00000204000000000000000002000004019 +S315E0751CB00000004000000040000040000000000009 +S315E0751CC00020000000000000000000000000000099 +S315E0751CD00000002000000000200020000000000049 +S315E0751CE00000000000000000004000000000000059 +S315E0751CF00040200000400000004000000040000069 +S315E0751D0040000000000000000000400000000000F8 +S315E0751D100000000000000000000020000000200028 +S315E0751D2040000000000000000000000000000040D8 +S315E0751D300040000000400040000000400000004008 +S315E0751D4000000000000040000000000000000011E7 +S315E0751D50600001000800410009004801410A085287 +S315E0751D604010020210100000000002001000820010 +S315E0751D7012009002821410A4802004042020000032 +S315E0751D8000000400200004002400200504292048F2 +S315E0751D9001410808404000000108080041000900BB +S315E0751DA04801410A0852409802821010808000006E +S315E0751DB002001000820012009002821410A48020A6 +S315E0751DC00404202000000000040020000400240024 +S315E0751DD0200504292048014108084040000001001B +S315E0751DE00800410009004801410A08524090028204 +S315E0751DF01010808000000200100082001200900230 +S315E0751E00821410A480200404202000000000040041 +S315E0751E102000040024002005042920480141080813 +S315E0751E204040000001000800410009004801410AF0 +S315E0751E300852409002821010808000000200100067 +S315E0751E40820012009002821410A4802004042020DF +S315E0751E500000000004002000040024002005042989 +S315E0751E602048014108084040000001000800410093 +S315E0751E7009004801410A085240900282101080809C +S315E0751E80000002001000820012009002821410A475 +S315E0751E9080200404202000000000040020000400D7 +S315E0751EA02400200504292048014108084040000027 +S315E0751EB000000800400008004800400A08524090BB +S315E0751EC00282101080800000F226000100080040B2 +S315E0751ED000000000000000000000000000000000A7 +S315E0751EE000000002001000800000000000200000E5 +S315E0751EF00000000000000000000000040020000063 +S315E0751F000000000000000000000000000000000076 +S315E0751F100001080808400800000000000000000005 +S315E0751F200000400000000000000200100080000084 +S315E0751F300000000000000000000000000000000046 +S315E0751F4000040020000000000000004000000000D2 +S315E0751F5020000000000000010008004000000000BD +S315E0751F6000000000000000004000000000000002D4 +S315E0751F700010008000000000002000000000000056 +S315E0751F8000000000000000040020000000000000D2 +S315E0751F90004000000000200000000000000100087D +S315E0751FA00040000000000000000000000000400056 +S315E0751FB00000000000020010008000000000002014 +S315E0751FC00000000000000000000000000004002092 +S315E0751FD00000000000000040000000002000000046 +S315E0751FE0000000010008004000000000000000004D +S315E0751FF000000000400000000000000200100080B4 +S315E07520000000000000200000000000000000000055 +S315E07520100000000400200000000000000040000001 +S315E0752020000000000000000000000008004000000D +S315E07520300000000000000000000040000000000005 +S315E075204000187600010808414008004000010208C2 +S315E0752050104000000200100200100002021010820B +S315E07520608010008000220410208000000400200407 +S315E0752070000000040420200400200000010408206C +S315E07520804000010008014008004101080841400888 +S315E07520900040000102081040800002001002801026 +S315E07520A000820210108280100080000204102080E9 +S315E07520B00000040020040020000404202004002011 +S315E07520C0000009440820400001000801400808099D +S315E07520D001080841400800400001020810408000F0 +S315E07520E002001002801000820210108280100080BB +S315E07520F00022041020800000040020040000000483 +S315E0752100042020040020000001440820400001005E +S315E07521100801400800010108084140080040000137 +S315E07521200208104080000200100280100082021042 +S315E075213010828010008000220410208000000400C8 +S315E0752140200400000004042020040020000001445F +S315E07521500820400001000801400800010108084117 +S315E0752160400800400001020810408000020010029D +S315E07521708010008202101082801000800022041008 +S315E075218020800000040020040000000404202004E0 +S315E075219000200000014408204000010008014008C5 +S315E07521A000000008084040080040000002081040A2 +S315E07521B0800002001002801000828A9C00000000F8 +S315E07521C000000000000000000000000000000000B4 +S315E07521D000000000000000000000000000000000A4 +S315E07521E00000000000000000000000000000000094 +S315E07521F00000000000000000000000000000000084 +S315E07522000000000000000000000000000000000073 +S315E07522100000000000000000000000000000000063 +S315E07522200000000000000000000000000000000053 +S315E07522300000000000000000000000000000000043 +S315E07522400000000000000000000000000000000033 +S315E07522500000000000000000000000000000000023 +S315E07522600000000000000000000000000000000013 +S315E07522700000000000000000000000000000000003 +S315E075228000000000000000000000000000000000F3 +S315E075229000000000000000000000000000000000E3 +S315E07522A000000000000000000000000000000000D3 +S315E07522B000000000000000000000000000000000C3 +S315E07522C000000000000000000000000000000000B3 +S315E07522D000000000000000000000000000000000A3 +S315E07522E00000000000000000000000000000000093 +S315E07522F00000000000000000000000000000000083 +S315E07523000000000000000000000000000000000072 +S315E07523100000000000000000000000000000000062 +S315E07523200000000000000000000000000000000052 +S315E07523300000003E490000000000000000000000BB +S315E07523400000000000000000000000000000000032 +S315E07523500000000000000000000000000000000022 +S315E07523600000000000000000000000000000000012 +S315E07523700000000000000000000000000000000002 +S315E075238000000000000000000000000000000000F2 +S315E075239000000000000000000000000000000000E2 +S315E07523A000000000000000000000000000000000D2 +S315E07523B000000000000000000000000000000000C2 +S315E07523C000000000000000000000000000000000B2 +S315E07523D000000000000000000000000000000000A2 +S315E07523E00000000000000000000000000000000092 +S315E07523F00000000000000000000000000000000082 +S315E07524000000000000000000000000000000000071 +S315E07524100000000000000000000000000000000061 +S315E07524200000000000000000000000000000000051 +S315E07524300000000000000000000000000000000041 +S315E07524400000000000000000000000000000000031 +S315E07524500000000000000000000000000000000021 +S315E07524600000000000000000000000000000000011 +S315E07524700000000000000000000000000000000001 +S315E075248000000000000000000000000000000000F1 +S315E075249000000000000000000000000000000000E1 +S315E07524A00000000000000000000000003E4900004A +S315E07524B000000000000000000000000000000000C1 +S315E07524C000000000000000000000000000000000B1 +S315E07524D000000000000000000000000000000000A1 +S315E07524E00000000000000000000000000000000091 +S315E07524F00000000000000000000000000000000081 +S315E07525000000000000000000000000000000000070 +S315E07525100000000000000000000000000000000060 +S315E07525200000000000000000000000000000000050 +S315E07525300000000000000000000000000000000040 +S315E07525400000000000000000000000000000000030 +S315E07525500000000000000000000000000000000020 +S315E07525600000000000000000000000000000000010 +S315E07525700000000000000000000000000000000000 +S315E075258000000000000000000000000000000000F0 +S315E075259000000000000000000000000000000000E0 +S315E07525A000000000000000000000000000000000D0 +S315E07525B000000000000000000000000000000000C0 +S315E07525C000000000000000000000000000000000B0 +S315E07525D000000000000000000000000000000000A0 +S315E07525E00000000000000000000000000000000090 +S315E07525F00000000000000000000000000000000080 +S315E0752600000000000000000000000000000000006F +S315E0752610000000000000000000000000000000005F +S315E075262000000000003E49000000000000000000C8 +S315E0752630000000000000000000000000000000003F +S315E0752640000000000000000000000000000000002F +S315E0752650000000000000000000000000000000001F +S315E0752660000000000000000000000000000000000F +S315E075267000000000000000000000000000000000FF +S315E075268000000000000000000000000000000000EF +S315E075269000000000000000000000000000000000DF +S315E07526A000000000000000000000000000000000CF +S315E07526B000000000000000000000000000000000BF +S315E07526C000000000000000000000000000000000AF +S315E07526D0000000000000000000000000000000009F +S315E07526E0000000000000000000000000000000008F +S315E07526F0000000000000000000000000000000007F +S315E0752700000000000000000000000000000000006E +S315E0752710000000000000000000000000000000005E +S315E0752720000000000000000000000000000000004E +S315E0752730000000000000000000000000000000003E +S315E0752740000000000000000000000000000000002E +S315E0752750000000000000000000000000000000001E +S315E0752760000000000000000000000000000000000E +S315E075277000000000000000000000000000000000FE +S315E075278000000000000000000000000000000000EE +S315E075279000000000000000000000000000003E4957 +S315E07527A000000000000000000000000000000000CE +S315E07527B000000000000000000000000000000000BE +S315E07527C000000000000000000000000000000000AE +S315E07527D0000000000000000000000000000000009E +S315E07527E0000000000000000000000000000000008E +S315E07527F0000000000000000000000000000000007E +S315E0752800000000000000000000000000000000006D +S315E0752810000000000000000000000000000000005D +S315E0752820000000000000000000000000000000004D +S315E0752830000000000000000000000000000000003D +S315E0752840000000000000000000000000000000002D +S315E0752850000000000000000000000000000000001D +S315E0752860000000000000000000000000000000000D +S315E075287000000000000000000000000000000000FD +S315E075288000000000000000000000000000000000ED +S315E075289000000000000000000000000000000000DD +S315E07528A000000000000000000000000000000000CD +S315E07528B000000000000000000000000000000000BD +S315E07528C000000000000000000000000000000000AD +S315E07528D0000000000000000000000000000000009D +S315E07528E0000000000000000000000000000000008D +S315E07528F0000000000000000000000000000000007D +S315E0752900000000000000000000000000000000006C +S315E0752910000000000000003E4900000000000000D5 +S315E0752920000000000000000000000000000000004C +S315E0752930000000000000000000000000000000003C +S315E0752940000000000000000000000000000000002C +S315E0752950000000000000000000000000000000001C +S315E0752960000000000000000000000000000000000C +S315E075297000000000000000000000000000000000FC +S315E075298000000000000000000000000000000000EC +S315E075299000000000000000000000000000000000DC +S315E07529A000000000000000000000000000000000CC +S315E07529B000000000000000000000000000000000BC +S315E07529C000000000000000000000000000000000AC +S315E07529D0000000000000000000000000000000009C +S315E07529E0000000000000000000000000000000008C +S315E07529F0000000000000000000000000000000007C +S315E0752A00000000000000000000000000000000006B +S315E0752A10000000000000000000000000000000005B +S315E0752A20000000000000000000000000000000004B +S315E0752A30000000000000000000000000000000003B +S315E0752A40000000000000000000000000000000002B +S315E0752A50000000000000000000000000000000001B +S315E0752A60000000000000000000000000000000000B +S315E0752A7000000000000000000000000000000000FB +S315E0752A8000000000000000000000000000000000EB +S315E0752A903E49000000000000000000000000000054 +S315E0752AA000000000000000000000000000000000CB +S315E0752AB000000000000000000000000000000000BB +S315E0752AC000000000000000000000000000000000AB +S315E0752AD0000000000000000000000000000000009B +S315E0752AE0000000000000000000000000000000008B +S315E0752AF0000000000000000000000000000000007B +S315E0752B00000000000000000000000000000000006A +S315E0752B10000000000000000000000000000000005A +S315E0752B20000000000000000000000000000000004A +S315E0752B30000000000000000000000000000000003A +S315E0752B40000000000000000000000000000000002A +S315E0752B50000000000000000000000000000000001A +S315E0752B60000000000000000000000000000000000A +S315E0752B7000000000000000000000000000000000FA +S315E0752B8000000000000000000000000000000000EA +S315E0752B9000000000000000000000000000000000DA +S315E0752BA000000000000000000000000000000000CA +S315E0752BB000000000000000000000000000000000BA +S315E0752BC000000000000000000000000000000000AA +S315E0752BD0000000000000000000000000000000009A +S315E0752BE0000000000000000000000000000000008A +S315E0752BF0000000000000000000000000000000007A +S315E0752C000000000000000000003E490000000000E2 +S315E0752C100000000000000000000000000000000059 +S315E0752C200000000000000000000000000000000049 +S315E0752C300000000000000000000000000000000039 +S315E0752C400000000000000000000000000000000029 +S315E0752C500000000000000000000000000000000019 +S315E0752C600000000000000000000000000000000009 +S315E0752C7000000000000000000000000000000000F9 +S315E0752C8000000000000000000000000000000000E9 +S315E0752C9000000000000000000000000000000000D9 +S315E0752CA000000000000000000000000000000000C9 +S315E0752CB000000000000000000000000000000000B9 +S315E0752CC000000000000000000000000000000000A9 +S315E0752CD00000000000000000000000000000000099 +S315E0752CE00000000000000000000000000000000089 +S315E0752CF00000000000000000000000000000000079 +S315E0752D000000000000000000000000000000000068 +S315E0752D100000000000000000000000000000000058 +S315E0752D200000000000000000000000000000000048 +S315E0752D300000000000000000000000000000000038 +S315E0752D400000000000000000000000000000000028 +S315E0752D500000000000000000000000000000000018 +S315E0752D600000000000000000000000000000000008 +S315E0752D7000000000000000000000000000000000F8 +S315E0752D8000003E4900000000000000000000000061 +S315E0752D9000000000000000000000000000000000D8 +S315E0752DA000000000000000000000000000000000C8 +S315E0752DB000000000000000000000000000000000B8 +S315E0752DC000000000000000000000000000000000A8 +S315E0752DD00000000000000000000000000000000098 +S315E0752DE00000000000000000000000000000000088 +S315E0752DF00000000000000000000000000000000078 +S315E0752E000000000000000000000000000000000067 +S315E0752E100000000000000000000000000000000057 +S315E0752E200000000000000000000000000000000047 +S315E0752E300000000000000000000000000000000037 +S315E0752E400000000000000000000000000000000027 +S315E0752E500000000000000000000000000000000017 +S315E0752E600000000000000000000000000000000007 +S315E0752E7000000000000000000000000000000000F7 +S315E0752E8000000000000000000000000000000000E7 +S315E0752E9000000000000000000000000000000000D7 +S315E0752EA000000000000000000000000000000000C7 +S315E0752EB000000000000000000000000000000000B7 +S315E0752EC000000000000000000000000000000000A7 +S315E0752ED00000000000000000000000000000000097 +S315E0752EE00000000000000000000000000000000087 +S315E0752EF000000000000000000000003E49000000F0 +S315E0752F000000000000000000000000000000000066 +S315E0752F100000000000000000000000000000000056 +S315E0752F200000000000000000000000000000000046 +S315E0752F300000000000000000000000000000000036 +S315E0752F400000000000000000000000000000000026 +S315E0752F500000000000000000000000000000000016 +S315E0752F600000000000000000000000000000000006 +S315E0752F7000000000000000000000000000000000F6 +S315E0752F8000000000000000000000000000000000E6 +S315E0752F9000000000000000000000000000000000D6 +S315E0752FA000000000000000000000000000000000C6 +S315E0752FB000000000000000000000000000000000B6 +S315E0752FC000000000000000000000000000000000A6 +S315E0752FD00000000000000000000000000000000096 +S315E0752FE00000000000000000000000000000000086 +S315E0752FF00000000000000000000000000000000076 +S315E07530000000000000000000000000000000000065 +S315E07530100000000000000000000000000000000055 +S315E07530200000000000000000000000000000000045 +S315E07530300000000000000000000000000000000035 +S315E07530400000000000000000000000000000000025 +S315E07530500000000000000000000000000000000015 +S315E07530600000000000000000000000000000000005 +S315E0753070000000003E49000000000000000000006E +S315E075308000000000000000000000000000000000E5 +S315E075309000000000000000000000000000000000D5 +S315E07530A000000000000000000000000000000000C5 +S315E07530B000000000000000000000000000000000B5 +S315E07530C000000000000000000000000000000000A5 +S315E07530D00000000000000000000000000000000095 +S315E07530E00000000000000000000000000000000085 +S315E07530F00000000000000000000000000000000075 +S315E07531000000000000000000000000000000000064 +S315E07531100000000000000000000000000000000054 +S315E07531200000000000000000000000000000000044 +S315E07531300000000000000000000000000000000034 +S315E07531400000000000000000000000000000000024 +S315E07531500000000000000000000000000000000014 +S315E07531600000000000000000000000000000000004 +S315E075317000000000000000000000000000000000F4 +S315E075318000000000000000000000000000000000E4 +S315E075319000000000000000000000000000000000D4 +S315E07531A000000000000000000000000000000000C4 +S315E07531B000000000000000000000000000000000B4 +S315E07531C000000000000000000000000000000000A4 +S315E07531D00000000000000000000000000000000094 +S315E07531E0000000000000000000000000003E4900FD +S315E07531F00000000000000000000000000000000074 +S315E07532000000000000000000000000000000000063 +S315E07532100000000000000000000000000000000053 +S315E07532200000000000000000000000000000000043 +S315E07532300000000000000000000000000000000033 +S315E07532400000000000000000000000000000000023 +S315E07532500000000000000000000000000000000013 +S315E07532600000000000000000000000000000000003 +S315E075327000000000000000000000000000000000F3 +S315E075328000000000000000000000000000000000E3 +S315E075329000000000000000000000000000000000D3 +S315E07532A000000000000000000000000000000000C3 +S315E07532B000000000000000000000000000000000B3 +S315E07532C000000000000000000000000000000000A3 +S315E07532D00000000000000000000000000000000093 +S315E07532E00000000000000000000000000000000083 +S315E07532F00000000000000000000000000000000073 +S315E07533000000000000000000000000000000000062 +S315E07533100000000000000000000000000000000052 +S315E07533200000000000000000000000000000000042 +S315E07533300000000000000000000000000000000032 +S315E07533400000000000000000000000000000000022 +S315E07533500000000000000000000000000000000012 +S315E07533600000000000003E4900000000000000007B +S315E075337000000000000000000000000000000000F2 +S315E075338000000000000000000000000000000000E2 +S315E075339000000000000000000000000000000000D2 +S315E07533A000000000000000000000000000000000C2 +S315E07533B000000000000000000000000000000000B2 +S315E07533C000000000000000000000000000000000A2 +S315E07533D00000000000000000000000000000000092 +S315E07533E00000000000000000000000000000000082 +S315E07533F00000000000000000000000000000000072 +S315E07534000000000000000000000000000000000061 +S315E07534100000000000000000000000000000000051 +S315E07534200000000000000000000000000000000041 +S315E07534300000000000000000000000000000000031 +S315E07534400000000000000000000000000000000021 +S315E07534500000000000000000000000000000000011 +S315E07534600000000000000000000000000000000001 +S315E075347000000000000000000000000000000000F1 +S315E075348000000000000000000000000000000000E1 +S315E075349000000000000000000000000000000000D1 +S315E07534A000000000000000000000000000000000C1 +S315E07534B000000000000000000000000000000000B1 +S315E07534C000000000000000000000000000000000A1 +S315E07534D00000000000000000000000000000003E53 +S315E07534E04900000000000000000000000000000038 +S315E07534F00000000000000000000000000000000071 +S315E07535000000000000000000000000000000000060 +S315E07535100000000000000000000000000000000050 +S315E07535200000000000000000000000000000000040 +S315E07535300000000000000000000000000000000030 +S315E07535400000000000000000000000000000000020 +S315E07535500000000000000000000000000000000010 +S315E07535600000000000000000000000000000000000 +S315E075357000000000000000000000000000000000F0 +S315E075358000000000000000000000000000000000E0 +S315E075359000000000000000000000000000000000D0 +S315E07535A000000000000000000000000000000000C0 +S315E07535B000000000000000000000000000000000B0 +S315E07535C000000000000000000000000000000000A0 +S315E07535D00000000000000000000000000000000090 +S315E07535E00000000000000000000000000000000080 +S315E07535F00000000000000000000000000000000070 +S315E0753600000000000000000000000000000000005F +S315E0753610000000000000000000000000000000004F +S315E0753620000000000000000000000000000000003F +S315E0753630000000000000000000000000000000002F +S315E0753640000000000000000000000000000000001F +S315E075365000000000000000003E4900000000000088 +S315E075366000000000000000000000000000000000FF +S315E075367000000000000000000000000000000000EF +S315E075368000000000000000000000000000000000DF +S315E075369000000000000000000000000000000000CF +S315E07536A000000000000000000000000000000000BF +S315E07536B000000000000000000000000000000000AF +S315E07536C0000000000000000000000000000000009F +S315E07536D0000000000000000000000000000000008F +S315E07536E0000000000000000000000000000000007F +S315E07536F0000000000000000000000000000000006F +S315E0753700000000000000000000000000000000005E +S315E0753710000000000000000000000000000000004E +S315E0753720000000000000000000000000000000003E +S315E0753730000000000000000000000000000000002E +S315E0753740000000000000000000000000000000001E +S315E0753750000000000000000000000000000000000E +S315E075376000000000000000000000000000000000FE +S315E075377000000000000000000000000000000000EE +S315E075378000000000000000000000000000000000DE +S315E075379000000000000000000000000000000000CE +S315E07537A000000000000000000000000000000000BE +S315E07537B000000000000000000000000000000000AE +S315E07537C0000000000000000000000000000000009E +S315E07537D0003E490000000000000000000000000007 +S315E07537E0000000000000000000000000000000007E +S315E07537F0000000000000000000000000000000006E +S315E0753800000000000000000000000000000000005D +S315E0753810000000000000000000000000000000004D +S315E0753820000000000000000000000000000000003D +S315E0753830000000000000000000000000000000002D +S315E0753840000000000000000000000000000000001D +S315E0753850000000000000000000000000000000000D +S315E075386000000000000000000000000000000000FD +S315E075387000000000000000000000000000000000ED +S315E075388000000000000000000000000000000000DD +S315E075389000000000000000000000000000000000CD +S315E07538A000000000000000000000000000000000BD +S315E07538B000000000000000000000000000000000AD +S315E07538C0000000000000000000000000000000009D +S315E07538D0000000000000000000000000000000008D +S315E07538E0000000000000000000000000000000007D +S315E07538F0000000000000000000000000000000006D +S315E0753900000000000000000000000000000000005C +S315E0753910000000000000000000000000000000004C +S315E0753920000000000000000000000000000000003C +S315E0753930000000000000000000000000000000002C +S315E0753940000000000000000000003E490000000095 +S315E0753950000000000000000000000000000000000C +S315E075396000000000000000000000000000000000FC +S315E075397000000000000000000000000000000000EC +S315E075398000000000000000000000000000000000DC +S315E075399000000000000000000000000000000000CC +S315E07539A000000000000000000000000000000000BC +S315E07539B000000000000000000000000000000000AC +S315E07539C0000000000000000000000000000000009C +S315E07539D0000000000000000000000000000000008C +S315E07539E0000000000000000000000000000000007C +S315E07539F0000000000000000000000000000000006C +S315E0753A00000000000000000000000000000000005B +S315E0753A10000000000000000000000000000000004B +S315E0753A20000000000000000000000000000000003B +S315E0753A30000000000000000000000000000000002B +S315E0753A40000000000000000000000000000000001B +S315E0753A50000000000000000000000000000000000B +S315E0753A6000000000000000000000000000000000FB +S315E0753A7000000000000000000000000000000000EB +S315E0753A8000000000000000000000000000000000DB +S315E0753A9000000000000000000000000000000000CB +S315E0753AA000000000000000000000000000000000BB +S315E0753AB000000000000000000000000000000000AB +S315E0753AC00000003E49000000000000000000000014 +S315E0753AD0000000000000000000000000000000008B +S315E0753AE0000000000000000000000000000000007B +S315E0753AF0000000000000000000000000000000006B +S315E0753B00000000000000000000000000000000005A +S315E0753B10000000000000000000000000000000004A +S315E0753B20000000000000000000000000000000003A +S315E0753B30000000000000000000000000000000002A +S315E0753B40000000000000000000000000000000001A +S315E0753B50000000000000000000000000000000000A +S315E0753B6000000000000000000000000000000000FA +S315E0753B7000000000000000000000000000000000EA +S315E0753B8000000000000000000000000000000000DA +S315E0753B9000000000000000000000000000000000CA +S315E0753BA000000000000000000000000000000000BA +S315E0753BB000000000000000000000000000000000AA +S315E0753BC0000000000000000000000000000000009A +S315E0753BD0000000000000000000000000000000008A +S315E0753BE0000000000000000000000000000000007A +S315E0753BF0000000000000000000000000000000006A +S315E0753C000000000000000000000000000000000059 +S315E0753C100000000000000000000000000000000049 +S315E0753C200000000000000000000000000000000039 +S315E0753C300000000000000000000000003E490000A2 +S315E0753C400000000000000000000000000000000019 +S315E0753C500000000000000000000000000000000009 +S315E0753C6000000000000000000000000000000000F9 +S315E0753C7000000000000000000000000000000000E9 +S315E0753C8000000000000000000000000000000000D9 +S315E0753C9000000000000000000000000000000000C9 +S315E0753CA000000000000000000000000000000000B9 +S315E0753CB000000000000000000000000000000000A9 +S315E0753CC00000000000000000000000000000000099 +S315E0753CD00000000000000000000000000000000089 +S315E0753CE00000000000000000000000000000000079 +S315E0753CF00000000000000000000000000000000069 +S315E0753D000000000000000000000000000000000058 +S315E0753D100000000000000000000000000000000048 +S315E0753D200000000000000000000000000000000038 +S315E0753D300000000000000000000000000000000028 +S315E0753D400000000000000000000000000000000018 +S315E0753D500000000000000000000000000000000008 +S315E0753D6000000000000000000000000000000000F8 +S315E0753D7000000000000000000000000000000000E8 +S315E0753D8000000000000000000000000000000000D8 +S315E0753D9000000000000000000000000000000000C8 +S315E0753DA000000000000000000000000000000000B8 +S315E0753DB000000000003E4900000000000000000021 +S315E0753DC00000000000000000000000000000000098 +S315E0753DD00000000000000000000000000000000088 +S315E0753DE00000000000000000000000000000000078 +S315E0753DF00000000000000000000000000000000068 +S315E0753E000000000000000000000000000000000057 +S315E0753E100000000000000000000000000000000047 +S315E0753E200000000000000000000000000000000037 +S315E0753E300000000000000000000000000000000027 +S315E0753E400000000000000000000000000000000017 +S315E0753E500000000000000000000000000000000007 +S315E0753E6000000000000000000000000000000000F7 +S315E0753E7000000000000000000000000000000000E7 +S315E0753E8000000000000000000000000000000000D7 +S315E0753E9000000000000000000000000000000000C7 +S315E0753EA000000000000000000000000000000000B7 +S315E0753EB000000000000000000000000000000000A7 +S315E0753EC00000000000000000000000000000000097 +S315E0753ED00000000000000000000000000000000087 +S315E0753EE00000000000000000000000000000000077 +S315E0753EF00000000000000000000000000000000067 +S315E0753F000000000000000000000000000000000056 +S315E0753F100000000000000000000000000000000046 +S315E0753F2000000000000000000000000000003E49AF +S315E0753F300000000000000000000000000000000026 +S315E0753F400000000000000000000000000000000016 +S315E0753F500000000000000000000000000000000006 +S315E0753F6000000000000000000000000000000000F6 +S315E0753F7000000000000000000000000000000000E6 +S315E0753F8000000000000000000000000000000000D6 +S315E0753F9000000000000000000000000000000000C6 +S315E0753FA000000000000000000000000000000000B6 +S315E0753FB000000000000000000000000000000000A6 +S315E0753FC00000000000000000000000000000000096 +S315E0753FD00000000000000000000000000000000086 +S315E0753FE00000000000000000000000000000000076 +S315E0753FF00000000000000000000000000000000066 +S315E07540000000000000000000000000000000000055 +S315E07540100000000000000000000000000000000045 +S315E07540200000000000000000000000000000000035 +S315E07540300000000000000000000000000000000025 +S315E07540400000000000000000000000000000000015 +S315E07540500000000000000000000000000000000005 +S315E075406000000000000000000000000000000000F5 +S315E075407000000000000000000000000000000000E5 +S315E075408000000000000000000000000000000000D5 +S315E075409000000000000000000000000000000000C5 +S315E07540A0000000000000003E49000000000000002E +S315E07540B000000000000000000000000000000000A5 +S315E07540C00000000000000000000000000000000095 +S315E07540D00000000000000000000000000000000085 +S315E07540E00000000000000000000000000000000075 +S315E07540F00000000000000000000000000000000065 +S315E07541000000000000000000000000000000000054 +S315E07541100000000000000000000000000000000044 +S315E07541200000000000000000000000000000000034 +S315E07541300000000000000000000000000000000024 +S315E07541400000000000000000000000000000000014 +S315E07541500000000000000000000000000000000004 +S315E075416000000000000000000000000000000000F4 +S315E075417000000000000000000000000000000000E4 +S315E075418000000000000000000000000000000000D4 +S315E075419000000000000000000000000000000000C4 +S315E07541A000000000000000000000000000000000B4 +S315E07541B000000000000000000000000000000000A4 +S315E07541C00000000000000000000000000000000094 +S315E07541D00000000000000000000000000000000084 +S315E07541E00000000000000000000000000000000074 +S315E07541F00000000000000000000000000000000064 +S315E07542000000000000000000000000000000000053 +S315E07542100000000000000000000000000000000043 +S315E07542203E490000000000000000000000000000AC +S315E07542300000000000000000000000000000000023 +S315E07542400000000000000000000000000000000013 +S315E07542500000000000000000000000000000000003 +S315E075426000000000000000000000000000000000F3 +S315E075427000000000000000000000000000000000E3 +S315E075428000000000000000000000000000000000D3 +S315E075429000000000000000000000000000000000C3 +S315E07542A000000000000000000000000000000000B3 +S315E07542B000000000000000000000000000000000A3 +S315E07542C00000000000000000000000000000000093 +S315E07542D00000000000000000000000000000000083 +S315E07542E00000000000000000000000000000000073 +S315E07542F00000000000000000000000000000000063 +S315E07543000000000000000000000000000000000052 +S315E07543100000000000000000000000000000000042 +S315E07543200000000000000000000000000000000032 +S315E07543300000000000000000000000000000000022 +S315E07543400000000000000000000000000000000012 +S315E07543500000000000000000000000000000000002 +S315E075436000000000000000000000000000000000F2 +S315E075437000000000000000000000000000000000E2 +S315E075438000000000000000000000000000000000D2 +S315E07543900000000000000000003E4900000000003B +S315E07543A000000000000000000000000000000000B2 +S315E07543B000000000000000000000000000000000A2 +S315E07543C00000000000000000000000000000000092 +S315E07543D00000000000000000000000000000000082 +S315E07543E00000000000000000000000000000000072 +S315E07543F00000000000000000000000000000000062 +S315E07544000000000000000000000000000000000051 +S315E07544100000000000000000000000000000000041 +S315E07544200000000000000000000000000000000031 +S315E07544300000000000000000000000000000000021 +S315E07544400000000000000000000000000000000011 +S315E07544500000000000000000000000000000000001 +S315E075446000000000000000000000000000000000F1 +S315E075447000000000000000000000000000000000E1 +S315E075448000000000000000000000000000000000D1 +S315E075449000000000000000000000000000000000C1 +S315E07544A000000000000000000000000000000000B1 +S315E07544B000000000000000000000000000000000A1 +S315E07544C00000000000000000000000000000000091 +S315E07544D00000000000000000000000000000000081 +S315E07544E00000000000000000000000000000000071 +S315E07544F00000000000000000000000000000000061 +S315E07545000000000000000000000000000000000050 +S315E075451000003E49000000000000000000000000B9 +S315E07545200000000000000000000000000000000030 +S315E07545300000000000000000000000000000000020 +S315E07545400000000000000000000000000000000010 +S315E07545500000000000000000000000000000000000 +S315E075456000000000000000000000000000000000F0 +S315E075457000000000000000000000000000000000E0 +S315E075458000000000000000000000000000000000D0 +S315E075459000000000000000000000000000000000C0 +S315E07545A000000000000000000000000000000000B0 +S315E07545B000000000000000000000000000000000A0 +S315E07545C00000000000000000000000000000000090 +S315E07545D00000000000000000000000000000000080 +S315E07545E00000000000000000000000000000000070 +S315E07545F00000000000000000000000000000000060 +S315E0754600000000000000000000000000000000004F +S315E0754610000000000000000000000000000000003F +S315E0754620000000000000000000000000000000002F +S315E0754630000000000000000000000000000000001F +S315E0754640000000000000000000000000000000000F +S315E075465000000000000000000000000000000000FF +S315E075466000000000000000000000000000000000EF +S315E075467000000000000000000000000000000000DF +S315E075468000000000000000000000003E4900000048 +S315E075469000000000000000000000000000000000BF +S315E07546A000000000000000000000000000000000AF +S315E07546B0000000000000000000000000000000009F +S315E07546C0000000000000000000000000000000008F +S315E07546D0000000000000000000000000000000007F +S315E07546E0000000000000000000000000000000006F +S315E07546F0000000000000000000000000000000005F +S315E0754700000000000000000000000000000000004E +S315E0754710000000000000000000000000000000003E +S315E0754720000000000000000000000000000000002E +S315E0754730000000000000000000000000000000001E +S315E0754740000000000000000000000000000000000E +S315E075475000000000000000000000000000000000FE +S315E075476000000000000000000000000000000000EE +S315E075477000000000000000000000000000000000DE +S315E075478000000000000000000000000000000000CE +S315E075479000000000000000000000000000000000BE +S315E07547A000000000000000000000000000000000AE +S315E07547B0000000000000000000000000000000009E +S315E07547C0000000000000000000000000000000008E +S315E07547D0000000000000000000000000000000007E +S315E07547E0000000000000000000000000000000006E +S315E07547F0000000000000000000000000000000005E +S315E0754800000000003E4900000000000000000000C6 +S315E0754810000000000000000000000000000000003D +S315E0754820000000000000000000000000000000002D +S315E0754830000000000000000000000000000000001D +S315E0754840000000000000000000000000000000000D +S315E075485000000000000000000000000000000000FD +S315E075486000000000000000000000000000000000ED +S315E075487000000000000000000000000000000000DD +S315E075488000000000000000000000000000000000CD +S315E075489000000000000000000000000000000000BD +S315E07548A000000000000000000000000000000000AD +S315E07548B0000000000000000000000000000000009D +S315E07548C0000000000000000000000000000000008D +S315E07548D0000000000000000000000000000000007D +S315E07548E0000000000000000000000000000000006D +S315E07548F0000000000000000000000000000000005D +S315E0754900000000000000000000000000000000004C +S315E0754910000000000000000000000000000000003C +S315E0754920000000000000000000000000000000002C +S315E0754930000000000000000000000000000000001C +S315E0754940000000000000000000000000000000000C +S315E075495000000000000000000000000000000000FC +S315E075496000000000000000000000000000000000EC +S315E0754970000000000000000000000000003E490055 +S315E075498000000000000000000000000000000000CC +S315E075499000000000000000000000000000000000BC +S315E07549A000000000000000000000000000000000AC +S315E07549B0000000000000000000000000000000009C +S315E07549C0000000000000000000000000000000008C +S315E07549D0000000000000000000000000000000007C +S315E07549E0000000000000000000000000000000006C +S315E07549F0000000000000000000000000000000005C +S315E0754A00000000000000000000000000000000004B +S315E0754A10000000000000000000000000000000003B +S315E0754A20000000000000000000000000000000002B +S315E0754A30000000000000000000000000000000001B +S315E0754A40000000000000000000000000000000000B +S315E0754A5000000000000000000000000000000000FB +S315E0754A6000000000000000000000000000000000EB +S315E0754A7000000000000000000000000000000000DB +S315E0754A8000000000000000000000000000000000CB +S315E0754A9000000000000000000000000000000000BB +S315E0754AA000000000000000000000000000000000AB +S315E0754AB0000000000000000000000000000000009B +S315E0754AC0000000000000000000000000000000008B +S315E0754AD0000000000000000000000000000000007B +S315E0754AE0000000000000000000000000000000006B +S315E0754AF00000000000003E490000000000000000D4 +S315E0754B00000000000000000000000000000000004A +S315E0754B10000000000000000000000000000000003A +S315E0754B20000000000000000000000000000000002A +S315E0754B30000000000000000000000000000000001A +S315E0754B40000000000000000000000000000000000A +S315E0754B5000000000000000000000000000000000FA +S315E0754B6000000000000000000000000000000000EA +S315E0754B7000000000000000000000000000000000DA +S315E0754B8000000000000000000000000000000000CA +S315E0754B9000000000000000000000000000000000BA +S315E0754BA000000000000000000000000000000000AA +S315E0754BB0000000000000000000000000000000009A +S315E0754BC0000000000000000000000000000000008A +S315E0754BD0000000000000000000000000000000007A +S315E0754BE0000000000000000000000000000000006A +S315E0754BF0000000000000000000000000000000005A +S315E0754C000000000000000000000000000000000049 +S315E0754C100000000000000000000000000000000039 +S315E0754C200000000000000000000000000000000029 +S315E0754C300000000000000000000000000000000019 +S315E0754C400000000000000000000000000000000009 +S315E0754C5000000000000000000000000000000000F9 +S315E0754C600000000000000000000000000000003EAB +S315E0754C704900000000000000000000000000000090 +S315E0754C8000000000000000000000000000000000C9 +S315E0754C9000000000000000000000000000000000B9 +S315E0754CA000000000000000000000000000000000A9 +S315E0754CB00000000000000000000000000000000099 +S315E0754CC00000000000000000000000000000000089 +S315E0754CD00000000000000000000000000000000079 +S315E0754CE00000000000000000000000000000000069 +S315E0754CF00000000000000000000000000000000059 +S315E0754D000000000000000000000000000000000048 +S315E0754D100000000000000000000000000000000038 +S315E0754D200000000000000000000000000000000028 +S315E0754D300000000000000000000000000000000018 +S315E0754D400000000000000000000000000000000008 +S315E0754D5000000000000000000000000000000000F8 +S315E0754D6000000000000000000000000000000000E8 +S315E0754D7000000000000000000000000000000000D8 +S315E0754D8000000000000000000000000000000000C8 +S315E0754D9000000000000000000000000000000000B8 +S315E0754DA000000000000000000000000000000000A8 +S315E0754DB00000000000000000000000000000000098 +S315E0754DC00000000000000000000000000000000088 +S315E0754DD00000000000000000000000000000000078 +S315E0754DE000000000000000003E49000000000000E1 +S315E0754DF00000000000000000000000000000000058 +S315E0754E000000000000000000000000000000000047 +S315E0754E100000000000000000000000000000000037 +S315E0754E200000000000000000000000000000000027 +S315E0754E300000000000000000000000000000000017 +S315E0754E400000000000000000000000000000000007 +S315E0754E5000000000000000000000000000000000F7 +S315E0754E6000000000000000000000000000000000E7 +S315E0754E7000000000000000000000000000000000D7 +S315E0754E8000000000000000000000000000000000C7 +S315E0754E9000000000000000000000000000000000B7 +S315E0754EA000000000000000000000000000000000A7 +S315E0754EB00000000000000000000000000000000097 +S315E0754EC00000000000000000000000000000000087 +S315E0754ED00000000000000000000000000000000077 +S315E0754EE00000000000000000000000000000000067 +S315E0754EF00000000000000000000000000000000057 +S315E0754F000000000000000000000000000000000046 +S315E0754F100000000000000000000000000000000036 +S315E0754F200000000000000000000000000000000026 +S315E0754F300000000000000000000000000000000016 +S315E0754F400000000000000000000000000000000006 +S315E0754F5000000000000000000000000000000000F6 +S315E0754F60003E49000000000000000000000000005F +S315E0754F7000000000000000000000000000000000D6 +S315E0754F8000000000000000000000000000000000C6 +S315E0754F9000000000000000000000000000000000B6 +S315E0754FA000000000000000000000000000000000A6 +S315E0754FB00000000000000000000000000000000096 +S315E0754FC00000000000000000000000000000000086 +S315E0754FD00000000000000000000000000000000076 +S315E0754FE00000000000000000000000000000000066 +S315E0754FF00000000000000000000000000000000056 +S315E07550000000000000000000000000000000000045 +S315E07550100000000000000000000000000000000035 +S315E07550200000000000000000000000000000000025 +S315E07550300000000000000000000000000000000015 +S315E07550400000000000000000000000000000000005 +S315E075505000000000000000000000000000000000F5 +S315E075506000000000000000000000000000000000E5 +S315E075507000000000000000000000000000000000D5 +S315E075508000000000000000000000000000000000C5 +S315E075509000000000000000000000000000000000B5 +S315E07550A000000000000000000000000000000000A5 +S315E07550B00000000000000000000000000000000095 +S315E07550C00000000000000000000000000000000085 +S315E07550D0000000000000000000003E4900000000EE +S315E07550E00000000000000000000000000000000065 +S315E07550F00000000000000000000000000000000055 +S315E07551000000000000000000000000000000000044 +S315E07551100000000000000000000000000000000034 +S315E07551200000000000000000000000000000000024 +S315E07551300000000000000000000000000000000014 +S315E07551400000000000000000000000000000000004 +S315E075515000000000000000000000000000000000F4 +S315E075516000000000000000000000000000000000E4 +S315E075517000000000000000000000000000000000D4 +S315E075518000000000000000000000000000000000C4 +S315E075519000000000000000000000000000000000B4 +S315E07551A000000000000000000000000000000000A4 +S315E07551B00000000000000000000000000000000094 +S315E07551C00000000000000000000000000000000084 +S315E07551D00000000000000000000000000000000074 +S315E07551E00000000000000000000000000000000064 +S315E07551F00000000000000000000000000000000054 +S315E07552000000000000000000000000000000000043 +S315E07552100000000000000000000000000000000033 +S315E07552200000000000000000000000000000000023 +S315E07552300000000000000000000000000000000013 +S315E07552400000000000000000000000000000000003 +S315E07552500000003E4900000000000000000000006C +S315E075526000000000000000000000000000000000E3 +S315E075527000000000000000000000000000000000D3 +S315E075528000000000000000000000000000000000C3 +S315E075529000000000000000000000000000000000B3 +S315E07552A000000000000000000000000000000000A3 +S315E07552B00000000000000000000000000000000093 +S315E07552C00000000000000000000000000000000083 +S315E07552D00000000000000000000000000000000073 +S315E07552E00000000000000000000000000000000063 +S315E07552F00000000000000000000000000000000053 +S315E07553000000000000000000000000000000000042 +S315E07553100000000000000000000000000000000032 +S315E07553200000000000000000000000000000000022 +S315E07553300000000000000000000000000000000012 +S315E07553400000000000000000000000000000000002 +S315E075535000000000000000000000000000000000F2 +S315E075536000000000000000000000000000000000E2 +S315E075537000000000000000000000000000000000D2 +S315E075538000000000000000000000000000000000C2 +S315E075539000000000000000000000000000000000B2 +S315E07553A000000000000000000000000000000000A2 +S315E07553B00000000000000000000000000000000092 +S315E07553C00000000000000000000000003E490000FB +S315E07553D00000000000000000000000000000000072 +S315E07553E00000000000000000000000000000000062 +S315E07553F00000000000000000000000000000000052 +S315E07554000000000000000000000000000000000041 +S315E07554100000000000000000000000000000000031 +S315E07554200000000000000000000000000000000021 +S315E07554300000000000000000000000000000000011 +S315E07554400000000000000000000000000000000001 +S315E075545000000000000000000000000000000000F1 +S315E075546000000000000000000000000000000000E1 +S315E075547000000000000000000000000000000000D1 +S315E075548000000000000000000000000000000000C1 +S315E075549000000000000000000000000000000000B1 +S315E07554A000000000000000000000000000000000A1 +S315E07554B00000000000000000000000000000000091 +S315E07554C00000000000000000000000000000000081 +S315E07554D00000000000000000000000000000000071 +S315E07554E00000000000000000000000000000000061 +S315E07554F00000000000000000000000000000000051 +S315E07555000000000000000000000000000000000040 +S315E07555100000000000000000000000000000000030 +S315E07555200000000000000000000000000000000020 +S315E07555300000000000000000000000000000000010 +S315E075554000000000003E4900000000000000000079 +S315E075555000000000000000000000000000000000F0 +S315E075556000000000000000000000000000000000E0 +S315E075557000000000000000000000000000000000D0 +S315E075558000000000000000000000000000000000C0 +S315E075559000000000000000000000000000000000B0 +S315E07555A000000000000000000000000000000000A0 +S315E07555B00000000000000000000000000000000090 +S315E07555C00000000000000000000000000000000080 +S315E07555D00000000000000000000000000000000070 +S315E07555E00000000000000000000000000000000060 +S315E07555F00000000000000000000000000000000050 +S315E0755600000000000000000000000000000000003F +S315E0755610000000000000000000000000000000002F +S315E0755620000000000000000000000000000000001F +S315E0755630000000000000000000000000000000000F +S315E075564000000000000000000000000000000000FF +S315E075565000000000000000000000000000000000EF +S315E075566000000000000000000000000000000000DF +S315E075567000000000000000000000000000000000CF +S315E075568000000000000000000000000000000000BF +S315E075569000000000000000000000000000000000AF +S315E07556A0000000000000000000000000000000009F +S315E07556B000000000000000000000000000003E4908 +S315E07556C0000000000000000000000000000000007F +S315E07556D0000000000000000000000000000000006F +S315E07556E0000000000000000000000000000000005F +S315E07556F0000000000000000000000000000000004F +S315E0755700000000000000000000000000000000003E +S315E0755710000000000000000000000000000000002E +S315E0755720000000000000000000000000000000001E +S315E0755730000000000000000000000000000000000E +S315E075574000000000000000000000000000000000FE +S315E075575000000000000000000000000000000000EE +S315E075576000000000000000000000000000000000DE +S315E075577000000000000000000000000000000000CE +S315E075578000000000000000000000000000000000BE +S315E075579000000000000000000000000000000000AE +S315E07557A0000000000000000000000000000000009E +S315E07557B0000000000000000000000000000000008E +S315E07557C0000000000000000000000000000000007E +S315E07557D0000000000000000000000000000000006E +S315E07557E0000000000000000000000000000000005E +S315E07557F0000000000000000000000000000000004E +S315E0755800000000000000000000000000000000003D +S315E0755810000000000000000000000000000000002D +S315E0755820000000000000000000000000000000001D +S315E0755830000000000000003E490000000000000086 +S315E075584000000000000000000000000000000000FD +S315E075585000000000000000000000000000000000ED +S315E075586000000000000000000000000000000000DD +S315E075587000000000000000000000000000000000CD +S315E075588000000000000000000000000000000000BD +S315E075589000000000000000000000000000000000AD +S315E07558A0000000000000000000000000000000009D +S315E07558B0000000000000000000000000000000008D +S315E07558C0000000000000000000000000000000007D +S315E07558D0000000000000000000000000000000006D +S315E07558E0000000000000000000000000000000005D +S315E07558F0000000000000000000000000000000004D +S315E0755900000000000000000000000000000000003C +S315E0755910000000000000000000000000000000002C +S315E0755920000000000000000000000000000000001C +S315E0755930000000000000000000000000000000000C +S315E075594000000000000000000000000000000000FC +S315E075595000000000000000000000000000000000EC +S315E075596000000000000000000000000000000000DC +S315E075597000000000000000000000000000000000CC +S315E075598000000000000000000000000000000000BC +S315E075599000000000000000000000000000000000AC +S315E07559A0000000000000000000000000000000009C +S315E07559B03E49000000000000000000000000000005 +S315E07559C0000000000000000000000000000000007C +S315E07559D0000000000000000000000000000000006C +S315E07559E0000000000000000000000000000000005C +S315E07559F0000000000000000000000000000000004C +S315E0755A00000000000000000000000000000000003B +S315E0755A10000000000000000000000000000000002B +S315E0755A20000000000000000000000000000000001B +S315E0755A30000000000000000000000000000000000B +S315E0755A4000000000000000000000000000000000FB +S315E0755A5000000000000000000000000000000000EB +S315E0755A6000000000000000000000000000000000DB +S315E0755A7000000000000000000000000000000000CB +S315E0755A8000000000000000000000000000000000BB +S315E0755A9000000000000000000000000000000000AB +S315E0755AA0000000000000000000000000000000009B +S315E0755AB0000000000000000000000000000000008B +S315E0755AC0000000000000000000000000000000007B +S315E0755AD0000000000000000000000000000000006B +S315E0755AE0000000000000000000000000000000005B +S315E0755AF0000000000000000000000000000000004B +S315E0755B00000000000000000000000000000000003A +S315E0755B10000000000000000000000000000000002A +S315E0755B200000000000000000003E49000000000093 +S315E0755B30000000000000000000000000000000000A +S315E0755B4000000000000000000000000000000000FA +S315E0755B5000000000000000000000000000000000EA +S315E0755B6000000000000000000000000000000000DA +S315E0755B7000000000000000000000000000000000CA +S315E0755B8000000000000000000000000000000000BA +S315E0755B9000000000000000000000000000000000AA +S315E0755BA0000000000000000000000000000000009A +S315E0755BB0000000000000000000000000000000008A +S315E0755BC0000000000000000000000000000000007A +S315E0755BD0000000000000000000000000000000006A +S315E0755BE0000000000000000000000000000000005A +S315E0755BF0000000000000000000000000000000004A +S315E0755C000000000000000000000000000000000039 +S315E0755C100000000000000000000000000000000029 +S315E0755C200000000000000000000000000000000019 +S315E0755C300000000000000000000000000000000009 +S315E0755C4000000000000000000000000000000000F9 +S315E0755C5000000000000000000000000000000000E9 +S315E0755C6000000000000000000000000000000000D9 +S315E0755C7000000000000000000000000000000000C9 +S315E0755C8000000000000000000000000000000000B9 +S315E0755C9000000000000000000000000000000000A9 +S315E0755CA000003E4900000000000000000000000012 +S315E0755CB00000000000000000000000000000000089 +S315E0755CC00000000000000000000000000000000079 +S315E0755CD00000000000000000000000000000000069 +S315E0755CE00000000000000000000000000000000059 +S315E0755CF00000000000000000000000000000000049 +S315E0755D000000000000000000000000000000000038 +S315E0755D100000000000000000000000000000000028 +S315E0755D200000000000000000000000000000000018 +S315E0755D300000000000000000000000000000000008 +S315E0755D4000000000000000000000000000000000F8 +S315E0755D5000000000000000000000000000000000E8 +S315E0755D6000000000000000000000000000000000D8 +S315E0755D7000000000000000000000000000000000C8 +S315E0755D8000000000000000000000000000000000B8 +S315E0755D9000000000000000000000000000000000A8 +S315E0755DA00000000000000000000000000000000098 +S315E0755DB00000000000000000000000000000000088 +S315E0755DC00000000000000000000000000000000078 +S315E0755DD00000000000000000000000000000000068 +S315E0755DE00000000000000000000000000000000058 +S315E0755DF00000000000000000000000000000000048 +S315E0755E000000000000000000000000000000000037 +S315E0755E1000000000000000000000003E49000000A0 +S315E0755E200000000000000000000000000000000017 +S315E0755E300000000000000000000000000000000007 +S315E0755E4000000000000000000000000000000000F7 +S315E0755E5000000000000000000000000000000000E7 +S315E0755E6000000000000000000000000000000000D7 +S315E0755E7000000000000000000000000000000000C7 +S315E0755E8000000000000000000000000000000000B7 +S315E0755E9000000000000000000000000000000000A7 +S315E0755EA00000000000000000000000000000000097 +S315E0755EB00000000000000000000000000000000087 +S315E0755EC00000000000000000000000000000000077 +S315E0755ED00000000000000000000000000000000067 +S315E0755EE00000000000000000000000000000000057 +S315E0755EF00000000000000000000000000000000047 +S315E0755F000000000000000000000000000000000036 +S315E0755F100000000000000000000000000000000026 +S315E0755F200000000000000000000000000000000016 +S315E0755F300000000000000000000000000000000006 +S315E0755F4000000000000000000000000000000000F6 +S315E0755F5000000000000000000000000000000000E6 +S315E0755F6000000000000000000000000000000000D6 +S315E0755F7000000000000000000000000000000000C6 +S315E0755F8000000000000000000000000000000000B6 +S315E0755F90000000003E49000000000000000000001F +S315E0755FA00000000000000000000000000000000096 +S315E0755FB00000000000000000000000000000000086 +S315E0755FC00000000000000000000000000000000076 +S315E0755FD00000000000000000000000000000000066 +S315E0755FE00000000000000000000000000000000056 +S315E0755FF00000000000000000000000000000000046 +S315E07560000000000000000000000000000000000035 +S315E07560100000000000000000000000000000000025 +S315E07560200000000000000000000000000000000015 +S315E07560300000000000000000000000000000000005 +S315E075604000000000000000000000000000000000F5 +S315E075605000000000000000000000000000000000E5 +S315E075606000000000000000000000000000000000D5 +S315E075607000000000000000000000000000000000C5 +S315E075608000000000000000000000000000000000B5 +S315E075609000000000000000000000000000000000A5 +S315E07560A00000000000000000000000000000000095 +S315E07560B00000000000000000000000000000000085 +S315E07560C00000000000000000000000000000000075 +S315E07560D00000000000000000000000000000000065 +S315E07560E00000000000000000000000000000000055 +S315E07560F00000000000000000000000000000000045 +S315E0756100000000000000000000000000003E4900AD +S315E07561100000000000000000000000000000000024 +S315E07561200000000000000000000000000000000014 +S315E07561300000000000000000000000000000000004 +S315E075614000000000000000000000000000000000F4 +S315E075615000000000000000000000000000000000E4 +S315E075616000000000000000000000000000000000D4 +S315E075617000000000000000000000000000000000C4 +S315E075618000000000000000000000000000000000B4 +S315E075619000000000000000000000000000000000A4 +S315E07561A00000000000000000000000000000000094 +S315E07561B00000000000000000000000000000000084 +S315E07561C00000000000000000000000000000000074 +S315E07561D00000000000000000000000000000000064 +S315E07561E00000000000000000000000000000000054 +S315E07561F00000000000000000000000000000000044 +S315E07562000000000000000000000000000000000033 +S315E07562100000000000000000000000000000000023 +S315E07562200000000000000000000000000000000013 +S315E07562300000000000000000000000000000000003 +S315E075624000000000000000000000000000000000F3 +S315E075625000000000000000000000000000000000E3 +S315E075626000000000000000000000000000000000D3 +S315E075627000000000000000000000000000000000C3 +S315E07562800000000000003E4900000000000000002C +S315E075629000000000000000000000000000000000A3 +S315E07562A00000000000000000000000000000000093 +S315E07562B00000000000000000000000000000000083 +S315E07562C00000000000000000000000000000000073 +S315E07562D00000000000000000000000000000000063 +S315E07562E00000000000000000000000000000000053 +S315E07562F00000000000000000000000000000000043 +S315E07563000000000000000000000000000000000032 +S315E07563100000000000000000000000000000000022 +S315E07563200000000000000000000000000000000012 +S315E07563300000000000000000000000000000000002 +S315E075634000000000000000000000000000000000F2 +S315E075635000000000000000000000000000000000E2 +S315E075636000000000000000000000000000000000D2 +S315E075637000000000000000000000000000000000C2 +S315E075638000000000000000000000000000000000B2 +S315E075639000000000000000000000000000000000A2 +S315E07563A00000000000000000000000000000000092 +S315E07563B00000000000000000000000000000000082 +S315E07563C00000000000000000000000000000000072 +S315E07563D00000000000000000000000000000000062 +S315E07563E00000000000000000000000000000000052 +S315E07563F00000000000000000000000000000003E04 +S315E075640049000000000000000000000000000000E8 +S315E07564100000000000000000000000000000000021 +S315E07564200000000000000000000000000000000011 +S315E07564300000000000000000000000000000000001 +S315E075644000000000000000000000000000000000F1 +S315E075645000000000000000000000000000000000E1 +S315E075646000000000000000000000000000000000D1 +S315E075647000000000000000000000000000000000C1 +S315E075648000000000000000000000000000000000B1 +S315E075649000000000000000000000000000000000A1 +S315E07564A00000000000000000000000000000000091 +S315E07564B00000000000000000000000000000000081 +S315E07564C00000000000000000000000000000000071 +S315E07564D00000000000000000000000000000000061 +S315E07564E00000000000000000000000000000000051 +S315E07564F00000000000000000000000000000000041 +S315E07565000000000000000000000000000000000030 +S315E07565100000000000000000000000000000000020 +S315E07565200000000000000000000000000000000010 +S315E07565300000000000000000000000000000000000 +S315E075654000000000000000000000000000000000F0 +S315E075655000000000000000000000000000000000E0 +S315E075656000000000000000000000000000000000D0 +S315E075657000000000000000003E4900000000000039 +S315E075658000000000000000000000000000000000B0 +S315E075659000000000000000000000000000000000A0 +S315E07565A00000000000000000000000000000000090 +S315E07565B00000000000000000000000000000000080 +S315E07565C00000000000000000000000000000000070 +S315E07565D00000000000000000000000000000000060 +S315E07565E00000000000000000000000000000000050 +S315E07565F00000000000000000000000000000000040 +S315E0756600000000000000000000000000000000002F +S315E0756610000000000000000000000000000000001F +S315E0756620000000000000000000000000000000000F +S315E075663000000000000000000000000000000000FF +S315E075664000000000000000000000000000000000EF +S315E075665000000000000000000000000000000000DF +S315E075666000000000000000000000000000000000CF +S315E075667000000000000000000000000000000000BF +S315E075668000000000000000000000000000000000AF +S315E0756690000000000000000000000000000000009F +S315E07566A0000000000000000000000000000000008F +S315E07566B0000000000000000000000000000000007F +S315E07566C0000000000000000000000000000000006F +S315E07566D0000000000000000000000000000000005F +S315E07566E0000000000000000000000000000000004F +S315E07566F0003E4900000000000000000000000000B8 +S315E0756700000000000000000000000000000000002E +S315E0756710000000000000000000000000000000001E +S315E0756720000000000000000000000000000000000E +S315E075673000000000000000000000000000000000FE +S315E075674000000000000000000000000000000000EE +S315E075675000000000000000000000000000000000DE +S315E075676000000000000000000000000000000000CE +S315E075677000000000000000000000000000000000BE +S315E075678000000000000000000000000000000000AE +S315E0756790000000000000000000000000000000009E +S315E07567A0000000000000000000000000000000008E +S315E07567B0000000000000000000000000000000007E +S315E07567C0000000000000000000000000000000006E +S315E07567D0000000000000000000000000000000005E +S315E07567E0000000000000000000000000000000004E +S315E07567F0000000000000000000000000000000003E +S315E0756800000000000000000000000000000000002D +S315E0756810000000000000000000000000000000001D +S315E0756820000000000000000000000000000000000D +S315E075683000000000000000000000000000000000FD +S315E075684000000000000000000000000000000000ED +S315E075685000000000000000000000000000000000DD +S315E0756860000000000000000000003E490000000046 +S315E075687000000000000000000000000000000000BD +S315E075688000000000000000000000000000000000AD +S315E0756890000000000000000000000000000000009D +S315E07568A0000000000000000000000000000000008D +S315E07568B0000000000000000000000000000000007D +S315E07568C0000000000000000000000000000000006D +S315E07568D0000000000000000000000000000000005D +S315E07568E0000000000000000000000000000000004D +S315E07568F0000000000000000000000000000000003D +S315E0756900000000000000000000000000000000002C +S315E0756910000000000000000000000000000000001C +S315E0756920000000000000000000000000000000000C +S315E075693000000000000000000000000000000000FC +S315E075694000000000000000000000000000000000EC +S315E075695000000000000000000000000000000000DC +S315E075696000000000000000000000000000000000CC +S315E075697000000000000000000000000000000000BC +S315E075698000000000000000000000000000000000AC +S315E0756990000000000000000000000000000000009C +S315E07569A0000000000000000000000000000000008C +S315E07569B0000000000000000000000000000000007C +S315E07569C0000000000000000000000000000000006C +S315E07569D0000000000000000000000000000000005C +S315E07569E00000003E490000000000000000000000C5 +S315E07569F0000000000000000000000000000000003C +S315E0756A00000000000000000000000000000000002B +S315E0756A10000000000000000000000000000000001B +S315E0756A20000000000000000000000000000000000B +S315E0756A3000000000000000000000000000000000FB +S315E0756A4000000000000000000000000000000000EB +S315E0756A5000000000000000000000000000000000DB +S315E0756A6000000000000000000000000000000000CB +S315E0756A7000000000000000000000000000000000BB +S315E0756A8000000000000000000000000000000000AB +S315E0756A90000000000000000000000000000000009B +S315E0756AA0000000000000000000000000000000008B +S315E0756AB0000000000000000000000000000000007B +S315E0756AC0000000000000000000000000000000006B +S315E0756AD0000000000000000000000000000000005B +S315E0756AE0000000000000000000000000000000004B +S315E0756AF0000000000000000000000000000000003B +S315E0756B00000000000000000000000000000000002A +S315E0756B10000000000000000000000000000000001A +S315E0756B20000000000000000000000000000000000A +S315E0756B3000000000000000000000000000000000FA +S315E0756B4000000000000000000000000000000000EA +S315E0756B500000000000000000000000003E49000053 +S315E0756B6000000000000000000000000000000000CA +S315E0756B7000000000000000000000000000000000BA +S315E0756B8000000000000000000000000000000000AA +S315E0756B90000000000000000000000000000000009A +S315E0756BA0000000000000000000000000000000008A +S315E0756BB0000000000000000000000000000000007A +S315E0756BC0000000000000000000000000000000006A +S315E0756BD0000000000000000000000000000000005A +S315E0756BE0000000000000000000000000000000004A +S315E0756BF0000000000000000000000000000000003A +S315E0756C000000000000000000000000000000000029 +S315E0756C100000000000000000000000000000000019 +S315E0756C200000000000000000000000000000000009 +S315E0756C3000000000000000000000000000000000F9 +S315E0756C4000000000000000000000000000000000E9 +S315E0756C5000000000000000000000000000000000D9 +S315E0756C6000000000000000000000000000000000C9 +S315E0756C7000000000000000000000000000000000B9 +S315E0756C8000000000000000000000000000000000A9 +S315E0756C900000000000000000000000000000000099 +S315E0756CA00000000000000000000000000000000089 +S315E0756CB00000000000000000000000000000000079 +S315E0756CC00000000000000000000000000000000069 +S315E0756CD000000000003E49000000000000000000D2 +S315E0756CE00000000000000000000000000000000049 +S315E0756CF00000000000000000000000000000000039 +S315E0756D000000000000000000000000000000000028 +S315E0756D100000000000000000000000000000000018 +S315E0756D200000000000000000000000000000000008 +S315E0756D3000000000000000000000000000000000F8 +S315E0756D4000000000000000000000000000000000E8 +S315E0756D5000000000000000000000000000000000D8 +S315E0756D6000000000000000000000000000000000C8 +S315E0756D7000000000000000000000000000000000B8 +S315E0756D8000000000000000000000000000000000A8 +S315E0756D900000000000000000000000000000000098 +S315E0756DA00000000000000000000000000000000088 +S315E0756DB00000000000000000000000000000000078 +S315E0756DC00000000000000000000000000000000068 +S315E0756DD00000000000000000000000000000000058 +S315E0756DE00000000000000000000000000000000048 +S315E0756DF00000000000000000000000000000000038 +S315E0756E000000000000000000000000000000000027 +S315E0756E100000000000000000000000000000000017 +S315E0756E200000000000000000000000000000000007 +S315E0756E3000000000000000000000000000000000F7 +S315E0756E4000000000000000000000000000003E4960 +S315E0756E5000000000000000000000000000000000D7 +S315E0756E6000000000000000000000000000000000C7 +S315E0756E7000000000000000000000000000000000B7 +S315E0756E8000000000000000000000000000000000A7 +S315E0756E900000000000000000000000000000000097 +S315E0756EA00000000000000000000000000000000087 +S315E0756EB00000000000000000000000000000000077 +S315E0756EC00000000000000000000000000000000067 +S315E0756ED00000000000000000000000000000000057 +S315E0756EE00000000000000000000000000000000047 +S315E0756EF00000000000000000000000000000000037 +S315E0756F000000000000000000000000000000000026 +S315E0756F100000000000000000000000000000000016 +S315E0756F200000000000000000000000000000000006 +S315E0756F3000000000000000000000000000000000F6 +S315E0756F4000000000000000000000000000000000E6 +S315E0756F5000000000000000000000000000000000D6 +S315E0756F6000000000000000000000000000000000C6 +S315E0756F7000000000000000000000000000000000B6 +S315E0756F8000000000000000000000000000000000A6 +S315E0756F900000000000000000000000000000000096 +S315E0756FA00000000000000000000000000000000086 +S315E0756FB00000000000000000000000000000000076 +S315E0756FC0000000000000003E4900000000000000DF +S315E0756FD00000000000000000000000000000000056 +S315E0756FE00000000000000000000000000000000046 +S315E0756FF00000000000000000000000000000000036 +S315E07570000000000000000000000000000000000025 +S315E07570100000000000000000000000000000000015 +S315E07570200000000000000000000000000000000005 +S315E075703000000000000000000000000000000000F5 +S315E075704000000000000000000000000000000000E5 +S315E075705000000000000000000000000000000000D5 +S315E075706000000000000000000000000000000000C5 +S315E075707000000000000000000000000000000000B5 +S315E075708000000000000000000000000000000000A5 +S315E07570900000000000000000000000000000000095 +S315E07570A00000000000000000000000000000000085 +S315E07570B00000000000000000000000000000000075 +S315E07570C00000000000000000000000000000000065 +S315E07570D00000000000000000000000000000000055 +S315E07570E00000000000000000000000000000000045 +S315E07570F00000000000000000000000000000000035 +S315E07571000000000000000000000000000000000024 +S315E07571100000000000000000000000000000000014 +S315E07571200000000000000000000000000000000004 +S315E075713000000000000000000000000000000000F4 +S315E07571403E4900000000000000000000000000005D +S315E075715000000000000000000000000000000000D4 +S315E075716000000000000000000000000000000000C4 +S315E075717000000000000000000000000000000000B4 +S315E075718000000000000000000000000000000000A4 +S315E07571900000000000000000000000000000000094 +S315E07571A00000000000000000000000000000000084 +S315E07571B00000000000000000000000000000000074 +S315E07571C00000000000000000000000000000000064 +S315E07571D00000000000000000000000000000000054 +S315E07571E00000000000000000000000000000000044 +S315E07571F00000000000000000000000000000000034 +S315E07572000000000000000000000000000000000023 +S315E07572100000000000000000000000000000000013 +S315E07572200000000000000000000000000000000003 +S315E075723000000000000000000000000000000000F3 +S315E075724000000000000000000000000000000000E3 +S315E075725000000000000000000000000000000000D3 +S315E075726000000000000000000000000000000000C3 +S315E075727000000000000000000000000000000000B3 +S315E075728000000000000000000000000000000000A3 +S315E07572900000000000000000000000000000000093 +S315E07572A00000000000000000000000000000000083 +S315E07572B00000000000000000003E490000000000EC +S315E07572C00000000000000000000000000000000063 +S315E07572D00000000000000000000000000000000053 +S315E07572E00000000000000000000000000000000043 +S315E07572F00000000000000000000000000000000033 +S315E07573000000000000000000000000000000000022 +S315E07573100000000000000000000000000000000012 +S315E07573200000000000000000000000000000000002 +S315E075733000000000000000000000000000000000F2 +S315E075734000000000000000000000000000000000E2 +S315E075735000000000000000000000000000000000D2 +S315E075736000000000000000000000000000000000C2 +S315E075737000000000000000000000000000000000B2 +S315E075738000000000000000000000000000000000A2 +S315E07573900000000000000000000000000000000092 +S315E07573A00000000000000000000000000000000082 +S315E07573B00000000000000000000000000000000072 +S315E07573C00000000000000000000000000000000062 +S315E07573D00000000000000000000000000000000052 +S315E07573E00000000000000000000000000000000042 +S315E07573F00000000000000000000000000000000032 +S315E07574000000000000000000000000000000000021 +S315E07574100000000000000000000000000000000011 +S315E07574200000000000000000000000000000000001 +S315E075743000003E490000000000000000000000006A +S315E075744000000000000000000000000000000000E1 +S315E075745000000000000000000000000000000000D1 +S315E075746000000000000000000000000000000000C1 +S315E075747000000000000000000000000000000000B1 +S315E075748000000000000000000000000000000000A1 +S315E07574900000000000000000000000000000000091 +S315E07574A00000000000000000000000000000000081 +S315E07574B00000000000000000000000000000000071 +S315E07574C00000000000000000000000000000000061 +S315E07574D00000000000000000000000000000000051 +S315E07574E00000000000000000000000000000000041 +S315E07574F00000000000000000000000000000000031 +S315E07575000000000000000000000000000000000020 +S315E07575100000000000000000000000000000000010 +S315E07575200000000000000000000000000000000000 +S315E075753000000000000000000000000000000000F0 +S315E075754000000000000000000000000000000000E0 +S315E075755000000000000000000000000000000000D0 +S315E075756000000000000000000000000000000000C0 +S315E075757000000000000000000000000000000000B0 +S315E075758000000000000000000000000000000000A0 +S315E07575900000000000000000000000000000000090 +S315E07575A000000000000000000000003E49000000F9 +S315E07575B00000000000000000000000000000000070 +S315E07575C00000000000000000000000000000000060 +S315E07575D00000000000000000000000000000000050 +S315E07575E00000000000000000000000000000000040 +S315E07575F00000000000000000000000000000000030 +S315E0757600000000000000000000000000000000001F +S315E0757610000000000000000000000000000000000F +S315E075762000000000000000000000000000000000FF +S315E075763000000000000000000000000000000000EF +S315E075764000000000000000000000000000000000DF +S315E075765000000000000000000000000000000000CF +S315E075766000000000000000000000000000000000BF +S315E075767000000000000000000000000000000000AF +S315E0757680000000000000000000000000000000009F +S315E0757690000000000000000000000000000000008F +S315E07576A0000000000000000000000000000000007F +S315E07576B0000000000000000000000000000000006F +S315E07576C0000000000000000000000000000000005F +S315E07576D0000000000000000000000000000000004F +S315E07576E0000000000000000000000000000000003F +S315E07576F0000000000000000000000000000000002F +S315E0757700000000000000000000000000000000001E +S315E0757710000000000000000000000000000000000E +S315E0757720000000003E490000000000000000000077 +S315E075773000000000000000000000000000000000EE +S315E075774000000000000000000000000000000000DE +S315E075775000000000000000000000000000000000CE +S315E075776000000000000000000000000000000000BE +S315E075777000000000000000000000000000000000AE +S315E0757780000000000000000000000000000000009E +S315E0757790000000000000000000000000000000008E +S315E07577A0000000000000000000000000000000007E +S315E07577B0000000000000000000000000000000006E +S315E07577C0000000000000000000000000000000005E +S315E07577D0000000000000000000000000000000004E +S315E07577E0000000000000000000000000000000003E +S315E07577F0000000000000000000000000000000002E +S315E0757800000000000000000000000000000000001D +S315E0757810000000000000000000000000000000000D +S315E075782000000000000000000000000000000000FD +S315E075783000000000000000000000000000000000ED +S315E075784000000000000000000000000000000000DD +S315E075785000000000000000000000000000000000CD +S315E075786000000000000000000000000000000000BD +S315E075787000000000000000000000000000000000AD +S315E0757880000000000000000000000000000000009D +S315E0757890000000000000000000000000003E490006 +S315E07578A0000000000000000000000000000000007D +S315E07578B0000000000000000000000000000000006D +S315E07578C0000000000000000000000000000000005D +S315E07578D0000000000000000000000000000000004D +S315E07578E0000000000000000000000000000000003D +S315E07578F0000000000000000000000000000000002D +S315E0757900000000000000000000000000000000001C +S315E0757910000000000000000000000000000000000C +S315E075792000000000000000000000000000000000FC +S315E075793000000000000000000000000000000000EC +S315E075794000000000000000000000000000000000DC +S315E075795000000000000000000000000000000000CC +S315E075796000000000000000000000000000000000BC +S315E075797000000000000000000000000000000000AC +S315E0757980000000000000000000000000000000009C +S315E0757990000000000000000000000000000000008C +S315E07579A0000000000000000000000000000000007C +S315E07579B0000000000000000000000000000000006C +S315E07579C0000000000000000000000000000000005C +S315E07579D0000000000000000000000000000000004C +S315E07579E0000000000000000000000000000000003C +S315E07579F0000000000000000000000000000000002C +S315E0757A00000000000000000000000000000000001B +S315E0757A100000000000003E49000000000000000084 +S315E0757A2000000000000000000000000000000000FB +S315E0757A3000000000000000000000000000000000EB +S315E0757A4000000000000000000000000000000000DB +S315E0757A5000000000000000000000000000000000CB +S315E0757A6000000000000000000000000000000000BB +S315E0757A7000000000000000000000000000000000AB +S315E0757A80000000000000000000000000000000009B +S315E0757A90000000000000000000000000000000008B +S315E0757AA0000000000000000000000000000000007B +S315E0757AB0000000000000000000000000000000006B +S315E0757AC0000000000000000000000000000000005B +S315E0757AD0000000000000000000000000000000004B +S315E0757AE0000000000000000000000000000000003B +S315E0757AF0000000000000000000000000000000002B +S315E0757B00000000000000000000000000000000001A +S315E0757B10000000000000000000000000000000000A +S315E0757B2000000000000000000000000000000000FA +S315E0757B3000000000000000000000000000000000EA +S315E0757B4000000000000000000000000000000000DA +S315E0757B5000000000000000000000000000000000CA +S315E0757B6000000000000000000000000000000000BA +S315E0757B7000000000000000000000000000000000AA +S315E0757B800000000000000000000000000000003E5C +S315E0757B904900000000000000000000000000000041 +S315E0757BA0000000000000000000000000000000007A +S315E0757BB0000000000000000000000000000000006A +S315E0757BC0000000000000000000000000000000005A +S315E0757BD0000000000000000000000000000000004A +S315E0757BE0000000000000000000000000000000003A +S315E0757BF0000000000000000000000000000000002A +S315E0757C000000000000000000000000000000000019 +S315E0757C100000000000000000000000000000000009 +S315E0757C2000000000000000000000000000000000F9 +S315E0757C3000000000000000000000000000000000E9 +S315E0757C4000000000000000000000000000000000D9 +S315E0757C5000000000000000000000000000000000C9 +S315E0757C6000000000000000000000000000000000B9 +S315E0757C7000000000000000000000000000000000A9 +S315E0757C800000000000000000000000000000000099 +S315E0757C900000000000000000000000000000000089 +S315E0757CA00000000000000000000000000000000079 +S315E0757CB00000000000000000000000000000000069 +S315E0757CC00000000000000000000000000000000059 +S315E0757CD00000000000000000000000000000000049 +S315E0757CE00000000000000000000000000000000039 +S315E0757CF00000000000000000000000000000000029 +S315E0757D0000000000000000003E4900000000000091 +S315E0757D100000000000000000000000000000000008 +S315E0757D2000000000000000000000000000000000F8 +S315E0757D3000000000000000000000000000000000E8 +S315E0757D4000000000000000000000000000000000D8 +S315E0757D5000000000000000000000000000000000C8 +S315E0757D6000000000000000000000000000000000B8 +S315E0757D7000000000000000000000000000000000A8 +S315E0757D800000000000000000000000000000000098 +S315E0757D900000000000000000000000000000000088 +S315E0757DA00000000000000000000000000000000078 +S315E0757DB00000000000000000000000000000000068 +S315E0757DC00000000000000000000000000000000058 +S315E0757DD00000000000000000000000000000000048 +S315E0757DE00000000000000000000000000000000038 +S315E0757DF00000000000000000000000000000000028 +S315E0757E000000000000000000000000000000000017 +S315E0757E100000000000000000000000000000000007 +S315E0757E2000000000000000000000000000000000F7 +S315E0757E3000000000000000000000000000000000E7 +S315E0757E4000000000000000000000000000000000D7 +S315E0757E5000000000000000000000000000000000C7 +S315E0757E6000000000000000000000000000000000B7 +S315E0757E7000000000000000000000000000000000A7 +S315E0757E80003E490000000000000000000000000010 +S315E0757E900000000000000000000000000000000087 +S315E0757EA00000000000000000000000000000000077 +S315E0757EB00000000000000000000000000000000067 +S315E0757EC00000000000000000000000000000000057 +S315E0757ED00000000000000000000000000000000047 +S315E0757EE00000000000000000000000000000000037 +S315E0757EF00000000000000000000000000000000027 +S315E0757F000000000000000000000000000000000016 +S315E0757F100000000000000000000000000000000006 +S315E0757F2000000000000000000000000000000000F6 +S315E0757F3000000000000000000000000000000000E6 +S315E0757F4000000000000000000000000000000000D6 +S315E0757F5000000000000000000000000000000000C6 +S315E0757F6000000000000000000000000000000000B6 +S315E0757F7000000000000000000000000000000000A6 +S315E0757F800000000000000000000000000000000096 +S315E0757F900000000000000000000000000000000086 +S315E0757FA00000000000000000000000000000000076 +S315E0757FB00000000000000000000000000000000066 +S315E0757FC00000000000000000000000000000000056 +S315E0757FD00000000000000000000000000000000046 +S315E0757FE00000000000000000000000000000000036 +S315E0757FF0000000000000000000003E49000000009F +S315E07580000000000000000000000000000000000015 +S315E07580100000000000000000000000000000000005 +S315E075802000000000000000000000000000000000F5 +S315E075803000000000000000000000000000000000E5 +S315E075804000000000000000000000000000000000D5 +S315E075805000000000000000000000000000000000C5 +S315E075806000000000000000000000000000000000B5 +S315E075807000000000000000000000000000000000A5 +S315E07580800000000000000000000000000000000095 +S315E07580900000000000000000000000000000000085 +S315E07580A00000000000000000000000000000000075 +S315E07580B00000000000000000000000000000000065 +S315E07580C00000000000000000000000000000000055 +S315E07580D00000000000000000000000000000000045 +S315E07580E00000000000000000000000000000000035 +S315E07580F00000000000000000000000000000000025 +S315E07581000000000000000000000000000000000014 +S315E07581100000000000000000000000000000000004 +S315E075812000000000000000000000000000000000F4 +S315E075813000000000000000000000000000000000E4 +S315E075814000000000000000000000000000000000D4 +S315E075815000000000000000000000000000000000C4 +S315E075816000000000000000000000000000000000B4 +S315E07581700000003E4900000000000000000000001D +S315E07581800000000000000000000000000000000094 +S315E07581900000000000000000000000000000000084 +S315E07581A00000000000000000000000000000000074 +S315E07581B00000000000000000000000000000000064 +S315E07581C00000000000000000000000000000000054 +S315E07581D00000000000000000000000000000000044 +S315E07581E00000000000000000000000000000000034 +S315E07581F00000000000000000000000000000000024 +S315E07582000000000000000000000000000000000013 +S315E07582100000000000000000000000000000000003 +S315E075822000000000000000000000000000000000F3 +S315E075823000000000000000000000000000000000E3 +S315E075824000000000000000000000000000000000D3 +S315E075825000000000000000000000000000000000C3 +S315E075826000000000000000000000000000000000B3 +S315E075827000000000000000000000000000000000A3 +S315E07582800000000000000000000000000000000093 +S315E07582900000000000000000000000000000000083 +S315E07582A00000000000000000000000000000000073 +S315E07582B00000000000000000000000000000000063 +S315E07582C00000000000000000000000000000000053 +S315E07582D00000000000000000000000000000000043 +S315E07582E00000000000000000000000003E490000AC +S315E07582F00000000000000000000000000000000023 +S315E07583000000000000000000000000000000000012 +S315E07583100000000000000000000000000000000002 +S315E075832000000000000000000000000000000000F2 +S315E075833000000000000000000000000000000000E2 +S315E075834000000000000000000000000000000000D2 +S315E075835000000000000000000000000000000000C2 +S315E075836000000000000000000000000000000000B2 +S315E075837000000000000000000000000000000000A2 +S315E07583800000000000000000000000000000000092 +S315E07583900000000000000000000000000000000082 +S315E07583A00000000000000000000000000000000072 +S315E07583B00000000000000000000000000000000062 +S315E07583C00000000000000000000000000000000052 +S315E07583D00000000000000000000000000000000042 +S315E07583E00000000000000000000000000000000032 +S315E07583F00000000000000000000000000000000022 +S315E07584000000000000000000000000000000000011 +S315E07584100000000000000000000000000000000001 +S315E075842000000000000000000000000000000000F1 +S315E075843000000000000000000000000000000000E1 +S315E075844000000000000000000000000000000000D1 +S315E075845000000000000000000000000000000000C1 +S315E075846000000000003E490000000000000000002A +S315E075847000000000000000000000000000000000A1 +S315E07584800000000000000000000000000000000091 +S315E07584900000000000000000000000000000000081 +S315E07584A00000000000000000000000000000000071 +S315E07584B00000000000000000000000000000000061 +S315E07584C00000000000000000000000000000000051 +S315E07584D00000000000000000000000000000000041 +S315E07584E00000000000000000000000000000000031 +S315E07584F00000000000000000000000000000000021 +S315E07585000000000000000000000000000000000010 +S315E07585100000000000000000000000000000000000 +S315E075852000000000000000000000000000000000F0 +S315E075853000000000000000000000000000000000E0 +S315E075854000000000000000000000000000000000D0 +S315E075855000000000000000000000000000000000C0 +S315E075856000000000000000000000000000000000B0 +S315E075857000000000000000000000000000000000A0 +S315E07585800000000000000000000000000000000090 +S315E07585900000000000000000000000000000000080 +S315E07585A00000000000000000000000000000000070 +S315E07585B00000000000000000000000000000000060 +S315E07585C00000000000000000000000000000000050 +S315E07585D000000000000000000000000000003E49B9 +S315E07585E00000000000000000000000000000000030 +S315E07585F00000000000000000000000000000000020 +S315E0758600000000000000000000000000000000000F +S315E075861000000000000000000000000000000000FF +S315E075862000000000000000000000000000000000EF +S315E075863000000000000000000000000000000000DF +S315E075864000000000000000000000000000000000CF +S315E075865000000000000000000000000000000000BF +S315E075866000000000000000000000000000000000AF +S315E0758670000000000000000000000000000000009F +S315E0758680000000000000000000000000000000008F +S315E0758690000000000000000000000000000000007F +S315E07586A0000000000000000000000000000000006F +S315E07586B0000000000000000000000000000000005F +S315E07586C0000000000000000000000000000000004F +S315E07586D0000000000000000000000000000000003F +S315E07586E0000000000000000000000000000000002F +S315E07586F0000000000000000000000000000000001F +S315E0758700000000000000000000000000000000000E +S315E075871000000000000000000000000000000000FE +S315E075872000000000000000000000000000000000EE +S315E075873000000000000000000000000000000000DE +S315E075874000000000000000000000000000000000CE +S315E0758750000000000000003E490000000000000037 +S315E075876000000000000000000000000000000000AE +S315E0758770000000000000000000000000000000009E +S315E0758780000000000000000000000000000000008E +S315E0758790000000000000000000000000000000007E +S315E07587A0000000000000000000000000000000006E +S315E07587B0000000000000000000000000000000005E +S315E07587C0000000000000000000000000000000004E +S315E07587D0000000000000000000000000000000003E +S315E07587E0000000000000000000000000000000002E +S315E07587F0000000000000000000000000000000001E +S315E0758800000000000000000000000000000000000D +S315E075881000000000000000000000000000000000FD +S315E075882000000000000000000000000000000000ED +S315E075883000000000000000000000000000000000DD +S315E075884000000000000000000000000000000000CD +S315E075885000000000000000000000000000000000BD +S315E075886000000000000000000000000000000000AD +S315E0758870000000000000000000000000000000009D +S315E0758880000000000000000000000000000000008D +S315E0758890000000000000000000000000000000007D +S315E07588A0000000000000000000000000000000006D +S315E07588B0000000000000000000000000000000005D +S315E07588C0000000000000000000000000000000004D +S315E07588D03E490000000000000000000000000000B6 +S315E07588E0000000000000000000000000000000002D +S315E07588F0000000000000000000000000000000001D +S315E0758900000000000000000000000000000000000C +S315E075891000000000000000000000000000000000FC +S315E075892000000000000000000000000000000000EC +S315E075893000000000000000000000000000000000DC +S315E075894000000000000000000000000000000000CC +S315E075895000000000000000000000000000000000BC +S315E075896000000000000000000000000000000000AC +S315E0758970000000000000000000000000000000009C +S315E0758980000000000000000000000000000000008C +S315E0758990000000000000000000000000000000007C +S315E07589A0000000000000000000000000000000006C +S315E07589B0000000000000000000000000000000005C +S315E07589C0000000000000000000000000000000004C +S315E07589D0000000000000000000000000000000003C +S315E07589E0000000000000000000000000000000002C +S315E07589F0000000000000000000000000000000001C +S315E0758A00000000000000000000000000000000000B +S315E0758A1000000000000000000000000000000000FB +S315E0758A2000000000000000000000000000000000EB +S315E0758A3000000000000000000000000000000000DB +S315E0758A400000000000000000003E49000000000044 +S315E0758A5000000000000000000000000000000000BB +S315E0758A6000000000000000000000000000000000AB +S315E0758A70000000000000000000000000000000009B +S315E0758A80000000000000000000000000000000008B +S315E0758A90000000000000000000000000000000007B +S315E0758AA0000000000000000000000000000000006B +S315E0758AB0000000000000000000000000000000005B +S315E0758AC0000000000000000000000000000000004B +S315E0758AD0000000000000000000000000000000003B +S315E0758AE0000000000000000000000000000000002B +S315E0758AF0000000000000000000000000000000001B +S315E0758B00000000000000000000000000000000000A +S315E0758B1000000000000000000000000000000000FA +S315E0758B2000000000000000000000000000000000EA +S315E0758B3000000000000000000000000000000000DA +S315E0758B4000000000000000000000000000000000CA +S315E0758B5000000000000000000000000000000000BA +S315E0758B6000000000000000000000000000000000AA +S315E0758B70000000000000000000000000000000009A +S315E0758B80000000000000000000000000000000008A +S315E0758B90000000000000000000000000000000007A +S315E0758BA0000000000000000000000000000000006A +S315E0758BB0000000000000000000000000000000005A +S315E0758BC000003E49000000000000000000000000C3 +S315E0758BD0000000000000000000000000000000003A +S315E0758BE0000000000000000000000000000000002A +S315E0758BF0000000000000000000000000000000001A +S315E0758C000000000000000000000000000000000009 +S315E0758C1000000000000000000000000000000000F9 +S315E0758C2000000000000000000000000000000000E9 +S315E0758C3000000000000000000000000000000000D9 +S315E0758C4000000000000000000000000000000000C9 +S315E0758C5000000000000000000000000000000000B9 +S315E0758C6000000000000000000000000000000000A9 +S315E0758C700000000000000000000000000000000099 +S315E0758C800000000000000000000000000000000089 +S315E0758C900000000000000000000000000000000079 +S315E0758CA00000000000000000000000000000000069 +S315E0758CB00000000000000000000000000000000059 +S315E0758CC00000000000000000000000000000000049 +S315E0758CD00000000000000000000000000000000039 +S315E0758CE00000000000000000000000000000000029 +S315E0758CF00000000000000000000000000000000019 +S315E0758D000000000000000000000000000000000008 +S315E0758D1000000000000000000000000000000000F8 +S315E0758D2000000000000000000000000000000000E8 +S315E0758D3000000000000000000000003E4900000051 +S315E0758D4000000000000000000000000000000000C8 +S315E0758D5000000000000000000000000000000000B8 +S315E0758D6000000000000000000000000000000000A8 +S315E0758D700000000000000000000000000000000098 +S315E0758D800000000000000000000000000000000088 +S315E0758D900000000000000000000000000000000078 +S315E0758DA00000000000000000000000000000000068 +S315E0758DB00000000000000000000000000000000058 +S315E0758DC00000000000000000000000000000000048 +S315E0758DD00000000000000000000000000000000038 +S315E0758DE00000000000000000000000000000000028 +S315E0758DF00000000000000000000000000000000018 +S315E0758E000000000000000000000000000000000007 +S315E0758E1000000000000000000000000000000000F7 +S315E0758E2000000000000000000000000000000000E7 +S315E0758E3000000000000000000000000000000000D7 +S315E0758E4000000000000000000000000000000000C7 +S315E0758E5000000000000000000000000000000000B7 +S315E0758E6000000000000000000000000000000000A7 +S315E0758E700000000000000000000000000000000097 +S315E0758E800000000000000000000000000000000087 +S315E0758E900000000000000000000000000000000077 +S315E0758EA00000000000000000000000000000000067 +S315E0758EB0000000003E4900000000000000000000D0 +S315E0758EC00000000000000000000000000000000047 +S315E0758ED00000000000000000000000000000000037 +S315E0758EE00000000000000000000000000000000027 +S315E0758EF00000000000000000000000000000000017 +S315E0758F000000000000000000000000000000000006 +S315E0758F1000000000000000000000000000000000F6 +S315E0758F2000000000000000000000000000000000E6 +S315E0758F3000000000000000000000000000000000D6 +S315E0758F4000000000000000000000000000000000C6 +S315E0758F5000000000000000000000000000000000B6 +S315E0758F6000000000000000000000000000000000A6 +S315E0758F700000000000000000000000000000000096 +S315E0758F800000000000000000000000000000000086 +S315E0758F900000000000000000000000000000000076 +S315E0758FA00000000000000000000000000000000066 +S315E0758FB00000000000000000000000000000000056 +S315E0758FC00000000000000000000000000000000046 +S315E0758FD00000000000000000000000000000000036 +S315E0758FE00000000000000000000000000000000026 +S315E0758FF00000000000000000000000000000000016 +S315E07590000000000000000000000000000000000005 +S315E075901000000000000000000000000000000000F5 +S315E0759020000000000000000000000000003E49005E +S315E075903000000000000000000000000000000000D5 +S315E075904000000000000000000000000000000000C5 +S315E075905000000000000000000000000000000000B5 +S315E075906000000000000000000000000000000000A5 +S315E07590700000000000000000000000000000000095 +S315E07590800000000000000000000000000000000085 +S315E07590900000000000000000000000000000000075 +S315E07590A00000000000000000000000000000000065 +S315E07590B00000000000000000000000000000000055 +S315E07590C00000000000000000000000000000000045 +S315E07590D00000000000000000000000000000000035 +S315E07590E00000000000000000000000000000000025 +S315E07590F00000000000000000000000000000000015 +S315E07591000000000000000000000000000000000004 +S315E075911000000000000000000000000000000000F4 +S315E075912000000000000000000000000000000000E4 +S315E075913000000000000000000000000000000000D4 +S315E075914000000000000000000000000000000000C4 +S315E075915000000000000000000000000000000000B4 +S315E075916000000000000000000000000000000000A4 +S315E07591700000000000000000000000000000000094 +S315E07591800000000000000000000000000000000084 +S315E07591900000000000000000000000000000000074 +S315E07591A00000000000003E490000000000000000DD +S315E07591B00000000000000000000000000000000054 +S315E07591C00000000000000000000000000000000044 +S315E07591D00000000000000000000000000000000034 +S315E07591E00000000000000000000000000000000024 +S315E07591F00000000000000000000000000000000014 +S315E07592000000000000000000000000000000000003 +S315E075921000000000000000000000000000000000F3 +S315E075922000000000000000000000000000000000E3 +S315E075923000000000000000000000000000000000D3 +S315E075924000000000000000000000000000000000C3 +S315E075925000000000000000000000000000000000B3 +S315E075926000000000000000000000000000000000A3 +S315E07592700000000000000000000000000000000093 +S315E07592800000000000000000000000000000000083 +S315E07592900000000000000000000000000000000073 +S315E07592A00000000000000000000000000000000063 +S315E07592B00000000000000000000000000000000053 +S315E07592C00000000000000000000000000000000043 +S315E07592D00000000000000000000000000000000033 +S315E07592E00000000000000000000000000000000023 +S315E07592F00000000000000000000000000000000013 +S315E07593000000000000000000000000000000000002 +S315E07593100000000000000000000000000000003EB4 +S315E07593204900000000000000000000000000000099 +S315E075933000000000000000000000000000000000D2 +S315E075934000000000000000000000000000000000C2 +S315E075935000000000000000000000000000000000B2 +S315E075936000000000000000000000000000000000A2 +S315E07593700000000000000000000000000000000092 +S315E07593800000000000000000000000000000000082 +S315E07593900000000000000000000000000000000072 +S315E07593A00000000000000000000000000000000062 +S315E07593B00000000000000000000000000000000052 +S315E07593C00000000000000000000000000000000042 +S315E07593D00000000000000000000000000000000032 +S315E07593E00000000000000000000000000000000022 +S315E07593F00000000000000000000000000000000012 +S315E07594000000000000000000000000000000000001 +S315E075941000000000000000000000000000000000F1 +S315E075942000000000000000000000000000000000E1 +S315E075943000000000000000000000000000000000D1 +S315E075944000000000000000000000000000000000C1 +S315E075945000000000000000000000000000000000B1 +S315E075946000000000000000000000000000000000A1 +S315E07594700000000000000000000000000000000091 +S315E07594800000000000000000000000000000000081 +S315E075949000000000000000003E49000000000000EA +S315E07594A00000000000000000000000000000000061 +S315E07594B00000000000000000000000000000000051 +S315E07594C00000000000000000000000000000000041 +S315E07594D00000000000000000000000000000000031 +S315E07594E00000000000000000000000000000000021 +S315E07594F00000000000000000000000000000000011 +S315E07595000000000000000000000000000000000000 +S315E075951000000000000000000000000000000000F0 +S315E075952000000000000000000000000000000000E0 +S315E075953000000000000000000000000000000000D0 +S315E075954000000000000000000000000000000000C0 +S315E075955000000000000000000000000000000000B0 +S315E075956000000000000000000000000000000000A0 +S315E07595700000000000000000000000000000000090 +S315E07595800000000000000000000000000000000080 +S315E07595900000000000000000000000000000000070 +S315E07595A00000000000000000000000000000000060 +S315E07595B00000000000000000000000000000000050 +S315E07595C00000000000000000000000000000000040 +S315E07595D00000000000000000000000000000000030 +S315E07595E00000000000000000000000000000000020 +S315E07595F00000000000000000000000000000000010 +S315E075960000000000000000000000000000000000FF +S315E0759610003E490000000000000000000000000068 +S315E075962000000000000000000000000000000000DF +S315E075963000000000000000000000000000000000CF +S315E075964000000000000000000000000000000000BF +S315E075965000000000000000000000000000000000AF +S315E0759660000000000000000000000000000000009F +S315E0759670000000000000000000000000000000008F +S315E0759680000000000000000000000000000000007F +S315E0759690000000000000000000000000000000006F +S315E07596A0000000000000000000000000000000005F +S315E07596B0000000000000000000000000000000004F +S315E07596C0000000000000000000000000000000003F +S315E07596D0000000000000000000000000000000002F +S315E07596E0000000000000000000000000000000001F +S315E07596F0000000000000000000000000000000000F +S315E075970000000000000000000000000000000000FE +S315E075971000000000000000000000000000000000EE +S315E075972000000000000000000000000000000000DE +S315E075973000000000000000000000000000000000CE +S315E075974000000000000000000000000000000000BE +S315E075975000000000000000000000000000000000AE +S315E0759760000000000000000000000000000000009E +S315E0759770000000000000000000000000000000008E +S315E0759780000000000000000000003E4900000000F7 +S315E0759790000000000000000000000000000000006E +S315E07597A0000000000000000000000000000000005E +S315E07597B0000000000000000000000000000000004E +S315E07597C0000000000000000000000000000000003E +S315E07597D0000000000000000000000000000000002E +S315E07597E0000000000000000000000000000000001E +S315E07597F0000000000000000000000000000000000E +S315E075980000000000000000000000000000000000FD +S315E075981000000000000000000000000000000000ED +S315E075982000000000000000000000000000000000DD +S315E075983000000000000000000000000000000000CD +S315E075984000000000000000000000000000000000BD +S315E075985000000000000000000000000000000000AD +S315E0759860000000000000000000000000000000009D +S315E0759870000000000000000000000000000000008D +S315E0759880000000000000000000000000000000007D +S315E0759890000000000000000000000000000000006D +S315E07598A0000000000000000000000000000000005D +S315E07598B0000000000000000000000000000000004D +S315E07598C0000000000000000000000000000000003D +S315E07598D0000000000000000000000000000000002D +S315E07598E0000000000000000000000000000000001D +S315E07598F0000000000000000000000000000000000D +S315E07599000000003E49000000000000000000000075 +S315E075991000000000000000000000000000000000EC +S315E075992000000000000000000000000000000000DC +S315E075993000000000000000000000000000000000CC +S315E075994000000000000000000000000000000000BC +S315E075995000000000000000000000000000000000AC +S315E0759960000000000000000000000000000000009C +S315E0759970000000000000000000000000000000008C +S315E0759980000000000000000000000000000000007C +S315E0759990000000000000000000000000000000006C +S315E07599A0000000000000000000000000000000005C +S315E07599B0000000000000000000000000000000004C +S315E07599C0000000000000000000000000000000003C +S315E07599D0000000000000000000000000000000002C +S315E07599E0000000000000000000000000000000001C +S315E07599F0000000000000000000000000000000000C +S315E0759A0000000000000000000000000000000000FB +S315E0759A1000000000000000000000000000000000EB +S315E0759A2000000000000000000000000000000000DB +S315E0759A3000000000000000000000000000000000CB +S315E0759A4000000000000000000000000000000000BB +S315E0759A5000000000000000000000000000000000AB +S315E0759A60000000000000000000000000000000009B +S315E0759A700000000000000000000000003E49000004 +S315E0759A80000000000000000000000000000000007B +S315E0759A90000000000000000000000000000000006B +S315E0759AA0000000000000000000000000000000005B +S315E0759AB0000000000000000000000000000000004B +S315E0759AC0000000000000000000000000000000003B +S315E0759AD0000000000000000000000000000000002B +S315E0759AE0000000000000000000000000000000001B +S315E0759AF0000000000000000000000000000000000B +S315E0759B0000000000000000000000000000000000FA +S315E0759B1000000000000000000000000000000000EA +S315E0759B2000000000000000000000000000000000DA +S315E0759B3000000000000000000000000000000000CA +S315E0759B4000000000000000000000000000000000BA +S315E0759B5000000000000000000000000000000000AA +S315E0759B60000000000000000000000000000000009A +S315E0759B70000000000000000000000000000000008A +S315E0759B80000000000000000000000000000000007A +S315E0759B90000000000000000000000000000000006A +S315E0759BA0000000000000000000000000000000005A +S315E0759BB0000000000000000000000000000000004A +S315E0759BC0000000000000000000000000000000003A +S315E0759BD0000000000000000000000000000000002A +S315E0759BE0000000000000000000000000000000001A +S315E0759BF000000000003E4900000000000000000083 +S315E0759C0000000000000000000000000000000000F9 +S315E0759C1000000000000000000000000000000000E9 +S315E0759C2000000000000000000000000000000000D9 +S315E0759C3000000000000000000000000000000000C9 +S315E0759C4000000000000000000000000000000000B9 +S315E0759C5000000000000000000000000000000000A9 +S315E0759C600000000000000000000000000000000099 +S315E0759C700000000000000000000000000000000089 +S315E0759C800000000000000000000000000000000079 +S315E0759C900000000000000000000000000000000069 +S315E0759CA00000000000000000000000000000000059 +S315E0759CB00000000000000000000000000000000049 +S315E0759CC00000000000000000000000000000000039 +S315E0759CD00000000000000000000000000000000029 +S315E0759CE00000000000000000000000000000000019 +S315E0759CF00000000000000000000000000000000009 +S315E0759D0000000000000000000000000000000000F8 +S315E0759D1000000000000000000000000000000000E8 +S315E0759D2000000000000000000000000000000000D8 +S315E0759D3000000000000000000000000000000000C8 +S315E0759D4000000000000000000000000000000000B8 +S315E0759D5000000000000000000000000000000000A8 +S315E0759D6000000000000000000000000000003E4911 +S315E0759D700000000000000000000000000000000088 +S315E0759D800000000000000000000000000000000078 +S315E0759D900000000000000000000000000000000068 +S315E0759DA00000000000000000000000000000000058 +S315E0759DB00000000000000000000000000000000048 +S315E0759DC00000000000000000000000000000000038 +S315E0759DD00000000000000000000000000000000028 +S315E0759DE00000000000000000000000000000000018 +S315E0759DF00000000000000000000000000000000008 +S315E0759E0000000000000000000000000000000000F7 +S315E0759E1000000000000000000000000000000000E7 +S315E0759E2000000000000000000000000000000000D7 +S315E0759E3000000000000000000000000000000000C7 +S315E0759E4000000000000000000000000000000000B7 +S315E0759E5000000000000000000000000000000000A7 +S315E0759E600000000000000000000000000000000097 +S315E0759E700000000000000000000000000000000087 +S315E0759E800000000000000000000000000000000077 +S315E0759E900000000000000000000000000000000067 +S315E0759EA00000000000000000000000000000000057 +S315E0759EB00000000000000000000000000000000047 +S315E0759EC00000000000000000000000000000000037 +S315E0759ED00000000000000000000000000000000027 +S315E0759EE0000000000000003E490000000000000090 +S315E0759EF00000000000000000000000000000000007 +S315E0759F0000000000000000000000000000000000F6 +S315E0759F1000000000000000000000000000000000E6 +S315E0759F2000000000000000000000000000000000D6 +S315E0759F3000000000000000000000000000000000C6 +S315E0759F4000000000000000000000000000000000B6 +S315E0759F5000000000000000000000000000000000A6 +S315E0759F600000000000000000000000000000000096 +S315E0759F700000000000000000000000000000000086 +S315E0759F800000000000000000000000000000000076 +S315E0759F900000000000000000000000000000000066 +S315E0759FA00000000000000000000000000000000056 +S315E0759FB00000000000000000000000000000000046 +S315E0759FC00000000000000000000000000000000036 +S315E0759FD00000000000000000000000000000000026 +S315E0759FE00000000000000000000000000000000016 +S315E0759FF00000000000000000000000000000000006 +S315E075A00000000000000000000000000000000000F5 +S315E075A01000000000000000000000000000000000E5 +S315E075A02000000000000000000000000000000000D5 +S315E075A03000000000000000000000000000000000C5 +S315E075A04000000000000000000000000000000000B5 +S315E075A05000000000000000000000000000000000A5 +S315E075A0603E4900000000000000000000000000000E +S315E075A0700000000000000000000000000000000085 +S315E075A0800000000000000000000000000000000075 +S315E075A0900000000000000000000000000000000065 +S315E075A0A00000000000000000000000000000000055 +S315E075A0B00000000000000000000000000000000045 +S315E075A0C00000000000000000000000000000000035 +S315E075A0D00000000000000000000000000000000025 +S315E075A0E00000000000000000000000000000000015 +S315E075A0F00000000000000000000000000000000005 +S315E075A10000000000000000000000000000000000F4 +S315E075A11000000000000000000000000000000000E4 +S315E075A12000000000000000000000000000000000D4 +S315E075A13000000000000000000000000000000000C4 +S315E075A14000000000000000000000000000000000B4 +S315E075A15000000000000000000000000000000000A4 +S315E075A1600000000000000000000000000000000094 +S315E075A1700000000000000000000000000000000084 +S315E075A1800000000000000000000000000000000074 +S315E075A1900000000000000000000000000000000064 +S315E075A1A00000000000000000000000000000000054 +S315E075A1B00000000000000000000000000000000044 +S315E075A1C00000000000000000000000000000000034 +S315E075A1D00000000000000000003E4900000000009D +S315E075A1E00000000000000000000000000000000014 +S315E075A1F00000000000000000000000000000000004 +S315E075A20000000000000000000000000000000000F3 +S315E075A21000000000000000000000000000000000E3 +S315E075A22000000000000000000000000000000000D3 +S315E075A23000000000000000000000000000000000C3 +S315E075A24000000000000000000000000000000000B3 +S315E075A25000000000000000000000000000000000A3 +S315E075A2600000000000000000000000000000000093 +S315E075A2700000000000000000000000000000000083 +S315E075A2800000000000000000000000000000000073 +S315E075A2900000000000000000000000000000000063 +S315E075A2A00000000000000000000000000000000053 +S315E075A2B00000000000000000000000000000000043 +S315E075A2C00000000000000000000000000000000033 +S315E075A2D00000000000000000000000000000000023 +S315E075A2E00000000000000000000000000000000013 +S315E075A2F00000000000000000000000000000000003 +S315E075A30000000000000000000000000000000000F2 +S315E075A31000000000000000000000000000000000E2 +S315E075A32000000000000000000000000000000000D2 +S315E075A33000000000000000000000000000000000C2 +S315E075A34000000000000000000000000000000000B2 +S315E075A35000003E490000000000000000000000001B +S315E075A3600000000000000000000000000000000092 +S315E075A3700000000000000000000000000000000082 +S315E075A3800000000000000000000000000000000072 +S315E075A3900000000000000000000000000000000062 +S315E075A3A00000000000000000000000000000000052 +S315E075A3B00000000000000000000000000000000042 +S315E075A3C00000000000000000000000000000000032 +S315E075A3D00000000000000000000000000000000022 +S315E075A3E00000000000000000000000000000000012 +S315E075A3F00000000000000000000000000000000002 +S315E075A40000000000000000000000000000000000F1 +S315E075A41000000000000000000000000000000000E1 +S315E075A42000000000000000000000000000000000D1 +S315E075A43000000000000000000000000000000000C1 +S315E075A44000000000000000000000000000000000B1 +S315E075A45000000000000000000000000000000000A1 +S315E075A4600000000000000000000000000000000091 +S315E075A4700000000000000000000000000000000081 +S315E075A4800000000000000000000000000000000071 +S315E075A4900000000000000000000000000000000061 +S315E075A4A00000000000000000000000000000000051 +S315E075A4B00000000000000000000000000000000041 +S315E075A4C000000000000000000000003E49000000AA +S315E075A4D00000000000000000000000000000000021 +S315E075A4E00000000000000000000000000000000011 +S315E075A4F00000000000000000000000000000000001 +S315E075A50000000000000000000000000000000000F0 +S315E075A51000000000000000000000000000000000E0 +S315E075A52000000000000000000000000000000000D0 +S315E075A53000000000000000000000000000000000C0 +S315E075A54000000000000000000000000000000000B0 +S315E075A55000000000000000000000000000000000A0 +S315E075A5600000000000000000000000000000000090 +S315E075A5700000000000000000000000000000000080 +S315E075A5800000000000000000000000000000000070 +S315E075A5900000000000000000000000000000000060 +S315E075A5A00000000000000000000000000000000050 +S315E075A5B00000000000000000000000000000000040 +S315E075A5C00000000000000000000000000000000030 +S315E075A5D00000000000000000000000000000000020 +S315E075A5E00000000000000000000000000000000010 +S315E075A5F00000000000000000000000000000000000 +S315E075A60000000000000000000000000000000000EF +S315E075A61000000000000000000000000000000000DF +S315E075A62000000000000000000000000000000000CF +S315E075A63000000000000000000000000000000000BF +S315E075A640000000003E490000000000000000000028 +S315E075A650000000000000000000000000000000009F +S315E075A660000000000000000000000000000000008F +S315E075A670000000000000000000000000000000007F +S315E075A680000000000000000000000000000000006F +S315E075A690000000000000000000000000000000005F +S315E075A6A0000000000000000000000000000000004F +S315E075A6B0000000000000000000000000000000003F +S315E075A6C0000000000000000000000000000000002F +S315E075A6D0000000000000000000000000000000001F +S315E075A6E0000000000000000000000000000000000F +S315E075A6F000000000000000000000000000000000FF +S315E075A70000000000000000000000000000000000EE +S315E075A71000000000000000000000000000000000DE +S315E075A72000000000000000000000000000000000CE +S315E075A73000000000000000000000000000000000BE +S315E075A74000000000000000000000000000000000AE +S315E075A750000000000000000000000000000000009E +S315E075A760000000000000000000000000000000008E +S315E075A770000000000000000000000000000000007E +S315E075A780000000000000000000000000000000006E +S315E075A790000000000000000000000000000000005E +S315E075A7A0000000000000000000000000000000004E +S315E075A7B0000000000000000000000000003E4900B7 +S315E075A7C0000000000000000000000000000000002E +S315E075A7D0000000000000000000000000000000001E +S315E075A7E0000000000000000000000000000000000E +S315E075A7F000000000000000000000000000000000FE +S315E075A80000000000000000000000000000000000ED +S315E075A81000000000000000000000000000000000DD +S315E075A82000000000000000000000000000000000CD +S315E075A83000000000000000000000000000000000BD +S315E075A84000000000000000000000000000000000AD +S315E075A850000000000000000000000000000000009D +S315E075A860000000000000000000000000000000008D +S315E075A870000000000000000000000000000000007D +S315E075A880000000000000000000000000000000006D +S315E075A890000000000000000000000000000000005D +S315E075A8A0000000000000000000000000000000004D +S315E075A8B0000000000000000000000000000000003D +S315E075A8C0000000000000000000000000000000002D +S315E075A8D0000000000000000000000000000000001D +S315E075A8E0000000000000000000000000000000000D +S315E075A8F000000000000000000000000000000000FD +S315E075A90000000000000000000000000000000000EC +S315E075A91000000000000000000000000000000000DC +S315E075A92000000000000000000000000000000000CC +S315E075A9300000000000003E49000000000000000035 +S315E075A94000000000000000000000000000000000AC +S315E075A950000000000000000000000000000000009C +S315E075A960000000000000000000000000000000008C +S315E075A970000000000000000000000000000000007C +S315E075A980000000000000000000000000000000006C +S315E075A990000000000000000000000000000000005C +S315E075A9A0000000000000000000000000000000004C +S315E075A9B0000000000000000000000000000000003C +S315E075A9C0000000000000000000000000000000002C +S315E075A9D0000000000000000000000000000000001C +S315E075A9E0000000000000000000000000000000000C +S315E075A9F000000000000000000000000000000000FC +S315E075AA0000000000000000000000000000000000EB +S315E075AA1000000000000000000000000000000000DB +S315E075AA2000000000000000000000000000000000CB +S315E075AA3000000000000000000000000000000000BB +S315E075AA4000000000000000000000000000000000AB +S315E075AA50000000000000000000000000000000009B +S315E075AA60000000000000000000000000000000008B +S315E075AA70000000000000000000000000000000007B +S315E075AA80000000000000000000000000000000006B +S315E075AA90000000000000000000000000000000005B +S315E075AAA00000000000000000000000000000003E0D +S315E075AAB049000000000000000000000000000000F2 +S315E075AAC0000000000000000000000000000000002B +S315E075AAD0000000000000000000000000000000001B +S315E075AAE0000000000000000000000000000000000B +S315E075AAF000000000000000000000000000000000FB +S315E075AB0000000000000000000000000000000000EA +S315E075AB1000000000000000000000000000000000DA +S315E075AB2000000000000000000000000000000000CA +S315E075AB3000000000000000000000000000000000BA +S315E075AB4000000000000000000000000000000000AA +S315E075AB50000000000000000000000000000000009A +S315E075AB60000000000000000000000000000000008A +S315E075AB70000000000000000000000000000000007A +S315E075AB80000000000000000000000000000000006A +S315E075AB90000000000000000000000000000000005A +S315E075ABA0000000000000000000000000000000004A +S315E075ABB0000000000000000000000000000000003A +S315E075ABC0000000000000000000000000000000002A +S315E075ABD0000000000000000000000000000000001A +S315E075ABE0000000000000000000000000000000000A +S315E075ABF000000000000000000000000000000000FA +S315E075AC0000000000000000000000000000000000E9 +S315E075AC1000000000000000000000000000000000D9 +S315E075AC2000000000000000003E4900000000000042 +S315E075AC3000000000000000000000000000000000B9 +S315E075AC4000000000000000000000000000000000A9 +S315E075AC500000000000000000000000000000000099 +S315E075AC600000000000000000000000000000000089 +S315E075AC700000000000000000000000000000000079 +S315E075AC800000000000000000000000000000000069 +S315E075AC900000000000000000000000000000000059 +S315E075ACA00000000000000000000000000000000049 +S315E075ACB00000000000000000000000000000000039 +S315E075ACC00000000000000000000000000000000029 +S315E075ACD00000000000000000000000000000000019 +S315E075ACE00000000000000000000000000000000009 +S315E075ACF000000000000000000000000000000000F9 +S315E075AD0000000000000000000000000000000000E8 +S315E075AD1000000000000000000000000000000000D8 +S315E075AD2000000000000000000000000000000000C8 +S315E075AD3000000000000000000000000000000000B8 +S315E075AD4000000000000000000000000000000000A8 +S315E075AD500000000000000000000000000000000098 +S315E075AD600000000000000000000000000000000088 +S315E075AD700000000000000000000000000000000078 +S315E075AD800000000000000000000000000000000068 +S315E075AD900000000000000000000000000000000058 +S315E075ADA0003E4900000000000000000000000000C1 +S315E075ADB00000000000000000000000000000000038 +S315E075ADC00000000000000000000000000000000028 +S315E075ADD00000000000000000000000000000000018 +S315E075ADE00000000000000000000000000000000008 +S315E075ADF000000000000000000000000000000000F8 +S315E075AE0000000000000000000000000000000000E7 +S315E075AE1000000000000000000000000000000000D7 +S315E075AE2000000000000000000000000000000000C7 +S315E075AE3000000000000000000000000000000000B7 +S315E075AE4000000000000000000000000000000000A7 +S315E075AE500000000000000000000000000000000097 +S315E075AE600000000000000000000000000000000087 +S315E075AE700000000000000000000000000000000077 +S315E075AE800000000000000000000000000000000067 +S315E075AE900000000000000000000000000000000057 +S315E075AEA00000000000000000000000000000000047 +S315E075AEB00000000000000000000000000000000037 +S315E075AEC00000000000000000000000000000000027 +S315E075AED00000000000000000000000000000000017 +S315E075AEE00000000000000000000000000000000007 +S315E075AEF000000000000000000000000000000000F7 +S315E075AF0000000000000000000000000000000000E6 +S315E075AF10000000000000000000003E49000000004F +S315E075AF2000000000000000000000000000000000C6 +S315E075AF3000000000000000000000000000000000B6 +S315E075AF4000000000000000000000000000000000A6 +S315E075AF500000000000000000000000000000000096 +S315E075AF600000000000000000000000000000000086 +S315E075AF700000000000000000000000000000000076 +S315E075AF800000000000000000000000000000000066 +S315E075AF900000000000000000000000000000000056 +S315E075AFA00000000000000000000000000000000046 +S315E075AFB00000000000000000000000000000000036 +S315E075AFC00000000000000000000000000000000026 +S315E075AFD00000000000000000000000000000000016 +S315E075AFE00000000000000000000000000000000006 +S315E075AFF000000000000000000000000000000000F6 +S315E075B00000000000000000000000000000000000E5 +S315E075B01000000000000000000000000000000000D5 +S315E075B02000000000000000000000000000000000C5 +S315E075B03000000000000000000000000000000000B5 +S315E075B04000000000000000000000000000000000A5 +S315E075B0500000000000000000000000000000000095 +S315E075B0600000000000000000000000000000000085 +S315E075B0700000000000000000000000000000000075 +S315E075B0800000000000000000000000000000000065 +S315E075B0900000003E490000000000000000000000CE +S315E075B0A00000000000000000000000000000000045 +S315E075B0B00000000000000000000000000000000035 +S315E075B0C00000000000000000000000000000000025 +S315E075B0D00000000000000000000000000000000015 +S315E075B0E00000000000000000000000000000000005 +S315E075B0F000000000000000000000000000000000F5 +S315E075B10000000000000000000000000000000000E4 +S315E075B11000000000000000000000000000000000D4 +S315E075B12000000000000000000000000000000000C4 +S315E075B13000000000000000000000000000000000B4 +S315E075B14000000000000000000000000000000000A4 +S315E075B1500000000000000000000000000000000094 +S315E075B1600000000000000000000000000000000084 +S315E075B1700000000000000000000000000000000074 +S315E075B1800000000000000000000000000000000064 +S315E075B1900000000000000000000000000000000054 +S315E075B1A00000000000000000000000000000000044 +S315E075B1B00000000000000000000000000000000034 +S315E075B1C00000000000000000000000000000000024 +S315E075B1D00000000000000000000000000000000014 +S315E075B1E00000000000000000000000000000000004 +S315E075B1F000000000000000000000000000000000F4 +S315E075B2000000000000000000000000003E4900005C +S315E075B21000000000000000000000000000000000D3 +S315E075B22000000000000000000000000000000000C3 +S315E075B23000000000000000000000000000000000B3 +S315E075B24000000000000000000000000000000000A3 +S315E075B2500000000000000000000000000000000093 +S315E075B2600000000000000000000000000000000083 +S315E075B2700000000000000000000000000000000073 +S315E075B2800000000000000000000000000000000063 +S315E075B2900000000000000000000000000000000053 +S315E075B2A00000000000000000000000000000000043 +S315E075B2B00000000000000000000000000000000033 +S315E075B2C00000000000000000000000000000000023 +S315E075B2D00000000000000000000000000000000013 +S315E075B2E00000000000000000000000000000000003 +S315E075B2F000000000000000000000000000000000F3 +S315E075B30000000000000000000000000000000000E2 +S315E075B31000000000000000000000000000000000D2 +S315E075B32000000000000000000000000000000000C2 +S315E075B33000000000000000000000000000000000B2 +S315E075B34000000000000000000000000000000000A2 +S315E075B3500000000000000000000000000000000092 +S315E075B3600000000000000000000000000000000082 +S315E075B3700000000000000000000000000000000072 +S315E075B38000000000003E49000000000000000000DB +S315E075B3900000000000000000000000000000000052 +S315E075B3A00000000000000000000000000000000042 +S315E075B3B00000000000000000000000000000000032 +S315E075B3C00000000000000000000000000000000022 +S315E075B3D00000000000000000000000000000000012 +S315E075B3E00000000000000000000000000000000002 +S315E075B3F000000000000000000000000000000000F2 +S315E075B40000000000000000000000000000000000E1 +S315E075B41000000000000000000000000000000000D1 +S315E075B42000000000000000000000000000000000C1 +S315E075B43000000000000000000000000000000000B1 +S315E075B44000000000000000000000000000000000A1 +S315E075B4500000000000000000000000000000000091 +S315E075B4600000000000000000000000000000000081 +S315E075B4700000000000000000000000000000000071 +S315E075B4800000000000000000000000000000000061 +S315E075B4900000000000000000000000000000000051 +S315E075B4A00000000000000000000000000000000041 +S315E075B4B00000000000000000000000000000000031 +S315E075B4C00000000000000000000000000000000021 +S315E075B4D00000000000000000000000000000000011 +S315E075B4E00000000000000000000000000000000001 +S315E075B4F000000000000000000000000000003E496A +S315E075B50000000000000000000000000000000000E0 +S315E075B51000000000000000000000000000000000D0 +S315E075B52000000000000000000000000000000000C0 +S315E075B53000000000000000000000000000000000B0 +S315E075B54000000000000000000000000000000000A0 +S315E075B5500000000000000000000000000000000090 +S315E075B5600000000000000000000000000000000080 +S315E075B5700000000000000000000000000000000070 +S315E075B5800000000000000000000000000000000060 +S315E075B5900000000000000000000000000000000050 +S315E075B5A00000000000000000000000000000000040 +S315E075B5B00000000000000000000000000000000030 +S315E075B5C00000000000000000000000000000000020 +S315E075B5D00000000000000000000000000000000010 +S315E075B5E00000000000000000000000000000000000 +S315E075B5F000000000000000000000000000000000F0 +S315E075B60000000000000000000000000000000000DF +S315E075B61000000000000000000000000000000000CF +S315E075B62000000000000000000000000000000000BF +S315E075B63000000000000000000000000000000000AF +S315E075B640000000000000000000000000000000009F +S315E075B650000000000000000000000000000000008F +S315E075B660000000000000000000000000000000007F +S315E075B670000000000000003E4900000000000000E8 +S315E075B680000000000000000000000000000000005F +S315E075B690000000000000000000000000000000004F +S315E075B6A0000000000000000000000000000000003F +S315E075B6B0000000000000000000000000000000002F +S315E075B6C0000000000000000000000000000000001F +S315E075B6D0000000000000000000000000000000000F +S315E075B6E000000000000000000000000000000000FF +S315E075B6F000000000000000000000000000000000EF +S315E075B70000000000000000000000000000000000DE +S315E075B71000000000000000000000000000000000CE +S315E075B72000000000000000000000000000000000BE +S315E075B73000000000000000000000000000000000AE +S315E075B740000000000000000000000000000000009E +S315E075B750000000000000000000000000000000008E +S315E075B760000000000000000000000000000000007E +S315E075B770000000000000000000000000000000006E +S315E075B780000000000000000000000000000000005E +S315E075B790000000000000000000000000000000004E +S315E075B7A0000000000000000000000000000000003E +S315E075B7B0000000000000000000000000000000002E +S315E075B7C0000000000000000000000000000000001E +S315E075B7D0000000000000000000000000000000000E +S315E075B7E000000000000000000000000000000000FE +S315E075B7F03E49000000000000000000000000000067 +S315E075B80000000000000000000000000000000000DD +S315E075B81000000000000000000000000000000000CD +S315E075B82000000000000000000000000000000000BD +S315E075B83000000000000000000000000000000000AD +S315E075B840000000000000000000000000000000009D +S315E075B850000000000000000000000000000000008D +S315E075B860000000000000000000000000000000007D +S315E075B870000000000000000000000000000000006D +S315E075B880000000000000000000000000000000005D +S315E075B890000000000000000000000000000000004D +S315E075B8A0000000000000000000000000000000003D +S315E075B8B0000000000000000000000000000000002D +S315E075B8C0000000000000000000000000000000001D +S315E075B8D0000000000000000000000000000000000D +S315E075B8E000000000000000000000000000000000FD +S315E075B8F000000000000000000000000000000000ED +S315E075B90000000000000000000000000000000000DC +S315E075B91000000000000000000000000000000000CC +S315E075B92000000000000000000000000000000000BC +S315E075B93000000000000000000000000000000000AC +S315E075B940000000000000000000000000000000009C +S315E075B950000000000000000000000000000000008C +S315E075B9600000000000000000003E490000000000F5 +S315E075B970000000000000000000000000000000006C +S315E075B980000000000000000000000000000000005C +S315E075B990000000000000000000000000000000004C +S315E075B9A0000000000000000000000000000000003C +S315E075B9B0000000000000000000000000000000002C +S315E075B9C0000000000000000000000000000000001C +S315E075B9D0000000000000000000000000000000000C +S315E075B9E000000000000000000000000000000000FC +S315E075B9F000000000000000000000000000000000EC +S315E075BA0000000000000000000000000000000000DB +S315E075BA1000000000000000000000000000000000CB +S315E075BA2000000000000000000000000000000000BB +S315E075BA3000000000000000000000000000000000AB +S315E075BA40000000000000000000000000000000009B +S315E075BA50000000000000000000000000000000008B +S315E075BA60000000000000000000000000000000007B +S315E075BA70000000000000000000000000000000006B +S315E075BA80000000000000000000000000000000005B +S315E075BA90000000000000000000000000000000004B +S315E075BAA0000000000000000000000000000000003B +S315E075BAB0000000000000000000000000000000002B +S315E075BAC0000000000000000000000000000000001B +S315E075BAD0000000000000000000000000000000000B +S315E075BAE000003E4900000000000000000000000074 +S315E075BAF000000000000000000000000000000000EB +S315E075BB0000000000000000000000000000000000DA +S315E075BB1000000000000000000000000000000000CA +S315E075BB2000000000000000000000000000000000BA +S315E075BB3000000000000000000000000000000000AA +S315E075BB40000000000000000000000000000000009A +S315E075BB50000000000000000000000000000000008A +S315E075BB60000000000000000000000000000000007A +S315E075BB70000000000000000000000000000000006A +S315E075BB80000000000000000000000000000000005A +S315E075BB90000000000000000000000000000000004A +S315E075BBA0000000000000000000000000000000003A +S315E075BBB0000000000000000000000000000000002A +S315E075BBC0000000000000000000000000000000001A +S315E075BBD0000000000000000000000000000000000A +S315E075BBE000000000000000000000000000000000FA +S315E075BBF000000000000000000000000000000000EA +S315E075BC0000000000000000000000000000000000D9 +S315E075BC1000000000000000000000000000000000C9 +S315E075BC2000000000000000000000000000000000B9 +S315E075BC3000000000000000000000000000000000A9 +S315E075BC400000000000000000000000000000000099 +S315E075BC5000000000000000000000003E4900000002 +S315E075BC600000000000000000000000000000000079 +S315E075BC700000000000000000000000000000000069 +S315E075BC800000000000000000000000000000000059 +S315E075BC900000000000000000000000000000000049 +S315E075BCA00000000000000000000000000000000039 +S315E075BCB00000000000000000000000000000000029 +S315E075BCC00000000000000000000000000000000019 +S315E075BCD00000000000000000000000000000000009 +S315E075BCE000000000000000000000000000000000F9 +S315E075BCF000000000000000000000000000000000E9 +S315E075BD0000000000000000000000000000000000D8 +S315E075BD1000000000000000000000000000000000C8 +S315E075BD2000000000000000000000000000000000B8 +S315E075BD3000000000000000000000000000000000A8 +S315E075BD400000000000000000000000000000000098 +S315E075BD500000000000000000000000000000000088 +S315E075BD600000000000000000000000000000000078 +S315E075BD700000000000000000000000000000000068 +S315E075BD800000000000000000000000000000000058 +S315E075BD900000000000000000000000000000000048 +S315E075BDA00000000000000000000000000000000038 +S315E075BDB00000000000000000000000000000000028 +S315E075BDC00000000000000000000000000000000018 +S315E075BDD0000000003E490000000000000000000081 +S315E075BDE000000000000000000000000000000000F8 +S315E075BDF000000000000000000000000000000000E8 +S315E075BE0000000000000000000000000000000000D7 +S315E075BE1000000000000000000000000000000000C7 +S315E075BE2000000000000000000000000000000000B7 +S315E075BE3000000000000000000000000000000000A7 +S315E075BE400000000000000000000000000000000097 +S315E075BE500000000000000000000000000000000087 +S315E075BE600000000000000000000000000000000077 +S315E075BE700000000000000000000000000000000067 +S315E075BE800000000000000000000000000000000057 +S315E075BE900000000000000000000000000000000047 +S315E075BEA00000000000000000000000000000000037 +S315E075BEB00000000000000000000000000000000027 +S315E075BEC00000000000000000000000000000000017 +S315E075BED00000000000000000000000000000000007 +S315E075BEE000000000000000000000000000000000F7 +S315E075BEF000000000000000000000000000000000E7 +S315E075BF0000000000000000000000000000000000D6 +S315E075BF1000000000000000000000000000000000C6 +S315E075BF2000000000000000000000000000000000B6 +S315E075BF3000000000000000000000000000000000A6 +S315E075BF40000000000000000000000000003E49000F +S315E075BF500000000000000000000000000000000086 +S315E075BF600000000000000000000000000000000076 +S315E075BF700000000000000000000000000000000066 +S315E075BF800000000000000000000000000000000056 +S315E075BF900000000000000000000000000000000046 +S315E075BFA00000000000000000000000000000000036 +S315E075BFB00000000000000000000000000000000026 +S315E075BFC00000000000000000000000000000000016 +S315E075BFD00000000000000000000000000000000006 +S315E075BFE000000000000000000000000000000000F6 +S315E075BFF000000000000000000000000000000000E6 +S315E075C00000000000000000000000000000000000D5 +S315E075C01000000000000000000000000000000000C5 +S315E075C02000000000000000000000000000000000B5 +S315E075C03000000000000000000000000000000000A5 +S315E075C0400000000000000000000000000000000095 +S315E075C0500000000000000000000000000000000085 +S315E075C0600000000000000000000000000000000075 +S315E075C0700000000000000000000000000000000065 +S315E075C0800000000000000000000000000000000055 +S315E075C0900000000000000000000000000000000045 +S315E075C0A00000000000000000000000000000000035 +S315E075C0B00000000000000000000000000000000025 +S315E075C0C00000000000003E4900000000000000008E +S315E075C0D00000000000000000000000000000000005 +S315E075C0E000000000000000000000000000000000F5 +S315E075C0F000000000000000000000000000000000E5 +S315E075C10000000000000000000000000000000000D4 +S315E075C11000000000000000000000000000000000C4 +S315E075C12000000000000000000000000000000000B4 +S315E075C13000000000000000000000000000000000A4 +S315E075C1400000000000000000000000000000000094 +S315E075C1500000000000000000000000000000000084 +S315E075C1600000000000000000000000000000000074 +S315E075C1700000000000000000000000000000000064 +S315E075C1800000000000000000000000000000000054 +S315E075C1900000000000000000000000000000000044 +S315E075C1A00000000000000000000000000000000034 +S315E075C1B00000000000000000000000000000000024 +S315E075C1C00000000000000000000000000000000014 +S315E075C1D00000000000000000000000000000000004 +S315E075C1E000000000000000000000000000000000F4 +S315E075C1F000000000000000000000000000000000E4 +S315E075C20000000000000000000000000000000000D3 +S315E075C21000000000000000000000000000000000C3 +S315E075C22000000000000000000000000000000000B3 +S315E075C2300000000000000000000000000000003E65 +S315E075C240490000000000000000000000000000004A +S315E075C2500000000000000000000000000000000083 +S315E075C2600000000000000000000000000000000073 +S315E075C2700000000000000000000000000000000063 +S315E075C2800000000000000000000000000000000053 +S315E075C2900000000000000000000000000000000043 +S315E075C2A00000000000000000000000000000000033 +S315E075C2B00000000000000000000000000000000023 +S315E075C2C00000000000000000000000000000000013 +S315E075C2D00000000000000000000000000000000003 +S315E075C2E000000000000000000000000000000000F3 +S315E075C2F000000000000000000000000000000000E3 +S315E075C30000000000000000000000000000000000D2 +S315E075C31000000000000000000000000000000000C2 +S315E075C32000000000000000000000000000000000B2 +S315E075C33000000000000000000000000000000000A2 +S315E075C3400000000000000000000000000000000092 +S315E075C3500000000000000000000000000000000082 +S315E075C3600000000000000000000000000000000072 +S315E075C3700000000000000000000000000000000062 +S315E075C3800000000000000000000000000000000052 +S315E075C3900000000000000000000000000000000042 +S315E075C3A00000000000000000000000000000000032 +S315E075C3B000000000000000003E490000000000009B +S315E075C3C00000000000000000000000000000000012 +S315E075C3D00000000000000000000000000000000002 +S315E075C3E000000000000000000000000000000000F2 +S315E075C3F000000000000000000000000000000000E2 +S315E075C40000000000000000000000000000000000D1 +S315E075C41000000000000000000000000000000000C1 +S315E075C42000000000000000000000000000000000B1 +S315E075C43000000000000000000000000000000000A1 +S315E075C4400000000000000000000000000000000091 +S315E075C4500000000000000000000000000000000081 +S315E075C4600000000000000000000000000000000071 +S315E075C4700000000000000000000000000000000061 +S315E075C4800000000000000000000000000000000051 +S315E075C4900000000000000000000000000000000041 +S315E075C4A00000000000000000000000000000000031 +S315E075C4B00000000000000000000000000000000021 +S315E075C4C00000000000000000000000000000000011 +S315E075C4D00000000000000000000000000000000001 +S315E075C4E000000000000000000000000000000000F1 +S315E075C4F000000000000000000000000000000000E1 +S315E075C50000000000000000000000000000000000D0 +S315E075C51000000000000000000000000000000000C0 +S315E075C52000000000000000000000000000000000B0 +S315E075C530003E490000000000000000000000000019 +S315E075C5400000000000000000000000000000000090 +S315E075C5500000000000000000000000000000000080 +S315E075C5600000000000000000000000000000000070 +S315E075C5700000000000000000000000000000000060 +S315E075C5800000000000000000000000000000000050 +S315E075C5900000000000000000000000000000000040 +S315E075C5A00000000000000000000000000000000030 +S315E075C5B00000000000000000000000000000000020 +S315E075C5C00000000000000000000000000000000010 +S315E075C5D00000000000000000000000000000000000 +S315E075C5E000000000000000000000000000000000F0 +S315E075C5F000000000000000000000000000000000E0 +S315E075C60000000000000000000000000000000000CF +S315E075C61000000000000000000000000000000000BF +S315E075C62000000000000000000000000000000000AF +S315E075C630000000000000000000000000000000009F +S315E075C640000000000000000000000000000000008F +S315E075C650000000000000000000000000000000007F +S315E075C660000000000000000000000000000000006F +S315E075C670000000000000000000000000000000005F +S315E075C680000000000000000000000000000000004F +S315E075C690000000000000000000000000000000003F +S315E075C6A0000000000000000000003E4900000000A8 +S315E075C6B0000000000000000000000000000000001F +S315E075C6C0000000000000000000000000000000000F +S315E075C6D000000000000000000000000000000000FF +S315E075C6E000000000000000000000000000000000EF +S315E075C6F000000000000000000000000000000000DF +S315E075C70000000000000000000000000000000000CE +S315E075C71000000000000000000000000000000000BE +S315E075C72000000000000000000000000000000000AE +S315E075C730000000000000000000000000000000009E +S315E075C740000000000000000000000000000000008E +S315E075C750000000000000000000000000000000007E +S315E075C760000000000000000000000000000000006E +S315E075C770000000000000000000000000000000005E +S315E075C780000000000000000000000000000000004E +S315E075C790000000000000000000000000000000003E +S315E075C7A0000000000000000000000000000000002E +S315E075C7B0000000000000000000000000000000001E +S315E075C7C0000000000000000000000000000000000E +S315E075C7D000000000000000000000000000000000FE +S315E075C7E000000000000000000000000000000000EE +S315E075C7F000000000000000000000000000000000DE +S315E075C80000000000000000000000000000000000CD +S315E075C81000000000000000000000000000000000BD +S315E075C8200000003E49000000000000000000000026 +S315E075C830000000000000000000000000000000009D +S315E075C840000000000000000000000000000000008D +S315E075C850000000000000000000000000000000007D +S315E075C860000000000000000000000000000000006D +S315E075C870000000000000000000000000000000005D +S315E075C880000000000000000000000000000000004D +S315E075C890000000000000000000000000000000003D +S315E075C8A0000000000000000000000000000000002D +S315E075C8B0000000000000000000000000000000001D +S315E075C8C0000000000000000000000000000000000D +S315E075C8D000000000000000000000000000000000FD +S315E075C8E000000000000000000000000000000000ED +S315E075C8F000000000000000000000000000000000DD +S315E075C90000000000000000000000000000000000CC +S315E075C91000000000000000000000000000000000BC +S315E075C92000000000000000000000000000000000AC +S315E075C930000000000000000000000000000000009C +S315E075C940000000000000000000000000000000008C +S315E075C950000000000000000000000000000000007C +S315E075C960000000000000000000000000000000006C +S315E075C970000000000000000000000000000000005C +S315E075C980000000000000000000000000000000004C +S315E075C9900000000000000000000000003E490000B5 +S315E075C9A0000000000000000000000000000000002C +S315E075C9B0000000000000000000000000000000001C +S315E075C9C0000000000000000000000000000000000C +S315E075C9D000000000000000000000000000000000FC +S315E075C9E000000000000000000000000000000000EC +S315E075C9F000000000000000000000000000000000DC +S315E075CA0000000000000000000000000000000000CB +S315E075CA1000000000000000000000000000000000BB +S315E075CA2000000000000000000000000000000000AB +S315E075CA30000000000000000000000000000000009B +S315E075CA40000000000000000000000000000000008B +S315E075CA50000000000000000000000000000000007B +S315E075CA60000000000000000000000000000000006B +S315E075CA70000000000000000000000000000000005B +S315E075CA80000000000000000000000000000000004B +S315E075CA90000000000000000000000000000000003B +S315E075CAA0000000000000000000000000000000002B +S315E075CAB0000000000000000000000000000000001B +S315E075CAC0000000000000000000000000000000000B +S315E075CAD000000000000000000000000000000000FB +S315E075CAE000000000000000000000000000000000EB +S315E075CAF000000000000000000000000000000000DB +S315E075CB0000000000000000000000000000000000CA +S315E075CB1000000000003E4900000000000000000033 +S315E075CB2000000000000000000000000000000000AA +S315E075CB30000000000000000000000000000000009A +S315E075CB40000000000000000000000000000000008A +S315E075CB50000000000000000000000000000000007A +S315E075CB60000000000000000000000000000000006A +S315E075CB70000000000000000000000000000000005A +S315E075CB80000000000000000000000000000000004A +S315E075CB90000000000000000000000000000000003A +S315E075CBA0000000000000000000000000000000002A +S315E075CBB0000000000000000000000000000000001A +S315E075CBC0000000000000000000000000000000000A +S315E075CBD000000000000000000000000000000000FA +S315E075CBE000000000000000000000000000000000EA +S315E075CBF000000000000000000000000000000000DA +S315E075CC0000000000000000000000000000000000C9 +S315E075CC1000000000000000000000000000000000B9 +S315E075CC2000000000000000000000000000000000A9 +S315E075CC300000000000000000000000000000000099 +S315E075CC400000000000000000000000000000000089 +S315E075CC500000000000000000000000000000000079 +S315E075CC600000000000000000000000000000000069 +S315E075CC700000000000000000000000000000000059 +S315E075CC8000000000000000000000000000003E49C2 +S315E075CC900000000000000000000000000000000039 +S315E075CCA00000000000000000000000000000000029 +S315E075CCB00000000000000000000000000000000019 +S315E075CCC00000000000000000000000000000000009 +S315E075CCD000000000000000000000000000000000F9 +S315E075CCE000000000000000000000000000000000E9 +S315E075CCF000000000000000000000000000000000D9 +S315E075CD0000000000000000000000000000000000C8 +S315E075CD1000000000000000000000000000000000B8 +S315E075CD2000000000000000000000000000000000A8 +S315E075CD300000000000000000000000000000000098 +S315E075CD400000000000000000000000000000000088 +S315E075CD500000000000000000000000000000000078 +S315E075CD600000000000000000000000000000000068 +S315E075CD700000000000000000000000000000000058 +S315E075CD800000000000000000000000000000000048 +S315E075CD900000000000000000000000000000000038 +S315E075CDA00000000000000000000000000000000028 +S315E075CDB00000000000000000000000000000000018 +S315E075CDC00000000000000000000000000000000008 +S315E075CDD000000000000000000000000000000000F8 +S315E075CDE000000000000000000000000000000000E8 +S315E075CDF000000000000000000000000000000000D8 +S315E075CE00000000000000003E490000000000000040 +S315E075CE1000000000000000000000000000000000B7 +S315E075CE2000000000000000000000000000000000A7 +S315E075CE300000000000000000000000000000000097 +S315E075CE400000000000000000000000000000000087 +S315E075CE500000000000000000000000000000000077 +S315E075CE600000000000000000000000000000000067 +S315E075CE700000000000000000000000000000000057 +S315E075CE800000000000000000000000000000000047 +S315E075CE900000000000000000000000000000000037 +S315E075CEA00000000000000000000000000000000027 +S315E075CEB00000000000000000000000000000000017 +S315E075CEC00000000000000000000000000000000007 +S315E075CED000000000000000000000000000000000F7 +S315E075CEE000000000000000000000000000000000E7 +S315E075CEF000000000000000000000000000000000D7 +S315E075CF0000000000000000000000000000000000C6 +S315E075CF1000000000000000000000000000000000B6 +S315E075CF2000000000000000000000000000000000A6 +S315E075CF300000000000000000000000000000000096 +S315E075CF400000000000000000000000000000000086 +S315E075CF500000000000000000000000000000000076 +S315E075CF600000000000000000000000000000000066 +S315E075CF700000000000000000000000000000000056 +S315E075CF803E490000000000000000000000000000BF +S315E075CF900000000000000000000000000000000036 +S315E075CFA00000000000000000000000000000000026 +S315E075CFB00000000000000000000000000000000016 +S315E075CFC00000000000000000000000000000000006 +S315E075CFD000000000000000000000000000000000F6 +S315E075CFE000000000000000000000000000000000E6 +S315E075CFF000000000000000000000000000000000D6 +S315E075D00000000000000000000000000000000000C5 +S315E075D01000000000000000000000000000000000B5 +S315E075D02000000000000000000000000000000000A5 +S315E075D0300000000000000000000000000000000095 +S315E075D0400000000000000000000000000000000085 +S315E075D0500000000000000000000000000000000075 +S315E075D0600000000000000000000000000000000065 +S315E075D0700000000000000000000000000000000055 +S315E075D0800000000000000000000000000000000045 +S315E075D0900000000000000000000000000000000035 +S315E075D0A00000000000000000000000000000000025 +S315E075D0B00000000000000000000000000000000015 +S315E075D0C00000000000000000000000000000000005 +S315E075D0D000000000000000000000000000000000F5 +S315E075D0E000000000000000000000000000000000E5 +S315E075D0F00000000000000000003E4900000000004E +S315E075D10000000000000000000000000000000000C4 +S315E075D11000000000000000000000000000000000B4 +S315E075D12000000000000000000000000000000000A4 +S315E075D1300000000000000000000000000000000094 +S315E075D1400000000000000000000000000000000084 +S315E075D1500000000000000000000000000000000074 +S315E075D1600000000000000000000000000000000064 +S315E075D1700000000000000000000000000000000054 +S315E075D1800000000000000000000000000000000044 +S315E075D1900000000000000000000000000000000034 +S315E075D1A00000000000000000000000000000000024 +S315E075D1B00000000000000000000000000000000014 +S315E075D1C00000000000000000000000000000000004 +S315E075D1D000000000000000000000000000000000F4 +S315E075D1E000000000000000000000000000000000E4 +S315E075D1F000000000000000000000000000000000D4 +S315E075D20000000000000000000000000000000000C3 +S315E075D21000000000000000000000000000000000B3 +S315E075D22000000000000000000000000000000000A3 +S315E075D2300000000000000000000000000000000093 +S315E075D2400000000000000000000000000000000083 +S315E075D2500000000000000000000000000000000073 +S315E075D2600000000000000000000000000000000063 +S315E075D27000003E49000000000000000000000000CC +S315E075D2800000000000000000000000000000000043 +S315E075D2900000000000000000000000000000000033 +S315E075D2A00000000000000000000000000000000023 +S315E075D2B00000000000000000000000000000000013 +S315E075D2C00000000000000000000000000000000003 +S315E075D2D000000000000000000000000000000000F3 +S315E075D2E000000000000000000000000000000000E3 +S315E075D2F000000000000000000000000000000000D3 +S315E075D30000000000000000000000000000000000C2 +S315E075D31000000000000000000000000000000000B2 +S315E075D32000000000000000000000000000000000A2 +S315E075D3300000000000000000000000000000000092 +S315E075D3400000000000000000000000000000000082 +S315E075D3500000000000000000000000000000000072 +S315E075D3600000000000000000000000000000000062 +S315E075D3700000000000000000000000000000000052 +S315E075D3800000000000000000000000000000000042 +S315E075D3900000000000000000000000000000000032 +S315E075D3A00000000000000000000000000000000022 +S315E075D3B00000000000000000000000000000000012 +S315E075D3C00000000000000000000000000000000002 +S315E075D3D000000000000000000000000000000000F2 +S315E075D3E000000000000000000000003E490000005B +S315E075D3F000000000000000000000000000000000D2 +S315E075D40000000000000000000000000000000000C1 +S315E075D41000000000000000000000000000000000B1 +S315E075D42000000000000000000000000000000000A1 +S315E075D4300000000000000000000000000000000091 +S315E075D4400000000000000000000000000000000081 +S315E075D4500000000000000000000000000000000071 +S315E075D4600000000000000000000000000000000061 +S315E075D4700000000000000000000000000000000051 +S315E075D4800000000000000000000000000000000041 +S315E075D4900000000000000000000000000000000031 +S315E075D4A00000000000000000000000000000000021 +S315E075D4B00000000000000000000000000000000011 +S315E075D4C00000000000000000000000000000000001 +S315E075D4D000000000000000000000000000000000F1 +S315E075D4E000000000000000000000000000000000E1 +S315E075D4F000000000000000000000000000000000D1 +S315E075D50000000000000000000000000000000000C0 +S315E075D51000000000000000000000000000000000B0 +S315E075D52000000000000000000000000000000000A0 +S315E075D5300000000000000000000000000000000090 +S315E075D5400000000000000000000000000000000080 +S315E075D5500000000000000000000000000000000070 +S315E075D560000000003E4900000000000000000000D9 +S315E075D5700000000000000000000000000000000050 +S315E075D5800000000000000000000000000000000040 +S315E075D5900000000000000000000000000000000030 +S315E075D5A00000000000000000000000000000000020 +S315E075D5B00000000000000000000000000000000010 +S315E075D5C00000000000000000000000000000000000 +S315E075D5D000000000000000000000000000000000F0 +S315E075D5E000000000000000000000000000000000E0 +S315E075D5F000000000000000000000000000000000D0 +S315E075D60000000000000000000000000000000000BF +S315E075D61000000000000000000000000000000000AF +S315E075D620000000000000000000000000000000009F +S315E075D630000000000000000000000000000000008F +S315E075D640000000000000000000000000000000007F +S315E075D650000000000000000000000000000000006F +S315E075D660000000000000000000000000000000005F +S315E075D670000000000000000000000000000000004F +S315E075D680000000000000000000000000000000003F +S315E075D690000000000000000000000000000000002F +S315E075D6A0000000000000000000000000000000001F +S315E075D6B0000000000000000000000000000000000F +S315E075D6C000000000000000000000000000000000FF +S315E075D6D0000000000000000000000000003E490068 +S315E075D6E000000000000000000000000000000000DF +S315E075D6F000000000000000000000000000000000CF +S315E075D70000000000000000000000000000000000BE +S315E075D71000000000000000000000000000000000AE +S315E075D720000000000000000000000000000000009E +S315E075D730000000000000000000000000000000008E +S315E075D740000000000000000000000000000000007E +S315E075D750000000000000000000000000000000006E +S315E075D760000000000000000000000000000000005E +S315E075D770000000000000000000000000000000004E +S315E075D780000000000000000000000000000000003E +S315E075D790000000000000000000000000000000002E +S315E075D7A0000000000000000000000000000000001E +S315E075D7B0000000000000000000000000000000000E +S315E075D7C000000000000000000000000000000000FE +S315E075D7D000000000000000000000000000000000EE +S315E075D7E000000000000000000000000000000000DE +S315E075D7F000000000000000000000000000000000CE +S315E075D80000000000000000000000000000000000BD +S315E075D81000000000000000000000000000000000AD +S315E075D820000000000000000000000000000000009D +S315E075D830000000000000000000000000000000008D +S315E075D840000000000000000000000000000000007D +S315E075D8500000000000003E490000000000000000E6 +S315E075D860000000000000000000000000000000005D +S315E075D870000000000000000000000000000000004D +S315E075D880000000000000000000000000000000003D +S315E075D890000000000000000000000000000000002D +S315E075D8A0000000000000000000000000000000001D +S315E075D8B0000000000000000000000000000000000D +S315E075D8C000000000000000000000000000000000FD +S315E075D8D000000000000000000000000000000000ED +S315E075D8E000000000000000000000000000000000DD +S315E075D8F000000000000000000000000000000000CD +S315E075D90000000000000000000000000000000000BC +S315E075D91000000000000000000000000000000000AC +S315E075D920000000000000000000000000000000009C +S315E075D930000000000000000000000000000000008C +S315E075D940000000000000000000000000000000007C +S315E075D950000000000000000000000000000000006C +S315E075D960000000000000000000000000000000005C +S315E075D970000000000000000000000000000000004C +S315E075D980000000000000000000000000000000003C +S315E075D990000000000000000000000000000000002C +S315E075D9A0000000000000000000000000000000001C +S315E075D9B0000000000000000000000000000000000C +S315E075D9C00000000000000000000000000000003EBE +S315E075D9D049000000000000000000000000000000A3 +S315E075D9E000000000000000000000000000000000DC +S315E075D9F000000000000000000000000000000000CC +S315E075DA0000000000000000000000000000000000BB +S315E075DA1000000000000000000000000000000000AB +S315E075DA20000000000000000000000000000000009B +S315E075DA30000000000000000000000000000000008B +S315E075DA40000000000000000000000000000000007B +S315E075DA50000000000000000000000000000000006B +S315E075DA60000000000000000000000000000000005B +S315E075DA70000000000000000000000000000000004B +S315E075DA80000000000000000000000000000000003B +S315E075DA90000000000000000000000000000000002B +S315E075DAA0000000000000000000000000000000001B +S315E075DAB0000000000000000000000000000000000B +S315E075DAC000000000000000000000000000000000FB +S315E075DAD000000000000000000000000000000000EB +S315E075DAE000000000000000000000000000000000DB +S315E075DAF000000000000000000000000000000000CB +S315E075DB0000000000000000000000000000000000BA +S315E075DB1000000000000000000000000000000000AA +S315E075DB20000000000000000000000000000000009A +S315E075DB30000000000000000000000000000000008A +S315E075DB4000000000000000003E49000000000000F3 +S315E075DB50000000000000000000000000000000006A +S315E075DB60000000000000000000000000000000005A +S315E075DB70000000000000000000000000000000004A +S315E075DB80000000000000000000000000000000003A +S315E075DB90000000000000000000000000000000002A +S315E075DBA0000000000000000000000000000000001A +S315E075DBB0000000000000000000000000000000000A +S315E075DBC000000000000000000000000000000000FA +S315E075DBD000000000000000000000000000000000EA +S315E075DBE000000000000000000000000000000000DA +S315E075DBF000000000000000000000000000000000CA +S315E075DC0000000000000000000000000000000000B9 +S315E075DC1000000000000000000000000000000000A9 +S315E075DC200000000000000000000000000000000099 +S315E075DC300000000000000000000000000000000089 +S315E075DC400000000000000000000000000000000079 +S315E075DC500000000000000000000000000000000069 +S315E075DC600000000000000000000000000000000059 +S315E075DC700000000000000000000000000000000049 +S315E075DC800000000000000000000000000000000039 +S315E075DC900000000000000000000000000000000029 +S315E075DCA00000000000000000000000000000000019 +S315E075DCB00000000000000000000000000000000009 +S315E075DCC0003E490000000000000000000000000072 +S315E075DCD000000000000000000000000000000000E9 +S315E075DCE000000000000000000000000000000000D9 +S315E075DCF000000000000000000000000000000000C9 +S315E075DD0000000000000000000000000000000000B8 +S315E075DD1000000000000000000000000000000000A8 +S315E075DD200000000000000000000000000000000098 +S315E075DD300000000000000000000000000000000088 +S315E075DD400000000000000000000000000000000078 +S315E075DD500000000000000000000000000000000068 +S315E075DD600000000000000000000000000000000058 +S315E075DD700000000000000000000000000000000048 +S315E075DD800000000000000000000000000000000038 +S315E075DD900000000000000000000000000000000028 +S315E075DDA00000000000000000000000000000000018 +S315E075DDB00000000000000000000000000000000008 +S315E075DDC000000000000000000000000000000000F8 +S315E075DDD000000000000000000000000000000000E8 +S315E075DDE000000000000000000000000000000000D8 +S315E075DDF000000000000000000000000000000000C8 +S315E075DE0000000000000000000000000000000000B7 +S315E075DE1000000000000000000000000000000000A7 +S315E075DE200000000000000000000000000000000097 +S315E075DE30000000000000000000003E490000000000 +S315E075DE400000000000000000000000000000000077 +S315E075DE500000000000000000000000000000000067 +S315E075DE600000000000000000000000000000000057 +S315E075DE700000000000000000000000000000000047 +S315E075DE800000000000000000000000000000000037 +S315E075DE900000000000000000000000000000000027 +S315E075DEA00000000000000000000000000000000017 +S315E075DEB00000000000000000000000000000000007 +S315E075DEC000000000000000000000000000000000F7 +S315E075DED000000000000000000000000000000000E7 +S315E075DEE000000000000000000000000000000000D7 +S315E075DEF000000000000000000000000000000000C7 +S315E075DF0000000000000000000000000000000000B6 +S315E075DF1000000000000000000000000000000000A6 +S315E075DF200000000000000000000000000000000096 +S315E075DF300000000000000000000000000000000086 +S315E075DF400000000000000000000000000000000076 +S315E075DF500000000000000000000000000000000066 +S315E075DF600000000000000000000000000000000056 +S315E075DF700000000000000000000000000000000046 +S315E075DF800000000000000000000000000000000036 +S315E075DF900000000000000000000000000000000026 +S315E075DFA00000000000000000000000000000000016 +S315E075DFB00000003E4900000000000000000000007F +S315E075DFC000000000000000000000000000000000F6 +S315E075DFD000000000000000000000000000000000E6 +S315E075DFE000000000000000000000000000000000D6 +S315E075DFF000000000000000000000000000000000C6 +S315E075E00000000000000000000000000000000000B5 +S315E075E01000000000000000000000000000000000A5 +S315E075E0200000000000000000000000000000000095 +S315E075E0300000000000000000000000000000000085 +S315E075E0400000000000000000000000000000000075 +S315E075E0500000000000000000000000000000000065 +S315E075E0600000000000000000000000000000000055 +S315E075E0700000000000000000000000000000000045 +S315E075E0800000000000000000000000000000000035 +S315E075E0900000000000000000000000000000000025 +S315E075E0A00000000000000000000000000000000015 +S315E075E0B00000000000000000000000000000000005 +S315E075E0C000000000000000000000000000000000F5 +S315E075E0D000000000000000000000000000000000E5 +S315E075E0E000000000000000000000000000000000D5 +S315E075E0F000000000000000000000000000000000C5 +S315E075E10000000000000000000000000000000000B4 +S315E075E11000000000000000000000000000000000A4 +S315E075E1200000000000000000000000003E4900000D +S315E075E1300000000000000000000000000000000084 +S315E075E1400000000000000000000000000000000074 +S315E075E1500000000000000000000000000000000064 +S315E075E1600000000000000000000000000000000054 +S315E075E1700000000000000000000000000000000044 +S315E075E1800000000000000000000000000000000034 +S315E075E1900000000000000000000000000000000024 +S315E075E1A00000000000000000000000000000000014 +S315E075E1B00000000000000000000000000000000004 +S315E075E1C000000000000000000000000000000000F4 +S315E075E1D000000000000000000000000000000000E4 +S315E075E1E000000000000000000000000000000000D4 +S315E075E1F000000000000000000000000000000000C4 +S315E075E20000000000000000000000000000000000B3 +S315E075E21000000000000000000000000000000000A3 +S315E075E2200000000000000000000000000000000093 +S315E075E2300000000000000000000000000000000083 +S315E075E2400000000000000000000000000000000073 +S315E075E2500000000000000000000000000000000063 +S315E075E2600000000000000000000000000000000053 +S315E075E2700000000000000000000000000000000043 +S315E075E2800000000000000000000000000000000033 +S315E075E2900000000000000000000000000000000023 +S315E075E2A000000000003E490000000000000000008C +S315E075E2B00000000000000000000000000000000003 +S315E075E2C000000000000000000000000000000000F3 +S315E075E2D000000000000000000000000000000000E3 +S315E075E2E000000000000000000000000000000000D3 +S315E075E2F000000000000000000000000000000000C3 +S315E075E30000000000000000000000000000000000B2 +S315E075E31000000000000000000000000000000000A2 +S315E075E3200000000000000000000000000000000092 +S315E075E3300000000000000000000000000000000082 +S315E075E3400000000000000000000000000000000072 +S315E075E3500000000000000000000000000000000062 +S315E075E3600000000000000000000000000000000052 +S315E075E3700000000000000000000000000000000042 +S315E075E3800000000000000000000000000000000032 +S315E075E3900000000000000000000000000000000022 +S315E075E3A00000000000000000000000000000000012 +S315E075E3B00000000000000000000000000000000002 +S315E075E3C000000000000000000000000000000000F2 +S315E075E3D000000000000000000000000000000000E2 +S315E075E3E000000000000000000000000000000000D2 +S315E075E3F000000000000000000000000000000000C2 +S315E075E40000000000000000000000000000000000B1 +S315E075E41000000000000000000000000000003E491A +S315E075E4200000000000000000000000000000000091 +S315E075E4300000000000000000000000000000000081 +S315E075E4400000000000000000000000000000000071 +S315E075E4500000000000000000000000000000000061 +S315E075E4600000000000000000000000000000000051 +S315E075E4700000000000000000000000000000000041 +S315E075E4800000000000000000000000000000000031 +S315E075E4900000000000000000000000000000000021 +S315E075E4A00000000000000000000000000000000011 +S315E075E4B00000000000000000000000000000000001 +S315E075E4C000000000000000000000000000000000F1 +S315E075E4D000000000000000000000000000000000E1 +S315E075E4E000000000000000000000000000000000D1 +S315E075E4F000000000000000000000000000000000C1 +S315E075E50000000000000000000000000000000000B0 +S315E075E51000000000000000000000000000000000A0 +S315E075E5200000000000000000000000000000000090 +S315E075E5300000000000000000000000000000000080 +S315E075E5400000000000000000000000000000000070 +S315E075E5500000000000000000000000000000000060 +S315E075E5600000000000000000000000000000000050 +S315E075E5700000000000000000000000000000000040 +S315E075E5800000000000000000000000000000000030 +S315E075E590000000000000003E490000000000000099 +S315E075E5A00000000000000000000000000000000010 +S315E075E5B00000000000000000000000000000000000 +S315E075E5C000000000000000000000000000000000F0 +S315E075E5D000000000000000000000000000000000E0 +S315E075E5E000000000000000000000000000000000D0 +S315E075E5F000000000000000000000000000000000C0 +S315E075E60000000000000000000000000000000000AF +S315E075E610000000000000000000000000000000009F +S315E075E620000000000000000000000000000000008F +S315E075E630000000000000000000000000000000007F +S315E075E640000000000000000000000000000000006F +S315E075E650000000000000000000000000000000005F +S315E075E660000000000000000000000000000000004F +S315E075E670000000000000000000000000000000003F +S315E075E680000000000000000000000000000000002F +S315E075E690000000000000000000000000000000001F +S315E075E6A0000000000000000000000000000000000F +S315E075E6B000000000000000000000000000000000FF +S315E075E6C000000000000000000000000000000000EF +S315E075E6D000000000000000000000000000000000DF +S315E075E6E000000000000000000000000000000000CF +S315E075E6F000000000000000000000000000000000BF +S315E075E70000000000000000000000000000000000AE +S315E075E7103E49000000000000000000000000000017 +S315E075E720000000000000000000000000000000008E +S315E075E730000000000000000000000000000000007E +S315E075E740000000000000000000000000000000006E +S315E075E750000000000000000000000000000000005E +S315E075E760000000000000000000000000000000004E +S315E075E770000000000000000000000000000000003E +S315E075E780000000000000000000000000000000002E +S315E075E790000000000000000000000000000000001E +S315E075E7A0000000000000000000000000000000000E +S315E075E7B000000000000000000000000000000000FE +S315E075E7C000000000000000000000000000000000EE +S315E075E7D000000000000000000000000000000000DE +S315E075E7E000000000000000000000000000000000CE +S315E075E7F000000000000000000000000000000000BE +S315E075E80000000000000000000000000000000000AD +S315E075E810000000000000000000000000000000009D +S315E075E820000000000000000000000000000000008D +S315E075E830000000000000000000000000000000007D +S315E075E840000000000000000000000000000000006D +S315E075E850000000000000000000000000000000005D +S315E075E860000000000000000000000000000000004D +S315E075E870000000000000000000000000000000003D +S315E075E8800000000000000000003E490000000000A6 +S315E075E890000000000000000000000000000000001D +S315E075E8A0000000000000000000000000000000000D +S315E075E8B000000000000000000000000000000000FD +S315E075E8C000000000000000000000000000000000ED +S315E075E8D000000000000000000000000000000000DD +S315E075E8E000000000000000000000000000000000CD +S315E075E8F000000000000000000000000000000000BD +S315E075E90000000000000000000000000000000000AC +S315E075E910000000000000000000000000000000009C +S315E075E920000000000000000000000000000000008C +S315E075E930000000000000000000000000000000007C +S315E075E940000000000000000000000000000000006C +S315E075E950000000000000000000000000000000005C +S315E075E960000000000000000000000000000000004C +S315E075E970000000000000000000000000000000003C +S315E075E980000000000000000000000000000000002C +S315E075E990000000000000000000000000000000001C +S315E075E9A0000000000000000000000000000000000C +S315E075E9B000000000000000000000000000000000FC +S315E075E9C000000000000000000000000000000000EC +S315E075E9D000000000000000000000000000000000DC +S315E075E9E000000000000000000000000000000000CC +S315E075E9F000000000000000000000000000000000BC +S315E075EA0000003E4900000000000000000000000024 +S315E075EA10000000000000000000000000000000009B +S315E075EA20000000000000000000000000000000008B +S315E075EA30000000000000000000000000000000007B +S315E075EA40000000000000000000000000000000006B +S315E075EA50000000000000000000000000000000005B +S315E075EA60000000000000000000000000000000004B +S315E075EA70000000000000000000000000000000003B +S315E075EA80000000000000000000000000000000002B +S315E075EA90000000000000000000000000000000001B +S315E075EAA0000000000000000000000000000000000B +S315E075EAB000000000000000000000000000000000FB +S315E075EAC000000000000000000000000000000000EB +S315E075EAD000000000000000000000000000000000DB +S315E075EAE000000000000000000000000000000000CB +S315E075EAF000000000000000000000000000000000BB +S315E075EB0000000000000000000000000000000000AA +S315E075EB10000000000000000000000000000000009A +S315E075EB20000000000000000000000000000000008A +S315E075EB30000000000000000000000000000000007A +S315E075EB40000000000000000000000000000000006A +S315E075EB50000000000000000000000000000000005A +S315E075EB60000000000000000000000000000000004A +S315E075EB7000000000000000000000003E49000000B3 +S315E075EB80000000000000000000000000000000002A +S315E075EB90000000000000000000000000000000001A +S315E075EBA0000000000000000000000000000000000A +S315E075EBB000000000000000000000000000000000FA +S315E075EBC000000000000000000000000000000000EA +S315E075EBD000000000000000000000000000000000DA +S315E075EBE000000000000000000000000000000000CA +S315E075EBF000000000000000000000000000000000BA +S315E075EC0000000000000000000000000000000000A9 +S315E075EC100000000000000000000000000000000099 +S315E075EC200000000000000000000000000000000089 +S315E075EC300000000000000000000000000000000079 +S315E075EC400000000000000000000000000000000069 +S315E075EC500000000000000000000000000000000059 +S315E075EC600000000000000000000000000000000049 +S315E075EC700000000000000000000000000000000039 +S315E075EC800000000000000000000000000000000029 +S315E075EC900000000000000000000000000000000019 +S315E075ECA00000000000000000000000000000000009 +S315E075ECB000000000000000000000000000000000F9 +S315E075ECC000000000000000000000000000000000E9 +S315E075ECD000000000000000000000000000000000D9 +S315E075ECE000000000000000000000000000000000C9 +S315E075ECF0000000003E490000000000000000000032 +S315E075ED0000000000000000000000000000000000A8 +S315E075ED100000000000000000000000000000000098 +S315E075ED200000000000000000000000000000000088 +S315E075ED300000000000000000000000000000000078 +S315E075ED400000000000000000000000000000000068 +S315E075ED500000000000000000000000000000000058 +S315E075ED600000000000000000000000000000000048 +S315E075ED700000000000000000000000000000000038 +S315E075ED800000000000000000000000000000000028 +S315E075ED900000000000000000000000000000000018 +S315E075EDA00000000000000000000000000000000008 +S315E075EDB000000000000000000000000000000000F8 +S315E075EDC000000000000000000000000000000000E8 +S315E075EDD000000000000000000000000000000000D8 +S315E075EDE000000000000000000000000000000000C8 +S315E075EDF000000000000000000000000000000000B8 +S315E075EE0000000000000000000000000000000000A7 +S315E075EE100000000000000000000000000000000097 +S315E075EE200000000000000000000000000000000087 +S315E075EE300000000000000000000000000000000077 +S315E075EE400000000000000000000000000000000067 +S315E075EE500000000000000000000000000000000057 +S315E075EE60000000000000000000000000003E4900C0 +S315E075EE700000000000000000000000000000000037 +S315E075EE800000000000000000000000000000000027 +S315E075EE900000000000000000000000000000000017 +S315E075EEA00000000000000000000000000000000007 +S315E075EEB000000000000000000000000000000000F7 +S315E075EEC000000000000000000000000000000000E7 +S315E075EED000000000000000000000000000000000D7 +S315E075EEE000000000000000000000000000000000C7 +S315E075EEF000000000000000000000000000000000B7 +S315E075EF0000000000000000000000000000000000A6 +S315E075EF100000000000000000000000000000000096 +S315E075EF200000000000000000000000000000000086 +S315E075EF300000000000000000000000000000000076 +S315E075EF400000000000000000000000000000000066 +S315E075EF500000000000000000000000000000000056 +S315E075EF600000000000000000000000000000000046 +S315E075EF700000000000000000000000000000000036 +S315E075EF800000000000000000000000000000000026 +S315E075EF900000000000000000000000000000000016 +S315E075EFA00000000000000000000000000000000006 +S315E075EFB000000000000000000000000000000000F6 +S315E075EFC000000000000000000000000000000000E6 +S315E075EFD000000000000000000000000000000000D6 +S315E075EFE00000000000003E4900000000000000003F +S315E075EFF000000000000000000000000000000000B6 +S315E075F00000000000000000000000000000000000A5 +S315E075F0100000000000000000000000000000000095 +S315E075F0200000000000000000000000000000000085 +S315E075F0300000000000000000000000000000000075 +S315E075F0400000000000000000000000000000000065 +S315E075F0500000000000000000000000000000000055 +S315E075F0600000000000000000000000000000000045 +S315E075F0700000000000000000000000000000000035 +S315E075F0800000000000000000000000000000000025 +S315E075F0900000000000000000000000000000000015 +S315E075F0A00000000000000000000000000000000005 +S315E075F0B000000000000000000000000000000000F5 +S315E075F0C000000000000000000000000000000000E5 +S315E075F0D000000000000000000000000000000000D5 +S315E075F0E000000000000000000000000000000000C5 +S315E075F0F000000000000000000000000000000000B5 +S315E075F10000000000000000000000000000000000A4 +S315E075F1100000000000000000000000000000000094 +S315E075F1200000000000000000000000000000000084 +S315E075F1300000000000000000000000000000000074 +S315E075F1400000000000000000000000000000000064 +S315E075F1500000000000000000000000000000003E16 +S315E075F16049000000000000000000000000000000FB +S315E075F1700000000000000000000000000000000034 +S315E075F1800000000000000000000000000000000024 +S315E075F1900000000000000000000000000000000014 +S315E075F1A00000000000000000000000000000000004 +S315E075F1B000000000000000000000000000000000F4 +S315E075F1C000000000000000000000000000000000E4 +S315E075F1D000000000000000000000000000000000D4 +S315E075F1E000000000000000000000000000000000C4 +S315E075F1F000000000000000000000000000000000B4 +S315E075F20000000000000000000000000000000000A3 +S315E075F2100000000000000000000000000000000093 +S315E075F2200000000000000000000000000000000083 +S315E075F2300000000000000000000000000000000073 +S315E075F2400000000000000000000000000000000063 +S315E075F2500000000000000000000000000000000053 +S315E075F2600000000000000000000000000000000043 +S315E075F2700000000000000000000000000000000033 +S315E075F2800000000000000000000000000000000023 +S315E075F2900000000000000000000000000000000013 +S315E075F2A00000000000000000000000000000000003 +S315E075F2B000000000000000000000000000000000F3 +S315E075F2C000000000000000000000000000000000E3 +S315E075F2D000000000000000003E490000000000004C +S315E075F2E000000000000000000000000000000000C3 +S315E075F2F000000000000000000000000000000000B3 +S315E075F30000000000000000000000000000000000A2 +S315E075F3100000000000000000000000000000000092 +S315E075F3200000000000000000000000000000000082 +S315E075F3300000000000000000000000000000000072 +S315E075F3400000000000000000000000000000000062 +S315E075F3500000000000000000000000000000000052 +S315E075F3600000000000000000000000000000000042 +S315E075F3700000000000000000000000000000000032 +S315E075F3800000000000000000000000000000000022 +S315E075F3900000000000000000000000000000000012 +S315E075F3A00000000000000000000000000000000002 +S315E075F3B000000000000000000000000000000000F2 +S315E075F3C000000000000000000000000000000000E2 +S315E075F3D000000000000000000000000000000000D2 +S315E075F3E000000000000000000000000000000000C2 +S315E075F3F000000000000000000000000000000000B2 +S315E075F40000000000000000000000000000000000A1 +S315E075F4100000000000000000000000000000000091 +S315E075F4200000000000000000000000000000000081 +S315E075F4300000000000000000000000000000000071 +S315E075F4400000000000000000000000000000000061 +S315E075F450003E4900000000000000000000000000CA +S315E075F4600000000000000000000000000000000041 +S315E075F4700000000000000000000000000000000031 +S315E075F4800000000000000000000000000000000021 +S315E075F4900000000000000000000000000000000011 +S315E075F4A00000000000000000000000000000000001 +S315E075F4B000000000000000000000000000000000F1 +S315E075F4C000000000000000000000000000000000E1 +S315E075F4D000000000000000000000000000000000D1 +S315E075F4E000000000000000000000000000000000C1 +S315E075F4F000000000000000000000000000000000B1 +S315E075F50000000000000000000000000000000000A0 +S315E075F5100000000000000000000000000000000090 +S315E075F5200000000000000000000000000000000080 +S315E075F5300000000000000000000000000000000070 +S315E075F5400000000000000000000000000000000060 +S315E075F5500000000000000000000000000000000050 +S315E075F5600000000000000000000000000000000040 +S315E075F5700000000000000000000000000000000030 +S315E075F5800000000000000000000000000000000020 +S315E075F5900000000000000000000000000000000010 +S315E075F5A00000000000000000000000000000000000 +S315E075F5B000000000000000000000000000000000F0 +S315E075F5C0000000000000000000003E490000000059 +S315E075F5D000000000000000000000000000000000D0 +S315E075F5E000000000000000000000000000000000C0 +S315E075F5F000000000000000000000000000000000B0 +S315E075F600000000000000000000000000000000009F +S315E075F610000000000000000000000000000000008F +S315E075F620000000000000000000000000000000007F +S315E075F630000000000000000000000000000000006F +S315E075F640000000000000000000000000000000005F +S315E075F650000000000000000000000000000000004F +S315E075F660000000000000000000000000000000003F +S315E075F670000000000000000000000000000000002F +S315E075F680000000000000000000000000000000001F +S315E075F690000000000000000000000000000000000F +S315E075F6A000000000000000000000000000000000FF +S315E075F6B000000000000000000000000000000000EF +S315E075F6C000000000000000000000000000000000DF +S315E075F6D000000000000000000000000000000000CF +S315E075F6E000000000000000000000000000000000BF +S315E075F6F000000000000000000000000000000000AF +S315E075F700000000000000000000000000000000009E +S315E075F710000000000000000000000000000000008E +S315E075F720000000000000000000000000000000007E +S315E075F730000000000000000000000000000000006E +S315E075F7400000003E490000000000000000000000D7 +S315E075F750000000000000000000000000000000004E +S315E075F760000000000000000000000000000000003E +S315E075F770000000000000000000000000000000002E +S315E075F780000000000000000000000000000000001E +S315E075F790000000000000000000000000000000000E +S315E075F7A000000000000000000000000000000000FE +S315E075F7B000000000000000000000000000000000EE +S315E075F7C000000000000000000000000000000000DE +S315E075F7D000000000000000000000000000000000CE +S315E075F7E000000000000000000000000000000000BE +S315E075F7F000000000000000000000000000000000AE +S315E075F800000000000000000000000000000000009D +S315E075F810000000000000000000000000000000008D +S315E075F820000000000000000000000000000000007D +S315E075F830000000000000000000000000000000006D +S315E075F840000000000000000000000000000000005D +S315E075F850000000000000000000000000000000004D +S315E075F860000000000000000000000000000000003D +S315E075F870000000000000000000000000000000002D +S315E075F880000000000000000000000000000000001D +S315E075F890000000000000000000000000000000000D +S315E075F8A000000000000000000000000000000000FD +S315E075F8B00000000000000000000000003E49000066 +S315E075F8C000000000000000000000000000000000DD +S315E075F8D000000000000000000000000000000000CD +S315E075F8E000000000000000000000000000000000BD +S315E075F8F000000000000000000000000000000000AD +S315E075F900000000000000000000000000000000009C +S315E075F910000000000000000000000000000000008C +S315E075F920000000000000000000000000000000007C +S315E075F930000000000000000000000000000000006C +S315E075F940000000000000000000000000000000005C +S315E075F950000000000000000000000000000000004C +S315E075F960000000000000000000000000000000003C +S315E075F970000000000000000000000000000000002C +S315E075F980000000000000000000000000000000001C +S315E075F990000000000000000000000000000000000C +S315E075F9A000000000000000000000000000000000FC +S315E075F9B000000000000000000000000000000000EC +S315E075F9C000000000000000000000000000000000DC +S315E075F9D000000000000000000000000000000000CC +S315E075F9E000000000000000000000000000000000BC +S315E075F9F000000000000000000000000000000000AC +S315E075FA00000000000000000000000000000000009B +S315E075FA10000000000000000000000000000000008B +S315E075FA20000000000000000000000000000000007B +S315E075FA3000000000003E49000000000000000000E4 +S315E075FA40000000000000000000000000000000005B +S315E075FA50000000000000000000000000000000004B +S315E075FA60000000000000000000000000000000003B +S315E075FA70000000000000000000000000000000002B +S315E075FA80000000000000000000000000000000001B +S315E075FA90000000000000000000000000000000000B +S315E075FAA000000000000000000000000000000000FB +S315E075FAB000000000000000000000000000000000EB +S315E075FAC000000000000000000000000000000000DB +S315E075FAD000000000000000000000000000000000CB +S315E075FAE000000000000000000000000000000000BB +S315E075FAF000000000000000000000000000000000AB +S315E075FB00000000000000000000000000000000009A +S315E075FB10000000000000000000000000000000008A +S315E075FB20000000000000000000000000000000007A +S315E075FB30000000000000000000000000000000006A +S315E075FB40000000000000000000000000000000005A +S315E075FB50000000000000000000000000000000004A +S315E075FB60000000000000000000000000000000003A +S315E075FB70000000000000000000000000000000002A +S315E075FB80000000000000000000000000000000001A +S315E075FB90000000000000000000000000000000000A +S315E075FBA000000000000000000000000000003E4973 +S315E075FBB000000000000000000000000000000000EA +S315E075FBC000000000000000000000000000000000DA +S315E075FBD000000000000000000000000000000000CA +S315E075FBE000000000000000000000000000000000BA +S315E075FBF000000000000000000000000000000000AA +S315E075FC000000000000000000000000000000000099 +S315E075FC100000000000000000000000000000000089 +S315E075FC200000000000000000000000000000000079 +S315E075FC300000000000000000000000000000000069 +S315E075FC400000000000000000000000000000000059 +S315E075FC500000000000000000000000000000000049 +S315E075FC600000000000000000000000000000000039 +S315E075FC700000000000000000000000000000000029 +S315E075FC800000000000000000000000000000000019 +S315E075FC900000000000000000000000000000000009 +S315E075FCA000000000000000000000000000000000F9 +S315E075FCB000000000000000000000000000000000E9 +S315E075FCC000000000000000000000000000000000D9 +S315E075FCD000000000000000000000000000000000C9 +S315E075FCE000000000000000000000000000000000B9 +S315E075FCF000000000000000000000000000000000A9 +S315E075FD000000000000000000000000000000000098 +S315E075FD100000000000000000000000000000000088 +S315E075FD20000000000000003E4900000000000000F1 +S315E075FD300000000000000000000000000000000068 +S315E075FD400000000000000000000000000000000058 +S315E075FD500000000000000000000000000000000048 +S315E075FD600000000000000000000000000000000038 +S315E075FD700000000000000000000000000000000028 +S315E075FD800000000000000000000000000000000018 +S315E075FD900000000000000000000000000000000008 +S315E075FDA000000000000000000000000000000000F8 +S315E075FDB000000000000000000000000000000000E8 +S315E075FDC000000000000000000000000000000000D8 +S315E075FDD000000000000000000000000000000000C8 +S315E075FDE000000000000000000000000000000000B8 +S315E075FDF000000000000000000000000000000000A8 +S315E075FE000000000000000000000000000000000097 +S315E075FE100000000000000000000000000000000087 +S315E075FE200000000000000000000000000000000077 +S315E075FE300000000000000000000000000000000067 +S315E075FE400000000000000000000000000000000057 +S315E075FE500000000000000000000000000000000047 +S315E075FE600000000000000000000000000000000037 +S315E075FE700000000000000000000000000000000027 +S315E075FE800000000000000000000000000000000017 +S315E075FE900000000000000000000000000000000007 +S315E075FEA03E49000000000000000000000000000070 +S315E075FEB000000000000000000000000000000000E7 +S315E075FEC000000000000000000000000000000000D7 +S315E075FED000000000000000000000000000000000C7 +S315E075FEE000000000000000000000000000000000B7 +S315E075FEF000000000000000000000000000000000A7 +S315E075FF000000000000000000000000000000000096 +S315E075FF100000000000000000000000000000000086 +S315E075FF200000000000000000000000000000000076 +S315E075FF300000000000000000000000000000000066 +S315E075FF400000000000000000000000000000000056 +S315E075FF500000000000000000000000000000000046 +S315E075FF600000000000000000000000000000000036 +S315E075FF700000000000000000000000000000000026 +S315E075FF800000000000000000000000000000000016 +S315E075FF900000000000000000000000000000000006 +S315E075FFA000000000000000000000000000000000F6 +S315E075FFB000000000000000000000000000000000E6 +S315E075FFC000000000000000000000000000000000D6 +S315E075FFD000000000000000000000000000000000C6 +S315E075FFE000000000000000000000000000000000B6 +S315E075FFF000000000000000000000000000000000A6 +S315E07600000000000000000000000000000000000094 +S315E07600100000000000000000003E490000000000FD +S315E07600200000000000000000000000000000000074 +S315E07600300000000000000000000000000000000064 +S315E07600400000000000000000000000000000000054 +S315E07600500000000000000000000000000000000044 +S315E07600600000000000000000000000000000000034 +S315E07600700000000000000000000000000000000024 +S315E07600800000000000000000000000000000000014 +S315E07600900000000000000000000000000000000004 +S315E07600A000000000000000000000000000000000F4 +S315E07600B000000000000000000000000000000000E4 +S315E07600C000000000000000000000000000000000D4 +S315E07600D000000000000000000000000000000000C4 +S315E07600E000000000000000000000000000000000B4 +S315E07600F000000000000000000000000000000000A4 +S315E07601000000000000000000000000000000000093 +S315E07601100000000000000000000000000000000083 +S315E07601200000000000000000000000000000000073 +S315E07601300000000000000000000000000000000063 +S315E07601400000000000000000000000000000000053 +S315E07601500000000000000000000000000000000043 +S315E07601600000000000000000000000000000000033 +S315E07601700000000000000000000000000000000023 +S315E07601800000000000000000000000000000000013 +S315E076019000003E490000000000000000000000007C +S315E07601A000000000000000000000000000000000F3 +S315E07601B000000000000000000000000000000000E3 +S315E07601C000000000000000000000000000000000D3 +S315E07601D000000000000000000000000000000000C3 +S315E07601E000000000000000000000000000000000B3 +S315E07601F000000000000000000000000000000000A3 +S315E07602000000000000000000000000000000000092 +S315E07602100000000000000000000000000000000082 +S315E07602200000000000000000000000000000000072 +S315E07602300000000000000000000000000000000062 +S315E07602400000000000000000000000000000000052 +S315E07602500000000000000000000000000000000042 +S315E07602600000000000000000000000000000000032 +S315E07602700000000000000000000000000000000022 +S315E07602800000000000000000000000000000000012 +S315E07602900000000000000000000000000000000002 +S315E07602A000000000000000000000000000000000F2 +S315E07602B000000000000000000000000000000000E2 +S315E07602C000000000000000000000000000000000D2 +S315E07602D000000000000000000000000000000000C2 +S315E07602E000000000000000000000000000000000B2 +S315E07602F000000000000000000000000000000000A2 +S315E076030000000000000000000000003E490000000A +S315E07603100000000000000000000000000000000081 +S315E07603200000000000000000000000000000000071 +S315E07603300000000000000000000000000000000061 +S315E07603400000000000000000000000000000000051 +S315E07603500000000000000000000000000000000041 +S315E07603600000000000000000000000000000000031 +S315E07603700000000000000000000000000000000021 +S315E07603800000000000000000000000000000000011 +S315E07603900000000000000000000000000000000001 +S315E07603A000000000000000000000000000000000F1 +S315E07603B000000000000000000000000000000000E1 +S315E07603C000000000000000000000000000000000D1 +S315E07603D000000000000000000000000000000000C1 +S315E07603E000000000000000000000000000000000B1 +S315E07603F000000000000000000000000000000000A1 +S315E07604000000000000000000000000000000000090 +S315E07604100000000000000000000000000000000080 +S315E07604200000000000000000000000000000000070 +S315E07604300000000000000000000000000000000060 +S315E07604400000000000000000000000000000000050 +S315E07604500000000000000000000000000000000040 +S315E07604600000000000000000000000000000000030 +S315E07604700000000000000000000000000000000020 +S315E0760480000000003E490000000000000000000089 +S315E07604900000000000000000000000000000000000 +S315E07604A000000000000000000000000000000000F0 +S315E07604B000000000000000000000000000000000E0 +S315E07604C000000000000000000000000000000000D0 +S315E07604D000000000000000000000000000000000C0 +S315E07604E000000000000000000000000000000000B0 +S315E07604F000000000000000000000000000000000A0 +S315E0760500000000000000000000000000000000008F +S315E0760510000000000000000000000000000000007F +S315E0760520000000000000000000000000000000006F +S315E0760530000000000000000000000000000000005F +S315E0760540000000000000000000000000000000004F +S315E0760550000000000000000000000000000000003F +S315E0760560000000000000000000000000000000002F +S315E0760570000000000000000000000000000000001F +S315E0760580000000000000000000000000000000000F +S315E076059000000000000000000000000000000000FF +S315E07605A000000000000000000000000000000000EF +S315E07605B000000000000000000000000000000000DF +S315E07605C000000000000000000000000000000000CF +S315E07605D000000000000000000000000000000000BF +S315E07605E000000000000000000000000000000000AF +S315E07605F0000000000000000000000000003E490018 +S315E0760600000000000000000000000000000000008E +S315E0760610000000000000000000000000000000007E +S315E0760620000000000000000000000000000000006E +S315E0760630000000000000000000000000000000005E +S315E0760640000000000000000000000000000000004E +S315E0760650000000000000000000000000000000003E +S315E0760660000000000000000000000000000000002E +S315E0760670000000000000000000000000000000001E +S315E0760680000000000000000000000000000000000E +S315E076069000000000000000000000000000000000FE +S315E07606A000000000000000000000000000000000EE +S315E07606B000000000000000000000000000000000DE +S315E07606C000000000000000000000000000000000CE +S315E07606D000000000000000000000000000000000BE +S315E07606E000000000000000000000000000000000AE +S315E07606F0000000000000000000000000000000009E +S315E0760700000000000000000000000000000000008D +S315E0760710000000000000000000000000000000007D +S315E0760720000000000000000000000000000000006D +S315E0760730000000000000000000000000000000005D +S315E0760740000000000000000000000000000000004D +S315E0760750000000000000000000000000000000003D +S315E0760760000000000000000000000000000000002D +S315E07607700000000000003E49000000000000000096 +S315E0760780000000000000000000000000000000000D +S315E076079000000000000000000000000000000000FD +S315E07607A000000000000000000000000000000000ED +S315E07607B000000000000000000000000000000000DD +S315E07607C000000000000000000000000000000000CD +S315E07607D000000000000000000000000000000000BD +S315E07607E000000000000000000000000000000000AD +S315E07607F0000000000000000000000000000000009D +S315E0760800000000000000000000000000000000008C +S315E0760810000000000000000000000000000000007C +S315E0760820000000000000000000000000000000006C +S315E0760830000000000000000000000000000000005C +S315E0760840000000000000000000000000000000004C +S315E0760850000000000000000000000000000000003C +S315E0760860000000000000000000000000000000002C +S315E0760870000000000000000000000000000000001C +S315E0760880000000000000000000000000000000000C +S315E076089000000000000000000000000000000000FC +S315E07608A000000000000000000000000000000000EC +S315E07608B000000000000000000000000000000000DC +S315E07608C000000000000000000000000000000000CC +S315E07608D000000000000000000000000000000000BC +S315E07608E00000000000000000000000000000003E6E +S315E07608F04900000000000000000000000000000053 +S315E0760900000000000000000000000000000000008B +S315E0760910000000000000000000000000000000007B +S315E0760920000000000000000000000000000000006B +S315E0760930000000000000000000000000000000005B +S315E0760940000000000000000000000000000000004B +S315E0760950000000000000000000000000000000003B +S315E0760960000000000000000000000000000000002B +S315E0760970000000000000000000000000000000001B +S315E0760980000000000000000000000000000000000B +S315E076099000000000000000000000000000000000FB +S315E07609A000000000000000000000000000000000EB +S315E07609B000000000000000000000000000000000DB +S315E07609C000000000000000000000000000000000CB +S315E07609D000000000000000000000000000000000BB +S315E07609E000000000000000000000000000000000AB +S315E07609F0000000000000000000000000000000009B +S315E0760A00000000000000000000000000000000008A +S315E0760A10000000000000000000000000000000007A +S315E0760A20000000000000000000000000000000006A +S315E0760A30000000000000000000000000000000005A +S315E0760A40000000000000000000000000000000004A +S315E0760A50000000000000000000000000000000003A +S315E0760A6000000000000000003E49000000000000A3 +S315E0760A70000000000000000000000000000000001A +S315E0760A80000000000000000000000000000000000A +S315E0760A9000000000000000000000000000000000FA +S315E0760AA000000000000000000000000000000000EA +S315E0760AB000000000000000000000000000000000DA +S315E0760AC000000000000000000000000000000000CA +S315E0760AD000000000000000000000000000000000BA +S315E0760AE000000000000000000000000000000000AA +S315E0760AF0000000000000000000000000000000009A +S315E0760B000000000000000000000000000000000089 +S315E0760B100000000000000000000000000000000079 +S315E0760B200000000000000000000000000000000069 +S315E0760B300000000000000000000000000000000059 +S315E0760B400000000000000000000000000000000049 +S315E0760B500000000000000000000000000000000039 +S315E0760B600000000000000000000000000000000029 +S315E0760B700000000000000000000000000000000019 +S315E0760B800000000000000000000000000000000009 +S315E0760B9000000000000000000000000000000000F9 +S315E0760BA000000000000000000000000000000000E9 +S315E0760BB000000000000000000000000000000000D9 +S315E0760BC000000000000000000000000000000000C9 +S315E0760BD000000000000000000000000000000000B9 +S315E0760BE0003E490000000000000000000000000022 +S315E0760BF00000000000000000000000000000000099 +S315E0760C000000000000000000000000000000000088 +S315E0760C100000000000000000000000000000000078 +S315E0760C200000000000000000000000000000000068 +S315E0760C300000000000000000000000000000000058 +S315E0760C400000000000000000000000000000000048 +S315E0760C500000000000000000000000000000000038 +S315E0760C600000000000000000000000000000000028 +S315E0760C700000000000000000000000000000000018 +S315E0760C800000000000000000000000000000000008 +S315E0760C9000000000000000000000000000000000F8 +S315E0760CA000000000000000000000000000000000E8 +S315E0760CB000000000000000000000000000000000D8 +S315E0760CC000000000000000000000000000000000C8 +S315E0760CD000000000000000000000000000000000B8 +S315E0760CE000000000000000000000000000000000A8 +S315E0760CF00000000000000000000000000000000098 +S315E0760D000000000000000000000000000000000087 +S315E0760D100000000000000000000000000000000077 +S315E0760D200000000000000000000000000000000067 +S315E0760D300000000000000000000000000000000057 +S315E0760D400000000000000000000000000000000047 +S315E0760D50000000000000000000003E4900000000B0 +S315E0760D600000000000000000000000000000000027 +S315E0760D700000000000000000000000000000000017 +S315E0760D800000000000000000000000000000000007 +S315E0760D9000000000000000000000000000000000F7 +S315E0760DA000000000000000000000000000000000E7 +S315E0760DB000000000000000000000000000000000D7 +S315E0760DC000000000000000000000000000000000C7 +S315E0760DD000000000000000000000000000000000B7 +S315E0760DE000000000000000000000000000000000A7 +S315E0760DF00000000000000000000000000000000097 +S315E0760E000000000000000000000000000000000086 +S315E0760E100000000000000000000000000000000076 +S315E0760E200000000000000000000000000000000066 +S315E0760E300000000000000000000000000000000056 +S315E0760E400000000000000000000000000000000046 +S315E0760E500000000000000000000000000000000036 +S315E0760E600000000000000000000000000000000026 +S315E0760E700000000000000000000000000000000016 +S315E0760E800000000000000000000000000000000006 +S315E0760E9000000000000000000000000000000000F6 +S315E0760EA000000000000000000000000000000000E6 +S315E0760EB000000000000000000000000000000000D6 +S315E0760EC000000000000000000000000000000000C6 +S315E0760ED00000003E4900000000000000000000002F +S315E0760EE000000000000000000000000000000000A6 +S315E0760EF00000000000000000000000000000000096 +S315E0760F000000000000000000000000000000000085 +S315E0760F100000000000000000000000000000000075 +S315E0760F200000000000000000000000000000000065 +S315E0760F300000000000000000000000000000000055 +S315E0760F400000000000000000000000000000000045 +S315E0760F500000000000000000000000000000000035 +S315E0760F600000000000000000000000000000000025 +S315E0760F700000000000000000000000000000000015 +S315E0760F800000000000000000000000000000000005 +S315E0760F9000000000000000000000000000000000F5 +S315E0760FA000000000000000000000000000000000E5 +S315E0760FB000000000000000000000000000000000D5 +S315E0760FC000000000000000000000000000000000C5 +S315E0760FD000000000000000000000000000000000B5 +S315E0760FE000000000000000000000000000000000A5 +S315E0760FF00000000000000000000000000000000095 +S315E07610000000000000000000000000000000000084 +S315E07610100000000000000000000000000000000074 +S315E07610200000000000000000000000000000000064 +S315E07610300000000000000000000000000000000054 +S315E07610400000000000000000000000003E490000BD +S315E07610500000000000000000000000000000000034 +S315E07610600000000000000000000000000000000024 +S315E07610700000000000000000000000000000000014 +S315E07610800000000000000000000000000000000004 +S315E076109000000000000000000000000000000000F4 +S315E07610A000000000000000000000000000000000E4 +S315E07610B000000000000000000000000000000000D4 +S315E07610C000000000000000000000000000000000C4 +S315E07610D000000000000000000000000000000000B4 +S315E07610E000000000000000000000000000000000A4 +S315E07610F00000000000000000000000000000000094 +S315E07611000000000000000000000000000000000083 +S315E07611100000000000000000000000000000000073 +S315E07611200000000000000000000000000000000063 +S315E07611300000000000000000000000000000000053 +S315E07611400000000000000000000000000000000043 +S315E07611500000000000000000000000000000000033 +S315E07611600000000000000000000000000000000023 +S315E07611700000000000000000000000000000000013 +S315E07611800000000000000000000000000000000003 +S315E076119000000000000000000000000000000000F3 +S315E07611A000000000000000000000000000000000E3 +S315E07611B000000000000000000000000000000000D3 +S315E07611C000000000003E490000000000000000003C +S315E07611D000000000000000000000000000000000B3 +S315E07611E000000000000000000000000000000000A3 +S315E07611F00000000000000000000000000000000093 +S315E07612000000000000000000000000000000000082 +S315E07612100000000000000000000000000000000072 +S315E07612200000000000000000000000000000000062 +S315E07612300000000000000000000000000000000052 +S315E07612400000000000000000000000000000000042 +S315E07612500000000000000000000000000000000032 +S315E07612600000000000000000000000000000000022 +S315E07612700000000000000000000000000000000012 +S315E07612800000000000000000000000000000000002 +S315E076129000000000000000000000000000000000F2 +S315E07612A000000000000000000000000000000000E2 +S315E07612B000000000000000000000000000000000D2 +S315E07612C000000000000000000000000000000000C2 +S315E07612D000000000000000000000000000000000B2 +S315E07612E000000000000000000000000000000000A2 +S315E07612F00000000000000000000000000000000092 +S315E07613000000000000000000000000000000000081 +S315E07613100000000000000000000000000000000071 +S315E07613200000000000000000000000000000000061 +S315E076133000000000000000000000000000003E49CA +S315E07613400000000000000000000000000000000041 +S315E07613500000000000000000000000000000000031 +S315E07613600000000000000000000000000000000021 +S315E07613700000000000000000000000000000000011 +S315E07613800000000000000000000000000000000001 +S315E076139000000000000000000000000000000000F1 +S315E07613A000000000000000000000000000000000E1 +S315E07613B000000000000000000000000000000000D1 +S315E07613C000000000000000000000000000000000C1 +S315E07613D000000000000000000000000000000000B1 +S315E07613E000000000000000000000000000000000A1 +S315E07613F00000000000000000000000000000000091 +S315E07614000000000000000000000000000000000080 +S315E07614100000000000000000000000000000000070 +S315E07614200000000000000000000000000000000060 +S315E07614300000000000000000000000000000000050 +S315E07614400000000000000000000000000000000040 +S315E07614500000000000000000000000000000000030 +S315E07614600000000000000000000000000000000020 +S315E07614700000000000000000000000000000000010 +S315E07614800000000000000000000000000000000000 +S315E076149000000000000000000000000000000000F0 +S315E07614A000000000000000000000000000000000E0 +S315E07614B0000000000000003E490000000000000049 +S315E07614C000000000000000000000000000000000C0 +S315E07614D000000000000000000000000000000000B0 +S315E07614E000000000000000000000000000000000A0 +S315E07614F00000000000000000000000000000000090 +S315E0761500000000000000000000000000000000007F +S315E0761510000000000000000000000000000000006F +S315E0761520000000000000000000000000000000005F +S315E0761530000000000000000000000000000000004F +S315E0761540000000000000000000000000000000003F +S315E0761550000000000000000000000000000000002F +S315E0761560000000000000000000000000000000001F +S315E0761570000000000000000000000000000000000F +S315E076158000000000000000000000000000000000FF +S315E076159000000000000000000000000000000000EF +S315E07615A000000000000000000000000000000000DF +S315E07615B000000000000000000000000000000000CF +S315E07615C000000000000000000000000000000000BF +S315E07615D000000000000000000000000000000000AF +S315E07615E0000000000000000000000000000000009F +S315E07615F0000000000000000000000000000000008F +S315E0761600000000000000000000000000000000007E +S315E0761610000000000000000000000000000000006E +S315E0761620000000000000000000000000000000005E +S315E07616303E490000000000000000000000000000C7 +S315E0761640000000000000000000000000000000003E +S315E0761650000000000000000000000000000000002E +S315E0761660000000000000000000000000000000001E +S315E0761670000000000000000000000000000000000E +S315E076168000000000000000000000000000000000FE +S315E076169000000000000000000000000000000000EE +S315E07616A000000000000000000000000000000000DE +S315E07616B000000000000000000000000000000000CE +S315E07616C000000000000000000000000000000000BE +S315E07616D000000000000000000000000000000000AE +S315E07616E0000000000000000000000000000000009E +S315E07616F0000000000000000000000000000000008E +S315E0761700000000000000000000000000000000007D +S315E0761710000000000000000000000000000000006D +S315E0761720000000000000000000000000000000005D +S315E0761730000000000000000000000000000000004D +S315E0761740000000000000000000000000000000003D +S315E0761750000000000000000000000000000000002D +S315E0761760000000000000000000000000000000001D +S315E0761770000000000000000000000000000000000D +S315E076178000000000000000000000000000000000FD +S315E076179000000000000000000000000000000000ED +S315E07617A00000000000000000003E49000000000056 +S315E07617B000000000000000000000000000000000CD +S315E07617C000000000000000000000000000000000BD +S315E07617D000000000000000000000000000000000AD +S315E07617E0000000000000000000000000000000009D +S315E07617F0000000000000000000000000000000008D +S315E0761800000000000000000000000000000000007C +S315E0761810000000000000000000000000000000006C +S315E0761820000000000000000000000000000000005C +S315E0761830000000000000000000000000000000004C +S315E0761840000000000000000000000000000000003C +S315E0761850000000000000000000000000000000002C +S315E0761860000000000000000000000000000000001C +S315E0761870000000000000000000000000000000000C +S315E076188000000000000000000000000000000000FC +S315E076189000000000000000000000000000000000EC +S315E07618A000000000000000000000000000000000DC +S315E07618B000000000000000000000000000000000CC +S315E07618C000000000000000000000000000000000BC +S315E07618D000000000000000000000000000000000AC +S315E07618E0000000000000000000000000000000009C +S315E07618F0000000000000000000000000000000008C +S315E0761900000000000000000000000000000000007B +S315E0761910000000000000000000000000000000006B +S315E076192000003E49000000000000000000000000D4 +S315E0761930000000000000000000000000000000004B +S315E0761940000000000000000000000000000000003B +S315E0761950000000000000000000000000000000002B +S315E0761960000000000000000000000000000000001B +S315E0761970000000000000000000000000000000000B +S315E076198000000000000000000000000000000000FB +S315E076199000000000000000000000000000000000EB +S315E07619A000000000000000000000000000000000DB +S315E07619B000000000000000000000000000000000CB +S315E07619C000000000000000000000000000000000BB +S315E07619D000000000000000000000000000000000AB +S315E07619E0000000000000000000000000000000009B +S315E07619F0000000000000000000000000000000008B +S315E0761A00000000000000000000000000000000007A +S315E0761A10000000000000000000000000000000006A +S315E0761A20000000000000000000000000000000005A +S315E0761A30000000000000000000000000000000004A +S315E0761A40000000000000000000000000000000003A +S315E0761A50000000000000000000000000000000002A +S315E0761A60000000000000000000000000000000001A +S315E0761A70000000000000000000000000000000000A +S315E0761A8000000000000000000000000000000000FA +S315E0761A9000000000000000000000003E4900000063 +S315E0761AA000000000000000000000000000000000DA +S315E0761AB000000000000000000000000000000000CA +S315E0761AC000000000000000000000000000000000BA +S315E0761AD000000000000000000000000000000000AA +S315E0761AE0000000000000000000000000000000009A +S315E0761AF0000000000000000000000000000000008A +S315E0761B000000000000000000000000000000000079 +S315E0761B100000000000000000000000000000000069 +S315E0761B200000000000000000000000000000000059 +S315E0761B300000000000000000000000000000000049 +S315E0761B400000000000000000000000000000000039 +S315E0761B500000000000000000000000000000000029 +S315E0761B600000000000000000000000000000000019 +S315E0761B700000000000000000000000000000000009 +S315E0761B8000000000000000000000000000000000F9 +S315E0761B9000000000000000000000000000000000E9 +S315E0761BA000000000000000000000000000000000D9 +S315E0761BB000000000000000000000000000000000C9 +S315E0761BC000000000000000000000000000000000B9 +S315E0761BD000000000000000000000000000000000A9 +S315E0761BE00000000000000000000000000000000099 +S315E0761BF00000000000000000000000000000000089 +S315E0761C000000000000000000000000000000000078 +S315E0761C10000000003E4900000000000000000000E1 +S315E0761C200000000000000000000000000000000058 +S315E0761C300000000000000000000000000000000048 +S315E0761C400000000000000000000000000000000038 +S315E0761C500000000000000000000000000000000028 +S315E0761C600000000000000000000000000000000018 +S315E0761C700000000000000000000000000000000008 +S315E0761C8000000000000000000000000000000000F8 +S315E0761C9000000000000000000000000000000000E8 +S315E0761CA000000000000000000000000000000000D8 +S315E0761CB000000000000000000000000000000000C8 +S315E0761CC000000000000000000000000000000000B8 +S315E0761CD000000000000000000000000000000000A8 +S315E0761CE00000000000000000000000000000000098 +S315E0761CF00000000000000000000000000000000088 +S315E0761D000000000000000000000000000000000077 +S315E0761D100000000000000000000000000000000067 +S315E0761D200000000000000000000000000000000057 +S315E0761D300000000000000000000000000000000047 +S315E0761D400000000000000000000000000000000037 +S315E0761D500000000000000000000000000000000027 +S315E0761D600000000000000000000000000000000017 +S315E0761D700000000000000000000000000000000007 +S315E0761D80000000000000000000000000003E490070 +S315E0761D9000000000000000000000000000000000E7 +S315E0761DA000000000000000000000000000000000D7 +S315E0761DB000000000000000000000000000000000C7 +S315E0761DC000000000000000000000000000000000B7 +S315E0761DD000000000000000000000000000000000A7 +S315E0761DE00000000000000000000000000000000097 +S315E0761DF00000000000000000000000000000000087 +S315E0761E000000000000000000000000000000000076 +S315E0761E100000000000000000000000000000000066 +S315E0761E200000000000000000000000000000000056 +S315E0761E300000000000000000000000000000000046 +S315E0761E400000000000000000000000000000000036 +S315E0761E500000000000000000000000000000000026 +S315E0761E600000000000000000000000000000000016 +S315E0761E700000000000000000000000000000000006 +S315E0761E8000000000000000000000000000000000F6 +S315E0761E9000000000000000000000000000000000E6 +S315E0761EA000000000000000000000000000000000D6 +S315E0761EB000000000000000000000000000000000C6 +S315E0761EC000000000000000000000000000000000B6 +S315E0761ED000000000000000000000000000000000A6 +S315E0761EE00000000000000000000000000000000096 +S315E0761EF00000000000000000000000000000000086 +S315E0761F000000000000003E490000000000000000EE +S315E0761F100000000000000000000000000000000065 +S315E0761F200000000000000000000000000000000055 +S315E0761F300000000000000000000000000000000045 +S315E0761F400000000000000000000000000000000035 +S315E0761F500000000000000000000000000000000025 +S315E0761F600000000000000000000000000000000015 +S315E0761F700000000000000000000000000000000005 +S315E0761F8000000000000000000000000000000000F5 +S315E0761F9000000000000000000000000000000000E5 +S315E0761FA000000000000000000000000000000000D5 +S315E0761FB000000000000000000000000000000000C5 +S315E0761FC000000000000000000000000000000000B5 +S315E0761FD000000000000000000000000000000000A5 +S315E0761FE00000000000000000000000000000000095 +S315E0761FF00000000000000000000000000000000085 +S315E07620000000000000000000000000000000000074 +S315E07620100000000000000000000000000000000064 +S315E07620200000000000000000000000000000000054 +S315E07620300000000000000000000000000000000044 +S315E07620400000000000000000000000000000000034 +S315E07620500000000000000000000000000000000024 +S315E07620600000000000000000000000000000000014 +S315E07620700000000000000000000000000000003EC6 +S315E076208049000000000000000000000000000000AB +S315E076209000000000000000000000000000000000E4 +S315E07620A000000000000000000000000000000000D4 +S315E07620B000000000000000000000000000000000C4 +S315E07620C000000000000000000000000000000000B4 +S315E07620D000000000000000000000000000000000A4 +S315E07620E00000000000000000000000000000000094 +S315E07620F00000000000000000000000000000000084 +S315E07621000000000000000000000000000000000073 +S315E07621100000000000000000000000000000000063 +S315E07621200000000000000000000000000000000053 +S315E07621300000000000000000000000000000000043 +S315E07621400000000000000000000000000000000033 +S315E07621500000000000000000000000000000000023 +S315E07621600000000000000000000000000000000013 +S315E07621700000000000000000000000000000000003 +S315E076218000000000000000000000000000000000F3 +S315E076219000000000000000000000000000000000E3 +S315E07621A000000000000000000000000000000000D3 +S315E07621B000000000000000000000000000000000C3 +S315E07621C000000000000000000000000000000000B3 +S315E07621D000000000000000000000000000000000A3 +S315E07621E00000000000000000000000000000000093 +S315E07621F000000000000000003E49000000000000FC +S315E07622000000000000000000000000000000000072 +S315E07622100000000000000000000000000000000062 +S315E07622200000000000000000000000000000000052 +S315E07622300000000000000000000000000000000042 +S315E07622400000000000000000000000000000000032 +S315E07622500000000000000000000000000000000022 +S315E07622600000000000000000000000000000000012 +S315E07622700000000000000000000000000000000002 +S315E076228000000000000000000000000000000000F2 +S315E076229000000000000000000000000000000000E2 +S315E07622A000000000000000000000000000000000D2 +S315E07622B000000000000000000000000000000000C2 +S315E07622C000000000000000000000000000000000B2 +S315E07622D000000000000000000000000000000000A2 +S315E07622E00000000000000000000000000000000092 +S315E07622F00000000000000000000000000000000082 +S315E07623000000000000000000000000000000000071 +S315E07623100000000000000000000000000000000061 +S315E07623200000000000000000000000000000000051 +S315E07623300000000000000000000000000000000041 +S315E07623400000000000000000000000000000000031 +S315E07623500000000000000000000000000000000021 +S315E07623600000000000000000000000000000000011 +S315E0762370003E49000000000000000000000000007A +S315E076238000000000000000000000000000000000F1 +S315E076239000000000000000000000000000000000E1 +S315E07623A000000000000000000000000000000000D1 +S315E07623B000000000000000000000000000000000C1 +S315E07623C000000000000000000000000000000000B1 +S315E07623D000000000000000000000000000000000A1 +S315E07623E00000000000000000000000000000000091 +S315E07623F00000000000000000000000000000000081 +S315E07624000000000000000000000000000000000070 +S315E07624100000000000000000000000000000000060 +S315E07624200000000000000000000000000000000050 +S315E07624300000000000000000000000000000000040 +S315E07624400000000000000000000000000000000030 +S315E07624500000000000000000000000000000000020 +S315E07624600000000000000000000000000000000010 +S315E07624700000000000000000000000000000000000 +S315E076248000000000000000000000000000000000F0 +S315E076249000000000000000000000000000000000E0 +S315E07624A000000000000000000000000000000000D0 +S315E07624B000000000000000000000000000000000C0 +S315E07624C000000000000000000000000000000000B0 +S315E07624D000000000000000000000000000000000A0 +S315E07624E0000000000000000000003E490000000009 +S315E07624F00000000000000000000000000000000080 +S315E0762500000000000000000000000000000000006F +S315E0762510000000000000000000000000000000005F +S315E0762520000000000000000000000000000000004F +S315E0762530000000000000000000000000000000003F +S315E0762540000000000000000000000000000000002F +S315E0762550000000000000000000000000000000001F +S315E0762560000000000000000000000000000000000F +S315E076257000000000000000000000000000000000FF +S315E076258000000000000000000000000000000000EF +S315E076259000000000000000000000000000000000DF +S315E07625A000000000000000000000000000000000CF +S315E07625B000000000000000000000000000000000BF +S315E07625C000000000000000000000000000000000AF +S315E07625D0000000000000000000000000000000009F +S315E07625E0000000000000000000000000000000008F +S315E07625F0000000000000000000000000000000007F +S315E0762600000000000000000000000000000000006E +S315E0762610000000000000000000000000000000005E +S315E0762620000000000000000000000000000000004E +S315E0762630000000000000000000000000000000003E +S315E0762640000000000000000000000000000000002E +S315E0762650000000000000000000000000000000001E +S315E07626600000003E49000000000000000000000087 +S315E076267000000000000000000000000000000000FE +S315E076268000000000000000000000000000000000EE +S315E076269000000000000000000000000000000000DE +S315E07626A000000000000000000000000000000000CE +S315E07626B000000000000000000000000000000000BE +S315E07626C000000000000000000000000000000000AE +S315E07626D0000000000000000000000000000000009E +S315E07626E0000000000000000000000000000000008E +S315E07626F0000000000000000000000000000000007E +S315E0762700000000000000000000000000000000006D +S315E0762710000000000000000000000000000000005D +S315E0762720000000000000000000000000000000004D +S315E0762730000000000000000000000000000000003D +S315E0762740000000000000000000000000000000002D +S315E0762750000000000000000000000000000000001D +S315E0762760000000000000000000000000000000000D +S315E076277000000000000000000000000000000000FD +S315E076278000000000000000000000000000000000ED +S315E076279000000000000000000000000000000000DD +S315E07627A000000000000000000000000000000000CD +S315E07627B000000000000000000000000000000000BD +S315E07627C000000000000000000000000000000000AD +S315E07627D00000000000000000000000003E49000016 +S315E07627E0000000000000000000000000000000008D +S315E07627F0000000000000000000000000000000007D +S315E0762800000000000000000000000000000000006C +S315E0762810000000000000000000000000000000005C +S315E0762820000000000000000000000000000000004C +S315E0762830000000000000000000000000000000003C +S315E0762840000000000000000000000000000000002C +S315E0762850000000000000000000000000000000001C +S315E0762860000000000000000000000000000000000C +S315E076287000000000000000000000000000000000FC +S315E076288000000000000000000000000000000000EC +S315E076289000000000000000000000000000000000DC +S315E07628A000000000000000000000000000000000CC +S315E07628B000000000000000000000000000000000BC +S315E07628C000000000000000000000000000000000AC +S315E07628D0000000000000000000000000000000009C +S315E07628E0000000000000000000000000000000008C +S315E07628F0000000000000000000000000000000007C +S315E0762900000000000000000000000000000000006B +S315E0762910000000000000000000000000000000005B +S315E0762920000000000000000000000000000000004B +S315E0762930000000000000000000000000000000003B +S315E0762940000000000000000000000000000000002B +S315E076295000000000003E4900000000000000000094 +S315E0762960000000000000000000000000000000000B +S315E076297000000000000000000000000000000000FB +S315E076298000000000000000000000000000000000EB +S315E076299000000000000000000000000000000000DB +S315E07629A000000000000000000000000000000000CB +S315E07629B000000000000000000000000000000000BB +S315E07629C000000000000000000000000000000000AB +S315E07629D0000000000000000000000000000000009B +S315E07629E0000000000000000000000000000000008B +S315E07629F0000000000000000000000000000000007B +S315E0762A00000000000000000000000000000000006A +S315E0762A10000000000000000000000000000000005A +S315E0762A20000000000000000000000000000000004A +S315E0762A30000000000000000000000000000000003A +S315E0762A40000000000000000000000000000000002A +S315E0762A50000000000000000000000000000000001A +S315E0762A60000000000000000000000000000000000A +S315E0762A7000000000000000000000000000000000FA +S315E0762A8000000000000000000000000000000000EA +S315E0762A9000000000000000000000000000000000DA +S315E0762AA000000000000000000000000000000000CA +S315E0762AB000000000000000000000000000000000BA +S315E0762AC000000000000000000000000000003E4923 +S315E0762AD0000000000000000000000000000000009A +S315E0762AE0000000000000000000000000000000008A +S315E0762AF0000000000000000000000000000000007A +S315E0762B000000000000000000000000000000000069 +S315E0762B100000000000000000000000000000000059 +S315E0762B200000000000000000000000000000000049 +S315E0762B300000000000000000000000000000000039 +S315E0762B400000000000000000000000000000000029 +S315E0762B500000000000000000000000000000000019 +S315E0762B600000000000000000000000000000000009 +S315E0762B7000000000000000000000000000000000F9 +S315E0762B8000000000000000000000000000000000E9 +S315E0762B9000000000000000000000000000000000D9 +S315E0762BA000000000000000000000000000000000C9 +S315E0762BB000000000000000000000000000000000B9 +S315E0762BC000000000000000000000000000000000A9 +S315E0762BD00000000000000000000000000000000099 +S315E0762BE00000000000000000000000000000000089 +S315E0762BF00000000000000000000000000000000079 +S315E0762C000000000000000000000000000000000068 +S315E0762C100000000000000000000000000000000058 +S315E0762C200000000000000000000000000000000048 +S315E0762C300000000000000000000000000000000038 +S315E0762C40000000000000003E4900000000000000A1 +S315E0762C500000000000000000000000000000000018 +S315E0762C600000000000000000000000000000000008 +S315E0762C7000000000000000000000000000000000F8 +S315E0762C8000000000000000000000000000000000E8 +S315E0762C9000000000000000000000000000000000D8 +S315E0762CA000000000000000000000000000000000C8 +S315E0762CB000000000000000000000000000000000B8 +S315E0762CC000000000000000000000000000000000A8 +S315E0762CD00000000000000000000000000000000098 +S315E0762CE00000000000000000000000000000000088 +S315E0762CF00000000000000000000000000000000078 +S315E0762D000000000000000000000000000000000067 +S315E0762D100000000000000000000000000000000057 +S315E0762D200000000000000000000000000000000047 +S315E0762D300000000000000000000000000000000037 +S315E0762D400000000000000000000000000000000027 +S315E0762D500000000000000000000000000000000017 +S315E0762D600000000000000000000000000000000007 +S315E0762D7000000000000000000000000000000000F7 +S315E0762D8000000000000000000000000000000000E7 +S315E0762D9000000000000000000000000000000000D7 +S315E0762DA000000000000000000000000000000000C7 +S315E0762DB000000000000000000000000000000000B7 +S315E0762DC03E49000000000000000000000000000020 +S315E0762DD00000000000000000000000000000000097 +S315E0762DE00000000000000000000000000000000087 +S315E0762DF00000000000000000000000000000000077 +S315E0762E000000000000000000000000000000000066 +S315E0762E100000000000000000000000000000000056 +S315E0762E200000000000000000000000000000000046 +S315E0762E300000000000000000000000000000000036 +S315E0762E400000000000000000000000000000000026 +S315E0762E500000000000000000000000000000000016 +S315E0762E600000000000000000000000000000000006 +S315E0762E7000000000000000000000000000000000F6 +S315E0762E8000000000000000000000000000000000E6 +S315E0762E9000000000000000000000000000000000D6 +S315E0762EA000000000000000000000000000000000C6 +S315E0762EB000000000000000000000000000000000B6 +S315E0762EC000000000000000000000000000000000A6 +S315E0762ED00000000000000000000000000000000096 +S315E0762EE00000000000000000000000000000000086 +S315E0762EF00000000000000000000000000000000076 +S315E0762F000000000000000000000000000000000065 +S315E0762F100000000000000000000000000000000055 +S315E0762F200000000000000000000000000000000045 +S315E0762F300000000000000000003E490000000000AE +S315E0762F400000000000000000000000000000000025 +S315E0762F500000000000000000000000000000000015 +S315E0762F600000000000000000000000000000000005 +S315E0762F7000000000000000000000000000000000F5 +S315E0762F8000000000000000000000000000000000E5 +S315E0762F9000000000000000000000000000000000D5 +S315E0762FA000000000000000000000000000000000C5 +S315E0762FB000000000000000000000000000000000B5 +S315E0762FC000000000000000000000000000000000A5 +S315E0762FD00000000000000000000000000000000095 +S315E0762FE00000000000000000000000000000000085 +S315E0762FF00000000000000000000000000000000075 +S315E07630000000000000000000000000000000000064 +S315E07630100000000000000000000000000000000054 +S315E07630200000000000000000000000000000000044 +S315E07630300000000000000000000000000000000034 +S315E07630400000000000000000000000000000000024 +S315E07630500000000000000000000000000000000014 +S315E07630600000000000000000000000000000000004 +S315E076307000000000000000000000000000000000F4 +S315E076308000000000000000000000000000000000E4 +S315E076309000000000000000000000000000000000D4 +S315E07630A000000000000000000000000000000000C4 +S315E07630B000003E490000000000000000000000002D +S315E07630C000000000000000000000000000000000A4 +S315E07630D00000000000000000000000000000000094 +S315E07630E00000000000000000000000000000000084 +S315E07630F00000000000000000000000000000000074 +S315E07631000000000000000000000000000000000063 +S315E07631100000000000000000000000000000000053 +S315E07631200000000000000000000000000000000043 +S315E07631300000000000000000000000000000000033 +S315E07631400000000000000000000000000000000023 +S315E07631500000000000000000000000000000000013 +S315E07631600000000000000000000000000000000003 +S315E076317000000000000000000000000000000000F3 +S315E076318000000000000000000000000000000000E3 +S315E076319000000000000000000000000000000000D3 +S315E07631A000000000000000000000000000000000C3 +S315E07631B000000000000000000000000000000000B3 +S315E07631C000000000000000000000000000000000A3 +S315E07631D00000000000000000000000000000000093 +S315E07631E00000000000000000000000000000000083 +S315E07631F00000000000000000000000000000000073 +S315E07632000000000000000000000000000000000062 +S315E07632100000000000000000000000000000000052 +S315E076322000000000000000000000003E49000000BB +S315E07632300000000000000000000000000000000032 +S315E07632400000000000000000000000000000000022 +S315E07632500000000000000000000000000000000012 +S315E07632600000000000000000000000000000000002 +S315E076327000000000000000000000000000000000F2 +S315E076328000000000000000000000000000000000E2 +S315E076329000000000000000000000000000000000D2 +S315E07632A000000000000000000000000000000000C2 +S315E07632B000000000000000000000000000000000B2 +S315E07632C000000000000000000000000000000000A2 +S315E07632D00000000000000000000000000000000092 +S315E07632E00000000000000000000000000000000082 +S315E07632F00000000000000000000000000000000072 +S315E07633000000000000000000000000000000000061 +S315E07633100000000000000000000000000000000051 +S315E07633200000000000000000000000000000000041 +S315E07633300000000000000000000000000000000031 +S315E07633400000000000000000000000000000000021 +S315E07633500000000000000000000000000000000011 +S315E07633600000000000000000000000000000000001 +S315E076337000000000000000000000000000000000F1 +S315E076338000000000000000000000000000000000E1 +S315E076339000000000000000000000000000000000D1 +S315E07633A0000000003E49000000000000000000003A +S315E07633B000000000000000000000000000000000B1 +S315E07633C000000000000000000000000000000000A1 +S315E07633D00000000000000000000000000000000091 +S315E07633E00000000000000000000000000000000081 +S315E07633F00000000000000000000000000000000071 +S315E07634000000000000000000000000000000000060 +S315E07634100000000000000000000000000000000050 +S315E07634200000000000000000000000000000000040 +S315E07634300000000000000000000000000000000030 +S315E07634400000000000000000000000000000000020 +S315E07634500000000000000000000000000000000010 +S315E07634600000000000000000000000000000000000 +S315E076347000000000000000000000000000000000F0 +S315E076348000000000000000000000000000000000E0 +S315E076349000000000000000000000000000000000D0 +S315E07634A000000000000000000000000000000000C0 +S315E07634B000000000000000000000000000000000B0 +S315E07634C000000000000000000000000000000000A0 +S315E07634D00000000000000000000000000000000090 +S315E07634E00000000000000000000000000000000080 +S315E07634F00000000000000000000000000000000070 +S315E0763500000000000000000000000000000000005F +S315E0763510000000000000000000000000003E4900C8 +S315E0763520000000000000000000000000000000003F +S315E0763530000000000000000000000000000000002F +S315E0763540000000000000000000000000000000001F +S315E0763550000000000000000000000000000000000F +S315E076356000000000000000000000000000000000FF +S315E076357000000000000000000000000000000000EF +S315E076358000000000000000000000000000000000DF +S315E076359000000000000000000000000000000000CF +S315E07635A000000000000000000000000000000000BF +S315E07635B000000000000000000000000000000000AF +S315E07635C0000000000000000000000000000000009F +S315E07635D0000000000000000000000000000000008F +S315E07635E0000000000000000000000000000000007F +S315E07635F0000000000000000000000000000000006F +S315E0763600000000000000000000000000000000005E +S315E0763610000000000000000000000000000000004E +S315E0763620000000000000000000000000000000003E +S315E0763630000000000000000000000000000000002E +S315E0763640000000000000000000000000000000001E +S315E0763650000000000000000000000000000000000E +S315E076366000000000000000000000000000000000FE +S315E076367000000000000000000000000000000000EE +S315E076368000000000000000000000000000000000DE +S315E07636900000000000003E49000000000000000047 +S315E07636A000000000000000000000000000000000BE +S315E07636B000000000000000000000000000000000AE +S315E07636C0000000000000000000000000000000009E +S315E07636D0000000000000000000000000000000008E +S315E07636E0000000000000000000000000000000007E +S315E07636F0000000000000000000000000000000006E +S315E0763700000000000000000000000000000000005D +S315E0763710000000000000000000000000000000004D +S315E0763720000000000000000000000000000000003D +S315E0763730000000000000000000000000000000002D +S315E0763740000000000000000000000000000000001D +S315E0763750000000000000000000000000000000000D +S315E076376000000000000000000000000000000000FD +S315E076377000000000000000000000000000000000ED +S315E076378000000000000000000000000000000000DD +S315E076379000000000000000000000000000000000CD +S315E07637A000000000000000000000000000000000BD +S315E07637B000000000000000000000000000000000AD +S315E07637C0000000000000000000000000000000009D +S315E07637D0000000000000000000000000000000008D +S315E07637E0000000000000000000000000000000007D +S315E07637F0000000000000000000000000000000006D +S315E07638000000000000000000000000000000003E1E +S315E07638104900000000000000000000000000000003 +S315E0763820000000000000000000000000000000003C +S315E0763830000000000000000000000000000000002C +S315E0763840000000000000000000000000000000001C +S315E0763850000000000000000000000000000000000C +S315E076386000000000000000000000000000000000FC +S315E076387000000000000000000000000000000000EC +S315E076388000000000000000000000000000000000DC +S315E076389000000000000000000000000000000000CC +S315E07638A000000000000000000000000000000000BC +S315E07638B000000000000000000000000000000000AC +S315E07638C0000000000000000000000000000000009C +S315E07638D0000000000000000000000000000000008C +S315E07638E0000000000000000000000000000000007C +S315E07638F0000000000000000000000000000000006C +S315E0763900000000000000000000000000000000005B +S315E0763910000000000000000000000000000000004B +S315E0763920000000000000000000000000000000003B +S315E0763930000000000000000000000000000000002B +S315E0763940000000000000000000000000000000001B +S315E0763950000000000000000000000000000000000B +S315E076396000000000000000000000000000000000FB +S315E076397000000000000000000000000000000000EB +S315E076398000000000000000003E4900000000000054 +S315E076399000000000000000000000000000000000CB +S315E07639A000000000000000000000000000000000BB +S315E07639B000000000000000000000000000000000AB +S315E07639C0000000000000000000000000000000009B +S315E07639D0000000000000000000000000000000008B +S315E07639E0000000000000000000000000000000007B +S315E07639F0000000000000000000000000000000006B +S315E0763A00000000000000000000000000000000005A +S315E0763A10000000000000000000000000000000004A +S315E0763A20000000000000000000000000000000003A +S315E0763A30000000000000000000000000000000002A +S315E0763A40000000000000000000000000000000001A +S315E0763A50000000000000000000000000000000000A +S315E0763A6000000000000000000000000000000000FA +S315E0763A7000000000000000000000000000000000EA +S315E0763A8000000000000000000000000000000000DA +S315E0763A9000000000000000000000000000000000CA +S315E0763AA000000000000000000000000000000000BA +S315E0763AB000000000000000000000000000000000AA +S315E0763AC0000000000000000000000000000000009A +S315E0763AD0000000000000000000000000000000008A +S315E0763AE0000000000000000000000000000000007A +S315E0763AF0000000000000000000000000000000006A +S315E0763B00003E4900000000000000000000000000D2 +S315E0763B100000000000000000000000000000000049 +S315E0763B200000000000000000000000000000000039 +S315E0763B300000000000000000000000000000000029 +S315E0763B400000000000000000000000000000000019 +S315E0763B500000000000000000000000000000000009 +S315E0763B6000000000000000000000000000000000F9 +S315E0763B7000000000000000000000000000000000E9 +S315E0763B8000000000000000000000000000000000D9 +S315E0763B9000000000000000000000000000000000C9 +S315E0763BA000000000000000000000000000000000B9 +S315E0763BB000000000000000000000000000000000A9 +S315E0763BC00000000000000000000000000000000099 +S315E0763BD00000000000000000000000000000000089 +S315E0763BE00000000000000000000000000000000079 +S315E0763BF00000000000000000000000000000000069 +S315E0763C000000000000000000000000000000000058 +S315E0763C100000000000000000000000000000000048 +S315E0763C200000000000000000000000000000000038 +S315E0763C300000000000000000000000000000000028 +S315E0763C400000000000000000000000000000000018 +S315E0763C500000000000000000000000000000000008 +S315E0763C6000000000000000000000000000000000F8 +S315E0763C70000000000000000000003E490000000061 +S315E0763C8000000000000000000000000000000000D8 +S315E0763C9000000000000000000000000000000000C8 +S315E0763CA000000000000000000000000000000000B8 +S315E0763CB000000000000000000000000000000000A8 +S315E0763CC00000000000000000000000000000000098 +S315E0763CD00000000000000000000000000000000088 +S315E0763CE00000000000000000000000000000000078 +S315E0763CF00000000000000000000000000000000068 +S315E0763D000000000000000000000000000000000057 +S315E0763D100000000000000000000000000000000047 +S315E0763D200000000000000000000000000000000037 +S315E0763D300000000000000000000000000000000027 +S315E0763D400000000000000000000000000000000017 +S315E0763D500000000000000000000000000000000007 +S315E0763D6000000000000000000000000000000000F7 +S315E0763D7000000000000000000000000000000000E7 +S315E0763D8000000000000000000000000000000000D7 +S315E0763D9000000000000000000000000000000000C7 +S315E0763DA000000000000000000000000000000000B7 +S315E0763DB000000000000000000000000000000000A7 +S315E0763DC00000000000000000000000000000000097 +S315E0763DD00000000000000000000000000000000087 +S315E0763DE00000000000000000000000000000000077 +S315E0763DF00000003E490000000000000000000000E0 +S315E0763E000000000000000000000000000000000056 +S315E0763E100000000000000000000000000000000046 +S315E0763E200000000000000000000000000000000036 +S315E0763E300000000000000000000000000000000026 +S315E0763E400000000000000000000000000000000016 +S315E0763E500000000000000000000000000000000006 +S315E0763E6000000000000000000000000000000000F6 +S315E0763E7000000000000000000000000000000000E6 +S315E0763E8000000000000000000000000000000000D6 +S315E0763E9000000000000000000000000000000000C6 +S315E0763EA000000000000000000000000000000000B6 +S315E0763EB000000000000000000000000000000000A6 +S315E0763EC00000000000000000000000000000000096 +S315E0763ED00000000000000000000000000000000086 +S315E0763EE00000000000000000000000000000000076 +S315E0763EF00000000000000000000000000000000066 +S315E0763F000000000000000000000000000000000055 +S315E0763F100000000000000000000000000000000045 +S315E0763F200000000000000000000000000000000035 +S315E0763F300000000000000000000000000000000025 +S315E0763F400000000000000000000000000000000015 +S315E0763F500000000000000000000000000000000005 +S315E0763F600000000000000000000000003E4900006E +S315E0763F7000000000000000000000000000000000E5 +S315E0763F8000000000000000000000000000000000D5 +S315E0763F9000000000000000000000000000000000C5 +S315E0763FA000000000000000000000000000000000B5 +S315E0763FB000000000000000000000000000000000A5 +S315E0763FC00000000000000000000000000000000095 +S315E0763FD00000000000000000000000000000000085 +S315E0763FE00000000000000000000000000000000075 +S315E0763FF00000000000000000000000000000000065 +S315E07640000000000000000000000000000000000054 +S315E07640100000000000000000000000000000000044 +S315E07640200000000000000000000000000000000034 +S315E07640300000000000000000000000000000000024 +S315E07640400000000000000000000000000000000014 +S315E07640500000000000000000000000000000000004 +S315E076406000000000000000000000000000000000F4 +S315E076407000000000000000000000000000000000E4 +S315E076408000000000000000000000000000000000D4 +S315E076409000000000000000000000000000000000C4 +S315E07640A000000000000000000000000000000000B4 +S315E07640B000000000000000000000000000000000A4 +S315E07640C00000000000000000000000000000000094 +S315E07640D00000000000000000000000000000000084 +S315E07640E000000000003E49000000000000000000ED +S315E07640F00000000000000000000000000000000064 +S315E07641000000000000000000000000000000000053 +S315E07641100000000000000000000000000000000043 +S315E07641200000000000000000000000000000000033 +S315E07641300000000000000000000000000000000023 +S315E07641400000000000000000000000000000000013 +S315E07641500000000000000000000000000000000003 +S315E076416000000000000000000000000000000000F3 +S315E076417000000000000000000000000000000000E3 +S315E076418000000000000000000000000000000000D3 +S315E076419000000000000000000000000000000000C3 +S315E07641A000000000000000000000000000000000B3 +S315E07641B000000000000000000000000000000000A3 +S315E07641C00000000000000000000000000000000093 +S315E07641D00000000000000000000000000000000083 +S315E07641E00000000000000000000000000000000073 +S315E07641F00000000000000000000000000000000063 +S315E07642000000000000000000000000000000000052 +S315E07642100000000000000000000000000000000042 +S315E07642200000000000000000000000000000000032 +S315E07642300000000000000000000000000000000022 +S315E07642400000000000000000000000000000000012 +S315E076425000000000000000000000000000003E497B +S315E076426000000000000000000000000000000000F2 +S315E076427000000000000000000000000000000000E2 +S315E076428000000000000000000000000000000000D2 +S315E076429000000000000000000000000000000000C2 +S315E07642A000000000000000000000000000000000B2 +S315E07642B000000000000000000000000000000000A2 +S315E07642C00000000000000000000000000000000092 +S315E07642D00000000000000000000000000000000082 +S315E07642E00000000000000000000000000000000072 +S315E07642F00000000000000000000000000000000062 +S315E07643000000000000000000000000000000000051 +S315E07643100000000000000000000000000000000041 +S315E07643200000000000000000000000000000000031 +S315E07643300000000000000000000000000000000021 +S315E07643400000000000000000000000000000000011 +S315E07643500000000000000000000000000000000001 +S315E076436000000000000000000000000000000000F1 +S315E076437000000000000000000000000000000000E1 +S315E076438000000000000000000000000000000000D1 +S315E076439000000000000000000000000000000000C1 +S315E07643A000000000000000000000000000000000B1 +S315E07643B000000000000000000000000000000000A1 +S315E07643C00000000000000000000000000000000091 +S315E07643D0000000000000003E4900000000000000FA +S315E07643E00000000000000000000000000000000071 +S315E07643F00000000000000000000000000000000061 +S315E07644000000000000000000000000000000000050 +S315E07644100000000000000000000000000000000040 +S315E07644200000000000000000000000000000000030 +S315E07644300000000000000000000000000000000020 +S315E07644400000000000000000000000000000000010 +S315E07644500000000000000000000000000000000000 +S315E076446000000000000000000000000000000000F0 +S315E076447000000000000000000000000000000000E0 +S315E076448000000000000000000000000000000000D0 +S315E076449000000000000000000000000000000000C0 +S315E07644A000000000000000000000000000000000B0 +S315E07644B000000000000000000000000000000000A0 +S315E07644C00000000000000000000000000000000090 +S315E07644D00000000000000000000000000000000080 +S315E07644E00000000000000000000000000000000070 +S315E07644F00000000000000000000000000000000060 +S315E0764500000000000000000000000000000000004F +S315E0764510000000000000000000000000000000003F +S315E0764520000000000000000000000000000000002F +S315E0764530000000000000000000000000000000001F +S315E0764540000000000000000000000000000000000F +S315E07645503E49000000000000000000000000000078 +S315E076456000000000000000000000000000000000EF +S315E076457000000000000000000000000000000000DF +S315E076458000000000000000000000000000000000CF +S315E076459000000000000000000000000000000000BF +S315E07645A000000000000000000000000000000000AF +S315E07645B0000000000000000000000000000000009F +S315E07645C0000000000000000000000000000000008F +S315E07645D0000000000000000000000000000000007F +S315E07645E0000000000000000000000000000000006F +S315E07645F0000000000000000000000000000000005F +S315E0764600000000000000000000000000000000004E +S315E0764610000000000000000000000000000000003E +S315E0764620000000000000000000000000000000002E +S315E0764630000000000000000000000000000000001E +S315E0764640000000000000000000000000000000000E +S315E076465000000000000000000000000000000000FE +S315E076466000000000000000000000000000000000EE +S315E076467000000000000000000000000000000000DE +S315E076468000000000000000000000000000000000CE +S315E076469000000000000000000000000000000000BE +S315E07646A000000000000000000000000000000000AE +S315E07646B0000000000000000000000000000000009E +S315E07646C00000000000000000003E49000000000007 +S315E07646D0000000000000000000000000000000007E +S315E07646E0000000000000000000000000000000006E +S315E07646F0000000000000000000000000000000005E +S315E0764700000000000000000000000000000000004D +S315E0764710000000000000000000000000000000003D +S315E0764720000000000000000000000000000000002D +S315E0764730000000000000000000000000000000001D +S315E0764740000000000000000000000000000000000D +S315E076475000000000000000000000000000000000FD +S315E076476000000000000000000000000000000000ED +S315E076477000000000000000000000000000000000DD +S315E076478000000000000000000000000000000000CD +S315E076479000000000000000000000000000000000BD +S315E07647A000000000000000000000000000000000AD +S315E07647B0000000000000000000000000000000009D +S315E07647C0000000000000000000000000000000008D +S315E07647D0000000000000000000000000000000007D +S315E07647E0000000000000000000000000000000006D +S315E07647F0000000000000000000000000000000005D +S315E0764800000000000000000000000000000000004C +S315E0764810000000000000000000000000000000003C +S315E0764820000000000000000000000000000000002C +S315E0764830000000000000000000000000000000001C +S315E076484000003E4900000000000000000000000085 +S315E076485000000000000000000000000000000000FC +S315E076486000000000000000000000000000000000EC +S315E076487000000000000000000000000000000000DC +S315E076488000000000000000000000000000000000CC +S315E076489000000000000000000000000000000000BC +S315E07648A000000000000000000000000000000000AC +S315E07648B0000000000000000000000000000000009C +S315E07648C0000000000000000000000000000000008C +S315E07648D0000000000000000000000000000000007C +S315E07648E0000000000000000000000000000000006C +S315E07648F0000000000000000000000000000000005C +S315E0764900000000000000000000000000000000004B +S315E0764910000000000000000000000000000000003B +S315E0764920000000000000000000000000000000002B +S315E0764930000000000000000000000000000000001B +S315E0764940000000000000000000000000000000000B +S315E076495000000000000000000000000000000000FB +S315E076496000000000000000000000000000000000EB +S315E076497000000000000000000000000000000000DB +S315E076498000000000000000000000000000000000CB +S315E076499000000000000000000000000000000000BB +S315E07649A000000000000000000000000000000000AB +S315E07649B000000000000000000000003E4900000014 +S315E07649C0000000000000000000000000000000008B +S315E07649D0000000000000000000000000000000007B +S315E07649E0000000000000000000000000000000006B +S315E07649F0000000000000000000000000000000005B +S315E0764A00000000000000000000000000000000004A +S315E0764A10000000000000000000000000000000003A +S315E0764A20000000000000000000000000000000002A +S315E0764A30000000000000000000000000000000001A +S315E0764A40000000000000000000000000000000000A +S315E0764A5000000000000000000000000000000000FA +S315E0764A6000000000000000000000000000000000EA +S315E0764A7000000000000000000000000000000000DA +S315E0764A8000000000000000000000000000000000CA +S315E0764A9000000000000000000000000000000000BA +S315E0764AA000000000000000000000000000000000AA +S315E0764AB0000000000000000000000000000000009A +S315E0764AC0000000000000000000000000000000008A +S315E0764AD0000000000000000000000000000000007A +S315E0764AE0000000000000000000000000000000006A +S315E0764AF0000000000000000000000000000000005A +S315E0764B000000000000000000000000000000000049 +S315E0764B100000000000000000000000000000000039 +S315E0764B200000000000000000000000000000000029 +S315E0764B30000000003E490000000000000000000092 +S315E0764B400000000000000000000000000000000009 +S315E0764B5000000000000000000000000000000000F9 +S315E0764B6000000000000000000000000000000000E9 +S315E0764B7000000000000000000000000000000000D9 +S315E0764B8000000000000000000000000000000000C9 +S315E0764B9000000000000000000000000000000000B9 +S315E0764BA000000000000000000000000000000000A9 +S315E0764BB00000000000000000000000000000000099 +S315E0764BC00000000000000000000000000000000089 +S315E0764BD00000000000000000000000000000000079 +S315E0764BE00000000000000000000000000000000069 +S315E0764BF00000000000000000000000000000000059 +S315E0764C000000000000000000000000000000000048 +S315E0764C100000000000000000000000000000000038 +S315E0764C200000000000000000000000000000000028 +S315E0764C300000000000000000000000000000000018 +S315E0764C400000000000000000000000000000000008 +S315E0764C5000000000000000000000000000000000F8 +S315E0764C6000000000000000000000000000000000E8 +S315E0764C7000000000000000000000000000000000D8 +S315E0764C8000000000000000000000000000000000C8 +S315E0764C9000000000000000000000000000000000B8 +S315E0764CA0000000000000000000000000003E490021 +S315E0764CB00000000000000000000000000000000098 +S315E0764CC00000000000000000000000000000000088 +S315E0764CD00000000000000000000000000000000078 +S315E0764CE00000000000000000000000000000000068 +S315E0764CF00000000000000000000000000000000058 +S315E0764D000000000000000000000000000000000047 +S315E0764D100000000000000000000000000000000037 +S315E0764D200000000000000000000000000000000027 +S315E0764D300000000000000000000000000000000017 +S315E0764D400000000000000000000000000000000007 +S315E0764D5000000000000000000000000000000000F7 +S315E0764D6000000000000000000000000000000000E7 +S315E0764D7000000000000000000000000000000000D7 +S315E0764D8000000000000000000000000000000000C7 +S315E0764D9000000000000000000000000000000000B7 +S315E0764DA000000000000000000000000000000000A7 +S315E0764DB00000000000000000000000000000000097 +S315E0764DC00000000000000000000000000000000087 +S315E0764DD00000000000000000000000000000000077 +S315E0764DE00000000000000000000000000000000067 +S315E0764DF00000000000000000000000000000000057 +S315E0764E000000000000000000000000000000000046 +S315E0764E100000000000000000000000000000000036 +S315E0764E200000000000003E4900000000000000009F +S315E0764E300000000000000000000000000000000016 +S315E0764E400000000000000000000000000000000006 +S315E0764E5000000000000000000000000000000000F6 +S315E0764E6000000000000000000000000000000000E6 +S315E0764E7000000000000000000000000000000000D6 +S315E0764E8000000000000000000000000000000000C6 +S315E0764E9000000000000000000000000000000000B6 +S315E0764EA000000000000000000000000000000000A6 +S315E0764EB00000000000000000000000000000000096 +S315E0764EC00000000000000000000000000000000086 +S315E0764ED00000000000000000000000000000000076 +S315E0764EE00000000000000000000000000000000066 +S315E0764EF00000000000000000000000000000000056 +S315E0764F000000000000000000000000000000000045 +S315E0764F100000000000000000000000000000000035 +S315E0764F200000000000000000000000000000000025 +S315E0764F300000000000000000000000000000000015 +S315E0764F400000000000000000000000000000000005 +S315E0764F5000000000000000000000000000000000F5 +S315E0764F6000000000000000000000000000000000E5 +S315E0764F7000000000000000000000000000000000D5 +S315E0764F8000000000000000000000000000000000C5 +S315E0764F900000000000000000000000000000003E77 +S315E0764FA0490000000000000000000000000000005C +S315E0764FB00000000000000000000000000000000095 +S315E0764FC00000000000000000000000000000000085 +S315E0764FD00000000000000000000000000000000075 +S315E0764FE00000000000000000000000000000000065 +S315E0764FF00000000000000000000000000000000055 +S315E07650000000000000000000000000000000000044 +S315E07650100000000000000000000000000000000034 +S315E07650200000000000000000000000000000000024 +S315E07650300000000000000000000000000000000014 +S315E07650400000000000000000000000000000000004 +S315E076505000000000000000000000000000000000F4 +S315E076506000000000000000000000000000000000E4 +S315E076507000000000000000000000000000000000D4 +S315E076508000000000000000000000000000000000C4 +S315E076509000000000000000000000000000000000B4 +S315E07650A000000000000000000000000000000000A4 +S315E07650B00000000000000000000000000000000094 +S315E07650C00000000000000000000000000000000084 +S315E07650D00000000000000000000000000000000074 +S315E07650E00000000000000000000000000000000064 +S315E07650F00000000000000000000000000000000054 +S315E07651000000000000000000000000000000000043 +S315E076511000000000000000003E49000000000000AC +S315E07651200000000000000000000000000000000023 +S315E07651300000000000000000000000000000000013 +S315E07651400000000000000000000000000000000003 +S315E076515000000000000000000000000000000000F3 +S315E076516000000000000000000000000000000000E3 +S315E076517000000000000000000000000000000000D3 +S315E076518000000000000000000000000000000000C3 +S315E076519000000000000000000000000000000000B3 +S315E07651A000000000000000000000000000000000A3 +S315E07651B00000000000000000000000000000000093 +S315E07651C00000000000000000000000000000000083 +S315E07651D00000000000000000000000000000000073 +S315E07651E00000000000000000000000000000000063 +S315E07651F00000000000000000000000000000000053 +S315E07652000000000000000000000000000000000042 +S315E07652100000000000000000000000000000000032 +S315E07652200000000000000000000000000000000022 +S315E07652300000000000000000000000000000000012 +S315E07652400000000000000000000000000000000002 +S315E076525000000000000000000000000000000000F2 +S315E076526000000000000000000000000000000000E2 +S315E076527000000000000000000000000000000000D2 +S315E076528000000000000000000000000000000000C2 +S315E0765290003E49000000000000000000000000002B +S315E07652A000000000000000000000000000000000A2 +S315E07652B00000000000000000000000000000000092 +S315E07652C00000000000000000000000000000000082 +S315E07652D00000000000000000000000000000000072 +S315E07652E00000000000000000000000000000000062 +S315E07652F00000000000000000000000000000000052 +S315E07653000000000000000000000000000000000041 +S315E07653100000000000000000000000000000000031 +S315E07653200000000000000000000000000000000021 +S315E07653300000000000000000000000000000000011 +S315E07653400000000000000000000000000000000001 +S315E076535000000000000000000000000000000000F1 +S315E076536000000000000000000000000000000000E1 +S315E076537000000000000000000000000000000000D1 +S315E076538000000000000000000000000000000000C1 +S315E076539000000000000000000000000000000000B1 +S315E07653A000000000000000000000000000000000A1 +S315E07653B00000000000000000000000000000000091 +S315E07653C00000000000000000000000000000000081 +S315E07653D00000000000000000000000000000000071 +S315E07653E00000000000000000000000000000000061 +S315E07653F00000000000000000000000000000000051 +S315E0765400000000000000000000003E4900000000B9 +S315E07654100000000000000000000000000000000030 +S315E07654200000000000000000000000000000000020 +S315E07654300000000000000000000000000000000010 +S315E07654400000000000000000000000000000000000 +S315E076545000000000000000000000000000000000F0 +S315E076546000000000000000000000000000000000E0 +S315E076547000000000000000000000000000000000D0 +S315E076548000000000000000000000000000000000C0 +S315E076549000000000000000000000000000000000B0 +S315E07654A000000000000000000000000000000000A0 +S315E07654B00000000000000000000000000000000090 +S315E07654C00000000000000000000000000000000080 +S315E07654D00000000000000000000000000000000070 +S315E07654E00000000000000000000000000000000060 +S315E07654F00000000000000000000000000000000050 +S315E0765500000000000000000000000000000000003F +S315E0765510000000000000000000000000000000002F +S315E0765520000000000000000000000000000000001F +S315E0765530000000000000000000000000000000000F +S315E076554000000000000000000000000000000000FF +S315E076555000000000000000000000000000000000EF +S315E076556000000000000000000000000000000000DF +S315E076557000000000000000000000000000000000CF +S315E07655800000003E49000000000000000000000038 +S315E076559000000000000000000000000000000000AF +S315E07655A0000000000000000000000000000000009F +S315E07655B0000000000000000000000000000000008F +S315E07655C0000000000000000000000000000000007F +S315E07655D0000000000000000000000000000000006F +S315E07655E0000000000000000000000000000000005F +S315E07655F0000000000000000000000000000000004F +S315E0765600000000000000000000000000000000003E +S315E0765610000000000000000000000000000000002E +S315E0765620000000000000000000000000000000001E +S315E0765630000000000000000000000000000000000E +S315E076564000000000000000000000000000000000FE +S315E076565000000000000000000000000000000000EE +S315E076566000000000000000000000000000000000DE +S315E076567000000000000000000000000000000000CE +S315E076568000000000000000000000000000000000BE +S315E076569000000000000000000000000000000000AE +S315E07656A0000000000000000000000000000000009E +S315E07656B0000000000000000000000000000000008E +S315E07656C0000000000000000000000000000000007E +S315E07656D0000000000000000000000000000000006E +S315E07656E0000000000000000000000000000000005E +S315E07656F00000000000000000000000003E490000C7 +S315E0765700000000000000000000000000000000003D +S315E0765710000000000000000000000000000000002D +S315E0765720000000000000000000000000000000001D +S315E0765730000000000000000000000000000000000D +S315E076574000000000000000000000000000000000FD +S315E076575000000000000000000000000000000000ED +S315E076576000000000000000000000000000000000DD +S315E076577000000000000000000000000000000000CD +S315E076578000000000000000000000000000000000BD +S315E076579000000000000000000000000000000000AD +S315E07657A0000000000000000000000000000000009D +S315E07657B0000000000000000000000000000000008D +S315E07657C0000000000000000000000000000000007D +S315E07657D0000000000000000000000000000000006D +S315E07657E0000000000000000000000000000000005D +S315E07657F0000000000000000000000000000000004D +S315E0765800000000000000000000000000000000003C +S315E0765810000000000000000000000000000000002C +S315E0765820000000000000000000000000000000001C +S315E0765830000000000000000000000000000000000C +S315E076584000000000000000000000000000000000FC +S315E076585000000000000000000000000000000000EC +S315E076586000000000000000000000000000000000DC +S315E076587000000000003E4900000000000000000045 +S315E076588000000000000000000000000000000000BC +S315E076589000000000000000000000000000000000AC +S315E07658A0000000000000000000000000000000009C +S315E07658B0000000000000000000000000000000008C +S315E07658C0000000000000000000000000000000007C +S315E07658D0000000000000000000000000000000006C +S315E07658E0000000000000000000000000000000005C +S315E07658F0000000000000000000000000000000004C +S315E0765900000000000000000000000000000000003B +S315E0765910000000000000000000000000000000002B +S315E0765920000000000000000000000000000000001B +S315E0765930000000000000000000000000000000000B +S315E076594000000000000000000000000000000000FB +S315E076595000000000000000000000000000000000EB +S315E076596000000000000000000000000000000000DB +S315E076597000000000000000000000000000000000CB +S315E076598000000000000000000000000000000000BB +S315E076599000000000000000000000000000000000AB +S315E07659A0000000000000000000000000000000009B +S315E07659B0000000000000000000000000000000008B +S315E07659C0000000000000000000000000000000007B +S315E07659D0000000000000000000000000000000006B +S315E07659E000000000000000000000000000003E49D4 +S315E07659F0000000000000000000000000000000004B +S315E0765A00000000000000000000000000000000003A +S315E0765A10000000000000000000000000000000002A +S315E0765A20000000000000000000000000000000001A +S315E0765A30000000000000000000000000000000000A +S315E0765A4000000000000000000000000000000000FA +S315E0765A5000000000000000000000000000000000EA +S315E0765A6000000000000000000000000000000000DA +S315E0765A7000000000000000000000000000000000CA +S315E0765A8000000000000000000000000000000000BA +S315E0765A9000000000000000000000000000000000AA +S315E0765AA0000000000000000000000000000000009A +S315E0765AB0000000000000000000000000000000008A +S315E0765AC0000000000000000000000000000000007A +S315E0765AD0000000000000000000000000000000006A +S315E0765AE0000000000000000000000000000000005A +S315E0765AF0000000000000000000000000000000004A +S315E0765B000000000000000000000000000000000039 +S315E0765B100000000000000000000000000000000029 +S315E0765B200000000000000000000000000000000019 +S315E0765B300000000000000000000000000000000009 +S315E0765B4000000000000000000000000000000000F9 +S315E0765B5000000000000000000000000000000000E9 +S315E0765B60000000000000003E490000000000000052 +S315E0765B7000000000000000000000000000000000C9 +S315E0765B8000000000000000000000000000000000B9 +S315E0765B9000000000000000000000000000000000A9 +S315E0765BA00000000000000000000000000000000099 +S315E0765BB00000000000000000000000000000000089 +S315E0765BC00000000000000000000000000000000079 +S315E0765BD00000000000000000000000000000000069 +S315E0765BE00000000000000000000000000000000059 +S315E0765BF00000000000000000000000000000000049 +S315E0765C000000000000000000000000000000000038 +S315E0765C100000000000000000000000000000000028 +S315E0765C200000000000000000000000000000000018 +S315E0765C300000000000000000000000000000000008 +S315E0765C4000000000000000000000000000000000F8 +S315E0765C5000000000000000000000000000000000E8 +S315E0765C6000000000000000000000000000000000D8 +S315E0765C7000000000000000000000000000000000C8 +S315E0765C8000000000000000000000000000000000B8 +S315E0765C9000000000000000000000000000000000A8 +S315E0765CA00000000000000000000000000000000098 +S315E0765CB00000000000000000000000000000000088 +S315E0765CC00000000000000000000000000000000078 +S315E0765CD00000000000000000000000000000000068 +S315E0765CE03E490000000000000000000000000000D1 +S315E0765CF00000000000000000000000000000000048 +S315E0765D000000000000000000000000000000000037 +S315E0765D100000000000000000000000000000000027 +S315E0765D200000000000000000000000000000000017 +S315E0765D300000000000000000000000000000000007 +S315E0765D4000000000000000000000000000000000F7 +S315E0765D5000000000000000000000000000000000E7 +S315E0765D6000000000000000000000000000000000D7 +S315E0765D7000000000000000000000000000000000C7 +S315E0765D8000000000000000000000000000000000B7 +S315E0765D9000000000000000000000000000000000A7 +S315E0765DA00000000000000000000000000000000097 +S315E0765DB00000000000000000000000000000000087 +S315E0765DC00000000000000000000000000000000077 +S315E0765DD00000000000000000000000000000000067 +S315E0765DE00000000000000000000000000000000057 +S315E0765DF00000000000000000000000000000000047 +S315E0765E000000000000000000000000000000000036 +S315E0765E100000000000000000000000000000000026 +S315E0765E200000000000000000000000000000000016 +S315E0765E300000000000000000000000000000000006 +S315E0765E4000000000000000000000000000000000F6 +S315E0765E500000000000000000003E4900000000005F +S315E0765E6000000000000000000000000000000000D6 +S315E0765E7000000000000000000000000000000000C6 +S315E0765E8000000000000000000000000000000000B6 +S315E0765E9000000000000000000000000000000000A6 +S315E0765EA00000000000000000000000000000000096 +S315E0765EB00000000000000000000000000000000086 +S315E0765EC00000000000000000000000000000000076 +S315E0765ED00000000000000000000000000000000066 +S315E0765EE00000000000000000000000000000000056 +S315E0765EF00000000000000000000000000000000046 +S315E0765F000000000000000000000000000000000035 +S315E0765F100000000000000000000000000000000025 +S315E0765F200000000000000000000000000000000015 +S315E0765F300000000000000000000000000000000005 +S315E0765F4000000000000000000000000000000000F5 +S315E0765F5000000000000000000000000000000000E5 +S315E0765F6000000000000000000000000000000000D5 +S315E0765F7000000000000000000000000000000000C5 +S315E0765F8000000000000000000000000000000000B5 +S315E0765F9000000000000000000000000000000000A5 +S315E0765FA00000000000000000000000000000000095 +S315E0765FB00000000000000000000000000000000085 +S315E0765FC00000000000000000000000000000000075 +S315E0765FD000003E49000000000000000000000000DE +S315E0765FE00000000000000000000000000000000055 +S315E0765FF00000000000000000000000000000000045 +S315E07660000000000000000000000000000000000034 +S315E07660100000000000000000000000000000000024 +S315E07660200000000000000000000000000000000014 +S315E07660300000000000000000000000000000000004 +S315E076604000000000000000000000000000000000F4 +S315E076605000000000000000000000000000000000E4 +S315E076606000000000000000000000000000000000D4 +S315E076607000000000000000000000000000000000C4 +S315E076608000000000000000000000000000000000B4 +S315E076609000000000000000000000000000000000A4 +S315E07660A00000000000000000000000000000000094 +S315E07660B00000000000000000000000000000000084 +S315E07660C00000000000000000000000000000000074 +S315E07660D00000000000000000000000000000000064 +S315E07660E00000000000000000000000000000000054 +S315E07660F00000000000000000000000000000000044 +S315E07661000000000000000000000000000000000033 +S315E07661100000000000000000000000000000000023 +S315E07661200000000000000000000000000000000013 +S315E07661300000000000000000000000000000000003 +S315E076614000000000000000000000003E490000006C +S315E076615000000000000000000000000000000000E3 +S315E076616000000000000000000000000000000000D3 +S315E076617000000000000000000000000000000000C3 +S315E076618000000000000000000000000000000000B3 +S315E076619000000000000000000000000000000000A3 +S315E07661A00000000000000000000000000000000093 +S315E07661B00000000000000000000000000000000083 +S315E07661C00000000000000000000000000000000073 +S315E07661D00000000000000000000000000000000063 +S315E07661E00000000000000000000000000000000053 +S315E07661F00000000000000000000000000000000043 +S315E07662000000000000000000000000000000000032 +S315E07662100000000000000000000000000000000022 +S315E07662200000000000000000000000000000000012 +S315E07662300000000000000000000000000000000002 +S315E076624000000000000000000000000000000000F2 +S315E076625000000000000000000000000000000000E2 +S315E076626000000000000000000000000000000000D2 +S315E076627000000000000000000000000000000000C2 +S315E076628000000000000000000000000000000000B2 +S315E076629000000000000000000000000000000000A2 +S315E07662A00000000000000000000000000000000092 +S315E07662B00000000000000000000000000000000082 +S315E07662C0000000003E4900000000000000000000EB +S315E07662D00000000000000000000000000000000062 +S315E07662E00000000000000000000000000000000052 +S315E07662F00000000000000000000000000000000042 +S315E07663000000000000000000000000000000000031 +S315E07663100000000000000000000000000000000021 +S315E07663200000000000000000000000000000000011 +S315E07663300000000000000000000000000000000001 +S315E076634000000000000000000000000000000000F1 +S315E076635000000000000000000000000000000000E1 +S315E076636000000000000000000000000000000000D1 +S315E076637000000000000000000000000000000000C1 +S315E076638000000000000000000000000000000000B1 +S315E076639000000000000000000000000000000000A1 +S315E07663A00000000000000000000000000000000091 +S315E07663B00000000000000000000000000000000081 +S315E07663C00000000000000000000000000000000071 +S315E07663D00000000000000000000000000000000061 +S315E07663E00000000000000000000000000000000051 +S315E07663F00000000000000000000000000000000041 +S315E07664000000000000000000000000000000000030 +S315E07664100000000000000000000000000000000020 +S315E07664200000000000000000000000000000000010 +S315E0766430000000000000000000000000003E490079 +S315E076644000000000000000000000000000000000F0 +S315E076645000000000000000000000000000000000E0 +S315E076646000000000000000000000000000000000D0 +S315E076647000000000000000000000000000000000C0 +S315E076648000000000000000000000000000000000B0 +S315E076649000000000000000000000000000000000A0 +S315E07664A00000000000000000000000000000000090 +S315E07664B00000000000000000000000000000000080 +S315E07664C00000000000000000000000000000000070 +S315E07664D00000000000000000000000000000000060 +S315E07664E00000000000000000000000000000000050 +S315E07664F00000000000000000000000000000000040 +S315E0766500000000000000000000000000000000002F +S315E0766510000000000000000000000000000000001F +S315E0766520000000000000000000000000000000000F +S315E076653000000000000000000000000000000000FF +S315E076654000000000000000000000000000000000EF +S315E076655000000000000000000000000000000000DF +S315E076656000000000000000000000000000000000CF +S315E076657000000000000000000000000000000000BF +S315E076658000000000000000000000000000000000AF +S315E0766590000000000000000000000000000000009F +S315E07665A0000000000000000000000000000000008F +S315E07665B00000000000003E490000000000000000F8 +S315E07665C0000000000000000000000000000000006F +S315E07665D0000000000000000000000000000000005F +S315E07665E0000000000000000000000000000000004F +S315E07665F0000000000000000000000000000000003F +S315E0766600000000000000000000000000000000002E +S315E0766610000000000000000000000000000000001E +S315E0766620000000000000000000000000000000000E +S315E076663000000000000000000000000000000000FE +S315E076664000000000000000000000000000000000EE +S315E076665000000000000000000000000000000000DE +S315E076666000000000000000000000000000000000CE +S315E076667000000000000000000000000000000000BE +S315E076668000000000000000000000000000000000AE +S315E0766690000000000000000000000000000000009E +S315E07666A0000000000000000000000000000000008E +S315E07666B0000000000000000000000000000000007E +S315E07666C0000000000000000000000000000000006E +S315E07666D0000000000000000000000000000000005E +S315E07666E0000000000000000000000000000000004E +S315E07666F0000000000000000000000000000000003E +S315E0766700000000000000000000000000000000002D +S315E0766710000000000000000000000000000000001D +S315E07667200000000000000000000000000000003ECF +S315E076673049000000000000000000000000000000B4 +S315E076674000000000000000000000000000000000ED +S315E076675000000000000000000000000000000000DD +S315E076676000000000000000000000000000000000CD +S315E076677000000000000000000000000000000000BD +S315E076678000000000000000000000000000000000AD +S315E0766790000000000000000000000000000000009D +S315E07667A0000000000000000000000000000000008D +S315E07667B0000000000000000000000000000000007D +S315E07667C0000000000000000000000000000000006D +S315E07667D0000000000000000000000000000000005D +S315E07667E0000000000000000000000000000000004D +S315E07667F0000000000000000000000000000000003D +S315E0766800000000000000000000000000000000002C +S315E0766810000000000000000000000000000000001C +S315E0766820000000000000000000000000000000000C +S315E076683000000000000000000000000000000000FC +S315E076684000000000000000000000000000000000EC +S315E076685000000000000000000000000000000000DC +S315E076686000000000000000000000000000000000CC +S315E076687000000000000000000000000000000000BC +S315E076688000000000000000000000000000000000AC +S315E0766890000000000000000000000000000000009C +S315E07668A000000000000000003E4900000000000005 +S315E07668B0000000000000000000000000000000007C +S315E07668C0000000000000000000000000000000006C +S315E07668D0000000000000000000000000000000005C +S315E07668E0000000000000000000000000000000004C +S315E07668F0000000000000000000000000000000003C +S315E0766900000000000000000000000000000000002B +S315E0766910000000000000000000000000000000001B +S315E0766920000000000000000000000000000000000B +S315E076693000000000000000000000000000000000FB +S315E076694000000000000000000000000000000000EB +S315E076695000000000000000000000000000000000DB +S315E076696000000000000000000000000000000000CB +S315E076697000000000000000000000000000000000BB +S315E076698000000000000000000000000000000000AB +S315E0766990000000000000000000000000000000009B +S315E07669A0000000000000000000000000000000008B +S315E07669B0000000000000000000000000000000007B +S315E07669C0000000000000000000000000000000006B +S315E07669D0000000000000000000000000000000005B +S315E07669E0000000000000000000000000000000004B +S315E07669F0000000000000000000000000000000003B +S315E0766A00000000000000000000000000000000002A +S315E0766A10000000000000000000000000000000001A +S315E0766A20003E490000000000000000000000000083 +S315E0766A3000000000000000000000000000000000FA +S315E0766A4000000000000000000000000000000000EA +S315E0766A5000000000000000000000000000000000DA +S315E0766A6000000000000000000000000000000000CA +S315E0766A7000000000000000000000000000000000BA +S315E0766A8000000000000000000000000000000000AA +S315E0766A90000000000000000000000000000000009A +S315E0766AA0000000000000000000000000000000008A +S315E0766AB0000000000000000000000000000000007A +S315E0766AC0000000000000000000000000000000006A +S315E0766AD0000000000000000000000000000000005A +S315E0766AE0000000000000000000000000000000004A +S315E0766AF0000000000000000000000000000000003A +S315E0766B000000000000000000000000000000000029 +S315E0766B100000000000000000000000000000000019 +S315E0766B200000000000000000000000000000000009 +S315E0766B3000000000000000000000000000000000F9 +S315E0766B4000000000000000000000000000000000E9 +S315E0766B5000000000000000000000000000000000D9 +S315E0766B6000000000000000000000000000000000C9 +S315E0766B7000000000000000000000000000000000B9 +S315E0766B8000000000000000000000000000000000A9 +S315E0766B90000000000000000000003E490000000012 +S315E0766BA00000000000000000000000000000000089 +S315E0766BB00000000000000000000000000000000079 +S315E0766BC00000000000000000000000000000000069 +S315E0766BD00000000000000000000000000000000059 +S315E0766BE00000000000000000000000000000000049 +S315E0766BF00000000000000000000000000000000039 +S315E0766C000000000000000000000000000000000028 +S315E0766C100000000000000000000000000000000018 +S315E0766C200000000000000000000000000000000008 +S315E0766C3000000000000000000000000000000000F8 +S315E0766C4000000000000000000000000000000000E8 +S315E0766C5000000000000000000000000000000000D8 +S315E0766C6000000000000000000000000000000000C8 +S315E0766C7000000000000000000000000000000000B8 +S315E0766C8000000000000000000000000000000000A8 +S315E0766C900000000000000000000000000000000098 +S315E0766CA00000000000000000000000000000000088 +S315E0766CB00000000000000000000000000000000078 +S315E0766CC00000000000000000000000000000000068 +S315E0766CD00000000000000000000000000000000058 +S315E0766CE00000000000000000000000000000000048 +S315E0766CF00000000000000000000000000000000038 +S315E0766D000000000000000000000000000000000027 +S315E0766D100000003E49000000000000000000000090 +S315E0766D200000000000000000000000000000000007 +S315E0766D3000000000000000000000000000000000F7 +S315E0766D4000000000000000000000000000000000E7 +S315E0766D5000000000000000000000000000000000D7 +S315E0766D6000000000000000000000000000000000C7 +S315E0766D7000000000000000000000000000000000B7 +S315E0766D8000000000000000000000000000000000A7 +S315E0766D900000000000000000000000000000000097 +S315E0766DA00000000000000000000000000000000087 +S315E0766DB00000000000000000000000000000000077 +S315E0766DC00000000000000000000000000000000067 +S315E0766DD00000000000000000000000000000000057 +S315E0766DE00000000000000000000000000000000047 +S315E0766DF00000000000000000000000000000000037 +S315E0766E000000000000000000000000000000000026 +S315E0766E100000000000000000000000000000000016 +S315E0766E200000000000000000000000000000000006 +S315E0766E3000000000000000000000000000000000F6 +S315E0766E4000000000000000000000000000000000E6 +S315E0766E5000000000000000000000000000000000D6 +S315E0766E6000000000000000000000000000000000C6 +S315E0766E7000000000000000000000000000000000B6 +S315E0766E800000000000000000000000003E4900001F +S315E0766E900000000000000000000000000000000096 +S315E0766EA00000000000000000000000000000000086 +S315E0766EB00000000000000000000000000000000076 +S315E0766EC00000000000000000000000000000000066 +S315E0766ED00000000000000000000000000000000056 +S315E0766EE00000000000000000000000000000000046 +S315E0766EF00000000000000000000000000000000036 +S315E0766F000000000000000000000000000000000025 +S315E0766F100000000000000000000000000000000015 +S315E0766F200000000000000000000000000000000005 +S315E0766F3000000000000000000000000000000000F5 +S315E0766F4000000000000000000000000000000000E5 +S315E0766F5000000000000000000000000000000000D5 +S315E0766F6000000000000000000000000000000000C5 +S315E0766F7000000000000000000000000000000000B5 +S315E0766F8000000000000000000000000000000000A5 +S315E0766F900000000000000000000000000000000095 +S315E0766FA00000000000000000000000000000000085 +S315E0766FB00000000000000000000000000000000075 +S315E0766FC00000000000000000000000000000000065 +S315E0766FD00000000000000000000000000000000055 +S315E0766FE00000000000000000000000000000000045 +S315E0766FF00000000000000000000000000000000035 +S315E076700000000000003E490000000000000000009D +S315E07670100000000000000000000000000000000014 +S315E07670200000000000000000000000000000000004 +S315E076703000000000000000000000000000000000F4 +S315E076704000000000000000000000000000000000E4 +S315E076705000000000000000000000000000000000D4 +S315E076706000000000000000000000000000000000C4 +S315E076707000000000000000000000000000000000B4 +S315E076708000000000000000000000000000000000A4 +S315E07670900000000000000000000000000000000094 +S315E07670A00000000000000000000000000000000084 +S315E07670B00000000000000000000000000000000074 +S315E07670C00000000000000000000000000000000064 +S315E07670D00000000000000000000000000000000054 +S315E07670E00000000000000000000000000000000044 +S315E07670F00000000000000000000000000000000034 +S315E07671000000000000000000000000000000000023 +S315E07671100000000000000000000000000000000013 +S315E07671200000000000000000000000000000000003 +S315E076713000000000000000000000000000000000F3 +S315E076714000000000000000000000000000000000E3 +S315E076715000000000000000000000000000000000D3 +S315E076716000000000000000000000000000000000C3 +S315E076717000000000000000000000000000003E492C +S315E076718000000000000000000000000000000000A3 +S315E07671900000000000000000000000000000000093 +S315E07671A00000000000000000000000000000000083 +S315E07671B00000000000000000000000000000000073 +S315E07671C00000000000000000000000000000000063 +S315E07671D00000000000000000000000000000000053 +S315E07671E00000000000000000000000000000000043 +S315E07671F00000000000000000000000000000000033 +S315E07672000000000000000000000000000000000022 +S315E07672100000000000000000000000000000000012 +S315E07672200000000000000000000000000000000002 +S315E076723000000000000000000000000000000000F2 +S315E076724000000000000000000000000000000000E2 +S315E076725000000000000000000000000000000000D2 +S315E076726000000000000000000000000000000000C2 +S315E076727000000000000000000000000000000000B2 +S315E076728000000000000000000000000000000000A2 +S315E07672900000000000000000000000000000000092 +S315E07672A00000000000000000000000000000000082 +S315E07672B00000000000000000000000000000000072 +S315E07672C00000000000000000000000000000000062 +S315E07672D00000000000000000000000000000000052 +S315E07672E00000000000000000000000000000000042 +S315E07672F0000000000000003E4900000000000000AB +S315E07673000000000000000000000000000000000021 +S315E07673100000000000000000000000000000000011 +S315E07673200000000000000000000000000000000001 +S315E076733000000000000000000000000000000000F1 +S315E076734000000000000000000000000000000000E1 +S315E076735000000000000000000000000000000000D1 +S315E076736000000000000000000000000000000000C1 +S315E076737000000000000000000000000000000000B1 +S315E076738000000000000000000000000000000000A1 +S315E07673900000000000000000000000000000000091 +S315E07673A00000000000000000000000000000000081 +S315E07673B00000000000000000000000000000000071 +S315E07673C00000000000000000000000000000000061 +S315E07673D00000000000000000000000000000000051 +S315E07673E00000000000000000000000000000000041 +S315E07673F00000000000000000000000000000000031 +S315E07674000000000000000000000000000000000020 +S315E07674100000000000000000000000000000000010 +S315E07674200000000000000000000000000000000000 +S315E076743000000000000000000000000000000000F0 +S315E076744000000000000000000000000000000000E0 +S315E076745000000000000000000000000000000000D0 +S315E076746000000000000000000000000000000000C0 +S315E07674703E49000000000000000000000000000029 +S315E076748000000000000000000000000000000000A0 +S315E07674900000000000000000000000000000000090 +S315E07674A00000000000000000000000000000000080 +S315E07674B00000000000000000000000000000000070 +S315E07674C00000000000000000000000000000000060 +S315E07674D00000000000000000000000000000000050 +S315E07674E00000000000000000000000000000000040 +S315E07674F00000000000000000000000000000000030 +S315E0767500000000000000000000000000000000001F +S315E0767510000000000000000000000000000000000F +S315E076752000000000000000000000000000000000FF +S315E076753000000000000000000000000000000000EF +S315E076754000000000000000000000000000000000DF +S315E076755000000000000000000000000000000000CF +S315E076756000000000000000000000000000000000BF +S315E076757000000000000000000000000000000000AF +S315E0767580000000000000000000000000000000009F +S315E0767590000000000000000000000000000000008F +S315E07675A0000000000000000000000000000000007F +S315E07675B0000000000000000000000000000000006F +S315E07675C0000000000000000000000000000000005F +S315E07675D0000000000000000000000000000000004F +S315E07675E00000000000000000003E490000000000B8 +S315E07675F0000000000000000000000000000000002F +S315E0767600000000000000000000000000000000001E +S315E0767610000000000000000000000000000000000E +S315E076762000000000000000000000000000000000FE +S315E076763000000000000000000000000000000000EE +S315E076764000000000000000000000000000000000DE +S315E076765000000000000000000000000000000000CE +S315E076766000000000000000000000000000000000BE +S315E076767000000000000000000000000000000000AE +S315E0767680000000000000000000000000000000009E +S315E0767690000000000000000000000000000000008E +S315E07676A0000000000000000000000000000000007E +S315E07676B0000000000000000000000000000000006E +S315E07676C0000000000000000000000000000000005E +S315E07676D0000000000000000000000000000000004E +S315E07676E0000000000000000000000000000000003E +S315E07676F0000000000000000000000000000000002E +S315E0767700000000000000000000000000000000001D +S315E0767710000000000000000000000000000000000D +S315E076772000000000000000000000000000000000FD +S315E076773000000000000000000000000000000000ED +S315E076774000000000000000000000000000000000DD +S315E076775000000000000000000000000000000000CD +S315E076776000003E4900000000000000000000000036 +S315E076777000000000000000000000000000000000AD +S315E0767780000000000000000000000000000000009D +S315E0767790000000000000000000000000000000008D +S315E07677A0000000000000000000000000000000007D +S315E07677B0000000000000000000000000000000006D +S315E07677C0000000000000000000000000000000005D +S315E07677D0000000000000000000000000000000004D +S315E07677E0000000000000000000000000000000003D +S315E07677F0000000000000000000000000000000002D +S315E0767800000000000000000000000000000000001C +S315E0767810000000000000000000000000000000000C +S315E076782000000000000000000000000000000000FC +S315E076783000000000000000000000000000000000EC +S315E076784000000000000000000000000000000000DC +S315E076785000000000000000000000000000000000CC +S315E076786000000000000000000000000000000000BC +S315E076787000000000000000000000000000000000AC +S315E0767880000000000000000000000000000000009C +S315E0767890000000000000000000000000000000008C +S315E07678A0000000000000000000000000000000007C +S315E07678B0000000000000000000000000000000006C +S315E07678C0000000000000000000000000000000005C +S315E07678D000000000000000000000003E49000000C5 +S315E07678E0000000000000000000000000000000003C +S315E07678F0000000000000000000000000000000002C +S315E0767900000000000000000000000000000000001B +S315E0767910000000000000000000000000000000000B +S315E076792000000000000000000000000000000000FB +S315E076793000000000000000000000000000000000EB +S315E076794000000000000000000000000000000000DB +S315E076795000000000000000000000000000000000CB +S315E076796000000000000000000000000000000000BB +S315E076797000000000000000000000000000000000AB +S315E0767980000000000000000000000000000000009B +S315E0767990000000000000000000000000000000008B +S315E07679A0000000000000000000000000000000007B +S315E07679B0000000000000000000000000000000006B +S315E07679C0000000000000000000000000000000005B +S315E07679D0000000000000000000000000000000004B +S315E07679E0000000000000000000000000000000003B +S315E07679F0000000000000000000000000000000002B +S315E0767A00000000000000000000000000000000001A +S315E0767A10000000000000000000000000000000000A +S315E0767A2000000000000000000000000000000000FA +S315E0767A3000000000000000000000000000000000EA +S315E0767A4000000000000000000000000000000000DA +S315E0767A50000000003E490000000000000000000043 +S315E0767A6000000000000000000000000000000000BA +S315E0767A7000000000000000000000000000000000AA +S315E0767A80000000000000000000000000000000009A +S315E0767A90000000000000000000000000000000008A +S315E0767AA0000000000000000000000000000000007A +S315E0767AB0000000000000000000000000000000006A +S315E0767AC0000000000000000000000000000000005A +S315E0767AD0000000000000000000000000000000004A +S315E0767AE0000000000000000000000000000000003A +S315E0767AF0000000000000000000000000000000002A +S315E0767B000000000000000000000000000000000019 +S315E0767B100000000000000000000000000000000009 +S315E0767B2000000000000000000000000000000000F9 +S315E0767B3000000000000000000000000000000000E9 +S315E0767B4000000000000000000000000000000000D9 +S315E0767B5000000000000000000000000000000000C9 +S315E0767B6000000000000000000000000000000000B9 +S315E0767B7000000000000000000000000000000000A9 +S315E0767B800000000000000000000000000000000099 +S315E0767B900000000000000000000000000000000089 +S315E0767BA00000000000000000000000000000000079 +S315E0767BB00000000000000000000000000000000069 +S315E0767BC0000000000000000000000000003E4900D2 +S315E0767BD00000000000000000000000000000000049 +S315E0767BE00000000000000000000000000000000039 +S315E0767BF00000000000000000000000000000000029 +S315E0767C000000000000000000000000000000000018 +S315E0767C100000000000000000000000000000000008 +S315E0767C2000000000000000000000000000000000F8 +S315E0767C3000000000000000000000000000000000E8 +S315E0767C4000000000000000000000000000000000D8 +S315E0767C5000000000000000000000000000000000C8 +S315E0767C6000000000000000000000000000000000B8 +S315E0767C7000000000000000000000000000000000A8 +S315E0767C800000000000000000000000000000000098 +S315E0767C900000000000000000000000000000000088 +S315E0767CA00000000000000000000000000000000078 +S315E0767CB00000000000000000000000000000000068 +S315E0767CC00000000000000000000000000000000058 +S315E0767CD00000000000000000000000000000000048 +S315E0767CE00000000000000000000000000000000038 +S315E0767CF00000000000000000000000000000000028 +S315E0767D000000000000000000000000000000000017 +S315E0767D100000000000000000000000000000000007 +S315E0767D2000000000000000000000000000000000F7 +S315E0767D3000000000000000000000000000000000E7 +S315E0767D400000000000003E49000000000000000050 +S315E0767D5000000000000000000000000000000000C7 +S315E0767D6000000000000000000000000000000000B7 +S315E0767D7000000000000000000000000000000000A7 +S315E0767D800000000000000000000000000000000097 +S315E0767D900000000000000000000000000000000087 +S315E0767DA00000000000000000000000000000000077 +S315E0767DB00000000000000000000000000000000067 +S315E0767DC00000000000000000000000000000000057 +S315E0767DD00000000000000000000000000000000047 +S315E0767DE00000000000000000000000000000000037 +S315E0767DF00000000000000000000000000000000027 +S315E0767E000000000000000000000000000000000016 +S315E0767E100000000000000000000000000000000006 +S315E0767E2000000000000000000000000000000000F6 +S315E0767E3000000000000000000000000000000000E6 +S315E0767E4000000000000000000000000000000000D6 +S315E0767E5000000000000000000000000000000000C6 +S315E0767E6000000000000000000000000000000000B6 +S315E0767E7000000000000000000000000000000000A6 +S315E0767E800000000000000000000000000000000096 +S315E0767E900000000000000000000000000000000086 +S315E0767EA00000000000000000000000000000000076 +S315E0767EB00000000000000000000000000000003E28 +S315E0767EC0490000000000000000000000000000000D +S315E0767ED00000000000000000000000000000000046 +S315E0767EE00000000000000000000000000000000036 +S315E0767EF00000000000000000000000000000000026 +S315E0767F000000000000000000000000000000000015 +S315E0767F100000000000000000000000000000000005 +S315E0767F2000000000000000000000000000000000F5 +S315E0767F3000000000000000000000000000000000E5 +S315E0767F4000000000000000000000000000000000D5 +S315E0767F5000000000000000000000000000000000C5 +S315E0767F6000000000000000000000000000000000B5 +S315E0767F7000000000000000000000000000000000A5 +S315E0767F800000000000000000000000000000000095 +S315E0767F900000000000000000000000000000000085 +S315E0767FA00000000000000000000000000000000075 +S315E0767FB00000000000000000000000000000000065 +S315E0767FC00000000000000000000000000000000055 +S315E0767FD00000000000000000000000000000000045 +S315E0767FE00000000000000000000000000000000035 +S315E0767FF00000000000000000000000000000000025 +S315E07680000000000000000000000000000000000014 +S315E07680100000000000000000000000000000000004 +S315E076802000000000000000000000000000000000F4 +S315E076803000000000000000003E490000000000005D +S315E076804000000000000000000000000000000000D4 +S315E076805000000000000000000000000000000000C4 +S315E076806000000000000000000000000000000000B4 +S315E076807000000000000000000000000000000000A4 +S315E07680800000000000000000000000000000000094 +S315E07680900000000000000000000000000000000084 +S315E07680A00000000000000000000000000000000074 +S315E07680B00000000000000000000000000000000064 +S315E07680C00000000000000000000000000000000054 +S315E07680D00000000000000000000000000000000044 +S315E07680E00000000000000000000000000000000034 +S315E07680F00000000000000000000000000000000024 +S315E07681000000000000000000000000000000000013 +S315E07681100000000000000000000000000000000003 +S315E076812000000000000000000000000000000000F3 +S315E076813000000000000000000000000000000000E3 +S315E076814000000000000000000000000000000000D3 +S315E076815000000000000000000000000000000000C3 +S315E076816000000000000000000000000000000000B3 +S315E076817000000000000000000000000000000000A3 +S315E07681800000000000000000000000000000000093 +S315E07681900000000000000000000000000000000083 +S315E07681A00000000000000000000000000000000073 +S315E07681B0003E4900000000000000000000000000DC +S315E07681C00000000000000000000000000000000053 +S315E07681D00000000000000000000000000000000043 +S315E07681E00000000000000000000000000000000033 +S315E07681F00000000000000000000000000000000023 +S315E07682000000000000000000000000000000000012 +S315E07682100000000000000000000000000000000002 +S315E076822000000000000000000000000000000000F2 +S315E076823000000000000000000000000000000000E2 +S315E076824000000000000000000000000000000000D2 +S315E076825000000000000000000000000000000000C2 +S315E076826000000000000000000000000000000000B2 +S315E076827000000000000000000000000000000000A2 +S315E07682800000000000000000000000000000000092 +S315E07682900000000000000000000000000000000082 +S315E07682A00000000000000000000000000000000072 +S315E07682B00000000000000000000000000000000062 +S315E07682C00000000000000000000000000000000052 +S315E07682D00000000000000000000000000000000042 +S315E07682E00000000000000000000000000000000032 +S315E07682F00000000000000000000000000000000022 +S315E07683000000000000000000000000000000000011 +S315E07683100000000000000000000000000000000001 +S315E0768320000000000000000000003E49000000006A +S315E076833000000000000000000000000000000000E1 +S315E076834000000000000000000000000000000000D1 +S315E076835000000000000000000000000000000000C1 +S315E076836000000000000000000000000000000000B1 +S315E076837000000000000000000000000000000000A1 +S315E07683800000000000000000000000000000000091 +S315E07683900000000000000000000000000000000081 +S315E07683A00000000000000000000000000000000071 +S315E07683B00000000000000000000000000000000061 +S315E07683C00000000000000000000000000000000051 +S315E07683D00000000000000000000000000000000041 +S315E07683E00000000000000000000000000000000031 +S315E07683F00000000000000000000000000000000021 +S315E07684000000000000000000000000000000000010 +S315E07684100000000000000000000000000000000000 +S315E076842000000000000000000000000000000000F0 +S315E076843000000000000000000000000000000000E0 +S315E076844000000000000000000000000000000000D0 +S315E076845000000000000000000000000000000000C0 +S315E076846000000000000000000000000000000000B0 +S315E076847000000000000000000000000000000000A0 +S315E07684800000000000000000000000000000000090 +S315E07684900000000000000000000000000000000080 +S315E07684A00000003E490000000000000000000000E9 +S315E07684B00000000000000000000000000000000060 +S315E07684C00000000000000000000000000000000050 +S315E07684D00000000000000000000000000000000040 +S315E07684E00000000000000000000000000000000030 +S315E07684F00000000000000000000000000000000020 +S315E0768500000000000000000000000000000000000F +S315E076851000000000000000000000000000000000FF +S315E076852000000000000000000000000000000000EF +S315E076853000000000000000000000000000000000DF +S315E076854000000000000000000000000000000000CF +S315E076855000000000000000000000000000000000BF +S315E076856000000000000000000000000000000000AF +S315E0768570000000000000000000000000000000009F +S315E0768580000000000000000000000000000000008F +S315E0768590000000000000000000000000000000007F +S315E07685A0000000000000000000000000000000006F +S315E07685B0000000000000000000000000000000005F +S315E07685C0000000000000000000000000000000004F +S315E07685D0000000000000000000000000000000003F +S315E07685E0000000000000000000000000000000002F +S315E07685F0000000000000000000000000000000001F +S315E0768600000000000000000000000000000000000E +S315E07686100000000000000000000000003E49000077 +S315E076862000000000000000000000000000000000EE +S315E076863000000000000000000000000000000000DE +S315E076864000000000000000000000000000000000CE +S315E076865000000000000000000000000000000000BE +S315E076866000000000000000000000000000000000AE +S315E0768670000000000000000000000000000000009E +S315E0768680000000000000000000000000000000008E +S315E0768690000000000000000000000000000000007E +S315E07686A0000000000000000000000000000000006E +S315E07686B0000000000000000000000000000000005E +S315E07686C0000000000000000000000000000000004E +S315E07686D0000000000000000000000000000000003E +S315E07686E0000000000000000000000000000000002E +S315E07686F0000000000000000000000000000000001E +S315E0768700000000000000000000000000000000000D +S315E076871000000000000000000000000000000000FD +S315E076872000000000000000000000000000000000ED +S315E076873000000000000000000000000000000000DD +S315E076874000000000000000000000000000000000CD +S315E076875000000000000000000000000000000000BD +S315E076876000000000000000000000000000000000AD +S315E0768770000000000000000000000000000000009D +S315E0768780000000000000000000000000000000008D +S315E076879000000000003E49000000000000000000F6 +S315E07687A0000000000000000000000000000000006D +S315E07687B0000000000000000000000000000000005D +S315E07687C0000000000000000000000000000000004D +S315E07687D0000000000000000000000000000000003D +S315E07687E0000000000000000000000000000000002D +S315E07687F0000000000000000000000000000000001D +S315E0768800000000000000000000000000000000000C +S315E076881000000000000000000000000000000000FC +S315E076882000000000000000000000000000000000EC +S315E076883000000000000000000000000000000000DC +S315E076884000000000000000000000000000000000CC +S315E076885000000000000000000000000000000000BC +S315E076886000000000000000000000000000000000AC +S315E0768870000000000000000000000000000000009C +S315E0768880000000000000000000000000000000008C +S315E0768890000000000000000000000000000000007C +S315E07688A0000000000000000000000000000000006C +S315E07688B0000000000000000000000000000000005C +S315E07688C0000000000000000000000000000000004C +S315E07688D0000000000000000000000000000000003C +S315E07688E0000000000000000000000000000000002C +S315E07688F0000000000000000000000000000000001C +S315E076890000000000000000000000000000003E4984 +S315E076891000000000000000000000000000000000FB +S315E076892000000000000000000000000000000000EB +S315E076893000000000000000000000000000000000DB +S315E076894000000000000000000000000000000000CB +S315E076895000000000000000000000000000000000BB +S315E076896000000000000000000000000000000000AB +S315E0768970000000000000000000000000000000009B +S315E0768980000000000000000000000000000000008B +S315E0768990000000000000000000000000000000007B +S315E07689A0000000000000000000000000000000006B +S315E07689B0000000000000000000000000000000005B +S315E07689C0000000000000000000000000000000004B +S315E07689D0000000000000000000000000000000003B +S315E07689E0000000000000000000000000000000002B +S315E07689F0000000000000000000000000000000001B +S315E0768A00000000000000000000000000000000000A +S315E0768A1000000000000000000000000000000000FA +S315E0768A2000000000000000000000000000000000EA +S315E0768A3000000000000000000000000000000000DA +S315E0768A4000000000000000000000000000000000CA +S315E0768A5000000000000000000000000000000000BA +S315E0768A6000000000000000000000000000000000AA +S315E0768A70000000000000000000000000000000009A +S315E0768A80000000000000003E490000000000000003 +S315E0768A90000000000000000000000000000000007A +S315E0768AA0000000000000000000000000000000006A +S315E0768AB0000000000000000000000000000000005A +S315E0768AC0000000000000000000000000000000004A +S315E0768AD0000000000000000000000000000000003A +S315E0768AE0000000000000000000000000000000002A +S315E0768AF0000000000000000000000000000000001A +S315E0768B000000000000000000000000000000000009 +S315E0768B1000000000000000000000000000000000F9 +S315E0768B2000000000000000000000000000000000E9 +S315E0768B3000000000000000000000000000000000D9 +S315E0768B4000000000000000000000000000000000C9 +S315E0768B5000000000000000000000000000000000B9 +S315E0768B6000000000000000000000000000000000A9 +S315E0768B700000000000000000000000000000000099 +S315E0768B800000000000000000000000000000000089 +S315E0768B900000000000000000000000000000000079 +S315E0768BA00000000000000000000000000000000069 +S315E0768BB00000000000000000000000000000000059 +S315E0768BC00000000000000000000000000000000049 +S315E0768BD00000000000000000000000000000000039 +S315E0768BE00000000000000000000000000000000029 +S315E0768BF00000000000000000000000000000000019 +S315E0768C003E49000000000000000000000000000081 +S315E0768C1000000000000000000000000000000000F8 +S315E0768C2000000000000000000000000000000000E8 +S315E0768C3000000000000000000000000000000000D8 +S315E0768C4000000000000000000000000000000000C8 +S315E0768C5000000000000000000000000000000000B8 +S315E0768C6000000000000000000000000000000000A8 +S315E0768C700000000000000000000000000000000098 +S315E0768C800000000000000000000000000000000088 +S315E0768C900000000000000000000000000000000078 +S315E0768CA00000000000000000000000000000000068 +S315E0768CB00000000000000000000000000000000058 +S315E0768CC00000000000000000000000000000000048 +S315E0768CD00000000000000000000000000000000038 +S315E0768CE00000000000000000000000000000000028 +S315E0768CF00000000000000000000000000000000018 +S315E0768D000000000000000000000000000000000007 +S315E0768D1000000000000000000000000000000000F7 +S315E0768D2000000000000000000000000000000000E7 +S315E0768D3000000000000000000000000000000000D7 +S315E0768D4000000000000000000000000000000000C7 +S315E0768D5000000000000000000000000000000000B7 +S315E0768D6000000000000000000000000000000000A7 +S315E0768D700000000000000000003E49000000000010 +S315E0768D800000000000000000000000000000000087 +S315E0768D900000000000000000000000000000000077 +S315E0768DA00000000000000000000000000000000067 +S315E0768DB00000000000000000000000000000000057 +S315E0768DC00000000000000000000000000000000047 +S315E0768DD00000000000000000000000000000000037 +S315E0768DE00000000000000000000000000000000027 +S315E0768DF00000000000000000000000000000000017 +S315E0768E000000000000000000000000000000000006 +S315E0768E1000000000000000000000000000000000F6 +S315E0768E2000000000000000000000000000000000E6 +S315E0768E3000000000000000000000000000000000D6 +S315E0768E4000000000000000000000000000000000C6 +S315E0768E5000000000000000000000000000000000B6 +S315E0768E6000000000000000000000000000000000A6 +S315E0768E700000000000000000000000000000000096 +S315E0768E800000000000000000000000000000000086 +S315E0768E900000000000000000000000000000000076 +S315E0768EA00000000000000000000000000000000066 +S315E0768EB00000000000000000000000000000000056 +S315E0768EC00000000000000000000000000000000046 +S315E0768ED00000000000000000000000000000000036 +S315E0768EE00000000000000000000000000000000026 +S315E0768EF000003E490000000000000000000000008F +S315E0768F000000000000000000000000000000000005 +S315E0768F1000000000000000000000000000000000F5 +S315E0768F2000000000000000000000000000000000E5 +S315E0768F3000000000000000000000000000000000D5 +S315E0768F4000000000000000000000000000000000C5 +S315E0768F5000000000000000000000000000000000B5 +S315E0768F6000000000000000000000000000000000A5 +S315E0768F700000000000000000000000000000000095 +S315E0768F800000000000000000000000000000000085 +S315E0768F900000000000000000000000000000000075 +S315E0768FA00000000000000000000000000000000065 +S315E0768FB00000000000000000000000000000000055 +S315E0768FC00000000000000000000000000000000045 +S315E0768FD00000000000000000000000000000000035 +S315E0768FE00000000000000000000000000000000025 +S315E0768FF00000000000000000000000000000000015 +S315E07690000000000000000000000000000000000004 +S315E076901000000000000000000000000000000000F4 +S315E076902000000000000000000000000000000000E4 +S315E076903000000000000000000000000000000000D4 +S315E076904000000000000000000000000000000000C4 +S315E076905000000000000000000000000000000000B4 +S315E076906000000000000000000000003E490000001D +S315E07690700000000000000000000000000000000094 +S315E07690800000000000000000000000000000000084 +S315E07690900000000000000000000000000000000074 +S315E07690A00000000000000000000000000000000064 +S315E07690B00000000000000000000000000000000054 +S315E07690C00000000000000000000000000000000044 +S315E07690D00000000000000000000000000000000034 +S315E07690E00000000000000000000000000000000024 +S315E07690F00000000000000000000000000000000014 +S315E07691000000000000000000000000000000000003 +S315E076911000000000000000000000000000000000F3 +S315E076912000000000000000000000000000000000E3 +S315E076913000000000000000000000000000000000D3 +S315E076914000000000000000000000000000000000C3 +S315E076915000000000000000000000000000000000B3 +S315E076916000000000000000000000000000000000A3 +S315E07691700000000000000000000000000000000093 +S315E07691800000000000000000000000000000000083 +S315E07691900000000000000000000000000000000073 +S315E07691A00000000000000000000000000000000063 +S315E07691B00000000000000000000000000000000053 +S315E07691C00000000000000000000000000000000043 +S315E07691D00000000000000000000000000000000033 +S315E07691E0000000003E49000000000000000000009C +S315E07691F00000000000000000000000000000000013 +S315E07692000000000000000000000000000000000002 +S315E076921000000000000000000000000000000000F2 +S315E076922000000000000000000000000000000000E2 +S315E076923000000000000000000000000000000000D2 +S315E076924000000000000000000000000000000000C2 +S315E076925000000000000000000000000000000000B2 +S315E076926000000000000000000000000000000000A2 +S315E07692700000000000000000000000000000000092 +S315E07692800000000000000000000000000000000082 +S315E07692900000000000000000000000000000000072 +S315E07692A00000000000000000000000000000000062 +S315E07692B00000000000000000000000000000000052 +S315E07692C00000000000000000000000000000000042 +S315E07692D00000000000000000000000000000000032 +S315E07692E00000000000000000000000000000000022 +S315E07692F00000000000000000000000000000000012 +S315E07693000000000000000000000000000000000001 +S315E076931000000000000000000000000000000000F1 +S315E076932000000000000000000000000000000000E1 +S315E076933000000000000000000000000000000000D1 +S315E076934000000000000000000000000000000000C1 +S315E0769350000000000000000000000000003E49002A +S315E076936000000000000000000000000000000000A1 +S315E07693700000000000000000000000000000000091 +S315E07693800000000000000000000000000000000081 +S315E07693900000000000000000000000000000000071 +S315E07693A00000000000000000000000000000000061 +S315E07693B00000000000000000000000000000000051 +S315E07693C00000000000000000000000000000000041 +S315E07693D00000000000000000000000000000000031 +S315E07693E00000000000000000000000000000000021 +S315E07693F00000000000000000000000000000000011 +S315E07694000000000000000000000000000000000000 +S315E076941000000000000000000000000000000000F0 +S315E076942000000000000000000000000000000000E0 +S315E076943000000000000000000000000000000000D0 +S315E076944000000000000000000000000000000000C0 +S315E076945000000000000000000000000000000000B0 +S315E076946000000000000000000000000000000000A0 +S315E07694700000000000000000000000000000000090 +S315E07694800000000000000000000000000000000080 +S315E07694900000000000000000000000000000000070 +S315E07694A00000000000000000000000000000000060 +S315E07694B00000000000000000000000000000000050 +S315E07694C00000000000000000000000000000000040 +S315E07694D00000000000003E490000000000000000A9 +S315E07694E00000000000000000000000000000000020 +S315E07694F00000000000000000000000000000000010 +S315E076950000000000000000000000000000000000FF +S315E076951000000000000000000000000000000000EF +S315E076952000000000000000000000000000000000DF +S315E076953000000000000000000000000000000000CF +S315E076954000000000000000000000000000000000BF +S315E076955000000000000000000000000000000000AF +S315E0769560000000000000000000000000000000009F +S315E0769570000000000000000000000000000000008F +S315E0769580000000000000000000000000000000007F +S315E0769590000000000000000000000000000000006F +S315E07695A0000000000000000000000000000000005F +S315E07695B0000000000000000000000000000000004F +S315E07695C0000000000000000000000000000000003F +S315E07695D0000000000000000000000000000000002F +S315E07695E0000000000000000000000000000000001F +S315E07695F0000000000000000000000000000000000F +S315E076960000000000000000000000000000000000FE +S315E076961000000000000000000000000000000000EE +S315E076962000000000000000000000000000000000DE +S315E076963000000000000000000000000000000000CE +S315E07696400000000000000000000000000000003E80 +S315E07696504900000000000000000000000000000065 +S315E0769660000000000000000000000000000000009E +S315E0769670000000000000000000000000000000008E +S315E0769680000000000000000000000000000000007E +S315E0769690000000000000000000000000000000006E +S315E07696A0000000000000000000000000000000005E +S315E07696B0000000000000000000000000000000004E +S315E07696C0000000000000000000000000000000003E +S315E07696D0000000000000000000000000000000002E +S315E07696E0000000000000000000000000000000001E +S315E07696F0000000000000000000000000000000000E +S315E076970000000000000000000000000000000000FD +S315E076971000000000000000000000000000000000ED +S315E076972000000000000000000000000000000000DD +S315E076973000000000000000000000000000000000CD +S315E076974000000000000000000000000000000000BD +S315E076975000000000000000000000000000000000AD +S315E0769760000000000000000000000000000000009D +S315E0769770000000000000000000000000000000008D +S315E0769780000000000000000000000000000000007D +S315E0769790000000000000000000000000000000006D +S315E07697A0000000000000000000000000000000005D +S315E07697B0000000000000000000000000000000004D +S315E07697C000000000000000003E49000000000000B6 +S315E07697D0000000000000000000000000000000002D +S315E07697E0000000000000000000000000000000001D +S315E07697F0000000000000000000000000000000000D +S315E076980000000000000000000000000000000000FC +S315E076981000000000000000000000000000000000EC +S315E076982000000000000000000000000000000000DC +S315E076983000000000000000000000000000000000CC +S315E076984000000000000000000000000000000000BC +S315E076985000000000000000000000000000000000AC +S315E0769860000000000000000000000000000000009C +S315E0769870000000000000000000000000000000008C +S315E0769880000000000000000000000000000000007C +S315E0769890000000000000000000000000000000006C +S315E07698A0000000000000000000000000000000005C +S315E07698B0000000000000000000000000000000004C +S315E07698C0000000000000000000000000000000003C +S315E07698D0000000000000000000000000000000002C +S315E07698E0000000000000000000000000000000001C +S315E07698F0000000000000000000000000000000000C +S315E076990000000000000000000000000000000000FB +S315E076991000000000000000000000000000000000EB +S315E076992000000000000000000000000000000000DB +S315E076993000000000000000000000000000000000CB +S315E0769940003E490000000000000000000000000034 +S315E076995000000000000000000000000000000000AB +S315E0769960000000000000000000000000000000009B +S315E0769970000000000000000000000000000000008B +S315E0769980000000000000000000000000000000007B +S315E0769990000000000000000000000000000000006B +S315E07699A0000000000000000000000000000000005B +S315E07699B0000000000000000000000000000000004B +S315E07699C0000000000000000000000000000000003B +S315E07699D0000000000000000000000000000000002B +S315E07699E0000000000000000000000000000000001B +S315E07699F0000000000000000000000000000000000B +S315E0769A0000000000000000000000000000000000FA +S315E0769A1000000000000000000000000000000000EA +S315E0769A2000000000000000000000000000000000DA +S315E0769A3000000000000000000000000000000000CA +S315E0769A4000000000000000000000000000000000BA +S315E0769A5000000000000000000000000000000000AA +S315E0769A60000000000000000000000000000000009A +S315E0769A70000000000000000000000000000000008A +S315E0769A80000000000000000000000000000000007A +S315E0769A90000000000000000000000000000000006A +S315E0769AA0000000000000000000000000000000005A +S315E0769AB0000000000000000000003E4900000020A3 +S315E0769AC0000000000020000000000000000000001A +S315E0769AD0000000000000000000000000000000002A +S315E0769AE0000000000000000000000000000000001A +S315E0769AF0000000000000000000000000000000000A +S315E0769B000000000000400000000048004000000031 +S315E0769B1000000000000000000000000000400008A1 +S315E0769B200000000000000000080000084000000089 +S315E0769B300000400000000840000000000000000041 +S315E0769B400000000800200040080000000000200029 +S315E0769B5000004000400000000000000000402000C9 +S315E0769B600000000000000000000000000000000099 +S315E0769B7000000060002000000020000000000000E9 +S315E0769B8020000000000000000040000000200000F9 +S315E0769B9000000000004020006000000000000000A9 +S315E0769BA000000000004000002000004000000000B9 +S315E0769BB000000000000000002020000000400000C9 +S315E0769BC000000000002000002000000000000000F9 +S315E0769BD040204000600000000000004000000000E9 +S315E0769BE000000000000000000000000000000040D9 +S315E0769BF00000000000000000000000000000000009 +S315E0769C0000002000200000000000000000000000B8 +S315E0769C1000000000000000000040000000000000A8 +S315E0769C204000000040000000000000000000000058 +S315E0769C3000000061E3000000000000000000000084 +S315E0769C4000000000000000000000000000000000B8 +S315E0769C5000000000000000000000000000000000A8 +S315E0769C600000000000000000000000000000000098 +S315E0769C700000000000000000000000000000000088 +S315E0769C800008080000400000000000000000000028 +S315E0769C9000080040004000000000000040000000A0 +S315E0769CA00000000000000000000000080008000048 +S315E0769CB00020000000000000000000000008000020 +S315E0769CC00000004020000000000000004000000098 +S315E0769CD000000000000000004000400000000000A8 +S315E0769CE00000004000000000000000400000002078 +S315E0769CF000000000000000002000000000000000E8 +S315E0769D000000000020000040000000000020000077 +S315E0769D1040000000000000000000000000000000A7 +S315E0769D200000400000000000000000000000000097 +S315E0769D300000400040000000000000000000000047 +S315E0769D400000000000000000000000400000000077 +S315E0769D500000000040000000000000000000000067 +S315E0769D600000000020002000000000000000000057 +S315E0769D700000000000000000000020000020400007 +S315E0769D800000000000000000000000000000000077 +S315E0769D9000004000000000000040000000000000E7 +S315E0769DA00000000000000000000040009DF9000081 +S315E0769DB00000000000000000000000000000000047 +S315E0769DC00000000000000000000000000000000037 +S315E0769DD00000000000000000000000000000000027 +S315E0769DE00000000000000000000000000000000017 +S315E0769DF0000000000000000840004040000000003F +S315E0769E0000080000000000000800000000000000E6 +S315E0769E100800400800000000000000000000000096 +S315E0769E20080000000000400040000000002000002E +S315E0769E300000000000000000080048002000000056 +S315E0769E400000002040000000000000000000000056 +S315E0769E500000200020006000000000000000000006 +S315E0769E600000000000002040000040006000000096 +S315E0769E7020000000000000000040004000000000E6 +S315E0769E800000200000000040000000000000000016 +S315E0769E9000000000000000200000400000002040A6 +S315E0769EA00000000000000000000020002000000016 +S315E0769EB000004000000000200000200000000000C6 +S315E0769EC04000400000400000200000000020002016 +S315E0769ED00000000000000000000000000000000026 +S315E0769EE000000000200000004000000000000000B6 +S315E0769EF000000000000000000000000040000000C6 +S315E0769F0000000000000040000000000000000000B5 +S315E0769F1000000000004000000000000000000000A5 +S315E0769F2000000000006DD400000000000000000094 +S315E0769F3000000000000000000000000000200000A5 +S315E0769F402000000000000000000000000000000095 +S315E0769F5000000000000000000000000000000000A5 +S315E0769F600000000000000000000000000000000095 +S315E0769F700000000000000000000000000000000085 +S315E0769F80000000000000000000000000004008002D +S315E0769F900000000000000000000040000000000025 +S315E0769FA00000000000000000000000000000000055 +S315E0769FB00000002000000000000020000000000005 +S315E0769FC000000000002000200000000000000000F5 +S315E0769FD040000040000000000000000000000000A5 +S315E0769FE000000000000000004000000000000000D5 +S315E0769FF000000000000000000000000000200000E5 +S315E076A00000000000000000000000200000000000D4 +S315E076A01000000000000000000000004000000000A4 +S315E076A0200000004000000000000000000000400054 +S315E076A03000000000000000000000000000000000C4 +S315E076A0400000002000000000000000000000000094 +S315E076A0500020002020000000000000000000000044 +S315E076A0600000000000000000000000004000000054 +S315E076A0700000000000000000000000000000000084 +S315E076A0800000000000000000000000000000000074 +S315E076A0900000000000000000000000000000792FBC +S315E076A0A00000000000000000000000000000000054 +S315E076A0B00000000000000000000000000020000024 +S315E076A0C00000000000000000000000000000000034 +S315E076A0D00000000000000000000000000000000024 +S315E076A0E00000000000000000000000000000000014 +S315E076A0F000000000000000000000004000000800BC +S315E076A10008000000000000000000000000000800E3 +S315E076A110000040000800000000000000000000009B +S315E076A12000000000000000000000000000000000D3 +S315E076A13000000000000000000000000000000000C3 +S315E076A1400000000000000000000020000000000093 +S315E076A15000000000000000000000000000000000A3 +S315E076A1604000000000000000000000000000000053 +S315E076A1700000000000000000000000000000000083 +S315E076A18000000000002000204000000000002000D3 +S315E076A1900000000000000000000000000000000063 +S315E076A1A00000000000004000000000000000000013 +S315E076A1B00000000000000000000000000020000023 +S315E076A1C00000000000000000000000000000000033 +S315E076A1D040000000200000000000000000000000C3 +S315E076A1E00000000000000000000000000000000013 +S315E076A1F00000000000000000000000000000000003 +S315E076A20000000000000000000000000000000000F2 +S315E076A2100000000000000096B50000000000000097 +S315E076A22000000000000000000000000000000020B2 +S315E076A2300000002000002000000000000000000082 +S315E076A24000000000000000000000000000000000B2 +S315E076A25000000000000000000000000000000000A2 +S315E076A260000000000000000000000000080000008A +S315E076A270000000000840084040080800000040085A +S315E076A2800048000000080800000000480048400842 +S315E076A2900048480040000000000000000000000092 +S315E076A2A00000002000200020200000200020002072 +S315E076A2B00000000000002000002040202000402022 +S315E076A2C04000600040004000000000000000000012 +S315E076A2D00000400000000040400040000000000022 +S315E076A2E000000000000000000000200020002000B2 +S315E076A2F02000000020000000000000002000200082 +S315E076A3002040600020002000200000404000000051 +S315E076A31000000000400000004000004000404000A1 +S315E076A3204000000000000000000000000000000091 +S315E076A3300020200020000020000020000000000021 +S315E076A3400000002000200020006020006000200051 +S315E076A3500000000000000000000000000000400061 +S315E076A3600000000000000040000000000000000051 +S315E076A3700000000000000000000000000000000081 +S315E076A3800000000000000000000000000000004031 +S315E076A390647F00000000000000000000000000007E +S315E076A3A00000000000000000000000000000000051 +S315E076A3B00000000000000000000000000000000041 +S315E076A3C00000000000000000000000000000000031 +S315E076A3D00000000000000000000000000000000021 +S315E076A3E00000000000000000000000000000000011 +S315E076A3F00000000000000000000000000000000001 +S315E076A40000000000000000000000000000000000F0 +S315E076A41000000000000000000000000000000000E0 +S315E076A42000000000000000000000000000000000D0 +S315E076A43000000000000000000000000000000000C0 +S315E076A44000000000000000000000000000000000B0 +S315E076A45000000000000000000000000000000000A0 +S315E076A4600000000000000000000000000000000090 +S315E076A4700000000000000000000000000000000080 +S315E076A4800000000000000000000000000000000070 +S315E076A4900000000000000000000000000000000060 +S315E076A4A00000000000000000000000000000000050 +S315E076A4B00000000000000000000000000000000040 +S315E076A4C00000000000000000000000000000000030 +S315E076A4D00000000000000000000000000000000020 +S315E076A4E00000000000000000000000000000000010 +S315E076A4F00000000000000000000000000000000000 +S315E076A5000000000000000000003E49000000000860 +S315E076A51000000000000000000000000000000000DF +S315E076A520000000000000000000008000000000004F +S315E076A530000000001000004000000000000000006F +S315E076A540000000000000000000000000000000208F +S315E076A550000000000000000000040000800000001B +S315E076A560000000000000000000000000000000008F +S315E076A570000000000000000000000000000000007F +S315E076A580000000000001000000000000000000006E +S315E076A590004040001000000000800000000000004F +S315E076A5A0000000000000000000000000000000004F +S315E076A5B0000040100000020000000000000080006D +S315E076A5C00000000000000000000000000000080027 +S315E076A5D000000000000000004000000000000000DF +S315E076A5E000000000000000000000000000002000EF +S315E076A5F000000040000000000000000000000000BF +S315E076A60000000000000000000000000000000000EE +S315E076A61000000000000000000000000000000000DE +S315E076A620100000000000200000000000000000009E +S315E076A63000800000004000000000000000020000FC +S315E076A640000000000000000000000000000000109E +S315E076A650000000000000000000000000000000207E +S315E076A660000000000000000000000000200000006E +S315E076A670000000000000000000000000000000007E +S315E076A6800000F82600000000400000000000000010 +S315E076A690000000000024000000000000000020001A +S315E076A6A0000000400000000000200080000000006E +S315E076A6B000000000000000000000004000000000FE +S315E076A6C0000000000000000080001000000000009E +S315E076A6D0084008080010080800400000000008005E +S315E076A6E0000008000028000040004000002000003E +S315E076A6F00408000008200010002000082000004032 +S315E076A70010082020000008400008401000002020B5 +S315E076A7100000200000400810000000000040000025 +S315E076A720000020000024080000000000000420005D +S315E076A7300040040080000000100000000020408009 +S315E076A74000004000204000000008400000000000C5 +S315E076A750000000002000000000500000200000000D +S315E076A760200000000010008000000020400000007D +S315E076A770000000204080000000000000000000009D +S315E076A78020000040000000000000004000002000AD +S315E076A79000000040000040000020000000000000BD +S315E076A7A000000000000020100000000000280000F5 +S315E076A7B000000000000020000000000000200000FD +S315E076A7C0000000000000004000600000000020006D +S315E076A7D000000000000000000000000000400000DD +S315E076A7E000000000080000000020000800000000DD +S315E076A7F0000040800000000000200016B600000051 +S315E076A80000000000000000000000000000002000CC +S315E076A81000000000001000200000000000000000AC +S315E076A82000000020804000000000000000002000CC +S315E076A83000000000800000008000000000000000BC +S315E076A84000800000000000000000400800000800DC +S315E076A850000800000000000840000008000000083C +S315E076A8600000000000004001000008400000000003 +S315E076A8700000000000000000004000201000000804 +S315E076A880400000800000002000000020000000006C +S315E076A89020002000000040000000200000000000BC +S315E076A8A000002000000000000000480040000000A4 +S315E076A8B00000000000002040000010402000680004 +S315E076A8C0000000000000000000000000000000002C +S315E076A8D0000000302000000000402000000000006C +S315E076A8E00800000000000000000000000000800084 +S315E076A8F0200000000020000020400000000000005C +S315E076A900000000000040002010400000000020C05B +S315E076A910000000200000000000000020000000009B +S315E076A9200000000000002800000000000000002083 +S315E076A930000020000000200000000000000000007B +S315E076A940000020000000000000000000800000000B +S315E076A950000000000000000000000000000000009B +S315E076A960004000000000000000000000000000004B +S315E076A97000000000D7F30000004000000000000071 +S315E076A9800000000000000004000000000000000067 +S315E076A9900000000000004008000000000000008093 +S315E076A9A0000000000000000000000000000040000B +S315E076A9B0000000001000A00000000010000000007B +S315E076A9C040400800000C00300040000040000000E7 +S315E076A9D000000000000000208000400048000420CF +S315E076A9E00000042000004820001000240028000023 +S315E076A9F00000100008200000000004084010000067 +S315E076AA00086000000000000068001000000000000A +S315E076AA1000000000000000042800000040204024EA +S315E076AA2040000000040080000000500000000000B6 +S315E076AA3000800000000000000000005800000200E0 +S315E076AA4000008000002000000004004000000000C6 +S315E076AA50002000000000001000008010002040007A +S315E076AA6000000000002040000000004000000000EA +S315E076AA7000000000404000000000000000000000FA +S315E076AA80000000000040000000000000000000002A +S315E076AA90000000000000002000100000000020000A +S315E076AAA000000020000000000000000040000000EA +S315E076AAB0004000000000000000400040000000007A +S315E076AAC020000000000200100000000000000040B8 +S315E076AAD0000000000040080000000000200008208A +S315E076AAE00000004020008000000000200029B2002F +S315E076AAF0300000000000400010000000000000403A +S315E076AB000000000000000000005000000000000099 +S315E076AB100060400000100000000000001004000015 +S315E076AB2040000440000044000000400000000000C1 +S315E076AB300080082020000044200000044000080041 +S315E076AB400800480000000010284040200000000081 +S315E076AB50400010008800A00084280004000000046D +S315E076AB6080288014004820C0204014004000104021 +S315E076AB702000000000008008200840002000000049 +S315E076AB80000004000000400080000000008010C055 +S315E076AB9048200090001000008020802008300000D9 +S315E076ABA0240000000020880000000000000000007D +S315E076ABB0004000001040200000202040A0008000E9 +S315E076ABC000000040009020008000000000808000B9 +S315E076ABD000000020001000008000000000C00000A9 +S315E076ABE00000082020000020000080200000000001 +S315E076ABF02000000020000000000000C000000000F9 +S315E076AC0040000000002000000000008020000000E8 +S315E076AC100000008080000000000100404000005007 +S315E076AC2000800000002040000000000000000010D8 +S315E076AC3000208040008080000100000000000008CF +S315E076AC4020408000000000000000000080001040F8 +S315E076AC500000080000000000600000000080800030 +S315E076AC60000160008000FD9F004004002010400057 +S315E076AC70000400005000000000240040200400009C +S315E076AC802000001020000000680000003040000040 +S315E076AC900004000020002000542000002040000040 +S315E076ACA020004020041000044000400000004020D0 +S315E076ACB00008004000080014004010000020002440 +S315E076ACC000000000002840402008800080400050C8 +S315E076ACD008000000A0008050004000002000A01090 +S315E076ACE0080C0000A0802C049000484C000400502C +S315E076ACF00010800080800800086C80180028040028 +S315E076AD0000000894004408000080040440000880AF +S315E076AD102808400040008800200000004000C0007F +S315E076AD2040080000C800100080088000C800A00037 +S315E076AD3010480000004800000020C800806400004B +S315E076AD40800020408040004000208010800000C0D7 +S315E076AD5000000000000000208000000040804000F7 +S315E076AD6000000000000000008000808010000000F7 +S315E076AD7040002000008000004000200080800040F7 +S315E076AD8000002040000000001080004000005000E7 +S315E076AD900080000080000000004000800000800017 +S315E076ADA08000008000806000000040000000000027 +S315E076ADB040408040004080002080000040400040D7 +S315E076ADC0A000006000000000000080000000800027 +S315E076ADD000000080000021082060000011010025B7 +S315E076ADE0940000742000400000000400104020002B +S315E076ADF0000024000060040000000050100000000F +S315E076AE004800006000304010000004002000001486 +S315E076AE10401460002040000024000000002410006A +S315E076AE200400400020082040440020080040084006 +S315E076AE300C00481048200000340008204000000846 +S315E076AE40002048001000C800308884006004008046 +S315E076AE504000004800044028204828402014A408F2 +S315E076AE60804068000480000080182098004000A8A2 +S315E076AE700800CC201800200C0060800014000880C2 +S315E076AE808040EC00800400188008688000C000B836 +S315E076AE9000600000000000A00040000808001000F6 +S315E076AEA00000C00808008040200008600000A84046 +S315E076AEB00000806800C08070A0008020408000405E +S315E076AEC0C000200000A01000400000800000400096 +S315E076AED080000000402028C00000000080200000AE +S315E076AEE000000080100020004000200000D0000026 +S315E076AEF00040000000800020004000208000200016 +S315E076AF0000000000800040200000010000004000C4 +S315E076AF10100000C0000080000000000000800060A5 +S315E076AF2000100060C00080008000000100004080D4 +S315E076AF300000004000000000208000000040000095 +S315E076AF40500000000800800000000040800080008D +S315E076AF5088004100401000801D530000100010204C +S315E076AF6000000000004000400000000010500000A5 +S315E076AF70460040000020408040002000400000006F +S315E076AF8000041000401020004800106000400040A9 +S315E076AF90000000400020004000400010000030C075 +S315E076AFA000280048002840040020D000480000042D +S315E076AFB000400800200008285000405004000000B9 +S315E076AFC070208080002004100800080008402428BD +S315E076AFD040006000C44004004800000800044814BD +S315E076AFE060004020580440002860800840002840F1 +S315E076AFF000480000800040481020C004802440507D +S315E076B000004000C020680010041000000000101018 +S315E076B0100000600040480000402400000028004020 +S315E076B020A8004000004800100020014008400014C7 +S315E076B03020205000006000C00000001040408800EC +S315E076B040C010C020400000408000002084C0000090 +S315E076B05000000000000000600000E02000A0000094 +S315E076B06060000090008000400840200810000080D4 +S315E076B07000A00040004000004080408800008080CC +S315E076B0800000008050408080620010004020400042 +S315E076B090406000C0000020300020000040004040C4 +S315E076B0A0A000004020000840A0400000C00000401C +S315E076B0B0200020E00000C08000208020002040C0F4 +S315E076B0C00800004000008080080000800000004014 +S315E076B0D000CA6400000030000000000000000000B6 +S315E076B0E00800000000000000040040200000400058 +S315E076B0F04020000000400000000004100000002020 +S315E076B100084000000000000000000000400000005B +S315E076B110004040000010201080000020080020400B +S315E076B120000000000040000004000000000000007F +S315E076B13030000000100400202000006400002004A7 +S315E076B14000008000000000A02800004000000040DB +S315E076B1504010400000080400044000002010000083 +S315E076B1602008800000002000004000000000000873 +S315E076B17004000080000000004000000020400060EF +S315E076B1801000002000008000000000004000001063 +S315E076B190400000000000000800C00000000040000B +S315E076B1A08000000000000000000000300000400053 +S315E076B1B00000004000002040000040002000000033 +S315E076B1C0000000A000000000000000000000000083 +S315E076B1D0000040A090200080000000200010004093 +S315E076B1E0006000000800402000000000000020001B +S315E076B1F0000000008800001000000000100020002B +S315E076B200000000000008000040000000008000001A +S315E076B210000020000000400020C000000000000092 +S315E076B220000000008000084000000000400000803A +S315E076B2300020A00000000000C00000200000000012 +S315E076B24008000000800000004800D70B00000000F0 +S315E076B2500000200040000000000000000000000032 +S315E076B2600000000000000000000080000000000002 +S315E076B2700000000000005000100000400060000072 +S315E076B280400000000000000028200000000040009A +S315E076B2900000240008200000800000B04000100086 +S315E076B2A04000084000000080084000400000400072 +S315E076B2B00000400080800000000420080020004066 +S315E076B2C0000000002000400400008800000000082E +S315E076B2D0400020000000004000000000204800000A +S315E076B2E00000000000008000004018402008040CB2 +S315E076B2F00000000040008008000400000000000026 +S315E076B3000080002000000000480000201400004085 +S315E076B3100000000000000000000010200080000021 +S315E076B32000A0004000000000280000000000400871 +S315E076B3301000000000400000008040000000008021 +S315E076B3404000000000000000000040000000000021 +S315E076B35000A0000000000000000000402000000091 +S315E076B3600000802000000040004000C000000000A1 +S315E076B37000008000000040800040A0001000000041 +S315E076B38000000000000040002000200000000000E1 +S315E076B390000000000008A00000C0000000400000A9 +S315E076B3A00020000000A000000080000000000040C1 +S315E076B3B02008000000408800C80000000000000079 +S315E076B3C000000009A50010000040000400004000DF +S315E076B3D0004040000000401070006002000000006F +S315E076B3E000200000002000000000000000000000C1 +S315E076B3F000000000001000000000004000000000A1 +S315E076B4000000000000000000004040000000400020 +S315E076B41000080400000008000000800000084020D4 +S315E076B4202000080000000000000010000000000088 +S315E076B43000000810000000080004004000080084C0 +S315E076B44000000000080080000020108000404008E0 +S315E076B450000400004000002008000000480040009C +S315E076B4600040000000000080006010000000000050 +S315E076B4700000800010000020001010000040100050 +S315E076B48000000000000800002000200840000000D0 +S315E076B490000C402000010048400000140000000047 +S315E076B4A00000C00000801000800040800090000020 +S315E076B4B0000000000050208400200000000000001C +S315E076B4C00000002000000000200040000000C000E0 +S315E076B4D000800800000010000000000080004000B8 +S315E076B4E08008000000000000008000400000800038 +S315E076B4F04000000200000040C02000082040000026 +S315E076B500000010000000400000000000000040004F +S315E076B51008003000400000000000400000600000B7 +S315E076B52040000040000040200000000000000000DF +S315E076B530000080004000400000000000F3CE0000EE +S315E076B54000000000000040100000001400005000EB +S315E076B5500000140000004004000014005000004093 +S315E076B56000100400000014000040004004100000C3 +S315E076B5702000004004000000244000104004000053 +S315E076B5800000100000000008000C00700020081093 +S315E076B590004000000000000000040008040020805F +S315E076B5A000402000004000000000200010802000CF +S315E076B5B0000090000000201000100000004000809F +S315E076B5C0000400000020000040100000000010009B +S315E076B5D04000001000000000040000000000004873 +S315E076B5E000000000001800800010000080000000D7 +S315E076B5F00000080000005000400000080008000047 +S315E076B600000000000000080008000080000020002E +S315E076B610000040800010001000000040000000109E +S315E076B620000000000010202000100040001000000E +S315E076B63000100000001000004000101080400080EE +S315E076B640101000000000000000000000001000006E +S315E076B650000010000040000010001040001000408E +S315E076B66000000000004080900040000000000000EE +S315E076B670000000400040000080000000000000402E +S315E076B680000000000080000020000040000000007E +S315E076B690400000000080004000004040800000004E +S315E076B6A000000800400020008000800000000800CE +S315E076B6B0000008002034AC00000000001000000016 +S315E076B6C0000020000000000040000000002020007E +S315E076B6D04000000000041000000060000400000056 +S315E076B6E00400001000200040400404000000001032 +S315E076B6F0000000002000000000040000004000008A +S315E076B7002000104000004000000000000000000429 +S315E076B710400040000010001408548000000000103D +S315E076B7200090009000801000140000040000400CA9 +S315E076B73000400000000000004008000800201000ED +S315E076B740040000800050000400100008000080002D +S315E076B75008004C00040000000000500404000000DD +S315E076B760081000400400000000000020000080047D +S315E076B77028008800000000000008800000600000D5 +S315E076B7806000002000608008C000000000000040F5 +S315E076B79000400040000000400040100000C000403D +S315E076B7A0000000800080000000000000000000003D +S315E076B7B0000000000000000020400000004000008D +S315E076B7C000C0000000C0004000000000000000005D +S315E076B7D0000040000000004000000000000000008D +S315E076B7E000000000001000000000008000000080ED +S315E076B7F0000040800000008000000000000000406D +S315E076B800800000000000000000000000000000005C +S315E076B81000800000000000000000800000000000CC +S315E076B820000000002000800008008000088034E0F8 +S315E076B8300004004000000010000000000000400018 +S315E076B84010100000100000201410000040004000A8 +S315E076B85000005000000400000000400000140004E0 +S315E076B8600000100000000004004000040000000024 +S315E076B87000401000000000000400000040000000D8 +S315E076B88050000400200400001000001000000008BC +S315E076B89000000040100400000000100000000040A8 +S315E076B8A00000002000000000000440000004800054 +S315E076B8B000040000A000000840500010000CC0C054 +S315E076B8C02000000000400C0010500008801000C0F8 +S315E076B8D0085000008080000400000080008410009C +S315E076B8E00000608400880008000000400000000048 +S315E076B8F010000040000000400010004000100040BC +S315E076B900000000000040000000000010000020006B +S315E076B910100000000000004000C0000000000000BB +S315E076B92008004000000080004080000000000080B3 +S315E076B93000000000008000004000001000000000DB +S315E076B940004000800080000000000000000010004B +S315E076B95000000000800000000000000000000040CB +S315E076B960004000000000000000000000000000003B +S315E076B9700000804080C0004000000020000000C04B +S315E076B9800000000000008080000000008000004893 +S315E076B99080000000200080000000000800800000A3 +S315E076B9A000000000000020ACD1000010000000008E +S315E076B9B0000000004000000000002040000010007B +S315E076B9C0000040000000000000400020000010006B +S315E076B9D000100000000000000000000000000020DB +S315E076B9E0000000000040000030000000000000008B +S315E076B9F000084004200000000000480008004028C7 +S315E076BA000020040000080000000000080000C800DE +S315E076BA10000000000080000000000080000008843E +S315E076BA2018000000000000000000000000C41800C6 +S315E076BA30800000004000000000100860204800000A +S315E076BA40004000000000000800000020000008101A +S315E076BA5040800000000400009000000040000000F6 +S315E076BA60000000081000000000004000000800001A +S315E076BA7000000008000800008000000000000000DA +S315E076BA80000000000000000000000000000000005A +S315E076BA9000000000000010000000008000000000BA +S315E076BAA0000010004000000020001000400040003A +S315E076BAB0000010004000000000000000400010008A +S315E076BAC0008000008000000000000000004000409A +S315E076BAD0000000008000000000000000400000004A +S315E076BAE0000000000000200000400000000000009A +S315E076BAF000000000000000000000000000000040AA +S315E076BB0060000000000000000020008000000000D9 +S315E076BB100000000000000000000080000020000029 +S315E076BB2058D8000000000000100000500010000019 +S315E076BB30100000001000044000000400000000043D +S315E076BB4010400000001004002000000400004000D1 +S315E076BB500010000040100040000000006000000089 +S315E076BB604010004000000000401000400000080849 +S315E076BB7040002010001040000024481020002010DD +S315E076BB800000508000000000208044000000003075 +S315E076BB90008000200040000044400008000010804D +S315E076BBA0500000004000A0000000000800402000A1 +S315E076BBB00400000090000000000800000040002429 +S315E076BBC0000000000000440004800080600014104D +S315E076BBD000000000300020000000480000008800E9 +S315E076BBE00008000000000000800000000020000051 +S315E076BBF008000000000040100080000000001010F1 +S315E076BC000000000010000000100080000000000038 +S315E076BC100000000000000000800000000000000048 +S315E076BC200000000040000000000000000000C000B8 +S315E076BC30000000800000000010000000000000C058 +S315E076BC400000000000000000000000008000000018 +S315E076BC5000401000000080000000004000800000F8 +S315E076BC600000000000000000400000000000000038 +S315E076BC7020000000008000000000000000000000C8 +S315E076BC800000000000000880008000000000000050 +S315E076BC9000000800000028000022C40040000430BE +S315E076BCA04000004000000004000000400000004034 +S315E076BCB000000000200000000000100000100000E8 +S315E076BCC00040000000000010001000401000004028 +S315E076BCD02000000000000000000040000004041090 +S315E076BCE00020004000001000000010000040000434 +S315E076BCF00000100000000050000000000010040074 +S315E076BD00104000000000200080001000080010803F +S315E076BD1000000004001000000800800000081040D3 +S315E076BD201004004000000000000000000000001053 +S315E076BD300000000400080000000000049000000007 +S315E076BD4000400008000008000000004800000000FF +S315E076BD50000000800000000040004000000008007F +S315E076BD60080008002000000800002000009080000F +S315E076BD704000000040000000400040200000100037 +S315E076BD80C0001000800000000000000000100000F7 +S315E076BD90000000C0000000000000402000004000E7 +S315E076BDA00010500000C00000004040000000008017 +S315E076BDB00000000000000010000050004000004047 +S315E076BDC01000000040000050000000000000004037 +S315E076BDD00000000000000000000000000040008047 +S315E076BDE00000000000000000004000000000002097 +S315E076BDF0000000000000400000400008000000005F +S315E076BE0000080000400000A80000000000000000E6 +S315E076BE100048321E000000400000000000000040AE +S315E076BE20000000000000000000000400001004009E +S315E076BE300000000000000020001000000000100066 +S315E076BE4004400000240004200014005000040000A2 +S315E076BE50000000000400200040001008000000000A +S315E076BE60000010080000000000000400000000005A +S315E076BE70040C00040020008010000000000000089A +S315E076BE800000000000C00404000018000000000076 +S315E076BE900000000020800408002800102000000042 +S315E076BEA00000008004080000000010000000001486 +S315E076BEB0008008100000001008280010000000003E +S315E076BEC00000008000008000000000000000000016 +S315E076BED00088000000080000000000000000000076 +S315E076BEE00000800000000000000000004010000026 +S315E076BEF04000000000000000000000000000208006 +S315E076BF000000000000000000000050000080008085 +S315E076BF100010000000002000000000000000000095 +S315E076BF2000000000000000000000000000000000B5 +S315E076BF308000000000000000000000C00000000065 +S315E076BF400000000000000000000000000000000095 +S315E076BF500000000000000000000000000000000085 +S315E076BF600000000000004040000040000000C000F5 +S315E076BF700000800000400000000000000000800025 +S315E076BF8000000000000008000000004418001004DD +S315E076BF900010004000200000000000400000000095 +S315E076BFA000000000004000000400002000000000D1 +S315E076BFB000000000400040000000000000000000A5 +S315E076BFC02000000000400000000000200000001085 +S315E076BFD000000000040004200000080004000020B1 +S315E076BFE0000000080040400000000000002000400D +S315E076BFF02400140804000080100000004028004069 +S315E076C00000200040000000000000100000800000E4 +S315E076C01000000000000000000080001840002000CC +S315E076C020008000000018000010000040000800883C +S315E076C03088004000400010000800000010008800EC +S315E076C0400800080000008000000000000000000004 +S315E076C050801000800000000000000800000808005C +S315E076C0608000000000800000000000100010002034 +S315E076C0700000001020000000000000800000008034 +S315E076C0800010001000000000108000800010008094 +S315E076C0900000008000000010000000000000005064 +S315E076C0A00000800000800000000090000080000024 +S315E076C0B000804000001000000090001000900080A4 +S315E076C0C00000000040000040000020000000000074 +S315E076C0D00000008000000000000000000000000084 +S315E076C0E00000000000000000002000000080000054 +S315E076C0F000010000000000000000000000000020C3 +S315E076C1000000000066850000808000000000104098 +S315E076C110000010002000040000000040040000004B +S315E076C120000040000000000000000000000400204F +S315E076C13000000000000020200040040000200400FB +S315E076C14000000000006000000040000000004000B3 +S315E076C15000200000200000000800080010000024FF +S315E076C1600000080040004804200800A00090200067 +S315E076C17000000028000000200000000010001000FB +S315E076C1800020400040400000000000000000000073 +S315E076C1901000000080200000840050000800400077 +S315E076C1A000008000000040000000009000000008DB +S315E076C1B040800000000400000000808060000000FF +S315E076C1C040000000800000004000000840000000CB +S315E076C1D040000000600000000000008000100000D3 +S315E076C1E00000000000000000000000000080000073 +S315E076C1F00000000000000000000000000000800063 +S315E076C20000000000000000000000000000000000D2 +S315E076C2100080000000000000000000000000000042 +S315E076C22010400000000000108000000000000000D2 +S315E076C23040000000000000400000000000008000A2 +S315E076C2400000000000008080004000000000000052 +S315E076C25000000000004000000000400000400000C2 +S315E076C260008000000040000000000000080080002A +S315E076C27000000000400000400000010100DEB00052 +S315E076C28004004000401010000000403040041000EA +S315E076C29060001004040000204400000044100050C2 +S315E076C2A0200050041004004400440050000450245A +S315E076C2B0000400600440003044000004300004309E +S315E076C2C0000410000000080460085420007068003E +S315E076C2D00010400040100044006050001804400C06 +S315E076C2E0A000204004A050801080902080204090CE +S315E076C2F000B01084904C0C600004001040040040BE +S315E076C3004880044828009040000040805000A40011 +S315E076C310B84030400000000810009040140000401D +S315E076C320B0004890440014C04880904804000090DD +S315E076C3308008240800080800284000880080000865 +S315E076C3400800080080200800000800280860A80099 +S315E076C3500040000000C04000100050000040400061 +S315E076C360300000108050408000E0000000C00018E9 +S315E076C3700000100080000080804080500080000041 +S315E076C3804080005040800000C000008040001040B1 +S315E076C39040008000009000800010904000901000F1 +S315E076C3A0C000004000001040409010C010004000F1 +S315E076C3B0008000C0400040000000008000200000C1 +S315E076C3C08040000000C08040802000000040008071 +S315E076C3D040000000004040000040208000C0088019 +S315E076C3E000008008C8000080800088000080800811 +S315E076C3F0088080282880BB8C00401004600050506E +S315E076C4000010004000005000500010401404000078 +S315E076C41064240000404020004000000024300010F4 +S315E076C4200454000050040004205420106410601078 +S315E076C4300400400040204004400064104450001060 +S315E076C44040244018003840106C10481800040874F0 +S315E076C450005400402804082804906C0C40944884E4 +S315E076C46010100000288810708004003440180018F8 +S315E076C47044100020100800A000C8004428281400C4 +S315E076C4800800181040900804D0B840801058000094 +S315E076C4901040080CD0AC00081458008054208C5814 +S315E076C4A080A810008C90048044802020C820084024 +S315E076C4B0880000C800408008100800C800000040E8 +S315E076C4C00018206008002068000000C000104000D8 +S315E076C4D04010404010004000400000001000402030 +S315E076C4E0C020808000008000001080001010C00020 +S315E076C4F080800080100090005000C0004010C000A0 +S315E076C50040804040804000000040100000900000EF +S315E076C510800010900000D00090500040800050C01F +S315E076C520000000108000100080400000400000808F +S315E076C53040400000002000800000804000408000FF +S315E076C540400000200000004000400040800040802F +S315E076C55040408000800000400800400108880000E6 +S315E076C56080804000880000000808400028482021A6 +S315E076C5707000000000141070600004000010105087 +S315E076C580400000041430304040000004043030406F +S315E076C59040000000443030000040000414747040DF +S315E076C5A0000004044470701000000004006060002F +S315E076C5B0000004141460600000000C1C1860600033 +S315E076C5C0040020181854402004040438384040000B +S315E076C5D004041C3C38D8C0000C040030308080005F +S315E076C5E008080C7470A00000040C08507010808067 +S315E076C5F010080C6060000080001C3870E0000000D7 +S315E076C600041C1CE8C04004000818584CC00004041A +S315E076C610043858C8C0000404103838D080000C04BA +S315E076C6204410208080400008086840C080000008FA +S315E076C63008484040800010084848604000000808F6 +S315E076C64068E0C0000000001050D0404000002010A6 +S315E076C650505000200000101070C0800000000010DE +S315E076C66010808000000040101080804000000010AE +S315E076C67070C080000000405050D080000000C0407E +S315E076C680405000000010108080000000001010C0BE +S315E076C690C0000000001050C0C0000000001010C0BE +S315E076C6A0C0000000000000C0C0000000400020A0EE +S315E076C6B0804000000040408080000000202040005E +S315E076C6C000000000804040400080000000C0C000CE +S315E076C6D00000000808C0C0000000200008C0C000C6 +S315E076C6E00000002828E0C0009A3B000000000030F9 +S315E076C6F030602000002000100440600404203040C2 +S315E076C70020000000002424202001000800202130AB +S315E076C7103800000000343440600000040460001005 +S315E076C7205002001004800200100080040424642085 +S315E076C7302000001C1410104040000008001018007D +S315E076C7400004040C2C6068404004041C14A08801A4 +S315E076C7508004046021808800C000084C0C8080004C +S315E076C760000C041818606082800808A02A40500001 +S315E076C7700014144848A0A000001404F474C0C00065 +S315E076C780003810404880A00404242CC0C080C00441 +S315E076C790042830F0F08180040404059098808000C7 +S315E076C7A0002038505000800800080040508280080B +S315E076C7B000C842607000800008F8F08080000000D3 +S315E076C7C000D04040400400000050540000000010C5 +S315E076C7D010E0600000000010100000010008001074 +S315E076C7E0018008000000001000D0C0000000005074 +S315E076C7F050504002001000404240400080100090C9 +S315E076C80010000000001010505040400400301040F8 +S315E076C81054002000000000101040400000000000A8 +S315E076C8204041C0080000010008000000000000C09A +S315E076C830C080000000000020200200100000426068 +S315E076C8407000000000406020A00000000040C0407C +S315E076C8506004000000C8CCC0600000002060C040E4 +S315E076C860402BF7000000000020202020000000008A +S315E076C870404040000404202060400000000024246C +S315E076C88020600000000000203030000000043430E4 +S315E076C8902040000000040440001000000000000084 +S315E076C8A0001000000414242420200000101C082028 +S315E076C8B04040000000001010400000040C0C786840 +S315E076C8C0404000040C0098A880000004203090A038 +S315E076C8D0000008000C4880800000040408187060A8 +S315E076C8E000800808A868404000001C1C4848A0A0C4 +S315E076C8F0000010146464C0C00000101040400000D0 +S315E076C9000004242CC040400000043820E0E8808013 +S315E076C9100004040410108080000830604040000077 +S315E076C92000001810504000000000404060600000B3 +S315E076C93010104068C08000001010405040000000A3 +S315E076C940000000400000000000006060000000008B +S315E076C95000000000000000001010000080000000DB +S315E076C960001070000000000000404000000000006B +S315E076C970004040400000001010100000000010104B +S315E076C980505000000000101010400000000000102B +S315E076C99000104040000000004000C040000000006B +S315E076C9A0000080000000000040C0008000002020EB +S315E076C9B0202000000000602040000000000060C0FB +S315E076C9C0800000000000E060604000000000C8489B +S315E076C9D040C000002000C0404040862800000000AD +S315E076C9E000707020200000000010000000040400B3 +S315E076C9F010602040400000242420300040000000F3 +S315E076CA00203020000000003434302000000404009A +S315E076CA1000101000000004400040000000040034DE +S315E076CA203420200000101C1010404000000000501A +S315E076CA3010000004040C0C606840400404140028DE +S315E076CA40000000000430309090000008005C0C8016 +S315E076CA509000000C00080860600000080820284076 +S315E076CA6040000004145848A0A00000141434248032 +S315E076CA708000000000000080800404242C40000042 +S315E076CA80C00404283028F000000404040400808002 +S315E076CA908000083820008000000008181810008012 +S315E076CAA08008000000202000001010A8A0808000FA +S315E076CAB000000050004040000000004050000000BA +S315E076CAC0001010602000000000000000000000006A +S315E076CAD00000000000000000000000D0C00000006A +S315E076CAE000404050500000000040400040000010FA +S315E076CAF000909000000000000050404000000010DA +S315E076CB001040100000000010105050404000000029 +S315E076CB1000808080800000000080800000000000B9 +S315E076CB2000C0C00000000000000000000000002009 +S315E076CB3060004000000000604000C0000000006039 +S315E076CB406020000100000040404040000000206088 +S315E076CB5040C0C08D50000000040420602020000014 +S315E076CB600010004000000404000050504000000031 +S315E076CB702424302000000000000020200000000081 +S315E076CB803430001000000000044000000000000091 +S315E076CB900000000000000000242420200000181485 +S315E076CBA000004040000000081810000000001C1C41 +S315E076CBB0606040400000040010C0C00000043030E1 +S315E076CBC08080000000080838908000000000081891 +S315E076CBD07060000008082020404000001C0C4848A1 +S315E076CBE0A0A000000000343CC0C000000008485019 +S315E076CBF000000000343C4840400000002820E02851 +S315E076CC000000000004140000808008082070D050F0 +S315E076CC1000000000000040500000000040406060E8 +S315E076CC2000000800505880800000101000000000D8 +S315E076CC300000100000000000000000002020000048 +S315E076CC4000000000101000000000100010108000B8 +S315E076CC500000101010000000000000001000000038 +S315E076CC6000000000404000000010101000000000B8 +S315E076CC700010405000000000101010400000000048 +S315E076CC80000040504040000000008080C0C00000B8 +S315E076CC9000008080808000004000C08000000000B8 +S315E076CCA00000400000000000400060200000000028 +S315E076CCB040E0A02000000000404000200000000098 +S315E076CCC040404040000020004040404037E90000C8 +S315E076CCD000800000100000000000000000404000E8 +S315E076CCE000202440600000040014040000000000E8 +S315E076CCF000202410100000000014144060000004A8 +S315E076CD000040401000000000000000000000000433 +S315E076CD10000000000000000404001040400000001F +S315E076CD200048500000040004044048400004001423 +S315E076CD30140808404004040000909000000808506B +S315E076CD40048000000004001010404080800000005F +S315E076CD500C406000001818603080C000001C087037 +S315E076CD6070000000001018080080C004000808C0B3 +S315E076CD708080C00400001010188080040000000057 +S315E076CD8020808000081000000000000000181800DF +S315E076CD9000808008000000202000001810A00080A7 +S315E076CDA08000001010500000400000000050100097 +S315E076CDB00000001010602000800000101080808057 +S315E076CDC08000001000000000000000100080E08087 +S315E076CDD0800000501090C000000000400000400047 +S315E076CDE00000008000808000000000505000C00007 +S315E076CDF0000000C0C0400000000000909040800037 +S315E076CE000000000000400000000000202000000046 +S315E076CE10000000C0C08000000000000000000000B6 +S315E076CE2000206040400000000060000080000008BE +S315E076CE300820A8404000000000000080000000289E +S315E076CE400000880000D6D600000000001010000032 +S315E076CE5000000000004040400000202060400000D6 +S315E076CE60000004140000000000000020101000000E +S315E076CE70000014042040000000044040001000004A +S315E076CE800000000000200000000000000000000026 +S315E076CE9000000040004000000000504040000004E2 +S315E076CEA0040450504040000410000828404000003A +S315E076CEB00000B0A0000008080450D0900000000002 +S315E076CEC04010004000800000000040400000080866 +S315E076CED0606080800000080C206040400000100012 +S315E076CEE04040C08000040000C040C08000041000CE +S315E076CEF0C8D800800004000000008000080808100A +S315E076CF0040400000000040404040000000004040C5 +S315E076CF106060000000004060C08000000000001005 +S315E076CF2040000000000000500000000010002020C5 +S315E076CF308000000000008080808000000010000005 +S315E076CF40000000000010F080808000000040C09075 +S315E076CF500000000000404040000000000080808035 +S315E076CF600000000050408000000000008080004015 +S315E076CF70000000108090C0400000000000000040F5 +S315E076CF80000000002020000000000000C0C0008005 +S315E076CF9000002020000000000000400000000000B5 +S315E076CFA00000006080000000080880004040000035 +S315E076CFB000000000008000000020800000007F5224 +S315E076CFC00000800000401000000000000010000025 +S315E076CFD0000000001060604040000004040010008D +S315E076CFE000000000200000000000004000706000B5 +S315E076CFF00000000000200000000000202010000065 +S315E076D00000040000000000000000041010604000FC +S315E076D01000000040400000000004044008400000A4 +S315E076D020001C3000104040000400009090000000A4 +S315E076D030005000A0A0000004001010405080800050 +S315E076D04000000C0000000018181010008000001890 +S315E076D0501830200000000000000000000000000804 +S315E076D06008400000C000000010181800000000001C +S315E076D07000101080800008101000000000000018F4 +S315E076D08018100080000000080000200000101080D4 +S315E076D09080800000001010500000000000000010B4 +S315E076D0A010000000000010703000800000000000E4 +S315E076D0B00000000000000000000000000000000014 +S315E076D0C000000000000000101000000000000010D4 +S315E076D0D04000000000808000000000000050000064 +S315E076D0E08000000000000000000000101000100034 +S315E076D0F08000000000000000000000000000000054 +S315E076D1000000000000C0C000000000000020200003 +S315E076D1100000002060008000000000606000800073 +S315E076D1200000002020200000000000000000000043 +S315E076D13000200020008080C3D70000000010004069 +S315E076D140000000000004006000000000000050507F +S315E076D15040400000040000000000000110080000D6 +S315E076D1600000000000000040000000005050002063 +S315E076D1700000000220301080000000000000004031 +S315E076D1800000000000004040000000144068000007 +S315E076D19000000400101040400000180010004040E7 +S315E076D1A0000100008040000000000050F0A0000082 +S315E076D1B000000010104000800002000000800000B1 +S315E076D1C008084040808000000808201040400000B3 +S315E076D1D018044078000000001010504080000000EF +S315E076D1E01000C81800000001000010508080080882 +S315E076D1F010185050000000005050405000000002D9 +S315E076D200404040C00000101850508080000000007A +S315E076D210001000000000000400300000000010005E +S315E076D2203010808000000000101000000001000041 +S315E076D23010508000000000001000000000000000A2 +S315E076D2401010008000020010D0C000000000808040 +S315E076D250000000000010C0408000000000040020BE +S315E076D26000C0000000000000800000000000000022 +S315E076D2700040000100080040000000000000C0C049 +S315E076D280000000000000202000000002203020A0F0 +S315E076D2900000000020E0A0A000000000202000A012 +S315E076D2A000000004000000000000002000000000FE +S315E076D2B00F5100000004000050404000000014507A +S315E076D2C020000000001400000000000004040000C6 +S315E076D2D000404000010408000040000004004000E1 +S315E076D2E040000000042040002000000002401020AC +S315E076D2F0C0000004100050000000000400482840FA +S315E076D3002000001004046020400004043000000091 +S315E076D31040000020143000408000051000A8400050 +S315E076D320000000244060100000000C104050000021 +S315E076D330000002440050A08000100000604000002B +S315E076D3400004182048004000000004143020400015 +S315E076D3500400105800400000041000500000000061 +S315E076D36005100028D0400000001008C0100000002C +S315E076D37000104000100080080A400010C00000004F +S315E076D3801090400040000000000050400000000091 +S315E076D390041070200000001000006000800000009D +S315E076D3A00000000000000100008840408000000098 +S315E076D3B0004030000000004000400000000002001F +S315E076D3C05000C00000001080000000000000004021 +S315E076D3D0000000000000041020204000000000005D +S315E076D3E00000000000000000404000000100080058 +S315E076D3F060408000004000400000000000002040D1 +S315E076D400200000000220500020800000002080C02E +S315E076D4102000000008200880200000000400882014 +S315E076D420000000080000280000F4FA000000001072 +S315E076D430000000000000000400404000000000000C +S315E076D4401040400000000010104040000001001837 +S315E076D450004000000000000010000000000004100C +S315E076D46060000000000600700080000000000040CA +S315E076D470400000000008180000000000000C0820BC +S315E076D4800000000000001040000000040008008064 +S315E076D49000000001000810408000000000102080A7 +S315E076D4A00000000800004000800000020010408086 +S315E076D4B000000008100080000000000018800000E0 +S315E076D4C00000001C086080000000001808808000DC +S315E076D4D000000008008080000001000820408000FF +S315E076D4E00000004000808000000808004000000050 +S315E076D4F0000A08102080000000080820800000005E +S315E076D500000000800000000000140020000000000B +S315E076D510000010808000000000101000000000017E +S315E076D5200008104000000000000000000000000047 +S315E076D530001000008000000200100080000000006D +S315E076D54000000000000000100080400000000004AB +S315E076D55000608000000000100040400000000000FF +S315E076D5600040800000010008004000000000004016 +S315E076D570008000000000000040000000000200107D +S315E076D58040800000000000408000000000080000B7 +S315E076D59000000000000408200000000000080000FB +S315E076D5A0000043F20000C3831C1C60601000030396 +S315E076D5B0181C40601010070738384040000007070F +S315E076D5C03838C0C000000607303880C001010E0E3C +S315E076D5D07070808041410E0E7070808001010C0E75 +S315E076D5E06070008003031C1CE0E0000803031C1C4B +S315E076D5F0E0E000080303181CC0E00808070738389F +S315E076D600C0C0081807073838C0C018000607303893 +S315E076D61080C801010E0E7070888801010E0E70705A +S315E076D620888811010C0E6070088803031C1CE0E004 +S315E076D630180803031C1CE0E008080303181CC0E086 +S315E076D640080807073838C0C0081807073838C0C052 +S315E076D65018000607303880C801010E0E707088888B +S315E076D66001010E0E7070888001010C0E60700888DC +S315E076D67003031C1CE0E0080003031C1CE0E010003A +S315E076D6800303181CC0E0101007073838C0C0000046 +S315E076D69007073838C0C008000607303880C0010171 +S315E076D6A00E0E7070808001010E0E70708080010122 +S315E076D6B00C0E6070008003031C1CE0E000000303A0 +S315E076D6C01C1CE0E000000303181CC0E0000007071E +S315E076D6D03838C0C0000007873838C0C000000687F3 +S315E076D6E0303880C001010E0E7070808001218E0E7A +S315E076D6F07070808001010C0E6070008003031C1C44 +S315E076D700E0E0000002821C1CE0E000000202181C49 +S315E076D710C0E0000086863838C1C1201FE50000608B +S315E076D720200010000000002000001000000020001D +S315E076D73000102000002020000000000000202000DD +S315E076D7400020000000202000000060040460000451 +S315E076D750044000000000000404000000000000041D +S315E076D760000000000000000C040000040800000839 +S315E076D7701800041008040000000004280004441889 +S315E076D78010000008200400000000080000000400F5 +S315E076D790200C8420200C04201008842020840400A9 +S315E076D7A0000C0800200814A000000820000C0800F1 +S315E076D7B060080820000808C0040028040008284409 +S315E076D7C004202004041810044428004400000000D5 +S315E076D7D0080020040C0060080020000808004000DD +S315E076D7E0000020000860400808000008086000088D +S315E076D7F0000000001040400000404000104040002D +S315E076D800000000100040400000400000084040085C +S315E076D81010000000000000001000004040000040CC +S315E076D820400000404000005040000040400000408C +S315E076D83000001040401000000000000000101000CC +S315E076D840000000400000000000000000001000002C +S315E076D850800000000000000080002000002000002C +S315E076D860000000000000008000200000800000003C +S315E076D8700000400000400000000000000000C0000C +S315E076D88000000000004040000000000000C0C0003C +S315E076D89020000000BC5900000000000000000000F7 +S315E076D8A00000080000000000000000000000001004 +S315E076D8B0000000000000000000000000000000000C +S315E076D8C000000000000000000000000000000000FC +S315E076D8D000000000000000000000000000000000EC +S315E076D8E0000080000000000000000000000000005C +S315E076D8F000000000002000000000000000000000AC +S315E076D900000000000040000050000000002000000B +S315E076D91000000000000000000000000000000000AB +S315E076D920000000000000000000000000400000005B +S315E076D930000000000000000000000000810000000A +S315E076D9400000000002000000000000000000000079 +S315E076D950000000000000000000000000000000006B +S315E076D960000000000000800000004000000000009B +S315E076D970000000000000000000000000000000004B +S315E076D9800000000400000000100000000010000017 +S315E076D990000000000020000000000000000000000B +S315E076D9A0000000000000000000000000000000001B +S315E076D9B0000000000000000000000000000000000B +S315E076D9C0000000004000000000400000000000007B +S315E076D9D0000000000000000000800000000000006B +S315E076D9E000000000000000000000000000000000DB +S315E076D9F000000000000020000000000000000000AB +S315E076DA0000000000001000000000000000273B0048 +S315E076DA10401000004000000040100010401000006A +S315E076DA2000400000005020040004001400001000BE +S315E076DA3004000004000000004400000040000440BA +S315E076DA404000008040040020004400000000000012 +S315E076DA5048000020200404080820304000044000F6 +S315E076DA6000080810000020001C40009410601000AA +S315E076DA70388040080834408400048020082000106E +S315E076DA80001C6010044010C4006450288060088052 +S315E076DA9000082040004014402000800018402810FE +S315E076DAA04C00800800600880401004800000100872 +S315E076DAB00000A810004038C00080308080048010D6 +S315E076DAC000900008005090084080208800081000FA +S315E076DAD008000008204000040008001800C000880E +S315E076DAE0400000103000001000801000004040102A +S315E076DAF00000000080002400008004400010002032 +S315E076DB00000020800010000000001800000000C031 +S315E076DB101000000050002080000020404000000009 +S315E076DB200040800000000000400090000000008089 +S315E076DB30000010C000500050000000001000000009 +S315E076DB4000000000004000A0000000000000001089 +S315E076DB500000000000C0800080402040008020C0A9 +S315E076DB60480000204020000000A0200000000000D1 +S315E076DB705000080080480000000008000000802081 +S315E076DB80008800A02000CBE00010000000004000F6 +S315E076DB904040001000004000000000000000000059 +S315E076DBA00004000000000000000400000000000011 +S315E076DBB00044000000000000000000001044004031 +S315E076DBC00004000000000000804000000000100025 +S315E076DBD00400282000000C00402000080000002009 +S315E076DBE00010040490700400102080004024100495 +S315E076DBF0C04004A000204000100010000040000065 +S315E076DC009000040410400000880800002040804020 +S315E076DC1000002040800010B0001008080000408028 +S315E076DC200000000480000010001000102000400084 +S315E076DC304820C00000448000000000004000C0009C +S315E076DC4088C000002008001000000000A0208000B8 +S315E076DC5008084040808000408000000000200000F8 +S315E076DC604081001400600040000000000080000063 +S315E076DC700400000004000000200000008000100090 +S315E076DC8000000020100000004000000000000000C8 +S315E076DC900000002000004000080010800000000030 +S315E076DCA00000003000000000000000108000401008 +S315E076DCB00000000000000000200000000080000068 +S315E076DCC080000000000000001020000000008000C8 +S315E076DCD00080400000008060001008000000000030 +S315E076DCE00000800080000000004010000800800000 +S315E076DCF00040000008000000008800008000000771 +S315E076DD0077000040000000000000001000000010E0 +S315E076DD10400040000000005024000000140000009F +S315E076DD2000100840000400000000000010004000EB +S315E076DD3040044000800000002000402000000050B3 +S315E076DD400000000800202044001800005000000083 +S315E076DD5000000800100000000000084020000000E7 +S315E076DD600000180000080800000000000000000C23 +S315E076DD7000000408007000044400304040A8A0008B +S315E076DD80102000000040000010041000000040085B +S315E076DD900800044080000020084040104020000043 +S315E076DDA0800800000884040094200000318000009A +S315E076DDB0D0208010000800101400000000880010C3 +S315E076DDC000088800020800400400000000184000C1 +S315E076DDD00800400008101080001000000000800067 +S315E076DDE00010800000100000200000800040001047 +S315E076DDF0000000000020000000000000000800009F +S315E076DE008000100000001040A040000050000000A6 +S315E076DE100010400000000000000000408000400056 +S315E076DE208000104000400010400000009000100096 +S315E076DE300040400040000040002000004000000026 +S315E076DE400040000000004000008000006000000016 +S315E076DE508000C000204000600080002020000000A6 +S315E076DE60400000800000004800002000000000002E +S315E076DE7000A00000002020886FCB000004000000A0 +S315E076DE8004004000000000400000000000000004AE +S315E076DE906000000000000000000040400040000006 +S315E076DEA0000000400008006000200000002000002E +S315E076DEB040200000000040000020000000600000E6 +S315E076DEC06000444000200800000040080000800022 +S315E076DED0000020000000480040200040000048088E +S315E076DEE000001080688020000890000020882000DE +S315E076DEF0000800201080400004108180000840046D +S315E076DF00088060048000880840C0000000001000A9 +S315E076DF10000000804040000000800000981020005D +S315E076DF2000482040000000080010808020000000B5 +S315E076DF300014C080100044081010000840008000ED +S315E076DF40002000080000408000000010004000003D +S315E076DF50008040000004004000004000C000000061 +S315E076DF600000800090000000401020800040900085 +S315E076DF7000200000800000100000000060C0000075 +S315E076DF8040C000000000C000000000000010000065 +S315E076DF904000808000800000408000000040004025 +S315E076DFA00080000000C00000409000000080008005 +S315E076DFB040400000C0A0000000800000000000C0E5 +S315E076DFC00080400000804000604080802000004075 +S315E076DFD02040000020400001A0D000002041002033 +S315E076DFE00000100000001000000000008000408075 +S315E076DFF00014FC0000202050400020000440005031 +S315E076E0000000100420402040000000480020204018 +S315E076E0100020200000000020200000202000006084 +S315E076E0200080440080000000000000400000000010 +S315E076E03000000040000000000000002000004000E4 +S315E076E0400800000000404000400000004800000064 +S315E076E050000000008800A00020C0C0080000400054 +S315E076E060008000005008000090000010004020007C +S315E076E070C000201000000004806000002000004010 +S315E076E0800020000800006000280400800000000000 +S315E076E09000C020482040C00030009000008020403C +S315E076E0A0A00800000000008000200020000000901C +S315E076E0B080008020008000044000C0100000000050 +S315E076E0C00440800040800080100000005000204030 +S315E076E0D00084900000004000004000404000400090 +S315E076E0E0800000C000000000800084000000800010 +S315E076E0F0200004408000000000000000C0200018E8 +S315E076E10000000000800000000000400000004000B3 +S315E076E1100080400000808000800040000010001003 +S315E076E1200000000000004000000000000000000053 +S315E076E13000400000004000000000000000400000C3 +S315E076E14000000000000000000000000000000080F3 +S315E076E150000000090000A0000040004000400000FA +S315E076E1600020000000208000000038CE000004E0A9 +S315E076E170004000006004404010400020102040003F +S315E076E18000042000400020200000202040000020EF +S315E076E190006000200060006800C0200004000020D7 +S315E076E1A00000006000000000400000200000004013 +S315E076E1B02020000460400000080800000048004087 +S315E076E1C00000000020000008400040002080082083 +S315E076E1D088088010880080E0000008801020180803 +S315E076E1E0201000081020000060C00021900000405A +S315E076E1F004A00C80400420C00060080800000000FF +S315E076E20020000C0080802040000040600850280006 +S315E076E210502010A85080402040200000900000005A +S315E076E220C0002090048010800000900090480000A6 +S315E076E230840040E010000800000044008010408032 +S315E076E24000100040801040000060044090400000DE +S315E076E25000004000005000004000C0900000805072 +S315E076E260008040240080000000201040000040003E +S315E076E270C040008040C0208850000000008000004A +S315E076E2800040000080000000004080408000800072 +S315E076E2908000200000000040800000009000000032 +S315E076E2A080C00000404080200000408000000000F2 +S315E076E2B000408000C0400000C000608000A0000002 +S315E076E2C00020004000200000C000A0984000200119 +S315E076E2D08020000040400010000020000000A000F2 +S315E076E2E00080004106000400100020002040600017 +S315E076E2F000000000100000101064600000000420AA +S315E076E3000040046020002044A00020002400402045 +S315E076E310004004804000600020000040600000205D +S315E076E32040000000400400402010304000000060CD +S315E076E33040A000008020084008404400400040208D +S315E076E3400000412008403000A00000108000100058 +S315E076E350000018A080000040000000000030004079 +S315E076E3601064800040204020004000741000400495 +S315E076E37088600020805040004008680000480080B1 +S315E076E3804004140080608C0014401840014400304C +S315E076E39000F0D004008004000000008040A4200055 +S315E076E3A00240902000C840002040088400400044A7 +S315E076E3B030000040800484408008708000100000C1 +S315E076E3C000400000400000000000A040900400C03D +S315E076E3D000400880004000000090800000001400B5 +S315E076E3E04080802080200040000008000080801079 +S315E076E3F0600040204000100000006000004004000D +S315E076E40070800000800000C0408000400080000000 +S315E076E410000000000000004000404000A04240803E +S315E076E4208000008000008000400080000040608030 +S315E076E4300020C0000040000000204000402000D0D0 +S315E076E44000802040002008E0004000400020804028 +S315E076E450C008400008208820000000087C2E0000D6 +S315E076E4608020002000000000000000000010000080 +S315E076E47000204440200000004000000020200000FC +S315E076E480600000000024000000000000204000004C +S315E076E49000000000000000000000000000004000E0 +S315E076E4A0000000040000000000000000000080008C +S315E076E4B040000000000000002000000000000000A0 +S315E076E4C00080002000008000000000002000800030 +S315E076E4D00080000000400000000000009020400030 +S315E076E4E00000002000000000404080000010008020 +S315E076E4F00000000000000000000000100020000090 +S315E076E50000000400000000002000004004800000C7 +S315E076E510000000000000000000000000800000001F +S315E076E5204000100480000004004000002000000057 +S315E076E530000000801010800000000000008000409F +S315E076E540000010000000800080000080000040009F +S315E076E550000000000000001004000040000000000B +S315E076E5600000804800000000000000402000000027 +S315E076E570000000002000000000000000000080405F +S315E076E58000008000008000000040000000004000AF +S315E076E590000000408000200000000000000000003F +S315E076E5A000000000800000804000008040000040CF +S315E076E5B0000000000000000000000000008000007F +S315E076E5C0400000800000000000000000002008A067 +S315E076E5D000002008008B520000200000004000403A +S315E076E5E020000000100000000850100000000040F7 +S315E076E5F00400000000400000000400000020000057 +S315E076E60020004000000000000040000000002040AE +S315E076E61000000040000000040040201000100000DA +S315E076E620400040000000002008000048004440001A +S315E076E630400000002000840060000020400000409A +S315E076E64000000000100840004000000000002000B6 +S315E076E650000000540000000020400800100450003E +S315E076E660000408200020440000400008200008004E +S315E076E67000C00044080080400400204000080040C6 +S315E076E680001070000820000000000000408000C006 +S315E076E69000A05000000000000000002008004000C6 +S315E076E6A040000030800004000004080060000000AE +S315E076E6B000004000000000000010000000E00010BE +S315E076E6C000000000080000000000C00000800000A6 +S315E076E6D0000000C02000800040000000000000A09E +S315E076E6E0100000400000000020108000400000008E +S315E076E6F0000000400080000080000000400000003E +S315E076E70000800000000000000020000000000040CD +S315E076E710008000808000000000C0004000004000DD +S315E076E72020000000000000000000002000406000AD +S315E076E7304000800000600020800040000000A000DD +S315E076E74000808008400000000000000000005EAA1D +S315E076E7500004004010000000200040000000400069 +S315E076E76000000000000000040000200040040000E5 +S315E076E77000000080200000000040000000048800D1 +S315E076E780002000200000400000200000000000008D +S315E076E790000000004000602008002000A0006040F5 +S315E076E7A0000000000000000000000000080140487C +S315E076E7B0001000000010000000100000208000002D +S315E076E7C0000000200000000090400000202000803D +S315E076E7D0000000004040000000000000000000005D +S315E076E7E08000000040400840000000000000040081 +S315E076E7F00080081000500001040040800010800080 +S315E076E800200400000000000024000002003000C072 +S315E076E8100800000040000000000000000000400014 +S315E076E82080806000C000000000000000000000402C +S315E076E83000000004400000040040004000000000B4 +S315E076E840200080100010008000000000008000208C +S315E076E850000000000000000000C00000200000007C +S315E076E86040400000080000004004002090000000D0 +S315E076E870400000400000000000004000000000007C +S315E076E88000004040000000820040000000000000EA +S315E076E89000000000000000000000002000000000FC +S315E076E8A0400000004000000000108000000080007C +S315E076E8B00028000000400000000040400000000014 +S315E076E8C0000800000000006700000000200000005D +S315E076E8D04000000040000000000000000400040054 +S315E076E8E00004004000004000004000000000000008 +S315E076E8F020000000000000000000204000440000F8 +S315E076E900000000000000000000000000004000204B +S315E076E91000600000000000000000400000004000BB +S315E076E9204000000000004000000800008040001033 +S315E076E93080001000000000000000800040000080AB +S315E076E940104000000010000080000000000000008B +S315E076E9500010A0000000A00000000000000000000B +S315E076E960800080000000B00000008000009020105B +S315E076E9701000400804000000000000080020900027 +S315E076E980400000002800040000005420C000048007 +S315E076E990001000200044000010000420000004204F +S315E076E9A01000000000400000140000008010800097 +S315E076E9B000000000040000040000000004000000EF +S315E076E9C00000000004000044000000402000100033 +S315E076E9D0004000500000000000000000000000004B +S315E076E9E000400010000000800000104000000000AB +S315E076E9F0000000000080000040000000800000007B +S315E076EA0000000000000000008040000000000000EA +S315E076EA10000000004020002000000000400000409A +S315E076EA20000000000000000000002000000000006A +S315E076EA30004000000040000028404080402840002A +S315E076EA400CD300000000001000000000000010105B +S315E076EA5000000000000000000040200000440000B6 +S315E076EA60000000400000000000000000000000000A +S315E076EA70000040000000000040000040000000007A +S315E076EA8000000000000000004000000008400000A2 +S315E076EA9000000000000000000000000000084000D2 +S315E076EAA0005000000000004000001000000000006A +S315E076EAB09800004000800820008000000400A82826 +S315E076EAC0006400200004200000802008000000108A +S315E076EAD008004000009040802000000000008000A2 +S315E076EAE0046000003000048008004080000000A04A +S315E076EAF000200C80200004402010240020008000B6 +S315E076EB000000400000200000088000004000000081 +S315E076EB1000000000800400001000A000E000002065 +S315E076EB200000000040004000000000008000000089 +S315E076EB300040000080400004000400001040000021 +S315E076EB400000401000000000000000000000404099 +S315E076EB50000000000000004000000040A0104040A9 +S315E076EB6010000000004090008000000000000010D9 +S315E076EB7000000000000000800000000000000000B9 +S315E076EB8000000000800000000000004000008000E9 +S315E076EB908000000000000020002000000000000059 +S315E076EBA00000004000400020000000000000000069 +S315E076EBB08000800000000101000C5F00100000007C +S315E076EBC00000000000100004004000000000000095 +S315E076EBD01060000000000000002000000000000049 +S315E076EBE00040000000000000204000000000000029 +S315E076EBF00000004000000000000000000000000079 +S315E076EC000000000000400800000800400000000018 +S315E076EC1000000000000000000800004080000000D0 +S315E076EC200880004010080040000000400000000028 +S315E076EC30000000001000000000400408000000809C +S315E076EC4000405000200000A0000000804000000058 +S315E076EC504000000400200000000090000008000854 +S315E076EC608000000000004000108080000000000078 +S315E076EC7000000000000000404000080000000C00A4 +S315E076EC8000000410100010000000040000401000A0 +S315E076EC9000808004000000000000400080008000D4 +S315E076ECA040000000000000000000000400000000C4 +S315E076ECB000000004040000000000000000000000F0 +S315E076ECC000800000000000000000008000100000D8 +S315E076ECD010008020000000000000500000000000D8 +S315E076ECE01000004000104000008010000000000098 +S315E076ECF00000804080000000004000000000000038 +S315E076ED004000000000000000000000000020000047 +S315E076ED100000000020000000200000000000004017 +S315E076ED20000000004000002860000000000000407F +S315E076ED30000005C30044000000000000200000004B +S315E076ED4000000004003000400000000000000000F3 +S315E076ED5000000000000040040024000000000004EB +S315E076ED600000000000000000000000000000004007 +S315E076ED7000000000000040000000000000000000F7 +S315E076ED800040000000000000000000000040004067 +S315E076ED900000000000400010000000000000800047 +S315E076EDA08000008000000000A00044200080000083 +S315E076EDB00000A400002000500010200000000000B3 +S315E076EDC00000202000008000200000004000004087 +S315E076EDD0000000000000041020040000801080008F +S315E076EDE080000420000018800000000080C010003B +S315E076EDF0008000800404000020004808000000003F +S315E076EE000080400000000080000000000000000066 +S315E076EE10008040800000000000000410000004043A +S315E076EE200040100000400400000000001000800062 +S315E076EE3000000000000080000000000000000000F6 +S315E076EE4000000000000000004000400000200000C6 +S315E076EE5080000000000000001000000000000000C6 +S315E076EE600000008000000040000000000000000086 +S315E076EE700000000000008000000000000020000096 +S315E076EE800000000000400040000000002000400046 +S315E076EE9000000000000000000000400000000000D6 +S315E076EEA0000800000000000000800014300000201A +S315E076EEB00020002020402000000000000000000036 +S315E076EEC00000000000404000000040000400000022 +S315E076EED00000000000000020000040000000600016 +S315E076EEE000000000000000000000000000000000C6 +S315E076EEF00000200000000000000040000000400016 +S315E076EF00080000000000000000000000000000801D +S315E076EF1000000080000000000000000000000040D5 +S315E076EF200000000000084080040000800000000039 +S315E076EF300000001000C410004080080000000000C9 +S315E076EF400400000020800000008000400080000081 +S315E076EF500000104030005000045000000000100021 +S315E076EF6000001000040000400000400400000000AD +S315E076EF7000000080000040001000008000000000E5 +S315E076EF8050040084140004004000000000100010D5 +S315E076EF90600000000040000000A0000000201000A5 +S315E076EFA000C0041000008000400000000000400031 +S315E076EFB000000000000040000000000000000000B5 +S315E076EFC00040000000800080001000000000001085 +S315E076EFD000000000000000000000000000000000D5 +S315E076EFE08000000000000000000000000000000045 +S315E076EFF00000000000000000200000000000000095 +S315E076F00000000000000000000000000000000000A4 +S315E076F0100000004000400000004000400040000054 +S315E076F020008000C0641F00000000000000000000C1 +S315E076F0304010040000001020000000100404202098 +S315E076F04000000000040020200004000000002000FC +S315E076F05000042004004000000000200004000000C8 +S315E076F06000000000000000000040000040002000A4 +S315E076F070480000000000000008000040004008401C +S315E076F080000000000000000000C0100000900000C4 +S315E076F0900000000000004000001020000000800024 +S315E076F0A004800800008020008000000000002080B8 +S315E076F0B00000008000000000001000008000448818 +S315E076F0C040004080006000880000002000000400D8 +S315E076F0D0000000000000008400802400C4102800B0 +S315E076F0E00020000800000000000804000440140830 +S315E076F0F08400403000000400440000001000200048 +S315E076F100100000800400000080000000800000000F +S315E076F110004000040000400000000000000000000F +S315E076F12004800400400000000040000000800000FB +S315E076F13000000000500000000000000000200040C3 +S315E076F14000400000000000004040000000000000A3 +S315E076F15040C0000000400000004000800040000013 +S315E076F1604000000040000000000000400000000083 +S315E076F17040000000000000000000000000004000B3 +S315E076F18000004000000000000000000000000000E3 +S315E076F190000000000000802000002000006F0B00D9 +S315E076F1A000000000000000000000004000000000C3 +S315E076F1B0000020400000001000040000000000007F +S315E076F1C000000000000000000000000020000020A3 +S315E076F1D0000040040000000000000000000000008F +S315E076F1E00040000000000840000000000000080033 +S315E076F1F000000000000000000000000800000000AB +S315E076F200000000000000000880000000001000000A +S315E076F210800800000088400028000000000000001A +S315E076F2200000004080000000000000001000C430BE +S315E076F230000000000800000000000000000000006A +S315E076F24000000440000800080000000020000000EE +S315E076F250200000102000400004000000000000447A +S315E076F260C0000040001008000000002804400000BE +S315E076F27000000000000000000040000000000000F2 +S315E076F280004000000000048040040000000000001A +S315E076F290008400000000000000000000000004404A +S315E076F2A00000000000004000000040000000000082 +S315E076F2B0100010000000000000000000C0000040D2 +S315E076F2C000008000C0004000001010004000000002 +S315E076F2D04080000040000080000000000000000052 +S315E076F2E000000000000040000000400000C0000082 +S315E076F2F000400000004000000040200000000000D2 +S315E076F3000000000000000000000000080100200078 +S315E076F310800100002000FB62000000000020000073 +S315E076F32000000000000044004000000400002000D9 +S315E076F33000000404400400400000000000002400C1 +S315E076F340000000000000040000000000200000003D +S315E076F35040004000000000000000000000000000D1 +S315E076F3600000000000000040000000000000000001 +S315E076F37000000000000040000000400008000000A9 +S315E076F3800000000080008000202000004000400061 +S315E076F39020204024400004000000000000600000C9 +S315E076F3A0000000000000000000001000800400006D +S315E076F3B000000000002800000000142080040020F1 +S315E076F3C000000080000004000004000800040080CD +S315E076F3D0000000000430000000000000000000009D +S315E076F3E00010000080100000088000000000000099 +S315E076F3F00080040000400080400004000000002009 +S315E076F40000800000000040000000408000004000E0 +S315E076F41000000020000010002000002000004000E0 +S315E076F4208000000000800050000000000000100020 +S315E076F43040100000000000000000000000005000D0 +S315E076F440004000000000C000000000000040000020 +S315E076F4500000000000000000000000000000000050 +S315E076F4604000008000000000000000000000000080 +S315E076F47000000040000000000040000000000000B0 +S315E076F480004000000000000000000080000000ED73 +S315E076F4906E000040000000000000403400000010DE +S315E076F4A00000000000200000100000000020200090 +S315E076F4B00000000000600000000000000020000070 +S315E076F4C0002000000000440000000000400000003C +S315E076F4D000000000000000000000000008000800C0 +S315E076F4E00000000040000000000000000000000878 +S315E076F4F00010000000004008000000400000000018 +S315E076F50080100000000000000800000000100840AF +S315E076F5104800000820000800000000000004000013 +S315E076F520080048804000400000005400000040009B +S315E076F530000000200000000000C820000000000067 +S315E076F54000C40000100000000000A00408C080009F +S315E076F55080008000800000600040000800240004FF +S315E076F56080000000C00000400040100090000000DF +S315E076F570002010000000440040800000800000007B +S315E076F580000000000000000000000000800004009B +S315E076F590000000000000800000000000000000008F +S315E076F5A0000000000010000000100000008010004F +S315E076F5B010000000000000000010000000101000AF +S315E076F5C09000C0000000000000008040400000008F +S315E076F5D0800000000000000000000020000000002F +S315E076F5E0000000000000002040000020002000001F +S315E076F5F0000000000000000000002000000000A8E7 +S315E076F60000006000000020003EFF0040140020006D +S315E076F610200000201040104410000000002000106A +S315E076F62004104400002000002400000000200000C2 +S315E076F6302020000000200420400060006060040482 +S315E076F640000000000000000000000000000040001E +S315E076F6506020000048080048004000400040000076 +S315E076F66040400000404000000840100080C0001096 +S315E076F67088800000000000180000C000008040E0AE +S315E076F6800420080080900C640088002000040020A6 +S315E076F690404020A8000004A0182048C000904040D2 +S315E076F6A0004080C4004080C024A0008814A00020DA +S315E076F6B00410C0080004C00004A00008240000C0BE +S315E076F6C02430C480642040C00000C05400402C80C2 +S315E076F6D00800CC500050A0001400146080400480EE +S315E076F6E014102414A00000C02040100010C000C4FE +S315E076F6F0008000008004004000000000C084000422 +S315E076F70000100010044080004000004080000000B9 +S315E076F7100000C010404000400000001000100000DD +S315E076F720004010200000805080500000501000808D +S315E076F7300000101040108090401040C0008040C01D +S315E076F74000804000400000000000008000000000DD +S315E076F750404000004020000020000000200000002D +S315E076F760400000002000202000000000000000009D +S315E076F7706040004000400860084000608000282035 +S315E076F780C05989004000000000000040401010009B +S315E076F7900050005000200040041000540024000081 +S315E076F7A00420600440200044002420000000200469 +S315E076F7B06004204020000044044040000000400001 +S315E076F7C000000000000040002000480000480000ED +S315E076F7D00840080040080008004000004000480065 +S315E076F7E04000401040800810008040104010000035 +S315E076F7F00010906008405000088000205C80502819 +S315E076F80004A0082080000040086034800010008064 +S315E076F8102810001440100054408C00A05000008060 +S315E076F820002810E00C100420248820DC40A0049008 +S315E076F83004A08400882000B4006408F44084842020 +S315E076F84050A4400480448C60205C0C00500404682C +S315E076F850004404080004840090400420001400006C +S315E076F860C00000500480A0004400004400048024D8 +S315E076F870041024000094C0000450000484006084E0 +S315E076F88004400004000020400000400000400040B4 +S315E076F890004040000010000010008000600000503C +S315E076F8A040100050500000D05080000050000040DC +S315E076F8B0409080504000804040000080C0000000CC +S315E076F8C00000000000000000004040000060C0201C +S315E076F8D000000000004040000060402000604000EC +S315E076F8E00000000000400000000000004000000834 +S315E076F8F04980800000A14000802054DD00000000B1 +S315E076F900101020600004000010105440000000043F +S315E076F91034304040000404042420404000000404CF +S315E076F920242000004000000424600000000000046B +S315E076F930604000000000000040000000000000008B +S315E076F940406000000008080840400000000808080B +S315E076F9504040000000000848404000000000109853 +S315E076F960C8C08000000010109880400000087870CB +S315E076F97080800008080C7870C08080000C88606013 +S315E076F980000080001890E0E0800000081818F0E0AB +S315E076F9900004000008D8C4C0E000000438B8C0C04F +S315E076F9A0000004043838D0C0000804043030808083 +S315E076F9B080000C0C7070808000040C44707080803F +S315E076F9C000180C8C6060100080001C1CE0E04000A3 +S315E076F9D000001414E0E0000400001010C0C08000BF +S315E076F9E004043430C0C000000404206040C0400007 +S315E076F9F0040400000080000004446060008000009B +S315E076FA00002060508000001000004040000080003A +S315E076FA10101040E04000000010D0C04040000000EA +S315E076FA201050C040000000001050C0C040000000FA +S315E076FA300040C0C0000000400000008040000000AA +S315E076FA40004040000000004060608000000000401A +S315E076FA5060604000000000006020000000000000CA +S315E076FA60606000000120000840C0200000002020F1 +S315E076FA70C0C1000DB7000000101010100040000065 +S315E076FA80301040004060000014141010404004042A +S315E076FA902404400041000C044425000800000000E0 +S315E076FAA004040040000000004444004002001000D8 +S315E076FAB0C002001000800000404060400000080868 +S315E076FAC04040400004002000080C002000000808B2 +S315E076FAD0000000000000000088C881800800400130 +S315E076FAE080100080000018309090808008081C1CFA +S315E076FAF040C082800400080E40500000180890B49A +S315E076FB00E0C0000000089414808000002808D8D869 +S315E076FB10C0C000042C28C0C0C0C004043C04A8E8D9 +S315E076FB20C1C00400541580B880C00C0C3828B0905B +S315E076FB30808004043034B0B002800800682A202041 +S315E076FB4000001C18BC3860E000001414A474A020F1 +S315E076FB5000003010905480A004043434B0B0000035 +S315E076FB60040430306060C1C00C005415100800C043 +S315E076FB700404342430208080000010409000020097 +S315E076FB80000080024050000010100000E0E0000027 +S315E076FB901010D050404004003010D0D440600000C1 +S315E076FBA01010D0D040C000000000C04041400800B0 +S315E076FBB00001000880800000000040400000000060 +S315E076FBC06040E0E002001000E062407000800000F5 +S315E076FBD06060202000000000202020200400000045 +S315E076FBE0080C808000002020E0200080CE84000093 +S315E076FBF000101010100000000000000000404000E9 +S315E076FC0000141410000040040404242020000004AC +S315E076FC1004240020000000000004002020000000FC +S315E076FC2000040440400000000000000000000000F0 +S315E076FC300000000000000008004048404000000850 +S315E076FC4008080800000000080800004000000000F0 +S315E076FC500080888080000000009080000000003000 +S315E076FC60181090000008000800C000808000000CA4 +S315E076FC7008004000000C0C9490C0C000000C049084 +S315E076FC80D0408000000808D8D8C0C004003C38D8F8 +S315E076FC90D8008000000C1428A8C0C0000010101010 +S315E076FCA08800000C0C4858909080800C0830301014 +S315E076FCB09000000000282000000000080838BC60AC +S315E076FCC06000000004500020A000001010500000F4 +S315E076FCD00004043030303040C0000420207070C01C +S315E076FCE0C0000404040010000004042030203080B4 +S315E076FCF08000004010401000000000000040400008 +S315E076FD00001010000060400000101090C0404000E7 +S315E076FD10001010105040400000101080D0400000D7 +S315E076FD200000000040404000000000000080000037 +S315E076FD300000004000000000000060606000000007 +S315E076FD400060606040000000004040202000000037 +S315E076FD5000202020200000000008080000000000B7 +S315E076FD6020604000008E4100000000000000404028 +S315E076FD7000001010505040400000000410100000C3 +S315E076FD8004002004404040400404042400000000BF +S315E076FD900000040400000000000064440040000017 +S315E076FDA000004000000000000000004040400000F7 +S315E076FDB00000400040400000080808084040000087 +S315E076FDC00808400000000000101080000080000067 +S315E076FDD0000080108080000010381050800000000F +S315E076FDE004005090008004004C48406000000C0C03 +S315E076FDF0D45040C000000C048000200000000808C3 +S315E076FE00D81800C004002C28800040400004140C6A +S315E076FE10B0B080800000040080908000080C18085E +S315E076FE2080C0800004043434C0E00000000C6868CA +S315E076FE30406000001818EC6880C000001414205466 +S315E076FE400000000010109090800004042020E0600E +S315E076FE50000004042424303080800404000400107A +S315E076FE60000004042030203000000000005010002E +S315E076FE700000000000004040000000004000A0A026 +S315E076FE800000101040000040000010104080404016 +S315E076FE9000001000C080004000000000400040C036 +S315E076FEA000000000000000000000000000400000B6 +S315E076FEB000006000C0C00000000040000060000066 +S315E076FEC00000602000000000000000400000000016 +S315E076FED000004808808000002020602000005FBF98 +S315E076FEE00000000000000000000000000010104056 +S315E076FEF04000000000504000000000002020200076 +S315E076FF00000404200000000000000000000020004D +S315E076FF1000000004044040000000000040000000BD +S315E076FF200000000000404000000008004800400065 +S315E076FF3000000008084040000008080008000000BD +S315E076FF400010108880C0C0000000000000000000AD +S315E076FF50007810109000000008004C1010808008A1 +S315E076FF6000486C404000000808D0D4C0C0000000CD +S315E076FF700804040020000008089898808000042C85 +S315E076FF8028989800000400041CB0B0808000000039 +S315E076FF90249080000008084818C0808080080830E1 +S315E076FFA030E0C00000040068686040000008086839 +S315E076FFB0E80000000000005020000000001010501D +S315E076FFC00000000404202060204040040430302005 +S315E076FFD060C00004041014100000000404302030E1 +S315E076FFE02000000000500040500000000000004075 +S315E076FFF04000000010000060200000101010404025 +S315E07700004000001010004040400000000080504063 +S315E077001000000000000040C0400000000000000043 +S315E077002000000000004000000000000060C0C00053 +S315E07700300000000000604000000000404000000043 +S315E077004000000000000000010000000808C0800002 +S315E077005000002060410100DE1F0000001010301024 +S315E0770060004000001000501000000000101430002F +S315E07700704040040000044000400000000004000017 +S315E07700800000000000040000000000004444000087 +S315E077009000000000404000000000000040404000C3 +S315E07700A00000080840404040000008084000000093 +S315E07700B000000000000000000000101088888080B3 +S315E07700C00000101080900080000028288000808053 +S315E07700D008081C1C40C080800404000440400000EF +S315E07700E010008080A080000018108888808000004B +S315E07700F00000C08080C000042024888880800404C3 +S315E07701001018989800800000141490900000000072 +S315E0770110301010908080080C0004B03000000000AA +S315E07701204000202000001000909020E000001000B2 +S315E07701303034A06000000000004080C00000141456 +S315E077014090900000040410101010808004000404DE +S315E0770150001000000404000000508080000020209A +S315E07701600010000000004040000000000000100092 +S315E0770170A0A000001010D0500040000010104050B2 +S315E0770180404000000000D0D04040000000004040F2 +S315E07701904040000000000000808000000000404002 +S315E07701A000000000606020A0000000006020206072 +S315E07701B00000000060402020000000002020202082 +S315E07701C00000000008088000000000202000404082 +S315E07701D050350000001010101040000000001000AD +S315E07701E04000000000101000000040000000000012 +S315E07701F040004000000400000000000000240020DA +S315E07702002000000000040400000000000000000069 +S315E07702100000000000404000000000080840404031 +S315E077022040000008080040000000000000000000E1 +S315E07702300000001010888880800000101090808081 +S315E07702400000002828008080800808080880008061 +S315E07702508004000400404000000404808080800031 +S315E077026000040C889800800000000080808080047D +S315E07702700030308080008000000008888880800029 +S315E0770280001010808000000000404090908080044D +S315E0770290000000109000000008000800000000044D +S315E07702A0109090202000000010000020A0000000B1 +S315E07702B000500080800000101090900080000400CD +S315E07702C0000040C080000404041000000004040429 +S315E07702D004100080800000202050000000000040DD +S315E07702E0000000000000000010602000001010C041 +S315E07702F0C04040000010105040404000000000C071 +S315E077030040404000000000404040400000000000D0 +S315E07703100080000000000040400000000000002060 +S315E077032020000000002020404000000000406020D0 +S315E07703302000000000202060200000000008080070 +S315E077034000000000000000000004590000000000F3 +S315E077035000004040000010005050000000002004EC +S315E07703601000404004000004404040400000000098 +S315E077037000000000000000000000000000004404D8 +S315E07703800040000000004040000000000000004010 +S315E07703904000000000000000404000000000000040 +S315E07703A00040000000000000000000001010908080 +S315E07703B080800000100000108080000020208020E0 +S315E07703C08000000000204040808004000400404028 +S315E07703D000001404808480800000040C3C2CA0800C +S315E07703E000000000C08080C00404002488888080F4 +S315E07703F00000181090908080000000009090000038 +S315E077040000041014C0C0808008080000C0A0000077 +S315E077041000044000502000001000808000C00000FB +S315E0770420100030148000000000000000800000001B +S315E07704300404C0400000040400001010808000002F +S315E077044000001010000004040010101000000000F7 +S315E0770450001000100000000040400000000000009F +S315E0770460000020A000001010C040004000001010EF +S315E07704704040004000001000C0C04040000000004F +S315E0770480404000400000000000008080000000004F +S315E0770490404000000000202000800000000040007F +S315E07704A0206000000000200000000000000000004F +S315E07704B00000000000000808A000000000206000AF +S315E07704C000000DF40000000000000040600000002E +S315E07704D014406000000000000000000040000000CB +S315E07704E00040404040000100080000000000002086 +S315E07704F00020200000000004004040000000024099 +S315E0770500500080000000004000004000000000003E +S315E077051000404000000004002000000000000000DA +S315E0770520000000000010108090808000010000003D +S315E0770530008080000060602080008000000000205E +S315E0770540008080000200044040000004048480803C +S315E07705508000000C04282800A00000000480A0801A +S315E0770560800404202090A00080000008008080802E +S315E0770570800001000080C0000000000000C080809D +S315E07705808000004000A0800000080204143080005C +S315E0770590000010808400000000001000200080003A +S315E07705A00000001020008000000404008000800036 +S315E07705B00014141050C0800001101810500000008D +S315E07705C004500010100000000010005000000000FA +S315E07705D0020010008000000010000060200000009C +S315E07705E010C0C0404000000014406040400000006A +S315E07705F000C0404040000000004040C0400001009D +S315E07706000800408000000000004040000000000045 +S315E077061000800000000002001040C00000000040AB +S315E07706206000000000000000000000000000040801 +S315E07706302020800000000040400000BC360000002B +S315E077064000000020002000000004042020000000C5 +S315E077065020040060400000002400002000400001F4 +S315E0770660202C00200000000000242040000000003D +S315E077067000644000000000020050008000000000A7 +S315E07706800040202000000000004000400000000409 +S315E0770690006000400000000000404040000000108D +S315E07706A0D000008000011000080040800000006064 +S315E07706B04000008000002040202080000002600497 +S315E07706C00040800004006080A00000000008200061 +S315E07706D080000000000404E0804000002010A8506D +S315E07706E00080000000208000808000050020A84080 +S315E07706F0C00000002000E000800000080040008095 +S315E077070000000802441000808000000044000040AA +S315E07707100000000000008000000000008420000058 +S315E077072000000400000080800000040000400040E4 +S315E0770730000500080040400000001040100000006F +S315E077074000002010000000000002401010808000BA +S315E0770750000000004020000000000040004000005C +S315E0770760000410F020400000000040000040000048 +S315E0770770000000C000C00001000800404000000013 +S315E0770780000000400000000000000080000000024A +S315E077079000104080000000000040000000000000EC +S315E07707A00040400000000004482080400000000040 +S315E07707B0400000400875000000000000004000009F +S315E07707C00000040060000000000000000000000068 +S315E07707D004002000400000000100280040000000EF +S315E07707E0000020000000000000000000000000008C +S315E07707F002001000800000000000004000000000CA +S315E0770800000800000000000004002000000000005F +S315E07708100008000000000000000000400000010032 +S315E077082008004000000000000060000000000000C3 +S315E07708301010800000000A005020800000000004BD +S315E077084000000000000014042020000000000400EF +S315E077085020000000040400000040000000000800CB +S315E0770860004000000500080000000000000440009A +S315E077087000000000000400400080000006081040F9 +S315E07708808000000004008080000000000000C08047 +S315E07708900000000004004080000000000000C04037 +S315E07708A0000004001010008000000500181000809A +S315E07708B000000404000000000000000040408000D3 +S315E07708C000000200100080000000100000800000A9 +S315E07708D000001000800000000000141020000000E7 +S315E07708E000000000808000000000000000000000AB +S315E07708F001000800408000000000000000000000D2 +S315E07709000000400000000000020050008000000078 +S315E0770910000000000000000000000000000000007A +S315E07709200400204000000000000080C000BB01000A +S315E07709300003031C1C606000000303181C40600082 +S315E077094000470738384040000007073838C0C0000E +S315E0770950000607303880C001010E0E707080800186 +S315E0770960010E0E7070808001010C0E6070008003BE +S315E0770970031C1CE0E0000803031C1CE0E008080306 +S315E077098003181CC0E0080807473838C0C0000807D6 +S315E0770990873838C0C008008687303880C801010EAE +S315E07709A08E7070888811010E0E7070888041018C88 +S315E07709B00E6070089803831C1CE0E00808C3831C6C +S315E07709C01CE0E018080383181CC0E018088787380E +S315E07709D038C0C0080007073838C0C00800060730B7 +S315E07709E03880C801010E0E7070888C01010E0E708A +S315E07709F070888801010C0E6070008803031C1CE088 +S315E0770A00E0080403031C1CE0E004000303181CC0A1 +S315E0770A10E4000007073838C4C0000007073838C055 +S315E0770A20C000000607303884C001010E0E70708072 +S315E0770A308001010E0E7070808001010C0E607000EF +S315E0770A408003031C1CE0E0000003031C1CE0E000CD +S315E0770A50000303181CC0E0000007073838C0C00061 +S315E0770A600007073838C0C000000607303880C00175 +S315E0770A70010E0E7070808001010E0E70708080011D +S315E0770A80010C0E6070008003031C1CE0E00000029E +S315E0770A90021C1CE0E000000202181CC0E000000621 +S315E0770AA0063838C0C0005945000000000400000051 +S315E0770AB0001000001010000010004404001004003D +S315E0770AC01000040400200400200000040000040065 +S315E0770AD000000004000004000000000000000000B1 +S315E0770AE000000000000000000000000000000000A9 +S315E0770AF00000000800000800000000000000000089 +S315E0770B000040000040000000008008008080000080 +S315E0770B1080000000000800000800000000001000D8 +S315E0770B2004000000048400008000000000180080C4 +S315E0770B30000880801800C04008000000100840C018 +S315E0770B400000C0C01808C0C0000880040810404004 +S315E0770B5010100000380040000010048C1010800060 +S315E0770B601000000C006008084020000020200800F4 +S315E0770B7000200010206010008040001460601010A4 +S315E0770B80200014006000001000801020C0040000F0 +S315E0770B900000202040400000404020004000001048 +S315E0770BA00400006000004000000060600000200064 +S315E0770BB00000000000000000000040400000004018 +S315E0770BC0100040800000C040000040400000400038 +S315E0770BD000000000000040400000000000004000F8 +S315E0770BE00000000000000000000000000040000068 +S315E0770BF00020000060000000400000004060000038 +S315E0770C002020000020000000000000000000000027 +S315E0770C1000000000000000200000282800002834AB +S315E0770C20E200000000000000001000000000000075 +S315E0770C300000000000000000002000000000000037 +S315E0770C400000000000000000000000000000000047 +S315E0770C500000000000000000000000000000000037 +S315E0770C601000000000800000000000000000000097 +S315E0770C70000000000000000000000000000000080F +S315E0770C800001000000000000000000000004000002 +S315E0770C9000000000000000000008000000000000EF +S315E0770CA000000040000000000000000000000000A7 +S315E0770CB000000000000000000000000000000000D7 +S315E0770CC000000000000000000000000000000000C7 +S315E0770CD000000000000000000000000000000000B7 +S315E0770CE00000000000000000000000001000000097 +S315E0770CF00000000000000000002000000000000077 +S315E0770D00000000000000000000000008000000007E +S315E0770D100000000000000000000000000000000076 +S315E0770D200000000000000000000000000100002045 +S315E0770D300000000040000000001000000000000006 +S315E0770D4000000000000000000000008000000000C6 +S315E0770D500000000000000000001000000000000026 +S315E0770D60000000088000000000201000000000006E +S315E0770D700000000000000000000000000000000016 +S315E0770D800000000000000000000000000000000006 +S315E0770D900000000000400000EE8000300000604078 +S315E0770DA038044040080010000840002000000400A6 +S315E0770DB000000000200040002404202000002010DE +S315E0770DC00000006800004000002440004004400036 +S315E0770DD00000000000002000204000400000804036 +S315E0770DE00000080000004840000000000000800096 +S315E0770DF0000000000000000040408000100040083E +S315E0770E00403040208000800000001800C0080400D1 +S315E0770E102800002000000804001800040000404481 +S315E0770E201080081000C00C0860080000801084006D +S315E0770E304008000000400000A800400800000000DD +S315E0770E40C42410A00440100004002000840084002D +S315E0770E5040C00000004000608000800800200880E5 +S315E0770E60004008280050000000D8008040100000BD +S315E0770E700000400020000080000040C00000101015 +S315E0770E80801040A44000400040000024000020008D +S315E0770E9000A000000060000000004040204880008D +S315E0770EA040208000008040002040000000200000C5 +S315E0770EB00000800000804000400000000080004095 +S315E0770EC01040808000400000108000004000002045 +S315E0770ED00000000000000000000000204040000015 +S315E0770EE010000000C0802000C000400040400000B5 +S315E0770EF000004000400000004000000088088000C5 +S315E0770F0040000000000000080000408000006040DC +S315E0770F1000FD5300100000200000000400001000E0 +S315E0770F2000000020000044000000000020000040A0 +S315E0770F3004002000000020000000000040A0000030 +S315E0770F402000200000404004000000001000002050 +S315E0770F50004000C000200080000008002000400824 +S315E0770F6000400000004000840000200000000040C0 +S315E0770F704000C000180080004800201000000008FC +S315E0770F800040180040100440200000400008280088 +S315E0770F900004080000040020100408041000C000D4 +S315E0770FA0000000C000800014000000080000000088 +S315E0770FB08020000040080000C00000044480040060 +S315E0770FC00400008004000084C00000800000000078 +S315E0770FD000C000100000000090000000080000004C +S315E0770FE000800000008000008400004800000000D8 +S315E0770FF00080004040000000900000008024400020 +S315E07710006000000041244000400000A0000040203E +S315E0771010000000402000004040008800000000808B +S315E0771020200020502080C0000000000000800040B3 +S315E077103000008000000000000000002080008000B3 +S315E07710400000000000000000000000000000000043 +S315E07710500008008000C080001000800000C080009B +S315E077106000804000000000400000004000200000C3 +S315E077107000400000088000000040000000004000CB +S315E077108000200000008020000000A6160000200067 +S315E0771090407008004040082000000800402000002B +S315E07710A0002040000000400080204004000020003F +S315E07710B00410008000080040004000440000000073 +S315E07710C00000000000004000000020000000400023 +S315E07710D000004000000000000000004080000000B3 +S315E07710E00000000000000000000000000000004063 +S315E07710F0008100C800A000008000000000008000AA +S315E077110008000800000020001020000040000000E2 +S315E0771110404000008000000C004028080000008076 +S315E077112000600000000000804000080040000000FA +S315E077113000000410200020104020000020800010DE +S315E0771140000000400080005000002080000880A06A +S315E07711500800000068200050000000D40840000036 +S315E0771160500000000080200000200000000480107E +S315E0771170000000500040000000000000000000087A +S315E07711802000000000000000000000000040008022 +S315E07711900820002000000000400000000800000062 +S315E07711A0200000008000400080400000000000A0A2 +S315E07711B0004010C0000000400010000080004000B2 +S315E07711C000208000000000000000000000200040C2 +S315E07711D00000400000000060000040000010400082 +S315E07711E00060100080004000000080000000008072 +S315E07711F00800000000000000000008400000000042 +S315E0771200400040C93B0000082000000000001000C5 +S315E07712101040000800004800284000400000000029 +S315E07712200000000000000040400000002000008041 +S315E07712300060002000000000000000000040000091 +S315E07712400000000000400000004020082840080029 +S315E077125000002040402008400000000040000040A9 +S315E077126000480000000000304080000080008008E1 +S315E077127000200080E000C0208040000800C0000821 +S315E07712800040A04000400000084000000800000051 +S315E07712904028804000A0004004000C0000000000D9 +S315E07712A000000000000044A000009020600000A04D +S315E07712B00020086000000080000020400800000061 +S315E07712C0E000008000000000048000046000004039 +S315E07712D06000801080400080000000002080008061 +S315E07712E080000000008000000080008400002480F9 +S315E07712F080008000408040042000002000800000CD +S315E07713000000508000800080400040000000000030 +S315E07713100080000040000000800020008000800010 +S315E07713208000800000404000400040001000000050 +S315E07713300080400090008000800000400080400000 +S315E07713400000008000000000000040000000000080 +S315E077135000000000000000000000004000000000F0 +S315E07713600000400000000000008000008000008060 +S315E0771370000000404000000040808000D9A90000CE +S315E07713800000404000400040008000000000008000 +S315E077139010001000080040480000004000400000C0 +S315E07713A00000004000000008000000000020500028 +S315E07713B00000000008002000402000400000000008 +S315E07713C000000000000000000000000000000000C0 +S315E07713D01000406800000000000000240000008054 +S315E07713E0082000A000200800101000001000000080 +S315E07713F00000000020000080000000000000B00040 +S315E07714000000806000C0004000000000000000801F +S315E07714100000000004200080088000000000420001 +S315E077142000400000400000040000C0008000C000DB +S315E07714300080000004200040041400006C000008DF +S315E0771440000000000080100000000000000010049B +S315E07714500040A0002000000040500040000000005F +S315E0771460400000006021000040000000000000001E +S315E07714700000000000000000A0008020040000408B +S315E077148000008080004080008000100040000080EF +S315E0771490000000108000004000000000000000001F +S315E07714A08000800000004000C0004000800000001F +S315E07714B000000020000000A000000000400080C08F +S315E07714C00000C000008000008000904080208040CF +S315E07714D000004000000020002000800080008000AF +S315E07714E0000000400040000000000000000080801F +S315E07714F0000001010068670000006000000000401E +S315E077150040009040000020008040104048000040B6 +S315E07715100840000000400040400000004000000026 +S315E07715200000004000200050000000000008400066 +S315E0771530000000000040004000000000002060004E +S315E0771540080000000020400008100000600000401E +S315E07715500040400000040000A81040802000800092 +S315E0771560001000009000C020A0000040002800C0D6 +S315E07715708008004020408030000040880020884086 +S315E0771580400008408040008080400000000820044A +S315E077159000080080000000000024004050000000B2 +S315E07715A02084204000E008800000800024002000AE +S315E07715B0000410044C800000080080040004C0306A +S315E07715C04000200000808010000420C02000A000AA +S315E07715D000C00040600000800000000080442000EA +S315E07715E0C0240080000000C04004200000400000D6 +S315E07715F02080008054A000000040C000008000807A +S315E0771600800000800000004080000080902000800D +S315E0771610000000800080400000000040004040105D +S315E077162000408040400000800000000000400080DD +S315E07716304000000000C08000400000C000000000CD +S315E0771640008010008000000000004000C00020000D +S315E077165000000080400080000000008000008000ED +S315E077166000200000000000C0008040800080263621 +S315E077167000000040000000400010400010400018D5 +S315E077168000004060000000001000006000408040ED +S315E07716900000400000000020084000204010844011 +S315E07716A00000240000004840006008200000204049 +S315E07716B000000000200040000040002040000800C5 +S315E07716C0200800004000400800600000006000004D +S315E07716D000200000000000A0000084241030008085 +S315E07716E04800088400200000600488002408400051 +S315E07716F040200000286800000000200CE020084821 +S315E077170080A0484410804000008040C00000200060 +S315E0771710804088100000040084600020C0800024A8 +S315E0771720002400208440A8000020801080C008A014 +S315E0771730400040700040A000400800400000C00034 +S315E0771740E800A83000E000002000408000C00000FC +S315E077175000108060100040400044A0000080400008 +S315E07717600000A0000000000020008020C08000C0BC +S315E0771770000000600080000000C00020C04000004C +S315E07717800000400840804090400000004010800014 +S315E0771790004010008000400000008000E00000007C +S315E07717A050004080002040400000008000000000AC +S315E07717B080004040008004804020C040000008E080 +S315E07717C0000000000000000040000000A000C0001C +S315E07717D0008000400040804000408000401040009C +S315E07717E08010C0204080407F380000000000000075 +S315E07717F0000000000000400010400040402000005C +S315E07718000800004060008000000040000000000013 +S315E0771810800000004000200000000020000000006B +S315E0771820000000000000000000000000000000005B +S315E0771830000000402040000800000800000000009B +S315E07718400008000010802000000000000000600023 +S315E07718501000A00010008010400800000000400053 +S315E0771860402000080000080008000000000840005B +S315E07718700040000040000000000060180000000013 +S315E07718800000008000000000000040000000040037 +S315E0771890000040200000402000040000000008001F +S315E07718A0000000001008800080000040304040A033 +S315E07718B000000000400080006000A0004000C0000B +S315E07718C020000000000000000080500000404080CB +S315E07718D040004024002000400000000000000000A7 +S315E07718E0000000004020000020400000004000009B +S315E07718F0000000404000000000000000004040008B +S315E0771900800000000040008000001000000000002A +S315E077191000000080008000004000000040000020CA +S315E0771920000000000000000000000000000000005A +S315E0771930800080000000000000000040000000000A +S315E077194000004000804000000000800000004080FA +S315E077195000008000004000400000000000004000EA +S315E0771960FBE50000000000001000100040001000CA +S315E0771970000000000000000000000000000000000A +S315E07719802000000000000000002008400000000072 +S315E07719909400004000C00000400060200020000076 +S315E07719A00040000800000000000000000000000092 +S315E07719B060000000004000004000001000002000BA +S315E07719C0004000080000400000080000000000002A +S315E07719D0002000200804200000800040000020005E +S315E07719E00040000020002020000020600000A020BA +S315E07719F000000000800440C000000040000880043A +S315E0771A000000800000042000200000000060808C49 +S315E0771A1000200004200004C000004008A0400040F9 +S315E0771A2000000020000000000000006000000000D9 +S315E0771A300000000000002000000000000080004069 +S315E0771A408000000080102000000000008000008009 +S315E0771A5000400010000080000020000000800000B9 +S315E0771A600000000000000080008000000000000019 +S315E0771A7040000000400000008000400000000000C9 +S315E0771A8010000040008000000000004000000020C9 +S315E0771A901000000040000000000000000080000019 +S315E0771AA00000000080408020800040000020000099 +S315E0771AB000600000000000400040000000000000E9 +S315E0771AC000000000000000000010000040008000E9 +S315E0771AD000800000802040000075960000000060DE +S315E0771AE02000400810000000001000080000000009 +S315E0771AF000000010000000004000400000000000F9 +S315E0771B000000000000000020000040000004000014 +S315E0771B100008000040080040002000000000200098 +S315E0771B2000600020000000000000002000000000B8 +S315E0771B300000400000600000004000002040000008 +S315E0771B400000208004002004200000804000C000D0 +S315E0771B5020000000800404008040A0000000000020 +S315E0771B600800008000000C00000848A0000008107C +S315E0771B7000000000000040002000200080085000B0 +S315E0771B800000408400000000000000000000802094 +S315E0771B9000200000400080000800600000000000A0 +S315E0771BA00000400008000020004000880008100090 +S315E0771BB02000100040000000000040000000000018 +S315E0771BC000000000000000000000000080204000D8 +S315E0771BD00000000080000000008080000000802088 +S315E0771BE000400000800000A00000400000000008F0 +S315E0771BF000000010000000800000000000000040B8 +S315E0771C0000C00000000020400000001000008000C7 +S315E0771C100040400000000000000080004000000027 +S315E0771C20400400004020004000088000800000006B +S315E0771C30000000000000200080400000000000C0A7 +S315E0771C400000004000000000801000000050000017 +S315E0771C50800079FA00400000000000800000004034 +S315E0771C600000000040000000000020402000004017 +S315E0771C7000000008000020000000000000000000DF +S315E0771C8000004800200000000048200000002800FF +S315E0771C9000400020000000400860000000000000DF +S315E0771CA000000000000000000808000000000000C7 +S315E0771CB00008000000000020008800000000000017 +S315E0771CC00800800000C000000000840000002010BB +S315E0771CD00000000000001400004000000000000053 +S315E0771CE0E00020400C006000040020004000000087 +S315E0771CF04000000000000000600010004010005037 +S315E0771D0000084080202000600000240000040010D6 +S315E0771D102000000040400000100000000000004076 +S315E0771D20000008000000400000800000000020105E +S315E0771D30400080000000000000C000200000800026 +S315E0771D4000000000000000000000000000000060D6 +S315E0771D5000004000000000008080000000000000E6 +S315E0771D600000901000000000000000800040004076 +S315E0771D700000000040800000008000000000004086 +S315E0771D800000000000000080000000000000000076 +S315E0771D900000008000004000000000000000000026 +S315E0771DA00000000000000000000000200080000036 +S315E0771DB00000000000000080000000000020000026 +S315E0771DC00000004000000000000000DB0800000093 +S315E0771DD000000840000000400800400800000000CE +S315E0771DE04000400000004000000040000000000096 +S315E0771DF000000000400000200000000040000000E6 +S315E0771E000000000000000000400000200000000015 +S315E0771E10000000000000200000000000000800003D +S315E0771E20000000200008000020000000000000000D +S315E0771E3000000000000000080000000010400000ED +S315E0771E40480000008000000824000000140000002D +S315E0771E5000000000000000000000000820000800F5 +S315E0771E6008400448080000880800000000000020C9 +S315E0771E708000800000000000000000000000000005 +S315E0771E800800080010080800000080200000100015 +S315E0771E9088000000000000000080040000080000D1 +S315E0771EA00040000000000000000000000080000015 +S315E0771EB00000000000400000C00040000000000085 +S315E0771EC00400000000008000000000002000000011 +S315E0771ED00000000000800080000000400000000065 +S315E0771EE00000800000000000000000000000000015 +S315E0771EF00040001000000080000040000000000075 +S315E0771F000000000040000000000000000000000034 +S315E0771F1000000080000000000000000000000000E4 +S315E0771F2000000060000000000000004000000000B4 +S315E0771F300000000000000000000080400000000084 +S315E0771F400000000061650000000000000008000066 +S315E0771F500000000000000000000000000000000024 +S315E0771F600000004000400000000000004000004014 +S315E0771F70080000200000004000000000000000009C +S315E0771F800000000000400000202000000000000074 +S315E0771F900000000020000000000020080020000874 +S315E0771FA000000000002000000000080000000000AC +S315E0771FB000002000000020000800000000204040DC +S315E0771FC000000C0000040000004010000040000014 +S315E0771FD04000040000040000000400000000200038 +S315E0771FE00000000048408000880000006000002084 +S315E0771FF0402000A0000000009000000000000040B4 +S315E0772000204000040000400004000020000080101B +S315E0772010000048401000000020200000400000004B +S315E0772020000000400000100040140000000084002B +S315E07720300000808000802000000000800000000023 +S315E07720400000000000008000000040000000000073 +S315E07720500000000000001000004000000040000093 +S315E07720604000000000800000000000000040808013 +S315E07720700000000000000000000000000000000003 +S315E077208000000000400000000000800040000000F3 +S315E077209000000000000000004000000080000040E3 +S315E07720A00000000000000000800000008000008053 +S315E07720B000000000000000000000018000F51C0031 +S315E07720C0000040000040600008400000100000007B +S315E07720D0000800000000000000400000000000005B +S315E07720E04000000000000000000000400000000013 +S315E07720F02000000000000000004020000000000003 +S315E077210040000000000000400000000000000000F2 +S315E0772110000000000000000000000000000800005A +S315E0772120200000000008200000000000000000000A +S315E07721300040000800080000A4000000000400004A +S315E077214000800004000400040400000060040880B6 +S315E0772150200400200000800040000000040000001A +S315E07721600000280000000000000000800010002832 +S315E077217000008020400000400000208040000008FA +S315E07721800000000000040000044000008800000022 +S315E077219000804000000040000040000000000000A2 +S315E07721A0000000000000401020000004000044001A +S315E07721B00040400040000000000000002080004022 +S315E07721C0C000800000000000000000000000400032 +S315E07721D00080008000000000008000000000000022 +S315E07721E08000800000000000000000004000400012 +S315E07721F00000000000000000400000000000400002 +S315E077220080000000000000000000000040000000B1 +S315E077221000004000000000000000000080000000A1 +S315E07722200000000000000000000080000000008051 +S315E0772230000000000000D1B90000000000000000B7 +S315E07722400020000000004000004000000000000091 +S315E077225020000000080000000000000000000000F9 +S315E07722600000000000402020000840000000002029 +S315E077227000000000000000000000004000000000C1 +S315E077228008000000000000000020000000000000C9 +S315E077229000000000000000000000000000000000E1 +S315E07722A0000000000000000000080000C00000C445 +S315E07722B0000000000000000000000400008000201D +S315E07722C00000000060000080000000480000000089 +S315E07722D008800000000000000000200000080010E1 +S315E07722E00008000000001000080000100004000855 +S315E07722F000084000000000000000000000800000B9 +S315E07723000800000000400000800020000000140074 +S315E07723100000400010000080001000000000500030 +S315E07723201080000040000000004000002000000020 +S315E077233000000000040080000000000040000080FC +S315E077234000000000004000000000008000000080F0 +S315E077235000000000000000000000000000104000D0 +S315E07723600000000000000000000000800080000010 +S315E077237000000000400000000000000000000000C0 +S315E07723800000000000000000000000800000000070 +S315E077239000200000000020000000000000000000A0 +S315E07723A00000000000400000000000000001005F30 +S315E07723B0B400005000000000200000000800000094 +S315E07723C000000000400800004000000040000000E8 +S315E07723D00008000000200040000000000000000038 +S315E07723E00000000060000820000008000000000000 +S315E07723F020000060000800000000000020000000D8 +S315E07724000000000800200000000020002000000007 +S315E077241000000000000020800000000000000800B7 +S315E077242020C0200000000000000008000000040043 +S315E077243020000000000000080000200000000000F7 +S315E077244000000040000000600044000040240000E7 +S315E077245000800400800004004000040000000400CF +S315E077246000000440000080000000000000080080C3 +S315E077247000002000004040004000408000008000DF +S315E077248000400040000000008000000000000000EF +S315E077249000000000000000000000000000000000DF +S315E07724A0000000000000000000000000800000004F +S315E07724B0004000000000800000000080004000102F +S315E07724C000000000000000000000000000000000AF +S315E07724D0000000008000800080000000000000001F +S315E07724E0000000000000000000000000000000008F +S315E07724F000800000000000000000004000000000BF +S315E077250000000000000000004000000000800000AE +S315E077251000000000000000800000000000000000DE +S315E07725200000000000000000CC9E000000000000E4 +S315E077253008000000080000000800480000000000DE +S315E077254060000000000000000000000000000000CE +S315E07725500000002000200000084000000000000096 +S315E0772560000000000040000040000000000000008E +S315E077257008000000000008000000000000000000EE +S315E077258000000000000000000000000000200000CE +S315E077259000008000000000000000000080000000DE +S315E07725A04020008000900000000000000800004412 +S315E07725B000000000000000040040200480000008CE +S315E07725C00000000800000000000000000000009016 +S315E07725D000000000001000000000900010000000EE +S315E07725E0000000000000800000000000000000000E +S315E07725F00000000000080000200000000000004016 +S315E07726000000000400400080100010000000008009 +S315E077261000000000100000C000000000000000008D +S315E07726200000000000000040000400000000000009 +S315E0772630400000000000800000000000400000003D +S315E077264040000000004000004000800000000000ED +S315E077265000000000000000000000000000004000DD +S315E0772660000000000000000000000000004000804D +S315E077267000000000000000000000400000000000BD +S315E0772680000020008000400000800080008000008D +S315E077269000008000000000000040004000000000DD +S315E07726A000070E00000040000000400000204000D8 +S315E07726B0000000001000000008100000000000088D +S315E07726C00000400040002040000000000008006065 +S315E07726D000000000080020400000000040200000D5 +S315E07726E0000000400000000040000000000000000D +S315E07726F00000000000000000000008000800080065 +S315E07727000000002020000800000000000000000024 +S315E07727100000100000102080448004004000000094 +S315E07727200800000000000000000000000004000040 +S315E077273000480000800000000000800004000000F0 +S315E0772740000000000000000000400010142040A0C8 +S315E077275004200000002400804000400000000000D4 +S315E077276000401000000080400000400000000000BC +S315E077277000000080001400200080000000100000B8 +S315E0772780401000000000100010000020000000005C +S315E0772790000000A000000040000000040080002058 +S315E07727A0000080000040000000000000000000000C +S315E07727B000000000000040000000000080000000FC +S315E07727C000000000000000000000000000000000AC +S315E07727D0000000000000000080000000000000001C +S315E07727E0000000000000800000000000000000000C +S315E07727F0000000000000000000000000000000007C +S315E0772800000000800000000000000080000000006B +S315E077281000808000000000000000B40E0000808099 +S315E077282000000008000000000000000800084008EB +S315E07728300000000008000000000000000020000013 +S315E077284000000000000040000000000000200000CB +S315E077285000000000200000002020000000000000BB +S315E07728602000204000200020000000000800000043 +S315E07728700800002000002000002000000000000093 +S315E0772880000020008000000000008000800020002B +S315E077289000000000000400880000000000000064EB +S315E07728A0000000004000400004000000000800003F +S315E07728B02000000000400000004000000084000097 +S315E07728C0000004000000000000008000108000088F +S315E07728D0000080000020000000002020004000007B +S315E07728E00000A0000000000000000060000000008B +S315E07728F0000000804000200000000000400000005B +S315E0772900000000800040300000000000400020001A +S315E0772910000000004000008040002000208000009A +S315E0772920000000004000000080000000400040000A +S315E077293000004040000000000000000000000000BA +S315E0772940400040000000004000000000000000006A +S315E0772950000000400000400000000000000040005A +S315E077296040000000000000000000400040400040CA +S315E07729700000400040004000C080000000000000FA +S315E077298000000000008000802000000000000000CA +S315E0772990018100D74C00400000400008004800283D +S315E07729A008400058084048000048204008000040AA +S315E07729B040000040080000000000000000000860CA +S315E07729C000004028400048200020002000000060FA +S315E07729D00040402000000020080000600000000072 +S315E07729E000200000000800000800002028000020F2 +S315E07729F000000008200020000028008800A00000E2 +S315E0772A00082000800010480000C84000A004048831 +S315E0772A10902C040004100084400000040040440039 +S315E0772A200004040804600C400C400C404000084069 +S315E0772A304000400000C0008440801024400004102D +S315E0772A407080409C900020142800880400180020AD +S315E0772A501000806000581040900800200080004009 +S315E0772A608040408080005084200000004080003025 +S315E0772A7010000080001040000000009080002010D9 +S315E0772A800000804040002000400080400004008045 +S315E0772A9040006080C02040808040000000008000D9 +S315E0772AA080004000400000408000800040800000C9 +S315E0772AB000000000004080008000409000800080A9 +S315E0772AC00000004000000000800000000040004069 +S315E0772AD00000000000000040400080400000000059 +S315E0772AE00000000040000040004000604020008089 +S315E0772AF0C000008000808000008000808000A00019 +S315E0772B00000000408040000000000080A97D004082 +S315E0772B101000400008004000280008004800080838 +S315E0772B200000084800000000400800004008000068 +S315E0772B302020400000000000400040004020404058 +S315E0772B400000000800200040000040004000000040 +S315E0772B504048200048080000000008000008000010 +S315E0772B6028080008000800000000080000000000C0 +S315E0772B7000200880008000000000000800A0508058 +S315E0772B80004880840040A4EC0008040408040008A8 +S315E0772B90044410800404600400204464086C806474 +S315E0772BA0000460600000C0400004600044008000DC +S315E0772BB024280080541040384490200034900090C8 +S315E0772BC00420900004400020086800002000404080 +S315E0772BD024C0004080004014400040C820008000B8 +S315E0772BE000200000D04000440000101040100000A4 +S315E0772BF0100010C010008430804000804044804050 +S315E0772C0000006000000000800000C02080840000A3 +S315E0772C1000408000800000008000400040100040C7 +S315E0772C200000C00040000080004000000000800007 +S315E0772C3000804000400000000000400000000000F7 +S315E0772C4000800080000040000000000000408080A7 +S315E0772C504000408000000000400000004000400057 +S315E0772C604000000040006020C040002080800000E7 +S315E0772C7080000000000000000000008040000000B7 +S315E0772C804000008000561C000000001008406000FD +S315E0772C9000000008584040400000001830404040AF +S315E0772CA00000000040404040000040200000004027 +S315E0772CB00000006060000000000020602020000037 +S315E0772CC00008006060600000000028606060000037 +S315E0772CD000082820000000002008080000200000F7 +S315E0772CE0202828000000000000202820800000002F +S315E0772CF00000000080000008287060808080000C6B +S315E0772D002C6010800000000C8C2460100080000C92 +S315E0772D100460E0200000000C2CE06000040020084E +S315E0772D2008C4402000000000A8A0C00000000018FA +S315E0772D303860C080000060303080808000080C40CA +S315E0772D406020800000082060600080001000A860A6 +S315E0772D5040000080000800E0E0000000000094C03A +S315E0772D6060200000001010C000000000001030C0A6 +S315E0772D70C00000000000A0C04000000000200080F6 +S315E0772D8080000000046060A0800000000040408082 +S315E0772D9080001000804040000080000000C0C00046 +S315E0772DA000000000004080000000000050C08080F6 +S315E0772DB000000000404000000000000000C04040F6 +S315E0772DC000004000000080C0000040400080000026 +S315E0772DD00000004040400000000040406040008036 +S315E0772DE0000040E0A00000000100008080000000C5 +S315E0772DF000000080C000000000000040800053B86B +S315E0772E0000000010100008202004002808505C40DD +S315E0772E10600000181878704040000008004840418C +S315E0772E204008002021000800000800686020600064 +S315E0772E300008002820202002001008C042607000B9 +S315E0772E4080000068684040000008082828000004F1 +S315E0772E500008080804000000002820002800000089 +S315E0772E600000002820018008004001000880C008A3 +S315E0772E70086068E0E080800004282090100200185F +S315E0772E80082C2E202000000C0C4040E0E000000CDF +S315E0772E9004A8240000000000088008000004040469 +S315E0772EA000A0A0808004001C18383801800C00341C +S315E0772EB021B03880C00C001C0030208080080834B0 +S315E0772EC024302002800404084A00100000101CD445 +S315E0772ED0E0A0A00000101090800000040030108081 +S315E0772EE0840020040410108010808000000404E041 +S315E0772EF0C001000C006025808800C00404000080D3 +S315E0772F0000808000004040C0C00280000040024060 +S315E0772F101000000000800000C00000000040400084 +S315E0772F208004002000D05480A000000000404000DC +S315E0772F300000000000C0C0414008000001000880A2 +S315E0772F408000004040808000000000404040400222 +S315E0772F50001000C042407000000000E0E020A000D2 +S315E0772F600000008000808004002000808480A0003C +S315E0772F70000000404000800D2A0000001010080095 +S315E0772F8020600000000010104040000018187038EC +S315E0772F9000400000080048004000000000200000E4 +S315E0772FA00000080068206060000008002820200004 +S315E0772FB0000000084060606000000000486840401C +S315E0772FC0000008080828000000000000080000005C +S315E0772FD000002020200800000000002028000000E4 +S315E0772FE00000000000088080080840686060000004 +S315E0772FF004000C241010000008082C28202000007C +S315E07730000C0C4040E0C0000008040C2000000000F3 +S315E077301000080880000000000400A888808004008B +S315E07730201C18383880000C00042030308080040883 +S315E07730300814201080800C0C20302030000000002F +S315E07730400C0C0000000004082054A0C00000040423 +S315E07730508494000000001000008000000000141443 +S315E07730601050C08004040000406000000004242073 +S315E0773070808000000000040400C0008000000000AB +S315E0773080C0C00000000000000000000000000080E3 +S315E0773090C0000000000000000000000000001050B3 +S315E07730A08000000000000040000000000000404083 +S315E07730B040000000000000008080000040408080F3 +S315E07730C00000000040404000000000000040604003 +S315E07730D000000000E060A020000000010000808092 +S315E07730E00000000000008000000000004040000083 +S315E07730F0C5640000001010000820200000000808D2 +S315E0773100080040000018181038000000000008009A +S315E0773110080000000020200000000000086068201A +S315E0773120200000000820082020000000080000406A +S315E077313020000000002828606000000808280800C2 +S315E077314000000000000008000000002008002800CA +S315E077315000000000002028000000000000000000CA +S315E0773160800808604060E08000080C202C10100092 +S315E07731700008082828602000000C0C4040606000BA +S315E0773180000C04206C0000000008008800000000B6 +S315E0773190000004A8A880800004080C3838400000B6 +S315E07731A004302420208080000C0418203000000CA6 +S315E07731B00C20106030000000000C4C000000000C82 +S315E07731C00040F400200000040490800040000000F6 +S315E07731D00080800000000014142010808004040032 +S315E07731E0002080400000042420000080800000401A +S315E07731F0008000808000000000C0C0000000004032 +S315E0773200004000000000008000C080000000004021 +S315E07732104000000000000050508080000000004031 +S315E07732200000000000000040C00040000000000001 +S315E07732300000000000400000000000000040404031 +S315E07732404000000000400020600000000060202081 +S315E077325020000000000000808000000000800080F1 +S315E07732608000000000404000007D04000000101060 +S315E077327000402020000000000000404000001818C1 +S315E077328098108000000000080008000000000000A9 +S315E077329000000000000860282020000000084008B1 +S315E07732A000000000000840600040000000000808C9 +S315E07732B020600000080808280000000008080008D9 +S315E07732C00000000000002008000000000020000851 +S315E07732D00000000000000000808008084060606021 +S315E07732E000000C08040C1010000008082C28606019 +S315E07732F00000080840444040000008040408000045 +S315E07733000000080000084000040400040000C080C4 +S315E07733100004080C78788040000410142020000020 +S315E07733200804100C10008080080854243020000030 +S315E07733300404080800400000181434002000000058 +S315E07733401010041400000000100000800000040450 +S315E077335010101010C0800000040400200000040064 +S315E077336020240000000004040404008000800000AC +S315E07733700000C0C000000000000000400000000030 +S315E0773380008080C000000000000000000000000020 +S315E077339010108000000000000040000000000000F0 +S315E07733A04040400000000000000080800000000000 +S315E07733B080800000000040400000000000000040F0 +S315E07733C00000000000002020A020000000000000A0 +S315E07733D08000000000000000808000000000404090 +S315E07733E000009DC500000080000808202000000846 +S315E07733F00850584040000008084068404000000008 +S315E077340000404040400000200000000000000860D7 +S315E0773410602020000000082000002000000800005F +S315E077342040406000000000684860600000000020CF +S315E077343020000000000000000800000000200008DF +S315E077344000000000000000002800000000000000F7 +S315E077345000000000006070404000000004240C008B +S315E0773460000000000400000000000000004040C0BB +S315E0773470E00000040C200C00400000080088800083 +S315E077348000000000048020808000001004303000C7 +S315E07734900000003004303000800008100C40708067 +S315E07734A00000000020001000000000242400000047 +S315E07734B00008044054A0A000000000C414202000B7 +S315E07734C000101000000000040414140010C08000FF +S315E07734D0000000204000000000000080800000002F +S315E07734E0000404A0208080000000008080000000B7 +S315E07734F0000000400000000000808000C00000006F +S315E0773500000000000000000000400080800000001E +S315E0773510004040000000000000000040400000004E +S315E0773520000000000000004000008000000000007E +S315E0773530000040000000004040006000000000C04E +S315E0773540808080000000000000000000000000801E +S315E07735508000000000000000010000FE5B00000034 +S315E077356000000808202000000808181040400000F6 +S315E077357008084800004000000008480040000000C6 +S315E07735800020000000000000482020200000000016 +S315E07735900800200000000808400000000000000056 +S315E07735A0486860600000000000000000000008083E +S315E07735B00008000000000008080000000000000096 +S315E07735C02008000000000000000000000000500026 +S315E07735D0404000000400046C000000000404000092 +S315E07735E00000000004042064E0800000000C04285A +S315E07735F0000000000800C088000004040000288866 +S315E077360080800400000030100000040000202020B5 +S315E077361080000C004418300000800404200010007D +S315E0773620000000002020000000000C0014008080DD +S315E07736300000040410802020000000001010000035 +S315E0773640000010101010C000040400004060000075 +S315E077365000000000808000000000000020A00080CD +S315E0773660000000000080000000000000000000007D +S315E07736700000C0C0404000000000000000000000ED +S315E0773680000000408000000000000000000000001D +S315E077369000000000000000000000000000000000CD +S315E07736A000008000000000000000400000000000FD +S315E07736B0000020000000000080008080000000000D +S315E07736C0000000000000000080800000000000009D +S315E07736D0000000001E370000800000080820200068 +S315E07736E0000008084840400000080848604040006D +S315E07736F00008004048404000000000000000000855 +S315E077370008200800200000080820080000000008CC +S315E077371000000040200000000048086060000000DC +S315E07737200000000000000008080800000000002004 +S315E0773730000800000000000000080000000000001C +S315E077374000000000000000404840400000080C0CF4 +S315E077375004000000000404000010000000000040B0 +S315E07737604000400000040C080400000000000880D8 +S315E07737708800000404040488088080000414043078 +S315E07737803000000004140400200080080408145078 +S315E07737905000000404041410100000000004040034 +S315E07737A0000000040C545400000000040484140064 +S315E07737B0000000000080C00000000014140010C074 +S315E07737C08004040404000000000004000400000004 +S315E07737D00000000424000000000000000080800064 +S315E07737E000000000005000000000004000C0C0006C +S315E07737F0000000000000000000000000000000006C +S315E0773800000000000000000000000000000000005B +S315E0773810000000000000000000400000000000000B +S315E077382000000000000000000000002060000000BB +S315E077383000C08000000000000000000000000000EB +S315E077384000800040000000000000000100D0420048 +S315E0773850000000000000200000000804082840402F +S315E077386000000008400800400000080848084000CB +S315E077387000010008000000000800082800000000AA +S315E07738800800080800000000080A401000800000E1 +S315E0773890000040406060000000000000000000008B +S315E07738A0000408200000000008000800000000007F +S315E07738B00000080000000001000000400000000062 +S315E07738C04048004000000C0C4C4400000000040621 +S315E07738D00010108000000000202440000000040C57 +S315E07738E00C04200000000008082000000000040017 +S315E07738F00000408004040400100000000405040082 +S315E077390000400000040C1C0010100080000010003E +S315E0773910101000000406041400800000141C141430 +S315E0773920000000001414100000000000000440A01E +S315E07739300000040404140000C080040400000000C2 +S315E07739400000040104080040000004040000008041 +S315E07739500000000000008080000000020010108068 +S315E077396000000000404040400000000000000000FA +S315E077397000000004002000000000000000000000C6 +S315E07739800000000000000000000100080040000091 +S315E0773990000000008000000000000000000000004A +S315E07739A000020010008000000000800080800000A8 +S315E07739B00000000000000000000400A00000000006 +S315E07739C0000000000000903600000000004840400C +S315E07739D0600000000C086000400000000000204016 +S315E07739E00000000000004800400001002800004089 +S315E07739F000080040006000000000084860002000F2 +S315E0773A0000000A00506080000000002800002000D7 +S315E0773A1000000000200000000000040020200000E5 +S315E0773A2000082000200000000020002000000000B1 +S315E0773A3001000008400000000028404080000008B0 +S315E0773A40000420000000000002001400C08000049B +S315E0773A50002020002000000C0000600060000000DD +S315E0773A60000420204000000000280000000000004D +S315E0773A700060400000000100000850C000000040F0 +S315E0773A8000304000000400300400500000040200DB +S315E0773A907410C080000410E0140060000000044059 +S315E0773AA0002040000000044060200000040400206D +S315E0773AB040000000040400204000400005040800B0 +S315E0773AC040408004004020204000000000000000D5 +S315E0773AD00000000002001000808000000000400037 +S315E0773AE0C000000000004000000000000400600015 +S315E0773AF000000000004000000000000000008000A9 +S315E0773B00400001000800404000000040000000004F +S315E0773B100000000000004000000002401040808076 +S315E0773B20000000C000800000000000000000800078 +S315E0773B30000004002000000000000000000000D034 +S315E0773B409000000000000040400000008004002064 +S315E0773B5000000000000808400000000000080800A8 +S315E0773B60000000010008004000000008082000007F +S315E0773B70000000080000000000000002003000802E +S315E0773B800000000000404000000000000000000058 +S315E0773B9000000004002000000000000000000000A4 +S315E0773BA00000000008008000000100080040800067 +S315E0773BB00000000000008000000400400080000064 +S315E0773BC0000600100080000000000440400000007E +S315E0773BD0000C048020000000000C00E000000000EC +S315E0773BE000000080C000000000001040C000000127 +S315E0773BF0003830C0000000000010000080000000B0 +S315E0773C0000400000800000020010008000000008FD +S315E0773C100000400000000010008000000000000473 +S315E0773C2000A00000000000100080C0000000000047 +S315E0773C30008000000001000800000000000000405E +S315E0773C400080800000000000008080000002001005 +S315E0773C5040800000000000C0400000000000000047 +S315E0773C6080000000000400A0800000000000000053 +S315E0773C70000000000000000000000001000800409E +S315E0773C8080000000000000800000000000000000D7 +S315E0773C900000000200100080000000000000000035 +S315E0773CA00000000000800000000000040080C000F3 +S315E0773CB0000000000000800096C8000083831C1C8B +S315E0773CC0606000000343981C40600000C7073838FF +S315E0773CD04040000047473838C0C0000046073038D4 +S315E0773CE080C001010E0E7070808001010E0E70703B +S315E0773CF0808041010C0E6070008043031C1CE0E07D +S315E0773D00000843031C1CE0E008080303181CC0E026 +S315E0773D10080807073838C0C0080007073838C0C032 +S315E0773D2000000607303880C801010E0E7070888073 +S315E0773D3001010E0E7070888801010C0E60700C8898 +S315E0773D4003031C1CE0E0000803031C1CE0E0080802 +S315E0773D500303181CC0E4080807073838C4C4080802 +S315E0773D6007073838C4C408000607303884CC010121 +S315E0773D700E0E70708C8801010E0E707088880101C6 +S315E0773D800C0E6070088803031C1CE0E00800030350 +S315E0773D901C1CE0E000000303181CC0E000000707E6 +S315E0773DA03838C0C0000007073838C0C000000607BB +S315E0773DB0303880C001010E0E7070808001010E0EE2 +S315E0773DC07070808001010C0E6070008003031C1C0C +S315E0773DD0E0E0000003031C1CE0E000000303181C8E +S315E0773DE0C0E0000007073838C0C00000070738385A +S315E0773DF0C0C000000607303880C001010E0E707033 +S315E0773E00808001010E0E7070808001010C0E60706B +S315E0773E10008003031C1CE0E0000002021C1CE0E0CB +S315E0773E2000000202181CC0E0000006063838C1C15F +S315E0773E30007A7400100000000000000000004000E7 +S315E0773E4000404010104000000000401000000000E5 +S315E0773E500040400000400000000000000000000045 +S315E0773E6000000000000000206000004020000020F5 +S315E0773E706000004000000020600000202000002065 +S315E0773E802008000000000000000000000028200065 +S315E0773E900000200000202000000020000020200005 +S315E0773EA0002020000820000080200000002030005D +S315E0773EB00030200004000000082000000000200009 +S315E0773EC008800008002000080800000000000408C9 +S315E0773ED00800000820C40408280000202004842075 +S315E0773EE00000002000048C0020000020600C000019 +S315E0773EF02000082010080820200800200008080085 +S315E0773F000000080000080080000000802000002004 +S315E0773F1000000000401000400000000000000000B4 +S315E0773F200000008000002000800000000000000014 +S315E0773F300000200000204000000000000040400024 +S315E0773F400000000000000000000000000000000014 +S315E0773F5000404000000000001040C0000000400034 +S315E0773F6000404000004000000000400000400000B4 +S315E0773F700000800040800040400000000000000024 +S315E0773F8040000000400000406000006060000040B4 +S315E0773F904000006000000000000000000000000024 +S315E0773FA000000000400000000000C9DC00000000CF +S315E0773FB000000000000000000000000000000000A4 +S315E0773FC00000000000004040000000001000000004 +S315E0773FD00000000000000000000000000000008004 +S315E0773FE00000000000000000000000000000000074 +S315E0773FF00020000000000000000004000000000040 +S315E077400000000000000000000000000040001020E3 +S315E07740100000000000000000000000000000000043 +S315E0774020000000000008000000000000000000002B +S315E07740300000000000000000000000000000000023 +S315E07740400000800000000000000000000000000093 +S315E07740500000000000000000000000000000000003 +S315E07740600020000000000000200000800100000032 +S315E07740705000000000000000000000000000000093 +S315E077408000000000000000000000000000000000D3 +S315E07740900000000040000000000000008000000003 +S315E07740A00000000000000000000000000000600053 +S315E07740B00000000000000000008000000000000023 +S315E07740C00000000000000000000000000000004053 +S315E07740D000000000000000000000000000088000FB +S315E07740E00020000000000000200000000000000033 +S315E07740F0100000000000000000000000000000084B +S315E07741000100000000000000000000000000000051 +S315E07741100000000000000000000000000000000042 +S315E077412000000012770000000040600040000000C9 +S315E077413040004000400000000008600000480000B2 +S315E077414020000000000000400020200080000000F2 +S315E077415000004000800000400008402040204000FA +S315E0774160000000000840500000004000000000001A +S315E07741700088000020400040000008000020000092 +S315E077418000800000200000008000C02080008000D2 +S315E07741902090102800006008408810C0400000E8B2 +S315E07741A0004400288000000040000008000000007E +S315E07741B000440030000880001020201000404010B6 +S315E07741C000004020800020002400A004200008A002 +S315E07741D0100020402000800000040040500000A03E +S315E07741E000506018402800000020008000000000A2 +S315E07741F000108000804090400040000440000000BE +S315E07742008010000000100000801004800010000489 +S315E0774210C000840020802000600000800000040059 +S315E07742200040002000800020200000004080000051 +S315E077423000404000000000000080004000000040A1 +S315E07742402000804000000000000000008000400071 +S315E0774250400000008000000000000000C000000081 +S315E0774260000000800000400000A000000000800011 +S315E07742700000008040000000000000000040008061 +S315E07742800000C000C1000000000000804000800010 +S315E07742908040008000000080400000002ED70000BC +S315E07742A00000004000004040004000500000000061 +S315E07742B00000002000000000400020000008000019 +S315E07742C040200000008000004000000000800000F1 +S315E07742D000000800202008000000200040080000C9 +S315E07742E04000080000000000000080000020402029 +S315E07742F00000000800200000000080000020000099 +S315E0774300000800A000880000008000102000002050 +S315E07743100008408040000008200004200000880064 +S315E0774320000000008800000000C4000020000000C4 +S315E0774330002000000020C0000000200020C0080018 +S315E077434000008404800000002810002000000100AF +S315E077435080004440000000A040500088704800008C +S315E0774360000000000000000040001080000000C060 +S315E07743702040008000400000000000008000000040 +S315E0774380200000000000000084004080000020004C +S315E077439000C000008000000064004060000000007C +S315E07743A00000000000000000000040000000000070 +S315E07743B08000804000C00000006080000000008040 +S315E07743C00020000000802040000000004000000050 +S315E07743D000000000800040080000010000000000B7 +S315E07743E00000004000000000800000008000000030 +S315E07743F0000000000040000080000080000140805F +S315E07744000000C0008000004000000000000040008F +S315E07744100000000000676C00000008402000000004 +S315E0774420200000000000400000000008004040083F +S315E0774430000000000000004000004000002000403F +S315E0774440200000804000004040000000400000402F +S315E077445010400800000000C000100000400000088F +S315E07744600000000860000408400008000020000013 +S315E077447000000000000000080800208000400000EF +S315E077448040800030000800000840008010004000BF +S315E0774490C0004000080010002000004000000080C7 +S315E07744A00000000000500800008010002010100087 +S315E07744B00050000000400000600020004020280007 +S315E07744C0800080000040200000000000000010C05F +S315E07744D000000000000000200000002090000000AF +S315E07744E0000000800000A0401000000000040000FB +S315E07744F000A00090000000100000009080040010FB +S315E0774500000000800004800020002000600080002A +S315E07745100000000000008000204000601000C0002E +S315E077452000800000804000000000000000000000EE +S315E0774530004000004080008000000000000000009E +S315E077454000004000000000800000000000008000CE +S315E07745508000000080080040400000A000000000D6 +S315E0774560000000000000004010000000000000009E +S315E077457000000000004080200000000000004000BE +S315E07745800080C000800000804080400020008E6C74 +S315E0774590000010006060004000000010004000005E +S315E07745A0002000C0202000004000400020000040AE +S315E07745B004480000000000200040A0002020000012 +S315E07745C000080000000840004000000028000000D6 +S315E07745D0002000000820402840002000000000105E +S315E07745E0200040008000403000000000400000607E +S315E07745F00040000040000080000008008000800056 +S315E077460000000000002000402020900010004010BD +S315E077461040C0000040000004400000000060080051 +S315E0774620000080800000000000000090000060003D +S315E0774630200000600000800000000000080800000D +S315E07746400000300000000060000000004420802079 +S315E077465044200000440420000000000050040020BD +S315E07746604404000040000000004000442040004041 +S315E077467000000000800080440040800400000400D1 +S315E077468044000000800080048020000000040000E1 +S315E077469000002000000000400000004000400400D9 +S315E07746A000000000A00000008000808040000080CD +S315E07746B00004404000800040000000400000008099 +S315E07746C0000400400000C000002000000000000069 +S315E07746D0000000C00040008000008000C0000000BD +S315E07746E00000C0C02000002000000000A00000000D +S315E07746F000008000800000002040000000000000FD +S315E077470080000000000080390800400800001000B3 +S315E07747100030401000400000204000000800000014 +S315E07747202000000008000020002000000020400064 +S315E0774730100000004000008060102040400000003C +S315E07747400000200000000068200000000040000024 +S315E07747500000000020004820400010000000200004 +S315E07747600008004000204000000080002080002004 +S315E0774770002800200000300000000840800000009C +S315E07747800080000000A00000201008200000C00094 +S315E07747900000400020000000E0000000200020003C +S315E07747A02000100000008000C000000000004020DC +S315E07747B000001080608000002080000000700040DC +S315E07747C000000040A00000408000000080000080EC +S315E07747D00004002000242010800040000004C02060 +S315E07747E04000002080000000800020800004006008 +S315E07747F020800000000080002000000000002040BC +S315E077480000200080042000E0006084000000800043 +S315E077481000808000000000200020800000008040BB +S315E077482000000000000000800040008500000040A6 +S315E0774830000000C0000060840000A0400080000017 +S315E07748400060408000000040002000C000000000CB +S315E07748502000004000004000C0000000000000405B +S315E0774860408040800000000000600040000040008B +S315E0774870800000800000000000004080208000403B +S315E07748800C98000050E000402060100040000000E7 +S315E0774890402040002000280000200040002008202B +S315E07748A00000004008000000002000200000408063 +S315E07748B0200020482000404008400000000800081B +S315E07748C02000200020000840202800200020000853 +S315E07748D0000020000000802040001000002000400B +S315E07748E0002000800060002000008000208000101B +S315E07748F000000000480000200080008030209040D3 +S315E07749000020104000400000C0040000000020486E +S315E0774910200020008020802000200010000080000A +S315E07749208000E000000060C00000008010E000003A +S315E0774930000800300030000040006000402400208E +S315E077494000C0040000C400008400142000A41034E2 +S315E077495000844004000040204000402000A0400052 +S315E077496044C000A0000400800004A080000400801A +S315E077497004004000000080004000A42000240040AE +S315E077498004200000840000800000408000000040A2 +S315E0774990000000800000200000000080008000001A +S315E07749A00000808144004000604000408040004441 +S315E07749B0A000000064004000C00060208000000096 +S315E07749C040200000C08000004080004080804000AA +S315E07749D000C00040004020004000A0004000A0005A +S315E07749E0004020C0008000000080000080000000CA +S315E07749F020800000000021C000A989002000400047 +S315E0774A0040200040204008000000004000004000C1 +S315E0774A10400008702040600000A060080000A00019 +S315E0774A200020000000400040082000480020C02019 +S315E0774A300020800040000020480040280060000009 +S315E0774A4040200000402040200840400000404008D9 +S315E0774A5080080068402040A0004800204000002001 +S315E0774A6010402040003000109008004100500800C8 +S315E0774A700068000020405000200C40A02000002075 +S315E0774A80000000C02000200044085020700040005D +S315E0774A9040200048108010001000806408504020C5 +S315E0774AA00400204824C000802080A0000000108009 +S315E0774AB004C000C00420C000002048000040002069 +S315E0774AC04080204044200060002040A0C4001000D1 +S315E0774AD000A040204000C000C00000404400001025 +S315E0774AE000008000042020402040008040002440E1 +S315E0774AF00000A00000040040402440A08040004031 +S315E0774B00004000C0800000000040006400404000A4 +S315E0774B106000002400004080000084000000C000B0 +S315E0774B200000400000008000004000604000200464 +S315E0774B30804000C0000000000000002000008000F8 +S315E0774B402040C0204080400040000040C000004048 +S315E0774B504000000020C00040008000C00060804038 +S315E0774B60004080400000000000C00040C000C00068 +S315E0774B70400031D6000080200000000000002000D1 +S315E0774B800800400040000000404000000800200098 +S315E0774B900000200020000000200000000000004018 +S315E0774BA000000000200000008000000020000020C8 +S315E0774BB040004008000000000020000000000020D0 +S315E0774BC00008004000000000400000000000000000 +S315E0774BD02040000000400040000010002000000068 +S315E0774BE00000080080000020000000000020402040 +S315E0774BF0100000C000006000000000800000200088 +S315E0774C0000000000201000000000000000004000D7 +S315E0774C10100070E0000000004000002800800000EF +S315E0774C2000000000200000000000C0C0000000C0C7 +S315E0774C3000000000000000000000402000000400B3 +S315E0774C404000004000005080000020200000004037 +S315E0774C500080000000001000000000000000042043 +S315E0774C6000004000000000004080000080840000E3 +S315E0774C708000000060C000000040004000000000B7 +S315E0774C800000400024000040002000400080002023 +S315E0774C900020000000000040008000004000000097 +S315E0774CA00000000000400080040000008000000063 +S315E0774CB000000000000000008000404000C00000D7 +S315E0774CC00000000040A00000000000000080000027 +S315E0774CD04000000000004000400040800000008077 +S315E0774CE00000804000400000008100B08300002093 +S315E0774CF000400020002000000000000000000020B7 +S315E0774D0000000000000000404000000008000000BE +S315E0774D100000200000000040200000204000400016 +S315E0774D2000004000000020000000080040200060FE +S315E0774D3000000040000040000040400000004000D6 +S315E0774D4008008800004020000000000860000000AE +S315E0774D500000004080002010000090000000400036 +S315E0774D6008002800000000080040402C0000000002 +S315E0774D700020400000000000000044000000000032 +S315E0774D80002020000810008000000000000450009A +S315E0774D900020440000000060000080200000000052 +S315E0774DA0300024000000402000008000C00800208A +S315E0774DB0002000004000006000000440000004008E +S315E0774DC01000008000000040208000400040004452 +S315E0774DD010200000009020400040000000000040D6 +S315E0774DE0042000200000000040006400000000007E +S315E0774DF000000000A000000000C0000000000040B6 +S315E0774E000000000020000000008000000004400061 +S315E0774E100000000000008000408000004000200095 +S315E0774E20000000C0004080000000000004000000A1 +S315E0774E300000000000800000000040000000400015 +S315E0774E40004000000040002000000000C0000000A5 +S315E0774E50008000000040000000000040800000A0D5 +S315E0774E600000004002AF0000000000400000404034 +S315E0774E700000000000000000000000000000700065 +S315E0774E800000200080400040008000000000000025 +S315E0774E900000000800000800206000002080004045 +S315E0774EA00000000000000000000000000000002085 +S315E0774EB000008020002000000000000000200800AD +S315E0774EC04000C00000008000000020200000400085 +S315E0774ED00000100000412010000000005090000014 +S315E0774EE00000000000002000000000000000400005 +S315E0774EF0000020001840906000004000404000101D +S315E0774F0000000000000000000800002000004004D8 +S315E0774F1000800000008000000000800000000004B0 +S315E0774F200000002000000040000400008000000040 +S315E0774F300000200020208080000060000040000014 +S315E0774F400000000000000000000040004000000084 +S315E0774F5000800000200080000000000000200000B4 +S315E0774F600020000080008000000040000000008004 +S315E0774F700000002000400000000000400004000030 +S315E0774F800040000000009000008000000000000074 +S315E0774F900000004000002000000020000000000034 +S315E0774FA000000080002000000000000020002000C4 +S315E0774FB00000400000000000000000400000000014 +S315E0774FC040000040800000A00000000000000000E4 +S315E0774FD00000000000000000008040200011BF00C4 +S315E0774FE000000000000020000000204000000000E4 +S315E0774FF040000000000000002000400008000008A4 +S315E077500000200000000000000000002008000008F3 +S315E077501000000000000000000000000000200020F3 +S315E0775020000000000000084000000040000000207B +S315E07750300008000008000040000000000000400083 +S315E0775040000000000000000000080000000020409B +S315E07750506000000000400000008080100020000023 +S315E07750600000000000008000000000002000000043 +S315E077507040802000280000000000806000000000EB +S315E077508000000000008080000000000020000000A3 +S315E0775090200000000000000000000004000000048B +S315E07750A0004400200400A41004000044800080241B +S315E07750B000040040440000040000000020040000E3 +S315E07750C00004000400044004000400240004000403 +S315E07750D0600400000004002400040000A00004003F +S315E07750E02000000000000000000000000000000043 +S315E07750F000000000000080000000800080040000CF +S315E07751008000006400004000000080440004000056 +S315E077511000000000000000000000000000000080B2 +S315E07751204000000000000000000080000000000062 +S315E07751300000000000000000000000008000000092 +S315E07751400040000000000000008000000040000002 +S315E077515000000000000075AC000080800000004091 +S315E07751600000008000000000008020000020002082 +S315E07751700000400000000000000000000000002072 +S315E07751800000004000000020000000200000000042 +S315E077519000002000004000400000000000200020D2 +S315E07751A0000020000000400008004040000000209A +S315E07751B000204040200000002020000020004048EA +S315E07751C0200028380000000000081040200010007A +S315E07751D00000000060400000600000000000001062 +S315E07751E040408000000000400000000040100010C2 +S315E07751F00010000000000000002010008000000092 +S315E077520000402000004000000000000000000000A1 +S315E077521000000040102000000000200000802040C1 +S315E0775220004000000000004000000004000000009D +S315E077523020044020008000000040000000800080CD +S315E07752400000000000000000000000000000000001 +S315E0775250008000040000000040008000400000006D +S315E077526080000000400000400000002000000000C1 +S315E0775270000000000000000004004000000000008D +S315E07752800000000000000000000000000000400081 +S315E077529040000000000000000000000000000480ED +S315E07752A000000000000040400040000000000000E1 +S315E07752B00080000000000000000000000000000011 +S315E07752C00000000040008000000000000101002C93 +S315E07752D0B900000000404000000000000000100028 +S315E07752E00000000000000008000800000000200031 +S315E07752F000000000400000000000006000000000B1 +S315E077530000000008002000200000000000000000F8 +S315E077531000000000000040000000000000000000F0 +S315E077532000400000000000400000000000000000A0 +S315E07753300000004000000000104000000000000080 +S315E077534000000000000000000020200000002000A0 +S315E077535000000000200080002000000060000010C0 +S315E077536000A0001000100000000000200000208060 +S315E077537000000000001020C0000040002000400040 +S315E077538000000000000000100000201080000040C0 +S315E07753900000000080000090000000200000002060 +S315E07753A0007000C00010A00400000000100000406C +S315E07753B00410002000000000000040A0000000007C +S315E07753C0000000000000000000404000006004009C +S315E07753D000A0000000000000000080000000000050 +S315E07753E00000800040000000004000002000000040 +S315E07753F084000000000400000000000000000400C4 +S315E077540000800000000000000000800000000040FF +S315E077541000040400800000400040004000000000E7 +S315E0775420800000000000008080400000000000005F +S315E077543000000000000000000000000000200000EF +S315E077544000004000000080403DC50080000000007D +S315E0775450000000000000000000004000404000002F +S315E07754600040000000002000004800000000000037 +S315E077547000000000000020402000004000000040CF +S315E0775480000060400000000000000060000020009F +S315E07754900000000040000000200000000000080047 +S315E07754A02800000000000040000000001000000027 +S315E07754B0000000000000000000000000401000003F +S315E07754C0001000000000000000001000000000203F +S315E07754D000000010000080208000004000000000FF +S315E07754E020000000000000100040000000400000AF +S315E07754F0004000800040000000000000000000400F +S315E07755000000004000000004800000000004004036 +S315E0775510002000000000404000000020000040002E +S315E077552000000000200000000000000000200020BE +S315E077553040A010000000004000204000000020005E +S315E0775540000400200000802000000020008000801A +S315E07755500020000000000000C000200000000000EE +S315E077556000000004800040004000000000000000DA +S315E07755700000000000000000000440000080040006 +S315E07755800080000000048000000000000004400076 +S315E077559000000000000000000000000000000000AE +S315E07755A0400000000000000000800080000000005E +S315E07755B080000000400080000000C00080004000CE +S315E07755C00088B00000000000000000000000000046 +S315E07755D00000000000082000000000000000400006 +S315E07755E0000000200000000000002000000000001E +S315E07755F000002000000000000000000000400020CE +S315E07756000020400040000000400020080000200015 +S315E07756100000000000000008000000000020000005 +S315E07756200020400000000040000000000010000865 +S315E0775630100000000000000000600020100000006D +S315E077564000000000000010000000000080400040ED +S315E0775650400030008000000000000030001090002D +S315E0775660200000004000000000000000000040003D +S315E07756700000200020006000002000000000048089 +S315E077568000400000000004204004000004400400CD +S315E077569000208000044004808020000000000000A5 +S315E07756A0000080000000000080000020040004A0D5 +S315E07756B02000000404000000000000000000400421 +S315E07756C000000000000000000000800000000004F9 +S315E07756D00000040040008000002000000000000485 +S315E07756E00080000000000000400404000000000095 +S315E07756F00000000080640004000000000000000065 +S315E07757000000000400000000000400008000004074 +S315E077571000408000000080000000000000000000EC +S315E077572000000000000000000000000000000040DC +S315E0775730000000000080000000000BE7000040005A +S315E0775740000000000000000000000000200020407C +S315E077575000000000000000000000000000000000EC +S315E0775760000000400040000000000000000000005C +S315E0775770000000000000000000400000000000008C +S315E07757800000004000080008402040002008004064 +S315E0775790000000000000000000000000002000008C +S315E07757A0002008000020080000000000000000004C +S315E07757B020000000000000000000400000402000CC +S315E07757C000000000000000801000000000000000EC +S315E07757D020400000000020000000001020000000BC +S315E07757E0002000800000000000000000000000803C +S315E07757F00000400000004040002000200004000048 +S315E07758000000204000000000000040040000800017 +S315E077581000400000440004400080000000000020C3 +S315E077582000000004000000000000000000200000F7 +S315E0775830000000200000000000804020000080008B +S315E077584000804000400000002000000000000000DB +S315E077585004804000000000000000000000800400A3 +S315E077586000000000000040000000208000000000FB +S315E077587000008480000040000000C08000800000C7 +S315E07758800000808000000000000080000000C0007B +S315E077589000000000000080008080000000004000EB +S315E07758A0808040000080000000800000004000001B +S315E07758B0800000CA81000000000000004000000080 +S315E07758C00000004040000000000000682000006013 +S315E07758D000004008000000400000000000000020C3 +S315E07758E040000040004800000040400000002000F3 +S315E07758F000400000200000000040000000000000AB +S315E077590000000000000000000000000040000000FA +S315E077591000404000000000000000000000000000AA +S315E077592000000000400008000800000000000000CA +S315E0775930008000000000000000000000008000000A +S315E077594000000000000030000000000000000000CA +S315E077595000000000004010000080000020000008F2 +S315E0775960000000200000000000000010004000303A +S315E0775970001000000040000000000000000000106A +S315E0775980000084000010000000001000A000000076 +S315E077599020000050400004000000001000400000A6 +S315E07759A00000000020000000040000600000008096 +S315E07759B02000000000000004000000000000000066 +S315E07759C0008000000000000060000000200020005A +S315E07759D0000000000000400000000000000000002A +S315E07759E004000040000400000000400000000000D2 +S315E07759F000400004000020000000000000000000E6 +S315E0775A0000000000004000000000000000000000F9 +S315E0775A100000000000000000400000008000004029 +S315E0775A20000000400000000000000000F7D600808C +S315E0775A30C0400000C00000400000400000000000C9 +S315E0775A4000200000000800000000000020000000B1 +S315E0775A5000000000000000000008002000000000C1 +S315E0775A600000002000002000000020000000002059 +S315E0775A700000202000000060000020000008000001 +S315E0775A800000000000200000002000002030000029 +S315E0775A9000304000202000000000000000002000D9 +S315E0775AA00000400020000080000000000000004079 +S315E0775AB0202000000000001000200000D000400009 +S315E0775AC02040001000000000000000108000200059 +S315E0775AD00040000000000000A02000000000200049 +S315E0775AE00000200000402000000000008440040011 +S315E0775AF060000000000000000000000000000000E9 +S315E0775B0000008000000040600000000000C0000058 +S315E0775B100000004004000000800080400000400064 +S315E0775B200020000024000000000080044000800090 +S315E0775B300040000000000000004000000000000088 +S315E0775B4040000000400080000040000040800000F8 +S315E0775B500000000000000000000000000000008068 +S315E0775B600000008020000000800000000000400078 +S315E0775B708000000000400000800000000000000088 +S315E0775B8080000000000000000000800000008080B8 +S315E0775B900080400000008000200080000040800008 +S315E0775BA00000C08000C51F00000020000000000054 +S315E0775BB00000000000000000000000000040400008 +S315E0775BC00000200040000060004000000020000058 +S315E0775BD00000000000000040402800400000004040 +S315E0775BE000000040000000000000004000000000D8 +S315E0775BF00000000000004000400000000040000088 +S315E0775C004000000000000000005000004000000067 +S315E0775C10000000000000080000000000008000009F +S315E0775C2020004000100060000000000020084000DF +S315E0775C300000001000000080000000000040000037 +S315E0775C400000500000008010400000104000400047 +S315E0775C5000000000000000000000000000000000E7 +S315E0775C6000000000000020000000804000000400F3 +S315E0775C700000000004000000000010000000008033 +S315E0775C8000000050001010000000100030001000F7 +S315E0775C90002000000420000000000400000000005F +S315E0775CA004200000000000000000800040000004AF +S315E0775CB08000008000400040000000000000040003 +S315E0775CC000A0008000044000000000400060004033 +S315E0775CD00044400040000040004000C0040000401F +S315E0775CE00040008000800000004400C040A0000033 +S315E0775CF00040804080000000000040000040004007 +S315E0775D000000000000000000000000000000000036 +S315E0775D10000000000000000000000000000093147F +S315E0775D200000004000004000004000200010000026 +S315E0775D3040402020404028084000400000200800EE +S315E0775D404840200000000020000040200000686006 +S315E0775D50080040600000606000004040204000405E +S315E0775D60200060600040204800000040204020206E +S315E0775D70480040000808400020004000002000006E +S315E0775D80600010006020004028200000180000081E +S315E0775D90400810004000600030208000500010007E +S315E0775DA0704020200000000070900000B010A080C6 +S315E0775DB040801020405000001000002050B00000D6 +S315E0775DC0704010009000004080C0206000600000C6 +S315E0775DD00020000000000040004000508400E460AE +S315E0775DE004204000A4C410600004200044C400E00E +S315E0775DF00400200044A440C0042044700050808012 +S315E0775E0000004400000074401060040004200400A1 +S315E0775E102020440000200400000024006064808491 +S315E0775E2000002000008040A0040080804040000011 +S315E0775E3060400060004000004404208060440084B5 +S315E0775E4000008000404000400040048004044004A5 +S315E0775E5040C0008400000400404000840000000455 +S315E0775E60800000C4000084400000404080C000000D +S315E0775E700000000040000040000000000000000045 +S315E0775E800000008000000000000040000000C00035 +S315E0775E904000C040010080DD7900400000600000EE +S315E0775EA00040000000004000200060080000002865 +S315E0775EB0084000000000400828400000000000206D +S315E0775EC04020400000086000000800202000200005 +S315E0775ED00000004020000020600020000000204005 +S315E0775EE00008006808004020400808400800006085 +S315E0775EF020002040200020406010005030402048AD +S315E0775F00204020100800100040204008080020803C +S315E0775F1000000030004060000060400000208820EC +S315E0775F2000C0C00000B0B040800020D05000300004 +S315E0775F30003000100090A0102050001050800060D4 +S315E0775F4000C0C008000060000000000000400000CC +S315E0775F504000004084000060600000448400002038 +S315E0775F6020040044044084204020044084504420A8 +S315E0775F702000440050008000C41020000030C004A8 +S315E0775F80542004008000244004402400200044206C +S315E0775F9004200080C02400800020800480408000B8 +S315E0775FA000008000600440000044C0004024802068 +S315E0775FB000200020C00040808440040040000000BC +S315E0775FC04400400000400420440020804480402480 +S315E0775FD0408000004080040000804400008020007C +S315E0775FE00080C0004080004000C080400000400054 +S315E0775FF0C00000808000008080000000800000C044 +S315E0776000800000A08040008080000000C000008013 +S315E0776010F82D00000000000060400000002000003E +S315E077602040C020000000282860400000002020289B +S315E07760304040000000400020000000000028686033 +S315E0776040200000000820606020000000000060600B +S315E07760500000000000206060000000000808606033 +S315E07760600000002008084040000000002020404063 +S315E077607000000010302040400008000020000800B3 +S315E07760800000080860600080000000002060800063 +S315E0776090001000806020300000081810C0E0200073 +S315E07760A000001050F06000000020101000C02000C3 +S315E07760B000203050C0C0000000002028C04000001B +S315E07760C00040202000800000000070700080000013 +S315E07760D00424606000800000042460405000800063 +S315E07760E00434E0C0400000001444E0600000002083 +S315E07760F01010C000200004343030E0800000042423 +S315E077610020206000000004442020208040000464C2 +S315E07761106420A0800000004040608080000000801E +S315E07761206060400080000044E0A00000000004C406 +S315E0776130E0C00000000000404440400004040060F6 +S315E0776140C0C0C00004042020C0C040000044000066 +S315E077615080804000044460608080000000404040DA +S315E07761608080000000804040400080000000808012 +S315E0776170000000000040C0C0000000000040C0C042 +S315E0776180600000000040C08100B73A008000000060 +S315E0776190602000400400000040440000000028280A +S315E07761A060684040000020206828414008000001F0 +S315E07761B02028004000006828406000000800606002 +S315E07761C0404002001000C04220300080000040408E +S315E07761D06040000008084848006004000008404C2A +S315E07761E000600000002040400000000000305010C2 +S315E07761F041400000400110100040000860700050F8 +S315E0776200808000002020C0D002000000606220205D +S315E077621000800818D050A0E000001010E0E02020C1 +S315E0776220040010101014008000003020D0D0808059 +S315E077623000000000A8E8410008000001202880C09F +S315E077624000001010401000800404242060200280B3 +S315E07762501400A062000000000404A44080800000DF +S315E07762600400E040602004001010D05400000000E5 +S315E07762702424B0B0808004042420606001000C04FC +S315E077628024212028008004006464A0200080040490 +S315E07762904440E060028014042062607000000404E9 +S315E07762A0E4E080A000000404E0E4408004002000FD +S315E07762B04040406004040404E0E0C0C000002424C9 +S315E07762C0A020C1C0080004058008808004006060D3 +S315E07762D0A020808000004040C0C08280100000028D +S315E07762E04050000000008080808000000000C040C1 +S315E07762F0C0C004002000C0C4C0C000000000808099 +S315E077630080802CBE000000000020204000000000C6 +S315E07763100040400000000008282860404000000068 +S315E07763202068604000000000002000000000004880 +S315E07763306860000000000820606000000000000050 +S315E07763404020200000000000604040000000004848 +S315E07763504800000000000840484040000000004048 +S315E07763604040000000000038184040000010300040 +S315E07763700800000800382850008080000030307030 +S315E0776380C00000000040402000000018084050A000 +S315E07763908000000000E06020200000101010100060 +S315E07763A00000000020D0C0000000000000A8A80090 +S315E07763B00000000000202080800000101010100000 +S315E07763C00000002020206000000000002000000090 +S315E07763D0000000202080800000101400E0202000DC +S315E07763E0000000D0D000000000143010308080002C +S315E07763F00000042040000000002024200080800474 +S315E0776400040464A080000004040044606000000097 +S315E0776410002424602000000000A0E4A0000000042F +S315E077642004646400000000000000404000040400BB +S315E077643004E0E0C00004042424E0A04080000000EB +S315E077644000808000800000246020A00080000000AB +S315E077645040C0C0808000000000400000000000805F +S315E077646080800000000000C0C0C04000000000400F +S315E0776470C0C00000000000808080806C21000000B2 +S315E0776480000020200040000000004040004000006F +S315E07764900808606840400000200060204040000027 +S315E07764A0000020200000000060084040000008005F +S315E07764B0604040400000000060402020000000007F +S315E07764C040404040000008086848000000000800A7 +S315E07764D04840000000000000406000000000181807 +S315E07764E00808404000001010000000000008582817 +S315E07764F05060808000003030D0C0000000006060DF +S315E0776500202000000010D05000A00000101060603E +S315E07765102060000010101010008000003020D0C0FE +S315E0776520800000000000A8A80000000000002020FE +S315E077653080800000400000100080000024002020CA +S315E0776540808004002424000000000000240080807E +S315E0776550000010106020202000000000404000007E +S315E07765600004341450B0808000002400606000009E +S315E077657000002420002000800000600480208080D6 +S315E07765800000400440400000000024244040000022 +S315E07765900000C48000200000040440C440000000EE +S315E07765A0000040404040040404046020C0C000007E +S315E07765B02424202040C00000000000000080040072 +S315E07765C06060206000800000404040C080000000AE +S315E07765D0400040400000000080008000000000009E +S315E07765E0C040C040000100004080804000000000CD +S315E07765F080008000971E0000808000202040000009 +S315E0776600000000000080000000080860604040005D +S315E0776610000020606040400000000020000000009D +S315E077662000486060400000000040404040000000C5 +S315E0776630004040200000000000404040000000009D +S315E077664000484800000000080048400000000000CD +S315E077665000404000000000081800004040000000BD +S315E077666000101000000800201040508080000000E5 +S315E077667020C0D0000000004040000000001000403D +S315E0776680D0A080000000006060202000001010108D +S315E077669010800000000000C0C0004000000000A8A5 +S315E07766A088000000000000202080800000000000C5 +S315E07766B000800000000004202000000000000400B5 +S315E07766C00000000000000480800000000000C02089 +S315E07766D020000000004040000004001430101080D5 +S315E07766E080000000040000000000002024200080E5 +S315E07766F08000000460A08000000000044040400075 +S315E0776700000404202000000000040480C420000078 +S315E07767100000004444000000000000000000000490 +S315E0776720040004202080000000242460200000007C +S315E0776730000000000000000000202020A0000000FC +S315E0776740000000C0408080000000400000000000AC +S315E077675000000000000000000040404040000000DC +S315E0776760000000400000000000000181806ADC0044 +S315E0776770000000000000404000000000000000003C +S315E0776780000000006828004000002020282800400C +S315E07767900000000020200000000060280060000074 +S315E07767A0080840200040000000004000000000009C +S315E07767B000004000000000000000404000000000BC +S315E07767C0080048400040000000004040000000001C +S315E07767D00010400040400000101000000000000864 +S315E07767E038080000000000003030C0C0000000002C +S315E07767F04000002000001000D0D06060000010104C +S315E0776800606000000000101010104040000030106B +S315E07768104050808000000000A0A00000000020002B +S315E07768200000000000002000203000000400640033 +S315E0776830202000000400200000400000040004004F +S315E077684080400000040040442020000010104040C3 +S315E0776850000000042424000080000400002040208B +S315E07768600000040020202020008004006460A0203F +S315E0776870000000004044202000000000040420606F +S315E0776880000000006064A0A00000040460640000DB +S315E0776890000000004000004004000000C08080C097 +S315E07768A000000404800080C000000404800080803B +S315E07768B004004000808080800000400040400080F7 +S315E07768C000000000004000000000008080800000AB +S315E07768D00000C0C0808000000000C080C0C000001B +S315E07768E00000408000800C7D0080000000000040C2 +S315E07768F040000000004040000000000020284800EB +S315E077690000000000002820400000000000000000A2 +S315E07769100000004840400000000808206040000082 +S315E0776920000000004000000000000000400000008A +S315E077693000000040400000000008004800404000AA +S315E0776940000000400000000000100008080040004A +S315E07769500000000000000008000030400000000062 +S315E077696000000020400000000040402000000000CA +S315E077697010401080800000000020600000000010CA +S315E0776980101010404000001020104080800000205A +S315E077699020A080000000000000200000000000003A +S315E07769A020202000000004000020200000000400E2 +S315E07769B02000000000000400008080000010100432 +S315E07769C00020200000001040400000040014000082 +S315E07769D000808000040000204000000004002000D2 +S315E07769E00080800000000480800000000004002022 +S315E07769F02000000000000060200000000084808016 +S315E0776A000000000404206000000000000000404021 +S315E0776A1000000400048080C000000004048080C089 +S315E0776A2080000000008080808004040440808080BD +S315E0776A308000000040C0C000000000000040000079 +S315E0776A40000000808000000000000080C0000000A9 +S315E0776A500000000000000000000000808000003B9E +S315E0776A604600000000000000000000000000000083 +S315E0776A700000000000004868404000000000480839 +S315E0776A804040000000002020000000000008404061 +S315E0776A9000000808404040400000000040402020C9 +S315E0776AA00000000040400000000000004040000089 +S315E0776AB00000000840480040000000004040000029 +S315E0776AC00000181858184040000010100000000029 +S315E0776AD0000810101000000000003030D0C0000031 +S315E0776AE000006040000000001808C0D000000000F9 +S315E0776AF00000400000200000101010100000000099 +S315E0776B0010004040800000000000A0A000000000D8 +S315E0776B1020000000000000002000001000000000C8 +S315E0776B20240020200000000004041000000000008C +S315E0776B301410000000000400040420200000000088 +S315E0776B404440000000001414000000000000040038 +S315E0776B5000000000000024000000000000000000B4 +S315E0776B6000000000040404040000000000000404B0 +S315E0776B700000000000002024A0A0000004044044A8 +S315E0776B800000000000000000000004000000400064 +S315E0776B900000000004048000000000000000800090 +S315E0776BA00000040000000000000000000000404004 +S315E0776BB00000000000000000000000000000808078 +S315E0776BC0000000004000808000000000C0808080E8 +S315E0776BD00000000000000000216F000000000000C8 +S315E0776BE000000000000004002000000000000060C4 +S315E0776BF0404040000000006840404000010000400F +S315E0776C00400000000008004040000000004040409F +S315E0776C104000000002405020C000000000404000E5 +S315E0776C200000000000004000000000000C406840D3 +S315E0776C304000000000404000000000181818184097 +S315E0776C40400001101010500000080018184050005E +S315E0776C500000001010C0D0000000024040000000A5 +S315E0776C60000818C0C08080000000001070000000A7 +S315E0776C7000001410200000000000000000008000F3 +S315E0776C8000000020800000000100200040000000A6 +S315E0776C900000200000000000000000200000000057 +S315E0776CA002001010800000000010108080000000C5 +S315E0776CB000040020000000001004600000000014CB +S315E0776CC00400008080000000000000000000010062 +S315E0776CD028004000000000000000000000040404E3 +S315E0776CE00400000000040604140080000004048415 +S315E0776CF08080000000000000000000000000000433 +S315E0776D00200000000400040000000000000400807A +S315E0776D108000000001000880C000000404000080C5 +S315E0776D2080000000000000C00000000002001000B4 +S315E0776D3000000000000000000000000000004000B6 +S315E0776D4000000000040020000000000000000000C2 +S315E0776D5000FA7600000000000040000000008004A2 +S315E0776D60002060400000002028404000000000201E +S315E0776D7048200000000100002040000000004000AD +S315E0776D80006000000800400060000000000260102C +S315E0776D902080000000000060402000000000002016 +S315E0776DA02060000000044020200000002000002042 +S315E0776DB00000000008202010004000013000085055 +S315E0776DC00000000010603000000000000020E000C6 +S315E0776DD00000000220401020000000000080200024 +S315E0776DE00000101040B02040000010040030200072 +S315E0776DF000002000004040C000002000E000004096 +S315E0776E0000012000284040000000601000400000AC +S315E0776E1000000044402000000402403400C0000037 +S315E0776E200004A05480400000000000646000000089 +S315E0776E300000C0302000000404006000000000007D +S315E0776E400420204000000001042820404080000014 +S315E0776E50402020000080000400400000000000028F +S315E0776E6000500080800000004480000000000000B1 +S315E0776E700000000000000000402040000000000015 +S315E0776E800040000000000004C00000400001000858 +S315E0776E9000C040000000400000C000000000004055 +S315E0776EA0C000000000020050004000000000000033 +S315E0776EB000000000000000400000000000040060D1 +S315E0776EC06000000000000040000064A100808000C0 +S315E0776ED000000000000000008400204000008000F1 +S315E0776EE00000000000000000000000400000010004 +S315E0776EF008004000000000002000000000000000CD +S315E0776F000000000000000200104080000000000052 +S315E0776F1000000000000008004000000000000400C8 +S315E0776F2020400000000000004040000000000820FC +S315E0776F30400000000100080040000000000000402B +S315E0776F400000000000001030000000000200100092 +S315E0776F5080000000000040C0000000001000000044 +S315E0776F6000000000141020C00000000000000000C0 +S315E0776F70000000000000000000000100082040004B +S315E0776F8000000000402000800000040020400080E0 +S315E0776F9000000200100080000000001040000000B2 +S315E0776FA0000014008040000000000400200000008C +S315E0776FB00000200080800000040000000000000050 +S315E0776FC00500080040000000040000008000000093 +S315E0776FD00004000080800000060410408000000076 +S315E0776FE004000080000000000400C0C0000000003C +S315E0776FF00400000000000400000000C00000000468 +S315E077700000000000000001040800400000000000D6 +S315E077701000400000000000000000000000000200D1 +S315E07770201000800000000000000000000000000073 +S315E077703000000100000004002000000000000000CE +S315E0777040000000DCE6000043031C1C6060000003E0 +S315E077705003181C40600008070738384040000007EF +S315E0777060073838C0C000000607303880C001010E07 +S315E07770700E7070888001010E0E7070808001010CB1 +S315E07770800E6070008003031C1CE0E0000803031C1D +S315E07770901CE0E008080303181CC0E008000707387F +S315E07770A038C0C0000007073838C0C0080006073088 +S315E07770B03880C811010E0E7070888011110E0E702F +S315E07770C070808011010C0E6070008803031C1CE051 +S315E07770D0E0000003031C1CE0E010080303181CC063 +S315E07770E0E0000007873838C0C0000007073838C0A7 +S315E07770F0C008000607303880C001010E0E70708038 +S315E07771008001010E0E7070808001010C0E607000B8 +S315E07771108003031C1CE0E0000003031C1CE0E00096 +S315E0777120000303181CC0E0000007073838C0C0002A +S315E07771300007073838C0C000000607303880C0013E +S315E0777140010E0E7070848001010E0E7070808001E2 +S315E0777150010C0E6070008003031C1CE0E000000366 +S315E0777160031C1CE0E004000303181CC0E0000007E2 +S315E0777170073838C4C4000007073838C0C00000862F +S315E077718007303880C401018E0E7070848001018EDD +S315E07771900E7070808001018C0E6070008003831C16 +S315E07771A01CE0E0000082821C1CE0E000008282188E +S315E07771B01CC0E0000086863838C0C000C283000075 +S315E07771C0000000000020000000000010000010081A +S315E07771D000000020000000200000200000000000F2 +S315E07771E0000020000000002000002020080020207A +S315E07771F00000002000000000000000000000000012 +S315E077720000002000000000000800000008000000F1 +S315E07772100000000000000000000000000000000011 +S315E077722000000000080000001030000810000000A1 +S315E07772300010000010108000101000001000000011 +S315E07772400020000000200000202000000000001051 +S315E07772504000100800000800000000200000202011 +S315E07772604000200000000000000008000000000059 +S315E07772700000000080000000000010000000200001 +S315E077728000000000000020600000000000002060A1 +S315E077729000002000000040000010000000000040E1 +S315E07772A000300000203000401000400020200040F1 +S315E07772B00000400000200000202000046060040009 +S315E07772C06000000040000000602000000040000001 +S315E07772D0602000006060000060200004C0000400C9 +S315E07772E0004000004040000040C4000044C0202039 +S315E07772F04000000000402000C00000000000006071 +S315E077730004004000000020408000400000000000BC +S315E07773100000004000004000000000000000800010 +S315E07773200000400000000000000040400000C04040 +S315E07773300000404000F26700100000000000020005 +S315E077734000000000000000000000000000000000E0 +S315E077735000000000000004200000000000000000AC +S315E07773600000000000000000200000000000002080 +S315E07773700000000000000800000000000000008028 +S315E07773804000000000000000000000000000000060 +S315E07773900000000000000000000000400000080048 +S315E07773A080000000000000000000000000100000F0 +S315E07773B0000000000000000000000000000000046C +S315E07773C00000000000000000000000000000000060 +S315E07773D000400000000000002000000000000000F0 +S315E07773E000040200000080000000000000000000BA +S315E07773F000000020000000201000000000000000E0 +S315E0777400000000008000000000000000000000009F +S315E0777410000000000000000000000000000000000F +S315E077742000000000001000000000000000000000EF +S315E077743000000000000000000000000000000000EF +S315E077744000000000000000000000000000000000DF +S315E0777450000000040020000000000000004000006B +S315E0777460000000000000000000000000000040007F +S315E077747000000000000000000000080000000000A7 +S315E0777480000000000000000020000000000000007F +S315E0777490000000000000000000000040000000004F +S315E07774A000000000000000000000000080009F1749 +S315E07774B000106040000040086000200000004008AF +S315E07774C00000400000200000480000400040208097 +S315E07774D000400000002000000020080080004020E7 +S315E07774E000400000800040204800600060002040B7 +S315E07774F000006000A8004000000048400040088097 +S315E0777500000040004000000000000020400028080E +S315E0777510802080005010000000000000000020A0CE +S315E077752050106800188000481080200000A80000FE +S315E0777530602040000000004008003000000040680E +S315E0777540002000002088501080001000C0001080D6 +S315E07775504000D8800000A080008000002000000076 +S315E077756020A000000000300000400000004020002E +S315E07775702040040020840000000000000044A000C2 +S315E0777580400480900004B0308000844000800000A2 +S315E0777590400400C0208000A0000480201000000096 +S315E07775A0000080000000802000000400202000C05A +S315E07775B0208040400000000080000000600000006E +S315E07775C0400000008000000000000000040080001A +S315E07775D0800000000040000080000000004000804E +S315E07775E040400400004000C000400000000080807A +S315E07775F0000000800000408000000080004080802E +S315E077760000408000004000000000C040000000809D +S315E0777610408020008080000000000000400080006D +S315E077762000000000C0600075F900800000000000EF +S315E07776300000040000000040482000000000002021 +S315E07776400020000000000020000008000000000095 +S315E0777650800020000000000000000000200000000D +S315E077766020800000004000000080000000A00000BD +S315E077767000000040400040000000000000000000ED +S315E07776800000400000200000400880200050000005 +S315E0777690200000000000000040304010001000405D +S315E07776A00810200040008000208000600000000085 +S315E07776B00800002000004000480020002000000875 +S315E07776C03000000400200000000000C00040E00029 +S315E07776D080004080C020000000200080000000107D +S315E07776E00000800000000420204004400000800471 +S315E07776F080000000000000C040800000002000808D +S315E07777001080C00440000000400004000020200004 +S315E0777710200000802000000000A08000000000002C +S315E0777720200000002000A00000800080408000005C +S315E0777730C0004000006000000040000080000000CC +S315E07777400000400084000000800000008040800058 +S315E07777500000000080000000800008400000000084 +S315E077776000C00800000080000000000000408000B4 +S315E077777000800000008080008000400080004000AC +S315E0777780000080000000002000000000000080017B +S315E077779004002080400000800000400000808040A8 +S315E07777A072E700106000404000086020402000004B +S315E07777B00000004080400000000048200440004080 +S315E07777C000800040200000200000000008800000D4 +S315E07777D040002040008040004000480060200000E4 +S315E07777E02000400060080040000020080000000804 +S315E07777F00000E06000400000200000000000400844 +S315E0777800200080000080009000408040000000006B +S315E07778106080002800004880004000008000000873 +S315E077782020104000000040248040001000400020F7 +S315E077783000200000800000449080400010804000E7 +S315E07778401000C00810800000000000200000002033 +S315E07778508040802000000020000080204004004027 +S315E07778608000800080002000000002001000800089 +S315E077787024002080140090201420000000000020CF +S315E077788080000000804080C0008000000410000087 +S315E07778900000000000200080048000040000000063 +S315E07778A000402040000000000000000000100000CB +S315E07778B00000000000440000000080000000004067 +S315E07778C080000004402000400000800080000040F7 +S315E07778D000004000040000C0000020C00060000007 +S315E07778E00000C0400000800040000000000040003B +S315E07778F040400080000000000020404000400080CB +S315E07779004000C08020C0000000008000000000003A +S315E07779102000000000400020008AB00000404000D0 +S315E0777920200040202000004000000050600000204A +S315E077793000601000000020000060002028000000B2 +S315E07779400020000000204030080040000080000062 +S315E07779500008000000002000000000004000006002 +S315E0777960000000608020000080200000004040009A +S315E07779700000000000000008000000000040001052 +S315E07779808000C00000080090008000300000806032 +S315E0777990900080000080004060000040004020407A +S315E07779A060080080209000A000C050008000104062 +S315E07779B0440000000000C000204000000040208026 +S315E07779C080000040002000800000002080200080BA +S315E07779D00020006000000000002000000440000066 +S315E07779E000A0000400202000806020042000804072 +S315E07779F00000008040000480000000400000002086 +S315E0777A00000004200000800000000400200000A0B1 +S315E0777A108000042000800000002000204020000045 +S315E0777A2000806000000000400040C00020000000B9 +S315E0777A30800000002000A0008120C0000400000044 +S315E0777A4000000080004080000040000000802000B9 +S315E0777A50408010C00000A000200000808000000079 +S315E0777A60000000C00000800020818040C000804098 +S315E0777A704000400000000080400000000000C000A9 +S315E0777A80002000000000001000814080208020C0A8 +S315E0777A900000F0950010A08000084010000000007C +S315E0777AA00000002800000000100000004020005091 +S315E0777AB00000000000000000004000000000000029 +S315E0777AC00000800000000000200000000000200099 +S315E0777AD04040202000000000000000000008007011 +S315E0777AE000400040000000008020000040000000D9 +S315E0777AF00000000040800000802000200000004069 +S315E0777B000008100040000000002800084000000050 +S315E0777B100000800030002000800000000000004078 +S315E0777B2000002000804000200000A0000000000058 +S315E0777B300080100040008000400040000004000014 +S315E0777B400000000090000000400000008000A48064 +S315E0777B5000800000000020A0000000C000040000C4 +S315E0777B6040000040804000000000000040200020F8 +S315E0777B700000800000200000002040008000000028 +S315E0777B8020000000C0004000000040000000200018 +S315E0777B9080008000000080000000200080800000E8 +S315E0777BA08080200000000040000000000040004098 +S315E0777BB0000000000000C400408000004000800024 +S315E0777BC040800000C04000408000000000A0000038 +S315E0777BD00000400000000460800080000000810023 +S315E0777BE00000000000000000002000008000204038 +S315E0777BF020002000C00060000000800080000000C8 +S315E0777C000000600000000000008000E38100005083 +S315E0777C10004000284000000000000000601000608F +S315E0777C20100020001000200050206000200020087F +S315E0777C30000000200000002010408800004000008F +S315E0777C400000000000000000200000200000400057 +S315E0777C5000600000200020081000802000400040EF +S315E0777C604000200040000000080000004000C0000F +S315E0777C7000102080608800005000188010600000B7 +S315E0777C8000A0803840080080004040000060000097 +S315E0777C906000482000000080A040A000100080002F +S315E0777CA04010C020002400004080008000404080E3 +S315E0777CB00020400000000024000000001080002033 +S315E0777CC000C0200020C0000480000020000044208F +S315E0777CD000A020808400240020008000402440001B +S315E0777CE0C0000000C0004020A00000040000200093 +S315E0777CF000202040042000008020000000C40020FF +S315E0777D00208000C020048020008000800000006092 +S315E0777D100000A0000000800000C0A0404000000006 +S315E0777D204000800000002040C02020810040800491 +S315E0777D3040000000C00000000040000000000000A6 +S315E0777D4080204000409000008000204000008004C2 +S315E0777D5060800080008080000000A000C000800086 +S315E0777D600040000000802000C000204040802000D6 +S315E0777D700040000000000000100001600000802055 +S315E0777D80A0408000D4EC00801000600020004060C6 +S315E0777D9000005000001000000040007000084068C6 +S315E0777DA000204020406000500000000000000060A6 +S315E0777DB000002000004000002000880040000020FE +S315E0777DC000002040002040200000002040400000D6 +S315E0777DD02000600860A0000008400048000000002E +S315E0777DE060000000104000004000E02000E00080E6 +S315E0777DF020000000207080A0108840804010A0000E +S315E0777E00200020300000C0000040000068A050400D +S315E0777E10A804006000402010004000C00000000089 +S315E0777E2000008010C04080409040204000600040D5 +S315E0777E30800000800080200080840040A000000061 +S315E0777E400040A00440804000602000E00020000071 +S315E0777E506000600084200010400020A040600000B1 +S315E0777E6044600000400000040000208000400040AD +S315E0777E7000C0004020608000206080200000000085 +S315E0777E800020004020C000802000804000004000B5 +S315E0777E9040C0010060240040200020C0000024207C +S315E0777EA04000802000C40000004000400040000011 +S315E0777EB0C080400000A4400020804000400080045D +S315E0777EC02080000000000000409000002004C00001 +S315E0777ED040004060800040C0204000200060008085 +S315E0777EE06090008000004000400020000040208045 +S315E0777EF0400080408080008040800060907AA000DB +S315E0777F002000000020000000204000004000100024 +S315E0777F100000000000002000104040000000200034 +S315E0777F200000000000000000400020000000400054 +S315E0777F300000002000000000000020004000200044 +S315E0777F400000000000000000000000002000008034 +S315E0777F500800000000000000004000000800000074 +S315E0777F600040000000004000800000000080000034 +S315E0777F7020000080008040200000000080106080B4 +S315E0777F802040000000080000600850000000200054 +S315E0777F900000008000800000000000000040000044 +S315E0777FA01000400000000020000000008000000084 +S315E0777FB000000020400000008000000044000080C0 +S315E0777FC00000004020000000006000602004000010 +S315E0777FD00000002000000000000000000000000024 +S315E0777FE00000000000000080400020400000000014 +S315E0777FF00020402000000000000000000040000064 +S315E0778000800000200000000000000040200004000F +S315E0778010200000200000002480000040002000407F +S315E0778020000000000000400000000040004004002F +S315E0778030204000404000000004C08000000000209F +S315E07780404000008000800000400000000000000053 +S315E077805000200000002040000060000000000000E3 +S315E07780600000200000000020408000000040200053 +S315E07780700000800000008A640000000040000000F5 +S315E077808000000000400000000040000000201000E3 +S315E077809048200000000060400000402000002020DB +S315E07780A00000204000000000000020800000400033 +S315E07780B00000200000000000000000000000400003 +S315E07780C0000000200000002000004040000008008B +S315E07780D0000020000800008040000000400000001B +S315E07780E02020000020200040001040000000000023 +S315E07780F080204000000000000000000000000080C3 +S315E077810060000000040060000000000040400000CE +S315E07781100000800000001000002000000040000012 +S315E07781204040806000000000208000008000004032 +S315E07781300000000040000000004000000000400022 +S315E07781400000000000008020002000000040800052 +S315E07781504004C000000040000000040000004040FA +S315E07781600000008000000000400000008020000052 +S315E07781700000000040000000802000000080400002 +S315E077818000004080000000002040008000000040B2 +S315E0778190000060008000400004200000400080007E +S315E07781A000000000100000000000000080000000E2 +S315E07781B000000000000000000080000000000000E2 +S315E07781C04000000080008000400040400040000012 +S315E07781D020009000800000008040000000004040D2 +S315E07781E00000000000008000000000000000E0AF23 +S315E07781F0AC000010002000004000000010000000F6 +S315E07782000000002060000040000008000020100019 +S315E07782100000001000000000008000000000002051 +S315E077822000000000080000000000080040000000A1 +S315E07782304000200000000020402000204000480059 +S315E0778240000000000000C0000000000000000050C1 +S315E07782500000000000A03000008000000000000071 +S315E07782602090800008404020100000006000002049 +S315E07782700000000000404020100080000000000071 +S315E0778280C000401000200000000040008010800011 +S315E0778290C000C000200000000000002000002000A1 +S315E07782A080000000000420800000400000A000204D +S315E07782B0400000A020000080402000000000000081 +S315E07782C00000005000002000002000000060000061 +S315E07782D0000080000020A00000000004000060009D +S315E07782E000A0008000000000000000008020200051 +S315E07782F0400440000080000000400020010040007C +S315E07783000000000000404080000000000000000010 +S315E07783100080004000004000008080408000000040 +S315E077832020C0000000000080C000002000000000B0 +S315E0778330000000000010200080048000400020400C +S315E07783400000008000000000000000005000804040 +S315E077835040000000000000000000000040800000C0 +S315E077836000808040000000105835008080000000D3 +S315E07783700040200000001000000000000010000020 +S315E07783804000000000400000200840000000400068 +S315E07783902000200000200808000000000000000010 +S315E07783A00000080000000000200000000000000048 +S315E07783B02000000820000000200008200000400888 +S315E07783C00000080000000000400040004000000088 +S315E07783D00000008000800000000000000008000038 +S315E07783E0082004082400A000000000000024100004 +S315E07783F00008400020080000200000000000200070 +S315E077840020000000000000801080000000040000DB +S315E07784100000602400002004800000240000A424EB +S315E077842000002004000024200400000004802000DF +S315E07784300420000000000004000000C00040002097 +S315E0778440040020000000202000000000400000002B +S315E0778450008020A0000000600000002000000040BF +S315E07784600000040000C004200000000000200000A7 +S315E07784708000004400000004000000000000640073 +S315E07784800000440000000400800040000400008003 +S315E0778490000040200000000000000000000000001F +S315E07784A00040040000040000000000040000000023 +S315E07784B0000000000060004000000080000000003F +S315E07784C0000000A0000020000000008000000060AF +S315E07784D0000000008000008000000000000000003F +S315E07784E0006C8C0000000000000000000000000037 +S315E07784F000004000000020008000004000200000DF +S315E077850000000000600000000000000000000000AE +S315E0778510000000002000000000400000200020005E +S315E0778520000000004000280000000020000000085E +S315E07785300008002000000000200000000020000076 +S315E077854000000000000000000020008000200010FE +S315E077855000600000108000200000000000000008A6 +S315E077856000240000002000000020200000000060CA +S315E0778570001000200000800000401000000010008E +S315E077858024000000204010000000040000C0040032 +S315E077859000000420000000000000040020000080B6 +S315E07785A0000000006000004000400040000000004E +S315E07785B0008000A0000000000040000000000000FE +S315E07785C0000000000000002000800000004020004E +S315E07785D000000060000080000000002080000000BE +S315E07785E000000000000080000000008000004400EA +S315E07785F000004000000000000000002000208040DE +S315E077860020000000400000000000000000000000AD +S315E07786100000400040000400000000002000000059 +S315E07786200020400400200000000000000000000069 +S315E077863000000000600080000000800000008040BD +S315E0778640600000200000000000000000000000004D +S315E0778650000000800000000000603DFD00000000A3 +S315E077866000300000001000000000200000200040ED +S315E0778670000000000000000000000000000000009D +S315E07786800000000000004000000000200800000025 +S315E0778690000020000000000000000000000000005D +S315E07786A00000002000000040000840200040000065 +S315E07786B0000040000020004000000020000000009D +S315E07786C010204000202000204030004010000000BD +S315E07786D008040004C000800C4000000060400040C1 +S315E07786E000000000004000048040000040000000E9 +S315E07786F000001000000010408000402000001000CD +S315E077870080000080000000000000200000004000AC +S315E0778710000000000000000000000000800000007C +S315E077872000002000000000000000000000000000CC +S315E0778730000000002000400020400000000000001C +S315E077874000004080040000000000000000C00080C8 +S315E07787500080008400000020008000000000800098 +S315E0778760440000004400200020400004A0000004FC +S315E07787700000000400000004000000000000200074 +S315E077878000000080000000000000000000002000EC +S315E077879000000000800400008000400080000000B8 +S315E07787A000800000004000A000800000E0000000AC +S315E07787B0400000000000408020800040002040001C +S315E07787C0000000C00000408020000020000000008C +S315E07787D00000004A8B001000002000000000200017 +S315E07787E000000800000010000000300000000000E4 +S315E07787F000000000000800000000000000202000D4 +S315E07788002000002000000000000000000000004883 +S315E0778810280000000840002000000000080048001B +S315E077882000000000400000080800000020404008F3 +S315E0778830200000000000000020400080400000009B +S315E077884000000000200008000040E000000840003B +S315E077885000004000000400000000086000000820E7 +S315E07788600000002080000000004480200000000027 +S315E0778870000000000040000000002000000000003B +S315E0778880008000000000000000000000008000008B +S315E07788900020040000048400000400008004400007 +S315E07788A0000000200000002000000000000000200B +S315E07788B00000000000000000040000000040000017 +S315E07788C000000000000400002000002000000020E7 +S315E07788D00000000040000400000004002000008053 +S315E07788E0000000000000000400000400800004801F +S315E07788F020004400240000004080000000000000D3 +S315E07789000000200020000000A040002000000000CA +S315E077891000000400204000000084240020000000CE +S315E077892000000020000000000000200000000000AA +S315E0778930000000000000000000208000000000003A +S315E0778940000000000000000000200000DFAA002001 +S315E07789500000004000000000000000000800000072 +S315E077896008000000000000000000000000000000A2 +S315E07789700000000000000000000000080000002072 +S315E077898040000000000000000000000000200040EA +S315E07789900800080000000000000008000000000062 +S315E07789A000084000000000400000000040000000A2 +S315E07789B0000020008000000040000000000000007A +S315E07789C00000000000000000A400000000000000A6 +S315E07789D00000000800240000080000000000000006 +S315E07789E000000000000000000080400000408000AA +S315E07789F0802000000000008000004020000000009A +S315E0778A000000244000000020000000000000000085 +S315E0778A104000000080000000000000000000000039 +S315E0778A200000800000000000000000000000000069 +S315E0778A3000000000000000000000000000000000D9 +S315E0778A400000200000002000000400000000840001 +S315E0778A500000000000000004000000008000000035 +S315E0778A600000000040A00000000000200400400065 +S315E0778A700000000000000000000000000000000099 +S315E0778A80440000A000008020008000000000800005 +S315E0778A9000008000000000000000000000000000F9 +S315E0778AA000000000000000008000000080800000E9 +S315E0778AB00000000080000000800000000000000059 +S315E0778AC02000800020C6E200800000000000000061 +S315E0778AD008000000000000002000000000400020B1 +S315E0778AE00000002000000020000000200000400089 +S315E0778AF000000000000000000000002000004000B9 +S315E0778B0000000800000000000000000000200008D8 +S315E0778B1000000000000000080000002008000008C0 +S315E0778B200000000000000000000000000000008068 +S315E0778B300000004000000000000840000008000048 +S315E0778B400000000000200000001000800000080010 +S315E0778B5000002800800000C000C040000040000010 +S315E0778B600000000000000000004010008000442074 +S315E0778B7000402004008000400000800000002000D4 +S315E0778B8000800000200004800000044000002040C0 +S315E0778B9000400040000080004000400000000000F8 +S315E0778BA00004000000000060004000400000000084 +S315E0778BB02000000020400060000004000000004034 +S315E0778BC0008040204000002000000080002020C088 +S315E0778BD000400080002000800020000000000000B8 +S315E0778BE00000008000002000000000008000000008 +S315E0778BF000000020200000000000000000000020B8 +S315E0778C0000000020A000000000C0000020008000E7 +S315E0778C1000000040400000000000000000800000F7 +S315E0778C202040000000000000000000004000200027 +S315E0778C3000000040200000000000000000807F6D0B +S315E0778C400010006010000060000000400800006837 +S315E0778C5000000000380000400020004000000000DF +S315E0778C600040000000000000004020000000000007 +S315E0778C704000000000000000084000004060080067 +S315E0778C80000000402048004000004000002000003F +S315E0778C900000000000000000000000000000000077 +S315E0778CA00000000000001000208000800000000037 +S315E0778CB00000800080000000000000804000000097 +S315E0778CC04000000000000000400000004000000087 +S315E0778CD000000020000000004000000000200010A7 +S315E0778CE0002000000020000080040000000400045B +S315E0778CF00004004000048004004400040080000083 +S315E0778D002000002000600400000000000000400022 +S315E0778D102000040000000000400000000000000092 +S315E0778D200000000000800000200000002400000022 +S315E0778D300020000000000000000000008000000036 +S315E0778D400040000000C000000000000400000000C2 +S315E0778D5000000000200020000000004000800000B6 +S315E0778D6000000000000000000000000000000000A6 +S315E0778D7000002000000004000000804000000000B2 +S315E0778D8004002400000040000000200000000000FE +S315E0778D900080400000000020000000400000400016 +S315E0778DA020200000402000000000000000800080C6 +S315E0778DB000000020000000BBC300000000100000A8 +S315E0778DC0000010000000000008001000000000001E +S315E0778DD02000000000004000002000000020000096 +S315E0778DE000000000000020000040000020000000A6 +S315E0778DF000002800000000000008200000000800BE +S315E0778E00000000004000000040000008000000007D +S315E0778E10004000080040000000000000004000002D +S315E0778E204000000000100000000000002000402411 +S315E0778E30200840000400400000044000002000C005 +S315E0778E40000040008000C0001400000000000080B1 +S315E0778E500000000000004000100000008000800461 +S315E0778E6000002000000000000000200000002080C5 +S315E0778E700000008000008000000000008000800095 +S315E0778E80040020040000000000008000800000005D +S315E0778E900040000000000000004020000040000095 +S315E0778EA0004000000000000004008000040080001D +S315E0778EB0800020000000008000000084200000642D +S315E0778EC00000002020000060200000200000204005 +S315E0778ED00000008000000000040000200000000091 +S315E0778EE000042000006000044020000080000000BD +S315E0778EF000208000002000800000008020000480B1 +S315E0778F000020004000000080A04000000000002024 +S315E0778F100000000000002000000000000060000074 +S315E0778F2000602000804000400020004000004000C4 +S315E0778F30E453002080800028000000200020000015 +S315E0778F4050000080004080200000000000200020D4 +S315E0778F500840002000000000200000000000080024 +S315E0778F604000200000000000404000000000400084 +S315E0778F70004000080000000000000000000000004C +S315E0778F8040000000000000004000200000000000E4 +S315E0778F9000000000401000005000000000200000B4 +S315E0778FA00010000000008080008040080000000488 +S315E0778FB000200000000040000000000000000000F4 +S315E0778FC0000000C0008000000000000000000010F4 +S315E0778FD000200090040040000000000000008000C0 +S315E0778FE000000000000000000000800000800040E4 +S315E0778FF000200000A0000000000000000000400014 +S315E0779000A0000000000000006000000020000000E3 +S315E07790104000000000040000400400000000040067 +S315E07790200000000000000000200000400000004043 +S315E07790300084004000004400000004800000C00087 +S315E077904004000080000040000000000000000000FF +S315E07790500000000000800000000000000000000033 +S315E07790600000000000002000800000000000000003 +S315E077907000000000000004000000000000008020EF +S315E077908000000000004000400000200000000000E3 +S315E077909000408000400000000000800000000000F3 +S315E07790A000000000800001010073A7000030002077 +S315E07790B02010006030000010400808400000600093 +S315E07790C0000000000020200020000048400000005B +S315E07790D0002000000000280028000860200020001B +S315E07790E0400000484820004800004008400008005B +S315E07790F0082000000820400808404008006040004B +S315E077910008200048400840000040600000000070FA +S315E077911000C04000000020100040003010800800BA +S315E077912040A888404020A04C6400240060001000EE +S315E077913020C00800400008A0C010900400C040A0FE +S315E07791404010100000109040B004904040349000FA +S315E0779150042004004400842004A024000400842032 +S315E0779160840004A0048084000004208440044080C6 +S315E077917080646004044000400004A0004000C00022 +S315E077918000640000002000006000000040004020FE +S315E077919000C02004204000042000044060802004C2 +S315E07791A06000200020400460800004C044008024F2 +S315E07791B0842000C44420800420040000A400042016 +S315E07791C0040004A000A424C0A0040000402400808A +S315E07791D080000000002000200400002060000044AA +S315E07791E0000004E0802004A000A0840000A404200E +S315E07791F0000000200000C00000A000A000404080F2 +S315E07792000020200000A0C00000C000A08060000021 +S315E077921000E0800000C00000000020000000200091 +S315E0779220600063D5000020100028000000281008B1 +S315E07792300008100020280028C04020002000000009 +S315E07792402000204820402000200020200000202019 +S315E07792500000402000004020000000004048004821 +S315E07792600008006800400808402000200000004819 +S315E077927000086060000000400840006000200000C1 +S315E0779280400000000040007000A040E000A04020D1 +S315E0779290103000000080000040C004A440440088FD +S315E07792A004046020044000400040000004600800A9 +S315E07792B0846000804040000084E0000000000040C9 +S315E07792C08000600000608010E000008440A0448465 +S315E07792D000200404002004C0042044008400042411 +S315E07792E08000402400C0204400C004400000604075 +S315E07792F0000020802000C440000060004000240089 +S315E077930020004000400040000400C00460000000F8 +S315E0779310000040000400A0A000000000A4A0000028 +S315E0779320044080802480000064A04000E48420A08C +S315E07793304424402000200000400060200000000028 +S315E077934000648004200020000080000400002020D4 +S315E077935040002000400000A0008024208000A46028 +S315E077936000240044A024000480846000800000404C +S315E077937080A0008040000040000060000000E080B0 +S315E0779380200000C000004000200080E000208080C0 +S315E07793904000408000204020800080484400000064 +S315E07793A01010086060000000201818404020000088 +S315E07793B01038206040000000002028484000000078 +S315E07793C040202000000000002860600000000000D8 +S315E07793D000604000000000080860600000000008B8 +S315E07793E008606020000000084848602000002008F8 +S315E07793F00840406000002028004040400000000020 +S315E07794007060C0000000602030A0004000000810C7 +S315E077941060808000000C0C68E08000001004C0607B +S315E07794206040000000084860E0400000001000C09F +S315E0779430E000000000101040C00000000030F0C0EF +S315E0779440C0000004042020C0C000000444202000AF +S315E0779450804000040460608080000004046060A0BF +S315E077946080800004046060000080000020E0C0C0D7 +S315E0779470000000006060202000002000404040208F +S315E07794800000000060C080000000202020408000BF +S315E077949000004020A080804000000460608080006B +S315E07794A00004446060C080000004C460200000804F +S315E07794B000044460A0000000000404E060000000BF +S315E07794C000000080000000000020204040000000FF +S315E07794D00020A080800000004420208080400004A7 +S315E07794E00460E0808000000000606080800000001B +S315E07794F0804060000080000080E0E020000001000E +S315E07795002061E0A00100200080C0C020000000209C +S315E077951020C0C000F67D00000010100808000004A7 +S315E0779520001818101400000000303060600000006A +S315E07795300020204860414008000001000800400014 +S315E0779540000808404000000000604000000200107C +S315E077955000880A607000800808080820200000006C +S315E077956000080820200400000000040040000020E6 +S315E07795702040404040000000006030018008002035 +S315E077958021A0280000000000008040008000000C49 +S315E07795900CA000020004040026007000800000247E +S315E07795A024008000001004C40440400400200040FA +S315E07795B05400A000043034D050C0C000040400C08A +S315E07795C0C04140080404210028808004046460C018 +S315E07795D0C0008000046060E0E082801004E46620EA +S315E07795E0700000000464E4C0C000000004646420F6 +S315E07795F020040000004044404004000400E060801E +S315E07796008004002420602081000C002401A0A800BB +S315E07796108004004440A020008000044040E06002DF +S315E0779620001404606200100000000464608080002B +S315E0779630000004C4E0404004002000808000200061 +S315E07796400020046060004000002424A02001800808 +S315E07796500000018088808000044440C0408080001C +S315E0779660006040E0E0028010004042407000000079 +S315E077967000E06060E000000100202120E0040000C7 +S315E0779680008004C040000020206060C0C0AD1B00B1 +S315E0779690000000100808000000001010101000000D +S315E07796A000001838004000000000000040404040CD +S315E07796B0000000000000000000002828600000009D +S315E07796C0000040400000000000000020000000009D +S315E07796D0080808082000000000000848200000007D +S315E07796E0000000404040000000204040404000003D +S315E07796F0000060400000000000203090000000008D +S315E077970000006040000000000C0C80A0000004041C +S315E077971024404040000004040040E02000000410AC +S315E077972000002020000000005040C0000400241014 +S315E07797300000C04004000004C080404004002004DC +S315E07797402000008004044044E0E08000000060648C +S315E0779750A0A0000004000404202000000400C0E07C +S315E077976040000000040060602020000000004040D8 +S315E0779770400004000400404080800400040040601C +S315E0779780000004002420A02000000400040060A06C +S315E077979000000000406060000000000044442020A4 +S315E07797A0000004046464808000000404A0844040E0 +S315E07797B00000000000000000000004004060400068 +S315E07797C004040000008000000404242400000080E4 +S315E07797D000044044C0C0808000004060E0E00000C4 +S315E07797E000000040606000000000A0E0E08000003C +S315E07797F000000020A0A0000000008080404000002C +S315E07798002020E0E0C0803F920000001010080800BA +S315E0779810000000181810100000000030004000002B +S315E077982000000000000800000000000000002000B3 +S315E077983000000008084040000000004040000000BB +S315E0779840000000000060600000000020002020009B +S315E0779850000000000020600000000000000000002B +S315E0779860002020404040400000000020300000000B +S315E0779870002020B03000000000000000400000002B +S315E077988000040420400000040404200020000004C3 +S315E077989004200000800000040040004080000000C3 +S315E07798A0104040008004003430307040400004249B +S315E07798B020C08040C000040420202000000400641B +S315E07798C04040C0000000046444C0A080000004402B +S315E07798D024206000000400606080000000040060DF +S315E07798E00000200000000040000000000400044073 +S315E07798F0200000000420044020000000042004201B +S315E07799002080800004040020200000000040002032 +S315E0779910000080040044040000000000004000A03E +S315E0779920A000000000C4E4400000000000800000D2 +S315E07799300004042420406040400404202000208076 +S315E07799408004040000A0A00000000064604040802E +S315E0779950800000604060E0008000004040406000AA +S315E0779960000000602000E0000000002020002000DA +S315E07799700100004000C04000002020606080C026E3 +S315E077998026000000000008080020000010101010E4 +S315E077999000000000082800400000000000000000FA +S315E07799A0404000000000200000000000082840004A +S315E07799B000000000404000000000000800000000C2 +S315E07799C0000008080000000000000000080800001A +S315E07799D000000000080040400000000040404040A2 +S315E07799E0000000004040400000000000000000005A +S315E07799F0000000004040000000000C0C0000000072 +S315E0779A00040420046040000000080C0400200000F5 +S315E0779A1000040404200000001000404080000004A9 +S315E0779A20200420204040040020000080C0C00000D1 +S315E0779A3020000000000000044060E04000000404DD +S315E0779A404440800000000004040020200000000469 +S315E0779A50C4C44000000000040404000000000000D5 +S315E0779A600000400000040004000000000004000449 +S315E0779A7000000000000420242020000000040400F9 +S315E0779A8020A0000000002420400000000004040429 +S315E0779A900000000000000000A0A0000000004044A5 +S315E0779AA0004000000000000000000404000440408D +S315E0779AB04000000004040080000000002404A0A019 +S315E0779AC00000000460644040808000004060E06011 +S315E0779AD08000000000006060000000002060E08009 +S315E0779AE00000000000400000000000000000404059 +S315E0779AF000002020E0E0C080409D0000009000401C +S315E0779B0060404000001000480840400000302000E8 +S315E0779B102040400000202048084000000020000058 +S315E0779B200000000000484800000000000000000048 +S315E0779B300000000000080800400000000808084020 +S315E0779B4060000000000008002000000000000040F0 +S315E0779B5040000020004040004000000000507000C8 +S315E0779B600000002000002000000000100000400008 +S315E0779B70000000240CA000000004040024406000EC +S315E0779B80000404002080800000140040400040007C +S315E0779B900000000010808004003020D00080800430 +S315E0779BA000000020200000000000200000000004F4 +S315E0779BB004000000000000040024040060000004B4 +S315E0779BC0002440404000000004A080808000000030 +S315E0779BD00460000020000000004000000000000064 +S315E0779BE00460008080000000240000000000002070 +S315E0779BF004A0A00000000060040000000000004020 +S315E0779C00000000000000006000000000000004642F +S315E0779C1020808000000004C06020600000000080A3 +S315E0779C20800000040400000000004000002020A02F +S315E0779C30800080000004040080808000040400A097 +S315E0779C4020000000006060606080800000400000D7 +S315E0779C502000000000E04060600000000020000087 +S315E0779C60A0000000008000000000002020A0A040B7 +S315E0779C7040151B0000000010202040400000001037 +S315E0779C8008484040000000000040404000000020C7 +S315E0779C900840004000000000000000000000684037 +S315E0779CA04000000000000000000000000000000017 +S315E0779CB040000000080008082000000000000800C7 +S315E0779CC020000000000800404040000000284040A7 +S315E0779CD040000000000060500000000000203010D7 +S315E0779CE00000000000104000000000080C2480A06F +S315E0779CF00000040424004040000000000000A0803B +S315E0779D0000000014000000200000000010008080B2 +S315E0779D10000420100010800000040000000000001E +S315E0779D2000002000000000000004000080A0800012 +S315E0779D3004040004000000000004000400000000B2 +S315E0779D40040080A08080000004000000000000008E +S315E0779D50000000000000040000000000808004009E +S315E0779D6000000000000004002020A020000004008E +S315E0779D7000204080000000000000000000000000A6 +S315E0779D80000020000000040404240080000004049E +S315E0779D90208060000000000080800000040400005E +S315E0779DA00000400004042020808080000404002026 +S315E0779DB0000000800000000480A000000000404022 +S315E0779DC0E0E0000000000040000000000000808036 +S315E0779DD00000000000000020808000000000808006 +S315E0779DE00000000000002020000034990000800089 +S315E0779DF000606000000000000040080000000010EE +S315E0779E00004020000000002000480000000000002D +S315E0779E100020200000000008080000000000000095 +S315E0779E20000000000000000808004000000000087D +S315E0779E30004040000008000000000000000000003D +S315E0779E400040400000000040400000000000004075 +S315E0779E50500000000000000000000000000008004D +S315E0779E6040000000006424A00000000404040040E1 +S315E0779E704000000404000080800000040400000035 +S315E0779E8000000000100000000004042400A02080F9 +S315E0779E9080040020000020000000000000000000A1 +S315E0779EA0000400000000000000040020000020000D +S315E0779EB000000404040000000004008484800000AD +S315E0779EC00004046404002000000000400000000065 +S315E0779ED004040440000000000404040000000000CD +S315E0779EE0042404A0A0000000046004000000000041 +S315E0779EF00040000000000000006000000000000065 +S315E0779F0000602080A0000000008020200000000094 +S315E0779F1000800000000000002400000040040424D4 +S315E0779F2004000080800404040420E080800000249C +S315E0779F3004802000000000606020608080000000E0 +S315E0779F4000002000000000A0000080000000000074 +S315E0779F500000A000000000C000000000000000A0A4 +S315E0779F60A0000028FE0000000000002000000000AE +S315E0779F7000040060000000000000004000000000E0 +S315E0779F800020004000400001000040400000000053 +S315E0779F9008084000000000000000004000000002D2 +S315E0779FA040104080000008004848000000000000AC +S315E0779FB00800000000000004002040400000000098 +S315E0779FC00040000000000000404000000001000073 +S315E0779FD000400000000000004000000004000C0094 +S315E0779FE0808000000006001440C0000004040404EA +S315E0779FF000000000040404040000000010000020C4 +S315E077A0000000040400040000800000040000200043 +S315E077A0100000000100080040000000040000800016 +S315E077A0200000000004000000000000060414008031 +S315E077A0300000000480800080000004040000000037 +S315E077A0400000000000200000040404000000000087 +S315E077A050040404000000000004050408A0400000A2 +S315E077A06004040020008000000000200000000000CB +S315E077A070000200102000000000000020A080000011 +S315E077A0800000000000000000000000A000000000D3 +S315E077A09004000000400004040020808080800405EE +S315E077A0A000088040008000000024808000000000E7 +S315E077A0B00040E040808000020010000000000000D1 +S315E077A0C0808080800000000000008080000000042F +S315E077A0D080A0000000000000200000009F1900002B +S315E077A0E0000000200020000000000400202000008F +S315E077A0F00000104000000000000000002040000053 +S315E077A1000100202840000000000800002000000041 +S315E077A110000000004000000802403020A000000068 +S315E077A12000402020000000080048000060000000A2 +S315E077A130040860600000000820004000400000004E +S315E077A1400020404040000100208870400000000871 +S315E077A15000608000000C00486400200000040240A4 +S315E077A16010008080000000004800400000000040BA +S315E077A1700000400000100004306000000404202056 +S315E077A180500000000000046000000000050428008D +S315E077A190404000040004000000800000040004E072 +S315E077A1A00000000402047000C08000000000200078 +S315E077A1B04000000000402000200000000040202002 +S315E077A1C04000000000E000000000002000400000B2 +S315E077A1D00000012008204040800000004040000059 +S315E077A1E0000000006040000000000244102000807C +S315E077A1F0000000402000000000040000200000007E +S315E077A200000000042000000000000020004000006D +S315E077A21004200080000080040100088040C0000030 +S315E077A2200000208000000000002040C02000800071 +S315E077A2300200502000800000006080C0000000002F +S315E077A240000060A04000000004C020A000000000ED +S315E077A2500000A040008E0300000000100000200000 +S315E077A2600000001C0020000000000028200000000D +S315E077A2700000002000000000000100080040000018 +S315E077A2800000002000000000000000200000000031 +S315E077A290000A00300080000000000800000000009F +S315E077A2A00000000000000000000C006000000000E5 +S315E077A2B000000000000000000000000080000001C0 +S315E077A2C00008004000000000001040008000000019 +S315E077A2D00400408000000006043060800000000C37 +S315E077A2E00420A000000000140480A0000000000411 +S315E077A2F00020800000000000008080000000002041 +S315E077A30000808000000100082040800000000020E7 +S315E077A310208000000000002000008000000200108E +S315E077A3200080000000000080800000000000000050 +S315E077A330000000000004002000000000000000009C +S315E077A340000000000000200080000001000800C047 +S315E077A3500000000000204080800000040400208098 +S315E077A3608000000204300080000000040000A000B6 +S315E077A37000000000008020000000000400A000003C +S315E077A38000040420000040000004040020000000E0 +S315E077A39000010028204000000004040020000000AF +S315E077A3A000000000000000000002001000800000BE +S315E077A3B000000000200000000000004040000000A0 +S315E077A3C00004002000000000002000000000E19378 +S315E077A3D00000C3831C1C606088000303181C406080 +S315E077A3E00800070738384040000007073838C0C00C +S315E077A3F008000607303880C001010E0E707080883D +S315E077A40001010E0E7070808001010C0E6070088875 +S315E077A41003031C1CE0E0000003031C1CE0E00800DB +S315E077A4200303181CC0E0000007073838C0C00000F7 +S315E077A43007073838C0C000000607303880C001010A +S315E077A4400E0E7070808401010E0E707088800101A7 +S315E077A4500C0E6070008003031C1CE0E00000030331 +S315E077A4601C1CE0E000000303181CC0E000000707AF +S315E077A4703838C0C4000007073838C4C40000060778 +S315E077A480303884C401010E0E7070848001010E0E9F +S315E077A4907070808001010C0E6070008403031C1CD1 +S315E077A4A0E0E0040403031C1CE0E004000303181C4B +S315E077A4B0C0E4000007073838C4C400000707383817 +S315E077A4C0C4C400000687303884C401010E0E70706C +S315E077A4D0848001010E0E7070808001010C0E607031 +S315E077A4E0008003031C1CE0E0040003431C1CE0E04F +S315E077A4F000004303181CC0E0000087073838C0C067 +S315E077A500000007873838C4C400000607303884C0AF +S315E077A51001010E8E7070808001018E0E70708080E2 +S315E077A52001010C0E6070008003831C1CE0E00000E4 +S315E077A53002821C1CE0E000008282181CC0E000006A +S315E077A54086063838C1C100C24200100000101000FC +S315E077A550000800000000000000181000001030002E +S315E077A5600000000000000000000800000000000086 +S315E077A570000020000020000008000008000020000E +S315E077A58000200000000020080820000000002000DE +S315E077A590000020000860200800000000000040006E +S315E077A5A0004000202000402020004020204000008E +S315E077A5B0000000202000000020000060400004003A +S315E077A5C000040800008800000000004040000040DA +S315E077A5D0000000404000000020000020000000005E +S315E077A5E04000000000000000400000C00400004486 +S315E077A5F0000000040400004000000004040040006E +S315E077A6000000000400404000000020008020008029 +S315E077A61000000000042000000020E00404E02000B1 +S315E077A6200060600400600000004004002000002025 +S315E077A630004444000040002000044400004000004D +S315E077A6400084040020000020000400200000004081 +S315E077A6504000044000000040400000400000004019 +S315E077A6604000004040000000000400400000004049 +S315E077A670C00000800000000000000000840000C0F9 +S315E077A68040000004040000000000000000000080A5 +S315E077A690000000800000000000002000002020007D +S315E077A6A00000A00000A020000000A00000A0A0000D +S315E077A6B0000000000080800000C00000000000007D +S315E077A6C0E1C7000000000000000000000000000085 +S315E077A6D00004000000000000000000000000080011 +S315E077A6E0000000000000000000000000000000000D +S315E077A6F000000000000000000000000000000000FD +S315E077A70000000000000000000000000000000000EC +S315E077A71000000000000000000000000000000000DC +S315E077A72000000000000000000000000000200000AC +S315E077A73000010000000000000000000000000000BB +S315E077A74000000000000000000000000000000000AC +S315E077A750000000000002001000000000000000008A +S315E077A760000000000000000000000000000000008C +S315E077A77000800000000000000000000000002000DC +S315E077A780000000000000002000000040000000000C +S315E077A790000000001000000000002000000000002C +S315E077A7A0000040000000000000000000000000000C +S315E077A7B000000044000000000000000000000000F8 +S315E077A7C0000000000000000000000000000000002C +S315E077A7D0010000000000000000010000000000001A +S315E077A7E0004000000000000000000000800000004C +S315E077A7F000000000000000000000000000000000FC +S315E077A80000000000000000000000000000000000EB +S315E077A810000020000000004000000000000000007B +S315E077A82000000000000000000000000000000000CB +S315E077A830000000000000000000B44A0000000000BD +S315E077A8405000004040000000001000004000002863 +S315E077A85010400050008000C00000804000000000FB +S315E077A8602000A0000000608000008000000000006B +S315E077A87040000000000000000000004000000000FB +S315E077A88000080008400800A86800400000000000C3 +S315E077A890000028000000004000402000080080000B +S315E077A8A088000010800080200008802008A00048FB +S315E077A8B0A04024002000102400082000E0080000D3 +S315E077A8C0000840000008002020400020200080207B +S315E077A8D000004080804000C000000000402050002B +S315E077A8E040000040600000044010008080000000D7 +S315E077A8F02080008400002000048004A000C02000AF +S315E077A90000006004040000040020000000240080BA +S315E077A9100000400080000000408000000080044096 +S315E077A92000A0000020000020002000004004000086 +S315E077A930A00400000000040000008420000000402E +S315E077A94000006000A000408000000040000080002A +S315E077A950804000044000040000404080A0000040B2 +S315E077A96040800000002000000060448000A444009E +S315E077A97040A08400802000008000000000000000F6 +S315E077A9808040C0000090A00020C00040400000005A +S315E077A99040004000A000400000C000A0400000E07A +S315E077A9A0200000000000800000800080800000A08A +S315E077A9B00040BF190000000000000000405400008E +S315E077A9C0000010000840000800201000000000603A +S315E077A9D000000000000000000020000000000000FA +S315E077A9E040000080000000000040002000000040AA +S315E077A9F00000004000400000000800000000000072 +S315E077AA0080104000002000000000000008000000F1 +S315E077AA100020000000000020400100401000008088 +S315E077AA2000200000008008084000000000000014C5 +S315E077AA3000020030400000000000004000004000C7 +S315E077AA4020400020000000000000008000008080A9 +S315E077AA502000000000004040000040000000008039 +S315E077AA6040104040000000000000A0000000000019 +S315E077AA7080046020040000200000004000041000FD +S315E077AA80040020000004202080200000400080049D +S315E077AA9000C00000000000200000008000200000D9 +S315E077AAA00020000000000000200021008000000068 +S315E077AAB00000000000000000400000E00000000019 +S315E077AAC000000004400080000000008400004000A1 +S315E077AAD08000400000008000404080008000000059 +S315E077AAE00000400000800000008000000480004005 +S315E077AAF00000000000000040004080C00000C00079 +S315E077AB006080204000000000000000400000204008 +S315E077AB1000C0008000800000C000200000000080B8 +S315E077AB200000808001800000A00040035300001001 +S315E077AB3000000050000000009000000000000010C8 +S315E077AB400020004050000080800000008040080030 +S315E077AB500000000020800080A00020000000004078 +S315E077AB600040000000000000000000000000000048 +S315E077AB700000000000080840082008204000000098 +S315E077AB800000000020000000204000402000080080 +S315E077AB9000808800000080002000000820C00020A8 +S315E077ABA00080806004A00020006000080000204854 +S315E077ABB00000000800000088004020000000200028 +S315E077ABC080200000400040004000000000C02000E8 +S315E077ABD0100000004000C0200004800000A0008044 +S315E077ABE0000000000084000020000080800000C0A4 +S315E077ABF000000080200400000080000000808000D4 +S315E077AC00000000000080004000002000004004A023 +S315E077AC100044A0000020008000600000000040248F +S315E077AC200000C0040000004004000000248000809B +S315E077AC300000000000002080804000000000000057 +S315E077AC40800000C0000000000400000000C0200083 +S315E077AC50008000000000002000800020844000246F +S315E077AC600044006000800020000100800040002062 +S315E077AC700000000000001000800040000000004067 +S315E077AC800000400000008000000000000060004007 +S315E077AC9000200000A0002000004000000000000037 +S315E077ACA00000000067E1004000100000101020006F +S315E077ACB00000000000000000100040000040002087 +S315E077ACC00000000000000080200000002020000047 +S315E077ACD0200008200020004000000000000040002F +S315E077ACE000200000001000000000000000000000D7 +S315E077ACF00000204000200000000040100020000007 +S315E077AD0000000020000020200000000040481000EE +S315E077AD1000008000002000008000404004204800CA +S315E077AD202C200000040000000000000000004940ED +S315E077AD3004200080400000002000A004400040008E +S315E077AD40000000640000400480204080008040409E +S315E077AD5020002000C08000040008008000004064E6 +S315E077AD600040002000C000000080000000400000A6 +S315E077AD70000040400000040000400400004000006E +S315E077AD8020248000000000800080002040C024005E +S315E077AD9080000000004000000000000000A00000F6 +S315E077ADA00020002000A00000000080002080004006 +S315E077ADB00400000000400000000000000080000072 +S315E077ADC0C0004000440400440000000080400000DA +S315E077ADD080000000200000240020C00044004400EA +S315E077ADE0800080800000800000A000C00000208006 +S315E077ADF000008080400040000000006000200040B6 +S315E077AE0000200080000000804000000080440010B1 +S315E077AE100041008040000000A040100000B53B00F4 +S315E077AE200200000040000000204000404000300073 +S315E077AE3000000010400000100040200000400000B5 +S315E077AE40000000004000000000000000004008001D +S315E077AE500000000000600000008000000040000075 +S315E077AE6000400000000008200004004000080000D1 +S315E077AE700040000000000010000060000000004085 +S315E077AE8080500000008000082010402080000000FD +S315E077AE9000000028800000000080000000002040CD +S315E077AEA06000000060000000A00000000000E00005 +S315E077AEB000804000A0002004800000000000200011 +S315E077AEC00040000000000020000040000020200045 +S315E077AED00000804000002080000020040080000011 +S315E077AEE0A000000000C0A000004000002000C000E5 +S315E077AEF06000800020808000000000000004008071 +S315E077AF0020000400000000000040C400002000009C +S315E077AF10C02000E0004000000020004000C00000B4 +S315E077AF2000800040400000400080002004000000E0 +S315E077AF30C0000000000040002000200000800000F4 +S315E077AF4000A4401000400000040000000084204088 +S315E077AF508040000000000000004000200040000034 +S315E077AF6000204000200004C04020400000000000A0 +S315E077AF704000000000004080000000400000C00074 +S315E077AF800000008000002080004000000000A00064 +S315E077AF90000020000000839D000002801040101022 +S315E077AFA000400000404000300010000010004000F4 +S315E077AFB000402000204000000000A0000040200074 +S315E077AFC000200000082040200840000000004040B4 +S315E077AFD000008000204000100000400000000008DC +S315E077AFE020040060000000200000400000300000F0 +S315E077AFF00000006000002000009060000000C04084 +S315E077B000000010400080002000008000404480204F +S315E077B01000208C20000400006000200080002041A2 +S315E077B02008A4400000004000E000200040A0406017 +S315E077B03004008000000400600004800060000020C7 +S315E077B04000402000406080002000040048000000B7 +S315E077B050E000444420A000408000008000804080EB +S315E077B060600040004020404004006000C40000805B +S315E077B070000000A0000004800020808400002040CB +S315E077B080A4408080400020400000A000400040209F +S315E077B090802000200020800020008000C000600033 +S315E077B0A0400440000004004000400000000000003B +S315E077B0B040C020002080040000A004004000C0408B +S315E077B0C0000400000004202040248000A0004044D3 +S315E077B0D00000402080804000000020E000204020F3 +S315E077B0E004C020400080000040004000004000009F +S315E077B0F0E040004000800080408040008080004053 +S315E077B1000410000001800000200080500100002933 +S315E077B110C0001060006020000040400000581040FA +S315E077B120000040004000201020402008000018E092 +S315E077B1300000200000200000200020002044C020EE +S315E077B1406000004080604020800020400020004082 +S315E077B15000400060000040000000402040204000B2 +S315E077B16040000000004040004020000000204010F2 +S315E077B17060000040004020C08000002020002000D2 +S315E077B18010801060204020404020804060004020C2 +S315E077B1900000000000402810205040006000640066 +S315E077B1A080408000004000400000C0001000205042 +S315E077B1B040000020002100A0C0200000400084402D +S315E077B1C0208000002080402800400040402000A0FA +S315E077B1D080000000240000C040204000002064800A +S315E077B1E000108020400040A004002044204000006A +S315E077B1F0000040002080C024008080402000C020EE +S315E077B2000020C0000000000020000020C0000040C1 +S315E077B2100080A000000040000440800080400020CD +S315E077B22040000040240040004000004000800000DD +S315E077B23080402000400000C0800000004080400051 +S315E077B24000406000A00000C0800040800000000061 +S315E077B2508420008000804008400460000080004041 +S315E077B26040004000000000400040000000C02000A1 +S315E077B27008800000304040804000408000C0008079 +S315E077B2806000004000008000E75B0000A0002040FF +S315E077B29000400000401000000000000000000000C1 +S315E077B2A02040000020200090200000006000000091 +S315E077B2B0000000200004000060000000004020004D +S315E077B2C000000000000000006020004020402000E1 +S315E077B2D00000000000000000404000000000000091 +S315E077B2E04000000000000000004000000000204021 +S315E077B2F00000200000000000001000A01088400841 +S315E077B3000000000000002000004080004000006060 +S315E077B3100000204000200000008000000040000090 +S315E077B3204000000080000000100000C00000000030 +S315E077B3300000208000204000008020000080000090 +S315E077B34000400000400000000000080000000060B8 +S315E077B350000040000000200400000000000000002C +S315E077B360200040000060004000000000000000047C +S315E077B3704080000000000000400000000000000070 +S315E077B3800000200000000000000000802000C000E0 +S315E077B3908004000000000000600000200004200028 +S315E077B3A00000000080000000200080200000000000 +S315E077B3B0008040006000C00040000000004000C010 +S315E077B3C000000000400020000020800040002008B8 +S315E077B3D0000400004000000000000040000000404C +S315E077B3E000000000004000004400000000001080EC +S315E077B3F0400000800040800080200000400000018F +S315E077B400007CE300401040000000000000000800E8 +S315E077B41040000000400040000000000000480000C7 +S315E077B42040082000000020000020000000004020B7 +S315E077B430000000000040800020000000400000008F +S315E077B440000000000000000000400000004000001F +S315E077B450000000001000004000000000000000A09F +S315E077B460000000200040804020800080000000201F +S315E077B4700000A000000000000020C00000000000EF +S315E077B48000200000000040000000C000000000003F +S315E077B490200000000080002000000000000000D0BF +S315E077B4A000000000002020004000000000000000BF +S315E077B4B044000000000020000040008000200000EB +S315E077B4C000200080004020040000200000000000FB +S315E077B4D000A00000000000400040008024C000008B +S315E077B4E000000000004000200080000020000040BF +S315E077B4F0802020004000800000000000200000C08F +S315E077B500000000204000000040000000000040807E +S315E077B510000000000040800000000000000000000E +S315E077B520000004000000000040000000000000007A +S315E077B530000000004020000020004000008000006E +S315E077B54000000000000000800040000080200080BE +S315E077B550000080400080000000000000804080000E +S315E077B56000000000800000000000000000400000BE +S315E077B57000000000800000000000B2060000000036 +S315E077B58000200000000000400010000000000000EE +S315E077B590000010200000000000000000000000001E +S315E077B5A080000000200000000000806000000000BE +S315E077B5B000004080002000002000004000000000EE +S315E077B5C0000020000020004020000000000000007E +S315E077B5D0008000006020000040205000002000003E +S315E077B5E0000000000000200000200000000040106E +S315E077B5F020004000204080004040800000000000AE +S315E077B60000081010000000004040040060000000D1 +S315E077B610000000000040000000204080400000016C +S315E077B62000A00040800000000080000000000000DD +S315E077B6300028000000000000604080400000000025 +S315E077B64000008000004000000000401000802000ED +S315E077B6500080000004000000000000400000008049 +S315E077B66000200000004080200000000000800000FD +S315E077B67000002080000000200000404080000000AD +S315E077B680000000004080000000000040000000005D +S315E077B69000400000400040A00000000040000000AD +S315E077B6A0C08000000000000000200080400000809D +S315E077B6B02000000080000000008000000480000089 +S315E077B6C0400000400000000000004000000000005D +S315E077B6D04000004020000000000020800800004085 +S315E077B6E0200000004000000000000000400000005D +S315E077B6F0000080E301000000000200400000400007 +S315E077B70000004000100040004000000000000040CC +S315E077B710400000004000002000000000000000002C +S315E077B720004000002040000040004000000000405C +S315E077B730400000400040600000000000004000004C +S315E077B740000000000000000000000000000000009C +S315E077B75000000000000000004000000000000080CC +S315E077B760000000000000000000000000000000007C +S315E077B77000400000000000006000000000002000AC +S315E077B780000000800080200000000000000000003C +S315E077B79000000080E00000000040000000000400A8 +S315E077B7A00000000000000000000000C0400000003C +S315E077B7B0004080000000400000000000000000002C +S315E077B7C0000000000000000000000080000000405C +S315E077B7D00000000400008040200000402000802028 +S315E077B7E00080000000800000A00004000000000058 +S315E077B7F0000080000000000000000040000020808C +S315E077B80000C00020002000000000000000000000DB +S315E077B8100000000000400080400080040000000047 +S315E077B820000000000000000000000000C00080007B +S315E077B830000000000000000000000040000000402B +S315E077B8402000000000C000000000000000040000B7 +S315E077B8500000008000204000008004000080400067 +S315E077B860800000400000000000004000C74D000067 +S315E077B87080800000000240000000000000006000C9 +S315E077B8800000000002000000202000400000004099 +S315E077B89000000020000000400000000000000000EB +S315E077B8A000000000004000000000000000000000FB +S315E077B8B000400000000000400000000000000000AB +S315E077B8C0000000000000000000000000000000001B +S315E077B8D000000000000000000000000000200000EB +S315E077B8E00000008004002000000000000000400017 +S315E077B8F0000000002040000000004000004000808B +S315E077B9000000000000200000004000400000040036 +S315E077B910009000000040000000600000000080001A +S315E077B9200080000000000400000000200020800076 +S315E077B930000000000040000040000000000000002A +S315E077B940000000000000200000004000000000003A +S315E077B950000000000000404000000000002040802A +S315E077B9600000008000000000000000440020400056 +S315E077B970C02080040020000000240000400400007E +S315E077B9800400000040000000000000000004000012 +S315E077B9900000000040004004000000000000800046 +S315E077B9A000200000800000000000008000000020FA +S315E077B9B000440020000000A00000000000000080A6 +S315E077B9C00000002000000040040400000000800032 +S315E077B9D00000000081000000000100000000004048 +S315E077B9E00000010500242D00000040000000000063 +S315E077B9F000000040000000000060000220000050D8 +S315E077BA000000000000000000000000000040000099 +S315E077BA102000000000400000004000000000000029 +S315E077BA200000400000000000000000000000000871 +S315E077BA3000004008400000080000402800000008A9 +S315E077BA4040001008004000080000000800000000F1 +S315E077BA500000884000084000200800000008000049 +S315E077BA6000080020000800004008008060082000F9 +S315E077BA70000800000020000000004000000000C43D +S315E077BA8000000080400000001080100000000000F9 +S315E077BA9000000000000020000000040000008000A5 +S315E077BAA000008000C00000000000000040000000B9 +S315E077BAB004A0000064000000E0000000042000001D +S315E077BAC000200000200000000000C0008000000099 +S315E077BAD00004802000800040000000000000004065 +S315E077BAE080042400000000800000400080000440CD +S315E077BAF00004000000040000000000008000000061 +S315E077BB000000000040008000000000000000000414 +S315E077BB1000000000040040000000408000000020A4 +S315E077BB200000000004400000000000400000000034 +S315E077BB300080400000800000200040000080000088 +S315E077BB40A000000000400000000080040000000034 +S315E077BB5000000000000000002000400080005C7FCD +S315E077BB600000000000000000000000002000000256 +S315E077BB700000000020000000000000000000000048 +S315E077BB800000000000000000000000000020000038 +S315E077BB900000004000000000000000000000000008 +S315E077BBA000000000000040000008000000080000E8 +S315E077BBB000480000000840004008000060083000B8 +S315E077BBC04008400000080000000000000000000880 +S315E077BBD00000400800000048808000080000400828 +S315E077BBE00000000800000008000000088000400020 +S315E077BBF00000400020000000000000000080000008 +S315E077BC0000004000000000040000000080004000D3 +S315E077BC1040200000000000004040000040000000A7 +S315E077BC2040008000000000004000000000000000B7 +S315E077BC304000000000000000000000000000000067 +S315E077BC4000200000000000800000000000004000B7 +S315E077BC500040008000000020000000004000000067 +S315E077BC6000000000840020000000000000200000B3 +S315E077BC7040002040800004000004004000200000DF +S315E077BC800400008000804000000000000000000013 +S315E077BC90004000040000400000400400800000807F +S315E077BCA00040040000000000A00000008060000073 +S315E077BCB060004000000040200000002040000000C7 +S315E077BCC00080000020400020008000000080000017 +S315E077BCD00000000000000001BC00400000000040CA +S315E077BCE000000040000040000000200000002040F7 +S315E077BCF000000040402000004000200000000000E7 +S315E077BD0000000000006000000060000000004000D6 +S315E077BD100000000000000000004060002000000006 +S315E077BD20004800000000000000000000000000006E +S315E077BD300000000000100000000000000000004056 +S315E077BD4000000000000000400000000000000080D6 +S315E077BD5000000000800000080000200000000000DE +S315E077BD600000000000000000000000000000000076 +S315E077BD7080000040008000000000000000400000E6 +S315E077BD8020040000200000800000800040000000D2 +S315E077BD9000008000000020000000000000000000A6 +S315E077BDA00000000020000020000000602000000076 +S315E077BDB000000000000000000004004000200004BE +S315E077BDC00000000000400000800020000000000036 +S315E077BDD00020000080000080000000400000800026 +S315E077BDE000000004008000040000000080000000EE +S315E077BDF00000000000000000400000200000000086 +S315E077BE000004000000000040002000000000000071 +S315E077BE100040000004000000200000000000000061 +S315E077BE200000004000000000000000402000000015 +S315E077BE3000000004000000004000000000400040E1 +S315E077BE408000004000000000000040000000000095 +S315E077BE508F2800020000500000000002000000007A +S315E077BE602002000200004000002040000000004071 +S315E077BE700000004000400000004000204000000045 +S315E077BE804000000000000000004000004000000095 +S315E077BE904000000000400000400000000000000085 +S315E077BEA000004020000800000000000000000000CD +S315E077BEB0000000400008400000000000000000009D +S315E077BEC000000000000000000400000040000000D1 +S315E077BED000000000000000000000002000000000E5 +S315E077BEE080000080000000002040000080002000F5 +S315E077BEF0000004000000A080404000000000400001 +S315E077BF0000000000000000008000040000008000D0 +S315E077BF1040008000000040000000000020000000A4 +S315E077BF200020000000000000400020002000604074 +S315E077BF3000400000000000A0000040002004000060 +S315E077BF4000000084000400040000400000000000C8 +S315E077BF5000002000A020004000200000C020040060 +S315E077BF604000C400004000000000400000000000F0 +S315E077BF70000000C00040040000000000040000005C +S315E077BF800000400000008080000000000000000014 +S315E077BF9040000020000000200000000000000000C4 +S315E077BFA000008080000000008000000000000000B4 +S315E077BFB08080000000000000000000008000800024 +S315E077BFC0000000000004008000AAC1000000002005 +S315E077BFD000000200000040000000000000000000C2 +S315E077BFE000020000000000002000000000000020B2 +S315E077BFF000000000000000000000000000000000E4 +S315E077C00000000000000000000000000000000000D3 +S315E077C01000000000000000080000000000000000BB +S315E077C02000000000000000080000000000000000AB +S315E077C0300000000000400000000000000000002043 +S315E077C040000004008000000020000000008000006F +S315E077C0500000400040000000000000002000800063 +S315E077C060C00000000000004000002000040000004F +S315E077C070000000004400800000000080000000001F +S315E077C080000080000400000000002000004000046B +S315E077C090000000000000C00000000000040040003F +S315E077C0A00020008000000000000000000000000093 +S315E077C0B00000000000000000000000200000000003 +S315E077C0C0204000802000000000040000000000000F +S315E077C0D0000080000020000000000000000004005F +S315E077C0E000000000000000000000000000000000F3 +S315E077C0F0000000000040040000000080008400405B +S315E077C100000000008000800080000400000000202E +S315E077C110000000000020002000000000200400005E +S315E077C120000000000000048000000000C00400006A +S315E077C130040000000000000000000000040000009A +S315E077C1400400E8590000000200000040000000000B +S315E077C15010000000400000122000000020200000C0 +S315E077C1600000000000000000200000000000000052 +S315E077C1702020000000000000000000000000000022 +S315E077C1800000000000000000000000000040000012 +S315E077C19040400008000000004000000840400000F2 +S315E077C1A000001000400000000000000000000000E2 +S315E077C1B0800800000000680040000000800840002A +S315E077C1C0000040400028404000084000000048005A +S315E077C1D0000060800040000000840000008040009E +S315E077C1E0000000004004000020000000200000006E +S315E077C1F00040800000008000000040000000600002 +S315E077C20000000040000020000000600000044000CD +S315E077C2104004402000000000000400800040002039 +S315E077C22000000000008000804040000000008004AD +S315E077C230000080000000000000800000004000045D +S315E077C2408000000080002400040000800040004069 +S315E077C2500000000020002004000000000000240019 +S315E077C26000004400800040800000004000000000AD +S315E077C2700000040000804000040000000004000095 +S315E077C28020040000000400800000000080000040E9 +S315E077C29000002020040000C004000000A000000099 +S315E077C2A0004000000000000440008000000000002D +S315E077C2B00000000000800000400020FA9A0042006B +S315E077C2C000000200300002000000000000000002DB +S315E077C2D00000000000000000000000000000000001 +S315E077C2E000000000000000000000000000000040B1 +S315E077C2F000000000000000000000000000000000E1 +S315E077C3000020000000000008000000000000004860 +S315E077C31000000048000000084020004800080000C0 +S315E077C32000000000000000800000000000600000D0 +S315E077C330000800080448000020C80000000000005C +S315E077C3400000000000000000804000000040000090 +S315E077C3504000200000000000000000008000C010D0 +S315E077C360000080400000000000040000200000008C +S315E077C37080042000000080040000000004008000B4 +S315E077C3800000040084000000042000000044000060 +S315E077C390042080000000000000000000000000009C +S315E077C3A0000000208020440040004000000000208C +S315E077C3B02004200080048420004000004400000030 +S315E077C3C040000020400000000000000000008004EC +S315E077C3D00020000400000000004400000000000098 +S315E077C3E0000000000000400000604000000400000C +S315E077C3F0000040008400400040000000004000401C +S315E077C4002004000000200000008000C00000000447 +S315E077C410002020040004608020000000000400046F +S315E077C42000000000000000000000000000000000AF +S315E077C4300004000085A1000042C2004002124000DD +S315E077C4404200300040620000621040002200004067 +S315E077C45020004000000040000000000000000000DF +S315E077C460404000006060000040004000400000006F +S315E077C47040004000404000204000000000400800B7 +S315E077C48040400800000008004040080000400800EF +S315E077C49040003810404008004000080000000000E7 +S315E077C4A0008000000840204028000000880060C037 +S315E077C4B00800E040080000600820006008000000FF +S315E077C4C068004040000080A00000200000804080A7 +S315E077C4D0000080804080001004E000408000640027 +S315E077C4E0000040008020C08020000400C0800084E7 +S315E077C4F0004000002020000000000040040000001B +S315E077C500444020204400200060000000A4000000A2 +S315E077C5102000000000000000C0C0200080008044BA +S315E077C520A04004004020000040048000248420845A +S315E077C530408024C400C0240080806400A0C02044EA +S315E077C540208024240000440020804404000000007A +S315E077C5502000400000044000404080C400440000D2 +S315E077C5600400004400804000C08000C000804004A2 +S315E077C57040008084000000046024000020802020B2 +S315E077C580800020204000A0802040000020A00420EA +S315E077C590840420804080000080800004000000C092 +S315E077C5A0008000000000000000000104803AE4000B +S315E077C5B000420220000040020042400000000240B4 +S315E077C5C00022022002200020000020000000000068 +S315E077C5D000206000000000402000200000002000DE +S315E077C5E040004000000000000040004000000000EE +S315E077C5F02000000000000008080000080840400816 +S315E077C6004800000008004000084040283800400015 +S315E077C6104800000008000000408008004008080055 +S315E077C6206000080000008800884008A040280800DD +S315E077C630080008000000084000000800C02080409D +S315E077C640C0004000802080000000008080002080CD +S315E077C6504010B0000000640004000460C000802051 +S315E077C6608000C400000040800000C00020004480C5 +S315E077C67000204004002040004024C0000004600011 +S315E077C68040040020008400A0000020004000400421 +S315E077C6902000800000A48020208080440040600055 +S315E077C6A000048020400480002000C000008400C0A1 +S315E077C6B020440020C02004A08460002404200044A5 +S315E077C6C024004084800000000004004020440000FD +S315E077C6D080408040408044000004400044002000D1 +S315E077C6E004C000C440008064C000C000048000003D +S315E077C6F000608060002080200060200000C02480F9 +S315E077C700044004600020042020C4E0044080044014 +S315E077C7104004C400048000008000000000000000B0 +S315E077C720844000440084F62900008202004060607D +S315E077C73000000220004040402000022220304040A6 +S315E077C74040000020202040400000006020000000EC +S315E077C75040000060606060000000004040400000FC +S315E077C760000000404040400000000000604040008C +S315E077C770000008484040000000000808404060009C +S315E077C780000008784040400000000808404000007C +S315E077C790004000008000400008486060008080002C +S315E077C7A00C084040C0000000084840404000800048 +S315E077C7B0080840C0400000000040C0C040000020AC +S315E077C7C00000C0C0600000040050C0C00000000454 +S315E077C7D0004040C040000440200080804000044490 +S315E077C7E06060C080800000646460C000000404C4B8 +S315E077C7F0606020008000044460E060000000042070 +S315E077C800E06020000020000040C02000000420A067 +S315E077C810E0C00000040000E0C0800000046420204F +S315E077C8208080400004044060A080000404046060D7 +S315E077C8308080000004846060400000000444C040CB +S315E077C84000000000040444C0800000000000C040FF +S315E077C85000000404040040C0000004040000C0C0E7 +S315E077C86000040444042080004004040460208080AF +S315E077C8700000000060608080000404C4642000004B +S315E077C88080000404E0C0000000040444C0C0000057 +S315E077C89000000000C000000000040440C081008C66 +S315E077C8A02400020012123020606004001000504429 +S315E077C8B04040020230202020000000002020202087 +S315E077C8C00100080020210008000000002020202039 +S315E077C8D0000000004040000002001000C042001057 +S315E077C8E000800000602000000000000040000000AB +S315E077C8F00400200040040040000000006070004023 +S315E077C9000000000040004140000000018008000080 +S315E077C910000060206060008000004000A0600200B8 +S315E077C9201000C022007000000000406000E00000C8 +S315E077C9300000C0E040E004000000C0C0C0C00000D6 +S315E077C9400020D07040C0000004244060C1C00C04D1 +S315E077C95020018008008000006060E06000800000D1 +S315E077C9606060E0E002001404606640700000040056 +S315E077C9706444E0E000000004E0602060040000002A +S315E077C9800004C0C000002424A0A040C0000000003E +S315E077C990E0E001800C042425A02880800004404054 +S315E077C9A0E0E0808004004444C04002801004004206 +S315E077C9B0003000800404C4C44060000000004044B6 +S315E077C9C0E0E000002000C0C440600004002460601E +S315E077C9D040C004040020E060C1C00C0404258088D0 +S315E077C9E000000404444480A0808000002040C060BA +S315E077C9F0828014046046003000000404E0C060C022 +S315E077CA0000000404E060C0400400200040440020B9 +S315E077CA1000002024E0C0808075BE0000000202603E +S315E077CA2030606000000010405040400202203060E5 +S315E077CA306000400000202020200000000020200039 +S315E077CA400000000000402020600000000040400029 +S315E077CA500000000000404000400000000020200079 +S315E077CA604000000000404040400000000040404069 +S315E077CA704000000000706040400000000000004089 +S315E077CA804000000000000000000000604060608029 +S315E077CA9080000000004040000000004060406000F9 +S315E077CAA00000004060C060000000000060C0E00069 +S315E077CAB00000008040C0C000000020D0F0000000F9 +S315E077CAC00004244060C080040420000000000000D9 +S315E077CAD000606060E0800000002060606000000435 +S315E077CAE00460604040000004046060C0E000000439 +S315E077CAF00460602000040000004040C0C0000024CD +S315E077CB0004208080800400000040000000000424B8 +S315E077CB10240020808000044040A0C00080040440C8 +S315E077CB2040000080800400000020200000000444DC +S315E077CB3044604000000000242440400000000000EC +S315E077CB400000000400240000404040000020008000 +S315E077CB5080C080040420042020000004040404A09C +S315E077CB60808080000000000000808004044440005C +S315E077CB700000000400C0C0C0E00000040400C0600C +S315E077CB806000000000404000000000040080E08084 +S315E077CB908026CE00000000002030606000000010A4 +S315E077CBA040504040020220100020000000002000A4 +S315E077CBB02020000000002000000000000000200098 +S315E077CBC000200000000040400040000000004040A8 +S315E077CBD000000000000020200000000008000808A0 +S315E077CBE000000000080040480000000008003078A8 +S315E077CBF000000000080848484040000000000000B8 +S315E077CC00000008082028606000000800404800001F +S315E077CC1000000808280820000000080868482080F7 +S315E077CC2000000000E0C060C0000000000040C0C027 +S315E077CC3000002000F0100000000020046040C0C033 +S315E077CC40040420008000000000006020A06000005F +S315E077CC5000006060E0600000000060244060000053 +S315E077CC600400640440600000000460600020000077 +S315E077CC700000000080800000240480A0C0C000008F +S315E077CC800000608000800404242080A08080040077 +S315E077CC90404080E0000004000000404000000000D3 +S315E077CCA00000002000000404E0A0604000000400DB +S315E077CCB02024C04000000000C080404000002000F3 +S315E077CCC04040404004042404400080C0040020042F +S315E077CCD00080000004000000A0A0808000000040F3 +S315E077CCE08000808004004024000000000004C0E05B +S315E077CCF0002000000400C080A0A000000000808033 +S315E077CD00000000000404C0E08080EE5200008090CE +S315E077CD1010302060200000100050404040020210A2 +S315E077CD200000000000000000002020000000000066 +S315E077CD300000000000000000200000000000004036 +S315E077CD4040000000000000404000000000000000C6 +S315E077CD502000000000000040400000000000004096 +S315E077CD604040400000000050504040000000000086 +S315E077CD7000404000000000000000000000604060D6 +S315E077CD8060000000004040606000000000604060A6 +S315E077CD9040000000006040E04000000000A080E036 +S315E077CDA0C0000000000000C08000002000B09000C6 +S315E077CDB00000002404604080000404200000800026 +S315E077CDC00000002020202080000000202020200086 +S315E077CDD000000020204040000004040000404000AE +S315E077CDE0000404406020000000000040408080009E +S315E077CDF000040420808080040400000000800000A6 +S315E077CE000420240000808000044040A00000000059 +S315E077CE100000000000000000000004202000000071 +S315E077CE200020604060000000040000602000000001 +S315E077CE3000808000000400002020604000000004AD +S315E077CE4024A0A0C000000000202020000000000001 +S315E077CE5000808080000000000020808000000404CD +S315E077CE60002000000000008080A08000000004A081 +S315E077CE70E08080000100008000000000002420A010 +S315E077CE80818180CD9F0000000202001040400000C3 +S315E077CE9000004050404002002202103000000000BF +S315E077CEA020004000000000002000000000000000A5 +S315E077CEB02020002000000000404000000000000035 +S315E077CEC04040000000000000202000000000000045 +S315E077CED040400000000000000000404000000000F5 +S315E077CEE000504040000000004000000000000000D5 +S315E077CEF00000000000006060000000800400404011 +S315E077CF004040000000006040404000000000604084 +S315E077CF1040C0000000006080404000000000000054 +S315E077CF20C0C000002400D010004000002404404038 +S315E077CF300040000020200000000000004004004090 +S315E077CF40000000006424C0C0000000044000606078 +S315E077CF50000004044000C0C0000004042020202024 +S315E077CF60000000000000404000000000E0A040C064 +S315E077CF700000000080A000000004202400008080EC +S315E077CF8000044000A0A080800404640440600000B0 +S315E077CF9000002004406000000404A0E000000000E8 +S315E077CFA004004404C0800000000080404040040054 +S315E077CFB00024004040000000042480C04040000484 +S315E077CFC00424202000000004602000000000000018 +S315E077CFD00000A0C080800404400420000000040420 +S315E077CFE08080E0C0000004004040A0A00000000080 +S315E077CFF0000000000000040440208080A55E000069 +S315E077D000000202100040400000000010404040025D +S315E077D01002020200000000000000000000000000AD +S315E077D02000000000000000000000000000000000A3 +S315E077D0300000400000000000000040000000000013 +S315E077D04000202000000000000040400000000000C3 +S315E077D0500040404040000000007060404000000023 +S315E077D0600000000000000000000000000000006003 +S315E077D070400000808000044040606000000000408F +S315E077D0804040600000000000404060000000000083 +S315E077D090400020000000000000C0800000000490FF +S315E077D0A0B0000000000404002040000000002000EB +S315E077D0B00000000000040000000000000004648027 +S315E077D0C08000000400000440400000040000008077 +S315E077D0D0800000040400200000000000000000C08B +S315E077D0E000000000000080C040040400008080005B +S315E077D0F0000000042000008080040000408080006B +S315E077D1008004040020604000000000042060600096 +S315E077D110000000E0A0000000000004246480C00066 +S315E077D12000000000004040000424040000004000B6 +S315E077D1300024048080000004042404000000000436 +S315E077D14004004000000000000000004000808000FE +S315E077D150040420000000000404406080A00000047E +S315E077D16004008480800000000000000000000004D6 +S315E077D17004204080004DBD000000020010104040C2 +S315E077D18000000010505000400200201010300000E0 +S315E077D19000002000000000400000200000000000B2 +S315E077D1A00000000000200000000040400000000082 +S315E077D1B00000404000000000000020000000000072 +S315E077D1C00000404000000000000040404040000082 +S315E077D1D00000105040400000000000000000000012 +S315E077D1E000000000000000006040000000800400BE +S315E077D1F04040606000000000606060400000000032 +S315E077D200606060C00000000020A020000000000001 +S315E077D2100000C0C0000024206010004000002424F5 +S315E077D22020000000000020200000000004044004F5 +S315E077D2300040000000002000C040000000044000ED +S315E077D2404040000004044000000000000404202071 +S315E077D250000000000000040080800000000000006D +S315E077D26080C00000000000800080000420008080FD +S315E077D2708000040044408080808000006020206049 +S315E077D28000000004202000200000040400000020B5 +S315E077D290000004002020E02000000000800000402D +S315E077D2A0000420202060400000002424A0A0000095 +S315E077D2B00000202020200000000020000000000071 +S315E077D2C00000000080800080040044040000000035 +S315E077D2D000040404C0E0000004000000A0A0000001 +S315E077D2E00000000000000000000420200080811D7F +S315E077D2F00000001012101000000200100410300039 +S315E077D30000000212000000000000000000000000AC +S315E077D3100000010008004000000000000000000067 +S315E077D320000000000000000000000200100080000E +S315E077D33000000000200000000000004040000000F0 +S315E077D340000004406040400000000040404040005C +S315E077D350000000000000000001000000400000002F +S315E077D36000404000008080000040404040000000E0 +S315E077D37002407060E0000000000020E060000000FE +S315E077D3800080202020000000000020408000000080 +S315E077D3902020200000000004242020000000010067 +S315E077D3A028004000000404000000000000000000B0 +S315E077D3B02000800000040200144080000004000092 +S315E077D3C000000000000404002000000000000004D4 +S315E077D3D0208080000000000000C080040400008008 +S315E077D3E000800000010028004080800400404480EF +S315E077D3F0800080000000004000000000020010007E +S315E077D40080000000000000200000000004202000DB +S315E077D410800000000000A04000000020240000000B +S315E077D42000000024248080000000012028004000CE +S315E077D4300000000020000000000000000080A080CF +S315E077D440000406241400A0000004002404A0800051 +S315E077D450000004A0A0A0A0000000000020000000CB +S315E077D46000242020208000ABF900000000000000B7 +S315E077D47000400000000440302040000200206000B9 +S315E077D4800000000000204000400000010028004036 +S315E077D49040000000204020000000000040000040EF +S315E077D4A000000002005000800000000040200000ED +S315E077D4B00000000800404000000008044028000013 +S315E077D4C000000800601800400000000040000000FF +S315E077D4D00001000000404000000028400000000006 +S315E077D4E0000C0840600000000002403040A0800059 +S315E077D4F0000020402040000000000020600000008F +S315E077D5000000C020204000000020601000400000AE +S315E077D5100020402000000001200800C04000000005 +S315E077D5204004408000000000200040000000000238 +S315E077D530041000E080000004200420400000000092 +S315E077D540002000000000000000206080000000203E +S315E077D550C00000C000000000600000000401200C5D +S315E077D560A04040000400004000000000000040209A +S315E077D57020400080000220102080800000044000D8 +S315E077D58000000000000020206080000000004020BE +S315E077D59040000000200040204000000024000020EA +S315E077D5A04000000120088040400000002000200075 +S315E077D5B000000000600060000080000200500080FC +S315E077D5C0800000000000006000000000204000605E +S315E077D5D000000000402000000000000040008000CE +S315E077D5E0E24C000002021010400000000200140036 +S315E077D5F0200000000002108040400000000000009C +S315E077D60040400000010008004000000000000040B4 +S315E077D610000000000000000000000000020010405B +S315E077D620800000000000004000000000000000409D +S315E077D6300000000004002040000000000000000029 +S315E077D6400000000000000000000001000800C000B4 +S315E077D650000000000000008000000000000080006D +S315E077D660000002001000800000000000008000004B +S315E077D67000000000C0800000000004002080000069 +S315E077D68000040000808000000000000000C0000079 +S315E077D69001000800408000000400000000800000E0 +S315E077D6A0000040008000000002005000800000008B +S315E077D6B000004000000000000000806000000000ED +S315E077D6C00400600000000000002000000000000079 +S315E077D6D0000080800000050408004080000000001C +S315E077D6E000608080000004040000800000000604EB +S315E077D6F05040800000000000A020000000000004F9 +S315E077D7004000000000000400A000000004002000B4 +S315E077D7100080000000002020C0800000050408009B +S315E077D7204000000004004000008000000000400058 +S315E077D7308000000002003020800000000404E080D2 +S315E077D7400000000000048080000000000400A000D4 +S315E077D7500000000020200000003C40000003031C8E +S315E077D7601C606000000303181C4060000007073860 +S315E077D770384040000007073838C0C0000006073059 +S315E077D7803880C001010E0E7070808001010E0E7038 +S315E077D79070808001010C0E6070008003031C1CE032 +S315E077D7A0E0000003031C1CE0E008000303181CC03C +S315E077D7B0E0000007073838C0C0000807073838C0E8 +S315E077D7C0C008000607303880C801010E0E707080F9 +S315E077D7D08001010E0E7070808801010C0E60700872 +S315E077D7E08803031C1CE0E0080003031C1CE0E00050 +S315E077D7F0000303181CC0E0000007073838C0C000F4 +S315E077D8000007073838C0C400000607303880C00103 +S315E077D810010E0E7070808001010E0E7070848401A7 +S315E077D820010C0E6070008003031C1CE0E00004032B +S315E077D830031C1CE0E000000303181CC0E0000007AF +S315E077D840073838C0C4000007073838C0C00000067C +S315E077D85007303880C001010E0E7070848401010EA6 +S315E077D8600E7070808001010C0E6070008003031CDF +S315E077D8701CE0E0040403031C1CE0E0040003031847 +S315E077D8801CC0E0000007073838C4C4000007073833 +S315E077D89038C0C000000607303884C401010E0E7028 +S315E077D8A070848001010E0E7070808401010C0E6029 +S315E077D8B070048003031C1CE0E0000402021C1CE0F9 +S315E077D8C0E000000202181CC0E0000006063838C403 +S315E077D8D0C0006DA9000000C0000040000000000015 +S315E077D8E000004000002000002000004000004000DB +S315E077D8F020000000002000002020000020600000CB +S315E077D900606000004000000040000000000000007A +S315E077D910404000004000000000400000400000006A +S315E077D92040000000000000000040000040000000DA +S315E077D93040400000400000000000000000000000CA +S315E077D940000000400000400000802020800020603A +S315E077D95000004040000040600000000000002040EA +S315E077D960000000400000406000002000000000401A +S315E077D9700000004000004000000000000000444046 +S315E077D980000040000020000020600000404000805A +S315E077D990604000046040040420400000402000001E +S315E077D9A02040000040600004A00000002020000036 +S315E077D9B02000000000000000000000208004200026 +S315E077D9C000002000C040000040002000000000007A +S315E077D9D00000202004042000000000000000000082 +S315E077D9E000000040000040000000400004044000D2 +S315E077D9F00000008004000000000000000000000046 +S315E077DA0000000404000000000000000000000000B1 +S315E077DA10000004840000008000400400400000001D +S315E077DA204000000400400000404004000000000091 +S315E077DA300000000400400000400000000000000005 +S315E077DA4000C000008000000044400028630000002A +S315E077DA5000000020000000004000000000100000F9 +S315E077DA600000104000000000000000000000000009 +S315E077DA700000000000300000000000000000000019 +S315E077DA800000000000000000000020000000000019 +S315E077DA900000000000000000000000000000000029 +S315E077DAA00000000000800000000000000000000099 +S315E077DAB000000000000000000000000040000000C9 +S315E077DAC000000000000000000000080000000000F1 +S315E077DAD000000041000000000008000000000000A0 +S315E077DAE000000000000000804000200000000000F9 +S315E077DAF080000000801000000000000000000000B9 +S315E077DB0000000000000000000000000000000000B8 +S315E077DB100000000000200000000000000000000088 +S315E077DB200000000000000000000000000000000098 +S315E077DB300000000000000000000000000000000088 +S315E077DB400000000000000000000000000000000078 +S315E077DB5000000000000000000000800000000000E8 +S315E077DB6000000000410000000008002000000000EF +S315E077DB700000000000000000000000000000000048 +S315E077DB8000000000000000008000000000000000B8 +S315E077DB9000000000000000000000400000400000A8 +S315E077DBA00000000000000000000000000000000018 +S315E077DBB010000000000000000000000000000000F8 +S315E077DBC0000000003773002080020010000060300C +S315E077DBD00000000000400010000000100010000870 +S315E077DBE00000800040000000000080200000000078 +S315E077DBF04010200020402000000000400000000098 +S315E077DC00000040000000004000200000088020402F +S315E077DC1000004848000008000800804800400000FF +S315E077DC20000840002000008000800080000000802F +S315E077DC300080000000002020000008400000080077 +S315E077DC4000000820080060002800200800A04000B7 +S315E077DC50E040008070002000C0A000004080008097 +S315E077DC60400090C00040004000E0000020000060E7 +S315E077DC70800000800084002000000000A0000040C3 +S315E077DC80A00000002000A024000000004000002053 +S315E077DC9040000000204000C00080608060004000C7 +S315E077DCA00000004080400000808000000000404097 +S315E077DCB000200020040030002000000000002080D3 +S315E077DCC000400000A0208004608000000080000013 +S315E077DCD04040200000600000000000002020800027 +S315E077DCE000E4000040200060000080008080004073 +S315E077DCF000800000800000C000000080400480447F +S315E077DD000000000000800400200000C00080008052 +S315E077DD100000E00040000000000020400000000026 +S315E077DD20000000800000C040200040000080000036 +S315E077DD3080000000C02000402000000000D59F0052 +S315E077DD402000020000002040002000001000006064 +S315E077DD50000000000000000008000000400000001E +S315E077DD600000000000000000400030002000400086 +S315E077DD700040000000000000000040200000008026 +S315E077DD8040002080000000004000000840080008BE +S315E077DD90000000800800000000000008200008006E +S315E077DDA000000080800048004001008800402000A5 +S315E077DDB0006008800000080000002840200000206E +S315E077DDC080284020288080200080000010200020D6 +S315E077DDD040808000000020400080801000808040F6 +S315E077DDE0000000C0200000000040000000000004B2 +S315E077DDF000000000008000002000000040200000C6 +S315E077DE006004000080000000204000000020004011 +S315E077DE100080000000000000000000008000800025 +S315E077DE2040800040804000008000002000203000E5 +S315E077DE3000000000400000A08000400020000000C5 +S315E077DE4000040000000000000000000040004000F1 +S315E077DE5000000000002000800000402440202000E1 +S315E077DE600020008000008000000000000480400071 +S315E077DE702040002080400084044040000000804439 +S315E077DE8020000000804000008000C0000000000015 +S315E077DE901000200000000000008000008000008075 +S315E077DEA08060400000000000A040000000E0000035 +S315E077DEB0400040000000E31600001000000010006C +S315E077DEC000081060000000020010000000106000FB +S315E077DED01000008000000000000000C000002080F5 +S315E077DEE040000000000000002000004000004000F5 +S315E077DEF0001020000000000000000000004008400D +S315E077DF00A00000400000009000000800400060009C +S315E077DF1040000000400000800080000000000080A4 +S315E077DF20008000000000004000000000000040C0D4 +S315E077DF301040000000080040004000000000044068 +S315E077DF40000060004000C0000000002000804080B4 +S315E077DF500000400000004000000040002000000084 +S315E077DF604000A080002080800000A00040200000D4 +S315E077DF7040C00000808000A00000008000500000D4 +S315E077DF80000000008000800020400040A0E0000014 +S315E077DF90C0008000006000004000000080000000C4 +S315E077DFA04000400000040000800020800000000070 +S315E077DFB000000000008000208060000080000040C4 +S315E077DFC08040002040000020000000000000800034 +S315E077DFD020000000800080804000402000008040E4 +S315E077DFE00000400480000000800080000000000010 +S315E077DFF0400800000180200000400080000000809B +S315E077E0000040002000402000400000000000400073 +S315E077E01080400000000040004000008000000000E3 +S315E077E02080000000000000A000A00020008000B281 +S315E077E0305C00102000000000000000001000005097 +S315E077E040000200200000002000000002000000002F +S315E077E0500000200000000020100040000000800053 +S315E077E06000000080000000000000000000000000D3 +S315E077E0700020400000200040000000000000000083 +S315E077E0800040100040000000000000000020000083 +S315E077E0904000000000000000004020000000000083 +S315E077E0A00040000080000000000000000040000013 +S315E077E0B000C00000004000000000002000000000E3 +S315E077E0C08000100000004000108000000002002071 +S315E077E0D0000000200000000000040060000000005F +S315E077E0E00000000000000000000000800000000053 +S315E077E0F020000000200000000820000020008400B7 +S315E077E1002000000000200000400000000000100022 +S315E077E110010000000000000000600000200000041D +S315E077E12020000000008000000020000000000000D2 +S315E077E1304080000000000000800000000000200022 +S315E077E1400000000000400000C00020000080006072 +S315E077E1500000000000008000000000000488000056 +S315E077E16080000040000400C00000000000000000CE +S315E077E1700000800000000020000040000020400002 +S315E077E18000000040000000000000000000000000F2 +S315E077E19000000000400000004000000000400080E2 +S315E077E1A0000080000000048070A9000000000000F5 +S315E077E1B020000000000000000000000000000000E2 +S315E077E1C00000004020000000000000000000000092 +S315E077E1D00000000000000000000000400020000082 +S315E077E1E00020004000000000000000000000000072 +S315E077E1F00000000000200002000010000000000090 +S315E077E20000000000000000000000000000000000B1 +S315E077E21000000000000080000080000000000000A1 +S315E077E22000008000000000000000000000000020F1 +S315E077E2300000400800800000200000000000000099 +S315E077E24000000800100000000000000000800000D9 +S315E077E2500000000000000020000000000008000039 +S315E077E2608000000000000000800000000000000051 +S315E077E2700000004000000000000000000000008081 +S315E077E2800000000000000000000080000000200091 +S315E077E29000000000000040000000000000000000E1 +S315E077E2A000000000002040000000000000000000B1 +S315E077E2B0000000000000000000000400008000106D +S315E077E2C000000010010000000000000020800050F0 +S315E077E2D000000000000000000000000000000000E1 +S315E077E2E00000002000002000000000000000000091 +S315E077E2F00000000000000000002000000040000061 +S315E077E30000000000000000C00000000000002000D0 +S315E077E3100000200000800000000000000000000000 +S315E077E32000672A00102000000020000000000000AF +S315E077E330500000020000000000200000000000000E +S315E077E3400000000020000000200010000000000020 +S315E077E3500000000040800000000000000040000060 +S315E077E36000000000400000204000000000000000B0 +S315E077E37000000040100040000000000000000000B0 +S315E077E38000004000000000000000000000000000F0 +S315E077E3900000004000000000000080000000004020 +S315E077E3A000000080000040000000000000200080B0 +S315E077E3B000000000000000004000080000000200B6 +S315E077E3C000200000002080000000000420400000CC +S315E077E3D000000000000000000080000080000000E0 +S315E077E3E080002000000000200000000800000020E8 +S315E077E3F0800420000000200080004000000000003C +S315E077E400100001000000000000000000000020403E +S315E077E41004000020000080000000002000000000DB +S315E077E420000080000000000000000080000000008F +S315E077E43020000400000080401000008000110000FA +S315E077E4400040000020000080900000000000800877 +S315E077E450000080000040000440800000200020009B +S315E077E460000000008000000000200000400000204F +S315E077E47000400000004000000000000000000000BF +S315E077E48000800000000020000000400000008000CF +S315E077E49080000000000000000084080800000060AB +S315E077E4A000600040000008000000400040000000E7 +S315E077E4B020004040000000400000200020002000BF +S315E077E4C000000000800000001000A000000020207F +S315E077E4D040004080400000002000600440200000BB +S315E077E4E000008000004000400020000000000000AF +S315E077E4F008000000004028400040200090400000DF +S315E077E500C00000000000000000002000004020006E +S315E077E510200060002000200000400020000000403E +S315E077E520000040000020001040004000402000003E +S315E077E5304000004000004000000800002000200076 +S315E077E540000000C02000000020000000000010005E +S315E077E550200000008000600040041000400040008A +S315E077E56040200020000000000020000000000000AE +S315E077E57040004040000000000040000040004000BE +S315E077E580006000C000A0000000600004A0008000EA +S315E077E590008000200020000000801000004000008E +S315E077E5A020600000400000200000200000004004CA +S315E077E5B00000006080400044000840004000000012 +S315E077E5C04800400040008000402000000080048042 +S315E077E5D0000440000000008000008000800000001A +S315E077E5E0400000804020008040C0004000000000EE +S315E077E5F00008400040000000006080408060000036 +S315E077E6004000008000000000081000000040000095 +S315E077E610800000933000000040000000000000001A +S315E077E620000000000000000040000000400000000D +S315E077E630020000000020000000000000000000005B +S315E077E64000000000004000000020400000000000CD +S315E077E6500000000004000000000000000000000059 +S315E077E6600000000000000008000800000000080035 +S315E077E670008000000000000080000000000000003D +S315E077E680000000200000000020800000000000006D +S315E077E690000000000000000000000000000000001D +S315E077E6A000100000000000400000000000000000BD +S315E077E6B000000000000000000000000000000000FD +S315E077E6C0000000000010001000000000800000004D +S315E077E6D000000000002000000000000000000000BD +S315E077E6E000002000000040000040000000400000ED +S315E077E6F0000000000000000000000020008000809D +S315E077E700000080000000000000000080000000208C +S315E077E71000001000000000000000006040000000EC +S315E077E720000000000000000000000000800000000C +S315E077E73040000800000000000008000000400000EC +S315E077E740000000000000000040000000000000002C +S315E077E75000000000000000000020000080000000BC +S315E077E760004000000008000000004008004000007C +S315E077E770000040008000000000000000000040003C +S315E077E7800008000000800000000000002639000045 +S315E077E790000000600000000000000000400040003C +S315E077E7A000200040000000000000000000000000AC +S315E077E7B0200000000000000000000000200000209C +S315E077E7C000800000000040002000002040000000AC +S315E077E7D02000208040000000004008200000000074 +S315E077E7E040000000000000002040000060000000CC +S315E077E7F040004000400000000000000000000020DC +S315E077E80040000000600000000000000000400000CB +S315E077E810000040400000004020008040000040209B +S315E077E820004000000000404000500000000000007B +S315E077E830000000000020400000000000000000001B +S315E077E84000200000000000004040000000000000CB +S315E077E850404000004000004000000000000000005B +S315E077E860000000400000000000000000000000000B +S315E077E87040000040000000204000000040002000FB +S315E077E880800000000000000000000000000000406B +S315E077E890000020000000200040004000202000001B +S315E077E8A00000000040002040000004000000400027 +S315E077E8B0004000000000000000004020000040809B +S315E077E8C0000000E400000000000000008000800007 +S315E077E8D0000040800000000020000080004000003B +S315E077E8E0400000000000000000000000000040004B +S315E077E8F0604000000000800000400000000000005B +S315E077E9004000000040343300000000200000004063 +S315E077E9100800000000000000000000000020000072 +S315E077E920000000600020000000008000000080000A +S315E077E930000010000080000000004000000000802A +S315E077E94000000020000040001000000000000008F2 +S315E077E95040000000000000000000004000000000DA +S315E077E960400000000000900000000000000000007A +S315E077E970000000000000000000000000000000201A +S315E077E98020000000400000200000000000000000AA +S315E077E99000000040000020000000000000000000BA +S315E077E9A00000000008000020200000000000800042 +S315E077E9B000000060000080000020000000000000FA +S315E077E9C00020000014004000000000000020002036 +S315E077E9D0000040000000000000000000200000007A +S315E077E9E0008080000040004000000000000040000A +S315E077E9F000000000002004800000000000002000F6 +S315E077EA000000000000800000200000000000008089 +S315E077EA1000000020000000004000040000000040F5 +S315E077EA200000000040000000000000000040000009 +S315E077EA300080000000400000040080000000000035 +S315E077EA400000008000000020000000000000004089 +S315E077EA500000800000400000000000000000000099 +S315E077EA6000000000802000000000000000000000A9 +S315E077EA7000000000001000000000A0000000DDE4C8 +S315E077EA800000000000000000000000000000000029 +S315E077EA900000000000000000000000000000000019 +S315E077EAA00000000000000000000000000000000009 +S315E077EAB000000000000000000000000000000000F9 +S315E077EAC000000000000000000000000000000000E9 +S315E077EAD000000000000000000000000000000000D9 +S315E077EAE000000000000000000000000000000000C9 +S315E077EAF000000000000000000000000000000000B9 +S315E077EB0000000000000000000000000000000000A8 +S315E077EB100000000000000000000000000000000098 +S315E077EB200000000000000000000000000000000088 +S315E077EB300000000000000000000000000000000078 +S315E077EB400000000000000000000000000000000068 +S315E077EB500000000000000000000000000000000058 +S315E077EB600000000000000000000000000000000048 +S315E077EB700000000000000000000000000000000038 +S315E077EB800000000000000000000000000000000028 +S315E077EB900000000000000000000000000000000018 +S315E077EBA00000000000000000000000000000000008 +S315E077EBB000000000000000000000000000000000F8 +S315E077EBC000000000000000000000000000000000E8 +S315E077EBD000000000000000000000000000000000D8 +S315E077EBE000000000000000000000000000000000C8 +S315E077EBF0000000000000003E490000000000000031 +S315E077EC0000000000000000000000000000000000A7 +S315E077EC100000000000000000000000000000000097 +S315E077EC200000000000000000000000000000000087 +S315E077EC300000000000000000000000000000000077 +S315E077EC400000000000000000000000000000000067 +S315E077EC500000000000000000000000000000000057 +S315E077EC600000000000000000000000000000000047 +S315E077EC700000000000000000000000000000000037 +S315E077EC800000000000000000000000000000000027 +S315E077EC900000000000000000000000000000000017 +S315E077ECA00000000000000000000000000000000007 +S315E077ECB000000000000000000000000000000000F7 +S315E077ECC000000000000000000000000000000000E7 +S315E077ECD000000000000000000000000000000000D7 +S315E077ECE000000000000000000000000000000000C7 +S315E077ECF000000000000000000000000000000000B7 +S315E077ED0000000000000000000000000000000000A6 +S315E077ED100000000000000000000000000000000096 +S315E077ED200000000000000000000000000000000086 +S315E077ED300000000000000000000000000000000076 +S315E077ED400000000000000000000000000000000066 +S315E077ED500000000000000000000000000000000056 +S315E077ED600000000000000000000000000000000046 +S315E077ED703E490000000000000000000000000000AF +S315E077ED800000000000000000000000000000000026 +S315E077ED900000000000000000000000000000000016 +S315E077EDA00000000000000000000000000000000006 +S315E077EDB000000000000000000000000000000000F6 +S315E077EDC000000000000000000000000000000000E6 +S315E077EDD000000000000000000000000000000000D6 +S315E077EDE000000000000000000000000000000000C6 +S315E077EDF000000000000000000000000000000000B6 +S315E077EE0000000000000000000000000000000000A5 +S315E077EE100000000000000000000000000000000095 +S315E077EE200000000000000000000000000000000085 +S315E077EE300000000000000000000000000000000075 +S315E077EE400000000000000000000000000000000065 +S315E077EE500000000000000000000000000000000055 +S315E077EE600000000000000000000000000000000045 +S315E077EE700000000000000000000000000000000035 +S315E077EE800000000000000000000000000000000025 +S315E077EE900000000000000000000000000000000015 +S315E077EEA00000000000000000000000000000000005 +S315E077EEB000000000000000000000000000000000F5 +S315E077EEC000000000000000000000000000000000E5 +S315E077EED000000000000000000000000000000000D5 +S315E077EEE00000000000000000003E4900000000003E +S315E077EEF000000000000000000000000000000000B5 +S315E077EF0000000000000000000000000000000000A4 +S315E077EF100000000000000000000000000000000094 +S315E077EF200000000000000000000000000000000084 +S315E077EF300000000000000000000000000000000074 +S315E077EF400000000000000000000000000000000064 +S315E077EF500000000000000000000000000000000054 +S315E077EF600000000000000000000000000000000044 +S315E077EF700000000000000000000000000000000034 +S315E077EF800000000000000000000000000000000024 +S315E077EF900000000000000000000000000000000014 +S315E077EFA00000000000000000000000000000000004 +S315E077EFB000000000000000000000000000000000F4 +S315E077EFC000000000000000000000000000000000E4 +S315E077EFD000000000000000000000000000000000D4 +S315E077EFE000000000000000000000000000000000C4 +S315E077EFF000000000000000000000000000000000B4 +S315E077F00000000000000000000000000000000000A3 +S315E077F0100000000000000000000000000000000093 +S315E077F0200000000000000000000000000000000083 +S315E077F0300000000000000000000000000000000073 +S315E077F0400000000000000000000000000000000063 +S315E077F0500000000000000000000000000000000053 +S315E077F06000003E49000000000000000000000000BC +S315E077F0700000000000000000000000000000000033 +S315E077F0800000000000000000000000000000000023 +S315E077F0900000000000000000000000000000000013 +S315E077F0A00000000000000000000000000000000003 +S315E077F0B000000000000000000000000000000000F3 +S315E077F0C000000000000000000000000000000000E3 +S315E077F0D000000000000000000000000000000000D3 +S315E077F0E000000000000000000000000000000000C3 +S315E077F0F000000000000000000000000000000000B3 +S315E077F10000000000000000000000000000000000A2 +S315E077F1100000000000000000000000000000000092 +S315E077F1200000000000000000000000000000000082 +S315E077F1300000000000000000000000000000000072 +S315E077F1400000000000000000000000000000000062 +S315E077F1500000000000000000000000000000000052 +S315E077F1600000000000000000000000000000000042 +S315E077F1700000000000000000000000000000000032 +S315E077F1800000000000000000000000000000000022 +S315E077F1900000000000000000000000000000000012 +S315E077F1A00000000000000000000000000000000002 +S315E077F1B000000000000000000000000000000000F2 +S315E077F1C000000000000000000000000000000000E2 +S315E077F1D000000000000000000000003E490000004B +S315E077F1E000000000000000000000000000000000C2 +S315E077F1F000000000000000000000000000000000B2 +S315E077F20000000000000000000000000000000000A1 +S315E077F2100000000000000000000000000000000091 +S315E077F2200000000000000000000000000000000081 +S315E077F2300000000000000000000000000000000071 +S315E077F2400000000000000000000000000000000061 +S315E077F2500000000000000000000000000000000051 +S315E077F2600000000000000000000000000000000041 +S315E077F2700000000000000000000000000000000031 +S315E077F2800000000000000000000000000000000021 +S315E077F2900000000000000000000000000000000011 +S315E077F2A00000000000000000000000000000000001 +S315E077F2B000000000000000000000000000000000F1 +S315E077F2C000000000000000000000000000000000E1 +S315E077F2D000000000000000000000000000000000D1 +S315E077F2E000000000000000000000000000000000C1 +S315E077F2F000000000000000000000000000000000B1 +S315E077F30000000000000000000000000000000000A0 +S315E077F3100000000000000000000000000000000090 +S315E077F3200000000000000000000000000000000080 +S315E077F3300000000000000000000000000000000070 +S315E077F3400000000000000000000000000000000060 +S315E077F350000000003E4900000000000000000000C9 +S315E077F3600000000000000000000000000000000040 +S315E077F3700000000000000000000000000000000030 +S315E077F3800000000000000000000000000000000020 +S315E077F3900000000000000000000000000000000010 +S315E077F3A00000000000000000000000000000000000 +S315E077F3B000000000000000000000000000000000F0 +S315E077F3C000000000000000000000000000000000E0 +S315E077F3D000000000000000000000000000000000D0 +S315E077F3E000000000000000000000000000000000C0 +S315E077F3F000000000000000000000000000000000B0 +S315E077F400000000000000000000000000000000009F +S315E077F410000000000000000000000000000000008F +S315E077F420000000000000000000000000000000007F +S315E077F430000000000000000000000000000000006F +S315E077F440000000000000000000000000000000005F +S315E077F450000000000000000000000000000000004F +S315E077F460000000000000000000000000000000003F +S315E077F470000000000000000000000000000000002F +S315E077F480000000000000000000000000000000001F +S315E077F490000000000000000000000000000000000F +S315E077F4A000000000000000000000000000000000FF +S315E077F4B000000000000000000000000000000000EF +S315E077F4C0000000000000000000000000003E490058 +S315E077F4D000000000000000000000000000000000CF +S315E077F4E000000000000000000000000000000000BF +S315E077F4F000000000000000000000000000000000AF +S315E077F500000000000000000000000000000000009E +S315E077F510000000000000000000000000000000008E +S315E077F520000000000000000000000000000000007E +S315E077F530000000000000000000000000000000006E +S315E077F540000000000000000000000000000000005E +S315E077F550000000000000000000000000000000004E +S315E077F560000000000000000000000000000000003E +S315E077F570000000000000000000000000000000002E +S315E077F580000000000000000000000000000000001E +S315E077F590000000000000000000000000000000000E +S315E077F5A000000000000000000000000000000000FE +S315E077F5B000000000000000000000000000000000EE +S315E077F5C000000000000000000000000000000000DE +S315E077F5D000000000000000000000000000000000CE +S315E077F5E000000000000000000000000000000000BE +S315E077F5F000000000000000000000000000000000AE +S315E077F600000000000000000000000000000000009D +S315E077F610000000000000000000000000000000008D +S315E077F620000000000000000000000000000000007D +S315E077F630000000000000000000000000000000006D +S315E077F6400000000000003E490000000000000000D6 +S315E077F650000000000000000000000000000000004D +S315E077F660000000000000000000000000000000003D +S315E077F670000000000000000000000000000000002D +S315E077F680000000000000000000000000000000001D +S315E077F690000000000000000000000000000000000D +S315E077F6A000000000000000000000000000000000FD +S315E077F6B000000000000000000000000000000000ED +S315E077F6C000000000000000000000000000000000DD +S315E077F6D000000000000000000000000000000000CD +S315E077F6E000000000000000000000000000000000BD +S315E077F6F000000000000000000000000000000000AD +S315E077F700000000000000000000000000000000009C +S315E077F710000000000000000000000000000000008C +S315E077F720000000000000000000000000000000007C +S315E077F730000000000000000000000000000000006C +S315E077F740000000000000000000000000000000005C +S315E077F750000000000000000000000000000000004C +S315E077F760000000000000000000000000000000003C +S315E077F770000000000000000000000000000000002C +S315E077F780000000000000000000000000000000001C +S315E077F790000000000000000000000000000000000C +S315E077F7A000000000000000000000000000000000FC +S315E077F7B00000000000000000000000000000003EAE +S315E077F7C0490000000000000000000004002000006F +S315E077F7D000000000000000000000000000000000CC +S315E077F7E00001000800400000000000000000000073 +S315E077F7F0000000000000000000020010008000001A +S315E077F800000000000000000000000000000000009B +S315E077F8100004002000000000000000000000000067 +S315E077F8200000000000000001000800400000000032 +S315E077F8300000000000000000000000000000000269 +S315E077F84000100080000000000000000000000000CB +S315E077F8500000000000000004002000000000000027 +S315E077F8600000000000000000000000000001000832 +S315E077F87000400000000000000000000000000000EB +S315E077F8800000000000020010008000000000000089 +S315E077F89000000000000000000000000000040020E7 +S315E077F8A000000000000000000000000000000000FB +S315E077F8B000000001000800400000000000000000A2 +S315E077F8C00000000000000000000000020010008049 +S315E077F8D000000000000000000000000000000000CB +S315E077F8E00000000400200000000000000000000097 +S315E077F8F00000000000000000000100080040000062 +S315E077F900000000000000000000000000000000009A +S315E077F91000020010008000000000000000000000F8 +S315E077F9200000000000000000000400200000000056 +S315E077F9300000000000000000B18100000000000038 +S315E077F940000000000000000000000000000000005A +S315E077F950000000000000000000000000000000004A +S315E077F960000000000000000000000000000000003A +S315E077F970000000000000000000000000000000002A +S315E077F980000000000000000000000000000000001A +S315E077F990000000000000000000000000000000000A +S315E077F9A000000000000000000000000000000000FA +S315E077F9B000000000000000000000000000000000EA +S315E077F9C000000000000000000000000000000000DA +S315E077F9D000000000000000000000000000000000CA +S315E077F9E000000000000000000000000000000000BA +S315E077F9F000000000000000000000000000000000AA +S315E077FA000000000000000000000000000000000099 +S315E077FA100000000000000000000000000000000089 +S315E077FA200000000000000000000000000000000079 +S315E077FA300000000000000000000000000000000069 +S315E077FA400000000000000000000000000000000059 +S315E077FA500000000000000000000000000000000049 +S315E077FA600000000000000000000000000000000039 +S315E077FA700000000000000000000000000000000029 +S315E077FA800000000000000000000000000000000019 +S315E077FA900000000000000000000000000000000009 +S315E077FAA000000000000000000000000000000000F9 +S315E077FAB0003E490000000000000000000000000062 +S315E077FAC000000000000000000000000000000000D9 +S315E077FAD000000000000000000000000000000000C9 +S315E077FAE000000000000000000000000000000000B9 +S315E077FAF000000000000000000000000000000000A9 +S315E077FB000000000000000000000000000000000098 +S315E077FB100000000000000000000000000000000088 +S315E077FB200000000000000000000000000000000078 +S315E077FB300000000000000000000000000000000068 +S315E077FB400000000000000000000000000000000058 +S315E077FB500000000000000000000000000000000048 +S315E077FB600000000000000000000000000000000038 +S315E077FB700000000000000000000000000000000028 +S315E077FB800000000000000000000000000000000018 +S315E077FB900000000000000000000000000000000008 +S315E077FBA000000000000000000000000000000000F8 +S315E077FBB000000000000000000000000000000000E8 +S315E077FBC000000000000000000000000000000000D8 +S315E077FBD000000000000000000000000000000000C8 +S315E077FBE000000000000000000000000000000000B8 +S315E077FBF000000000000000000000000000000000A8 +S315E077FC000000000000000000000000000000000097 +S315E077FC100000000000000000000000000000000087 +S315E077FC20000000000000000000003E4900000000F0 +S315E077FC300000000000000000000000000000000067 +S315E077FC400000000000000000000000000000000057 +S315E077FC500000000000000000000000000000000047 +S315E077FC600000000000000000000000000000000037 +S315E077FC700000000000000000000000000000000027 +S315E077FC800000000000000000000000000000000017 +S315E077FC900000000000000000000000000000000007 +S315E077FCA000000000000000000000000000000000F7 +S315E077FCB000000000000000000000000000000000E7 +S315E077FCC000000000000000000000000000000000D7 +S315E077FCD000000000000000000000000000000000C7 +S315E077FCE000000000000000000000000000000000B7 +S315E077FCF000000000000000000000000000000000A7 +S315E077FD000000000000000000000000000000000096 +S315E077FD100000000000000000000000000000000086 +S315E077FD200000000000000000000000000000000076 +S315E077FD300000000000000000000000000000000066 +S315E077FD400000000000000000000000000000000056 +S315E077FD500000000000000000000000000000000046 +S315E077FD600000000000000000000000000000000036 +S315E077FD700000000000000000000000000000000026 +S315E077FD800000000000000000000000000000000016 +S315E077FD900000000000000000000000000000000006 +S315E077FDA00000003E4900000000000000000000006F +S315E077FDB000000000000000000000000000000000E6 +S315E077FDC000000000000000000000000000000000D6 +S315E077FDD000000000000000000000000000000000C6 +S315E077FDE000000000000000000000000000000000B6 +S315E077FDF000000000000000000000000000000000A6 +S315E077FE000000000000000000000000000000000095 +S315E077FE100000000000000000000000000000000085 +S315E077FE200000000000000000000000000000000075 +S315E077FE300000000000000000000000000000000065 +S315E077FE400000000000000000000000000000000055 +S315E077FE500000000000000000000000000000000045 +S315E077FE600000000000000000000000000000000035 +S315E077FE700000000000000000000000000000000025 +S315E077FE800000000000000000000000000000000015 +S315E077FE900000000000000000000000000000000005 +S315E077FEA000000000000000000000000000000000F5 +S315E077FEB000000000000000000000000000000000E5 +S315E077FEC000000000000000000000000000000000D5 +S315E077FED000000000000000000000000000000000C5 +S315E077FEE000000000000000000000000000000000B5 +S315E077FEF000000000000000000000000000000000A5 +S315E077FF000000000000000000000000000000000094 +S315E077FF100000000000000000000000003E490000FD +S315E077FF200000000000000000000000000040000034 +S315E077FF300000000000000000000000000000000064 +S315E077FF400000000000000000000000000000000054 +S315E077FF500000000000000000000000000000000044 +S315E077FF600000000000000000000001000000000033 +S315E077FF7008000040002000000000000000000000BC +S315E077FF8000000000000000002000000000000000F4 +S315E077FF900000000000000000000000000000000004 +S315E077FFA00000000000200000820000000000000052 +S315E077FFB00000000060000000000000000000000084 +S315E077FFC000000000000000000000000000001000C4 +S315E077FFD000000000000000000000000000000000C4 +S315E077FFE000000000000000000000000000000000B4 +S315E077FFF00000000000000000100000000000000094 +S315E07800000000000000000000000080000000000012 +S315E07800100800000000010000000000000000000079 +S315E07800200000000010000000000000000000000062 +S315E07800306000000000000000000000000000000002 +S315E078004040000000004000000000000000000000D2 +S315E07800500000000000001000000000000000000032 +S315E07800600000000000000000000000000000000032 +S315E07800700000000000000000000000000000000022 +S315E0780080000000000800000000000000000000000A +S315E078009000000000006C6B000000000000004000EB +S315E07800A00000000000000000400000000000002092 +S315E07800B00000008000000000000000A000002000A2 +S315E07800C000000020000000200000008000004000D2 +S315E07800D00000000000000040000000002000000062 +S315E07800E00020000000000000000000804000C00012 +S315E07800F00020000000000000008000000000000002 +S315E0780100800000000000000000C0000080000000D1 +S315E07801100000000000000000000000000000000081 +S315E078012000002000000000400000200000000040B1 +S315E07801300000004040800000000010000000004011 +S315E078014000006000000000A0000000800000008051 +S315E078015000002000000000800000800000000040E1 +S315E07801600020400000200000002000000000800011 +S315E078017000008000000000000000800040200000C1 +S315E07801800000000000000000000000000000000011 +S315E07801908000000000000000000000004000000041 +S315E07801A080000000004000000000000080000000B1 +S315E07801B00000000000000040800000408000400021 +S315E07801C000400000800000000000000000006000B1 +S315E07801D00000008000000000000000200000000021 +S315E07801E00000000000000000200000000000400051 +S315E07801F02000000000000000000000000040000041 +S315E07802004000800040008000000000004000BFE72A +S315E07802100000000000000040000000000000000040 +S315E078022000000020000000006000000000000000F0 +S315E07802300000000000000000000000000000004020 +S315E07802400000000000000000000000000000200030 +S315E07802500000000000200000000000000020000000 +S315E07802600020000080002000000000000000000070 +S315E078027000000000000000000000000000000080A0 +S315E07802800000400000000000004000000000000090 +S315E0780290000042000000800000400020000000409E +S315E07802A000000020000000000000000000000000D0 +S315E07802B000008000100000400000000020000000F0 +S315E07802C02000000000000020000000000000000090 +S315E07802D0000000800000000040001000C000000030 +S315E07802E00000000000000000000000008000000030 +S315E07802F08000000000002000000040000080000040 +S315E0780300000100000000000000004000000000004E +S315E0780310000000000000000000000000000000007F +S315E078032000000000200000000000000000008000CF +S315E0780330000000400000800000400000000000005F +S315E0780340000000000000000000000000000000004F +S315E0780350000000000000000000000000000000003F +S315E078036000200000000000004000000000000000CF +S315E0780370000000000000000000400000004000009F +S315E0780380800000000040000F7700000000200000A9 +S315E0780390000004000000000000400040000000007B +S315E07803A000000000800000002000000080200000AF +S315E07803B000600000002000000020000080000000BF +S315E07803C0C0000000000000004000000000000000CF +S315E07803D000000020000000008000000000000040DF +S315E07803E000C020000000000000000080000001004E +S315E07803F008000080000000400000008000008000D7 +S315E078040000000000000080000000000000000040CE +S315E0780410000000000000000000000000004000003E +S315E078042020400000006000C00000000040000000AE +S315E078043000800000400000004080000000800080DE +S315E0780440008000000020000000800000000010001E +S315E0780450000020002000200000000020004000007E +S315E078046000800000000000000000000000804000EE +S315E07804700080000000000000000000000800008016 +S315E078048000000080000020400000000000000040EE +S315E078049000008000100000400000000000000080AE +S315E07804A0000000000000000040008000200000000E +S315E07804B0004000800000800000008000000000001E +S315E07804C0204000004080000000400000002000004E +S315E07804D000000000000000000000100000000000AE +S315E07804E0000000200000000000000040000040000E +S315E07804F000000000800000000000004000000000DE +S315E0780500C67F0000040048100000001000000008D4 +S315E0780510400010005018000000000008202000007D +S315E078052000200000002000002000200020001000BD +S315E078053000402000000004000000000000002820B1 +S315E078054040002000200020000000600020002040CD +S315E07805500050000080001000004000440040000099 +S315E078056000000000202000000000000000040000E9 +S315E0780570000000000000000020000000404000007D +S315E07805804020000020000000200000002400400009 +S315E078059040004000100000042000004000004020A9 +S315E07805A000000000000000004000A00040000000CD +S315E07805B0208000800000044020C010000000200069 +S315E07805C0000000000000004000000040002000A08D +S315E07805D040800040000040006000804020C000007D +S315E07805E000000000804000002000808020000000AD +S315E07805F000008000000000A00000200000008000DD +S315E0780600A02000000000244000200000C000000088 +S315E078061000006020008000004020000440000000D8 +S315E07806202000000400008000C00080C001002000A7 +S315E0780630400000800020000000002020000000003C +S315E0780640000020C0000000400080000000000000AC +S315E0780650000000008000200000000080008000405C +S315E0780660200800800080004000080000400000007C +S315E0780670800000008000204000255F0040280030A0 +S315E078068000003040002000000010280000002040E4 +S315E078069060102010400000080028000000000000EC +S315E07806A04000000000040008200800082000000848 +S315E07806B06004200C002000400000040008000004DC +S315E07806C00020100000041004002000200010000034 +S315E07806D02000000020000010000020040000400008 +S315E07806E0002020800000000010002040000000205C +S315E07806F00000002020000420000004000040448030 +S315E0780700000000200000100020002000000000001B +S315E07807100000000410000000000000000000002047 +S315E078072020000000200000308000002000000070EB +S315E078073000000004008080004000C00000C0008017 +S315E078074000200040000000000000004020002080EB +S315E0780750000000208000000000C0000000002000BB +S315E078076000C0104000402000E0002040002000005B +S315E078077000000000208000000000000000A040009B +S315E078078000000000000020802000000040004000CB +S315E0780790000000408020A0004080200000C00020BB +S315E07807A000000000000000008000002060000000EB +S315E07807B08040000000C02080040000800000802097 +S315E07807C0008000000020008020000080600040006B +S315E07807D08040000040000000010000A02100600099 +S315E07807E00000008100000080004040800000880121 +S315E07807F0010022CB00042018000010003020000011 +S315E07808000018003800104000601060200028400092 +S315E07808100808202000000000006000000020041096 +S315E07808200808000028000000082044002800000896 +S315E07808300040000000002804000020601020040436 +S315E078084020400010601000100000000000204000FA +S315E07808500000000000200000600020000000000496 +S315E0780860001000200000000000002020002040005A +S315E0780870440000002400200400800020000420507A +S315E07808800000602000000000000000002410000056 +S315E0780890000020000000002000004020000020201A +S315E07808A010008000A00000104000001004000080D6 +S315E07808B0200040000080400080002080400000005A +S315E07808C000C0000080004060800040200020C080AA +S315E07808D04000800000A0004020204010800080008A +S315E07808E020004020802000000000002000802000CA +S315E07808F08000A00020800004600040000080400076 +S315E078090080200000202040008040002040C0002069 +S315E07809108000E02000008480200000000041000094 +S315E07809202040002000C02000200080002000408089 +S315E078093000040020808040208000400080002080F5 +S315E0780940000000008000A00000C0000000800000E9 +S315E07809508020012000008100804000000100200016 +S315E078096000C000C000800008804000C23B00240040 +S315E078097000404000004000600000000000000050A9 +S315E078098044000000082000200000400020080064B1 +S315E07809902400000004002050000040000820204099 +S315E07809A06000046000406000000000200C00200039 +S315E07809B00020000040202040200000400090000009 +S315E07809C04000008000000040200000000020000089 +S315E07809D0000000008000000004200400204120048C +S315E07809E05000006000800000006040808040006039 +S315E07809F004080000600000004400006040200040E9 +S315E0780A000040205040104000004000604000100058 +S315E0780A102040C0000040C000000000000004002034 +S315E0780A2000040000004000000000002000000060A4 +S315E0780A300000608000400000200080206080000098 +S315E0780A400000408040808040200000804080008028 +S315E0780A5060004020400060002000C0008040408078 +S315E0780A6000C000800000200000C000200040200088 +S315E0780A708060000000204000440020000400400030 +S315E0780A80E000000004006000002020C00040000084 +S315E0780A9000C100800040600000A040002400000013 +S315E0780AA000C0800000A00080002000000000204008 +S315E0780AB0E000200000600080004100000000802017 +S315E0780AC0000060000000800020800000004000E028 +S315E0780AD0002048000000C000804000080060C000A8 +S315E0780AE0000050288D84000004002040000040007B +S315E0780AF000000000000000304004004000080010CC +S315E0780B0000000000400020004004000020040000BF +S315E0780B1000200000400800004004800440400020A7 +S315E0780B20400000000000080020600000202000203F +S315E0780B300000004000009000000000000000000087 +S315E0780B400000000000000040000000000000000007 +S315E0780B5000000420842000002010000000900000AF +S315E0780B60A060000080E0002000040800000040005B +S315E0780B7000000040200000000000001000000000A7 +S315E0780B800000000000000000802000408000400067 +S315E0780B908000000000040000200000800040000093 +S315E0780BA00000000060000000200040804000400027 +S315E0780BB020000000208060000040008040804000F7 +S315E0780BC08000008000800080002040204040006067 +S315E0780BD000000080000080004000008000000020D7 +S315E0780BE00080200000000000000000800000004047 +S315E0780BF02004C000200400400000200000040040EB +S315E0780C000040002000004000000140004000002045 +S315E0780C1000208000400000000000800080A00000F6 +S315E0780C2000000000000000400020000000400000C6 +S315E0780C3000000100002000002000000060000000B5 +S315E0780C400060800000800000000000000080004026 +S315E0780C5000400040004000C0004000805068AA0094 +S315E0780C600000000000000000002000000000000402 +S315E0780C7000000000000000200000000000000000F6 +S315E0780C802000002000000000104000400020000016 +S315E0780C902000002020000000000000002000200452 +S315E0780CA00000000000004000400010000000000056 +S315E0780CB000004000100000004000006000400000A6 +S315E0780CC020006000400000000000200000000000E6 +S315E0780CD00400004000000000000000000000000072 +S315E0780CE040000000000000002000200000006000C6 +S315E0780CF00000000040000000400000000040400096 +S315E0780D00100000000000000000000000C000002095 +S315E0780D100000000420000000000000000000000051 +S315E0780D204000002000000000400000008040000005 +S315E0780D3000000020000000004000000000400000B5 +S315E0780D400000000000008000000020000000400065 +S315E0780D5080008000200000000000000060000000B5 +S315E0780D600020204000000000000000000000204045 +S315E0780D7020004000000000002000000000C00000D5 +S315E0780D800000000000000000004000000000004085 +S315E0780D900020400000000000800000000000000015 +S315E0780DA020000040200000000080004000000000A5 +S315E0780DB00080000000002000C00000000000000075 +S315E0780DC000C00000004840008000000008002000D5 +S315E0780DD0000000000800DFBB0020004000000000B3 +S315E0780DE000500010000000000800000040000000FD +S315E0780DF00000200000000000080004000000000069 +S315E0780E000020000000108000200000400000000074 +S315E0780E100000000020000400000000000000000050 +S315E0780E2000000000200000000000000000800000C4 +S315E0780E3000200000000000006000000000000404CC +S315E0780E408000800000000001404000000000600063 +S315E0780E500000000000006000000000004000000094 +S315E0780E6020000040040000000040200040002010F0 +S315E0780E704000004000200000000000400000000034 +S315E0780E800060000080000000000000000000000024 +S315E0780E9000000040008000400000000000002000D4 +S315E0780EA00000000020000000004000000000000084 +S315E0780EB000000020000000400000000000008000F4 +S315E0780EC00000000000004000000000004000000044 +S315E0780ED000000000400000004000000080000000B4 +S315E0780EE02000000000000000000000800000000004 +S315E0780EF00000000020000000000000800080004034 +S315E0780F00800000000000002004000000000040009F +S315E0780F104040002000000000000000800000000053 +S315E0780F2020000000002000000040000000000000E3 +S315E0780F300000000000002040000020006000001063 +S315E0780F400000000080000080000000000020000D16 +S315E0780F5009000000000000142008000000200008C6 +S315E0780F6000000000400800000800000000000000D3 +S315E0780F70000000000040040000000004000040206B +S315E0780F800020000000002000004040200000000023 +S315E0780F900008000000000000004020000000000487 +S315E0780FA0000000000000000000400000000420007F +S315E0780FB00000000020000000400000000000000073 +S315E0780FC00000C000200400000400002000000000BB +S315E0780FD0000000800040200000004020040000046B +S315E0780FE000000000000000000000000000000000A3 +S315E0780FF00000000040002000000040000000402093 +S315E078100000000080400020800040000000000040A2 +S315E07810100000000080000000004000000000200092 +S315E07810200000000040000000004080000000400022 +S315E07810300000008000200000000000000080000032 +S315E07810408000008000A00000200000000000000082 +S315E078105000000000208000002400000400800000EA +S315E07810600000400000000000400000400000000062 +S315E07810700000000000000000000000002000008072 +S315E07810800080002000000000000000400000000022 +S315E078109000000004000080000000000080000000EE +S315E07810A000000000002000000000000000000000C2 +S315E07810B00000000080000100000048000840800041 +S315E07810C000018000000000005AAC00000010080023 +S315E07810D0200004000000000000000820000000085E +S315E07810E03410000000000004000000040000000056 +S315E07810F000200020000800000000006400080004DA +S315E078110000200004000000440000002440080004A9 +S315E0781110400000040000002000000000000000000D +S315E078112000000000000000000020048000000000BD +S315E078113000040000000000000000040000008000C9 +S315E078114000000000004000000400002000000000DD +S315E07811500000000000008000004000000400040069 +S315E078116000000000000000400000000000000000E1 +S315E078117000800000008000000000400020000000B1 +S315E0781180000080800000000000000000200020A021 +S315E07811900000000020200000000000C000000000F1 +S315E07811A04000204000002080000000000000800021 +S315E07811B02000000000000000A00000000000000011 +S315E07811C02000000000000000402000000000000041 +S315E07811D0000000002000000000000004000000008D +S315E07811E0000020002080000420800000402080005D +S315E07811F000008000004000200020000040000080D1 +S315E07812000000008020002080000000000000400000 +S315E07812100000200000004000800040400000000010 +S315E07812200000400000004000000000000000680078 +S315E07812304000080000000000008800000000000080 +S315E07812400039D9000000000800001000080000000E +S315E07812500000200000000000000040080400004084 +S315E0781260200020000024002000000000400000005C +S315E07812700000080000002000000820480000000078 +S315E078128024000000000000000024000000000000B8 +S315E078129000000000000000000000002020000000B0 +S315E07812A000000004000000000000000000000000DC +S315E07812B00000000000000004000400002004002084 +S315E07812C0400000600024002040000040200000003C +S315E07812D00000000000000020002000400000000030 +S315E07812E000200000002000004000200000200000E0 +S315E07812F000800000040000000000200040A00020EC +S315E0781300000000800000000040000000008000003F +S315E0781310000000202000000000000000002000000F +S315E078132000200000000000000080A000000000001F +S315E078133000002040000000000000000000002000CF +S315E078134000000000008000008044000040000000BB +S315E07813500000000000000020000004004004004087 +S315E07813608020006000C400400080004020000080BB +S315E078137000404000040000C00000400040008000CB +S315E078138004000000044000400044000000404000B3 +S315E0781390E00000000000004040804000004000008F +S315E07813A0004000800080000088000000000800000F +S315E07813B040000000402000006000C83D00000800C2 +S315E07813C0600008004000000040004000001008106F +S315E07813D0000000001000000000000000004000005F +S315E07813E0000020200000040000000000000000005B +S315E07813F040004400000000004000002000000000AB +S315E0781400000000000000040000000000200000005A +S315E078141040000000000000002400000000002000EA +S315E0781420000000002000001000000000040000002A +S315E078143000000000200040000000200000000000CE +S315E07814400004000020000400600000200000404016 +S315E078145000000000000000004004000020000000CA +S315E0781460200000400000040020000080000000809A +S315E078147000400000000000000000000000000000CE +S315E0781480208000000000400020800000000000205E +S315E0781490002000004000000000000000000000008E +S315E07814A0000020000080002000000000800020007E +S315E07814B000000000000000000000200000040000AA +S315E07814C000000000008000002000000040000000DE +S315E07814D0000004000000002000000000000000008A +S315E07814E0000000000000000000000000000000009E +S315E07814F0000000800080000000000000840000808A +S315E07815000420000000000000000000000000000059 +S315E0781510000000000000002000008000004000008D +S315E07815200000000000000000000008000000000055 +S315E078153000000031B4000000402000000000000008 +S315E078154040100000000008000000000800000000DD +S315E078155000000000000000000000200000004000CD +S315E07815600008002420004000000800000000480041 +S315E078157000000000000008000000080040000000BD +S315E078158000000000000000000000000000000000FD +S315E078159000000000000000000044000000000000A9 +S315E07815A00400000000000000208020000000048095 +S315E07815B004008000800000000000000000000000C9 +S315E07815C000000004000000040000004440004000F1 +S315E07815D040004000000000004000800000008000ED +S315E07815E00080000000000080000004800000000415 +S315E07815F0000000000000000000000000008000000D +S315E0781600000000000000000000800000000080205C +S315E0781610000080000000400000000000200000008C +S315E0781620008080000000008000A0002020000000FC +S315E07816300000000000000000000400000020000028 +S315E078164000000420000000000004200000400000B4 +S315E0781650000004408000200040000000C004000044 +S315E078166000000020C0000000400000840040000434 +S315E07816702000200000000000000400A020400000C8 +S315E078168000000000004000200000400080000000DC +S315E0781690000000000000000080000000000000402C +S315E07816A00800000080400000000000003B9A00003F +S315E07816B00000000000200820000000000000144030 +S315E07816C000000800240000400000400004004000CC +S315E07816D0000000004000000000000000000000204C +S315E07816E00000000040000004002000200000000414 +S315E07816F040200000002000000000400000000000CC +S315E0781700000000000000200000200020000000001B +S315E078171000800000000400A0000000000000000047 +S315E07817200000004080040000004000000000000453 +S315E078173040640000000040004040000000000000E7 +S315E078174000004000000000040000000000000000F7 +S315E0781750000000000000000000000020000000000B +S315E0781760600000000000000000000020002000007B +S315E0781770800000000000200000000080008000006B +S315E078178000000000400000400000804000000000BB +S315E078179080000000000000200020002000002000EB +S315E07817A00000000000000000200020000020002457 +S315E07817B0008000000000000020200040004000008B +S315E07817C0004020000000000020000000000000003B +S315E07817D0000000402000008000802000800400C0E7 +S315E07817E0000400000000000000040000800400808F +S315E07817F0000000000000000000000000000020006B +S315E0781800408020000000000000000000800000001A +S315E07818100008000000A000000000000000000800BA +S315E07818200800400000E49800000000004C200440E6 +S315E078183000080008000000080000000040100020C2 +S315E078184000000000400000000000000004000000F6 +S315E0781850000000400840000C000800000000000886 +S315E078186000000000004000080000000000000000D2 +S315E078187020000000000000000000000000200400C6 +S315E0781880000040000000000080000020000000001A +S315E078189000000020000000000000000000000000CA +S315E07818A00000000000006004000000002000000056 +S315E07818B0000004200000000420000004000000007E +S315E07818C0000000000000004040000000000000003A +S315E07818D0000000400040200000002000000040802A +S315E07818E000004000000000000000400000400000DA +S315E07818F000000000006000400000000000000000EA +S315E07819000000400000000080000000000080000039 +S315E07819100000400000000000000000000000000029 +S315E07819200000000000000000000000200020800495 +S315E078193000000080000000040000000000000000C5 +S315E07819400000004000000004000000800000000075 +S315E078195000004004000000200000200000000004A1 +S315E07819600000000000002000002000000040000099 +S315E078197000000000400000000000000000002000A9 +S315E0781980000000000000000000004001800100082F +S315E07819900000400000010000000000000000FCE3C9 +S315E07819A000000800000000000000000000000000D1 +S315E07819B000003400600000006000000000000000D5 +S315E07819C0200000002000000000000000000408006D +S315E07819D00000000040000000000008000000000061 +S315E07819E020000800086008000000000000002000E1 +S315E07819F00000000000000000000000000000004049 +S315E0781A002000000004200020000000000400000010 +S315E0781A100000000000042000000000040020000020 +S315E0781A200000000004000000000000000000000054 +S315E0781A300000000000000000004000000000000008 +S315E0781A4000000080000000008000802000048020F4 +S315E0781A5080000000A04000000000000000000000C8 +S315E0781A600020400000200020000000400000000038 +S315E0781A700000200080200000000000408000000088 +S315E0781A8080000000000000004000800000000000B8 +S315E0781A9000000000000000000000000000000000E8 +S315E0781AA00040000000800000000084000000200074 +S315E0781AB000000000000040002000002080804020E8 +S315E0781AC00000800000008000000000000000400078 +S315E0781AD00000000080000000000024008000002064 +S315E0781AE00000000000000000406000200020008038 +S315E0781AF00000000040000000000000000000000048 +S315E0781B00000000000000000000800000000880006F +S315E0781B10000008000000807C6900000000004000BA +S315E0781B200000200008004008400000001000004057 +S315E0781B3000000400000060000000200000000000C3 +S315E0781B40400000004000000000000800002000008F +S315E0781B500000200040200000000020002000000067 +S315E0781B600020400060000000002000000000040033 +S315E0781B700000002000000000000000208000000047 +S315E0781B800000002000100000000000800000000047 +S315E0781B900020400000200000000000000000040063 +S315E0781BA00020000400000040000000600020204093 +S315E0781BB000000000000000202000042020004024DF +S315E0781BC00020002000000000000000000000002057 +S315E0781BD000204020200000400080000080000000C7 +S315E0781BE00000006000000000A000800020000000F7 +S315E0781BF00000000000000000000000002000000067 +S315E0781C008000200000000000000020004000000076 +S315E0781C100000200000002000000080200000000482 +S315E0781C20008000000000004024000000000004006E +S315E0781C3000000400000000000440000000044000BA +S315E0781C400020802000000000000080202000200096 +S315E0781C5080000000000000040000004080000000E2 +S315E0781C600000000080000000002000000000000076 +S315E0781C700000004000000040A00000C0000008001E +S315E0781C8080000000000000400000000040010100F4 +S315E0781C90105B000008006024002844080000000873 +S315E0781CA00000080018681004582810040040002442 +S315E0781CB040002020000000240060000004000008B6 +S315E0781CC0202800004020480000400800200040001E +S315E0781CD040002840200028004020400000006000B6 +S315E0781CE000200000000000000020402000000400F2 +S315E0781CF0004400A0000080002004202000001400AA +S315E0781D000000004080208020040400640040042421 +S315E0781D100000602084600024000040240060840095 +S315E0781D200420400420040000004000000000000089 +S315E0781D304020000004204000648000C0002000C0FD +S315E0781D400420408000200080600040800000000091 +S315E0781D504000802000200000A020000040204000C5 +S315E0781D608020008060E00020002000C000600080D5 +S315E0781D70608000008080008000E0002000802020E5 +S315E0781D800080200000C020200000202000002040B5 +S315E0781D900000202480200000000004208400A000B9 +S315E0781DA0200044000400200440006024002040A085 +S315E0781DB0040084C0002080408000C080002040007D +S315E0781DC0404000600000E08000C000402480008051 +S315E0781DD00424000004408480600000004060804075 +S315E0781DE000400000400040400040000040400000D5 +S315E0781DF0002000804020480800800008400800C0A5 +S315E0781E000080084080400000004E76000000002800 +S315E0781E1000640864002800000840700848204010F4 +S315E0781E204410400844000040000000400060200074 +S315E0781E302400000004000840046800280000000040 +S315E0781E400448006824002000244000282040200030 +S315E0781E5068006000000000000020000000004000FC +S315E0781E600020002020000420000000248000448028 +S315E0781E70000020002000002000000000800004A080 +S315E0781E80E000000004000004E000A0442400002004 +S315E0781E90440040000400002400000004600440246C +S315E0781EA00020000000040000000460004000E0002C +S315E0781EB0C00000008004A04020002080802420809C +S315E0781EC08004C00000E4402040208000E00060808C +S315E0781ED08060200040202000A04080000000208024 +S315E0781EE000000000200040008040800000000000F4 +S315E0781EF00080002000A08020008040002080002024 +S315E0781F00000020000020000020000020A0048400CB +S315E0781F100400A004A400000060040024000004404B +S315E0781F20040060046400402060840044004080003F +S315E0781F308040844000A08460004064000040004413 +S315E0781F4004A0C4008004040000800400806004409B +S315E0781F50E400400020400080006020C0400000C0DF +S315E0781F604000C0000040000080408000C0000100D2 +S315E0781F700801000800C000480841008028000000F9 +S315E0781F802080192000000000084C606040000020A6 +S315E0781F9008584040200000203838604000000000B3 +S315E0781FA00020404000000040202000004000004C27 +S315E0781FB0406040000000084860604000000008602B +S315E0781FC060604000000008086060000000000004DF +S315E0781FD060200000002000000000000000002020C3 +S315E0781FE00000000000002020800000000020203063 +S315E0781FF08000000000040020808000000404606017 +S315E07820008080000004046060000080000404606062 +S315E07820100000000004446060400400000000404096 +S315E078202000000000202040C0000000002060C0C012 +S315E0782030000000402020808040000004606080003E +S315E078204000000000606080800000000060600000B2 +S315E078205080000000E0E040000000000060E0000062 +S315E078206000000000C080A0000000202080800000F2 +S315E07820700000202080800000000020200000000082 +S315E0782080000020200080000004042020A0800000CA +S315E0782090040464600000000004046060200000002E +S315E07820A00404E0E0000000200000C0C02000040442 +S315E07820B02020C0C00004040424A0C0C00004042486 +S315E07820C024A08080000004046060800000000000A6 +S315E07820D060E08080000000804040000080000000E2 +S315E07820E040C0000100000109C08000010000080836 +S315E07820F0C0C0800000000800C08000E81000000042 +S315E07821001808686C202004001818484C40400404ED +S315E07821103828382840400000000060204140080018 +S315E07821202021202800000000404020200000080CF4 +S315E0782130400460600200180CE0062030008000045D +S315E0782140686C404000000004240040400400000031 +S315E07821504044402004040020404040000000000055 +S315E07821604060410008004001A0A80040000040001F +S315E07821702020808000000044808082801404A4229D +S315E07821802030000004046024000000000000404095 +S315E07821904040000020004044406000000004406079 +S315E07821A080C000040404A0E08180080404050008E7 +S315E07821B0000000006060E060000000002020E0C0E1 +S315E07821C002001000E022405000000000E0E06020CD +S315E07821D000000000406020C004002000000440C0F9 +S315E07821E000002020A060C0C000000000A00001C070 +S315E07821F008006021202800400000004000608080D0 +S315E07822000000242460E08280100080422070008004 +S315E078221000000000606000000000E020008004001C +S315E07822200000008400000404242480A04080040494 +S315E07822302020A0A001800C04602180A880C0000046 +S315E07822402464A020000000000020608082801000D6 +S315E0782250200240100000000020202000000000004E +S315E0782260E048808004002800C0CCC0E00000282048 +S315E0782270C0C0808035120000000018583820200051 +S315E078228000080858180000040428282808000000E8 +S315E07822900000000040000000002020202000000020 +S315E07822A0004000200000000C084044404000000058 +S315E07822B00C60642020000000044864406000000060 +S315E07822C004002460400000000000000040000000A8 +S315E07822D00020200040000020002080004000002000 +S315E07822E000A0A0000000000040606080800004202C +S315E07822F060808080800000040400200000040400F0 +S315E0782300400000000004046424000000000000405F +S315E078231040400004040400200040000400202040EF +S315E0782320000000040020202020000004044444003B +S315E07823302000000000000080A0000000000060603F +S315E0782340600000000020002060000000006040C0CF +S315E078235020000000000000C04000002020602080BF +S315E078236080000020004040C080000000002020006F +S315E078237000000040006000000000004444A0808037 +S315E078238080000000406020000000002020604000CF +S315E07823900000000020A0200000000000008000047B +S315E07823A0042424200000000000242420A040000417 +S315E07823B004040020A000000400242440000000006B +S315E07823C0006000A00080800000002020200000004F +S315E07823D0000000002000000000C0E8A0A000000097 +S315E07823E00080C0800000000000A0A080800F41003F +S315E07823F000000818703020200000000848084040A7 +S315E0782400000428282020404000000000602040405A +S315E07824100000202020200000000040082020000056 +S315E07824200C086C08002000000C0064000020000016 +S315E078243004000C084040000004002420000000005E +S315E0782440000000000040000000200000004000008E +S315E078245000002020004000000000B0B0000000003E +S315E078246000406060808004000040A0A0808000008A +S315E078247024242020000000004040000000000000F6 +S315E07824804000206000000000400000400404240082 +S315E07824904040C0C004000000808080000400000056 +S315E07824A08000000004040000404000000000606006 +S315E07824B0E0C0008000004000206000000000E0609E +S315E07824C0A00000000000006020C0000000000000CE +S315E07824D00000000000206020008000000000E0603E +S315E07824E040800000202020000000000040004000EE +S315E07824F0800000006460202080800000004020603A +S315E0782500000000000000602000000000A02000002D +S315E078251000000000408040400404042460A000806D +S315E078252004042020A0A000000400200080A0808081 +S315E078253000002424A0000000000000208080808035 +S315E0782540000040202020000000000040002000002D +S315E078255000004060A0A001000000C0C080800000BC +S315E0782560000020608080C91E00000010080808205E +S315E078257020000010101810000004002838401000E1 +S315E0782580000000000020600000000000202020000D +S315E078259000000000000000000000040C08200000A5 +S315E07825A00004080400000000000C0004204000004D +S315E07825B000040020240000000000004040400000B5 +S315E07825C000000060604000000000006060400000AD +S315E07825D0000000B0B000000000400020A08080003D +S315E07825E00400408080808000006464002000000061 +S315E07825F000404000000000000000200020000000BD +S315E07826000000004000000000240000404000040480 +S315E07826100480800000000424242020008000004408 +S315E07826204400000000000040400020000000000068 +S315E0782630404000000000002000002000000000601C +S315E078264000C020000000008000000000002000208C +S315E07826504040C000000000208080C00000200000DC +S315E0782660200000000000400040000004040404C09C +S315E0782670C080000000006060200000040420200094 +S315E078268040000000000000A020000000008000C0AC +S315E0782690C004042404000080000404042420A0007C +S315E07826A0000004000420A080800004242400800038 +S315E07826B000000020008000808000002000000000FC +S315E07826C000000060202000010000016140800000E9 +S315E07826D00000088880800000002028400080803D47 +S315E07826E0D800000008003818606000000008181864 +S315E07826F00000000420100828000000040400606050 +S315E07827000000000420202020000000000000406047 +S315E078271000000408040060600000080804004060D7 +S315E0782720000008080408400000000000200440404B +S315E0782730000000000000400004040420000040008F +S315E078274000040000002040000000000010100000A7 +S315E07827500000000020200000040040000000808097 +S315E078276004042020202000000000600060200000A3 +S315E0782770040440444000000000004000404000006F +S315E07827800000202080C00004000000E04000000443 +S315E07827900000000000000000644400200000000013 +S315E07827A00000A0800000000000002000000000008B +S315E07827B02020602000000000406040C0000000005B +S315E07827C04040008000002020E0008080000000008B +S315E07827D0C0C000000000000020200000000040207B +S315E07827E0202000000404646480A000000000440413 +S315E07827F04040000000004000406000000000A0007B +S315E0782800C0800000000000000000000020200000EA +S315E0782810808004040404808000000404002080A002 +S315E078282080800000040480A0000000002000000002 +S315E0782830000000002020202000000000000040E09A +S315E07828400000000040402020000000084800C0C09A +S315E078285000000008E0E000004A9C0000000008085C +S315E078286028606000000000080800000400042028C2 +S315E07828700000000000000040400000000024202016 +S315E078288020000000040400604000000804080840C6 +S315E07828900000000004000040400000080C0800003A +S315E07828A040000000040460404000000000000000A2 +S315E07828B040040420002000004000000400200000CE +S315E07828C0400004040010100000000404006060007A +S315E07828D00000040020404000000000000040600056 +S315E07828E0000000004020600000040464240000003A +S315E07828F000000000000000040400000000C080042E +S315E078290000002060000000040000202000000004A1 +S315E07829100400400000000000000000808000000015 +S315E07829200000200020000000002000204000000089 +S315E07829300020404040000000004040800000000059 +S315E07829402000E08080000000000000000000000029 +S315E0782950002000000000000040000000000404248D +S315E078296024A080000000000404404000000000201D +S315E0782970606000000000000020A0A00000000000D9 +S315E07829800000000000002000000000040424240079 +S315E078299080000000040404008000000404040400BD +S315E07829A000000000000020000000000000000000A9 +S315E07829B00000000000000060400000000040400099 +S315E07829C000000000000040800000000000808000E9 +S315E07829D000AD21000000081810182020000000083B +S315E07829E0181800000000080C000000000404040435 +S315E07829F04060000004042024202000000400000049 +S315E0782A000000000000040C0C4060000004000404A0 +S315E0782A10002000000C0804044000000004000004D4 +S315E0782A2000000000000040404040040404044040B8 +S315E0782A304040040400044040404004000004101084 +S315E0782A4000000400400060600000040040000020C0 +S315E0782A508080000020000020000000006040000038 +S315E0782A60000004044004002000000000400000005C +S315E0782A70040420240000C0C004040404008040005C +S315E0782A8004040404000000000404240400000000A8 +S315E0782A900000000080800000000000000060000078 +S315E0782AA000002000200000000000004040C0000048 +S315E0782AB00000000040C000000020604080800000F8 +S315E0782AC00000C0C040800000000020000000000048 +S315E0782AD06060400000000404404080800000040408 +S315E0782AE040040000000000004000400000000404BC +S315E0782AF00004000000000000000000000000002054 +S315E0782B0000008080040400004040000004000000DB +S315E0782B10002080800000040480800000000020000F +S315E0782B20A0800000000000002020000000000000E7 +S315E0782B3020A000000000406820200000000000008F +S315E0782B40404000000000206000005692000000102F +S315E0782B500818182000000010140828000000001C4F +S315E0782B600400400000040000042000000004012472 +S315E0782B702C20400000040404000000000004000853 +S315E0782B800C6000000004060014008000000C0C00C5 +S315E0782B900400000000040404400000000000040083 +S315E0782BA02040400000000420004040040004040077 +S315E0782BB00040400405040C10500000040404406012 +S315E0782BC040000000040020200000000002003000F1 +S315E0782BD080000000000000000000000404042000EB +S315E0782BE000000000000020000000000400000080E3 +S315E0782BF080040400208000000004050008204000DE +S315E0782C00000404004000000000000000008080001E +S315E0782C100000020010608000000000000000000064 +S315E0782C2000000000008000000000040020C04000A2 +S315E0782C300000004040C0C000000000C0C080C00076 +S315E0782C4001200800400000000040600040000004D9 +S315E0782C50044040C0C000000406041400800000046C +S315E0782C6004044400000000040404048080000000AA +S315E0782C7000002000000000000000008080000000D6 +S315E0782C8020404000000005000800408080000000F9 +S315E0782C900080800000000000202000000000022074 +S315E0782CA03020A0000000002020A0200000000020B6 +S315E0782CB048202000000804002840400000282060D2 +S315E0782CC02000009F770000000018401440200000A4 +S315E0782CD01004482020400004100050004000000016 +S315E0782CE0000000600040000100280040400000003D +S315E0782CF00048400000000C00402C006000000C0208 +S315E0782D0000742080000004002044400000000400A5 +S315E0782D10402000600000000400202000000400004D +S315E0782D20200000400000000020004000000100285C +S315E0782D301040000000000000208000000000002025 +S315E0782D40402000000006205060808000000000608F +S315E0782D504000000000000020400000000000006015 +S315E0782D6060000000000040204000000000004000C5 +S315E0782D7000400001002880C0C080000040206080CC +S315E0782D8000000000006000C000000002007000A0B3 +S315E0782D908000000080602000000000000040408055 +S315E0782DA00000000480206000000020000060004001 +S315E0782DB0000000204080400000010028006000000C +S315E0782DC000000040400000800004402020400000E1 +S315E0782DD00006403000C000000000000000600000FF +S315E0782DE00400402040C00000000000602040000061 +S315E0782DF02000C000400004002000408080400001B0 +S315E0782E00200C00E0008000000040E00000000000B8 +S315E0782E1000406000000000024030608080000000E2 +S315E0782E200020200000000000600000200000000480 +S315E0782E30002060000000000000400000CBFD0000AC +S315E0782E40000000082000000000000C0020000000D0 +S315E0782E5000002828000000000000000000000000C4 +S315E0782E600100082040000000000800200000000073 +S315E0782E700000000000000000020010408000000022 +S315E0782E800808002000000000000000200000000094 +S315E0782E9004006040000000002000400000000000D0 +S315E0782EA0200040000000010008004000000000001B +S315E0782EB0404000000000000400000000000002002E +S315E0782EC010008000000004040020000000000404E4 +S315E0782ED040200000000000042000000000002000F0 +S315E0782EE0000000000000202080800000010008201B +S315E0782EF0C0800000000000000000000000002020F4 +S315E0782F00008000000200104080000000000000C051 +S315E0782F10000000000000202000000000040060802F +S315E0782F2000000000000080800000000000200080A3 +S315E0782F3000000100080040000000000020200000AA +S315E0782F40000000040000808000000200300080006D +S315E0782F5000000404600000000000000480600000C7 +S315E0782F6000000000A0C00000000000200080000003 +S315E0782F70000000004000000001000800400000006A +S315E0782F80040400000000000000002000800000003B +S315E0782F900200100080000000000040C00000000041 +S315E0782FA000088080000000000C08608000010000C6 +S315E0782FB028200000005264000083831C1C606000B7 +S315E0782FC0000303181C4060000007073838404000CB +S315E0782FD00007073838C0C000000607303880C001DF +S315E0782FE0010E0E7070808001010E0E707080800187 +S315E0782FF0010C0E6070008003031C1CE0E000000307 +S315E0783000031C1CE0E000000303181CC0E000000786 +S315E0783010073838C0C0000007073838C0C000000657 +S315E078302007303880C001010E0E7070808401010E81 +S315E07830300E7070808001010C0E6070048003031CB2 +S315E07830401CE0E0000003031C1CE0E000000303182A +S315E07830501CC0E4000007073838C4C4000007073806 +S315E078306038C4C400000607303884C401010E0E70F7 +S315E078307070848001010E0E7070808001010C0E6004 +S315E078308070008003031C1CE0E0000003031C1CE0D6 +S315E0783090E000000303181CC0E0000007073838C0DA +S315E07830A0C0000007073838C0C0000006073038800F +S315E07830B0C001010E0E7070808001010E0E70708076 +S315E07830C08001010C0E6070048003031C1CE0E000B4 +S315E07830D00003031C1CE0E000000303181CC0E400B6 +S315E07830E00007073838C4C4000007073838C4C40076 +S315E07830F0000607303884C001010E0E7070808001BA +S315E0783100010E0E7070808001010C0E6070008003F5 +S315E0783110031C1CE0E0000002021C1CE0E000000258 +S315E078312002181CC0E0000006063838C1C1008B37AB +S315E078313000006000001040401000400000004000B1 +S315E07831400000000020200040000040000000000061 +S315E07831500000000000000000002000006040000051 +S315E07831604000000040400000400000006040000061 +S315E078317040000000000000000000000000000000B1 +S315E078318000000000000000000000002000000000C1 +S315E07831900000000000000000008020000000000031 +S315E07831A000000000000400000000000000000000BD +S315E07831B000000000040000000000008000008000AD +S315E07831C00000404000000000000000000000040419 +S315E07831D00000000000000444000040000000040401 +S315E07831E000200000200004040040000040000000B9 +S315E07831F00000000000000000400000000000000031 +S315E078320000400000400000000020000020000000A0 +S315E07832100080000080000000000000000000000050 +S315E07832200000000000000000000000000000000040 +S315E078323000000000000000200000200000040000EC +S315E078324004000000000000200000200000000000DC +S315E07832500000000000000004000000000000040404 +S315E078326000000000000084042000000020008400B4 +S315E07832700000000000000000000000000000800070 +S315E07832800000800000000000000000000000000060 +S315E078329000000000004000004000000000800000D0 +S315E07832A000800000004000340900000000000000C3 +S315E07832B000000000000000000000000000000004AC +S315E07832C000000000000000000000000000000000A0 +S315E07832D00000100000000000000000000020000060 +S315E07832E00000000000000000000000000080000000 +S315E07832F00000000000000000000000000000000070 +S315E0783300000000000004010000000000000000104A +S315E0783310000000000000000000000000000000004F +S315E0783320000000000000800000000020000000009F +S315E078333000000000400000000000000000100000DF +S315E0783340000000000000000000000000000000001F +S315E0783350000000000000000000000000000000000F +S315E078336000000000000000000400000000000000FB +S315E078337000000000000000000000000000000000EF +S315E0783380000001000000000000800000000000005E +S315E0783390004000000000000020000000000000006F +S315E07833A000000000000000000000000000000000BF +S315E07833B0100000000000000000000000000000009F +S315E07833C0000000000000000000000000000010008F +S315E07833D00000000000000000000800000000000087 +S315E07833E0000000000020000084000000004000801B +S315E07833F0000000000020000000000000000000044B +S315E0783400000000000000000000000000000000005E +S315E0783410000000000000000000000000000000004E +S315E07834200642000000402010000C401000084000E2 +S315E078343000000010000820000000001020002000A6 +S315E0783440600020000004002000800800600400246A +S315E0783450404028542000A000000008000000480002 +S315E07834600040000440000400004000004000800076 +S315E0783470402000000000004000208000042000008A +S315E0783480200040008000002000402000200000203E +S315E0783490040000000040008020001080400000001A +S315E07834A00000000000000000000400C000200000DA +S315E07834B0000020804000000000000000800000202E +S315E07834C000A0000040000000608000A0402080243A +S315E07834D08000248000A000800000000800802000A2 +S315E07834E080200000808000008040000000004000DE +S315E07834F000800040000040008000800000002080CE +S315E07835000000C00080844000000000000020000039 +S315E078351000C020400080200000002000002000004D +S315E078352000400000000000200080400000402000BD +S315E07835300000000000004020400084A040400020C9 +S315E07835400004000020408000000080000000800039 +S315E078355004804004000400000000402000000000E1 +S315E078356020248000200080800040200080840000B5 +S315E078357000400040000020204040004080004000AD +S315E07835800080400000000080000000088000C00055 +S315E0783590008020000000000080467C00000000608B +S315E07835A020400044400000000004000020100000A5 +S315E07835B000180000002000206000000000000000F5 +S315E07835C02000880080400000000040A03040A00045 +S315E07835D000004080000040000020008004400000A9 +S315E07835E02040000000000080400000000000000459 +S315E07835F040000000000000002004004000000020A9 +S315E078360000000040600000800000000000040040F8 +S315E07836100000000000400004008000000000001078 +S315E07836200000082000000000000010000000000004 +S315E078363000000000000000000040000000000000EC +S315E078364040000000A00000A0200400000000200058 +S315E07836500000000000808000008020000080A0004C +S315E078366000200000004000C00000000000800080DC +S315E07836702080006000000020A000000000000040EC +S315E078368000200080000000000000A010000020006C +S315E078369000008000000000002000006000000000CC +S315E07836A0200000400000508000000000000000008C +S315E07836B00020040000004000000000040400000040 +S315E07836C08000002000000000000480400000040034 +S315E07836D04020000080400000000004400000802088 +S315E07836E000A0000000008440400000004080000018 +S315E07836F000000000C020002000004000800000604C +S315E07837008000000000080080000000200000200013 +S315E07837102080C3D7000020000000100800100008C1 +S315E07837205000000000000028000000000000500073 +S315E078373000000020002000000410000000002000B7 +S315E0783740044024000804000000000020080000007F +S315E078375028001040000000000400046000400000EB +S315E0783760000004200020004000000000A0000420B3 +S315E0783770000000000000800000200000A0000500A6 +S315E07837800020040020000000A0A0000010800000C7 +S315E078379000400018000040002000A004008040208F +S315E07837A0000000200080400000000020000080003B +S315E07837B000002000A000C00000200000800040004B +S315E07837C040800000248000800000C000804800200F +S315E07837D000000000000000000080000040000000CB +S315E07837E0000020800000404000000000800080005B +S315E07837F000000000C4008004800000200080000003 +S315E07838002000400040004080004081200000000019 +S315E0783810A00000000000008000000000800000208A +S315E07838200000200010000040004080C00020C0006A +S315E0783830002000008000208040000000800000002A +S315E0783840800000000080048000000040000820200E +S315E078385000200000A020000000000020408040000A +S315E078386020000040000000802020404080000000DA +S315E078387040000000800000800000004400A00000C6 +S315E078388040000000800000000000085785004410E2 +S315E0783890400014000010400004000A000000000018 +S315E07838A00070000040004000001000000070084002 +S315E07838B000000000001000200000180460040000FA +S315E07838C000540008220C0000000400200004800068 +S315E07838D0086428040004004000400000000004006A +S315E07838E00800000040000084000000600010C0007E +S315E07838F000D80020100400009000008080000000CE +S315E078390004004000000080001060400000000004E1 +S315E0783910000068000040004000A040100040002011 +S315E0783920000024000000100000104000000040086D +S315E078393000900000001000000000004000880020A1 +S315E078394080000400000200200000208000100000C3 +S315E078395000200040000000404000880040006008F9 +S315E078396000008000200000400480408000000000D5 +S315E07839700000000000000000A000C00080000020E9 +S315E0783980842000000000008000000000A000000015 +S315E0783990C0000000000040002000002000406000E9 +S315E07839A020000000000010000000000800400C0035 +S315E07839B0000008000040000000803080000004200D +S315E07839C0A04450080060041008A0208000802040C1 +S315E07839D00080204000000010000000200100304008 +S315E07839E000200044000040080080204800000000E5 +S315E07839F0A0002000480000404000000008000030A9 +S315E0783A0000800070A5910020083000200008203062 +S315E0783A100408500000201000100000106038000202 +S315E0783A200040281880000000002804402408200080 +S315E0783A30000000000000082040200004004002005A +S315E0783A402000000008000840341000000040200400 +S315E0783A50200000600800040050004020801C000030 +S315E0783A604008000000000020002000000800000068 +S315E0783A7020000000201000C024004800A00060006C +S315E0783A8040040020104010002000800400000084EC +S315E0783A90000008082018000C8040000000080000AC +S315E0783AA00000002080040000200040004000002054 +S315E0783AB084000000240020000000042800000008AC +S315E0783AC000200000008000006000000080C0000058 +S315E0783AD00000000000000400040000000000C000C0 +S315E0783AE00000000004004000000000000000A44050 +S315E0783AF020000000200000000000400040000000A8 +S315E0783B0000800060000000001000008040208020E7 +S315E0783B1000000000000020800040000040000440E3 +S315E0783B2000C0000060000000440000000000004093 +S315E0783B3000002800000040080000000000008080B7 +S315E0783B404010000040100000803000001040000077 +S315E0783B502400100008A0000000100000280084006F +S315E0783B6000000000040068E0080000000100008022 +S315E0783B7000009000504010408000000000E2CA004B +S315E0783B800014A04024100008400410080200300019 +S315E0783B90001010002000284040020058081050001D +S315E0783BA040000024440000180020000000182C4053 +S315E0783BB00020500404000C62000014000020040881 +S315E0783BC00054004C0820004464004000204800047B +S315E0783BD0005000402000180484400800004000109F +S315E0783BE020000080000810000800800000008010A7 +S315E0783BF06480044020C0006000801460403000108B +S315E0783C00040000802048004084402088284010083E +S315E0783C10A008000000000824100000102000000032 +S315E0783C20680040004000001000A4000064000880AE +S315E0783C3020008000080400002800002000A0801002 +S315E0783C402040200002C08040000040008000440010 +S315E0783C50084000000080C02040000000C00400401A +S315E0783C6000000000000000A46000002020C00000F2 +S315E0783C700000608000000000000000002040002086 +S315E0783C800010804080400000002000000000200006 +S315E0783C90E00060000040000050004000280000404E +S315E0783CA008400000080040000040802000B0000096 +S315E0783CB00800006010404080004C00108060801062 +S315E0783CC08060803000500000140000102008A100C9 +S315E0783CD040002000006C008000400080402C4020AE +S315E0783CE0A84000200100480000A01080000040189D +S315E0783CF0A05000000060B9E40000440820000014F9 +S315E0783D002860080810400040021028600440280027 +S315E0783D10440008000000C0400020000000000020B9 +S315E0783D20804008204428104004006004280C70681D +S315E0783D3000442040282000402000202000204060D9 +S315E0783D40000460F000004810400040004008400061 +S315E0783D50406000040020084820800000101824A065 +S315E0783D6004801000808000002000408030085020D9 +S315E0783D708000A000440030040040000060040000A9 +S315E0783D8000C00004A0084000C0800854280008005D +S315E0783D900008C0880410C00400A000000860004055 +S315E0783DA000400000200044A00000A0800880006069 +S315E0783DB000002044208028408040004000000064D5 +S315E0783DC000200000004000004000840040006028A9 +S315E0783DD04080608000008048000004002000C00039 +S315E0783DE060000000204020008080604000000000F5 +S315E0783DF024A0004480000010400040408020C0406D +S315E0783E008000C000200000400040000000008030C4 +S315E0783E1000400040802000804008C000000000405C +S315E0783E2080008000406000080000C0144000C000B8 +S315E0783E301C40100020002010084080004840000810 +S315E0783E400400100040007000404088000000000048 +S315E0783E504800C042904080A000204000000020202A +S315E0783E600000000010000800A0000000004800B242 +S315E0783E70580000E008000000042000000800000078 +S315E0783E800000002800400020040000000000400008 +S315E0783E9000040020002000000000080060002000F8 +S315E0783EA0400400400428004000080044082004004C +S315E0783EB00000000000002000000000000000000084 +S315E0783EC00020005040000008004000000400200078 +S315E0783ED00840000010000420000410000000801064 +S315E0783EE08040400080200800002000004400043034 +S315E0783EF0000000002000040800040002000000C86A +S315E0783F0000800008040000280000000884400010C3 +S315E0783F10000000A02800600000000000000000001B +S315E0783F2020000020080000000000400044000880DF +S315E0783F30002000002000800000040000000000401F +S315E0783F40004000040080400000004080800080004F +S315E0783F504800000400400000004000000000000037 +S315E0783F60000000000004000020008000400000000F +S315E0783F70000000000080400024004000000000209F +S315E0783F80000000000000008004004000000000000F +S315E0783F90000000080000000080000000000000201B +S315E0783FA000084000000000800008800080000000E3 +S315E0783FB008100000004800402008000000002000BB +S315E0783FC040000880004000000020C000801000001B +S315E0783FD0A00000404000000040000000008800009B +S315E0783FE000080000C00010808D7D000014000000FD +S315E0783FF0001000004010000000004000000004407F +S315E078400000002040000044008000404000000000AE +S315E078401000200040000400000000000800000010C6 +S315E07840202000200000004000000020002000200052 +S315E0784030400000000030C040001000000010004052 +S315E07840408000000000000040000000C00000000092 +S315E078405000806000800080000000200000100000F2 +S315E078406010800020400000000000204000000000A2 +S315E0784070000000008000040000000080402000106E +S315E078408000000000C000000000000400000000000E +S315E078409000000000000008C00000900000048000E6 +S315E07840A000000000800020200000000040000000B2 +S315E07840B0000040002000080000000000200000001A +S315E07840C0200008002000000000000000000020002A +S315E07840D000208000002000004000004000000080C2 +S315E07840E00000002000008000001060000000000062 +S315E07840F00000C00000000000004000000000000062 +S315E0784100000050000000400000800800C000000079 +S315E078411000400840800040400000410000844000B4 +S315E0784120400004000000200000008000C02000006D +S315E078413000000000000000100000000040000000D1 +S315E07841400040000000400000000000002000002051 +S315E078415008002010000000000810000000000000B1 +S315E078416008B262000800002000000800200800007D +S315E0784170400002001000002000084000000800001F +S315E07841800000000000000000000000800000000051 +S315E07841900810000000208000000CC000002000001D +S315E07841A02000400000000000000064000460000089 +S315E07841B000284000000000000000000000600000D9 +S315E07841C0080000200000804008100000000000048D +S315E07841D000000000000000000060000080000000A1 +S315E07841E00000440000000040000000000040A0000D +S315E07841F020000040000048100000000000000008A1 +S315E0784200C000000000000000000040206000006070 +S315E078421000040000008000000080204000200000BC +S315E07842200000408000804000400000200000000050 +S315E07842300080000000800040000040200000000080 +S315E07842400000000000000000804000000000000050 +S315E0784250200000C080200040000000040000040038 +S315E07842600000000000406000A000000080000060D0 +S315E078427000000000400000000000002000200080E0 +S315E07842800020004000100000000000000000000060 +S315E0784290000000248000001000001080005000002C +S315E07842A0002000000000000000000400001040003C +S315E07842B000400080000000000000080000000002D6 +S315E07842C08040400000800000000000000000001000 +S315E07842D00000C0200000080000404E4F00000000BB +S315E07842E00000004000200010000000000030004090 +S315E07842F000102002000004004020000000002000AA +S315E078430000080040000004000400000010000000EF +S315E078431000400020020000000000000000200000BD +S315E0784320000008042000000000200000400004009F +S315E0784330000000080000004008040000000080004B +S315E0784340000000200000080020200404000400207B +S315E078435000480000000008001020040030201C000F +S315E078436000000400001000401818008014000400D3 +S315E078437050084020000000004000000004400000A3 +S315E07843800C0040000000000000000000040000007F +S315E0784390000008400000008000200000480000008F +S315E07843A00000020000000080000080002800000085 +S315E07843B0000000000080000000000040000080045B +S315E07843C0000000000000000000000000000000008F +S315E07843D0000000000000000000000000000000403F +S315E07843E0000000400000000000004440000040006B +S315E07843F000004000002004000000000040000008B3 +S315E07844000000400080804040000000080000000086 +S315E0784410000040400000400000000000102000004E +S315E07844204800200860F000004040000000000040AE +S315E078443000000400200000204000000050800800C2 +S315E078444008001000080010008000100040002000EE +S315E0784450000800468D000084A0184820240040001B +S315E07844600000000000084800002008000028082026 +S315E07844700220080020000000002000000802400228 +S315E0784480482000000800000040200E0000000000F0 +S315E07844900E000000080000404000600000000400C4 +S315E07844A0000000400000000000000000040000006A +S315E07844B00000000804000000002000000010200042 +S315E07844C000000000002088000400040000000004DA +S315E07844D000000008000040000024400004000C4082 +S315E07844E00000400000081000000C000000101000EA +S315E07844F01800140000800000000000000804044062 +S315E07845008000400000000004008000000080000089 +S315E0784510000000000000080000008000004008006D +S315E078452000000000000000800000000000000000AD +S315E0784530000000000000000000000000000000001D +S315E078454000000000000000000000200000000000ED +S315E0784550000000400020000000002000000000007D +S315E078456000000000000000000040000000000000AD +S315E07845700400400000000040400000000000000019 +S315E07845808004000800000000040008001000000025 +S315E0784590100010000000000010000000000000008D +S315E07845A0108800208000400000000000080090009D +S315E07845B080101000000000000030400800008800FD +S315E07845C0010008000000100008015100FE200000FC +S315E07845D000000000400010084010000820000000AD +S315E07845E04000200040000000400000440000000247 +S315E07845F00020022040000002000040400000004019 +S315E078460000004A00000800000000200002002000B8 +S315E0784610000844020400080260000002000000007E +S315E07846200402200002000000000000200020400084 +S315E0784630004000000000400000001000000000008C +S315E07846402010000000100000902400000000008098 +S315E078465000080000180040000014080000080080F8 +S315E0784660000000000000500008000040000000084C +S315E0784670000000000800000400000C000000800044 +S315E078468000000400000400000008000000804020DC +S315E07846900000C0000000080080080000000000006C +S315E07846A0000000800000000000400000800000006C +S315E07846B0000000800000400080000000000000005C +S315E07846C00000000000000000000000000004000088 +S315E07846D000000000000000000040008000000000BC +S315E07846E020000000000000004800000008000008F4 +S315E07846F000000000000008000000084000004008C4 +S315E07847000000100000003010000000000000541097 +S315E0784710000000001010000000201080004000002B +S315E078472000844000004010001000000018080000E7 +S315E078473000000000001000400010084004104040DF +S315E0784740200000001091FD000800005000000000F5 +S315E07847500400000000000040000000000000400077 +S315E078476000000000000002400000000002000000A7 +S315E0784770002000001020000420000400002024001F +S315E078478040200000402004000000002000000000E7 +S315E07847900008040200002000000000000400002069 +S315E07847A00402006000000004040000000400000831 +S315E07847B084000000000000000000000020000020D7 +S315E07847C00000008820000000200000000000208023 +S315E07847D00000000004004000000800041000080013 +S315E07847E000000810000020000040080000040000E7 +S315E07847F000080000800000000000000800000000CB +S315E0784800000400000800000000000000000004003A +S315E078481008000040000000000000000000000000F2 +S315E078482000000000000000000000004420000004C2 +S315E078483020000000000000000000000000000000FA +S315E078484000000004000400000004000000042000DA +S315E07848500004000000000400840004000004004026 +S315E07848600000004800040000000000000008400452 +S315E07848700008000004000004100040201400000442 +S315E0784880000040840480000044000004400080007A +S315E078489000000000000000000000000000040000B6 +S315E07848A040000008400000004800200000000000BA +S315E07848B00000000000000000000010002800B71D8E +S315E07848C00004000000000020000000000000001056 +S315E07848D04004000000000000000200000000020032 +S315E07848E00000004000000020004000040000202086 +S315E07848F000000020080000000008400000040240A4 +S315E078490000002000082000000000000020400000A1 +S315E078491000000004000002400820020008000020A1 +S315E07849200000200080A0000000B000088000200091 +S315E07849300080400000000000008000200000002099 +S315E0784940004000100000008000044800000000806D +S315E07849501000001000000000000000000000088051 +S315E078496000000400000000000000000000000000E5 +S315E078497000000000000000A008000040A00080A031 +S315E07849800000808000000000000000002880000021 +S315E07849900000002000004000000000000000000059 +S315E07849A00400000080000000000000000000000025 +S315E07849B000802000000000000040000000000000B9 +S315E07849C00000200044002000040060000444000059 +S315E07849D000040040002000000400000004004400C9 +S315E07849E004000000000000800000040400000000DD +S315E07849F000001C0440080004400000040000100495 +S315E0784A0020000000202054000080400000200010A4 +S315E0784A100000000000004000000000802000002830 +S315E0784A2000000000001800102008100000100000B8 +S315E0784A300000080000004019270020004000000030 +S315E0784A400000000000404420000000005000000410 +S315E0784A504000200000000000000000000008004050 +S315E0784A6000000000000000001000000000000400D4 +S315E0784A70000024000002600000040400000000004A +S315E0784A800000002000040400000040004000002000 +S315E0784A9004000400000008000000040004000000A0 +S315E0784AA004000000040000000000000000208040C0 +S315E0784AB000002000000000900000000000004000A8 +S315E0784AC01C402080800000040000200000000020C8 +S315E0784AD000000000000000000000000800800000F0 +S315E0784AE00000000820040400000000000000080030 +S315E0784AF00040000000000000080000000000008090 +S315E0784B000200008000000000008000004000000005 +S315E0784B100000800080000000000004000000000033 +S315E0784B200000000000002000000000000000000007 +S315E0784B3000000000000000040000400000000004CF +S315E0784B404000000000000000400000000000004047 +S315E0784B500000040000000800000060000004000087 +S315E0784B6000000040800000000400004000000000E3 +S315E0784B7000000000000020000000000008000000AF +S315E0784B8008C00000004048000020C0000010000087 +S315E0784B9010A08000004000001000000000400040B7 +S315E0784BA0000800400050000C0800000000000000FB +S315E0784BB0A671000000000808000008082000280018 +S315E0784BC000000828100008001000180800400808BF +S315E0784BD00000080004000000000008000808000053 +S315E0784BE018080000280000000808040000480000C3 +S315E0784BF00808000000000000080800000000000037 +S315E0784C000004002000000000000000000000220000 +S315E0784C1000000000000000040000100004201000EE +S315E0784C209000000000008000000020440000004072 +S315E0784C30000000000000200880000000000000006E +S315E0784C4020004400000040000000400000044000DE +S315E0784C50000040800000400000040840800000002A +S315E0784C6040000000800000000000000080000000A6 +S315E0784C702000000800200000000000000000000886 +S315E0784C800040000000008000000080000020000066 +S315E0784C9000000000000000000000000000000000B6 +S315E0784CA00040000000000000000000000000000066 +S315E0784CB0000020000400000000000004000000006E +S315E0784CC0000000000000000000400008000000003E +S315E0784CD0004800000808004008000000886000806E +S315E0784CE00008000000080010400800004000A0001E +S315E0784CF000000030001040000800000018000000B6 +S315E0784D000000000020200000000000084010084065 +S315E0784D1000400080108008000000008000088000D5 +S315E0784D2001100000001000000018060000080000DE +S315E0784D300000180000000800000C201000000800B1 +S315E0784D404008120040020A00004008020000000015 +S315E0784D5000040020080000000800000008000000B9 +S315E0784D600000000000004000080000000800000095 +S315E0784D700000040048000000200002000000400027 +S315E0784D80000000000020000224000000000000E09F +S315E0784D900000000000000080000000000420008091 +S315E0784DA0000400004010048000140C000004400069 +S315E0784DB00004001800804400000000000084000031 +S315E0784DC000000000000000000000040004800400F9 +S315E0784DD00C000080000000800400208400000020A1 +S315E0784DE00000000400804020008020000080000061 +S315E0784DF000000800000000000000000800800000C5 +S315E0784E000080004000000080000000008000800004 +S315E0784E10060000000000000000000000000000002E +S315E0784E2000000000800000008000000060000000C4 +S315E0784E3000000000000040200000000000000000B4 +S315E0784E400000000040004800002008000000400014 +S315E0784E5004000800000008008008400040000800D0 +S315E0784E600000080000002000000080200000040018 +S315E0784E7000081000080000A8081000800000040070 +S315E0784E800010080000000000880000004000009054 +S315E0784E90000000400000000000000000000040082C +S315E0784EA000202E55000020000000000040000000A1 +S315E0784EB00000000000000000100000000000000084 +S315E0784EC0000220000020020000200000020000001E +S315E0784ED000000004200040000020000000080000E8 +S315E0784EE0200004502040022000000000020000006C +S315E0784EF000000000200000080008004020080000BC +S315E0784F000000000040008000002000002000000043 +S315E0784F100000102000400008000020000800000093 +S315E0784F2000004000000000000000002000200000A3 +S315E0784F3000000800000000800000000000082080E3 +S315E0784F4000000008000000200000000020000000BB +S315E0784F50008000000000000000000000000400006F +S315E0784F6000000000000020002000208004000000FF +S315E0784F700008008000000800000000200000000023 +S315E0784F80440000000000000000000004000000007B +S315E0784F90400000000000000040000000000004002F +S315E0784FA0000000000000000024000020044000001B +S315E0784FB0040000000400000004040000040000007F +S315E0784FC00000000004000000000000004400040037 +S315E0784FD00040040020000400000004000000040003 +S315E0784FE00080040000004400000004000020000077 +S315E0784FF000800070000080000000000000080000DB +S315E078500000000020000000004000002000000000C2 +S315E078501000800000800041000000009261000000FE +S315E078502080082800086420000800000C3048380022 +S315E078503028005000320808422A0008022A000002B6 +S315E0785040200024004A000806280408100C102800DE +S315E0785050280408020A040020080608644804284060 +S315E07850600C0000002C020408000400004002000056 +S315E07850704000000C400C260068002C006400008498 +S315E078508040000004001820843000240000000480EA +S315E078509024080800100804102410100C0008608C0E +S315E07850A00020001C08A45028580004080C5000146E +S315E07850B0084000481060000808401400008C48005A +S315E07850C0082400480C2004400480844000A40000B2 +S315E07850D000A408000440040008802000E0082800C6 +S315E07850E000000080400C08008800880000A0008856 +S315E07850F000000000204000008040008000000000B2 +S315E078510004800000040000000000000000000000B9 +S315E0785110400020000000000000004000200000046D +S315E078512000000004200040040000840000400400F1 +S315E0785130000000040040600C040040240040004079 +S315E07851400840004C00C4408804C000000044005881 +S315E07851500400400800144000449000902400004089 +S315E0785160481420084028000040B88040A01000800D +S315E0785170000400040030184060080050600808C059 +S315E0785180A0500840104800881000084440102010CD +S315E078519000400018B9A80000285800004800180018 +S315E07851A0480068000C1048004800080048080200EB +S315E07851B06A400A002A020800260000000202084037 +S315E07851C00800480008002C40280060000428000009 +S315E07851D02C600A026820580204084000280008007B +S315E07851E028200620442004002048020002000C0211 +S315E07851F000620028004400A0048044000000040017 +S315E078520094009C00A0000000C080006080002044EC +S315E07852108020882004002060000018000434C00054 +S315E07852208010080020188400A014000020100000E8 +S315E0785230080088480000A0408400800408008800C0 +S315E0785240400008400400800000000000000CA080C8 +S315E078525000C02080008000882060008000000C007C +S315E07852600800000000C00000800000008000008098 +S315E07852700020C000000004000084400000440020C4 +S315E078528000000000000000208000000000000040E0 +S315E0785290840400008020002400600024000060245C +S315E07852A0404020004004408000440044000040082C +S315E07852B00008404408400028004000400004484088 +S315E07852C0000088C400040040002040140800600014 +S315E07852D0000080B400A050146020000860D80080F8 +S315E07852E060600800E8E0008000200400401000805C +S315E07852F01070008008081008D030480050100880F8 +S315E07853000008000894100820001800080021210001 +S315E07853100080000C6860604004002808184C406003 +S315E078532000000038786840400002022828400000F3 +S315E07853300802422020000040000E6C603020000019 +S315E0785340000C4E6020200200000C0C626000000227 +S315E0785350001C6C6020000000000C046060200000F7 +S315E07853602200080400200006262828000000000411 +S315E07853700420A0A0800000042430B08080000004DF +S315E07853802420A0A0800000040420A08080000004EF +S315E07853908C6060000080000C8CE0C0000000000C9F +S315E07853A08CC0C000000000081840C0000004041853 +S315E07853B088C08000000404080880800000040400A7 +S315E07853C080808000000C0C00A0808080000808288F +S315E07853D0A080808000008C000000008000080880B3 +S315E07853E0C08000000000808080000400000000801B +S315E07853F0808004040604008080000000000000003D +S315E078540080000000402000008000040404006080F2 +S315E0785410000000040460600000000004844040401E +S315E078542000800004444040000000000C4C484000F6 +S315E0785430040000080840C0800004040808C840005A +S315E078544000041C1818404000000444303080804046 +S315E078545000040C707000800000080870708080008E +S315E07854601000844040000080001818C0C00000009A +S315E0785470001818C040000000001818C0C0000004EA +S315E07854801018184040407DA4000000040444606091 +S315E078549060000000000000404004041000605040C6 +S315E07854A0400602082A6060010004042623202800CA +S315E07854B00002064464303000000404666E00200082 +S315E07854C000140C8404405002821414646C20200288 +S315E07854D0000808646460600600000008084040063A +S315E07854E00624242828404004042424A0A0C1C00C23 +S315E07854F0047435B0B080C00400240CE0E08080000D +S315E0785500083828D0E08280140824060000000018C5 +S315E07855100898C8A0A000001004D8C8A0A004003855 +S315E078552008584C80A004001C1488A8C080040000A9 +S315E078553024606081800804402180A880C00000480B +S315E07855404CA08080800808684880A082801000445B +S315E078555006203000000000C8E8A0A0000000008027 +S315E0785560E060600000200080C4C0E000000606A08D +S315E0785570A080C000000000202081800800000100A3 +S315E07855800880C00000000080A00000040460442089 +S315E07855906002001400602600100000040460646075 +S315E07855A04000000C0C644C4040000028004044C0A9 +S315E07855B0A004042424280840400400282C08484104 +S315E07855C0000C00142590B880800404246C503000D8 +S315E07855D0800808385890A082800000602600100085 +S315E07855E000180890D0C08000000808C8C8004004B9 +S315E07855F0003810C05C40600000080850484040C35E +S315E0785600120000000404204460000000000000005E +S315E07856104000000024240860400002062C0C6060FC +S315E0785620000000000024200000000400244430102C +S315E0785630000004042E6E000000000C0404044040D0 +S315E0785640020214142860202000020A0A64644040AA +S315E07856500002020208084000060604246828400092 +S315E078566000002424E080808004040424B0B08080A4 +S315E078567000044C04E0A0808008005004D08080804C +S315E078568008040C6C000000001808D88880800000B8 +S315E07856901C08F8E8808000001808584880800004E4 +S315E07856A03038A08080C00000240088C880C0000020 +S315E07856B02000A080808000002C6C20C080800000D4 +S315E07856C02840C0C0808000000444404000000000CC +S315E07856D0A888C0C000000000E0804000000000001C +S315E07856E0C080808004002626C0C0C08000002020CC +S315E07856F040408080000000000000808000000404C4 +S315E078570080A0000004046060602000000000202093 +S315E07857102020000004044040402000000C084C6C37 +S315E0785720606000000808004080800404040400A05B +S315E07857304040000008002028000000040434B0B09F +S315E0785740808004042C243000000008001800909033 +S315E078575000000000404040400000001810108080B3 +S315E078576000001018C8C84000000000004040400023 +S315E0785770000000005858400035010000000404405D +S315E0785780044040000000000000404000000414405F +S315E078579000004002060E2E60600000000020240023 +S315E07857A02000000206404030300000040462280001 +S315E07857B020000000000404404000001212644C000F +S315E07857C00000020A0E00004060000200004848002F +S315E07857D0000000240E6868000004040000C06080C1 +S315E07857E08000003010B030808004006844B03080AB +S315E07857F08008004050A0108080080020002020001B +S315E0785800000818C818808000000014A0388080004E +S315E07858100008181008808004002C20A00080C000C2 +S315E0785820002004080840C00404200020000000049A +S315E078583004282CE0C0808000000808C0C080800082 +S315E078584000206040400000080020080000000000CA +S315E0785850006000008000000000400080800404269C +S315E07858602640404000000020204040808000000034 +S315E0785870000000808000000404808000000404209A +S315E078588000606000000000404020200000000440F6 +S315E07858904040600000040C446C6060000008004002 +S315E07858A000808004040400C8A84040000008082866 +S315E07858B028000000000420803080800004040C106A +S315E07858C030808008081818B0400080000040040056 +S315E07858D0000000100810908080000008089088404A +S315E07858E04000010018D8D0000000000808501840A1 +S315E07858F040FA4B0000808404044000000000000079 +S315E07859000008000004040020104040000402280843 +S315E07859106068000004040420200000000E020008FD +S315E0785920101000000C042462000000000C0404004F +S315E07859304040000016160808000002000C082424EF +S315E07859404040020002024848004004000C242868DF +S315E078595000400400242420C0C0C0040414343090ED +S315E078596080800004044830F080800008287800D0F1 +S315E0785970808000080868202000000818489CA0A0CD +S315E0785980000008180890A0A0000000101808808091 +S315E07859900004000C00A0C08000000020E8A8C080C9 +S315E07859A00000002080A000000C044C086080000015 +S315E07859B00000480020008080000060202020000061 +S315E07859C000004860E0E00000000080E02060000031 +S315E07859D0000000404040000006062020004000001D +S315E07859E00000202080800000000000008080040411 +S315E07859F00404808000000404202040400000000079 +S315E0785A0040000000000004042060600000000C0004 +S315E0785A106C44404000000808004000000404242458 +S315E0785A20A0804040000030300000000000000424F0 +S315E0785A303020808004042C2C300000000800000020 +S315E0785A409090000000004040404000001018181088 +S315E0785A5080800000000810904040000000001010A0 +S315E0785A60400000000000185901008643000000005D +S315E0785A701054600040000000004040004000000004 +S315E0785A8000704040400202082840600000000006AE +S315E0785A90222020000004024020103000000000663A +S315E0785AA06620200000040C240460400000060E64A2 +S315E0785AB00C002000000A0A2424604000000202005C +S315E0785AC0480000040420206868000004042424E0E8 +S315E0785AD0E0000004043434B0B0000004006048A06C +S315E0785AE08000000800404080900000080044444070 +S315E0785AF00000000808C090602000000404889C003C +S315E0785B000000000808001000000000141488C8405F +S315E0785B1040000000208080C0C0040400248080809B +S315E0785B208000000404C0E0008008080800E04080B7 +S315E0785B308000002020404000000808A800C0C0008F +S315E0785B40000000E0C000000000000080C000800097 +S315E0785B500020248080808000002020000000000063 +S315E0785B60002000000000000000044400400000002F +S315E0785B7004200000400000000040004000000004DF +S315E0785B80040040200000000C04444840400000082F +S315E0785B90084040008000040404A088004000001813 +S315E0785BA01000180000040434049030000004043433 +S315E0785BB03020300000080008001000000000006087 +S315E0785BC0242000000018001030200000001010C8D3 +S315E0785BD0E02040000000000010C0400000002020D7 +S315E0785BE01800400E310000000800200C600000002C +S315E0785BF00010100040000000241C00200000020283 +S315E0785C002C0C604000000000000400000000000456 +S315E0785C1020403000000000002E2E000000000C042A +S315E0785C200444404000000E060840200000000808C2 +S315E0785C3004044040000000004840000004040000EE +S315E0785C402860000000000404004000000404040416 +S315E0785C5030200000000408600000000000081040D2 +S315E0785C602000000000086C2C0000000018084800AE +S315E0785C7000400000140C28280000000018080000F6 +S315E0785C80000000003030080040400000200088889E +S315E0785C90C08000002400808080800000242440803A +S315E0785CA0800000000008008080800000202000004E +S315E0785CB00000000080A8808000000000C0E00000BE +S315E0785CC000000000C080800000000000C0C0808036 +S315E0785CD000000000404000000000002000000000C6 +S315E0785CE00000440400000000040400006020000086 +S315E0785CF0000000002060000004044000402000001E +S315E0785D000400044C60600000000000008000040499 +S315E0785D10040488A800000000080020280000040495 +S315E0785D200414101000000404040420200000000885 +S315E0785D301800201000000000202000000000001865 +S315E0785D40100000000000101880C84000000000082D +S315E0785D500800408000000000101040000825000090 +S315E0785D6000141410140000000010084440000004E9 +S315E0785D700404040000000006020C0C404000000415 +S315E0785D800404240000000006020008101000000059 +S315E0785D90002220000000000008040C4040000000CB +S315E0785DA000240C002000020A0A00000040000202EB +S315E0785DB0024008000000000800686800000404005B +S315E0785DC000C040000000000000A830000004004851 +S315E0785DD040901000000C0C405090100000080864C9 +S315E0785DE060400000000C18D010000000000414B0E9 +S315E0785DF03820600000081800104040000024248015 +S315E0785E0060000000002028A0A0C0C0040420208004 +S315E0785E10A00000040420204060008000002000C03C +S315E0785E20400080000002484040000008002020C082 +S315E0785E30C000000000A0A0404000000000404040C4 +S315E0785E40C00404202040400040000020204040006C +S315E0785E5040000020000000000004044444004000B4 +S315E0785E60000404200040400000000060202020006C +S315E0785E700004042060202000000800640C606000C4 +S315E0785E80000000000000800404242CA0A800000094 +S315E0785E900028202028000004042404802000000440 +S315E0785EA0040C1C0010000000000800100000000040 +S315E0785EB00060202020000010003030202000001004 +S315E0785EC010E0E82020000000004050800004043014 +S315E0785ED02070380000C1C3000000140404100000EC +S315E0785EE000001010142000000000140400100000D8 +S315E0785EF00206040C08480000020104040040000091 +S315E0785F00020600000000000000000C2200000000FD +S315E0785F1008000650408000000000080020000200DB +S315E0785F20020A00004000020000000C200040040055 +S315E0785F30000860400040000000004040404000011A +S315E0785F4000083860000000044048105000000C0C4F +S315E0785F50585810600000080A481C10800000101895 +S315E0785F60700020200000101038204000000010104B +S315E0785F7000200000000020202800000000002020FB +S315E0785F80C080C0C000012020A0C000000C046020C2 +S315E0785F9040400000000060004060808000024210CF +S315E0785FA060E0000000006060A0A000000000A0A013 +S315E0785FB06020000000004060000000002020606063 +S315E0785FC0400000002020606040000001002800408A +S315E0785FD000000404444400000000040400000000CB +S315E0785FE000000002203020A00000040400006020B9 +S315E0785FF0000004000464602000000000002800002F +S315E078600004040404A0A000000000000020200000A2 +S315E0786010040504041040000004040C0C00000000A1 +S315E078602000000000003000000002000000A0000040 +S315E078603000183000002000001018204000200000F2 +S315E07860400804002840800404201010700000CD1A5F +S315E078605000000004086C0800400000000800682092 +S315E07860604000043C085028000000040E0060080058 +S315E07860700000010004086040000800204810200075 +S315E0786080000808244A000000000C00205C00C000EC +S315E0786090000800080020000000000C204460400062 +S315E07860A0000000006060000000000048200040002A +S315E07860B00000204080004000052008906000000045 +S315E07860C000400000C0000000006400E0000000042A +S315E07860D002007400A080000004E0080000000008D8 +S315E07860E0008C04000000000008082000000004008E +S315E07860F0000080400000000800400800C00001046D +S315E07861000408C00000000400400040800000084019 +S315E0786110080040000000026C1040A080000000A853 +S315E078612040006000000000A04000E00000000000B1 +S315E078613060008000000020402000400000002060E1 +S315E07861400000000001000800404000000000002048 +S315E078615000000000000020204000000002403000EF +S315E07861608080000000400060000000080040204089 +S315E07861700000000800002800C000002000C04000B1 +S315E07861800000000030500000400005100038404024 +S315E078619000000060186010000000081840204000F9 +S315E07861A0000002204450C0000000189048004000EB +S315E07861B00000101048004000001804502840810084 +S315E07861C0040010400040000676000000000400005D +S315E07861D0200000000004002000000000000000001D +S315E07861E04000000200200000000000070028004080 +S315E07861F0000000020000000000000000020020001D +S315E0786200000000020C1020800000000C0060000006 +S315E078621000000004000000000000000408200000F0 +S315E078622000040228000000000004040020000000BA +S315E07862300001041800400000000000202000000063 +S315E0786240000400000000000000020010408000001A +S315E07862500008000040000000000000404000000018 +S315E07862600004004040000000000008400000000004 +S315E078627004000080000000010408004000000008E7 +S315E078628004000080000000080020208080000002E2 +S315E07862900010008000000008000080000000000088 +S315E07862A00000000000000000002040000000000030 +S315E07862B00000000000000000000000000001000877 +S315E07862C000400000000004000000000000000040EC +S315E07862D0400000000002001060800000000000200E +S315E07862E000000000000008002000000000040860BC +S315E07862F000000000000828004000000000082800A0 +S315E078630000000005000800C0000000000000000062 +S315E078631080000000000050808000000200100080BD +S315E0786320000000000000000000000000008000008F +S315E07863300000001400A080000000001010000000AB +S315E07863400A9D000003031C1C606000080303181C08 +S315E078635040600800070738384040080007073838B3 +S315E0786360C0C000000607303882C001010E0E70709A +S315E0786370848401010E0E7070808001010C0E6072CB +S315E0786380008003031C1CE2E2040003031C1CE2E227 +S315E078639000000303181CC2E2000007073838C4C0BF +S315E07863A0000007073838C0C000000607303880C4D8 +S315E07863B001010E0E7070848001010E0E707080807F +S315E07863C001010C0E6070008003031C1CE0E00404FD +S315E07863D003031C1CE0E000000303181CC0E000087F +S315E07863E007073838C4C4000007073838C0C4000047 +S315E07863F00607303880C001010E0E70708880010182 +S315E07864000E0E7070888001010C0E607000800303B8 +S315E07864101C1CE0E0000003031C1CE0E00000030322 +S315E0786420181CC0E4000007073838C0C0000007072A +S315E07864303838C0C000000607303880C401010E0E37 +S315E07864407070808401010E0E7070848401010C0EE8 +S315E07864506070048403031C1CE0E0040403031C1C42 +S315E0786460E0E00C000303181CC0E4000007073838A6 +S315E0786470C4C4081807073838C4C00000060730389F +S315E078648084C401010E0E7070848011010E0E707056 +S315E0786490808001010C0E6070008003031C1CE0E034 +S315E07864A0100802021C1CE0E000000202181CC0E0A2 +S315E07864B0001806063838C0C0080ECD000000E000A7 +S315E07864C0006040000000000808004000000040003E +S315E07864D028404020004000000000400000000020F6 +S315E07864E000000000200000606000040040040040E6 +S315E07864F06000002000000040000010000200046206 +S315E07865004204004202000002220000220200000259 +S315E07865100000000004200004000000000000208055 +S315E07865200000008000200080040020840820308865 +S315E078653008301088081010880810008808000008CD +S315E0786540100000101080201414A0201010A0201045 +S315E078655010A000101000001028800020208404206D +S315E078656020800020200004202000002020800020C9 +S315E078657020800020208880200000080000888000A5 +S315E0786580000000000000000000000000800000002D +S315E07865900000008000000000800000008400000019 +S315E07865A08600000200000080000000000000008005 +S315E07865B000000000040000800000000000000000F9 +S315E07865C0000000000000000000004000000000002D +S315E07865D0004040000000000008400008000000008D +S315E07865E0000080000080000008000008080000181D +S315E07865F0000000000000000000000000000000003D +S315E0786600100000002000000000000000400000407C +S315E0786610000000000000100000000880000800007C +S315E078662000000000000000000000000000100800F4 +S315E0786630400884A20000000000000000000000008E +S315E078664000000000080000000000000000000000E4 +S315E0786650000000000010000000018000000000004B +S315E078666000000000200000000000000000000000AC +S315E078667000000000000000000000000000000000BC +S315E07866800000000020000000C000000000000000CC +S315E0786690000000000000001000000000000000008C +S315E07866A0000000000000000000000000000000008C +S315E07866B00000000004002002000000000000000056 +S315E07866C0000000000000000000000000000000006C +S315E07866D00000000000100000080040000000000004 +S315E07866E0000000002000000000000000000000002C +S315E07866F0000000000000000000000000000000003C +S315E078670000000000400000000000000002000000E9 +S315E078671000000000000000000000100000400000CB +S315E078672000000000000000000000100000000000FB +S315E078673000000000000000000000001000000000EB +S315E0786740000000000000000000008000000000006B +S315E078675000000000000000000000000200000000D9 +S315E0786760000000000000000000000040001000007B +S315E0786770000000000000000000400000000000007B +S315E078678000000000000000000000000000000000AB +S315E0786790000000000000000000000000200000007B +S315E07867A0408000000000000000000018120004B0ED +S315E07867B018042050401200580000500000000018DD +S315E07867C000040008003020084004620080040010CD +S315E07867D000800000000000400008422400300800F5 +S315E07867E0A0004020000004000420004020040000BF +S315E07867F000040004280000002000000A20000002BF +S315E078680000C01002208000402080000800003000A0 +S315E078681004004000200094008000800080000000A2 +S315E078682014201C002010000000000000004000004A +S315E0786830000000002010001000500010401000000A +S315E078684000A0001000104010D00000203400009026 +S315E07868500420A400040088008020000000040000E2 +S315E0786860080000200000400000082000000000201A +S315E0786870008884000000000000000000004400402A +S315E07868800000800000A00080000002800000000088 +S315E0786890008000400040C00000000020000000407A +S315E07868A000000420000080000000000000000024C2 +S315E07868B00000804000000000840000000000000036 +S315E07868C00040802030000CE0008040000000280086 +S315E07868D0008040800000000440280000004000204E +S315E07868E000300000200000800084000000005000A6 +S315E07868F020000060C82020482800400820000000DA +S315E07869002840006000400048201080409000080051 +S315E078691028D00020A000C008114000008060CC009C +S315E0786920005028C06BE600002000140000401200FA +S315E07869300800000000002020080008004820100821 +S315E07869402080404000010010000000200000008018 +S315E0786950400000600C20900000200000400000001D +S315E078696000002040002080000008000004000000BD +S315E07869700200000008C02000404000000000000A45 +S315E078698040004000004000000000E0004020001099 +S315E07869908020808000000000042410002000300071 +S315E07869A0004080020050080000000000001020003F +S315E07869B000104000105000000080002040180000D1 +S315E07869C00880201020000400802004800000000069 +S315E07869D00820800000000000000040002000004011 +S315E07869E0000800000000000000000000040002003B +S315E07869F0100000000000000000200000000000A069 +S315E0786A004080000000000000000020006000008068 +S315E0786A1000000004200000400000000000000000B4 +S315E0786A2080000000000000000000002000008002E6 +S315E0786A300080040000000000800040002020000470 +S315E0786A402800840080000000E84000008000000014 +S315E0786A5004004000000000200000108000200020A4 +S315E0786A604040008000000030001000E000000008A0 +S315E0786A700020180800200000008840000008000880 +S315E0786A80001040800000300000408800410020403F +S315E0786A90004000000000008000005000402DE0003B +S315E0786AA00410080000700000005020100050080024 +S315E0786AB000100004000000000000000422008004BA +S315E0786AC008208000000000040020800802004008CA +S315E0786AD00048008000200000042084002010000494 +S315E0786AE000042004004080680000200000020000D6 +S315E0786AF02002008000122080000000A0000820001C +S315E0786B00700004001000004044000010000000A06F +S315E0786B1000000000180400000000000090082080C3 +S315E0786B200000005000000000001000000000002483 +S315E0786B3000000020041020004010104000001028CB +S315E0786B400010004020440400008000000800400463 +S315E0786B50200008000000000000000000200000008F +S315E0786B60208008808000000000000000800060043B +S315E0786B7000400000800000E0000000608002000035 +S315E0786B800084800000000040400000200000000003 +S315E0786B900000000004200000004000002000000013 +S315E0786BA00420000000C000200080102000000010C3 +S315E0786BB00000000080000050C00000200040000087 +S315E0786BC00000800840000000000020080000004037 +S315E0786BD04000002000004008800000A4000000404B +S315E0786BE0004000200000E80060000000004000005F +S315E0786BF040002000007040004000280044000080FB +S315E0786C000800300020000080A8001100000000E0B5 +S315E0786C10084400802880EA320024000400000880D6 +S315E0786C200040080C00000810002008082004000046 +S315E0786C3008144808000448002000002002000400F8 +S315E0786C40000024000004000C200860000800000220 +S315E0786C50042000004400200020200000000004000A +S315E0786C6000300000044034082044100000000000A2 +S315E0786C70204000080020000020000000840000008A +S315E0786C805000800020200000000000100000008006 +S315E0786C900000202008428410406004002020000094 +S315E0786CA0002400200800202C4024400440240040A2 +S315E0786CB000000000041040208406201004004020E4 +S315E0786CC000002000000000A0040024A00400C0001A +S315E0786CD024000420006400000040204200100020D8 +S315E0786CE00000204000002040000000200000A000C6 +S315E0786CF0800020200000000000000000A0040204CC +S315E0786D00800080000460008040A000000000000061 +S315E0786D10100000140000002000000020400000046D +S315E0786D200000401000000400002040100000000041 +S315E0786D30004000000000A4200004000000000000ED +S315E0786D401000100000000050002014000040000001 +S315E0786D500020108020000000001000400000400075 +S315E0786D602000100040205000040000400404001089 +S315E0786D7000004000000000084010800060102040CD +S315E0786D800800C00008500008C0005000004890A1F4 +S315E0786D901600008080001000043002040000020033 +S315E0786DA00000840010002008205000002000200019 +S315E0786DB00000000000000000200018000004200811 +S315E0786DC00000000004003080002204000000480043 +S315E0786DD000000410040000000000044000000000F9 +S315E0786DE04004000050080000000400200000000085 +S315E0786DF008040000100000400000200000000000B9 +S315E0786E0000200010000CC420002444001400000286 +S315E0786E1024100000C00004002400800000408000B8 +S315E0786E200080000010000080200000000040048010 +S315E0786E3010000040422000000010008002A000040C +S315E0786E400000000000000000408000000000000024 +S315E0786E5040800000000022000040000000000000B2 +S315E0786E6080000440800000405000400000804000F0 +S315E0786E700000000000002000000020400000000034 +S315E0786E801000400000002000A000A000A0402040B4 +S315E0786E904000006000002040200000002010000044 +S315E0786EA00020000020000040200000203080000014 +S315E0786EB0000000E4001000200000000000600040C0 +S315E0786EC00020804020008000000040000010204034 +S315E0786ED000200080002000900080400000000080C4 +S315E0786EE0C000000000000000408000800010300004 +S315E0786EF000904000801004000024000000000000AC +S315E0786F000000000010440000136100000004000057 +S315E0786F101800804806000808000000088418000475 +S315E0786F2008084044180820480400000000020000E1 +S315E0786F300020001C2000000420200808600C008057 +S315E0786F40002400040014000000002024100400044B +S315E0786F500000004034000460140024001050000063 +S315E0786F6000000400200000002004280000009000C3 +S315E0786F7000401000202000200000000010001040A3 +S315E0786F8004A40020440420044020500400A04000DB +S315E0786F900404000020280000A0AC00200044102063 +S315E0786FA08000240000000414408034422450060017 +S315E0786FB0401020A000000204000024042000040011 +S315E0786FC080408004000020000000C02000400020BF +S315E0786FD000A010200000402000C000400020808003 +S315E0786FE0605080600080002004000000008020244B +S315E0786FF0020400C00000006000100080200000005D +S315E078700000800000203080600000204020400000B2 +S315E0787010602000400000000400200060000010407E +S315E07870200000200000100004A0002040201000009E +S315E0787030200000100000400000500034800020005E +S315E07870404000003000108020400020009000008052 +S315E0787050502000005040005000C0040000140000AA +S315E07870600410C040001000300018009040B00020B6 +S315E0787070104820400008000010880040104410D8DE +S315E078708000C2C80080185C00400808401A00480230 +S315E078709000404C00004800404830000800000034CA +S315E07870A000602448200420802000800040042000EE +S315E07870B00020100020008000042204180008002038 +S315E07870C042041440000000240470200404600400A4 +S315E07870D000204000000000400018001C04204020FA +S315E07870E000246400C00084000050044000042000BE +S315E07870F0100000A0802008A02098002020004020E2 +S315E0787100102000200040000020028040E00084004B +S315E07871102000200004006400B040100248004000DF +S315E078712010481008000420404030C0304800A000E5 +S315E0787130A4400020200004008440006020400060E5 +S315E07871400048000060802000800000400040200079 +S315E078715088404000042800604000402040000070ED +S315E078716000000000004000200000004040002000C1 +S315E0787170000400D000804020803000100084802019 +S315E0787180025000B40040802000202010902000209B +S315E07871902000000020100040488050206000D02475 +S315E07871A0600000C0D028000000C000400020000049 +S315E07871B0500000410020708000000090340000808C +S315E07871C0200000102090A000004000906080000031 +S315E07871D004A000500040000040005000000000800D +S315E07871E0540040881000402000884018400088000D +S315E07871F00C4010A0A0000080D028FEC60000000851 +S315E078720000000000080200000000000008000040CE +S315E078721080000004000000200420000014000080B4 +S315E07872200020002010000000080040580000000010 +S315E07872308000040000000000000400004C002000FC +S315E07872400400000004000000040004005000400040 +S315E07872500000000018000000000400402080208034 +S315E0787260000004004000000000100000200000004C +S315E078727020A04020003000002030000020000000F0 +S315E0787280000000C0004000000000800000004040A0 +S315E0787290000080100000000044200000000000207C +S315E07872A00040200080000000004000000000000060 +S315E07872B004008020000000000000400000802400E8 +S315E07872C0200080000000000000400000000004007C +S315E07872D000000000000000001000008000000000C0 +S315E07872E000800000000000002000000040D0002070 +S315E07872F040108000008000800000400040001000D0 +S315E078730080400010006080004000200000200040AF +S315E07873100800081020800000246000C00020D0001B +S315E0787320000000000000200000400021000020401E +S315E078733080000000008000002020000000000000AF +S315E078734080000000800000000080004030000000EF +S315E078735000000000400000802000900008C0004057 +S315E07873600008800800000000884000100000000156 +S315E0787370000000606500000000004008000010088A +S315E078738082000000004440000008E0184000000059 +S315E0787390000000002800042000200000800004405F +S315E07873A000000820000000000020022004000020F1 +S315E07873B0000000420030000020000030006000202D +S315E07873C00000002000200000004040180004002063 +S315E07873D0402000400000004000200040040000000B +S315E07873E00020040000808000800000080000800013 +S315E07873F0000000404400004000002840000088007B +S315E07874000040000000E008040020001000000000C2 +S315E078741000000008084004004000001004404008DE +S315E078742020000420A000002020000000400050202A +S315E0787430204000000000000000000000000000404E +S315E0787440000088002040280000004000002000402E +S315E078745060000000000000D00020000040004000FE +S315E078746000008000000000008000000000000000BE +S315E07874702040200000A000800000000000400000CE +S315E0787480000000000000500000004080004000004E +S315E078749000C0000000000008000040800000000006 +S315E07874A000101000004080001000008000004410BA +S315E07874B0800000000010200020000000004040B06E +S315E07874C000000420000000000040004000100000AA +S315E07874D000000040000010008000000000C00000BE +S315E07874E00040000C0000008080200820FAE70000C9 +S315E07874F018441000004000000008400040000000FA +S315E078750008800000000008000010000040400000FD +S315E078751000000000000000000040200004000004A5 +S315E0787520200000000000180800002000000000405D +S315E07875300000004400000004400000000000000065 +S315E07875400000000000000004001000002004800025 +S315E078755000000410000020008400000000000060B5 +S315E078756000000810000040000000C000800800001D +S315E078757000000000020000200084003000000000D7 +S315E078758020040000604002084000004010003040CF +S315E0787590000000000030000000008000800000005D +S315E07875A004000000640000000000000800002000ED +S315E07875B0404000402040000000002000000000002D +S315E07875C000006000004000000000000080400000FD +S315E07875D00000000000002000000040040000900059 +S315E07875E000000020001000040000001200041000E3 +S315E07875F040600020002000001020000040000000DD +S315E0787600000000000000005020001000000000009C +S315E0787610001000000000400010400000000000402C +S315E0787620000020000010802000000000000000002C +S315E0787630900000804010000000000000000000008C +S315E07876404000000000000000404000000440800058 +S315E078765000002000001000104000000000A00000AC +S315E078766060000011C00F2B0080820002000002004B +S315E07876700008001002000000000080020800000008 +S315E07876800000000400000000000000000000000098 +S315E07876900000000012200000002008200000000012 +S315E07876A0000004020000020000000420000004004C +S315E07876B00000004000000018000400080000040004 +S315E07876C020000010000000080000004000042000C0 +S315E07876D000000010200C02000000200000000000EE +S315E07876E0002810008000040002C0200020C8800036 +S315E07876F0001040004000000000000000002000106C +S315E0787700000000000040300000000010000000009B +S315E0787710000000000044000000000000060024009D +S315E078772000204000040000200000800000000002F5 +S315E07877300000004084002000000080200040000027 +S315E07877400000040000444000000000400002000011 +S315E07877500000000010000400100000001020002057 +S315E0787760009000100040800000000010100000102B +S315E078777000400000000000800080108000101400B7 +S315E078778000000000001000000000108000001000EB +S315E0787790002000000020001000002000000000001B +S315E07877A0000000000000001000000020400000000B +S315E07877B0001044800400400000006004000054009B +S315E07877C000000000000040000000006000000000BB +S315E07877D00000001904801000040000100101B15F78 +S315E07877E000402000000A0000800000000008000049 +S315E07877F00400000000020000040000000010000011 +S315E0787800080014000004200800000000100000249E +S315E0787810000000000000000000000000000000000A +S315E07878200C00000802480000000000000002080290 +S315E0787830000008001000004000000800000020105A +S315E078784040800408000820000200200000000000C4 +S315E0787850202C008800500010000400000000280862 +S315E0787860000C000040001000000008000000000056 +S315E07878700000040020004000000000001000100026 +S315E078788000400080000280000000002080000200B6 +S315E0787890000000000000000000000000000000008A +S315E07878A000000040000000200000000020000000FA +S315E07878B00080000000000000444000000000000066 +S315E07878C00000020200008000020004400000201060 +S315E07878D000A00044000000000400000000008000E2 +S315E07878E0102400000004000000048000000440003A +S315E07878F0800400000004002000042000000400005A +S315E078790004000000000000040040001400000004B9 +S315E078791000100000001004248030002480000080ED +S315E0787920000004840004000000000000000010005D +S315E07879300004000000040000000000000080002839 +S315E07879401400001100000080100080400000000064 +S315E0787950000000000000202B580000000000042002 +S315E07879600010000000040000020010080008000083 +S315E0787970000010000002280000020000100200104B +S315E07879803402001006000400000200000002000045 +S315E078799004200000000000020020400200200002DF +S315E07879A042000042241000480000000E4000000A21 +S315E07879B00000000E000000000000000A10002080A1 +S315E07879C04000200000000000000000000000004CAD +S315E07879D000A02080002000000020001000000400B5 +S315E07879E00008002080000000000010008000403091 +S315E07879F00000021000002000800000200004000053 +S315E0787A0000000004000040000000000000000000D4 +S315E0787A100080000004000000000000000440000040 +S315E0787A20000400800400400004000000008000802C +S315E0787A30000000000020000002240000000004207E +S315E0787A4040802000004000040004041000200480F8 +S315E0787A5000000000000000042080000000040050D0 +S315E0787A6020040010200400000084002000140000A8 +S315E0787A7000146000000400002004001000100000EC +S315E0787A800000100400000014200000040490004078 +S315E0787A902000400400000054040010000000200498 +S315E0787AA0C000004000000004800004000010408020 +S315E0787AB000000000500000400000800004000080D4 +S315E0787AC000080000000000000800800000000400C4 +S315E0787AD029EC000000000000000000000002000031 +S315E0787AE000000000001400041002000800002004E2 +S315E0787AF0000400040000040000000000000000021A +S315E0787B0000000010000000000000080000000808EF +S315E0787B1000000000000000040808000000084000AB +S315E0787B2000000000000002040008000000020800DF +S315E0787B30020400200000020000001004000020008B +S315E0787B408010008060001020800000004000000473 +S315E0787B5000800040000000020000200000000000E5 +S315E0787B6050008000020040000000000000000000A5 +S315E0787B7000002010000000040004000020040080CB +S315E0787B800000000000040000200020000000400013 +S315E0787B900000200000000000000000000002600005 +S315E0787BA00000000040240000000002000000000011 +S315E0787BB00000400040000040000000800010000017 +S315E0787BC00040000000001010000090002000000047 +S315E0787BD000000000600020000000000000000000C7 +S315E0787BE08000809040000000000000000000000067 +S315E0787BF000000000400000100400000000000000D3 +S315E0787C0000000020000000040000000000100020C2 +S315E0787C10800000000400601080000400000000008E +S315E0787C20400400400000000000400010C4048000DA +S315E0787C300040000800408000000080000004000852 +S315E0787C40000080080000888800B7B4004802000287 +S315E0787C5000000000020000020400000210000006A6 +S315E0787C600218000008000200000800000020040066 +S315E0787C701000000000200A00002000001028000212 +S315E0787C800020000000040020000000080040080002 +S315E0787C9040000004000000005400000040000000AE +S315E0787CA000000040000000000000000010000080A6 +S315E0787CB00000008000000010000000800400001042 +S315E0787CC00000200000000020C0000000080040000E +S315E0787CD000000000001000C00080140000000000E2 +S315E0787CE0008010000010000002100400005200002E +S315E0787CF00040000000000080002004000000000042 +S315E0787D0000044000000000040000000000000204C7 +S315E0787D1000804000000000000000000480000004BD +S315E0787D20000000A440000040002000000000C000F1 +S315E0787D300004000000048004000000000004000055 +S315E0787D40000400200000000040042010000000003D +S315E0787D502000001000400000800000800000000055 +S315E0787D6000000000000000001000000000000000A5 +S315E0787D704000000010000020000000000020000015 +S315E0787D80000004101000002400000000000000004D +S315E0787D9000000000000000000040000000008004C1 +S315E0787DA000000004000000000084000004000004E5 +S315E0787DB000000000000080000004000010040008C5 +S315E0787DC000103D4200800408040402000000000828 +S315E0787DD00000080000000000000000040200000C2B +S315E0787DE0000000100000000002000000000004001F +S315E0787DF000080010040000000008000000000208F7 +S315E0787E00000000000000084000100000200800088C +S315E0787E1000000020000004040002000800100000C2 +S315E0787E2008120008100000480000800000000000FA +S315E0787E300010000000080020001800060000040486 +S315E0787E4002020C2002000004A800000000000010E6 +S315E0787E500000140000000000000010004000005010 +S315E0787E6000000010000000100080000000000020F4 +S315E0787E70000400000000000000000000000400009C +S315E0787E802002000000000200000002A000000000CE +S315E0787E9000008000A0000000000000000000000064 +S315E0787EA00000000000000000000000000000400034 +S315E0787EB00000100000802010000000000000041090 +S315E0787EC000001000000000100000002000000020F4 +S315E0787ED000004010800410200000C0000000000080 +S315E0787EE00000000010200000000080001000200054 +S315E0787EF004000000001000002000000000000000F0 +S315E0787F00400070000000000000200000140000101F +S315E0787F10401000500000100040048020000000046B +S315E0787F2000000080008040000000080800000000A3 +S315E0787F300000800048000040000000C3B100000067 +S315E0787F40000000000008000000000200000C0006B7 +S315E0787F50200000000800001210000010020800005F +S315E0787F600020000402001008142000100000000031 +S315E0787F70340800000000000800040000000000005B +S315E0787F800010000000000040000000000E00000035 +S315E0787F9000000000040200004010080042000400DF +S315E0787FA000001408002414000002080020081000DD +S315E0787FB0000A0000000818000000102008040400F9 +S315E0787FC000006004100400040004000000000000D3 +S315E0787FD0140000000000000000000000000000002F +S315E0787FE000040000000002400000000000200022AB +S315E0787FF00000000084000002000000044000000059 +S315E078800000A0000400000000000400044000000422 +S315E0788010000000C4004000000000000000000042BC +S315E078802002000200000600000000240000000000C4 +S315E078803040040080000400000000A0000000000476 +S315E078804000200000000004200080002020000000CE +S315E078805080000000002004000000002000000010EE +S315E078806080000010042000000010000000100000DE +S315E078807000000000000000200080000010200000D2 +S315E078808080100000002000040000000004000000DA +S315E0788090000000000000000000000000040000007E +S315E07880A000000004200000000008000000048000C2 +S315E07880B004000000A2F5000000100000000A0000AD +S315E07880C08000080400000800800010040020080002 +S315E07880D000100004000430000010000000200000CA +S315E07880E008002004000010000000000000000000F6 +S315E07880F000002000000000000000400000002000A2 +S315E078810000002000000000000000000004000000ED +S315E07881100400440000000010021000001010000077 +S315E078812010000000001000801000000080100000B1 +S315E078813050100040101000002000001000201400BD +S315E07881402800000000100010000090020080004037 +S315E0788150000000002000000024000000000000007D +S315E078816000000000000000100004000000004080DD +S315E078817000000000000040000000008000400000A1 +S315E07881800000000040000004400000040000800089 +S315E078819000026000000000008000800040000420BB +S315E07881A08000100000000000000020000080000041 +S315E07881B000000000000000004000000000000080A1 +S315E07881C0000000000400000000000040200000509D +S315E07881D00000000000000000000000000000000041 +S315E07881E00000006000200000401000000010000051 +S315E07881F00010000000006000101000001000000081 +S315E0788200001000002000000000000050008000C050 +S315E0788210040000000000000000000000100040109C +S315E0788220000000001000040020000400003DA000DB +S315E07882300080800808000000220C000000000000A2 +S315E07882400A04800800000000000208002000000010 +S315E078825000000020000000080000000000080A0086 +S315E0788260000000100008040800080000000C240054 +S315E07882700800000010044008000604001002000020 +S315E078828000000C0008000200000000000C10020458 +S315E07882900080800200004004000020009000080082 +S315E07882A00040000400040C80000004000000000098 +S315E07882B000000C0000080800020008100002040024 +S315E07882C000046004000000000000000000000000E8 +S315E07882D00000008004400000600400040080000094 +S315E07882E004000020002000000420200000000400A4 +S315E07882F00000002004000004000000000000820076 +S315E078830000000002000020000004000040000000A9 +S315E0788310000000008020C0000000800400005000CB +S315E0788320000000000000000020002000100004009B +S315E078833000000004244000040010008400000004DB +S315E0788340004000041400000000000004040010203F +S315E07883500020000000000000000400200004000473 +S315E0788360000404001000000000040000008404000B +S315E07883702000040000805000045000040000100043 +S315E07883804000000000000000000020C05004880093 +S315E0788390041808808400000080000000080000804F +S315E07883A008000080000430D0004002080202000293 +S315E07883B008000A02100002020C1608000E02182ABB +S315E07883C004000210002C0010080014041010200C91 +S315E07883D02000183600081620100020182008000023 +S315E07883E008080006200800000E0008400A104060E1 +S315E07883F00C00004C000A5010020800100402004EEF +S315E07884000028044018220000121200C00A1000006A +S315E0788410261004300000902002100C1020001C80FA +S315E07884200430400400F4000408AC4044002004B072 +S315E0788430000002401040120480100010A450221070 +S315E078844000401000102050100060100010C00200AC +S315E078845004440000004006000000002004002200EA +S315E078846064840044000004400000002480800420F6 +S315E078847004000024008400A40200C4248240800022 +S315E0788480C400000422004000000200400006C0005C +S315E07884908620840010140054000480402414208040 +S315E07884A0142000001010C490004000003020002016 +S315E07884B0000090200000800000500080005000000E +S315E07884C00420000000001000341000800000001046 +S315E07884D0004010300060101000006024800010002A +S315E07884E00020002000001014A00000208020541402 +S315E07884F0C040041480004440004004000404404432 +S315E07885008000C03004401430080410100014800055 +S315E0788510D000901008049010080CA000180084FB96 +S315E07885204700C80604022006180004800A000C02F8 +S315E0788530000614802882001A0204120036000830F9 +S315E0788540100C00200600001002001400160020121D +S315E0788550160810201006000000200400000C080021 +S315E07885602408084000181C006002024060000650AB +S315E07885702002000048020204400004100812120C9F +S315E078858048023204400284008420040002308008E5 +S315E078859080004000001200CC00A22004000208808F +S315E07885A010884C00482008462400001C840080008F +S315E07885B0100400068420E00090000012000000120B +S315E07885C00400403200000000000000028004002031 +S315E07885D020040230000000046000002260000402FB +S315E07885E0040000024000040020000000240204C0D9 +S315E07885F0E00004C020008440608200004020002033 +S315E078860000060280820022C0860020001004000462 +S315E07886104014801004000010A400240010202400E8 +S315E078862010000400000464100034009000244480B4 +S315E07886300014C41000B400800034740000040030E4 +S315E078864000044000009054800024102404000024A4 +S315E07886500420100410200004040020148420A004D0 +S315E07886601000201410E080240440440000004430D8 +S315E0788670440000548044004400008054C4008044A0 +S315E078868008408400800C080080080000880080009C +S315E07886908C008010C8040010C695000002020C0C0D +S315E07886A00000000402021808040000000686181884 +S315E07886B000800000061638381000000006063030D4 +S315E07886C0000000000E1E3230100000000E1E300052 +S315E07886D0000200000C0C0000000002020C1C404076 +S315E07886E0000002020C1C4040000402020808040064 +S315E07886F00000060618181000000006061838908064 +S315E0788700800004143030008080000C1C303080808B +S315E078871000000C1C3030108280000C8C60601000F9 +S315E078872080101C1C20C080000004141410E0800027 +S315E078873000001010C00000000004303020800000F7 +S315E078874004040020008000000404203000000000CB +S315E0788750040420A0800000000404000000820000E9 +S315E078876004040040000080000404C0C0000000005B +S315E07887700404C04000000002000040C02000020669 +S315E07887800000C0800000040410301080000004046B +S315E078879030308000000004043030B000000004047B +S315E07887A0303000808010048420200000801014147B +S315E07887B0B06000000000143420200004003010106F +S315E07887C080000000040430300000000004043030FB +S315E07887D000000000044430B080004000042430F00B +S315E07887E080000000040450504000000004844040BB +S315E07887F05000800004C4C0C0000000000D8C80806A +S315E07888008004000008088080800005040898888144 +S315E078881000D6470002020414141400200202221A39 +S315E07888200000002004020C04082800000404160660 +S315E0788830383801000E02720730380040060E320EE4 +S315E07888403030000006063E06202000001C04840630 +S315E0788850203002800C0E440460600202060614148E +S315E07888602020000022020000002002061632103096 +S315E0788870000006041406281881800C027627303822 +S315E078888080C00C0E3E0E303080000808362220304C +S315E078889080801C042C2A602000001C0A3414808016 +S315E07888A0000212060414C0C004023202C0944020CA +S315E07888B0000036120010808004020606202001802F +S315E07888C008024207103800400406020280A0000041 +S315E07888D0040426260000808014048002001000003C +S315E07888E00406C4C4C0C000020206C0040040040204 +S315E07888F020004000804002000406C000808004002A +S315E07889001404101001000C04740580080040040477 +S315E0788910141400000000040430141010020004045B +S315E0788920000600100000141090B400000000141047 +S315E078893050544060000010100014006004003014B9 +S315E07889400050004004042014300041400C002035EB +S315E07889508088000004042014E0A000000404544455 +S315E07889606070020014044062606000000404C4B4DD +S315E0788970C0E000000C1888BCA0E000002818085C6D +S315E0788980C0E005040C2C88A8014082FB00000218A0 +S315E0788990002424200002021A0200000000060024C7 +S315E07889A02C2808000004043632282800000606320F +S315E07889B032101000000A0232362020000006063611 +S315E07889C01620200000040C2404200000020E0C740B +S315E07889D040604000000606240400000000000040E5 +S315E07889E0480000020220042000000004003C3C28F5 +S315E07889F008808006042424202080800E0C0404005D +S315E0788A000000000E0E040420200000040C2C2C003C +S315E0788A102002020A0C00008080020010100404C0D4 +S315E0788A20C00200101080C0004002020004000080FE +S315E0788A300002000400002000000604242030100024 +S315E0788A40000600002080A0000006062404000080CE +S315E0788A508004040000000002020604C4C440400218 +S315E0788A60000400040000000200020240000000005A +S315E0788A700004040000808000040414001000000460 +S315E0788A8004043420000000040414140000000004F8 +S315E0788A90041010000000000404A0202020008010BC +S315E0788AA000A0902000000010105444002000001030 +S315E0788AB000504040000000001040104000040410D0 +S315E0788AC00040500000000030200080000004005490 +S315E0788AD044408000000404041470700000040460CC +S315E0788AE040400000001414348460400000140D7493 +S315E0788AF080C08000001808D88080000404341C7098 +S315E0788B00D0C00197D0008282160620282000020283 +S315E0788B10021A000000000000AE263018800000003F +S315E0788B20140418380000040030000020000008081B +S315E0788B30320A30100000040414040000000008082B +S315E0788B40282C0000000004046C2840400000040053 +S315E0788B5020300000000000004040000002023010A3 +S315E0788B60381000000404342428088080060404249D +S315E0788B70002080800A08080C202000000A022420C1 +S315E0788B802020808008002808000002020E0C0404E9 +S315E0788B908080020010040404C0C002001000C09077 +S315E0788BA04040020204200010808002000004202069 +S315E0788BB00080020000041030000006040000008007 +S315E0788BC0000006060424000080800404000000000B +S315E0788BD002020604C4C4808002000004000000009B +S315E0788BE0020000000000800000000404800080C0DD +S315E0788BF00404140410100000040414241000000087 +S315E0788C0004040404000000000404101010100000AE +S315E0788C100404000000000000101090B0000000008E +S315E0788C2010100404000000001010405040000000CE +S315E0788C30101040304000040400107040000000003E +S315E0788C40203080A0000004046454C080000004044E +S315E0788C5050444040000004042404404000001410CE +S315E0788C60B404A08000001808F8C84080000010001E +S315E0788C70580880800400381CE8C840007EF7000079 +S315E0788C800208121010002000021A0200000080028A +S315E0788C90000402103000000200343828080000048E +S315E0788CA0042020301000000808323200200000044A +S315E0788CB0041C1C0000000008080C280020000004B2 +S315E0788CC00C50684060000000041020202000020864 +S315E0788CD00048480000020000200028000004000454 +S315E0788CE014200800000406062620000000080A0E74 +S315E0788CF00A202000000004262620000000000C0C44 +S315E0788D002C000000000C0E000000000002021204A5 +S315E0788D100440400002021280C04040000002060093 +S315E0788D2000808000020602002080000002262230C1 +S315E0788D30100000000202028000000004040606002B +S315E0788D4000808004040000000000000406848400AB +S315E0788D500000020602000040000002020200004025 +S315E0788D60000000040400C0808004040414000000BD +S315E0788D700004042404001000000404040400000045 +S315E0788D800004041010100000000404000020200005 +S315E0788D90000000A08000000000101024244040006D +S315E0788DA00000001000004000000020004000400471 +S315E0788DB0041000001040400000302000200000043D +S315E0788DC00404044000000004044400505000000409 +S315E0788DD004002420200000000404B40020000000F1 +S315E0788DE01804702060000000100850404000040429 +S315E0788DF02818380040F414000202120220280000F5 +S315E0788E000202120A0000000002023626101800005C +S315E0788E100000303038380000040030003030000090 +S315E0788E20040C3212103000000808101020200000E0 +S315E0788E300C040C08000002000802440440400202D8 +S315E0788E40080C1C1400000000020200004000020238 +S315E0788E50163610104000040000000868400004064A +S315E0788E6000003010000004060C28B0300000040C36 +S315E0788E702420400080800C040C4000200000080884 +S315E0788E8018100000000204040004404000020000CC +S315E0788E9010100000000010103030808000020404CA +S315E0788EA020200000040600000000000000062440B0 +S315E0788EB080800000040420200000808004040424DC +S315E0788EC0200000000404C4E42080000200000020B2 +S315E0788ED04000000202020000400000000404204046 +S315E0788EE080C0040414041000000004041404000094 +S315E0788EF0000000001440101000000004101020203C +S315E0788F00000000040000202000000010B08000007F +S315E0788F10000000004454000000000010809000003B +S315E0788F20000010200050000000040010300000001F +S315E0788F3000002020803000000404243490500000A3 +S315E0788F400404140440500000040424440040000063 +S315E0788F500404A484C08000000410E4440080000087 +S315E0788F6000104000008004042404D05000013D2D18 +S315E0788F7000000200120000000002020A120808004F +S315E0788F8000020204021010000000000400302800FD +S315E0788F90000000101000000000000002023000001F +S315E0788FA00000000000000000000808200C00000027 +S315E0788FB00202086448404000000C082000000000E7 +S315E0788FC0000008000800000202240C1040000000AF +S315E0788FD000202008088080060400000020808006B3 +S315E0788FE004084C408000000E0E00400000808004AB +S315E0788FF004040400000202000C00088080020004E9 +S315E0789000040000C0C0020000000000000002020078 +S315E0789010202060C080020004000060400006040062 +S315E0789020000000000006000404C080000006062068 +S315E0789030406000808004040444400002020404C4D2 +S315E0789040C4000002000404000020000200000000D2 +S315E07890500000000000042400008080000024042042 +S315E0789060504000040404040000000000002024704E +S315E07890709000000404104040008000040400404062 +S315E0789080000000100000704000000000005444002A +S315E07890900000001000C0C000000000101040100072 +S315E07890A00004040000405000000000302010B000BA +S315E07890B00004047464108000000404441450000032 +S315E07890C00004040024400000001414042400000086 +S315E07890D000140C44A400000000100008408000044E +S315E07890E004143C00808000D979000202121220280C +S315E07890F020000000120A0408000004002626200852 +S315E0789100000000002020080800000400300000205D +S315E0789110000008082006000000000808200000008B +S315E078912000000C0C28282020000000006C286060E5 +S315E07891300000080824346060000000000000404029 +S315E0789140020630304820404004002020C86840407D +S315E0789150060402220010000002024A0200500000D3 +S315E078916006026A0A60600000000020400000020201 +S315E0789170080A0010000002020606000040600202BB +S315E078918002020010400002021202401080C0020281 +S315E078919002064020004006020202000000000202B9 +S315E07891A0424280E000000606422200608000040425 +S315E07891B06020202002020406A4A4A0A002020202F3 +S315E07891C0202000200202020244000000000024046D +S315E07891D02020C0C004040424400080C004041404A1 +S315E07891E010000000000040400040000004045010E9 +S315E07891F00050808004044000206000000000600099 +S315E078920000000000000004044060000000004040D8 +S315E078921000400000100060500040040400106040F8 +S315E078922040400000203000100000040464541050E0 +S315E07892300000040410046060000004042464000064 +S315E0789240000014142434608000001410203040802C +S315E07892500000101040500000040434347050400090 +S315E078926034B600820210123030002000020A180C60 +S315E078927028000006022432002000000000040018CE +S315E078928008000000010008204000000808020610E7 +S315E07892900000000000200020200000080828382080 +S315E07892A08000000008202860000000000070204060 +S315E07892B04000000800446000400202202070400030 +S315E07892C040000020204000004004070028004000CD +S315E07892D0000A0248484040000002064868204000FC +S315E07892E00000000020008002020E0C000000400220 +S315E07892F00200000000400002020000002000400268 +S315E07893000220004040C0C0020204004040404002D3 +S315E07893100300080040000002024000C0E0000002BE +S315E0789320064040606080800004604040A00202020F +S315E0789330042480002002020000200020600202005F +S315E07893400444200040000024204020C0400000244F +S315E0789350206040C0C00005040800500000000060AE +S315E07893602040C0000004045050504080000406407D +S315E07893704040C0000000004060400000000000244B +S315E078938024002000000000C0E040000000201040EB +S315E078939040400004041000405000000001102810FE +S315E07893A04000000404544410100000000404143013 +S315E07893B02000000006203430A000000000342000B1 +S315E07893C0200000141C3464206000001014586040BB +S315E07893D04000003038486800405FAD000000100873 +S315E07893E02810002000001000002800000000182453 +S315E07893F0200000000000002000280000000104089A +S315E0789400006000000008020800200000000808005C +S315E07894102000000000042E1410A000000000204474 +S315E078942040200000040000240020020000000060D4 +S315E078943000000204000820080000020420001080E2 +S315E07894400080000120082040008000080420802069 +S315E0789450008000001020102000800008082010C04E +S315E07894608000000C00000080000000000014A0409E +S315E0789470000000000060600000000000002000802E +S315E078948000000000200000000005002C00400000ED +S315E0789490000000000020000000000020000080802E +S315E07894A0000000040080800000004080004000005A +S315E07894B0000040844000000000040020A000000284 +S315E07894C0020000000040000000000000008000017B +S315E07894D0002830D000000000000000B00000000056 +S315E07894E0100000008000000200003080800000005C +S315E07894F0808000000000000000400040000000008E +S315E078950000E000400000200020404000000000001D +S315E0789510500000000001000800C040000000000094 +S315E07895209000000000005000402000000402403027 +S315E078953020C08000000000A080600000000000E00D +S315E078954080600000000440A08040000020004020B9 +S315E078955000C09D8700000000000000000000008247 +S315E07895600C08200000000404001800000000020047 +S315E07895701810000000000100280040000000000CF0 +S315E078958030100000000008003000000000000A04F7 +S315E0789590100080000000080C0000000000000C08B5 +S315E07895A04040000000000C08200000000004201075 +S315E07895B0000000000402080800000000050018001A +S315E07895C04000000000081000800000000808000055 +S315E07895D0000000000402100080000000100C20401B +S315E07895E000000000000000000000000004002000F9 +S315E07895F00000000420000000000004040000008061 +S315E0789600000001000820400000000400000080000F +S315E07896100000000000000000000000061000800056 +S315E07896200000000000800000000004000000000058 +S315E0789630000004006040000000000000C0800000E8 +S315E0789640040010100000000001001800400000003F +S315E07896500004300000000000000010100000000058 +S315E078966002001000800000001010200000000000CA +S315E07896700010002000000000141020000000000018 +S315E0789680101000000000000010000040000001000B +S315E07896901830400000000000500000000000040090 +S315E07896A000100000000002001000800000000004B6 +S315E07896B04000000000000000000000000000040008 +S315E07896C0A000000000000000808100DEC500048371 +S315E07896D0831C1C606004800303181C40600000074C +S315E07896E08738384044000007073838C6C600000691 +S315E07896F007303882C601010E0E7070828601010E3F +S315E07897000E7070868401010C0E6072008403031C6F +S315E07897101CE2E2040403031C1CE2E00400030318E1 +S315E07897201CC2E0000007073838C2C40010070738C3 +S315E078973038C4C210100607303886C611110E0E707E +S315E078974070868611110E0E7070868011010C0E608F +S315E078975072049003031C1CE2E2101403031C1CE25F +S315E0789760E210100303181CC2E2101007073838C25B +S315E0789770C2100007073838C2C200000607303882C0 +S315E0789780C211010E0E7070868201010E0E70708223 +S315E07897908001010C0E6072008003031C1CE2E2007B +S315E07897A00003031C1CE2E200000303181CC2E0007D +S315E07897B00007073838C0C0000007073838C0C0103F +S315E07897C0000607303880C001010E0E707080841173 +S315E07897D0010E0E7070848401010C0E60700494039F +S315E07897E0031C1CE0E0141403031C1CE0E0041003E3 +S315E07897F003181CC0E4000007073838C4C400000723 +S315E0789800073838C4C400000607303884C401010E2E +S315E07898100E7070848001010E0E7070808001010CEC +S315E07898200E6070008003031C1CE0E0000802021C56 +S315E07898301CE0E008080202181CC0E00908060638B1 +S315E078984038C0C108611B000000000000000000007D +S315E0789850008000000000000000000000800000109A +S315E0789860000410100404101004000000000010102A +S315E07898700002101000041010040010000000000030 +S315E07898800000000000040000040000001000000062 +S315E0789890000000001010000010100000101000000A +S315E07898A0001000001010000400100480000002068A +S315E07898B010000480100002021000000410000282FA +S315E07898C0101084800000000000000400228210005E +S315E07898D080801014028200108080001002820000DE +S315E07898E000001010028200208000100002020000C2 +S315E07898F00000000002020000000010200282000052 +S315E07899008404000002060000040400000000000061 +S315E078991000040202000000000400020200000000D9 +S315E078992000000202000000000000000000000400D1 +S315E07899300000000000100404000000000000048429 +S315E07899400000848000308000202000000000008045 +S315E07899502020000000000000000010100000000049 +S315E07899602020000000000000000010000000000049 +S315E078997000000000000000200080000080800020C9 +S315E078998080000000808000208000004080806000B9 +S315E07899908080004080804000800000400010408059 +S315E07899A01010C00010180000181080801010000009 +S315E07899B01018008018180000181880001834D7009E +S315E07899C0080000000000000000000200000000002F +S315E07899D000004000000000000000000000000000E9 +S315E07899E000000020000000000000000000000000F9 +S315E07899F00000000000020000000000000000000007 +S315E0789A0000000000000000000000000020001000C8 +S315E0789A1000000000000020000000000000000000C8 +S315E0789A200000000040000000040000000000000094 +S315E0789A300000000000000000000000000000008048 +S315E0789A4008000000000000000000000000000000B0 +S315E0789A500000000008000010008000000000000010 +S315E0789A601000000000000000000040002000000028 +S315E0789A700000001010000000000000004000000028 +S315E0789A800000000000000001000004002000000053 +S315E0789A900000000000000000000000000000000068 +S315E0789AA00000000200000000000000000000000056 +S315E0789AB000000000000000000000000080002000A8 +S315E0789AC00000000004000000000000000000000034 +S315E0789AD00001000000000010000000000000A00077 +S315E0789AE00000000000000000000000000000000018 +S315E0789AF00000000000000000000000000000800088 +S315E0789B0000000000000000000000000000000000F7 +S315E0789B1000000000000000000000080100000000DE +S315E0789B20000000002000100000080000000000009F +S315E0789B300000000000018BEA0000002000000C081D +S315E0789B4000400000020000000000101002048000CF +S315E0789B5004002000040600800800200000240000AD +S315E0789B60080000000C0004802000002400080400AF +S315E0789B7018204024082800200008240024400640C5 +S315E0789B8004400640082004100000400080044000AD +S315E0789B90140440006000208060C00040A0100040BF +S315E0789BA02284001024002004000400402480100061 +S315E0789BB0400480000020404000000400001004408B +S315E0789BC080780400000000805000408000902000FB +S315E0789BD05000D0000C7000000410A0802042206075 +S315E0789BE00000500000E000008000A0000004E000E3 +S315E0789BF00400E0008000A220808040000000006041 +S315E0789C000000200000400040804400200000400032 +S315E0789C1080600080304000C0008040004020C080F6 +S315E0789C202040800060005000C040800000001000B6 +S315E0789C300080040080400040204000001000800052 +S315E0789C4000700000800000400000302010201000F6 +S315E0789C504000100050002090000000008040000096 +S315E0789C60000410000020003480002000102000A0BE +S315E0789C70002000800000208000C0200000200080C6 +S315E0789C80000000000064009000204000040000001E +S315E0789C901000040000204410000000C000201810D6 +S315E0789CA0080000400040040010408C1800904434CE +S315E0789CB03300000020000000001040000200001091 +S315E0789CC0002010000420800408020000000800004C +S315E0789CD00440002000000020000000A000000400FE +S315E0789CE0800800040004080000101020040000201A +S315E0789CF020080008100000444004200450A000200A +S315E0789D0014002000008800000020000044102000A5 +S315E0789D1020008010C02010001A40000004100000D7 +S315E0789D2000048004440010000000040000002000D5 +S315E0789D301000000000100080800018A000003000BD +S315E0789D4010004000000000403000409008042000F9 +S315E0789D500040004000000000002400000000C00041 +S315E0789D60400500000000004000048040000002004A +S315E0789D702000004000004000002200000000C00003 +S315E0789D80804020400820000000202000000060008D +S315E0789D900040800000400000002004000000803091 +S315E0789DA000400010004010010000008020400000D4 +S315E0789DB040000000000000000000008000408000C5 +S315E0789DC00050200010000020004000901000802015 +S315E0789DD00000004080008000000000000000802045 +S315E0789DE0800000201000000080000800801100004C +S315E0789DF00000C00000002000800000000030402015 +S315E0789E00B00070000000004010000004000000255B +S315E0789E1000000000C00000200410000000000040B0 +S315E0789E200010804850000040A8670010000000004D +S315E0789E300C08000400000000000004600010020036 +S315E0789E40000004200000042442880000000000049A +S315E0789E5008006800000804000000200000200000E8 +S315E0789E600402A8004020080800000004202004002E +S315E0789E70022000024000080004800000480000103C +S315E0789E8064140040040020040000C0204000000074 +S315E0789E900000200480002020C00020000000208000 +S315E0789EA0004080C0208040400000C0A0040000044C +S315E0789EB01000400044048000008040000080048068 +S315E0789EC0300040000080005000800400B0A000021E +S315E0789ED0600040403000000020008000A800400488 +S315E0789EE0A0000000200080208800808000200010FC +S315E0789EF0804000003000000004000004000080008C +S315E0789F0040C00000C080300000800440208000A07F +S315E0789F10408040408060000040800040800004003F +S315E0789F20000000000400804000240040000010009B +S315E0789F308040007000800000000000009020000063 +S315E0789F4010000000000040000090000000000000D3 +S315E0789F50440020841000000008102400000000204F +S315E0789F6000200080200020002000800020000000F3 +S315E0789F70001000000000000400000000000004006B +S315E0789F8000008040008000400030000000000018AB +S315E0789F9000400841008040002400200004080010BA +S315E0789FA084EA76000080000020000020002004008B +S315E0789FB002080000000002000012200220002000C3 +S315E0789FC0800000008800001420042002000040028F +S315E0789FD040040000004004000C0006000020200049 +S315E0789FE00000500000000000200002002000004041 +S315E0789FF0000000000400004000001C002040020041 +S315E078A000000000600000400000228000000280200E +S315E078A0102002040000400084000000000044800430 +S315E078A020A00010286004040000000004000000008E +S315E078A0304000A40000042480044040020000400070 +S315E078A040040000402000600000000020000000408E +S315E078A050002000002000000080200020140000028C +S315E078A0602000802200004280B00000040400400016 +S315E078A07000000220000002000004420004C00080D4 +S315E078A0800000020000004200040002000080400068 +S315E078A09060008000408010200080001000200000E2 +S315E078A0A010800000008000300000C0000080700062 +S315E078A0B00000000004400010A0000000308040203E +S315E078A0C000000030040000000000408000000040FE +S315E078A0D00030001000004000000000009000000012 +S315E078A0E000000400002080008000000000100020BE +S315E078A0F02000800000004000000040000020004082 +S315E078A10020000400200400104000001000400010F9 +S315E078A11000004410C008400020043B220040006064 +S315E078A1200016000050401600008000000000003065 +S315E078A130408000000440080000040000406004000D +S315E078A1400040000004080020040800006000004099 +S315E078A1500000004002000004400060040080000433 +S315E078A1600200004020084200002040080440000039 +S315E078A17000000000000000004020000000A040043D +S315E078A180000440004000004000000020000020204D +S315E078A19000204010000000004000040000000001AC +S315E078A1A0A0000400000000208080004000A00000AD +S315E078A1B0000000000000000400204000204000027B +S315E078A1C0004000C00080001220000000840090006B +S315E078A1D0C004100044804010400004004020000095 +S315E078A1E000020000200020200000400040002040CF +S315E078A1F0208000800000000040200400000000007D +S315E078A20000000044804000100000002000000000BC +S315E078A210000040000080001000002000041040801C +S315E078A2200040802000400004104000044000000018 +S315E078A23020000000600440100440A0000000800088 +S315E078A240404080000000800020C0004000C03430EC +S315E078A2500000140060000000800040002004000048 +S315E078A260700000004000C4104000000001002000AB +S315E078A270000000008000008004800040200000009C +S315E078A280E80800800400000080400020000000001C +S315E078A2908090007E250040004000043000000016E3 +S315E078A2A000008A000000000050229002240220403C +S315E078A2B0200000040000442008044000260008003E +S315E078A2C024024000400000004400040800460000F4 +S315E078A2D00044402000100080040220002042600AFA +S315E078A2E0400040000004400000400000001000609C +S315E078A2F00042002000400000000046208040020036 +S315E078A30000A02200040020008024004000100044D1 +S315E078A31000C40400003044202184000400000000DA +S315E078A320802080000400842004A0004042040000DD +S315E078A330000440240020204040024000A0000000B5 +S315E078A34022100020008400A00000102000240000E5 +S315E078A35000520400002200200080800024102000B3 +S315E078A360E000000022400000224000044082C40061 +S315E078A37000002004000200004200000000460000D1 +S315E078A38000100020200040800020004010000000EF +S315E078A390100080100004900000304000008040807B +S315E078A3A00430004004400004001080000000A05013 +S315E078A3B010442080100000840020004080000000D7 +S315E078A3C0006050A0104094605000001400000080B7 +S315E078A3D00000004020040420C000000000404094C3 +S315E078A3E0502000200180000010000080000000006E +S315E078A3F0048020802040040040300008009400600B +S315E078A400001000406410000000C000B4E8030010BB +S315E078A41008204800080C00200040180058084640FC +S315E078A42038520400284804201008600220400030A2 +S315E078A4300410241000000C000800005800480000C2 +S315E078A4400CC00040024CA0000C00004628200C20EE +S315E078A45000201EC004400004620000100800400A94 +S315E078A46000000004080000000048000000022040D8 +S315E078A4701400E04020004400A400000884C6209040 +S315E078A480048440220004A000000024002820440030 +S315E078A49000002820400000002800E4040000404046 +S315E078A4A0000000004000004088448000200C004412 +S315E078A4B08000600020204000C40060641000041032 +S315E078A4C00000100050A0004000500000004480805A +S315E078A4D04C80400060004006600040480040200024 +S315E078A4E0424010805000C004D00208C000008000CE +S315E078A4F00002E05000D42050004080402000600008 +S315E078A500A080000020002010802180204820D40000 +S315E078A510000800008004A0900000846000200424F5 +S315E078A520004020400020C01020408CC00000000091 +S315E078A5304000D08040009000443000002000600069 +S315E078A5402040A440A0000004C00000209020000035 +S315E078A550004480002000008000C0040040B0000085 +S315E078A5604020000004300000C2428010002010C075 +S315E078A57000408000C880384018000008009020002D +S315E078A5808040809048CF78000000004008001004B2 +S315E078A59000204880400000084080100400000C004D +S315E078A5A000000020000000006000000000000000CD +S315E078A5B020000000040000000000008000008860B1 +S315E078A5C02800000000240000004000080000000099 +S315E078A5D0000220000020082008000000001000009B +S315E078A5E0000040100000000040002000000000401D +S315E078A5F0008000200000008000000040000080001D +S315E078A6000000000400208000000020046000004084 +S315E078A6100000000400000020000000200000000098 +S315E078A6200040844000200400400000000000000064 +S315E078A63004401060800000200002000000100080D6 +S315E078A6400040001000404400004260004000800076 +S315E078A65004400040000020000040000010808000A8 +S315E078A6601480002080000000008060002040000414 +S315E078A670700000A00000600000A01000000000005C +S315E078A68010A00080080084000000000800000000A8 +S315E078A6900030040040000004008400200040008080 +S315E078A6A000108400800000000020004000000000D8 +S315E078A6B004100000000004C0004000042000000000 +S315E078A6C00000200090200010000004004000000008 +S315E078A6D080000000000020100080000000001000DC +S315E078A6E00080400440202000600000000800004818 +S315E078A6F00040000008403000000000400008DAF032 +S315E078A70000980400004000000000000010000040BF +S315E078A71002000840A0002000602010080080104069 +S315E078A7200000101000001000040800000000700817 +S315E078A7300000000000020000040400000008022087 +S315E078A740082000000404900000440000001800008F +S315E078A7504000000000080400002000000004002209 +S315E078A76040000000404020000020000000048840BF +S315E078A77000800400000006000400002000000C249D +S315E078A780000040084000000000000020004400007F +S315E078A79000000000000000000000000000004060BB +S315E078A7A00080104000000000200090000004700057 +S315E078A7B00020100014800000000020000000000057 +S315E078A7C00080000080000040002002000000400089 +S315E078A7D000000040000040000000000A0000000091 +S315E078A7E0000000800000009000000000006000009B +S315E078A7F00000000000000020000400110020406006 +S315E078A8001000004000008020440000400000002056 +S315E078A8100020001008000040000000000000000062 +S315E078A8201008401000C00000100000000000000092 +S315E078A83020000080600000000000408000000024D6 +S315E078A8400020000040000000000000800400408006 +S315E078A8500000002000044020000040800000001046 +S315E078A86000000000000040800000080000800484BA +S315E078A87000000000005080D481000000082000200D +S315E078A88008000000000010080004300002004008CC +S315E078A89000000000400022000000000420040020B0 +S315E078A8A008200000000008804000040840000040CE +S315E078A8B00000000020000040000400007002400024 +S315E078A8C04020002000400000000002000000004028 +S315E078A8D000000000000808200080001400800000D6 +S315E078A8E0000400040000000022040010A400200008 +S315E078A8F0002000000000000048000000000000088A +S315E078A90000002008C0000000004800400000400039 +S315E078A91040000088000000000008000420000020C5 +S315E078A92080400002000000000004000000000040C3 +S315E078A9300420000060008000A000040800002000E9 +S315E078A940000000000000000840000200100000004F +S315E078A9506000004000000040008000400002900067 +S315E078A9604020040000400000000000008000200045 +S315E078A9700080000020000000000000900000000049 +S315E078A9800080800400800020000000000040000085 +S315E078A99000202000084040000040000080000000D1 +S315E078A9A000804000803020100000200000008040C9 +S315E078A9B0100080040000000000000400008000A081 +S315E078A9C00010005040000800000000404000000001 +S315E078A9D00000020000020014000000804080008041 +S315E078A9E010200010000000000000800000800000C9 +S315E078A9F0A20100000000000044000084204000022C +S315E078AA0000000C02000000000000020002002200B4 +S315E078AA10420002000000000000000040000002044E +S315E078AA2002000E000200400008000000000000006E +S315E078AA300000000040000246000040004000002888 +S315E078AA4000204000004000000024000000200004C0 +S315E078AA5020000020000000800000000000000000D8 +S315E078AA600000000020000000000000000400000064 +S315E078AA7044000000200000000000000000400000D4 +S315E078AA8000408000800004002000400000000000C4 +S315E078AA9000400000000004040040000410000000BC +S315E078AAA00090008040140040000004002010000070 +S315E078AAB00210000410000000008000400000420010 +S315E078AAC000002000000000800010000000001080E8 +S315E078AAD040800000022010100000100000000410F2 +S315E078AAE00040040000400080000000000044802020 +S315E078AAF000C00010002000108000000480000020D4 +S315E078AB0000200040000000000400400000008000C3 +S315E078AB1000001080000010009000000000000000A7 +S315E078AB200400400010004000100000100000000013 +S315E078AB30000000000000000080000430400000447F +S315E078AB408000804000201000000004C0000000442F +S315E078AB50800000000001102000000008004400009A +S315E078AB60040020000800400000AD33000C9280021B +S315E078AB702800000400000088001C0000080004009B +S315E078AB8004000800000C040000000000000000004B +S315E078AB900024080000000C4000000000400000227D +S315E078ABA000000800000008000000204402042000AD +S315E078ABB0000020000000200800000800480000009F +S315E078ABC00040000000000000000040000000002087 +S315E078ABD020000420002000840024200000000020CB +S315E078ABE0000000000000000400200004400000009F +S315E078ABF000040000000400040000000000000000EB +S315E078AC0000000000004000400040000200008000A4 +S315E078AC10000020100220000000100020064000000E +S315E078AC200000000000008020041000400000409002 +S315E078AC3000000240000000004000008080000080B4 +S315E078AC400010000080202000001000004010000274 +S315E078AC5002800000009000800000100000800084F0 +S315E078AC60200004000000000080400004800000001E +S315E078AC700040042010008004804440802080240036 +S315E078AC800000000000004000000000802000204026 +S315E078AC90000010000400000010008000040010801E +S315E078ACA044000040000010000000000000000000B2 +S315E078ACB00000004000008000100000000000000066 +S315E078ACC000600040000010000000001420800400BE +S315E078ACD000800020000000008800004000040100A9 +S315E078ACE00100515F000000004400000006002002E9 +S315E078ACF00004000200000040001004040000000098 +S315E078AD00404004000000000000000400002000003D +S315E078AD1020004400000000004800000000400200E7 +S315E078AD200400000008000000040800400400000069 +S315E078AD3000000000000804000000000000040000A5 +S315E078AD40000000002400040000000000000020203D +S315E078AD5000000000004024000000000000400000F1 +S315E078AD600000000000000000800000440030000091 +S315E078AD700000000000000000000000000000000075 +S315E078AD80000000000000004200000004000000001F +S315E078AD90C00000000014400060000000801002004F +S315E078ADA000200000000040000000000000000000E5 +S315E078ADB00002200004000010040240000040000079 +S315E078ADC00000041000000000000000000000001001 +S315E078ADD00000000000000000300000004080000025 +S315E078ADE0002000200000000400000400000000407D +S315E078ADF02000000080802440000020800040000091 +S315E078AE00040010001000108010000000840000009C +S315E078AE108000800420040004008000002080000088 +S315E078AE2080000000808040000000500000000004B0 +S315E078AE300000000004040000100000001000000488 +S315E078AE4000002000480400000000002000000040D8 +S315E078AE501800080000A000802081087B72008040FE +S315E078AE600000100000001000100000000008040048 +S315E078AE702000000800200000000000000024000404 +S315E078AE8000440000044004000000000000000420B4 +S315E078AE900004080000040000002000000000000024 +S315E078AEA028000000000000000400004800000000D0 +S315E078AEB000000000040020000000200000000000F0 +S315E078AEC00040040000C0008400800000000000001C +S315E078AED0000004000000000000000000000004000C +S315E078AEE00000000000000000000000000000048080 +S315E078AEF080000080000000000000000004000000F0 +S315E078AF000000009080020000040000200402200087 +S315E078AF100012240000000000201402400006000021 +S315E078AF20044000C000200080000400802052020027 +S315E078AF3000800010400410000000000200000010BD +S315E078AF400000204400800044800090440080004463 +S315E078AF500000000400000014800000048000400037 +S315E078AF60400000204000200084000000008000407F +S315E078AF70008000000000000400000004000080006B +S315E078AF800000800000401000400000000000000053 +S315E078AF90000000000480000000400010400000003F +S315E078AFA00080000020800000000000000000200003 +S315E078AFB0000000000000100080400000000008005B +S315E078AFC00008001010888000040000004018000097 +S315E078AFD000080000BB3700000000003204000002E1 +S315E078AFE00000000040000000000000000008440473 +S315E078AFF000000000000000000000000000000000F3 +S315E078B00008000000000000000000240000000000B6 +S315E078B0100000000000280004000804000400000096 +S315E078B02000220040042000400000000000000000FC +S315E078B030400000000400002000240020800020006A +S315E078B04080000400200004000000004000000000BA +S315E078B0500000000000040000000400040000004046 +S315E078B06000000000000080004000C0000000000002 +S315E078B070000000000000400440008000020002006A +S315E078B080502000000000020010000000000244009A +S315E078B0900000000000004010000000000000000002 +S315E078B0A080800000801080008000000000100200A0 +S315E078B0B040004040000040000000020000004000F0 +S315E078B0C080106000002040409000203000800040F2 +S315E078B0D00000008040400000004020004040000032 +S315E078B0E0006000400000A404008000004440800036 +S315E078B0F00400104004408000000000000084100046 +S315E078B10040001000400010000000101000004400DD +S315E078B11040001010000000400040000000400004AD +S315E078B120200000040000000000000000402000003D +S315E078B13000000000000000000008000000000000A9 +S315E078B14000088000140000000010040000F0CC0035 +S315E078B1502400000848000040085000000002100271 +S315E078B1600002000E000012000240022000000000FB +S315E078B170020000000000002000000200000802083B +S315E078B18000000002420028000000080040000000AD +S315E078B19000000200000004200440000C200000407B +S315E078B1A00000000000000040000000000000000001 +S315E078B1B00000000000000400040000000000000029 +S315E078B1C0000000000000000000000400000000001D +S315E078B1D00000000000604000100000400000000021 +S315E078B1E0000000000000000000400000004000027F +S315E078B1F000000000041010A4000000800040300039 +S315E078B20000C0000000002000000044004000040276 +S315E078B21000009400000200400000042000200400B2 +S315E078B2200002440042000400000000900000008024 +S315E078B2308000408044000012044000004400000092 +S315E078B24004209040040000000480004004000000E0 +S315E078B250000080000080200000440000802040103C +S315E078B260000000200000100400800080000000004C +S315E078B2700000008000000000000420800400040044 +S315E078B28010004400400000001000008080000000BC +S315E078B2900000800040000000000010200000001050 +S315E078B2A040800020000044000440000000040000D4 +S315E078B2B0000000000000000008000000000008849C +S315E078B2C0000008000000AC33000000000000001029 +S315E078B2D0000080000000080044000000000008003C +S315E078B2E00000000048000000040000002400000090 +S315E078B2F0040000004402000000004800000004005A +S315E078B300040000000000000400080200000040008D +S315E078B310000000400000000000000000000000008F +S315E078B320000000000000002000040000000000009B +S315E078B330000000000044000000000000000000006B +S315E078B340000000000000000000008400000000001B +S315E078B350000400000000440400000400040000003B +S315E078B360000000000404000420000202000000004F +S315E078B370000204004410A00000020000023002003F +S315E078B3808004900200800480006086000020040437 +S315E078B3900002000040000400000014001000048061 +S315E078B3A00000240400000200122040100080000013 +S315E078B3B0040000000400001004000000040000000F +S315E078B3C004000000040000000400A0000000000073 +S315E078B3D0808000000000000000000000000000000F +S315E078B3E0000000400080000000004040000050006F +S315E078B3F00000100400001000000000200000041097 +S315E078B40000000400000000300000000000048080A6 +S315E078B41010000000002000004010004400100000FA +S315E078B420000000000000400008000000000804006A +S315E078B4300800000010000000000C0040001000E456 +S315E078B440FE00800040068000000200000040000018 +S315E078B45000000010200000001020080000000C001A +S315E078B460000000040000200000200000200000001A +S315E078B47000042C00000000044000000020000000DA +S315E078B480000000000000000000000400004000001A +S315E078B4900400000000000004200000200000000006 +S315E078B4A000000000000400000080000000000000BA +S315E078B4B000000000002000000000200400000004E6 +S315E078B4C000000000000400000000000000000020FA +S315E078B4D000404000000000804000000000000000CE +S315E078B4E000000040000400020040C0002000800018 +S315E078B4F08000002000C040004020800200008000EC +S315E078B5000000800200008040000040001000000249 +S315E078B5100000500000000000008284008000008077 +S315E078B52000000002004000008200200000000000D9 +S315E078B53000800010000000400000000020000010AD +S315E078B5402000240000000020800020000000040095 +S315E078B5500400000000008000000020800410102025 +S315E078B560000010000000000040000000100000C05D +S315E078B57010000000008080008000840004008000D5 +S315E078B58000900000042000000000000000000000A9 +S315E078B59000000400000000000000200040000000E9 +S315E078B5A000400004000004080000100000000000DD +S315E078B5B0108010800000080050080068000800003D +S315E078B5C000100800000000004000100408000800A1 +S315E078B5D000000000000C000000204002000020007F +S315E078B5E0000008600C00080008000000000008224F +S315E078B5F0000002000C0000000800000800000008C7 +S315E078B6000000020002000000000008000000004090 +S315E078B6100240000000002000000400000000000462 +S315E078B6200000000000200000002400000000000078 +S315E078B63000000400000000000000000000000000A8 +S315E078B64000008440008000004000040020000000F4 +S315E078B65000000000000040000000000400200080A8 +S315E078B66000000000000000004004400000240000D4 +S315E078B6700600006000800000000000000000200462 +S315E078B680000000000000000400000204000000044E +S315E078B6908000001002024000000042000000002016 +S315E078B6A00200440000004080000000000000000036 +S315E078B6B090002000000000000000000040800400B8 +S315E078B6C0000000004000000000000000000050008C +S315E078B6D020000440000000804000000000000000E8 +S315E078B6E040000000800040000000808000000000FC +S315E078B6F00000000000002000040000800000400008 +S315E078B7000400040004200400000004002000400047 +S315E078B710202000040000041020A004081000840013 +S315E078B72020000000000000900004200000008480E3 +S315E078B73000FA0000344A4A0004180C023400080281 +S315E078B7400008001E04080800000C00280A000068BB +S315E078B75002040004060000040420082408244008B3 +S315E078B7600E4000080A202C02060000480C40000C27 +S315E078B770080044080E000208084604000400400C5D +S315E078B78048000008000040000000040000000020A7 +S315E078B790042004602400002400800024200480042F +S315E078B7A020000004000000200400000400000004EB +S315E078B7B000400000402404000000000440040440F7 +S315E078B7C00000408424C000008000000040000000B3 +S315E078B7D0000004000400020000167082C41004A081 +S315E078B7E0C0100432800036404422A044A002A0145F +S315E078B7F0061012448254548080404280000042040D +S315E078B8004086201482100400924090062094A2107C +S315E078B810124080025000324030C480561024040032 +S315E078B820100410C410C4244010040004008400807E +S315E078B83080240024108080202400A004A04004E026 +S315E078B84020840044A400800404000040000414002E +S315E078B85010441000001010E090008410100450009E +S315E078B860805004D084100400D40000C40000700036 +S315E078B870001000808040C02000904004045080048E +S315E078B88014C00480000420000020300044800014B6 +S315E078B890401454A82498008C8428201800100C00B2 +S315E078B8A01804A4188C108824080145A800244808B0 +S315E078B8B002409E0042A01A10400800104804102E5C +S315E078B8C00008004208000E06000800200002040086 +S315E078B8D000040020080460066008020E004C002090 +S315E078B8E044020800080000200800000000040A006E +S315E078B8F02C000800200640042A0C20204808400046 +S315E078B90000024024006000000000000004000044CB +S315E078B9100004A080202480842060040024000000B5 +S315E078B92020000000004000040004000000008000D1 +S315E078B93000600484004010400004400080C40004A5 +S315E078B940808000004040000400004000460000008F +S315E078B95082840096004610A4402010864006B0C641 +S315E078B960003046C0209002220080424200C0325029 +S315E078B9708000206400020080308002E2008200507D +S315E078B9808082009040C03044104280D0020080002F +S315E078B9901202800210C00070001080802010C0E093 +S315E078B9A000904020001080C020A000204000448015 +S315E078B9B02420C00040C004802420441400E4000021 +S315E078B9C0A0200410008040500050008000C00000A5 +S315E078B9D080C0100480001004800490800404102055 +S315E078B9E0540400106044100094008050000040C079 +S315E078B9F00400C4A014002420140024401404900405 +S315E078BA006000500440205040840040400408040818 +S315E078BA1004041000800008488404100C0000040038 +S315E078BA200490003C72000002020C1C5040000402B4 +S315E078BA3012181844408000060618180040000006E0 +S315E078BA400608484040000006442020000040000CEC +S315E078BA500E6000000000000E0E6440000000000C4E +S315E078BA60080040000000060C0C004040000202048A +S315E078BA700C60600000000008404440400406002066 +S315E078BA802000000000040424200080800004442084 +S315E078BA90A0800000040400202000000000040400D8 +S315E078BAA0000000000004040040000080000414C098 +S315E078BAB0C0000000000484C0C08000000000404060 +S315E078BAC0400000040600004080800006163030C052 +S315E078BAD0C0000004463030808040000606727080F0 +S315E078BAE0800002064650F08082000004C46460005C +S315E078BAF00202021494E0C0000002021414C0E0408E +S315E078BB000002221050C0C0000002063070C0C0C0EB +S315E078BB100004043070C0C04000044430A080804007 +S315E078BB200004646060C080000404446060C0800003 +S315E078BB301004C46060000080000444C0C080000047 +S315E078BB40001414D0C0000000101010C0C02000040B +S315E078BB50041410C080000004041010C0C000000473 +S315E078BB6044141080804000000444608000000004A3 +S315E078BB7024206000000000042460603000000004A7 +S315E078BB80046060000000000C0C002020040000181F +S315E078BB90188080000004243818808080EC00000249 +S315E078BBA00004005454000000003212405040E00493 +S315E078BBB00012161818000004040A0C480841400CD4 +S315E078BBC0000405002800000C04640400000000006E +S315E078BBD0004C44000002001000A820201000800EDF +S315E078BBE00C042C204002000404406020600400200D +S315E078BBF000404000600202202040604000040024BB +S315E078BC00046060818008000001808800400400605C +S315E078BC10602020000004004060402002001400C04C +S315E078BC2022203000000404C48480E000000000C4D0 +S315E078BC30A4C0E004002000004400200000000400D6 +S315E078BC402080800000162450708100080026078046 +S315E078BC502880800606301040E08080040416048050 +S315E078BC6030000014042466203000801416E0D000FA +S315E078BC700000000606D454606006000212C040C098 +S315E078BC80E002003406C0B0C0C004043424E0A00169 +S315E078BC90C00C0404252028808004047444D0600015 +S315E078BCA0800000704410408280000060426070003E +S315E078BCB0001000A004E00000000414E4D4A080049E +S315E078BCC0003000909440C000003430D0108080047A +S315E078BCD0043434D0D081800C0420019098808000A0 +S315E078BCE0002000404080800404303020A082801418 +S315E078BCF004E4464060008014143024008000001C80 +S315E078BD000C0088A0A000002810004C80A004041C39 +S315E078BD100488880000E5C100000206064410404029 +S315E078BD200202121210104040040416121800404025 +S315E078BD3000000C0A0848404000040000002000009B +S315E078BD40040C2446000000000404640000000000AF +S315E078BD5000000028200000000004042060000002B3 +S315E078BD6006064464206000000800404000000606AD +S315E078BD70202040600040000000002020C0C0000481 +S315E078BD80040080A00000000020206060000000042D +S315E078BD902400204000000404204400000000000055 +S315E078BDA0A4E4A08000000000A484E0C000000000C5 +S315E078BDB040004040000024202000808002040020DB +S315E078BDC0101080C000000606002080C0060650509D +S315E078BDD08000800004064654604000000404C404F1 +S315E078BDE0000000001414908000000000060414049B +S315E078BDF02020000212020000C0C000000434B0C067 +S315E078BE0080800404242490C0C04004040404B0B0C4 +S315E078BE108000040464740050808004044410405028 +S315E078BE2080800000C00020200080001074F080E060 +S315E078BE300000041454F48020000010100080800084 +S315E078BE4000000404E0E080800000141430F0800004 +S315E078BE5004041030B0B08000000004247070808054 +S315E078BE6004042000F07000000000646460200000A4 +S315E078BE700404E4B0800000000C1C90100000000080 +S315E078BE80100818188080040424348880000002F4AE +S315E078BE9000020006025C54000002020202405840AA +S315E078BEA04004001216180800000404080C0808403C +S315E078BEB0400404040400000000080844440000003C +S315E078BEC0000A084C4C202000000400000000200006 +S315E078BED0000C0C24080020000004040464202000F0 +S315E078BEE000080840000040020220200000004000E0 +S315E078BEF00004242000C0C0040404208080000000F0 +S315E078BF0000200040400000000020042040000000AF +S315E078BF10002040000000000000F0F4A0800000005F +S315E078BF2000E0C0E0C0000000000000000000002053 +S315E078BF30242040808004000020D0104000040400D3 +S315E078BF4020000080800606161640C080800604042D +S315E078BF5006802000000404202020200200141480AB +S315E078BF600000000202060644440060020002024035 +S315E078BF7000C0C000003424C0A000C004043434609B +S315E078BF80200040040404243030808004046454A003 +S315E078BF9050008004044050005080800404444440BB +S315E078BFA060000000149434C02000000414C4B48007 +S315E078BFB0A000001000809040C000041400E030003B +S315E078BFC00004041414F070808004040424B0300073 +S315E078BFD080000014341050000004002020B03000B7 +S315E078BFE00004046444406000000400A0B4C060002B +S315E078BFF00000109C1C2020000008184048008000B3 +S315E078C000001C0C88080100F4F300008286064418C8 +S315E078C01040400202000240404040000416160808FC +S315E078C020404004020C0C080840400006040000007A +S315E078C0300000080C4440000000000C0E640020204C +S315E078C04000000004200000200000000C2000002002 +S315E078C0500000020644242020000008080040000082 +S315E078C060020620200000400000000000604000004A +S315E078C0700004240400200000000040600000000076 +S315E078C08000004460402000000404402420200000A2 +S315E078C09000009490C0A000000000002040600000FE +S315E078C0A00000400000000000040440200000000486 +S315E078C0B000203090004004040602000080800606E6 +S315E078C0C01272A080800004040604604080000404B4 +S315E078C0D04000000000021414008080000202060688 +S315E078C0E004042000000202020000C0C0000004142C +S315E078C0F0A04080000404343400C000000404040442 +S315E078C1002020800004041464108000000000502091 +S315E078C11010000000000444240000000014000480AD +S315E078C120204000000414340420000000001040C0D1 +S315E078C130800000002424C0C000000404203010D021 +S315E078C14040400404241410108000000030102020B1 +S315E078C15000000004301020A08080000044440000F5 +S315E078C16000001414342020C000001008088880806D +S315E078C170000010085818000004040C1C08000100A0 +S315E078C1800E440002000E02407020000202121A40AD +S315E078C19058000000000824181800000404080C2051 +S315E078C1A000000000000000000000000800400800E1 +S315E078C1B00000000000424000400000000800000057 +S315E078C1C04000000000280C000002000404604820CB +S315E078C1D020000000000040404004042020000000D9 +S315E078C1E04000000004000040C00400000080000029 +S315E078C1F000000020204040000004000024004000B9 +S315E078C2000004002000404000000404602440000060 +S315E078C210000000E404008000000000004000000018 +S315E078C22000202400000080060224040020C0C0001C +S315E078C2300000028090000004040020200000000640 +S315E078C240041406800000000404044420200200045C +S315E078C25004D0D0404000001404445460A0000000AC +S315E078C260001040C0C000003404C0E0C0800404146C +S315E078C27004404080800404040400008080040404C0 +S315E078C280449000000000044064102080800404405C +S315E078C29060004000000000E0C040E000001404C404 +S315E078C2A00400A0000000008090808000001010E07C +S315E078C2B0B0008004041414F0F0008004000400B0A8 +S315E078C2C03080800000040030700000040420009084 +S315E078C2D01000000400606020600000000484940090 +S315E078C2E00000000400901C20200000001080C800A8 +S315E078C2F08004041C04800040008B270000020202C0 +S315E078C3005400000002020A0210100000040404003F +S315E078C3103800000000000C280040000000000020F3 +S315E078C32000000000080C00480000000004006404E7 +S315E078C33060200000080000006000000004040400AB +S315E078C3406000000204040444200000000800400075 +S315E078C35000000404002000004000000004240000EF +S315E078C36080000004040000A0000000002020000007 +S315E078C37000000004240040000000000400200000D3 +S315E078C38000000004044000000000040004A08000DF +S315E078C3900000000000004000040404000000800073 +S315E078C3A0020604000000C0800000062200000000BB +S315E078C3B004060000000000000406065440800000F1 +S315E078C3C004040404000000020404100400000000E1 +S315E078C3D0040454442020000000000000404000009F +S315E078C3E00434E0C000000404040440C000000404FF +S315E078C3F00404909080000404642420100000040073 +S315E078C40044000030808000044000400000000000D6 +S315E078C410D0D0A080000004041494E040000010100E +S315E078C420008080800000040440C08000000414147A +S315E078C43010108000000410141010000000000004B2 +S315E078C440000000000404002040C000000004000062 +S315E078C4504000000004001404000000000008048096 +S315E078C4602000000010000010400004040414185066 +S315E078C47000005D2300020004006020202000001206 +S315E078C4801A441800000000202C1828000004002820 +S315E078C490042020000004040004002000000808605E +S315E078C4A040000000000800480820600000080820E6 +S315E078C4B020006000000800202C0020000004002006 +S315E078C4C0400040000000000000000004000000404A +S315E078C4D060404000000004200040C0040000208056 +S315E078C4E000000000002000404000000000200460CA +S315E078C4F04000000000206040400000040020242036 +S315E078C5000000000000A0202080000000000000006D +S315E078C510000000202420400080060220045010000D +S315E078C520400000001080A0000004000002100080A7 +S315E078C53080040404068000000004040404606000BB +S315E078C540000404901040400000040400000000005D +S315E078C5500000020000C0C000002424C0E00080048F +S315E078C5600410004040000004040404909000800425 +S315E078C57004144410100000000050009090008004ED +S315E078C580044404004000001000547460E000001495 +S315E078C5900440202020000000008010000000000009 +S315E078C5A000E0B00080040414147070000004040005 +S315E078C5B020B03000000000107030708080040000F9 +S315E078C5C0009090000000006020302000000000908D +S315E078C5D090804000000410949C000000000818C485 +S315E078C5E0C800C000040C04C0004040A893000002D4 +S315E078C5F00202240000200202080204600000020021 +S315E078C60020002820000000002828006000000003B1 +S315E078C610042000600000080C2408000000000808E8 +S315E078C6200000400000000808003060A00000000824 +S315E078C63004206020000000040000004000000800AC +S315E078C6400020000000040000406040400000200028 +S315E078C650604040400005040800400000000040408B +S315E078C6604040000000004460406000000002602026 +S315E078C67020A00000000424200060000004002020B0 +S315E078C680002000000000002000400404262200205C +S315E078C690000002060400301040000001260A00601F +S315E078C6A00000040422420020800000040640400096 +S315E078C6B0000000040404408000000004000000004C +S315E078C6C000000004040000000000000400204000A0 +S315E078C6D000000400A0800000000404000080000050 +S315E078C6E00005140880C080000004041010300000B3 +S315E078C6F00000201010900000000624004080000022 +S315E078C7000010303020200000040020006060000037 +S315E078C710000000E000000000202020A08000040453 +S315E078C720343020200000000530183060000000002A +S315E078C730301090108080040410149090808000026D +S315E078C740001010800000101094900080000010080F +S315E078C7509090A08000001004543040400404040017 +S315E078C760585000C0967A0000000200484000000069 +S315E078C7700018004820000000820800180000000039 +S315E078C7800000000040000000010000204040000862 +S315E078C79000006000000000080048240060000008FF +S315E078C7A000003800A00000000004286000020000C5 +S315E078C7B000084000600000000844200040000000C7 +S315E078C7C020006000000000042020000080000120A6 +S315E078C7D00800E0400004000020006000000004202B +S315E078C7E04000400000000204402080800000000401 +S315E078C7F04040000000040000C420800000000044AF +S315E078C800204000000420064060800002023400F0F8 +S315E078C8100000000001001C80E0400006006004C0D3 +S315E078C820608000000040000070008000002040102A +S315E078C830C080000000448080400000000040D0C006 +S315E078C84080000012048020600000003000C0D00034 +S315E078C850C0000000004040C0000001100800C04061 +S315E078C8608000004040600000000000004020C000EA +S315E078C870800002204050A0800000006080A0400048 +S315E078C88000040024C080600000000000E0E00000C2 +S315E078C8900010202040000000042004006080400062 +S315E078C8A00120080060C00000002000804000800081 +S315E078C8B0000400000000800002005000C080000004 +S315E078C8C0008040804000000000800000800000008A +S315E078C8D004402020000400003480100080D440001A +S315E078C8E000000008180040008002020C08200000D2 +S315E078C8F00002000000004000000000080000000090 +S315E078C900000300080040000000080800000000006E +S315E078C91000000A00000000000006081040800000D1 +S315E078C920020C000000000000000404402000000033 +S315E078C9300004002000000000002000004000000411 +S315E078C94000000040400000050008004000000000BC +S315E078C95000600000000000000000200000000006F3 +S315E078C9600030008000000004006020000000000431 +S315E078C9700020000000000004002000000004000011 +S315E078C98000000000000006001000C0000001022848 +S315E078C99010C0000000000000100000000000020057 +S315E078C9A00000800000020010008000000200140001 +S315E078C9B08000000200000000A0000002001400E001 +S315E078C9C08000000202001080000000000010008065 +S315E078C9D00000000100380040000000000000008000 +S315E078C9E080000000042000000000000200100080B3 +S315E078C9F00000000404800000000000001000400001 +S315E078CA000000001410208000000000000080800004 +S315E078CA1000000010108000000005001810C000002B +S315E078CA200000005000000000000000204080000078 +S315E078CA3000060030208000000004040000000000BA +S315E078CA400004040020000000000410200000000428 +S315E078CA500000100000007A6B000403031C1C606081 +S315E078CA6004000303981C40640000070738384446FE +S315E078CA70000007073838C6C408000607303884C48B +S315E078CA8001010E0E7070868601010E0E707084803C +S315E078CA9001010C0E6070048403031C1CE0E00000C6 +S315E078CAA003031C1CE0E000000303181CC0E400004C +S315E078CAB007073838C4C0000007073838C4C0000014 +S315E078CAC00607303884C401010E0E70708480010147 +S315E078CAD00E0E7070848001010C0E60700480030382 +S315E078CAE01C1CE0E0100003031C1CE0E000000303DC +S315E078CAF0181CC0E0000007073838C0C400100707E4 +S315E078CB003838C0C400000607303880C001010E0E00 +S315E078CB107070828201110E0E7070808001010C0EA9 +S315E078CB206072009003031C1CE0E0001003031C1CF9 +S315E078CB30E2E000000303181CC0E01000070738386D +S315E078CB40C0C0100007073838C0C010000607303874 +S315E078CB5080C011110E0E7070808411110E0E7070F7 +S315E078CB60808411010C0E6070049003031C1CE0E0D5 +S315E078CB70101003031C1CE0E010100303181CC0E43B +S315E078CB80000007073838C4C0100007073838C0C037 +S315E078CB9000000607303884C001010E0E707084807C +S315E078CBA001010E0E7070808001010C0E60700080BD +S315E078CBB003031C1CE0E0000802021C1CE0E0080805 +S315E078CBC00202181CC0E0080806063838C0C0091109 +S315E078CBD01A0014420014140000141000001000002B +S315E078CBE000101040420000440400000000000044B9 +S315E078CBF0000800400000000000000000000040044B +S315E078CC0000400000040000000000400004400004FA +S315E078CC1000004004004040000000000000020000F0 +S315E078CC20000000000040420000000400000400001C +S315E078CC30000004000000800000808000008004008E +S315E078CC400004040000040000000000000004000076 +S315E078CC50000004000004000000000000001000005E +S315E078CC6080000080800000C00000004000000000E6 +S315E078CC7000000000C40010C00010000004000000AE +S315E078CC800000000000001080000000000400300082 +S315E078CC90806040040400000000400000142020007A +S315E078CCA0008000001400000000004004000000004E +S315E078CCB000400010000040000044C43020004000EE +S315E078CCC00044441020008020008404307000004046 +S315E078CCD0400404105000004040000410400000403A +S315E078CCE04004104060000060C01010C000001000E2 +S315E078CCF000000000001000004400000000000084FE +S315E078CD004000000040000040000000000000000401 +S315E078CD1000000000000010048010708080701080A1 +S315E078CD2080302080042020041020A010108080100D +S315E078CD3010A0A01010A0A01010A000100880000885 +S315E078CD402000002028008028DF3000000000000066 +S315E078CD5000000080000000000000000000000000F5 +S315E078CD600000000000000000400000000000000025 +S315E078CD7000000000000000200080000000000000B5 +S315E078CD800000100000000000000000000000000035 +S315E078CD900000000000000000000020000000000015 +S315E078CDA00000000000000000000000000000000025 +S315E078CDB01000000000000080000000000000000085 +S315E078CDC00000000000000000000000000000000005 +S315E078CDD00000000000000000000000000080000075 +S315E078CDE000000000000000000000000000002000C5 +S315E078CDF00000000000000000008000000000000055 +S315E078CE000000400000000000000000000000000084 +S315E078CE1000000000000000000010000000000000A4 +S315E078CE2000000000000000000000000000000000A4 +S315E078CE300000000000100000000000000000000084 +S315E078CE4000000000200000800000000000200008BC +S315E078CE5000000000000000800000000000000000F4 +S315E078CE600000000000000000000000000000000064 +S315E078CE700040000000000000000000000000000014 +S315E078CE800000000000000000000000000000002024 +S315E078CE900000000000000100000000000000000033 +S315E078CEA00000002000000000000000000000000004 +S315E078CEB000000000000000000000000000000040D4 +S315E078CEC000EC8900200000281040020000000000F5 +S315E078CED00040000000320020000200001004040048 +S315E078CEE04004C008000000842000042004004000CC +S315E078CEF0440004604020842000442008002000009C +S315E078CF002000000008200000000400200030002007 +S315E078CF1000202040004000000004088000040080E3 +S315E078CF200400408040A00000A40000C00400200077 +S315E078CF302004200004000060000080040000400027 +S315E078CF40000020000020000040000084000040142B +S315E078CF500000200000404400C00000D040804080BF +S315E078CF6020400040400200500040802000A004802D +S315E078CF7000C0A0000080008000004420002010A0BF +S315E078CF80000200C00000C000E0004420000040003D +S315E078CF9000004024028428803000408022401080BF +S315E078CFA00080004000008020004000102040800093 +S315E078CFB0004000F04010A040A01080000000A000E3 +S315E078CFC0000040A00040A00470000010C0002004DB +S315E078CFD02040200000C06000208000808000A00013 +S315E078CFE08840144040208000400080001000008097 +S315E078CFF0C00000A4C02020100040004400000000DB +S315E078D00000800000A0008000200080000080C01032 +S315E078D010000020000044000000080000008020C0E6 +S315E078D02080080008800000D008802000008848004A +S315E078D0308000000800004008009066C500200040A7 +S315E078D04000500000020000204040000080220000EE +S315E078D050001200081004008004004000040000007C +S315E078D060000020002000000044040040200040003A +S315E078D07024000000800000000000600000000C2022 +S315E078D080040040000000102000000060000040002E +S315E078D090000004002000000000000010404000007E +S315E078D0A00000C000800000002000000400000000BE +S315E078D0B0000080080020000000200060008060000A +S315E078D0C000004000A00080800820042000000000D6 +S315E078D0D044C000000000408020008000000250102C +S315E078D0E04000404000A0000094200020000020008E +S315E078D0F0C08000040000202010820040000000106C +S315E078D1008030404020000000000040043006608017 +S315E078D110002010C0000002800000000040002020BF +S315E078D12000000000400020801000000030800008F9 +S315E078D1302010800000000000008000800040008021 +S315E078D14000100000046080002040000020400000CD +S315E078D150208000004000008020804090000020A0E1 +S315E078D1600080000000000000008050000080601021 +S315E078D1702040000000204000012000000020000050 +S315E078D1804420000000800010000040800000400449 +S315E078D1900000400000000000800800004800801091 +S315E078D1A00000808000000040080080400808000009 +S315E078D1B00800000EFC0000000820000000000000D7 +S315E078D1C00000000000201000200000200000201061 +S315E078D1D028000004C8200000C004000000040064B1 +S315E078D1E0000000400004002000804004280010245D +S315E078D1F000000000088000200000040020000420E1 +S315E078D2004000002400002000004000000880040070 +S315E078D210C000000400808420400024000040000420 +S315E078D2200000240000200400402000008400000074 +S315E078D23000400000100000000000008004000000BC +S315E078D24050040000000040040000000000D0008098 +S315E078D25000406000004000200000000000A0400090 +S315E078D26000008040800000840000400060000000FC +S315E078D27000800000009000404000800400044000F8 +S315E078D28040808000400080000820000000006000B8 +S315E078D2902810800000000002800080401080004066 +S315E078D2A00000004080404010408000200080000070 +S315E078D2B0A04020000060800014206000100010007C +S315E078D2C004002000001000804400200000800080E8 +S315E078D2D000000810044000500000005000A0A010A4 +S315E078D2E00080000080340000000000004004000068 +S315E078D2F00000008000404080008000008000000050 +S315E078D30040A000002000000400000800000000C0F3 +S315E078D310204000800000400080400800200008801F +S315E078D32000100020000000002040C810CDD5000095 +S315E078D3301000100010000004000200500000020007 +S315E078D3400000200002020000000000000020000833 +S315E078D350000000048060000428201000A00000008F +S315E078D360000000000002000020000020000000001D +S315E078D3700800000000000000000040000004000003 +S315E078D380000000000000040020001000000000000B +S315E078D390000000000020000010008020000000005F +S315E078D3A04000000400000020400000000000040077 +S315E078D3B06400000004000040100000000000000057 +S315E078D3C044000004000000408000000000004000B7 +S315E078D3D00000400000800084000000000020800407 +S315E078D3E000008000040040000404000000002000F3 +S315E078D3F0608040800040000000000000008000006F +S315E078D400000000000000400004C400400000000076 +S315E078D41000C00000008000008004002000240000A6 +S315E078D420008000000000000000000004000000001A +S315E078D43000000000000040400000000000000024EA +S315E078D44000000000004000400400C0200080000496 +S315E078D450000040004000400020000024002000004A +S315E078D4600080000420C020000000000000000000DA +S315E078D4700000C0000010802000805080209040108E +S315E078D48000400400000010000000100020005888DA +S315E078D49060001820000480004040000440400810F6 +S315E078D4A000004040808A1A002000002040000000FA +S315E078D4B000040000000000000000000000201000DA +S315E078D4C0000000100000000000000000120002409A +S315E078D4D00080000004000032080000000000000030 +S315E078D4E000000000000008000000200000000200B4 +S315E078D4F0204000006000000420104000004000203A +S315E078D50000400060C00000000000000000800000DD +S315E078D51000000000000084000000000000600000C9 +S315E078D5200000000000440000000040008000400059 +S315E078D5300004000000040040000000000000004005 +S315E078D5400000000000000000000000006400000019 +S315E078D550000000C0004000000040000040000000ED +S315E078D56000200000004000C000000000000000003D +S315E078D5700000000400004000000000400040000089 +S315E078D5800040000420000000400000008000000019 +S315E078D5900000800004000000000000006000000049 +S315E078D5A00000000000000000000000040000000019 +S315E078D5B00000000000000440000000400000000089 +S315E078D5C000200020000000402000200000008000BD +S315E078D5D000442000000000004000000080000000C9 +S315E078D5E00000000400400000040000000400600031 +S315E078D5F00000000000002000200000000480000009 +S315E078D600200004C000000000000000004000000098 +S315E078D6100080000080000000200000000000396DE6 +S315E078D62000102020100000000000000000401000EC +S315E078D6300200000000002202000000000000002046 +S315E078D640000008000002940022040820102004124A +S315E078D650000000000000000002102000002000001A +S315E078D6600008000020000000004000004000200094 +S315E078D6700030000000004000240020102040000028 +S315E078D6800000000000800020000010000020000468 +S315E078D6900000400000400400002040000000400008 +S315E078D6A00084000040000000404010000000004088 +S315E078D6B000004000000004004040800000000000C8 +S315E078D6C040000000004420008080044000004020B4 +S315E078D6D080004000800044004000040000400020C4 +S315E078D6E0400000C00080000040000000000000809C +S315E078D6F000000040000040400000004084204000E8 +S315E078D7000000408000000080008000800000240453 +S315E078D7100000000000002000000000000000040087 +S315E078D7200000000400000000400000000000000057 +S315E078D7304084000040000000002000008000204087 +S315E078D740800000204040040040042000202400208F +S315E078D7500040000000008020000000000400400047 +S315E078D760000400C000000430800020801000A0D0C3 +S315E078D7700020100000008000100000C4100020484F +S315E078D780108860001800000004A0004000008008BF +S315E078D790001000000000C0FED80000081008402005 +S315E078D7A000400000000000000450000840005000EF +S315E078D7B02800001408008000400884020020040055 +S315E078D7C024020000024002E042084000E00820001F +S315E078D7D000000040000000280040220000000244DB +S315E078D7E04020006060002400A04000001040001057 +S315E078D7F000200020006060000000A0040020208067 +S315E078D800200000002000200000408000002000007A +S315E078D81060000460040040000004440044200000F6 +S315E078D8200000000000000440000000004084000092 +S315E078D8300840000804004000402040000024804072 +S315E078D8406004000040002040800020000402408010 +S315E078D8502000C000002084003000C0000040200492 +S315E078D860204000044400400000000020004440309E +S315E078D8700440004040800000800000404000924034 +S315E078D880004000D060140000408004800040A4107E +S315E078D8900000A0000000600000C0C0200000C000CA +S315E078D8A0006000400400000040044400002040048A +S315E078D8B040000000006040000000800000C00040AA +S315E078D8C0104000800040004000C0C0004004C00026 +S315E078D8D000008440000080000084906000804080F2 +S315E078D8E00010800000000004001000200040400096 +S315E078D8F040208000000000004020A00080002480C6 +S315E078D9002080400008800080E00008008040884061 +S315E078D910EFE600000820900000000000000010000C +S315E078D9200000000010020000000800000008000077 +S315E078D9300000000200000000000000000000000087 +S315E078D940A000004000008004200000000080002055 +S315E078D950080000002000000000000000200000041D +S315E078D9600000800000400000100000000000000089 +S315E078D9704000008000000000002000200000200029 +S315E078D9800000400000000000004020000400000095 +S315E078D9904000006000000000000000000040000049 +S315E078D9A00000000000008000000000000000000099 +S315E078D9B0800060000000000000800400000060C085 +S315E078D9C000000000000020408000000000200000F9 +S315E078D9D00000000000000004000000400000004065 +S315E078D9E0004000040000040000000400000040004D +S315E078D9F00000000000004000800000004040040085 +S315E078DA000000000004000080040000000000000030 +S315E078DA102000808000000000000000000004000084 +S315E078DA200000000000000000000000000000400058 +S315E078DA30000000000000000000401000002000C058 +S315E078DA400000000000000080000000844020000014 +S315E078DA5000008000900080000000100000000004C4 +S315E078DA600010800000000000400020C00000004068 +S315E078DA7000002040008000008040880040000000E0 +S315E078DA800000000000C00040006B81000000080044 +S315E078DA90402000402000000000000004002800003C +S315E078DAA0400000001000000000000840040020005C +S315E078DAB004000400000000400040400000004008F8 +S315E078DAC00000000040000000000000000200440072 +S315E078DAD000400000004000004020600000000000A8 +S315E078DAE00000002020040000000000000044002030 +S315E078DAF0000000800000000000000000A0000000A8 +S315E078DB00000000000000040000000004000420404B +S315E078DB1000400000000024004004400000000400BB +S315E078DB200000400008000004004004004010042093 +S315E078DB308000000000000000200000800000040261 +S315E078DB400000000000C000000084100000C0400023 +S315E078DB500020806000040000000000002000000043 +S315E078DB600040000000400080000000800044000093 +S315E078DB7010024000100400008000C0004000004021 +S315E078DB8020000000008000000040000040000040D7 +S315E078DB908000000000400000000000004000000027 +S315E078DBA0000400400000000020000000800000C073 +S315E078DBB040000000000000000000400000208040A7 +S315E078DBC040004000000000000000000000400040F7 +S315E078DBD000400040000000008000000000004000A7 +S315E078DBE00000400000000000000000000000000097 +S315E078DBF004002000000000080800802008000000EB +S315E078DC0008800B900050A0004000000000800000E3 +S315E078DC1000000010400000400018002000040000DA +S315E078DC200000800000008040000000A002000000B4 +S315E078DC300200020A00000020004000000000000018 +S315E078DC400000004000000000000600600000006070 +S315E078DC500000000002000210008000004000006032 +S315E078DC60002000000020000000A0000000008000F6 +S315E078DC700020002000000000202000000060000066 +S315E078DC8000080000200000000400000004200000E6 +S315E078DC900000000000044000400048000840000012 +S315E078DCA000000000000000000000404020008000F6 +S315E078DCB000000000002000000000000020200000A6 +S315E078DCC000000020000400000000000000000000D2 +S315E078DCD044000020000000004030004000000000D2 +S315E078DCE00000000000000000000040008000800096 +S315E078DCF03000000000800000000010800000200066 +S315E078DD0000000000400020000000400060000000B5 +S315E078DD1000000044000400200000400000000020DD +S315E078DD2000400000000000000000000000800000D5 +S315E078DD304000000080C00000040000000000000001 +S315E078DD400080000004002000008000000080400091 +S315E078DD500000000000200000000000000000000045 +S315E078DD60000000400020800000200000000000C095 +S315E078DD700000C00040000000000000535D00A08075 +S315E078DD80002008002200000000000E0000000008D5 +S315E078DD9000000620000000000000000000060200F7 +S315E078DDA000000620804420000008020804000000F5 +S315E078DDB008002000000400000400002000000000B5 +S315E078DDC00000000A0000400020002000000000006B +S315E078DDD00000000000002200024000000000200061 +S315E078DDE000000000000000000000000020040000B1 +S315E078DDF000000000040000000000000400000000BD +S315E078DE00000000000400000000000000040040006C +S315E078DE10000000000004400000000004000000005C +S315E078DE20000000000440400000800000000400008C +S315E078DE30000000800000440000000004402000005C +S315E078DE4004204000C42040004080000020004000CC +S315E078DE5040000440000000000000204000408000C0 +S315E078DE6080000000400084200000042004000400C4 +S315E078DE7000000020000020000000002000000400E0 +S315E078DE8000000000000000040004000000400000EC +S315E078DE90000040000400000000004000040000009C +S315E078DEA0000000000400000004000000000000000C +S315E078DEB00000000000000000000000000000000004 +S315E078DEC020000000000000A00000000410240020DC +S315E078DED000004000000000400000400000000040E4 +S315E078DEE000008000402008504000400000004000DC +S315E078DEF040000080918A00001000000200000000D7 +S315E078DF000000001000000010200200100020002021 +S315E078DF1000000004080000000000000040020080D5 +S315E078DF20040000000000200000200000000000004F +S315E078DF30000000000004080400000000040000006F +S315E078DF40000000440000000000000000000000002F +S315E078DF50000400000000000000000000002000003F +S315E078DF600020000000000000000000000000000033 +S315E078DF700000004000000000000000000040004083 +S315E078DF8000000000000040000004C000000000002F +S315E078DF900000400040000404000400000080000017 +S315E078DFA0000040800000008004000000400400008B +S315E078DFB000800040008000000000000000000000C3 +S315E078DFC0800004000000040000000000004000002B +S315E078DFD080000000000000000000008000000000E3 +S315E078DFE000000000000000000000040400000000CB +S315E078DFF000000000000400000000000400000000BB +S315E078E00000000000000004044000400000000044E6 +S315E078E0100000000000000000000000000000400062 +S315E078E020004000000000000000040000000400004A +S315E078E03000040000000400000000000000800000FA +S315E078E040000000000000000000000020000004202E +S315E078E05000040000002004008000A00040000000DA +S315E078E06000000000000400000400000000D5050070 +S315E078E070000000000012000000000200020000002C +S315E078E080000000000000000000000004002000000E +S315E078E09020020002000200000000000400220000D6 +S315E078E0A000000000000200002000000002000000EE +S315E078E0B000000000000000020000004000000000C0 +S315E078E0C00000402020000020000020000000200012 +S315E078E0D000000004000000042000000000000000BA +S315E078E0E0000020002000000004000000000000008E +S315E078E0F084000000000000000400400000000000FA +S315E078E100000004000000000000400000000000006D +S315E078E110000000000000000000000004000000009D +S315E078E1200040800000000080000004000000000449 +S315E078E13000408000000400000080000000C000007D +S315E078E14080000000800000000000000080040000ED +S315E078E150000000000000000000000000000000045D +S315E078E1600000000000000000000000000000000051 +S315E078E170000004200000000000002000800000007D +S315E078E18020000020000000040000000000040000E9 +S315E078E190000000000000000000600000000000447D +S315E078E1A000004000000000000000000000102000A1 +S315E078E1B0800000000040000000000000142080008D +S315E078E1C000000020000000000000000020000000B1 +S315E078E1D0000000800000000000000000000808044D +S315E078E1E000000000400093790086080002040000F1 +S315E078E1F00012081000000000000000080000080483 +S315E078E2000002080002000020000000400000004004 +S315E078E2100004020002000420020020000608002024 +S315E078E2200000000000000000002000000020000050 +S315E078E23000000000000002402000420002000000DA +S315E078E2400000000000000000400000002000000010 +S315E078E250000000000400000000000000000000005C +S315E078E260000000000000000000000000000004004C +S315E078E2700000000000044000000004000000404078 +S315E078E28000000000000000400004004000000000AC +S315E078E290000000000000008000000004000000009C +S315E078E2A040000000400080000000042000000000EC +S315E078E2B0000080400000000040000080040000403C +S315E078E2C00400000000000000000000008020040048 +S315E078E2D000000020000000002000000000000000A0 +S315E078E2E00000000000400424000000000020000048 +S315E078E2F000004000000400008000000000000000FC +S315E078E30000000020400000200000400000000020CF +S315E078E310000000000000400000000000000000005F +S315E078E320600000804000808010000000000000005F +S315E078E3300044000000000020000400000004000013 +S315E078E340008000200000002000200008002400283B +S315E078E350000000000800040000008000400000CFC4 +S315E078E360CA0000000200000000080000000000007B +S315E078E3700008000000000000080208000A200020DB +S315E078E38048000020000000000000000000000000C7 +S315E078E3900200000008004000000000402000000075 +S315E078E3A0000000600020000000004000002000002F +S315E078E3B0000000400000020000000000000000209D +S315E078E3C000000000000000200020000000000000AF +S315E078E3D000200000000000000000000000040000BB +S315E078E3E0000004000000000000000040000000008B +S315E078E3F000000000000000000000000400000000BB +S315E078E40000000040000000000000000000000080EE +S315E078E41000C00400000400000000000000040000D2 +S315E078E420800400004004000000040080000404003A +S315E078E430000080000000000000000000008000007E +S315E078E44080400000000080000080000000000000AE +S315E078E450000000000000000000002000040000003A +S315E078E46000000400000004000000240000000040E2 +S315E078E47000A00004400020004020000000000000DA +S315E078E480440000200020000000000020400000004A +S315E078E490000000000040008000000000000000104E +S315E078E4A0008000000004000000000000204000002A +S315E078E4B0001080000000000040000000008000406E +S315E078E4C0000000804020000040100000000000407E +S315E078E4D00040000000000000EE6E00000000002022 +S315E078E4E00004220030000400005400040004100008 +S315E078E4F00400200000000000000400000004000092 +S315E078E50004000000400800000800004004000020F5 +S315E078E510040000000400002004000000020000224D +S315E078E5200000000002000020000000000400000067 +S315E078E5300000000002200200000000000020000039 +S315E078E54000400000000000002000000020200000CD +S315E078E5500000000000000000000000400004000019 +S315E078E56000040004000000000000440440000000BD +S315E078E5700000400000000040000400000000004079 +S315E078E58000000440000000400000040000000000A5 +S315E078E59000000400800000440040200000000000F5 +S315E078E5A000C0000440000000400000000040000089 +S315E078E5B00020000400002000000020000000000099 +S315E078E5C0000400240000040000400000000044003D +S315E078E5D00004400000000000000000000020000079 +S315E078E5E000000400000000000000040000000400C1 +S315E078E5F00000000020000404600020000000000015 +S315E078E6000000040004000400040000040000000098 +S315E078E6100480040044000000440000000400000088 +S315E078E6200004008000040000000000000000040000 +S315E078E63080040000800000000040000044000408E8 +S315E078E64040880008000008000000808040000480D0 +S315E078E65000688600600424000000000000000A00DC +S315E078E6600010000000280220200200000000400090 +S315E078E670080400000000000030008200000000047A +S315E078E680000000000000002000000000000000000C +S315E078E69002002804000402000000200000040200C2 +S315E078E6A000400000000000000000040000000000C8 +S315E078E6B000000000200000000000000000000000DC +S315E078E6C000000000400000000000000404000000A4 +S315E078E6D00000000400000000000000400000400058 +S315E078E6E00000000000000000000000800000000448 +S315E078E6F000040000000000000004000004000000B0 +S315E078E70000040000800040000480000000048000DF +S315E078E710000000008000000000000020000080205B +S315E078E720000000000000002440040400400000409F +S315E078E73040000000000000400400000000000040B7 +S315E078E7402000000000000000200400000000000027 +S315E078E7500020000000000000000000000000040037 +S315E078E760000000004000200000400000400040002B +S315E078E770000000000000000000000000000000003B +S315E078E78000000000000000000040400000000000AB +S315E078E790000000000040002000000000004000007B +S315E078E7A00000008020400000402000000004004087 +S315E078E7B000840008000000000000000040004000EF +S315E078E7C0000400080C0080000000E6B300080004AE +S315E078E7D00808240040200208000000000800000035 +S315E078E7E02000000008020000280000000000000079 +S315E078E7F0200000000000020000002000082400004D +S315E078E80000040A000004000000040000000000088C +S315E078E8100200000000200000000000004020000018 +S315E078E8200600004000000000000000000400000040 +S315E078E830000000000000000000000000000000007A +S315E078E84004C0000000004000000004000000000062 +S315E078E8500400040000000000000000000000000052 +S315E078E86040000000000000000000000040000000CA +S315E078E87040040000400000008440000000000000F2 +S315E078E88080004400800000000000800000804000A6 +S315E078E89040400400000004000000044000000080CE +S315E078E8A00000000000000480000080000000800086 +S315E078E8B0000000800400000004000000000004006E +S315E078E8C00040000000440000000000000000000066 +S315E078E8D0002000040000000000400440000000042E +S315E078E8E00004000000002004000000000020000082 +S315E078E8F00000000040040000000400000000000072 +S315E078E90004440000004400A0000400000004000075 +S315E078E9108004008000042000400010000000000021 +S315E078E9200004004080000000000000400000000085 +S315E078E9304888040000000000000000200000000085 +S315E078E940000044D0550002000000000000000800F6 +S315E078E95000500000000000001008000800000000E9 +S315E078E960040000002A0000000200000008042000ED +S315E078E970220044000400000806000000240000207D +S315E078E98004200000200000000020000020020000A3 +S315E078E9904000000020000200400000000002000075 +S315E078E9A00000200000000000004020000000002069 +S315E078E9B00020200000000020000020000000000079 +S315E078E9C000040000000000000000004000000000A5 +S315E078E9D00000004400000000000000400000000055 +S315E078E9E04000000000000040000400400000000401 +S315E078E9F000400400000000000000000000408000B5 +S315E078EA000000200000002400000020000000000044 +S315E078EA1000000000040000400000000000008000D4 +S315E078EA2000040000008000200000000020000000C4 +S315E078EA302000000000000000200000002400000014 +S315E078EA4020000400000040000400004000000000C0 +S315E078EA500020000000000000000000000000000434 +S315E078EA602000200000000040000000000000004088 +S315E078EA7000000000200400000020000000000000F4 +S315E078EA8004008000400480000000200000000000C0 +S315E078EA9000202000000000800020000000206004B4 +S315E078EAA0C0202000000000000000200080008000E8 +S315E078EAB0000008000000080000290100ED97001822 +S315E078EAC0060028020C20003A000200001A0008002E +S315E078EAD0180A10102E002C002A080428042608228A +S315E078EAE000620002244284A400082626002004005E +S315E078EAF0000408080020040020240002202C0000EE +S315E078EB00242002082620004000400000642000000F +S315E078EB100004000000002200000620200000040027 +S315E078EB2000400020000000200000002000002020A7 +S315E078EB30000000600000044400000040040000008B +S315E078EB400000040000400000440000040000444057 +S315E078EB50004084004000004000000044000044008B +S315E078EB6040004000000400400404C044808400046F +S315E078EB700000004080008400C48400008044208443 +S315E078EB804040A0044040A04004C004448040248033 +S315E078EB9000400044000000048000004080C000008F +S315E078EBA0200000008004400020002000200024049B +S315E078EBB00004000420040040200000002024000027 +S315E078EBC040200000640000040020048044040040F3 +S315E078EBD0040060400000006004002044202000200B +S315E078EBE000000000000000402004000000006400FF +S315E078EBF000402440004004400080648000C00480E7 +S315E078EC000000000040000000C400001420902000BE +S315E078EC10A000000064C42080048400400004000062 +S315E078EC20E0A0080440E00850084800084004084C92 +S315E078EC3080400000C0740700000E02000008440817 +S315E078EC4020125208000000080C201E000800022856 +S315E078EC5008002648002C00200020040000004284AA +S315E078EC60422000004428022440200A04402A002456 +S315E078EC70600020040220042804220A0002200020F2 +S315E078EC800462024000604020220000020200000494 +S315E078EC90020002200000000000200020002000246E +S315E078ECA000202000200000200020002080200400A2 +S315E078ECB00004000000000000440004000400440062 +S315E078ECC00440000044000440004004404000004016 +S315E078ECD00040004444000040044000440040040002 +S315E078ECE04004400480000000800440840440408072 +S315E078ECF004004084840044204084402440046084B6 +S315E078ED00044020044000400000C040A40044442071 +S315E078ED10844080244080C0000080400004A00480C5 +S315E078ED200020004400000044000400400400040091 +S315E078ED3020040400006004000000200020000000A9 +S315E078ED400064000400400040200400200024000015 +S315E078ED504000204020442044400000000000402449 +S315E078ED60000000444000040000040004008004A091 +S315E078ED7000008004800004A0004020800020040089 +S315E078ED80A00440000004A00020C40420002444002D +S315E078ED900460204040802040800408A00804A01049 +S315E078EDA0088008400C4040A80004402C0400C6F2D5 +S315E078EDB0000282020C0C206000040212181840400F +S315E078EDC00000040638280000000202062C2840409D +S315E078EDD0000006462030008000000E0E60600000DD +S315E078EDE000000E0E60602000000004246020000021 +S315E078EDF002020C28686020000202000060602004AD +S315E078EE00022200004000200002222020200000009C +S315E078EE1000002020200000000020202020000000B4 +S315E078EE200024202020800004040400000000000074 +S315E078EE300404004000008000040440400000000024 +S315E078EE4004444040000000000040C0404004040410 +S315E078EE5000004040000004040040C0C0C000044404 +S315E078EE6000008080C000040440C0C08000000464D4 +S315E078EE7060E0A080000004E4604040008000040484 +S315E078EE80C0C0C00000000404C0C08000002000803C +S315E078EE90C4808000000420A0A08000000404200044 +S315E078EEA000000000046420202000000004242000F4 +S315E078EEB000000000040420200000000004046060E4 +S315E078EEC020000000040464E0C000000004046060F0 +S315E078EED00000002000000040000004042080C0000C +S315E078EEE0000004040000C0C00000044400108080E4 +S315E078EEF0400004046020808000040424643020808C +S315E078EF00000004A46460000000000424E0E020002F +S315E078EF1000000C8CE4E0200100101808C0C0000066 +S315E078EF2004042828C0C080C1090002820208202093 +S315E078EF30404000003A1A5854406004041A162020DB +S315E078EF40000002022400486841400C0626011018A9 +S315E078EF5000C00C0E68686060000002026A6A604071 +S315E078EF6002001400E4620030008002026C686040BF +S315E078EF7000020404642020400000020040044000BF +S315E078EF80060626004020000004002000600001000C +S315E078EF900C046021002800400400646040208080F2 +S315E078EFA004044004400002001000C442401000000F +S315E078EFB0000044044000000004044044004004009B +S315E078EFC02000C0C4406000000400404000400400D7 +S315E078EFD00404C0C0C1C00C040001008800800000B1 +S315E078EFE044448000000004046464E0E08280140411 +S315E078EFF06466405000000404E4C4C0C00000000425 +S315E078F000E0A0808004000000C00000A000000000BE +S315E078F010E0A0808000000404404001000C04042550 +S315E078F02000280040000060604000000000004400D6 +S315E078F0302020020014048442001000800004440476 +S315E078F040202000000004444420600400000000040E +S315E078F0504060000424206040000000002400C0C026 +S315E078F060C1C0080424019018808000044064A0A000 +S315E078F0700080040064603030028010006066407082 +S315E078F08000800000E080E0E000000C0C60E8606062 +S315E078F0900400381080C4C0E000002424A8A880C00A +S315E078F0A0770C0082020E022020404002001A0A50B5 +S315E078F0B05840400000222028280000000000206800 +S315E078F0C048404006060222101080400E0E6A6860BC +S315E078F0D060000006066E4E4040000004044464007A +S315E078F0E00000000000686C40400202020220040042 +S315E078F0F000000000000000004002020026004040C8 +S315E078F100400004040400404040000024242000002D +S315E078F1100000042024004080800004004000400085 +S315E078F1200000000404004000000000040400000031 +S315E078F130000404004040000000000080C040400425 +S315E078F140040000000040000000000080C0C0C00459 +S315E078F1500404040000808000004040404000000441 +S315E078F160042040406080800404A44460200080004D +S315E078F17000C4E4E020000000008080E0E0000000C9 +S315E078F18000000040400000242000E0C0C0000004F9 +S315E078F19024000040400404242420200000000020BD +S315E078F1A0000040000000000444404000000404846D +S315E078F1B04400000000040464242020000004044491 +S315E078F1C044400000000000000000000404242440CD +S315E078F1D0600000000004242060C0C00404042420F9 +S315E078F1E020808004044460A0A080800004604030E1 +S315E078F1F030000000006440604000000000A4E4C0F5 +S315E078F200C000000808A08460A001001010C8804003 +S315E078F210400004202828280000F825000200020A89 +S315E078F2200404404000001A0A58504040040410068E +S315E078F23008000000000022224868404000002400D0 +S315E078F240303080800C0A48486060000000006A68C8 +S315E078F2506040000004006440002000000202604C38 +S315E078F26060400202000020246000020202020000F0 +S315E078F2700040020202060060404000042404204078 +S315E078F28040400000240400200000000424000060D0 +S315E078F2908080040400400040000000000404400040 +S315E078F2A00000000004040000000004044444004028 +S315E078F2B000000000C0C00040000000004040004070 +S315E078F2C0040004044040C080040404048080000004 +S315E078F2D000000000000000800400604040E000008C +S315E078F2E0040464406060000000004060E0E00000F4 +S315E078F2F000000040A0A00000000000404040000070 +S315E078F300000080E04040000004040000404004042F +S315E078F3100404002000000000200400400000000003 +S315E078F3202060606000000404206000400000000077 +S315E078F3300404E0E00000000044442060000000009F +S315E078F340000040000000202080A000000000042497 +S315E078F350E0A080C004040020A0200080040440647B +S315E078F360A0A0000004046460303000000404646403 +S315E078F370206000000000A000E0E000000808EC0C47 +S315E078F38060200000101080C8808004002020A8A8A3 +S315E078F3900000AD9E0000000A06000040400200181A +S315E078F3A00A40404040000022300808000000000291 +S315E078F3B0026848404000000020303080800A0848E3 +S315E078F3C04860400000000068484040000000004087 +S315E078F3D0600000000000004C40404002020606242F +S315E078F3E040000002020202004040000606060240A3 +S315E078F3F00000000400000040000000040400000063 +S315E078F4000000000400404440008080000040004056 +S315E078F41000000000004444004000000000040400BE +S315E078F42040000004000000400000000000808000FA +S315E078F4300004040000000040000000000000000026 +S315E078F440400400040480800000000400000000808E +S315E078F4508004040000404000000404040400000036 +S315E078F460000000204080000000000024204040009A +S315E078F470000000000000000000202040800000042A +S315E078F480000420404000000404042400000000004A +S315E078F49000404040000000000060000000000000EE +S315E078F4A00420600000000000000400A0E0000000F6 +S315E078F4B000444460200000000000000000000020C6 +S315E078F4C020A080000000002404004080800404200E +S315E078F4D0000000000004044460A0A08080000020C2 +S315E078F4E0401010000000006040202000000000205E +S315E078F4F000C0C0000008080040008000001010C876 +S315E078F50080000000042020282800000452008002B1 +S315E078F51000080000202000001A1A08000000000009 +S315E078F5201212282800000202200828280000020289 +S315E078F5302626000000800004280A2000000004083F +S315E078F5402E082000000000002020002000000002A5 +S315E078F5502400604000000000204420000000020003 +S315E078F56000404000020022040020404000002404CD +S315E078F5702000404000002404000000000000200441 +S315E078F5800060000004040004004000000404000069 +S315E078F590004000000000000000400000040444043D +S315E078F5A04040000000004000004000000400404079 +S315E078F5B0404004040404C08040C004040000808015 +S315E078F5C00080000044448000000004046424606005 +S315E078F5D080800404642400400000040480C080C075 +S315E078F5E000000000808040C00000000080000080BD +S315E078F5F000002020A0A08080000004040000000025 +S315E078F6000400202420200000000020204000000094 +S315E078F610000000002020000004046424004000007C +S315E078F620000004040020000000006464206000000C +S315E078F6300000000000400000242460400000000044 +S315E078F6400000C0C00040000000008080008000001C +S315E078F65020000000808004042404101000000000DC +S315E078F6602404006000000000E040606000000404CC +S315E078F67028288000000010004048C0C00000000044 +S315E078F6804040000061AB0000000800002020000048 +S315E078F690000A0A000800000000002028080000029E +S315E078F6A002002028280000020222220000800006BC +S315E078F6B0020E20002000000C040C0C002000000450 +S315E078F6C0040404200000000000000440600000000C +S315E078F6D00004004020000000000000004000020422 +S315E078F6E0202000000000000000002000000000005C +S315E078F6F00020000000000004006000000000040420 +S315E078F7000040000000000000004000000004040013 +S315E078F71000000000000404004440400000000000BF +S315E078F72040000004040400404040400404000080A7 +S315E078F730C0C0000404040480808080000000444057 +S315E078F74040000000042064606080800404246460E3 +S315E078F7502000000400C080E0200000000080C0A007 +S315E078F7602000000000004040400000040020A0C0D7 +S315E078F770C00000040400004040040420202020005B +S315E078F7800004042020004000000000000040400013 +S315E078F7900004042424202000000000040000000077 +S315E078F7A00000006444000000000000000000000053 +S315E078F7B00024240020000000000000202000000043 +S315E078F7C0000000A0A000000000000000008080009B +S315E078F7D0040424200000000000042020000000003B +S315E078F7E00004246040000000002000208000000033 +S315E078F7F01048400000000000004000000017A2001A +S315E078F800020000000000000000001A021810000054 +S315E078F810000010002828000000002020282800009A +S315E078F82000000404000000000400280C200000001A +S315E078F83004082E0800000000000000000000020224 +S315E078F840080A200440400000000024040000020278 +S315E078F8500200000000400200060600404040000436 +S315E078F8602404004040400000240400000000000426 +S315E078F87020044040000004040044404000000000BA +S315E078F88000000040000000040000000000000404CE +S315E078F8900404404000000000000000400000000042 +S315E078F8A0400040400400000400004080000004006E +S315E078F8B08080008000004040800000000400000066 +S315E078F8C040400000040404002020000000002040AE +S315E078F8D0202000000000202060E00000000080008A +S315E078F8E040C0000020204000404000000404404032 +S315E078F8F04040040400000000000000004040404022 +S315E078F90000000000602060600000040440002020D1 +S315E078F910000000000404C0E0000000006464206099 +S315E078F92000000000000000000000000080A0000059 +S315E078F93000002000A0A0004000002000A020008069 +S315E078F9400000200000008080000004041010000011 +S315E078F95004040000004000000000A00040400000E1 +S315E078F96000002C0C8000000000004048C0C0000079 +S315E078F97000004000000022FC00000000000808209B +S315E078F98000000008080020000000000010280800A9 +S315E078F99000020000000008000000010000400000BE +S315E078F9A000000008280000000008000800000000B9 +S315E078F9B00000000010008002020C080400404000BD +S315E078F9C000040444040040020200004020400004A1 +S315E078F9D0060404400040400400040440004040042B +S315E078F9E005040C004000000400444040400000005C +S315E078F9F0004400404000000002405040800000048F +S315E078FA000400004000000000000000000000000054 +S315E078FA100004200000000400000040000000000020 +S315E078FA2000000000000001040C80C0808000000027 +S315E078FA3040000000000004000040000000000600DE +S315E078FA401400800000040000202020000000004020 +S315E078FA500020200000000060200000000004000084 +S315E078FA6040404000000400000040400405000800E3 +S315E078FA7040000004040000404000000400004040DC +S315E078FA80400000040600100080000000000400C07A +S315E078FA90C0000000000440200000000000002000C4 +S315E078FAA00000000000A08000000404002020200070 +S315E078FAB000000100282060000000000000000080BF +S315E078FAC080000000003000000000020000008000A6 +S315E078FAD000000400006000000000000000208000C4 +S315E078FAE000000008200000000000000000000096FA +S315E078FAF09F000000000000200000000008000420BD +S315E078FB00000000040C00002800000000242A2000F1 +S315E078FB10000000010024000000800004240020207A +S315E078FB20000000080820200000000000003020A037 +S315E078FB3000020600240000200000060004202000D1 +S315E078FB400000000000206000000024000060004013 +S315E078FB5000040420402000400005042820400000EE +S315E078FB6000046000402000000000004040000000F3 +S315E078FB700402401000808000000000400000000091 +S315E078FB8000004000004000000000402000400000F7 +S315E078FB900000004040000000000040004000000106 +S315E078FBA00008004040000004400080008000000427 +S315E078FBB0206000E000000002241040808000000011 +S315E078FBC040044000000000040040400000000000CF +S315E078FBD040A0208000000400A0000000000400009F +S315E078FBE000000000040120282040000000000424E2 +S315E078FBF0000000000004002000000000000600304D +S315E078FC000080000000004020000000000000044072 +S315E078FC1040000000000000200000000000004000E6 +S315E078FC2000000400000000000000000100088040A9 +S315E078FC3040800000040000000080000040002010B2 +S315E078FC400000000200004080800000008020400034 +S315E078FC50000000008800A000000008004C2020404A +S315E078FC600000000000800040DEC400008000040C44 +S315E078FC700020000002021400200000000402282080 +S315E078FC8000000000000000080000000005000820E1 +S315E078FC904080000002000000000000000202000040 +S315E078FCA0000000000200100080000000080000005C +S315E078FCB000000002000040400000000204006000FE +S315E078FCC000000600000000000000000000000000D0 +S315E078FCD0000001000800400000000000000000007D +S315E078FCE00000000400000000000002001000800020 +S315E078FCF0000000000040000000000404000000005E +S315E078FD00000004002000000000040000000000006D +S315E078FD10040000000080000005040800C0800000B0 +S315E078FD200404004000000000000400000000000029 +S315E078FD300600500080000000040400800000000007 +S315E078FD4000000080000000000400200000000000B1 +S315E078FD500000000000000004200000000000010020 +S315E078FD600800000000000400000000000000000029 +S315E078FD700000000000000200100080000000000093 +S315E078FD8000000000000000002020000000000400D1 +S315E078FD9000400000000020000000000000000000A5 +S315E078FDA0404000000100080040000000000000002C +S315E078FDB00000000000002000008000000200300013 +S315E078FDC0800000000400402000000000040040C0ED +S315E078FDD00000000004002000000000040800C08055 +S315E078FDE000D749000883031C1C626200800303186D +S315E078FDF01C40600800070738384044000007073899 +S315E078FE0038C4C200000607303882C801010E0E7089 +S315E078FE10708A8401010E0E7070848441010C0E6044 +S315E078FE2070048003431C1CE0E2080043031C1CE0DA +S315E078FE30E000000303181CC0E0000007073838C26A +S315E078FE40C0000007073838C0C000000607303880A1 +S315E078FE50C001010E0E7070808401010E0E70708004 +S315E078FE608001010C0E6070048403031C1CE0E0043E +S315E078FE700003031C1CE0E000000303181CC0E40048 +S315E078FE800007073838C0C0000007073838C4C00014 +S315E078FE90000607303880C001010E0E707080800150 +S315E078FEA0010E0E7070808001010C0E607000800388 +S315E078FEB0031C1CE0E0000003031C1CE0E0040003E4 +S315E078FEC003181CC0E0000007073838C0C0002007D8 +S315E078FED0073838C0C020000607303884C001010EE4 +S315E078FEE00E7070808021010E0E7070848001010C96 +S315E078FEF00E6070048403031C1CE0E0040403031C16 +S315E078FF001CE0E000000303181CC0E4000007073893 +S315E078FF1038C4C0000007073838C4C4000006073084 +S315E078FF203884C401010E0E7070808401010E0E7063 +S315E078FF3070848401010C0E6070048003031C1CE05D +S315E078FF40E0040802021C1CE0E004100202181CC05F +S315E078FF50E4000006063838C1C50857E60018000000 +S315E078FF60101002021010C240100000001810400075 +S315E078FF700010000210000444000000020000400077 +S315E078FF80000002081040000000000A00404000002F +S315E078FF902020000060400000200000000000000003 +S315E078FFA02022080060000000002200002000000007 +S315E078FFB00000002000002020020020000000202021 +S315E078FFC00000200000002020000020000000202013 +S315E078FFD0000420008000000000000000000000001F +S315E078FFE004040000000400000400004000004080A3 +S315E078FFF0000000C00000404400004000000000001F +S315E0790000000000C0000044C000000000000000804D +S315E079001000000000004080000060000040008000A1 +S315E079002020608000404000004080000000C0000071 +S315E079003040800000008004000000000080C00000DD +S315E079004000000000C0402020800020204040202091 +S315E07900500000000000002020000040600000200041 +S315E07900600000404004002000000040000404200025 +S315E0790070000000000404A000000000000000000079 +S315E079008000000004000000000020044000004080E9 +S315E079009020200404000000002020040410000080E1 +S315E07900A02040000420200000202004042060000085 +S315E07900B0200004002020000020200400A020000079 +S315E07900C080A0041020000000000400208080000059 +S315E07900D0808420E3AF00800000000000000000008B +S315E07900E000000000000000000000000000000000B1 +S315E07900F00000200000000000000000000000000081 +S315E079010000000000000000000000000008200080E8 +S315E079011000000000000000000000000800800000F8 +S315E0790120000000000000000000400000000004200C +S315E07901300000000000000008000000000000000058 +S315E07901400000000000000000000000000000000050 +S315E07901500000000000000000000000000000000040 +S315E0790160000000000000000001000000000000002F +S315E079017004002000000010000000000000000000EC +S315E07901800000000000000080000000000000000090 +S315E07901908000000000000000000000000000000080 +S315E07901A000000000000000000000000000000000F0 +S315E07901B000000000000000000000000000000400DC +S315E07901C000000020000000000000000000000010A0 +S315E07901D00000000060000000000000000000000060 +S315E07901E000000000000000000000000000000000B0 +S315E07901F000000000000000000000000000000000A0 +S315E0790200000000400010000000000000000000043B +S315E079021000000000800000000000000000000000FF +S315E0790220000000000000000000002000000000004F +S315E07902300000000000000000000000000000C0009F +S315E07902400000000000000000000000009358002044 +S315E0790250100A0000100200003008000200000000D9 +S315E079026000004800500000002000400000200020F7 +S315E079027000002030000000000000000400040024A3 +S315E0790280000420080020080004000020002840002F +S315E0790290200004000400000000A4400030000000C3 +S315E07902A050000002000040004600000024000000F3 +S315E07902B060003020040000000400000024004020A3 +S315E07902C00400040000500800400C4000442040003F +S315E07902D004400004000000000064000000004000D3 +S315E07902E0404000C000400000400000000480044027 +S315E07902F0004080C00040A0008000808000040000BB +S315E07903008004004000A004C0008000004000008422 +S315E079031000400040A40040002000000000C0000436 +S315E079032080200040200000000000004000000040EE +S315E07903300400408000008000000480000000404016 +S315E079034024000004000004048000800040000004DA +S315E079035040000440002400004000040020000040F2 +S315E079036000000420840024004004802080000040BE +S315E07903700000000000400000400060C00C00000072 +S315E079038000000480000084002000008000800010D6 +S315E079039040C01400000000C4005000008000000056 +S315E07903A0000000004000400000003440004000407A +S315E07903B0A08018008080408800800014000000004A +S315E07903C000804000003E96003000001810000002E0 +S315E07903D0000020000200140000004802000000003E +S315E07903E0000240000040200008000020002800209C +S315E07903F000800000040000400020040008000000AE +S315E079040020000000000020800020008004004000E9 +S315E07904100000000000000400001000000022004007 +S315E0790420420000400000000020400000200040200B +S315E07904300000000020004000200004400000004059 +S315E079044040000008400430400004400040040020A9 +S315E07904500000004000004400400400400480200091 +S315E07904600000040004000004004404804000000019 +S315E0790470000080000000040000000020000000A4D5 +S315E07904800000000040040020000000402080400089 +S315E0790490000000000040400000002000000000005D +S315E07904A00000040020400000046000000000000025 +S315E07904B000000004000000400060000044000400F1 +S315E07904C00004000040000000400000004000000009 +S315E07904D040002000000000104000000000240000E9 +S315E07904E00000800020000400004000000044000085 +S315E07904F00000400048800000002000840080102041 +S315E0790500A00000000000208040008040000000004C +S315E079051000C040000000000000008000004040007C +S315E07905200000002000001060201000080080000024 +S315E07905308008800010800000008000400400693D5A +S315E07905400000404002000000000030080040000052 +S315E0790550200000000040100000200000000000802C +S315E07905600020000000100000000000600000000498 +S315E079057000040000200000002804008000220040EA +S315E0790580080000000412000000000044A0201000DA +S315E079059000224000000040002000040000002440D2 +S315E07905A00400003000004408044004000000042000 +S315E07905B0804084002000000018000040040000001C +S315E07905C004000000042000000000802400004000C0 +S315E07905D000008000000040400000400040400040BC +S315E07905E080000040000080C020008000008000008C +S315E07905F00180000004400000008040008080000017 +S315E0790600008400A00004408000200000C00400803F +S315E0790610000480000000E0000020000000000000F7 +S315E07906200000000040800080008004008000000027 +S315E079063000000400400020000080000080000000F7 +S315E0790640000004002400000420000050040020008B +S315E0790650400000000480002004400044008000004F +S315E079066040000000008000410000400020040000C6 +S315E079067020400040000000008440004020008000D7 +S315E07906800010002014000000000400100000800033 +S315E07906900004000000000000800000100400410022 +S315E07906A000C0008010004080400000000000240077 +S315E07906B00000008020000011CC000040000000001E +S315E07906C000400000004000080000204000000000E3 +S315E07906D00000000000102000000008000000001073 +S315E07906E00800080000002400000000000000004037 +S315E07906F0200000000000004000040000000018001F +S315E07907000000000020000000044000000000000026 +S315E0790710000000000400000024000000440000000E +S315E07907200000000004000000240000000000000042 +S315E079073000000000000020000040200000000004D6 +S315E07907400060000400000000000000000000844022 +S315E0790750000000000000000000000000000000003A +S315E0790760000000002000400000000020000000208A +S315E07907700000240004000000400000002000000092 +S315E07907802040200000440080000040004020200006 +S315E07907900000000004400000000000400040000432 +S315E07907A00020002420000000000000000000200066 +S315E07907B00020040080200020800000000000040072 +S315E07907C000004400000000800020040000000000E2 +S315E07907D004004000800000000000040000000000F2 +S315E07907E000008000000000000000041020000000F6 +S315E07907F00000000000400030000000000000040026 +S315E079080030000000008000001004100000000000B5 +S315E079081000000000001000000000001000840000D5 +S315E07908200450000000000080040000000000000091 +S315E07908303ACE00020000000000000010000000003F +S315E07908400000000200100020020000001000000005 +S315E07908500000001000000000200000000000040005 +S315E079086010400000000000000000000000000000D9 +S315E07908700000200000002000000000001040000089 +S315E079088010000000000000000000000000400000B9 +S315E079089000000000000000000000000000000000F9 +S315E07908A000000000000004000000000000000000E5 +S315E07908B00000040000000000200000002000000095 +S315E07908C000800000000040000060004000400040E9 +S315E07908D00080000000802000000000C00080000059 +S315E07908E00000000004000004004000004080404021 +S315E07908F00000044000000000400000000000000015 +S315E0790900400440002000800000008400800004203C +S315E07909100000000000000400000000000000000074 +S315E07909200000002000000000000000000000000048 +S315E07909300000400440040000000000200020000090 +S315E07909400000000000000000000000000024000420 +S315E079095000200440000000000000000400000000D0 +S315E079096004100000000000200000000000C0000034 +S315E079097000000000000080000004C00004000004CC +S315E07909800000800010000000000000000000000078 +S315E07909900000A000004000002000002000000000D8 +S315E07909A0100000000000000000E7B6008240000079 +S315E07909B000000040100040000000000002601000D6 +S315E07909C0220000000000001020000000000800006E +S315E07909D010400008000000002014004000000000EC +S315E07909E00040000010000000000004200000000034 +S315E07909F00000000000100000000040040000000044 +S315E0790A00000000000000040000002400000040041B +S315E0790A10000000000000000400002400000000044B +S315E0790A200000000000000000002040008000000087 +S315E0790A300000000004200000000000800000400073 +S315E0790A40C0046000004040000040000000008020C3 +S315E0790A50000000004000A0004000000040000000D7 +S315E0790A60040040004420C00000000040000020005F +S315E0790A700000208000000040004000400020E000B7 +S315E0790A80002004800000004420000000400000407F +S315E0790A9000040020000400200000000000000000AF +S315E0790AA000200020040000200000400000440004FB +S315E0790AB000000000400410208000200004000000BF +S315E0790AC0000004000040A400000424004000200057 +S315E0790AD0000400008000000000041000000400001B +S315E0790AE02000000000004000102000000000008097 +S315E0790AF00004C03404008000000490040010000073 +S315E0790B008000000000000000000080200010000056 +S315E0790B1000200054200000000000000000000000E2 +S315E0790B200000842F004000400040084200000000A9 +S315E0790B3048400006000000180008401062040020D2 +S315E0790B40020400300000008004200088244400007C +S315E0790B501040000038200000202040084060000066 +S315E0790B60200000004220000042408440000002203C +S315E0790B70900020000040004000100000000460C0B2 +S315E0790B801000210000204000202000042000802071 +S315E0790B9000000000000000C0202000200400004092 +S315E0790BA0042004200004000004004008000400004A +S315E0790BB020400040A004C00004400000400000400E +S315E0790BC0000000402000002044044020000000009E +S315E0790BD04060000004041004200004400004002072 +S315E0790BE0002040000004600000000000440440005A +S315E0790BF00004C00000000C0020C0000020040000C2 +S315E0790C0000000080408400000000408040006004DD +S315E0790C10005000E000402000040004840000A000B9 +S315E0790C202000400060005410004000004000004081 +S315E0790C3000400404004004600040102400200000D5 +S315E0790C40444000004000C0000000000400000000BD +S315E0790C50400000003004002004440080100480A0A5 +S315E0790C6000002000348004100080406004408080D9 +S315E0790C7000100000A084000000200450000000402D +S315E0790C800880440080200400C0000800000040800D +S315E0790C90004000201000A400004000CBEB000000EB +S315E0790CA000000000000000000000400002000000A3 +S315E0790CB00000004000000000000000000010000085 +S315E0790CC000000000000000000000000000000000C5 +S315E0790CD00000000000400000C000000000000000B5 +S315E0790CE000400000000020001000004000000040B5 +S315E0790CF00000000000000004000000000000402031 +S315E0790D0000000020000000800000000000000000E4 +S315E0790D10C000000000000000400000200000000054 +S315E0790D2004000000000008002000000400008004B0 +S315E0790D300004000040000000000000400000800050 +S315E0790D400000004000000040200000200000000084 +S315E0790D500000008000000000000040000000040070 +S315E0790D6000000000400000000000000000000400E0 +S315E0790D7020000000000000000000000000000400F0 +S315E0790D800000408000800000000010000000002094 +S315E0790D90000000040480000000000000000010005C +S315E0790DA000000000000000000000000000000000E4 +S315E0790DB0000000000004000004400000000000800C +S315E0790DC000000000000000000000000000000000C4 +S315E0790DD0000440000000000400000000000000006C +S315E0790DE00000000040002000000020108000800014 +S315E0790DF0000000001000000000000400000004007C +S315E0790E0000000008000000008000000000000000FB +S315E0790E100080000072B10000000000004800020086 +S315E0790E200040000000000400001800000000000403 +S315E0790E300000020400200000200000002000A80045 +S315E0790E40400000004020000460A000004000080057 +S315E0790E5040200000000200200002008000400000EF +S315E0790E600220002000000000000000401000402031 +S315E0790E70000080200000000000002000000420002F +S315E0790E80000000000000000000002000002400209F +S315E0790E9000000000400000000400000000000000AF +S315E0790EA0000000000000C0400000004000000000A3 +S315E0790EB0000040000000000000004400000000004F +S315E0790EC000400000500004000400200000004000CB +S315E0790ED0042000002000000020000000008400408B +S315E0790EE000000000000000000000000080040040DF +S315E0790EF0000000004040000080000000000000246F +S315E0790F0000000000004024004000040000000020BA +S315E0790F10000020400000404000000000000400008E +S315E0790F208000404004400440242000040000000092 +S315E0790F3000000000C040000000004000000004000E +S315E0790F4000004000000020000000000400000000DE +S315E0790F500020800000000000000000004000300022 +S315E0790F60004000000020044400000000200000005A +S315E0790F700000600060100000204080000000001052 +S315E0790F8040000000441020802400000000FDEF00BE +S315E0790F9040004000000040000040000800000000EA +S315E0790FA00000000000081062000000201000000038 +S315E0790FB0000084000000000600040010000000181C +S315E0790FC00000000000200000200000000000400042 +S315E0790FD000000000044000000000008000000000EE +S315E0790FE000004000000000000040104001000000D1 +S315E0790FF00000000000000000000020000000001062 +S315E079100020000000200000000040040000040020D9 +S315E079101000000000400000080004000440002000C1 +S315E07910200000000000000000000000000000402001 +S315E079103020002000040020000000000000001000DD +S315E07910400010044004000010100000800000000049 +S315E0791050004000800000000000040000C4000000A9 +S315E07910600008000040000020000400000000008035 +S315E0791070400000001000400040000400400000807D +S315E07910800000000000000000800000000000002061 +S315E07910900004100000400040000000000800000055 +S315E07910A00000400000500020200000000000000011 +S315E07910B00040000000000010000000000000001071 +S315E07910C00004200000009000800000002000003439 +S315E07910D00480001080000004804080000000000059 +S315E07910E00000000000040040000008048000800051 +S315E07910F00000000404000000000000000000000089 +S315E0791100000800000040B2CB0000000000000000BB +S315E0791110000000020040000002000002000000002A +S315E07911200000000010001000000000000000000040 +S315E079113000004000000000C0000004000404000044 +S315E07911400008000000001000000000000000040024 +S315E079115000000000004000000000000010000400DC +S315E07911600000000004000000040000000000000018 +S315E079117004000000040000000400000004000004FC +S315E079118000000000000000000000000004000000FC +S315E079119000000000000000000004000400000000E8 +S315E07911A0000040000400004000000000004000001C +S315E07911B00004400040004000000000000000040008 +S315E07911C0000080000000040000002000000000809C +S315E07911D00000204000400400400000044000000088 +S315E07911E0000000000000000000000000000000049C +S315E07911F02000000024100004000000000004002014 +S315E0791200000000000404000010000000140420002F +S315E079121000100000200400000440000000000020D7 +S315E0791220000400000000000000000000000000005B +S315E079123000000000000000200000000020200000EF +S315E0791240040000040004200000001000000084106F +S315E079125000001400000000000000000000002000FB +S315E0791260000000000080000000000000000400801B +S315E0791270000000008800200000040080000000667D +S315E07912800F0000C0000000000000800200000000AE +S315E079129000000000000002000000100000000000DD +S315E07912A0000000000000000000000000500000008F +S315E07912B010000000000000000000000000000000BF +S315E07912C0400400000000000000000000000000007B +S315E07912D0000040000000000000100000000000005F +S315E07912E0000000000000000000000000000000009F +S315E07912F0000000000080000000800000000000008F +S315E0791300000000000000004004000000000000003A +S315E079131000000000000000000080000040000400AA +S315E0791320000000000000000040000000000000001E +S315E079133080000084000000200000004404000000E2 +S315E079134000400440000400040000000000000000B2 +S315E07913500000000000000004000004000000000026 +S315E07913600000000000000000000004000000000416 +S315E079137010000000040000000004040000000010E2 +S315E079138000000000002000000000000004000000DA +S315E079139000000000200000000000000000000024AA +S315E07913A00004000000400000000450000000000046 +S315E07913B000004000040000000000000000A00000EA +S315E07913C000000000008000000000000000008410AA +S315E07913D080000000000000000000000444000000E6 +S315E07913E000000000008420000000000010010800E1 +S315E07913F00030002000010100CC8900408000000027 +S315E07914000000020000004000000000020010000029 +S315E0791410000000000000000000000000100000005D +S315E079142000000000004000104000000000000000CD +S315E07914300000000000000000000010040000000039 +S315E0791440000000000000000000000000000000003D +S315E07914500000000000000400000000000000000029 +S315E0791460000000000000000000000000008000009D +S315E07914708400000000000400000000000404400439 +S315E079148000000400000000040000040000044000AD +S315E07914900000000020000000000000000044000089 +S315E07914A00404004004008000000400000400840481 +S315E07914B000048000044000402000800000200040C5 +S315E07914C0000000408000600004000000C0000000D9 +S315E07914D000000000000000000000000000000004A9 +S315E07914E0000000000000100000000000000010007D +S315E07914F000000000000044000000008000000000C9 +S315E079150000100000000000000000A040000000206C +S315E079151004000420002400200000040000000000FC +S315E07915200000000000040020002400040080000090 +S315E079153000200000200010000040140000000000A8 +S315E07915400010840000001000000004000000000094 +S315E079155000040000000000000000040000800000A4 +S315E07915600000800000000018000000200000000064 +S315E079157004D2BE0080000240004000000000000076 +S315E07915800000080000000000000000400040000074 +S315E07915900000004000000000000000400000000864 +S315E07915A000000000001000000000000000000000CC +S315E07915B0004000000000000000000000000000008C +S315E07915C000000000000000000000000000000000BC +S315E07915D00000000400800000000000000000000028 +S315E07915E00000000080000000000004000004000014 +S315E07915F0000000000000000080000000000000000C +S315E079160000004000000000000000400000000000FB +S315E07916100000240000000000000000000000042023 +S315E0791620804000400000000080000000800000005B +S315E0791630000000008004000000040000008004003F +S315E0791640A00004002000800000240000800400004F +S315E0791650000000040004000000000000000000041F +S315E07916600000000400100004000000000000000003 +S315E07916700000000000000000000000000000000407 +S315E079168000004000040000000000000000000000B7 +S315E079169000000000000000000000000000040000E7 +S315E07916A00004000020000020800080000010000087 +S315E07916B0008080000000001070000000800080004B +S315E07916C000000000000000040000000000000000B7 +S315E07916D00040201000000000000400008000008037 +S315E07916E004800000000000000001A166000000000F +S315E07916F000000002400000000000001040000000F9 +S315E07917004002000000000000100000000000000028 +S315E0791710000000000000000000001000000000005A +S315E079172000040000004000000400000040000000D2 +S315E079173000000000000000000040000000400000CA +S315E0791740000000000000000000000000000000003A +S315E07917500000040000000000000000000000000026 +S315E07917600004000000000000008000000004004052 +S315E0791770000000000000000000000000804000004A +S315E0791780000000000000002084000400000004004E +S315E07917900000000000000004C00000800000400462 +S315E07917A0800000008000000000200000C0000000FA +S315E07917B0000000400000A00000200000040480043E +S315E07917C0000000002080000000000000000000001A +S315E07917D00000000000002000001000000000240056 +S315E07917E0001420040000200000100000000400002E +S315E07917F00010240000000000000080402020040052 +S315E079180000001000000010006000142000100000B5 +S315E07918100000104010100004400020500010000035 +S315E0791820800400000000A000000000000030000005 +S315E07918300080000000000000000010000080000039 +S315E07918400000040000500004100400800000000449 +S315E079185000000000000000000000001020000004F5 +S315E0791860000000AFF3000002000000020000000073 +S315E079187000001002020010000000000000000000E5 +S315E079188000000000100000100000000000000010C9 +S315E07918900000000010000040000000000000000099 +S315E07918A000000004000010000000000010000000B5 +S315E07918B000000000000000000010000004000000B5 +S315E07918C000000000000000000000000000040000B5 +S315E07918D000000000000000000000000000000004A5 +S315E07918E0000000000400000000000004000000048D +S315E07918F004000004000020000000006000000040C1 +S315E079190000000000008040000004000000040000B0 +S315E07919100000000000000000000000600004000004 +S315E0791920000400000000000004000000000004004C +S315E07919300004000000000000000000000000000044 +S315E07919408000000000002000000000002400000470 +S315E07919500000000000000000000000000000000424 +S315E079196000000000000000000400000024000400EC +S315E079197000000000040000002000000000000004E0 +S315E079198010000000000000001000000000000000D8 +S315E079199000000000000000000004002000000000C4 +S315E07919A000800400008000000000040000000000D0 +S315E07919B00080000480000000000000000080200420 +S315E07919C08000000000000000000000000000000038 +S315E07919D000200000000000008000000071FF000098 +S315E07919E0000000000000001802000808000000006E +S315E07919F00000000000000000000040000000000048 +S315E0791A000000000040100040000000400080000027 +S315E0791A100400000000000000000000000000000063 +S315E0791A2000100000440000000000000010400000B3 +S315E0791A30000000000400000400001004000000002B +S315E0791A40000000800000000480000000000004002F +S315E0791A500000040000000000000000000000000023 +S315E0791A600000800000000000000000000000400057 +S315E0791A700040000000000000004000004000000047 +S315E0791A8000000000000000000000000400040000EF +S315E0791A9000000000000000000000000400200000C3 +S315E0791AA000008000000004000000000040002000F3 +S315E0791AB000000000000000000000000000000004C3 +S315E0791AC00004000000000000000000000030000083 +S315E0791AD00000000000000000000000004400000063 +S315E0791AE00000000000100000100000000000000077 +S315E0791AF00004000000001000000000004000000033 +S315E0791B000000000000000020000000000000040052 +S315E0791B10400000100000000000000400000000040E +S315E0791B20008400000000000400400000000010205E +S315E0791B3000000040800010000000400000400000F6 +S315E0791B401000000000001000100010000000800076 +S315E0791B5004102100008E5C00000000000002000005 +S315E0791B600000020000000000000002001000000002 +S315E0791B7040100000100000000000000000000000A6 +S315E0791B80000008000000000400800000000000006A +S315E0791B9000000000400000000000000000000000A6 +S315E0791BA00000000000000000000000400000000096 +S315E0791BB000000000000000000000000000000000C6 +S315E0791BC000000000000000000004000000000000B2 +S315E0791BD0000000040400000000000000000080001E +S315E0791BE0000080000000040004400080000000202E +S315E0791BF000000000000000040000408000000000C2 +S315E0791C000000000004002000000000000000000051 +S315E0791C10000040000000040000A0000000408000C1 +S315E0791C2004000000000000000040000020000000F1 +S315E0791C30000000000000000000000004000400003D +S315E0791C4000000020042000001000000000000010D1 +S315E0791C5020000000400000000000000000000004C1 +S315E0791C600000000000000000000000000000000015 +S315E0791C7020000004000040000000000000000000A1 +S315E0791C8000000000000000002000000000800080D5 +S315E0791C9000000000000000100000000000000004D1 +S315E0791CA05080000000000000000000000000040001 +S315E0791CB000000080401004000020000000000000D1 +S315E0791CC00000000000000080000000040401F8999B +S315E0791CD00002104200000000000000080000000049 +S315E0791CE008000200000000400000000000000050FB +S315E0791CF00000000000000010000000000000000075 +S315E0791D000000001400004000080000000000001008 +S315E0791D100000500004000000000000000010000000 +S315E0791D200000000000000004001000000000000040 +S315E0791D3000000000000000000000000000048000C0 +S315E0791D4000000000000000000080000000000000B4 +S315E0791D50040000000000000000000000040000001C +S315E0791D600000000000004000400000200000400034 +S315E0791D7040000420000400006000000000800000BC +S315E0791D8040000000000080000040000000000000F4 +S315E0791D9000000000000000000000000000000000E4 +S315E0791DA00000008000000004000000000000000050 +S315E0791DB000000000000000000000000010000000B4 +S315E0791DC00000200020200000000000004000000410 +S315E0791DD000000000000000000000000000000400A0 +S315E0791DE0000000000420040000000000000000006C +S315E0791DF01040000000000000000000000004001020 +S315E0791E0000000400400400142000900000801000D7 +S315E0791E100400041000001080000000540020001037 +S315E0791E20040000040000000000000000000400D077 +S315E0791E300014000010000000000000000814010002 +S315E0791E4000000000000000374A00024040800002AE +S315E0791E50020002004A000040080200000002000089 +S315E0791E604000104000101000400000000000000023 +S315E0791E70001040000008400010C0108400140000F3 +S315E0791E80000000000000004054000010000000044B +S315E0791E9000000000000040100000400040100400FF +S315E0791EA01004001000040000000480000000000027 +S315E0791EB0000400000004000000048000008480042F +S315E0791EC00084040000040000000404004400400497 +S315E0791ED000040000000400040044440000440000CB +S315E0791EE080000000400004400400000400644004DF +S315E0791EF04024040004808000806484000480042007 +S315E0791F000084000404002440408004E00004044096 +S315E0791F1000800064040024C00400408004000000CE +S315E0791F2000008400000000000000000400000000CA +S315E0791F30200400001024201414000030140004203A +S315E0791F4000000020400440100410008010000020BA +S315E0791F501000000000040400004000000020042086 +S315E0791F60200000200004000400100000400000007A +S315E0791F7000005000000020002010402080240084DA +S315E0791F809004009000202000041000100090A0003A +S315E0791F901004009400100014009000000000200066 +S315E0791FA000000004C00000540090041000002000F6 +S315E0791FB08000000000901820102004000400000042 +S315E0791FC0ED48004012400000424000001A0000004F +S315E0791FD0000210020000520010400000500010107C +S315E0791FE00040000000000000004010004000400082 +S315E0791FF040800044000400004400084000000440AA +S315E079200000400000040000440000000000000000E9 +S315E07920105000400040000004000400000404100071 +S315E079202004040000000000008400008004000080C1 +S315E079203000040000040480000404008000000080AD +S315E079204000040000040440800000000000840000E1 +S315E079205000400040208044006040200000C0200419 +S315E07920600080200440008000004000004000248089 +S315E07920704400C4000000044420000000400004004D +S315E079208004042000002000000004400024046000DD +S315E079209004200440040004000400040480000000E5 +S315E07920A00000000400040004000420000010201061 +S315E07920B00410000410000000041400040000040079 +S315E07920C0000000040004000024241000100400003D +S315E07920D0040400402000200000001000244410048D +S315E07920E04000001000001000004010100440040089 +S315E07920F004400070048004209080041080008404F9 +S315E07921001000900030900414800000009410C420F0 +S315E07921100490042000040040008014600444000028 +S315E07921200480641000009400041000000090081800 +S315E079213000B000002424900004F44C000002021060 +S315E079214000404000000202181850400000021210C8 +S315E079215010404000000000101040400000000010E0 +S315E0792160100000000000085050008000040404507C +S315E079217040000000080804404000000000141444C0 +S315E07921804000000000101000400000000000104000 +S315E0792190000000040414100000000404000000802C +S315E07921A080000004040400808000040404040080B4 +S315E07921B080000004040000808000000404004000F0 +S315E07921C000000004048080000000000404C0C00020 +S315E07921D00000200000C0C0200004040000C0C00058 +S315E07921E0000404000040C000000404200080804020 +S315E07921F00004046060A0000000040464208080008C +S315E07922000004044060000080000404E0C00000009F +S315E0792210000404248000040020000000000000048B +S315E079222004002000000000040430300000000404BB +S315E0792230043030000000000414500000000004046B +S315E079224004303000000004040400600000800004DB +S315E07922503430200000001014346060400000001033 +S315E079226010104040000404303060404000040430EF +S315E079227030F080000004443010908000000404348B +S315E0792280508080000004445430800000000404202B +S315E0792290400000000014547060000000001414201F +S315E07922A0000000002010180000000004143030000F +S315E07922B08000325E00020212124040404004003A49 +S315E07922C01A185C406002021010505040000000106D +S315E07922D0105050010008005011001800400000101D +S315E07922E0401050008000045040404002001800C081 +S315E07922F04240100080100054504040000010100019 +S315E0792300104040040020005014002000041400100E +S315E079231010000000040000808081800C0444018074 +S315E07923208880C000040400800080000404040080F2 +S315E079233080828014048006005000800000808480CA +S315E07923408000000000A0E080C004000000C0C480E6 +S315E0792350C000002424E0C080C00000200040408115 +S315E0792360800C044421800800800404606080400089 +S315E07923700004046420A02082801000C0422070000E +S315E0792380000004E0E040C0000000042420808000E2 +S315E07923900000000004002000000404202000000072 +S315E07923A00420200020010008046421202800400050 +S315E07923B004541000000000000420202020020014BC +S315E07923C00084020010000000003030202000001068 +S315E07923D010202460200400200010144020000030F2 +S315E07923E0346060404004043030C0F08180080010E9 +S315E07923F011108800400404343090900000000050B9 +S315E079240014B03082801404A42640500080101074F1 +S315E0792410B420A00000141034B00080040010101825 +S315E07924209400A00000042430B08000A720000002C8 +S315E07924301212000040400200181858184040020273 +S315E0792440101050504000000010005040000000008D +S315E079245010100000000000000050500080000404D5 +S315E07924604050404000000008404040000000101015 +S315E07924705454404000001010000040400000000035 +S315E07924801050000000000014101000000400000055 +S315E079249080808080040400048080808004040404C1 +S315E07924A080000080000004048080808004040000BD +S315E07924B04000000000048080808000000004C08035 +S315E07924C0E0A00000000080C0C0C000040404C0E0C1 +S315E07924D0C08000040420602000C004006404008009 +S315E07924E0808004046460C080000004000444A0A0F5 +S315E07924F0808004048000602000000404C0C0C0C06D +S315E0792500000000002020000000000000000000002C +S315E0792510000004042020000000002424202000008C +S315E07925200404103020000000000040140000000090 +S315E07925300404341430200000000004044000000054 +S315E07925400000143400000000101060602060000084 +S315E07925500000101000400000343070604000000048 +S315E07925601430F0E080800000141400800000040448 +S315E07925702434909000000404445030B000001404F0 +S315E0792580202040400000101074F400800000001410 +S315E079259030B0008000000000109000800000240434 +S315E07925A030B08000995A0002821210000040400251 +S315E07925B0021A1A5818404002021012505000400090 +S315E07925C0001010505040400000000000100000005C +S315E07925D000500050108080000040404040000008E4 +S315E07925E0004040004000001000505040400000108C +S315E07925F0100010000000000000400000000000001C +S315E07926000010100000000000000000808004040043 +S315E0792610008080808000000000008000800000005B +S315E0792620008080808004040004004000000400807B +S315E079263084808000000400C0C0E0A0000000004073 +S315E07926404080C004040000C0E0C0C00400002460FB +S315E0792650608080040404248000808000004044A0E7 +S315E0792660E0000004046460A0A08080040440406037 +S315E07926706000000000602080C0000004042420800F +S315E0792680800000000000000000040004042020001F +S315E0792690000404240400200000000424240000003F +S315E07926A00004041000000000000004240420200047 +S315E07926B000000004002060000004003010002000D3 +S315E07926C0001414242420600000000010100040005B +S315E07926D00030306060000004043034C0F08080045B +S315E07926E00434149000808004043420C0D0000000C3 +S315E07926F000104430B000000000242440400000106F +S315E079270010B474A02000001010B4348000000010DA +S315E0792710109818800004043434B0308000C5C200C3 +S315E0792720008010104040404002001A1A1858404084 +S315E07927300202121050500040000010005040404014 +S315E0792740000000000000000000004010104080808A +S315E0792750040440404040000000084040004000004A +S315E0792760141454544040000010100000000000009A +S315E0792770000000400000000000001010000000009A +S315E079278000000000808004040000808080800404DA +S315E079279004040080800000000000808080800404CA +S315E07927A00000400000000004808080800000000482 +S315E07927B0E0E0C0C0000000000040C0C0040424206E +S315E07927C0A080C0C000042400400080C0000024043A +S315E07927D00080808000044440E0A000000000000012 +S315E07927E080808080040440400000000004040040BA +S315E07927F0C08000000000000000000000000000003A +S315E079280000000000040000000000000004242020FD +S315E07928100000000000202000000000000010000009 +S315E079282000000000040430200000000004040000E9 +S315E079283000000004042420000000000440406020E9 +S315E079284000000000000040000404303050400040B1 +S315E079285000001430F0E08080040414348000808035 +S315E07928600404203040C0000000040410B0308080B9 +S315E079287000002020404000001410B434804000006D +S315E07928801010B03080000000000080108000040451 +S315E07928903434B0318100AA9A0002020200000000C5 +S315E07928A00002020A0A185000000202000000000045 +S315E07928B040000010000000404000000000001000D9 +S315E07928C00000004000400000800004100000000095 +S315E07928D0000800000000400000100004000000003D +S315E07928E00000000010404000000000404000000079 +S315E07928F00014040000000004040000808000000455 +S315E07929000400000000000000040400800080000458 +S315E079291004040400000000000004044040000004C0 +S315E07929200000000000000004006020004000000084 +S315E07929300080C00040000000002000004004000054 +S315E079294004400080C0000420008080008000000000 +S315E079295000C04000000004602080000000000040D4 +S315E079296040004000000004A0E04080000000000440 +S315E079297004808000000000000000000000040400EC +S315E07929800000000000000000200000000000003098 +S315E07929903000000000101000000000000020200048 +S315E07929A0100000040404000000000000001030204C +S315E07929B020000014144054404000000000101040FC +S315E07929C040000014140000404004040024A0B080C4 +S315E07929D08000000000901080800000101080900048 +S315E07929E0000000505410900000000004040000003C +S315E07929F000101044D42020000004040404000000F0 +S315E0792A000000001818800000000424000000808986 +S315E0792A109C000000000040400000000200084808E1 +S315E0792A2000000202000000000040000000001000F3 +S315E0792A304040000000000000000000004000104027 +S315E0792A408000000000100000000000080404004047 +S315E0792A500000000000000000000000000000000017 +S315E0792A600000000040400000000000100000000077 +S315E0792A7000000000808000000004000000000000F3 +S315E0792A8000000000800000800004040400000000DB +S315E0792A900004040440400000000400000000000047 +S315E0792AA0000400006020000000008080000000043F +S315E0792AB00400002040000004040020204080040047 +S315E0792AC0002080808080000400008080000004007F +S315E0792AD024648080000000040004400000000400C3 +S315E0792AE0E0A080C00000000024248080000000007F +S315E0792AF0000000000000040420200000000004002B +S315E0792B0000000000040410303010000000000010CE +S315E0792B1000000000040434101000000004000404EE +S315E0792B2000400000000004240000000000041420A6 +S315E0792B3040400000101000004040000014103000C2 +S315E0792B4040400000040090808080000004009010EE +S315E0792B50808000040404808000800004444490105E +S315E0792B6080800000040400000000000054408000EA +S315E0792B70000004040080800000000000109000004E +S315E0792B8000000424008080804CD4000202020040D8 +S315E0792B904000000000080848000000020210120018 +S315E0792BA00040000000100000000000000000000076 +S315E0792BB050000000000848004000000000000000D6 +S315E0792BC00000000000000050000000100000000046 +S315E0792BD00000000000001040400000000000000006 +S315E0792BE00000000404000000000404000000000076 +S315E0792BF000040404040000000000000000008000E6 +S315E0792C00800400000000000000000000040080005D +S315E0792C1000040000000000000004004000202000CD +S315E0792C2000000000600040000020206060000004A1 +S315E0792C300020046020C0C000002000000000800071 +S315E0792C40000000E060000000004040A020000004A1 +S315E0792C5000000060600000000000000080000000D5 +S315E0792C600000000000000000000000000000000005 +S315E0792C70040000000000002014002000000000009D +S315E0792C800010100000000010000000000000002095 +S315E0792C90040010000000040000400000000000106D +S315E0792CA010002000001414445400000000000010C5 +S315E0792CB010000000000404000000000004002480F5 +S315E0792CC0808080000010141080000000000000C0B1 +S315E0792CD0D000000000000490108080000000000021 +S315E0792CE08000001010848420A0000004048404008D +S315E0792CF0800000000098188080000024248000007D +S315E0792D0080D2220000000000000000000002000CE2 +S315E0792D1008680000000200000000400000000000A2 +S315E0792D2010000000000100000000000000000848E3 +S315E0792D3050000000000000040000000000020414C6 +S315E0792D40508000000404000000000000000000004C +S315E0792D5000000000000000200000000000000000F4 +S315E0792D60000000000000000000000005040C0040AF +S315E0792D7000000000000000808000000400000000F0 +S315E0792D8000000006001000000000000400000000CA +S315E0792D9000000004202460200000000000200000EC +S315E0792DA0000404002020000000040420202040C014 +S315E0792DB0000100280040808000040000A0A0000007 +S315E0792DC0000000008080000000060014008000000A +S315E0792DD0000004048080000000000000000000008C +S315E0792DE00000002000000000040000000000000060 +S315E0792DF00420100000000001002830500000000097 +S315E0792E000010000000000000040010000000040239 +S315E0792E1000100000000000040020200000000004FB +S315E0792E2014240000000010100020000004040000C3 +S315E0792E3030000000000004000080800000010408F2 +S315E0792E400080000000000000C0C00080000404009B +S315E0792E5010800000000200000000000004048404F1 +S315E0792E60808000000404808080800000000080A0DB +S315E0792E7000800000040080808080804600000200A7 +S315E0792E8000000000000002020C00200000000000B3 +S315E0792E9000000000000000000000000000000100D2 +S315E0792EA000004000000000080000000080000000FB +S315E0792EB0000000000000020410008000000000001D +S315E0792EC00000000000000000004000000000000063 +S315E0792ED0600000040400000000000000000000002B +S315E0792EE00000000401000800400000000000000036 +S315E0792EF00000000000000000000000000200104021 +S315E0792F00800000000004000000000000004400009A +S315E0792F1000000000004020000000000000004000B2 +S315E0792F20000000000000408040000100088040C0B9 +S315E0792F3000000400000080000004000040008000EA +S315E0792F400000020450008000000000044040800048 +S315E0792F500000000000800000000000002020000052 +S315E0792F6004040000000000000000100010000000DA +S315E0792F700100080050000000004004000000000055 +S315E0792F80000000001000000002001010008000042C +S315E0792F90000004000000000000044000000000008A +S315E0792FA0000020200000041010000000000004203A +S315E0792FB00080008000040110080000400000001045 +S315E0792FC000801000000004001010008080000600E8 +S315E0792FD004108080000410048080000000041080D2 +S315E0792FE00000800000001000A8A000000400108016 +S315E0792FF000800089440000020200000000008000A1 +S315E07930000204002000000002000000000000000039 +S315E079301000000000000000010018004000000000F8 +S315E0793020005000008000000004000000000000026B +S315E07930300410408000000004000000000000000059 +S315E0793040000040000000000410600000000000006D +S315E07930500000000000000000000000000001000808 +S315E079306000400000000000000000000000040000BD +S315E07930700000000000060410408000000000000017 +S315E0793080000000000000000040000000000400207D +S315E07930904000000404000000400000000000000049 +S315E07930A040000005000800C0000000000020400054 +S315E07930B0000000000040000000000002005040805F +S315E07930C00000000404000000000000000000800019 +S315E07930D0000000040020000000000000000000006D +S315E07930E00000000000000000000100081040000028 +S315E07930F00000000000000000000000000000000071 +S315E0793100000200104080000000000020000000006E +S315E079311000000060000000000014002000000000BC +S315E079312004002000000000000000200000000001FB +S315E07931300008004000000004000000008000000460 +S315E0793140000000000000000600100080000000008A +S315E07931500480400000000000008080000000000448 +S315E079316000A00000000004200080800023770000A2 +S315E079317003431C1C606000804343181C40600800D0 +S315E0793180474738384240000047473838C0C00000E2 +S315E07931904607303880C001410E0E70708084414117 +S315E07931A00E0E7070808841410C0E6070008043434A +S315E07931B01C1CE0E0040043031C1CE0E00000030370 +S315E07931C0181CC0E0000007073838C4C40000078738 +S315E07931D03838C0C000008687303884C401018E8EC5 +S315E07931E07070848001018E8E7070848001010C0E7E +S315E07931F06070008403831C1CE0E0000483A31C1C3C +S315E0793200E0E00000A383181CC0E000208787383807 +S315E0793210C0C4202007073838C4C0202006073038D4 +S315E079322084C001010E0E7070848021010E0E7070DB +S315E0793230848401010C0E6070008003031C1CE0E0BD +S315E0793240000403031C1CE0E004000303181CC0E03F +S315E0793250000007073838C0C4000007073838C4C407 +S315E079326000000607303884C401010E0E7070808440 +S315E079327001018E0E7070848401010C0E60700480F9 +S315E079328003031C1CE0E0000403031C1CE0E00000DF +S315E07932904343181CC0E0000047473838C0C00000F7 +S315E07932A047473838C4C010000687303884C01101E2 +S315E07932B08E0E7070848041418E8E707084800101AB +S315E07932C08C0E6070008043431C1CE0E010008202A3 +S315E07932D01C1CE0E004000282181CC0E0100086069F +S315E07932E03838C0C000855800100040000000000062 +S315E07932F010C04000000000080040400000020010C5 +S315E0793300104040101000001000400000000000104E +S315E07933104000000010000450500000000000084012 +S315E079332040000000000010404010000000141040FA +S315E0793330000000000010000000000000000010000E +S315E07933400000000404100000800000000000008006 +S315E07933508000000404000080800000040000008002 +S315E07933608000000400000080000000000400800076 +S315E0793370000000000480A0000000000000A08000AA +S315E0793380004040002080800000000420208040003A +S315E07933900044002020000000000400004000000006 +S315E07933A04004004020000000400404400000000092 +S315E07933B000000000E000004020000020200000002E +S315E07933C0000400000000000000000000000000009A +S315E07933D00420000000000004042030000000000012 +S315E07933E000201000000010008410308000000004F6 +S315E07933F00420200000200004002020000020001096 +S315E07934001420200000200010006000000040001029 +S315E079341020400000200000303040002020040030B9 +S315E079342020008000200400302080000020048020E5 +S315E07934304080800000048020208000002000002069 +S315E079344060000000801000A0200000002014002019 +S315E07934508000008080100080001000010030EE8846 +S315E079346000000000000000000000000000080000F5 +S315E079347008000000000000000000000000000000E5 +S315E079348000000000000000000000000000000000DD +S315E079349000000000000000000000000000000000CD +S315E07934A020000000800000000000000000400000DD +S315E07934B000000000000000000000000000000000AD +S315E07934C00000000000800000004000100204004087 +S315E07934D00000000000001000000000000004000079 +S315E07934E0000000000000000000000000000000007D +S315E07934F00000000000000000000002000008000063 +S315E079350020000004000000000000000000000080B8 +S315E079351000000000000000000000800000000000CC +S315E07935200000000000000000200000080000000014 +S315E079353000000000000000004000000000000000EC +S315E079354000000000000020000001000000000000FB +S315E079355000000000000000000000001000000000FC +S315E07935600000002000084000008000000000000014 +S315E079357000000000000000000000000000000000EC +S315E079358000000000000000000000000000000000DC +S315E0793590000000000000000200000000000000804A +S315E07935A000000800000000000000000000000000B4 +S315E07935B0000080000000000000000000200000000C +S315E07935C0000000100020000000000000000000006C +S315E07935D0000000000000003A99000402400202006F +S315E07935E040224010000202001040000040024000F4 +S315E07935F0020000001000000000004000000000001A +S315E07936000088000040801000800000000040200023 +S315E079361000000004000820000000004000040010CB +S315E0793620800000001000000000000000008000002B +S315E0793630000000001000400000400080000080009B +S315E07936400000008000040000000000408000008057 +S315E079365000000000000000000040000000200000AB +S315E079366000000000000444000060000400400040CF +S315E0793670400000C0008040008010C00000000000DB +S315E0793680200040800000000084000400000400046B +S315E079369004004084044074002000400460800044C3 +S315E07936A0800004400000802080000000C0004000D7 +S315E07936B0A000400000000000800000000020448067 +S315E07936C000000000842000000000100400000000E3 +S315E07936D000200004080040100004000008040420DB +S315E07936E0000004000000000400000400040020004B +S315E07936F00400000010202000040000000000000013 +S315E07937000000000000042400000000200000A4006E +S315E0793710000000000004000000048020041000E0AE +S315E079372000800020000044005000000000042040A2 +S315E079373000000004009080001080A0000010800056 +S315E0793740001800800081C004008004800000012018 +S315E0793750E6B00002000200020060000000001002FC +S315E079376000000000004002000000000000100000A8 +S315E079377000000000000000000008000000000000E2 +S315E0793780001080000000000000000000200000002A +S315E079379000008040000400100000000000000000F6 +S315E07937A00004000000008000000000000000000036 +S315E07937B000000000000000800000004000000000EA +S315E07937C0000000000080008000000000000000009A +S315E07937D00000400042000000000420008000000064 +S315E07937E04400000040000044000000008000A00092 +S315E07937F000000000000000000020400000004008C2 +S315E079380000008400000000000080000080000400D1 +S315E079381040000004002000000000004000000000A5 +S315E079382020000004000080000020800004000000F1 +S315E079383000800000A0008004000000000024100051 +S315E07938400000000090280000040000004400000019 +S315E07938508004000000000800000004000404004031 +S315E0793860000000000400000000000000C00010A085 +S315E079387000000000A00000000000000000040080C5 +S315E07938802400000000000004000000008000000031 +S315E0793890080000800004000080A00000000000001D +S315E07938A040000014000004200000000004800000BD +S315E07938B00080100080100000040008800080000479 +S315E07938C08080000084001020808BA60000440040B0 +S315E07938D000000002401000020000104200000000E3 +S315E07938E040000002000000000000000048000010DF +S315E07938F000080080000000D00010000000004000C1 +S315E07939000420000000040008200000000000000008 +S315E07939100400840000001000001000002000000080 +S315E07939200010001000800010400000408000000088 +S315E07939300000000080000004004000000040000024 +S315E07939400000000000000000C20010000000201016 +S315E079395000800000000000040000204000044400DC +S315E0793960000040004004000000409000C0000000E4 +S315E07939700000000040800000000000000408040018 +S315E079398004800004440080400034002440004080F4 +S315E07939904400800004000080800080000000400040 +S315E07939A040000000004000002000000000000020F8 +S315E07939B000C0002000048000000000400004000000 +S315E07939C04001002000200008005400800000040037 +S315E07939D004200000000000000004001000800004CC +S315E07939E00020040020102000000004000000000000 +S315E07939F00000002000000000000000000020000028 +S315E0793A00208000000000000400000004002010007F +S315E0793A102040000020800000040050000000802251 +S315E0793A20004000808000001080040020240000001F +S315E0793A30A0000010200000014020001040000000A6 +S315E0793A4000005D25000000008000000000006000B5 +S315E0793A50000008000000000040000000002000801F +S315E0793A600020000000082000000000480000000067 +S315E0793A700000000000600000204000002000000007 +S315E0793A800000200000000000700000A000000000A7 +S315E0793A900000000000000000000000000014400073 +S315E0793AA00000600020400000608040800020002017 +S315E0793AB000200000000000402000000040002000C7 +S315E0793AC0000044000000000000000000242000000F +S315E0793AD000200400406000802004000040000000DF +S315E0793AE00000000000042000C00000000040A000B3 +S315E0793AF0004000A000200080000000002000004087 +S315E0793B00200000402000E0608480004020000060D2 +S315E0793B100000804000006000400000008000000066 +S315E0793B20000000000080000000200020C00020A0F6 +S315E0793B3000000004000000100000000010000020E2 +S315E0793B40008000005000048440002000201000002E +S315E0793B50004004002000000000040000000000207E +S315E0793B6000004000004400004040000040000010A2 +S315E0793B700000000030000000000000002020000076 +S315E0793B8040000020000000100000001020004000F6 +S315E0793B90000040040010000004000000002000004E +S315E0793BA000100020040000000000000440000040FE +S315E0793BB01000104004008000000000838700008038 +S315E0793BC08000002200100000800000000000020062 +S315E0793BD000008002000080000000000000000088FC +S315E0793BE0000080200040000000000800000000008E +S315E0793BF0000000080000204000000000800000007E +S315E0793C000000004000000000000000002000402095 +S315E0793C100000000040000000300000004000200075 +S315E0793C200080000040000000000040008040000075 +S315E0793C3000000040002000000040000020008020C5 +S315E0793C40020044008000400000404000200000006F +S315E0793C504000002020808000040004C0002000405D +S315E0793C60000000046000000000A080000000C004AD +S315E0793C700000A00000C00480000000000000000001 +S315E0793C8000000000008000000400200000800000B1 +S315E0793C9000800040402020000000208000000000E5 +S315E0793CA06080004000000000400020002000000015 +S315E0793CB040200000000020000040200000020020A3 +S315E0793CC000000000800440006000000000000084ED +S315E0793CD000200000002000404000040000000000C1 +S315E0793CE000000000008000000000040000040000ED +S315E0793CF02000200000004080402000109000000065 +S315E0793D000020400004000010006000000000401030 +S315E0793D10000080000000000000040000000000912F +S315E0793D20000400C000008000008000000000000070 +S315E0793D30201101005EB40000000000000000006080 +S315E0793D40008020080000000000000000020000204A +S315E0793D508000002000000020080000804000080074 +S315E0793D600000000000000040002000400020003004 +S315E0793D700000000000800000000050004000A00034 +S315E0793D800000000000000000200000000000400074 +S315E0793D900400106000204020400000000000800010 +S315E0793DA0002000000000C000000000004000200074 +S315E0793DB000400040002000A0000002040000A400BA +S315E0793DC040004004000020600020402004E000002C +S315E0793DD0000400800000000060C00004002040C0BC +S315E0793DE020800040808020C4008000208020808070 +S315E0793DF000402000004000006024C0000000E000A0 +S315E0793E000004202000C0000040C000000040A0006F +S315E0793E1000000020800000000080604020008000E3 +S315E0793E2020C020002000040000502000005000004F +S315E0793E300020402000001200040480000084201055 +S315E0793E4000304004002000008400000004000040B7 +S315E0793E5000200040040000400060000044C00000FB +S315E0793E60001000000004100000002020000020204F +S315E0793E7080402000003080000010000000300440CF +S315E0793E80102000400004004010040080000000206B +S315E0793E900000041000002410810000C000400420D6 +S315E0793EA080000000000004800010000000A4A60055 +S315E0793EB040280020080000000000000000120002FF +S315E0793EC00000400A002010080004A0004004200009 +S315E0793ED00000000010008800000000208048422899 +S315E0793EE01840008840200040000000000040004073 +S315E0793EF00020000040906400300800001000400087 +S315E0793F0000000000400000604014A000000000407E +S315E0793F104000400000E000800000000080000000E2 +S315E0793F200010C02000200020408040042004008159 +S315E0793F3000000044006404000004608044201020FE +S315E0793F4064800040C02000004000004400408020AA +S315E0793F50A000600008006010002020008440000086 +S315E0793F6020000000002420044000002000C000006A +S315E0793F70000000E000000000002000200040200062 +S315E0793F802000004004A0048000006000400000802A +S315E0793F900000004042044020000048003000002044 +S315E0793FA000C0400000A000000000002000040000EE +S315E0793FB08004540020804080800080000000002446 +S315E0793FC000040000344080007000800000C0540096 +S315E0793FD040A0000040008440208000CC00400040B2 +S315E0793FE0844080200080000010000000001010045A +S315E0793FF00000008080408020100000C540008000ED +S315E0794000000400000400104400000040C000641081 +S315E0794010A008400090040000108010000480001091 +S315E07940200010142004002300000028000000080096 +S315E0794030000000008000000000008000020000100F +S315E079404000000400000004000000000000200008E1 +S315E07940508000000000C00000004000000800000079 +S315E07940600000000000400000000000200000800011 +S315E07940700000100000000000000000000000400091 +S315E079408000400080000000200000404000800040B1 +S315E079409000000000000080000010000040000000F1 +S315E07940A00000C000440000000000000000000000AD +S315E07940B040000020400000000040044004880000F1 +S315E07940C0004000000400000000002000000000002D +S315E07940D00020000020000000000000000000000041 +S315E07940E000000000000080000000400000000000B1 +S315E07940F00000000000200000200000002000208061 +S315E079410020000000000040C00000000000008000B0 +S315E07941102000000000004000000080400020000000 +S315E07941200000002000000000000000000000008090 +S315E0794130000080800000000004000000400010C00C +S315E07941400000300004004004400000000000000058 +S315E0794150000000000000000000C40000000000003C +S315E07941600000000000001000000000000040800020 +S315E079417000000040018004400004000020000000B7 +S315E07941800400000040040000400080004004000084 +S315E07941900000000000000000000000040000002795 +S315E07941A072004000200040000000400080000200DC +S315E07941B002000000000000400000400000004000DE +S315E07941C00020000000000010000000002000080038 +S315E07941D040000010002020400000000000000000B0 +S315E07941E00000000000081040000000000000100008 +S315E07941F000004000000000004000000420000000BC +S315E0794200400002000000004000000000100000407D +S315E0794210800000000000002020000000000000205F +S315E079422080000000004040040400200400004000C3 +S315E07942300020200000000000400008000000004057 +S315E079424020008000042000002000000000404000AB +S315E0794250000000200000200000044000002000401B +S315E079426000000000200080000400200000200040CB +S315E07942700000000000040480400400000000000013 +S315E0794280000000000000400400400000000000004B +S315E07942900004004000000000000000A000000000DB +S315E07942A0000000000040200000000000004000000F +S315E07942B0200004400000400000004000000080003B +S315E07942C0100080200000000080040020804000007B +S315E07942D0000000000080008000100010000000005F +S315E07942E000040000000000000020000080000000CB +S315E07942F000800000000000004010000020008000EF +S315E07943000000002000000000000000000810000412 +S315E07943100000000000100000663600000000000092 +S315E07943200000200000000010000010000048002086 +S315E0794330800820000000A000004000000000040092 +S315E0794340000000000000000000022800080080005C +S315E0794350000040000000000000420020000000005C +S315E079436000046028000000200000400000400000C2 +S315E0794370000020100040000000000000200000004E +S315E079438020800000000000000000000000A000008E +S315E07943900040000000000000040100000004000075 +S315E07943A0200000000000802400001000802000003A +S315E07943B06000000000400000000080000040000836 +S315E07943C00010400000000000848000000020008496 +S315E07943D0002000000000000000000000008040009E +S315E07943E0000008000000800800000020000040007E +S315E07943F000000000000060000000000000004002BC +S315E079440000000000004800102000200004000000B1 +S315E0794410840000004000004084C00000841400005D +S315E07944208004400000000000040040000000002005 +S315E07944300400000000800000000000400000000059 +S315E07944404000400080180440004000000020000051 +S315E0794450000000000020000000001000008000004D +S315E079446000800410000004400000004000000000D5 +S315E0794470440000000000004000249008000000108D +S315E079448080000080100000008010001000002004F9 +S315E079449000A61C0000820000000000000000400039 +S315E07944A00000020002201A0000000000000000006F +S315E07944B00000000000000000000000080000000095 +S315E07944C00020000000000020080040000000000005 +S315E07944D0000000000000000000000000000000007D +S315E07944E000004000000000000000000040000000ED +S315E07944F020000060000000000000000000000000DD +S315E07945000000004000004000000044000000200068 +S315E079451024004000040000000400000000000000D0 +S315E079452004000000800000000000000000000000A8 +S315E07945302400800000000000400000208000000098 +S315E07945400000000000A00004004000004020400088 +S315E0794550006000208000002000000020000000209C +S315E0794560000020000000000000800000004000000C +S315E0794570800000800080002020000000000000001C +S315E079458000400040A00000808020200000800040AC +S315E079459010200000040000000080002000000010D8 +S315E07945A000200000000000000040204000000000EC +S315E07945B0001000000000000000000000000000008C +S315E07945C000000000008000004400000000200000A8 +S315E07945D0000000000000000010000000000000006C +S315E07945E00000000004000400040000000040100010 +S315E07945F00040000004001004040000000000000000 +S315E079460000000000000000200044AD6700080000CB +S315E079461000000000020002000002000040000000F5 +S315E0794620000000000000000000000000000000002B +S315E0794630000000000000000000000000000000001B +S315E079464000002000000000000000000000400000AB +S315E079465000000000000000000000000000004000BB +S315E0794660404000004000000000004000000000806B +S315E0794670000000000000008040000080000000009B +S315E0794680000040008000C4040000800000000000C3 +S315E079469000000000200000004000204000040000F7 +S315E07946A040004000004000000080000000208000CB +S315E07946B00000A000040060842000408000000080B3 +S315E07946C000800080008400000000004000000000C7 +S315E07946D0C000000000440000000000004080002097 +S315E07946E000002000208000000000000000000000AB +S315E07946F000400020000000A000000000100000004B +S315E0794700100010000000000010000000100000000A +S315E07947104000400000208000000000100400000006 +S315E079472000000000008000000080000010400000DA +S315E0794730000000000040200000C0000000400000BA +S315E07947404010000000000000102400000000004046 +S315E0794750000004000000000400000000040010409E +S315E079476000004000000004000000000400000000A2 +S315E079477000000000000000000010001000000000BA +S315E079478000001063D3000020000000000000000064 +S315E079479008000000000000000000000000000000B2 +S315E07947A000000000000000000008000000000000A2 +S315E07947B0000000400020200000000000000000001A +S315E07947C0000000000000000000000000000000008A +S315E07947D0000000000000000040000000000000003A +S315E07947E0000000000040000000004000000000A04A +S315E07947F00040008000000080200000840020000056 +S315E0794800000040000000200004A0004000002000E5 +S315E07948100020400080200000000020004000C00019 +S315E07948200044000000400000244000008040000081 +S315E079483060000000000000002000200020000080D9 +S315E07948400000000000804020002000600420002065 +S315E07948500000800040004020600000000000000079 +S315E07948600020000000200000000000800000000029 +S315E079487000000020E0000400000040000000002075 +S315E079488080200020000000200000000400400004A1 +S315E07948900000000400000004008000040000000429 +S315E07948A08020800400000000000000000000000085 +S315E07948B0000400000000100004002000000400005D +S315E07948C010240040000400000004002000000000ED +S315E07948D000001000000000000000000014800000D5 +S315E07948E00004000000000000000000000000000065 +S315E07948F00000000000000004000000005E4F0002A6 +S315E079490000800000000000080000020000000000BE +S315E079491018000000080000000000400008000000D0 +S315E079492000004000004000000000000000000000A8 +S315E079493000200840000000000000000008000000A8 +S315E079494020000000000000000000000040000000A8 +S315E07949500000000000000000000020002000004078 +S315E079496000000000000020000000000000000000C8 +S315E07949700000002000000000004004000020000054 +S315E07949800000000000044004000000002000000060 +S315E07949908000000000000000000000000000040034 +S315E07949A000000000040000008000000000044000E0 +S315E07949B00000000004000400000080008000000090 +S315E07949C00000000000800000000000204080000028 +S315E07949D000000000000000002000800000000000D8 +S315E07949E00000000020000040800000000000000088 +S315E07949F00020000000001000000000000000A00088 +S315E0794A0080009040008000000000240000204010E3 +S315E0794A100040040080000000000000000000004033 +S315E0794A200000000010000000908040000084408083 +S315E0794A300000000000000010000000100080002057 +S315E0794A4000000000000000001000000000000000F7 +S315E0794A5040000000000000100000000000000000A7 +S315E0794A6000000000100000000000000000000000D7 +S315E0794A7080001010002C2A00800000000008000059 +S315E0794A8000100000000040000000403000000040C7 +S315E0794A900000000000000000000000000000008037 +S315E0794AA0004000000000000000200080400008007F +S315E0794AB0000000000000000000A0002000000000D7 +S315E0794AC08000400000200000000000000000400067 +S315E0794AD00000000010000000800000008000200047 +S315E0794AE0C000000000C000000000000000000400E3 +S315E0794AF0008440000004004000000000000000004F +S315E0794B000000800000040420000400040000000096 +S315E0794B10000000800020800004400400400000048A +S315E0794B20000004C000400000800000000000008022 +S315E0794B300000408000000080002000400020044012 +S315E0794B400020004060000000002080004020000046 +S315E0794B500020000040008000400000000000802036 +S315E0794B60000000A080000000040000000000804002 +S315E0794B700000002000004020800000008000040052 +S315E0794B800084000000800400000400400000040076 +S315E0794B902080C4200000040000000000000000002E +S315E0794BA000400000048000000000000400000400DA +S315E0794BB00400000004000000044000000400000046 +S315E0794BC00000000000000000004000000040000402 +S315E0794BD00000000000000000000000000000000076 +S315E0794BE0000000100080000000000000200056DA86 +S315E0794BF00000000000000000000002020010000042 +S315E0794C00000002000000100000000008000000002B +S315E0794C10080000008000000000000080000000002D +S315E0794C2000000008000800000000000000004000D5 +S315E0794C300000000000004000004000000000000095 +S315E0794C404000000000400000000000400000400005 +S315E0794C5000004000400040004000000000000040B5 +S315E0794C6000004000404000004040000000000000A5 +S315E0794C700000404000200020400040004400000051 +S315E0794C8000000000000000008000002000004004E1 +S315E0794C902000000040000000804000000000000491 +S315E0794CA00000000084400000044004002000000079 +S315E0794CB00000000000008000000400000000000011 +S315E0794CC00000000000000000200000000000200045 +S315E0794CD00000000000000000000000004000000035 +S315E0794CE00000000420000000000000000000000041 +S315E0794CF0000400000010002000400000802004003D +S315E0794D000020801000204000A0000400002004006C +S315E0794D1000000000000000100000003004000000F0 +S315E0794D20840000000000202000002000040000003C +S315E0794D300400000004004020000000100000040098 +S315E0794D401000040000000000000044000004400068 +S315E0794D50008400000000040000000000000000006C +S315E0794D60100010000040008D5300008080000000A4 +S315E0794D700000088000000002000800E080000000E2 +S315E0794D8000080000000000000000000000000000BC +S315E0794D9008000000000000000080400000000020CC +S315E0794DA000000000000000000000000000000000A4 +S315E0794DB00000000000000000000040000000002034 +S315E0794DC00000408000000000000000000080000044 +S315E0794DD000800000800000008000000000000000F4 +S315E0794DE08000002080000000000000000080840040 +S315E0794DF00080000000000000004000004000000054 +S315E0794E000000000000008000004080000000000003 +S315E0794E10000000000000008000800000000000A093 +S315E0794E204000000000000000400000000000004063 +S315E0794E3000000000200000000000000000000000F3 +S315E0794E400080000000008000000080000080000003 +S315E0794E504000204000000000000010400000800083 +S315E0794E60000000100000000000000010042004009B +S315E0794E70400000006000000000001000000004001F +S315E0794E800000000000000010001000000000100093 +S315E0794E90000010200000204040004004000004405B +S315E0794EA00010000000000000001000000040200023 +S315E0794EB000100400000000008400000000400000BB +S315E0794EC000400000400000004000000004010000BE +S315E0794ED0000000000000000000000000040000006F +S315E0794EE0A67100100000800000024000000000007A +S315E0794EF0000002400000020080000000000000008F +S315E0794F000000000000000000000000000000002022 +S315E0794F10000000000000000000200000000000080A +S315E0794F200000000000002080000000000040000042 +S315E0794F300000000000000000000010000000608022 +S315E0794F4000000000000000000000400000000000C2 +S315E0794F500000000040000000002000000020000072 +S315E0794F60000000804400204000000000400000007E +S315E0794F700080000000008000200040000000000072 +S315E0794F80000020004000000024000000000000003E +S315E0794F9080000020000000000000402000000000B2 +S315E0794FA000000040000000000040000040004000A2 +S315E0794FB000800000004080008000800000208000B2 +S315E0794FC00000000000800000404000002040000022 +S315E0794FD04000A0000004000000000000000040004E +S315E0794FE0000000200000400000800440000004003A +S315E0794FF0000080000000240000000420000000008A +S315E079500000004000000000000010000000100000E1 +S315E079501000000020000000000020000004000000ED +S315E07950200000000000000000000004000004000019 +S315E07950300000000000000400000000000000040009 +S315E079504000000400000000000000001000000000ED +S315E0795050000000000404200004E5D300008080000D +S315E079506000000800000000000000000000000000D9 +S315E07950700000000000000000000040000008000089 +S315E079508008000000000000080800000000000000A9 +S315E079509000000080084000000000000000000000E9 +S315E07950A00000000000000000004000000000000061 +S315E07950B00080000000000000000000202000400091 +S315E07950C000000000000020004000200000000020E1 +S315E07950D0000000000000000000000000002000044D +S315E07950E000000400000400040000000020402004D1 +S315E07950F000000000000000400000000024000000ED +S315E079510000004000000000000400000004000000F8 +S315E079511000040000000000008060000000000080CC +S315E079512000800000000000000080000080000000A0 +S315E07951300000000000800000000000000000000090 +S315E07951400080008000800000002000000000000060 +S315E0795150004020000000000040800080000004004C +S315E079516000000000000000000000002000200000A0 +S315E0795170200000000000000040208020800000C070 +S315E0795180000000C0008000E000000000041000008C +S315E079519000100010001040201000100004000000FC +S315E07951A0000000000000000004000000000000009C +S315E07951B0100000000000400010040000001000001C +S315E07951C0002000000000000000000000100000113F +S315E07951D001000367000A00000000000A00080000E9 +S315E07951E00200000042002A100A0008000000004090 +S315E07951F000000800000000004008000800000000F8 +S315E079520000482000002000080048004020080000FF +S315E07952100008000000400020000000000000004087 +S315E0795220000040000000404000400000404000009F +S315E0795230000020006000208000000000608000000F +S315E079524080C00000C0800040000080C0008004601B +S315E079525000A00420400060002404006000000040C3 +S315E079526020200440A044A0044040000040004000D3 +S315E07952700000A02080A40040048020004040808087 +S315E079528004C00400C0A00484000480400080440087 +S315E0795290800000200020404080000040000040006F +S315E07952A02020806000C000608000A080200040005F +S315E07952B020000000800080208060808060000040CF +S315E07952C00040006000A000840020100030800020BB +S315E07952D0400070008080240450C00400E0C00420BF +S315E07952E000200404201004C0000024000000A480FB +S315E07952F00010C40010408000000010000020D0C0EB +S315E07953000400C08400C41000000074200414001066 +S315E0795310042410000420000044200000000010005E +S315E079532000041000045000004450040010004000CE +S315E0795330440450000400140004000000000010004A +S315E079534000100000100080142014401D0300022094 +S315E07953500000000040029000000A10000840C000FA +S315E079536040200010400800000008000040080800CE +S315E079537080000000000800008000000000804020E6 +S315E07953800800006800004000000000480000802026 +S315E0795390200040800000804000006000400000402E +S315E07953A000400040400040806000009000008000AE +S315E07953B0408080004080A0002080800040804000CE +S315E07953C0002060004400E40000C040004000640032 +S315E07953D000644024842064008400044080000480D2 +S315E07953E08044002080000080A00040A0A000042036 +S315E07953F0640040048400800060840000000420009A +S315E079540024804420204484004020C000400040208D +S315E079541000C000A040004420002000C00080802029 +S315E0795420A0008020000000A00080C000000000807D +S315E0795430000020C040A000C000E00040804040105D +S315E0795440042000C000A0300000E0800040A0801079 +S315E07954502044C01044A04004006420040400308451 +S315E07954600054000004A000044420B004D4200000D5 +S315E0795470C0000000C00000C0E00464008000A040E5 +S315E07954800000244020140420102414000004440071 +S315E079549040044400041004000410000004104000A5 +S315E07954A040004000440040104004400444000000BD +S315E07954B00500201000000000001000001000140024 +S315E07954C0042000002ED100000200180800400000F8 +S315E07954D082821810004080000202B01040408000BD +S315E07954E000000008004000000040000088800000CD +S315E07954F00808402080800000000860608080000015 +S315E079550008084840000000000000A0C00000000044 +S315E07955100000C06000000020000040C000000000EC +S315E07955201030C0C04000000020C0C0C080000040FC +S315E07955302020808040000040606000800000040404 +S315E0795540606080000000040460600000800004046C +S315E0795550E0E0000000000404E0E0000000200080C4 +S315E0795560C0C08000040420A0C0C0800004042020CC +S315E0795570C0C00000040400A080804000040460609C +S315E079558080800000000060E08080000000046060B8 +S315E0795590000080000040E0E0400000000000E0E02C +S315E07955A0000000000000C0C0200000002060C0C0FC +S315E07955B04000000020A0C0C00000040020208080C8 +S315E07955C04000004060E080800000040470E0808064 +S315E07955D0000004A46020300000001484E0E0A0001C +S315E07955E000000474E0E0C00000000010C0C0C00014 +S315E07955F000043020C0C000000404303060000000B0 +S315E079560004243010008040000444406040000000EB +S315E0795610040400400080000004844040100000004B +S315E079562004044040000000000404802000000100EA +S315E0795630101010800000000410308040004BFE000E +S315E0795640020218180808404004823292181C006059 +S315E079565000003038585840400000000000004140D2 +S315E079566008000001808080C008084840A0A08080BA +S315E07956700000686880E082801000C84A4050008067 +S315E07956800000A0A0C0C000000000C0802020040077 +S315E07956900000404480E000001010B0B0C0C00000C7 +S315E07956A0200040C0C1C008002021A02800000000E9 +S315E07956B02020206080000000242460600200140429 +S315E07956C0A406207000000404E0A44060000004040D +S315E07956D064A0E0E0040000004004C0E0000020207F +S315E07956E060E0804000042020E0E081800804400505 +S315E07956F02028800000046024E0608080000020207B +S315E0795700E06002801000E066203000000000E06092 +S315E0795710006000000000E0E060E004002000404422 +S315E0795720404000002020E06040C000002020A0201A +S315E0795730C1400C0070212028000000007020E0E0D4 +S315E079574080800404602400A08280100060460020F6 +S315E0795750008014146440E0E0000000007414A06056 +S315E0795760040020009084C0A00000103060A0408042 +S315E07957700000303010700100080070151018808034 +S315E07957800400400020200000000010100000828014 +S315E079579014040002000000801014100400000000D8 +S315E07957A010008484202005002010101480A00000C9 +S315E07957B01414B0B040401EA600000018180808403E +S315E07957C0400202121010104000000028305050407C +S315E07957D0400000080808084040000000008080800A +S315E07957E080080840488080808000004848E08080D2 +S315E07957F0800000C840404000000000A0A0C0C00082 +S315E079580000000080C02020000000000040C0800039 +S315E0795810001010A080C0C000000020C0C0C0C00049 +S315E0795820002020A0200040000060206020000000D9 +S315E0795830002424202000000404642460200000046D +S315E079584004E0E020000000000020E0E0C000000075 +S315E079585000C0C040C000000020202000C004042021 +S315E0795860206080800004000400A020808000002071 +S315E07958706060A080000000202000C0800000000069 +S315E07958800020000000000020E06060000000004099 +S315E0795890E0E0600000000040404040000020000069 +S315E07958A0E0C04000000020B0B040C0000060309019 +S315E07958B090808000000050D0D00000040430702041 +S315E07958C0C0000000006060202000001010A4E440D1 +S315E07958D0E000000000307060E0000000009090C0C9 +S315E07958E0C00000040460A0408000003434306000D9 +S315E07958F0000000143010008080000444403030000D +S315E07959000004040404101080800400000000000004 +S315E07959100004040010000000000010949420200098 +S315E07959200010001010808000000014B0B040402ACA +S315E0795930A900008010100808404000021A181010DB +S315E07959400040000028305050404000000808000030 +S315E07959504040000000008080808008084840A0A090 +S315E0795960808000006868A0E0808000004048404080 +S315E079597000000000A080C0C000000000C0802020A8 +S315E079598000000000404080C00000101090B0C08058 +S315E079599000002020800000000000202020A00000E8 +S315E07959A0000020204040000000040444404000000C +S315E07959B000002404206000000404E0A06060000098 +S315E07959C00000E400A0E000000000C0804040000450 +S315E07959D00024602040C000000020C0C0C000000064 +S315E07959E000002020800004040040C0400000000050 +S315E07959F02000E060008000006024000000000000E4 +S315E0795A00A04080600000000040E020A00000000097 +S315E0795A104040404000002000802040800000202067 +S315E0795A2070D040C004002010B0B0808000006030B3 +S315E0795A307070000004046060A020808000006044FB +S315E0795A40002000001414A4C400200000040430509F +S315E0795A5060A0000000009080004000001030A06057 +S315E0795A6000C00000303050300000000030000010F7 +S315E0795A70000000001450505000000000040410109B +S315E0795A80808004040000000000000004001000009B +S315E0795A9000000010949420200000001010108080FF +S315E0795AA0000014042030404010CD000000101008AA +S315E0795AB0084040020210101818408000008008580B +S315E0795AC058C040000000000808404000000000800F +S315E0795AD080808008084048A0A0808000004848E09F +S315E0795AE0A080800000484040400000000080A0C0CF +S315E0795AF0C00000000080C06060000000000040C087 +S315E0795B008000001010E0C080C000002020404040B6 +S315E0795B10400000000020A000800000602060600066 +S315E0795B200000004404808000000000440440000046 +S315E0795B30000404C0C00000000000008464E0800036 +S315E0795B4000000040408000040000000040804004EE +S315E0795B50042000608080400000000080008080049E +S315E0795B60042020008080000000406000C0800000B2 +S315E0795B7000044060400000000000E0008000000082 +S315E0795B800040C0800000000000C0C0C0C000000036 +S315E0795B900000C08040000000204060C04000041052 +S315E0795BA0202020000000001040404080800404302E +S315E0795BB030A060000000006460002000001010242E +S315E0795BC0648000000000007010A0200000000090C2 +S315E0795BD090000000000000A06000C0000034306052 +S315E0795BE02000000404042010000000000410106076 +S315E0795BF0600000040414140000808004044000402E +S315E0795C004000001414100000000000100084842085 +S315E0795C1020000010001010808000000010000000C5 +S315E0795C2000BB0A0002000808080000000002020230 +S315E0795C30080840400000181000000000000008083D +S315E0795C4000000000000000000000000008080808D5 +S315E0795C5020200000000028084060000000080808BD +S315E0795C600000000000000000000000000000404055 +S315E0795C7040400000000000404040000000007050C5 +S315E0795C80004000002000C080004000000000008055 +S315E0795C90000000004040606080000000646440607D +S315E0795CA00000000064444040000004044040C0E045 +S315E0795CB000000000C040600000000000C0808080E5 +S315E0795CC0000020004040804000042000602000C0B1 +S315E0795CD0040400008080808000046020E0A0808059 +S315E0795CE00000406080E080800000606460600000D1 +S315E0795CF00000C0E020E000000000A000C0C0000085 +S315E0795D0000008080808000002020C0E080C0000014 +S315E0795D10000080E0800004000020B0B000000000C0 +S315E0795D20604030B00000040440408060000000002C +S315E0795D3020240020000014146040C0E00000000038 +S315E0795D407050C0C0000000004040C0C00000101094 +S315E0795D508040804000001414207000000000302458 +S315E0795D601010808004004040707000000000000050 +S315E0795D701010000004040000000000000004001088 +S315E0795D80000000000000141400000000001000106C +S315E0795D9000000000141080900000E12700000088E0 +S315E0795DA0080008000002020202000000000000007C +S315E0795DB0180000000000000000080800000000005C +S315E0795DC0000000000008080808000000000000282C +S315E0795DD0286040000008000800000000000000008C +S315E0795DE00000000000000000000040000000000014 +S315E0795DF00000000000000040400000000000208024 +S315E0795E008080800000000000800000000000000033 +S315E0795E1000000000004444604000000000242400B3 +S315E0795E2000000004042020E0C000000000C040002B +S315E0795E3040000000008080808000000020606000E3 +S315E0795E4080040000202080C0400404000020200067 +S315E0795E5000000000404000000000006040A0A00083 +S315E0795E6000000044604040000000002000C0C0000F +S315E0795E7000000000A0604000000000800000800083 +S315E0795E800020002000000000002020F09000800033 +S315E0795E900420000000808000006060A0808080049B +S315E0795EA0005050E0000000000004002000000010DF +S315E0795EB0108080E0C0000000005070C0C000000093 +S315E0795EC000404040C000000000804080400000145F +S315E0795ED01410400000000004200000808000044097 +S315E0795EE0404040000000000400000000000400008B +S315E0795EF00000000000000010404040000000000073 +S315E0795F00040000000010001000000000000004808A +S315E0795F108000003B1A0080000000080000000000C5 +S315E0795F2000000000404000002A3A0000000000002E +S315E0795F3008080000000000000000000000000000F2 +S315E0795F4008080000000000002808000000000008AA +S315E0795F50000800000000000020200000000000009A +S315E0795F604040404000000000004040400000000012 +S315E0795F701070004000000000400080C00000202042 +S315E0795F808000000000004040000000000004242466 +S315E0795F90002000000000644460E000000404000092 +S315E0795FA0A0A0000000002080200000000000400052 +S315E0795FB0404000042000000040C000000404400096 +S315E0795FC00040000000008080000004044040E0A02A +S315E0795FD0808000004000006080800000000460203E +S315E0795FE00000000080C020E00000000020008080F2 +S315E0795FF0000000008080808000002000C0E080C042 +S315E0796000000000001010008004000010101080805D +S315E079601000002010901080800404000040C0000049 +S315E079602004000004102000001014A0C00020000035 +S315E079603000003090000000000000404000000000C1 +S315E079604010104080C000000000044000000000000D +S315E07960501024000000000400101010100000000069 +S315E07960600004101000000404000410000000000091 +S315E07960701010000000000010141400000000001059 +S315E0796080000000000000000020304040277D00003D +S315E07960900000000008000000000004082800000065 +S315E07960A0020A0A080800000000080808080000004B +S315E07960B00100004800000000000808000000000028 +S315E07960C000080000000000080208100080000000C7 +S315E07960D00000000000000000000000004000000021 +S315E07960E004002000000000000060000000000000CD +S315E07960F00000000000000100088040000000004038 +S315E07961004000000000000044402000000000024406 +S315E079611050000000000004000080800000000000CC +S315E0796120A00000000000000020000004000020002C +S315E0796130008000000004042080C04000010008804F +S315E0796140C0000000000040000000000000004000B0 +S315E07961500000000002043000C0000000000000806A +S315E0796160800000000000A0200000000004802000EC +S315E07961708000000000200000000000000040408020 +S315E0796180000005100890D0000000001000301000E3 +S315E0796190000000101040C00000000204109080005A +S315E07961A00000000000200000000000100000000060 +S315E07961B000000040608000000000004080C00000E0 +S315E07961C00404004000000000050408000000000017 +S315E07961D004101010100000000014101010000004D4 +S315E07961E00204001080000010101010000000001466 +S315E07961F000141400000000100000200000000000E8 +S315E07962000000000000DF55000082800000080000F1 +S315E079621000000006002040000000000200000000B7 +S315E079622000000000000000000001000000004000CE +S315E0796230000008000000000000000028400000008F +S315E0796240000A001000800000000000000000000055 +S315E0796250000000000040000000044020000000003B +S315E0796260000040400000000000000000000000014E +S315E079627000080040C0000000004000000000000077 +S315E07962804440408000000002005000808000040015 +S315E07962900004400000000000C0000000000000009B +S315E07962A04020400004000400004000400000000067 +S315E07962B0000000C00001000C0040400000000040F2 +S315E07962C000800000000000404000800000020410D9 +S315E07962D0408080000000800080000000000000001F +S315E07962E000A000000004802080000000000080000B +S315E07962F00080000000204000800004010008004092 +S315E07963004000000000602000000004000040C0006A +S315E079631000800402041000008000100004C0000030 +S315E07963200000040004000000000000005020200076 +S315E07963300000003400008000040000100010000026 +S315E07963400005100C100000000400100400000000A5 +S315E079635000000000004000000402040000C00000D4 +S315E079636000000000000000000000000400000000CA +S315E0796370000000200000000010041000000055D055 +S315E079638000000000800000000000000004002040CA +S315E0796390000002000000000000000000000000009C +S315E07963A00000010008004000000008080000000035 +S315E07963B000000008004000000000020010008000A4 +S315E07963C0000000002000000000000000400000000E +S315E07963D000000400204000000000000000400000BA +S315E07963E00000000040400000010008004000000085 +S315E07963F000000040008000000400004080000000BA +S315E0796400060410408000000004004000000000000F +S315E07964100400404000000000040020400000000431 +S315E079642000008000000004040000C040000005047C +S315E07964300800C08000000004004080800000000071 +S315E0796440002080800000020070408000000000009B +S315E0796450C0400000000000008080000000000400D9 +S315E0796460A000000000000000C0C0000000000000AD +S315E07964700000000001000800400000000000000074 +S315E07964800000000000040040808000000200302017 +S315E07964908000000004000020000000000010A00049 +S315E07964A00000000004002000000000000000000069 +S315E07964B000000000102000000000010028004000E4 +S315E07964C00000000000000000000004000000000069 +S315E07964D00000020050008000000000044040000007 +S315E07964E00000040000000000000004002000000025 +S315E07964F0000000000000000892000883831C1C60FD +S315E07965006200000343181C406000004707383840B2 +S315E079651040000007073838C0C000000607303880E9 +S315E0796520C001410E0E7070808001010E0E70708090 +S315E07965308001010C0E6070008043031C1CE0E000D2 +S315E07965400003031C1CE0E000000303181CC0E00014 +S315E07965500007073838C0C0000007873838C0C00060 +S315E0796560008687303880C001010E8E707080800198 +S315E0796570010E0E7070808001018C0E6070008003D0 +S315E0796580831C1CE0E0000083031C1CE0E00400832C +S315E079659083181CC0E0000087073838C0C000008740 +S315E07965A0073838C0C000000607303880C401010ECC +S315E07965B00E7070808001010E0E7070808001010C82 +S315E07965C00E6070008003031C1CE0E0000003031CEE +S315E07965D01CE0E000000303181CC0E0000007073860 +S315E07965E038C0C0000007073838C0C0000006073059 +S315E07965F03880C001010E0E7070808001010E0E7038 +S315E079660070808001010C0E6070008003031C1CE031 +S315E0796610E0000003431C1CE0E000004303181CC0C3 +S315E0796620E0000047473838C0C0000047473838C4EB +S315E0796630C000000607303880C001410E0E707080C8 +S315E07966408041010E0E7070848001010C0E6070003D +S315E07966508403031C1CE0E0000002021C1CE0E0005D +S315E0796660000202181CC0E0100006063838C1C100E5 +S315E079667072940010200000000002801040000008AB +S315E079668040401838004008080000180840400808DB +S315E07966904000080040800000000000008080004053 +S315E07966A0000060408000000000002040000000000B +S315E07966B0000000C0000040000000C080000000003B +S315E07966C000002040000040400010800000000040BB +S315E07966D0302000000000400000000080000000004B +S315E07966E0202000804000800000200000000000802B +S315E07966F0202080000000000020A0000000000000BB +S315E0796700A060000040000400A040000040000020A6 +S315E0796710000000008000200080400000C0002000DA +S315E07967200080000080042020008000008000202086 +S315E0796730008000408080000080000000000000C0FA +S315E07967400000C040000040400000008000000000EA +S315E079675000000000000000C00000C0C00000C0805A +S315E0796760001000001030400010100000305000801A +S315E079677050100000503080001000808020600000CA +S315E0796780206000006020000080200000A02000004A +S315E079679020000000A00000000000002080402000DA +S315E07967A000802020404000200400202000002020A6 +S315E07967B000002020800020100000701000001010EA +S315E07967C004001000800000000014000010100000A2 +S315E07967D010100000101000001010200010000000CA +S315E07967E000008080000000002057EB0000000010D8 +S315E07967F000000000800000000000000000000000BA +S315E07968000000000000000400100000000000000015 +S315E079681020000000000000000000000000000000F9 +S315E07968200000800000000000200000000000000069 +S315E079683000000800000000000000000000000000F1 +S315E07968400000000000000000000000008000000069 +S315E07968500000000240000000000000000000000097 +S315E07968600000000000004000000000000000000089 +S315E079687000000000000000000000000000000000B9 +S315E079688000000000000000000000000000000000A9 +S315E07968900000000000000000000000000000000099 +S315E07968A00000000000000010000000000000000079 +S315E07968B00000000000000000000000000000000079 +S315E07968C000000000000000000000000000000080E9 +S315E07968D00000004000000000000000000000000019 +S315E07968E000000000800000000000000000000000C9 +S315E07968F00000000000000080000020000000000099 +S315E07969000000000000000000000000000000000028 +S315E079691000000000000000000000040020000000F4 +S315E07969200000000000000000000000000000000008 +S315E079693040000000000000000000000000000000B8 +S315E079694000001000000000000000000000000000D8 +S315E07969500000008000000000000000000000000058 +S315E079696000005C490000000200000002A00000007F +S315E07969704010800000000008000040000020000080 +S315E07969802000000000000040000020000000000028 +S315E07969900020000000000000000000200000000058 +S315E07969A00000000000000000000000008000000206 +S315E07969B0800000E000800000000000000000000098 +S315E07969C02030008000000000400000200000000038 +S315E07969D00000000000800040200004000020000450 +S315E07969E00000C0040000040040000044008000007C +S315E07969F04420000000800000000000000040008094 +S315E0796A00040000840000200000000000048060801B +S315E0796A100080200400000000808040000000A00093 +S315E0796A2080004020802040A0000040006000000403 +S315E0796A3000408000004080002004004080008040D3 +S315E0796A4000008080400080002080002080C0000027 +S315E0796A50800020402000000000800000A0000000B7 +S315E0796A60400004A040008000802000000000000083 +S315E0796A7004004000000440040000000080040000A7 +S315E0796A804000000400000000000000900080000053 +S315E0796A904000000000008030800000000400000023 +S315E0796AA0040000100000200440008020000000006F +S315E0796AB00000000000002040040000100000000003 +S315E0796AC02080000000400080000000000000000007 +S315E0796AD040000000201000000000004E0F0000008A +S315E0796AE002004000400004002040000000008000E1 +S315E0796AF002000000400000000008000000000000ED +S315E0796B00000200000000400000000880000000005C +S315E0796B1000200000002020000000040000000000B2 +S315E0796B200000000000800000800200000000000004 +S315E0796B300000000000200000000040000040000056 +S315E0796B400400000000004000000000000000004062 +S315E0796B5020400000000000200010400000004004C2 +S315E0796B604000000000200000400400000000000022 +S315E0796B7004000000000000400080000000000000F2 +S315E0796B800000000000000000C000000004000000E2 +S315E0796B900080004000400000000000C000C06000B6 +S315E0796BA000200000000000400080008000008000A6 +S315E0796BB0000000000020000000008000C000008096 +S315E0796BC000008000000080002000002040000000E6 +S315E0796BD00000000080000000000004002000008032 +S315E0796BE080000000008000000000400000004000C6 +S315E0796BF004002000800000040040800000000400CA +S315E0796C0020000000001000000000000000000000F5 +S315E0796C1000000000100000004000008010006000D5 +S315E0796C2040000080000000000000000000801004B1 +S315E0796C300000000010800000200080000000600065 +S315E0796C4000A00000000000010000002020001000F4 +S315E0796C5000000000889A00000000000000A2000011 +S315E0796C6000000010800200000008004000100020BB +S315E0796C700000200000000000000000002000000075 +S315E0796C800000802000000000000000000000000005 +S315E0796C900000000010008000000000000002000003 +S315E0796CA0000020000020C0008000000030000000D5 +S315E0796CB000402030002080004000400000002000A5 +S315E0796CC000000800000000800000000004000400D5 +S315E0796CD0000400A200040000000000008000448067 +S315E0796CE02000002000000000800000004000000045 +S315E0796CF000000400008024002000008000000440A9 +S315E0796D00A000008060000000200000208000008064 +S315E0796D102080000000200000008000500020400024 +S315E0796D20000400004000804000802004008040009C +S315E0796D3080400000000000000000200000A0000074 +S315E0796D40408000000000A0000000004080002000A4 +S315E0796D50000040000000C0000000000020000400B0 +S315E0796D60200400800000000084000000000040005C +S315E0796D700080000000440000000000000080200050 +S315E0796D8080004000000000A000B000002000040070 +S315E0796D90000004000000000000800400008020006C +S315E0796DA00000000000000020004400000000000020 +S315E0796DB00000000000000000000000000000000074 +S315E0796DC000400000000080000000000080C451000F +S315E0796DD010802000000800401000104000000000FC +S315E0796DE0000040200000006028000000000020003C +S315E0796DF01000002000000000C0000000388040202C +S315E0796E001000000000000000000040002040000073 +S315E0796E108840400000A0000000C00000004000402B +S315E0796E200040000000800000204000008020200023 +S315E0796E30000080000020042000002080000000008F +S315E0796E40000080400040200044200020000080209F +S315E0796E5000402000002000A14020000040002040B2 +S315E0796E60002000000440004000000000000040825D +S315E0796E700040806000000000000000E00000008033 +S315E0796E80000000000000840000440060000000007B +S315E0796E9080404000800000204000600000C0C000D3 +S315E0796EA020804000004040000020240000000000DF +S315E0796EB00080000000000000000080002000400013 +S315E0796EC010A0408000002000200020408000004093 +S315E0796ED0200020000020A040408080004000204033 +S315E0796EE000000080400000800000000040000000C3 +S315E0796EF040000000400000008040004000408000F3 +S315E0796F0000800000001440002050000000100000CE +S315E0796F108040C02000002080800000001000000042 +S315E0796F2000004000000000408010000000000000F2 +S315E0796F3000008000000000004000000010008000A2 +S315E0796F40009000001000C776000040401000200055 +S315E0796F5030400000200000401020001000002000A2 +S315E0796F600040000020000000000000000000102032 +S315E0796F700020004020000000002000600060000052 +S315E0796F80A0200020000000002020000000000C2056 +S315E0796F90C0100060000000000000200001400060A1 +S315E0796FA0000400200000000040402020000000009E +S315E0796FB000002000002000002000002000000040B2 +S315E0796FC080000000006000000080000000000400FE +S315E0796FD000800000200000008000040004002420E6 +S315E0796FE080000040000000002420000000044040BA +S315E0796FF0240020000020000000208000000000002E +S315E07970002000808000200040A0200000A020000021 +S315E079701080000000000000000000002000200080D1 +S315E079702000000080042000800040000080000020FD +S315E07970308000400000008020000040200080200091 +S315E079704000000000002000000004000000C00000FD +S315E079705000000020002000000000A0002000800051 +S315E079706040004040200000C0008000208080000081 +S315E07970708000000000000000000400B0000040A09D +S315E0797080008000C000802080000000000000200021 +S315E07970900020004000C00080000020000080000051 +S315E07970A00000000090500000400010004000A080F1 +S315E07970B0000080009000800000400000002080A55C +S315E07970C06100401000700008601000001060000058 +S315E07970D040000020400020002000402020000000F1 +S315E07970E00000001800000050000020402040883061 +S315E07970F000400010004040002000100020002000F1 +S315E0797100000000800000A00C208000C00020004034 +S315E0797110004040200100008000204420200020002B +S315E079712020000060200020000420000020000000FC +S315E0797130200000004020000080204004200000006C +S315E079714080208000200000000180A04020000040DF +S315E0797150C00000200004600060800000400000006C +S315E079716002C4600020C004400064002000E02000F2 +S315E079717000802000000000002084008400200020A8 +S315E07971802040C000A040802000A00040006000C000 +S315E0797190804000A040200060408000002000200070 +S315E07971A0800000C080000000208000000080A00000 +S315E07971B060004030608000A06000000020402080C0 +S315E07971C000400024200000C060800040802000401C +S315E07971D020000080008040008000400020004000D0 +S315E07971E000404000208000C0800080000000004020 +S315E07971F00080048020900054008070004080A000D8 +S315E0797200800000C000C00000200000A00040C0104F +S315E0797210000000000000800000008010001050009F +S315E079722000401000408000800000E000801000906F +S315E07972308000004000012010F286002000802200C4 +S315E07972404040282000100800000800200000004097 +S315E07972500800000020004800008800008000002037 +S315E07972600000880068000008001020008060002097 +S315E0797270400000086020400000080000000000009F +S315E07972800030408020000020000000004000080027 +S315E079729000100080404020200004600000408060BB +S315E07972A000000080202000800000302000000000EF +S315E07972B0A0600000000000000000404004400000AB +S315E07972C00000204400000000000000800004000077 +S315E07972D00000000000C0000040804080000000CC43 +S315E07972E000402000800000C00000020030200060ED +S315E07972F00028000000002000E060000000000000A7 +S315E079730000200000200020008020400400802480B6 +S315E0797310200020200060100000400000800020005E +S315E07973208000C0208020400000802000400044009A +S315E07973300004202000040000A0004004C0906040D2 +S315E079734084A010800080000004442000000004102E +S315E0797350400040806000C0C000004040200000004E +S315E07973600040002000108000401000044000000436 +S315E0797370800040040020800000008000A00000002A +S315E0797380000040C00000C4000040008000000040DA +S315E0797390002400400040200000200004A0004010B6 +S315E07973A040000000500088000000108000802040F6 +S315E07973B00098D500800000004000400040000010B1 +S315E07973C00000080000000000004800000000080006 +S315E07973D00000008000A000000020800848004000FE +S315E07973E00000000080000000000000A00040A040FE +S315E07973F000004000004000204000200000008000AE +S315E07974000020000000000008000000104080000025 +S315E0797410000000000000004020000000200000800D +S315E079742080002000000000000000402000200000DD +S315E079743000000000000000000000000000000000ED +S315E0797440002000000040000040000000000000003D +S315E0797450000000000000000000000000800000202D +S315E0797460008020020010000000200000000080006B +S315E0797470000000400000000000000000002000202D +S315E079748000800000000000044000000000000000D9 +S315E0797490400000000000000000000000000000202D +S315E07974A00000802000000000000024008000000039 +S315E07974B000000000000000200000006000000000ED +S315E07974C00004000000000000000004000020000035 +S315E07974D040000000000000000000004000000000CD +S315E07974E040800000800000000000000000A000005D +S315E07974F0000000808020000000000000008000008D +S315E07975000000401000000000000000000000C0000C +S315E079751000000000802000401000000000500008C4 +S315E079752000000000000000200100F4820000000065 +S315E079753000000000200000000000000000002000AC +S315E0797540008000000000004000000000000000001C +S315E07975500000000000002000000000081000000094 +S315E07975600020400000080000000000000000000054 +S315E0797570002000100080200000000000204000007C +S315E079758000000000200000000000000004000080F8 +S315E0797590004000000000002000000000002000000C +S315E07975A00020000000000020000000402040044058 +S315E07975B0000000200000008000400000008000000C +S315E07975C0000000000000004080006040008000007C +S315E07975D00004000000000000000000000000000048 +S315E07975E00000400800400020004020200000000014 +S315E07975F000000000000400000000004000000420C4 +S315E079760000840020000000600000004000000020B7 +S315E0797610008000804000000000000000004000008B +S315E07976208400000000000020800000400000C44093 +S315E0797630000084800040000000000044200000043F +S315E079764000104000008040008000000040600000AB +S315E0797650000080008040201000000000000000005B +S315E0797660000480006004408000000004000000000F +S315E07976700040001040000000C400000000008000D7 +S315E079768040400020000000002000000000040000D7 +S315E079769000000080200000800000000000000080EB +S315E07976A0000000E61A002080802200000800200011 +S315E07976B040080000000040000000000000002000C3 +S315E07976C00000100000180000200000000000000013 +S315E07976D02000080000200000A04000000000002003 +S315E07976E000000000001800000000000000400000E3 +S315E07976F000000040000000100000000000000000DB +S315E0797700402020000060004000000000000080007A +S315E079771000000000100000000080008000000000FA +S315E07977200000200000000000000020000000004476 +S315E07977300000000000000000042000004000000086 +S315E07977400000000080000000000088406000000032 +S315E079775040000040000000202000000020000000EA +S315E079776000000080000000000020000020000000FA +S315E079777000000000200000008000200000000020CA +S315E079778010000000008000800000000000002080EA +S315E07977900440000000000000004020000000204086 +S315E07977A00400A0000000000010800040100000A056 +S315E07977B0800000000000200000000000400000008A +S315E07977C0004080000000000040000000000000005A +S315E07977D08040000010004400000000000000000036 +S315E07977E000200000000000000000000000000040DA +S315E07977F00000000080000000000000000004004066 +S315E079780000000000200000000080004000400000F9 +S315E07978100000000000B000C000000040EB47000027 +S315E07978202000800800200008002000080000000001 +S315E07978304000A00000002000008020008880200021 +S315E079784000006800908000002000C000C0002000A1 +S315E079785000000000000000000088000000088000B9 +S315E07978600000000000000000002000100000200069 +S315E07978700000C00080000000000000002000400009 +S315E07978800000400040000000002000000000008079 +S315E079789040400040800000204400040000004000A1 +S315E07978A00000000040200000400000004000240075 +S315E07978B040000000000000000400004000000000E5 +S315E07978C04000000040008000404000006000000079 +S315E07978D00000800040004000000000200000000029 +S315E07978E000402000000040240000000400004080B1 +S315E07978F0000040A000000000200000000000000029 +S315E079790000000000208020000000400004004000D4 +S315E079791020800000400400800400404000200020E0 +S315E07979200020000000000000400000000000002078 +S315E07979300000008000002020800080408400000064 +S315E07979400000400000800080600000200000000018 +S315E07979500020000000008000000000100080001088 +S315E0797960000040001000000020000000E010400018 +S315E079797000008040000020000010400000000080F8 +S315E079798000000080404000400000304000000000E8 +S315E07979900000000000C9A40000C08050000000008B +S315E07979A04000000040004000000000004000000078 +S315E07979B00000000000000040001000800020200850 +S315E07979C00000000800200000000048004000280080 +S315E07979D000002000008000000000401000C0000098 +S315E07979E00040000000000000800000000000000078 +S315E07979F03000000080000000000000000000000078 +S315E0797A0000000000000000000000000004000020F3 +S315E0797A100000000000000000000000000000000007 +S315E0797A200400204000000000000000000000400053 +S315E0797A300000200000004000000040200000000027 +S315E0797A4080000080000020000020200000800000F7 +S315E0797A5000400000040080000020000000040000DF +S315E0797A600040006020408000000000204000A00037 +S315E0797A700080240000000000000000000000000003 +S315E0797A80800000800000008000C0200404000080AF +S315E0797A90000000000000000400000040000040A063 +S315E0797AA00020800000800020000000000000000037 +S315E0797AB000000000000000402000000040000000C7 +S315E0797AC000000080000000000000008000A00000B7 +S315E0797AD010A00020002014000000800000000000C3 +S315E0797AE040800080000000000000000000200000D7 +S315E0797AF00000000020008040200020002000008067 +S315E0797B0000000000009000000020200141002BC316 +S315E0797B1000000000000000004000000000000000C6 +S315E0797B20002000004020080000002000002000002E +S315E0797B30000020000800000000801000408000402E +S315E0797B400800600000002000000060000000C0002E +S315E0797B5000004000000020001000202000402010A6 +S315E0797B600000000040000000000000002000000056 +S315E0797B7020000000200000200020000000200040C6 +S315E0797B8000000000200060000000004020040000B2 +S315E0797B9000048000400000000000000000000000C2 +S315E0797BA04020400040000000000000000000000096 +S315E0797BB00000400000004040000040000000000066 +S315E0797BC0008400000000000040A0000000004000B2 +S315E0797BD020004000800020800000000000800080C6 +S315E0797BE040002000A0000000004000000000800076 +S315E0797BF08000002000000000000000000000000086 +S315E0797C002000000000000000A00000000000000055 +S315E0797C100000000000000000000000800000000085 +S315E0797C200000000000000000000000402000000095 +S315E0797C3004000000000000004000804000000020C1 +S315E0797C40C000300400500004000400801080000079 +S315E0797C5000004400100000008000002010000000C1 +S315E0797C600000000000000000100010000080000015 +S315E0797C700000101000000000200010000000201025 +S315E0797C800080001000000037980000100020000006 +S315E0797C90080000004800000008000000000000002D +S315E0797CA000600810400010000000000000000000AD +S315E0797CB000004000000000000000000020000008FD +S315E0797CC000000000000028808000082000080000FD +S315E0797CD00000000010000000000040000000204095 +S315E0797CE02010004000004000000040000000002025 +S315E0797CF00000000000000000200000000000000005 +S315E0797D004004004000000000002000000000000070 +S315E0797D1040000000000400000000000000000000C0 +S315E0797D200000400000402400000000000000000050 +S315E0797D3000000004000000808000000000002000C0 +S315E0797D408000000080000000000080000000004014 +S315E0797D500000000000000000000000400000000084 +S315E0797D60000000004000000000040080040000A04C +S315E0797D7000000040000040804000200400008000C0 +S315E0797D8000000000000040840000842000000080AC +S315E0797D900000800000002400000000008020002020 +S315E0797DA08000000000000000208020000000000034 +S315E0797DB00000000000000000000000400000000024 +S315E0797DC050000000040000000000002000000040A0 +S315E0797DD0000000000000100000A000000000000094 +S315E0797DE00040408020004000000000400000000094 +S315E0797DF00010008000400000208000000000800034 +S315E0797E001ECD000000000800100000000000000010 +S315E0797E100000402040000000400000000000000023 +S315E0797E2000000040000000000000000000001000A3 +S315E0797E302000000000000000000000000000400083 +S315E0797E40A00060000000000008000000000010209B +S315E0797E5000000080000000000000000020400000E3 +S315E0797E600000004000000000000000000000000073 +S315E0797E7000000000000000000040000080000400DF +S315E0797E8000040000002400000080200000000000CB +S315E0797E900000000000000000408000000000400083 +S315E0797EA040000000000000000000008000000000B3 +S315E0797EB000000000000000040080000004200000BB +S315E0797EC000004000000040800040002000004000B3 +S315E0797ED00000000000400000000000000000000003 +S315E0797EE00000004000000000000000000000008073 +S315E0797EF0000400000000002004004000802080009B +S315E0797F000040000000000000000000002020000092 +S315E0797F10000440000000000000004000000000007E +S315E0797F2080000040000000400000000000000000F2 +S315E0797F3000400400000020100000000000800020CE +S315E0797F4000500040000000008000000000000000C2 +S315E0797F5000900000000000000020000000000040D2 +S315E0797F600000000000800000008000000000801022 +S315E0797F70800000002040000080866C0048002010D8 +S315E0797F80284000406800000048000000000000003A +S315E0797F9010000000001048006000000800000000B2 +S315E0797FA000002000000020000040000000000000F2 +S315E0797FB0002000400000080000000800000048109A +S315E0797FC00000001000000000000000000000100032 +S315E0797FD000000010400010000000000020000000C2 +S315E0797FE000000000000000000000000020002000F2 +S315E0797FF000040000040000200000000000000000FA +S315E0798000400040000000000040000000000000044D +S315E0798010000000040020000000004000000060003D +S315E07980202000800000008000002000000020000091 +S315E07980302080000000004000008000000000000081 +S315E07980400040000040000000200000008040000071 +S315E079805004000000C0048000000000002080008059 +S315E0798060004000800000008000200080000080044D +S315E07980700000000000000400000000040080000415 +S315E07980800000800080000000000000000000002071 +S315E0798090008080000000C00004000000008000003D +S315E07980A00020000000002000002000000000000011 +S315E07980B08000042000800000000400000000200019 +S315E07980C00000000080000000000000408040400091 +S315E07980D04000000000000000000080008040004081 +S315E07980E000400000000000000000000000400000B1 +S315E07980F01000ABFD00000000000000000000004029 +S315E07981000000000000000000000000000800000008 +S315E07981109000000000000000100800800010400088 +S315E07981200000001000000040000000000000400060 +S315E07981300040000000000020000010004000100020 +S315E07981404000500040400000000000006000100050 +S315E07981500000002040000040000040006000000080 +S315E079816000000040204000000000000000002000F0 +S315E07981700020400000204000002000000020400060 +S315E079818040200000000000000020040040000000CC +S315E079819000200020000000000000002000002020E0 +S315E07981A000004000200000A0000000200000200030 +S315E07981B0004000000004000080002020000000005C +S315E07981C0000000000000040000000000000020002C +S315E07981D020408000000000000000000000A0004080 +S315E07981E00000400000004440200000042024000004 +S315E07981F00000040000000400802000000040000038 +S315E079820000000400002000400000000020208000EB +S315E07982102060008020000000C000004080600000FF +S315E0798220008000000084000080002000000020002B +S315E079823024000000000020C000000000500040004B +S315E0798240000040000000000000000000000000008F +S315E079825080100000200000200000000040000000AF +S315E07982600000000000008080002000D47C000080BF +S315E079827048000000080020100800100008000000FF +S315E079828040000000000000200000000040000000EF +S315E079829000000000000000000000000040000060DF +S315E07982A00000500000002800004008000030284017 +S315E07982B0200040000000000000400000004000007F +S315E07982C0000000000040000000404000000000008F +S315E07982D000000000004000002000000000000000DF +S315E07982E00040000000000000004000442000004407 +S315E07982F000402000000000002080000020000000FF +S315E0798300000060000000000080000000000020000E +S315E079831080000000000000000000040080000000FA +S315E079832000000000000040004080200080002040EE +S315E079833000000000200000000000000000000000BE +S315E0798340008020800000000000400000000000006E +S315E0798350000000000000400000000000040000007A +S315E0798360400020000000200000000000000000002E +S315E07983708400002000400000000020000400000096 +S315E079838000000000000000000000002040040080AA +S315E079839000000000002000000000008000000400DA +S315E07983A004000040E000004400100480040000006E +S315E07983B0001000800040002080500000000000A0FE +S315E07983C0004000000000801000100000000000105E +S315E07983D000808010000000100080400090000010BE +S315E07983E0409040109B330000000000400000008080 +S315E07983F0000000000000001000000000000000000E +S315E079840000000000400000304800800000000008CD +S315E0798410201000180000100008000000004000005D +S315E0798420000080000000400000000030006000009D +S315E0798430400000000000000000000040000000005D +S315E0798440000020000000000000200000000000008D +S315E07984500000000000000020000000000020040079 +S315E07984600000000000400400000004000000000461 +S315E0798470000000000000400000A04000000000007D +S315E07984800000000000000004000000000420400025 +S315E079849000600000800000008000000040000000DD +S315E07984A0800000800040000080000000800000002D +S315E07984B000000000402000200000000000000000DD +S315E07984C000008000040080000000008000042000A5 +S315E07984D000002020040000800000008040000000B9 +S315E07984E000408020000000000000208000000000AD +S315E07984F0000000000020000000800000000000007D +S315E0798500000000000000000000000000000000000C +S315E079851000800000008000000040000000001000AC +S315E079852000000010002000000420001020801000D8 +S315E079853010200010202000000000000020000040FC +S315E0798540200080801010000000000000002000006C +S315E0798550C0100000000060000000000000BD4D0082 +S315E079856030001060C00820400028004040080040F4 +S315E079857000002040002820801028204030802040CC +S315E079858050002080108008A04810009840A8281054 +S315E07985900048080040006008004800C80040A0484C +S315E07985A020400028508030000020601010006000E4 +S315E07985B00000008000C040101020000000600040FC +S315E07985C0004000004000600000000000000000006C +S315E07985D000200000C00040002000000444000004B0 +S315E07985E04480000400000040004040200000000480 +S315E07985F00000000060000040040020000020000038 +S315E079860000044020000400408000A000C0240080DF +S315E07986102000800000400080204080008024000017 +S315E07986200000204000242000442020000084A0009F +S315E0798630802000804020A000400000E48000000017 +S315E0798640800000002000A004400000C0042000C49F +S315E079865024C060040400002400844080640000247F +S315E07986602480C4208020802040A00080200404203B +S315E0798670002000008000208000808060800400E493 +S315E079868080200040004020C080200080000000006B +S315E0798690241000A0C02000C0802424001400802487 +S315E07986A02050802000C040800060600020D0A0107B +S315E07986B0008040004000200000C0400080600080DB +S315E07986C040A000B02040A04080400090005080302B +S315E07986D01080502100904E39004008883020880873 +S315E07986E000A048480040184800004040000040207B +S315E07986F0880000C0084000000800209000000020B3 +S315E079870080806020404080401000202000100800E2 +S315E079871000400000482800906808202048080000BA +S315E0798720400000100000200000804010400000006A +S315E0798730200040401000400000204000602000000A +S315E07987400000002000000040200020400020440086 +S315E07987506044200044240020042400002460004082 +S315E0798760A02000806060000000200000C4200000A6 +S315E0798770C04000C000000420400000806000006036 +S315E07987808080042080002000A0002480204024609E +S315E07987900000244080C0002000A044800000804092 +S315E07987A0200060000040208000C00440A000240042 +S315E07987B0000084E0000000048040008004800080AE +S315E07987C02080200060C40000446480C00404C08036 +S315E07987D004A400800444004004A004A00000808042 +S315E07987E0004080800000240044000000E000008022 +S315E07987F000A0004000E0008040806000400040C07A +S315E07988000040802080802004804400048000D0608D +S315E079881010040010A4008044104000D020102000FD +S315E0798820C0802010200040106020400040002040A9 +S315E07988302010E0100000C0A010904020C00040A0B9 +S315E07988404090000000204000208060004080305F4A +S315E07988509300800000181860600000000018184046 +S315E07988604020000000303040000000000030A0C019 +S315E0798870400000000030A088804000001070F08051 +S315E07988800000000000607000000000088860600069 +S315E07988900080001818706000000000101070600009 +S315E07988A00000200090C040000000103030404000C9 +S315E07988B00000002020404000000000202000000059 +S315E07988C000000060608000000004046060800000C1 +S315E07988D00004046060000080000004E0E00000002D +S315E07988E000000060E0000400200000C0C000000045 +S315E07988F000202040C00000000020A0C0C000000099 +S315E07989000020208080000000006060808000000008 +S315E079891000606080800000000060600000800000F8 +S315E079892080E0E0000000000080A0E0400400200044 +S315E079893000C0C0000000042020C0C0000000042070 +S315E079894020C0C00000040420208080400004046038 +S315E07989506000800000042020608080000000042010 +S315E079896060000080000080E0E00000000000C4E0E4 +S315E0798970E0000000200000C0C00000000020208058 +S315E0798980C0800004043030C0C00000044430308038 +S315E07989900000000400707080800000000070F080B4 +S315E07989A080000000006060000080001010E0E000C8 +S315E07989B00000001010E0E0800001001010C0C00057 +S315E07989C00000003030C0C100F36A00000010107872 +S315E07989D078402004003818585C0000000030307088 +S315E07989E070000000002828A0A0414008007031A05E +S315E07989F0A0808008003870B0B000000800602030B0 +S315E0798A003002001008282A603000001818707020AB +S315E0798A10200000000020706060040000009094401F +S315E0798A206000003030703000400000202020204186 +S315E0798A3000080060212028004000002020A0A00046 +S315E0798A400000002040A0E002001000A0662030007F +S315E0798A50000000A0A0A0A0000000046464A0A0002B +S315E0798A60000000C0C480A0000020244060C08000DF +S315E0798A70042404E0E0010008046425A0280040000D +S315E0798A80002424A0A0008000042424602002801021 +S315E0798A9004A066003000000004A4E4202000000071 +S315E0798AA000A4A420A0000000004044C0E000002417 +S315E0798AB020E060800000002020A0E00180080064CA +S315E0798AC021A02800000000604060608080000020DE +S315E0798AD020202082001000A026607000000000E0CF +S315E0798AE0E0606000000000E0E0606004000000C043 +S315E0798AF0C4406000002020A0A0C0C004002000F09F +S315E0798B00F0C1C00804301590B800400000703070AC +S315E0798B1070808000007070B07082801000E06260D2 +S315E0798B2070000010107070A060000010106040E0D6 +S315E0798B30C005003010505440E000003020703040DD +S315E0798B40C03C0B00008080103838202000001818CF +S315E0798B5058180040000030303858000000002020D6 +S315E0798B60A8A8000000002020A08000000008702856 +S315E0798B70A020000000082868303000000800A82806 +S315E0798B8040400080181870302020000000001070F6 +S315E0798B90602000000000D090400000003030307056 +S315E0798BA04040000020206060400000002020202026 +S315E0798BB00000000060208080000000004060A0E0B6 +S315E0798BC0000000002060204000000000E0A0A0A0A6 +S315E0798BD0000004002060E0C000000000C0C080C052 +S315E0798BE0040424202040C0800400202020C0000016 +S315E0798BF004002020802000800404202000808080EA +S315E0798C0004006020A0608000040064202000000059 +S315E0798C100400A060808000000404A0A08000000029 +S315E0798C200000C040C0C004040024C0C080400000F9 +S315E0798C300000608080400000440420A0000000002D +S315E0798C4000604040800000040020204080800000E1 +S315E0798C50040060600000000040C040400000000071 +S315E0798C60C0C020800000000080C0004000002020C5 +S315E0798C702020404000002020F01040C00000203045 +S315E0798C80B000000000004070B070800000006050D5 +S315E0798C9050A0800000002060404000000010505055 +S315E0798CA0C080000000104060800000000010504055 +S315E0798CB0C04000000010904040C0A434000000009D +S315E0798CC010501000600000101050100000000018DD +S315E0798CD0387818000000000020886800400000100D +S315E0798CE0308000808000085048D070000000082865 +S315E0798CF06850700000000820402060000010107075 +S315E0798D0010406000000000405000600000000090D4 +S315E0798D101000400000101050700040000020202024 +S315E0798D206040400000000000000000000020206064 +S315E0798D302000000000602080C000000000606060D4 +S315E0798D406000000000A0A0A0E0000004004040E040 +S315E0798D50E00000000080808080040424204060C028 +S315E0798D60C00400200060E080800400002080A080BC +S315E0798D708004044000A0A0008004002020402080E8 +S315E0798D800004004440606000000400C060E0A00098 +S315E0798D90000404A00000A0000000004040C0C00428 +S315E0798DA0040420E060808000002020E080C0C000DC +S315E0798DB0002404800080000000604040600080006C +S315E0798DC00000008080808000002024404000000080 +S315E0798DD0006060E0600000000020A06040000000D4 +S315E0798DE00080C04040000020208000C0C0040030F0 +S315E0798DF010F0D000C00000200090B00000000040E4 +S315E0798E00003070008000003070B070800000006043 +S315E0798E106060600000000070B0C0C00000101030E3 +S315E0798E20A0C0400000000050D000C00000302050C3 +S315E0798E301000C027C600008080003078400000002E +S315E0798E401810105800400000381810500000000043 +S315E0798E50280860804000000020002080808008009B +S315E0798E6068602040000008000000705000000800AB +S315E0798E7040286020000018100040604000000000A3 +S315E0798E801070600000000000509040000000000083 +S315E0798E9030104040000000004040400000002020B3 +S315E0798EA02020000000004000206000000000006003 +S315E0798EB0E0E0000000000040604000000000C08073 +S315E0798EC0C0C0000000040404E0C000000000C0C097 +S315E0798ED080C0000000042000C08000042424200023 +S315E0798EE0C0C000040404A0008080000064644040AF +S315E0798EF0808000044404E04000000004404420609F +S315E0798F00000000042444A0E00000000004A4E0404E +S315E0798F1000000000C040404000000004C0C080402E +S315E0798F200000000000800000000404240080008036 +S315E0798F30000000606040800000002020A0C00000B2 +S315E0798F400000000060600000000040C040C0000002 +S315E0798F500000804000800000000080808080000072 +S315E0798F6000000080000000001010D01040000000E2 +S315E0798F700000B000000000004020B0308000000022 +S315E0798F80601050A080000000206000000000000022 +S315E0798F909050404000000010801000000000000072 +S315E0798FA09000C000000000109051410029CB0000EC +S315E0798FB000101068684060000008084808404000E2 +S315E0798FC0002000286800000000301068C8404000A2 +S315E0798FD000301020A0808000007028A0900000006A +S315E0798FE00048080000000000084848002000000812 +S315E0798FF0084000000000001010303040000000000A +S315E07990000040C04000000020204040404000000081 +S315E07990100000000000000020202020000000004031 +S315E079902000E0E00000000020402060000000000041 +S315E079903000000000000000404040000000000420ED +S315E07990406000400000000040404040000000002001 +S315E0799050604000000420008040404000042000A0E9 +S315E07990602000000000206060E0008000044040E0DD +S315E079907000808000046020002000000004A0C04049 +S315E0799080E0000000000080E0E00000000080800061 +S315E07990900000002024A0204040000020006060808D +S315E07990A0800000202080A0808000000000202080C1 +S315E07990B00000002020606080000000200000200091 +S315E07990C0000000A0A080A000000000E04040E000A1 +S315E07990D0000000400080C000000000A0A080800071 +S315E07990E0002000D030008000003030B0300000043D +S315E07990F0007030D0D0800000006000D0F080800031 +S315E07991000000400020000010109090A06000000060 +S315E079911000E04020C0000010109010808000003000 +S315E079912000F070408021F600000000184848602081 +S315E079913000000808080840400000002020000000F0 +S315E079914000000020C060404000001030A000000020 +S315E079915000000810D06000000000004040400000A8 +S315E079916008004848600000000808382840400000B8 +S315E079917000000060400000000000C04040000000B0 +S315E07991800010404000000000000000404000000070 +S315E079919000000000000000000040C0C000000000B0 +S315E07991A040600000000000002060204000000000E0 +S315E07991B0202020600000040000402000000000002C +S315E07991C000000000040420200040000004000000B4 +S315E07991D020C0C0C0040000200020008004044000C4 +S315E07991E060E000000400000000A080800400000038 +S315E07991F06040000004008020E00000000404800064 +S315E07992002060000000008080808004040420202013 +S315E0799210C0400000002060C080C000002424200007 +S315E07992208080000000400000000000000020A0805F +S315E07992300000000000200000000000002020A0A02F +S315E0799240000000002420E04000000000004080C0DB +S315E0799250000020208080C0C00000202020108000FF +S315E079926000000010303000000000005090D08000FF +S315E079927000000040D090000000000000604000004F +S315E079928000108090C0800000000080A0C00000003F +S315E079929000109090000000000030108080C02679A0 +S315E07992A00000000010080800600000000848080087 +S315E07992B0400000080868080000000000000808007F +S315E07992C000000000000800000000085808C05000BF +S315E07992D00000086868402000000008200800400087 +S315E07992E000000060004020000000004000002000FF +S315E07992F0000000400000000000200000200000008F +S315E079930000202020600040000000000000000000FE +S315E079931000604000000000000400200040000000EA +S315E07993200040000040000000004444004000000492 +S315E0799330002464004000000000000040400404007E +S315E07993400420604040040424048040C000040404FE +S315E0799350248080808004044404408000800404648E +S315E079936064C080800004046004404000000404C4C2 +S315E0799370444040000004042404C0C000000000809A +S315E079938000000004040024800000C000002004608E +S315E079939000404000000404A0A000000000000000A6 +S315E07993A02000800000000040C0808000002000009E +S315E07993B020000000008080002000000000A00080EE +S315E07993C0A00000000040008040000000002020005E +S315E07993D00000003414D03000C00000202090100046 +S315E07993E000000060209040000000002000503080AE +S315E07993F0000000004000200000000050100000004E +S315E0799400000000F06000C000000000D050A0C0006D +S315E0799410002000D0D00080B15F000000000808008D +S315E07994204000000008040868400000000808084881 +S315E079943000000000080848480000000100082840BC +S315E0799440000008000818104000000800084820408D +S315E0799450000008024078408000000000104020407B +S315E07994600000000000606000000000040060400039 +S315E079947000000030200000000000000000404000BD +S315E07994800001000800400000000040604040000014 +S315E079949000000004400000000402005060800000F3 +S315E07994A00000404040400000000400002000000039 +S315E07994B00000002040400404040000000000040499 +S315E07994C00000208000C00405000800400000040484 +S315E07994D040400040000004044040C080000004069B +S315E07994E0043000C0000004040000400000000404D9 +S315E07994F0002000400000000000A000000404040001 +S315E07995000000C00000000020008040400001040C0B +S315E079951000408080040400442000800000000000C0 +S315E0799520E04000000002003000800000000000000A +S315E07995308080000000000040A08000000004006008 +S315E079954000800000000000000000000014142000F4 +S315E0799550C000000100081040000000000000008013 +S315E0799560800000000000100000000002001020805A +S315E07995700000000080C00000000000008090C0007C +S315E07995800000000490A06000000000209080800038 +S315E0799590C44B000000000008000000000000040849 +S315E07995A020204000000008000000000000000000D4 +S315E07995B0800000000100088040408000000040C043 +S315E07995C0000000000000004000000000020050505A +S315E07995D0808000080000080000000000000000001C +S315E07995E0000000000440A000000000000000000038 +S315E07995F00000000000400000000001000800400083 +S315E07996000000000040400000000004044000000033 +S315E0799610000006001440808000000000444000000D +S315E0799620000000000000400000000000200040003B +S315E0799630000000000000000000000000008040000B +S315E07996400120080040008000000040000000000092 +S315E0799650000040C000000000020050408080000019 +S315E0799660008000C000000000000000C0000000009B +S315E07996700000A080000000000000008040000004A7 +S315E079968000400000400001000C00604080040000CA +S315E0799690040000000004000000C00000000002049D +S315E07996A010008080000000000080000000000004C7 +S315E07996B0808000000000040020E000000000000047 +S315E07996C000008004000010100000000401000C8006 +S315E07996D050400000000040801000000000000000CB +S315E07996E050000000020010008080000000001000A9 +S315E07996F00000000000109080400000000400B000F7 +S315E0799700000000000090000080F5080000000008E5 +S315E0799710004040000000000C0060000000000000FE +S315E07997200040000000000000004040000001000811 +S315E079973000408000000000100000000000000040BA +S315E07997404000000000020810008000000000104090 +S315E079975040000000000010404000000000040020B6 +S315E079976040000000003000404000000000000000AA +S315E079977040000001000800400000000000200000E1 +S315E07997800000000000204000000000020050008048 +S315E0799790000000000000000000000000004000002A +S315E07997A0000000000060000000000000004040007A +S315E07997B00000000000C080000001000800C0000041 +S315E07997C0000000004080800000000000000080007A +S315E07997D00002003000800000000000C000000000B8 +S315E07997E000000080400000000000002080000000BA +S315E07997F00000008000000000000000808000000585 +S315E0799800000800C0800000040040000080000000ED +S315E07998100020008080000002001000800000000037 +S315E079982000802000000000000060000000000004D5 +S315E079983000200000000000000080800000000400A5 +S315E0799840008080000001001800C0000000040010CC +S315E07998500000800000000010008080000002001007 +S315E079986000800000001000A08000000000100000D9 +S315E07998700000000000140020800000000010008045 +S315E079988000003AE0000003031C1C6060000003035B +S315E0799890181C406000000707383840400000070789 +S315E07998A03838C0C000000607303880C001010E0E96 +S315E07998B07070808001010E0E7070808001010C0E4F +S315E07998C06070008003031C1CE0E0000003031C1CAD +S315E07998D0E0E000000303181CC0E000000707383811 +S315E07998E0C0C0000007073838C0C000000607303826 +S315E07998F080C001010E0E7070808001010E0E7070CD +S315E0799900808001010C0E6070008003031C1CE0E08E +S315E0799910000403031C1CE0E004000303181CC0E404 +S315E0799920000007073838C4C4000007073838C4C4CC +S315E079993000000607303884C401010E0E7070848405 +S315E079994001010E0E7070848401010C0E607004843E +S315E079995003031C1CE0E0040403031C1CE0E00400A0 +S315E07999600303181CC0E4000007073838C4C00000B8 +S315E079997007073838C0C000000607303880C00101D3 +S315E07999800E0E7070808001010E0E7070808001017C +S315E07999900C0E6070008003031C1CE0E000000303FA +S315E07999A01C1CE0E000000303181CC0E00000070778 +S315E07999B03838C0C0000007073838C0C0000006074D +S315E07999C0303880C001010E0E7070808001010E0E74 +S315E07999D07070808001010C0E6070008003031C1C9E +S315E07999E0E0E0000002021C1CE0E000000202181C24 +S315E07999F0C0E0000006063838C0C0001AD50010204D +S315E0799A008000000000101000000000000010300017 +S315E0799A1000000800403838400008188080383080E7 +S315E0799A200000108008101008081000880830000837 +S315E0799A300800000808100008000000001020200047 +S315E0799A401000801010800000100000101000001047 +S315E0799A5000808010108000100000801000800000E7 +S315E0799A600000000000000000000000000000000097 +S315E0799A700000800000000000000000000000000007 +S315E0799A8000000000800000000000000020040400CF +S315E0799A9000000000000000000000008404000000DF +S315E0799AA00020000484000080000000040400000027 +S315E0799AB00020000404000000800000040400000097 +S315E0799AC000000004040000000000A0040480000007 +S315E0799AD00020800404C0C00000600000000000009F +S315E0799AE0004404000080002020000000008000008F +S315E0799AF02000000000800000200080400080000007 +S315E0799B006000006000000020200000000000006096 +S315E0799B10C000008000000000C00000C000000060C6 +S315E0799B20C000000000000000400000408000208076 +S315E0799B30C000008000202000800000808020208006 +S315E0799B400000000000606000802020800020600036 +S315E0799B500000200000200000000000000020200026 +S315E0799B600000C00000A040000000800020400020F6 +S315E0799B70000000208A2E00000000000000010000AD +S315E0799B800000000000000000000000000000000076 +S315E0799B900000002000000000000000000000000046 +S315E0799BA00000000000000000000000000000000056 +S315E0799BB00000000000000000000000000000000046 +S315E0799BC0000000000000000008000000000000002E +S315E0799BD00000000000000000000000000000000026 +S315E0799BE00000000000000000000000000000000016 +S315E0799BF00000000000000000000000000000000006 +S315E0799C00C000000000000000000000000000000035 +S315E0799C1000000000000000000000002000000000C5 +S315E0799C2000000000000000000000000000000000D5 +S315E0799C300000000000004000000000000000002065 +S315E0799C4000000000000000000000000000100000A5 +S315E0799C5000000000000000000000000000000000A5 +S315E0799C600000000400000000000000000000000091 +S315E0799C700000000000000000000000000000000085 +S315E0799C80002000080000000040000000000000000D +S315E0799C9000000000008000000000000000400000A5 +S315E0799CA00000000000000000000000200000000035 +S315E0799CB00000000000000000000000000000000045 +S315E0799CC00000000000000100000000000000000034 +S315E0799CD00000000000000000000000000000000025 +S315E0799CE000000000000000000000000000B2AB00B8 +S315E0799CF000A0002000605000001000008040900035 +S315E0799D00000010004000100000802000803000083C +S315E0799D100020008000200000004000002000402064 +S315E0799D20A010200000008000000000204000000024 +S315E0799D301000000000200000000000400000200034 +S315E0799D4010000000004000000040002000000020E4 +S315E0799D508020802000600020008000208000004084 +S315E0799D60000040802000400000E00040A0004080F4 +S315E0799D700400204060000000244000040000002038 +S315E0799D800000600040200000000000000020200470 +S315E0799D9080202400002080208060008080200000E0 +S315E0799DA020808000044000000000004000000000B0 +S315E0799DB000404000000004000040000480202000BC +S315E0799DC00040000000800000008000008000400034 +S315E0799DD040808000008020408000802000000024C0 +S315E0799DE000000020000080200000200020004024B0 +S315E0799DF00400408080202000400000000000004000 +S315E0799E000000804000008000000000404080800033 +S315E0799E10008000000000800020000040A0000000E3 +S315E0799E2000448040C0001040A00000A020800004DB +S315E0799E30008014A0008000F000000000C00040908F +S315E0799E40000000000020100040200000C020000043 +S315E0799E500080005000008010910040808000201042 +S315E0799E60800040002080BFE0002000200000004014 +S315E0799E7000000020008040000000000000000000A3 +S315E0799E80008000200080008008000000A00000002B +S315E0799E9000400000000000000050800010000080C3 +S315E0799EA000000000600000000000000000002020B3 +S315E0799EB000000000600000000000100000000000D3 +S315E0799EC03000003000000000004020200000202013 +S315E0799ED000000000008040004000004000000000E3 +S315E0799EE0000060400080004080200440202080000F +S315E0799EF000004404000000200000000020600020FB +S315E0799F000000000040200020808000200020002012 +S315E0799F10008000800000000000A0000040044000BE +S315E0799F200000000000008000004000000010000002 +S315E0799F3044400000040000004020000000000000DA +S315E0799F40008000440000800040800000800080406E +S315E0799F5000200000200000040000000800000080D6 +S315E0799F60000040200000204400000480000020002A +S315E0799F70200000000480004000200000600000001E +S315E0799F802000408040004080000000200000400032 +S315E0799F900000000000000000000040004040800022 +S315E0799FA04040800081008004000000000400004009 +S315E0799FB000000000008010001000000000000000A2 +S315E0799FC0004000000000C000108000400000000062 +S315E0799FD0000180100000800000000000108000F28F +S315E0799FE02000000000000060100000100000000072 +S315E0799FF010800000100000601000200000001020A2 +S315E079A0000000002000010020800000000080200090 +S315E079A0106000002020000000000000000000400001 +S315E079A020000040100400000000000000000000007D +S315E079A03020400000000000400000400000004000A1 +S315E079A0400060800000800040084080000020000029 +S315E079A05020000020800020002040800000002000C1 +S315E079A06000000000000000400000200040004000B1 +S315E079A0700040004000400000004000000000004041 +S315E079A080040000200004000080000060400000A089 +S315E079A09000000000800020004080000000400000C1 +S315E079A0A00000800000400000002000004000802091 +S315E079A0B00020408040008000208000002080000061 +S315E079A0C000000060000000000020800000C0000071 +S315E079A0D00020800000200000002000000000000041 +S315E079A0E00020000000400080100040000080000061 +S315E079A0F00000000000800000800000000000208061 +S315E079A100000000C00080000080202000400000A010 +S315E079A11000000004801020000010200000200020BC +S315E079A120004020808030800000B000800000004050 +S315E079A130C000804020004020001000202000002050 +S315E079A14000002000900000001080100040800000A0 +S315E079A150B00080404000200015AB000000000040D0 +S315E079A160000020000000000000000000016000000F +S315E079A17000002000200000002000000000000080A0 +S315E079A180002000000040008000002000010000006F +S315E079A1900000000000000000202000000000000020 +S315E079A1A000004000002000800000000080000000F0 +S315E079A1B040000000000000000000000000400000C0 +S315E079A1C00040002000200000200040400000000010 +S315E079A1D00000004020800020000000000000000020 +S315E079A1E00000004000000000000400000004402068 +S315E079A1F00000400000004400000000002000040058 +S315E079A20020200000002000042020840020008480A3 +S315E079A21000000400800000C0000020040000000473 +S315E079A22000000000404000008000000000000000CF +S315E079A2302080000000C000000040004000002000BF +S315E079A240000000004000800040000020400000004F +S315E079A25000800000008000004000200000004000FF +S315E079A2600000802000000000000040200000C000CF +S315E079A27020000000000080400000002000004040FF +S315E079A28000000000200000000000800000000000CF +S315E079A290404000002010000000000000200000008F +S315E079A2A0C01000008010004000C0000000000000EF +S315E079A2B0000000000000001000008020008000000F +S315E079A2C0400000000000000000400040000010005F +S315E079A2D0009DD900200000002000000060000020E9 +S315E079A2E040000040002000004000000040000000EF +S315E079A2F0000000000000002000000040000000009F +S315E079A30000200000000020000080200000202000CE +S315E079A310004000000020200000000000000040001E +S315E079A320200021000020000000000020000000202D +S315E079A330000000204020002000200020000040009E +S315E079A340000000200020006000200020000040008E +S315E079A350000000200040000020000000200040209E +S315E079A36070000000204000204000200000400000FE +S315E079A370002000004000200000000000C0204000DE +S315E079A380408040008000002000200000204000202E +S315E079A39000000040C0002000800020002000A000DE +S315E079A3A0004000206000402000006000006020004E +S315E079A3B0208000000000400000002000800040205E +S315E079A3C0002040000400000040000000000000008A +S315E079A3D0000000C0000000000040000000004000DE +S315E079A3E0800000000000000000004000000000400E +S315E079A3F0000040004000000000000000400000003E +S315E079A40000000000400000008000000040804080AD +S315E079A410000000008000000000000000000000401D +S315E079A42020000000800080400040000040000000ED +S315E079A430400000000080400000004000000040003D +S315E079A440400000000080400000000140000020004C +S315E079A45000006020004020002000404000200100FC +S315E079A46000000020004020000000200000000020CD +S315E079A470008040000000004000A0002000000000BD +S315E079A48020008000202000002000400020002000ED +S315E079A490200000400000002040A000002000A0003D +S315E079A4A0000040200000002000000020002040400D +S315E079A4B020000000200020000060000020402000FD +S315E079A4C060000020006000C000200000200040000D +S315E079A4D000200000004020200000300400402004E5 +S315E079A4E060600020400040400400200000204000E9 +S315E079A4F0040020000020C020402084008440A0A0F1 +S315E079A500040020000400600000C000402004C02060 +S315E079A51000048000A0002000404080002000402018 +S315E079A52000000000604020C020A00040000000400C +S315E079A530200000200000C0E00000400040244000F8 +S315E079A54000000000C000000080000000E00000008C +S315E079A5504000000000200000000000004000A0005C +S315E079A560C00020004000000080000000006000008C +S315E079A57040400000004020000000000080400000DC +S315E079A580000080000040800010400000008020003C +S315E079A590004080100000800010002000000090004C +S315E079A5A000804000004000000000500080A000805C +S315E079A5B040000000002000004000400040C000005C +S315E079A5C0500000309B0060000000004050200020E1 +S315E079A5D00040004040000008006000006000000094 +S315E079A5E020002040004010000000A00080000040DC +S315E079A5F01020000000400000080000006C006000B8 +S315E079A600400048204020400420400020006020009F +S315E079A6100040200020000000004040002040000873 +S315E079A62000000000000000C040000060000000303B +S315E079A630200000000100000080000040000080203A +S315E079A6400008600000002000004000602000400023 +S315E079A65080402040000000000000A8004000000093 +S315E079A660C000000020080040000000A000600080E3 +S315E079A6700040004000000000A00000220010804069 +S315E079A68000000000008000004004008040242000A3 +S315E079A690000004422000000000004020A0400000B5 +S315E079A6A0000000000000008000200040002000202B +S315E079A6B004200040008002400000200020000000D5 +S315E079A6C00002001000408000000080000000004099 +S315E079A6D0000000400000000000C4C00040004000D7 +S315E079A6E000608000008080000040000040000000AB +S315E079A6F0400080004080C00000608000600000007B +S315E079A700800000800080800000000060C000C0000A +S315E079A71040000080840000606000000000002004B2 +S315E079A720204000000040006000E0402080200040AA +S315E079A73000008000200000880050A000241400402A +S315E079A740200000004000000000000000000000004A +S315E079A750006000004000000000200040000000009A +S315E079A760000000208080000000200000000000004A +S315E079A77000004040004020000000204000004000FA +S315E079A78000600000200000000000000000000000EA +S315E079A790000040004000000000000000000000805A +S315E079A7A0000000000000000000000000000000004A +S315E079A7B0000000000000000040000040200000207A +S315E079A7C0000060400000000000800000000000000A +S315E079A7D0000000000000400000004000000020403A +S315E079A7E0000000002000000080000000000000006A +S315E079A7F000A00000201000000000000000000040EA +S315E079A80000400080000000000000004000000000E9 +S315E079A8100000000000800000008000400000000099 +S315E079A8208000000000200000000000000000000029 +S315E079A83000100000200000008000001000004000B9 +S315E079A8400000000000002000800000000000000009 +S315E079A8500000404000004040002000000000000079 +S315E079A86000000000000000000040000000800000C9 +S315E079A87080008000800040000000000000000000B9 +S315E079A88000000000400000000000000000008000A9 +S315E079A89020004000000000200000000000000000D9 +S315E079A8A020200000408040000000000000600000A9 +S315E079A8B0C000000000CE6E000010000000100060BD +S315E079A8C00020000040000000000000002000400069 +S315E079A8D020000000000000200010000000000000C9 +S315E079A8E00000000000004000000000280000000899 +S315E079A8F000404000082000000040000000002000F1 +S315E079A9000000600000002000000000000000000068 +S315E079A9100000000000000000000000400000000098 +S315E079A9200020002000004100000080006000000067 +S315E079A93020800020000000000000000000000000F8 +S315E079A940400000402000000000000000A000000068 +S315E079A9500000800000000000200000008000000078 +S315E079A9602000200040000000000000000000000008 +S315E079A97000400000000000000000000400206004B0 +S315E079A98000200000000000000000000000200040E8 +S315E079A99000100000000000004000002000C00040E8 +S315E079A9A000000400000080000000000000000020A4 +S315E079A9B00000000000008000000000008000000038 +S315E079A9C00000004000400040000000000000000068 +S315E079A9D00000004080008000800000000000000058 +S315E079A9E000000000800000400040200000002000C8 +S315E079A9F00020008080000080800000000000004098 +S315E079AA00004000000008000000000000000000009F +S315E079AA100000004000000040000000C00000002077 +S315E079AA2040800000408000000000000000000B0F2D +S315E079AA300000000000000010000000004000004027 +S315E079AA40000008000000002000000000002000005F +S315E079AA504000000000000000000040100000000007 +S315E079AA6000000000000000800420000000000000E3 +S315E079AA702004000000000000402040000000200093 +S315E079AA8000000000000000204008000040000000BF +S315E079AA9000004000000060000000108000800000A7 +S315E079AAA000200000400000000000000008000000DF +S315E079AAB000000000002000002000000000004000B7 +S315E079AAC000400000000008000000000000000008D7 +S315E079AAD00000000000000020400000004000000077 +S315E079AAE00000000000020000000080002000200045 +S315E079AAF08000000020000000000000000006002031 +S315E079AB000000004000004020002000000000000026 +S315E079AB10400000000000000000200000A000D00006 +S315E079AB204000420000000000002000020000000022 +S315E079AB302080000000004000000040000000000096 +S315E079AB400000008400008000000000000000004062 +S315E079AB5000000000400000400000002000002000D6 +S315E079AB600000000040000000000000000000000046 +S315E079AB700000000040A00080000080004000804096 +S315E079AB80040040200000400000040020000000009E +S315E079AB900000400000002000000000000000008076 +S315E079ABA000080050002080121B00200000100000F1 +S315E079ABB000101000001000100000300000100000B6 +S315E079ABC00010002000000040000000000000200096 +S315E079ABD00020000000000020000000200040000076 +S315E079ABE00000000000004000400000200020004006 +S315E079ABF02000004040002000000000000000000036 +S315E079AC000000000000000040200000000000002065 +S315E079AC100000000020000000000000000020000095 +S315E079AC2000400020200000000000204000004000A5 +S315E079AC3000000020002000200000600000200000D5 +S315E079AC400040000000000000000000200000000045 +S315E079AC500000200000000000200020000000000035 +S315E079AC602000000000000020408020004000000025 +S315E079AC70004000400000800000000080E000000015 +S315E079AC8000008020800000008000000000000000C5 +S315E079AC9000004000804000800000000000000000D5 +S315E079ACA000000000000020000000000000000040E5 +S315E079ACB00000400000000040004000004000000035 +S315E079ACC000000000008000000000000000000000A5 +S315E079ACD00000000000000040400000000000000095 +S315E079ACE08000000000000000000000000000000085 +S315E079ACF00040008000600000000040000000002075 +S315E079AD00000000000000E0004080000000A0500054 +S315E079AD1000000000000040000000000020404000F4 +S315E079AD2037F200004000202000002000000040407B +S315E079AD300040000000000000000020000020002014 +S315E079AD4000402000000000000000000000002040E4 +S315E079AD500040000000000000200000204000400094 +S315E079AD6020000000000000200000400000002040A4 +S315E079AD7000000000000040004000400000000000B4 +S315E079AD802000404020000000002000000000000084 +S315E079AD9020000020000000002000000000000000F4 +S315E079ADA00060000000600000200020000000004004 +S315E079ADB00020000000000000400000000040000094 +S315E079ADC00000000000400000000000008000200044 +S315E079ADD000000000800020008000000000000000F4 +S315E079ADE00000000000000040200020000000000084 +S315E079ADF000000000000000800000800000000000F4 +S315E079AE0040400000000000000020C08020002000C3 +S315E079AE100000000020008000200000008000000093 +S315E079AE200000400000000000000000000040000043 +S315E079AE300000000000000000000000004000000073 +S315E079AE400000000000000000400000000040000023 +S315E079AE500000800000000000000040000000800053 +S315E079AE60800000800000C000808000000000009033 +S315E079AE700020000000200000002000004000600073 +S315E079AE800000000040000000000000800000800023 +S315E079AE9000000000000000000019110000200030D9 +S315E079AEA00020001000100010004040000010001053 +S315E079AEB00000001020000000400000600000000063 +S315E079AEC00020200000000000200040000000004043 +S315E079AED02000000020000000204000400000000033 +S315E079AEE04000400000402040004000000000400063 +S315E079AEF040000040000000000000204020000000F3 +S315E079AF002000200000002000000000000000200062 +S315E079AF102000400000200020000000400040400072 +S315E079AF204020200000200020600020000020000062 +S315E079AF3000000040000000400000000000004000F2 +S315E079AF4000000000A00000000000200000002000C2 +S315E079AF5000800000000000000020804000200040D2 +S315E079AF60600000400000000000800000800000E002 +S315E079AF7000808000800000000040408000000000F2 +S315E079AF800000600040002080000000000020000002 +S315E079AF902000000000000000000000000000000032 +S315E079AFA04000000000400000000000000000004082 +S315E079AFB00000000040008000000000000000000072 +S315E079AFC000000000000000000000C0000000000062 +S315E079AFD000004000000000000000000000800080D2 +S315E079AFE0000000C080000060108000200040200052 +S315E079AFF000002000004000008040400000408000D2 +S315E079B00040100000000080004000000000002000B1 +S315E079B0104000E28F00000000000000000000000020 +S315E079B0200000000000000000000000001020000091 +S315E079B0300000002000000000000000000000000091 +S315E079B0400000000020002000000000000040000021 +S315E079B0500000000000000000002000004000000031 +S315E079B0600000000000000000000000000000000081 +S315E079B0700000000000000000000000000000000071 +S315E079B0800000000000000000000000000000000061 +S315E079B0900000000000000000000000200000000031 +S315E079B0A00000000000000000000000000000000041 +S315E079B0B00000000000002000000000000000000011 +S315E079B0C00000000000000000200000000000000001 +S315E079B0D000000000000000000000000000000040D1 +S315E079B0E00000000000000000000000000000000001 +S315E079B0F000000000000000000000000000000000F1 +S315E079B10000000000000000000000000000000000E0 +S315E079B11000000000000000000000000000000000D0 +S315E079B12000000000000000000000000000000000C0 +S315E079B13000000000000000000000000000000000B0 +S315E079B14000000000000000000000000000000000A0 +S315E079B1500000000000000000000000000000000090 +S315E079B1600000000000000000000000000000000080 +S315E079B1700000000000000000000000000040000030 +S315E079B1800000000000400000006000DC460000009E +S315E079B1900000100000000000000000000010000030 +S315E079B1A000000010000000400000000000000000F0 +S315E079B1B000000000400000000000000000000000F0 +S315E079B1C000000000000000002000000000400000C0 +S315E079B1D00000000000000000000000000000000010 +S315E079B1E00000000000000000000000000000000000 +S315E079B1F02000000000000000004000000000000090 +S315E079B200000020000000000000000040000000205F +S315E079B210004000000000000000000000000000008F +S315E079B22000000000000000000000000000000000BF +S315E079B230000000400000002000000000004000000F +S315E079B240000000000000000000000000000000009F +S315E079B250000000008040000000000000400000008F +S315E079B26000000000000000800000000000000000FF +S315E079B270000000000000000000000000000000006F +S315E079B280000000400000000000000000000000001F +S315E079B290008000000000000000000080000000004F +S315E079B2A0000000000000000000000000000000003F +S315E079B2B000000080000000000000000000000000AF +S315E079B2C000000000000000000040000000000000DF +S315E079B2D0000000000000000000000000000000000F +S315E079B2E0008000000000000000000000000000007F +S315E079B2F000404000400000004000000000000000EF +S315E079B3000000000020570000400000000000000423 +S315E079B310002000000000000000100000000000009E +S315E079B3200000000020010028004000000000000035 +S315E079B33000002000000000000000002000220050FC +S315E079B340008000000000000000000000000000001E +S315E079B350000000000004002000000000000000006A +S315E079B36000000000000040000000000100280040D5 +S315E079B370000000000020000000002000000000200E +S315E079B38000000002201000800000000000000000AC +S315E079B39000400000200000000000000400200000CA +S315E079B3A0000000000000000000000000000000003E +S315E079B3B000010008004000000000000000002000C5 +S315E079B3C000200080000000000002001000800000EC +S315E079B3D0000000000000000000000000000000000E +S315E079B3E000040020000000000000000000000000DA +S315E079B3F00000800000200001000800400000000005 +S315E079B40020000000000000000000000000000002BB +S315E079B41000100080400000000000000000004000BD +S315E079B4200000000000000004002000000000000099 +S315E079B43000000000000000000000000000010008A4 +S315E079B440004000000000000000000000000000005D +S315E079B450000020400002001000800000000000009B +S315E079B4600040000040000040000000000084002019 +S315E079B470000000000000000000C000000024770012 +S315E079B48000200000000000100400200014042020B1 +S315E079B490000000000000000000000000000021002C +S315E079B4A00800410108084040000000000020000043 +S315E079B4B00020000000000240100082025010A080B7 +S315E079B4C000000000004000000000000000000400D9 +S315E079B4D020000404202000000000000000000000A5 +S315E079B4E00000000021000800410108084040000002 +S315E079B4F000000000000000200000000002001000BB +S315E079B50082023010808000000000000040000000D8 +S315E079B5100000000004002000040420200000000060 +S315E079B5200000000000000000000001202800410131 +S315E079B53008086040002000000000000000000000DC +S315E079B54000000200100082025010808000000000A6 +S315E079B55000000000000000000000040020000484E0 +S315E079B56020200000000000800000000000000000BC +S315E079B5700100082041012808404020000000002011 +S315E079B5800000000000000000020050008202501026 +S315E079B590808000000000000000000000000000004C +S315E079B5A004002000040420200000000000000000D0 +S315E079B5B00000000000000100080041010808404051 +S315E079B5C0000000000000000000000000000002001A +S315E079B5D050008202104080800000000000000000E8 +S315E079B5E00000000080000400304084042020000040 +S315E079B5F0000000008000C0D50000000000000000D7 +S315E079B60000100000000000000000000000000010BB +S315E079B61000000000000000000000000000002000AB +S315E079B620200000000000000000000000000000009B +S315E079B630000000000000200000004000000000004B +S315E079B640000000000000000000000000200000007B +S315E079B650000000000000000000000000000000008B +S315E079B660000000002000000000000000000000005B +S315E079B67000000000200000400000000000002000EB +S315E079B680000000000000000000000000000000005B +S315E079B690000000000000000000000000000000004B +S315E079B6A000000000000000000020400000000000DB +S315E079B6B000000000000000000000000000004000EB +S315E079B6C0000080000000400000000020000000003B +S315E079B6D0000000008000800000000000000080008B +S315E079B6E000000000000000000000200000000000DB +S315E079B6F0400000000000000000002000000000008B +S315E079B700400040000000000080000000000040009A +S315E079B71000000000000000000000000000000000CA +S315E079B720000000000000000000400000000000007A +S315E079B730000000000000400000000000000000006A +S315E079B74000000000000000400000000000008000DA +S315E079B750000000000000004000000000000000004A +S315E079B7600000800000000040000080000000006CCE +S315E079B7707A000000000000000000000004002404C4 +S315E079B780002000100000000000000000000000002A +S315E079B790000001000901480800400020000000008F +S315E079B7A000200000002000400000220052029010A4 +S315E079B7B0808000002040000000400000000000008A +S315E079B7C000000400240400200000000000000000CE +S315E079B7D0000000000000000001000901480820404F +S315E079B7E0000000200000000000000000400000009A +S315E079B7F022005202901080C00040402000000000F4 +S315E079B800000000000000000004002404002000008D +S315E079B81000000000000000000000000000000100C8 +S315E079B82009014808004000000000002000000000FF +S315E079B83000004000400002001202901000C00000B3 +S315E079B8400000004000400000000000000000040015 +S315E079B8502404802080000000000080004000000081 +S315E079B86000000000010009014808004000002000BE +S315E079B8700000000000000000000000000200120253 +S315E079B8809010408000400000000000400000000079 +S315E079B89000000000040024042020000000000000DD +S315E079B8A000000000000000000000010009014808DE +S315E079B8B00040000000000000000080000000000069 +S315E079B8C00020020052029010408040000000000003 +S315E079B8D00000000000000000000004002404C020FD +S315E079B8E0800000000000000095F0000000000000F4 +S315E079B8F00000000000002004002000100000001085 +S315E079B900000000000000000000002000000140086F +S315E079B9100040000000000000000000000000000088 +S315E079B92000000000000200102080400000000000C6 +S315E079B9300000400000000000000000000004002044 +S315E079B9400000000000000000000040000000000058 +S315E079B95000000001402800400000000000000000DF +S315E079B96000000000000000200000000200100080C6 +S315E079B97000200000400040000000000000000000C8 +S315E079B9800000200400200000000000000000000014 +S315E079B99000000000000000000001000820402000BF +S315E079B9A000002000000000000000000000004000D8 +S315E079B9B00002001000800000000000000000000096 +S315E079B9C000000000000000002004002000000000D4 +S315E079B9D00000800000000000000000000020000167 +S315E079B9E000280040000000000000002000800000F0 +S315E079B9F00000000040000002001000800000000016 +S315E079BA0000000000000000000000000000000004D3 +S315E079BA1000200000000000000000000000000000A7 +S315E079BA20000000000001000800400000000000006E +S315E079BA300000000000200000000000000002001075 +S315E079BA400080000000004000000000000040000097 +S315E079BA5040000000000400A00000800040004000A3 +S315E079BA60003067004000000000000000100010047C +S315E079BA702020001000000000000000000000000017 +S315E079BA80000000000001000840600000200000008E +S315E079BA9000000000000000000000004000020030D5 +S315E079BAA00080000000004000000000000000000077 +S315E079BAB000000000000420200000000000000000E3 +S315E079BAC0000000000000000020000001002840404E +S315E079BAD00000000000000000000000000000000007 +S315E079BAE000400042001000A0000000400000000085 +S315E079BAF000000000000000000000000420200000A3 +S315E079BB000000000000000020004000000000000076 +S315E079BB1000210008404000000000000000200000FD +S315E079BB2000000000000000000002001080800000A4 +S315E079BB300000000000400040000000000000000026 +S315E079BB400084202000000000800000000080004092 +S315E079BB5000000000000000010008404020000000DD +S315E079BB600000000000000000000000000000000274 +S315E079BB7000108080000000004000400000000000D6 +S315E079BB800000000000000004002000000000000032 +S315E079BB9000000000004000000000000000010008FD +S315E079BBA040400000000000000000000000000000B6 +S315E079BBB00000000000020050808000004000000094 +S315E079BBC0000000000000000000000080000400E0B2 +S315E079BBD0000000000080000000005F8300000000A4 +S315E079BBE0000000100000000004142400200000008A +S315E079BBF00000001020000000000000000000012194 +S315E079BC0009084800400000200000000000204000BC +S315E079BC10002000000000024212109080806000004F +S315E079BC2000000000000000000000000000000404AD +S315E079BC302400200000000000000000000000000061 +S315E079BC4000000000010109084800400000200000DA +S315E079BC50002000000000000000000000026212509F +S315E079BC609080800000200000000040000000000085 +S315E079BC700000000004042400200000000000000019 +S315E079BC8000000000000000000000010129084800DA +S315E079BC904000000000000020000080000000000065 +S315E079BCA0000002021250904080000000000000007F +S315E079BCB08080000000000000000004042400A00059 +S315E079BCC000000000000020000000000000000000F5 +S315E079BCD0012109084800402000000000000000002A +S315E079BCE000000000000000000202121090008000BF +S315E079BCF000000000004080800000000000000000A5 +S315E079BD0004042420200000000000008000000000E8 +S315E079BD100000000000000101090848004000000029 +S315E079BD200000000000800000000000000000020230 +S315E079BD301230D000800000000000008000408000D2 +S315E079BD4000000000000084042400200000000000C8 +S315E079BD50000000CA71000000000000000000000049 +S315E079BD600000042000000000100000000000000040 +S315E079BD7000000000000020004100084000000000BB +S315E079BD8000000000004000000000000000006000B4 +S315E079BD900200500080000000000000400000000032 +S315E079BDA00000000000000000042000000000000010 +S315E079BDB000000000000000000000000000204100C3 +S315E079BDC008402000200000002000004040202000AC +S315E079BDD00000000000000200100080000000000072 +S315E079BDE000000000000000000000000000000420D0 +S315E079BDF000000000000000000000000000000000E4 +S315E079BE00002000004100084000000000000000002A +S315E079BE100000000000200000000000408240108011 +S315E079BE200000400040000000000000000000000033 +S315E079BE308000000004A0000000000000000000007F +S315E079BE4000000000000020000000410008400000EA +S315E079BE5000000000002000404000000000000000E3 +S315E079BE604000C200108000000040000000000000A1 +S315E079BE70000000000000000000000400200000003F +S315E079BE800000000000000000000000000000000053 +S315E079BE90410008400000000000000000400000403A +S315E079BEA00000000000200000821000800000000001 +S315E079BEB00000100040000000000000000040400053 +S315E079BEC004002040000000000000000071E400005A +S315E079BED00000000000000000000000000000000003 +S315E079BEE000000000000000004000000000000000B3 +S315E079BEF00000000000200000000000200020000083 +S315E079BF000000200000002000000000000000000092 +S315E079BF1000002000000000000000000000000000A2 +S315E079BF200000000000000000000000200000200072 +S315E079BF3000000000000000000000000000000000A2 +S315E079BF400000000000000000000020000000200052 +S315E079BF500000000040000000000000000000000042 +S315E079BF600000000000000000000000000000000072 +S315E079BF700000000000000000000000000000000062 +S315E079BF8000000020000000000040000040000000B2 +S315E079BF900000200000000000000000000000000022 +S315E079BFA00000000000000000000000000000000032 +S315E079BFB00000800000000000000080000000000022 +S315E079BFC000000000000000000000002000000000F2 +S315E079BFD00000000000000000000000000000404082 +S315E079BFE000000000000000000000000000000000F2 +S315E079BFF000000000000000000000000000000000E2 +S315E079C0008000000000000000000000000000000051 +S315E079C0100000000000000000000000000040004041 +S315E079C0200020000000004000000000004000000011 +S315E079C03000000000000000000000000000000000A1 +S315E079C04000800010801CC400200000001000000071 +S315E079C0501000000000100000000000000000100051 +S315E079C0604000000000000000200000000000000011 +S315E079C0700020200020002000000000002040004041 +S315E079C0802040200020000060000000400000000011 +S315E079C0900000000000000000000000000000000041 +S315E079C0A000000000000000000000200020000020D1 +S315E079C0B00000000000200000200000200020200081 +S315E079C0C00000600000604020002020000000004071 +S315E079C0D00060004000400000000000000000000021 +S315E079C0E000000000000000000000000000000000F1 +S315E079C0F00000000000200000002020000000200061 +S315E079C1002000200000800000000000000040004090 +S315E079C1104000400040000000400000400000000080 +S315E079C1200000000000000080000000808000000030 +S315E079C1308000008000000000200000200000002040 +S315E079C14000200000002000000020000000000040F0 +S315E079C1504000400000000000004000400040000040 +S315E079C16000000000000000000000000000800000F0 +S315E079C1700000000000000000000000000000000060 +S315E079C1800000000000000000000000000000000050 +S315E079C1900000002040004000004000000000004020 +S315E079C1A0000040000000004000004000C000400070 +S315E079C1B0804000C04000408000008040000038E0C8 +S315E079C1C000000000000000000010000000100000F0 +S315E079C1D000000000000010100000000000000020C0 +S315E079C1E00020000000200000200000002000006010 +S315E079C1F00000000020200020402000400040004060 +S315E079C20000402040000040000000000000000000EF +S315E079C210000000000000000000000000002000009F +S315E079C220200000000020000020002020000000000F +S315E079C230000000002040200000002000200020209F +S315E079C24000600060000040600000400000000000EF +S315E079C250000000000000000000000000000000007F +S315E079C260000000000000000000000000000020202F +S315E079C27000002000000020200000004020804020BF +S315E079C28000000060000000000000404000004040EF +S315E079C290000040004000000000000000000000803F +S315E079C2A0000080000080000000800080000000002F +S315E079C2B0002000000020002000200020002000005F +S315E079C2C0004000004000000000000000000000008F +S315E079C2D000400000404000400040808000000000BF +S315E079C2E000000000000000000000000000000000EF +S315E079C2F0000040000000000000000000000000009F +S315E079C30000000000000000400000C00020000000AE +S315E079C310000040400040200000000000000040801E +S315E079C3204000C000400040408000000040800000AE +S315E079C33000008080408010A5D900010008404100C6 +S315E079C34009004801510A0852401002021010000013 +S315E079C350000002001000820012009002A21410A4DC +S315E079C360802004042020000000000400200004005E +S315E079C370240020050429204801610808404000008E +S315E079C38001000840410009004801410A08524090FD +S315E079C39002821010808000000200100082001200F4 +S315E079C3A09002A21410A4802004042020000000004A +S315E079C3B004002000040024002005042920480161B6 +S315E079C3C008084040000001000840410009004801A2 +S315E079C3D0410A0852409002821010808000000200E3 +S315E079C3E01080820012009002A21410A48020040426 +S315E079C3F0202000000000040020000400240020052D +S315E079C40004292048016108084040000001000840FD +S315E079C410410009004801410A085240900282101011 +S315E079C4208080000002001080820012009002A2143F +S315E079C43010A48020040420200000000004002000DD +S315E079C44004002400200504292048014108084040D9 +S315E079C450000001000840410009004801410A0852FC +S315E079C46040900282101080800000020010808200E5 +S315E079C47012009002821410A4802004042020000087 +S315E079C4800000040000000400240020050429204867 +S315E079C49001610808404000000000080040000800FB +S315E079C4A04800400A0852409002C21010808000008D +S315E079C4B07737000100084040400040000000000066 +S315E079C4C0000000004000000000000002001000803B +S315E079C4D000000000000000000000000000000020DD +S315E079C4E00000000400200000000000000040000089 +S315E079C4F000200000000000400001000840404000B4 +S315E079C500400000000000000000004000000000004C +S315E079C510000200100080000000000000000000002A +S315E079C5200000000000200000000400200000000068 +S315E079C53000000040000000200000000000400001FB +S315E079C5400008404040004000000000000000000084 +S315E079C550400000000000000200108080800080002A +S315E079C56000000000000000008000002000000004C8 +S315E079C57000200000000000000040000000200000DC +S315E079C5800000004000010008404040004000000003 +S315E079C59000800000000040000000008000020010EA +S315E079C5A080808000800000000000000000008000AC +S315E079C5B00020000000040020000000000000004098 +S315E079C5C00000000000000000004000010008404043 +S315E079C5D040004000000000800000000040000000BC +S315E079C5E0008000020010808080008000000000005A +S315E079C5F00010000080000000000000040000000048 +S315E079C600000000000040000000000000000000404B +S315E079C61000000008004000000000001000800000E3 +S315E079C62000400000001000800018930001080841DE +S315E079C63040080040000102081040000002001002A4 +S315E079C64000000002021010828010008000020410BF +S315E079C6502080000004002004002000040420000467 +S315E079C660002000000104082040000100080140088C +S315E079C67000410108084140080040000102081040E5 +S315E079C6808000020010028010008202101082801071 +S315E079C69000800002041020800000040020040020BD +S315E079C6A00004042000040020000001040820400072 +S315E079C6B001000801400800410108084140080040AE +S315E079C6C0000102081040800002001002801000820A +S315E079C6D00210108280100080000204102080000091 +S315E079C6E00400200400200004042000040020000057 +S315E079C6F001040820400001000801400800410108D2 +S315E079C700084140080040000102081040800002001C +S315E079C71010028010008202101082801000800002E0 +S315E079C7200410208000000400200400200004042086 +S315E079C73020040020000001040820400001000801DF +S315E079C740400800410108084140080040000102081C +S315E079C75010408000020010028010008202101082E0 +S315E079C760801000800002041020800000040020047C +S315E079C77000200004040000040020000001040820E1 +S315E079C7804000010008014008004000080840000820 +S315E079C790004000100208104080000200100290105C +S315E079C7A000821A93000000000000000000000000FB +S315E079C7B0000000000000000000000000000000001A +S315E079C7C0000000000000000000000000000000000A +S315E079C7D000000000000000000000000000000000FA +S315E079C7E000000000000000000000000000000000EA +S315E079C7F000000000000000000000000000000000DA +S315E079C80000000000000000000000000000000000C9 +S315E079C81000000000000000000000000000000000B9 +S315E079C82000000000000000000000000000000000A9 +S315E079C8300000000000000000000000000000000099 +S315E079C8400000000000000000000000000000000089 +S315E079C8500000000000000000000000000000000079 +S315E079C8600000000000000000000000000000000069 +S315E079C8700000000000000000000000000000000059 +S315E079C8800000000000000000000000000000000049 +S315E079C8900000000000000000000000000000000039 +S315E079C8A00000000000000000000000000000000029 +S315E079C8B00000000000000000000000000000000019 +S315E079C8C00000000000000000000000000000000009 +S315E079C8D000000000000000000000000000000000F9 +S315E079C8E000000000000000000000000000000000E9 +S315E079C8F000000000000000000000000000000000D9 +S315E079C90000000000000000000000000000000000C8 +S315E079C91000000000000000000000003E4900000031 +S315E079C92000000000000000000000000000000000A8 +S315E079C9300000000000000000000000000000000098 +S315E079C9400000000000000000000000000000000088 +S315E079C9500000000000000000000000000000000078 +S315E079C9600000000000000000000000000000000068 +S315E079C9700000000000000000000000000000000058 +S315E079C9800000000000000000000000000000000048 +S315E079C9900000000000000000000000000000000038 +S315E079C9A00000000000000000000000000000000028 +S315E079C9B00000000000000000000000000000000018 +S315E079C9C00000000000000000000000000000000008 +S315E079C9D000000000000000000000000000000000F8 +S315E079C9E000000000000000000000000000000000E8 +S315E079C9F000000000000000000000000000000000D8 +S315E079CA0000000000000000000000000000000000C7 +S315E079CA1000000000000000000000000000000000B7 +S315E079CA2000000000000000000000000000000000A7 +S315E079CA300000000000000000000000000000000097 +S315E079CA400000000000000000000000000000000087 +S315E079CA500000000000000000000000000000000077 +S315E079CA600000000000000000000000000000000067 +S315E079CA700000000000000000000000000000000057 +S315E079CA800000000000000000000000000000000047 +S315E079CA90000000003E4900000000000000000000B0 +S315E079CAA00000000000000000000000000000000027 +S315E079CAB00000000000000000000000000000000017 +S315E079CAC00000000000000000000000000000000007 +S315E079CAD000000000000000000000000000000000F7 +S315E079CAE000000000000000000000000000000000E7 +S315E079CAF000000000000000000000000000000000D7 +S315E079CB0000000000000000000000000000000000C6 +S315E079CB1000000000000000000000000000000000B6 +S315E079CB2000000000000000000000000000000000A6 +S315E079CB300000000000000000000000000000000096 +S315E079CB400000000000000000000000000000000086 +S315E079CB500000000000000000000000000000000076 +S315E079CB600000000000000000000000000000000066 +S315E079CB700000000000000000000000000000000056 +S315E079CB800000000000000000000000000000000046 +S315E079CB900000000000000000000000000000000036 +S315E079CBA00000000000000000000000000000000026 +S315E079CBB00000000000000000000000000000000016 +S315E079CBC00000000000000000000000000000000006 +S315E079CBD000000000000000000000000000000000F6 +S315E079CBE000000000000000000000000000000000E6 +S315E079CBF000000000000000000000000000000000D6 +S315E079CC00000000000000000000000000003E49003E +S315E079CC1000000000000000000000000000000000B5 +S315E079CC2000000000000000000000000000000000A5 +S315E079CC300000000000000000000000000000000095 +S315E079CC400000000000000000000000000000000085 +S315E079CC500000000000000000000000000000000075 +S315E079CC600000000000000000000000000000000065 +S315E079CC700000000000000000000000000000000055 +S315E079CC800000000000000000000000000000000045 +S315E079CC900000000000000000000000000000000035 +S315E079CCA00000000000000000000000000000000025 +S315E079CCB00000000000000000000000000000000015 +S315E079CCC00000000000000000000000000000000005 +S315E079CCD000000000000000000000000000000000F5 +S315E079CCE000000000000000000000000000000000E5 +S315E079CCF000000000000000000000000000000000D5 +S315E079CD0000000000000000000000000000000000C4 +S315E079CD1000000000000000000000000000000000B4 +S315E079CD2000000000000000000000000000000000A4 +S315E079CD300000000000000000000000000000000094 +S315E079CD400000000000000000000000000000000084 +S315E079CD500000000000000000000000000000000074 +S315E079CD600000000000000000000000000000000064 +S315E079CD700000000000000000000000000000000054 +S315E079CD800000000000003E490000000000000000BD +S315E079CD900000000000000000000000000000000034 +S315E079CDA00000000000000000000000000000000024 +S315E079CDB00000000000000000000000000000000014 +S315E079CDC00000000000000000000000000000000004 +S315E079CDD000000000000000000000000000000000F4 +S315E079CDE000000000000000000000000000000000E4 +S315E079CDF000000000000000000000000000000000D4 +S315E079CE0000000000000000000000000000000000C3 +S315E079CE1000000000000000000000000000000000B3 +S315E079CE2000000000000000000000000000000000A3 +S315E079CE300000000000000000000000000000000093 +S315E079CE400000000000000000000000000000000083 +S315E079CE500000000000000000000000000000000073 +S315E079CE600000000000000000000000000000000063 +S315E079CE700000000000000000000000000000000053 +S315E079CE800000000000000000000000000000000043 +S315E079CE900000000000000000000000000000000033 +S315E079CEA00000000000000000000000000000000023 +S315E079CEB00000000000000000000000000000000013 +S315E079CEC00000000000000000000000000000000003 +S315E079CED000000000000000000000000000000000F3 +S315E079CEE000000000000000000000000000000000E3 +S315E079CEF00000000000000000000000000000003E95 +S315E079CF004900000000000000000000000000000079 +S315E079CF1000000000000000000000000000000000B2 +S315E079CF2000000000000000000000000000000000A2 +S315E079CF300000000000000000000000000000000092 +S315E079CF400000000000000000000000000000000082 +S315E079CF500000000000000000000000000000000072 +S315E079CF600000000000000000000000000000000062 +S315E079CF700000000000000000000000000000000052 +S315E079CF800000000000000000000000000000000042 +S315E079CF900000000000000000000000000000000032 +S315E079CFA00000000000000000000000000000000022 +S315E079CFB00000000000000000000000000000000012 +S315E079CFC00000000000000000000000000000000002 +S315E079CFD000000000000000000000000000000000F2 +S315E079CFE000000000000000000000000000000000E2 +S315E079CFF000000000000000000000000000000000D2 +S315E079D00000000000000000000000000000000000C1 +S315E079D01000000000000000000000000000000000B1 +S315E079D02000000000000000000000000000000000A1 +S315E079D0300000000000000000000000000000000091 +S315E079D0400000000000000000000000000000000081 +S315E079D0500000000000000000000000000000000071 +S315E079D0600000000000000000000000000000000061 +S315E079D07000000000000000003E49000000000000CA +S315E079D0800000000000000000000000000000000041 +S315E079D0900000000000000000000000000000000031 +S315E079D0A00000000000000000000000000000000021 +S315E079D0B00000000000000000000000000000000011 +S315E079D0C00000000000000000000000000000000001 +S315E079D0D000000000000000000000000000000000F1 +S315E079D0E000000000000000000000000000000000E1 +S315E079D0F000000000000000000000000000000000D1 +S315E079D10000000000000000000000000000000000C0 +S315E079D11000000000000000000000000000000000B0 +S315E079D12000000000000000000000000000000000A0 +S315E079D1300000000000000000000000000000000090 +S315E079D1400000000000000000000000000000000080 +S315E079D1500000000000000000000000000000000070 +S315E079D1600000000000000000000000000000000060 +S315E079D1700000000000000000000000000000000050 +S315E079D1800000000000000000000000000000000040 +S315E079D1900000000000000000000000000000000030 +S315E079D1A00000000000000000000000000000000020 +S315E079D1B00000000000000000000000000000000010 +S315E079D1C00000000000000000000000000000000000 +S315E079D1D000000000000000000000000000000000F0 +S315E079D1E000000000000000000000000000000000E0 +S315E079D1F0003E490000000000000000000000000049 +S315E079D20000000000000000000000000000000000BF +S315E079D21000000000000000000000000000000000AF +S315E079D220000000000000000000000000000000009F +S315E079D230000000000000000000000000000000008F +S315E079D240000000000000000000000000000000007F +S315E079D250000000000000000000000000000000006F +S315E079D260000000000000000000000000000000005F +S315E079D270000000000000000000000000000000004F +S315E079D280000000000000000000000000000000003F +S315E079D290000000000000000000000000000000002F +S315E079D2A0000000000000000000000000000000001F +S315E079D2B0000000000000000000000000000000000F +S315E079D2C000000000000000000000000000000000FF +S315E079D2D000000000000000000000000000000000EF +S315E079D2E000000000000000000000000000000000DF +S315E079D2F000000000000000000000000000000000CF +S315E079D30000000000000000000000000000000000BE +S315E079D31000000000000000000000000000000000AE +S315E079D320000000000000000000000000000000009E +S315E079D330000000000000000000000000000000008E +S315E079D340000000000000000000000000000000007E +S315E079D350000000000000000000000000000000006E +S315E079D360000000000000000000003E4900000000D7 +S315E079D370000000000000000000000000000000004E +S315E079D380000000000000000000000000000000003E +S315E079D390000000000000000000000000000000002E +S315E079D3A0000000000000000000000000000000001E +S315E079D3B0000000000000000000000000000000000E +S315E079D3C000000000000000000000000000000000FE +S315E079D3D000000000000000000000000000000000EE +S315E079D3E000000000000000000000000000000000DE +S315E079D3F000000000000000000000000000000000CE +S315E079D40000000000000000000000000000000000BD +S315E079D41000000000000000000000000000000000AD +S315E079D420000000000000000000000000000000009D +S315E079D430000000000000000000000000000000008D +S315E079D440000000000000000000000000000000007D +S315E079D450000000000000000000000000000000006D +S315E079D460000000000000000000000000000000005D +S315E079D470000000000000000000000000000000004D +S315E079D480000000000000000000000000000000003D +S315E079D490000000000000000000000000000000002D +S315E079D4A0000000000000000000000000000000001D +S315E079D4B0000000000000000000000000000000000D +S315E079D4C000000000000000000000000000000000FD +S315E079D4D000000000000000000000000000000000ED +S315E079D4E00000003E49000000000000000000000056 +S315E079D4F000000000000000000000000000000000CD +S315E079D50000000000000000000000000000000000BC +S315E079D51000000000000000000000000000000000AC +S315E079D520000000000000000000000000000000009C +S315E079D530000000000000000000000000000000008C +S315E079D540000000000000000000000000000000007C +S315E079D550000000000000000000000000000000006C +S315E079D560000000000000000000000000000000005C +S315E079D570000000000000000000000000000000004C +S315E079D580000000000000000000000000000000003C +S315E079D590000000000000000000000000000000002C +S315E079D5A0000000000000000000000000000000001C +S315E079D5B0000000000000000000000000000000000C +S315E079D5C000000000000000000000000000000000FC +S315E079D5D000000000000000000000000000000000EC +S315E079D5E000000000000000000000000000000000DC +S315E079D5F000000000000000000000000000000000CC +S315E079D60000000000000000000000000000000000BB +S315E079D61000000000000000000000000000000000AB +S315E079D620000000000000000000000000000000009B +S315E079D630000000000000000000000000000000008B +S315E079D640000000000000000000000000000000007B +S315E079D6500000000000000000000000003E490000E4 +S315E079D660000000000000000000000000000000005B +S315E079D670000000000000000000000000000000004B +S315E079D680000000000000000000000000000000003B +S315E079D690000000000000000000000000000000002B +S315E079D6A0000000000000000000000000000000001B +S315E079D6B0000000000000000000000000000000000B +S315E079D6C000000000000000000000000000000000FB +S315E079D6D000000000000000000000000000000000EB +S315E079D6E000000000000000000000000000000000DB +S315E079D6F000000000000000000000000000000000CB +S315E079D70000000000000000000000000000000000BA +S315E079D71000000000000000000000000000000000AA +S315E079D720000000000000000000000000000000009A +S315E079D730000000000000000000000000000000008A +S315E079D740000000000000000000000000000000007A +S315E079D750000000000000000000000000000000006A +S315E079D760000000000000000000000000000000005A +S315E079D770000000000000000000000000000000004A +S315E079D780000000000000000000000000000000003A +S315E079D790000000000000000000000000000000002A +S315E079D7A0000000000000000000000000000000001A +S315E079D7B0000000000000000000000000000000000A +S315E079D7C000000000000000000000000000000000FA +S315E079D7D000000000003E4900000000000000000063 +S315E079D7E000000000000000000000000000000000DA +S315E079D7F000000000000000000000000000000000CA +S315E079D80000000000000000000000000000000000B9 +S315E079D81000000000000000000000000000000000A9 +S315E079D8200000000000000000000000000000000099 +S315E079D8300000000000000000000000000000000089 +S315E079D8400000000000000000000000000000000079 +S315E079D8500000000000000000000000000000000069 +S315E079D8600000000000000000000000000000000059 +S315E079D8700000000000000000000000000000000049 +S315E079D8800000000000000000000000000000000039 +S315E079D8900000000000000000000000000000000029 +S315E079D8A00000000000000000000000000000000019 +S315E079D8B00000000000000000000000000000000009 +S315E079D8C000000000000000000000000000000000F9 +S315E079D8D000000000000000000000000000000000E9 +S315E079D8E000000000000000000000000000000000D9 +S315E079D8F000000000000000000000000000000000C9 +S315E079D90000000000000000000000000000000000B8 +S315E079D91000000000000000000000000000000000A8 +S315E079D9200000000000000000000000000000000098 +S315E079D9300000000000000000000000000000000088 +S315E079D94000000000000000000000000000003E49F1 +S315E079D9500000000000000000000000000000000068 +S315E079D9600000000000000000000000000000000058 +S315E079D9700000000000000000000000000000000048 +S315E079D9800000000000000000000000000000000038 +S315E079D9900000000000000000000000000000000028 +S315E079D9A00000000000000000000000000000000018 +S315E079D9B00000000000000000000000000000000008 +S315E079D9C000000000000000000000000000000000F8 +S315E079D9D000000000000000000000000000000000E8 +S315E079D9E000000000000000000000000000000000D8 +S315E079D9F000000000000000000000000000000000C8 +S315E079DA0000000000000000000000000000000000B7 +S315E079DA1000000000000000000000000000000000A7 +S315E079DA200000000000000000000000000000000097 +S315E079DA300000000000000000000000000000000087 +S315E079DA400000000000000000000000000000000077 +S315E079DA500000000000000000000000000000000067 +S315E079DA600000000000000000000000000000000057 +S315E079DA700000000000000000000000000000000047 +S315E079DA800000000000000000000000000000000037 +S315E079DA900000000000000000000000000000000027 +S315E079DAA00000000000000000000000000000000017 +S315E079DAB00000000000000000000000000000000007 +S315E079DAC0000000000000003E490000000000000070 +S315E079DAD000000000000000000000000000000000E7 +S315E079DAE000000000000000000000000000000000D7 +S315E079DAF000000000000000000000000000000000C7 +S315E079DB0000000000000000000000000000000000B6 +S315E079DB1000000000000000000000000000000000A6 +S315E079DB200000000000000000000000000000000096 +S315E079DB300000000000000000000000000000000086 +S315E079DB400000000000000000000000000000000076 +S315E079DB500000000000000000000000000000000066 +S315E079DB600000000000000000000000000000000056 +S315E079DB700000000000000000000000000000000046 +S315E079DB800000000000000000000000000000000036 +S315E079DB900000000000000000000000000000000026 +S315E079DBA00000000000000000000000000000000016 +S315E079DBB00000000000000000000000000000000006 +S315E079DBC000000000000000000000000000000000F6 +S315E079DBD000000000000000000000000000000000E6 +S315E079DBE000000000000000000000000000000000D6 +S315E079DBF000000000000000000000000000000000C6 +S315E079DC0000000000000000000000000000000000B5 +S315E079DC1000000000000000000000000000000000A5 +S315E079DC200000000000000000000000000000000095 +S315E079DC300000000000000000000000000000000085 +S315E079DC403E490000000000000000000000000000EE +S315E079DC500000000000000000000000000000000065 +S315E079DC600000000000000000000000000000000055 +S315E079DC700000000000000000000000000000000045 +S315E079DC800000000000000000000000000000000035 +S315E079DC900000000000000000000000000000000025 +S315E079DCA00000000000000000000000000000000015 +S315E079DCB00000000000000000000000000000000005 +S315E079DCC000000000000000000000000000000000F5 +S315E079DCD000000000000000000000000000000000E5 +S315E079DCE000000000000000000000000000000000D5 +S315E079DCF000000000000000000000000000000000C5 +S315E079DD0000000000000000000000000000000000B4 +S315E079DD1000000000000000000000000000000000A4 +S315E079DD200000000000000000000000000000000094 +S315E079DD300000000000000000000000000000000084 +S315E079DD400000000000000000000000000000000074 +S315E079DD500000000000000000000000000000000064 +S315E079DD600000000000000000000000000000000054 +S315E079DD700000000000000000000000000000000044 +S315E079DD800000000000000000000000000000000034 +S315E079DD900000000000000000000000000000000024 +S315E079DDA00000000000000000000000000000000014 +S315E079DDB00000000000000000003E4900000000007D +S315E079DDC000000000000000000000000000000000F4 +S315E079DDD000000000000000000000000000000000E4 +S315E079DDE000000000000000000000000000000000D4 +S315E079DDF000000000000000000000000000000000C4 +S315E079DE0000000000000000000000000000000000B3 +S315E079DE1000000000000000000000000000000000A3 +S315E079DE200000000000000000000000000000000093 +S315E079DE300000000000000000000000000000000083 +S315E079DE400000000000000000000000000000000073 +S315E079DE500000000000000000000000000000000063 +S315E079DE600000000000000000000000000000000053 +S315E079DE700000000000000000000000000000000043 +S315E079DE800000000000000000000000000000000033 +S315E079DE900000000000000000000000000000000023 +S315E079DEA00000000000000000000000000000000013 +S315E079DEB00000000000000000000000000000000003 +S315E079DEC000000000000000000000000000000000F3 +S315E079DED000000000000000000000000000000000E3 +S315E079DEE000000000000000000000000000000000D3 +S315E079DEF000000000000000000000000000000000C3 +S315E079DF0000000000000000000000000000000000B2 +S315E079DF1000000000000000000000000000000000A2 +S315E079DF200000000000000000000000000000000092 +S315E079DF3000003E49000000000000000000000000FB +S315E079DF400000000000000000000000000000000072 +S315E079DF500000000000000000000000000000000062 +S315E079DF600000000000000000000000000000000052 +S315E079DF700000000000000000000000000000000042 +S315E079DF800000000000000000000000000000000032 +S315E079DF900000000000000000000000000000000022 +S315E079DFA00000000000000000000000000000000012 +S315E079DFB00000000000000000000000000000000002 +S315E079DFC000000000000000000000000000000000F2 +S315E079DFD000000000000000000000000000000000E2 +S315E079DFE000000000000000000000000000000000D2 +S315E079DFF000000000000000000000000000000000C2 +S315E079E00000000000000000000000000000000000B1 +S315E079E01000000000000000000000000000000000A1 +S315E079E0200000000000000000000000000000000091 +S315E079E0300000000000000000000000000000000081 +S315E079E0400000000000000000000000000000000071 +S315E079E0500000000000000000000000000000000061 +S315E079E0600000000000000000000000000000000051 +S315E079E0700000000000000000000000000000000041 +S315E079E0800000000000000000000000000000000031 +S315E079E0900000000000000000000000000000000021 +S315E079E0A000000000000000000000003E490000008A +S315E079E0B00000000000000000000000000000000001 +S315E079E0C000000000000000000000000000000000F1 +S315E079E0D000000000000000000000000000000000E1 +S315E079E0E000000000000000000000000000000000D1 +S315E079E0F000000000000000000000000000000000C1 +S315E079E10000000000000000000000000000000000B0 +S315E079E11000000000000000000000000000000000A0 +S315E079E1200000000000000000000000000000000090 +S315E079E1300000000000000000000000000000000080 +S315E079E1400000000000000000000000000000000070 +S315E079E1500000000000000000000000000000000060 +S315E079E1600000000000000000000000000000000050 +S315E079E1700000000000000000000000000000000040 +S315E079E1800000000000000000000000000000000030 +S315E079E1900000000000000000000000000000000020 +S315E079E1A00000000000000000000000000000000010 +S315E079E1B00000000000000000000000000000000000 +S315E079E1C000000000000000000000000000000000F0 +S315E079E1D000000000000000000000000000000000E0 +S315E079E1E000000000000000000000000000000000D0 +S315E079E1F000000000000000000000000000000000C0 +S315E079E20000000000000000000000000000000000AF +S315E079E210000000000000000000000000000000009F +S315E079E220000000003E490000000000000000000008 +S315E079E230000000000000000000000000000000007F +S315E079E240000000000000000000000000000000006F +S315E079E250000000000000000000000000000000005F +S315E079E260000000000000000000000000000000004F +S315E079E270000000000000000000000000000000003F +S315E079E280000000000000000000000000000000002F +S315E079E290000000000000000000000000000000001F +S315E079E2A0000000000000000000000000000000000F +S315E079E2B000000000000000000000000000000000FF +S315E079E2C000000000000000000000000000000000EF +S315E079E2D000000000000000000000000000000000DF +S315E079E2E000000000000000000000000000000000CF +S315E079E2F000000000000000000000000000000000BF +S315E079E30000000000000000000000000000000000AE +S315E079E310000000000000000000000000000000009E +S315E079E320000000000000000000000000000000008E +S315E079E330000000000000000000000000000000007E +S315E079E340000000000000000000000000000000006E +S315E079E350000000000000000000000000000000005E +S315E079E360000000000000000000000000000000004E +S315E079E370000000000000000000000000000000003E +S315E079E380000000000000000000000000000000002E +S315E079E390000000000000000000000000003E490097 +S315E079E3A0000000000000000000000000000000000E +S315E079E3B000000000000000000000000000000000FE +S315E079E3C000000000000000000000000000000000EE +S315E079E3D000000000000000000000000000000000DE +S315E079E3E000000000000000000000000000000000CE +S315E079E3F000000000000000000000000000000000BE +S315E079E40000000000000000000000000000000000AD +S315E079E410000000000000000000000000000000009D +S315E079E420000000000000000000000000000000008D +S315E079E430000000000000000000000000000000007D +S315E079E440000000000000000000000000000000006D +S315E079E450000000000000000000000000000000005D +S315E079E460000000000000000000000000000000004D +S315E079E470000000000000000000000000000000003D +S315E079E480000000000000000000000000000000002D +S315E079E490000000000000000000000000000000001D +S315E079E4A0000000000000000000000000000000000D +S315E079E4B000000000000000000000000000000000FD +S315E079E4C000000000000000000000000000000000ED +S315E079E4D000000000000000000000000000000000DD +S315E079E4E000000000000000000000000000000000CD +S315E079E4F000000000000000000000000000000000BD +S315E079E50000000000000000000000000000000000AC +S315E079E5100000000000003E49000000000000000015 +S315E079E520000000000000000000000000000000008C +S315E079E530000000000000000000000000000000007C +S315E079E540000000000000000000000000000000006C +S315E079E550000000000000000000000000000000005C +S315E079E560000000000000000000000000000000004C +S315E079E570000000000000000000000000000000003C +S315E079E580000000000000000000000000000000002C +S315E079E590000000000000000000000000000000001C +S315E079E5A0000000000000000000000000000000000C +S315E079E5B000000000000000000000000000000000FC +S315E079E5C000000000000000000000000000000000EC +S315E079E5D000000000000000000000000000000000DC +S315E079E5E000000000000000000000000000000000CC +S315E079E5F000000000000000000000000000000000BC +S315E079E60000000000000000000000000000000000AB +S315E079E610000000000000000000000000000000009B +S315E079E620000000000000000000000000000000008B +S315E079E630000000000000000000000000000000007B +S315E079E640000000000000000000000000000000006B +S315E079E650000000000000000000000000000000005B +S315E079E660000000000000000000000000000000004B +S315E079E670000000000000000000000000000000003B +S315E079E6800000000000000000000000000000003EED +S315E079E69049000000000000000000000000000000D2 +S315E079E6A0000000000000000000000000000000000B +S315E079E6B000000000000000000000000000000000FB +S315E079E6C000000000000000000000000000000000EB +S315E079E6D000000000000000000000000000000000DB +S315E079E6E000000000000000000000000000000000CB +S315E079E6F000000000000000000000000000000000BB +S315E079E70000000000000000000000000000000000AA +S315E079E710000000000000000000000000000000009A +S315E079E720000000000000000000000000000000008A +S315E079E730000000000000000000000000000000007A +S315E079E740000000000000000000000000000000006A +S315E079E750000000000000000000000000000000005A +S315E079E760000000000000000000000000000000004A +S315E079E770000000000000000000000000000000003A +S315E079E780000000000000000000000000000000002A +S315E079E790000000000000000000000000000000001A +S315E079E7A0000000000000000000000000000000000A +S315E079E7B000000000000000000000000000000000FA +S315E079E7C000000000000000000000000000000000EA +S315E079E7D000000000000000000000000000000000DA +S315E079E7E000000000000000000000000000000000CA +S315E079E7F000000000000000000000000000000000BA +S315E079E80000000000000000003E4900000000000022 +S315E079E8100000000000000000000000000000000099 +S315E079E8200000000000000000000000000000000089 +S315E079E8300000000000000000000000000000000079 +S315E079E8400000000000000000000000000000000069 +S315E079E8500000000000000000000000000000000059 +S315E079E8600000000000000000000000000000000049 +S315E079E8700000000000000000000000000000000039 +S315E079E8800000000000000000000000000000000029 +S315E079E8900000000000000000000000000000000019 +S315E079E8A00000000000000000000000000000000009 +S315E079E8B000000000000000000000000000000000F9 +S315E079E8C000000000000000000000000000000000E9 +S315E079E8D000000000000000000000000000000000D9 +S315E079E8E000000000000000000000000000000000C9 +S315E079E8F000000000000000000000000000000000B9 +S315E079E90000000000000000000000000000000000A8 +S315E079E9100000000000000000000000000000000098 +S315E079E9200000000000000000000000000000000088 +S315E079E9300000000000000000000000000000000078 +S315E079E9400000000000000000000000000000000068 +S315E079E9500000000000000000000000000000000058 +S315E079E9600000000000000000000000000000000048 +S315E079E9700000000000000000000000000000000038 +S315E079E980003E4900000000000000000000000000A1 +S315E079E9900000000000000000000000000000000018 +S315E079E9A00000000000000000000000000000000008 +S315E079E9B000000000000000000000000000000000F8 +S315E079E9C000000000000000000000000000000000E8 +S315E079E9D000000000000000000000000000000000D8 +S315E079E9E000000000000000000000000000000000C8 +S315E079E9F000000000000000000000000000000000B8 +S315E079EA0000000000000000000000000000000000A7 +S315E079EA100000000000000000000000000000000097 +S315E079EA200000000000000000000000000000000087 +S315E079EA300000000000000000000000000000000077 +S315E079EA400000000000000000000000000000000067 +S315E079EA500000000000000000000000000000000057 +S315E079EA600000000000000000000000000000000047 +S315E079EA700000000000000000000000000000000037 +S315E079EA800000000000000000000000000000000027 +S315E079EA900000000000000000000000000000000017 +S315E079EAA00000000000000000000000000000000007 +S315E079EAB000000000000000000000000000000000F7 +S315E079EAC000000000000000000000000000000000E7 +S315E079EAD000000000000000000000000000000000D7 +S315E079EAE000000000000000000000000000000000C7 +S315E079EAF0000000000000000000003E490000000030 +S315E079EB0000000000000000000000000000000000A6 +S315E079EB100000000000000000000000000000000096 +S315E079EB200000000000000000000000000000000086 +S315E079EB300000000000000000000000000000000076 +S315E079EB400000000000000000000000000000000066 +S315E079EB500000000000000000000000000000000056 +S315E079EB600000000000000000000000000000000046 +S315E079EB700000000000000000000000000000000036 +S315E079EB800000000000000000000000000000000026 +S315E079EB900000000000000000000000000000000016 +S315E079EBA00000000000000000000000000000000006 +S315E079EBB000000000000000000000000000000000F6 +S315E079EBC000000000000000000000000000000000E6 +S315E079EBD000000000000000000000000000000000D6 +S315E079EBE000000000000000000000000000000000C6 +S315E079EBF000000000000000000000000000000000B6 +S315E079EC0000000000000000000000000000000000A5 +S315E079EC100000000000000000000000000000000095 +S315E079EC200000000000000000000000000000000085 +S315E079EC300000000000000000000000000000000075 +S315E079EC400000000000000000000000000000000065 +S315E079EC500000000000000000000000000000000055 +S315E079EC600000000000000000000000000000000045 +S315E079EC700000003E490000000000000000000000AE +S315E079EC800000000000000000000000000000000025 +S315E079EC900000000000000000000000000000000015 +S315E079ECA00000000000000000000000000000000005 +S315E079ECB000000000000000000000000000000000F5 +S315E079ECC000000000000000000000000000000000E5 +S315E079ECD000000000000000000000000000000000D5 +S315E079ECE000000000000000000000000000000000C5 +S315E079ECF000000000000000000000000000000000B5 +S315E079ED0000000000000000000000000000000000A4 +S315E079ED100000000000000000000000000000000094 +S315E079ED200000000000000000000000000000000084 +S315E079ED300000000000000000000000000000000074 +S315E079ED400000000000000000000000000000000064 +S315E079ED500000000000000000000000000000000054 +S315E079ED600000000000000000000000000000000044 +S315E079ED700000000000000000000000000000000034 +S315E079ED800000000000000000000000000000000024 +S315E079ED900000000000000000000000000000000014 +S315E079EDA00000000000000000000000000000000004 +S315E079EDB000000000000000000000000000000000F4 +S315E079EDC000000000000000000000000000000000E4 +S315E079EDD000000000000000000000000000000000D4 +S315E079EDE00000000000000000000000003E4900003D +S315E079EDF000000000000000000000000000000000B4 +S315E079EE0000000000000000000000000000000000A3 +S315E079EE100000000000000000000000000000000093 +S315E079EE200000000000000000000000000000000083 +S315E079EE300000000000000000000000000000000073 +S315E079EE400000000000000000000000000000000063 +S315E079EE500000000000000000000000000000000053 +S315E079EE600000000000000000000000000000000043 +S315E079EE700000000000000000000000000000000033 +S315E079EE800000000000000000000000000000000023 +S315E079EE900000000000000000000000000000000013 +S315E079EEA00000000000000000000000000000000003 +S315E079EEB000000000000000000000000000000000F3 +S315E079EEC000000000000000000000000000000000E3 +S315E079EED000000000000000000000000000000000D3 +S315E079EEE000000000000000000000000000000000C3 +S315E079EEF000000000000000000000000000000000B3 +S315E079EF0000000000000000000000000000000000A2 +S315E079EF100000000000000000000000000000000092 +S315E079EF200000000000000000000000000000000082 +S315E079EF300000000000000000000000000000000072 +S315E079EF400000000000000000000000000000000062 +S315E079EF500000000000000000000000000000000052 +S315E079EF6000000000003E49000000000000000000BB +S315E079EF700000000000000000000000000000000032 +S315E079EF800000000000000000000000000000000022 +S315E079EF900000000000000000000000000000000012 +S315E079EFA00000000000000000000000000000000002 +S315E079EFB000000000000000000000000000000000F2 +S315E079EFC000000000000000000000000000000000E2 +S315E079EFD000000000000000000000000000000000D2 +S315E079EFE000000000000000000000000000000000C2 +S315E079EFF000000000000000000000000000000000B2 +S315E079F00000000000000000000000000000000000A1 +S315E079F0100000000000000000000000000000000091 +S315E079F0200000000000000000000000000000000081 +S315E079F0300000000000000000000000000000000071 +S315E079F0400000000000000000000000000000000061 +S315E079F0500000000000000000000000000000000051 +S315E079F0600000000000000000000000000000000041 +S315E079F0700000000000000000000000000000000031 +S315E079F0800000000000000000000000000000000021 +S315E079F0900000000000000000000000000000000011 +S315E079F0A00000000000000000000000000000000001 +S315E079F0B000000000000000000000000000000000F1 +S315E079F0C000000000000000000000000000000000E1 +S315E079F0D000000000000000000000000000003E494A +S315E079F0E000000000000000000000000000000000C1 +S315E079F0F000000000000000000000000000000000B1 +S315E079F10000000000000000000000000000000000A0 +S315E079F1100000000000000000000000000000000090 +S315E079F1200000000000000000000000000000000080 +S315E079F1300000000000000000000000000000000070 +S315E079F1400000000000000000000000000000000060 +S315E079F1500000000000000000000000000000000050 +S315E079F1600000000000000000000000000000000040 +S315E079F1700000000000000000000000000000000030 +S315E079F1800000000000000000000000000000000020 +S315E079F1900000000000000000000000000000000010 +S315E079F1A00000000000000000000000000000000000 +S315E079F1B000000000000000000000000000000000F0 +S315E079F1C000000000000000000000000000000000E0 +S315E079F1D000000000000000000000000000000000D0 +S315E079F1E000000000000000000000000000000000C0 +S315E079F1F000000000000000000000000000000000B0 +S315E079F200000000000000000000000000000000009F +S315E079F210000000000000000000000000000000008F +S315E079F220000000000000000000000000000000007F +S315E079F230000000000000000000000000000000006F +S315E079F240000000000000000000000000000000005F +S315E079F250000000000000003E4900000000000000C8 +S315E079F260000000000000000000000000000000003F +S315E079F270000000000000000000000000000000002F +S315E079F280000000000000000000000000000000001F +S315E079F290000000000000000000000000000000000F +S315E079F2A000000000000000000000000000000000FF +S315E079F2B000000000000000000000000000000000EF +S315E079F2C000000000000000000000000000000000DF +S315E079F2D000000000000000000000000000000000CF +S315E079F2E000000000000000000000000000000000BF +S315E079F2F000000000000000000000000000000000AF +S315E079F300000000000000000000000000000000009E +S315E079F310000000000000000000000000000000008E +S315E079F320000000000000000000000000000000007E +S315E079F330000000000000000000000000000000006E +S315E079F340000000000000000000000000000000005E +S315E079F350000000000000000000000000000000004E +S315E079F360000000000000000000000000000000003E +S315E079F370000000000000000000000000000000002E +S315E079F380000000000000000000000000000000001E +S315E079F390000000000000000000000000000000000E +S315E079F3A000000000000000000000000000000000FE +S315E079F3B000000000000000000000000000000000EE +S315E079F3C000000000000000000000000000000000DE +S315E079F3D03E49000000000000000000000000000047 +S315E079F3E000000000000000000000000000000000BE +S315E079F3F000000000000000000000000000000000AE +S315E079F400000000000000000000000000000000009D +S315E079F410000000000000000000000000000000008D +S315E079F420000000000000000000000000000000007D +S315E079F430000000000000000000000000000000006D +S315E079F440000000000000000000000000000000005D +S315E079F450000000000000000000000000000000004D +S315E079F460000000000000000000000000000000003D +S315E079F470000000000000000000000000000000002D +S315E079F480000000000000000000000000000000001D +S315E079F490000000000000000000000000000000000D +S315E079F4A000000000000000000000000000000000FD +S315E079F4B000000000000000000000000000000000ED +S315E079F4C000000000000000000000000000000000DD +S315E079F4D000000000000000000000000000000000CD +S315E079F4E000000000000000000000000000000000BD +S315E079F4F000000000000000000000000000000000AD +S315E079F500000000000000000000000000000000009C +S315E079F510000000000000000000000000000000008C +S315E079F520000000000000000000000000000000007C +S315E079F530000000000000000000000000000000006C +S315E079F5400000000000000000003E490000000000D5 +S315E079F550000000000000000000000000000000004C +S315E079F560000000000000000000000000000000003C +S315E079F570000000000000000000000000000000002C +S315E079F580000000000000000000000000000000001C +S315E079F590000000000000000000000000000000000C +S315E079F5A000000000000000000000000000000000FC +S315E079F5B000000000000000000000000000000000EC +S315E079F5C000000000000000000000000000000000DC +S315E079F5D000000000000000000000000000000000CC +S315E079F5E000000000000000000000000000000000BC +S315E079F5F000000000000000000000000000000000AC +S315E079F600000000000000000000000000000000009B +S315E079F610000000000000000000000000000000008B +S315E079F620000000000000000000000000000000007B +S315E079F630000000000000000000000000000000006B +S315E079F640000000000000000000000000000000005B +S315E079F650000000000000000000000000000000004B +S315E079F660000000000000000000000000000000003B +S315E079F670000000000000000000000000000000002B +S315E079F680000000000000000000000000000000001B +S315E079F690000000000000000000000000000000000B +S315E079F6A000000000000000000000000000000000FB +S315E079F6B000000000000000000000000000000000EB +S315E079F6C000003E4900000000000000000000000054 +S315E079F6D000000000000000000000000000000000CB +S315E079F6E000000000000000000000000000000000BB +S315E079F6F000000000000000000000000000000000AB +S315E079F700000000000000000000000000000000009A +S315E079F710000000000000000000000000000000008A +S315E079F720000000000000000000000000000000007A +S315E079F730000000000000000000000000000000006A +S315E079F740000000000000000000000000000000005A +S315E079F750000000000000000000000000000000004A +S315E079F760000000000000000000000000000000003A +S315E079F770000000000000000000000000000000002A +S315E079F780000000000000000000000000000000001A +S315E079F790000000000000000000000000000000000A +S315E079F7A000000000000000000000000000000000FA +S315E079F7B000000000000000000000000000000000EA +S315E079F7C000000000000000000000000000000000DA +S315E079F7D000000000000000000000000000000000CA +S315E079F7E000000000000000000000000000000000BA +S315E079F7F000000000000000000000000000000000AA +S315E079F8000000000000000000000000000000000099 +S315E079F8100000000000000000000000000000000089 +S315E079F8200000000000000000000000000000000079 +S315E079F83000000000000000000000003E49000000E2 +S315E079F8400000000000000000000000000000000059 +S315E079F8500000000000000000000000000000000049 +S315E079F8600000000000000000000000000000000039 +S315E079F8700000000000000000000000000000000029 +S315E079F8800000000000000000000000000000000019 +S315E079F8900000000000000000000000000000000009 +S315E079F8A000000000000000000000000000000000F9 +S315E079F8B000000000000000000000000000000000E9 +S315E079F8C000000000000000000000000000000000D9 +S315E079F8D000000000000000000000000000000000C9 +S315E079F8E000000000000000000000000000000000B9 +S315E079F8F000000000000000000000000000000000A9 +S315E079F9000000000000000000000000000000000098 +S315E079F9100000000000000000000000000000000088 +S315E079F9200000000000000000000000000000000078 +S315E079F9300000000000000000000000000000000068 +S315E079F9400000000000000000000000000000000058 +S315E079F9500000000000000000000000000000000048 +S315E079F9600000000000000000000000000000000038 +S315E079F9700000000000000000000000000000000028 +S315E079F9800000000000000000000000000000000018 +S315E079F9900000000000000000000000000000000008 +S315E079F9A000000000000000000000000000000000F8 +S315E079F9B0000000003E490000000000000000000061 +S315E079F9C000000000000000000000000000000000D8 +S315E079F9D000000000000000000000000000000000C8 +S315E079F9E000000000000000000000000000000000B8 +S315E079F9F000000000000000000000000000000000A8 +S315E079FA000000000000000000000000000000000097 +S315E079FA100000000000000000000000000000000087 +S315E079FA200000000000000000000000000000000077 +S315E079FA300000000000000000000000000000000067 +S315E079FA400000000000000000000000000000000057 +S315E079FA500000000000000000000000000000000047 +S315E079FA600000000000000000000000000000000037 +S315E079FA700000000000000000000000000000000027 +S315E079FA800000000000000000000000000000000017 +S315E079FA900000000000000000000000000000000007 +S315E079FAA000000000000000000000000000000000F7 +S315E079FAB000000000000000000000000000000000E7 +S315E079FAC000000000000000000000000000000000D7 +S315E079FAD000000000000000000000000000000000C7 +S315E079FAE000000000000000000000000000000000B7 +S315E079FAF000000000000000000000000000000000A7 +S315E079FB000000000000000000000000000000000096 +S315E079FB100000000000000000000000000000000086 +S315E079FB20000000000000000000000000003E4900EF +S315E079FB300000000000000000000000000000000066 +S315E079FB400000000000000000000000000000000056 +S315E079FB500000000000000000000000000000000046 +S315E079FB600000000000000000000000000000000036 +S315E079FB700000000000000000000000000000000026 +S315E079FB800000000000000000000000000000000016 +S315E079FB900000000000000000000000000000000006 +S315E079FBA000000000000000000000000000000000F6 +S315E079FBB000000000000000000000000000000000E6 +S315E079FBC000000000000000000000000000000000D6 +S315E079FBD000000000000000000000000000000000C6 +S315E079FBE000000000000000000000000000000000B6 +S315E079FBF000000000000000000000000000000000A6 +S315E079FC000000000000000000000000000000000095 +S315E079FC100000000000000000000000000000000085 +S315E079FC200000000000000000000000000000000075 +S315E079FC300000000000000000000000000000000065 +S315E079FC400000000000000000000000000000000055 +S315E079FC500000000000000000000000000000000045 +S315E079FC600000000000000000000000000000000035 +S315E079FC700000000000000000000000000000000025 +S315E079FC800000000000000000000000000000000015 +S315E079FC900000000000000000000000000000000005 +S315E079FCA00000000000003E4900000000000000006E +S315E079FCB000000000000000000000000000000000E5 +S315E079FCC000000000000000000000000000000000D5 +S315E079FCD000000000000000000000000000000000C5 +S315E079FCE000000000000000000000000000000000B5 +S315E079FCF000000000000000000000000000000000A5 +S315E079FD000000000000000000000000000000000094 +S315E079FD100000000000000000000000000000000084 +S315E079FD200000000000000000000000000000000074 +S315E079FD300000000000000000000000000000000064 +S315E079FD400000000000000000000000000000000054 +S315E079FD500000000000000000000000000000000044 +S315E079FD600000000000000000000000000000000034 +S315E079FD700000000000000000000000000000000024 +S315E079FD800000000000000000000000000000000014 +S315E079FD900000000000000000000000000000000004 +S315E079FDA000000000000000000000000000000000F4 +S315E079FDB000000000000000000000000000000000E4 +S315E079FDC000000000000000000000000000000000D4 +S315E079FDD000000000000000000000000000000000C4 +S315E079FDE000000000000000000000000000000000B4 +S315E079FDF000000000000000000000000000000000A4 +S315E079FE000000000000000000000000000000000093 +S315E079FE100000000000000000000000000000003E45 +S315E079FE20490000000000000000000000000000002A +S315E079FE300000000000000000000000000000000063 +S315E079FE400000000000000000000000000000000053 +S315E079FE500000000000000000000000000000000043 +S315E079FE600000000000000000000000000000000033 +S315E079FE700000000000000000000000000000000023 +S315E079FE800000000000000000000000000000000013 +S315E079FE900000000000000000000000000000000003 +S315E079FEA000000000000000000000000000000000F3 +S315E079FEB000000000000000000000000000000000E3 +S315E079FEC000000000000000000000000000000000D3 +S315E079FED000000000000000000000000000000000C3 +S315E079FEE000000000000000000000000000000000B3 +S315E079FEF000000000000000000000000000000000A3 +S315E079FF000000000000000000000000000000000092 +S315E079FF100000000000000000000000000000000082 +S315E079FF200000000000000000000000000000000072 +S315E079FF300000000000000000000000000000000062 +S315E079FF400000000000000000000000000000000052 +S315E079FF500000000000000000000000000000000042 +S315E079FF600000000000000000000000000000000032 +S315E079FF700000000000000000000000000000000022 +S315E079FF800000000000000000000000000000000012 +S315E079FF9000000000000000003E490000000000007B +S315E079FFA000000000000000000000000000000000F2 +S315E079FFB000000000000000000000000000000000E2 +S315E079FFC000000000000000000000000000000000D2 +S315E079FFD000000000000000000000000000000000C2 +S315E079FFE000000000000000000000000000000000B2 +S315E079FFF000000000000000000000000000000000A2 +S315E07A00000000000000000000000000000000000090 +S315E07A00100000000000000000000000000000000080 +S315E07A00200000000000000000000000000000000070 +S315E07A00300000000000000000000000000000000060 +S315E07A00400000000000000000000000000000000050 +S315E07A00500000000000000000000000000000000040 +S315E07A00600000000000000000000000000000000030 +S315E07A00700000000000000000000000000000000020 +S315E07A00800000000000000000000000000000000010 +S315E07A00900000000000000000000000000000000000 +S315E07A00A000000000000000000000000000000000F0 +S315E07A00B000000000000000000000000000000000E0 +S315E07A00C000000000000000000000000000000000D0 +S315E07A00D000000000000000000000000000000000C0 +S315E07A00E000000000000000000000000000000000B0 +S315E07A00F000000000000000000000000000000000A0 +S315E07A0100000000000000000000000000000000008F +S315E07A0110003E4900000000000000000000000000F8 +S315E07A0120000000000000000000000000000000006F +S315E07A0130000000000000000000000000000000005F +S315E07A0140000000000000000000000000000000004F +S315E07A0150000000000000000000000000000000003F +S315E07A0160000000000000000000000000000000002F +S315E07A0170000000000000000000000000000000001F +S315E07A0180000000000000000000000000000000000F +S315E07A019000000000000000000000000000000000FF +S315E07A01A000000000000000000000000000000000EF +S315E07A01B000000000000000000000000000000000DF +S315E07A01C000000000000000000000000000000000CF +S315E07A01D000000000000000000000000000000000BF +S315E07A01E000000000000000000000000000000000AF +S315E07A01F0000000000000000000000000000000009F +S315E07A0200000000000000000000000000000000008E +S315E07A0210000000000000000000000000000000007E +S315E07A0220000000000000000000000000000000006E +S315E07A0230000000000000000000000000000000005E +S315E07A0240000000000000000000000000000000004E +S315E07A0250000000000000000000000000000000003E +S315E07A0260000000000000000000000000000000002E +S315E07A0270000000000000000000000000000000001E +S315E07A0280000000000000000000003E490000000087 +S315E07A029000000000000000000000000000000000FE +S315E07A02A000000000000000000000000000000000EE +S315E07A02B000000000000000000000000000000000DE +S315E07A02C000000000000000000000000000000000CE +S315E07A02D000000000000000000000000000000000BE +S315E07A02E000000000000000000000000000000000AE +S315E07A02F0000000000000000000000000000000009E +S315E07A0300000000000000000000000000000000008D +S315E07A0310000000000000000000000000000000007D +S315E07A0320000000000000000000000000000000006D +S315E07A0330000000000000000000000000000000005D +S315E07A0340000000000000000000000000000000004D +S315E07A0350000000000000000000000000000000003D +S315E07A0360000000000000000000000000000000002D +S315E07A0370000000000000000000000000000000001D +S315E07A0380000000000000000000000000000000000D +S315E07A039000000000000000000000000000000000FD +S315E07A03A000000000000000000000000000000000ED +S315E07A03B000000000000000000000000000000000DD +S315E07A03C000000000000000000000000000000000CD +S315E07A03D000000000000000000000000000000000BD +S315E07A03E000000000000000000000000000000000AD +S315E07A03F0000000000000000000000000000000009D +S315E07A04000000003E49000000000000000000000005 +S315E07A0410000000000000000000000000000000007C +S315E07A0420000000000000000000000000000000006C +S315E07A0430000000000000000000000000000000005C +S315E07A0440000000000000000000000000000000004C +S315E07A0450000000000000000000000000000000003C +S315E07A0460000000000000000000000000000000002C +S315E07A0470000000000000000000000000000000001C +S315E07A0480000000000000000000000000000000000C +S315E07A049000000000000000000000000000000000FC +S315E07A04A000000000000000000000000000000000EC +S315E07A04B000000000000000000000000000000000DC +S315E07A04C000000000000000000000000000000000CC +S315E07A04D000000000000000000000000000000000BC +S315E07A04E000000000000000000000000000000000AC +S315E07A04F0000000000000000000000000000000009C +S315E07A0500000000000000000000000000000000008B +S315E07A0510000000000000000000000000000000007B +S315E07A0520000000000000000000000000000000006B +S315E07A0530000000000000000000000000000000005B +S315E07A0540000000000000000000000000000000004B +S315E07A0550000000000000000000000000000000003B +S315E07A0560000000000000000000000000000000002B +S315E07A05700000000000000000000000003E49000094 +S315E07A0580000000000000000000000000000000000B +S315E07A059000000000000000000000000000000000FB +S315E07A05A000000000000000000000000000000000EB +S315E07A05B000000000000000000000000000000000DB +S315E07A05C000000000000000000000000000000000CB +S315E07A05D000000000000000000000000000000000BB +S315E07A05E000000000000000000000000000000000AB +S315E07A05F0000000000000000000000000000000009B +S315E07A0600000000000000000000000000000000008A +S315E07A0610000000000000000000000000000000007A +S315E07A0620000000000000000000000000000000006A +S315E07A0630000000000000000000000000000000005A +S315E07A0640000000000000000000000000000000004A +S315E07A0650000000000000000000000000000000003A +S315E07A0660000000000000000000000000000000002A +S315E07A0670000000000000000000000000000000001A +S315E07A0680000000000000000000000000000000000A +S315E07A069000000000000000000000000000000000FA +S315E07A06A000000000000000000000000000000000EA +S315E07A06B000000000000000000000000000000000DA +S315E07A06C000000000000000000000000000000000CA +S315E07A06D000000000000000000000000000000000BA +S315E07A06E000000000000000000000000000000000AA +S315E07A06F000000000003E4900000000000000000013 +S315E07A07000000000000000000000000000000000089 +S315E07A07100000000000000000000000000000000079 +S315E07A07200000000000000000000000000000000069 +S315E07A07300000000000000000000000000000000059 +S315E07A07400000000000000000000000000000000049 +S315E07A07500000000000000000000000000000000039 +S315E07A07600000000000000000000000000000000029 +S315E07A07700000000000000000000000000000000019 +S315E07A07800000000000000000000000000000000009 +S315E07A079000000000000000000000000000000000F9 +S315E07A07A000000000000000000000000000000000E9 +S315E07A07B000000000000000000000000000000000D9 +S315E07A07C000000000000000000000000000000000C9 +S315E07A07D000000000000000000000000000000000B9 +S315E07A07E000000000000000000000000000000000A9 +S315E07A07F00000000000000000000000000000000099 +S315E07A08000000000000000000000000000000000088 +S315E07A08100000000000000000000000000000000078 +S315E07A08200000000000000000000000000000000068 +S315E07A08300000000000000000000000000000000058 +S315E07A08400000000000000000000000000000000048 +S315E07A08500000000000000000000000000000000038 +S315E07A086000000000000000000000000000003E49A1 +S315E07A08700000000000000000000000000000000018 +S315E07A08800000000000000000000000000000000008 +S315E07A089000000000000000000000000000000000F8 +S315E07A08A000000000000000000000000000000000E8 +S315E07A08B000000000000000000000000000000000D8 +S315E07A08C000000000000000000000000000000000C8 +S315E07A08D000000000000000000000000000000000B8 +S315E07A08E000000000000000000000000000000000A8 +S315E07A08F00000000000000000000000000000000098 +S315E07A09000000000000000000000000000000000087 +S315E07A09100000000000000000000000000000000077 +S315E07A09200000000000000000000000000000000067 +S315E07A09300000000000000000000000000000000057 +S315E07A09400000000000000000000000000000000047 +S315E07A09500000000000000000000000000000000037 +S315E07A09600000000000000000000000000000000027 +S315E07A09700000000000000000000000000000000017 +S315E07A09800000000000000000000000000000000007 +S315E07A099000000000000000000000000000000000F7 +S315E07A09A000000000000000000000000000000000E7 +S315E07A09B000000000000000000000000000000000D7 +S315E07A09C000000000000000000000000000000000C7 +S315E07A09D000000000000000000000000000000000B7 +S315E07A09E0000000000000003E490000000000000020 +S315E07A09F00000000000000000000000000000000097 +S315E07A0A000000000000000000000000000000000086 +S315E07A0A100000000000000000000000000000000076 +S315E07A0A200000000000000000000000000000000066 +S315E07A0A300000000000000000000000000000000056 +S315E07A0A400000000000000000000000000000000046 +S315E07A0A500000000000000000000000000000000036 +S315E07A0A600000000000000000000000000000000026 +S315E07A0A700000000000000000000000000000000016 +S315E07A0A800000000000000000000000000000000006 +S315E07A0A9000000000000000000000000000000000F6 +S315E07A0AA000000000000000000000000000000000E6 +S315E07A0AB000000000000000000000000000000000D6 +S315E07A0AC000000000000000000000000000000000C6 +S315E07A0AD000000000000000000000000000000000B6 +S315E07A0AE000000000000000000000000000000000A6 +S315E07A0AF00000000000000000000000000000000096 +S315E07A0B000000000000000000000000000000000085 +S315E07A0B100000000000000000000000000000000075 +S315E07A0B200000000000000000000000000000000065 +S315E07A0B300000000000000000000000000000000055 +S315E07A0B400000000000000000000000000000000045 +S315E07A0B500000000000000000000000000000000035 +S315E07A0B603E4900000000000000000000000000009E +S315E07A0B700000000000000000000000000000000015 +S315E07A0B800000000000000000000000000000000005 +S315E07A0B9000000000000000000000000000000000F5 +S315E07A0BA000000000000000000000000000000000E5 +S315E07A0BB000000000000000000000000000000000D5 +S315E07A0BC000000000000000000000000000000000C5 +S315E07A0BD000000000000000000000000000000000B5 +S315E07A0BE000000000000000000000000000000000A5 +S315E07A0BF00000000000000000000000000000000095 +S315E07A0C000000000000000000000000000000000084 +S315E07A0C100000000000000000000000000000000074 +S315E07A0C200000000000000000000000000000000064 +S315E07A0C300000000000000000000000000000000054 +S315E07A0C400000000000000000000000000000000044 +S315E07A0C500000000000000000000000000000000034 +S315E07A0C600000000000000000000000000000000024 +S315E07A0C700000000000000000000000000000000014 +S315E07A0C800000000000000000000000000000000004 +S315E07A0C9000000000000000000000000000000000F4 +S315E07A0CA000000000000000000000000000000000E4 +S315E07A0CB000000000000000000000000000000000D4 +S315E07A0CC000000000000000000000000000000000C4 +S315E07A0CD00000000000000000003E4900000000002D +S315E07A0CE000000000000000000000000000000000A4 +S315E07A0CF00000000000000000000000000000000094 +S315E07A0D000000000000000000000000000000000083 +S315E07A0D100000000000000000000000000000000073 +S315E07A0D200000000000000000000000000000000063 +S315E07A0D300000000000000000000000000000000053 +S315E07A0D400000000000000000000000000000000043 +S315E07A0D500000000000000000000000000000000033 +S315E07A0D600000000000000000000000000000000023 +S315E07A0D700000000000000000000000000000000013 +S315E07A0D800000000000000000000000000000000003 +S315E07A0D9000000000000000000000000000000000F3 +S315E07A0DA000000000000000000000000000000000E3 +S315E07A0DB000000000000000000000000000000000D3 +S315E07A0DC000000000000000000000000000000000C3 +S315E07A0DD000000000000000000000000000000000B3 +S315E07A0DE000000000000000000000000000000000A3 +S315E07A0DF00000000000000000000000000000000093 +S315E07A0E000000000000000000000000000000000082 +S315E07A0E100000000000000000000000000000000072 +S315E07A0E200000000000000000000000000000000062 +S315E07A0E300000000000000000000000000000000052 +S315E07A0E400000000000000000000000000000000042 +S315E07A0E5000003E49000000000000000000000000AB +S315E07A0E600000000000000000000000000000000022 +S315E07A0E700000000000000000000000000000000012 +S315E07A0E800000000000000000000000000000000002 +S315E07A0E9000000000000000000000000000000000F2 +S315E07A0EA000000000000000000000000000000000E2 +S315E07A0EB000000000000000000000000000000000D2 +S315E07A0EC000000000000000000000000000000000C2 +S315E07A0ED000000000000000000000000000000000B2 +S315E07A0EE000000000000000000000000000000000A2 +S315E07A0EF00000000000000000000000000000000092 +S315E07A0F000000000000000000000000000000000081 +S315E07A0F100000000000000000000000000000000071 +S315E07A0F200000000000000000000000000000000061 +S315E07A0F300000000000000000000000000000000051 +S315E07A0F400000000000000000000000000000000041 +S315E07A0F500000000000000000000000000000000031 +S315E07A0F600000000000000000000000000000000021 +S315E07A0F700000000000000000000000000000000011 +S315E07A0F800000000000000000000000000000000001 +S315E07A0F9000000000000000000000000000000000F1 +S315E07A0FA000000000000000000000000000000000E1 +S315E07A0FB000000000000000000000000000000000D1 +S315E07A0FC000000000000000000000003E490000003A +S315E07A0FD000000000000000000000000000000000B1 +S315E07A0FE000000000000000000000000000000000A1 +S315E07A0FF00000000000000000000000000000000091 +S315E07A10000000000000000000000000000000000080 +S315E07A10100000000000000000000000000000000070 +S315E07A10200000000000000000000000000000000060 +S315E07A10300000000000000000000000000000000050 +S315E07A10400000000000000000000000000000000040 +S315E07A10500000000000000000000000000000000030 +S315E07A10600000000000000000000000000000000020 +S315E07A10700000000000000000000000000000000010 +S315E07A10800000000000000000000000000000000000 +S315E07A109000000000000000000000000000000000F0 +S315E07A10A000000000000000000000000000000000E0 +S315E07A10B000000000000000000000000000000000D0 +S315E07A10C000000000000000000000000000000000C0 +S315E07A10D000000000000000000000000000000000B0 +S315E07A10E000000000000000000000000000000000A0 +S315E07A10F00000000000000000000000000000000090 +S315E07A1100000000000000000000000000000000007F +S315E07A1110000000000000000000000000000000006F +S315E07A1120000000000000000000000000000000005F +S315E07A1130000000000000000000000000000000004F +S315E07A1140000000003E4900000000000000000000B8 +S315E07A1150000000000000000000000000000000002F +S315E07A1160000000000000000000000000000000001F +S315E07A1170000000000000000000000000000000000F +S315E07A118000000000000000000000000000000000FF +S315E07A119000000000000000000000000000000000EF +S315E07A11A000000000000000000000000000000000DF +S315E07A11B000000000000000000000000000000000CF +S315E07A11C000000000000000000000000000000000BF +S315E07A11D000000000000000000000000000000000AF +S315E07A11E0000000000000000000000000000000009F +S315E07A11F0000000000000000000000000000000008F +S315E07A1200000000000000000000000000000000007E +S315E07A1210000000000000000000000000000000006E +S315E07A1220000000000000000000000000000000005E +S315E07A1230000000000000000000000000000000004E +S315E07A1240000000000000000000000000000000003E +S315E07A1250000000000000000000000000000000002E +S315E07A1260000000000000000000000000000000001E +S315E07A1270000000000000000000000000000000000E +S315E07A128000000000000000000000000000000000FE +S315E07A129000000000000000000000000000000000EE +S315E07A12A000000000000000000000000000000000DE +S315E07A12B0000000000000000000000000003E490047 +S315E07A12C000000000000000000000000000000000BE +S315E07A12D000000000000000000000000000000000AE +S315E07A12E0000000000000000000000000000000009E +S315E07A12F0000000000000000000000000000000008E +S315E07A1300000000000000000000000000000000007D +S315E07A1310000000000000000000000000000000006D +S315E07A1320000000000000000000000000000000005D +S315E07A1330000000000000000000000000000000004D +S315E07A1340000000000000000000000000000000003D +S315E07A1350000000000000000000000000000000002D +S315E07A1360000000000000000000000000000000001D +S315E07A1370000000000000000000000000000000000D +S315E07A138000000000000000000000000000000000FD +S315E07A139000000000000000000000000000000000ED +S315E07A13A000000000000000000000000000000000DD +S315E07A13B000000000000000000000000000000000CD +S315E07A13C000000000000000000000000000000000BD +S315E07A13D000000000000000000000000000000000AD +S315E07A13E0000000000000000000000000000000009D +S315E07A13F0000000000000000000000000000000008D +S315E07A1400000000000000000000000000000000007C +S315E07A1410000000000000000000000000000000006C +S315E07A1420000000000000000000000000000000005C +S315E07A14300000000000003E490000000000000000C5 +S315E07A1440000000000000000000000000000000003C +S315E07A1450000000000000000000000000000000002C +S315E07A1460000000000000000000000000000000001C +S315E07A1470000000000000000000000000000000000C +S315E07A148000000000000000000000000000000000FC +S315E07A149000000000000000000000000000000000EC +S315E07A14A000000000000000000000000000000000DC +S315E07A14B000000000000000000000000000000000CC +S315E07A14C000000000000000000000000000000000BC +S315E07A14D000000000000000000000000000000000AC +S315E07A14E0000000000000000000000000000000009C +S315E07A14F0000000000000000000000000000000008C +S315E07A1500000000000000000000000000000000007B +S315E07A1510000000000000000000000000000000006B +S315E07A1520000000000000000000000000000000005B +S315E07A1530000000000000000000000000000000004B +S315E07A1540000000000000000000000000000000003B +S315E07A1550000000000000000000000000000000002B +S315E07A1560000000000000000000000000000000001B +S315E07A1570000000000000000000000000000000000B +S315E07A158000000000000000000000000000000000FB +S315E07A159000000000000000000000000000000000EB +S315E07A15A00000000000000000000000000000003E9D +S315E07A15B04900000000000000000000000000000082 +S315E07A15C000000000000000000000000000000000BB +S315E07A15D000000000000000000000000000000000AB +S315E07A15E0000000000000000000000000000000009B +S315E07A15F0000000000000000000000000000000008B +S315E07A1600000000000000000000000000000000007A +S315E07A1610000000000000000000000000000000006A +S315E07A1620000000000000000000000000000000005A +S315E07A1630000000000000000000000000000000004A +S315E07A1640000000000000000000000000000000003A +S315E07A1650000000000000000000000000000000002A +S315E07A1660000000000000000000000000000000001A +S315E07A1670000000000000000000000000000000000A +S315E07A168000000000000000000000000000000000FA +S315E07A169000000000000000000000000000000000EA +S315E07A16A000000000000000000000000000000000DA +S315E07A16B000000000000000000000000000000000CA +S315E07A16C000000000000000000000000000000000BA +S315E07A16D000000000000000000000000000000000AA +S315E07A16E0000000000000000000000000000000009A +S315E07A16F0000000000000000000000000000000008A +S315E07A17000000000000000000000000000000000079 +S315E07A17100000000000000000000000000000000069 +S315E07A172000000000000000003E49000000000000D2 +S315E07A17300000000000000000000000000000000049 +S315E07A17400000000000000000000000000000000039 +S315E07A17500000000000000000000000000000000029 +S315E07A17600000000000000000000000000000000019 +S315E07A17700000000000000000000000000000000009 +S315E07A178000000000000000000000000000000000F9 +S315E07A179000000000000000000000000000000000E9 +S315E07A17A000000000000000000000000000000000D9 +S315E07A17B000000000000000000000000000000000C9 +S315E07A17C000000000000000000000000000000000B9 +S315E07A17D000000000000000000000000000000000A9 +S315E07A17E00000000000000000000000000000000099 +S315E07A17F00000000000000000000000000000000089 +S315E07A18000000000000000000000000000000000078 +S315E07A18100000000000000000000000000000000068 +S315E07A18200000000000000000000000000000000058 +S315E07A18300000000000000000000000000000000048 +S315E07A18400000000000000000000000000000000038 +S315E07A18500000000000000000000000000000000028 +S315E07A18600000000000000000000000000000000018 +S315E07A18700000000000000000000000000000000008 +S315E07A188000000000000000000000000000000000F8 +S315E07A189000000000000000000000000000000000E8 +S315E07A18A0003E490000000000000000000000000051 +S315E07A18B000000000000000000000000000000000C8 +S315E07A18C000000000000000000000000000000000B8 +S315E07A18D000000000000000000000000000000000A8 +S315E07A18E00000000000000000000000000000000098 +S315E07A18F00000000000000000000000000000000088 +S315E07A19000000000000000000000000000000000077 +S315E07A19100000000000000000000000000000000067 +S315E07A19200000000000000000000000000000000057 +S315E07A19300000000000000000000000000000000047 +S315E07A19400000000000000000000000000000000037 +S315E07A19500000000000000000000000000000000027 +S315E07A19600000000000000000000000000000000017 +S315E07A19700000000000000000000000000000000007 +S315E07A198000000000000000000000000000000000F7 +S315E07A199000000000000000000000000000000000E7 +S315E07A19A000000000000000000000000000000000D7 +S315E07A19B000000000000000000000000000000000C7 +S315E07A19C000000000000000000000000000000000B7 +S315E07A19D000000000000000000000000000000000A7 +S315E07A19E00000000000000000000000000000000097 +S315E07A19F00000000000000000000000000000000087 +S315E07A1A000000000000000000000000000000000076 +S315E07A1A10000000000000000000003E4900000000DF +S315E07A1A200000000000000000000000000000000056 +S315E07A1A300000000000000000000000000000000046 +S315E07A1A400000000000000000000000000000000036 +S315E07A1A500000000000000000000000000000000026 +S315E07A1A600000000000000000000000000000000016 +S315E07A1A700000000000000000000000000000000006 +S315E07A1A8000000000000000000000000000000000F6 +S315E07A1A9000000000000000000000000000000000E6 +S315E07A1AA000000000000000000000000000000000D6 +S315E07A1AB000000000000000000000000000000000C6 +S315E07A1AC000000000000000000000000000000000B6 +S315E07A1AD000000000000000000000000000000000A6 +S315E07A1AE00000000000000000000000000000000096 +S315E07A1AF00000000000000000000000000000000086 +S315E07A1B000000000000000000000000000000000075 +S315E07A1B100000000000000000000000000000000065 +S315E07A1B200000000000000000000000000000000055 +S315E07A1B300000000000000000000000000000000045 +S315E07A1B400000000000000000000000000000000035 +S315E07A1B500000000000000000000000000000000025 +S315E07A1B600000000000000000000000000000000015 +S315E07A1B700000000000000000000000000000000005 +S315E07A1B8000000000000000000000000000000000F5 +S315E07A1B900000003E4900000000000000000000005E +S315E07A1BA000000000000000000000000000000000D5 +S315E07A1BB000000000000000000000000000000000C5 +S315E07A1BC000000000000000000000000000000000B5 +S315E07A1BD000000000000000000000000000000000A5 +S315E07A1BE00000000000000000000000000000000095 +S315E07A1BF00000000000000000000000000000000085 +S315E07A1C000000000000000000000000000000000074 +S315E07A1C100000000000000000000000000000000064 +S315E07A1C200000000000000000000000000000000054 +S315E07A1C300000000000000000000000000000000044 +S315E07A1C400000000000000000000000000000000034 +S315E07A1C500000000000000000000000000000000024 +S315E07A1C600000000000000000000000000000000014 +S315E07A1C700000000000000000000000000000000004 +S315E07A1C8000000000000000000000000000000000F4 +S315E07A1C9000000000000000000000000000000000E4 +S315E07A1CA000000000000000000000000000000000D4 +S315E07A1CB000000000000000000000000000000000C4 +S315E07A1CC000000000000000000000000000000000B4 +S315E07A1CD000000000000000000000000000000000A4 +S315E07A1CE00000000000000000000000000000000094 +S315E07A1CF00000000000000000000000000000000084 +S315E07A1D000000000000000000000000003E490000EC +S315E07A1D100000000000000000000000000000000063 +S315E07A1D200000000000000000000000000000000053 +S315E07A1D300000000000000000000000000000000043 +S315E07A1D400000000000000000000000000000000033 +S315E07A1D500000000000000000000000000000000023 +S315E07A1D600000000000000000000000000000000013 +S315E07A1D700000000000000000000000000000000003 +S315E07A1D8000000000000000000000000000000000F3 +S315E07A1D9000000000000000000000000000000000E3 +S315E07A1DA000000000000000000000000000000000D3 +S315E07A1DB000000000000000000000000000000000C3 +S315E07A1DC000000000000000000000000000000000B3 +S315E07A1DD000000000000000000000000000000000A3 +S315E07A1DE00000000000000000000000000000000093 +S315E07A1DF00000000000000000000000000000000083 +S315E07A1E000000000000000000000000000000000072 +S315E07A1E100000000000000000000000000000000062 +S315E07A1E200000000000000000000000000000000052 +S315E07A1E300000000000000000000000000000000042 +S315E07A1E400000000000000000000000000000000032 +S315E07A1E500000000000000000000000000000000022 +S315E07A1E600000000000000000000000000000000012 +S315E07A1E700000000000000000000000000000000002 +S315E07A1E8000000000003E490000000000000000006B +S315E07A1E9000000000000000000000000000000000E2 +S315E07A1EA000000000000000000000000000000000D2 +S315E07A1EB000000000000000000000000000000000C2 +S315E07A1EC000000000000000000000000000000000B2 +S315E07A1ED000000000000000000000000000000000A2 +S315E07A1EE00000000000000000000000000000000092 +S315E07A1EF00000000000000000000000000000000082 +S315E07A1F000000000000000000000000000000000071 +S315E07A1F100000000000000000000000000000000061 +S315E07A1F200000000000000000000000000000000051 +S315E07A1F300000000000000000000000000000000041 +S315E07A1F400000000000000000000000000000000031 +S315E07A1F500000000000000000000000000000000021 +S315E07A1F600000000000000000000000000000000011 +S315E07A1F700000000000000000000000000000000001 +S315E07A1F8000000000000000000000000000000000F1 +S315E07A1F9000000000000000000000000000000000E1 +S315E07A1FA000000000000000000000000000000000D1 +S315E07A1FB000000000000000000000000000000000C1 +S315E07A1FC000000000000000000000000000000000B1 +S315E07A1FD000000000000000000000000000000000A1 +S315E07A1FE00000000000000000000000000000000091 +S315E07A1FF000000000000000000000000000003E49FA +S315E07A20000000000000000000000000000000000070 +S315E07A20100000000000000000000000000000000060 +S315E07A20200000000000000000000000000000000050 +S315E07A20300000000000000000000000000000000040 +S315E07A20400000000000000000000000000000000030 +S315E07A20500000000000000000000000000000000020 +S315E07A20600000000000000000000000000000000010 +S315E07A20700000000000000000000000000000000000 +S315E07A208000000000000000000000000000000000F0 +S315E07A209000000000000000000000000000000000E0 +S315E07A20A000000000000000000000000000000000D0 +S315E07A20B000000000000000000000000000000000C0 +S315E07A20C000000000000000000000000000000000B0 +S315E07A20D000000000000000000000000000000000A0 +S315E07A20E00000000000000000000000000000000090 +S315E07A20F00000000000000000000000000000000080 +S315E07A2100000000000000000000000000000000006F +S315E07A2110000000000000000000000000000000005F +S315E07A2120000000000000000000000000000000004F +S315E07A2130000000000000000000000000000000003F +S315E07A2140000000000000000000000000000000002F +S315E07A2150000000000000000000000000000000001F +S315E07A2160000000000000000000000000000000000F +S315E07A2170000000000000003E490000000000000078 +S315E07A218000000000000000000000000000000000EF +S315E07A219000000000000000000000000000000000DF +S315E07A21A000000000000000000000000000000000CF +S315E07A21B000000000000000000000000000000000BF +S315E07A21C000000000000000000000000000000000AF +S315E07A21D0000000000000000000000000000000009F +S315E07A21E0000000000000000000000000000000008F +S315E07A21F0000000000000000000000000000000007F +S315E07A2200000000000000000000000000000000006E +S315E07A2210000000000000000000000000000000005E +S315E07A2220000000000000000000000000000000004E +S315E07A2230000000000000000000000000000000003E +S315E07A2240000000000000000000000000000000002E +S315E07A2250000000000000000000000000000000001E +S315E07A2260000000000000000000000000000000000E +S315E07A227000000000000000000000000000000000FE +S315E07A228000000000000000000000000000000000EE +S315E07A229000000000000000000000000000000000DE +S315E07A22A000000000000000000000000000000000CE +S315E07A22B000000000000000000000000000000000BE +S315E07A22C000000000000000000000000000000000AE +S315E07A22D0000000000000000000000000000000009E +S315E07A22E0000000000000000000000000000000008E +S315E07A22F03E490000000000000000000000000000F7 +S315E07A2300000000000000000000000000000000006D +S315E07A2310000000000000000000000000000000005D +S315E07A2320000000000000000000000000000000004D +S315E07A2330000000000000000000000000000000003D +S315E07A2340000000000000000000000000000000002D +S315E07A2350000000000000000000000000000000001D +S315E07A2360000000000000000000000000000000000D +S315E07A237000000000000000000000000000000000FD +S315E07A238000000000000000000000000000000000ED +S315E07A239000000000000000000000000000000000DD +S315E07A23A000000000000000000000000000000000CD +S315E07A23B000000000000000000000000000000000BD +S315E07A23C000000000000000000000000000000000AD +S315E07A23D0000000000000000000000000000000009D +S315E07A23E0000000000000000000000000000000008D +S315E07A23F0000000000000000000000000000000007D +S315E07A2400000000000000000000000000000000006C +S315E07A2410000000000000000000000000000000005C +S315E07A2420000000000000000000000000000000004C +S315E07A2430000000000000000000000000000000003C +S315E07A2440000000000000000000000000000000002C +S315E07A2450000000000000000000000000000000001C +S315E07A24600000000000000000003E49000000000085 +S315E07A247000000000000000000000000000000000FC +S315E07A248000000000000000000000000000000000EC +S315E07A249000000000000000000000000000000000DC +S315E07A24A000000000000000000000000000000000CC +S315E07A24B000000000000000000000000000000000BC +S315E07A24C000000000000000000000000000000000AC +S315E07A24D0000000000000000000000000000000009C +S315E07A24E0000000000000000000000000000000008C +S315E07A24F0000000000000000000000000000000007C +S315E07A2500000000000000000000000000000000006B +S315E07A2510000000000000000000000000000000005B +S315E07A2520000000000000000000000000000000004B +S315E07A2530000000000000000000000000000000003B +S315E07A2540000000000000000000000000000000002B +S315E07A2550000000000000000000000000000000001B +S315E07A2560000000000000000000000000000000000B +S315E07A257000000000000000000000000000000000FB +S315E07A258000000000000000000000000000000000EB +S315E07A259000000000000000000000000000000000DB +S315E07A25A000000000000000000000000000000000CB +S315E07A25B000000000000000000000000000000000BB +S315E07A25C000000000000000000000000000000000AB +S315E07A25D0000000000000000000000000000000009B +S315E07A25E000003E4900000000000000000000000004 +S315E07A25F0000000000000000000000000000000007B +S315E07A2600000000000000000000000000000000006A +S315E07A2610000000000000000000000000000000005A +S315E07A2620000000000000000000000000000000004A +S315E07A2630000000000000000000000000000000003A +S315E07A2640000000000000000000000000000000002A +S315E07A2650000000000000000000000000000000001A +S315E07A2660000000000000000000000000000000000A +S315E07A267000000000000000000000000000000000FA +S315E07A268000000000000000000000000000000000EA +S315E07A269000000000000000000000000000000000DA +S315E07A26A000000000000000000000000000000000CA +S315E07A26B000000000000000000000000000000000BA +S315E07A26C000000000000000000000000000000000AA +S315E07A26D0000000000000000000000000000000009A +S315E07A26E0000000000000000000000000000000008A +S315E07A26F0000000000000000000000000000000007A +S315E07A27000000000000000000000000000000000069 +S315E07A27100000000000000000000000000000000059 +S315E07A27200000000000000000000000000000000049 +S315E07A27300000000000000000000000000000000039 +S315E07A27400000000000000000000000000000000029 +S315E07A275000000000000000000000003E4900000092 +S315E07A27600000000000000000000000000000000009 +S315E07A277000000000000000000000000000000000F9 +S315E07A278000000000000000000000000000000000E9 +S315E07A279000000000000000000000000000000000D9 +S315E07A27A000000000000000000000000000000000C9 +S315E07A27B000000000000000000000000000000000B9 +S315E07A27C000000000000000000000000000000000A9 +S315E07A27D00000000000000000000000000000000099 +S315E07A27E00000000000000000000000000000000089 +S315E07A27F00000000000000000000000000000000079 +S315E07A28000000000000000000000000000000000068 +S315E07A28100000000000000000000000000000000058 +S315E07A28200000000000000000000000000000000048 +S315E07A28300000000000000000000000000000000038 +S315E07A28400000000000000000000000000000000028 +S315E07A28500000000000000000000000000000000018 +S315E07A28600000000000000000000000000000000008 +S315E07A287000000000000000000000000000000000F8 +S315E07A288000000000000000000000000000000000E8 +S315E07A289000000000000000000000000000000000D8 +S315E07A28A000000000000000000000000000000000C8 +S315E07A28B000000000000000000000000000000000B8 +S315E07A28C000000000000000000000000000000000A8 +S315E07A28D0000000003E490000000000000000000011 +S315E07A28E00000000000000000000000000000000088 +S315E07A28F00000000000000000000000000000000078 +S315E07A29000000000000000000000000000000000067 +S315E07A29100000000000000000000000000000000057 +S315E07A29200000000000000000000000000000000047 +S315E07A29300000000000000000000000000000000037 +S315E07A29400000000000000000000000000000000027 +S315E07A29500000000000000000000000000000000017 +S315E07A29600000000000000000000000000000000007 +S315E07A297000000000000000000000000000000000F7 +S315E07A298000000000000000000000000000000000E7 +S315E07A299000000000000000000000000000000000D7 +S315E07A29A000000000000000000000000000000000C7 +S315E07A29B000000000000000000000000000000000B7 +S315E07A29C000000000000000000000000000000000A7 +S315E07A29D00000000000000000000000000000000097 +S315E07A29E00000000000000000000000000000000087 +S315E07A29F00000000000000000000000000000000077 +S315E07A2A000000000000000000000000000000000066 +S315E07A2A100000000000000000000000000000000056 +S315E07A2A200000000000000000000000000000000046 +S315E07A2A300000000000000000000000000000000036 +S315E07A2A40000000000000000000000000003E49009F +S315E07A2A500000000000000000000000000000000016 +S315E07A2A600000000000000000000000000000000006 +S315E07A2A7000000000000000000000000000000000F6 +S315E07A2A8000000000000000000000000000000000E6 +S315E07A2A9000000000000000000000000000000000D6 +S315E07A2AA000000000000000000000000000000000C6 +S315E07A2AB000000000000000000000000000000000B6 +S315E07A2AC000000000000000000000000000000000A6 +S315E07A2AD00000000000000000000000000000000096 +S315E07A2AE00000000000000000000000000000000086 +S315E07A2AF00000000000000000000000000000000076 +S315E07A2B000000000000000000000000000000000065 +S315E07A2B100000000000000000000000000000000055 +S315E07A2B200000000000000000000000000000000045 +S315E07A2B300000000000000000000000000000000035 +S315E07A2B400000000000000000000000000000000025 +S315E07A2B500000000000000000000000000000000015 +S315E07A2B600000000000000000000000000000000005 +S315E07A2B7000000000000000000000000000000000F5 +S315E07A2B8000000000000000000000000000000000E5 +S315E07A2B9000000000000000000000000000000000D5 +S315E07A2BA000000000000000000000000000000000C5 +S315E07A2BB000000000000000000000000000000000B5 +S315E07A2BC00000000000003E4900000000000000001E +S315E07A2BD00000000000000000000000000000000095 +S315E07A2BE00000000000000000000000000000000085 +S315E07A2BF00000000000000000000000000000000075 +S315E07A2C000000000000000000000000000000000064 +S315E07A2C100000000000000000000000000000000054 +S315E07A2C200000000000000000000000000000000044 +S315E07A2C300000000000000000000000000000000034 +S315E07A2C400000000000000000000000000000000024 +S315E07A2C500000000000000000000000000000000014 +S315E07A2C600000000000000000000000000000000004 +S315E07A2C7000000000000000000000000000000000F4 +S315E07A2C8000000000000000000000000000000000E4 +S315E07A2C9000000000000000000000000000000000D4 +S315E07A2CA000000000000000000000000000000000C4 +S315E07A2CB000000000000000000000000000000000B4 +S315E07A2CC000000000000000000000000000000000A4 +S315E07A2CD00000000000000000000000000000000094 +S315E07A2CE00000000000000000000000000000000084 +S315E07A2CF00000000000000000000000000000000074 +S315E07A2D000000000000000000000000000000000063 +S315E07A2D100000000000000000000000000000000053 +S315E07A2D200000000000000000000000000000000043 +S315E07A2D300000000000000000000000000000003EF5 +S315E07A2D4049000000000000000000000000000000DA +S315E07A2D500000000000000000000000000000000013 +S315E07A2D600000000000000000000000000000000003 +S315E07A2D7000000000000000000000000000000000F3 +S315E07A2D8000000000000000000000000000000000E3 +S315E07A2D9000000000000000000000000000000000D3 +S315E07A2DA000000000000000000000000000000000C3 +S315E07A2DB000000000000000000000000000000000B3 +S315E07A2DC000000000000000000000000000000000A3 +S315E07A2DD00000000000000000000000000000000093 +S315E07A2DE00000000000000000000000000000000083 +S315E07A2DF00000000000000000000000000000000073 +S315E07A2E000000000000000000000000000000000062 +S315E07A2E100000000000000000000000000000000052 +S315E07A2E200000000000000000000000000000000042 +S315E07A2E300000000000000000000000000000000032 +S315E07A2E400000000000000000000000000000000022 +S315E07A2E500000000000000000000000000000000012 +S315E07A2E600000000000000000000000000000000002 +S315E07A2E7000000000000000000000000000000000F2 +S315E07A2E8000000000000000000000000000000000E2 +S315E07A2E9000000000000000000000000000000000D2 +S315E07A2EA000000000000000000000000000000000C2 +S315E07A2EB000000000000000003E490000000000002B +S315E07A2EC000000000000000000000000000000000A2 +S315E07A2ED00000000000000000000000000000000092 +S315E07A2EE00000000000000000000000000000000082 +S315E07A2EF00000000000000000000000000000000072 +S315E07A2F000000000000000000000000000000000061 +S315E07A2F100000000000000000000000000000000051 +S315E07A2F200000000000000000000000000000000041 +S315E07A2F300000000000000000000000000000000031 +S315E07A2F400000000000000000000000000000000021 +S315E07A2F500000000000000000000000000000000011 +S315E07A2F600000000000000000000000000000000001 +S315E07A2F7000000000000000000000000000000000F1 +S315E07A2F8000000000000000000000000000000000E1 +S315E07A2F9000000000000000000000000000000000D1 +S315E07A2FA000000000000000000000000000000000C1 +S315E07A2FB000000000000000000000000000000000B1 +S315E07A2FC000000000000000000000000000000000A1 +S315E07A2FD00000000000000000000000000000000091 +S315E07A2FE00000000000000000000000000000000081 +S315E07A2FF00000000000000000000000000000000071 +S315E07A30000000000000000000000000000000000060 +S315E07A30100000000000000000000000000000000050 +S315E07A30200000000000000000000000000000000040 +S315E07A3030003E4900000000000000000000000000A9 +S315E07A30400000000000000000000000000000000020 +S315E07A30500000000000000000000000000000000010 +S315E07A30600000000000000000000000000000000000 +S315E07A307000000000000000000000000000000000F0 +S315E07A308000000000000000000000000000000000E0 +S315E07A309000000000000000000000000000000000D0 +S315E07A30A000000000000000000000000000000000C0 +S315E07A30B000000000000000000000000000000000B0 +S315E07A30C000000000000000000000000000000000A0 +S315E07A30D00000000000000000000000000000000090 +S315E07A30E00000000000000000000000000000000080 +S315E07A30F00000000000000000000000000000000070 +S315E07A3100000000000000000000000000000000005F +S315E07A3110000000000000000000000000000000004F +S315E07A3120000000000000000000000000000000003F +S315E07A3130000000000000000000000000000000002F +S315E07A3140000000000000000000000000000000001F +S315E07A3150000000000000000000000000000000000F +S315E07A316000000000000000000000000000000000FF +S315E07A317000000000000000000000000000000000EF +S315E07A318000000000000000000000000000000000DF +S315E07A319000000000000000000000000000000000CF +S315E07A31A0000000000000000000003E490000000038 +S315E07A31B000000000000000000000000000000000AF +S315E07A31C0000000000000000000000000000000009F +S315E07A31D0000000000000000000000000000000008F +S315E07A31E0000000000000000000000000000000007F +S315E07A31F0000000000000000000000000000000006F +S315E07A3200000000000000000000000000000000005E +S315E07A3210000000000000000000000000000000004E +S315E07A3220000000000000000000000000000000003E +S315E07A3230000000000000000000000000000000002E +S315E07A3240000000000000000000000000000000001E +S315E07A3250000000000000000000000000000000000E +S315E07A326000000000000000000000000000000000FE +S315E07A327000000000000000000000000000000000EE +S315E07A328000000000000000000000000000000000DE +S315E07A329000000000000000000000000000000000CE +S315E07A32A000000000000000000000000000000000BE +S315E07A32B000000000000000000000000000000000AE +S315E07A32C0000000000000000000000000000000009E +S315E07A32D0000000000000000000000000000000008E +S315E07A32E0000000000000000000000000000000007E +S315E07A32F0000000000000000000000000000000006E +S315E07A3300000000000000000000000000000000005D +S315E07A3310000000000000000000000000000000004D +S315E07A33200000003E490000000000000000000000B6 +S315E07A3330000000000000000000000000000000002D +S315E07A3340000000000000000000000000000000001D +S315E07A3350000000000000000000000000000000000D +S315E07A336000000000000000000000000000000000FD +S315E07A337000000000000000000000000000000000ED +S315E07A338000000000000000000000000000000000DD +S315E07A339000000000000000000000000000000000CD +S315E07A33A000000000000000000000000000000000BD +S315E07A33B000000000000000000000000000000000AD +S315E07A33C0000000000000000000000000000000009D +S315E07A33D0000000000000000000000000000000008D +S315E07A33E0000000000000000000000000000000007D +S315E07A33F0000000000000000000000000000000006D +S315E07A3400000000000000000000000000000000005C +S315E07A3410000000000000000000000000000000004C +S315E07A3420000000000000000000000000000000003C +S315E07A3430000000000000000000000000000000002C +S315E07A3440000000000000000000000000000000001C +S315E07A3450000000000000000000000000000000000C +S315E07A346000000000000000000000000000000000FC +S315E07A347000000000000000000000000000000000EC +S315E07A348000000000000000000000000000000000DC +S315E07A34900000000000000000000000003E49000045 +S315E07A34A000000000000000000000000000000000BC +S315E07A34B000000000000000000000000000000000AC +S315E07A34C0000000000000000000000000000000009C +S315E07A34D0000000000000000000000000000000008C +S315E07A34E0000000000000000000000000000000007C +S315E07A34F0000000000000000000000000000000006C +S315E07A3500000000000000000000000000000000005B +S315E07A3510000000000000000000000000000000004B +S315E07A3520000000000000000000000000000000003B +S315E07A3530000000000000000000000000000000002B +S315E07A3540000000000000000000000000000000001B +S315E07A3550000000000000000000000000000000000B +S315E07A356000000000000000000000000000000000FB +S315E07A357000000000000000000000000000000000EB +S315E07A358000000000000000000000000000000000DB +S315E07A359000000000000000000000000000000000CB +S315E07A35A000000000000000000000000000000000BB +S315E07A35B000000000000000000000000000000000AB +S315E07A35C0000000000000000000000000000000009B +S315E07A35D0000000000000000000000000000000008B +S315E07A35E0000000000000000000000000000000007B +S315E07A35F0000000000000000000000000000000006B +S315E07A3600000000000000000000000000000000005A +S315E07A361000000000003E49000000000000000000C3 +S315E07A3620000000000000000000000000000000003A +S315E07A3630000000000000000000000000000000002A +S315E07A3640000000000000000000000000000000001A +S315E07A3650000000000000000000000000000000000A +S315E07A366000000000000000000000000000000000FA +S315E07A367000000000000000000000000000000000EA +S315E07A368000000000000000000000000000000000DA +S315E07A369000000000000000000000000000000000CA +S315E07A36A000000000000000000000000000000000BA +S315E07A36B000000000000000000000000000000000AA +S315E07A36C0000000000000000000000000000000009A +S315E07A36D0000000000000000000000000000000008A +S315E07A36E0000000000000000000000000000000007A +S315E07A36F0000000000000000000000000000000006A +S315E07A37000000000000000000000000000000000059 +S315E07A37100000000000000000000000000000000049 +S315E07A37200000000000000000000000000000000039 +S315E07A37300000000000000000000000000000000029 +S315E07A37400000000000000000000000000000000019 +S315E07A37500000000000000000000000000000000009 +S315E07A376000000000000000000000000000000000F9 +S315E07A377000000000000000000000000000000000E9 +S315E07A378000000000000000000000000000003E4952 +S315E07A379000000000000000000000000000000000C9 +S315E07A37A000000000000000000000000000000000B9 +S315E07A37B000000000000000000000000000000000A9 +S315E07A37C00000000000000000000000000000000099 +S315E07A37D00000000000000000000000000000000089 +S315E07A37E00000000000000000000000000000000079 +S315E07A37F00000000000000000000000000000000069 +S315E07A38000000000000000000000000000000000058 +S315E07A38100000000000000000000000000000000048 +S315E07A38200000000000000000000000000000000038 +S315E07A38300000000000000000000000000000000028 +S315E07A38400000000000000000000000000000000018 +S315E07A38500000000000000000000000000000000008 +S315E07A386000000000000000000000000000000000F8 +S315E07A387000000000000000000000000000000000E8 +S315E07A388000000000000000000000000000000000D8 +S315E07A389000000000000000000000000000000000C8 +S315E07A38A000000000000000000000000000000000B8 +S315E07A38B000000000000000000000000000000000A8 +S315E07A38C00000000000000000000000000000000098 +S315E07A38D00000000000000000000000000000000088 +S315E07A38E00000000000000000000000000000000078 +S315E07A38F00000000000000000000000000000000068 +S315E07A3900000000000000003E4900000000000000D0 +S315E07A39100000000000000000000000000000000047 +S315E07A39200000000000000000000000000000000037 +S315E07A39300000000000000000000000000000000027 +S315E07A39400000000000000000000000000000000017 +S315E07A39500000000000000000000000000000000007 +S315E07A396000000000000000000000000000000000F7 +S315E07A397000000000000000000000000000000000E7 +S315E07A398000000000000000000000000000000000D7 +S315E07A399000000000000000000000000000000000C7 +S315E07A39A000000000000000000000000000000000B7 +S315E07A39B000000000000000000000000000000000A7 +S315E07A39C00000000000000000000000000000000097 +S315E07A39D00000000000000000000000000000000087 +S315E07A39E00000000000000000000000000000000077 +S315E07A39F00000000000000000000000000000000067 +S315E07A3A000000000000000000000000000000000056 +S315E07A3A100000000000000000000000000000000046 +S315E07A3A200000000000000000000000000000000036 +S315E07A3A300000000000000000000000000000000026 +S315E07A3A400000000000000000000000000000000016 +S315E07A3A500000000000000000000000000000000006 +S315E07A3A6000000000000000000000000000000000F6 +S315E07A3A7000000000000000000000000000000000E6 +S315E07A3A803E4900000000000000000000000000004F +S315E07A3A9000000000000000000000000000000000C6 +S315E07A3AA000000000000000000000000000000000B6 +S315E07A3AB000000000000000000000000000000000A6 +S315E07A3AC00000000000000000000000000000000096 +S315E07A3AD00000000000000000000000000000000086 +S315E07A3AE00000000000000000000000000000000076 +S315E07A3AF00000000000000000000000000000000066 +S315E07A3B000000000000000000000000000000000055 +S315E07A3B100000000000000000000000000000000045 +S315E07A3B200000000000000000000000000000000035 +S315E07A3B300000000000000000000000000000000025 +S315E07A3B400000000000000000000000000000000015 +S315E07A3B500000000000000000000000000000000005 +S315E07A3B6000000000000000000000000000000000F5 +S315E07A3B7000000000000000000000000000000000E5 +S315E07A3B8000000000000000000000000000000000D5 +S315E07A3B9000000000000000000000000000000000C5 +S315E07A3BA000000000000000000000000000000000B5 +S315E07A3BB000000000000000000000000000000000A5 +S315E07A3BC00000000000000000000000000000000095 +S315E07A3BD00000000000000000000000000000000085 +S315E07A3BE00000000000000000000000000000000075 +S315E07A3BF00000000000000000003E490000000000DE +S315E07A3C000000000000000000000000000000000054 +S315E07A3C100000000000000000000000000000000044 +S315E07A3C200000000000000000000000000000000034 +S315E07A3C300000000000000000000000000000000024 +S315E07A3C400000000000000000000000000000000014 +S315E07A3C500000000000000000000000000000000004 +S315E07A3C6000000000000000000000000000000000F4 +S315E07A3C7000000000000000000000000000000000E4 +S315E07A3C8000000000000000000000000000000000D4 +S315E07A3C9000000000000000000000000000000000C4 +S315E07A3CA000000000000000000000000000000000B4 +S315E07A3CB000000000000000000000000000000000A4 +S315E07A3CC00000000000000000000000000000000094 +S315E07A3CD00000000000000000000000000000000084 +S315E07A3CE00000000000000000000000000000000074 +S315E07A3CF00000000000000000000000000000000064 +S315E07A3D000000000000000000000000000000000053 +S315E07A3D100000000000000000000000000000000043 +S315E07A3D200000000000000000000000000000000033 +S315E07A3D300000000000000000000000000000000023 +S315E07A3D400000000000000000000000000000000013 +S315E07A3D500000000000000000000000000000000003 +S315E07A3D6000000000000000000000000000000000F3 +S315E07A3D7000003E490000000000000000000000005C +S315E07A3D8000000000000000000000000000000000D3 +S315E07A3D9000000000000000000000000000000000C3 +S315E07A3DA000000000000000000000000000000000B3 +S315E07A3DB000000000000000000000000000000000A3 +S315E07A3DC00000000000000000000000000000000093 +S315E07A3DD00000000000000000000000000000000083 +S315E07A3DE00000000000000000000000000000000073 +S315E07A3DF00000000000000000000000000000000063 +S315E07A3E000000000000000000000000000000000052 +S315E07A3E100000000000000000000000000000000042 +S315E07A3E200000000000000000000000000000000032 +S315E07A3E300000000000000000000000000000000022 +S315E07A3E400000000000000000000000000000000012 +S315E07A3E500000000000000000000000000000000002 +S315E07A3E6000000000000000000000000000000000F2 +S315E07A3E7000000000000000000000000000000000E2 +S315E07A3E8000000000000000000000000000000000D2 +S315E07A3E9000000000000000000000000000000000C2 +S315E07A3EA000000000000000000000000000000000B2 +S315E07A3EB000000000000000000000000000000000A2 +S315E07A3EC00000000000000000000000000000000092 +S315E07A3ED00000000000000000000000000000000082 +S315E07A3EE000000000000000000000003E49000000EB +S315E07A3EF00000000000000000000000000000000062 +S315E07A3F000000000000000000000000000000000051 +S315E07A3F100000000000000000000000000000000041 +S315E07A3F200000000000000000000000000000000031 +S315E07A3F300000000000000000000000000000000021 +S315E07A3F400000000000000000000000000000000011 +S315E07A3F500000000000000000000000000000000001 +S315E07A3F6000000000000000000000000000000000F1 +S315E07A3F7000000000000000000000000000000000E1 +S315E07A3F8000000000000000000000000000000000D1 +S315E07A3F9000000000000000000000000000000000C1 +S315E07A3FA000000000000000000000000000000000B1 +S315E07A3FB000000000000000000000000000000000A1 +S315E07A3FC00000000000000000000000000000000091 +S315E07A3FD00000000000000000000000000000000081 +S315E07A3FE00000000000000000000000000000000071 +S315E07A3FF00000000000000000000000000000000061 +S315E07A40000000000000000000000000000000000050 +S315E07A40100000000000000000000000000000000040 +S315E07A40200000000000000000000000000000000030 +S315E07A40300000000000000000000000000000000020 +S315E07A40400000000000000000000000000000000010 +S315E07A40500000000000000000000000000000000000 +S315E07A4060000000003E490000000000000000000069 +S315E07A407000000000000000000000000000000000E0 +S315E07A408000000000000000000000000000000000D0 +S315E07A409000000000000000000000000000000000C0 +S315E07A40A000000000000000000000000000000000B0 +S315E07A40B000000000000000000000000000000000A0 +S315E07A40C00000000000000000000000000000000090 +S315E07A40D00000000000000000000000000000000080 +S315E07A40E00000000000000000000000000000000070 +S315E07A40F00000000000000000000000000000000060 +S315E07A4100000000000000000000000000000000004F +S315E07A4110000000000000000000000000000000003F +S315E07A4120000000000000000000000000000000002F +S315E07A4130000000000000000000000000000000001F +S315E07A4140000000000000000000000000000000000F +S315E07A415000000000000000000000000000000000FF +S315E07A416000000000000000000000000000000000EF +S315E07A417000000000000000000000000000000000DF +S315E07A418000000000000000000000000000000000CF +S315E07A419000000000000000000000000000000000BF +S315E07A41A000000000000000000000000000000000AF +S315E07A41B0000000000000000000000000000000009F +S315E07A41C0000000000000000000000000000000008F +S315E07A41D0000000000000000000000000003E4900F8 +S315E07A41E0000000000000000000000000000000006F +S315E07A41F0000000000000000000000000000000005F +S315E07A4200000000000000000000000000000000004E +S315E07A4210000000000000000000000000000000003E +S315E07A4220000000000000000000000000000000002E +S315E07A4230000000000000000000000000000000001E +S315E07A4240000000000000000000000000000000000E +S315E07A425000000000000000000000000000000000FE +S315E07A426000000000000000000000000000000000EE +S315E07A427000000000000000000000000000000000DE +S315E07A428000000000000000000000000000000000CE +S315E07A429000000000000000000000000000000000BE +S315E07A42A000000000000000000000000000000000AE +S315E07A42B0000000000000000000000000000000009E +S315E07A42C0000000000000000000000000000000008E +S315E07A42D0000000000000000000000000000000007E +S315E07A42E0000000000000000000000000000000006E +S315E07A42F0000000000000000000000000000000005E +S315E07A4300000000000000000000000000000000004D +S315E07A4310000000000000000000000000000000003D +S315E07A4320000000000000000000000000000000002D +S315E07A4330000000000000000000000000000000001D +S315E07A4340000000000000000000000000000000000D +S315E07A43500000000000003E49000000000000000076 +S315E07A436000000000000000000000000000000000ED +S315E07A437000000000000000000000000000000000DD +S315E07A438000000000000000000000000000000000CD +S315E07A439000000000000000000000000000000000BD +S315E07A43A000000000000000000000000000000000AD +S315E07A43B0000000000000000000000000000000009D +S315E07A43C0000000000000000000000000000000008D +S315E07A43D0000000000000000000000000000000007D +S315E07A43E0000000000000000000000000000000006D +S315E07A43F0000000000000000000000000000000005D +S315E07A4400000000000000000000000000000000004C +S315E07A4410000000000000000000000000000000003C +S315E07A4420000000000000000000000000000000002C +S315E07A4430000000000000000000000000000000001C +S315E07A4440000000000000000000000000000000000C +S315E07A445000000000000000000000000000000000FC +S315E07A446000000000000000000000000000000000EC +S315E07A447000000000000000000000000000000000DC +S315E07A448000000000000000000000000000000000CC +S315E07A449000000000000000000000000000000000BC +S315E07A44A000000000000000000000000000000000AC +S315E07A44B0000000000000000000000000000000009C +S315E07A44C00000000000000000000000000000003E4E +S315E07A44D04900000000000000000000000000000033 +S315E07A44E0000000000000000000000000000000006C +S315E07A44F0000000000000000000000000000000005C +S315E07A4500000000000000000000000000000000004B +S315E07A4510000000000000000000000000000000003B +S315E07A4520000000000000000000000000000000002B +S315E07A4530000000000000000000000000000000001B +S315E07A4540000000000000000000000000000000000B +S315E07A455000000000000000000000000000000000FB +S315E07A456000000000000000000000000000000000EB +S315E07A457000000000000000000000000000000000DB +S315E07A458000000000000000000000000000000000CB +S315E07A459000000000000000000000000000000000BB +S315E07A45A000000000000000000000000000000000AB +S315E07A45B0000000000000000000000000000000009B +S315E07A45C0000000000000000000000000000000008B +S315E07A45D0000000000000000000000000000000007B +S315E07A45E0000000000000000000000000000000006B +S315E07A45F0000000000000000000000000000000005B +S315E07A4600000000000000000000000000000000004A +S315E07A4610000000000000000000000000000000003A +S315E07A4620000000000000000000000000000000002A +S315E07A4630000000000000000000000000000000001A +S315E07A464000000000000000003E4900000000000083 +S315E07A465000000000000000000000000000000000FA +S315E07A466000000000000000000000000000000000EA +S315E07A467000000000000000000000000000000000DA +S315E07A468000000000000000000000000000000000CA +S315E07A469000000000000000000000000000000000BA +S315E07A46A000000000000000000000000000000000AA +S315E07A46B0000000000000000000000000000000009A +S315E07A46C0000000000000000000000000000000008A +S315E07A46D0000000000000000000000000000000007A +S315E07A46E0000000000000000000000000000000006A +S315E07A46F0000000000000000000000000000000005A +S315E07A47000000000000000000000000000000000049 +S315E07A47100000000000000000000000000000000039 +S315E07A47200000000000000000000000000000000029 +S315E07A47300000000000000000000000000000000019 +S315E07A47400000000000000000000000000000000009 +S315E07A475000000000000000000000000000000000F9 +S315E07A476000000000000000000000000000000000E9 +S315E07A477000000000000000000000000000000000D9 +S315E07A478000000000000000000000000000000000C9 +S315E07A479000000000000000000000000000000000B9 +S315E07A47A000000000000000000000000000000000A9 +S315E07A47B00000000000000000000000000000000099 +S315E07A47C0003E490000000000000000000000000002 +S315E07A47D00000000000000000000000000000000079 +S315E07A47E00000000000000000000000000000000069 +S315E07A47F00000000000000000000000000000000059 +S315E07A48000000000000000000000000000000000048 +S315E07A48100000000000000000000000000000000038 +S315E07A48200000000000000000000000000000000028 +S315E07A48300000000000000000000000000000000018 +S315E07A48400000000000000000000000000000000008 +S315E07A485000000000000000000000000000000000F8 +S315E07A486000000000000000000000000000000000E8 +S315E07A487000000000000000000000000000000000D8 +S315E07A488000000000000000000000000000000000C8 +S315E07A489000000000000000000000000000000000B8 +S315E07A48A000000000000000000000000000000000A8 +S315E07A48B00000000000000000000000000000000098 +S315E07A48C00000000000000000000000000000000088 +S315E07A48D00000000000000000000000000000000078 +S315E07A48E00000000000000000000000000000000068 +S315E07A48F00000000000000000000000000000000058 +S315E07A49000000000000000000000000000000000047 +S315E07A49100000000000000000000000000000000037 +S315E07A49200000000000000000000000000000000027 +S315E07A4930000000000000000000003E490000000090 +S315E07A49400000000000000000000000000000000007 +S315E07A495000000000000000000000000000000000F7 +S315E07A496000000000000000000000000000000000E7 +S315E07A497000000000000000000000000000000000D7 +S315E07A498000000000000000000000000000000000C7 +S315E07A499000000000000000000000000000000000B7 +S315E07A49A000000000000000000000000000000000A7 +S315E07A49B00000000000000000000000000000000097 +S315E07A49C00000000000000000000000000000000087 +S315E07A49D00000000000000000000000000000000077 +S315E07A49E00000000000000000000000000000000067 +S315E07A49F00000000000000000000000000000000057 +S315E07A4A000000000000000000000000000000000046 +S315E07A4A100000000000000000000000000000000036 +S315E07A4A200000000000000000000000000000000026 +S315E07A4A300000000000000000000000000000000016 +S315E07A4A400000000000000000000000000000000006 +S315E07A4A5000000000000000000000000000000000F6 +S315E07A4A6000000000000000000000000000000000E6 +S315E07A4A7000000000000000000000000000000000D6 +S315E07A4A8000000000000000000000000000000000C6 +S315E07A4A9000000000000000000000000000000000B6 +S315E07A4AA000000000000000000000000000000000A6 +S315E07A4AB00000003E4900000000000000000000000F +S315E07A4AC00000000000000000000000000000000086 +S315E07A4AD00000000000000000000000000000000076 +S315E07A4AE00000000000000000000000000000000066 +S315E07A4AF00000000000000000000000000000000056 +S315E07A4B000000000000000000000000000000000045 +S315E07A4B100000000000000000000000000000000035 +S315E07A4B200000000000000000000000000000000025 +S315E07A4B300000000000000000000000000000000015 +S315E07A4B400000000000000000000000000000000005 +S315E07A4B5000000000000000000000000000000000F5 +S315E07A4B6000000000000000000000000000000000E5 +S315E07A4B7000000000000000000000000000000000D5 +S315E07A4B8000000000000000000000000000000000C5 +S315E07A4B9000000000000000000000000000000000B5 +S315E07A4BA000000000000000000000000000000000A5 +S315E07A4BB00000000000000000000000000000000095 +S315E07A4BC00000000000000000000000000000000085 +S315E07A4BD00000000000000000000000000000000075 +S315E07A4BE00000000000000000000000000000000065 +S315E07A4BF00000000000000000000000000000000055 +S315E07A4C000000000000000000000000000000000044 +S315E07A4C100000000000000000000000000000000034 +S315E07A4C200000000000000000000000003E4900009D +S315E07A4C300000000000000000000000000000000014 +S315E07A4C400000000000000000000000000000000004 +S315E07A4C5000000000000000000000000000000000F4 +S315E07A4C6000000000000000000000000000000000E4 +S315E07A4C7000000000000000000000000000000000D4 +S315E07A4C8000000000000000000000000000000000C4 +S315E07A4C9000000000000000000000000000000000B4 +S315E07A4CA000000000000000000000000000000000A4 +S315E07A4CB00000000000000000000000000000000094 +S315E07A4CC00000000000000000000000000000000084 +S315E07A4CD00000000000000000000000000000000074 +S315E07A4CE00000000000000000000000000000000064 +S315E07A4CF00000000000000000000000000000000054 +S315E07A4D000000000000000000000000000000000043 +S315E07A4D100000000000000000000000000000000033 +S315E07A4D200000000000000000000000000000000023 +S315E07A4D300000000000000000000000000000000013 +S315E07A4D400000000000000000000000000000000003 +S315E07A4D5000000000000000000000000000000000F3 +S315E07A4D6000000000000000000000000000000000E3 +S315E07A4D7000000000000000000000000000000000D3 +S315E07A4D8000000000000000000000000000000000C3 +S315E07A4D9000000000000000000000000000000000B3 +S315E07A4DA000000000003E490000000000000000001C +S315E07A4DB00000000000000000000000000000000093 +S315E07A4DC00000000000000000000000000000000083 +S315E07A4DD00000000000000000000000000000000073 +S315E07A4DE00000000000000000000000000000000063 +S315E07A4DF00000000000000000000000000000000053 +S315E07A4E000000000000000000000000000000000042 +S315E07A4E100000000000000000000000000000000032 +S315E07A4E200000000000000000000000000000000022 +S315E07A4E300000000000000000000000000000000012 +S315E07A4E400000000000000000000000000000000002 +S315E07A4E5000000000000000000000000000000000F2 +S315E07A4E6000000000000000000000000000000000E2 +S315E07A4E7000000000000000000000000000000000D2 +S315E07A4E8000000000000000000000000000000000C2 +S315E07A4E9000000000000000000000000000000000B2 +S315E07A4EA000000000000000000000000000000000A2 +S315E07A4EB00000000000000000000000000000000092 +S315E07A4EC00000000000000000000000000000000082 +S315E07A4ED00000000000000000000000000000000072 +S315E07A4EE00000000000000000000000000000000062 +S315E07A4EF00000000000000000000000000000000052 +S315E07A4F000000000000000000000000000000000041 +S315E07A4F1000000000000000000000000000003E49AA +S315E07A4F200000000000000000000000000000000021 +S315E07A4F300000000000000000000000000000000011 +S315E07A4F400000000000000000000000000000000001 +S315E07A4F5000000000000000000000000000000000F1 +S315E07A4F6000000000000000000000000000000000E1 +S315E07A4F7000000000000000000000000000000000D1 +S315E07A4F8000000000000000000000000000000000C1 +S315E07A4F9000000000000000000000000000000000B1 +S315E07A4FA000000000000000000000000000000000A1 +S315E07A4FB00000000000000000000000000000000091 +S315E07A4FC00000000000000000000000000000000081 +S315E07A4FD00000000000000000000000000000000071 +S315E07A4FE00000000000000000000000000000000061 +S315E07A4FF00000000000000000000000000000000051 +S315E07A50000000000000000000000000000000000040 +S315E07A50100000000000000000000000000000000030 +S315E07A50200000000000000000000000000000000020 +S315E07A50300000000000000000000000000000000010 +S315E07A50400000000000000000000000000000000000 +S315E07A505000000000000000000000000000000000F0 +S315E07A506000000000000000000000000000000000E0 +S315E07A507000000000000000000000000000000000D0 +S315E07A508000000000000000000000000000000000C0 +S315E07A5090000000000000003E490000000000000029 +S315E07A50A000000000000000000000000000000000A0 +S315E07A50B00000000000000000000000000000000090 +S315E07A50C00000000000000000000000000000000080 +S315E07A50D00000000000000000000000000000000070 +S315E07A50E00000000000000000000000000000000060 +S315E07A50F00000000000000000000000000000000050 +S315E07A5100000000000000000000000000000000003F +S315E07A5110000000000000000000000000000000002F +S315E07A5120000000000000000000000000000000001F +S315E07A5130000000000000000000000000000000000F +S315E07A514000000000000000000000000000000000FF +S315E07A515000000000000000000000000000000000EF +S315E07A516000000000000000000000000000000000DF +S315E07A517000000000000000000000000000000000CF +S315E07A518000000000000000000000000000000000BF +S315E07A519000000000000000000000000000000000AF +S315E07A51A0000000000000000000000000000000009F +S315E07A51B0000000000000000000000000000000008F +S315E07A51C0000000000000000000000000000000007F +S315E07A51D0000000000000000000000000000000006F +S315E07A51E0000000000000000000000000000000005F +S315E07A51F0000000000000000000000000000000004F +S315E07A5200000000000000000000000000000000003E +S315E07A52103E490000000000000000000000000000A7 +S315E07A5220000000000000000000000000000000001E +S315E07A5230000000000000000000000000000000000E +S315E07A524000000000000000000000000000000000FE +S315E07A525000000000000000000000000000000000EE +S315E07A526000000000000000000000000000000000DE +S315E07A527000000000000000000000000000000000CE +S315E07A528000000000000000000000000000000000BE +S315E07A529000000000000000000000000000000000AE +S315E07A52A0000000000000000000000000000000009E +S315E07A52B0000000000000000000000000000000008E +S315E07A52C0000000000000000000000000000000007E +S315E07A52D0000000000000000000000000000000006E +S315E07A52E0000000000000000000000000000000005E +S315E07A52F0000000000000000000000000000000004E +S315E07A5300000000000000000000000000000000003D +S315E07A5310000000000000000000000000000000002D +S315E07A5320000000000000000000000000000000001D +S315E07A5330000000000000000000000000000000000D +S315E07A534000000000000000000000000000000000FD +S315E07A535000000000000000000000000000000000ED +S315E07A536000000000000000000000000000000000DD +S315E07A537000000000000000000000000000000000CD +S315E07A53800000000000000000003E49000000000036 +S315E07A539000000000000000000000000000000000AD +S315E07A53A0000000000000000000000000000000009D +S315E07A53B0000000000000000000000000000000008D +S315E07A53C0000000000000000000000000000000007D +S315E07A53D0000000000000000000000000000000006D +S315E07A53E0000000000000000000000000000000005D +S315E07A53F0000000000000000000000000000000004D +S315E07A5400000000000000000000000000000000003C +S315E07A5410000000000000000000000000000000002C +S315E07A5420000000000000000000000000000000001C +S315E07A5430000000000000000000000000000000000C +S315E07A544000000000000000000000000000000000FC +S315E07A545000000000000000000000000000000000EC +S315E07A546000000000000000000000000000000000DC +S315E07A547000000000000000000000000000000000CC +S315E07A548000000000000000000000000000000000BC +S315E07A549000000000000000000000000000000000AC +S315E07A54A0000000000000000000000000000000009C +S315E07A54B0000000000000000000000000000000008C +S315E07A54C0000000000000000000000000000000007C +S315E07A54D0000000000000000000000000000000006C +S315E07A54E0000000000000000000000000000000005C +S315E07A54F0000000000000000000000000000000004C +S315E07A550000003E49000000000000000000000000B4 +S315E07A5510000000000000000000000000000000002B +S315E07A5520000000000000000000000000000000001B +S315E07A5530000000000000000000000000000000000B +S315E07A554000000000000000000000000000000000FB +S315E07A555000000000000000000000000000000000EB +S315E07A556000000000000000000000000000000000DB +S315E07A557000000000000000000000000000000000CB +S315E07A558000000000000000000000000000000000BB +S315E07A559000000000000000000000000000000000AB +S315E07A55A0000000000000000000000000000000009B +S315E07A55B0000000000000000000000000000000008B +S315E07A55C0000000000000000000000000000000007B +S315E07A55D0000000000000000000000000000000006B +S315E07A55E0000000000000000000000000000000005B +S315E07A55F0000000000000000000000000000000004B +S315E07A5600000000000000000000000000000000003A +S315E07A5610000000000000000000000000000000002A +S315E07A5620000000000000000000000000000000001A +S315E07A5630000000000000000000000000000000000A +S315E07A564000000000000000000000000000000000FA +S315E07A565000000000000000000000000000000000EA +S315E07A566000000000000000000000000000000000DA +S315E07A567000000000000000000000003E4900000043 +S315E07A568000000000000000000000000000000000BA +S315E07A569000000000000000000000000000000000AA +S315E07A56A0000000000000000000000000000000009A +S315E07A56B0000000000000000000000000000000008A +S315E07A56C0000000000000000000000000000000007A +S315E07A56D0000000000000000000000000000000006A +S315E07A56E0000000000000000000000000000000005A +S315E07A56F0000000000000000000000000000000004A +S315E07A57000000000000000000000000000000000039 +S315E07A57100000000000000000000000000000000029 +S315E07A57200000000000000000000000000000000019 +S315E07A57300000000000000000000000000000000009 +S315E07A574000000000000000000000000000000000F9 +S315E07A575000000000000000000000000000000000E9 +S315E07A576000000000000000000000000000000000D9 +S315E07A577000000000000000000000000000000000C9 +S315E07A578000000000000000000000000000000000B9 +S315E07A579000000000000000000000000000000000A9 +S315E07A57A00000000000000000000000000000000099 +S315E07A57B00000000000000000000000000000000089 +S315E07A57C00000000000000000000000000000000079 +S315E07A57D00000000000000000000000000000000069 +S315E07A57E00000000000000000000000000000000059 +S315E07A57F0000000003E4900000000000000000000C2 +S315E07A58000000000000000000000000000000000038 +S315E07A58100000000000000000000000000000000028 +S315E07A58200000000000000000000000000000000018 +S315E07A58300000000000000000000000000000000008 +S315E07A584000000000000000000000000000000000F8 +S315E07A585000000000000000000000000000000000E8 +S315E07A586000000000000000000000000000000000D8 +S315E07A587000000000000000000000000000000000C8 +S315E07A588000000000000000000000000000000000B8 +S315E07A589000000000000000000000000000000000A8 +S315E07A58A00000000000000000000000000000000098 +S315E07A58B00000000000000000000000000000000088 +S315E07A58C00000000000000000000000000000000078 +S315E07A58D00000000000000000000000000000000068 +S315E07A58E00000000000000000000000000000000058 +S315E07A58F00000000000000000000000000000000048 +S315E07A59000000000000000000000000000000000037 +S315E07A59100000000000000000000000000000000027 +S315E07A59200000000000000000000000000000000017 +S315E07A59300000000000000000000000000000000007 +S315E07A594000000000000000000000000000000000F7 +S315E07A595000000000000000000000000000000000E7 +S315E07A5960000000000000000000000000003E490050 +S315E07A597000000000000000000000000000000000C7 +S315E07A598000000000000000000000000000000000B7 +S315E07A599000000000000000000000000000000000A7 +S315E07A59A00000000000000000000000000000000097 +S315E07A59B00000000000000000000000000000000087 +S315E07A59C00000000000000000000000000000000077 +S315E07A59D00000000000000000000000000000000067 +S315E07A59E00000000000000000000000000000000057 +S315E07A59F00000000000000000000000000000000047 +S315E07A5A000000000000000000000000000000000036 +S315E07A5A100000000000000000000000000000000026 +S315E07A5A200000000000000000000000000000000016 +S315E07A5A300000000000000000000000000000000006 +S315E07A5A4000000000000000000000000000000000F6 +S315E07A5A5000000000000000000000000000000000E6 +S315E07A5A6000000000000000000000000000000000D6 +S315E07A5A7000000000000000000000000000000000C6 +S315E07A5A8000000000000000000000000000000000B6 +S315E07A5A9000000000000000000000000000000000A6 +S315E07A5AA00000000000000000000000000000000096 +S315E07A5AB00000000000000000000000000000000086 +S315E07A5AC00000000000000000000000000000000076 +S315E07A5AD00000000000000000000000000000000066 +S315E07A5AE00000000000003E490000000000000000CF +S315E07A5AF00000000000000000000000000000000046 +S315E07A5B000000000000000000000000000000000035 +S315E07A5B100000000000000000000000000000000025 +S315E07A5B200000000000000000000000000000000015 +S315E07A5B300000000000000000000000000000000005 +S315E07A5B4000000000000000000000000000000000F5 +S315E07A5B5000000000000000000000000000000000E5 +S315E07A5B6000000000000000000000000000000000D5 +S315E07A5B7000000000000000000000000000000000C5 +S315E07A5B8000000000000000000000000000000000B5 +S315E07A5B9000000000000000000000000000000000A5 +S315E07A5BA00000000000000000000000000000000095 +S315E07A5BB00000000000000000000000000000000085 +S315E07A5BC00000000000000000000000000000000075 +S315E07A5BD00000000000000000000000000000000065 +S315E07A5BE00000000000000000000000000000000055 +S315E07A5BF00000000000000000000000000000000045 +S315E07A5C000000000000000000000000000000000034 +S315E07A5C100000000000000000000000000000000024 +S315E07A5C200000000000000000000000000000000014 +S315E07A5C300000000000000000000000000000000004 +S315E07A5C4000000000000000000000000000000000F4 +S315E07A5C500000000000000000000000000000003EA6 +S315E07A5C60490000000000000000000000000000008B +S315E07A5C7000000000000000000000000000000000C4 +S315E07A5C8000000000000000000000000000000000B4 +S315E07A5C9000000000000000000000000000000000A4 +S315E07A5CA00000000000000000000000000000000094 +S315E07A5CB00000000000000000000000000000000084 +S315E07A5CC00000000000000000000000000000000074 +S315E07A5CD00000000000000000000000000000000064 +S315E07A5CE00000000000000000000000000000000054 +S315E07A5CF00000000000000000000000000000000044 +S315E07A5D000000000000000000000000000000000033 +S315E07A5D100000000000000000000000000000000023 +S315E07A5D200000000000000000000000000000000013 +S315E07A5D300000000000000000000000000000000003 +S315E07A5D4000000000000000000000000000000000F3 +S315E07A5D5000000000000000000000000000000000E3 +S315E07A5D6000000000000000000000000000000000D3 +S315E07A5D7000000000000000000000000000000000C3 +S315E07A5D8000000000000000000000000000000000B3 +S315E07A5D9000000000000000000000000000000000A3 +S315E07A5DA00000000000000000000000000000000093 +S315E07A5DB00000000000000000000000000000000083 +S315E07A5DC00000000000000000000000000000000073 +S315E07A5DD000000000000000003E49000000000000DC +S315E07A5DE00000000000000000000000000000000053 +S315E07A5DF00000000000000000000000000000000043 +S315E07A5E000000000000000000000000000000000032 +S315E07A5E100000000000000000000000000000000022 +S315E07A5E200000000000000000000000000000000012 +S315E07A5E300000000000000000000000000000000002 +S315E07A5E4000000000000000000000000000000000F2 +S315E07A5E5000000000000000000000000000000000E2 +S315E07A5E6000000000000000000000000000000000D2 +S315E07A5E7000000000000000000000000000000000C2 +S315E07A5E8000000000000000000000000000000000B2 +S315E07A5E9000000000000000000000000000000000A2 +S315E07A5EA00000000000000000000000000000000092 +S315E07A5EB00000000000000000000000000000000082 +S315E07A5EC00000000000000000000000000000000072 +S315E07A5ED00000000000000000000000000000000062 +S315E07A5EE00000000000000000000000000000000052 +S315E07A5EF00000000000000000000000000000000042 +S315E07A5F000000000000000000000000000000000031 +S315E07A5F100000000000000000000000000000000021 +S315E07A5F200000000000000000000000000000000011 +S315E07A5F300000000000000000000000000000000001 +S315E07A5F4000000000000000000000000000000000F1 +S315E07A5F50003E49000000000000000000000000005A +S315E07A5F6000000000000000000000000000000000D1 +S315E07A5F7000000000000000000000000000000000C1 +S315E07A5F8000000000000000000000000000000000B1 +S315E07A5F9000000000000000000000000000000000A1 +S315E07A5FA00000000000000000000000000000000091 +S315E07A5FB00000000000000000000000000000000081 +S315E07A5FC00000000000000000000000000000000071 +S315E07A5FD00000000000000000000000000000000061 +S315E07A5FE00000000000000000000000000000000051 +S315E07A5FF00000000000000000000000000000000041 +S315E07A60000000000000000000000000000000000030 +S315E07A60100000000000000000000000000000000020 +S315E07A60200000000000000000000000000000000010 +S315E07A60300000000000000000000000000000000000 +S315E07A604000000000000000000000000000000000F0 +S315E07A605000000000000000000000000000000000E0 +S315E07A606000000000000000000000000000000000D0 +S315E07A607000000000000000000000000000000000C0 +S315E07A608000000000000000000000000000000000B0 +S315E07A609000000000000000000000000000000000A0 +S315E07A60A00000000000000000000000000000000090 +S315E07A60B00000000000000000000000000000000080 +S315E07A60C0000000000000000000003E4900000000E9 +S315E07A60D00000000000000000000000000000000060 +S315E07A60E00000000000000000000000000000000050 +S315E07A60F00000000000000000000000000000000040 +S315E07A6100000000000000000000000000000000002F +S315E07A6110000000000000000000000000000000001F +S315E07A6120000000000000000000000000000000000F +S315E07A613000000000000000000000000000000000FF +S315E07A614000000000000000000000000000000000EF +S315E07A615000000000000000000000000000000000DF +S315E07A616000000000000000000000000000000000CF +S315E07A617000000000000000000000000000000000BF +S315E07A618000000000000000000000000000000000AF +S315E07A6190000000000000000000000000000000009F +S315E07A61A0000000000000000000000000000000008F +S315E07A61B0000000000000000000000000000000007F +S315E07A61C0000000000000000000000000000000006F +S315E07A61D0000000000000000000000000000000005F +S315E07A61E0000000000000000000000000000000004F +S315E07A61F0000000000000000000000000000000003F +S315E07A6200000000000000000000000000000000002E +S315E07A6210000000000000000000000000000000001E +S315E07A6220000000000000000000000000000000000E +S315E07A623000000000000000000000000000000000FE +S315E07A62400000003E49000000000000000000000067 +S315E07A625000000000000000000000000000000000DE +S315E07A626000000000000000000000000000000000CE +S315E07A627000000000000000000000000000000000BE +S315E07A628000000000000000000000000000000000AE +S315E07A6290000000000000000000000000000000009E +S315E07A62A0000000000000000000000000000000008E +S315E07A62B0000000000000000000000000000000007E +S315E07A62C0000000000000000000000000000000006E +S315E07A62D0000000000000000000000000000000005E +S315E07A62E0000000000000000000000000000000004E +S315E07A62F0000000000000000000000000000000003E +S315E07A6300000000000000000000000000000000002D +S315E07A6310000000000000000000000000000000001D +S315E07A6320000000000000000000000000000000000D +S315E07A633000000000000000000000000000000000FD +S315E07A634000000000000000000000000000000000ED +S315E07A635000000000000000000000000000000000DD +S315E07A636000000000000000000000000000000000CD +S315E07A637000000000000000000000000000000000BD +S315E07A638000000000000000000000000000000000AD +S315E07A6390000000000000000000000000000000009D +S315E07A63A0000000000000000000000000000000008D +S315E07A63B00000000000000000000000003E490000F6 +S315E07A63C0000000000000000000000000000000006D +S315E07A63D0000000000000000000000000000000005D +S315E07A63E0000000000000000000000000000000004D +S315E07A63F0000000000000000000000000000000003D +S315E07A6400000000000000000000000000000000002C +S315E07A6410000000000000000000000000000000001C +S315E07A6420000000000000000000000000000000000C +S315E07A643000000000000000000000000000000000FC +S315E07A644000000000000000000000000000000000EC +S315E07A645000000000000000000000000000000000DC +S315E07A646000000000000000000000000000000000CC +S315E07A647000000000000000000000000000000000BC +S315E07A648000000000000000000000000000000000AC +S315E07A6490000000000000000000000000000000009C +S315E07A64A0000000000000000000000000000000008C +S315E07A64B0000000000000000000000000000000007C +S315E07A64C0000000000000000000000000000000006C +S315E07A64D0000000000000000000000000000000005C +S315E07A64E0000000000000000000000000000000004C +S315E07A64F0000000000000000000000000000000003C +S315E07A6500000000000000000000000000000000002B +S315E07A6510000000000000000000000000000000001B +S315E07A6520000000000000000000000000000000000B +S315E07A653000000000003E4900000000000000000074 +S315E07A654000000000000000000000000000000000EB +S315E07A655000000000000000000000000000000000DB +S315E07A656000000000000000000000000000000000CB +S315E07A657000000000000000000000000000000000BB +S315E07A658000000000000000000000000000000000AB +S315E07A6590000000000000000000000000000000009B +S315E07A65A0000000000000000000000000000000008B +S315E07A65B0000000000000000000000000000000007B +S315E07A65C0000000000000000000000000000000006B +S315E07A65D0000000000000000000000000000000005B +S315E07A65E0000000000000000000000000000000004B +S315E07A65F0000000000000000000000000000000003B +S315E07A6600000000000000000000000000000000002A +S315E07A6610000000000000000000000000000000001A +S315E07A6620000000000000000000000000000000000A +S315E07A663000000000000000000000000000000000FA +S315E07A664000000000000000000000000000000000EA +S315E07A665000000000000000000000000000000000DA +S315E07A666000000000000000000000000000000000CA +S315E07A667000000000000000000000000000000000BA +S315E07A668000000000000000000000000000000000AA +S315E07A6690000000000000000000000000000000009A +S315E07A66A000000000000000000000000000003E4903 +S315E07A66B0000000000000000000000000000000007A +S315E07A66C0000000000000000000000000000000006A +S315E07A66D0000000000000000000000000000000005A +S315E07A66E0000000000000000000000000000000004A +S315E07A66F0000000000000000000000000000000003A +S315E07A67000000000000000000000000000000000029 +S315E07A67100000000000000000000000000000000019 +S315E07A67200000000000000000000000000000000009 +S315E07A673000000000000000000000000000000000F9 +S315E07A674000000000000000000000000000000000E9 +S315E07A675000000000000000000000000000000000D9 +S315E07A676000000000000000000000000000000000C9 +S315E07A677000000000000000000000000000000000B9 +S315E07A678000000000000000000000000000000000A9 +S315E07A67900000000000000000000000000000000099 +S315E07A67A00000000000000000000000000000000089 +S315E07A67B00000000000000000000000000000000079 +S315E07A67C00000000000000000000000000000000069 +S315E07A67D00000000000000000000000000000000059 +S315E07A67E00000000000000000000000000000000049 +S315E07A67F00000000000000000000000000000000039 +S315E07A68000000000000000000000000000000000028 +S315E07A68100000000000000000000000000000000018 +S315E07A6820000000000000003E490000000000000081 +S315E07A683000000000000000000000000000000000F8 +S315E07A684000000000000000000000000000000000E8 +S315E07A685000000000000000000000000000000000D8 +S315E07A686000000000000000000000000000000000C8 +S315E07A687000000000000000000000000000000000B8 +S315E07A688000000000000000000000000000000000A8 +S315E07A68900000000000000000000000000000000098 +S315E07A68A00000000000000000000000000000000088 +S315E07A68B00000000000000000000000000000000078 +S315E07A68C00000000000000000000000000000000068 +S315E07A68D00000000000000000000000000000000058 +S315E07A68E00000000000000000000000000000000048 +S315E07A68F00000000000000000000000000000000038 +S315E07A69000000000000000000000000000000000027 +S315E07A69100000000000000000000000000000000017 +S315E07A69200000000000000000000000000000000007 +S315E07A693000000000000000000000000000000000F7 +S315E07A694000000000000000000000000000000000E7 +S315E07A695000000000000000000000000000000000D7 +S315E07A696000000000000000000000000000000000C7 +S315E07A697000000000000000000000000000000000B7 +S315E07A698000000000000000000000000000000000A7 +S315E07A69900000000000000000000000000000000097 +S315E07A69A03E49000000000000000000000000000000 +S315E07A69B00000000000000000000000000000000077 +S315E07A69C00000000000000000000000000000000067 +S315E07A69D00000000000000000000000000000000057 +S315E07A69E00000000000000000000000000000000047 +S315E07A69F00000000000000000000000000000000037 +S315E07A6A000000000000000000000000000000000026 +S315E07A6A100000000000000000000000000000000016 +S315E07A6A200000000000000000000000000000000006 +S315E07A6A3000000000000000000000000000000000F6 +S315E07A6A4000000000000000000000000000000000E6 +S315E07A6A5000000000000000000000000000000000D6 +S315E07A6A6000000000000000000000000000000000C6 +S315E07A6A7000000000000000000000000000000000B6 +S315E07A6A8000000000000000000000000000000000A6 +S315E07A6A900000000000000000000000000000000096 +S315E07A6AA00000000000000000000000000000000086 +S315E07A6AB00000000000000000000000000000000076 +S315E07A6AC00000000000000000000000000000000066 +S315E07A6AD00000000000000000000000000000000056 +S315E07A6AE00000000000000000000000000000000046 +S315E07A6AF00000000000000000000000000000000036 +S315E07A6B000000000000000000000000000000000025 +S315E07A6B100000000000000000003E4900000000008E +S315E07A6B200000000000000000000000000000000005 +S315E07A6B3000000000000000000000000000000000F5 +S315E07A6B4000000000000000000000000000000000E5 +S315E07A6B5000000000000000000000000000000000D5 +S315E07A6B6000000000000000000000000000000000C5 +S315E07A6B7000000000000000000000000000000000B5 +S315E07A6B8000000000000000000000000000000000A5 +S315E07A6B900000000000000000000000000000000095 +S315E07A6BA00000000000000000000000000000000085 +S315E07A6BB00000000000000000000000000000000075 +S315E07A6BC00000000000000000000000000000000065 +S315E07A6BD00000000000000000000000000000000055 +S315E07A6BE00000000000000000000000000000000045 +S315E07A6BF00000000000000000000000000000000035 +S315E07A6C000000000000000000000000000000000024 +S315E07A6C100000000000000000000000000000000014 +S315E07A6C200000000000000000000000000000000004 +S315E07A6C3000000000000000000000000000000000F4 +S315E07A6C4000000000000000000000000000000000E4 +S315E07A6C5000000000000000000000000000000000D4 +S315E07A6C6000000000000000000000000000000000C4 +S315E07A6C7000000000000000000000000000000000B4 +S315E07A6C8000000000000000000000000000000000A4 +S315E07A6C9000003E490000000000000000000000000D +S315E07A6CA00000000000000000000000000000000084 +S315E07A6CB00000000000000000000000000000000074 +S315E07A6CC00000000000000000000000000000000064 +S315E07A6CD00000000000000000000000000000000054 +S315E07A6CE00000000000000000000000000000000044 +S315E07A6CF00000000000000000000000000000000034 +S315E07A6D000000000000000000000000000000000023 +S315E07A6D100000000000000000000000000000000013 +S315E07A6D200000000000000000000000000000000003 +S315E07A6D3000000000000000000000000000000000F3 +S315E07A6D4000000000000000000000000000000000E3 +S315E07A6D5000000000000000000000000000000000D3 +S315E07A6D6000000000000000000000000000000000C3 +S315E07A6D7000000000000000000000000000000000B3 +S315E07A6D8000000000000000000000000000000000A3 +S315E07A6D900000000000000000000000000000000093 +S315E07A6DA00000000000000000000000000000000083 +S315E07A6DB00000000000000000000000000000000073 +S315E07A6DC00000000000000000000000000000000063 +S315E07A6DD00000000000000000000000000000000053 +S315E07A6DE00000000000000000000000000000000043 +S315E07A6DF00000000000000000000000000000000033 +S315E07A6E0000000000000000000000003E490000009B +S315E07A6E100000000000000000000000000000000012 +S315E07A6E200000000000000000000000000000000002 +S315E07A6E3000000000000000000000000000000000F2 +S315E07A6E4000000000000000000000000000000000E2 +S315E07A6E5000000000000000000000000000000000D2 +S315E07A6E6000000000000000000000000000000000C2 +S315E07A6E7000000000000000000000000000000000B2 +S315E07A6E8000000000000000000000000000000000A2 +S315E07A6E900000000000000000000000000000000092 +S315E07A6EA00000000000000000000000000000000082 +S315E07A6EB00000000000000000000000000000000072 +S315E07A6EC00000000000000000000000000000000062 +S315E07A6ED00000000000000000000000000000000052 +S315E07A6EE00000000000000000000000000000000042 +S315E07A6EF00000000000000000000000000000000032 +S315E07A6F000000000000000000000000000000000021 +S315E07A6F100000000000000000000000000000000011 +S315E07A6F200000000000000000000000000000000001 +S315E07A6F3000000000000000000000000000000000F1 +S315E07A6F4000000000000000000000000000000000E1 +S315E07A6F5000000000000000000000000000000000D1 +S315E07A6F6000000000000000000000000000000000C1 +S315E07A6F7000000000000000000000000000000000B1 +S315E07A6F80000000003E49000000000000000000001A +S315E07A6F900000000000000000000000000000000091 +S315E07A6FA00000000000000000000000000000000081 +S315E07A6FB00000000000000000000000000000000071 +S315E07A6FC00000000000000000000000000000000061 +S315E07A6FD00000000000000000000000000000000051 +S315E07A6FE00000000000000000000000000000000041 +S315E07A6FF00000000000000000000000000000000031 +S315E07A70000000000000000000000000000000000020 +S315E07A70100000000000000000000000000000000010 +S315E07A70200000000000000000000000000000000000 +S315E07A703000000000000000000000000000000000F0 +S315E07A704000000000000000000000000000000000E0 +S315E07A705000000000000000000000000000000000D0 +S315E07A706000000000000000000000000000000000C0 +S315E07A707000000000000000000000000000000000B0 +S315E07A708000000000000000000000000000000000A0 +S315E07A70900000000000000000000000000000000090 +S315E07A70A00000000000000000000000000000000080 +S315E07A70B00000000000000000000000000000000070 +S315E07A70C00000000000000000000000000000000060 +S315E07A70D00000000000000000000000000000000050 +S315E07A70E00000000000000000000000000000000040 +S315E07A70F0000000000000000000000000003E4900A9 +S315E07A7100000000000000000000000000000000001F +S315E07A7110000000000000000000000000000000000F +S315E07A712000000000000000000000000000000000FF +S315E07A713000000000000000000000000000000000EF +S315E07A714000000000000000000000000000000000DF +S315E07A715000000000000000000000000000000000CF +S315E07A716000000000000000000000000000000000BF +S315E07A717000000000000000000000000000000000AF +S315E07A7180000000000000000000000000000000009F +S315E07A7190000000000000000000000000000000008F +S315E07A71A0000000000000000000000000000000007F +S315E07A71B0000000000000000000000000000000006F +S315E07A71C0000000000000000000000000000000005F +S315E07A71D0000000000000000000000000000000004F +S315E07A71E0000000000000000000000000000000003F +S315E07A71F0000000000000000000000000000000002F +S315E07A7200000000000000000000000000000000001E +S315E07A7210000000000000000000000000000000000E +S315E07A722000000000000000000000000000000000FE +S315E07A723000000000000000000000000000000000EE +S315E07A724000000000000000000000000000000000DE +S315E07A725000000000000000000000000000000000CE +S315E07A726000000000000000000000000000000000BE +S315E07A72700000000000003E49000000000000000027 +S315E07A7280000000000000000000000000000000009E +S315E07A7290000000000000000000000000000000008E +S315E07A72A0000000000000000000000000000000007E +S315E07A72B0000000000000000000000000000000006E +S315E07A72C0000000000000000000000000000000005E +S315E07A72D0000000000000000000000000000000004E +S315E07A72E0000000000000000000000000000000003E +S315E07A72F0000000000000000000000000000000002E +S315E07A7300000000000000000000000000000000001D +S315E07A7310000000000000000000000000000000000D +S315E07A732000000000000000000000000000000000FD +S315E07A733000000000000000000000000000000000ED +S315E07A734000000000000000000000000000000000DD +S315E07A735000000000000000000000000000000000CD +S315E07A736000000000000000000000000000000000BD +S315E07A737000000000000000000000000000000000AD +S315E07A7380000000000000000000000000000000009D +S315E07A7390000000000000000000000000000000008D +S315E07A73A0000000000000000000000000000000007D +S315E07A73B0000000000000000000000000000000006D +S315E07A73C0000000000000000000000000000000005D +S315E07A73D0000000000000000000000000000000004D +S315E07A73E00000000000000000000000000000003EFF +S315E07A73F049000000000000000000000000000000E4 +S315E07A7400000000000000000000000000000000001C +S315E07A7410000000000000000000000000000000000C +S315E07A742000000000000000000000000000000000FC +S315E07A743000000000000000000000000000000000EC +S315E07A744000000000000000000000000000000000DC +S315E07A745000000000000000000000000000000000CC +S315E07A746000000000000000000000000000000000BC +S315E07A747000000000000000000000000000000000AC +S315E07A7480000000000000000000000000000000009C +S315E07A7490000000000000000000000000000000008C +S315E07A74A0000000000000000000000000000000007C +S315E07A74B0000000000000000000000000000000006C +S315E07A74C0000000000000000000000000000000005C +S315E07A74D0000000000000000000000000000000004C +S315E07A74E0000000000000000000000000000000003C +S315E07A74F0000000000000000000000000000000002C +S315E07A7500000000000000000000000000000000001B +S315E07A7510000000000000000000000000000000000B +S315E07A752000000000000000000000000000000000FB +S315E07A753000000000000000000000000000000000EB +S315E07A754000000000000000000000000000000000DB +S315E07A755000000000000000000000000000000000CB +S315E07A756000000000000000003E4900000000000034 +S315E07A757000000000000000000000000000000000AB +S315E07A7580000000000000000000000000000000009B +S315E07A7590000000000000000000000000000000008B +S315E07A75A0000000000000000000000000000000007B +S315E07A75B0000000000000000000000000000000006B +S315E07A75C0000000000000000000000000000000005B +S315E07A75D0000000000000000000000000000000004B +S315E07A75E0000000000000000000000000000000003B +S315E07A75F0000000000000000000000000000000002B +S315E07A7600000000000000000000000000000000001A +S315E07A7610000000000000000000000000000000000A +S315E07A762000000000000000000000000000000000FA +S315E07A763000000000000000000000000000000000EA +S315E07A764000000000000000000000000000000000DA +S315E07A765000000000000000000000000000000000CA +S315E07A766000000000000000000000000000000000BA +S315E07A767000000000000000000000000000000000AA +S315E07A7680000000000000000000000000000000009A +S315E07A7690000000000000000000000000000000008A +S315E07A76A0000000000000000000000000000000007A +S315E07A76B0000000000000000000000000000000006A +S315E07A76C0000000000000000000000000000000005A +S315E07A76D0000000000000000000000000000000004A +S315E07A76E0003E4900000000000000000000000000B3 +S315E07A76F0000000000000000000000000000000002A +S315E07A77000000000000000000000000000000000019 +S315E07A77100000000000000000000000000000000009 +S315E07A772000000000000000000000000000000000F9 +S315E07A773000000000000000000000000000000000E9 +S315E07A774000000000000000000000000000000000D9 +S315E07A775000000000000000000000000000000000C9 +S315E07A776000000000000000000000000000000000B9 +S315E07A777000000000000000000000000000000000A9 +S315E07A77800000000000000000000000000000000099 +S315E07A77900000000000000000000000000000000089 +S315E07A77A00000000000000000000000000000000079 +S315E07A77B00000000000000000000000000000000069 +S315E07A77C00000000000000000000000000000000059 +S315E07A77D00000000000000000000000000000000049 +S315E07A77E00000000000000000000000000000000039 +S315E07A77F00000000000000000000000000000000029 +S315E07A78000000000000000000000000000000000018 +S315E07A78100000000000000000000000000000000008 +S315E07A782000000000000000000000000000000000F8 +S315E07A783000000000000000000000000000000000E8 +S315E07A784000000000000000000000000000000000D8 +S315E07A7850000000000000000000003E490000000041 +S315E07A786000000000000000000000000000000000B8 +S315E07A787000000000000000000000000000000000A8 +S315E07A78800000000000000000000000000000000098 +S315E07A78900000000000000000000000000000000088 +S315E07A78A00000000000000000000000000000000078 +S315E07A78B00000000000000000000000000000000068 +S315E07A78C00000000000000000000000000000000058 +S315E07A78D00000000000000000000000000000000048 +S315E07A78E00000000000000000000000000000000038 +S315E07A78F00000000000000000000000000000000028 +S315E07A79000000000000000000000000000000000017 +S315E07A79100000000000000000000000000000000007 +S315E07A792000000000000000000000000000000000F7 +S315E07A793000000000000000000000000000000000E7 +S315E07A794000000000000000000000000000000000D7 +S315E07A795000000000000000000000000000000000C7 +S315E07A796000000000000000000000000000000000B7 +S315E07A797000000000000000000000000000000000A7 +S315E07A79800000000000000000000000000000000097 +S315E07A79900000000000000000000000000000000087 +S315E07A79A00000000000000000000000000000000077 +S315E07A79B00000000000000000000000000000000067 +S315E07A79C00000000000000000000000000000000057 +S315E07A79D00000003E490000000000000000000000C0 +S315E07A79E00000000000000000000000000000000037 +S315E07A79F00000000000000000000000000000000027 +S315E07A7A000000000000000000000000000000000016 +S315E07A7A100000000000000000000000000000000006 +S315E07A7A2000000000000000000000000000000000F6 +S315E07A7A3000000000000000000000000000000000E6 +S315E07A7A4000000000000000000000000000000000D6 +S315E07A7A5000000000000000000000000000000000C6 +S315E07A7A6000000000000000000000000000000000B6 +S315E07A7A7000000000000000000000000000000000A6 +S315E07A7A800000000000000000000000000000000096 +S315E07A7A900000000000000000000000000000000086 +S315E07A7AA00000000000000000000000000000000076 +S315E07A7AB00000000000000000000000000000000066 +S315E07A7AC00000000000000000000000000000000056 +S315E07A7AD00000000000000000000000000000000046 +S315E07A7AE00000000000000000000000000000000036 +S315E07A7AF00000000000000000000000000000000026 +S315E07A7B000000000000000000000000000000000015 +S315E07A7B100000000000000000000000000000000005 +S315E07A7B2000000000000000000000000000000000F5 +S315E07A7B3000000000000000000000000000000000E5 +S315E07A7B400000000000000000000000003E4900004E +S315E07A7B5000000000000000000000000000000000C5 +S315E07A7B6000000000000000000000000000000000B5 +S315E07A7B7000000000000000000000000000000000A5 +S315E07A7B800000000000000000000000000000000095 +S315E07A7B900000000000000000000000000000000085 +S315E07A7BA00000000000000000000000000000000075 +S315E07A7BB00000000000000000000000000000000065 +S315E07A7BC00000000000000000000000000000000055 +S315E07A7BD00000000000000000000000000000000045 +S315E07A7BE00000000000000000000000000000000035 +S315E07A7BF00000000000000000000000000000000025 +S315E07A7C000000000000000000000000000000000014 +S315E07A7C100000000000000000000000000000000004 +S315E07A7C2000000000000000000000000000000000F4 +S315E07A7C3000000000000000000000000000000000E4 +S315E07A7C4000000000000000000000000000000000D4 +S315E07A7C5000000000000000000000000000000000C4 +S315E07A7C6000000000000000000000000000000000B4 +S315E07A7C7000000000000000000000000000000000A4 +S315E07A7C800000000000000000000000000000000094 +S315E07A7C900000000000000000000000000000000084 +S315E07A7CA00000000000000000000000000000000074 +S315E07A7CB00000000000000000000000000000000064 +S315E07A7CC000000000003E49000000000000000000CD +S315E07A7CD00000000000000000000000000000000044 +S315E07A7CE00000000000000000000000000000000034 +S315E07A7CF00000000000000000000000000000000024 +S315E07A7D000000000000000000000000000000000013 +S315E07A7D100000000000000000000000000000000003 +S315E07A7D2000000000000000000000000000000000F3 +S315E07A7D3000000000000000000000000000000000E3 +S315E07A7D4000000000000000000000000000000000D3 +S315E07A7D5000000000000000000000000000000000C3 +S315E07A7D6000000000000000000000000000000000B3 +S315E07A7D7000000000000000000000000000000000A3 +S315E07A7D800000000000000000000000000000000093 +S315E07A7D900000000000000000000000000000000083 +S315E07A7DA00000000000000000000000000000000073 +S315E07A7DB00000000000000000000000000000000063 +S315E07A7DC00000000000000000000000000000000053 +S315E07A7DD00000000000000000000000000000000043 +S315E07A7DE00000000000000000000000000000000033 +S315E07A7DF00000000000000000000000000000000023 +S315E07A7E000000000000000000000000000000000012 +S315E07A7E100000000000000000000000000000000002 +S315E07A7E2000000000000000000000000000000000F2 +S315E07A7E3000000000000000000000000000003E495B +S315E07A7E4000000000000000000000000000000000D2 +S315E07A7E5000000000000000000000000000000000C2 +S315E07A7E6000000000000000000000000000000000B2 +S315E07A7E7000000000000000000000000000000000A2 +S315E07A7E800000000000000000000000000000000092 +S315E07A7E900000000000000000000000000000000082 +S315E07A7EA00000000000000000000000000000000072 +S315E07A7EB00000000000000000000000000000000062 +S315E07A7EC00000000000000000000000000000000052 +S315E07A7ED00000000000000000000000000000000042 +S315E07A7EE00000000000000000000000000000000032 +S315E07A7EF00000000000000000000000000000000022 +S315E07A7F000000000000000000000000000000000011 +S315E07A7F100000000000000000000000000000000001 +S315E07A7F2000000000000000000000000000000000F1 +S315E07A7F3000000000000000000000000000000000E1 +S315E07A7F4000000000000000000000000000000000D1 +S315E07A7F5000000000000000000000000000000000C1 +S315E07A7F6000000000000000000000000000000000B1 +S315E07A7F7000000000000000000000000000000000A1 +S315E07A7F800000000000000000000000000000000091 +S315E07A7F900000000000000000000000000000000081 +S315E07A7FA00000000000000000000000000000000071 +S315E07A7FB0000000000000003E4900000000000000DA +S315E07A7FC00000000000000000000000000000000051 +S315E07A7FD00000000000000000000000000000000041 +S315E07A7FE00000000000000000000000000000000031 +S315E07A7FF00000000000000000000000000000000021 +S315E07A80000000000000000000000000000000000010 +S315E07A80100000000000000000000000000000000000 +S315E07A802000000000000000000000000000000000F0 +S315E07A803000000000000000000000000000000000E0 +S315E07A804000000000000000000000000000000000D0 +S315E07A805000000000000000000000000000000000C0 +S315E07A806000000000000000000000000000000000B0 +S315E07A807000000000000000000000000000000000A0 +S315E07A80800000000000000000000000000000000090 +S315E07A80900000000000000000000000000000000080 +S315E07A80A00000000000000000000000000000000070 +S315E07A80B00000000000000000000000000000000060 +S315E07A80C00000000000000000000000000000000050 +S315E07A80D00000000000000000000000000000000040 +S315E07A80E00000000000000000000000000000000030 +S315E07A80F00000000000000000000000000000000020 +S315E07A8100000000000000000000000000000000000F +S315E07A811000000000000000000000000000000000FF +S315E07A812000000000000000000000000000000000EF +S315E07A81303E49000000000000000000000000000058 +S315E07A814000000000000000000000000000000000CF +S315E07A815000000000000000000000000000000000BF +S315E07A816000000000000000000000000000000000AF +S315E07A8170000000000000000000000000000000009F +S315E07A8180000000000000000000000000000000008F +S315E07A8190000000000000000000000000000000007F +S315E07A81A0000000000000000000000000000000006F +S315E07A81B0000000000000000000000000000000005F +S315E07A81C0000000000000000000000000000000004F +S315E07A81D0000000000000000000000000000000003F +S315E07A81E0000000000000000000000000000000002F +S315E07A81F0000000000000000000000000000000001F +S315E07A8200000000000000000000000000000000000E +S315E07A821000000000000000000000000000000000FE +S315E07A822000000000000000000000000000000000EE +S315E07A823000000000000000000000000000000000DE +S315E07A824000000000000000000000000000000000CE +S315E07A825000000000000000000000000000000000BE +S315E07A826000000000000000000000000000000000AE +S315E07A8270000000000000000000000000000000009E +S315E07A8280000000000000000000000000000000008E +S315E07A8290000000000000000000000000000000007E +S315E07A82A00000000000000000003E490000000000E7 +S315E07A82B0000000000000000000000000000000005E +S315E07A82C0000000000000000000000000000000004E +S315E07A82D0000000000000000000000000000000003E +S315E07A82E0000000000000000000000000000000002E +S315E07A82F0000000000000000000000000000000001E +S315E07A8300000000000000000000000000000000000D +S315E07A831000000000000000000000000000000000FD +S315E07A832000000000000000000000000000000000ED +S315E07A833000000000000000000000000000000000DD +S315E07A834000000000000000000000000000000000CD +S315E07A835000000000000000000000000000000000BD +S315E07A836000000000000000000000000000000000AD +S315E07A8370000000000000000000000000000000009D +S315E07A8380000000000000000000000000000000008D +S315E07A8390000000000000000000000000000000007D +S315E07A83A0000000000000000000000000000000006D +S315E07A83B0000000000000000000000000000000005D +S315E07A83C0000000000000000000000000000000004D +S315E07A83D0000000000000000000000000000000003D +S315E07A83E0000000000000000000000000000000002D +S315E07A83F0000000000000000000000000000000001D +S315E07A8400000000000000000000000000000000000C +S315E07A841000000000000000000000000000000000FC +S315E07A842000003E4900000000000000000000000065 +S315E07A843000000000000000000000000000000000DC +S315E07A844000000000000000000000000000000000CC +S315E07A845000000000000000000000000000000000BC +S315E07A846000000000000000000000000000000000AC +S315E07A8470000000000000000000000000000000009C +S315E07A8480000000000000000000000000000000008C +S315E07A8490000000000000000000000000000000007C +S315E07A84A0000000000000000000000000000000006C +S315E07A84B0000000000000000000000000000000005C +S315E07A84C0000000000000000000000000000000004C +S315E07A84D0000000000000000000000000000000003C +S315E07A84E0000000000000000000000000000000002C +S315E07A84F0000000000000000000000000000000001C +S315E07A8500000000000000000000000000000000000B +S315E07A851000000000000000000000000000000000FB +S315E07A852000000000000000000000000000000000EB +S315E07A853000000000000000000000000000000000DB +S315E07A854000000000000000000000000000000000CB +S315E07A855000000000000000000000000000000000BB +S315E07A856000000000000000000000000000000000AB +S315E07A8570000000000000000000000000000000009B +S315E07A8580000000000000000000000000000000008B +S315E07A859000000000000000000000003E49000000F4 +S315E07A85A0000000000000000000000000000000006B +S315E07A85B0000000000000000000000000000000005B +S315E07A85C0000000000000000000000000000000004B +S315E07A85D0000000000000000000000000000000003B +S315E07A85E0000000000000000000000000000000002B +S315E07A85F0000000000000000000000000000000001B +S315E07A8600000000000000000000000000000000000A +S315E07A861000000000000000000000000000000000FA +S315E07A862000000000000000000000000000000000EA +S315E07A863000000000000000000000000000000000DA +S315E07A864000000000000000000000000000000000CA +S315E07A865000000000000000000000000000000000BA +S315E07A866000000000000000000000000000000000AA +S315E07A8670000000000000000000000000000000009A +S315E07A8680000000000000000000000000000000008A +S315E07A8690000000000000000000000000000000007A +S315E07A86A0000000000000000000000000000000006A +S315E07A86B0000000000000000000000000000000005A +S315E07A86C0000000000000000000000000000000004A +S315E07A86D0000000000000000000000000000000003A +S315E07A86E0000000000000000000000000000000002A +S315E07A86F0000000000000000000000000000000001A +S315E07A87000000000000000000000000000000000009 +S315E07A8710000000003E490000000000000000000072 +S315E07A872000000000000000000000000000000000E9 +S315E07A873000000000000000000000000000000000D9 +S315E07A874000000000000000000000000000000000C9 +S315E07A875000000000000000000000000000000000B9 +S315E07A876000000000000000000000000000000000A9 +S315E07A87700000000000000000000000000000000099 +S315E07A87800000000000000000000000000000000089 +S315E07A87900000000000000000000000000000000079 +S315E07A87A00000000000000000000000000000000069 +S315E07A87B00000000000000000000000000000000059 +S315E07A87C00000000000000000000000000000000049 +S315E07A87D00000000000000000000000000000000039 +S315E07A87E00000000000000000000000000000000029 +S315E07A87F00000000000000000000000000000000019 +S315E07A88000000000000000000000000000000000008 +S315E07A881000000000000000000000000000000000F8 +S315E07A882000000000000000000000000000000000E8 +S315E07A883000000000000000000000000000000000D8 +S315E07A884000000000000000000000000000000000C8 +S315E07A885000000000000000000000000000000000B8 +S315E07A886000000000000000000000000000000000A8 +S315E07A88700000000000000000000000000000000098 +S315E07A8880000000000000000000000000003E490001 +S315E07A88900000000000000000000000000000000078 +S315E07A88A00000000000000000000000000000000068 +S315E07A88B00000000000000000000000000000000058 +S315E07A88C00000000000000000000000000000000048 +S315E07A88D00000000000000000000000000000000038 +S315E07A88E00000000000000000000000000000000028 +S315E07A88F00000000000000000000000000000000018 +S315E07A89000000000000000000000000000000000007 +S315E07A891000000000000000000000000000000000F7 +S315E07A892000000000000000000000000000000000E7 +S315E07A893000000000000000000000000000000000D7 +S315E07A894000000000000000000000000000000000C7 +S315E07A895000000000000000000000000000000000B7 +S315E07A896000000000000000000000000000000000A7 +S315E07A89700000000000000000000000000000000097 +S315E07A89800000000000000000000000000000000087 +S315E07A89900000000000000000000000000000000077 +S315E07A89A00000000000000000000000000000000067 +S315E07A89B00000000000000000000000000000000057 +S315E07A89C00000000000000000000000000000000047 +S315E07A89D00000000000000000000000000000000037 +S315E07A89E00000000000000000000000000000000027 +S315E07A89F00000000000000000000000000000000017 +S315E07A8A000000000000003E4900000000000000007F +S315E07A8A1000000000000000000000000000000000F6 +S315E07A8A2000000000000000000000000000000000E6 +S315E07A8A3000000000000000000000000000000000D6 +S315E07A8A4000000000000000000000000000000000C6 +S315E07A8A5000000000000000000000000000000000B6 +S315E07A8A6000000000000000000000000000000000A6 +S315E07A8A700000000000000000000000000000000096 +S315E07A8A800000000000000000000000000000000086 +S315E07A8A900000000000000000000000000000000076 +S315E07A8AA00000000000000000000000000000000066 +S315E07A8AB00000000000000000000000000000000056 +S315E07A8AC00000000000000000000000000000000046 +S315E07A8AD00000000000000000000000000000000036 +S315E07A8AE00000000000000000000000000000000026 +S315E07A8AF00000000000000000000000000000000016 +S315E07A8B000000000000000000000000000000000005 +S315E07A8B1000000000000000000000000000000000F5 +S315E07A8B2000000000000000000000000000000000E5 +S315E07A8B3000000000000000000000000000000000D5 +S315E07A8B4000000000000000000000000000000000C5 +S315E07A8B5000000000000000000000000000000000B5 +S315E07A8B6000000000000000000000000000000000A5 +S315E07A8B700000000000000000000000000000003E57 +S315E07A8B80490000000000000000000000000000003C +S315E07A8B900000000000000000000000000000000075 +S315E07A8BA00000000000000000000000000000000065 +S315E07A8BB00000000000000000000000000000000055 +S315E07A8BC00000000000000000000000000000000045 +S315E07A8BD00000000000000000000000000000000035 +S315E07A8BE00000000000000000000000000000000025 +S315E07A8BF00000000000000000000000000000000015 +S315E07A8C000000000000000000000000000000000004 +S315E07A8C1000000000000000000000000000000000F4 +S315E07A8C2000000000000000000000000000000000E4 +S315E07A8C3000000000000000000000000000000000D4 +S315E07A8C4000000000000000000000000000000000C4 +S315E07A8C5000000000000000000000000000000000B4 +S315E07A8C6000000000000000000000000000000000A4 +S315E07A8C700000000000000000000000000000000094 +S315E07A8C800000000000000000000000000000000084 +S315E07A8C900000000000000000000000000000000074 +S315E07A8CA00000000000000000000000000000000064 +S315E07A8CB00000000000000000000000000000000054 +S315E07A8CC00000000000000000000000000000000044 +S315E07A8CD00000000000000000000000000000000034 +S315E07A8CE00000000000000000000000000000000024 +S315E07A8CF000000000000000003E490000000000008D +S315E07A8D000000000000000000000000000000000003 +S315E07A8D1000000000000000000000000000000000F3 +S315E07A8D2000000000000000000000000000000000E3 +S315E07A8D3000000000000000000000000000000000D3 +S315E07A8D4000000000000000000000000000000000C3 +S315E07A8D5000000000000000000000000000000000B3 +S315E07A8D6000000000000000000000000000000000A3 +S315E07A8D700000000000000000000000000000000093 +S315E07A8D800000000000000000000000000000000083 +S315E07A8D900000000000000000000000000000000073 +S315E07A8DA00000000000000000000000000000000063 +S315E07A8DB00000000000000000000000000000000053 +S315E07A8DC00000000000000000000000000000000043 +S315E07A8DD00000000000000000000000000000000033 +S315E07A8DE00000000000000000000000000000000023 +S315E07A8DF00000000000000000000000000000000013 +S315E07A8E000000000000000000000000000000000002 +S315E07A8E1000000000000000000000000000000000F2 +S315E07A8E2000000000000000000000000000000000E2 +S315E07A8E3000000000000000000000000000000000D2 +S315E07A8E4000000000000000000000000000000000C2 +S315E07A8E5000000000000000000000000000000000B2 +S315E07A8E6000000000000000000000000000000000A2 +S315E07A8E70003E49000000000000000000000000000B +S315E07A8E800000000000000000000000000000000082 +S315E07A8E900000000000000000000000000000000072 +S315E07A8EA00000000000000000000000000000000062 +S315E07A8EB00000000000000000000000000000000052 +S315E07A8EC00000000000000000000000000000000042 +S315E07A8ED00000000000000000000000000000000032 +S315E07A8EE00000000000000000000000000000000022 +S315E07A8EF00000000000000000000000000000000012 +S315E07A8F000000000000000000000000000000000001 +S315E07A8F1000000000000000000000000000000000F1 +S315E07A8F2000000000000000000000000000000000E1 +S315E07A8F3000000000000000000000000000000000D1 +S315E07A8F4000000000000000000000000000000000C1 +S315E07A8F5000000000000000000000000000000000B1 +S315E07A8F6000000000000000000000000000000000A1 +S315E07A8F700000000000000000000000000000000091 +S315E07A8F800000000000000000000000000000000081 +S315E07A8F900000000000000000000000000000000071 +S315E07A8FA00000000000000000000000000000000061 +S315E07A8FB00000000000000000000000000000000051 +S315E07A8FC00000000000000000000000000000000041 +S315E07A8FD00000000000000000000000000000000031 +S315E07A8FE0000000000000000000003E49000000009A +S315E07A8FF00000000000000000000000000000000011 +S315E07A90000000000000000000000000000000000000 +S315E07A901000000000000000000000000000000000F0 +S315E07A902000000000000000000000000000000000E0 +S315E07A903000000000000000000000000000000000D0 +S315E07A904000000000000000000000000000000000C0 +S315E07A905000000000000000000000000000000000B0 +S315E07A906000000000000000000000000000000000A0 +S315E07A90700000000000000000000000000000000090 +S315E07A90800000000000000000000000000000000080 +S315E07A90900000000000000000000000000000000070 +S315E07A90A00000000000000000000000000000000060 +S315E07A90B00000000000000000000000000000000050 +S315E07A90C00000000000000000000000000000000040 +S315E07A90D00000000000000000000000000000000030 +S315E07A90E00000000000000000000000000000000020 +S315E07A90F00000000000000000000000000000000010 +S315E07A910000000000000000000000000000000000FF +S315E07A911000000000000000000000000000000000EF +S315E07A912000000000000000000000000000000000DF +S315E07A913000000000000000000000000000000000CF +S315E07A914000000000000000000000000000000000BF +S315E07A915000000000000000000000000000000000AF +S315E07A91600000003E49000000000000000000000018 +S315E07A9170000000000000000000000000000000008F +S315E07A9180000000000000000000000000000000007F +S315E07A9190000000000000000000000000000000006F +S315E07A91A0000000000000000000000000000000005F +S315E07A91B0000000000000000000000000000000004F +S315E07A91C0000000000000000000000000000000003F +S315E07A91D0000000000000000000000000000000002F +S315E07A91E0000000000000000000000000000000001F +S315E07A91F0000000000000000000000000000000000F +S315E07A920000000000000000000000000000000000FE +S315E07A921000000000000000000000000000000000EE +S315E07A922000000000000000000000000000000000DE +S315E07A923000000000000000000000000000000000CE +S315E07A924000000000000000000000000000000000BE +S315E07A925000000000000000000000000000000000AE +S315E07A9260000000000000000000000000000000009E +S315E07A9270000000000000000000000000000000008E +S315E07A9280000000000000000000000000000000007E +S315E07A9290000000000000000000000000000000006E +S315E07A92A0000000000000000000000000000000005E +S315E07A92B0000000000000000000000000000000004E +S315E07A92C0000000000000000000000000000000003E +S315E07A92D00000000000000000000000003E490000A7 +S315E07A92E0000000000000000000000000000000001E +S315E07A92F0000000000000000000000000000000000E +S315E07A930000000000000000000000000000000000FD +S315E07A931000000000000000000000000000000000ED +S315E07A932000000000000000000000000000000000DD +S315E07A933000000000000000000000000000000000CD +S315E07A934000000000000000000000000000000000BD +S315E07A935000000000000000000000000000000000AD +S315E07A9360000000000000000000000000000000009D +S315E07A9370000000000000000000000000000000008D +S315E07A9380000000000000000000000000000000007D +S315E07A9390000000000000000000000000000000006D +S315E07A93A0000000000000000000000000000000005D +S315E07A93B0000000000000000000000000000000004D +S315E07A93C0000000000000000000000000000000003D +S315E07A93D0000000000000000000000000000000002D +S315E07A93E0000000000000000000000000000000001D +S315E07A93F0000000000000000000000000000000000D +S315E07A940000000000000000000000000000000000FC +S315E07A941000000000000000000000000000000000EC +S315E07A942000000000000000000000000000000000DC +S315E07A943000000000000000000000000000000000CC +S315E07A944000000000000000000000000000000000BC +S315E07A945000000000003E4900000000000000000025 +S315E07A9460000000000000000000000000000000009C +S315E07A9470000000000000000000000000000000008C +S315E07A9480000000000000000000000000000000007C +S315E07A9490000000000000000000000000000000006C +S315E07A94A0000000000000000000000000000000005C +S315E07A94B0000000000000000000000000000000004C +S315E07A94C0000000000000000000000000000000003C +S315E07A94D0000000000000000000000000000000002C +S315E07A94E0000000000000000000000000000000001C +S315E07A94F0000000000000000000000000000000000C +S315E07A950000000000000000000000000000000000FB +S315E07A951000000000000000000000000000000000EB +S315E07A952000000000000000000000000000000000DB +S315E07A953000000000000000000000000000000000CB +S315E07A954000000000000000000000000000000000BB +S315E07A955000000000000000000000000000000000AB +S315E07A9560000000000000000000000000000000009B +S315E07A9570000000000000000000000000000000008B +S315E07A9580000000000000000000000000000000007B +S315E07A9590000000000000000000000000000000006B +S315E07A95A0000000000000000000000000000000005B +S315E07A95B0000000000000000000000000000000004B +S315E07A95C000000000000000000000000000003E49B4 +S315E07A95D0000000000000000000000000000000002B +S315E07A95E0000000000000000000000000000000001B +S315E07A95F0000000000000000000000000000000000B +S315E07A960000000000000000000000000000000000FA +S315E07A961000000000000000000000000000000000EA +S315E07A962000000000000000000000000000000000DA +S315E07A963000000000000000000000000000000000CA +S315E07A964000000000000000000000000000000000BA +S315E07A965000000000000000000000000000000000AA +S315E07A9660000000000000000000000000000000009A +S315E07A9670000000000000000000000000000000008A +S315E07A9680000000000000000000000000000000007A +S315E07A9690000000000000000000000000000000006A +S315E07A96A0000000000000000000000000000000005A +S315E07A96B0000000000000000000000000000000004A +S315E07A96C0000000000000000000000000000000003A +S315E07A96D0000000000000000000000000000000002A +S315E07A96E0000000000000000000000000000000001A +S315E07A96F0000000000000000000000000000000000A +S315E07A970000000000000000000000000000000000F9 +S315E07A971000000000000000000000000000000000E9 +S315E07A972000000000000000000000000000000000D9 +S315E07A973000000000000000000000000000000000C9 +S315E07A9740000000000000003E490000000000000032 +S315E07A975000000000000000000000000000000000A9 +S315E07A97600000000000000000000000000000000099 +S315E07A97700000000000000000000000000000000089 +S315E07A97800000000000000000000000000000000079 +S315E07A97900000000000000000000000000000000069 +S315E07A97A00000000000000000000000000000000059 +S315E07A97B00000000000000000000000000000000049 +S315E07A97C00000000000000000000000000000000039 +S315E07A97D00000000000000000000000000000000029 +S315E07A97E00000000000000000000000000000000019 +S315E07A97F00000000000000000000000000000000009 +S315E07A980000000000000000000000000000000000F8 +S315E07A981000000000000000000000000000000000E8 +S315E07A982000000000000000000000000000000000D8 +S315E07A983000000000000000000000000000000000C8 +S315E07A984000000000000000000000000000000000B8 +S315E07A985000000000000000000000000000000000A8 +S315E07A98600000000000000000000000000000000098 +S315E07A98700000000000000000000000000000000088 +S315E07A98800000000000000000000000000000000078 +S315E07A98900000000000000000000000000000000068 +S315E07A98A00000000000000000000000000000000058 +S315E07A98B00000000000000000000000000000000048 +S315E07A98C03E490000000000000000000000000000B1 +S315E07A98D00000000000000000000000000000000028 +S315E07A98E00000000000000000000000000000000018 +S315E07A98F00000000000000000000000000000000008 +S315E07A990000000000000000000000000000000000F7 +S315E07A991000000000000000000000000000000000E7 +S315E07A992000000000000000000000000000000000D7 +S315E07A993000000000000000000000000000000000C7 +S315E07A994000000000000000000000000000000000B7 +S315E07A995000000000000000000000000000000000A7 +S315E07A99600000000000000000000000000000000097 +S315E07A99700000000000000000000000000000000087 +S315E07A99800000000000000000000000000000000077 +S315E07A99900000000000000000000000000000000067 +S315E07A99A00000000000000000000000000000000057 +S315E07A99B00000000000000000000000000000000047 +S315E07A99C00000000000000000000000000000000037 +S315E07A99D00000000000000000000000000000000027 +S315E07A99E00000000000000000000000000000000017 +S315E07A99F00000000000000000000000000000000007 +S315E07A9A0000000000000000000000000000000000F6 +S315E07A9A1000000000000000000000000000000000E6 +S315E07A9A2000000000000000000000000000000000D6 +S315E07A9A300000000000000000003E4900000000003F +S315E07A9A4000000000000000000000000000000000B6 +S315E07A9A5000000000000000000000000000000000A6 +S315E07A9A600000000000000000000000000000000096 +S315E07A9A700000000000000000000000000000000086 +S315E07A9A800000000000000000000000000000000076 +S315E07A9A900000000000000000000000000000000066 +S315E07A9AA00000000000000000000000000000000056 +S315E07A9AB00000000000000000000000000000000046 +S315E07A9AC00000000000000000000000000000000036 +S315E07A9AD00000000000000000000000000000000026 +S315E07A9AE00000000000000000000000000000000016 +S315E07A9AF00000000000000000000000000000000006 +S315E07A9B0000000000000000000000000000000000F5 +S315E07A9B1000000000000000000000000000000000E5 +S315E07A9B2000000000000000000000000000000000D5 +S315E07A9B3000000000000000000000000000000000C5 +S315E07A9B4000000000000000000000000000000000B5 +S315E07A9B5000000000000000000000000000000000A5 +S315E07A9B600000000000000000000000000000000095 +S315E07A9B700000000000000000000000000000000085 +S315E07A9B800000000000000000000000000000000075 +S315E07A9B900000000000000000000000000000000065 +S315E07A9BA00000000000000000000000000000000055 +S315E07A9BB000003E49000000000000000000000000BE +S315E07A9BC00000000000000000000000000000000035 +S315E07A9BD00000000000000000000000000000000025 +S315E07A9BE00000000000000000000000000000000015 +S315E07A9BF00000000000000000000000000000000005 +S315E07A9C0000000000000000000000000000000000F4 +S315E07A9C1000000000000000000000000000000000E4 +S315E07A9C2000000000000000000000000000000000D4 +S315E07A9C3000000000000000000000000000000000C4 +S315E07A9C4000000000000000000000000000000000B4 +S315E07A9C5000000000000000000000000000000000A4 +S315E07A9C600000000000000000000000000000000094 +S315E07A9C700000000000000000000000000000000084 +S315E07A9C800000000000000000000000000000000074 +S315E07A9C900000000000000000000000000000000064 +S315E07A9CA00000000000000000000000000000000054 +S315E07A9CB00000000000000000000000000000000044 +S315E07A9CC00000000000000000000000000000000034 +S315E07A9CD00000000000000000000000000000000024 +S315E07A9CE00000000000000000000000000000000014 +S315E07A9CF00000000000000000000000000000000004 +S315E07A9D0000000000000000000000000000000000F3 +S315E07A9D1000000000000000000000000000000000E3 +S315E07A9D2000000000000000000000003E490000004C +S315E07A9D3000000000000000000000000000000000C3 +S315E07A9D4000000000000000000000000000000000B3 +S315E07A9D5000000000000000000000000000000000A3 +S315E07A9D600000000000000000000000000000000093 +S315E07A9D700000000000000000000000000000000083 +S315E07A9D800000000000000000000000000000000073 +S315E07A9D900000000000000000000000000000000063 +S315E07A9DA00000000000000000000000000000000053 +S315E07A9DB00000000000000000000000000000000043 +S315E07A9DC00000000000000000000000000000000033 +S315E07A9DD00000000000000000000000000000000023 +S315E07A9DE00000000000000000000000000000000013 +S315E07A9DF00000000000000000000000000000000003 +S315E07A9E0000000000000000000000000000000000F2 +S315E07A9E1000000000000000000000000000000000E2 +S315E07A9E2000000000000000000000000000000000D2 +S315E07A9E3000000000000000000000000000000000C2 +S315E07A9E4000000000000000000000000000000000B2 +S315E07A9E5000000000000000000000000000000000A2 +S315E07A9E600000000000000000000000000000000092 +S315E07A9E700000000000000000000000000000000082 +S315E07A9E800000000000000000000000000000000072 +S315E07A9E900000000000000000000000000000000062 +S315E07A9EA0000000003E4900000000000000000000CB +S315E07A9EB00000000000000000000000000000000042 +S315E07A9EC00000000000000000000000000000000032 +S315E07A9ED00000000000000000000000000000000022 +S315E07A9EE00000000000000000000000000000000012 +S315E07A9EF00000000000000000000000000000000002 +S315E07A9F0000000000000000000000000000000000F1 +S315E07A9F1000000000000000000000000000000000E1 +S315E07A9F2000000000000000000000000000000000D1 +S315E07A9F3000000000000000000000000000000000C1 +S315E07A9F4000000000000000000000000000000000B1 +S315E07A9F5000000000000000000000000000000000A1 +S315E07A9F600000000000000000000000000000000091 +S315E07A9F700000000000000000000000000000000081 +S315E07A9F800000000000000000000000000000000071 +S315E07A9F900000000000000000000000000000000061 +S315E07A9FA00000000000000000000000000000000051 +S315E07A9FB00000000000000000000000000000000041 +S315E07A9FC00000000000000000000000000000000031 +S315E07A9FD00000000000000000000000000000000021 +S315E07A9FE00000000000000000000000000000000011 +S315E07A9FF00000000000000000000000000000000001 +S315E07AA00000000000000000000000000000000000F0 +S315E07AA010000000000000000000000000003E490059 +S315E07AA02000000000000000000000000000000000D0 +S315E07AA03000000000000000000000000000000000C0 +S315E07AA04000000000000000000000000000000000B0 +S315E07AA05000000000000000000000000000000000A0 +S315E07AA0600000000000000000000000000000000090 +S315E07AA0700000000000000000000000000000000080 +S315E07AA0800000000000000000000000000000000070 +S315E07AA0900000000000000000000000000000000060 +S315E07AA0A00000000000000000000000000000000050 +S315E07AA0B00000000000000000000000000000000040 +S315E07AA0C00000000000000000000000000000000030 +S315E07AA0D00000000000000000000000000000000020 +S315E07AA0E00000000000000000000000000000000010 +S315E07AA0F00000000000000000000000000000000000 +S315E07AA10000000000000000000000000000000000EF +S315E07AA11000000000000000000000000000000000DF +S315E07AA12000000000000000000000000000000000CF +S315E07AA13000000000000000000000000000000000BF +S315E07AA14000000000000000000000000000000000AF +S315E07AA150000000000000000000000000000000009F +S315E07AA160000000000000000000000000000000008F +S315E07AA170000000000000000000000000000000007F +S315E07AA180000000000000000000000000000000006F +S315E07AA1900000000000003E490000000000000000D8 +S315E07AA1A0000000000000000000000000000000004F +S315E07AA1B0000000000000000000000000000000003F +S315E07AA1C0000000000000000000000000000000002F +S315E07AA1D0000000000000000000000000000000001F +S315E07AA1E0000000000000000000000000000000000F +S315E07AA1F000000000000000000000000000000000FF +S315E07AA20000000000000000000000000000000000EE +S315E07AA21000000000000000000000000000000000DE +S315E07AA22000000000000000000000000000000000CE +S315E07AA23000000000000000000000000000000000BE +S315E07AA24000000000000000000000000000000000AE +S315E07AA250000000000000000000000000000000009E +S315E07AA260000000000000000000000000000000008E +S315E07AA270000000000000000000000000000000007E +S315E07AA280000000000000000000000000000000006E +S315E07AA290000000000000000000000000000000005E +S315E07AA2A0000000000000000000000000000000004E +S315E07AA2B0000000000000000000000000000000003E +S315E07AA2C0000000000000000000000000000000002E +S315E07AA2D0000000000000000000000000000000001E +S315E07AA2E0000000000000000000000000000000000E +S315E07AA2F000000000000000000000000000000000FE +S315E07AA3000000000000000000000000000000003EAF +S315E07AA3104900000000000000000000000000000094 +S315E07AA32000000000000000000000000000000000CD +S315E07AA33000000000000000000000000000000000BD +S315E07AA34000000000000000000000000000000000AD +S315E07AA350000000000000000000000000000000009D +S315E07AA360000000000000000000000000000000008D +S315E07AA370000000000000000000000000000000007D +S315E07AA380000000000000000000000000000000006D +S315E07AA390000000000000000000000000000000005D +S315E07AA3A0000000000000000000000000000000004D +S315E07AA3B0000000000000000000000000000000003D +S315E07AA3C0000000000000000000000000000000002D +S315E07AA3D0000000000000000000000000000000001D +S315E07AA3E0000000000000000000000000000000000D +S315E07AA3F000000000000000000000000000000000FD +S315E07AA40000000000000000000000000000000000EC +S315E07AA41000000000000000000000000000000000DC +S315E07AA42000000000000000000000000000000000CC +S315E07AA43000000000000000000000000000000000BC +S315E07AA44000000000000000000000000000000000AC +S315E07AA450000000000000000000000000000000009C +S315E07AA460000000000000000000000000000000008C +S315E07AA470000000000000000000000000000000007C +S315E07AA48000000000000000003E49000000000000E5 +S315E07AA490000000000000000000000000000000005C +S315E07AA4A0000000000000000000000000000000004C +S315E07AA4B0000000000000000000000000000000003C +S315E07AA4C0000000000000000000000000000000002C +S315E07AA4D0000000000000000000000000000000001C +S315E07AA4E0000000000000000000000000000000000C +S315E07AA4F000000000000000000000000000000000FC +S315E07AA50000000000000000000000000000000000EB +S315E07AA51000000000000000000000000000000000DB +S315E07AA52000000000000000000000000000000000CB +S315E07AA53000000000000000000000000000000000BB +S315E07AA54000000000000000000000000000000000AB +S315E07AA550000000000000000000000000000000009B +S315E07AA560000000000000000000000000000000008B +S315E07AA570000000000000000000000000000000007B +S315E07AA580000000000000000000000000000000006B +S315E07AA590000000000000000000000000000000005B +S315E07AA5A0000000000000000000000000000000004B +S315E07AA5B0000000000000000000000000000000003B +S315E07AA5C0000000000000000000000000000000002B +S315E07AA5D0000000000000000000000000000000001B +S315E07AA5E0000000000000000000000000000000000B +S315E07AA5F000000000000000000000000000000000FB +S315E07AA600003E490000000000000000000000000063 +S315E07AA61000000000000000000000000000000000DA +S315E07AA62000000000000000000000000000000000CA +S315E07AA63000000000000000000000000000000000BA +S315E07AA64000000000000000000000000000000000AA +S315E07AA650000000000000000000000000000000009A +S315E07AA660000000000000000000000000000000008A +S315E07AA670000000000000000000000000000000007A +S315E07AA680000000000000000000000000000000006A +S315E07AA690000000000000000000000000000000005A +S315E07AA6A0000000000000000000000000000000004A +S315E07AA6B0000000000000000000000000000000003A +S315E07AA6C0000000000000000000000000000000002A +S315E07AA6D0000000000000000000000000000000001A +S315E07AA6E0000000000000000000000000000000000A +S315E07AA6F000000000000000000000000000000000FA +S315E07AA70000000000000000000000000000000000E9 +S315E07AA71000000000000000000000000000000000D9 +S315E07AA72000000000000000000000000000000000C9 +S315E07AA73000000000000000000000000000000000B9 +S315E07AA74000000000000000000000000000000000A9 +S315E07AA7500000000000000000000000000000000099 +S315E07AA7600000000000000000000000000000000089 +S315E07AA770000000000000000000003E4900000000F2 +S315E07AA7800000000000000000000000000000000069 +S315E07AA7900000000000000000000000000000000059 +S315E07AA7A00000000000000000000000000000000049 +S315E07AA7B00000000000000000000000000000000039 +S315E07AA7C00000000000000000000000000000000029 +S315E07AA7D00000000000000000000000000000000019 +S315E07AA7E00000000000000000000000000000000009 +S315E07AA7F000000000000000000000000000000000F9 +S315E07AA80000000000000000000000000000000000E8 +S315E07AA81000000000000000000000000000000000D8 +S315E07AA82000000000000000000000000000000000C8 +S315E07AA83000000000000000000000000000000000B8 +S315E07AA84000000000000000000000000000000000A8 +S315E07AA8500000000000000000000000000000000098 +S315E07AA8600000000000000000000000000000000088 +S315E07AA8700000000000000000000000000000000078 +S315E07AA8800000000000000000000000000000000068 +S315E07AA8900000000000000000000000000000000058 +S315E07AA8A00000000000000000000000000000000048 +S315E07AA8B00000000000000000000000000000000038 +S315E07AA8C00000000000000000000000000000000028 +S315E07AA8D00000000000000000000000000000000018 +S315E07AA8E00000000000000000000000000000000008 +S315E07AA8F00000003E49000000000000000000000071 +S315E07AA90000000000000000000000000000000000E7 +S315E07AA91000000000000000000000000000000000D7 +S315E07AA92000000000000000000000000000000000C7 +S315E07AA93000000000000000000000000000000000B7 +S315E07AA94000000000000000000000000000000000A7 +S315E07AA9500000000000000000000000000000000097 +S315E07AA9600000000000000000000000000000000087 +S315E07AA9700000000000000000000000000000000077 +S315E07AA9800000000000000000000000000000000067 +S315E07AA9900000000000000000000000000000000057 +S315E07AA9A00000000000000000000000000000000047 +S315E07AA9B00000000000000000000000000000000037 +S315E07AA9C00000000000000000000000000000000027 +S315E07AA9D00000000000000000000000000000000017 +S315E07AA9E00000000000000000000000000000000007 +S315E07AA9F000000000000000000000000000000000F7 +S315E07AAA0000000000000000000000000000000000E6 +S315E07AAA1000000000000000000000000000000000D6 +S315E07AAA2000000000000000000000000000000000C6 +S315E07AAA3000000000000000000000000000000000B6 +S315E07AAA4000000000000000000000000000000000A6 +S315E07AAA500000000000000000000000000000000096 +S315E07AAA600000000000000000000000003E490000FF +S315E07AAA700000000000000000000000000000000076 +S315E07AAA800000000000000000000000000000000066 +S315E07AAA900000000000000000000000000000000056 +S315E07AAAA00000000000000000000000000000000046 +S315E07AAAB00000000000000000000000000000000036 +S315E07AAAC00000000000000000000000000000000026 +S315E07AAAD00000000000000000000000000000000016 +S315E07AAAE00000000000000000000000000000000006 +S315E07AAAF000000000000000000000000000000000F6 +S315E07AAB0000000000000000000000000000000000E5 +S315E07AAB1000000000000000000000000000000000D5 +S315E07AAB2000000000000000000000000000000000C5 +S315E07AAB3000000000000000000000000000000000B5 +S315E07AAB4000000000000000000000000000000000A5 +S315E07AAB500000000000000000000000000000000095 +S315E07AAB600000000000000000000000000000000085 +S315E07AAB700000000000000000000000000000000075 +S315E07AAB800000000000000000000000000000000065 +S315E07AAB900000000000000000000000000000000055 +S315E07AABA00000000000000000000000000000000045 +S315E07AABB00000000000000000000000000000000035 +S315E07AABC00000000000000000000000000000000025 +S315E07AABD00000000000000000000000000000000015 +S315E07AABE000000000003E490000000000000000007E +S315E07AABF000000000000000000000000000000000F5 +S315E07AAC0000000000000000000000000000000000E4 +S315E07AAC1000000000000000000000000000000000D4 +S315E07AAC2000000000000000000000000000000000C4 +S315E07AAC3000000000000000000000000000000000B4 +S315E07AAC4000000000000000000000000000000000A4 +S315E07AAC500000000000000000000000000000000094 +S315E07AAC600000000000000000000000000000000084 +S315E07AAC700000000000000000000000000000000074 +S315E07AAC800000000000000000000000000000000064 +S315E07AAC900000000000000000000000000000000054 +S315E07AACA00000000000000000000000000000000044 +S315E07AACB00000000000000000000000000000000034 +S315E07AACC00000000000000000000000000000000024 +S315E07AACD00000000000000000000000000000000014 +S315E07AACE00000000000000000000000000000000004 +S315E07AACF000000000000000000000000000000000F4 +S315E07AAD0000000000000000000000000000000000E3 +S315E07AAD1000000000000000000000000000000000D3 +S315E07AAD2000000000000000000000000000000000C3 +S315E07AAD3000000000000000000000000000000000B3 +S315E07AAD4000000000000000000000000000000000A3 +S315E07AAD5000000000000000000000000000003E490C +S315E07AAD600000000000000000000000000000000083 +S315E07AAD700000000000000000000000000000000073 +S315E07AAD800000000000000000000000000000000063 +S315E07AAD900000000000000000000000000000000053 +S315E07AADA00000000000000000000000000000000043 +S315E07AADB00000000000000000000000000000000033 +S315E07AADC00000000000000000000000000000000023 +S315E07AADD00000000000000000000000000000000013 +S315E07AADE00000000000000000000000000000000003 +S315E07AADF000000000000000000000000000000000F3 +S315E07AAE0000000000000000000000000000000000E2 +S315E07AAE1000000000000000000000000000000000D2 +S315E07AAE2000000000000000000000000000000000C2 +S315E07AAE3000000000000000000000000000000000B2 +S315E07AAE4000000000000000000000000000000000A2 +S315E07AAE500000000000000000000000000000000092 +S315E07AAE600000000000000000000000000000000082 +S315E07AAE700000000000000000000000000000000072 +S315E07AAE800000000000000000000000000000000062 +S315E07AAE900000000000000000000000000000000052 +S315E07AAEA00000000000000000000000000000000042 +S315E07AAEB00000000000000000000000000000000032 +S315E07AAEC00000000000000000000000000000000022 +S315E07AAED0000000000000003E49000000000000008B +S315E07AAEE00000000000000000000000000000000002 +S315E07AAEF000000000000000000000000000000000F2 +S315E07AAF0000000000000000000000000000000000E1 +S315E07AAF1000000000000000000000000000000000D1 +S315E07AAF2000000000000000000000000000000000C1 +S315E07AAF3000000000000000000000000000000000B1 +S315E07AAF4000000000000000000000000000000000A1 +S315E07AAF500000000000000000000000000000000091 +S315E07AAF600000000000000000000000000000000081 +S315E07AAF700000000000000000000000000000000071 +S315E07AAF800000000000000000000000000000000061 +S315E07AAF900000000000000000000000000000000051 +S315E07AAFA00000000000000000000000000000000041 +S315E07AAFB00000000000000000000000000000000031 +S315E07AAFC00000000000000000000000000000000021 +S315E07AAFD00000000000000000000000000000000011 +S315E07AAFE00000000000000000000000000000000001 +S315E07AAFF000000000000000000000000000000000F1 +S315E07AB00000000000000000000000000000000000E0 +S315E07AB01000000000000000000000000000000000D0 +S315E07AB02000000000000000000000000000000000C0 +S315E07AB03000000000000000000000000000000000B0 +S315E07AB04000000000000000000000000000000000A0 +S315E07AB0503E49000000000000000000000000000009 +S315E07AB0600000000000000000000000000000000080 +S315E07AB0700000000000000000000000000000000070 +S315E07AB0800000000000000000000000000000000060 +S315E07AB0900000000000000000000000000000000050 +S315E07AB0A00000000000000000000000000000000040 +S315E07AB0B00000000000000000000000000000000030 +S315E07AB0C00000000000000000000000000000000020 +S315E07AB0D00000000000000000000000000000000010 +S315E07AB0E00000000000000000000000000000000000 +S315E07AB0F000000000000000000000000000000000F0 +S315E07AB10000000000000000000000000000000000DF +S315E07AB11000000000000000000000000000000000CF +S315E07AB12000000000000000000000000000000000BF +S315E07AB13000000000000000000000000000000000AF +S315E07AB140000000000000000000000000000000009F +S315E07AB150000000000000000000000000000000008F +S315E07AB160000000000000000000000000000000007F +S315E07AB170000000000000000000000000000000006F +S315E07AB180000000000000000000000000000000005F +S315E07AB190000000000000000000000000000000004F +S315E07AB1A0000000000000000000000000000000003F +S315E07AB1B0000000000000000000000000000000002F +S315E07AB1C00000000000000000003E49000000000098 +S315E07AB1D0000000000000000000000000000000000F +S315E07AB1E000000000000000000000000000000000FF +S315E07AB1F000000000000000000000000000000000EF +S315E07AB20000000000000000000000000000000000DE +S315E07AB21000000000000000000000000000000000CE +S315E07AB22000000000000000000000000000000000BE +S315E07AB23000000000000000000000000000000000AE +S315E07AB240000000000000000000000000000000009E +S315E07AB250000000000000000000000000000000008E +S315E07AB260000000000000000000000000000000007E +S315E07AB270000000000000000000000000000000006E +S315E07AB280000000000000000000000000000000005E +S315E07AB290000000000000000000000000000000004E +S315E07AB2A0000000000000000000000000000000003E +S315E07AB2B0000000000000000000000000000000002E +S315E07AB2C0000000000000000000000000000000001E +S315E07AB2D0000000000000000000000000000000000E +S315E07AB2E000000000000000000000000000000000FE +S315E07AB2F000000000000000000000000000000000EE +S315E07AB30000000000000000000000000000000000DD +S315E07AB31000000000000000000000000000000000CD +S315E07AB32000000000000000000000000000000000BD +S315E07AB33000000000000000000000000000000000AD +S315E07AB34000003E4900000000000000000000000016 +S315E07AB350000000000000000000000000000000008D +S315E07AB360000000000000000000000000000000007D +S315E07AB370000000000000000000000000000000006D +S315E07AB380000000000000000000000000000000005D +S315E07AB390000000000000000000000000000000004D +S315E07AB3A0000000000000000000000000000000003D +S315E07AB3B0000000000000000000000000000000002D +S315E07AB3C0000000000000000000000000000000001D +S315E07AB3D0000000000000000000000000000000000D +S315E07AB3E000000000000000000000000000000000FD +S315E07AB3F000000000000000000000000000000000ED +S315E07AB40000000000000000000000000000000000DC +S315E07AB41000000000000000000000000000000000CC +S315E07AB42000000000000000000000000000000000BC +S315E07AB43000000000000000000000000000000000AC +S315E07AB440000000000000000000000000000000009C +S315E07AB450000000000000000000000000000000008C +S315E07AB460000000000000000000000000000000007C +S315E07AB470000000000000000000000000000000006C +S315E07AB480000000000000000000000000000000005C +S315E07AB490000000000000000000000000000000004C +S315E07AB4A0000000000000000000000000000000003C +S315E07AB4B000000000000000000000003E49000000A5 +S315E07AB4C0000000000000000000000000000000001C +S315E07AB4D0000000000000000000000000000000000C +S315E07AB4E000000000000000000000000000000000FC +S315E07AB4F000000000000000000000000000000000EC +S315E07AB50000000000000000000000000000000000DB +S315E07AB51000000000000000000000000000000000CB +S315E07AB52000000000000000000000000000000000BB +S315E07AB53000000000000000000000000000000000AB +S315E07AB540000000000000000000000000000000009B +S315E07AB550000000000000000000000000000000008B +S315E07AB560000000000000000000000000000000007B +S315E07AB570000000000000000000000000000000006B +S315E07AB580000000000000000000000000000000005B +S315E07AB590000000000000000000000000000000004B +S315E07AB5A0000000000000000000000000000000003B +S315E07AB5B0000000000000000000000000000000002B +S315E07AB5C0000000000000000000000000000000001B +S315E07AB5D0000000000000000000000000000000000B +S315E07AB5E000000000000000000000000000000000FB +S315E07AB5F000000000000000000000000000000000EB +S315E07AB60000000000000000000000000000000000DA +S315E07AB61000000000000000000000000000000000CA +S315E07AB62000000000000000000000000000000000BA +S315E07AB630000000003E490000000000000000000023 +S315E07AB640000000000000000000000000000000009A +S315E07AB650000000000000000000000000000000008A +S315E07AB660000000000000000000000000000000007A +S315E07AB670000000000000000000000000000000006A +S315E07AB680000000000000000000000000000000005A +S315E07AB690000000000000000000000000000000004A +S315E07AB6A0000000000000000000000000000000003A +S315E07AB6B0000000000000000000000000000000002A +S315E07AB6C0000000000000000000000000000000001A +S315E07AB6D0000000000000000000000000000000000A +S315E07AB6E000000000000000000000000000000000FA +S315E07AB6F000000000000000000000000000000000EA +S315E07AB70000000000000000000000000000000000D9 +S315E07AB71000000000000000000000000000000000C9 +S315E07AB72000000000000000000000000000000000B9 +S315E07AB73000000000000000000000000000000000A9 +S315E07AB7400000000000000000000000000000000099 +S315E07AB7500000000000000000000000000000000089 +S315E07AB7600000000000000000000000000000000079 +S315E07AB7700000000000000000000000000000000069 +S315E07AB7800000000000000000000000000000000059 +S315E07AB7900000000000000000000000000000000049 +S315E07AB7A0000000000000000000000000003E4900B2 +S315E07AB7B00000000000000000000000000000000029 +S315E07AB7C00000000000000000000000000000000019 +S315E07AB7D00000000000000000000000000000000009 +S315E07AB7E000000000000000000000000000000000F9 +S315E07AB7F000000000000000000000000000000000E9 +S315E07AB80000000000000000000000000000000000D8 +S315E07AB81000000000000000000000000000000000C8 +S315E07AB82000000000000000000000000000000000B8 +S315E07AB83000000000000000000000000000000000A8 +S315E07AB8400000000000000000000000000000000098 +S315E07AB8500000000000000000000000000000000088 +S315E07AB8600000000000000000000000000000000078 +S315E07AB8700000000000000000000000000000000068 +S315E07AB8800000000000000000000000000000000058 +S315E07AB8900000000000000000000000000000000048 +S315E07AB8A00000000000000000000000000000000038 +S315E07AB8B00000000000000000000000000000000028 +S315E07AB8C00000000000000000000000000000000018 +S315E07AB8D00000000000000000000000000000000008 +S315E07AB8E000000000000000000000000000000000F8 +S315E07AB8F000000000000000000000000000000000E8 +S315E07AB90000000000000000000000000000000000D7 +S315E07AB91000000000000000000000000000000000C7 +S315E07AB9200000000000003E49000000000000000030 +S315E07AB93000000000000000000000000000000000A7 +S315E07AB9400000000000000000000000000000000097 +S315E07AB9500000000000000000000000000000000087 +S315E07AB9600000000000000000000000000000000077 +S315E07AB9700000000000000000000000000000000067 +S315E07AB9800000000000000000000000000000000057 +S315E07AB9900000000000000000000000000000000047 +S315E07AB9A00000000000000000000000000000000037 +S315E07AB9B00000000000000000000000000000000027 +S315E07AB9C00000000000000000000000000000000017 +S315E07AB9D00000000000000000000000000000000007 +S315E07AB9E000000000000000000000000000000000F7 +S315E07AB9F000000000000000000000000000000000E7 +S315E07ABA0000000000000000000000000000000000D6 +S315E07ABA1000000000000000000000000000000000C6 +S315E07ABA2000000000000000000000000000000000B6 +S315E07ABA3000000000000000000000000000000000A6 +S315E07ABA400000000000000000000000000000000096 +S315E07ABA500000000000000000000000000000000086 +S315E07ABA600000000000000000000000000000000076 +S315E07ABA700000000000000000000000000000000066 +S315E07ABA800000000000000000000000000000000056 +S315E07ABA900000000000000000000000000000003E08 +S315E07ABAA049000000000000000000000000000000ED +S315E07ABAB00000000000000000000000000000000026 +S315E07ABAC00000000000000000000000000000000016 +S315E07ABAD00000000000000000000000000000000006 +S315E07ABAE000000000000000000000000000000000F6 +S315E07ABAF000000000000000000000000000000000E6 +S315E07ABB0000000000000000000000000000000000D5 +S315E07ABB1000000000000000000000000000000000C5 +S315E07ABB2000000000000000000000000000000000B5 +S315E07ABB3000000000000000000000000000000000A5 +S315E07ABB400000000000000000000000000000000095 +S315E07ABB500000000000000000000000000000000085 +S315E07ABB600000000000000000000000000000000075 +S315E07ABB700000000000000000000000000000000065 +S315E07ABB800000000000000000000000000000000055 +S315E07ABB900000000000000000000000000000000045 +S315E07ABBA00000000000000000000000000000000035 +S315E07ABBB00000000000000000000000000000000025 +S315E07ABBC00000000000000000000000000000000015 +S315E07ABBD00000000000000000000000000000000005 +S315E07ABBE000000000000000000000000000000000F5 +S315E07ABBF000000000000000000000000000000000E5 +S315E07ABC0000000000000000000000000000000000D4 +S315E07ABC1000000000000000003E490000000000003D +S315E07ABC2000000000000000000000000000000000B4 +S315E07ABC3000000000000000000000000000000000A4 +S315E07ABC400000000000000000000000000000000094 +S315E07ABC500000000000000000000000000000000084 +S315E07ABC600000000000000000000000000000000074 +S315E07ABC700000000000000000000000000000000064 +S315E07ABC800000000000000000000000000000000054 +S315E07ABC900000000000000000000000000000000044 +S315E07ABCA00000000000000000000000000000000034 +S315E07ABCB00000000000000000000000000000000024 +S315E07ABCC00000000000000000000000000000000014 +S315E07ABCD00000000000000000000000000000000004 +S315E07ABCE000000000000000000000000000000000F4 +S315E07ABCF000000000000000000000000000000000E4 +S315E07ABD0000000000000000000000000000000000D3 +S315E07ABD1000000000000000000000000000000000C3 +S315E07ABD2000000000000000000000000000000000B3 +S315E07ABD3000000000000000000000000000000000A3 +S315E07ABD400000000000000000000000000000000093 +S315E07ABD500000000000000000000000000000000083 +S315E07ABD600000000000000000000000000000000073 +S315E07ABD700000000000000000000000000000000063 +S315E07ABD800000000000000000000000000000000053 +S315E07ABD90003E4900000000000000000000000000BC +S315E07ABDA00000000000000000000000000000000033 +S315E07ABDB00000000000000000000000000000000023 +S315E07ABDC00000000000000000000000000000000013 +S315E07ABDD00000000000000000000000000000000003 +S315E07ABDE000000000000000000000000000000000F3 +S315E07ABDF000000000000000000000000000000000E3 +S315E07ABE0000000000000000000000000000000000D2 +S315E07ABE1000000000000000000000000000000000C2 +S315E07ABE2000000000000000000000000000000000B2 +S315E07ABE3000000000000000000000000000000000A2 +S315E07ABE400000000000000000000000000000000092 +S315E07ABE500000000000000000000000000000000082 +S315E07ABE600000000000000000000000000000000072 +S315E07ABE700000000000000000000000000000000062 +S315E07ABE800000000000000000000000000000000052 +S315E07ABE900000000000000000000000000000000042 +S315E07ABEA00000000000000000000000000000000032 +S315E07ABEB00000000000000000000000000000000022 +S315E07ABEC00000000000000000000000000000000012 +S315E07ABED00000000000000000000000000000000002 +S315E07ABEE000000000000000000000000000000000F2 +S315E07ABEF000000000000000000000000000000000E2 +S315E07ABF00000000000000000000003E49000000004A +S315E07ABF1000000000000000000000000000000000C1 +S315E07ABF2000000000000000000000000000000000B1 +S315E07ABF3000000000000000000000000000000000A1 +S315E07ABF400000000000000000000000000000000091 +S315E07ABF500000000000000000000000000000000081 +S315E07ABF600000000000000000000000000000000071 +S315E07ABF700000000000000000000000000000000061 +S315E07ABF800000000000000000000000000000000051 +S315E07ABF900000000000000000000000000000000041 +S315E07ABFA00000000000000000000000000000000031 +S315E07ABFB00000000000000000000000000000000021 +S315E07ABFC00000000000000000000000000000000011 +S315E07ABFD00000000000000000000000000000000001 +S315E07ABFE000000000000000000000000000000000F1 +S315E07ABFF000000000000000000000000000000000E1 +S315E07AC00000000000000000000000000000000000D0 +S315E07AC01000000000000000000000000000000000C0 +S315E07AC02000000000000000000000000000000000B0 +S315E07AC03000000000000000000000000000000000A0 +S315E07AC0400000000000000000000000000000000090 +S315E07AC0500000000000000000000000000000000080 +S315E07AC0600000000000000000000000000000000070 +S315E07AC0700000000000000000000000000000000060 +S315E07AC0800000003E490000000000000000000000C9 +S315E07AC0900000000000000000000000000000000040 +S315E07AC0A00000000000000000000000000000000030 +S315E07AC0B00000000000000000000000000000000020 +S315E07AC0C00000000000000000000000000000000010 +S315E07AC0D00000000000000000000000000000000000 +S315E07AC0E000000000000000000000000000000000F0 +S315E07AC0F000000000000000000000000000000000E0 +S315E07AC10000000000000000000000000000000000CF +S315E07AC11000000000000000000000000000000000BF +S315E07AC12000000000000000000000000000000000AF +S315E07AC130000000000000000000000000000000009F +S315E07AC140000000000000000000000000000000008F +S315E07AC150000000000000000000000000000000007F +S315E07AC160000000000000000000000000000000006F +S315E07AC170000000000000000000000000000000005F +S315E07AC180000000000000000000000000000000004F +S315E07AC190000000000000000000000000000000003F +S315E07AC1A0000000000000000000000000000000002F +S315E07AC1B0000000000000000000000000000000001F +S315E07AC1C0000000000000000000000000000000000F +S315E07AC1D000000000000000000000000000000000FF +S315E07AC1E000000000000000000000000000000000EF +S315E07AC1F00000000000000000000000003E49000058 +S315E07AC20000000000000000000000000000000000CE +S315E07AC21000000000000000000000000000000000BE +S315E07AC22000000000000000000000000000000000AE +S315E07AC230000000000000000000000000000000009E +S315E07AC240000000000000000000000000000000008E +S315E07AC250000000000000000000000000000000007E +S315E07AC260000000000000000000000000000000006E +S315E07AC270000000000000000000000000000000005E +S315E07AC280000000000000000000000000000000004E +S315E07AC290000000000000000000000000000000003E +S315E07AC2A0000000000000000000000000000000002E +S315E07AC2B0000000000000000000000000000000001E +S315E07AC2C0000000000000000000000000000000000E +S315E07AC2D000000000000000000000000000000000FE +S315E07AC2E000000000000000000000000000000000EE +S315E07AC2F000000000000000000000000000000000DE +S315E07AC30000000000000000000000000000000000CD +S315E07AC31000000000000000000000000000000000BD +S315E07AC32000000000000000000000000000000000AD +S315E07AC330000000000000000000000000000000009D +S315E07AC340000000000000000000000000000000008D +S315E07AC350000000000000000000000000000000007D +S315E07AC360000000000000000000000000000000006D +S315E07AC37000000000003E49000000000000000000D6 +S315E07AC380000000000000000000000000000000004D +S315E07AC390000000000000000000000000000000003D +S315E07AC3A0000000000000000000000000000000002D +S315E07AC3B0000000000000000000000000000000001D +S315E07AC3C0000000000000000000000000000000000D +S315E07AC3D000000000000000000000000000000000FD +S315E07AC3E000000000000000000000000000000000ED +S315E07AC3F000000000000000000000000000000000DD +S315E07AC40000000000000000000000000000000000CC +S315E07AC41000000000000000000000000000000000BC +S315E07AC42000000000000000000000000000000000AC +S315E07AC430000000000000000000000000000000009C +S315E07AC440000000000000000000000000000000008C +S315E07AC450000000000000000000000000000000007C +S315E07AC460000000000000000000000000000000006C +S315E07AC470000000000000000000000000000000005C +S315E07AC480000000000000000000000000000000004C +S315E07AC490000000000000000000000000000000003C +S315E07AC4A0000000000000000000000000000000002C +S315E07AC4B0000000000000000000000000000000001C +S315E07AC4C0000000000000000000000000000000000C +S315E07AC4D000000000000000000000000000000000FC +S315E07AC4E000000000000000000000000000003E4965 +S315E07AC4F000000000000000000000000000000000DC +S315E07AC50000000000000000000000000000000000CB +S315E07AC51000000000000000000000000000000000BB +S315E07AC52000000000000000000000000000000000AB +S315E07AC530000000000000000000000000000000009B +S315E07AC540000000000000000000000000000000008B +S315E07AC550000000000000000000000000000000007B +S315E07AC560000000000000000000000000000000006B +S315E07AC570000000000000000000000000000000005B +S315E07AC580000000000000000000000000000000004B +S315E07AC590000000000000000000000000000000003B +S315E07AC5A0000000000000000000000000000000002B +S315E07AC5B0000000000000000000000000000000001B +S315E07AC5C0000000000000000000000000000000000B +S315E07AC5D000000000000000000000000000000000FB +S315E07AC5E000000000000000000000000000000000EB +S315E07AC5F000000000000000000000000000000000DB +S315E07AC60000000000000000000000000000000000CA +S315E07AC61000000000000000000000000000000000BA +S315E07AC62000000000000000000000000000000000AA +S315E07AC630000000000000000000000000000000009A +S315E07AC640000000000000000000000000000000008A +S315E07AC650000000000000000000000000000000007A +S315E07AC660000000000000003E4900000000000000E3 +S315E07AC670000000000000000000000000000000005A +S315E07AC680000000000000000000000000000000004A +S315E07AC690000000000000000000000000000000003A +S315E07AC6A0000000000000000000000000000000002A +S315E07AC6B0000000000000000000000000000000001A +S315E07AC6C0000000000000000000000000000000000A +S315E07AC6D000000000000000000000000000000000FA +S315E07AC6E000000000000000000000000000000000EA +S315E07AC6F000000000000000000000000000000000DA +S315E07AC70000000000000000000000000000000000C9 +S315E07AC71000000000000000000000000000000000B9 +S315E07AC72000000000000000000000000000000000A9 +S315E07AC7300000000000000000000000000000000099 +S315E07AC7400000000000000000000000000000000089 +S315E07AC7500000000000000000000000000000000079 +S315E07AC7600000000000000000000000000000000069 +S315E07AC7700000000000000000000000000000000059 +S315E07AC7800000000000000000000000000000000049 +S315E07AC7900000000000000000000000000000000039 +S315E07AC7A00000000000000000000000000000000029 +S315E07AC7B00000000000000000000000000000000019 +S315E07AC7C00000000000000000000000000000000009 +S315E07AC7D000000000000000000000000000000000F9 +S315E07AC7E03E49000000000000000000000000000062 +S315E07AC7F000000000000000000000000000000000D9 +S315E07AC80000000000000000000000000000000000C8 +S315E07AC81000000000000000000000000000000000B8 +S315E07AC82000000000000000000000000000000000A8 +S315E07AC8300000000000000000000000000000000098 +S315E07AC8400000000000000000000000000000000088 +S315E07AC8500000000000000000000000000000000078 +S315E07AC8600000000000000000000000000000000068 +S315E07AC8700000000000000000000000000000000058 +S315E07AC8800000000000000000000000000000000048 +S315E07AC8900000000000000000000000000000000038 +S315E07AC8A00000000000000000000000000000000028 +S315E07AC8B00000000000000000000000000000000018 +S315E07AC8C00000000000000000000000000000000008 +S315E07AC8D000000000000000000000000000000000F8 +S315E07AC8E000000000000000000000000000000000E8 +S315E07AC8F000000000000000000000000000000000D8 +S315E07AC90000000000000000000000000000000000C7 +S315E07AC91000000000000000000000000000000000B7 +S315E07AC92000000000000000000000000000000000A7 +S315E07AC9300000000000000000000000000000000097 +S315E07AC9400000000000000000000000000000000087 +S315E07AC9500000000000000000003E490000000000F0 +S315E07AC9600000000000000000000000000000000067 +S315E07AC9700000000000000000000000000000000057 +S315E07AC9800000000000000000000000000000000047 +S315E07AC9900000000000000000000000000000000037 +S315E07AC9A00000000000000000000000000000000027 +S315E07AC9B00000000000000000000000000000000017 +S315E07AC9C00000000000000000000000000000000007 +S315E07AC9D000000000000000000000000000000000F7 +S315E07AC9E000000000000000000000000000000000E7 +S315E07AC9F000000000000000000000000000000000D7 +S315E07ACA0000000000000000000000000000000000C6 +S315E07ACA1000000000000000000000000000000000B6 +S315E07ACA2000000000000000000000000000000000A6 +S315E07ACA300000000000000000000000000000000096 +S315E07ACA400000000000000000000000000000000086 +S315E07ACA500000000000000000000000000000000076 +S315E07ACA600000000000000000000000000000000066 +S315E07ACA700000000000000000000000000000000056 +S315E07ACA800000000000000000000000000000000046 +S315E07ACA900000000000000000000000000000000036 +S315E07ACAA00000000000000000000000000000000026 +S315E07ACAB00000000000000000000000000000000016 +S315E07ACAC00000000000000000000000000000000006 +S315E07ACAD000003E490000000000000000000000006F +S315E07ACAE000000000000000000000000000000000E6 +S315E07ACAF000000000000000000000000000000000D6 +S315E07ACB0000000000000000000000000000000000C5 +S315E07ACB1000000000000000000000000000000000B5 +S315E07ACB2000000000000000000000000000000000A5 +S315E07ACB300000000000000000000000000000000095 +S315E07ACB400000000000000000000000000000000085 +S315E07ACB500000000000000000000000000000000075 +S315E07ACB600000000000000000000000000000000065 +S315E07ACB700000000000000000000000000000000055 +S315E07ACB800000000000000000000000000000000045 +S315E07ACB900000000000000000000000000000000035 +S315E07ACBA00000000000000000000000000000000025 +S315E07ACBB00000000000000000000000000000000015 +S315E07ACBC00000000000000000000000000000000005 +S315E07ACBD000000000000000000000000000000000F5 +S315E07ACBE000000000000000000000000000000000E5 +S315E07ACBF000000000000000000000000000000000D5 +S315E07ACC0000000000000000000000000000000000C4 +S315E07ACC1000000000000000000000000000000000B4 +S315E07ACC2000000000000000000000000000000000A4 +S315E07ACC300000000000000000000000000000000094 +S315E07ACC4000000000000000000000003E49000000FD +S315E07ACC500000000000000000000000000000000074 +S315E07ACC600000000000000000000000000000000064 +S315E07ACC700000000000000000000000000000000054 +S315E07ACC800000000000000000000000000000000044 +S315E07ACC900000000000000000000000000000000034 +S315E07ACCA00000000000000000000000000000000024 +S315E07ACCB00000000000000000000000000000000014 +S315E07ACCC00000000000000000000000000000000004 +S315E07ACCD000000000000000000000000000000000F4 +S315E07ACCE000000000000000000000000000000000E4 +S315E07ACCF000000000000000000000000000000000D4 +S315E07ACD0000000000000000000000000000000000C3 +S315E07ACD1000000000000000000000000000000000B3 +S315E07ACD2000000000000000000000000000000000A3 +S315E07ACD300000000000000000000000000000000093 +S315E07ACD400000000000000000000000000000000083 +S315E07ACD500000000000000000000000000000000073 +S315E07ACD600000000000000000000000000000000063 +S315E07ACD700000000000000000000000000000000053 +S315E07ACD800000000000000000000000000000000043 +S315E07ACD900000000000000000000000000000000033 +S315E07ACDA00000000000000000000000000000000023 +S315E07ACDB00000000000000000000000000000000013 +S315E07ACDC0000000003E49000000000000000000007C +S315E07ACDD000000000000000000000000000000000F3 +S315E07ACDE000000000000000000000000000000000E3 +S315E07ACDF000000000000000000000000000000000D3 +S315E07ACE0000000000000000000000000000000000C2 +S315E07ACE1000000000000000000000000000000000B2 +S315E07ACE2000000000000000000000000000000000A2 +S315E07ACE300000000000000000000000000000000092 +S315E07ACE400000000000000000000000000000000082 +S315E07ACE500000000000000000000000000000000072 +S315E07ACE600000000000000000000000000000000062 +S315E07ACE700000000000000000000000000000000052 +S315E07ACE800000000000000000000000000000000042 +S315E07ACE900000000000000000000000000000000032 +S315E07ACEA00000000000000000000000000000000022 +S315E07ACEB00000000000000000000000000000000012 +S315E07ACEC00000000000000000000000000000000002 +S315E07ACED000000000000000000000000000000000F2 +S315E07ACEE000000000000000000000000000000000E2 +S315E07ACEF000000000000000000000000000000000D2 +S315E07ACF0000000000000000000000000000000000C1 +S315E07ACF1000000000000000000000000000000000B1 +S315E07ACF2000000000000000000000000000000000A1 +S315E07ACF30000000000000000000000000003E49000A +S315E07ACF400000000000000000000000000000000081 +S315E07ACF500000000000000000000000000000000071 +S315E07ACF600000000000000000000000000000000061 +S315E07ACF700000000000000000000000000000000051 +S315E07ACF800000000000000000000000000000000041 +S315E07ACF900000000000000000000000000000000031 +S315E07ACFA00000000000000000000000000000000021 +S315E07ACFB00000000000000000000000000000000011 +S315E07ACFC00000000000000000000000000000000001 +S315E07ACFD000000000000000000000000000000000F1 +S315E07ACFE000000000000000000000000000000000E1 +S315E07ACFF000000000000000000000000000000000D1 +S315E07AD00000000000000000000000000000000000C0 +S315E07AD01000000000000000000000000000000000B0 +S315E07AD02000000000000000000000000000000000A0 +S315E07AD0300000000000000000000000000000000090 +S315E07AD0400000000000000000000000000000000080 +S315E07AD0500000000000000000000000000000000070 +S315E07AD0600000000000000000000000000000000060 +S315E07AD0700000000000000000000000000000000050 +S315E07AD0800000000000000000000000000000000040 +S315E07AD0900000000000000000000000000000000030 +S315E07AD0A00000000000000000000000000000000020 +S315E07AD0B00000000000003E49000000000000000089 +S315E07AD0C00000000000000000000000000000000000 +S315E07AD0D000000000000000000000000000000000F0 +S315E07AD0E000000000000000000000000000000000E0 +S315E07AD0F000000000000000000000000000000000D0 +S315E07AD10000000000000000000000000000000000BF +S315E07AD11000000000000000000000000000000000AF +S315E07AD120000000000000000000000000000000009F +S315E07AD130000000000000000000000000000000008F +S315E07AD140000000000000000000000000000000007F +S315E07AD150000000000000000000000000000000006F +S315E07AD160000000000000000000000000000000005F +S315E07AD170000000000000000000000000000000004F +S315E07AD180000000000000000000000000000000003F +S315E07AD190000000000000000000000000000000002F +S315E07AD1A0000000000000000000000000000000001F +S315E07AD1B0000000000000000000000000000000000F +S315E07AD1C000000000000000000000000000000000FF +S315E07AD1D000000000000000000000000000000000EF +S315E07AD1E000000000000000000000000000000000DF +S315E07AD1F000000000000000000000000000000000CF +S315E07AD20000000000000000000000000000000000BE +S315E07AD21000000000000000000000000000000000AE +S315E07AD2200000000000000000000000000000003E60 +S315E07AD2304900000000000000000000000000000045 +S315E07AD240000000000000000000000000000000007E +S315E07AD250000000000000000000000000000000006E +S315E07AD260000000000000000000000000000000005E +S315E07AD270000000000000000000000000000000004E +S315E07AD280000000000000000000000000000000003E +S315E07AD290000000000000000000000000000000002E +S315E07AD2A0000000000000000000000000000000001E +S315E07AD2B0000000000000000000000000000000000E +S315E07AD2C000000000000000000000000000000000FE +S315E07AD2D000000000000000000000000000000000EE +S315E07AD2E000000000000000000000000000000000DE +S315E07AD2F000000000000000000000000000000000CE +S315E07AD30000000000000000000000000000000000BD +S315E07AD31000000000000000000000000000000000AD +S315E07AD320000000000000000000000000000000009D +S315E07AD330000000000000000000000000000000008D +S315E07AD340000000000000000000000000000000007D +S315E07AD350000000000000000000000000000000006D +S315E07AD360000000000000000000000000000000005D +S315E07AD370000000000000000000000000000000004D +S315E07AD380000000000000000000000000000000003D +S315E07AD390000000000000000000000000000000002D +S315E07AD3A000000000000000003E4900000000000096 +S315E07AD3B0000000000000000000000000000000000D +S315E07AD3C000000000000000000000000000000000FD +S315E07AD3D000000000000000000000000000000000ED +S315E07AD3E000000000000000000000000000000000DD +S315E07AD3F000000000000000000000000000000000CD +S315E07AD40000000000000000000000000000000000BC +S315E07AD41000000000000000000000000000000000AC +S315E07AD420000000000000000000000000000000009C +S315E07AD430000000000000000000000000000000008C +S315E07AD440000000000000000000000000000000007C +S315E07AD450000000000000000000000000000000006C +S315E07AD460000000000000000000000000000000005C +S315E07AD470000000000000000000000000000000004C +S315E07AD480000000000000000000000000000000003C +S315E07AD490000000000000000000000000000000002C +S315E07AD4A0000000000000000000000000000000001C +S315E07AD4B0000000000000000000000000000000000C +S315E07AD4C000000000000000000000000000000000FC +S315E07AD4D000000000000000000000000000000000EC +S315E07AD4E000000000000000000000000000000000DC +S315E07AD4F000000000000000000000000000000000CC +S315E07AD50000000000000000000000000000000000BB +S315E07AD51000000000000000000000000000000000AB +S315E07AD520003E490000000000000000000000000014 +S315E07AD530000000000000000000000000000000008B +S315E07AD540000000000000000000000000000000007B +S315E07AD550000000000000000000000000000000006B +S315E07AD560000000000000000000000000000000005B +S315E07AD570000000000000000000000000000000004B +S315E07AD580000000000000000000000000000000003B +S315E07AD590000000000000000000000000000000002B +S315E07AD5A0000000000000000000000000000000001B +S315E07AD5B0000000000000000000000000000000000B +S315E07AD5C000000000000000000000000000000000FB +S315E07AD5D000000000000000000000000000000000EB +S315E07AD5E000000000000000000000000000000000DB +S315E07AD5F000000000000000000000000000000000CB +S315E07AD60000000000000000000000000000000000BA +S315E07AD61000000000000000000000000000000000AA +S315E07AD620000000000000000000000000000000009A +S315E07AD630000000000000000000000000000000008A +S315E07AD640000000000000000000000000000000007A +S315E07AD650000000000000000000000000000000006A +S315E07AD660000000000000000000000000000000005A +S315E07AD670000000000000000000000000000000004A +S315E07AD680000000000000000000000000000000003A +S315E07AD690000000000000000000003E4900000000A3 +S315E07AD6A0000000000000000000000000000000001A +S315E07AD6B0000000000000000000000000000000000A +S315E07AD6C000000000000000000000000000000000FA +S315E07AD6D000000000000000000000000000000000EA +S315E07AD6E000000000000000000000000000000000DA +S315E07AD6F000000000000000000000000000000000CA +S315E07AD70000000000000000000000000000000000B9 +S315E07AD71000000000000000000000000000000000A9 +S315E07AD7200000000000000000000000000000000099 +S315E07AD7300000000000000000000000000000000089 +S315E07AD7400000000000000000000000000000000079 +S315E07AD7500000000000000000000000000000000069 +S315E07AD7600000000000000000000000000000000059 +S315E07AD7700000000000000000000000000000000049 +S315E07AD7800000000000000000000000000000000039 +S315E07AD7900000000000000000000000000000000029 +S315E07AD7A00000000000000000000000000000000019 +S315E07AD7B00000000000000000000000000000000009 +S315E07AD7C000000000000000000000000000000000F9 +S315E07AD7D000000000000000000000000000000000E9 +S315E07AD7E000000000000000000000000000000000D9 +S315E07AD7F000000000000000000000000000000000C9 +S315E07AD80000000000000000000000000000000000B8 +S315E07AD8100000003E49000000000000000000000021 +S315E07AD8200000000000000000000000000000000098 +S315E07AD8300000000000000000000000000000000088 +S315E07AD8400000000000000000000000000000000078 +S315E07AD8500000000000000000000000000000000068 +S315E07AD8600000000000000000000000000000000058 +S315E07AD8700000000000000000000000000000000048 +S315E07AD8800000000000000000000000000000000038 +S315E07AD8900000000000000000000000000000000028 +S315E07AD8A00000000000000000000000000000000018 +S315E07AD8B00000000000000000000000000000000008 +S315E07AD8C000000000000000000000000000000000F8 +S315E07AD8D000000000000000000000000000000000E8 +S315E07AD8E000000000000000000000000000000000D8 +S315E07AD8F000000000000000000000000000000000C8 +S315E07AD90000000000000000000000000000000000B7 +S315E07AD91000000000000000000000000000000000A7 +S315E07AD9200000000000000000000000000000000097 +S315E07AD9300000000000000000000000000000000087 +S315E07AD9400000000000000000000000000000000077 +S315E07AD9500000000000000000000000000000000067 +S315E07AD9600000000000000000000000000000000057 +S315E07AD9700000000000000000000000000000000047 +S315E07AD9800000000000000000000000003E490000B0 +S315E07AD9900000000000000000000000000000000027 +S315E07AD9A00000000000000000000000000000000017 +S315E07AD9B00000000000000000000000000000000007 +S315E07AD9C000000000000000000000000000000000F7 +S315E07AD9D000000000000000000000000000000000E7 +S315E07AD9E000000000000000000000000000000000D7 +S315E07AD9F000000000000000000000000000000000C7 +S315E07ADA0000000000000000000000000000000000B6 +S315E07ADA1000000000000000000000000000000000A6 +S315E07ADA200000000000000000000000000000000096 +S315E07ADA300000000000000000000000000000000086 +S315E07ADA400000000000000000000000000000000076 +S315E07ADA500000000000000000000000000000000066 +S315E07ADA600000000000000000000000000000000056 +S315E07ADA700000000000000000000000000000000046 +S315E07ADA800000000000000000000000000000000036 +S315E07ADA900000000000000000000000000000000026 +S315E07ADAA00000000000000000000000000000000016 +S315E07ADAB00000000000000000000000000000000006 +S315E07ADAC000000000000000000000000000000000F6 +S315E07ADAD000000000000000000000000000000000E6 +S315E07ADAE000000000000000000000000000000000D6 +S315E07ADAF000000000000000000000000000000000C6 +S315E07ADB0000000000003E490000000000000000002E +S315E07ADB1000000000000000000000000000000000A5 +S315E07ADB200000000000000000000000000000000095 +S315E07ADB300000000000000000000000000000000085 +S315E07ADB400000000000000000000000000000000075 +S315E07ADB500000000000000000000000000000000065 +S315E07ADB600000000000000000000000000000000055 +S315E07ADB700000000000000000000000000000000045 +S315E07ADB800000000000000000000000000000000035 +S315E07ADB900000000000000000000000000000000025 +S315E07ADBA00000000000000000000000000000000015 +S315E07ADBB00000000000000000000000000000000005 +S315E07ADBC000000000000000000000000000000000F5 +S315E07ADBD000000000000000000000000000000000E5 +S315E07ADBE000000000000000000000000000000000D5 +S315E07ADBF000000000000000000000000000000000C5 +S315E07ADC0000000000000000000000000000000000B4 +S315E07ADC1000000000000000000000000000000000A4 +S315E07ADC200000000000000000000000000000000094 +S315E07ADC300000000000000000000000000000000084 +S315E07ADC400000000000000000000000000000000074 +S315E07ADC500000000000000000000000000000000064 +S315E07ADC600000000000000000000000000000000054 +S315E07ADC7000000000000000000000000000003E49BD +S315E07ADC800000000000000000000000000000000034 +S315E07ADC900000000000000000000000000000000024 +S315E07ADCA00000000000000000000000000000000014 +S315E07ADCB00000000000000000000000000000000004 +S315E07ADCC000000000000000000000000000000000F4 +S315E07ADCD000000000000000000000000000000000E4 +S315E07ADCE000000000000000000000000000000000D4 +S315E07ADCF000000000000000000000000000000000C4 +S315E07ADD0000000000000000000000000000000000B3 +S315E07ADD1000000000000000000000000000000000A3 +S315E07ADD200000000000000000000000000000000093 +S315E07ADD300000000000000000000000000000000083 +S315E07ADD400000000000000000000000000000000073 +S315E07ADD500000000000000000000000000000000063 +S315E07ADD600000000000000000000000000000000053 +S315E07ADD700000000000000000000000000000000043 +S315E07ADD800000000000000000000000000000000033 +S315E07ADD900000000000000000000000000000000023 +S315E07ADDA00000000000000000000000000000000013 +S315E07ADDB00000000000000000000000000000000003 +S315E07ADDC000000000000000000000000000000000F3 +S315E07ADDD000000000000000000000000000000000E3 +S315E07ADDE000000000000000000000000000000000D3 +S315E07ADDF0000000000000003E49000000000000003C +S315E07ADE0000000000000000000000000000000000B2 +S315E07ADE1000000000000000000000000000000000A2 +S315E07ADE200000000000000000000000000000000092 +S315E07ADE300000000000000000000000000000000082 +S315E07ADE400000000000000000000000000000000072 +S315E07ADE500000000000000000000000000000000062 +S315E07ADE600000000000000000000000000000000052 +S315E07ADE700000000000000000000000000000000042 +S315E07ADE800000000000000000000000000000000032 +S315E07ADE900000000000000000000000000000000022 +S315E07ADEA00000000000000000000000000000000012 +S315E07ADEB00000000000000000000000000000000002 +S315E07ADEC000000000000000000000000000000000F2 +S315E07ADED000000000000000000000000000000000E2 +S315E07ADEE000000000000000000000000000000000D2 +S315E07ADEF000000000000000000000000000000000C2 +S315E07ADF0000000000000000000000000000000000B1 +S315E07ADF1000000000000000000000000000000000A1 +S315E07ADF200000000000000000000000000000000091 +S315E07ADF300000000000000000000000000000000081 +S315E07ADF400000000000000000000000000000000071 +S315E07ADF500000000000000000000000000000000061 +S315E07ADF600000000000000000000000000000000051 +S315E07ADF703E490000000000000000000000000000BA +S315E07ADF800000000000000000000000000000000031 +S315E07ADF900000000000000000000000000000000021 +S315E07ADFA00000000000000000000000000000000011 +S315E07ADFB00000000000000000000000000000000001 +S315E07ADFC000000000000000000000000000000000F1 +S315E07ADFD000000000000000000000000000000000E1 +S315E07ADFE000000000000000000000000000000000D1 +S315E07ADFF000000000000000000000000000000000C1 +S315E07AE00000000000000000000000000000000000B0 +S315E07AE01000000000000000000000000000000000A0 +S315E07AE0200000000000000000000000000000000090 +S315E07AE0300000000000000000000000000000000080 +S315E07AE0400000000000000000000000000000000070 +S315E07AE0500000000000000000000000000000000060 +S315E07AE0600000000000000000000000000000000050 +S315E07AE0700000000000000000000000000000000040 +S315E07AE0800000000000000000000000000000000030 +S315E07AE0900000000000000000000000000000000020 +S315E07AE0A00000000000000000000000000000000010 +S315E07AE0B00000000000000000000000000000000000 +S315E07AE0C000000000000000000000000000000000F0 +S315E07AE0D000000000000000000000000000000000E0 +S315E07AE0E00000000000000000003E49000000000049 +S315E07AE0F000000000000000000000000000000000C0 +S315E07AE10000000000000000000000000000000000AF +S315E07AE110000000000000000000000000000000009F +S315E07AE120000000000000000000000000000000008F +S315E07AE130000000000000000000000000000000007F +S315E07AE140000000000000000000000000000000006F +S315E07AE150000000000000000000000000000000005F +S315E07AE160000000000000000000000000000000004F +S315E07AE170000000000000000000000000000000003F +S315E07AE180000000000000000000000000000000002F +S315E07AE190000000000000000000000000000000001F +S315E07AE1A0000000000000000000000000000000000F +S315E07AE1B000000000000000000000000000000000FF +S315E07AE1C000000000000000000000000000000000EF +S315E07AE1D000000000000000000000000000000000DF +S315E07AE1E000000000000000000000000000000000CF +S315E07AE1F000000000000000000000000000000000BF +S315E07AE20000000000000000000000000000000000AE +S315E07AE210000000000000000000000000000000009E +S315E07AE220000000000000000000000000000000008E +S315E07AE230000000000000000000000000000000007E +S315E07AE240000000000000000000000000000000006E +S315E07AE250000000000000000000000000000000005E +S315E07AE26000003E49000000000000000000000000C7 +S315E07AE270000000000000000000000000000000003E +S315E07AE280000000000000000000000000000000002E +S315E07AE290000000000000000000000000000000001E +S315E07AE2A0000000000000000000000000000000000E +S315E07AE2B000000000000000000000000000000000FE +S315E07AE2C000000000000000000000000000000000EE +S315E07AE2D000000000000000000000000000000000DE +S315E07AE2E000000000000000000000000000000000CE +S315E07AE2F000000000000000000000000000000000BE +S315E07AE30000000000000000000000000000000000AD +S315E07AE310000000000000000000000000000000009D +S315E07AE320000000000000000000000000000000008D +S315E07AE330000000000000000000000000000000007D +S315E07AE340000000000000000000000000000000006D +S315E07AE350000000000000000000000000000000005D +S315E07AE360000000000000000000000000000000004D +S315E07AE370000000000000000000000000000000003D +S315E07AE380000000000000000000000000000000002D +S315E07AE390000000000000000000000000000000001D +S315E07AE3A0000000000000000000000000000000000D +S315E07AE3B000000000000000000000000000000000FD +S315E07AE3C000000000000000000000000000000000ED +S315E07AE3D000000000000000000000003E4900000056 +S315E07AE3E000000000000000000000000000000000CD +S315E07AE3F000000000000000000000000000000000BD +S315E07AE40000000000000000000000000000000000AC +S315E07AE410000000000000000000000000000000009C +S315E07AE420000000000000000000000000000000008C +S315E07AE430000000000000000000000000000000007C +S315E07AE440000000000000000000000000000000006C +S315E07AE450000000000000000000000000000000005C +S315E07AE460000000000000000000000000000000004C +S315E07AE470000000000000000000000000000000003C +S315E07AE480000000000000000000000000000000002C +S315E07AE490000000000000000000000000000000001C +S315E07AE4A0000000000000000000000000000000000C +S315E07AE4B000000000000000000000000000000000FC +S315E07AE4C000000000000000000000000000000000EC +S315E07AE4D000000000000000000000000000000000DC +S315E07AE4E000000000000000000000000000000000CC +S315E07AE4F000000000000000000000000000000000BC +S315E07AE50000000000000000000000000000000000AB +S315E07AE510000000000000000000000000000000009B +S315E07AE520000000000000000000000000000000008B +S315E07AE530000000000000000000000000000000007B +S315E07AE540000000000000000000000000000000006B +S315E07AE550000000003E4900000000000000000000D4 +S315E07AE560000000000000000000000000000000004B +S315E07AE570000000000000000000000000000000003B +S315E07AE580000000000000000000000000000000002B +S315E07AE590000000000000000000000000000000001B +S315E07AE5A0000000000000000000000000000000000B +S315E07AE5B000000000000000000000000000000000FB +S315E07AE5C000000000000000000000000000000000EB +S315E07AE5D000000000000000000000000000000000DB +S315E07AE5E000000000000000000000000000000000CB +S315E07AE5F000000000000000000000000000000000BB +S315E07AE60000000000000000000000000000000000AA +S315E07AE610000000000000000000000000000000009A +S315E07AE620000000000000000000000000000000008A +S315E07AE630000000000000000000000000000000007A +S315E07AE640000000000000000000000000000000006A +S315E07AE650000000000000000000000000000000005A +S315E07AE660000000000000000000000000000000004A +S315E07AE670000000000000000000000000000000003A +S315E07AE680000000000000000000000000000000002A +S315E07AE690000000000000000000000000000000001A +S315E07AE6A0000000000000000000000000000000000A +S315E07AE6B000000000000000000000000000000000FA +S315E07AE6C0000000000000000000000000003E490063 +S315E07AE6D000000000000000000000000000000000DA +S315E07AE6E000000000000000000000000000000000CA +S315E07AE6F000000000000000000000000000000000BA +S315E07AE70000000000000000000000000000000000A9 +S315E07AE7100000000000000000000000000000000099 +S315E07AE7200000000000000000000000000000000089 +S315E07AE7300000000000000000000000000000000079 +S315E07AE7400000000000000000000000000000000069 +S315E07AE7500000000000000000000000000000000059 +S315E07AE7600000000000000000000000000000000049 +S315E07AE7700000000000000000000000000000000039 +S315E07AE7800000000000000000000000000000000029 +S315E07AE7900000000000000000000000000000000019 +S315E07AE7A00000000000000000000000000000000009 +S315E07AE7B000000000000000000000000000000000F9 +S315E07AE7C000000000000000000000000000000000E9 +S315E07AE7D000000000000000000000000000000000D9 +S315E07AE7E000000000000000000000000000000000C9 +S315E07AE7F000000000000000000000000000000000B9 +S315E07AE80000000000000000000000000000000000A8 +S315E07AE8100000000000000000000000000000000098 +S315E07AE8200000000000000000000000000000000088 +S315E07AE8300000000000000000000000000000000078 +S315E07AE8400000000000003E490000000000000000E1 +S315E07AE8500000000000000000000000000000000058 +S315E07AE8600000000000000000000000000000000048 +S315E07AE8700000000000000000000000000000000038 +S315E07AE8800000000000000000000000000000000028 +S315E07AE8900000000000000000000000000000000018 +S315E07AE8A00000000000000000000000000000000008 +S315E07AE8B000000000000000000000000000000000F8 +S315E07AE8C000000000000000000000000000000000E8 +S315E07AE8D000000000000000000000000000000000D8 +S315E07AE8E000000000000000000000000000000000C8 +S315E07AE8F000000000000000000000000000000000B8 +S315E07AE90000000000000000000000000000000000A7 +S315E07AE9100000000000000000000000000000000097 +S315E07AE9200000000000000000000000000000000087 +S315E07AE9300000000000000000000000000000000077 +S315E07AE9400000000000000000000000000000000067 +S315E07AE9500000000000000000000000000000000057 +S315E07AE9600000000000000000000000000000000047 +S315E07AE9700000000000000000000000000000000037 +S315E07AE9800000000000000000000000000000000027 +S315E07AE9900000000000000000000000000000000017 +S315E07AE9A00000000000000000000000000000000007 +S315E07AE9B00000000000000000000000000000003EB9 +S315E07AE9C0490000000000000000000000000000009E +S315E07AE9D000000000000000000000000000000000D7 +S315E07AE9E000000000000000000000000000000000C7 +S315E07AE9F000000000000000000000000000000000B7 +S315E07AEA0000000000000000000000000000000000A6 +S315E07AEA100000000000000000000000000000000096 +S315E07AEA200000000000000000000000000000000086 +S315E07AEA300000000000000000000000000000000076 +S315E07AEA400000000000000000000000000000000066 +S315E07AEA500000000000000000000000000000000056 +S315E07AEA600000000000000000000000000000000046 +S315E07AEA700000000000000000000000000000000036 +S315E07AEA800000000000000000000000000000000026 +S315E07AEA900000000000000000000000000000000016 +S315E07AEAA00000000000000000000000000000000006 +S315E07AEAB000000000000000000000000000000000F6 +S315E07AEAC000000000000000000000000000000000E6 +S315E07AEAD000000000000000000000000000000000D6 +S315E07AEAE000000000000000000000000000000000C6 +S315E07AEAF000000000000000000000000000000000B6 +S315E07AEB0000000000000000000000000000000000A5 +S315E07AEB100000000000000000000000000000000095 +S315E07AEB200000000000000000000000000000000085 +S315E07AEB3000000000000000003E49000000000000EE +S315E07AEB400000000000000000000000000000000065 +S315E07AEB500000000000000000000000000000000055 +S315E07AEB600000000000000000000000000000000045 +S315E07AEB700000000000000000000000000000000035 +S315E07AEB800000000000000000000000000000000025 +S315E07AEB900000000000000000000000000000000015 +S315E07AEBA00000000000000000000000000000000005 +S315E07AEBB000000000000000000000000000000000F5 +S315E07AEBC000000000000000000000000000000000E5 +S315E07AEBD000000000000000000000000000000000D5 +S315E07AEBE000000000000000000000000000000000C5 +S315E07AEBF000000000000000000000000000000000B5 +S315E07AEC0000000000000000000000000000000000A4 +S315E07AEC100000000000000000000000000000000094 +S315E07AEC200000000000000000000000000000000084 +S315E07AEC300000000000000000000000000000000074 +S315E07AEC400000000000000000000000000000000064 +S315E07AEC500000000000000000000000000000000054 +S315E07AEC600000000000000000000000000000000044 +S315E07AEC700000000000000000000000000000000034 +S315E07AEC800000000000000000000000000000000024 +S315E07AEC900000000000000000000000000000000014 +S315E07AECA00000000000000000000000000000000004 +S315E07AECB0003E49000000000000000000000000006D +S315E07AECC000000000000000000000000000000000E4 +S315E07AECD000000000000000000000000000000000D4 +S315E07AECE000000000000000000000000000000000C4 +S315E07AECF000000000000000000000000000000000B4 +S315E07AED0000000000000000000000000000000000A3 +S315E07AED100000000000000000000000000000000093 +S315E07AED200000000000000000000000000000000083 +S315E07AED300000000000000000000000000000000073 +S315E07AED400000000000000000000000000000000063 +S315E07AED500000000000000000000000000000000053 +S315E07AED600000000000000000000000000000000043 +S315E07AED700000000000000000000000000000000033 +S315E07AED800000000000000000000000000000000023 +S315E07AED900000000000000000000000000000000013 +S315E07AEDA00000000000000000000000000000000003 +S315E07AEDB000000000000000000000000000000000F3 +S315E07AEDC000000000000000000000000000000000E3 +S315E07AEDD000000000000000000000000000000000D3 +S315E07AEDE000000000000000000000000000000000C3 +S315E07AEDF000000000000000000000000000000000B3 +S315E07AEE0000000000000000000000000000000000A2 +S315E07AEE100000000000000000000000000000000092 +S315E07AEE20000000000000000000003E4900000000FB +S315E07AEE300000000000000000000000000000000072 +S315E07AEE400000000000000000000000000000000062 +S315E07AEE500000000000000000000000000000000052 +S315E07AEE600000000000000000000000000000000042 +S315E07AEE700000000000000000000000000000000032 +S315E07AEE800000000000000000000000000000000022 +S315E07AEE900000000000000000000000000000000012 +S315E07AEEA00000000000000000000000000000000002 +S315E07AEEB000000000000000000000000000000000F2 +S315E07AEEC000000000000000000000000000000000E2 +S315E07AEED000000000000000000000000000000000D2 +S315E07AEEE000000000000000000000000000000000C2 +S315E07AEEF000000000000000000000000000000000B2 +S315E07AEF0000000000000000000000000000000000A1 +S315E07AEF100000000000000000000000000000000091 +S315E07AEF200000000000000000000000000000000081 +S315E07AEF300000000000000000000000000000000071 +S315E07AEF400000000000000000000000000000000061 +S315E07AEF500000000000000000000000000000000051 +S315E07AEF600000000000000000000000000000000041 +S315E07AEF700000000000000000000000000000000031 +S315E07AEF800000000000000000000000000000000021 +S315E07AEF900000000000000000000000000000000011 +S315E07AEFA00000003E4900000000000000000000007A +S315E07AEFB000000000000000000000000000000000F1 +S315E07AEFC000000000000000000000000000000000E1 +S315E07AEFD000000000000000000000000000000000D1 +S315E07AEFE000000000000000000000000000000000C1 +S315E07AEFF000000000000000000000000000000000B1 +S315E07AF00000000000000000000000000000000000A0 +S315E07AF0100000000000000000000000000000000090 +S315E07AF0200000000000000000000000000000000080 +S315E07AF0300000000000000000000000000000000070 +S315E07AF0400000000000000000000000000000000060 +S315E07AF0500000000000000000000000000000000050 +S315E07AF0600000000000000000000000000000000040 +S315E07AF0700000000000000000000000000000000030 +S315E07AF0800000000000000000000000000000000020 +S315E07AF0900000000000000000000000000000000010 +S315E07AF0A00000000000000000000000000000000000 +S315E07AF0B000000000000000000000000000000000F0 +S315E07AF0C000000000000000000000000000000000E0 +S315E07AF0D000000000000000000000000000000000D0 +S315E07AF0E000000000000000000000000000000000C0 +S315E07AF0F000000000000000000000000000000000B0 +S315E07AF100000000000000000000000000000000009F +S315E07AF1100000000000000000000000003E49000008 +S315E07AF120000000000000000000000000000000007F +S315E07AF130000000000000000000000000000000006F +S315E07AF140000000000000000000000000000000005F +S315E07AF150000000000000000000000000000000004F +S315E07AF160000000000000000000000000000000003F +S315E07AF170000000000000000000000000000000002F +S315E07AF180000000000000000000000000000000001F +S315E07AF190000000000000000000000000000000000F +S315E07AF1A000000000000000000000000000000000FF +S315E07AF1B000000000000000000000000000000000EF +S315E07AF1C000000000000000000000000000000000DF +S315E07AF1D000000000000000000000000000000000CF +S315E07AF1E000000000000000000000000000000000BF +S315E07AF1F000000000000000000000000000000000AF +S315E07AF200000000000000000000000000000000009E +S315E07AF210000000000000000000000000000000008E +S315E07AF220000000000000000000000000000000007E +S315E07AF230000000000000000000000000000000006E +S315E07AF240000000000000000000000000000000005E +S315E07AF250000000000000000000000000000000004E +S315E07AF260000000000000000000000000000000003E +S315E07AF270000000000000000000000000000000002E +S315E07AF280000000000000000000000000000000001E +S315E07AF29000000000003E4900000000000000000087 +S315E07AF2A000000000000000000000000000000000FE +S315E07AF2B000000000000000000000000000000000EE +S315E07AF2C000000000000000000000000000000000DE +S315E07AF2D000000000000000000000000000000000CE +S315E07AF2E000000000000000000000000000000000BE +S315E07AF2F000000000000000000000000000000000AE +S315E07AF300000000000000000000000000000000009D +S315E07AF310000000000000000000000000000000008D +S315E07AF320000000000000000000000000000000007D +S315E07AF330000000000000000000000000000000006D +S315E07AF340000000000000000000000000000000005D +S315E07AF350000000000000000000000000000000004D +S315E07AF360000000000000000000000000000000003D +S315E07AF370000000000000000000000000000000002D +S315E07AF380000000000000000000000000000000001D +S315E07AF390000000000000000000000000000000000D +S315E07AF3A000000000000000000000000000000000FD +S315E07AF3B000000000000000000000000000000000ED +S315E07AF3C000000000000000000000000000000000DD +S315E07AF3D000000000000000000000000000000000CD +S315E07AF3E000000000000000000000000000000000BD +S315E07AF3F000000000000000000000000000000000AD +S315E07AF40000000000000000000000000000003E4915 +S315E07AF410000000000000000000000000000000008C +S315E07AF420000000000000000000000000000000007C +S315E07AF430000000000000000000000000000000006C +S315E07AF440000000000000000000000000000000005C +S315E07AF450000000000000000000000000000000004C +S315E07AF460000000000000000000000000000000003C +S315E07AF470000000000000000000000000000000002C +S315E07AF480000000000000000000000000000000001C +S315E07AF490000000000000000000000000000000000C +S315E07AF4A000000000000000000000000000000000FC +S315E07AF4B000000000000000000000000000000000EC +S315E07AF4C000000000000000000000000000000000DC +S315E07AF4D000000000000000000000000000000000CC +S315E07AF4E000000000000000000000000000000000BC +S315E07AF4F000000000000000000000000000000000AC +S315E07AF500000000000000000000000000000000009B +S315E07AF510000000000000000000000000000000008B +S315E07AF520000000000000000000000000000000007B +S315E07AF530000000000000000000000000000000006B +S315E07AF540000000000000000000000000000000005B +S315E07AF550000000000000000000000000000000004B +S315E07AF560000000000000000000000000000000003B +S315E07AF570000000000000000000000000000000002B +S315E07AF580000000000000003E490000000000000094 +S315E07AF590000000000000000000000000000000000B +S315E07AF5A000000000000000000000000000000000FB +S315E07AF5B000000000000000000000000000000000EB +S315E07AF5C000000000000000000000000000000000DB +S315E07AF5D000000000000000000000000000000000CB +S315E07AF5E000000000000000000000000000000000BB +S315E07AF5F000000000000000000000000000000000AB +S315E07AF600000000000000000000000000000000009A +S315E07AF610000000000000000000000000000000008A +S315E07AF620000000000000000000000000000000007A +S315E07AF630000000000000000000000000000000006A +S315E07AF640000000000000000000000000000000005A +S315E07AF650000000000000000000000000000000004A +S315E07AF660000000000000000000000000000000003A +S315E07AF670000000000000000000000000000000002A +S315E07AF680000000000000000000000000000000001A +S315E07AF690000000000000000000000000000000000A +S315E07AF6A000000000000000000000000000000000FA +S315E07AF6B000000000000000000000000000000000EA +S315E07AF6C000000000000000000000000000000000DA +S315E07AF6D000000000000000000000000000000000CA +S315E07AF6E000000000000000000000000000000000BA +S315E07AF6F000000000000000000000000000000000AA +S315E07AF7003E49000000000000000000000000000012 +S315E07AF7100000000000000000000000000000000089 +S315E07AF7200000000000000000000000000000000079 +S315E07AF7300000000000000000000000000000000069 +S315E07AF7400000000000000000000000000000000059 +S315E07AF7500000000000000000000000000000000049 +S315E07AF7600000000000000000000000000000000039 +S315E07AF7700000000000000000000000000000000029 +S315E07AF7800000000000000000000000000000000019 +S315E07AF7900000000000000000000000000000000009 +S315E07AF7A000000000000000000000000000000000F9 +S315E07AF7B000000000000000000000000000000000E9 +S315E07AF7C000000000000000000000000000000000D9 +S315E07AF7D000000000000000000000000000000000C9 +S315E07AF7E000000000000000000000000000000000B9 +S315E07AF7F000000000000000000000000000000000A9 +S315E07AF8000000000000000000000000000000000098 +S315E07AF8100000000000000000000000000000000088 +S315E07AF8200000000000000000000000000000000078 +S315E07AF8300000000000000000000000000000000068 +S315E07AF8400000000000000000000000000000000058 +S315E07AF8500000000000000000000000000000000048 +S315E07AF8600000000000000000000000000000000038 +S315E07AF8700000000000000000003E490000000000A1 +S315E07AF8800000000000000000000000000000000018 +S315E07AF8900000000000000000000000000000000008 +S315E07AF8A000000000000000000000000000000000F8 +S315E07AF8B000000000000000000000000000000000E8 +S315E07AF8C000000000000000000000000000000000D8 +S315E07AF8D000000000000000000000000000000000C8 +S315E07AF8E000000000000000000000000000000000B8 +S315E07AF8F000000000000000000000000000000000A8 +S315E07AF9000000000000000000000000000000000097 +S315E07AF9100000000000000000000000000000000087 +S315E07AF9200000000000000000000000000000000077 +S315E07AF9300000000000000000000000000000000067 +S315E07AF9400000000000000000000000000000000057 +S315E07AF9500000000000000000000000000000000047 +S315E07AF9600000000000000000000000000000000037 +S315E07AF9700000000000000000000000000000000027 +S315E07AF9800000000000000000000000000000000017 +S315E07AF9900000000000000000000000000000000007 +S315E07AF9A000000000000000000000000000000000F7 +S315E07AF9B000000000000000000000000000000000E7 +S315E07AF9C000000000000000000000000000000000D7 +S315E07AF9D000000000000000000000000000000000C7 +S315E07AF9E000000000000000000000000000000000B7 +S315E07AF9F000003E4900000000000000000000000020 +S315E07AFA000000000000000000000000000000000096 +S315E07AFA100000000000000000000000000000000086 +S315E07AFA200000000000000000000000000000000076 +S315E07AFA300000000000000000000000000000000066 +S315E07AFA400000000000000000000000000000000056 +S315E07AFA500000000000000000000000000000000046 +S315E07AFA600000000000000000000000000000000036 +S315E07AFA700000000000000000000000000000000026 +S315E07AFA800000000000000000000000000000000016 +S315E07AFA900000000000000000000000000000000006 +S315E07AFAA000000000000000000000000000000000F6 +S315E07AFAB000000000000000000000000000000000E6 +S315E07AFAC000000000000000000000000000000000D6 +S315E07AFAD000000000000000000000000000000000C6 +S315E07AFAE000000000000000000000000000000000B6 +S315E07AFAF000000000000000000000000000000000A6 +S315E07AFB000000000000000000000000000000000095 +S315E07AFB100000000000000000000000000000000085 +S315E07AFB200000000000000000000000000000000075 +S315E07AFB300000000000000000000000000000000065 +S315E07AFB400000000000000000000000000000000055 +S315E07AFB500000000000000000000000000000000045 +S315E07AFB6000000000000000000000003E49000000AE +S315E07AFB700000000000000000000000000000000025 +S315E07AFB800000000000000000000000000000000015 +S315E07AFB900000000000000000000000000000000005 +S315E07AFBA000000000000000000000000000000000F5 +S315E07AFBB000000000000000000000000000000000E5 +S315E07AFBC000000000000000000000000000000000D5 +S315E07AFBD000000000000000000000000000000000C5 +S315E07AFBE000000000000000000000000000000000B5 +S315E07AFBF000000000000000000000000000000000A5 +S315E07AFC000000000000000000000000000000000094 +S315E07AFC100000000000000000000000000000000084 +S315E07AFC200000000000000000000000000000000074 +S315E07AFC300000000000000000000000000000000064 +S315E07AFC400000000000000000000000000000000054 +S315E07AFC500000000000000000000000000000000044 +S315E07AFC600000000000000000000000000000000034 +S315E07AFC700000000000000000000000000000000024 +S315E07AFC800000000000000000000000000000000014 +S315E07AFC900000000000000000000000000000000004 +S315E07AFCA000000000000000000000000000000000F4 +S315E07AFCB000000000000000000000000000000000E4 +S315E07AFCC000000000000000000000000000000000D4 +S315E07AFCD000000000000000000000000000000000C4 +S315E07AFCE0000000003E49000000000000000000002D +S315E07AFCF000000000000000000000000000000000A4 +S315E07AFD000000000000000000000000000000000093 +S315E07AFD100000000000000000000000000000000083 +S315E07AFD200000000000000000000000000000000073 +S315E07AFD300000000000000000000000000000000063 +S315E07AFD400000000000000000000000000000000053 +S315E07AFD500000000000000000000000000000000043 +S315E07AFD600000000000000000000000000000000033 +S315E07AFD700000000000000000000000000000000023 +S315E07AFD800000000000000000000000000000000013 +S315E07AFD900000000000000000000000000000000003 +S315E07AFDA000000000000000000000000000000000F3 +S315E07AFDB000000000000000000000000000000000E3 +S315E07AFDC000000000000000000000000000000000D3 +S315E07AFDD000000000000000000000000000000000C3 +S315E07AFDE000000000000000000000000000000000B3 +S315E07AFDF000000000000000000000000000000000A3 +S315E07AFE000000000000000000000000000000000092 +S315E07AFE100000000000000000000000000000000082 +S315E07AFE200000000000000000000000000000000072 +S315E07AFE300000000000000000000000000000000062 +S315E07AFE400000000000000000000000000000000052 +S315E07AFE50000000000000000000000000003E4900BB +S315E07AFE600000000000000000000000000000000032 +S315E07AFE700000000000000000000000000000000022 +S315E07AFE800000000000000000000000000000000012 +S315E07AFE900000000000000000000000000000000002 +S315E07AFEA000000000000000000000000000000000F2 +S315E07AFEB000000000000000000000000000000000E2 +S315E07AFEC000000000000000000000000000000000D2 +S315E07AFED000000000000000000000000000000000C2 +S315E07AFEE000000000000000000000000000000000B2 +S315E07AFEF000000000000000000000000000000000A2 +S315E07AFF000000000000000000000000000000000091 +S315E07AFF100000000000000000000000000000000081 +S315E07AFF200000000000000000000000000000000071 +S315E07AFF300000000000000000000000000000000061 +S315E07AFF400000000000000000000000000000000051 +S315E07AFF500000000000000000000000000000000041 +S315E07AFF600000000000000000000000000000000031 +S315E07AFF700000000000000000000000000000000021 +S315E07AFF800000000000000000000000000000000011 +S315E07AFF900000000000000000000000000000000001 +S315E07AFFA000000000000000000000000000000000F1 +S315E07AFFB000000000000000000000000000000000E1 +S315E07AFFC000000000000000000000000000000000D1 +S315E07AFFD00000000000003E4900000000000000003A +S315E07AFFE000000000000000000000000000000000B1 +S315E07AFFF000000000000000000000000000000000A1 +S315E07B0000000000000000000000000000000000008F +S315E07B0010000000000000000000000000000000007F +S315E07B0020000000000000000000000000000000006F +S315E07B0030000000000000000000000000000000005F +S315E07B0040000000000000000000000000000000004F +S315E07B0050000000000000000000000000000000003F +S315E07B0060000000000000000000000000000000002F +S315E07B0070000000000000000000000000000000001F +S315E07B0080000000000000000000000000000000000F +S315E07B009000000000000000000000000000000000FF +S315E07B00A000000000000000000000000000000000EF +S315E07B00B000000000000000000000000000000000DF +S315E07B00C000000000000000000000000000000000CF +S315E07B00D000000000000000000000000000000000BF +S315E07B00E000000000000000000000000000000000AF +S315E07B00F0000000000000000000000000000000009F +S315E07B0100000000000000000000000000000000008E +S315E07B0110000000000000000000000000000000007E +S315E07B0120000000000000000000000000000000006E +S315E07B0130000000000000000000000000000000005E +S315E07B01400000000000000000000000000000003E10 +S315E07B015049000000000000000000000000000000F5 +S315E07B0160000000000000000000000000000000002E +S315E07B0170000000000000000000000000000000001E +S315E07B0180000000000000000000000000000000000E +S315E07B019000000000000000000000000000000000FE +S315E07B01A000000000000000000000000000000000EE +S315E07B01B000000000000000000000000000000000DE +S315E07B01C000000000000000000000000000000000CE +S315E07B01D000000000000000000000000000000000BE +S315E07B01E000000000000000000000000000000000AE +S315E07B01F0000000000000000000000000000000009E +S315E07B0200000000000000000000000000000000008D +S315E07B0210000000000000000000000000000000007D +S315E07B0220000000000000000000000000000000006D +S315E07B0230000000000000000000000000000000005D +S315E07B0240000000000000000000000000000000004D +S315E07B0250000000000000000000000000000000003D +S315E07B0260000000000000000000000000000000002D +S315E07B0270000000000000000000000000000000001D +S315E07B0280000000000000000000000000000000000D +S315E07B029000000000000000000000000000000000FD +S315E07B02A000000000000000000000000000000000ED +S315E07B02B000000000000000000000000000000000DD +S315E07B02C000000000000000003E4900000000000046 +S315E07B02D000000000000000000000000000000000BD +S315E07B02E000000000000000000000000000000000AD +S315E07B02F0000000000000000000000000000000009D +S315E07B0300000000000000000000000000000000008C +S315E07B0310000000000000000000000000000000007C +S315E07B0320000000000000000000000000000000006C +S315E07B0330000000000000000000000000000000005C +S315E07B0340000000000000000000000000000000004C +S315E07B0350000000000000000000000000000000003C +S315E07B0360000000000000000000000000000000002C +S315E07B0370000000000000000000000000000000001C +S315E07B0380000000000000000000000000000000000C +S315E07B039000000000000000000000000000000000FC +S315E07B03A000000000000000000000000000000000EC +S315E07B03B000000000000000000000000000000000DC +S315E07B03C000000000000000000000000000000000CC +S315E07B03D000000000000000000000000000000000BC +S315E07B03E000000000000000000000000000000000AC +S315E07B03F0000000000000000000000000000000009C +S315E07B0400000000000000000000000000000000008B +S315E07B0410000000000000000000000000000000007B +S315E07B0420000000000000000000000000000000006B +S315E07B0430000000000000000000000000000000005B +S315E07B0440003E4900000000000000000000000000C4 +S315E07B0450000000000000000000000000000000003B +S315E07B0460000000000000000000000000000000002B +S315E07B0470000000000000000000000000000000001B +S315E07B0480000000000000000000000000000000000B +S315E07B049000000000000000000000000000000000FB +S315E07B04A000000000000000000000000000000000EB +S315E07B04B000000000000000000000000000000000DB +S315E07B04C000000000000000000000000000000000CB +S315E07B04D000000000000000000000000000000000BB +S315E07B04E000000000000000000000000000000000AB +S315E07B04F0000000000000000000000000000000009B +S315E07B0500000000000000000000000000000000008A +S315E07B0510000000000000000000000000000000007A +S315E07B0520000000000000000000000000000000006A +S315E07B0530000000000000000000000000000000005A +S315E07B0540000000000000000000000000000000004A +S315E07B0550000000000000000000000000000000003A +S315E07B0560000000000000000000000000000000002A +S315E07B0570000000000000000000000000000000001A +S315E07B0580000000000000000000000000000000000A +S315E07B059000000000000000000000000000000000FA +S315E07B05A000000000000000000000000000000000EA +S315E07B05B0000000000000000000003E490000000053 +S315E07B05C000000000000000000000000000000000CA +S315E07B05D000000000000000000000000000000000BA +S315E07B05E000000000000000000000000000000000AA +S315E07B05F0000000000000000000000000000000009A +S315E07B06000000000000000000000000000000000089 +S315E07B06100000000000000000000000000000000079 +S315E07B06200000000000000000000000000000000069 +S315E07B06300000000000000000000000000000000059 +S315E07B06400000000000000000000000000000000049 +S315E07B06500000000000000000000000000000000039 +S315E07B06600000000000000000000000000000000029 +S315E07B06700000000000000000000000000000000019 +S315E07B06800000000000000000000000000000000009 +S315E07B069000000000000000000000000000000000F9 +S315E07B06A000000000000000000000000000000000E9 +S315E07B06B000000000000000000000000000000000D9 +S315E07B06C000000000000000000000000000000000C9 +S315E07B06D000000000000000000000000000000000B9 +S315E07B06E000000000000000000000000000000000A9 +S315E07B06F00000000000000000000000000000000099 +S315E07B07000000000000000000000000000000000088 +S315E07B07100000000000000000000000000000000078 +S315E07B07200000000000000000000000000000000068 +S315E07B07300000003E490000000000000000000000D1 +S315E07B07400000000000000000000000000000000048 +S315E07B07500000000000000000000000000000000038 +S315E07B07600000000000000000000000000000000028 +S315E07B07700000000000000000000000000000000018 +S315E07B07800000000000000000000000000000000008 +S315E07B079000000000000000000000000000000000F8 +S315E07B07A000000000000000000000000000000000E8 +S315E07B07B000000000000000000000000000000000D8 +S315E07B07C000000000000000000000000000000000C8 +S315E07B07D000000000000000000000000000000000B8 +S315E07B07E000000000000000000000000000000000A8 +S315E07B07F00000000000000000000000000000000098 +S315E07B08000000000000000000000000000000000087 +S315E07B08100000000000000000000000000000000077 +S315E07B08200000000000000000000000000000000067 +S315E07B08300000000000000000000000000000000057 +S315E07B08400000000000000000000000000000000047 +S315E07B08500000000000000000000000000000000037 +S315E07B08600000000000000000000000000000000027 +S315E07B08700000000000000000000000000000000017 +S315E07B08800000000000000000000000000000000007 +S315E07B089000000000000000000000000000000000F7 +S315E07B08A00000000000000000000000003E49000060 +S315E07B08B000000000000000000000000000000000D7 +S315E07B08C000000000000000000000000000000000C7 +S315E07B08D000000000000000000000000000000000B7 +S315E07B08E000000000000000000000000000000000A7 +S315E07B08F00000000000000000000000000000000097 +S315E07B09000000000000000000000000000000000086 +S315E07B09100000000000000000000000000000000076 +S315E07B09200000000000000000000000000000000066 +S315E07B09300000000000000000000000000000000056 +S315E07B09400000000000000000000000000000000046 +S315E07B09500000000000000000000000000000000036 +S315E07B09600000000000000000000000000000000026 +S315E07B09700000000000000000000000000000000016 +S315E07B09800000000000000000000000000000000006 +S315E07B099000000000000000000000000000000000F6 +S315E07B09A000000000000000000000000000000000E6 +S315E07B09B000000000000000000000000000000000D6 +S315E07B09C000000000000000000000000000000000C6 +S315E07B09D000000000000000000000000000000000B6 +S315E07B09E000000000000000000000000000000000A6 +S315E07B09F00000000000000000000000000000000096 +S315E07B0A000000000000000000000000000000000085 +S315E07B0A100000000000000000000000000000000075 +S315E07B0A2000000000003E49000000000000000000DE +S315E07B0A300000000000000000000000000000000055 +S315E07B0A400000000000000000000000000000000045 +S315E07B0A500000000000000000000000000000000035 +S315E07B0A600000000000000000000000000000000025 +S315E07B0A700000000000000000000000000000000015 +S315E07B0A800000000000000000000000000000000005 +S315E07B0A9000000000000000000000000000000000F5 +S315E07B0AA000000000000000000000000000000000E5 +S315E07B0AB000000000000000000000000000000000D5 +S315E07B0AC000000000000000000000000000000000C5 +S315E07B0AD000000000000000000000000000000000B5 +S315E07B0AE000000000000000000000000000000000A5 +S315E07B0AF00000000000000000000000000000000095 +S315E07B0B000000000000000000000000000000000084 +S315E07B0B100000000000000000000000000000000074 +S315E07B0B200000000000000000000000000000000064 +S315E07B0B300000000000000000000000000000000054 +S315E07B0B400000000000000000000000000000000044 +S315E07B0B500000000000000000000000000000000034 +S315E07B0B600000000000000000000000000000000024 +S315E07B0B700000000000000000000000000000000014 +S315E07B0B800000000000000000000000000000000004 +S315E07B0B9000000000000000000000000000003E496D +S315E07B0BA000000000000000000000000000000000E4 +S315E07B0BB000000000000000000000000000000000D4 +S315E07B0BC000000000000000000000000000000000C4 +S315E07B0BD000000000000000000000000000000000B4 +S315E07B0BE000000000000000000000000000000000A4 +S315E07B0BF00000000000000000000000000000000094 +S315E07B0C000000000000000000000000000000000083 +S315E07B0C100000000000000000000000000000000073 +S315E07B0C200000000000000000000000000000000063 +S315E07B0C300000000000000000000000000000000053 +S315E07B0C400000000000000000000000000000000043 +S315E07B0C500000000000000000000000000000000033 +S315E07B0C600000000000000000000000000000000023 +S315E07B0C700000000000000000000000000000000013 +S315E07B0C800000000000000000000000000000000003 +S315E07B0C9000000000000000000000000000000000F3 +S315E07B0CA000000000000000000000000000000000E3 +S315E07B0CB000000000000000000000000000000000D3 +S315E07B0CC000000000000000000000000000000000C3 +S315E07B0CD000000000000000000000000000000000B3 +S315E07B0CE000000000000000000000000000000000A3 +S315E07B0CF00000000000000000000000000000000093 +S315E07B0D000000000000000000000000000000000082 +S315E07B0D10000000000000003E4900000000000000EB +S315E07B0D200000000000000000000000000000000062 +S315E07B0D300000000000000000000000000000000052 +S315E07B0D400000000000000000000000000000000042 +S315E07B0D500000000000000000000000000000000032 +S315E07B0D600000000000000000000000000000000022 +S315E07B0D700000000000000000000000000000000012 +S315E07B0D800000000000000000000000000000000002 +S315E07B0D9000000000000000000000000000000000F2 +S315E07B0DA000000000000000000000000000000000E2 +S315E07B0DB000000000000000000000000000000000D2 +S315E07B0DC000000000000000000000000000000000C2 +S315E07B0DD000000000000000000000000000000000B2 +S315E07B0DE000000000000000000000000000000000A2 +S315E07B0DF00000000000000000000000000000000092 +S315E07B0E000000000000000000000000000000000081 +S315E07B0E100000000000000000000000000000000071 +S315E07B0E200000000000000000000000000000000061 +S315E07B0E300000000000000000000000000000000051 +S315E07B0E400000000000000000000000000000000041 +S315E07B0E500000000000000000000000000000000031 +S315E07B0E600000000000000000000000000000000021 +S315E07B0E700000000000000000000000000000000011 +S315E07B0E800000000000000000000000000000000001 +S315E07B0E903E4900000000000000000000000000006A +S315E07B0EA000000000000000000000000000000000E1 +S315E07B0EB000000000000000000000000000000000D1 +S315E07B0EC000000000000000000000000000000000C1 +S315E07B0ED000000000000000000000000000000000B1 +S315E07B0EE000000000000000000000000000000000A1 +S315E07B0EF00000000000000000000000000000000091 +S315E07B0F000000000000000000000000000000000080 +S315E07B0F100000000000000000000000000000000070 +S315E07B0F200000000000000000000000000000000060 +S315E07B0F300000000000000000000000000000000050 +S315E07B0F400000000000000000000000000000000040 +S315E07B0F500000000000000000000000000000000030 +S315E07B0F600000000000000000000000000000000020 +S315E07B0F700000000000000000000000000000000010 +S315E07B0F800000000000000000000000000000000000 +S315E07B0F9000000000000000000000000000000000F0 +S315E07B0FA000000000000000000000000000000000E0 +S315E07B0FB000000000000000000000000000000000D0 +S315E07B0FC000000000000000000000000000000000C0 +S315E07B0FD000000000000000000000000000000000B0 +S315E07B0FE000000000000000000000000000000000A0 +S315E07B0FF00000000000000000000000000000000090 +S315E07B10000000000000000000003E490000000000F8 +S315E07B1010000000000000000000000000000000006F +S315E07B1020000000000000000000000000000000005F +S315E07B1030000000000000000000000000000000004F +S315E07B1040000000000000000000000000000000003F +S315E07B1050000000000000000000000000000000002F +S315E07B1060000000000000000000000000000000001F +S315E07B1070000000000000000000000000000000000F +S315E07B108000000000000000000000000000000000FF +S315E07B109000000000000000000000000000000000EF +S315E07B10A000000000000000000000000000000000DF +S315E07B10B000000000000000000000000000000000CF +S315E07B10C000000000000000000000000000000000BF +S315E07B10D000000000000000000000000000000000AF +S315E07B10E0000000000000000000000000000000009F +S315E07B10F0000000000000000000000000000000008F +S315E07B1100000000000000000000000000000000007E +S315E07B1110000000000000000000000000000000006E +S315E07B1120000000000000000000000000000000005E +S315E07B1130000000000000000000000000000000004E +S315E07B1140000000000000000000000000000000003E +S315E07B1150000000000000000000000000000000002E +S315E07B1160000000000000000000000000000000001E +S315E07B1170000000000000000000000000000000000E +S315E07B118000003E4900000000000000000000000077 +S315E07B119000000000000000000000000000000000EE +S315E07B11A000000000000000000000000000000000DE +S315E07B11B000000000000000000000000000000000CE +S315E07B11C000000000000000000000000000000000BE +S315E07B11D000000000000000000000000000000000AE +S315E07B11E0000000000000000000000000000000009E +S315E07B11F0000000000000000000000000000000008E +S315E07B1200000000000000000000000000000000007D +S315E07B1210000000000000000000000000000000006D +S315E07B1220000000000000000000000000000000005D +S315E07B1230000000000000000000000000000000004D +S315E07B1240000000000000000000000000000000003D +S315E07B1250000000000000000000000000000000002D +S315E07B1260000000000000000000000000000000001D +S315E07B1270000000000000000000000000000000000D +S315E07B128000000000000000000000000000000000FD +S315E07B129000000000000000000000000000000000ED +S315E07B12A000000000000000000000000000000000DD +S315E07B12B000000000000000000000000000000000CD +S315E07B12C000000000000000000000000000000000BD +S315E07B12D000000000000000000000000000000000AD +S315E07B12E0000000000000000000000000000000009D +S315E07B12F000000000000000000000003E4900000006 +S315E07B1300000000000000000000000000000000007C +S315E07B1310000000000000000000000000000000006C +S315E07B1320000000000000000000000000000000005C +S315E07B1330000000000000000000000000000000004C +S315E07B1340000000000000000000000000000000003C +S315E07B1350000000000000000000000000000000002C +S315E07B1360000000000000000000000000000000001C +S315E07B1370000000000000000000000000000000000C +S315E07B138000000000000000000000000000000000FC +S315E07B139000000000000000000000000000000000EC +S315E07B13A000000000000000000000000000000000DC +S315E07B13B000000000000000000000000000000000CC +S315E07B13C000000000000000000000000000000000BC +S315E07B13D000000000000000000000000000000000AC +S315E07B13E0000000000000000000000000000000009C +S315E07B13F0000000000000000000000000000000008C +S315E07B1400000000000000000000000000000000007B +S315E07B1410000000000000000000000000000000006B +S315E07B1420000000000000000000000000000000005B +S315E07B1430000000000000000000000000000000004B +S315E07B1440000000000000000000000000000000003B +S315E07B1450000000000000000000000000000000002B +S315E07B1460000000000000000000000000000000001B +S315E07B1470000000003E490000000000000000000084 +S315E07B148000000000000000000000000000000000FB +S315E07B149000000000000000000000000000000000EB +S315E07B14A000000000000000000000000000000000DB +S315E07B14B000000000000000000000000000000000CB +S315E07B14C000000000000000000000000000000000BB +S315E07B14D000000000000000000000000000000000AB +S315E07B14E0000000000000000000000000000000009B +S315E07B14F0000000000000000000000000000000008B +S315E07B1500000000000000000000000000000000007A +S315E07B1510000000000000000000000000000000006A +S315E07B1520000000000000000000000000000000005A +S315E07B1530000000000000000000000000000000004A +S315E07B1540000000000000000000000000000000003A +S315E07B1550000000000000000000000000000000002A +S315E07B1560000000000000000000000000000000001A +S315E07B1570000000000000000000000000000000000A +S315E07B158000000000000000000000000000000000FA +S315E07B159000000000000000000000000000000000EA +S315E07B15A000000000000000000000000000000000DA +S315E07B15B000000000000000000000000000000000CA +S315E07B15C000000000000000000000000000000000BA +S315E07B15D000000000000000000000000000000000AA +S315E07B15E0000000000000000000000000003E490013 +S315E07B15F0000000000000000000000000000000008A +S315E07B16000000000000000000000000000000000079 +S315E07B16100000000000000000000000000000000069 +S315E07B16200000000000000000000000000000000059 +S315E07B16300000000000000000000000000000000049 +S315E07B16400000000000000000000000000000000039 +S315E07B16500000000000000000000000000000000029 +S315E07B16600000000000000000000000000000000019 +S315E07B16700000000000000000000000000000000009 +S315E07B168000000000000000000000000000000000F9 +S315E07B169000000000000000000000000000000000E9 +S315E07B16A000000000000000000000000000000000D9 +S315E07B16B000000000000000000000000000000000C9 +S315E07B16C000000000000000000000000000000000B9 +S315E07B16D000000000000000000000000000000000A9 +S315E07B16E00000000000000000000000000000000099 +S315E07B16F00000000000000000000000000000000089 +S315E07B17000000000000000000000000000000000078 +S315E07B17100000000000000000000000000000000068 +S315E07B17200000000000000000000000000000000058 +S315E07B17300000000000000000000000000000000048 +S315E07B17400000000000000000000000000000000038 +S315E07B17500000000000000000000000000000000028 +S315E07B17600000000000003E49000000000000000091 +S315E07B17700000000000000000000000000000000008 +S315E07B178000000000000000000000000000000000F8 +S315E07B179000000000000000000000000000000000E8 +S315E07B17A000000000000000000000000000000000D8 +S315E07B17B000000000000000000000000000000000C8 +S315E07B17C000000000000000000000000000000000B8 +S315E07B17D000000000000000000000000000000000A8 +S315E07B17E00000000000000000000000000000000098 +S315E07B17F00000000000000000000000000000000088 +S315E07B18000000000000000000000000000000000077 +S315E07B18100000000000000000000000000000000067 +S315E07B18200000000000000000000000000000000057 +S315E07B18300000000000000000000000000000000047 +S315E07B18400000000000000000000000000000000037 +S315E07B18500000000000000000000000000000000027 +S315E07B18600000000000000000000000000000000017 +S315E07B18700000000000000000000000000000000007 +S315E07B188000000000000000000000000000000000F7 +S315E07B189000000000000000000000000000000000E7 +S315E07B18A000000000000000000000000000000000D7 +S315E07B18B000000000000000000000000000000000C7 +S315E07B18C000000000000000000000000000000000B7 +S315E07B18D00000000000000000000000000000003E69 +S315E07B18E0490000000000000000000000000000004E +S315E07B18F00000000000000000000000000000000087 +S315E07B19000000000000000000000000000000000076 +S315E07B19100000000000000000000000000000000066 +S315E07B19200000000000000000000000000000000056 +S315E07B19300000000000000000000000000000000046 +S315E07B19400000000000000000000000000000000036 +S315E07B19500000000000000000000000000000000026 +S315E07B19600000000000000000000000000000000016 +S315E07B19700000000000000000000000000000000006 +S315E07B198000000000000000000000000000000000F6 +S315E07B199000000000000000000000000000000000E6 +S315E07B19A000000000000000000000000000000000D6 +S315E07B19B000000000000000000000000000000000C6 +S315E07B19C000000000000000000000000000000000B6 +S315E07B19D000000000000000000000000000000000A6 +S315E07B19E00000000000000000000000000000000096 +S315E07B19F00000000000000000000000000000000086 +S315E07B1A000000000000000000000000000000000075 +S315E07B1A100000000000000000000000000000000065 +S315E07B1A200000000000000000000000000000000055 +S315E07B1A300000000000000000000000000000000045 +S315E07B1A400000000000000000000000000000000035 +S315E07B1A5000000000000000003E490000000000009E +S315E07B1A600000000000000000000000000000000015 +S315E07B1A700000000000000000000000000000000005 +S315E07B1A8000000000000000000000000000000000F5 +S315E07B1A9000000000000000000000000000000000E5 +S315E07B1AA000000000000000000000000000000000D5 +S315E07B1AB000000000000000000000000000000000C5 +S315E07B1AC000000000000000000000000000000000B5 +S315E07B1AD000000000000000000000000000000000A5 +S315E07B1AE00000000000000000000000000000000095 +S315E07B1AF00000000000000000000000000000000085 +S315E07B1B000000000000000000000000000000000074 +S315E07B1B100000000000000000000000000000000064 +S315E07B1B200000000000000000000000000000000054 +S315E07B1B300000000000000000000000000000000044 +S315E07B1B400000000000000000000000000000000034 +S315E07B1B500000000000000000000000000000000024 +S315E07B1B600000000000000000000000000000000014 +S315E07B1B700000000000000000000000000000000004 +S315E07B1B8000000000000000000000000000000000F4 +S315E07B1B9000000000000000000000000000000000E4 +S315E07B1BA000000000000000000000000000000000D4 +S315E07B1BB000000000000000000000000000000000C4 +S315E07B1BC000000000000000000000000000000000B4 +S315E07B1BD0003E49000000000000000000000000001D +S315E07B1BE00000000000000000000000000000000094 +S315E07B1BF00000000000000000000000000000000084 +S315E07B1C000000000000000000000000000000000073 +S315E07B1C100000000000000000000000000000000063 +S315E07B1C200000000000000000000000000000000053 +S315E07B1C300000000000000000000000000000000043 +S315E07B1C400000000000000000000000000000000033 +S315E07B1C500000000000000000000000000000000023 +S315E07B1C600000000000000000000000000000000013 +S315E07B1C700000000000000000000000000000000003 +S315E07B1C8000000000000000000000000000000000F3 +S315E07B1C9000000000000000000000000000000000E3 +S315E07B1CA000000000000000000000000000000000D3 +S315E07B1CB000000000000000000000000000000000C3 +S315E07B1CC000000000000000000000000000000000B3 +S315E07B1CD000000000000000000000000000000000A3 +S315E07B1CE00000000000000000000000000000000093 +S315E07B1CF00000000000000000000000000000000083 +S315E07B1D000000000000000000000000000000000072 +S315E07B1D100000000000000000000000000000000062 +S315E07B1D200000000000000000000000000000000052 +S315E07B1D300000000000000000000000000000000042 +S315E07B1D40000000000000000000003E4900000000AB +S315E07B1D500000000000000000000000000000000022 +S315E07B1D600000000000000000000000000000000012 +S315E07B1D700000000000000000000000000000000002 +S315E07B1D8000000000000000000000000000000000F2 +S315E07B1D9000000000000000000000000000000000E2 +S315E07B1DA000000000000000000000000000000000D2 +S315E07B1DB000000000000000000000000000000000C2 +S315E07B1DC000000000000000000000000000000000B2 +S315E07B1DD000000000000000000000000000000000A2 +S315E07B1DE00000000000000000000000000000000092 +S315E07B1DF00000000000000000000000000000000082 +S315E07B1E000000000000000000000000000000000071 +S315E07B1E100000000000000000000000000000000061 +S315E07B1E200000000000000000000000000000000051 +S315E07B1E300000000000000000000000000000000041 +S315E07B1E400000000000000000000000000000000031 +S315E07B1E500000000000000000000000000000000021 +S315E07B1E600000000000000000000000000000000011 +S315E07B1E700000000000000000000000000000000001 +S315E07B1E8000000000000000000000000000000000F1 +S315E07B1E9000000000000000000000000000000000E1 +S315E07B1EA000000000000000000000000000000000D1 +S315E07B1EB000000000000000000000000000000000C1 +S315E07B1EC00000003E4900000000000000000000002A +S315E07B1ED000000000000000000000000000000000A1 +S315E07B1EE00000000000000000000000000000000091 +S315E07B1EF00000000000000000000000000000000081 +S315E07B1F000000000000000000000000000000000070 +S315E07B1F100000000000000000000000000000000060 +S315E07B1F200000000000000000000000000000000050 +S315E07B1F300000000000000000000000000000000040 +S315E07B1F400000000000000000000000000000000030 +S315E07B1F500000000000000000000000000000000020 +S315E07B1F600000000000000000000000000000000010 +S315E07B1F700000000000000000000000000000000000 +S315E07B1F8000000000000000000000000000000000F0 +S315E07B1F9000000000000000000000000000000000E0 +S315E07B1FA000000000000000000000000000000000D0 +S315E07B1FB000000000000000000000000000000000C0 +S315E07B1FC000000000000000000000000000000000B0 +S315E07B1FD000000000000000000000000000000000A0 +S315E07B1FE00000000000000000000000000000000090 +S315E07B1FF00000000000000000000000000000000080 +S315E07B2000000000000000000000000000000000006F +S315E07B2010000000000000000000000000000000005F +S315E07B2020000000000000000000000000000000004F +S315E07B20300000000000000000000000003E490000B8 +S315E07B2040000000000000000000000000000000002F +S315E07B2050000000000000000000000000000000001F +S315E07B2060000000000000000000000000000000000F +S315E07B207000000000000000000000000000000000FF +S315E07B208000000000000000000000000000000000EF +S315E07B209000000000000000000000000000000000DF +S315E07B20A000000000000000000000000000000000CF +S315E07B20B000000000000000000000000000000000BF +S315E07B20C000000000000000000000000000000000AF +S315E07B20D0000000000000000000000000000000009F +S315E07B20E0000000000000000000000000000000008F +S315E07B20F0000000000000000000000000000000007F +S315E07B2100000000000000000000000000000000006E +S315E07B2110000000000000000000000000000000005E +S315E07B2120000000000000000000000000000000004E +S315E07B2130000000000000000000000000000000003E +S315E07B2140000000000000000000000000000000002E +S315E07B2150000000000000000000000000000000001E +S315E07B2160000000000000000000000000000000000E +S315E07B217000000000000000000000000000000000FE +S315E07B218000000000000000000000000000000000EE +S315E07B219000000000000000000000000000000000DE +S315E07B21A000000000000000000000000000000000CE +S315E07B21B000000000003E4900000000000000000037 +S315E07B21C000000000000000000000000000000000AE +S315E07B21D0000000000000000000000000000000009E +S315E07B21E0000000000000000000000000000000008E +S315E07B21F0000000000000000000000000000000007E +S315E07B2200000000000000000000000000000000006D +S315E07B2210000000000000000000000000000000005D +S315E07B2220000000000000000000000000000000004D +S315E07B2230000000000000000000000000000000003D +S315E07B2240000000000000000000000000000000002D +S315E07B2250000000000000000000000000000000001D +S315E07B2260000000000000000000000000000000000D +S315E07B227000000000000000000000000000000000FD +S315E07B228000000000000000000000000000000000ED +S315E07B229000000000000000000000000000000000DD +S315E07B22A000000000000000000000000000000000CD +S315E07B22B000000000000000000000000000000000BD +S315E07B22C000000000000000000000000000000000AD +S315E07B22D0000000000000000000000000000000009D +S315E07B22E0000000000000000000000000000000008D +S315E07B22F0000000000000000000000000000000007D +S315E07B2300000000000000000000000000000000006C +S315E07B2310000000000000000000000000000000005C +S315E07B232000000000000000000000000000003E49C5 +S315E07B2330000000000000000000000000000000003C +S315E07B2340000000000000000000000000000000002C +S315E07B2350000000000000000000000000000000001C +S315E07B2360000000000000000000000000000000000C +S315E07B237000000000000000000000000000000000FC +S315E07B238000000000000000000000000000000000EC +S315E07B239000000000000000000000000000000000DC +S315E07B23A000000000000000000000000000000000CC +S315E07B23B000000000000000000000000000000000BC +S315E07B23C000000000000000000000000000000000AC +S315E07B23D0000000000000000000000000000000009C +S315E07B23E0000000000000000000000000000000008C +S315E07B23F0000000000000000000000000000000007C +S315E07B2400000000000000000000000000000000006B +S315E07B2410000000000000000000000000000000005B +S315E07B2420000000000000000000000000000000004B +S315E07B2430000000000000000000000000000000003B +S315E07B2440000000000000000000000000000000002B +S315E07B2450000000000000000000000000000000001B +S315E07B2460000000000000000000000000000000000B +S315E07B247000000000000000000000000000000000FB +S315E07B248000000000000000000000000000000000EB +S315E07B249000000000000000000000000000000000DB +S315E07B24A0000000000000003E490000000000000044 +S315E07B24B000000000000000000000000000000000BB +S315E07B24C000000000000000000000000000000000AB +S315E07B24D0000000000000000000000000000000009B +S315E07B24E0000000000000000000000000000000008B +S315E07B24F0000000000000000000000000000000007B +S315E07B2500000000000000000000000000000000006A +S315E07B2510000000000000000000000000000000005A +S315E07B2520000000000000000000000000000000004A +S315E07B2530000000000000000000000000000000003A +S315E07B2540000000000000000000000000000000002A +S315E07B2550000000000000000000000000000000001A +S315E07B2560000000000000000000000000000000000A +S315E07B257000000000000000000000000000000000FA +S315E07B258000000000000000000000000000000000EA +S315E07B259000000000000000000000000000000000DA +S315E07B25A000000000000000000000000000000000CA +S315E07B25B000000000000000000000000000000000BA +S315E07B25C000000000000000000000000000000000AA +S315E07B25D0000000000000000000000000000000009A +S315E07B25E0000000000000000000000000000000008A +S315E07B25F0000000000000000000000000000000007A +S315E07B26000000000000000000000000000000000069 +S315E07B26100000000000000000000000000000000059 +S315E07B26203E490000000000000000000000000000C2 +S315E07B26300000000000000000000000000000000039 +S315E07B26400000000000000000000000000000000029 +S315E07B26500000000000000000000000000000000019 +S315E07B26600000000000000000000000000000000009 +S315E07B267000000000000000000000000000000000F9 +S315E07B268000000000000000000000000000000000E9 +S315E07B269000000000000000000000000000000000D9 +S315E07B26A000000000000000000000000000000000C9 +S315E07B26B000000000000000000000000000000000B9 +S315E07B26C000000000000000000000000000000000A9 +S315E07B26D00000000000000000000000000000000099 +S315E07B26E00000000000000000000000000000000089 +S315E07B26F00000000000000000000000000000000079 +S315E07B27000000000000000000000000000000000068 +S315E07B27100000000000000000000000000000000058 +S315E07B27200000000000000000000000000000000048 +S315E07B27300000000000000000000000000000000038 +S315E07B27400000000000000000000000000000000028 +S315E07B27500000000000000000000000000000000018 +S315E07B27600000000000000000000000000000000008 +S315E07B277000000000000000000000000000000000F8 +S315E07B278000000000000000000000000000000000E8 +S315E07B27900000000000000000003E49000000000051 +S315E07B27A000000000000000000000000000000000C8 +S315E07B27B000000000000000000000000000000000B8 +S315E07B27C000000000000000000000000000000000A8 +S315E07B27D00000000000000000000000000000000098 +S315E07B27E00000000000000000000000000000000088 +S315E07B27F00000000000000000000000000000000078 +S315E07B28000000000000000000000000000000000067 +S315E07B28100000000000000000000000000000000057 +S315E07B28200000000000000000000000000000000047 +S315E07B28300000000000000000000000000000000037 +S315E07B28400000000000000000000000000000000027 +S315E07B28500000000000000000000000000000000017 +S315E07B28600000000000000000000000000000000007 +S315E07B287000000000000000000000000000000000F7 +S315E07B288000000000000000000000000000000000E7 +S315E07B289000000000000000000000000000000000D7 +S315E07B28A000000000000000000000000000000000C7 +S315E07B28B000000000000000000000000000000000B7 +S315E07B28C000000000000000000000000000000000A7 +S315E07B28D00000000000000000000000000000000097 +S315E07B28E00000000000000000000000000000000087 +S315E07B28F00000000000000000000000000000000077 +S315E07B29000000000000000000000000000000000066 +S315E07B291000003E49000000000000000000000000CF +S315E07B29200000000000000000000000000000000046 +S315E07B29300000000000000000000000000000000036 +S315E07B29400000000000000000000000000000000026 +S315E07B29500000000000000000000000000000000016 +S315E07B29600000000000000000000000000000000006 +S315E07B297000000000000000000000000000000000F6 +S315E07B298000000000000000000000000000000000E6 +S315E07B299000000000000000000000000000000000D6 +S315E07B29A000000000000000000000000000000000C6 +S315E07B29B000000000000000000000000000000000B6 +S315E07B29C000000000000000000000000000000000A6 +S315E07B29D00000000000000000000000000000000096 +S315E07B29E00000000000000000000000000000000086 +S315E07B29F00000000000000000000000000000000076 +S315E07B2A000000000000000000000000000000000065 +S315E07B2A100000000000000000000000000000000055 +S315E07B2A200000000000000000000000000000000045 +S315E07B2A300000000000000000000000000000000035 +S315E07B2A400000000000000000000000000000000025 +S315E07B2A500000000000000000000000000000000015 +S315E07B2A600000000000000000000000000000000005 +S315E07B2A7000000000000000000000000000000000F5 +S315E07B2A8000000000000000000000003E490000005E +S315E07B2A9000000000000000000000000000000000D5 +S315E07B2AA000000000000000000000000000000000C5 +S315E07B2AB000000000000000000000000000000000B5 +S315E07B2AC000000000000000000000000000000000A5 +S315E07B2AD00000000000000000000000000000000095 +S315E07B2AE00000000000000000000000000000000085 +S315E07B2AF00000000000000000000000000000000075 +S315E07B2B000000000000000000000000000000000064 +S315E07B2B100000000000000000000000000000000054 +S315E07B2B200000000000000000000000000000000044 +S315E07B2B300000000000000000000000000000000034 +S315E07B2B400000000000000000000000000000000024 +S315E07B2B500000000000000000000000000000000014 +S315E07B2B600000000000000000000000000000000004 +S315E07B2B7000000000000000000000000000000000F4 +S315E07B2B8000000000000000000000000000000000E4 +S315E07B2B9000000000000000000000000000000000D4 +S315E07B2BA000000000000000000000000000000000C4 +S315E07B2BB000000000000000000000000000000000B4 +S315E07B2BC000000000000000000000000000000000A4 +S315E07B2BD00000000000000000000000000000000094 +S315E07B2BE00000000000000000000000000000000084 +S315E07B2BF00000000000000000000000000000000074 +S315E07B2C00000000003E4900000000000000000000DC +S315E07B2C100000000000000000000000000000000053 +S315E07B2C200000000000000000000000000000000043 +S315E07B2C300000000000000000000000000000000033 +S315E07B2C400000000000000000000000000000000023 +S315E07B2C500000000000000000000000000000000013 +S315E07B2C600000000000000000000000000000000003 +S315E07B2C7000000000000000000000000000000000F3 +S315E07B2C8000000000000000000000000000000000E3 +S315E07B2C9000000000000000000000000000000000D3 +S315E07B2CA000000000000000000000000000000000C3 +S315E07B2CB000000000000000000000000000000000B3 +S315E07B2CC000000000000000000000000000000000A3 +S315E07B2CD00000000000000000000000000000000093 +S315E07B2CE00000000000000000000000000000000083 +S315E07B2CF00000000000000000000000000000000073 +S315E07B2D000000000000000000000000000000000062 +S315E07B2D100000000000000000000000000000000052 +S315E07B2D200000000000000000000000000000000042 +S315E07B2D300000000000000000000000000000000032 +S315E07B2D400000000000000000000000000000000022 +S315E07B2D500000000000000000000000000000000012 +S315E07B2D600000000000000000000000000000000002 +S315E07B2D70000000000000000000000000003E49006B +S315E07B2D8000000000000000000000000000000000E2 +S315E07B2D9000000000000000000000000000000000D2 +S315E07B2DA000000000000000000000000000000000C2 +S315E07B2DB000000000000000000000000000000000B2 +S315E07B2DC000000000000000000000000000000000A2 +S315E07B2DD00000000000000000000000000000000092 +S315E07B2DE00000000000000000000000000000000082 +S315E07B2DF00000000000000000000000000000000072 +S315E07B2E000000000000000000000000000000000061 +S315E07B2E100000000000000000000000000000000051 +S315E07B2E200000000000000000000000000000000041 +S315E07B2E300000000000000000000000000000000031 +S315E07B2E400000000000000000000000000000000021 +S315E07B2E500000000000000000000000000000000011 +S315E07B2E600000000000000000000000000000000001 +S315E07B2E7000000000000000000000000000000000F1 +S315E07B2E8000000000000000000000000000000000E1 +S315E07B2E9000000000000000000000000000000000D1 +S315E07B2EA000000000000000000000000000000000C1 +S315E07B2EB000000000000000000000000000000000B1 +S315E07B2EC000000000000000000000000000000000A1 +S315E07B2ED00000000000000000000000000000000091 +S315E07B2EE00000000000000000000000000000000081 +S315E07B2EF00000000000003E490000000000000000EA +S315E07B2F000000000000000000000000000000000060 +S315E07B2F100000000000000000000000000000000050 +S315E07B2F200000000000000000000000000000000040 +S315E07B2F300000000000000000000000000000000030 +S315E07B2F400000000000000000000000000000000020 +S315E07B2F500000000000000000000000000000000010 +S315E07B2F600000000000000000000000000000000000 +S315E07B2F7000000000000000000000000000000000F0 +S315E07B2F8000000000000000000000000000000000E0 +S315E07B2F9000000000000000000000000000000000D0 +S315E07B2FA000000000000000000000000000000000C0 +S315E07B2FB000000000000000000000000000000000B0 +S315E07B2FC000000000000000000000000000000000A0 +S315E07B2FD00000000000000000000000000000000090 +S315E07B2FE00000000000000000000000000000000080 +S315E07B2FF00000000000000000000000000000000070 +S315E07B3000000000000000000000000000000000005F +S315E07B3010000000000000000000000000000000004F +S315E07B3020000000000000000000000000000000003F +S315E07B3030000000000000000000000000000000002F +S315E07B3040000000000000000000000000000000001F +S315E07B3050000000000000000000000000000000000F +S315E07B30600000000000000000000000000000003EC1 +S315E07B307049000000000000000000000000000000A6 +S315E07B308000000000000000000000000000000000DF +S315E07B309000000000000000000000000000000000CF +S315E07B30A000000000000000000000000000000000BF +S315E07B30B000000000000000000000000000000000AF +S315E07B30C0000000000000000000000000000000009F +S315E07B30D0000000000000000000000000000000008F +S315E07B30E0000000000000000000000000000000007F +S315E07B30F0000000000000000000000000000000006F +S315E07B3100000000000000000000000000000000005E +S315E07B3110000000000000000000000000000000004E +S315E07B3120000000000000000000000000000000003E +S315E07B3130000000000000000000000000000000002E +S315E07B3140000000000000000000000000000000001E +S315E07B3150000000000000000000000000000000000E +S315E07B316000000000000000000000000000000000FE +S315E07B317000000000000000000000000000000000EE +S315E07B318000000000000000000000000000000000DE +S315E07B319000000000000000000000000000000000CE +S315E07B31A000000000000000000000000000000000BE +S315E07B31B000000000000000000000000000000000AE +S315E07B31C0000000000000000000000000000000009E +S315E07B31D0000000000000000000000000000000008E +S315E07B31E000000000000000003E49000000000000F7 +S315E07B31F0000000000000000000000000000000006E +S315E07B3200000000000000000000000000000000005D +S315E07B3210000000000000000000000000000000004D +S315E07B3220000000000000000000000000000000003D +S315E07B3230000000000000000000000000000000002D +S315E07B3240000000000000000000000000000000001D +S315E07B3250000000000000000000000000000000000D +S315E07B326000000000000000000000000000000000FD +S315E07B327000000000000000000000000000000000ED +S315E07B328000000000000000000000000000000000DD +S315E07B329000000000000000000000000000000000CD +S315E07B32A000000000000000000000000000000000BD +S315E07B32B000000000000000000000000000000000AD +S315E07B32C0000000000000000000000000000000009D +S315E07B32D0000000000000000000000000000000008D +S315E07B32E0000000000000000000000000000000007D +S315E07B32F0000000000000000000000000000000006D +S315E07B3300000000000000000000000000000000005C +S315E07B3310000000000000000000000000000000004C +S315E07B3320000000000000000000000000000000003C +S315E07B3330000000000000000000000000000000002C +S315E07B3340000000000000000000000000000000001C +S315E07B3350000000000000000000000000000000000C +S315E07B3360003E490000000000000000000000000075 +S315E07B337000000000000000000000000000000000EC +S315E07B338000000000000000000000000000000000DC +S315E07B339000000000000000000000000000000000CC +S315E07B33A000000000000000000000000000000000BC +S315E07B33B000000000000000000000000000000000AC +S315E07B33C0000000000000000000000000000000009C +S315E07B33D0000000000000000000000000000000008C +S315E07B33E0000000000000000000000000000000007C +S315E07B33F0000000000000000000000000000000006C +S315E07B3400000000000000000000000000000000005B +S315E07B3410000000000000000000000000000000004B +S315E07B3420000000000000000000000000000000003B +S315E07B3430000000000000000000000000000000002B +S315E07B3440000000000000000000000000000000001B +S315E07B3450000000000000000000000000000000000B +S315E07B346000000000000000000000000000000000FB +S315E07B347000000000000000000000000000000000EB +S315E07B348000000000000000000000000000000000DB +S315E07B349000000000000000000000000000000000CB +S315E07B34A000000000000000000000000000000000BB +S315E07B34B000000000000000000000000000000000AB +S315E07B34C0000000000000000000000000000000009B +S315E07B34D0000000000000000000003E490000000004 +S315E07B34E0000000000000000000000000000000007B +S315E07B34F0000000000000000000000000000000006B +S315E07B3500000000000000000000000000000000005A +S315E07B3510000000000000000000000000000000004A +S315E07B3520000000000000000000000000000000003A +S315E07B3530000000000000000000000000000000002A +S315E07B3540000000000000000000000000000000001A +S315E07B3550000000000000000000000000000000000A +S315E07B356000000000000000000000000000000000FA +S315E07B357000000000000000000000000000000000EA +S315E07B358000000000000000000000000000000000DA +S315E07B359000000000000000000000000000000000CA +S315E07B35A000000000000000000000000000000000BA +S315E07B35B000000000000000000000000000000000AA +S315E07B35C0000000000000000000000000000000009A +S315E07B35D0000000000000000000000000000000008A +S315E07B35E0000000000000000000000000000000007A +S315E07B35F0000000000000000000000000000000006A +S315E07B36000000000000000000000000000000000059 +S315E07B36100000000000000000000000000000000049 +S315E07B36200000000000000000000000000000000039 +S315E07B36300000000000000000000000000000000029 +S315E07B36400000000000000000000000000000000019 +S315E07B36500000003E49000000000000000000000082 +S315E07B366000000000000000000000000000000000F9 +S315E07B367000000000000000000000000000000000E9 +S315E07B368000000000000000000000000000000000D9 +S315E07B369000000000000000000000000000000000C9 +S315E07B36A000000000000000000000000000000000B9 +S315E07B36B000000000000000000000000000000000A9 +S315E07B36C00000000000000000000000000000000099 +S315E07B36D00000000000000000000000000000000089 +S315E07B36E00000000000000000000000000000000079 +S315E07B36F00000000000000000000000000000000069 +S315E07B37000000000000000000000000000000000058 +S315E07B37100000000000000000000000000000000048 +S315E07B37200000000000000000000000000000000038 +S315E07B37300000000000000000000000000000000028 +S315E07B37400000000000000000000000000000000018 +S315E07B37500000000000000000000000000000000008 +S315E07B376000000000000000000000000000000000F8 +S315E07B377000000000000000000000000000000000E8 +S315E07B378000000000000000000000000000000000D8 +S315E07B379000000000000000000000000000000000C8 +S315E07B37A000000000000000000000000000000000B8 +S315E07B37B000000000000000000000000000000000A8 +S315E07B37C00000000000000000000000003E49000011 +S315E07B37D00000000000000000000000000000000088 +S315E07B37E00000000000000000000000000000000078 +S315E07B37F00000000000000000000000000000000068 +S315E07B38000000000000000000000000000000000057 +S315E07B38100000000000000000000000000000000047 +S315E07B38200000000000000000000000000000000037 +S315E07B38300000000000000000000000000000000027 +S315E07B38400000000000000000000000000000000017 +S315E07B38500000000000000000000000000000000007 +S315E07B386000000000000000000000000000000000F7 +S315E07B387000000000000000000000000000000000E7 +S315E07B388000000000000000000000000000000000D7 +S315E07B389000000000000000000000000000000000C7 +S315E07B38A000000000000000000000000000000000B7 +S315E07B38B000000000000000000000000000000000A7 +S315E07B38C00000000000000000000000000000000097 +S315E07B38D00000000000000000000000000000000087 +S315E07B38E00000000000000000000000000000000077 +S315E07B38F00000000000000000000000000000000067 +S315E07B39000000000000000000000000000000000056 +S315E07B39100000000000000000000000000000000046 +S315E07B39200000000000000000000000000000000036 +S315E07B39300000000000000000000000000000000026 +S315E07B394000000000003E490000000000000000008F +S315E07B39500000000000000000000000000000000006 +S315E07B396000000000000000000000000000000000F6 +S315E07B397000000000000000000000000000000000E6 +S315E07B398000000000000000000000000000000000D6 +S315E07B399000000000000000000000000000000000C6 +S315E07B39A000000000000000000000000000000000B6 +S315E07B39B000000000000000000000000000000000A6 +S315E07B39C00000000000000000000000000000000096 +S315E07B39D00000000000000000000000000000000086 +S315E07B39E00000000000000000000000000000000076 +S315E07B39F00000000000000000000000000000000066 +S315E07B3A000000000000000000000000000000000055 +S315E07B3A100000000000000000000000000000000045 +S315E07B3A200000000000000000000000000000000035 +S315E07B3A300000000000000000000000000000000025 +S315E07B3A400000000000000000000000000000000015 +S315E07B3A500000000000000000000000000000000005 +S315E07B3A6000000000000000000000000000000000F5 +S315E07B3A7000000000000000000000000000000000E5 +S315E07B3A8000000000000000000000000000000000D5 +S315E07B3A9000000000000000000000000000000000C5 +S315E07B3AA000000000000000000000000000000000B5 +S315E07B3AB000000000000000000000000000003E491E +S315E07B3AC00000000000000000000000000000000095 +S315E07B3AD00000000000000000000000000000000085 +S315E07B3AE00000000000000000000000000000000075 +S315E07B3AF00000000000000000000000000000000065 +S315E07B3B000000000000000000000000000000000054 +S315E07B3B100000000000000000000000000000000044 +S315E07B3B200000000000000000000000000000000034 +S315E07B3B300000000000000000000000000000000024 +S315E07B3B400000000000000000000000000000000014 +S315E07B3B500000000000000000000000000000000004 +S315E07B3B6000000000000000000000000000000000F4 +S315E07B3B7000000000000000000000000000000000E4 +S315E07B3B8000000000000000000000000000000000D4 +S315E07B3B9000000000000000000000000000000000C4 +S315E07B3BA000000000000000000000000000000000B4 +S315E07B3BB000000000000000000000000000000000A4 +S315E07B3BC00000000000000000000000000000000094 +S315E07B3BD00000000000000000000000000000000084 +S315E07B3BE00000000000000000000000000000000074 +S315E07B3BF00000000000000000000000000000000064 +S315E07B3C000000000000000000000000000000000053 +S315E07B3C100000000000000000000000000000000043 +S315E07B3C200000000000000000000000000000000033 +S315E07B3C30000000000000003E49000000000000009C +S315E07B3C400000000000000000000000000000000013 +S315E07B3C500000000000000000000000000000000003 +S315E07B3C6000000000000000000000000000000000F3 +S315E07B3C7000000000000000000000000000000000E3 +S315E07B3C8000000000000000000000000000000000D3 +S315E07B3C9000000000000000000000000000000000C3 +S315E07B3CA000000000000000000000000000000000B3 +S315E07B3CB000000000000000000000000000000000A3 +S315E07B3CC00000000000000000000000000000000093 +S315E07B3CD00000000000000000000000000000000083 +S315E07B3CE00000000000000000000000000000000073 +S315E07B3CF00000000000000000000000000000000063 +S315E07B3D000000000000000000000000000000000052 +S315E07B3D100000000000000000000000000000000042 +S315E07B3D200000000000000000000000000000000032 +S315E07B3D300000000000000000000000000000000022 +S315E07B3D400000000000000000000000000000000012 +S315E07B3D500000000000000000000000000000000002 +S315E07B3D6000000000000000000000000000000000F2 +S315E07B3D7000000000000000000000000000000000E2 +S315E07B3D8000000000000000000000000000000000D2 +S315E07B3D9000000000000000000000000000000000C2 +S315E07B3DA000000000000000000000000000000000B2 +S315E07B3DB03E4900000000000000000000000000001B +S315E07B3DC00000000000000000000000000000000092 +S315E07B3DD00000000000000000000000000000000082 +S315E07B3DE00000000000000000000000000000000072 +S315E07B3DF00000000000000000000000000000000062 +S315E07B3E000000000000000000000000000000000051 +S315E07B3E100000000000000000000000000000000041 +S315E07B3E200000000000000000000000000000000031 +S315E07B3E300000000000000000000000000000000021 +S315E07B3E400000000000000000000000000000000011 +S315E07B3E500000000000000000000000000000000001 +S315E07B3E6000000000000000000000000000000000F1 +S315E07B3E7000000000000000000000000000000000E1 +S315E07B3E8000000000000000000000000000000000D1 +S315E07B3E9000000000000000000000000000000000C1 +S315E07B3EA000000000000000000000000000000000B1 +S315E07B3EB000000000000000000000000000000000A1 +S315E07B3EC00000000000000000000000000000000091 +S315E07B3ED00000000000000000000000000000000081 +S315E07B3EE00000000000000000000000000000000071 +S315E07B3EF00000000000000000000000000000000061 +S315E07B3F000000000000000000000000000000000050 +S315E07B3F100000000000000000000000000000000040 +S315E07B3F200000000000000000003E490000000000A9 +S315E07B3F300000000000000000000000000000000020 +S315E07B3F400000000000000000000000000000000010 +S315E07B3F500000000000000000000000000000000000 +S315E07B3F6000000000000000000000000000000000F0 +S315E07B3F7000000000000000000000000000000000E0 +S315E07B3F8000000000000000000000000000000000D0 +S315E07B3F9000000000000000000000000000000000C0 +S315E07B3FA000000000000000000000000000000000B0 +S315E07B3FB000000000000000000000000000000000A0 +S315E07B3FC00000000000000000000000000000000090 +S315E07B3FD00000000000000000000000000000000080 +S315E07B3FE00000000000000000000000000000000070 +S315E07B3FF00000000000000000000000000000000060 +S315E07B4000000000000000000000000000000000004F +S315E07B4010000000000000000000000000000000003F +S315E07B4020000000000000000000000000000000002F +S315E07B4030000000000000000000000000000000001F +S315E07B4040000000000000000000000000000000000F +S315E07B405000000000000000000000000000000000FF +S315E07B406000000000000000000000000000000000EF +S315E07B407000000000000000000000000000000000DF +S315E07B408000000000000000000000000000000000CF +S315E07B409000000000000000000000000000000000BF +S315E07B40A000003E4900000060000000000040000088 +S315E07B40B0000000000020002000004000000000001F +S315E07B40C000004000400000000000000000006000AF +S315E07B40D0000000000000000000004000200000001F +S315E07B40E0000000004000000020400000000040206F +S315E07B40F0404000004000000000004000000000005F +S315E07B410000002000200000004000000000000000CE +S315E07B4110000020402000000000000000000000407E +S315E07B4120202000000000000000000000400000406E +S315E07B413000004040200020000000404000000000DE +S315E07B414000000000000000400000408000002000EE +S315E07B41504000800000000000A0002000002000401E +S315E07B4160000020002000008000000000000000002E +S315E07B4170000000800020000040800020400040409E +S315E07B4180004000000000400000000060008000006E +S315E07B4190200000000000000040408000000020007E +S315E07B41A000000000000000000000000040800000EE +S315E07B41B00000000000004000C000000080004000DE +S315E07B41C000804000000000000000000000000000CE +S315E07B41D000004080000000000000C00000D00080AE +S315E07B41E000000000800000000080000000008000EE +S315E07B41F0000000000000000000000000400000001E +S315E07B4200000000008040000050008020000000009D +S315E07B42100000000000000000000000040600000033 +S315E07B4220000000000000000000000000000000002D +S315E07B4230000000000000002000400020000000009D +S315E07B424000000000000000000000000000400020AD +S315E07B425000000000200020000000000000000000BD +S315E07B4260000000400000000000000020402000002D +S315E07B4270000000000020000000000000000000407D +S315E07B4280200040000000400000000000000000002D +S315E07B4290004000000040000000200000000000001D +S315E07B42A000000000400000004000004040000000AD +S315E07B42B0006040000000000040000020000020007D +S315E07B42C0000000002000400000008000008000002D +S315E07B42D0002020000000200020002040000040005D +S315E07B42E0000000208000000000008000000000004D +S315E07B42F000002000000000E000004000000000001D +S315E07B4300000000000000000040008020004000002C +S315E07B431000000000000080004000002000402000FC +S315E07B4320000040008000000000000000000000402C +S315E07B433000000000000080000040000080000000DC +S315E07B4340000000000000000000000080800000000C +S315E07B435080400000400000008040000000004000FC +S315E07B436000000000000000000000400000000000AC +S315E07B4370000000000000C0000010001000004000BC +S315E07B438000000000000000000000000000000000CC +S315E07B43900000400055030000004000002000400084 +S315E07B43A040400000000000000000000020600000AC +S315E07B43B000002000000000004040000000400000BC +S315E07B43C0200000000000000040000000200000000C +S315E07B43D000000000000040000000400020002000BC +S315E07B43E0604000400000000000000000000000008C +S315E07B43F0002040000040000000000000000040007C +S315E07B4400000000006000200000000040000000008B +S315E07B441000000020000000000000000000000020FB +S315E07B442000000000200000000000000000004000CB +S315E07B4430000000000000004000002000008000003B +S315E07B4440000080400000000000000000000020002B +S315E07B4450800000000000E00000000000800000001B +S315E07B446000804000400000000040800000400000EB +S315E07B4470000040000000000000000020000000C0BB +S315E07B4480200000004000200000008000800000004B +S315E07B449020000000000080000040000000000000DB +S315E07B44A0000080008000000000004000400000002B +S315E07B44B0408000004000004000000000000000005B +S315E07B44C080800000000000000000000080000010FB +S315E07B44D080000000004000000000000000804000FB +S315E07B44E040008000000000802000000000004000CB +S315E07B44F0000000000000008020004000004000003B +S315E07B450000000000000000000020800000B1BF003A +S315E07B451000100000000000000000000000004000EA +S315E07B452000000000000000004000000000000000EA +S315E07B453000000000000000000000000000400000DA +S315E07B4540000000000000000000000000000000000A +S315E07B455000000000000000000000000000000000FA +S315E07B456000000000000000000000000000400000AA +S315E07B457020000000000000000000000000000000BA +S315E07B4580000000000000000040000000000000008A +S315E07B4590000000000000000000000020000000009A +S315E07B45A0000000000020000000000000000000008A +S315E07B45B0000000000020000000000000000000007A +S315E07B45C0000040004000400040008000008000008A +S315E07B45D0000000000000000000000000000020005A +S315E07B45E000800000000000000000200000000000CA +S315E07B45F0000020000000000000000000000000003A +S315E07B460000000000000000004000000000400000C9 +S315E07B461040800080000000000000000000000000F9 +S315E07B462000800000000000000000000000000000A9 +S315E07B463000000000000000000000000000004000D9 +S315E07B464000400000000000000000000000000000C9 +S315E07B465000000000004000000000400000008000F9 +S315E07B46600000008000008010000000008000000059 +S315E07B467000100000000000000000000000000000C9 +S315E07B4680000000400000B095000020000000002004 +S315E07B46900020000000000000000000000000000099 +S315E07B46A000000000000000000000000000000000A9 +S315E07B46B00000000040000000000000400000000019 +S315E07B46C00000000000000000000000000000000089 +S315E07B46D00000000000000000000000000000000079 +S315E07B46E00000200000000000000000000000000049 +S315E07B46F00000000000000000000040000000000019 +S315E07B47000000000000000000000000000000000048 +S315E07B47100000000000000000000000000000000038 +S315E07B472000000000000000200000000000000040C8 +S315E07B473000000000000000004000000000000000D8 +S315E07B47400000000000000000008000000000000088 +S315E07B475000000000000000000000000020000000D8 +S315E07B47608000000000000000000000000000000068 +S315E07B47700000000000000000004000000000000098 +S315E07B47800000000000000000000000000080000048 +S315E07B47900000000000000000000000000080000038 +S315E07B47A000000000000000000000000000000000A8 +S315E07B47B04000000000000000000000000000000058 +S315E07B47C00000000000000000000000004000000048 +S315E07B47D000000000008000000000000000000000F8 +S315E07B47E00010000080000010000000008000000048 +S315E07B47F0000000000000000000000000000000F464 +S315E07B48004D0000300000200000200020000000006A +S315E07B48100040002000002040600040000060402017 +S315E07B482040004000000000000040000040004000E7 +S315E07B48300000004000400040000000000000000057 +S315E07B48400000000020002000002000202000000067 +S315E07B485000000000000000000020002000600060F7 +S315E07B48600040204020000040400040000000000067 +S315E07B48704000400000004000400000400040000057 +S315E07B48800000000000000000000020002000200067 +S315E07B48900000002000002000000000004000002017 +S315E07B48A000204000400040204020200000000040E7 +S315E07B48B0004000004000004000404080C000C00057 +S315E07B48C0C0000080008080008000000080000080C7 +S315E07B48D0A000802000208020A00020800020000017 +S315E07B48E000000000002000200040402060000040E7 +S315E07B48F000200040000040000000C0004000004077 +S315E07B4900008000C0804080400040008080008000C6 +S315E07B491000000080000000808000800000008000B6 +S315E07B492000000000000000000040000000004000A6 +S315E07B49304000400000400000004000000000000016 +S315E07B494000400000400000C08040804000C0C000C6 +S315E07B49500080008080000000801090000090801036 +S315E07B496000103080801000802000000000000000F6 +S315E07B49700000000060004000436F00000000000084 +S315E07B498000000000000000000000000000000000C6 +S315E07B499000000000000000000000000000000000B6 +S315E07B49A000000000000000000000000000000000A6 +S315E07B49B00000000000000000000000000000000096 +S315E07B49C00000000000000000000000000000000086 +S315E07B49D00000000000000000000000000000000076 +S315E07B49E00000000000000000000000000000000066 +S315E07B49F00000000000000000000000000000000056 +S315E07B4A000000000000000000000000000000000045 +S315E07B4A100000000000000000000000000000000035 +S315E07B4A200000000000000000000000000000000025 +S315E07B4A300000000000000000000000000000000015 +S315E07B4A400000000000000000000000000000000005 +S315E07B4A5000000000000000000000000000000000F5 +S315E07B4A6000000000000000000000000000000000E5 +S315E07B4A7000000000000000000000000000000000D5 +S315E07B4A8000000000000000000000000000000000C5 +S315E07B4A9000000000000000000000000000000000B5 +S315E07B4AA000000000000000000000000000000000A5 +S315E07B4AB00000000000000000000000000000000095 +S315E07B4AC00000000000000000000000000000000085 +S315E07B4AD00000000000000000000000000000000075 +S315E07B4AE00000000000000000000000000000000065 +S315E07B4AF0003E4900000000000000000000000000CE +S315E07B4B000000000000000000000000000000000044 +S315E07B4B100000000000000020000000000000000014 +S315E07B4B200000000000000000000080000080000024 +S315E07B4B300000000000000000000000000000000014 +S315E07B4B400000000000000000000000000000000004 +S315E07B4B5000000000000010000000000000000000E4 +S315E07B4B6000000000000000000000000000000000E4 +S315E07B4B700000000000600000000000000000000074 +S315E07B4B800080000000000000000000000000000044 +S315E07B4B9000000000000000000000000000000000B4 +S315E07B4BA000000000000000000000000000000000A4 +S315E07B4BB000800000000000000000000020000040B4 +S315E07B4BC00000000000000000000000000000000084 +S315E07B4BD00000000000000000000000400000000034 +S315E07B4BE00000200000000000000000000000000044 +S315E07B4BF000000000000000008000000000000000D4 +S315E07B4C00040000000000000000000000000000003F +S315E07B4C100000000000000000000000000000000033 +S315E07B4C200000000000000000000000000000002003 +S315E07B4C300000000010000000008000000000000083 +S315E07B4C4000040040000000000000000000000000BF +S315E07B4C5000000000200000000000000000000000D3 +S315E07B4C60000000000000000000009480005000007F +S315E07B4C7000000000000000005000000040400050B3 +S315E07B4C802000001000004000600040000000200093 +S315E07B4C902000000000400000602000000020400073 +S315E07B4CA00020404000200000200000402000200043 +S315E07B4CB02060006000102000C01020000000000093 +S315E07B4CC000400000004020000000606000006000C3 +S315E07B4CD00040000000002000202000000040200073 +S315E07B4CE000002060004080006040004000006000E3 +S315E07B4CF0000004000020000000004000402000404F +S315E07B4D000000000040000000402000002000C000C2 +S315E07B4D1000800000204080204000000000008000F2 +S315E07B4D200080000080600040202000E000400040E2 +S315E07B4D308020000000400040000000000000A080D2 +S315E07B4D40204000200000C00060000000C040000062 +S315E07B4D5000002000408000E00000400000000000F2 +S315E07B4D60000020008000000000E000400020008082 +S315E07B4D704000400040408000000000000040000012 +S315E07B4D808000400080000080000040000000C00002 +S315E07B4D9040408080404000000000008000000060D2 +S315E07B4DA00000401000000010000000008040000082 +S315E07B4DB04000C04020804080400040000020000052 +S315E07B4DC0400020300080400040A0008020608000D2 +S315E07B4DD080400020008000008080000090802040A2 +S315E07B4DE00020001BCF0000002000200000000020F8 +S315E07B4DF01000004040206000201040001000004082 +S315E07B4E002000400000200020200000200000C000A1 +S315E07B4E106000000000200060000000406000402051 +S315E07B4E200000002040200020002040000000002001 +S315E07B4E3000002000402000000000400040002040B1 +S315E07B4E4000002040600020004000400000000000A1 +S315E07B4E500000204000002000000000A04020000071 +S315E07B4E600020400060000040002000800000000041 +S315E07B4E700000400020000000002000004000000011 +S315E07B4E80000020002000008000000000200040A001 +S315E07B4E900020C00000000000004000400020804071 +S315E07B4EA000200020A0400000400080200000004061 +S315E07B4EB000000020004000A0000000400080008051 +S315E07B4EC0002020808000000000A0200000400080C1 +S315E07B4ED08040600000600020000020008020000011 +S315E07B4EE0000000A000002000C000400000000000A1 +S315E07B4EF020800000000040000080400080008000B1 +S315E07B4F0080000000000000004000800040A000C060 +S315E07B4F1000000000A00040000000400000500000C0 +S315E07B4F20001000000040400000004080600000C0B0 +S315E07B4F30C00000800000C020400000200020000070 +S315E07B4F404000208080308060000000804000C00010 +S315E07B4F50C00000404000A00000800000DCF4007050 +S315E07B4F600040000000000000000040000000000060 +S315E07B4F7000004000000040000000400000000040D0 +S315E07B4F800000000000002000000000002000000080 +S315E07B4F900000000020000000008020000000800070 +S315E07B4FA0004400002040200010E0001000000000DC +S315E07B4FB000004000000000000040000000000040D0 +S315E07B4FC000000000000040200020000000000040C0 +S315E07B4FD000000000000000C0004000000000000070 +S315E07B4FE020001000040000002000000000004000CC +S315E07B4FF02040004000200000000040000000400010 +S315E07B5000400000802000000000004000000000001F +S315E07B5010800000008080000020400040800000800F +S315E07B5020400080000080400000402000C00000007F +S315E07B50300000A0000000204000400000000040404F +S315E07B504020000000000000000000200000000000BF +S315E07B505000800040000000000000000040C00040EF +S315E07B506000000000004000C000400000000000009F +S315E07B5070800000000000000000000040000000808F +S315E07B508040000000440000000000400000000000FB +S315E07B509000600000000000C0000000000000A000EF +S315E07B50A000600000000000000000004000000000FF +S315E07B50B0008000001000104080000000000000002F +S315E07B50C0000080004034000000000000A01080005B +S315E07B50D000004020003A6E00200000C02040002007 +S315E07B50E020004000400000400000008000000030CF +S315E07B50F0200080000000200000200004002000004B +S315E07B5100800000200020006000400060000020005E +S315E07B5110000060000000000000200000000040006E +S315E07B512040200000200020000040000000400040BE +S315E07B5130400000000020000000400000200000004E +S315E07B5140000000002000004000208000204000405E +S315E07B5150002000A20000004000200000002000208C +S315E07B5160200000004400400020400000200000407A +S315E07B517000000080004000004000200000000000AE +S315E07B518000200080402080200000A00000E000801E +S315E07B5190806000800000802000400000004000002E +S315E07B51A000000000008020000000800080000020DE +S315E07B51B0000000000000000000000040C00000404E +S315E07B51C000000020200000800080004000040000FA +S315E07B51D020004000000000008020004000000080AE +S315E07B51E000000000400000000040000000002000BE +S315E07B51F0402000800000002000000000000040000E +S315E07B5200000000004000002000008000800040009D +S315E07B521000200000000000200000802080000000CD +S315E07B52200000C000000040000000000000000040DD +S315E07B5230000000000000400040200000000040002D +S315E07B524000000000800000408000400000006E729D +S315E07B5250000080803000000040400000200000001D +S315E07B5260004000004000404000408040000040009D +S315E07B527040004000000000200000004000004000AD +S315E07B528000000000000040400060000000600080FD +S315E07B5290600000204020400000000000200000006D +S315E07B52A0400020400000002000200040000000007D +S315E07B52B040000040000040402000008000000000ED +S315E07B52C00000004020000000000000000460002099 +S315E07B52D0000000204000400000004060002000000D +S315E07B52E0200000200000002000400040000000007D +S315E07B52F000A0004000000420800040002000000069 +S315E07B530000408000000000200000002000006000DC +S315E07B53100020000020200000C000200000200000CC +S315E07B532040200000000040008000200000200000BC +S315E07B5330000000208000000080000000000080006C +S315E07B53404000202000008002000080000000A0607A +S315E07B5350004000008400000020C000002000000028 +S315E07B536020000040A000400000000000404000809C +S315E07B537000000020000000000080006000000000CC +S315E07B538000004040200020A000000000000000005C +S315E07B5390800000004000000000200020000080002C +S315E07B53A0000000400080000000000000400040005C +S315E07B53B000000000008000000000000000400000CC +S315E07B53C000400000000040185B0020000000600009 +S315E07B53D0400060004020400000000040C00000002C +S315E07B53E04010402000400040204040000440002028 +S315E07B53F000200000402040200040000020000040CC +S315E07B54006000104000202000E000200000204000EB +S315E07B541040004020200000200000006000000000EB +S315E07B5420002020404000200000400000400040205B +S315E07B543060000000800040200000200000604020EB +S315E07B5440000020008020006000408020002060007B +S315E07B5450200000202040600060002040000020000B +S315E07B546020004000C0004000000060802040040037 +S315E07B54700000006080000020A000400000208060EB +S315E07B548020808020A00060000080000020000000DB +S315E07B5490400000000000200020402000000000804B +S315E07B54A0A0000000000020000000000040A04000BB +S315E07B54B0004000000000A000400080000000840067 +S315E07B54C000008000000020002040E000C0000000DB +S315E07B54D0008080002000000000004080400000400B +S315E07B54E0000020008040004000800000200000009B +S315E07B54F0000000000020400000000040804080204B +S315E07B5500400000000000400080200000A0008000FA +S315E07B55100000002000E0008000000000400000006A +S315E07B552040000000004000000000204000000080BA +S315E07B553040002000000000C04000C000400000406A +S315E07B55406A18000000001040002000004040000088 +S315E07B5550400040000000004000006000704000809A +S315E07B556000200020008000000000004020000000BA +S315E07B55702000C000600000004000000040200000EA +S315E07B5580202000400020001000400000404000004A +S315E07B559000000040000000C000002040000000004A +S315E07B55A04040204000000000E000000020000000BA +S315E07B55B000000060000040000000000020002000AA +S315E07B55C0400060000000006000000040000040609A +S315E07B55D000400000400440E0000000000000840042 +S315E07B55E0400000006000006000400080200000601A +S315E07B55F0848020000000040080402000200000C062 +S315E07B560020C0000020006004404000400020404075 +S315E07B561080204000800060008020000040802040A9 +S315E07B562000000080402000008080400000804040F9 +S315E07B563000000000E04080A0000000800080400089 +S315E07B564000004000000040000000002000800000D9 +S315E07B56504040000040000040000000002000404049 +S315E07B566000000080604000400080400000400080F9 +S315E07B567040400000800080000000C00080A0000069 +S315E07B56800080000000800000800000204000800059 +S315E07B56904040000000000040004000004000000069 +S315E07B56A000000000C0008000000040400000004099 +S315E07B56B0800040008000802000E89F0000100020F2 +S315E07B56C0000000A000000000000040004000000059 +S315E07B56D04000000000100020800000000000000079 +S315E07B56E00000000040000000000000000000000019 +S315E07B56F00060000000404000000000000000200049 +S315E07B570010000020000000000000004000000000C8 +S315E07B571000004000000000004000000000000000A8 +S315E07B57208020000000000000000000000000000078 +S315E07B57300040000000002000000040000000004028 +S315E07B57400000004000000400000040000000000074 +S315E07B575000E04000000000000000000000000000C8 +S315E07B57604000000020000000A000000000000400D4 +S315E07B577000002000000000000000000000000000A8 +S315E07B57800040400000000000000000000020000018 +S315E07B57900080204040000000000000000000000088 +S315E07B57A00020000000000000000000002000000058 +S315E07B57B00080000000808000000000000000000008 +S315E07B57C00000000000000000000000004000002018 +S315E07B57D02000008040200000000080004080000028 +S315E07B57E0008000C0006000000000400080000000F8 +S315E07B57F000000000804000200000000000A00000C8 +S315E07B58000000000000208040400080000000000097 +S315E07B581000000000004000804000000000400000E7 +S315E07B58200000000000000000000040800000000057 +S315E07B583000001E8E0060000040400000000000007B +S315E07B584000004000000000000080002000400000D7 +S315E07B585040000020000000802000000000000040A7 +S315E07B586000000080002000000000000000002020F7 +S315E07B58700000000000400000000000000000404007 +S315E07B588000200000200040000000000000400000F7 +S315E07B589020000004000040000040004000000000C3 +S315E07B58A000004000004020004000000000000000B7 +S315E07B58B000008000200040000000200000008040C7 +S315E07B58C0A000002000400020000000000000004017 +S315E07B58D08400200000C00000202000400080000003 +S315E07B58E040004000800000000080000000200000B7 +S315E07B58F00020802080200080200004000000400003 +S315E07B59004080400020008000200000000000000076 +S315E07B591020004000000040000000000080000040C6 +S315E07B59208000400000400040800000000000000056 +S315E07B59304000000040000000400080000000004086 +S315E07B59400000000000200000000000000000004096 +S315E07B59500040000000002000404000000000000006 +S315E07B596000400000204000008000000000000000B6 +S315E07B59708000000000000000808000000040000006 +S315E07B598000000000000000000000000000000000B6 +S315E07B59900000000040800000400000000000400066 +S315E07B59A00000C00000000040000000D05D00000069 +S315E07B59B010000000004000400040000000000000B6 +S315E07B59C000000000400020000000000000000020F6 +S315E07B59D00000000000002000200020000040400086 +S315E07B59E000000000200000000000006020000000B6 +S315E07B59F00000000040000000000000000000000006 +S315E07B5A00000000C0200000000000200020400000D5 +S315E07B5A1080000000000000A0000000000000000005 +S315E07B5A2000000000004020800400204000000000D1 +S315E07B5A300020004000000040000060000000000005 +S315E07B5A404004000000000000000000400000200051 +S315E07B5A5000040000000000000000000400200000BD +S315E07B5A6000000020004040000000400000400000B5 +S315E07B5A700040000000000000200000204000000005 +S315E07B5A808040004000000000800000008000008035 +S315E07B5A9020008000400000000000000000808000C5 +S315E07B5AA00000002000002000000000000000000055 +S315E07B5AB00000000000002000800000404000000065 +S315E07B5AC000000040004000008000800000000000F5 +S315E07B5AD000000000000000000040800000000000A5 +S315E07B5AE000000000C0000000000000000080000015 +S315E07B5AF04000000040000000000000000040400045 +S315E07B5B000000400000C00000400080000000000074 +S315E07B5B1080000000004000000000000000008000E4 +S315E07B5B2080000020D6E400800000000000004000FA +S315E07B5B300020000000004000000000004000600004 +S315E07B5B4000200000000000000020000000000000B4 +S315E07B5B500000004000000000004000200000000044 +S315E07B5B602000000000000000004000002000000054 +S315E07B5B700000000000400000000040400000000004 +S315E07B5B802000400000400000200040000000600054 +S315E07B5B900000000000000000000000040004000498 +S315E07B5BA00004004000002000000000400000600090 +S315E07B5BB00004000000004000000000000000000040 +S315E07B5BC040002000000400000040002000000000B0 +S315E07B5BD00000800000000000008000000000040060 +S315E07B5BE000000000000000000020004000000000F4 +S315E07B5BF00000200000000000002000C00000000044 +S315E07B5C000020004080004000800000600000000033 +S315E07B5C1000000000400000000000000000002000C3 +S315E07B5C2000000000000080208020400060004000F3 +S315E07B5C3000000080000040004040000000000000C3 +S315E07B5C4000004000000040000000004000400000F3 +S315E07B5C5000400000002000000080000000004000C3 +S315E07B5C602000200000002000400000002000000013 +S315E07B5C7040C0000000000000000000400000000083 +S315E07B5C8060000040000000000040000020000000B3 +S315E07B5C9000000080000000000000000000C451000E +S315E07B5CA000404000002000000000000000000000F3 +S315E07B5CB00000400000000000000000000000400003 +S315E07B5CC00000000000000000000000000000000073 +S315E07B5CD000600000004000000000000000002000A3 +S315E07B5CE000000000104000000000000000000020E3 +S315E07B5CF000000000100000004000000000000000F3 +S315E07B5D000000000000400000004020000000004052 +S315E07B5D100000000000200020400000000000400062 +S315E07B5D2004000020000400000000000000000000EA +S315E07B5D300040000000000040000000000020000062 +S315E07B5D40200000200040000080000000048000006E +S315E07B5D5000000000004000004000402020000000E2 +S315E07B5D600040000080000060200000000000002072 +S315E07B5D700040008000200020A00080000000800022 +S315E07B5D80000000000000800040800000000000A0D2 +S315E07B5D900020000000200000200000008020006042 +S315E07B5DA000000080000020002000000000002000B2 +S315E07B5DB020002000A00000000000208020000000E2 +S315E07B5DC00000004000000000200020000020008052 +S315E07B5DD00080002000C00000008000002000000062 +S315E07B5DE00080000000802000000000000080800032 +S315E07B5DF00000000000800040008000800000008002 +S315E07B5E000000008000004080000000C00000000031 +S315E07B5E10000000800040A3BE000000000000000000 +S315E07B5E2000000040000000000000000000000000D1 +S315E07B5E300000003000400000000020004000000031 +S315E07B5E400000000060000040000000000000000051 +S315E07B5E5000400000400000000000400000000040E1 +S315E07B5E600040000000200000004000002000000011 +S315E07B5E702000000000004000000000000000000061 +S315E07B5E800000000000000000000000004000000071 +S315E07B5E9000002000000000040000400040000000FD +S315E07B5EA0000000400000000000040000200000002D +S315E07B5EB000000000000400400000000000000040FD +S315E07B5EC080042000000020000020400000208000AD +S315E07B5ED08000000000004080000020008000000081 +S315E07B5EE00000400000804000A08020000000000011 +S315E07B5EF00040000000000000000000200000800061 +S315E07B5F00000000002000000000400000A000000030 +S315E07B5F100020004020000000006000000020000020 +S315E07B5F2000000000E02000000000000000000040D0 +S315E07B5F308000800000004000A02080008040008040 +S315E07B5F400000C000800000400000400040200000D0 +S315E07B5F50A000400000004000002000008040008060 +S315E07B5F604000000000400000000000000000000050 +S315E07B5F70000000000000800080C000400000800040 +S315E07B5F800000C0000000000000800000000000A5CB +S315E07B5F90CC002050A0004000002020000000400004 +S315E07B5FA000002000000000200000200040000020D0 +S315E07B5FB000000000200020000000204000000020C0 +S315E07B5FC000200000200000002000000000004020B0 +S315E07B5FD000000020000000002000002020000040A0 +S315E07B5FE020000000000000000000200000200000F0 +S315E07B5FF00020400000200020000020000000000080 +S315E07B600000204020002000004000400040000400CB +S315E07B601000000000000000000004000400000020F7 +S315E07B6020000040004000000000000000440000004B +S315E07B6030000000400400040000040000204400004F +S315E07B60400080000004000400000024004080000083 +S315E07B605000008000000020000000000040002000DF +S315E07B606000000000000000008000000000C000008F +S315E07B6070000020404000000000600000000000803F +S315E07B608000000080000000800000000000000000AF +S315E07B6090000000008000800080000080000000009F +S315E07B60A000000000800000002000000000000000EF +S315E07B60B000000000000000000000000000208000DF +S315E07B60C000202000000000000000800000000000AF +S315E07B60D0008000800040000000000000000000001F +S315E07B60E0000040000000000040000000008000004F +S315E07B60F00000000000000040C000000040004000BF +S315E07B61000000400000000080E18600800000000087 +S315E07B611000000000400000000000000000200000BE +S315E07B6120100000000080000000000000004000003E +S315E07B6130402000000000000000000000000040005E +S315E07B614000000000000000000000000000002000CE +S315E07B6150000000004000000000000000000000009E +S315E07B616040400000002000000000000040002000CE +S315E07B617040000000002040000040000000000020BE +S315E07B6180040000000000400000004000000000200A +S315E07B6190000060000040000040004000000000007E +S315E07B61A000000040000000004000000000400000CE +S315E07B61B00080000020000000040000002084000036 +S315E07B61C0000000004000000000000000000000002E +S315E07B61D000000000000000000000000000002040FE +S315E07B61E000004020000000000000000000000000EE +S315E07B61F000000000800040000000C000802000001E +S315E07B620000000000000000804000008000000000ED +S315E07B6210000040000000000040000020000000205D +S315E07B6220C00000004000000000800000000000008D +S315E07B6230808000002040800000000020804000003D +S315E07B624000000000000000000000000000000000ED +S315E07B625020002000000000000000004000004040DD +S315E07B626000000000800000400040000000000000CD +S315E07B627000000000000000000000000000000000BD +S315E07B628080FECD0000000000200020000000000022 +S315E07B6290000000004000000000604020400000005D +S315E07B62A0200000200020000000000000002000000D +S315E07B62B0200000000000000000200000000000003D +S315E07B62C000000020000000002000000000000040ED +S315E07B62D000400000000000400000000000000000DD +S315E07B62E000000000200000400000000000000000ED +S315E07B62F000000000000000000040000000000020DD +S315E07B63000040200000002044000000000000000464 +S315E07B63100000000020000004004000000020000098 +S315E07B6320000000000000000040000000004000008C +S315E07B633080000000000000000000004000008000BC +S315E07B634000000000000000C04000000000000000EC +S315E07B6350008000000060000020000000800000005C +S315E07B63600040000000000000000000A000000000EC +S315E07B637000000000004000000020000000800000DC +S315E07B6380002000000000002000000000000020004C +S315E07B6390000000000000000000000000000080001C +S315E07B63A080000000000000000000004000000000CC +S315E07B63B0000040000000000040804000002000001C +S315E07B63C0002000000000000000000080008000400C +S315E07B63D020804000000000000000000040004000FC +S315E07B63E0000000000000008000C00000400000804C +S315E07B63F000008000800000800040ED460000908039 +S315E07B640000000000400000000000000000002000CB +S315E07B6410800080000000000000000000804000005B +S315E07B6420000000000000400000000000002040006B +S315E07B6430000000400000400000000040000000003B +S315E07B6440400040000000000000000000400000002B +S315E07B645000000000000000004000800040000000DB +S315E07B6460000000004000000000000000000000008B +S315E07B64704000000044000000000020000000000017 +S315E07B6480000040000000200000000000000000400B +S315E07B64900000000000000000000000400000000457 +S315E07B64A000000040008000000440200000800000E7 +S315E07B64B0004000000000802000A0000000000020DB +S315E07B64C000800000404000008040004000000080EB +S315E07B64D04000000000000000008000800000C080DB +S315E07B64E0000000000000008020A04000000000408B +S315E07B64F0000000800000000020000000A0000000FB +S315E07B65000040800000C0200000000000004000400A +S315E07B6510000000000000004000002000000000407A +S315E07B652080000020000000000040000080000000AA +S315E07B653020000000800000408000000020000080FA +S315E07B6540000080000000000000000000000000006A +S315E07B6550000000000000000000000000000040009A +S315E07B6560000000000080000000000000400000000A +S315E07B65700000009AE400000040000000000000609C +S315E07B6580400000004000008040000000000000501A +S315E07B6590000000006000000000002000000000001A +S315E07B65A0402000000000000000004000400020008A +S315E07B65B0000040004000600000100000004000004A +S315E07B65C010000000000000400000000000000040DA +S315E07B65D0000020000000000000000000002000809A +S315E07B65E0000000002000400000004000200000008A +S315E07B65F0000004200000002000002004000024406E +S315E07B660020000040200004202004402040000000C1 +S315E07B66104400000404206000800000240420400045 +S315E07B6620E00000004020800000200000C020002029 +S315E07B66300000C000A00020004000200000000020F9 +S315E07B66404000000040808000400080004000400029 +S315E07B66504000000000000000C000C00040000000D9 +S315E07B6660408000204000000000C000000080000069 +S315E07B667040004000000040004000000020804000D9 +S315E07B6680008040000040000080004000802020C069 +S315E07B669020000080000000A000000080000000C019 +S315E07B66A000000080000000408000002000000040E9 +S315E07B66B000000000000020002040400040000080F9 +S315E07B66C08000004000402000400000000000000009 +S315E07B66D040008000400080000000000000000000D9 +S315E07B66E00000008000800040400000003C5A000033 +S315E07B66F0A080100040000000000000004000000089 +S315E07B67004000000000000000001040400000000058 +S315E07B67104000000000000000000000004020400038 +S315E07B672000000000000000000020000000000000E8 +S315E07B67300000000000000000204000000000002078 +S315E07B67400000000000000010000000004000000098 +S315E07B67500000000000000000400000200000000078 +S315E07B676000000000000000040000000000000004C0 +S315E07B67700004000000000400000000002000000090 +S315E07B67800000000000000000000000002000000484 +S315E07B67900000000000000000040000000080000014 +S315E07B67A000000084200400800000000000400040E0 +S315E07B67B080000000000000000000000000000000F8 +S315E07B67C000000000008000000000000000000000E8 +S315E07B67D000002000000000204000000000200000B8 +S315E07B67E00000000080200000000000000000400068 +S315E07B67F000000000000000000000400020002000B8 +S315E07B68000000200000004000000000004020000067 +S315E07B681000000000000000000000000040000000D7 +S315E07B68200000000000000000000000000080004047 +S315E07B683000000000000000004000000000000000B7 +S315E07B68400000000000800000000000000000000067 +S315E07B68500000000000000000000000004000000097 +S315E07B686000200000001FDD0040300040204000405B +S315E07B687060004000004040002000400000200060B7 +S315E07B68800000205040200020002000000000000097 +S315E07B689000204000402040200020000040000040D7 +S315E07B68A02040000040200000402040000050004097 +S315E07B68B000200040006000004000004040100000E7 +S315E07B68C00030402040004020600000204000402017 +S315E07B68D0004020000000402000000060204404606F +S315E07B68E0000404000044006004002400040040042B +S315E07B68F000044400400000404000006000000000CF +S315E07B690000402004000000040420004460040000F2 +S315E07B6910200000848400008000200000C004008406 +S315E07B69206000C020000000404000002000204000C6 +S315E07B69300060200000C0800040008020C0200080F6 +S315E07B69408000600080400000804000008020600086 +S315E07B69506080008000A00000C00000408020200016 +S315E07B69600020400000A0608080000040A040000046 +S315E07B69700000000000800060004040800000006076 +S315E07B698060004080400020002000004040008040C6 +S315E07B69900000C0000020E000804040008020408076 +S315E07B69A080200020000000A0C0002080A040804026 +S315E07B69B08040004080008000000040000000C00076 +S315E07B69C000C08040000080000040800020C0C00006 +S315E07B69D000C08000000080000000800000C02CAD7D +S315E07B69E00020100000204000002000000040000056 +S315E07B69F000002000A0409040005000C010402000E6 +S315E07B6A008000000040200020000000200000206085 +S315E07B6A100000002000000020400000000000002075 +S315E07B6A200000203000004060000020100000402085 +S315E07B6A3000006040000000400060004000008000F5 +S315E07B6A4000600040204000402020402000000020E5 +S315E07B6A5040204000404400440000200020400404E5 +S315E07B6A602040004004040000040020044020402035 +S315E07B6A704004004420000040000000440044200025 +S315E07B6A80040040048004208004048064004080800D +S315E07B6A900000200400400400008400402040000009 +S315E07B6AA0006000200040A0400000200040008020E5 +S315E07B6AB040400080604000000000E0C00080400075 +S315E07B6AC080C00000608040402000800020400000C5 +S315E07B6AD0004000C000802020000080402000200095 +S315E07B6AE02000008020600000C080408000200040C5 +S315E07B6AF0004000C020204000C0C000804040208095 +S315E07B6B0020A000C0004080C000A000006040800064 +S315E07B6B10C040208040C02000A00000000020008014 +S315E07B6B20002040804020400080C0000080C02000E4 +S315E07B6B3040400040000040400040000040004000F4 +S315E07B6B40004000C000800000000040C00080008064 +S315E07B6B50000040A00080008C1D000000001000605B +S315E07B6B6060000000000000404020000000207040F4 +S315E07B6B7040000000103020C0C04000000020200014 +S315E07B6B8000400000006060000000000000606000E4 +S315E07B6B9000000000006060400000000010706000B4 +S315E07B6BA000000000106060000000000000404060D4 +S315E07B6BB0000000302040C000000000202040400064 +S315E07B6BC000000020208000400000006060000000A4 +S315E07B6BD00004046060400000000444606000000044 +S315E07B6BE00004446060000000000004606000000078 +S315E07B6BF0200040404040000404202040C0000004C8 +S315E07B6C00042020C0C04000040020208080C0000417 +S315E07B6C10046060808000000000606080800000008F +S315E07B6C20806060000000000000E0E0000000000003 +S315E07B6C3000E0E0000000200000C0C0000000002073 +S315E07B6C4020C0C0000000002020C0C0000000002063 +S315E07B6C502080800000000060608080000000006093 +S315E07B6C60608080000000006060000080000000E043 +S315E07B6C70E0000000000000E0A0000000200000C073 +S315E07B6C80C0000000002020C0C0000000002020C023 +S315E07B6C90C000000000202080804000000060608013 +S315E07B6CA08000000000406080000000000060400043 +S315E07B6CB00000000000E0C0000000000000C0E00033 +S315E07B6CC00000000000C0C0000000000020C0C00043 +S315E07B6CD096B8000000101060402060040020004061 +S315E07B6CE0040000000020207070000000002000A05F +S315E07B6CF0E0C1C00800602120280000000060602021 +S315E07B6D0060000000006060206002001000E06260CE +S315E07B6D107000800000202020200000000070706062 +S315E07B6D20600400200010044040000020106060C03A +S315E07B6D3080000020206020414008006021A0A80060 +S315E07B6D4000000060200060000004042024606002F4 +S315E07B6D50001404E466207000800404642420600050 +S315E07B6D6000000024242060040000004044406004CE +S315E07B6D70042024202080800404242060E041400C11 +S315E07B6D80046021A0A88080040464646060800000C5 +S315E07B6D90006020E0A00200100060622030008000EE +S315E07B6DA000A0E0A0A00000000060E020200400003E +S315E07B6DB000404480A0000020006060C0800000208E +S315E07B6DC020E0E081800800600120A880C0000060B0 +S315E07B6DD060A020000000002060002082801000E0A0 +S315E07B6DE062203000000000202020A0000000002070 +S315E07B6DF00080A0040000000044806000002020208A +S315E07B6E0020004000002020A020C1400800600180D7 +S315E07B6E10A80000000020202020000000000000E009 +S315E07B6E20E002001000A0220050008000000000403D +S315E07B6E304000000000C0C0404004002000C0C440C9 +S315E07B6E406000000000E060C0403F7700000010106B +S315E07B6E500020600000000000004000000000000011 +S315E07B6E603070004000000020E0C0C0800000602061 +S315E07B6E7020200000000000200060000000002020B1 +S315E07B6E80602000000000E060400000000000202061 +S315E07B6E902060000000003030600000000000001041 +S315E07B6EA00000000030206020C0C000000000606071 +S315E07B6EB0400000006020A0A0000000000040604091 +S315E07B6EC000000404242060400000000024200060D1 +S315E07B6ED00000040400604000000000000424206001 +S315E07B6EE000000000404000000004242020608080F9 +S315E07B6EF000042020A0C080800404202020A0800005 +S315E07B6F0004042464808080000000206040000080D0 +S315E07B6F100000602060600000000000E020000000D0 +S315E07B6F200000A0602020000000004040C040000040 +S315E07B6F300020A020408000002020A0E080400000D0 +S315E07B6F400020A020808000002060A0800000000060 +S315E07B6F506060A00080000000206020400000000010 +S315E07B6F60E02020A0000000004060A02000000000A0 +S315E07B6F70C000804000002020002000C000002020D0 +S315E07B6F80A020408000000020A080008000006060A0 +S315E07B6F90E02080000000000060E000000000202090 +S315E07B6FA0400000800000000000000000000040C0C0 +S315E07B6FB040400000000000C040C000000000E060F0 +S315E07B6FC08080F946000000001060600060000000F1 +S315E07B6FD000400040400000202010700000000020B0 +S315E07B6FE02080E08080000020002020000000004020 +S315E07B6FF060006000000000404000400000000000B0 +S315E07B700020002000000000606000000000000070AF +S315E07B7010700040000010100010404000002010403F +S315E07B702060C0C0000020006020404000002020803F +S315E07B7030A0000000006020206000000404004420E3 +S315E07B7040200000000040640060000004046024200F +S315E07B70506000000000246420400000000000004047 +S315E07B706040040420000040C0800400002020E04073 +S315E07B7070400404200020800000000024444060801F +S315E07B70808000006000C0200000000060400000003F +S315E07B709000000080E060A00000000040E040E000EF +S315E07B70A000000000C0800000002000C020404000BF +S315E07B70B000200000608080000020208080808000AF +S315E07B70C0004040A060808000002060E0A0808000DF +S315E07B70D00040402020000000000020C0A00000000F +S315E07B70E00060E080A000000000404080C00000001F +S315E07B70F020C06080C000000020C0C0C0C00000206F +S315E07B710020A0A000000000204040608080000000BE +S315E07B711000A0E000000000202040400000000020AE +S315E07B7120E000C00000000080C0A06000000000C05E +S315E07B713080404000000000E0A0C0400A7A000000EA +S315E07B714010000000600000000000004040400000AE +S315E07B715000003010004000000000E0C0C08000006E +S315E07B7160002000000000000000002000000000007E +S315E07B7170202060200000000020006000000000006E +S315E07B718040402060000000001010600000001010FE +S315E07B7190504000000000100060008080000000206E +S315E07B71A04040400000000000A0800000000020601E +S315E07B71B040400000040444006040000000002400DE +S315E07B71C040600000040404604000000000004424AA +S315E07B71D0002000000000404000000000002000404E +S315E07B71E080C000002000A0C080800004002000A0BA +S315E07B71F0800000000060A08080000000006020A08E +S315E07B720000800000402040000000000000808040BD +S315E07B721000000000A000E0C000000000C000C0004D +S315E07B72200000002020C0C08000000020A0C00040FD +S315E07B723000002020A0A080800000000060408080CD +S315E07B72400000404080E0000000002020004000007D +S315E07B72500000C00020C000000000E04020200000CD +S315E07B72600000C040800000000000C0C000000000BD +S315E07B72702000C040808000002020A0A0008000008D +S315E07B7280406080008000000040402020000000003D +S315E07B72906060000000000000E020C080000000008D +S315E07B72A0400060A00000000000400080000000007D +S315E07B72B0A0608080021A00000090006000604000C1 +S315E07B72C000000040404000000020204000004000DD +S315E07B72D000300060404040000000200000000000DD +S315E07B72E0006000006000000000602060600000003D +S315E07B72F000604060600000000000406060000000CD +S315E07B7300004000602000000000504040400000301C +S315E07B731000400040000000202040004000000000CC +S315E07B73200020000000000060600060000004006454 +S315E07B733024204000000000644420600000040440F8 +S315E07B73406040600000000040244060000000004098 +S315E07B7350004040040400200020004004042000E0BC +S315E07B736040C04004040020802080800400446420E8 +S315E07B737060000000004040E0E0808000004020406C +S315E07B73802000000000606080C0000000002040809C +S315E07B73900000000000C0004080000020206040C06C +S315E07B73A08000000000E040C04000002020802000FC +S315E07B73B00000002040C0800000000040400060806C +S315E07B73C00000002040604000000000E08020C0001C +S315E07B73D0000000E080A02000000000C000C040006C +S315E07B73E000200020E0004000002000A0204080003C +S315E07B73F00020002020808000000020E0408080008C +S315E07B740000404040800000000040404040000000DB +S315E07B741000C040C04000000000408080800000004B +S315E07B74200000C0808000000000800040C0B9BC0046 +S315E07B7430000000100060200000000000000000401B +S315E07B744000002020004040000000002000000000FB +S315E07B745000000000000000000000006040400000EB +S315E07B7460000000400000000000000020000000005B +S315E07B7470000040004040000000000040600000004B +S315E07B748000004010404000002030000040400000FB +S315E07B7490000000000000000020200020000000002B +S315E07B74A000002000000000004444000000000000D3 +S315E07B74B044640000000004046040200000000000FB +S315E07B74C040402040000000000000404000002000DB +S315E07B74D0604040400000002000A0404000042000C7 +S315E07B74E02080000000002404E02080000000404073 +S315E07B74F0C08080800000200060400000000000E04B +S315E07B7500E0C00000000000E040C00000000080C05A +S315E07B7510C04000002020C06000800000000000200A +S315E07B7520800000000000000000000000006020609A +S315E07B7530808000000020E04080000000004060404A +S315E07B754000000000006040600000000000A08000BA +S315E07B7550000000000080004000000020C02040C00A +S315E07B756000000000404040000000002000008080DA +S315E07B75700000204040A000000000404000C000002A +S315E07B758000004000404000000000C0C040C000005A +S315E07B75900000008080000000000000C000000000CA +S315E07B75A000000000C0000213000080000060204065 +S315E07B75B040000000004040000000000000602040EA +S315E07B75C040000030300020404000000020202000BA +S315E07B75D000000060000060000000004000404000CA +S315E07B75E0000000404040600000000030204040004A +S315E07B75F000000060200000000010105050000000EA +S315E07B760000300040200000000020006020400000A9 +S315E07B76100000000000000000004040206000000009 +S315E07B762000602420400000000004040060000004A9 +S315E07B76300000044060000000004020404000000065 +S315E07B764000400000000404000000600040000000F1 +S315E07B765000004080000404000000008080000004FD +S315E07B76604480C00080000020004060008000004035 +S315E07B76700040200000000040602060000000000029 +S315E07B7680C040A000000000800040000000000080B9 +S315E07B7690804040000020208040C040000000008009 +S315E07B76A02000000000206080C08000000000008099 +S315E07B76B060800000002040604000000000C0E08069 +S315E07B76C0C000000000E080800000000000C080C0B9 +S315E07B76D0C000000020802080C000002000A0E040A9 +S315E07B76E080000000000000008000000040C0E080D9 +S315E07B76F0800000004000C000000000404000000029 +S315E07B7700000000A0200080000000004080E0E00058 +S315E07B77100000000080C0C000000000C08000004B7D +S315E07B7720DC00000000000040200000000004002098 +S315E07B77304040000000000040404000000000200088 +S315E07B774000000001000800400000000000606000CF +S315E07B775000000000004000000000000200102080D6 +S315E07B77600000000040500000000000000040600088 +S315E07B777000001014503000000000001020000000D4 +S315E07B7780000000200000000000010008004000002F +S315E07B77900000000000000000000044400000000004 +S315E07B77A0000204144080000000000000200000007E +S315E07B77B000004040000000000004002000000000C4 +S315E07B77C00000604040400000000000008080000533 +S315E07B77D0000800C0000000000404C0008000000038 +S315E07B77E000200000800000020010608000000000A6 +S315E07B77F000804040000000008080A0C000000004C4 +S315E07B780080A0C00000000000808000000000000037 +S315E07B7810000040400001000800400000000000003E +S315E07B7820404000800000002040C0000000020010C5 +S315E07B7830008000000000C0C04040000000000080E7 +S315E07B784000000000000480A0000000000000C0C033 +S315E07B7850C0800000000040000000000100080040FE +S315E07B786080000000004080800000000040000000B7 +S315E07B7870000000024010008000000000E0E0808015 +S315E07B7880000000000000A020000000040060808073 +S315E07B7890000000000040400076C20000000000408F +S315E07B78A00000400000000400600040000000000093 +S315E07B78B0004040000000000040000000010008009E +S315E07B78C04040000000004000000000000000000097 +S315E07B78D040000000020050008000000000400000F5 +S315E07B78E04000000000004000000000000440200053 +S315E07B78F00000000000004000400000000000004067 +S315E07B7900000001000800404000000000404000000D +S315E07B79100000004000004000000002001000A000D4 +S315E07B79200000042000400000000000000000000092 +S315E07B79300000044020004000000000400000000002 +S315E07B7940000000800000400001000800404000008D +S315E07B79500000000000000000000000002080000026 +S315E07B796002401000C08000000000404000000000A4 +S315E07B797000008080400000000400A0004000000082 +S315E07B79800040800000000000000000004000010095 +S315E07B799008804000000000002040000080000020BE +S315E07B79A04080600000000200104080000000000084 +S315E07B79B0400000000000004080000000000004C0A2 +S315E07B79C02000000000002080000000000000000096 +S315E07B79D0800080000100080040C00000000040807D +S315E07B79E000000000000040000000000002001000E4 +S315E07B79F0808000000000C08000000000000000A046 +S315E07B7A000000000004002080000000000000000071 +S315E07B7A10C0D18000000000000000400000000004B0 +S315E07B7A200020000000000000204000000000000075 +S315E07B7A3000004000000100280040000000000040FC +S315E07B7A404000000000000040000000000002005003 +S315E07B7A504080000000000000000000000000000005 +S315E07B7A6040000000001410204000000000000000F1 +S315E07B7A70000000000000004000000001000800401C +S315E07B7A80000000000040000000000004040000004D +S315E07B7A9000000006045040800000000004404000E7 +S315E07B7AA0000000000440400000000004002040008D +S315E07B7AB00004040000004000000404002040C000F5 +S315E07B7AC00005000800C08000000404404080800080 +S315E07B7AD000000040408000000002001000800000B3 +S315E07B7AE00000008080000000000000C04000000035 +S315E07B7AF0000400608000000000000000C000000081 +S315E07B7B00002000C08000000100080040000000006B +S315E07B7B100040208080000000000000008000000222 +S315E07B7B20005000800000000000A0C00000000000C4 +S315E07B7B3000208000000000040020C0000000000060 +S315E07B7B400040C0000000000000404000000100084B +S315E07B7B5000400000000000004000800000000000C4 +S315E07B7B6040800000000200504080000000000000E2 +S315E07B7B70400000000000008040000000000400A000 +S315E07B7B8000000000000000800000C71D000083832A +S315E07B7B901C1C606000000303181C406000000707A4 +S315E07B7BA038384040000007073838C0C00000060779 +S315E07B7BB0303880C001010E0E7070808001010E0EA0 +S315E07B7BC07070808001010C0E6070008003031C1CCA +S315E07B7BD0E0E0000003031C1CE0E000000303181C4C +S315E07B7BE0C0E0000007073838C0C000000707383818 +S315E07B7BF0C0C000000607303880C001010E0E7070F1 +S315E07B7C00808001010E0E7070808001010C0E607029 +S315E07B7C10008003031C1CE0E0000003031C1CE0E087 +S315E07B7C2000000303181CC0E0000007073838C0C01B +S315E07B7C30000007073838C0C000000607303880C030 +S315E07B7C4001010E0E7070808001010E0E70708080D7 +S315E07B7C5001010C0E6070008003031C1CE0E0000059 +S315E07B7C6003031C1CE0E000000303181CC0E00000DB +S315E07B7C7007073838C0C0000007073838C0C00000A7 +S315E07B7C800607303880C001010E0E707080800101DE +S315E07B7C900E0E7070808001010C0E60700080030315 +S315E07B7CA01C1CE0E0000003031C1CE0E00000030377 +S315E07B7CB0181CC0E0000007073838C0C00000070783 +S315E07B7CC03838C0C000000607303880C001010E0E90 +S315E07B7CD07070808001010E0E7070808001010C0E49 +S315E07B7CE06070008003031C1CE0E0000002021C1CA9 +S315E07B7CF0E0E000000202181CC0E00000060638380F +S315E07B7D00C1C100D784001000200000404000004045 +S315E07B7D100000004000000000400000400010300002 +S315E07B7D2080000000400000C0000000000020000052 +S315E07B7D3000400000000060000040400000200000A2 +S315E07B7D4000004000006020000000001000202000C2 +S315E07B7D500040001000200000000040002040400072 +S315E07B7D600040002020004000004040202040800072 +S315E07B7D7000000000200000404000006000000000A2 +S315E07B7D804000004040000040000000004000004012 +S315E07B7D904000004040000040000000004000004002 +S315E07B7DA04000004000000000000000800000000072 +S315E07B7DB04000004000000000800000000000400022 +S315E07B7DC000600000000000000000000000400000B2 +S315E07B7DD000000000008000000020000000000000A2 +S315E07B7DE000000000000000002000000000000020F2 +S315E07B7DF000000000000000002000000000000020E2 +S315E07B7E000080000000000000000000000000000091 +S315E07B7E1020000000000000200000000000000000C1 +S315E07B7E200000000040000060000000000000000051 +S315E07B7E300000000000202000000000000000200081 +S315E07B7E408000000000200000000000000020000011 +S315E07B7E5000000000802020000000000000002000E1 +S315E07B7E6000000000000000000000000000000000B1 +S315E07B7E70000000000040400000000020266B000070 +S315E07B7E800000000000000000000000000000000091 +S315E07B7E900000000000000000000000000000000081 +S315E07B7EA00044000000000000000000000004000029 +S315E07B7EB00000000000000000000040200000000001 +S315E07B7EC00000000000000000000000000000000051 +S315E07B7ED000008000000000000000000000000000C1 +S315E07B7EE000000000000000400000000000000000F1 +S315E07B7EF00000000000000000000000000000000021 +S315E07B7F000000000000000000000000000000000010 +S315E07B7F1000400000000000000002000000000000BE +S315E07B7F200000000000000000008000000000200050 +S315E07B7F3000000000000000000000000000000000E0 +S315E07B7F4000000000000000000000000000000000D0 +S315E07B7F5000000000000020000000000000000000A0 +S315E07B7F6000000000000000000000000000000000B0 +S315E07B7F7000000000000000000000000000000000A0 +S315E07B7F800000000000000080000000000000000010 +S315E07B7F900000000000000000000000000000000080 +S315E07B7FA00000000000000000000000000000000070 +S315E07B7FB00000000000000000000000000000000060 +S315E07B7FC0000000000004002000002000000000000C +S315E07B7FD00800000000000000000000000000000038 +S315E07B7FE000000000000000000000008000000000B0 +S315E07B7FF000000000001DE40000600040400000003F +S315E07B800000000040001000008000004000202010AF +S315E07B8010004020806000806000200000002000009F +S315E07B8020402020000000000060002000304000601F +S315E07B803000604020402000400000002020404000BF +S315E07B8040400060004000004000000000004010401F +S315E07B8050004020000020800080400000A0402000FF +S315E07B8060008000200000004040000000004040000F +S315E07B8070000000400000004060006000400000001F +S315E07B8080204000404000240040000060804000C06B +S315E07B80900040044040004000000000606000A040DB +S315E07B80A0E0000440A0400020802000040060408087 +S315E07B80B00040408000A0008000C0800000000020DF +S315E07B80C0400000400080C0002040C000400000C06F +S315E07B80D0408040A0004000808040002000802080DF +S315E07B80E08020C00020C0204000202040000000000F +S315E07B80F000000000600000A0A0408040804000C0FF +S315E07B81008000600000200040004000C0800000400E +S315E07B811040800080002020800000C00080400080FE +S315E07B812000000080608040204000408080000000AE +S315E07B8130402000008000002080200040C0202000FE +S315E07B8140004000C02000000020400040402040006E +S315E07B81500080008000C000804080C00000800080FE +S315E07B8160008080000080000000800000408096D880 +S315E07B8170006000000000000000040000000000102A +S315E07B8180000000000000002000000000800000806E +S315E07B819020000000000000204040000000000000BE +S315E07B81A020000000000000802020000020400040EE +S315E07B81B0800040006000002040600000200000203E +S315E07B81C040000000400040003000004000200000FE +S315E07B81D0000040000080200000000000000000203E +S315E07B81E0000000004040200000000000000220204C +S315E07B81F0004000000000000000000040006000003E +S315E07B820024000000004000004040000020400000C9 +S315E07B82100440000000400000C00000800000002019 +S315E07B822004200020000040000020400000200000E9 +S315E07B823000008000002000000000000000400000FD +S315E07B824040002040002000E00000008000004080ED +S315E07B8250008040200000208000200000800040005D +S315E07B8260004020004000000000200000002000804D +S315E07B827000608000804080800000000020200000BD +S315E07B828000400000000000000040A000000000006D +S315E07B8290202000004000000080000000000020203D +S315E07B82A00000004080002000200040000000280005 +S315E07B82B000A0004000204020000000C0002000001D +S315E07B82C0200020804000400000008080004020802D +S315E07B82D000000000000000804040000080000000BD +S315E07B82E0000000000000007F3B00000000604000D3 +S315E07B82F000000000400000100000A00010402000BD +S315E07B830010004000002040200040002000000020BC +S315E07B8310000020000020000000000060402050208C +S315E07B832040000040004020000000000000000060AC +S315E07B83300000000040000040000000000004002038 +S315E07B8340004020402000000000C08000200000406C +S315E07B8350200000800020000000C0400000000000FC +S315E07B836040000000004040004000002060000040EC +S315E07B837000204020000000000040004000608000BC +S315E07B83808000000000440000400000000060802088 +S315E07B8390002060800440A0400000800004C02000F4 +S315E07B83A04480000040800080008000408000000028 +S315E07B83B0002000404080008080000040800000403C +S315E07B83C0000000C06000208000000000000000800C +S315E07B83D0200080004000208020400000200000003C +S315E07B83E0000000000020400000200000004000204C +S315E07B83F000402080004040000040008000C0C0205C +S315E07B8400004000000080006000800000008040802B +S315E07B841000008000804080400040600000008000DB +S315E07B842000000020000080000020000000008000AB +S315E07B8430000000400000000000000040000020003B +S315E07B844020400040000000800000408000C00080AB +S315E07B845000002080004400A00000008000004080F7 +S315E07B846002C8000040402000400000004000400081 +S315E07B8470000000400020000000004040004000007B +S315E07B8480000000400000000000000000000000400B +S315E07B8490000000000040002000200000000040407B +S315E07B84A0206000A0000000000000004000004000CB +S315E07B84B0200000004040000000001000000020206B +S315E07B84C000000020000000200000202000000020AB +S315E07B84D000000020000020004020000000004060FB +S315E07B84E0000020000000200040002000000040004B +S315E07B84F0000000600040002000004080000000009B +S315E07B8500002000002000200020000000402080802A +S315E07B851000800000A020008020800000000020007A +S315E07B852060A00000002000002000200000204080AA +S315E07B853000008000000000000020400000C000003A +S315E07B854000000000000080200000E00000208000AA +S315E07B855000A040800020008000000000002000009A +S315E07B85602000204080000000C000A08000000000CA +S315E07B85700000004000002000A0002000800000807A +S315E07B858000400000000080000080000040004000CA +S315E07B8590200000000000000000800000000080005A +S315E07B85A0008000004000000000004000000020004A +S315E07B85B000008000000000000040004080000000DA +S315E07B85C00000C04000008000010000008000000049 +S315E07B85D0C04000000040008040A6E00000000000B4 +S315E07B85E0000000000000002040000000002000406A +S315E07B85F0000000000000002000000040000000209A +S315E07B860000C0002000000000008000000020000089 +S315E07B86104080400000000020000000000040400059 +S315E07B862000002000008000000040000000200000E9 +S315E07B863000404000204000000000000000004000B9 +S315E07B864040004080000020004000E000C000008049 +S315E07B865000000000004000000000000080200000D9 +S315E07B866000000000800020000040000000000000C9 +S315E07B867040002000400000400000400080000000F9 +S315E07B86800000802080000000000000004000000029 +S315E07B86900000204000000000000000400000800059 +S315E07B86A00040008000200000006000402080400009 +S315E07B86B00040008060000000004040004000400039 +S315E07B86C0004000002040000040A000000060004029 +S315E07B86D00000000020000000004000400020000079 +S315E07B86E00000000000402000400060000000000029 +S315E07B86F000000000402000600000200000400040B9 +S315E07B87000000000000800000004020000000608048 +S315E07B871080404000C0000000400000008000A000D8 +S315E07B872000400000A0000080008000000000000008 +S315E07B873080000000000000C0004000000000004117 +S315E07B874000408000000000800000008000400000C8 +S315E07B87500000278C00004080604000000000400065 +S315E07B876020004000000040402000004000400060C8 +S315E07B877000000000404000600000000000000000B8 +S315E07B8780000080000000204000E000600000000068 +S315E07B87900000202040C00000400000000000404078 +S315E07B87A000004000000020400000001040204020F8 +S315E07B87B00000200000000000402040408040200078 +S315E07B87C00000204080200000A04000000000000068 +S315E07B87D04020400000000020000000200000000058 +S315E07B87E040004000002040400020002000804040C8 +S315E07B87F00000002000802000200020200040002098 +S315E07B88000000808000C020002000A08020000000C7 +S315E07B881020402020000000A000204000A000004077 +S315E07B88202000E000C080200000000040A040004027 +S315E07B8830006000400000404080000040800040A097 +S315E07B884000A0404020408020408000400000002087 +S315E07B88500000606000A0400000804000A000400077 +S315E07B886000000000200080002000A0002040802047 +S315E07B887000008000204000A0400000008000000057 +S315E07B88800060000000000000E08040804000008047 +S315E07B88900000000000800080200040400000A080B7 +S315E07B88A020008000000000000080004000004000C7 +S315E07B88B000000000800000000000000000200000B7 +S315E07B88C000400080400040400000C0AA99000000C4 +S315E07B88D00060402060000000400040000040000057 +S315E07B88E000006000000060000000800020000020A7 +S315E07B88F080000000000000402040000020000000D7 +S315E07B890000A0804080000020400060004000000026 +S315E07B89100020402000202000000020014080400015 +S315E07B89200040008060000040C00000006080204086 +S315E07B89302040600000001000200000800000000066 +S315E07B894040A0402000400000402020006000000066 +S315E07B89506000200000006000004000000040004016 +S315E07B8960204000200000000000804000C020600026 +S315E07B897000000060400000002000804020002000D6 +S315E07B89800000000000008000800000000000000086 +S315E07B899000608000402000402000A00000400000F6 +S315E07B89A04000008000400000006000000080000086 +S315E07B89B00020008080400000002020000000200096 +S315E07B89C04000800000200000002000004000000006 +S315E07B89D02080008000000000000000402000002096 +S315E07B89E040200000A0006000408000800040400006 +S315E07B89F0008080000040000080008040000000C0D6 +S315E07B8A008000004000404080200000002000800085 +S315E07B8A100000800000008040800040000000008075 +S315E07B8A20004000400000E000400000C04000804085 +S315E07B8A3000400080408000C0008000404080008095 +S315E07B8A40E0000000449800008000404020002000C9 +S315E07B8A5000004040004000000000000000000040B5 +S315E07B8A600000002000000020002080000080000045 +S315E07B8A70400000000020000000002000C000002035 +S315E07B8A8040000000000000004000002000000000E5 +S315E07B8A900000000040408000000000000040000035 +S315E07B8AA000008000006000004040000040000000C5 +S315E07B8AB08000000040000000000000000040000055 +S315E07B8AC000004000202000800000200000004000E5 +S315E07B8AD060004000000020004000000000004000F5 +S315E07B8AE00000000040408000000000002000000005 +S315E07B8AF000000000800000000000008020000000F5 +S315E07B8B000080000040000000000020000000000024 +S315E07B8B100000000000004000000000400000000074 +S315E07B8B2000000000000000000000000080800000E4 +S315E07B8B300000402000000000000020000000200034 +S315E07B8B400000000000000000000000000000004084 +S315E07B8B500000000000000000A00000000020800074 +S315E07B8B600000000000400040000080000000004064 +S315E07B8B7020000000000000004000400000000000F4 +S315E07B8B8000002000000000800000000000000000E4 +S315E07B8B900000000000000000000000000000000074 +S315E07B8BA02000000000800040000000C00000800044 +S315E07B8BB0C0000000008040008040200000FA760084 +S315E07B8BC00000000000000000400000000000000004 +S315E07B8BD000000000006000000000200000000000B4 +S315E07B8BE000000000000000000000600000000000C4 +S315E07B8BF00000800000008000000040004020000074 +S315E07B8C000000000040000020002000000020000063 +S315E07B8C1000004000800000204000000000000000D3 +S315E07B8C200000002000000000000000008000000043 +S315E07B8C30000000C040000000000020000000400073 +S315E07B8C4000000000000000000000000000000000C3 +S315E07B8C5080004020204000000000804000000000B3 +S315E07B8C6000600000C0000000002040000020208063 +S315E07B8C7000200000000000000080000000000000F3 +S315E07B8C8000000040000060000040200000800400FF +S315E07B8C900000402000800000400020404000008033 +S315E07B8CA0C000002000000000000000200000000063 +S315E07B8CB02000400000800000000000000000004033 +S315E07B8CC000000020004000000000800040000060C3 +S315E07B8CD00000004040000040400000C04000000033 +S315E07B8CE00000400000000000000020800000004003 +S315E07B8CF00080800000200000000000000000208053 +S315E07B8D006000800000800000408080004000000022 +S315E07B8D1080004000004000000000004080004000F2 +S315E07B8D208000400000000000000000C00040000022 +S315E07B8D30000080000000017400200000200000009D +S315E07B8D404000000000000000000040000000000042 +S315E07B8D5000002000008000200000000000000000F2 +S315E07B8D600020000000000000000040000000000042 +S315E07B8D7000000000000000400000002000000040F2 +S315E07B8D800000000000010020000040000000000021 +S315E07B8D900000004000000080000020000020000072 +S315E07B8DA000001020000000002000000020002000D2 +S315E07B8DB02040000000000000000040400000200052 +S315E07B8DC00000000000A04040000000000000000022 +S315E07B8DD00000000000000020000000000000000012 +S315E07B8DE04000002000004000000000008000000002 +S315E07B8DF000000000000080400000000000008000D2 +S315E07B8E0000000000000020000000000000000040A1 +S315E07B8E100000000000000000000000400020004051 +S315E07B8E200000000000000080000000000000000061 +S315E07B8E3000804020000000000000008000008000F1 +S315E07B8E4080800000000000000000000020000000A1 +S315E07B8E500000200000800000008000000000800011 +S315E07B8E604000000000C00000000000000000C040A1 +S315E07B8E7000408000000000000000000000000000D1 +S315E07B8E804000004000800000000000000000000081 +S315E07B8E9000C0000000004000000000000000004031 +S315E07B8EA0000000000000800000000000008000D28F +S315E07B8EB0240000000000000020000000000000000D +S315E07B8EC00000200000000060000000000040200061 +S315E07B8ED00000000000202000000000400000200091 +S315E07B8EE000000000000000000000400000000000E1 +S315E07B8EF020000000000000000000000000000040B1 +S315E07B8F000020000040004000000000000040000020 +S315E07B8F100000000000000000400020000000000090 +S315E07B8F200000000000000000002000000040000080 +S315E07B8F3000000000000000800000000000004020F0 +S315E07B8F404000000020000000004000004000402080 +S315E07B8F5000000000000000000000200040008000D0 +S315E07B8F600000000000002040008000004080008080 +S315E07B8F700000000000400000000000004000000010 +S315E07B8F800000000000000000000000400000000040 +S315E07B8F9000008000008000000040002000002000F0 +S315E07B8FA00000A04000000020008080000000000060 +S315E07B8FB00000004000000000004000000000004090 +S315E07B8FC000000000000000A080002000000000C040 +S315E07B8FD000208040800000400040000040002000F0 +S315E07B8FE080000020000020000000004000000040E0 +S315E07B8FF00000800000000020000080000000800070 +S315E07B9000004080400000004000008000800000803F +S315E07B901000000080800080000080400080004000EF +S315E07B90200000400000000000F285000080C00000E8 +S315E07B903000000000000000000020000000000000AF +S315E07B9040000000400000000000000000200000005F +S315E07B9050000000000060000040400000400000008F +S315E07B906000200000000000000040004000000000FF +S315E07B907000004000400000000000400000000000CF +S315E07B9080200040002000000000400000004000007F +S315E07B9090000000000000000000000000000040002F +S315E07B90A00000400040000000200000600000A000BF +S315E07B90B0000000000000000000000000000000004F +S315E07B90C0000000000000000000000040202000407F +S315E07B90D0008020004080000000004080000000000F +S315E07B90E000004000000000000080000000000080DF +S315E07B90F0000000204000200040800000200000406F +S315E07B9100000000000020400000000000000000009E +S315E07B9110400000000020000000000000004000004E +S315E07B91208020000000004000A000402000400000BE +S315E07B9130000000000020400000000000002000004E +S315E07B914000004000002000000040000020000000FE +S315E07B9150800000004000000040402000002000002E +S315E07B9160C060000000004020C0400040004000009E +S315E07B9170000000400000000000000000000000004E +S315E07B9180000000400000400000800040000000003E +S315E07B919000000000000000000000800080408101AC +S315E07B91A0007C3B0000000020004000000000400007 +S315E07B91B000000040000000000000400000000000CE +S315E07B91C000000000000000000040000020000000DE +S315E07B91D000000000200000000040000000000000CE +S315E07B91E000000000000000000000002000000040BE +S315E07B91F000000000004000000000000000000000CE +S315E07B920000000000400000204000400000000040DD +S315E07B921000000000000000000000000000000000ED +S315E07B9220000000200000000000000000000000407D +S315E07B923000000020000040008000000000000000ED +S315E07B9240004000000000000000200000000000005D +S315E07B925000208000200000000000000000000000ED +S315E07B926060000000000000804000000000800000FD +S315E07B9270000000004000000020000000A00000800D +S315E07B928000000000400000000000006000C000001D +S315E07B9290408000000000000000400000002000004D +S315E07B92A0000000002000002080000000200000007D +S315E07B92B000004000200000802000200020400000CD +S315E07B92C020000000000000404000000000200080FD +S315E07B92D000000000008000400000800000A000A0AD +S315E07B92E00000A000200020C00000004000000080BD +S315E07B92F000004000000000000000000000000000CD +S315E07B930000000000000000000000000000000000FC +S315E07B93108000000000000000000084A70000000041 +S315E07B9320000000004000400000000000000000005C +S315E07B9330400000000000000000000040200000002C +S315E07B9340000000000000000060000000000000005C +S315E07B935000002040000020000040200000002000AC +S315E07B936000006000000020000000200000000000FC +S315E07B937000000000204000002000400020000000AC +S315E07B9380002000002000000020000000400080203C +S315E07B9390000000000000002000600040000000406C +S315E07B93A0000000402000002000000000000000805C +S315E07B93B0000000000000000000000040000000000C +S315E07B93C0400000004000000000004000000000007C +S315E07B93D0800000000040200000000000200020000C +S315E07B93E000200000000000000080000000800000FC +S315E07B93F0000080000000002000C00040000000006C +S315E07B9400200080000000000000000000200000003B +S315E07B9410202000000000000020000020000000006B +S315E07B942000000000200000000080002000000040DB +S315E07B943000000000000000C000000000804020002B +S315E07B944000800000000000000000400000000000FB +S315E07B9450800000000000000000000000000000002B +S315E07B9460004000800000800000400080000000405B +S315E07B9470800000000000004080004000800000008B +S315E07B9480000000000000800080000000000000403B +S315E07B9490008040AA680020004000002000002000F9 +S315E07B94A0000000000040000000200020000000409B +S315E07B94B0004000000000000000000000000000000B +S315E07B94C000000000000000400000000000000040BB +S315E07B94D0000000000000200000400040400000004B +S315E07B94E0000000000000000000000000000000001B +S315E07B94F000004020004000000040000000000080AB +S315E07B9500000000000000200000400000000000405A +S315E07B9510000000000000204000006000000020000A +S315E07B9520000020000000200080000000000000001A +S315E07B9530002000000000000020400000200020000A +S315E07B9540200020008000000000800000204000001A +S315E07B95502000002000C000000000008000800000AA +S315E07B956000000000000000200000400040000000FA +S315E07B9570000000000000000060000000000000200A +S315E07B958000400000400000000000000000400000BA +S315E07B9590000000208000000000200000800000002A +S315E07B95A00000000000A0000000000040000000007A +S315E07B95B0400000800040000040000000000000000A +S315E07B95C0000000000000000000000000000000003A +S315E07B95D0000000000040000000008000200000004A +S315E07B95E0000000800000004000000000000000005A +S315E07B95F000000040000000000000000080400040CA +S315E07B9600004000800000000000000000F1C0000088 +S315E07B96104020000000200000000000402000000009 +S315E07B96204000000000200000002000000000000059 +S315E07B963000004020400000000000002000204000A9 +S315E07B96400000000000000000202000000040000039 +S315E07B96500000000000000000000000000000400069 +S315E07B96600000604000004000000040000020000059 +S315E07B96700000000000000000000000000000000089 +S315E07B968040000000400040000040000080000000F9 +S315E07B969000000000000000004020000000002000E9 +S315E07B96A00000004000004000000040000020402019 +S315E07B96B00000006000004000000000008020000009 +S315E07B96C080002000400000A000C0000040000000B9 +S315E07B96D06000000060000000004000806000000049 +S315E07B96E000400000000000C0000000000000000019 +S315E07B96F0000080000000A080000000000000A000C9 +S315E07B970000004000002000000080004000000000D8 +S315E07B97108000000000002080000020006000000048 +S315E07B972000400000000040000000000000008000D8 +S315E07B973000000000000040004020000000200020E8 +S315E07B97400000000080000000400080004000000038 +S315E07B97500000000000000000000000004000000068 +S315E07B97600000000000000000000000000000008018 +S315E07B97704000000000000000800000000080400008 +S315E07B97800000804000C6C000000000000000000032 +S315E07B97900000000000100000000000000040000018 +S315E07B97A00020000060004000004000200000200018 +S315E07B97B000000000000000000000400000000020E8 +S315E07B97C00000000000000000000000000000000038 +S315E07B97D06000000040000000400000000000000048 +S315E07B97E04000000000000000400000204000000038 +S315E07B97F00000000040200060000000000000000048 +S315E07B98000000000000002000000000000000400097 +S315E07B98100000000040000000000000200000000087 +S315E07B982040000000000000004000000000000080D7 +S315E07B98304000800000000000000000008000008007 +S315E07B984000400000800000008000204000006000B7 +S315E07B98500000002000004080008020000000A00087 +S315E07B986000000040008000000000000020000000B7 +S315E07B98700000800000A000002080008000800000C7 +S315E07B988000000020800000004000000020C00000B7 +S315E07B989000400000000000004000008080000000E7 +S315E07B98A00080A000400000008000008000000000F7 +S315E07B98B0000000400000004040000080000000E027 +S315E07B98C02000000020800000802000000040800017 +S315E07B98D00000000000000000800000000040000067 +S315E07B98E00040000080004000000080000000000097 +S315E07B98F00000000000010000010000000000E272B1 +S315E07B990000002000000040400040200000004000B6 +S315E07B99100000004020000000000000000000000086 +S315E07B99202020400000000040206000000000000096 +S315E07B99300000200020400000400000400040000086 +S315E07B99400040000000000000000000004020000016 +S315E07B99500000000000000000200000000000000086 +S315E07B99600020000000000000000000000000000076 +S315E07B99700000200000402000002000200000400086 +S315E07B998000000020000000008020000000000000B6 +S315E07B99900020004000204000000040000000000066 +S315E07B99A000000000000000000000002000400000F6 +S315E07B99B00000000020000000000000000000000026 +S315E07B99C04000002000000020000040000000000076 +S315E07B99D000000000C0208000000000800000400006 +S315E07B99E04000C00000804000800040C02000400076 +S315E07B99F0000040000000000000200000C0000000E6 +S315E07B9A0040000000400000004000000040000040B5 +S315E07B9A1000004000004000008040000000000000A5 +S315E07B9A2020000000000000800020000020000000F5 +S315E07B9A300000000000000000000000000000008045 +S315E07B9A400000000020800040002000004000000075 +S315E07B9A500000004000200000000000000000000045 +S315E07B9A6000000000004000000000000040000020F5 +S315E07B9A7040C000000080005DC100400000000000A7 +S315E07B9A8000000000004000000000006000000000D5 +S315E07B9A900000000000200040000000000000000005 +S315E07B9AA000000000000000000020000040000000F5 +S315E07B9AB000000000000000000000000000400020E5 +S315E07B9AC00000000020000000000000000000000015 +S315E07B9AD00000000000000020000000000000000005 +S315E07B9AE000204000000000A00000400020000000B5 +S315E07B9AF02000000000000000004000004000402005 +S315E07B9B0020000040804000000000000000000000D4 +S315E07B9B1000000000000020000000000000000000C4 +S315E07B9B2000008000400000000000002000000020D4 +S315E07B9B300020800000200000000000808000000004 +S315E07B9B4000402000000000000040004020000000B4 +S315E07B9B5000C00020000000000080000000402000E4 +S315E07B9B6000000000000000000000000020800040B4 +S315E07B9B7000000000000000400000000000006000E4 +S315E07B9B8080004020000000A00000002020000000B4 +S315E07B9B9000200080000000200000000000000000A4 +S315E07B9BA00000000000002000000040800040200014 +S315E07B9BB00000008020000000002000008000000004 +S315E07B9BC02000004000000000800000000000000054 +S315E07B9BD040000080000000000000000000400080A4 +S315E07B9BE04000000000000040000000000000000094 +S315E07B9BF0FD9E0000208020400020000060000040A9 +S315E07B9C0000200020000060006000400040600020F3 +S315E07B9C1000402060000020200040200060006020A3 +S315E07B9C2040006020002040006040200020000000D3 +S315E07B9C302020404020004040204000006000200083 +S315E07B9C406020000000400000000060006000604093 +S315E07B9C502000604020006000404020002000200083 +S315E07B9C60000040A000000060004000400060004033 +S315E07B9C7020402000404020A04000006000006020A3 +S315E07B9C800000602000A04000000000400040000093 +S315E07B9C906000400020004000202000C00020C00083 +S315E07B9CA0800040802000A000402040800060800053 +S315E07B9CB040C0002000A0006000200000004020C0E3 +S315E07B9CC00040800020C00080200040208000800093 +S315E07B9CD0C0800000C040A0000000E000C0004080E3 +S315E07B9CE0400020204000002000800000A00060A013 +S315E07B9CF00000000040006000C04000000000004023 +S315E07B9D000000200040008040800080402040A00092 +S315E07B9D100000A0C0200000000040000020E0000022 +S315E07B9D20000080C02040208000C000002000400072 +S315E07B9D302040000000A00080600060000000C000C2 +S315E07B9D4000000000000080004000000080400040F2 +S315E07B9D5080800000C00000000000C0C00080404062 +S315E07B9D6080004040000040408072CC0040004020B4 +S315E07B9D700040004040000040401000406000204032 +S315E07B9D800060200000002040400060006000000092 +S315E07B9D900020200020400060002000400060004062 +S315E07B9DA04000006000600020004040000040004032 +S315E07B9DB00060204000000000000000400000004002 +S315E07B9DC040000000000000400020004040004020B2 +S315E07B9DD02000000000000000E00040002040402022 +S315E07B9DE00040006000404020608040002040400012 +S315E07B9DF060002000204000C020000020200040A022 +S315E07B9E00C000004000000040000000400000600011 +S315E07B9E10400020C0200060808060800080000000E1 +S315E07B9E20A040208080006080806080000040A000B1 +S315E07B9E30806020804020402020C0800060806000E1 +S315E07B9E400080002000A0208000C000408040C00051 +S315E07B9E502040804000C0C0000040C00020404080E1 +S315E07B9E6020C0200020000060008080400000006071 +S315E07B9E704000804060800060408000606000C00001 +S315E07B9E806000806020C0008020C0C00000204000D1 +S315E07B9E90408000C06000000040000020C020400001 +S315E07B9EA0800040000020800080006000A0002080D1 +S315E07B9EB080004020C00000004000C00080000040E1 +S315E07B9EC0002000000080C0008040800000400080D1 +S315E07B9ED0800080000080C0004000A0004180408080 +S315E07B9EE080005D2B000080000000606000000020A9 +S315E07B9EF00050404000000000202040404000000031 +S315E07B9F002020404000000040202000004000004030 +S315E07B9F1060604000000000006060400000000040A0 +S315E07B9F206060400000000000606000000000000010 +S315E07B9F3060604000002000004040000000002060A0 +S315E07B9F4040400000000020204040400000402020B0 +S315E07B9F5080804000000060600000000000006060E0 +S315E07B9F600080000000006060000000000000E0E090 +S315E07B9F7000000000000020E00000002000404040A0 +S315E07B9F8040000000206040404000000020A0C0C0B0 +S315E07B9F900000000020A08080C00000006060C080E0 +S315E07B9FA08000000060608080000000406060000010 +S315E07B9FB080000040E0E0000000000000E0E0000000 +S315E07B9FC000000080C0C0000000002020C0C0000070 +S315E07B9FD0000020A0C0C00000000020208080400060 +S315E07B9FE00000606080800000000060E08080000010 +S315E07B9FF000006060000080000080E0E00000000080 +S315E07BA0000000E0E0800000000000C0C0000000002F +S315E07BA010206040C0000000002020C0C0000000405F +S315E07BA020202080804000000060608080000000008F +S315E07BA03060C08080000000004060400080000080BF +S315E07BA040C0C0000000000000C0C0000000000000AF +S315E07BA050C0C0800000002000C0C000517F0000002F +S315E07BA06000006060006004000000101440600000A7 +S315E07BA07020206060404000002020602041400800B6 +S315E07BA08020010028000000006060606000000000A6 +S315E07BA0906020002002001000E0224070008000007B +S315E07BA0A060606060000000006060006004000000AB +S315E07BA0B0400440200000202060200040000020205B +S315E07BA0C0206041400800202180A88080000020207D +S315E07BA0D02020000000006020202082801000E042EB +S315E07BA0E0003000800000E0C0E0E0000000002000DF +S315E07BA0F0A0A00400000040444020000020206060D7 +S315E07BA100000000002020E06041C00800602120289C +S315E07BA110808000002060E0E0808000006060C0E03E +S315E07BA12082001000E042003000000000E0E000A08A +S315E07BA13000000000E060C0A004002000C00480E0D6 +S315E07BA140000020206060C08000002020E0E041C06D +S315E07BA15008006001A0A800800000602080E080808D +S315E07BA16000002040802082801000E06200700000CA +S315E07BA17000002020606000000000A0E020200400BA +S315E07BA1802000804480A0000020006060C0C000000A +S315E07BA1902000606001800800202180A8808000008C +S315E07BA1A0602060E080800000602080C082801000BC +S315E07BA1B0C042207000000000C0C0404000000000AC +S315E07BA1C0C0C080C0040020004044406000002020E6 +S315E07BA1D0C0C04040C2750000000000602060000007 +S315E07BA1E0000000501000000000002020200040000E +S315E07BA1F000002020400040000000202000000000FE +S315E07BA200000060204000000000206020400000004D +S315E07BA210002060600000000000202020200000007D +S315E07BA220002020604000000000404000400000200D +S315E07BA230204040004000002020602040400000207D +S315E07BA24020A080808000002000206000000000606D +S315E07BA250602020808000002060206000800000E09D +S315E07BA260E08080000000002020202000000000002D +S315E07BA27040004000002020204000400000202020BD +S315E07BA280E080C000002020A000808000006020608D +S315E07BA2904080000000202020A080800000206020FD +S315E07BA2A040000000002060A06000000000C000606D +S315E07BA2B0200000000000C0C00000000020202080BD +S315E07BA2C040000000002020C00000006020808080ED +S315E07BA2D00000002060E080808000006020A0A080FD +S315E07BA2E080000080202060000000000020604000AD +S315E07BA2F000000060C020A00000000000C080C0001D +S315E07BA30000002060400000000000206040804000AC +S315E07BA31000000020A08040000020600080800000DC +S315E07BA320002060804000800000004060200000004C +S315E07BA33000008040400000000040C0C040000000BC +S315E07BA34000404040000000202040C00040123D001D +S315E07BA35000000000606020600000000010104040BC +S315E07BA360000000204040004000002020600040408C +S315E07BA370000020002020000000000040206000005C +S315E07BA380000060002020000000006020400000000C +S315E07BA39000004040606000000000604020600000FC +S315E07BA3A000004000400000002000402040400000CC +S315E07BA3B020004040004000002000A0A080800000FC +S315E07BA3C020200020000000006040404080800000AC +S315E07BA3D06040002000000000A080E0E0000000007C +S315E07BA3E0200080A00000000000004000000000008C +S315E07BA3F02020000000002020800040C000002020BC +S315E07BA4000020808000000040A0A00000000060608B +S315E07BA41060E0800000002020202000000000A0A05B +S315E07BA42000A000000000A020A0A000000000C0006B +S315E07BA43080C0000000004020400000002020C0C01B +S315E07BA440C0800000200020A080800000400060608B +S315E07BA450808000002060C06080800000402000603B +S315E07BA460000000002060A04000000000E0A00000AB +S315E07BA4700000000080C080C000002020004040C07B +S315E07BA48000002020E08000C00000202080A08080AB +S315E07BA4900000404040E0800000006060C04080807B +S315E07BA4A000004040206000000000C040000000004B +S315E07BA4B00000808080400000000080C0C00000007B +S315E07BA4C02020808080407CA9000080800040004086 +S315E07BA4D0200000000050100000000020002020003B +S315E07BA4E0000000002000600040000000202000000B +S315E07BA4F0000000002000000000000000600040003B +S315E07BA50000000000400000000000000000000000AA +S315E07BA510000000002060600000000040400040003A +S315E07BA52000002060400040000000206060400000AA +S315E07BA530000020808080800000604020400000009A +S315E07BA540000020606080800000202020600000000A +S315E07BA55000E0E080800000000020206040000000FA +S315E07BA560000040004000002020204000400000002A +S315E07BA5700020E080C000000000A00000000000603A +S315E07BA58020604080000000000000808080000000AA +S315E07BA590402060000000002060A0600000000060BA +S315E07BA5A06040000000000000C0C00000002020806A +S315E07BA5B0C08040000020202000000000002020A07A +S315E07BA5C0000000000000408080808000004000406A +S315E07BA5D060808000000060002000000000C0A020BA +S315E07BA5E0800000000000C040C0000000000000C00A +S315E07BA5F080000020206000C0400000202080C0C09A +S315E07BA60000000020202080800000002020200080A9 +S315E07BA6100000006060004000800000004060200099 +S315E07BA62000000040C0C0C0000000000080C04000C9 +S315E07BA630000000800000C000002020008141804BAC +S315E07BA640A3000000000040004060000000004000E6 +S315E07BA6500040000020206020404000000000606059 +S315E07BA66000400000202000200000000060204040E9 +S315E07BA6700000000040600060000000004040006099 +S315E07BA6800000000040000040000000004000406009 +S315E07BA69000000000404000000000000060600040D9 +S315E07BA6A000000000602000000000000000200000A9 +S315E07BA6B00000604060400000000040204020000039 +S315E07BA6C000002060606000000000602020600000E9 +S315E07BA6D000002020E0C000000000404000000000B9 +S315E07BA6E020204040404000000000C0E000C0000069 +S315E07BA6F00000A080000000002000804080800000F9 +S315E07BA70040008060008000006040606000000000E8 +S315E07BA710C040E0E000000000E06040E000000000B8 +S315E07BA720C0C0404000002020E0C0808000002000C8 +S315E07BA730E0E080C000002020A02000800000606078 +S315E07BA740C0E0000000002000C0A0000000006060C8 +S315E07BA750406000000000C080C0A00000000020C078 +S315E07BA760E0E000000000C0C0000000002020602088 +S315E07BA77080C000002000006080800000200000A0F8 +S315E07BA780800000006000A0E000800000400080C008 +S315E07BA7900080000000404040000000004080C0C0D8 +S315E07BA7A000000000408080C000000000400040C008 +S315E07BA7B00000000040C0C0C070A800000000002080 +S315E07BA7C02020000000000000404000000000200048 +S315E07BA7D04000400000002020000000000000202018 +S315E07BA7E000000000000040204000000000200060E8 +S315E07BA7F00000000000404060000000000000404098 +S315E07BA8000000000000004020000000000000000087 +S315E07BA8104000000000000000000000000000000097 +S315E07BA8200000000000200000000000400000200047 +S315E07BA8300000002000004000000000004000000017 +S315E07BA8400000000000600000000000000080E000E7 +S315E07BA8500000000000400000000000202000000017 +S315E07BA8600000208080000000002020200080800007 +S315E07BA87000004020A000000000206060A080000077 +S315E07BA88000202000000000000000808080000000A7 +S315E07BA89000C080E020000000008080800000000097 +S315E07BA8A020C060400000000020C0C0C080000000E7 +S315E07BA8B00000808000000000006040000000000097 +S315E07BA8C0402040000000004040204000000000E0C7 +S315E07BA8D060A0C000000000604040400000000080B7 +S315E07BA8E0C00040000000000000400000000020E0C7 +S315E07BA8F08000400000002000200000000000404077 +S315E07BA90080800000000040800000000000000040E6 +S315E07BA910400000000000C000800000000000400016 +S315E07BA920000000000080C0C08000000000000080C6 +S315E07BA930C0086C00000000004000406000000000A2 +S315E07BA9404040004000000000400000400000000066 +S315E07BA9504040004000000020200000000000602016 +S315E07BA9602060000000004040606000000000202086 +S315E07BA9700040000000004000206000000000600016 +S315E07BA98000000000000000000040000020000020E6 +S315E07BA9904040000020004000404000002000202096 +S315E07BA9A00000000060404040000000004040002086 +S315E07BA9B000000000004040400000000040000040F6 +S315E07BA9C000000000000040400000000040404000E6 +S315E07BA9D0000000004040404000000000406000C0B6 +S315E07BA9E000000000808000000000204080408080E6 +S315E07BA9F00000400000400000000040404040000076 +S315E07BAA000000C040404000000000800000C0000025 +S315E07BAA100000404040400000000080A0C080000075 +S315E07BAA200000000000400000000000008080000085 +S315E07BAA306040202000000000206080A00000000035 +S315E07BAA400020406000000000C08000400000000065 +S315E07BAA502080C0A000000000404040400000000095 +S315E07BAA60602000800000000000A0C0C00000000065 +S315E07BAA7000A080000000604080E000000000000055 +S315E07BAA80C0400080000000400000000000000000A5 +S315E07BAA90808000000000408080400000000080C095 +S315E07BAAA0008000000000408000005545000000006B +S315E07BAAB00000000000000000044060400000000051 +S315E07BAAC000004000000000002000000000000100C4 +S315E07BAAD0080040000000000040000000000000008D +S315E07BAAE000404000000002001040800000000000B3 +S315E07BAAF04040000000000000600000000000040011 +S315E07BAB0020404000000020200000000000002000E4 +S315E07BAB1000000000010028004000000000400040EB +S315E07BAB2040000000000000404000000002001040B2 +S315E07BAB30C000000000000060000000000000000094 +S315E07BAB404000000004002040400000000000004080 +S315E07BAB5040000000200000000000010008A0C000CB +S315E07BAB600000004040008000000000004040800084 +S315E07BAB70000002001040C000000000008040400062 +S315E07BAB800000000080C00000000004002080000080 +S315E07BAB9000000080004040000000002000400000F4 +S315E07BABA001000820400000000000200000000000BB +S315E07BABB000404040400000000200100080000000A2 +S315E07BABC000C040A080000000000000A0C0000000A4 +S315E07BABD004002040400000000000008000000000F0 +S315E07BABE000A000404000010008004000000000009B +S315E07BABF00060008000000000000000000000020012 +S315E07BAC001000800000000000800080000000000053 +S315E07BAC1040000000000004802080800000000000EF +S315E07BAC204080807CD900000000004000204000008E +S315E07BAC3000040060400000000000400000000000CF +S315E07BAC40000040000040000120080060400000005A +S315E07BAC5040004000000000000000004000000002D1 +S315E07BAC600050408000000000400000000000000033 +S315E07BAC70004000000000000400204040000000008F +S315E07BAC8000000000000000000040004000010008DA +S315E07BAC900040400000004000400000000000000053 +S315E07BACA00040000000020050408080000000000071 +S315E07BACB000600000000000004080000000040020EF +S315E07BACC00040000000000000400000000000004063 +S315E07BACD080400001000800C040000000004080008A +S315E07BACE080000000000000C0008000020010408071 +S315E07BACF080000000000080C0000000000040408033 +S315E07BAD0000000004006080400000000080004000FE +S315E07BAD100000000040000000000100088060400069 +S315E07BAD200000004080000000000040004040000042 +S315E07BAD300002001000C080000000C00080400000E0 +S315E07BAD400000C00000E0000000040020400000009E +S315E07BAD500000000040000000000000800040000191 +S315E07BAD60000820C04080000000000080000000005A +S315E07BAD704000800000000002401000808000000060 +S315E07BAD8000000080000000008000008000000004DE +S315E07BAD90806000C00000000080400080492F0000FA +S315E07BADA000000000000000000000040020400000DE +S315E07BADB000002000004000000000002000000000B2 +S315E07BADC001000800400000000000000000000000D9 +S315E07BADD00000400000000000020050008000000000 +S315E07BADE00000004000000000000000400000000082 +S315E07BADF0040060000000000000004040000000000E +S315E07BAE000000000000000100080040000000000098 +S315E07BAE1040400000000000004040000000000200CF +S315E07BAE2010008000000000004000000000000000F1 +S315E07BAE3000800000000004006000000000000020AD +S315E07BAE4040000000000020008000000001000800B8 +S315E07BAE50C0800000000000608000000000004040F1 +S315E07BAE600000000002005000800000000000C000EF +S315E07BAE700000000000008000000000000400A080CD +S315E07BAE80000000002000C08000000000002080C0A1 +S315E07BAE900000010008004080000000002040000028 +S315E07BAEA0000000004020800000000200502080006F +S315E07BAEB000000000200000000000000020400000B1 +S315E07BAEC000000400E000000000000000408000007D +S315E07BAED00000000040800000010008004080000088 +S315E07BAEE000004040008000000000004080800000C1 +S315E07BAEF002001040800000000000C0C0000000009F +S315E07BAF00000000000000000004002080000000003C +S315E07BAF100000000000E794000003031C1C60600057 +S315E07BAF20000303181C4060000007073838404000E8 +S315E07BAF300007073838C0C000000607303880C001FC +S315E07BAF40010E0E7070808001010E0E7070808001A4 +S315E07BAF50010C0E6070008003031C1CE0E000000324 +S315E07BAF60031C1CE0E000000303181CC0E0000007A4 +S315E07BAF70073838C0C0000007073838C0C000000675 +S315E07BAF8007303880C001010E0E7070808001010EA3 +S315E07BAF900E7070808001010C0E6070008003031CD4 +S315E07BAFA01CE0E0000003031C1CE0E0000003031848 +S315E07BAFB01CC0E0000007073838C0C0000007073830 +S315E07BAFC038C0C000000607303880C001010E0E7025 +S315E07BAFD070808001010E0E7070808001010C0E6026 +S315E07BAFE070008003031C1CE0E0000003031C1CE0F4 +S315E07BAFF0E000000303181CC0E0000007073838C0F8 +S315E07BB000C0000007073838C0C0000006073038802C +S315E07BB010C001010E0E7070808001010E0E70708093 +S315E07BB0208001010C0E6070008003031C1CE0E000D5 +S315E07BB0300003031C1CE0E000000303181CC0E000D7 +S315E07BB0400007073838C0C0000007073838C0C000A3 +S315E07BB050000607303880C001010E0E7070808001DB +S315E07BB060010E0E7070808001010C0E607000800313 +S315E07BB070031C1CE0E0000002021C1CE0E000000276 +S315E07BB08002181CC0E0000006063838C0C0007272A9 +S315E07BB090000020E00000404000000000000040404F +S315E07BB0A0100000000000404000000000000040402F +S315E07BB0B0000000000000000000200000404000008F +S315E07BB0C020000000404000002020000040400000BF +S315E07BB0D0202000004040000020600000404000004F +S315E07BB0E0200000000000002000000000400020203F +S315E07BB0F0000000000040202040800000000020008F +S315E07BB10000000000800000200000000000002020FE +S315E07BB11080000000000020A0000000400000C0206E +S315E07BB120000040000000204000004040000040401E +S315E07BB1300000404000004080000080C02000C080CE +S315E07BB14000008080206080004040808040608000FE +S315E07BB15040000000206000004000000020E000008E +S315E07BB160C00000002020000000800000208000005E +S315E07BB170C0C00000400000000000202000800000EE +S315E07BB180800000200000000000000040000040003E +S315E07BB19000002020808000008000002080000000EE +S315E07BB1A0000000800000800000002000000080801E +S315E07BB1B00000800000000000002000400000C0008E +S315E07BB1C0202000000000008020208000000080809E +S315E07BB1D0002080000040000020200080000080806E +S315E07BB1E000008000404000002080000080000000DE +S315E07BB1F0008000008000000040000000008000200E +S315E07BB20080800000810000C989000000000000000A +S315E07BB210400000000000000000000000000000008D +S315E07BB220002000000000000000000040000000005D +S315E07BB23000000000000000000000000000000000AD +S315E07BB240000000000000000000000000000000009D +S315E07BB250000001001000201000000000000000004C +S315E07BB26000000000000000000084400000000000B9 +S315E07BB270000000000000000000000000000000006D +S315E07BB280000000000000000001000000000000005C +S315E07BB290000000000000000000000000200000002D +S315E07BB2A000000000000000000000000000000040FD +S315E07BB2B0000000000000000000000000000000002D +S315E07BB2C0000000000000000000000000000000001D +S315E07BB2D000002000000000000000000000000000ED +S315E07BB2E000000000000000000000000000000000FD +S315E07BB2F000000000000000000000000000000000ED +S315E07BB30000000000000000000000000000000000DC +S315E07BB310000000000000000000000000000000804C +S315E07BB32000000000000000000000000000000000BC +S315E07BB3300010000400000000002000000000000078 +S315E07BB340000000000000000000000000800000001C +S315E07BB350000000000000000000000000000020006C +S315E07BB360000000000000000000000000000000007C +S315E07BB370000000000000000000000000000000006C +S315E07BB3802E650000C0006020400050205040000049 +S315E07BB390104000001000000000400000408040406C +S315E07BB3A000A00000000080200000A000000000005C +S315E07BB3B00000C040000000004000E000404000008C +S315E07BB3C000400000400040100000404000000000CC +S315E07BB3D070000000400000004000400000200000BC +S315E07BB3E040800020804000E0004000A0000020007C +S315E07BB3F000000000804000400040006000204020CC +S315E07BB400004000C02000404000000000400040209B +S315E07BB410402040004000400020000000000040004B +S315E07BB42000400000004000400020406080A04000DB +S315E07BB4302080000020008040A0804080004080800B +S315E07BB4400000E000008040800040002000400000DB +S315E07BB45040400000C04000A04080200000C00000CB +S315E07BB460804080008020406080200000802000605B +S315E07BB47000C020008040808000002000008000002B +S315E07BB480002040400000C000204000A0004020009B +S315E07BB49020400000004000008020C00000000080CB +S315E07BB4A0402000400080008040000060004020405B +S315E07BB4B080400000400040C000804080204000008B +S315E07BB4C080000000200040A04000A00080800000BB +S315E07BB4D0C00000000000400020400000C04080002B +S315E07BB4E080800080408000000000400080400000BB +S315E07BB4F08080000080400081402D1E0040000000DF +S315E07BB500000000500000000000000060100000001A +S315E07BB51000000020400060000040A000000000002A +S315E07BB520200000006000000000404000004000007A +S315E07BB530400040001040402000104080004040002A +S315E07BB54000104000600040206000000000400004E6 +S315E07BB550000000401000800000000000006000005A +S315E07BB5608140000000000000000000008000408079 +S315E07BB57000000000600000000000200020000020AA +S315E07BB580400000200000000000000020000000409A +S315E07BB59000000000000000002000004000000040AA +S315E07BB5A000008000800000A000800080000020007A +S315E07BB5B040006080008000200000400000000080AA +S315E07BB5C0000000000020400080004080002000005A +S315E07BB5D0208020004000000000008000000000800A +S315E07BB5E000006000000000000040802000004080FA +S315E07BB5F000800020000080000000200000008040EA +S315E07BB6000040000000800040002000100080000029 +S315E07BB610C000802000000000800000200000800049 +S315E07BB620800400A0400020400000000000000040B5 +S315E07BB6300000800080000000000000000020000089 +S315E07BB6402000200000000040008000800000000019 +S315E07BB6500000000000008040804000808000000009 +S315E07BB66000000000400000008040000000008000F9 +S315E07BB67000401DF700200040206000000060104085 +S315E07BB6800000100000000000000000400000008089 +S315E07BB690000000000000004080000000E0000000A9 +S315E07BB6A00000000080000000000000208000000019 +S315E07BB6B000000000000000000000400000000000E9 +S315E07BB6C00010000040000040000060000000002009 +S315E07BB6D0000040E000800000402000402080210008 +S315E07BB6E020004000000000000040000040000020F9 +S315E07BB6F04040204000400040000000000040000049 +S315E07BB7004060000040600000002000000000000078 +S315E07BB7106000000000000000004000006020400068 +S315E07BB72040002040000020008000A0000040004058 +S315E07BB73080C0002080000020408040400000400028 +S315E07BB7400000400000408040000040800000008018 +S315E07BB750400080400000A0204060800000008040E8 +S315E07BB76020A0004000008000002000000000800058 +S315E07BB77000000040004080000000200040002000E8 +S315E07BB7802000004000400040000000004000000038 +S315E07BB79000004000004000000040004000208000A8 +S315E07BB7A000C000400000400000C0000040200000D8 +S315E07BB7B08080000000408040808040C000008000A8 +S315E07BB7C08000400000000000400020408000C00078 +S315E07BB7D000000000000040800080000040008040C8 +S315E07BB7E0000020008000800040008052DA004000AC +S315E07BB7F010C0004020004000400000000000408078 +S315E07BB80000106080400040000000400000600000C7 +S315E07BB8100000002000000000000000000020004047 +S315E07BB8204000400000400020002000000040000077 +S315E07BB8306000400000004000400000604080000067 +S315E07BB8400000000000000000200000200000240033 +S315E07BB8500000400000000000208000004000000067 +S315E07BB8600000002000200000200000000000000017 +S315E07BB8700000004040000020204020000000002027 +S315E07BB880000040000000004000C0400000000000D7 +S315E07BB89020400000000000008020000020800000A7 +S315E07BB8A080000000200080000000800000A00000F7 +S315E07BB8B000C00000000000404000004000408000E7 +S315E07BB8C000000000000000000000000040000000D7 +S315E07BB8D0C000000000004000000000608040402087 +S315E07BB8E00040000000000020000060000000002017 +S315E07BB8F000000000800000400000000040000040A7 +S315E07BB9000020004000004000400000400040000076 +S315E07BB9100000008040000000004000800000000046 +S315E07BB92080200040400000000000000000A0008076 +S315E07BB93000400000000000008000800080000000E6 +S315E07BB9400000000000408040000000C00040400056 +S315E07BB95040200040008000000080008000000080E6 +S315E07BB960800000004D2B00208080000080000000DE +S315E07BB9700000200000000000000000010020100015 +S315E07BB9800000402000000020000000800000000056 +S315E07BB9900000000000000020000000000000000026 +S315E07BB9A080000000208000000000000000400020B6 +S315E07BB9B0000000000400200060400000C040000062 +S315E07BB9C060000040000020800000000020000000B6 +S315E07BB9D00000000000200000002000004000800006 +S315E07BB9E020000040002040000020400000000000D6 +S315E07BB9F00000000000004000000000000060000046 +S315E07BBA0000000000000000000000000000000020B5 +S315E07BBA108000400020000000000020000000C060A5 +S315E07BBA20000020000000000000000020C000C000F5 +S315E07BBA3000000080000000000000400020000000C5 +S315E07BBA400080004080000080400000408080000055 +S315E07BBA500000000000000000000000000000000085 +S315E07BBA600000400000000000402000000000400095 +S315E07BBA7000004000000000000040000000000000E5 +S315E07BBA800000000000000000002000000000000035 +S315E07BBA9000208000000000000000400000A00000C5 +S315E07BBAA00000804000000000000000800000602075 +S315E07BBAB000000000000000000000008000000000A5 +S315E07BBAC000000000008000008000000000004000D5 +S315E07BBAD0804000000000C0004000010100E55B0003 +S315E07BBAE000200010C0000020400000200000000085 +S315E07BBAF08000100040A01020400000404000402025 +S315E07BBB002000000020C000000000000000000020B4 +S315E07BBB100060400040004000008000000020800084 +S315E07BBB200000000000000000400040004004402090 +S315E07BBB304020400000800040600000200020002084 +S315E07BBB4000A40000600000000000200040002040D0 +S315E07BBB50000000004020A0000000200000404020C4 +S315E07BBB608000006040004000200000602000004034 +S315E07BBB7020000000004060000040C0000040000064 +S315E07BBB800000004000000000800000C0200000A014 +S315E07BBB90400080200000802000C0002080008020C4 +S315E07BBBA00000804020804080400000408040400094 +S315E07BBBB000800040200000000000000020C0400024 +S315E07BBBC0008000C0400000000040000000600040B4 +S315E07BBBD00000000000004000200000404020000004 +S315E07BBBE02000002000008040400000400000004034 +S315E07BBBF000C0402000400000000000400000004004 +S315E07BBC0000002000008000000000402000000000D3 +S315E07BBC10000040A000006000000000000000A000E3 +S315E07BBC200080000000804000002000808000000053 +S315E07BBC300000000080004000008000008000800063 +S315E07BBC40008060000040C000A00040008000C00093 +S315E07BBC50008080000000E45A0020400000200000C5 +S315E07BBC604040204000000000000040000000000053 +S315E07BBC700060000000200000200040200020000043 +S315E07BBC808000400040200020004000200080000033 +S315E07BBC9020000000000000204000C00000000020E3 +S315E07BBCA00040206000004040200000000000404053 +S315E07BBCB00020000020002060000000008020400083 +S315E07BBCC00000A020000000000000200020002040B3 +S315E07BBCD00020804000004000200040002000000063 +S315E07BBCE000402000E0004000008000004030004043 +S315E07BBCF00000004000200020004020000060008023 +S315E07BBD00000000000000C0802000000080200020B2 +S315E07BBD100000002000800000000000002080000082 +S315E07BBD200020000000004020400080000000000072 +S315E07BBD3000800000000000800000400040200040C2 +S315E07BBD4000800060000000000000400000008000F2 +S315E07BBD500000002000000000004000002000000002 +S315E07BBD604040000000000040000000400000000072 +S315E07BBD70A000404000000000808000000000000042 +S315E07BBD8000C00000004020000000200020000000F2 +S315E07BBD90C000800000000000000080200000000062 +S315E07BBDA000C00000000000000000800000000020D2 +S315E07BBDB000400000000040000000808000000000A2 +S315E07BBDC00000000080408040800080806000000EA4 +S315E07BBDD0F900000000200000800000000000000069 +S315E07BBDE00000000000000000000000000000800072 +S315E07BBDF00020000000000020800000400000008062 +S315E07BBE0000000000000000000000000000000000D1 +S315E07BBE1040208000000000000000000000000000E1 +S315E07BBE202080000000000040200000200000002071 +S315E07BBE300000000000800000000000000000200001 +S315E07BBE4000000000400000000000000040000040D1 +S315E07BBE5000000000004040000000200000000000E1 +S315E07BBE6000000000000010604000000000000000C1 +S315E07BBE700000000000000020408000000000008001 +S315E07BBE802000000000000000000000000000000031 +S315E07BBE900000000000000080000000000000008041 +S315E07BBEA00000400000004000000000000040000071 +S315E07BBEB000000000004000000040A00040200000A1 +S315E07BBEC000000000400000000000000000000000D1 +S315E07BBED00000004000000000004040000000000041 +S315E07BBEE000000000000000000000000000000000F1 +S315E07BBEF00000000000800000008040000000006041 +S315E07BBF0000000000000000000000800080000000D0 +S315E07BBF1000000000200000000000800000800000A0 +S315E07BBF200000000000000000000000000000004070 +S315E07BBF300000008000800000008000004080000060 +S315E07BBF4000000000400000408B0200000000000083 +S315E07BBF5000408040204000000000006000000000C0 +S315E07BBF602000002000000020000000400080200030 +S315E07BBF700000000000400000000000000020000000 +S315E07BBF808000000040000000000000400000000050 +S315E07BBF9000008000406000400000000000000000E0 +S315E07BBFA00000000000002000000020004000006050 +S315E07BBFB00000000080000000400000000000002040 +S315E07BBFC000400000C00000000000000000002020D0 +S315E07BBFD0000000400020C040000000800000000020 +S315E07BBFE000000000000000002000002040008000F0 +S315E07BBFF08000000000200040000080000080000000 +S315E07BC000802000004040004000004000008020008F +S315E07BC010004000200000000000600080000000007F +S315E07BC020000000000020004000000040000000808F +S315E07BC03000000000000000000000004080000020BF +S315E07BC04000000000000000000000800000200040AF +S315E07BC050000000008000000000000020004000009F +S315E07BC06000008000000040000040804000000000AF +S315E07BC07000000000802000008000000040000000FF +S315E07BC0800000C0000000000000000020000000006F +S315E07BC09000400000400000000000008000004000FF +S315E07BC0A000002000400000000000000000000000CF +S315E07BC0B0000000000000008040800000000080005F +S315E07BC0C0004D3D0060000000200000000000008085 +S315E07BC0D0000000000080000000000000400000003F +S315E07BC0E000000000000000000000000000000000EF +S315E07BC0F0200020004000000000002000000000003F +S315E07BC100000000000020200040002000002000000E +S315E07BC11000000040004000001000004000000000EE +S315E07BC120000000402000000000000000200000200E +S315E07BC130000000002000002000000000200000003E +S315E07BC140002000204000000000000000000000000E +S315E07BC15000000000000000400000000000004000FE +S315E07BC16000000020000000000040002000000000EE +S315E07BC17000000000000000402000000000002000DE +S315E07BC180800000004000000000000000000000008E +S315E07BC190204000000000000000000000800000005E +S315E07BC1A0000000800000000000200000000000008E +S315E07BC1B0000000000000200000800000004020001E +S315E07BC1C000000000000000000000000000000040CE +S315E07BC1D0000040000000000000000020004000005E +S315E07BC1E000000000800000400000000000004000EE +S315E07BC1F0000000002000200000000000000000009E +S315E07BC200000000008000000000000000000000004D +S315E07BC21000000080000000000000004000000000FD +S315E07BC22080000000000000000000004000000000ED +S315E07BC23000000040008000200000FC0B00009060C6 +S315E07BC240000000000000A00000004000200010007D +S315E07BC250000020000000000000200000002000001D +S315E07BC26000002000000000402000000000000000ED +S315E07BC270004000000000204000200000000020007D +S315E07BC28000000000000020000000200000400000CD +S315E07BC29000000000200000000000000020000000FD +S315E07BC2A020000000002000000000000020000000CD +S315E07BC2B0600000000000004000002000000000005D +S315E07BC2C0000000000000200040000000000020206D +S315E07BC2D000000000000000000000000020000000DD +S315E07BC2E0200000002000000040000000A0002000AD +S315E07BC2F0204020002040000000000020000020407D +S315E07BC300000000400000000000000040208000802C +S315E07BC310202000200000000040008000008000001C +S315E07BC320800080000000000000000000004000204C +S315E07BC330000040000000200040000020004000009C +S315E07BC340000000400000004000000000000000000C +S315E07BC350000000000000000000400000000000003C +S315E07BC36040000000400040002000000000400080CC +S315E07BC37000004000004000008000200000000040FC +S315E07BC38080002040000000400000004000004000AC +S315E07BC39000000000000000000000004000400000BC +S315E07BC3A000C0000040000000C0000000000000006C +S315E07BC3B0008040D50B00000000000000200010400C +S315E07BC3C0000000000000000060004000004000002C +S315E07BC3D0000040000000000000000000000020009C +S315E07BC3E000000000004060004000000040200000AC +S315E07BC3F0000000000000000000400020000000007C +S315E07BC400004000400040000000400000004000206B +S315E07BC41000400000400000000040400000000000BB +S315E07BC420000000000040004000002040000000408B +S315E07BC430002000400000400000000040200000405B +S315E07BC440000000400000000000400000400040008B +S315E07BC450004000000000000000002000000040805B +S315E07BC46000008040000000000000000000000000AB +S315E07BC470200000408000000020800040000000405B +S315E07BC480000000C00000000040000000400080404B +S315E07BC490200040004080400000604020400000409B +S315E07BC4A000000000000000000040000000000000EB +S315E07BC4B0000020000000000000400000002040005B +S315E07BC4C000000000000000000040000000000020AB +S315E07BC4D0400000000000400000000000000000007B +S315E07BC4E000000000000000000000000000000000EB +S315E07BC4F0000000000000008000000040008040005B +S315E07BC50000004000800020000000000000000000EA +S315E07BC510000000C00000000000000000000080403A +S315E07BC52000000080000080000000000020AD0000DD +S315E07BC53000000000000000000040000000400040DA +S315E07BC54020000040000000400040000000000000AA +S315E07BC550002000004000000040000040000040005A +S315E07BC560004000000040200040000000000000008A +S315E07BC570400000000000000000000000000000001A +S315E07BC58000004000000000000000000000000040CA +S315E07BC59000000000000000400000000000000000FA +S315E07BC5A000000000000040000000000000200000CA +S315E07BC5B000402000000040200000000000402000FA +S315E07BC5C000000000400000000000000000000020AA +S315E07BC5D0000000000000002000800040000000001A +S315E07BC5E0000000000080000020008020002000008A +S315E07BC5F000400020000020200000002000000060BA +S315E07BC60000000000800060200020000000000000A9 +S315E07BC6100000000000000080004020000040000099 +S315E07BC62000004000002000002020000000400000C9 +S315E07BC6300000000000000000000000000000000099 +S315E07BC64000000000002040004000000040000000A9 +S315E07BC6500000000000000000200000000000000059 +S315E07BC66000000000000040000000000000400000E9 +S315E07BC6700000400000004000000080000000000059 +S315E07BC68000800000400000408000000000000000C9 +S315E07BC69080000000000000000000000000000000B9 +S315E07BC6A00000010000DBFD00000080000000004090 +S315E07BC6B00000000000000000000000000000000019 +S315E07BC6C00000002000000000000000400040000069 +S315E07BC6D00000008000200000000000002000000039 +S315E07BC6E000000000000000000000000000400000A9 +S315E07BC6F04000200000000000000000000060000019 +S315E07BC70000402000400000400000000000000020C8 +S315E07BC7100000000000000000200000000000000098 +S315E07BC7200000000000000040000000000000000068 +S315E07BC7300000000000000000000000000000000098 +S315E07BC7404000002000200000000000000000804048 +S315E07BC75040000000802040200000800000000000B8 +S315E07BC7600000002000000000004020000000408028 +S315E07BC7700000002000004000000000200040000098 +S315E07BC7800000000000000000000000000020200008 +S315E07BC7902000000040002000002000000000000098 +S315E07BC7A000000000004000000020000000000000C8 +S315E07BC7B00040002000000040000000000000000078 +S315E07BC7C000000000000040000000000000000000C8 +S315E07BC7D00000004000000040002000400000008098 +S315E07BC7E000000000000000004080000080000000A8 +S315E07BC7F00080000000004000000000000000000018 +S315E07BC800000000C000000040000000400000000087 +S315E07BC8100000000040000000004000800000EBF7D5 +S315E07BC82000800000004000000040000000000000A7 +S315E07BC8300000000000000000000000400000002037 +S315E07BC8400000000040004000000000000000000007 +S315E07BC85000000000000000800000000000000000F7 +S315E07BC8600000800000000060000020400000002007 +S315E07BC8700000000000000000200000204000C00017 +S315E07BC8800020002000400040000000004000000047 +S315E07BC8902000000000600000002000004000000057 +S315E07BC8A04040000040000000004000000000000027 +S315E07BC8B00000400040000000000000400000000057 +S315E07BC8C000000000A0000080000000006000008007 +S315E07BC8D00000400000000080400000000000008077 +S315E07BC8E00000008000008000000000400000008027 +S315E07BC8F00000000080804000008000008000800017 +S315E07BC9008080000040800000008000000000000086 +S315E07BC91020000000002000004000004000200000D6 +S315E07BC9200000000000400000000000000000000066 +S315E07BC9300000000000000000400000000000000056 +S315E07BC9400000000040000000000000000040000006 +S315E07BC9500000004000000000408000000000000076 +S315E07BC9600000000000000000000040000000000026 +S315E07BC97000006000402040000000600000000000F6 +S315E07BC9800000000000000000C000000080004000C6 +S315E07BC99000000000000120A3DF0000600000000033 +S315E07BC9A00000000000000060000000002040000066 +S315E07BC9B02000002000000060000060000000000016 +S315E07BC9C02000000000000000200000000000004086 +S315E07BC9D000000080004000400000000040000000B6 +S315E07BC9E00000008000000000000000000000000066 +S315E07BC9F04000000000000020000000000040002016 +S315E07BCA000000200000000000000040000000000065 +S315E07BCA1000004000200040000020000000004000B5 +S315E07BCA202000000000000000004000000000000045 +S315E07BCA300000000000000000000000200000000075 +S315E07BCA400000000080000000000000000000008085 +S315E07BCA5000000000004000000000400000000000F5 +S315E07BCA600000000000002000002000804000000065 +S315E07BCA700000000040000000004000000000400095 +S315E07BCA800000000000200020000000000000000005 +S315E07BCA9000000000000000000000400000000000F5 +S315E07BCAA00000000000004000200040000000000085 +S315E07BCAB00000000000200000400040000000002055 +S315E07BCAC00000004040000020000040000080004065 +S315E07BCAD000000000000000000000000000000000F5 +S315E07BCAE000000000000000800000008000000000E5 +S315E07BCAF000000000000000000000000000000000D5 +S315E07BCB000000000000000000400000400000004004 +S315E07BCB109D94000080800000000000000000400043 +S315E07BCB201000008000000000A00000000000000074 +S315E07BCB3000000000000080000000000000400000D4 +S315E07BCB402000000000000000000000000020000044 +S315E07BCB502000004000000000000000000000000014 +S315E07BCB600000000040000000400000006000000084 +S315E07BCB7000002000000000000000000080000000B4 +S315E07BCB802000400000400000000000000000002084 +S315E07BCB9000000000000000002000000000000020F4 +S315E07BCBA000000020000000200000000000000040A4 +S315E07BCBB00000200000000000002000800000000054 +S315E07BCBC0000000A000208060002000C00000800004 +S315E07BCBD000400000800000004000000000000000F4 +S315E07BCBE00000000000000000008000000000000064 +S315E07BCBF00000000000800000008040000000800014 +S315E07BCC000000000040000000000000000000000083 +S315E07BCC100020000000200000000000000000000073 +S315E07BCC2000000000004000004000000000004020C3 +S315E07BCC300000000000000040000000000000200033 +S315E07BCC400000400020200080000080000000008083 +S315E07BCC50000080000000800000A000000000C00013 +S315E07BCC600000800000000000004000008000000023 +S315E07BCC7080800000800080008000000000000000D3 +S315E07BCC80808000008000400000C7010000004080FB +S315E07BCC9040004020000000000000000000500090B3 +S315E07BCCA000004000000000000000C0000000000023 +S315E07BCCB000008000400000004000008000608000B3 +S315E07BCCC00000000000000000000000000000000003 +S315E07BCCD06080402040002000200020000000000013 +S315E07BCCE08000000000000000000000000040000023 +S315E07BCCF000002000000000000000000000000000B3 +S315E07BCD000000006000000000000000002000000042 +S315E07BCD100000400000002040200000200040000092 +S315E07BCD2020000040000000000000004000000040C2 +S315E07BCD3000000000002000200000000080000000D2 +S315E07BCD4000800040008000400060004000800000E2 +S315E07BCD50A0000000204000008040800000400000F2 +S315E07BCD6000000000004000000000000000400000E2 +S315E07BCD700000200020408000204040000080000032 +S315E07BCD800020000000000000400040000000004062 +S315E07BCD904000004000004000000040000000000032 +S315E07BCDA00000000000000000000000200000000002 +S315E07BCDB00040006020000000000000000000000052 +S315E07BCDC08000000000808000800000000000000002 +S315E07BCDD020000000008000000080000080000060F2 +S315E07BCDE00000000000000080000000804000800022 +S315E07BCDF000000000C0000000000000000000208072 +S315E07BCE0000203B5F00408080000000000000800047 +S315E07BCE100000004000000000000010000040000021 +S315E07BCE2080000000000040000000200000002000A1 +S315E07BCE300000000000000020000000000080402091 +S315E07BCE400000002000200020000000000000000021 +S315E07BCE500000400000000000000000000000000031 +S315E07BCE6000000000000020000000200000004000E1 +S315E07BCE7020200000002000002000000000200000B1 +S315E07BCE800000000000000000200000000000000021 +S315E07BCE9000000000000000002000400000000000D1 +S315E07BCEA00020400000000000000020400000000061 +S315E07BCEB000002000400000000000000000000000B1 +S315E07BCEC00080000000002000000000002000000041 +S315E07BCED060000000002000000020008000200000B1 +S315E07BCEE08040000000000020000000800000004041 +S315E07BCEF00000000000002020000040200000002011 +S315E07BCF0000000000000020000000000000000000A0 +S315E07BCF100000000000000020000000200040000030 +S315E07BCF200000200000000000000000000000000080 +S315E07BCF300000000000000000000000000000000090 +S315E07BCF40000000000000400000C000000000000080 +S315E07BCF5000400000000000000000000000000040F0 +S315E07BCF600020400000000000000000000000000000 +S315E07BCF700000000080000000010180016C001000D1 +S315E07BCF804000000040005020004000404000600030 +S315E07BCF9050200020000000400040600000002000A0 +S315E07BCFA000002000000000208020200000006000C0 +S315E07BCFB0200000600000A000600000202000004010 +S315E07BCFC020400040402000206000402060000000C0 +S315E07BCFD040000040002060000020400000600040F0 +S315E07BCFE04020400000206000000000200020000080 +S315E07BCFF00060204040002000000060000000400010 +S315E07BD000004040000020600040004000006060007F +S315E07BD010006060000000000000004020200000006F +S315E07BD020200000202000802040A0A04000C080009F +S315E07BD030208000406000408060002080800060802F +S315E07BD040C0200020000020004000200000804080BF +S315E07BD050800040A08000204000C0008040008040EF +S315E07BD06000408020E000006080202000000000403F +S315E07BD070600020000020200060002000600040006F +S315E07BD08000404000200040000060000000000000FF +S315E07BD09000400000002020400040000000004000EF +S315E07BD0A000404000204000200000000040002000BF +S315E07BD0B000408040408040800080A000000040002F +S315E07BD0C0000000404000008040804080C00000605F +S315E07BD0D020C000400000408000804000008040008F +S315E07BD0E00080C00040000040804000C0008000C05F +S315E07BD0F000802000D08F004020000040000020C050 +S315E07BD1000040004010400040004020D000006060BE +S315E07BD11000C0200020A000000080000020802000CE +S315E07BD120004000402040A040204080400040A000DE +S315E07BD130C000600020000040A0004000804000C0AE +S315E07BD140204000002020000000000000C04020407E +S315E07BD15000006020C06000600020004000402000AE +S315E07BD160E00020200040200040200060000040409E +S315E07BD170000040400040004000004000002040604E +S315E07BD18000400020004020400000600000000000DE +S315E07BD190004000600020402000006000204000400E +S315E07BD1A000806060800060002000008060400000BE +S315E07BD1B00020400000402060002000C0204020008E +S315E07BD1C02020002080E0000080000040004020001E +S315E07BD1D000A00080404000000000002000600020AE +S315E07BD1E0006000600000406000000000600000001E +S315E07BD1F0200040204040204000002000000000004E +S315E07BD20000400040006000004020004000006000DD +S315E07BD21000002040200060400000004000400020ED +S315E07BD2200000606000000000608060C0004000009D +S315E07BD23080800000000000C0004000400000A000AD +S315E07BD24080000080404000800000002000004020FD +S315E07BD25000400040008040000000000000000080AD +S315E07BD2604080008000004040006000C000A32600B4 +S315E07BD2700000000000406040000020001040C0003D +S315E07BD28000000030304040000000002020C0C0009D +S315E07BD290000000202080804000000060600080006D +S315E07BD2A0000000606080800000000060600000009D +S315E07BD2B0000000E0E0000000000040E0604000008D +S315E07BD2C020000040C000000000202040C00000009D +S315E07BD2D0002020404000000000202080004000002D +S315E07BD2E0006060000000000000606040000000001D +S315E07BD2F0406060400000000040606040000000004D +S315E07BD30000606040000020004040400000000020BC +S315E07BD3102040C00000000020A0C0C04000000020EC +S315E07BD3202080804000000060E0808080000000601C +S315E07BD330608080000000006060000080000000E00C +S315E07BD340E0400000000080E0E0000000000080C0DC +S315E07BD350C08000000020A0C0C0000000002020406C +S315E07BD360C00000000020200000400000406060001C +S315E07BD370000000000060404000000000404060404C +S315E07BD38000000000006060000000000000606000BC +S315E07BD390000020000040400000000020604040008C +S315E07BD3A00000002000C0C0000000400080808000BC +S315E07BD3B00000004060C0800000004040408080006C +S315E07BD3C00000006060400080000080E0E0800000BC +S315E07BD3D0000000C0C0800000000000C0C00000006C +S315E07BD3E00000A0C0C000F7260000000000400060FF +S315E07BD3F06004000000101400200000301070700004 +S315E07BD4004000002020A0A0C1C008006021A0A88029 +S315E07BD41080000060202020808000002060A0E00269 +S315E07BD420801000E062607000800000A0A0E0E00079 +S315E07BD430000000E0E0606004000000404480A00063 +S315E07BD4400020206060808000002020406041400812 +S315E07BD45000602180A8000000006060206000000082 +S315E07BD460002000406002001000A022607000800077 +S315E07BD4700060606060000000006060206004000087 +S315E07BD4800040440020000020206060C0C0000020F7 +S315E07BD49020A0A04100080060018028808000002059 +S315E07BD4A060E0E0008000006060202002001000A0C9 +S315E07BD4B022607000000000E080406000000000A079 +S315E07BD4C0E0E06004002000404440E000002020E0F3 +S315E07BD4D06000C00000202060608180080060212021 +S315E07BD4E02800000000202020600000000060204033 +S315E07BD4F04002001000C04260700080000060602047 +S315E07BD5006000000000606060600400000040040092 +S315E07BD510200000200060600000000020204040C129 +S315E07BD520C008000001808880C000004040A02080C9 +S315E07BD5308000004040808002001000E022607000A6 +S315E07BD540000000E0E0A0A000000000C0C0C0C00476 +S315E07BD550002000C0C4406000000000E0E0404001E5 +S315E07BD56079000000000040406020000000001010C1 +S315E07BD5708000000030303070404000000000A0A00A +S315E07BD580808000006020A0A080800000206020607A +S315E07BD59080800000206080C080000000A04060604A +S315E07BD5A000000000A0A0E08000000000A0E040407A +S315E07BD5B000000000004080C00000202020608080CA +S315E07BD5C0000000006000404000004020A08000009A +S315E07BD5D0000060204040000000000020602000004A +S315E07BD5E000006020602000000000206060400000BA +S315E07BD5F0000020404040000000004040000000006A +S315E07BD60020206060C0C000002000408080C0000019 +S315E07BD6106020A0A000000000204040C08000000009 +S315E07BD62000202060000000002000200000000000B9 +S315E07BD63080E020C00000000000E020A000000000A9 +S315E07BD640C000808000000020A0E0C0000000200039 +S315E07BD650206080C000004020202000000000206089 +S315E07BD6604020000000002060004000000000000039 +S315E07BD67020200000000020206060000000000060A9 +S315E07BD68020200000000000400000000000206060D9 +S315E07BD6900000000020200040C040000000008080A9 +S315E07BD6A000000000004020E000800000400000C059 +S315E07BD6B0000000002060202000000000A020A06089 +S315E07BD6C00000000040400000000000004040404079 +S315E07BD6D00000000060C00000A3E300008000004083 +S315E07BD6E00020000080000010500000000020101099 +S315E07BD6F050404000002020A0A0C0C000002020A019 +S315E07BD700A0808000006000202080800000200080D8 +S315E07BD710E0008000006040604000000000A0C0A008 +S315E07BD7208000000000A0C020600000000040408038 +S315E07BD73080000000006060C0C000002000606040A8 +S315E07BD740400000202080A0000000006040006000D8 +S315E07BD7500000006000402000000000002060200008 +S315E07BD7600000004020206000000000204020600098 +S315E07BD77000000000404000000000206040C0C00088 +S315E07BD78000200020204000000020008020808000D8 +S315E07BD7900060600060008000006060C0C080800048 +S315E07BD7A0002040604000000000E060606000000018 +S315E07BD7B0002020806000000000404040C000000068 +S315E07BD7C020E06040C00000202060408080000000B8 +S315E07BD7D00020200000000000402060000000006088 +S315E07BD7E06000400000000040406060000000006098 +S315E07BD7F06000600000000020606060000000004088 +S315E07BD8004000000000202020204040000000004037 +S315E07BD810C0C000000000000000808000000040A047 +S315E07BD820A080800000404000C080800000406060B7 +S315E07BD8306000000000E060A06000000000C0C080E7 +S315E07BD840C000000000C08000000000000020A04077 +S315E07BD85040E07C000000000000004020000000006B +S315E07BD8605010404000001080B07000800000000047 +S315E07BD870C0C0808000000000808080800000006067 +S315E07BD8800040808000000060A080800000000040B7 +S315E07BD890406000000000C0A0E0800000000080E067 +S315E07BD8A0600000000000004080C0000000000040F7 +S315E07BD8B0C0C0000020206020000000000000A080A7 +S315E07BD8C00000000040206060000000004060200017 +S315E07BD8D000000000600000000000000020406000C7 +S315E07BD8E000000000204020000000000040000040D7 +S315E07BD8F0000020004060C0C00000200040808040E7 +S315E07BD9000000200020000000000000402080800016 +S315E07BD91000004040A0A080800000600040600000E6 +S315E07BD9200000606000C00000000000E06080000056 +S315E07BD9300000C00000000000000000408000000006 +S315E07BD9402000006080C00000002000000000000096 +S315E07BD9500040402000000000202000000000000086 +S315E07BD96000002020000000006060604000000000B6 +S315E07BD97000602020000000004040404000000000A6 +S315E07BD9802020400000002020804000400000000076 +S315E07BD99080800000000000400040008000004000E6 +S315E07BD9A040008080000060402020000000002020B6 +S315E07BD9B06020000000000000400000000000004006 +S315E07BD9C0C0C000000000200080802B3C00000000EF +S315E07BD9D00040404060000000004040404000003096 +S315E07BD9E00060200040000000004040004000000056 +S315E07BD9F00000000000000040604040000000004066 +S315E07BDA0060206080800000206000200000000040F5 +S315E07BDA1060406000000000400060200000000000E5 +S315E07BDA2040004000002020004040000000202060B5 +S315E07BDA3020000000000020202000000000400020A5 +S315E07BDA406000000000206000600000000060400095 +S315E07BDA504000000000204060000000000060606045 +S315E07BDA6060000000004000404000002000002000F5 +S315E07BDA700000002020C0A080000000200080A000E5 +S315E07BDA808000002040E0A0808000004000002080F5 +S315E07BDA9000000060602060000000006060A0E000A5 +S315E07BDAA0000000C0C0404000000000C08080C00095 +S315E07BDAB000200080C0C0C000002000006040400025 +S315E07BDAC000202000000000000020204060000000D5 +S315E07BDAD00040400040000000004040404000000025 +S315E07BDAE00040400040000000004040004000000055 +S315E07BDAF000404040400000202040404000000020A5 +S315E07BDB0020808000C0000000008000008000004094 +S315E07BDB104080C00080000040008000800000006004 +S315E07BDB2040404000000000C0000080000000008014 +S315E07BDB3000C0C0000000008040C0C000000000E0E4 +S315E07BDB4041C0C0A81C00000080000000200000004F +S315E07BDB500000404000400000203000404040000094 +S315E07BDB600000404040000000000020200000000054 +S315E07BDB702000202000000000204040400000000004 +S315E07BDB802000200000000000604020000000000034 +S315E07BDB900040004000000000000040000000000064 +S315E07BDBA00000004000000000000040400000002034 +S315E07BDBB000000000000000000000000000004000C4 +S315E07BDBC040200000000000204000000000000040F4 +S315E07BDBD000400000000000000000000000000000A4 +S315E07BDBE040400000000000000000000000002040F4 +S315E07BDBF0C080000000200020800000002000004064 +S315E07BDC0080800000006080C00080000040406000B3 +S315E07BDC100000000080806020000000002060C040A3 +S315E07BDC200000000000004000000000202000404093 +S315E07BDC300000002000000000000000002000000043 +S315E07BDC400000404020000000000040404000000013 +S315E07BDC500000404040400000000000000000000063 +S315E07BDC600000002040000000000000004040000073 +S315E07BDC702020000000400000000080C0C0000000C3 +S315E07BDC8000000000800000000000E0A00000000033 +S315E07BDC90004000C000800000002040400000000003 +S315E07BDCA000C0804000000000008080800000000013 +S315E07BDCB040800080000000000080C0C0F448008007 +S315E07BDCC00000004040404000000000000040400073 +S315E07BDCD00020000000000000000000206000400003 +S315E07BDCE00020200000000000004040404000000093 +S315E07BDCF000400000608080000020400000000000C3 +S315E07BDD0000000040400000000020200000000000F2 +S315E07BDD100000404040000020002060000000002022 +S315E07BDD200040000000000000202020000000006092 +S315E07BDD3020006000000000602000600000000040E2 +S315E07BDD404020600000000020002000000000002052 +S315E07BDD504040400000000040000000000020000042 +S315E07BDD6020000000002000C0E0C000000020008012 +S315E07BDD70A000800000604080E000000000202040A2 +S315E07BDD80E000000000200000000000000080008032 +S315E07BDD908000000000C080A02000000000C08080E2 +S315E07BDDA0C00000200080C080800000000000604052 +S315E07BDDB040000020200000000000002040404000A2 +S315E07BDDC000000000000040000000000000000000B2 +S315E07BDDD00000000000006000000000004000400002 +S315E07BDDE00000000000400000000000404040400092 +S315E07BDDF00000000000008000000000800000800042 +S315E07BDE000000404040008000000000C04000000071 +S315E07BDE10000000000000000000C00040C0000000E1 +S315E07BDE2000C04000400000000080008080000000D1 +S315E07BDE3000E04081009ECF00000000000000000073 +S315E07BDE40000000044060004000000000004000004D +S315E07BDE500000000040004000000100080040000098 +S315E07BDE600000000040400000000000406000000031 +S315E07BDE70000200100080000000004040200000000F +S315E07BDE80000000402000000000040020404000002D +S315E07BDE900020000040400000000000000000000180 +S315E07BDEA000080040000000000000000000000000C9 +S315E07BDEB040404000000000024050408000000000EF +S315E07BDEC0004000000000000000002000000000048D +S315E07BDED00020404000000000000000000000000041 +S315E07BDEE06040C04000010008004080000000000068 +S315E07BDEF02000000000000000C0408080000240500F +S315E07BDF0000800000000000008080000000000040F0 +S315E07BDF1080800000000480A04000000000202000FC +S315E07BDF2000000000000000004040000100082040A7 +S315E07BDF3000000000406000000000000000004000A0 +S315E07BDF4000000002001000800000000000002000BE +S315E07BDF50000000000020400000000004002000409C +S315E07BDF6000000000000040000000000080C0800050 +S315E07BDF7000010008004080000000000040400000F7 +S315E07BDF800000000040C0808000020010008000009E +S315E07BDF90000000C0C04000000000008040000000A0 +S315E07BDFA0000400A00080000000000080008004994F +S315E07BDFB0000080800000400000000000040020207C +S315E07BDFC04000000000400000000000000000000070 +S315E07BDFD04000010008004040000000400040000097 +S315E07BDFE000000000004000800000020010008080FE +S315E07BDFF00000000040000000000000004000200020 +S315E07BE000000004002040000000002040004040006B +S315E07BE0100020000000404000010008004040000076 +S315E07BE020000060004000000000004020000000008F +S315E07BE03002401000800000000000000000000000AD +S315E07BE04000004000000000000400206000000000AB +S315E07BE050000000000000000000006000C00001201E +S315E07BE060080060C0000000200000C08000000000C7 +S315E07BE07000408080800002401040808000000040AD +S315E07BE08000800000000000004000800000000400EB +S315E07BE090E0008000000000400080400000000000BF +S315E07BE0A040004000010008004040000000004000C6 +S315E07BE0B040000000000040000000000002005040ED +S315E07BE0C080000000000000004000000000000040EF +S315E07BE0D0000000000400206000000000000040001B +S315E07BE0E0400000000080C04000000100080040C006 +S315E07BE0F0000000000000C00080000000000040003F +S315E07BE1008000020010408080000000C000004000DC +S315E07BE11000000000800000000000048020A00000DA +S315E07BE12000000080008000089500000000000000F1 +S315E07BE13040000000000400600000000000000000DA +S315E07BE1404000000000000040400000010008004065 +S315E07BE15000000000000040000000000000400000DE +S315E07BE16080000002005000800000000000004000BC +S315E07BE170000000000020400000000004006000007A +S315E07BE18000000000000000000000000000400000EE +S315E07BE19000010008004000000000000020000000B5 +S315E07BE1A000000000400000000002001040800000FC +S315E07BE1B000000040400000000000002060000000FE +S315E07BE1C0000400604000000000000000000000004A +S315E07BE1D0002000C040000001000800C000000000F5 +S315E07BE1E000400000000000000040000080000002CC +S315E07BE1F0003020800000000000804000000000002E +S315E07BE20000A060000000000400A0400000000000C9 +S315E07BE21020800000000000000000000000010008F4 +S315E07BE220204000000000006040000000000000008D +S315E07BE23040000000000200504080000000000040EB +S315E07BE24000000000000000400000000000040060C9 +S315E07BE250000000000000000000000000000000401D +S315E07BE26080000001000800C0800000000040400004 +S315E07BE270000000000040408000000002005040802B +S315E07BE28000000000004080000000000000008000ED +S315E07BE2900000000400A00000000000000000000079 +S315E07BE2A0C6E5000083831C1C606000000303181C2A +S315E07BE2B040600000070738384040000007073838E1 +S315E07BE2C0C0C000000607303880C001010E0E7070BA +S315E07BE2D0808001010E0E7070808001010C0E6070F3 +S315E07BE2E0008003031C1CE0E0000003031C1CE0E051 +S315E07BE2F000000303181CC0E0000007073838C0C0E5 +S315E07BE300000007073838C0C000000607303880C0F9 +S315E07BE31001010E0E7070808001010E0E70708080A0 +S315E07BE32001010C0E6070008003031C1CE0E0000022 +S315E07BE33003031C1CE0E000000303181CC0E00000A4 +S315E07BE34007073838C0C0000007073838C0C0000070 +S315E07BE3500607303880C001010E0E707080800101A7 +S315E07BE3600E0E7070808001010C0E607000800303DE +S315E07BE3701C1CE0E0000003031C1CE0E00000030340 +S315E07BE380181CC0E0000007073838C0C0000007074C +S315E07BE3903838C0C000000607303880C001010E0E59 +S315E07BE3A07070808001010E0E7070808001010C0E12 +S315E07BE3B06070008003031C1CE0E0000003031C1C70 +S315E07BE3C0E0E000000303181CC0E0000007073838D4 +S315E07BE3D0C0C0000007073838C0C0000006073038E9 +S315E07BE3E080C001010E0E7070808001010E0E707090 +S315E07BE3F0808001010C0E6070008003031C1CE0E052 +S315E07BE400000002021C1CE0E000000202181CC0E0D7 +S315E07BE410000006063838C1C100D7840010202010E2 +S315E07BE420002040001040001000000010B00000000B +S315E07BE430000000302000800000000000000080002B +S315E07BE44000000020008080400080002020800000CB +S315E07BE45000000000600080400000006020000000BB +S315E07BE46000000020C000004040000040000000406B +S315E07BE470000000804000004000000080000000407B +S315E07BE48000202000800000000020000000404000CB +S315E07BE490004020000000400000406000004040005B +S315E07BE4A0004060000040400000600000000040004B +S315E07BE4B000404000004000002000400000000020BB +S315E07BE4C0008080002080402000400000000080002B +S315E07BE4D0000080000080800020800000000000209B +S315E07BE4E0000000000000000020000000C00000E00B +S315E07BE4F08000008000000000C00000C0C00020C09B +S315E07BE500800000C08000200040000040002020808A +S315E07BE510000000000000400000404000006020005A +S315E07BE520000060000060600000604000006020004A +S315E07BE530000040000040200000004000002000007A +S315E07BE54000000000200000000040002020000000CA +S315E07BE55000400000000080002080002000000000DA +S315E07BE560400080200000004000000000200000000A +S315E07BE57040000020A00000C0800000A0800000805A +S315E07BE580800000808000008000000040C0000080AA +S315E07BE5900020B9FA00000000000000000000000047 +S315E07BE5A000000000000040000000000000000000CA +S315E07BE5B000000040000000000000000000000000BA +S315E07BE5C000000000000000000000000000000000EA +S315E07BE5D000000000000000000000000000000000DA +S315E07BE5E0000000004000000000000000000000008A +S315E07BE5F00000000000000000000008008000000032 +S315E07BE6000000000000000000000000000000400069 +S315E07BE6100080000000000000000000000000000019 +S315E07BE6200000000000000000000000000000000089 +S315E07BE6300000000000200000200000000000000039 +S315E07BE6400000000000000000000000000000000069 +S315E07BE65000000080000000000000000000000000D9 +S315E07BE6600000000000000000000000000020000029 +S315E07BE6700000000000000000000000000000000039 +S315E07BE68000000000000000000000000000000040E9 +S315E07BE6900000010004000000000000000000000014 +S315E07BE6A00000000000000000000000000000800089 +S315E07BE6B000002000000000000000000000000000D9 +S315E07BE6C000000000000000000000004000000000A9 +S315E07BE6D00000000001000000000000000000008058 +S315E07BE6E000000000000000000000000000000000C9 +S315E07BE6F000000000000000000000000000000000B9 +S315E07BE700000000000000000000000077EF004020E2 +S315E07BE7101040000010400000000000404000000078 +S315E07BE7200000A04000004000004000200020A00048 +S315E07BE7302000000000600000006000000000400058 +S315E07BE74000400020000020400020400000400040C8 +S315E07BE7500020002040004000008000400000004098 +S315E07BE76040000000200080408000400020000060E8 +S315E07BE77000000080002000000020A00000E00040B8 +S315E07BE78000404000000040200040000000400000C8 +S315E07BE79000004000004000004000C0000000008018 +S315E07BE7A04000400040000000004040000000400088 +S315E07BE7B0000000C0A0400080E000C00020000020F8 +S315E07BE7C00080C00000800020800000000020204008 +S315E07BE7D0004000804000004040000080600000A0D8 +S315E07BE7E020800000C0000080C00000C04080C000E8 +S315E07BE7F0800000C0E000804040A000000040004078 +S315E07BE800200000000000800040000060002000C087 +S315E07BE81000200000000000400000400000004000B7 +S315E07BE8200040400000000000000040000000400087 +S315E07BE83000000000000000000040400000004000B7 +S315E07BE840004040804000402000800020000020C047 +S315E07BE8500080004000000040400020C0008000C0F7 +S315E07BE86040000000000000000000C00000800000C7 +S315E07BE870C020008000C00000800000000040000057 +S315E07BE880C0000000B49C0040004010200000104017 +S315E07BE8901000000000004080408000002000000067 +S315E07BE8A00000000020000080000000002000200027 +S315E07BE8B00020400000000000400040400000802037 +S315E07BE8C000000000004000002020400000400000E7 +S315E07BE8D00080400000402000800000000000000037 +S315E07BE8E0808020204000000040000000C000000047 +S315E07BE8F00000002040004040004000608000004077 +S315E07BE9002000000000000000200000000000004026 +S315E07BE91000000000000000000000004000204000F6 +S315E07BE9200000604000000000000020800000C00086 +S315E07BE9300000E04080200000000000C000004000B6 +S315E07BE9402000800080008000A060002040004040E6 +S315E07BE9500000008000400080008000000000000096 +S315E07BE9600080000000800480400000000000002062 +S315E07BE9700000000000400000002040400100000055 +S315E07BE98000200040000040C0000060002000000046 +S315E07BE99000000000000000008040200000400000F6 +S315E07BE9A000000000000000000040000000000000C6 +S315E07BE9B00000408000400000000000008000000076 +S315E07BE9C0000001000000008020008000008000C085 +S315E07BE9D00000000040000000800000000000000016 +S315E07BE9E00000000000804020004000004000004026 +S315E07BE9F00040000000000000C080000000B46D0015 +S315E07BEA000020000000000040000000000040000005 +S315E07BEA101000000080400000004000400000200025 +S315E07BEA202000402000000040000000000000400085 +S315E07BEA300000000000202000004040200040000055 +S315E07BEA400040000040200000400000000040000045 +S315E07BEA504000004000000020004000000000002055 +S315E07BEA60002000000000280040000020008000A07D +S315E07BEA7000008000000000400000400000000040F5 +S315E07BEA808000000040804000200040004080000085 +S315E07BEA900080004000000000000000000000000055 +S315E07BEAA00060000000400020A000000000000000A5 +S315E07BEAB00020008000200080000000004000002055 +S315E07BEAC04000000000800000000040800000002045 +S315E07BEAD0006060000000C00000C0400000C0004055 +S315E07BEAE00020800000C0A0408040A04000000000E5 +S315E07BEAF04000000000200000008000400020002055 +S315E07BEB0000000000000040000040000040000000E4 +S315E07BEB1040000000400000000000000040000000D4 +S315E07BEB204000200040004000004000000040000024 +S315E07BEB30400020C040004000600000A020008040F4 +S315E07BEB4000400040400040000000400000A0800004 +S315E07BEB500040400000004080C00000A080400000F4 +S315E07BEB600000A000800080400000800000000040A4 +S315E07BEB70000040000000F68E0040004000004000B0 +S315E07BEB8040400000000040400000000040000020C4 +S315E07BEB904040010000400000000040000000800093 +S315E07BEBA000000020000000000000000000000040A4 +S315E07BEBB020004040000040000000000040000000D4 +S315E07BEBC00000404000000040000000010000000023 +S315E07BEBD00000604000200000000000600040000074 +S315E07BEBE00000008000000000006000000040002084 +S315E07BEBF00040000000000000A000000220000000B2 +S315E07BEC004000004000000000000000000000000023 +S315E07BEC100000800000000000000000000000000013 +S315E07BEC202000200000200080008000000000000023 +S315E07BEC308000000020000080000000000000000053 +S315E07BEC400000200000000000200000000040800063 +S315E07BEC500000000040004080000000000000400013 +S315E07BEC60000040000020400000000004000000009F +S315E07BEC700000004000000000400000000040000073 +S315E07BEC8000400000004000000040008000000000E3 +S315E07BEC904000000000004000400000000000000053 +S315E07BECA000000000004000400000000000C0008043 +S315E07BECB00040000000800000008000000040004033 +S315E07BECC00000404000804000000000000040004023 +S315E07BECD000008000000000204040008000000040F3 +S315E07BECE0000080000000400080000080004000AF14 +S315E07BECF0A100000000000020008000200020000032 +S315E07BED000080000000002000000000000000000002 +S315E07BED10004400000000000000000000000000004E +S315E07BED2040002000002000000000002000000020C2 +S315E07BED300040402000000020002000200000000072 +S315E07BED400000006000000000400000000000400082 +S315E07BED500000000000000000000000000000400012 +S315E07BED600000000000000000804000004000200022 +S315E07BED70000400200000600000004000002000004E +S315E07BED800000000020000020200000004000002062 +S315E07BED900000000000200000800000000020000052 +S315E07BEDA00000000000800000000000000000200062 +S315E07BEDB00000000000804000008000000000800032 +S315E07BEDC000006080008000000080000000002000E2 +S315E07BEDD000000000000020008000000080000000B2 +S315E07BEDE000000000004000000040000000002040E2 +S315E07BEDF000004000000000000004000000800000EE +S315E07BEE000000000000000040000040000000000021 +S315E07BEE100000000000000040000000000040000011 +S315E07BEE200000004040000000000000000080000081 +S315E07BEE300000000000000000000000000000000071 +S315E07BEE400000000040000000000000400080000061 +S315E07BEE5000000000000000000000000000800000D1 +S315E07BEE600000000000000000F7CA00004000000040 +S315E07BEE70608000600000200000C0000000400020B1 +S315E07BEE800020000140000000404000000000000040 +S315E07BEE9040000000002000000000000000000000B1 +S315E07BEEA000006000400040004000000020000000C1 +S315E07BEEB020002000604000000040000020010000B0 +S315E07BEEC000000040200000204000000000400000E1 +S315E07BEED040000000000000400000002000000040F1 +S315E07BEEE000000040000000000020800020200000A1 +S315E07BEEF02000400040600000000000000020000091 +S315E07BEF002020000080004000200000000020000060 +S315E07BEF100080200020002000000000408000800070 +S315E07BEF2000800000002000002000000000000000C0 +S315E07BEF300000800020000080000020600080000050 +S315E07BEF40C080000000400060000000000000004040 +S315E07BEF50000080004000800040000000000440008C +S315E07BEF600000400000000000000040000000004080 +S315E07BEF7000000040008000000000000040000040F0 +S315E07BEF800000400040000040000040000000000020 +S315E07BEF90000000000000404000400000000000C090 +S315E07BEFA000000000000080C0000000800000000040 +S315E07BEFB040400000400000408000000000004040F0 +S315E07BEFC00000404080000000002000004080000000 +S315E07BEFD0004000008000800040800000008001004F +S315E07BEFE040F0FD0060000020004000404000004013 +S315E07BEFF000400000000000000020000000004020F0 +S315E07BF000800020404000200000202080000080001F +S315E07BF010200000002000804000000000000040004F +S315E07BF02000002000400000000000200020000000DF +S315E07BF03000004020400000008000204000000040AF +S315E07BF040000000002000008000000000200080001F +S315E07BF05000800040004040000000000020400000AF +S315E07BF060000000400000000000200000200000A01F +S315E07BF070006000600000000000000000000000402F +S315E07BF080000000000040000060000020002020001F +S315E07BF09080000020000000008000200000000000CF +S315E07BF0A080004000402000000080000040002000FF +S315E07BF0B08000200000000000000000C0000040004F +S315E07BF0C0400080000000004000000080C02000403F +S315E07BF0D000000000000000408020000000A040000F +S315E07BF0E00000008000000020E000200000400000DF +S315E07BF0F0400000000040000000000000000000002F +S315E07BF100000000004000400000400000004000009E +S315E07BF110000000000040000080200000800000002E +S315E07BF12080000000000000800080000040000000BE +S315E07BF130000000808000000000000000804000802E +S315E07BF1400060400000804080000000808000C000BE +S315E07BF1500000C0000000004000006C4F0000200073 +S315E07BF160200000000040000040004000000000005E +S315E07BF17000002000000000000000000040000000CE +S315E07BF18000800000200000000000A000000020407E +S315E07BF190200000000000000040000000004000006E +S315E07BF1A0000000002000000000000040000000009E +S315E07BF1B0008000000000000040000000200000000E +S315E07BF1C0000000000000200000000000000040007E +S315E07BF1D0004000000020000000000000000000006E +S315E07BF1E0400000000040002000400040000000009E +S315E07BF1F000000000000000400000800000400000AE +S315E07BF200000060200000000000000000000000001D +S315E07BF21000008000000000000000000000402000AD +S315E07BF220000000000000000000800000000080007D +S315E07BF23000000080000000000000000000000000ED +S315E07BF240400000000000000000000000000000001D +S315E07BF250002000000000200000000080000000008D +S315E07BF260000000000000404000000000004000007D +S315E07BF27000000000000040000000000000000040AD +S315E07BF280004000000000400000000000004000005D +S315E07BF290008000000000000000000000000000008D +S315E07BF2A0000080000040000000000000000000003D +S315E07BF2B0000000000000000000000000008000006D +S315E07BF2C0800000000000000000000000000000005D +S315E07BF2D0000100CBC20040004000000000000000BF +S315E07BF2E080000000000000000000800000000000BD +S315E07BF2F0000080002000000000200000008000006D +S315E07BF300000000000000000080000000000000001C +S315E07BF310000000002000000000000020400000000C +S315E07BF32000000040200000000000000000600000BC +S315E07BF3300000400000000000C0004000002000000C +S315E07BF340208080000000200040000000000000409C +S315E07BF35000000000000000000000204000002000CC +S315E07BF360800000000000400000000000000000007C +S315E07BF37000000000000000000000000040000020CC +S315E07BF38020000000000000000000000000000000FC +S315E07BF390000000000040000000408000000000000C +S315E07BF3A000200000000000400000800040000000DC +S315E07BF3B0004000408000000000004000000000802C +S315E07BF3C0000000000000000040000000000080001C +S315E07BF3D000400000000040000000800000000000CC +S315E07BF3E0000040000000000040000000000000003C +S315E07BF3F000000080400000400000000000000000AC +S315E07BF40000000000000000000000200000008040BB +S315E07BF410000000800000000000000000000000808B +S315E07BF42000000000000000000000000000000080FB +S315E07BF43000802000000000000000000000808000CB +S315E07BF44080400000C0000080C000000097CD000037 +S315E07BF450000000400040000000000000000040008B +S315E07BF46000000000000000000060000000000000DB +S315E07BF470400000002000000000800000000000004B +S315E07BF48000000000000000000000000020000000FB +S315E07BF490000000000000002040004000000000006B +S315E07BF4A0404000000000000000000000004000003B +S315E07BF4B0600000000000000000000000000040004B +S315E07BF4C000000000000000008000002000004000FB +S315E07BF4D0000000000000000000000000200020008B +S315E07BF4E000000000000000000000000000000000BB +S315E07BF4F0000000000000000080000080002080000B +S315E07BF50000000000002000000040008000000000BA +S315E07BF510000020000000000040000000002000000A +S315E07BF520000020000000000000000000000000005A +S315E07BF530000000000080006000C0002000000000AA +S315E07BF540800000800000000000000000000000005A +S315E07BF550004020204000200000000000000000006A +S315E07BF56000000000000000000000004000000000FA +S315E07BF57000000000000000000040000000000000EA +S315E07BF58000000000000000000000000000004000DA +S315E07BF590008000000000000000000040008000804A +S315E07BF5A000004000000000400000000040400000FA +S315E07BF5B0004000000040000000000000000000006A +S315E07BF5C00000000000E0E00000000080000000009A +S315E07BF5D0000000000000400000000000000000404A +S315E07BF5E0000000000000000000000000000000209A +S315E07BF5F0000020000000000000000000000000008A +S315E07BF6000000004000000000000000000020000039 +S315E07BF6100000000000002000400000000000000029 +S315E07BF62000200040000000000020000000400000B9 +S315E07BF6300000000000000000000000000000000069 +S315E07BF6400000000000000000000000000000000059 +S315E07BF65020000000204000000000000000000000C9 +S315E07BF66000000000000000002000000000200000F9 +S315E07BF67000000000000000000020000020000000E9 +S315E07BF6800000A000000000008040000000000000B9 +S315E07BF6904000000080000000000000004000008089 +S315E07BF6A00000800000004000008000000000400079 +S315E07BF6B00000000040000000000000000000002089 +S315E07BF6C00000004000004000400040000000400099 +S315E07BF6D040000000000000004000400040000000C9 +S315E07BF6E04000000000400000000000000000000039 +S315E07BF6F000400000000000000000004080400080E9 +S315E07BF700000000008000000000000000000000C058 +S315E07BF7100000400000000040008000004000000048 +S315E07BF7200000000000404000800080000000800078 +S315E07BF7308000800000800000000000000000A66DD5 +S315E07BF740000080A0000000004000000000000000F8 +S315E07BF7500000400000000020004000000020000088 +S315E07BF7600000000000200000000000000000000018 +S315E07BF77000000000200000000000000000002000E8 +S315E07BF7800000004020000000000000002000000098 +S315E07BF7900000004000004000000000000000000088 +S315E07BF7A000004060000000002000200000200000F8 +S315E07BF7B04000004000600060000000400000000068 +S315E07BF7C00040000000002000400000200000000018 +S315E07BF7D000000000000000000000000000000000C8 +S315E07BF7E02000000000000020000000800000008078 +S315E07BF7F00080000000000000000020000000000008 +S315E07BF8008000000000800000000000000020002057 +S315E07BF81000A00080000000400080000000000000A7 +S315E07BF82000000000400000000000C04000000040F7 +S315E07BF8300000000000000000000000000040000027 +S315E07BF8400000000000000000000000000000000057 +S315E07BF85000000000000000004000000000000040C7 +S315E07BF86000000000000000004000000000000000F7 +S315E07BF8704000000000000040008000000000000027 +S315E07BF8800080000000000000000000000040000057 +S315E07BF8900000000000000000000000000000000007 +S315E07BF8A000000000000080000000000000000080F7 +S315E07BF8B00000000041410030DD0000004000000018 +S315E07BF8C000000000400000000000400000402000F7 +S315E07BF8D00000000000400000000000000000004047 +S315E07BF8E00000200000000000000000000000004057 +S315E07BF8F000200040000000000000204000000040A7 +S315E07BF9000000200000000000000000000040000036 +S315E07BF91020000000200000200000000040000000E6 +S315E07BF92000004020200000000000000020000000D6 +S315E07BF93000000000000000002040000020000000E6 +S315E07BF9400000000000000000200000000000000036 +S315E07BF9500000000000000020000000000000000026 +S315E07BF9608000002000200000000000000000000076 +S315E07BF97020000000000000000000000000000020E6 +S315E07BF9800020008000000000000000000000000076 +S315E07BF99000000040000000000020004000008000E6 +S315E07BF9A00000000000000000000040000040000076 +S315E07BF9B000400000000000000000000000000000A6 +S315E07BF9C00000000000400000000000000000000096 +S315E07BF9D000000000000000000000000000000000C6 +S315E07BF9E000004000000000000000000000800000F6 +S315E07BF9F00000000000400000008000008000004026 +S315E07BFA00000000008000000000C000000000000055 +S315E07BFA1000400000000000800000000000000000C5 +S315E07BFA200000000000000000000000400000000035 +S315E07BFA30041F000000000000000000000000000042 +S315E07BFA400000000000000000000000000000000055 +S315E07BFA504000000000004000400000000000000085 +S315E07BFA6000000000200000002000400000000000B5 +S315E07BFA7000000000000000000000000000000060C5 +S315E07BFA800000000000000000200000400000004075 +S315E07BFA9000002000000000000000000000000000E5 +S315E07BFAA000200000000000000000000000000000D5 +S315E07BFAB00000000000000000000020000040000085 +S315E07BFAC00000000020000000000000000000200095 +S315E07BFAD00000000000002000000000008000000025 +S315E07BFAE02000000000800000000080000000000095 +S315E07BFAF00000000000800000000000000000000025 +S315E07BFB000000000000000000800040000000004094 +S315E07BFB108000000000000000400000000040000084 +S315E07BFB200000000000000000000000000000000074 +S315E07BFB3040200020000000000000000000000000E4 +S315E07BFB400000400000000000000000000040004094 +S315E07BFB500000000000000000000000000000400004 +S315E07BFB6000000000000000000000000000800000B4 +S315E07BFB7000000000000000000000004000000000E4 +S315E07BFB800000000000000000000000000000000014 +S315E07BFB900000800000000000000000000000000084 +S315E07BFBA00000000080004000007C880000004000F0 +S315E07BFBB000004000004000400040004000000000A4 +S315E07BFBC000000000000000000000200000000000B4 +S315E07BFBD00060000000000000000000000020000044 +S315E07BFBE000000000000000000000000000000000B4 +S315E07BFBF00000000000000000004000000000000064 +S315E07BFC000000000000002000000000000000002053 +S315E07BFC100000002000000000000000000000000063 +S315E07BFC2000002000400000000000000000400000D3 +S315E07BFC300020000000002000000020000000000003 +S315E07BFC400000000000000000000000202000000013 +S315E07BFC500000002020000000000000008000000083 +S315E07BFC6000000000000080000000008000000080B3 +S315E07BFC700000000000000000002000000080000083 +S315E07BFC808000000000000000004000004080000093 +S315E07BFC900080000000800000000000000000000003 +S315E07BFCA000000000000040000000000000000000B3 +S315E07BFCB000000000000000000000000000000000E3 +S315E07BFCC00000000000000000000000000040000093 +S315E07BFCD00000004000000000000000000040004003 +S315E07BFCE0008000000080008000C0000080400000B3 +S315E07BFCF00000800040800000000000000000000063 +S315E07BFD000000000000000000000000000000800012 +S315E07BFD100000000000008000008000800000000002 +S315E07BFD2000009DB7002000000000000000000000FE +S315E07BFD300000000000000000002000000000000042 +S315E07BFD4040000000000000000000000000004000D2 +S315E07BFD500000000000000020000020000000000002 +S315E07BFD600000000000000020400020006020002012 +S315E07BFD700000000000000000000000000060004082 +S315E07BFD8000000000200020000020000000000000B2 +S315E07BFD900000202000000000002040004000200002 +S315E07BFDA00040000000000000200000000000000092 +S315E07BFDB00060000000000000000000000000000082 +S315E07BFDC000000000000000000000008000000080D2 +S315E07BFDD00000000000000000002000000000800022 +S315E07BFDE00000000000008000000020000000000012 +S315E07BFDF000000000800000008000000000800080A2 +S315E07BFE00400080408000004000600000C0000000B1 +S315E07BFE100000400000000000000000000020000021 +S315E07BFE2000000000400040000000000000004000B1 +S315E07BFE3000400000000040000000000000004000A1 +S315E07BFE404000000040000040000000000000000091 +S315E07BFE50000000004000000080000000C0000000C1 +S315E07BFE600000000000000000004000000000008071 +S315E07BFE7000000000000080000000400000004040E1 +S315E07BFE800000000040000000000000800000000051 +S315E07BFE900000000000000000000000983600000033 +S315E07BFEA00000402000000000000000002000000071 +S315E07BFEB000000000000000400000000000000000A1 +S315E07BFEC000000000000020000000000000000000B1 +S315E07BFED000000000000060004000000020002000E1 +S315E07BFEE00000400000000000000000004000000031 +S315E07BFEF00000000040000000000000004000000021 +S315E07BFF0000000000400000000000000040006000B0 +S315E07BFF102000000000000000000000200000200020 +S315E07BFF2000000000000040004000000000000000F0 +S315E07BFF300000200000000000000000000000000040 +S315E07BFF4000000000000000000000000000800000D0 +S315E07BFF5080008000000000000000800000000000C0 +S315E07BFF6000004000000000000000000000000000F0 +S315E07BFF700000004080000000000020000000000040 +S315E07BFF8080200000000000000080000040000000B0 +S315E07BFF9000000000000000000000000020000000E0 +S315E07BFFA000000000400000000000000000000000B0 +S315E07BFFB04000004040000000000000000000000020 +S315E07BFFC000000000000000000000000000000000D0 +S315E07BFFD000004000000040000000000000800000C0 +S315E07BFFE000008000400000000040C0000080000070 +S315E07BFFF000000000000000000000008000008000A0 +S315E07C0000000000000000008000000000000080008E +S315E07C00108000000083CF008000000020C00000004C +S315E07C002040000000400000000000000000400000AE +S315E07C0030000000400000000000000000000000001E +S315E07C0040000000004000000000000000406000006E +S315E07C005000000000000000400000000000004000BE +S315E07C0060400000200000000000000000000040008E +S315E07C0070000000000000400000000020000040007E +S315E07C008000000000000000000000400000000000CE +S315E07C0090000000200000000000400000002000007E +S315E07C00A0400000000000000000200000200000006E +S315E07C00B0000040000000000000000000000000009E +S315E07C00C0000000000000000020002080000000000E +S315E07C00D0800000408000000000000000000000007E +S315E07C00E0000000008000802000002000000000006E +S315E07C00F040004000008000000000802000000000FE +S315E07C0100000080000000000000000000000000000D +S315E07C011000000000000000000000404000000000FD +S315E07C0120000000000000000000000000000000006D +S315E07C0130000000000000000000000000000000005D +S315E07C0140000000000000000000000000000000004D +S315E07C0150000000000000000000000000000000003D +S315E07C0160000000000000000000000000000000002D +S315E07C017000000040000080000000008000000000DD +S315E07C01800000000000000000008000400097EE00C8 +S315E07C019000000000000000000000000000000000FD +S315E07C01A0000000000000008000000000002000400D +S315E07C01B0000000400000000000000000000000009D +S315E07C01C0000000000000000000000000004020006D +S315E07C01D0000000000000002000000000000000405D +S315E07C01E000400000004000200000000040200000AD +S315E07C01F000400000004000000000002000000000FD +S315E07C020040200000000000004020600040000040EC +S315E07C0210002000000000400000000000000000001C +S315E07C0220200000000000000000000000002000002C +S315E07C0230000020000020000000002000208000005C +S315E07C0240000000000000208020000000000000008C +S315E07C025000000000000000800000000000000000BC +S315E07C0260000000000000000000000000000000002C +S315E07C0270000000000000800040000000000000005C +S315E07C0280400000000040200000000000000000006C +S315E07C0290002000000000000000000040004000401C +S315E07C02A000000000000000000000000000000000EC +S315E07C02B0400000000000000000000000000000009C +S315E07C02C0000000000000000000400040000000004C +S315E07C02D000000080800000000080000000800000BC +S315E07C02E000400000000040000000004000000000EC +S315E07C02F0000000000000000000000000000000009C +S315E07C0300000000000000669F0000000060400040A6 +S315E07C031000C000004040000040000040002000603B +S315E07C032000400000000060000000000000002000AB +S315E07C0330202000200000000000002020000020009B +S315E07C0340600040000020000020204060002040202B +S315E07C035000200020004020200040004000000020DB +S315E07C0360004020200060000020600040200040002B +S315E07C037000600020000000200000602000400000BB +S315E07C0380604020400000206000400020002000000B +S315E07C039020200040200020200000000000200000FB +S315E07C03A0000000000020000000200000002000A0EB +S315E07C03B000200000A000000080008000A0008000FB +S315E07C03C080800000A00080008000408000208000CB +S315E07C03D0004000000000202080002080208000C0BB +S315E07C03E0008000800040800000804040804000002B +S315E07C03F0000000C00040004000004000000000001B +S315E07C0400200000004040000060000040004000000A +S315E07C041040000000404000400000000040000040FA +S315E07C042000000040004000400000000000000000AA +S315E07C04304000404000000040000000C0004080805A +S315E07C044040800080000000008000000080804080CA +S315E07C04504000408000C00000C0800000000000003A +S315E07C0460000000000000C00080000080000080806A +S315E07C0470000000800000008000408040010040F2E7 +S315E07C04809C000000C000402000400080000000404E +S315E07C0490204040000000000040800000004040001A +S315E07C04A0400000000000002000000000000000008A +S315E07C04B0000000000020006040004020000040007A +S315E07C04C0200000000040006000602000000060002A +S315E07C04D040000040400040004000600060000000BA +S315E07C04E040200060004040004000002000202000CA +S315E07C04F040006000400020004000402000400000BA +S315E07C050000400020004000006000400000404020A9 +S315E07C051000002000200020000000000040000000D9 +S315E07C052000000000200000000080000000A0000029 +S315E07C0530800000208000A000802080008000804039 +S315E07C054000008000000000000080000000008020A9 +S315E07C0550008000208000C000C0000080C000804099 +S315E07C0560804000C080604000800080004000000049 +S315E07C05704000400000000000002000000000000079 +S315E07C058020400000000000004000000040000040E9 +S315E07C05900040000000400040400000000040400079 +S315E07C05A000404000004000004000004000000000A9 +S315E07C05B000404000C00000408040000080400000D9 +S315E07C05C000000040800040000040C000C0004000C9 +S315E07C05D04000400000000040000000400000004079 +S315E07C05E080008000008000800080800000808000A9 +S315E07C05F00000008040000000DCAC008000000000D1 +S315E07C0600E040000000200000404080000000002028 +S315E07C06100040000000000020404000000000002078 +S315E07C06200000400000006040000000000000206008 +S315E07C063000000000000060600000000000006060D8 +S315E07C064000000000000060600000002000404040A8 +S315E07C06500000000020204040000000002060404078 +S315E07C066000000000202000004000000060600000E8 +S315E07C06700000004060600000000000406060000018 +S315E07C06800000000060600000000000002020000008 +S315E07C06900020000000400000000020200000000058 +S315E07C06A000002020808080000000202080800000E8 +S315E07C06B00000202080800000000040408080000018 +S315E07C06C000006040000080000000A0A080000000E8 +S315E07C06D00000C0C0000000000000C0C02000000098 +S315E07C06E02080C0C0400000000000404000000000C8 +S315E07C06F00020000040000000406000000000004058 +S315E07C07004040000000000000404000000000000087 +S315E07C07104040000000000040404000000000000037 +S315E07C07204040000000000000004040000000000067 +S315E07C0730C0C0000000000000808040000000404017 +S315E07C07408080000000004040808000000000404047 +S315E07C075000000000000040C0000000000000808037 +S315E07C07600000000000008080000000000000C04126 +S315E07C077000F8770000000000604000000400000004 +S315E07C078000044060000000002020404000000000A3 +S315E07C07902020414008004001002800000000606005 +S315E07C07A04040000000002020602002001000A022D3 +S315E07C07B04070008000006060002000000000606007 +S315E07C07C0202004000000404440600000202020609F +S315E07C07D04040000020206020014008006021002885 +S315E07C07E00000000020202020000000006060202027 +S315E07C07F002001000E0624070008000002040202073 +S315E07C0800000000002000002004000000000440609E +S315E07C0810000020200020000000002020A0A0018015 +S315E07C082008006021A0A800400000202000208080F5 +S315E07C083000004040C0C002801000E06240500000F2 +S315E07C0840000020A0A0A000000000404080C0040082 +S315E07C085020000004C04000002000C08000000000B2 +S315E07C08600000000041400800400120280000000014 +S315E07C087000004020000000004000404002001000E4 +S315E07C08808002405000800000000000400000000034 +S315E07C089040400040040020004044406000000000EE +S315E07C08A00000404000000000404081C0080040015C +S315E07C08B0000880800000404040408080000000408E +S315E07C08C0404002801000C042405000800000404022 +S315E07C08D000C00000000000808000040020000004CE +S315E07C08E080A000000000404040403F9000008080B7 +S315E07C08F00000600040000000004000404000000036 +S315E07C09000020204000000000004000404000004005 +S315E07C09100020000000000060604040000000000015 +S315E07C09202040600000000020206060000000006045 +S315E07C09302020000000000060602060000000004095 +S315E07C094040400000000020400040000000002020E5 +S315E07C09504000400000200020000000000000000075 +S315E07C09600000000000600000000000000040206005 +S315E07C097060000000000060200000000000002020F5 +S315E07C09800000000000000040400000000020000065 +S315E07C09900000000020200080000000202020A00035 +S315E07C09A08000002020A000800000004040C0C08085 +S315E07C09B00000004040404000000000A0A0A0A00055 +S315E07C09C000000000404000000000004000C0000045 +S315E07C09D0002020C080004000000000000040400075 +S315E07C09E000000020200000000000006020000000E5 +S315E07C09F000004040000000000000004000000000D5 +S315E07C0A000000000040000000004040400000000084 +S315E07C0A1000404000400000000000000000000000B4 +S315E07C0A20000040C000000040008000000000004064 +S315E07C0A30400040000000004000C000800000004014 +S315E07C0A40400000000000000000C040000000008084 +S315E07C0A5080008000000000800080000000000040F4 +S315E07C0A600000005B78000000008060E00040000051 +S315E07C0A700000000000800000000000204000000034 +S315E07C0A800000202040400000000020200000000004 +S315E07C0A906040404000000000002040200000000054 +S315E07C0AA02020406000000000402020200000000064 +S315E07C0AB04060002000000000004040000000000094 +S315E07C0AC060600040000000204020004000002000E4 +S315E07C0AD02020000000002020402000000000604034 +S315E07C0AE06060000000004060406000000000200084 +S315E07C0AF04000000000002000002000000000000014 +S315E07C0B004040000020200020000000002020A08043 +S315E07C0B10008000000000A080000000002000002093 +S315E07C0B200080000040400000008000006060000023 +S315E07C0B3000000000A000002000000000C0C080C0D3 +S315E07C0B4000000000404000400000200040400000E3 +S315E07C0B5000000000004000000000000020200000B3 +S315E07C0B600000004040200000000040004000000003 +S315E07C0B7000000040404000000000004000400000D3 +S315E07C0B800000004000400000000040404040000083 +S315E07C0B9000000000404000000000C0C000C0000033 +S315E07C0BA00000808000800000404040408080000063 +S315E07C0BB040404040808000004040404000000000D3 +S315E07C0BC04040C08000000000008000800000000003 +S315E07C0BD00000800000000000400040406E140000F1 +S315E07C0BE080800000004000000000004000404000A3 +S315E07C0BF00000002000000000000000602040400073 +S315E07C0C000000002020000000004060404000000022 +S315E07C0C100000204040000000006060404000000092 +S315E07C0C2000004040400000000040402040000000C2 +S315E07C0C300040004000000020206060400000000092 +S315E07C0C400020400000000020002020000000004042 +S315E07C0C504020600000000040004040000000004072 +S315E07C0C6000606000000000006020400000000000A2 +S315E07C0C702020000000000000004040000000002032 +S315E07C0C800000000000002000008000000000000062 +S315E07C0C90A0008000000000A00080000000404080B2 +S315E07C0CA08080000000404000000000000000A0A022 +S315E07C0CB080000000008040400000000000C0C0C012 +S315E07C0CC00000002020C08080C00000000040004082 +S315E07C0CD04000000000000000000000400000200012 +S315E07C0CE000000000404000000000004000000000E2 +S315E07C0CF000000040000000000000004000400000D2 +S315E07C0D0000000040400040000000000000000000C1 +S315E07C0D100000008040C00000000000000080000071 +S315E07C0D2000404080C0000000004040C00000000061 +S315E07C0D300040400000000000000000004000000091 +S315E07C0D400080800000000000008000800000000041 +S315E07C0D5000808141409EA900000000002040000008 +S315E07C0D600000000040000040000000000000004061 +S315E07C0D700000000060600000000000000020000031 +S315E07C0D800000000000000000000020204060000021 +S315E07C0D900000404000200000000060006060000031 +S315E07C0DA000002000404000000000400000400000C1 +S315E07C0DB020204020400000002000604000400000F1 +S315E07C0DC02020202000000000604020600000000021 +S315E07C0DD06000402000000000602020200000000031 +S315E07C0DE060606060000000002020202000000000A1 +S315E07C0DF00000000000002020202000000000000011 +S315E07C0E0080A0808000000000002080800000002020 +S315E07C0E10A0A0800000000000C04080800000202070 +S315E07C0E204040000000000000008000000000004020 +S315E07C0E3040C0000000008080C08000002000C00030 +S315E07C0E4080C0000000004000404000000000000040 +S315E07C0E500000000040004060000000004040404050 +S315E07C0E6000000000404040000000000040004040A0 +S315E07C0E700000000040004040000000000000004010 +S315E07C0E800000000000004040000000000040C04040 +S315E07C0E9000000000000080800000000080C00000B0 +S315E07C0EA000004000C0808080000000000040000020 +S315E07C0EB00000400080C000000000800080800000D0 +S315E07C0EC000008080008000000000C0C040406702D7 +S315E07C0ED000000000000060004000000000004000D0 +S315E07C0EE000000000000000400000000000404000E0 +S315E07C0EF00000000000200000000000000000000070 +S315E07C0F00000000000020000000000040402020009F +S315E07C0F10000000002060600000000000200000006F +S315E07C0F20000000000040000000002020004000009F +S315E07C0F30000020400040400000000000000000006F +S315E07C0F40006020404000000000006020400000007F +S315E07C0F50000060000000000000206040000000000F +S315E07C0F6000002000000000000000000000000000FF +S315E07C0F70202000000000002020A08080800000006F +S315E07C0F80002080000000002000202080000000007F +S315E07C0F9000404080800000202040400000000000AF +S315E07C0FA0800000000000008080800000000000C01F +S315E07C0FB0008000000000000000C0800000000040CF +S315E07C0FC0400000000000002020000000004040605F +S315E07C0FD0000000000040400000000000004040406F +S315E07C0FE000000000004040004000000000000000DF +S315E07C0FF0000000000000000000000000000000404F +S315E07C100040000000008080800000000000800080BE +S315E07C1010800000000080008000000000000000806E +S315E07C102080000000004000000000000040C0C000DE +S315E07C1030000000008080800000000080808000004E +S315E07C1040000000C000000050B100000000002060FD +S315E07C105040400000000040400040000000000020CE +S315E07C1060004000000000404000000000000000005E +S315E07C107000000000200000000000000000200020AE +S315E07C108000000000004000200000000040204000FE +S315E07C109000000000002040600000000040000000EE +S315E07C10A000000000400000000000200040200040DE +S315E07C10B000002000000000000000604000600000AE +S315E07C10C0000020000020000000000020000000005E +S315E07C10D0000040006060000000000020202000004E +S315E07C10E0000000000000000000002000000000007E +S315E07C10F0000000200000000000000000808000006E +S315E07C110020008080000000000000800000000000DD +S315E07C11100000000000000000A00000A0000000002D +S315E07C112080C040C000000000C08000C000002000FD +S315E07C1130C040C0400000000040000000000000000D +S315E07C1140000000000000400040600000000000005D +S315E07C1150400000000000000040000000000040006D +S315E07C116040400000000040004040000000000000DD +S315E07C1170004000000000000000000000000080C08D +S315E07C1180404000000000808000000000000080C03D +S315E07C1190808000004000C08000000000000000402D +S315E07C11A0000000004000000000000000000000801D +S315E07C11B0000000008000000000000000C08000000D +S315E07C11C098A70000000000000040400000000440BA +S315E07C11D060000000000000200040000000000000ED +S315E07C11E00000000001000800400000000000200034 +S315E07C11F0000000000000002000000000024010001B +S315E07C1200800000000000400040000000000000601C +S315E07C12104000000004002040000000000000004088 +S315E07C12200000000020200040000001000800400093 +S315E07C123000000040004040000000000020604000CC +S315E07C1240000002001000800000000000404000002A +S315E07C12500000000000000000000004002000000008 +S315E07C126000002000000000000000002000000000DC +S315E07C127001000800C08080000000008080800000C3 +S315E07C1280000000000000000002001000800000006A +S315E07C12900000A0200000000000800080000000002C +S315E07C12A0048060C00000000000000040C000000038 +S315E07C12B000404000000001000800400000000040C3 +S315E07C12C0400000000000000000000000000002403A +S315E07C12D0500080000000004040000000000000005C +S315E07C12E00000000000000400200000000000000078 +S315E07C12F00000000000000080008000000100088003 +S315E07C1300C00000000000008000800000000000803B +S315E07C131080000000020010408000000000004000D9 +S315E07C13200000000000000000000000000400A08037 +S315E07C13300000000000800000002D86000000000018 +S315E07C13400000400000000004006000000000000097 +S315E07C135000000000000000000040000000010008E2 +S315E07C1360004040000000000000000000000000009B +S315E07C137000400000000240100080000000004000B9 +S315E07C13800000000000000000400000000004002097 +S315E07C1390000000000020004000000000000000008B +S315E07C13A000000001000800404000000020400000F2 +S315E07C13B00000000000000000000000020010008039 +S315E07C13C0000000000000004000000000000000007B +S315E07C13D00000000400200000000020000000000067 +S315E07C13E00000000000000000000100088040800052 +S315E07C13F0000000000080000000000000000000000B +S315E07C14000002001000808000000000000000000068 +S315E07C14100000800040000000000480600080000046 +S315E07C142000000040000000000000400000000001D9 +S315E07C14300008004040000000004000200000000062 +S315E07C14400000000000000002401000C00000000028 +S315E07C14504000400000000000400000000000000466 +S315E07C1460002000400000000000004000000000007A +S315E07C1470408040000001000800C040000000000001 +S315E07C14804000000000004000400000000002001028 +S315E07C149000800000000000000000000000008000EA +S315E07C14A00000000000048020000000000000000036 +S315E07C14B0000004F100800000000040000000000015 +S315E07C14C00400204000000000000000400000000016 +S315E07C14D00000000000000100080040000000000061 +S315E07C14E00000000000000000000000000000020098 +S315E07C14F0500080000000000020400000000000005A +S315E07C150020000000000004006040000000000000B5 +S315E07C15100040000000000000404000000100280080 +S315E07C15204000000000000060000000000000404039 +S315E07C15300000000002005000800000000000400037 +S315E07C154000000000000020000000000004002000F5 +S315E07C155000000000002000000000000020008080E9 +S315E07C156000000100080040000000000000008080D0 +S315E07C15700000000000008080000002001000800077 +S315E07C158000000000808000000000000040C00000F9 +S315E07C159000000400A04000000000000080C00000C5 +S315E07C15A00000000040400000010008004000000010 +S315E07C15B000004040000000000000404000000000C9 +S315E07C15C00200100080000000000000000000000027 +S315E07C15D00000004000000000040020400000000005 +S315E07C15E00000004000000000000000C00000010098 +S315E07C15F008004080000000000000808000000000C1 +S315E07C160000008080000002001040800000000000A6 +S315E07C161040C00000000000000080000000000400E4 +S315E07C16202080000000000000800000F5CA00000376 +S315E07C1630031C1C606000000303181C40600000076C +S315E07C16400738384040000007073838C0C00000063D +S315E07C165007303880C001010E0E7070808001010E6B +S315E07C16600E7070808001010C0E6070008003031C9C +S315E07C16701CE0E0000003031C1CE0E0000003031810 +S315E07C16801CC0E0000007073838C0C00000070738F8 +S315E07C169038C0C000000607303880C001010E0E70ED +S315E07C16A070808001010E0E7070808001010C0E60EE +S315E07C16B070008003031C1CE0E0000003031C1CE0BC +S315E07C16C0E000000303181CC0E0000007073838C0C0 +S315E07C16D0C0000007073838C0C000000607303880F5 +S315E07C16E0C001010E0E7070808001010E0E7070805C +S315E07C16F08001010C0E6070008003031C1CE0E0009E +S315E07C17000003031C1CE0E000000303181CC0E0009F +S315E07C17100007073838C0C0000007073838C0C0006B +S315E07C1720000607303880C001010E0E7070808001A3 +S315E07C1730010E0E7070808001010C0E6070008003DB +S315E07C1740031C1CE0E0000003031C1CE0E00000033B +S315E07C175003181CC0E0000007073838C0C00000074B +S315E07C1760073838C0C000000607303880C001010E5B +S315E07C17700E7070808001010E0E7070808001010C0D +S315E07C17800E6070008003031C1CE0E0000002021C7B +S315E07C17901CE0E000000202181CC0E00000060638EF +S315E07C17A038C0C000727200002020000000000000FB +S315E07C17B000000000004000004040000040000000C7 +S315E07C17C00000000000002000400000000000200037 +S315E07C17D00000000000000020000000000000202047 +S315E07C17E00000000000002000000000000000200057 +S315E07C17F00000000000000040000040000000000007 +S315E07C18000000000020200040000040002000000096 +S315E07C181000000000200000000000000000600000E6 +S315E07C182040000000206000004000000060000000F6 +S315E07C18300000000020000000000000000000000026 +S315E07C184000000000400000000000000000000000F6 +S315E07C18500080202080000000800000200000000046 +S315E07C18600000204000000000000040400000000036 +S315E07C187000004020000000800000A000000040C086 +S315E07C18800000C000000000000000008000008040F6 +S315E07C189000004000000000000000000000000000A6 +S315E07C18A00000000000000000004000004000000056 +S315E07C18B000000000000000000000000000000000C6 +S315E07C18C00040000040400000400000000040000076 +S315E07C18D00000000040400000404000004040000026 +S315E07C18E04000000000000000000000400000000016 +S315E07C18F000000040000000400000004000000000C6 +S315E07C19000000000000000000000000000000000075 +S315E07C191000000000000000400000010000DD310016 +S315E07C192000008000000000000000000000000000D5 +S315E07C19300000000000000000000000000000040041 +S315E07C194000000000000080000000000000000000B5 +S315E07C19500000000000000000000000200000000005 +S315E07C196000000840000000000000000000000000CD +S315E07C197000000000010000000020000000000000E4 +S315E07C19800000000000000000000000008000000075 +S315E07C199000000000000000000000000000000000E5 +S315E07C19A000000000000000000000000000000000D5 +S315E07C19B00000000000004000000000000000000085 +S315E07C19C01000000000000020000002000000000083 +S315E07C19D00000000000000000000000000000002085 +S315E07C19E00000000000000000000000000000000095 +S315E07C19F00000000000000000000000000000000085 +S315E07C1A000000000000000000000000000000000074 +S315E07C1A1000000000801000000000000000200000B4 +S315E07C1A200000000000000000000000000000000054 +S315E07C1A300000000000000000000000000000000044 +S315E07C1A400000000000000400000000000000000030 +S315E07C1A500000000000000000000000000000000024 +S315E07C1A600000000000000000000000000000000014 +S315E07C1A700000000000000000000000000000000004 +S315E07C1A8000000000000000000000000000000000F4 +S315E07C1A900000000000001E1400A000000000000012 +S315E07C1AA040400000400000000040804000400000D4 +S315E07C1AB020A0000000400000004000000020002044 +S315E07C1AC04000004000000000400000400000400074 +S315E07C1AD0402040200000400000000060000020A084 +S315E07C1AE04000400040000000004000400000000054 +S315E07C1AF00040000020004060000000400000000044 +S315E07C1B000000000000000000200080002040000073 +S315E07C1B104020400000400000400000000040000003 +S315E07C1B200000000000000020008000004000000073 +S315E07C1B3000000000002000000000804020400060A3 +S315E07C1B408000008000008000000000208000000013 +S315E07C1B500080000000000000400000006000000003 +S315E07C1B6000000020000000000000A0008000C0C053 +S315E07C1B7000400040008040804000400000C0000003 +S315E07C1B800000C000408000400000404000000000B3 +S315E07C1B900000002000400000204000000000000023 +S315E07C1BA04040000000000000400040200040004033 +S315E07C1BB00040000040004000400000000040000083 +S315E07C1BC04000800040000000400000400080004073 +S315E07C1BD08000400080008000000000004000004063 +S315E07C1BE0000000408000C000C04080400000000053 +S315E07C1BF00000004000004080008020008000000063 +S315E07C1C004000808000000080400080C0000140D41D +S315E07C1C10A20020000000004000000400004000809C +S315E07C1C200000000000400000000000000000000012 +S315E07C1C3000000800000000200040000000000000DA +S315E07C1C400000200000004000000000202000400052 +S315E07C1C500000400000000000402040000000000042 +S315E07C1C604000004000400020004000002000004092 +S315E07C1C700000000000000000000000000000000002 +S315E07C1C8000000040002040000040000000004000D2 +S315E07C1C901000000000404000000000000000200032 +S315E07C1CA02000200000000000000000000020200052 +S315E07C1CB0000000A0000000600080000000008000C2 +S315E07C1CC00000000000000000000000800000000032 +S315E07C1CD04080000040000040000000002000000042 +S315E07C1CE000000000000000608000004000004080B2 +S315E07C1CF080000020008040000000000000000040E2 +S315E07C1D000000000000000000000000000000000071 +S315E07C1D1000206000000000000000000000000000E1 +S315E07C1D200000000000000000004000000000000011 +S315E07C1D3000000440000080000000008000000000FD +S315E07C1D400000400000400000004000000000000071 +S315E07C1D50800000000000000000000000C0000040A1 +S315E07C1D60000000C0000000004000000000400000D1 +S315E07C1D7000400000000000000040000040800000C1 +S315E07C1D80000000000040000072020000808000003D +S315E07C1D900000400040000000000000C00000004061 +S315E07C1DA000002000A0000040000000400000000091 +S315E07C1DB0002000000040000000C000000040000061 +S315E07C1DC00040004000000000000080000020400051 +S315E07C1DD020008000004000000000002000000000A1 +S315E07C1DE00000004000000000000060000000404071 +S315E07C1DF000000000010000000020008000000000E0 +S315E07C1E0000000060000000000000400000000000D0 +S315E07C1E108000000000000000000000008040000020 +S315E07C1E2000000000000000000000000000600000F0 +S315E07C1E3000006080008000002000000000A04020C0 +S315E07C1E4000200000000000000000000000200000F0 +S315E07C1E50000002000000000000000080200080807E +S315E07C1E600040000000400020000040004020008050 +S315E07C1E7000000000C04000800040000040402000A0 +S315E07C1E800000000000002040004000000000000050 +S315E07C1E90000040400010000000004000C000200030 +S315E07C1EA04000004000004000400040000000004050 +S315E07C1EB00000400040004000000040000000008040 +S315E07C1EC00000800040008080000000800000400030 +S315E07C1ED080400000000000800000C0000040000060 +S315E07C1EE000000000000000004080002080800000B0 +S315E07C1EF0000000008000000000C000800080004000 +S315E07C1F0000D4D0000000004040000000000040000B +S315E07C1F10000000404000000000800000000000005F +S315E07C1F2040000000004020008000000000400040AF +S315E07C1F3040000040008040000000000000000000FF +S315E07C1F40000000400020002000008000000000002F +S315E07C1F50000000000000000000000000000000001F +S315E07C1F6020000000000000000000C00000000080AF +S315E07C1F70000020000000400000000000000000405F +S315E07C1F80000040000040002000000000000000004F +S315E07C1F9000000000000000002000000000000000BF +S315E07C1FA0400000000000000000000000000000008F +S315E07C1FB0000000000000000000002000000000207F +S315E07C1FC0000000000000000020400000000000004F +S315E07C1FD040200000000000004000000000000000FF +S315E07C1FE0000000000000000000000000004000004F +S315E07C1FF000400040000000000000000000000002FD +S315E07C2000000000000000000000400000000000002E +S315E07C2010000000000040000000000000400000409E +S315E07C2020000000404000000040000040000000400E +S315E07C2030000000000000008000000000000080003E +S315E07C204000000000000000800000C000008000006E +S315E07C205000000000000000000000004000000000DE +S315E07C206000000040000000000000000000000000CE +S315E07C20700000000000400080000045DC00408080DD +S315E07C2080008000400000400000400000800000002E +S315E07C209040000040004000000000000040000000DE +S315E07C20A0000040000000000000000000000040004E +S315E07C20B0000020004020000000004080000000403E +S315E07C20C0008020000000000000200000400020008E +S315E07C20D0000000000020000000000000000000007E +S315E07C20E0400000000000000000002000000000002E +S315E07C20F0000000200000000020000020000000001E +S315E07C2100000000000000002000000000000000202D +S315E07C211000000000008000000000002000000000BD +S315E07C212000000020000000000000000000400000ED +S315E07C2130000000000000000000000000000000003D +S315E07C214040000000000000000000000000000000ED +S315E07C2150000000800000000000000000000000009D +S315E07C2160000000000000000000000080000040004D +S315E07C217000000000000000000040000000000000BD +S315E07C2180008000400000400000000000000080006D +S315E07C219000000000000000000000000000000000DD +S315E07C21A0400000000000000000000000000000404D +S315E07C21B0000000C0000000000040000000000000BD +S315E07C21C0008040000000000060800080000000404D +S315E07C21D000000000000080400000010180008000DB +S315E07C21E040000080000000000000008000800000CD +S315E07C21F0010180C53B00400000400040000000003B +S315E07C2200002040008040004000000080004000004C +S315E07C2210000000400000004000000040000000009C +S315E07C2220400000000000400000000000400000206C +S315E07C2230000040008000002020002080008000001C +S315E07C224000002000000000200000000000002000CC +S315E07C2250000000000000000040000000008000005C +S315E07C226080004000002000000040000000200000CC +S315E07C2270000000004020004020000000000000003C +S315E07C2280000000000000000020002000200000008C +S315E07C2290000000402000000000000000200000005C +S315E07C22A0000000000000400000000000002000006C +S315E07C22B000000000000000000000006000800000DC +S315E07C22C0000060000000000000000040008000008C +S315E07C22D0000020000000000000000000000000403C +S315E07C22E000000040400000000000000040000000CC +S315E07C22F002000000000000000000400000400000FA +S315E07C2300000000000000408000000000000000406B +S315E07C231040000000004040004000004000400000DB +S315E07C2320004000000000000000800000800000000B +S315E07C23308000400000000000008000C0C0000080FB +S315E07C234000408000800000000040800000000080AB +S315E07C235000000000C000008040000000800000001B +S315E07C2360000000000000000000800080D5640000D2 +S315E07C237000000000000000400000000000000000BB +S315E07C2380004000000000000000000000002000008B +S315E07C239000000000000000004000400080000000DB +S315E07C23A0400000000000000000004000000020002B +S315E07C23B0600000200000000040806000400020407B +S315E07C23C0000040000020000000000020000000002B +S315E07C23D000000000000000000080000000002000FB +S315E07C23E000000020000000000040202000000000EB +S315E07C23F0002040200000000040000080200000001B +S315E07C240040400020000000000000000000000000CA +S315E07C241000000000200000008000008020002000FA +S315E07C2420200000200000000000000000000000000A +S315E07C243040200000000000000000000000000000DA +S315E07C2440000020000000000000C00000000000004A +S315E07C245000204000000040200060000000002000DA +S315E07C2460000000000000008000000000000000008A +S315E07C2470000000800000400080000040000000007A +S315E07C2480000040000040000000000000000000006A +S315E07C2490400080000000000040000000004000009A +S315E07C24A040014000000000800000000000000000C9 +S315E07C24B0000000800000002080400000400000001A +S315E07C24C000400000000000000000000000000080EA +S315E07C24D0008000000040800000008000004080001A +S315E07C24E08000000080E14200000000000000000067 +S315E07C24F0C00000000000000000C0004000000000BA +S315E07C25000000000000000000000000000000000069 +S315E07C25100040000000000000000000800000000099 +S315E07C25200000000000000000200000000000000029 +S315E07C25300000200040000000400040000000000059 +S315E07C254000000000200000000040000000000000C9 +S315E07C255000000000000000004000000000000000D9 +S315E07C256000004000000000000000002000000000A9 +S315E07C257000000000000000000000000000200000D9 +S315E07C25800000000000000000000080000000000069 +S315E07C259000000000000000000000000000000000D9 +S315E07C25A000000000000000000000200000000000A9 +S315E07C25B000000000000000000000000000000000B9 +S315E07C25C00000400000000000000000000000400029 +S315E07C25D02000000000002000000000000000000059 +S315E07C25E00000000000000000000000000000000089 +S315E07C25F080000000000000000000000000000000F9 +S315E07C26000000000000000000400000000000000028 +S315E07C261000800000000000000000000000000000D8 +S315E07C262000000000000000000000000000800000C8 +S315E07C26308040400000000000000000000000000038 +S315E07C264000000000000000000000000000000040E8 +S315E07C2650000000000000008080000000008014E3A1 +S315E07C266000000000000000000000000000004000C8 +S315E07C267000000000000000000000000000000020D8 +S315E07C26800000000000000000000000400000800028 +S315E07C269000400000000000006000000000400000F8 +S315E07C26A020400000000000004000400000000020C8 +S315E07C26B00000000000000000200000000000000098 +S315E07C26C00000000000000000000020000000000088 +S315E07C26D00000000000002000000000002000000058 +S315E07C26E00000000040400000208040004000A00048 +S315E07C26F00000400000000000000000000000000038 +S315E07C27000000000000000000000000000000000067 +S315E07C27100020000000000000000000000000000037 +S315E07C27200000000040000000000000000000000007 +S315E07C273000000000200000400000000000000000D7 +S315E07C274000004000200000000000002000000000A7 +S315E07C275000000000000000000000002000000000F7 +S315E07C27600000000000800000000000400000400007 +S315E07C27700000000000000040200000000000000097 +S315E07C27800080000000000000000040000000000027 +S315E07C27900000400000000000000080000000000017 +S315E07C27A000000000000000000000000000000000C7 +S315E07C27B00000000000000000000040000000000077 +S315E07C27C000008000804000800000000000000000E7 +S315E07C27D000000080000000DB1C00000000000040E0 +S315E07C27E00000000040000000000000000000400007 +S315E07C27F000006000200000000000000000000000F7 +S315E07C280000000000000000000040000000008000A6 +S315E07C281000000020400000000000000000002000D6 +S315E07C282020000000C0000000000000000000000066 +S315E07C283000000000000040000020200000000000B6 +S315E07C28400000000000800000002000000000000086 +S315E07C285000000000000020000000000000000020D6 +S315E07C286000000000000000000020000040000000A6 +S315E07C287000000000000000000000000000000020D6 +S315E07C288000000080000000A0200000000000200086 +S315E07C28900000000000000000000040000000000096 +S315E07C28A000000000000000000000000000000000C6 +S315E07C28B000000000008000000000000000400000F6 +S315E07C28C00000000040000000000000000000000066 +S315E07C28D000008040000000000000000000000000D6 +S315E07C28E04000000000000000000000000040000006 +S315E07C28F000000000004000000000000080000000B6 +S315E07C290000000000000000000040000041000000E4 +S315E07C291000000000000000000000800000000000D5 +S315E07C292000000020000040000000000000400000A5 +S315E07C29300080000000000020000000000000000095 +S315E07C29400000000000800000004000000000000065 +S315E07C295038A10000000000000000000040000000FC +S315E07C29600000000000000000000000000000000005 +S315E07C297000000000000000000000000000000000F5 +S315E07C29800040000000004000000000000000000065 +S315E07C299000000000000000000000000000000000D5 +S315E07C29A00000200000000000000000000000002085 +S315E07C29B000000000000000000000000000000000B5 +S315E07C29C00000000000000000002000000000000085 +S315E07C29D00000002000000000000000000000000075 +S315E07C29E02000000000000000000000000000002045 +S315E07C29F00000000000000000000000000000000075 +S315E07C2A000000002000200000002000000000000004 +S315E07C2A1000000000000000002020002000200000D4 +S315E07C2A2020002000200000002000000000000000C4 +S315E07C2A300000400000000000000020004000002074 +S315E07C2A4000400020000000000000000000000020A4 +S315E07C2A5000006000000000000000000000000000B4 +S315E07C2A6000000000000000000000000000000040C4 +S315E07C2A700000000000000000000040000040000074 +S315E07C2A8000400000008000000000C0000000000064 +S315E07C2A9000000000000000000000000000000000D4 +S315E07C2AA00000000000400000000000000000000084 +S315E07C2AB04000000000000000008000008000000074 +S315E07C2AC00000800000000000009866000000000026 +S315E07C2AD00000004000000000000000000040000014 +S315E07C2AE00000000000000000000040000000000044 +S315E07C2AF020002000200040000000000000000000D4 +S315E07C2B0020000000000040000040000000200000A3 +S315E07C2B106000600000000000000000000000000093 +S315E07C2B200000000000000000000000000000000043 +S315E07C2B300000000000000000000000000000000033 +S315E07C2B4000000000002000002000000000000000E3 +S315E07C2B5000000000000000000000200000000000F3 +S315E07C2B6000200000000000000000000000000000E3 +S315E07C2B7000000000002000000000000000000000D3 +S315E07C2B8000000000000000000000000000000000E3 +S315E07C2B9000000000000000000000000000000000D3 +S315E07C2BA00000200040000000000000000040000023 +S315E07C2BB00080000000000040400000200000004053 +S315E07C2BC00000000000000000004000000020400003 +S315E07C2BD00040004000004000000000000000400093 +S315E07C2BE00000400000000000000000000000004003 +S315E07C2BF000000000400000000000000000400000F3 +S315E07C2C000000000000800000800000000000000062 +S315E07C2C1000004000804000C0000000000040000052 +S315E07C2C200000000000000000000000408000800002 +S315E07C2C300080000000000000800000000000000032 +S315E07C2C4080009945000000C0000000000000000004 +S315E07C2C500000000000004000000000000000004092 +S315E07C2C600000000000004000000040000000000082 +S315E07C2C7000000000400040004040000000000000F2 +S315E07C2C800000000000004000000000400000000062 +S315E07C2C9000000000000000000000000000000000D2 +S315E07C2CA00000000000200000000000000000002082 +S315E07C2CB00000002040000000000020000000000032 +S315E07C2CC00000000000000020000000200000002042 +S315E07C2CD00000000000000000200000000000000072 +S315E07C2CE00000000020200000002000000000000022 +S315E07C2CF020000000200040000020000000000000D2 +S315E07C2D002000000000000000000000000000000041 +S315E07C2D100000000000000000000000000000000051 +S315E07C2D200000000000000000000040000000000001 +S315E07C2D302000000000400000004000000000000091 +S315E07C2D4040000000000000000000000000000000E1 +S315E07C2D500000000080004000000000000000000051 +S315E07C2D604000004000000000000000000000000081 +S315E07C2D7000000000000000000000000000000000F1 +S315E07C2D8000000000804000000080400080000000E1 +S315E07C2D900000400000008080000000000000800011 +S315E07C2DA080800000000000000000000000000000C1 +S315E07C2DB000000000000000000000003E87000000EC +S315E07C2DC00000000000000000000000004000000061 +S315E07C2DD00040000000000000000000000000000051 +S315E07C2DE000000000000040002040004000000000A1 +S315E07C2DF00000000000000060000000000000000011 +S315E07C2E000020000000000020000000200000000000 +S315E07C2E1000000040000000002000000020000000D0 +S315E07C2E200000000000200000000000000000000020 +S315E07C2E300020000000000000200000006000000090 +S315E07C2E400000000000000000000000000000000020 +S315E07C2E5000000020000000000000000000000000F0 +S315E07C2E6000000000200000000000002000000000C0 +S315E07C2E7000000000000020000000000000000000D0 +S315E07C2E8000000000000000000000000000000000E0 +S315E07C2E900000000000200000000000400040000030 +S315E07C2EA000000000000000000000000000000000C0 +S315E07C2EB00000000000000000002000000000000090 +S315E07C2EC00000004000000000000000004000000020 +S315E07C2ED00000000000004000000000000000000050 +S315E07C2EE00000000000000000000000000000000080 +S315E07C2EF00040000000008000408080000000000070 +S315E07C2F00800000000000000040000000800000001F +S315E07C2F1000004000000040000000000000000000CF +S315E07C2F20000000000000000080000000000000803F +S315E07C2F3000800000D97D0000804000000000000099 +S315E07C2F40000000000000000000000000000000001F +S315E07C2F5000000000000040000000000000200000AF +S315E07C2F60000080000000000040000000000000003F +S315E07C2F70000000000000004000004000002000004F +S315E07C2F8000000000000000000000000000000000DF +S315E07C2F9000002000000000000000000000000000AF +S315E07C2FA000000000000000000000000000000000BF +S315E07C2FB0000000000000000020000000000000206F +S315E07C2FC0000000002000200020000000000000003F +S315E07C2FD0000000000000000000000020000000006F +S315E07C2FE0000040000000000000000000000000003F +S315E07C2FF0000000000000000000000000000000006F +S315E07C300000000040000000000020000000000000FE +S315E07C3010004000000000000000000000000000000E +S315E07C3020400000000000002000400000000040005E +S315E07C3030000000002000000000000000000000000E +S315E07C3040000000408000000000000000000000005E +S315E07C3050000000000000000000000000000000000E +S315E07C306040400000000000000000000080000000FE +S315E07C307000000000000000000000000000000000EE +S315E07C3080000000000000800000004000800000009E +S315E07C3090000000000000000000000000008000004E +S315E07C30A00000008000800000000000000017630044 +S315E07C30B040000000000040004000000000000000EE +S315E07C30C0000000400000000000000000004000001E +S315E07C30D0000000000000000000200000004000002E +S315E07C30E000000000004020000000200040000000BE +S315E07C30F0002000000000000000000000000020002E +S315E07C3100000000200000000000000000000000003D +S315E07C3110000000000000000020000000200000000D +S315E07C312020000020000000000000002000000000DD +S315E07C3130000000000000002000000000000000000D +S315E07C3140000000000000000000000000000000001D +S315E07C315020000000000000000000000000000000ED +S315E07C316000000000000000000000000000000000FD +S315E07C317000000000000000000000200000000000CD +S315E07C3180002000000000000000000000400000007D +S315E07C3190000000404000400000000000000000000D +S315E07C31A0000000008000000000000000000000003D +S315E07C31B0006000000000000000000000000000004D +S315E07C31C0000000000000000000000000000000009D +S315E07C31D0004000000040000000000000004000408D +S315E07C31E0004000000000000000000000000000003D +S315E07C31F0008040004000000080400000400000006D +S315E07C3200400000000000000000400000004000405C +S315E07C3210000000000000000000000000000000004C +S315E07C322000000000000045C00000000000400000F7 +S315E07C323000000000000000400000000000400000AC +S315E07C324000000040000000000000000000000000DC +S315E07C325000400000000000000000000000000000CC +S315E07C3260000000004000004000000000000020005C +S315E07C3270008000000000000000000000000000006C +S315E07C328000000000000000002000000000000000BC +S315E07C329000000000000000000000000000000000CC +S315E07C32A0002000000000200000000000000020005C +S315E07C32B0000000000000000000000000200000008C +S315E07C32C0000000000000000000000000000000009C +S315E07C32D0000000000000000000000020000000006C +S315E07C32E0000020000000000000000000000000005C +S315E07C32F0000000000000000000000000000000006C +S315E07C3300004000000000000000000000000000001B +S315E07C331000000000000020400000000000000000EB +S315E07C332000000040000000004000000000000000BB +S315E07C333000000000000000000000000000400000EB +S315E07C3340000000004000400040000040000000001B +S315E07C3350000000000000000000000000C00040000B +S315E07C3360400040000000000000000000000000403B +S315E07C337000000000008000004000000000400000EB +S315E07C338040000000400000000000008100000000DA +S315E07C3390008000000000000000000000000000C883 +S315E07C33A0800000000080000000008000000000003B +S315E07C33B0000000000000004000000000000040002B +S315E07C33C0000000000000000000000000000000009B +S315E07C33D0000000000000200040000000000000002B +S315E07C33E000400000004000400000000000000000BB +S315E07C33F0000000000000800000008000000000006B +S315E07C3400000000000000000000000000002000201A +S315E07C341000000000004000200000000000000000EA +S315E07C3420000000000000000000000000000000003A +S315E07C3430000000200000000000000000000000000A +S315E07C344020000000000000000000000000002000DA +S315E07C345000400000000000200000000000000000AA +S315E07C346000000000000020000000000000000000DA +S315E07C3470000040000000004000000000000000006A +S315E07C348000004000000000002000800000004000BA +S315E07C349000000000000000000000000000000000CA +S315E07C34A000000040400000000000000040000000FA +S315E07C34B040000000400000000040000000000000EA +S315E07C34C0000040000000000000000000000000005A +S315E07C34D0800000000000004000800040800000008A +S315E07C34E0008000C0008000008000000080000000BA +S315E07C34F000008000000000000040008080408000EA +S315E07C35008000800000008000000000000080000059 +S315E07C3510000080008000800085E300008080000061 +S315E07C352000000000004000000000000000000000F9 +S315E07C35300040000000000000000000400000400069 +S315E07C35400000000000000000000080000000000099 +S315E07C35500000200060002000000000000000000069 +S315E07C35600000002000002000000000000000002099 +S315E07C35700000000000000000800000000000000069 +S315E07C35800000200020000000000020200000000059 +S315E07C35900020000000000000002000000000000089 +S315E07C35A02000000000000000000000000000000099 +S315E07C35B000000000000000000000000000000000A9 +S315E07C35C00000000000A000000000002000000000D9 +S315E07C35D00000000000000000000000000000000089 +S315E07C35E000000000000000002000000000000080D9 +S315E07C35F00000000000000000000000000000000069 +S315E07C360000000000200000000000004000000000F8 +S315E07C36104000000000000000000000000000000008 +S315E07C362000000000000000004000000000000000F8 +S315E07C363000000000400000000000000000000000E8 +S315E07C364040400000000000004000000000000080D8 +S315E07C36500000000000000000000000000040008048 +S315E07C366000000000000000800040000000008000B8 +S315E07C367000000000000000000000000000000000E8 +S315E07C368000000000000000000000000000000101D6 +S315E07C369000841F00000000400000000000400000A5 +S315E07C36A000000000004040000000000000000040F8 +S315E07C36B04000004040000000002020000060400008 +S315E07C36C000404000400000000040002000204020F8 +S315E07C36D04000000000404000002020000000002068 +S315E07C36E000002000000000004000000000000020F8 +S315E07C36F020000020000000000000002000200020C8 +S315E07C370000000020002000200000200000000020B7 +S315E07C37102000000020002000200020000000200087 +S315E07C37202000002020000020002000000000000097 +S315E07C373000000020200000002000000000000020A7 +S315E07C37400020000000200000200000002000000097 +S315E07C375000000000000000002000200000002000A7 +S315E07C37600020002000200000002000000040000037 +S315E07C3770400000000040000000C0002040204020C7 +S315E07C37802040402060004000000000000000402017 +S315E07C37906000002000600040000040000000004027 +S315E07C37A000000000000000000000004040004000F7 +S315E07C37B000400040000000000000004000004000A7 +S315E07C37C0000000004000C0000080C0000080004097 +S315E07C37D08000800000008040000040000000C000C7 +S315E07C37E000C0008080400000000000000000004037 +S315E07C37F08000008000008000800000000080008067 +S315E07C380000800000008000808000CE8400400000C4 +S315E07C38104040004000004000400000400040004046 +S315E07C382000000000000000000000000040400000B6 +S315E07C383000000000200060A0400040400000000046 +S315E07C38400000002000600060004000000040002096 +S315E07C38500060004020802000000000002000000086 +S315E07C386000008000000080002000000000200000B6 +S315E07C387000000020002000200020000020200040E6 +S315E07C38802020000000000020000000000020000056 +S315E07C38900000200000002000000020000000002046 +S315E07C38A00020000000000000000000002000000076 +S315E07C38B000002000200000C0200000006000002006 +S315E07C38C00000000000000000200000000000000076 +S315E07C38D000200000000000002040200000002000C6 +S315E07C38E00000400020004000400000400000000056 +S315E07C38F04040000020408000002000400040204006 +S315E07C39000000C000000000004000204000400000B5 +S315E07C39100000400000000000004080000040000005 +S315E07C392000400040000000400000000040400040B5 +S315E07C3930000000400040004000400000C0400040E5 +S315E07C394080008040808000800080000080400040D5 +S315E07C3950808040800000404080C000408000C00005 +S315E07C396080004000004080C0008040400080000134 +S315E07C397000800000000080008080000080800000E5 +S315E07C39800080002E9E000000000000404000800089 +S315E07C39900000004040800000000000404000000045 +S315E07C39A000000040400000000000200000400000D5 +S315E07C39B00060408080000000004060000000000065 +S315E07C39C00060400000000000006060000000000035 +S315E07C39D000A0200000002000000080000000000025 +S315E07C39E02080800000000020000000000000002015 +S315E07C39F02000000000000060600000000000002065 +S315E07C3A002000000000000060200000000000002094 +S315E07C3A1020000000000000202000000000000000E4 +S315E07C3A2000000000002020000000000000202000B4 +S315E07C3A30C0000000002020000040000000202000A4 +S315E07C3A4000000000000000000000000000202000D4 +S315E07C3A5000000000006060000000000000E0400024 +S315E07C3A6000000000004040400000000020C0C00094 +S315E07C3A700000002020404000000000000080004064 +S315E07C3A8000000060600000000000004000000000D4 +S315E07C3A9000000040404000800000404040000000C4 +S315E07C3AA00000004040400000000000404040000034 +S315E07C3AB000000040C0400000000000C0C0000000E4 +S315E07C3AC000008080804000000040C08080000000D4 +S315E07C3AD00040408080800000004040000080000084 +S315E07C3AE000C0C0C0000000008080800000010000B3 +S315E07C3AF0008080000000000000808080B9830000A8 +S315E07C3B00000000404040400400200040440060004B +S315E07C3B10000000004040400000000000000100087A +S315E07C3B200040010028000000006060C0C08080008A +S315E07C3B30000000606002001000E06200500080003F +S315E07C3B40002020602000000000A08000200400000F +S315E07C3B5000000480A000000000A0A080800000207F +S315E07C3B602000000100080060210028004000006081 +S315E07C3B70606060000000002000002002001000E091 +S315E07C3B806200300080000020200020000000002041 +S315E07C3B9020002004002000000400200000202020DB +S315E07C3BA0200000000020202020C1C0080060210009 +S315E07C3BB0280000000020002020000000000000001B +S315E07C3BC00002001000A022203000800000604060EF +S315E07C3BD06000000000E0C04040040020000044405B +S315E07C3BE06000000000E0E0C0C00000202060200112 +S315E07C3BF000080040018088000000006060602000D2 +S315E07C3C000000004040000002001000C0024050006E +S315E07C3C1000000040400000000000000000000004BE +S315E07C3C200020000004002000000000000080C000AE +S315E07C3C3000000080C0414008004001808880800010 +S315E07C3C40004000C0C0808000004040800002001040 +S315E07C3C5000C002405000000000800000C000000070 +S315E07C3C60008080808004002000808480A0000000AA +S315E07C3C7000808080804D660000000000404000406F +S315E07C3C800000000040404040000000000040404012 +S315E07C3C900000000000000040000000002000000062 +S315E07C3CA000006020C08080800000404060600000B2 +S315E07C3CB00000C000004000000000202060200000E2 +S315E07C3CC0000080A020000000000000008080000052 +S315E07C3CD00000A0A080800000202000000000000002 +S315E07C3CE00020202000000000606060600000000092 +S315E07C3CF00020200000000000404020000000000082 +S315E07C3D002020200000000000202020200000000071 +S315E07C3D1000000000000000202020000000002020A1 +S315E07C3D202000C0C0000020202020000000000020F1 +S315E07C3D3020200000000000000000000000002020A1 +S315E07C3D402000000000004060606000000000C0E0F1 +S315E07C3D500000000000004040000000000000A0A041 +S315E07C3D60C0C00000002020400000000040008080B1 +S315E07C3D7000000000406040400000000000000000C1 +S315E07C3D800000000000400000000000000000000091 +S315E07C3D900000000000000040000000000000004041 +S315E07C3DA0000000004000C0C0000000000040400071 +S315E07C3DB000000000808000000000404000800000A1 +S315E07C3DC00000000080800080000080404000000011 +S315E07C3DD000000080C0400000000080000000000081 +S315E07C3DE000008000008000000000000000005A8D8A +S315E07C3DF00000000000404000408000800040400021 +S315E07C3E004000000000404040C00000000000000090 +S315E07C3E1000000000002020000000006060C0C08040 +S315E07C3E208000004000006000000000604000400030 +S315E07C3E300000000040200000000000A0A020200040 +S315E07C3E40000000000080800000000080A0808000F0 +S315E07C3E5000202000000000000000000020000000A0 +S315E07C3E6000000040600000000020002020000000F0 +S315E07C3E700020002020000000002020202000000000 +S315E07C3E800020000020000000000000000000000090 +S315E07C3E900000000000000020200000C0C0000020E0 +S315E07C3EA020002000000000202020200000000000F0 +S315E07C3EB00000000000000020002000000000006000 +S315E07C3EC060606000000000E0E04040000000000030 +S315E07C3ED0404040000000004060C080000000206060 +S315E07C3EE04040000000000080800000000040200090 +S315E07C3EF060000000004040000000000000404040C0 +S315E07C3F00400000000040400000000000004040000F +S315E07C3F1000000000000000000000000000000080BF +S315E07C3F20C000000000C0C080C000000000008080AF +S315E07C3F3080000040004040808000004040800000DF +S315E07C3F400000004000400000000000804000C0000F +S315E07C3F5000000080808080000000008080808000FF +S315E07C3F6000000080808080181900000000000000BE +S315E07C3F704000000000004040C040000000000040DF +S315E07C3F80404000000000404000400000000000008F +S315E07C3F90000000004000C0808080000000404000BF +S315E07C3FA0000000006020000000000000602040006F +S315E07C3FB000000000A0A0000000000000000080805F +S315E07C3FC000000000A080808000000000000000006F +S315E07C3FD0000020202020000000002020604000001F +S315E07C3FE0000000200020000000000020000000000F +S315E07C3FF0000000000000000000000000202000001F +S315E07C4000000000000000000000200000000000002E +S315E07C401000002000C0C0000000000000000000009E +S315E07C402020200000000000000000000000000000EE +S315E07C403000200000000000006060404000000000BE +S315E07C4040C0C040400000000040400000000000008E +S315E07C4050604080C00000000040400040000000005E +S315E07C406080800000000000406000000000004040CE +S315E07C4070000000000000404000000000000000005E +S315E07C4080404000000000400000400000000040404E +S315E07C40900040000000004000C0C00000000000407E +S315E07C40A0C0800000000080000000000040400080EE +S315E07C40B0000000004040C0C000800000004040009E +S315E07C40C0000000004080C04000000000800000004E +S315E07C40D0010000008000008000000000000000007D +S315E07C40E081460000008000000040400000000000A7 +S315E07C40F0000040000000000040000000000000409E +S315E07C4100404040000000000020000000004000002D +S315E07C411000000000004040000000000000602040FD +S315E07C4120400000000060604060000000002000006D +S315E07C413020000000000000000000000000000000FD +S315E07C4140000000000000000000000020202020008D +S315E07C415000000060400000000000002020002000FD +S315E07C416000000060600020000000000000002000ED +S315E07C4170000000000020200000000000000000009D +S315E07C4180002020000000000000000020200000004D +S315E07C4190000000202000000000200000000000005D +S315E07C41A0000000000000000000002020200000004D +S315E07C41B000200000000000000020004040000000DD +S315E07C41C0004040404000000000C0C00040000020AD +S315E07C41D0206060004000000000000000000000203D +S315E07C41E0606020000000004000000000000000400D +S315E07C41F0404040000000004040404000000000009D +S315E07C420000404000000000404000400000000040CC +S315E07C4210404040000000008000C0000000000080BC +S315E07C42200000800000400080C0008000004000C0AC +S315E07C423040008000004040004000000000C080C09C +S315E07C4240C0000000008000008000000000800000CC +S315E07C42508000000000800080808ADD000000800015 +S315E07C426000000040000000000000000000000000AC +S315E07C4270000000000000000040400000000000005C +S315E07C428020000000000000004000000000004040EC +S315E07C429020200000000000000040000000004040BC +S315E07C42A0600000000000002020000000000000000C +S315E07C42B0000000000000000000000000000000009C +S315E07C42C000000000002000000000000040400000EC +S315E07C42D0000000002000200000000000606020005C +S315E07C42E0000000000000200000000000202000000C +S315E07C42F0000000000000000000000020000000003C +S315E07C430000000000200000000000202000000000EB +S315E07C431000000020202000000000000000000000DB +S315E07C432000002000200000000000002000000000CB +S315E07C4330000000200000000000000000404000007B +S315E07C4340000080804000000000202000404000000B +S315E07C4350000000000000000040204040000000001B +S315E07C4360004000000000000000004040000000002B +S315E07C4370404040400000000040400000000000005B +S315E07C4380404040000000000000000000000000000B +S315E07C439000C04080000000000000800000000000BB +S315E07C43A040008000000000404040800000000000AB +S315E07C43B0400000000000404080800000000000805B +S315E07C43C0800000000000000000000000000000808B +S315E07C43D0808088F40080800000404000000000007F +S315E07C43E000000000400000000040400000000000AB +S315E07C43F000004040400000000020200000000060FB +S315E07C4400200000000000000000006000000000606A +S315E07C4410004040000000000000204000000000005A +S315E07C442000202000000000000000000000000000EA +S315E07C443020000000002020000000000000000000BA +S315E07C4440000000000020002020000000002000008A +S315E07C4450200000000000002020000000002020203A +S315E07C446020000000002000000000000000000000AA +S315E07C4470000000000000000000000020200000009A +S315E07C4480000000000020200000000000000000008A +S315E07C4490000000000000000000000000002000009A +S315E07C44A0000000000020200000000020200000002A +S315E07C44B0000000000000000000000000200000007A +S315E07C44C0000020200000400000000000000000000A +S315E07C44D0000020002000000000000000000000003A +S315E07C44E0000000000000000000000040000000002A +S315E07C44F0004040404000000000004040400000009A +S315E07C4500004040000000000000C000000000000009 +S315E07C451000800000800000400080C0008000000039 +S315E07C4520008040808000004040000000000000C029 +S315E07C45308000000000000000000080000000008099 +S315E07C45400000800000000080000000AF5E000000FC +S315E07C45508000000000000000000400200000000055 +S315E07C45600000000000000000000040004040000128 +S315E07C45700008004000000000000040000000000051 +S315E07C458000004000000000020010008000000000F7 +S315E07C459040404000000000000000000000000004F5 +S315E07C45A00020000000000000200000000000000069 +S315E07C45B00000000000010008004000000000000050 +S315E07C45C00000000000000000000000000002001077 +S315E07C45D000800000000000000000000000000000F9 +S315E07C45E00000000000040020000000000020000025 +S315E07C45F000000000000020000000000100080040F0 +S315E07C46000000000000000000000000000000000048 +S315E07C461000000002001000800000000000000000A6 +S315E07C46200000000000000000000000040020000004 +S315E07C46300000000020000000000000000000404078 +S315E07C4640000100080040000000000000200000009F +S315E07C46500000000000000000000200100080000066 +S315E07C466000000000004000000000400040400000E8 +S315E07C46700004402040400000000040400000000074 +S315E07C4680000000C0C08000010008004080000000FF +S315E07C469000004000800000000000400080800002B6 +S315E07C46A00010408000000000404000000000000058 +S315E07C46B000008000000000040020000000000000F4 +S315E07C46C000800000AA7500008080000000400000A9 +S315E07C46D00000040020000000000000004000000014 +S315E07C46E0000000004040000001000800404000005F +S315E07C46F00000000000000000004000000000000018 +S315E07C47000220100080000000000040200000000035 +S315E07C47100000000000000000040020000000000013 +S315E07C47200000000000000000000000000000010026 +S315E07C4730080040400000000000002000000000006F +S315E07C47402000000000000200100080000000000055 +S315E07C475000000000000000000000000000000400F3 +S315E07C476020000000000000000000000000000000C7 +S315E07C4770000000000100080040000000000000008E +S315E07C478000000000000000000000000002001000B5 +S315E07C479080000000000000000000000000000040F7 +S315E07C47A00000000004402000000000000000004003 +S315E07C47B0000000000000404000000100080040408E +S315E07C47C00000004000400000000000000000000007 +S315E07C47D00000020010408000000000000000400065 +S315E07C47E00000000040000000000004406040000043 +S315E07C47F00000000040000000000000008080000017 +S315E07C4800010008804040000000000040000080007D +S315E07C4810000000C0000080000200100080800000E4 +S315E07C48200000C00000000000000080800000000066 +S315E07C483004802000800000000000800000FD9400E1 +S315E07C484000000080004000000000000400204000E2 +S315E07C48500000000000000000000000000040400076 +S315E07C4860000100080040000000000040400000001D +S315E07C48700000000040000000000200504080000084 +S315E07C48800000000040000000000000000000000086 +S315E07C48900004002000000000000000000000000092 +S315E07C48A0000000000000000100280040000000003D +S315E07C48B00000000000000000000020000000000274 +S315E07C48C000100080000000000000000000000000F6 +S315E07C48D00000000000000004002000000000000052 +S315E07C48E0000000000000000000000000000100085D +S315E07C48F00040000000000000000000000000000016 +S315E07C490000000000000200100080000000000000B3 +S315E07C491000000000000000004000000000040020D1 +S315E07C492040000000000000400000000000000000A5 +S315E07C4930000000010008004000000000004000008C +S315E07C494000000000004000000000000200504080B3 +S315E07C49500000000000400000000000000000400075 +S315E07C49600000000400204000000000000040400001 +S315E07C4970000000000040400000010008004080008C +S315E07C49800000004040800000000000400000000085 +S315E07C4990000200504080000000000080C000000063 +S315E07C49A00000000000000000000400200000000081 +S315E07C49B00000008080009774000083831C1C60608C +S315E07C49C000000303181C40600000070738384040AD +S315E07C49D0000007073838C0C000000607303880C0C2 +S315E07C49E001010E0E7070808001010E0E7070808069 +S315E07C49F001010C0E6070008003031C1CE0E00000EB +S315E07C4A0003031C1CE0E000000303181CC0E000006C +S315E07C4A1007073838C0C0000007073838C0C0000038 +S315E07C4A200607303880C001010E0E7070808001016F +S315E07C4A300E0E7070808001010C0E607000800303A6 +S315E07C4A401C1CE0E0000003031C1CE0E00000030308 +S315E07C4A50181CC0E0000007073838C0C00000070714 +S315E07C4A603838C0C000000607303880C001010E0E21 +S315E07C4A707070808001010E0E7070808001010C0EDA +S315E07C4A806070008003031C1CE0E0000003031C1C38 +S315E07C4A90E0E000000303181CC0E00000070738389C +S315E07C4AA0C0C0000007073838C0C0000006073038B1 +S315E07C4AB080C001010E0E7070808001010E0E707058 +S315E07C4AC0808001010C0E6070008003031C1CE0E01A +S315E07C4AD0000003031C1CE0E000000303181CC0E09C +S315E07C4AE0000007073838C0C0000007073838C0C068 +S315E07C4AF000000607303880C001010E0E70708080A1 +S315E07C4B0001010E0E7070808001010C0E60700080D9 +S315E07C4B1003031C1CE0E0000002021C1CE0E0000039 +S315E07C4B200202181CC0E0000006063838C1C100D776 +S315E07C4B30840000400000000000000000400000000F +S315E07C4B404000000000000000000000400000000083 +S315E07C4B500000000000000000002060008040400073 +S315E07C4B600040000000000000002000000040000043 +S315E07C4B7000000000000000000000A0000000000033 +S315E07C4B80002000000000400000C0000000000000A3 +S315E07C4B900080000000000000000000000000002013 +S315E07C4BA06000000000000040000000000000000003 +S315E07C4BB060000000000000202000000000000020D3 +S315E07C4BC02000000000000020000000000000200023 +S315E07C4BD0000000000020200000000000002020C033 +S315E07C4BE00000000000202000000000000020000003 +S315E07C4BF000000000000020000000000000202000F3 +S315E07C4C00000000000020A000000000000000000082 +S315E07C4C100000400000408000000000202080000072 +S315E07C4C200000402000400000000000002000000062 +S315E07C4C300000002000000000400000400000000072 +S315E07C4C404000004040000040000000000000000002 +S315E07C4C5040000040000000004000004000000000F2 +S315E07C4C60400000C000000080000000008000008062 +S315E07C4C708000008080404080804000808000008012 +S315E07C4C808000408000400000000000000080C00002 +S315E07C4C9000C08000008080000000800000808000F2 +S315E07C4CA00000800000808000FFCB00000000000058 +S315E07C4CB00000000000000000000000000000000092 +S315E07C4CC00000000000000000000000000000000082 +S315E07C4CD00000000000000000000040000000000032 +S315E07C4CE00000000000000000000000000000A000C2 +S315E07C4CF00000000000000000000000000000000052 +S315E07C4D0000000000000000000000008000000000C1 +S315E07C4D100000000000000000000000000000000031 +S315E07C4D201000000000000000000000000000000011 +S315E07C4D3040000000000000000000000000000000D1 +S315E07C4D4000000000000000000000200000000000E1 +S315E07C4D500000000000000000008000000000000071 +S315E07C4D6000000000000000000000000008000020B9 +S315E07C4D700000000000000000000040000000000091 +S315E07C4D8000000000000000000000000008000000B9 +S315E07C4D9000000001000000000000000000000000B0 +S315E07C4DA00000000000200000000000000000000081 +S315E07C4DB00000000000000000000000000000000091 +S315E07C4DC00000000000000000000000000000000081 +S315E07C4DD000000000000000008000000000000000F1 +S315E07C4DE00000000000000000000000000000000061 +S315E07C4DF00000000000000000000000000000000051 +S315E07C4E000000200000000000000000000000000020 +S315E07C4E100000000000000000000000000000000030 +S315E07C4E200078B100004000400000400040000040B7 +S315E07C4E300000000000800040004000000000000010 +S315E07C4E40400000400000008000000000804000C080 +S315E07C4E500000000000000040000000200040004010 +S315E07C4E600000000000000000004040000000000060 +S315E07C4E700000000000C00000000020000000800070 +S315E07C4E8000000000A04000000000000000000020C0 +S315E07C4E9000000000000000000040000040A0400050 +S315E07C4EA040000000400000004000000020000000C0 +S315E07C4EB00020200000802000002000000000000090 +S315E07C4EC00000400000200000200000A00000400020 +S315E07C4ED000008000002000000000000000000000D0 +S315E07C4EE000000020000040000000200000000000E0 +S315E07C4EF00000002000000040400000C00000800070 +S315E07C4F0040804000000000000000000000400000FF +S315E07C4F10004000000080000000000000800040208F +S315E07C4F2040000040204000400000000000000000FF +S315E07C4F30000040000040000000004000400000000F +S315E07C4F4040000040800000C04000004000000000BF +S315E07C4F5000004000000080004080004040800080EF +S315E07C4F60000000800000800000C000408020C0007F +S315E07C4F70400000400000000000400040804080404F +S315E07C4F80408080400080000000800080800000003F +S315E07C4F9000008000008000000080DADE0000400037 +S315E07C4FA0000000400000000000400000000080009F +S315E07C4FB0400000400000000000000000000000000F +S315E07C4FC00000000040C000400040000000000000FF +S315E07C4FD000000000000000000040000080000000AF +S315E07C4FE040004040000000000000000000C00000DF +S315E07C4FF0000000000000008000000000004000008F +S315E07C500000000000000000000000400000000000FE +S315E07C5010000000000040000040000000002000008E +S315E07C502000000000000000000000002000000000FE +S315E07C503020000000000000002000000000000000CE +S315E07C504000000020800000004000000000002800F6 +S315E07C5050400000800000000000000000000000002E +S315E07C5060400000000000400000000000000000005E +S315E07C507000000000000000C00020400000000000AE +S315E07C508000000000000000000000400000800000FE +S315E07C5090800000000000004000000000004020008E +S315E07C50A0004000000000000000000040004080005E +S315E07C50B0000000000040000000400000000080008E +S315E07C50C040000000000000000000000040400000BE +S315E07C50D000000000008000008080000000000000EE +S315E07C50E0C08000008000800080400040000000001E +S315E07C50F000000000004000400000000000000000CE +S315E07C5100000080000000800000000000000000003D +S315E07C5110008000B114000000004040000000400028 +S315E07C5120004000000000400000000040000040001D +S315E07C5130000040004000004000A0000000000000AD +S315E07C5140008000004000000000400000200000409D +S315E07C515000400000000000000000000000000000AD +S315E07C5160000000000000200000000000200000009D +S315E07C517000000000000000A000000000000000002D +S315E07C51802000000000000000400000400000A0007D +S315E07C5190000040001000400000004080000000203D +S315E07C51A0000020004000A00000000020000000007D +S315E07C51B0000000004000A00000000020000000008D +S315E07C51C0800000208000000000000000000000005D +S315E07C51D000000000200000000000000000600000ED +S315E07C51E000800000200000006080400040800000DD +S315E07C51F0000000800040002000000000000040002D +S315E07C52000000000000000000280000010000008093 +S315E07C5210200020404000000040000000000000002C +S315E07C5220000000000000000040000000004000009C +S315E07C523000000000004000000080004000400000CC +S315E07C5240000000000000000000808040004040003C +S315E07C525000000000008000000000004000402000CC +S315E07C5260400000000000000000004000004000809C +S315E07C527000808040C00000800000000000802000AC +S315E07C528000000080800080000000400087470080AE +S315E07C5290004000000000800000004000400000006C +S315E07C52A0000000000000000000004000000000005C +S315E07C52B0008000000000004000000000400000008C +S315E07C52C000400000000040000000000000000000FC +S315E07C52D000000040004000000000000000400000AC +S315E07C52E000000000000000000000008000000000DC +S315E07C52F000000000000000800000000000000000CC +S315E07C5300000000800000000000000000000080003B +S315E07C531000000000008000000000000000000000AB +S315E07C5320000000000000000000000000000000001B +S315E07C533040000080400000000020000000000000EB +S315E07C534000000000000000000000000000000000FB +S315E07C535000000000000000000000000000000000EB +S315E07C5360000000000000008000000000000000401B +S315E07C537000000000000000000000000000000000CB +S315E07C538000000000000000000000000000000000BB +S315E07C5390004000000000000000000000000000006B +S315E07C53A0000000000000000000C00000004000801B +S315E07C53B0000040000000400000000000000000000B +S315E07C53C000008000000000000080000080000000FB +S315E07C53D00000000000408040000000008000C0002B +S315E07C53E0004000004000000000804000000080009B +S315E07C53F0008000000080000000000000000001004A +S315E07C54008080000000B2EA0040000000000000005E +S315E07C5410004000000000004000000000400000006A +S315E07C542000000000000000000000000000400000DA +S315E07C5430000000000000C00000000080000080004A +S315E07C544000008040000040000000400000000000BA +S315E07C5450000000400000000000000040000000006A +S315E07C546000800000000000004000000000004000DA +S315E07C5470000000004080000000000000000000000A +S315E07C548000000000000000000000408000000000FA +S315E07C549000000000000000000000000000000000AA +S315E07C54A0000000000000000000000000000000009A +S315E07C54B0000000000000000000000000000000008A +S315E07C54C000000000000000000000000000000080FA +S315E07C54D0000000000000000000000000000000006A +S315E07C54E000000000000080000000000000000000DA +S315E07C54F0000000000000000000000000000000004A +S315E07C55000000000000000000000000000000000039 +S315E07C55100000000000000000000000000000000029 +S315E07C55200000000000000000000000000000000019 +S315E07C55300000004000004000000040000000004009 +S315E07C554040000000400000800000000000000000F9 +S315E07C555000000000000000000000000000000000E9 +S315E07C55600000000000800040000000000080000099 +S315E07C55700000000000008000000000008000AA5CC3 +S315E07C558000000000000000800000006000000000D9 +S315E07C559040000000000040000000004000000000E9 +S315E07C55A000000080000000000000400000000000D9 +S315E07C55B08000000000000080400000C00000000089 +S315E07C55C000000000400040400000000000000000B9 +S315E07C55D04000000000000000000080000000800029 +S315E07C55E00040000000000040000080000040000019 +S315E07C55F000000000008000000000000000000000C9 +S315E07C56008000000080000000000000000000000038 +S315E07C56100000000000000020000000000000000008 +S315E07C56200040000000C000000000002000000000F8 +S315E07C56300000000000000000000000000000000008 +S315E07C56400000000000000000800000000000000078 +S315E07C56500000000000000000000080000000000068 +S315E07C566000000000000000000000000000000000D8 +S315E07C56700000000000000040000000000000000088 +S315E07C56800000000040000000000000000000000078 +S315E07C56900000800000000000000000804000004028 +S315E07C56A00080004000000000000000400000000098 +S315E07C56B040000040800000000040008000000000C8 +S315E07C56C000000000000000408040000000008000F8 +S315E07C56D0C000000040C00000000000C00000804028 +S315E07C56E00000008000008000800000000000008157 +S315E07C56F0008000800000007179000040804000005E +S315E07C57000000400000000040000000000000400077 +S315E07C571000000000000000002000400000000000C7 +S315E07C57200000000000000000004040800000000017 +S315E07C57300000208000400020000000404000000087 +S315E07C57400040000000004000000000404080400037 +S315E07C57500000000000000000004000000040400027 +S315E07C57600000000000800000008020408000800077 +S315E07C577000000000008040008000000000600040E7 +S315E07C57800000000000004000000000000000000077 +S315E07C57900000000000400000000000800000800067 +S315E07C57A00000000000400000000000000000000057 +S315E07C57B00000000000000000400000400000000007 +S315E07C57C020000040000080000080200000000000F7 +S315E07C57D00000000080000000000000000080000067 +S315E07C57E00080000000800000208080000000000037 +S315E07C57F000000080000000000000000000000000C7 +S315E07C580080000000000000000000000000000000B6 +S315E07C581040000000000000000001000000000040A5 +S315E07C582000004000400000000040400040000000D6 +S315E07C58300000C000008080000000000000C0800006 +S315E07C58400000008000004000000000804000000076 +S315E07C5850000040000000000000008000008000C0E6 +S315E07C586000808000800000000000800000000000D6 +S315E07C5870E9EB0080400040000000000000000000F2 +S315E07C58800000000000000000400000400000000036 +S315E07C589000002000000000000000004080000000C6 +S315E07C58A00000400080000000000000800000000056 +S315E07C58B00000000000004000000000000000000046 +S315E07C58C04000000000000000000000000000000036 +S315E07C58D000400000004000000000000000000000E6 +S315E07C58E00000000000000000800000000000004096 +S315E07C58F000000000004000000000000000000040C6 +S315E07C590000000000000000000040000000000000F5 +S315E07C591000000000000000002000000000400000C5 +S315E07C592000002000000000000000000000000000F5 +S315E07C59300000004000000000000000000000008045 +S315E07C59400000000000000000000000000000800075 +S315E07C59500000000000000000000000000000800065 +S315E07C59600000000000000000000000800000000055 +S315E07C597000000000000000000000000000000000C5 +S315E07C598000000000000000000000000000000000B5 +S315E07C59900000000040000000000000000000400025 +S315E07C59A000000000404000000000004000000000D5 +S315E07C59B00000000000000000000000004000000045 +S315E07C59C000000000800000000000004000000000B5 +S315E07C59D000000000000080008000008000000000E5 +S315E07C59E08000000000000000005449000000000038 +S315E07C59F00000000000000000004000000000208065 +S315E07C5A0000000000000000000000000040000000F4 +S315E07C5A1000000000000000000000000000400000E4 +S315E07C5A200000000000204000002000000000000094 +S315E07C5A300000000000000000000000004000C00004 +S315E07C5A4000000000000000000000000000000000F4 +S315E07C5A500000000000000080000000006000008084 +S315E07C5A604000000000008000000080000000002074 +S315E07C5A700000000040000000000000000000000084 +S315E07C5A8000000000000040000080000000000000F4 +S315E07C5A9000800000000000000080000000000000A4 +S315E07C5AA00000000000000000000000400000000054 +S315E07C5AB000000000400000000000008000000000C4 +S315E07C5AC00000000000000000000000000000000074 +S315E07C5AD000000000000000000000800000000000E4 +S315E07C5AE00000000000000000000000000000000054 +S315E07C5AF00000000000000000000000000000000044 +S315E07C5B000000000000000000000000000000000033 +S315E07C5B1000400000000000000000000000000000E3 +S315E07C5B200000000080000080800000000000400053 +S315E07C5B3080000000800000000000000000000040C3 +S315E07C5B400000000000000000000000000080400033 +S315E07C5B5040008000000000000000000080000000A3 +S315E07C5B6000005BB8000080800000400000400080C0 +S315E07C5B700000000000004000000000000000000083 +S315E07C5B8000000000000000000000000000000000B3 +S315E07C5B900080000000000000000000000000000023 +S315E07C5BA00000000000004000002000400000800073 +S315E07C5BB000000000000000000040000000400040C3 +S315E07C5BC00000000000000000000040000000000033 +S315E07C5BD00020008000000000000000800000000043 +S315E07C5BE00000000000000000000040000000000013 +S315E07C5BF00000000000000000000000000000000043 +S315E07C5C0000000000804080000000000000000000F2 +S315E07C5C100000000000000000000000000000000022 +S315E07C5C2000000000000000000000000020000000F2 +S315E07C5C3000000000002000000000000000000000E2 +S315E07C5C4000000000000000800000008000400000B2 +S315E07C5C5000000020008000000000800000000000C2 +S315E07C5C600000000000000000000000008000000052 +S315E07C5C700000000000000000000000400000000082 +S315E07C5C800000000100000000000000000000400071 +S315E07C5C900000004000000000000000000000000062 +S315E07C5CA00000000040800080000000000000000052 +S315E07C5CB00000400080000000000000008000000042 +S315E07C5CC00000000000000000000000000000000072 +S315E07C5CD080000000000000800000008A3F00000099 +S315E07C5CE00080000000000000004000000000000092 +S315E07C5CF00000000040000000000000008000000082 +S315E07C5D0000000000000000000040000000000000F1 +S315E07C5D10800000000000000000000000000000C0E1 +S315E07C5D200000008000000000000000400000804091 +S315E07C5D300000800000000000000000000000008001 +S315E07C5D4000000000000000000000008000008000F1 +S315E07C5D5000000000000000800000800000400000A1 +S315E07C5D6000000000800000000080000000000000D1 +S315E07C5D708000000000000000000000000000000041 +S315E07C5D8000000000000000000000000000000000B1 +S315E07C5D9000000000000000000000000000000000A1 +S315E07C5DA00000000000000000000000000000000091 +S315E07C5DB00000000000000000000000000000000081 +S315E07C5DC00000000000000000000000000000000071 +S315E07C5DD00000000000000000000000000000000061 +S315E07C5DE00000000000000000000000000000000051 +S315E07C5DF00000000000000000000000000000000041 +S315E07C5E0000400000004000400040000000004000F0 +S315E07C5E1000000080400000C00000000000000000A0 +S315E07C5E208000004000000000004000C000000080D0 +S315E07C5E3000000000000000800040004080400080C0 +S315E07C5E4000000000000000000080000000008000F0 +S315E07C5E50000000803FBE00008080004000004000E3 +S315E07C5E6000000000000000000000000000000000D0 +S315E07C5E704000C00080004000000000008000000080 +S315E07C5E8000000000800080000000000080800000B0 +S315E07C5E9000000000400000000000800040000000A0 +S315E07C5EA00000800000000000000080000000008010 +S315E07C5EB00000800000000000000080008000000000 +S315E07C5EC00000800000000000000080000000000070 +S315E07C5ED000008000000000000000000000000000E0 +S315E07C5EE08000000000000000800000000000000050 +S315E07C5EF080000000000080008000000000000000C0 +S315E07C5F00000000000000000000000000000000002F +S315E07C5F10000000000000000000000000000000001F +S315E07C5F20000000000000000000000000000000000F +S315E07C5F30000000008000000000000000000000007F +S315E07C5F4000000000000000000000000000000000EF +S315E07C5F5000000000000000000000000000000000DF +S315E07C5F6000000000000000000000000000000000CF +S315E07C5F70000000400000000000000000400000003F +S315E07C5F8000000000000040000000000000800000EF +S315E07C5F90000080004000000000004000000000009F +S315E07C5FA00000000000C000400040004000400000CF +S315E07C5FB000000000000000000000800000000000FF +S315E07C5FC08000000080000000000081010090AD00B0 +S315E07C5FD0000000400040000040000000000000009F +S315E07C5FE0000000000000000000000000000000004F +S315E07C5FF000000000000000004000000040000000BF +S315E07C6000400000000000000000000000008000006E +S315E07C6010000000000000000080000000800000001E +S315E07C6020000080000000000000000000000000008E +S315E07C6030000000000000000000008040000000003E +S315E07C6040000000008000000000000000000000006E +S315E07C605000000080000000000000000000008000DE +S315E07C6060000000000000008000000000000000004E +S315E07C6070000000800000000000000000000000003E +S315E07C608000000000000000000000000000000000AE +S315E07C6090000000000000000000800000000000001E +S315E07C60A0000000000000000000000000000000008E +S315E07C60B0000000000000000000000000000000007E +S315E07C60C0000000000000000000000000000000006E +S315E07C60D0000000000000000000000000000000005E +S315E07C60E000000000000000000000004000004000CE +S315E07C60F0000000000000000000000000000000003E +S315E07C610000000000008000000000000000000000AD +S315E07C611080000000000000000040008000000000DD +S315E07C6120000000000000000040004000000000008D +S315E07C6130000000008000000000000000000000007D +S315E07C6140000000000000AD9A004000000000000066 +S315E07C6150000000000000000040000000000000009D +S315E07C6160000000000000000000004000800000808D +S315E07C617000000080000000000000000000004000FD +S315E07C6180004000000000000000000000000000006D +S315E07C6190000000008000000000000000000000001D +S315E07C61A0000000000000800000000000000000000D +S315E07C61B000008000000000000000000000000000FD +S315E07C61C0000000000000000000000000200020002D +S315E07C61D000008000000000000000000000000000DD +S315E07C61E000000000800000000000000000000000CD +S315E07C61F0000000000000000000000000000000003D +S315E07C6200000000000000000000000000000000002C +S315E07C6210000000000000000000000000000000001C +S315E07C6220000000000000000000000000000000000C +S315E07C623000000000000000000000000000000000FC +S315E07C624000000000000000000000000000000000EC +S315E07C625000000000000000000000000000000000DC +S315E07C626000000000000000000000000000000000CC +S315E07C6270000000000040000000004000C00000007C +S315E07C62800000804000000000C040000000000040AC +S315E07C6290800000000000000040000080000000005C +S315E07C62A040000000008000000000000000000000CC +S315E07C62B000000000000000000000000080000007F5 +S315E07C62C0AC000000000000000000000000000000C0 +S315E07C62D0004000000000000040000000004000009C +S315E07C62E000000000800000000000000000000000CC +S315E07C62F0000000000000000000000000000000003C +S315E07C630000000000000000004000000000000000EB +S315E07C631000000000000000000000004000000000DB +S315E07C632000000040000000000000000000000000CB +S315E07C633000000000000000000000000000000000FB +S315E07C634000000000004000000000000000000000AB +S315E07C6350000000000000000080000000000000005B +S315E07C636000000000000000000000000000000000CB +S315E07C637000000000000000000000000000000000BB +S315E07C638000000000000000000000000000000000AB +S315E07C6390000000000000000000000000000000009B +S315E07C63A0000000000000000000000000000000008B +S315E07C63B0000000000000000000000000000000007B +S315E07C63C0000000000000000000000000000000006B +S315E07C63D0000000000000000000000000000000005B +S315E07C63E0000000400040400000000000000000008B +S315E07C63F000000000000000008000000000000000BB +S315E07C6400000000000040000000000000000000806A +S315E07C6410000000800040408000000000000000009A +S315E07C6420000000000080000000000000008000000A +S315E07C643000000000000000003C9D000000400000E1 +S315E07C6440004000000000000000000040000000006A +S315E07C6450000000004000000040400000000000001A +S315E07C6460400000000000000000400000000000004A +S315E07C647000400040008040000080000000000040BA +S315E07C6480000000004000000000000000000000006A +S315E07C649000000080000000004000000000000000DA +S315E07C64A0000000000000000000000080000000000A +S315E07C64B000400000000000000000000080000000BA +S315E07C64C0000000000000000000000000000000006A +S315E07C64D0000000000000000000000000000000005A +S315E07C64E0000000000000000000000000000000004A +S315E07C64F0000000000000000000000000000000003A +S315E07C65000000000000000000000000000000000029 +S315E07C65100000000000000000000000000000000019 +S315E07C65200000000000000000000000000000000009 +S315E07C653000000000000000000000000000000000F9 +S315E07C654000000000000000000000000000000000E9 +S315E07C65500000000000004000400040000000000019 +S315E07C65600000400000000000004000000000804089 +S315E07C657000000000008000000000004000000000F9 +S315E07C658040000000400040400000000000000000A9 +S315E07C659000000000C00000000000000000000000D9 +S315E07C65A00000000000000000000000000000000089 +S315E07C65B00093C7000000000000000000000000001F +S315E07C65C000000000000000000000000000008000E9 +S315E07C65D00000000000000000000000000000804099 +S315E07C65E000000000400000C0000000000000000049 +S315E07C65F000000000400040000000000000000000B9 +S315E07C66000000000000000000000000000000000028 +S315E07C66100000000080000000400000000000000058 +S315E07C662000000000000000000000000000000040C8 +S315E07C66300000000000000000008000000000004038 +S315E07C66400000800000000000000000000000000068 +S315E07C66500000008000000000000000000000000058 +S315E07C666000000000000000000000000000000000C8 +S315E07C667000000000000000000000000000000000B8 +S315E07C668000000000000000000000000000000000A8 +S315E07C66900000000000000000000000004000000058 +S315E07C66A00000000000000000000000000000000088 +S315E07C66B00000000000000000000000000000000078 +S315E07C66C00000000000000000000000000000000068 +S315E07C66D000000000000000000000000040004000D8 +S315E07C66E000000000000000400000000040000000C8 +S315E07C66F00080008000000000000000800080000038 +S315E07C67000000000040000000000000000000800067 +S315E07C67100000804000000000800080000000000057 +S315E07C672000008000000000000080BC490000800082 +S315E07C673000008000000040000000000000004000F7 +S315E07C67400000008000000000000000000000000067 +S315E07C675000200000000000000000404000000040F7 +S315E07C67600000000040000040000000000000000047 +S315E07C67704000000040000000000000000000000037 +S315E07C678000000000000000000000000000000000A7 +S315E07C67900000000000400000000000000000000057 +S315E07C67A00000000000000000000000000000000087 +S315E07C67B00020000000000000000000000000000057 +S315E07C67C00000000000000000000000000000000067 +S315E07C67D00000000000000000000020000000000037 +S315E07C67E00000000000000000000000000000000047 +S315E07C67F000000000000000000000000000008000B7 +S315E07C68000000000000000000000000000000000026 +S315E07C68100000000000000000000000000000000016 +S315E07C68200000000000000000000000000000000006 +S315E07C683000000000000000000000000000000000F6 +S315E07C68400000000000000000000000008040000026 +S315E07C68508000000000000000000040000000000016 +S315E07C68600000400000000000000000000000800006 +S315E07C687000000040000000800000000000000000F6 +S315E07C68800000000000000080000000000000000026 +S315E07C68900000000080000000000180000000800015 +S315E07C68A000000068B90000000000000000008000E5 +S315E07C68B00000000000000000000000000000000076 +S315E07C68C00000400000004000000000000040004066 +S315E07C68D00000000000000000000040000000000016 +S315E07C68E000000000000000800000000000000000C6 +S315E07C68F00000000000000000000000000000000036 +S315E07C69000000000000000000000000000000000025 +S315E07C69100000000000000000400000000000008055 +S315E07C692000000000000000000000000040000000C5 +S315E07C693000000000000000000000000000000000F5 +S315E07C694000000000000000000000000000000000E5 +S315E07C695000000000000000000000000000000000D5 +S315E07C69600000000000000000000000000080000045 +S315E07C697000000000000000000000000000000000B5 +S315E07C698000000000000000000000000000000000A5 +S315E07C69900000000000000000000000000000000095 +S315E07C69A00000000000000000000000000000000085 +S315E07C69B00000000000000000000000000000000075 +S315E07C69C00000000000000000000000000000000065 +S315E07C69D00000000000000000000000000040000015 +S315E07C69E00000800040000000000000000000800005 +S315E07C69F00000000080000000008000000000000035 +S315E07C6A000000C00000008000000000000000008064 +S315E07C6A10000000008000010000000000F8EE0000AD +S315E07C6A2000004040000040000000000000004040C4 +S315E07C6A3000000000004000400040008000804040B4 +S315E07C6A400000808000008000404080804040000064 +S315E07C6A5040C00080404000000000000000000000D4 +S315E07C6A60C0C00000C0004080008000804000004044 +S315E07C6A708080000080000000008000008000000034 +S315E07C6A808080000000000000008000008000008024 +S315E07C6A900080008000000000008000800040000054 +S315E07C6AA00000200020008080000000000080008044 +S315E07C6AB00000800000008080000000000000008074 +S315E07C6AC000008000000000000000000000000000E4 +S315E07C6AD00000000000000000000000000000000054 +S315E07C6AE00000000000000000000000000000000044 +S315E07C6AF000000000000000000000000080000000B4 +S315E07C6B000000000000000000000000000000000023 +S315E07C6B100000000000000000000000000000000013 +S315E07C6B200000000000000000000000000000000003 +S315E07C6B300000000000000000004000000000004073 +S315E07C6B400000400000000000000040000000000063 +S315E07C6B504080008040400080000080008040804093 +S315E07C6B608000400040800000808000C000400080C3 +S315E07C6B7040408040004000C00000000040400000F3 +S315E07C6B808080000080000000808000000000000023 +S315E07C6B908000008000A90D0040008040000000409D +S315E07C6BA08040000000004000004000000000C00083 +S315E07C6BB04000804040000040400080000020000013 +S315E07C6BC0400000C0400000400000804040000040A3 +S315E07C6BD04000408000000000C00040000040000013 +S315E07C6BE04000008000000000000000800000000003 +S315E07C6BF0800000004000000000C000004000000073 +S315E07C6C000040008000000000800040000000004062 +S315E07C6C1080004000000000000000400020004000B2 +S315E07C6C200080400000008000000000000000800042 +S315E07C6C300000000000008000000000000000000072 +S315E07C6C4000000000002000000000000000000000C2 +S315E07C6C500000000000000000000000000000008052 +S315E07C6C600000000000000000800000000000000042 +S315E07C6C7000000000000000000000000000000000B2 +S315E07C6C8000000000000000000000000000000000A2 +S315E07C6C900000000000000000000000000000000092 +S315E07C6CA00000000000000000000000000000000082 +S315E07C6CB000000040000080000000408040000000B2 +S315E07C6CC040000040400000004000800000800080E2 +S315E07C6CD000C0800000000080800000404000C000D2 +S315E07C6CE000004080C000C000C00000C04000400002 +S315E07C6CF00000C000400080000080008000808000B2 +S315E07C6D0080008000018080008001008000803381EB +S315E07C6D100080000000404040000000000000004091 +S315E07C6D200000000000000040400000000080C04001 +S315E07C6D300000004000A080000000000040C0800011 +S315E07C6D400000000040C080000000008040000000A1 +S315E07C6D5080000080C040000000000080C040000051 +S315E07C6D60000000808000000000000080C040000041 +S315E07C6D7000000080C04000000000008080004000F1 +S315E07C6D80000000C080000000000040C080000000E1 +S315E07C6D9000800060000080000080C04000000000B1 +S315E07C6DA00080800000000000008080000000000081 +S315E07C6DB00080800000000000000000000000000071 +S315E07C6DC02000000000000000000000000000000041 +S315E07C6DD000000000000000000000000080000000D1 +S315E07C6DE000800000000000000000000000000000C1 +S315E07C6DF08000000000000000004000000000000071 +S315E07C6E000000000000000000000000000000000020 +S315E07C6E100000000000000000000000000000000010 +S315E07C6E20000000000000000000000000000040C000 +S315E07C6E30000000000000C040400000000000404030 +S315E07C6E40000000000040C0C00000004000008080E0 +S315E07C6E50C0000000404080800000004040408080D0 +S315E07C6E60000000004040000080000040C0C0800080 +S315E07C6E700000000080808000000000008080000030 +S315E07C6E8000000000808080922900000000004040E5 +S315E07C6E9000400400200000044020000000000000C8 +S315E07C6EA00000000000008080014008000001A0A8EE +S315E07C6EB0004000000000C0C0000000004040808030 +S315E07C6EC0020010000002001000000000C0800040BC +S315E07C6ED000000000C0C04040040020008084002008 +S315E07C6EE000000000C0C0404000000000C0C041403F +S315E07C6EF0080040018088000000000000C0C000005F +S315E07C6F0000004040C0C0020010000002607000003B +S315E07C6F100000C0C04040000000008080000004000B +S315E07C6F2020008084002000000000808000000000BB +S315E07C6F30000000000100080060210008004000001D +S315E07C6F4000000000000000000000000002001000CD +S315E07C6F50800200100000000000008080000000003D +S315E07C6F600000000004002000808400200000000077 +S315E07C6F7000004040000000000000010008004001E5 +S315E07C6F800008004000000000000000000000000057 +S315E07C6F90000002001000800200100080000000006B +S315E07C6FA0000000000000000080C004002000808417 +S315E07C6FB0406000000000000000400000000040C08F +S315E07C6FC0C1C00800000100088080000000008080CD +S315E07C6FD0000000004040C00082001000800240506B +S315E07C6FE000000000C0C000000000000080800000BF +S315E07C6FF004002000808480A00000000000008080E7 +S315E07C7000FF08000080800000404000000000000097 +S315E07C701000404000000000000000400000000080CE +S315E07C702080400000000000A0A0000000000000C03E +S315E07C70308000000000004080C000000000400000AE +S315E07C70400000000000C080400000000000C040401E +S315E07C705040000000008000000000000000C0C0404E +S315E07C70604000000000C0C0404000000000800000FE +S315E07C70700000000000C0C0000000004040C0C0002E +S315E07C70800000000000404000000000C0404040009E +S315E07C7090000000808000000000000080800000008E +S315E07C70A0000000808000000000000000000000007E +S315E07C70B0002020000000000000000000000000002E +S315E07C70C0000000000000000000000000000000005E +S315E07C70D0000000808000000000000000000000004E +S315E07C70E000808000000000000000004040000000BE +S315E07C70F0000000000000000000000000000000002E +S315E07C7100000000000000000000000000000000001D +S315E07C7110000000000000000000000000000000000D +S315E07C712000C080000000008080400000000000007D +S315E07C713000404000000000C0C080C00000000000AD +S315E07C7140008040000000008080008000000040C09D +S315E07C71500080000000C00040000000000000C0008D +S315E07C7160800000000080000080000000000080803D +S315E07C7170000000000000000000695F0000000000E5 +S315E07C7180004040400000000000004000000000009D +S315E07C71900000000000000000C0404040000000000D +S315E07C71A0A02000000000004080400000000040007D +S315E07C71B08000000000000000000000000000C0002D +S315E07C71C0404000000000C04000000000000080005D +S315E07C71D0000000000000C040404000000000C040CD +S315E07C71E04040000000008000000000000000C0403D +S315E07C71F0000000004040C04000000000000040600D +S315E07C720000000000C040404000000000800000001C +S315E07C7210000000008000000000000000800000000C +S315E07C722000000000000000000000202000000000BC +S315E07C723000000000000000000000000000000000EC +S315E07C724000000000000000000000000080800000DC +S315E07C725000000000000000000000000000000000CC +S315E07C7260000000004040000000000000000000003C +S315E07C727000000000000000000000000000000000AC +S315E07C7280000000000000000000000000000000009C +S315E07C72900000000000000000404080C000000000CC +S315E07C72A080C04000000000000000004000000000BC +S315E07C72B00080C0400000000000000000000040406C +S315E07C72C04000000000000040C0008000000000009C +S315E07C72D040000000000080C00000000000008080CC +S315E07C72E0000000000000008080800000000000803C +S315E07C72F080802957000080800000000000000000AC +S315E07C7300000000404000000000000000400000005B +S315E07C731000408000000000000020A000000000404B +S315E07C732000408000000000004000C00000000040FB +S315E07C7330000000000000000080000000000000402B +S315E07C7340400000000000000000000000000000405B +S315E07C7350C040400000000040C0404000000000000B +S315E07C73600000000000000040C000000000404040FB +S315E07C7370C00000000000006040000000004040408B +S315E07C7380400000000000800000000000000080005B +S315E07C7390000000000000800000000000000000000B +S315E07C73A0000000202000000000000000000000003B +S315E07C73B0000000000000000000000000000000006B +S315E07C73C0000000000080800000000000000000005B +S315E07C73D000000000000000000000000000404000CB +S315E07C73E0000000000000000000000000000000003B +S315E07C73F0000000000000000000000000000000002B +S315E07C7400000000000000000000000000000000001A +S315E07C7410004000C08000000000C08000000000004A +S315E07C7420004040000000000000C0C000C00000003A +S315E07C7430008080800000004040004000800000002A +S315E07C7440000000000000004000400000000000005A +S315E07C74508040C0000000008000008000000000004A +S315E07C7460808000000000008001010089AF00000000 +S315E07C747000004000404000000000000000400000AA +S315E07C7480000000004040000000000080404000001A +S315E07C749000000080000000004040408000000000CA +S315E07C74A0004040C0000000004040000000000000BA +S315E07C74B040C040400000000080804040000000006A +S315E07C74C080800000000000000080000000000000DA +S315E07C74D000800000000000008080000000000000CA +S315E07C74E0008000000000000000800000000000003A +S315E07C74F0202000000000808000000000000000806A +S315E07C75000000000000000080000000000000008019 +S315E07C75100000000000000000000000000000000009 +S315E07C752000000000000000000000000000000000F9 +S315E07C753000000000000000000000000000000000E9 +S315E07C754000000000000000000000000080800000D9 +S315E07C755000000000000000000000000000000000C9 +S315E07C756000000000000000000000000000000000B9 +S315E07C757000000000000000000000000000000000A9 +S315E07C75800000000000000000000000004040000019 +S315E07C759000004040004000000000404040400000C9 +S315E07C75A00000C00000C000000000808080800000F9 +S315E07C75B00040C0C0808000004000C0C080800000E9 +S315E07C75C040404040000000004000C0C00000000099 +S315E07C75D080008080000000008080000000000000C9 +S315E07C75E0808080806B4800000000000040404000C6 +S315E07C75F000000000004000000000000000000000E9 +S315E07C7600000000C040404000000000800000000018 +S315E07C76100040408000000000000000C04000000008 +S315E07C7620000000000000000000C0004040000000B8 +S315E07C76300080004040000000008000000000000068 +S315E07C764000800000000000000080000000000000D8 +S315E07C765000800000000000000080000000000000C8 +S315E07C766000800000000000000000000000000080B8 +S315E07C767000000000000000800000000000000080A8 +S315E07C76800000000000000080000000000000000018 +S315E07C76900000000000000000000000000000000088 +S315E07C76A00000000000000000000000000000000078 +S315E07C76B00000000000000000000000000000000068 +S315E07C76C00000000000808000000000000000000058 +S315E07C76D00000000000000000000000000000000048 +S315E07C76E00000000000000000000000000000000038 +S315E07C76F00000000000000000000000000000000028 +S315E07C770000000040400000000000004040400000D7 +S315E07C77100000004040000000000000008000000007 +S315E07C77200000008000000000004000C0C0808000B7 +S315E07C7730000040C0008000000040400000000000E7 +S315E07C77400000C04040000000000000000000000097 +S315E07C775000000080000000000080808080B2500045 +S315E07C77600000000040000000000000000000000077 +S315E07C777000000000000040400000000040400000A7 +S315E07C77800000000000000000000000000040000057 +S315E07C77900000400000400000000040400000000087 +S315E07C77A00000404000000000000080000000000077 +S315E07C77B000008000000000000000000000000000E7 +S315E07C77C000000000000000000000800000000000D7 +S315E07C77D00000000000000000000000000000000047 +S315E07C77E00000002000000000800000000000000097 +S315E07C77F00000000000000000000000000000000027 +S315E07C78000000000000000000000000000000000016 +S315E07C78100000000000000000000000000000000006 +S315E07C782000000000000000000000000000000000F6 +S315E07C783000000000000000000000000000000000E6 +S315E07C784000000000000000000000000000000000D6 +S315E07C785000000000000000000000000000000000C6 +S315E07C786000000000000000000000000000000000B6 +S315E07C787000000000000000000000000040404040A6 +S315E07C78800000000000000040000000000040404096 +S315E07C789000000000400000C0000000008080808086 +S315E07C78A0000000000000808000004000C0C08080B6 +S315E07C78B0000040004000000000004000C080000066 +S315E07C78C00000800080800000000000800000000056 +S315E07C78D0000000000000579F000000000000400010 +S315E07C78E000000000040020000000000000000040D2 +S315E07C78F0400000000040000000000100080040005D +S315E07C790000000040404000000000000040400000D5 +S315E07C791000000240500080000000000000000000F3 +S315E07C792000000000000000000000040020000000D1 +S315E07C793000000000000000000000000000000000E5 +S315E07C7940010008004000000000000000000000008C +S315E07C79500000000000000000020010208000000013 +S315E07C796000000000000000000000000000000000B5 +S315E07C79700400200000000000000000000000000081 +S315E07C7980000000000000010008004000000000004C +S315E07C79900000000000000000000000000000020083 +S315E07C79A010008000000000000000000000000000E5 +S315E07C79B00000000000000400200000000000000041 +S315E07C79C0000000000000000000000000010008004C +S315E07C79D04000000000000000000000000000000005 +S315E07C79E000000000020010008000000000000000A3 +S315E07C79F00000000000400000000000000440604001 +S315E07C7A0000000000004000000000000000000000D4 +S315E07C7A10000001000880400000000040404040003B +S315E07C7A2000000000400000000000020050008000E2 +S315E07C7A3000000000C080C0000000000000808000E4 +S315E07C7A400000040020800000000000808000008EA2 +S315E07C7A50B800000080000000400000000004002028 +S315E07C7A6000400000000000000000000000008040B4 +S315E07C7A7000000001000800C04000000000400080DB +S315E07C7A80000000000000C000000000024010008002 +S315E07C7A908000000000800000000000000080000004 +S315E07C7AA00000000400A00000000000008000000050 +S315E07C7AB000000000008000000001000880404000DB +S315E07C7AC00000000000800000000000008000000054 +S315E07C7AD000020010008080000000008000000000B2 +S315E07C7AE00000008000000000000400A00000000010 +S315E07C7AF000000080000000000000000000000001A3 +S315E07C7B0000080040000000000000000000000000CB +S315E07C7B100000000000000002001000800000000071 +S315E07C7B2000000000000000000000000000000004EF +S315E07C7B3000200000000000000000000000000000C3 +S315E07C7B40000000000001000800400000000000008A +S315E07C7B5000000000000000000000000000020010B1 +S315E07C7B6000800000000000000000000000004000F3 +S315E07C7B70000000000004002000000000000000403F +S315E07C7B80000000000000800000000001000880404A +S315E07C7B904000000000400040008000000000000043 +S315E07C7BA00000000200500080800000000000C00061 +S315E07C7BB000000000000080000000000400200000BF +S315E07C7BC0000000000080000086DD00000000000070 +S315E07C7BD040000000000004002000000000000000DF +S315E07C7BE0004000000000000040400000010008006A +S315E07C7BF04000000000000040000000000000400063 +S315E07C7C0000000000020050008000000000004040C0 +S315E07C7C1000000000000000000000000004002000DE +S315E07C7C2000000000000000000000000000000000F2 +S315E07C7C300000010008004000000000000000000099 +S315E07C7C400000000000000000000002001000800040 +S315E07C7C5000000000000000000000000000000000C2 +S315E07C7C60000004002000000000000000000000008E +S315E07C7C700000000000000000010008004000000059 +S315E07C7C800000000000000000000000000000000092 +S315E07C7C9002001000800000000000000000000000F0 +S315E07C7CA0000000000000000004002000000000004E +S315E07C7CB00000000000000000000000000000010061 +S315E07C7CC0080040000000000000000000000000000A +S315E07C7CD000000000000002001000800000000000B0 +S315E07C7CE000000000000000000040000000000400EE +S315E07C7CF06040000000000000404000000000000002 +S315E07C7D0040C0000001000800408000000000000048 +S315E07C7D10000000000000404080800000020010402F +S315E07C7D20800000000000C0C00000000000008080F1 +S315E07C7D30000000000400A08000000000000000803D +S315E07C7D400030C5000003031C1C60600000030318C0 +S315E07C7D501C406000000707383840400000070738C1 +S315E07C7D6038C0C000000607303880C001010E0E70B6 +S315E07C7D7070808001010E0E7070808001010C0E60B7 +S315E07C7D8070008003031C1CE0E0000003031C1CE085 +S315E07C7D90E000000303181CC0E0000007073838C089 +S315E07C7DA0C0000007073838C0C000000607303880BE +S315E07C7DB0C001010E0E7070808001010E0E70708025 +S315E07C7DC08001010C0E6070008003031C1CE0E00067 +S315E07C7DD00003031C1CE0E000000303181CC0E00069 +S315E07C7DE00007073838C0C0000007073838C0C00035 +S315E07C7DF0000607303880C001010E0E70708080016D +S315E07C7E00010E0E7070808001010C0E6070008003A4 +S315E07C7E10031C1CE0E0000003031C1CE0E000000304 +S315E07C7E2003181CC0E0000007073838C0C000000714 +S315E07C7E30073838C0C000000607303880C001010E24 +S315E07C7E400E7070808001010E0E7070808001010CD6 +S315E07C7E500E6070008003031C1CE0E0000003031C42 +S315E07C7E601CE0E000000303181CC0E00000070738B4 +S315E07C7E7038C0C0000007073838C0C00000060730AD +S315E07C7E803880C001010E0E7070808001010E0E708C +S315E07C7E9070808001010C0E6070008003031C1CE086 +S315E07C7EA0E0000002021C1CE0E000000202181CC09C +S315E07C7EB0E0000006063838C0C00072720000400060 +S315E07C7EC000004000000000000000400000000000D0 +S315E07C7ED00000004000000000000080800000800080 +S315E07C7EE00000808020008000000080800000800010 +S315E07C7EF00000808000008000004000000000000060 +S315E07C7F00808000008040000080800000804000008F +S315E07C7F10C0800000800000008080000080000000BF +S315E07C7F2080800000C00000008080000080000000AF +S315E07C7F30808000008000000080804000800040005F +S315E07C7F4000006040000080800000800000008080AF +S315E07C7F5000008000000080800000800000008080BF +S315E07C7F60000080000000000000200000000000000F +S315E07C7F70000000000000000000000000000000009F +S315E07C7F80000000000000000000000000000000008F +S315E07C7F9080000000000000000000000000000000FF +S315E07C7FA0000000000000000040000000000000002F +S315E07C7FB0000000000000000000000000000000005F +S315E07C7FC0000000000000000000000000000000004F +S315E07C7FD00000000000000000000000400000C080BF +S315E07C7FE000000040000000000000000000000040AF +S315E07C7FF0000040400000000000000080000080009F +S315E07C800000000000000000004000000000000000CE +S315E07C80100000000000000000C080000080800000BE +S315E07C8020808000008000000000800000800000006E +S315E07C8030008000ED8B0000000000000000000000E6 +S315E07C804000000000000000000000000000000000CE +S315E07C8050C0000000000000000000000000000000FE +S315E07C806000000000000000000000000000000000AE +S315E07C8070000020000000000000000000000000007E +S315E07C8080000000000000000000000000000400008A +S315E07C8090000000000000000000000000000000007E +S315E07C80A0000000000000000000000000000000006E +S315E07C80B040000000000000000000000000000020FE +S315E07C80C0000000000000000000000000000000004E +S315E07C80D0000000000000000000000000000000003E +S315E07C80E000000000800000000000000000000000AE +S315E07C80F0000000000000000000000000000000001E +S315E07C8100000000000000000000000000000000000D +S315E07C811000000000000000000000000000000000FD +S315E07C812000000000000000000000000000000000ED +S315E07C8130000000000000000000000000000080005D +S315E07C814000000000000000000000000000000000CD +S315E07C815000000000000000000000000000000000BD +S315E07C8160000000000000200000000000000000008D +S315E07C8170000000000000000000000000000000009D +S315E07C8180000000000000000000000000000000008D +S315E07C8190000000000000000000000000000000007D +S315E07C81A000000000000000000080000017ED0000E9 +S315E07C81B040400000000040004000400000400000DD +S315E07C81C000000040000000008080000000000020ED +S315E07C81D000000000000000000020C040000040805D +S315E07C81E000000000000040000000000040000000AD +S315E07C81F0400000000000008000000000408000009D +S315E07C820040000000000000000000000000000000CC +S315E07C8210000000608000000000000080000000009C +S315E07C822000000000800000400000000000400000EC +S315E07C823000200000000000008000000000008000BC +S315E07C8240000040000000000000000000000000008C +S315E07C825000000000000000000000000000000000BC +S315E07C826000000000000000000000000000000000AC +S315E07C827000800000080000000000000000400000D4 +S315E07C8280000000000080000000008000008000000C +S315E07C8290000000004000000000000000000000003C +S315E07C82A0000000000000000000000000000000006C +S315E07C82B0000000000000000000000000000000005C +S315E07C82C000000000000000000040000040000000CC +S315E07C82D0000040800000000000000000000000403C +S315E07C82E000C000008000000000800000000000006C +S315E07C82F00000C0400000800000000040000000005C +S315E07C830000400000404000400000404080804080CB +S315E07C831001008000000080800000000000000080FA +S315E07C83200080000000D5AC0040000000000000406A +S315E07C8330400040000000004080000000000000009B +S315E07C8340400000800000000000000000000000000B +S315E07C8350000060000040004080000000000040001B +S315E07C836000000000400000000040004000000000EB +S315E07C83708000000000400000400000040000000097 +S315E07C838000000040000000000000000000A00000AB +S315E07C839040000000000000000000000000800000BB +S315E07C83A040000000000000004000002000000000CB +S315E07C83B0800000000000008000000000000000005B +S315E07C83C0000000000000000000800000000000408B +S315E07C83D0000000000000000000000000000000003B +S315E07C83E00000000000000000000000000008000023 +S315E07C83F0000000000000004000000000000080005B +S315E07C840000000000000000000000000040000000CA +S315E07C841000000000000000000000000000000000FA +S315E07C842000000000000000000000000000000000EA +S315E07C843000000000000000000000000000000000DA +S315E07C8440000000400040000000002040804000002A +S315E07C84500000000000000000004000C0008000003A +S315E07C846000000080000000000040408000400000EA +S315E07C8470000080004000000000800000000040809A +S315E07C848000004000000080000180800000000000C9 +S315E07C84900080000080000000800000000000EA8E82 +S315E07C84A0000000004000000000000000000000002A +S315E07C84B0000000000000400000008000000000009A +S315E07C84C0000020000000000040000080000000006A +S315E07C84D000000000000000000000400000000000FA +S315E07C84E080000000000040000000400000000040EA +S315E07C84F0800000000000204000000000000000003A +S315E07C85000000000000400000000000000080000049 +S315E07C85100000000000000080000000000000004039 +S315E07C85200000000000000000800000000000000069 +S315E07C85300000004000000020000000000000000079 +S315E07C854000000000000000000000000000000000C9 +S315E07C855000000000000000000000000000000000B9 +S315E07C856000000000800000000000000080000000A9 +S315E07C85700000000000000000000000008000000019 +S315E07C858080000000000000000000400000000000C9 +S315E07C85900000000000000000000000000000000079 +S315E07C85A00000000000000000000000000000000069 +S315E07C85B000008000000000000000000000000000D9 +S315E07C85C00000400000000000000000000000000009 +S315E07C85D000000000004000000000000000000000F9 +S315E07C85E000008000000000800000400000000000E9 +S315E07C85F00000000040400000000040000080404059 +S315E07C86000000000000000000800000000000000088 +S315E07C86100000000080000033220000000000000023 +S315E07C862000000000000000000000000000000000E8 +S315E07C86300000400000000000000000000000000098 +S315E07C864000000000000000000000000000000000C8 +S315E07C865000000000000000400000004000000080B8 +S315E07C86600000000000400080400000800000000028 +S315E07C86700000000000000000000000000000000494 +S315E07C86800000000000000000000000000000000088 +S315E07C86900000000040000000000000000200000036 +S315E07C86A000000000000000000080004000000000A8 +S315E07C86B00080000000000000008000000000000058 +S315E07C86C00000000000000000000000000000000048 +S315E07C86D00000000000000000000000000000000038 +S315E07C86E000000000000000000000004000000000E8 +S315E07C86F00000000000000000000000000000000018 +S315E07C87000000000000000000000000000000000007 +S315E07C87100080000000000000000000000000000077 +S315E07C872000000000000000000000000000000000E7 +S315E07C873000000000000000000000000000000000D7 +S315E07C874000000000000000000000000000000000C7 +S315E07C875000000000000000000000000000000000B7 +S315E07C876000000000000000000000000000000000A7 +S315E07C87700000000000000000000000000000000097 +S315E07C87800000000000000000000000000000000087 +S315E07C879031E2000000000000000000000000000064 +S315E07C87A04000000000000000000000000000000027 +S315E07C87B000000000400000010000004100000000D5 +S315E07C87C00000000000000000000000000000000047 +S315E07C87D00000000000000000000000000000000037 +S315E07C87E00000000000000000000000000000000027 +S315E07C87F00000000000000000000000000000000017 +S315E07C88000000000000000000000000000000000006 +S315E07C881000000400000000000000000000000000F2 +S315E07C882000000000000000000000000000000000E6 +S315E07C88304000000000000000000000000000000096 +S315E07C884000000000000000000000000000000000C6 +S315E07C885000000000000000000000000000000000B6 +S315E07C886000000000000000000000000000000000A6 +S315E07C88700000000000000000000000000000000096 +S315E07C88800000000000000000000000000000000086 +S315E07C88900000000000000400000000000000000072 +S315E07C88A00000000000000000000000000000000066 +S315E07C88B000000000000000008000000000000000D6 +S315E07C88C00000000000000000000000000000000046 +S315E07C88D00000000000000000000000000000000036 +S315E07C88E000000000800000000000000000000000A6 +S315E07C88F00000008000000000000000000000000096 +S315E07C89000000000000000000005B0F00000000009B +S315E07C891000000000000000000000000000000000F5 +S315E07C89200000000040000000000000000040000065 +S315E07C89300100000040010000000000000000000093 +S315E07C89400000000000000000004000004000000045 +S315E07C895080000000000000408000004000800000B5 +S315E07C896000000000000000000000000000000000A5 +S315E07C89700000000000000000000000000000000095 +S315E07C89800000000000000040000000000000000045 +S315E07C899000000000000000000000008000400000B5 +S315E07C89A00000008000000000004000800000000025 +S315E07C89B00000000000000000000000000000000055 +S315E07C89C00000000000000000000000000000000045 +S315E07C89D000000000000000000000000040000000F5 +S315E07C89E00000000000000000000000000000000025 +S315E07C89F00000000000000000000000000000000015 +S315E07C8A000000800000000000000000000000000084 +S315E07C8A1000000000000000000000000000000000F4 +S315E07C8A2000000000000000000000000000000000E4 +S315E07C8A3000000000000000000000000000000000D4 +S315E07C8A4000000000000000000000000000000000C4 +S315E07C8A500000000000000000000000000080000034 +S315E07C8A600000000000000000000000000080000024 +S315E07C8A700000000000000000000000000000000094 +S315E07C8A80000052F1000040000000000040000000C1 +S315E07C8A900000000000000000000000000000000074 +S315E07C8AA000A0400000000000000000000000000084 +S315E07C8AB00000000080000000800000000000000054 +S315E07C8AC00000000000000000000020000000000024 +S315E07C8AD000000000000000400000400000000000B4 +S315E07C8AE000000000004000000000000000000000E4 +S315E07C8AF000000000000000000000000000004000D4 +S315E07C8B000000000100000000000000000000000002 +S315E07C8B1000000000000000000000000000000000F3 +S315E07C8B2040000000000000000000000000000000A3 +S315E07C8B3000000000000000000000000000000000D3 +S315E07C8B400000000040400000000000000000000043 +S315E07C8B5000000000000000000000000000000000B3 +S315E07C8B6000000200000000000000004000000080E1 +S315E07C8B700000000000000000000000000000000093 +S315E07C8B800000000000000000000000000000000083 +S315E07C8B900000000000000000000000000000000073 +S315E07C8BA00000000000000000000000000000000063 +S315E07C8BB00000400000000000000000000000000013 +S315E07C8BC000000000000000000000000080000000C3 +S315E07C8BD00000000000000000000000000000000033 +S315E07C8BE00020000080000000004000000000000043 +S315E07C8BF000000000000000008000007E15000040C0 +S315E07C8C0000000000000000000000400000000000C2 +S315E07C8C100000000000000000000000800000000072 +S315E07C8C2000000000000000000000000000000000E2 +S315E07C8C3000000000000000000000000000000000D2 +S315E07C8C400000000040000000000000000000000082 +S315E07C8C500000400000000000000000000000000072 +S315E07C8C6000000000000000000000000000000000A2 +S315E07C8C700000000000000000000000000000000092 +S315E07C8C800000000000000000000000000000000082 +S315E07C8C900000000000000000400000000000000032 +S315E07C8CA04000000000000000000000000000000022 +S315E07C8CB00000000000000000000000000040000012 +S315E07C8CC00000000000000000000000000000000042 +S315E07C8CD00000000000000000000000000000000032 +S315E07C8CE000000000000000000080000000000000A2 +S315E07C8CF00000000000000000000000000000000012 +S315E07C8D000000000000000000000000000000000001 +S315E07C8D100000000000000000000000800000000071 +S315E07C8D2000000000000000000000000000000000E1 +S315E07C8D3000000000000000000000000000000000D1 +S315E07C8D400000000080000000000000000000000041 +S315E07C8D500000000000000000000000008000000031 +S315E07C8D6000000000000000000000000000000000A1 +S315E07C8D700000000042BD0000000000400000400012 +S315E07C8D800000000000000000000000000000000081 +S315E07C8D900000000000000000200000000000000051 +S315E07C8DA000400000000080000000000000000000A1 +S315E07C8DB00000000000000000000000000000000051 +S315E07C8DC00000000000000000000040008000000081 +S315E07C8DD00000000000000000000000000000000031 +S315E07C8DE00000000000000000000000000000000021 +S315E07C8DF040000000000000000000000000000000D1 +S315E07C8E000000000000000000000000000000000000 +S315E07C8E1000000000000000000000000000000000F0 +S315E07C8E2000000000000000000000000000000000E0 +S315E07C8E3000000000000000000000000000000000D0 +S315E07C8E400040000000000000000000000000000080 +S315E07C8E5000000000000000000000000000000000B0 +S315E07C8E600000000040000000000000000000000060 +S315E07C8E700000000000000000000000000000000090 +S315E07C8E800000000000000000000000000000000080 +S315E07C8E900000000000000000000000000000000070 +S315E07C8EA00000004000000000000000000000000020 +S315E07C8EB00000000000000000000000000000000050 +S315E07C8EC00000000000000000000000000000000040 +S315E07C8ED00000000000000000000000000000000030 +S315E07C8EE0000000000000000000000000401FBC0005 +S315E07C8EF00000000000000000000000000000000010 +S315E07C8F00000000000000000000000000204000009F +S315E07C8F1000000000000000000000000000000000EF +S315E07C8F20000080000000000000000000000000005F +S315E07C8F3000000000200000000000000000000000AF +S315E07C8F4000000000000000000000000000000000BF +S315E07C8F50004000000000000000000000000000006F +S315E07C8F60000000000000000000000000000001009E +S315E07C8F70000000000000000000000000000000008F +S315E07C8F80000000000000000000000000000000007F +S315E07C8F90000000000000000000000000000000006F +S315E07C8FA0000000000000000000000000000000005F +S315E07C8FB0400000000000000000000000000000000F +S315E07C8FC0000000000000000000000000020000003D +S315E07C8FD000000000000040000000000000000000EF +S315E07C8FE0000000000000000000000000000000001F +S315E07C8FF040000000000000000000000000000000CF +S315E07C900000000000000000000000000000000000FE +S315E07C9010000000000000008000000000000000006E +S315E07C902000000000000000000000000000000000DE +S315E07C903000000000000000000000000000000000CE +S315E07C9040000000000000000000000000200000009E +S315E07C9050000000004000000000000000000000006E +S315E07C9060000080000000C0D100000000000000008D +S315E07C9070000000000000000000000000000000008E +S315E07C9080000000000000000000000000000000007E +S315E07C9090000000000000000000000000000000006E +S315E07C90A0000000000000000000000000000000005E +S315E07C90B0000000000000000000000000000000004E +S315E07C90C0000000000000000000000000000000003E +S315E07C90D0000000000000000000000000000000002E +S315E07C90E0000000000000000000000000000000001E +S315E07C90F0000000000000000000000000000000000E +S315E07C910000000000000000000000000000000000FD +S315E07C911000000000000000000000000000000000ED +S315E07C912000000000000000000000000000000000DD +S315E07C913000000000000000000000000000000000CD +S315E07C914000000000000000000000000000000000BD +S315E07C915000000000000000000000000000000000AD +S315E07C9160000000000000000000000000000000009D +S315E07C9170000000000000000000000000000000008D +S315E07C9180000000000000000000000000000000007D +S315E07C9190000000000000000000000000000000006D +S315E07C91A0000000000000000000000000000000005D +S315E07C91B0000000000000000000000000000000004D +S315E07C91C0000000000000000000000000000000003D +S315E07C91D00000000000000000000000000000003EEF +S315E07C91E049000000000000000000000000000000D4 +S315E07C91F0000000000000000000000000000000000D +S315E07C920000000000000000000000000000000000FC +S315E07C921000000000000000000000000000000000EC +S315E07C922000000000000000000000000000000000DC +S315E07C923000000000000000000000000000000000CC +S315E07C924000000000000000000000000000000000BC +S315E07C925000000000000000000000000000000000AC +S315E07C9260000000000000000000000000000000009C +S315E07C9270000000000000000000000000000000008C +S315E07C9280000000000000000000000000000000007C +S315E07C9290000000000000000000000000000000006C +S315E07C92A0000000000000000000000000000000005C +S315E07C92B0000000000000000000000000000000004C +S315E07C92C0000000000000000000000000000000003C +S315E07C92D0000000000000000000000000000000002C +S315E07C92E0000000000000000000000000000000001C +S315E07C92F0000000000000000000000000000000000C +S315E07C930000000000000000000000000000000000FB +S315E07C931000000000000000000000000000000000EB +S315E07C932000000000000000000000000000000000DB +S315E07C933000000000000000000000000000000000CB +S315E07C934000000000000000000000000000000000BB +S315E07C935000000000000000003E4900000000000024 +S315E07C9360000000000000000000000000000000009B +S315E07C9370000000000000000000000000000000008B +S315E07C9380000000000000000000000000000000007B +S315E07C9390000000000000000000000000000000006B +S315E07C93A0000000000000000000000000000000005B +S315E07C93B0000000000000000000000000000000004B +S315E07C93C0000000000000000000000000000000003B +S315E07C93D0000000000000000000000000000000002B +S315E07C93E0000000000000000000000000000000001B +S315E07C93F0000000000000000000000000000000000B +S315E07C940000000000000000000000000000000000FA +S315E07C941000000000000000000000000000000000EA +S315E07C942000000000000000000000000000000000DA +S315E07C943000000000000000000000000000000000CA +S315E07C944000000000000000000000000000000000BA +S315E07C945000000000000000000000000000000000AA +S315E07C9460000000000000000000000000000000009A +S315E07C9470000000000000000000000000000000008A +S315E07C9480000000000000000000000000000000007A +S315E07C9490000000000000000000000000000000006A +S315E07C94A0000000000000000000000000000000005A +S315E07C94B0000000000000000000000000000000004A +S315E07C94C0000000000000000000000000000000003A +S315E07C94D0003E4900000000000000000000000000A3 +S315E07C94E0000000000000000000000000000000001A +S315E07C94F0000000000000000000000000000000000A +S315E07C950000000000000000000000000000000000F9 +S315E07C951000000000000000000000000000000000E9 +S315E07C952000000000000000000000000000000000D9 +S315E07C953000000000000000000000000000000000C9 +S315E07C954000000000000000000000000000000000B9 +S315E07C955000000000000000000000000000000000A9 +S315E07C95600000000000000000000000000000000099 +S315E07C95700000000000000000000000000000000089 +S315E07C95800000000000000000000000000000000079 +S315E07C95900000000000000000000000000000000069 +S315E07C95A00000000000000000000000000000000059 +S315E07C95B00000000000000000000000000000000049 +S315E07C95C00000000000000000000000000000000039 +S315E07C95D00000000000000000000000000000000029 +S315E07C95E00000000000000000000000000000000019 +S315E07C95F00000000000000000000000000000000009 +S315E07C960000000000000000000000000000000000F8 +S315E07C961000000000000000000000000000000000E8 +S315E07C962000000000000000000000000000000000D8 +S315E07C963000000000000000000000000000000000C8 +S315E07C9640000000000000000000003E490000000031 +S315E07C965000000000000000000000000000000000A8 +S315E07C96600000000000000000000000000000000098 +S315E07C96700000000000000000000000000000000088 +S315E07C96800000000000000000000000000000000078 +S315E07C96900000000000000000000000000000000068 +S315E07C96A00000000000000000000000000000000058 +S315E07C96B00000000000000000000000000000000048 +S315E07C96C00000000000000000000000000000000038 +S315E07C96D00000000000000000000000000000000028 +S315E07C96E00000000000000000000000000000000018 +S315E07C96F00000000000000000000000000000000008 +S315E07C970000000000000000000000000000000000F7 +S315E07C971000000000000000000000000000000000E7 +S315E07C972000000000000000000000000000000000D7 +S315E07C973000000000000000000000000000000000C7 +S315E07C974000000000000000000000000000000000B7 +S315E07C975000000000000000000000000000000000A7 +S315E07C97600000000000000000000000000000000097 +S315E07C97700000000000000000000000000000000087 +S315E07C97800000000000000000000000000000000077 +S315E07C97900000000000000000000000000000000067 +S315E07C97A00000000000000000000000000000000057 +S315E07C97B00000000000000000000000000000000047 +S315E07C97C00000003E490000000000000000000000B0 +S315E07C97D00000000000000000000000000000000027 +S315E07C97E00000000000000000000000000000000017 +S315E07C97F00000000000000000000000000000000007 +S315E07C980000000000000000000000000000000000F6 +S315E07C981000000000000000000000000000000000E6 +S315E07C982000000000000000000000000000000000D6 +S315E07C983000000000000000000000000000000000C6 +S315E07C984000000000000000000000000000000000B6 +S315E07C985000000000000000000000000000000000A6 +S315E07C98600000000000000000000000000000000096 +S315E07C98700000000000000000000000000000000086 +S315E07C98800000000000000000000000000000000076 +S315E07C98900000000000000000000000000000000066 +S315E07C98A00000000000000000000000000000000056 +S315E07C98B00000000000000000000000000000000046 +S315E07C98C00000000000000000000000000000000036 +S315E07C98D00000000000000000000000000000000026 +S315E07C98E00000000000000000000000000000000016 +S315E07C98F00000000000000000000000000000000006 +S315E07C990000000000000000000000000000000000F5 +S315E07C991000000000000000000000000000000000E5 +S315E07C992000000000000000000000000000000000D5 +S315E07C99300000000000000000000000003E4900003E +S315E07C994000000000000000000000000000000000B5 +S315E07C995000000000000000000000000000000000A5 +S315E07C99600000000000000000000000000000000095 +S315E07C99700000000000000000000000000000000085 +S315E07C99800000000000000000000000000000000075 +S315E07C99900000000000000000000000000000000065 +S315E07C99A00000000000000000000000000000000055 +S315E07C99B00000000000000000000000000000000045 +S315E07C99C00000000000000000000000000000000035 +S315E07C99D00000000000000000000000000000000025 +S315E07C99E00000000000000000000000000000000015 +S315E07C99F00000000000000000000000000000000005 +S315E07C9A0000000000000000000000000000000000F4 +S315E07C9A1000000000000000000000000000000000E4 +S315E07C9A2000000000000000000000000000000000D4 +S315E07C9A3000000000000000000000000000000000C4 +S315E07C9A4000000000000000000000000000000000B4 +S315E07C9A5000000000000000000000000000000000A4 +S315E07C9A600000000000000000000000000000000094 +S315E07C9A700000000000000000000000000000000084 +S315E07C9A800000000000000000000000000000000074 +S315E07C9A900000000000000000000000000000000064 +S315E07C9AA00000000000000000000000000000000054 +S315E07C9AB000000000003E49000000000000000000BD +S315E07C9AC00000000000000000000000000000000034 +S315E07C9AD00000000000000000000000000000000024 +S315E07C9AE00000000000000000000000000000000014 +S315E07C9AF00000000000000000000000000000000004 +S315E07C9B0000000000000000000000000000000000F3 +S315E07C9B1000000000000000000000000000000000E3 +S315E07C9B2000000000000000000000000000000000D3 +S315E07C9B3000000000000000000000000000000000C3 +S315E07C9B4000000000000000000000000000000000B3 +S315E07C9B5000000000000000000000000000000000A3 +S315E07C9B600000000000000000000000000000000093 +S315E07C9B700000000000000000000000000000000083 +S315E07C9B800000000000000000000000000000000073 +S315E07C9B900000000000000000000000000000000063 +S315E07C9BA00000000000000000000000000000000053 +S315E07C9BB00000000000000000000000000000000043 +S315E07C9BC00000000000000000000000000000000033 +S315E07C9BD00000000000000000000000000000000023 +S315E07C9BE00000000000000000000000000000000013 +S315E07C9BF00000000000000000000000000000000003 +S315E07C9C0000000000000000000000000000000000F2 +S315E07C9C1000000000000000000000000000000000E2 +S315E07C9C2000000000000000000000000000003E494B +S315E07C9C3000000000000000000000000000000000C2 +S315E07C9C4000000000000000000000000000000000B2 +S315E07C9C5000000000000000000000000000000000A2 +S315E07C9C600000000000000000000000000000000092 +S315E07C9C700000000000000000000000000000000082 +S315E07C9C800000000000000000000000000000000072 +S315E07C9C900000000000000000000000000000000062 +S315E07C9CA00000000000000000000000000000000052 +S315E07C9CB00000000000000000000000000000000042 +S315E07C9CC00000000000000000000000000000000032 +S315E07C9CD00000000000000000000000000000000022 +S315E07C9CE00000000000000000000000000000000012 +S315E07C9CF00000000000000000000000000000000002 +S315E07C9D0000000000000000000000000000000000F1 +S315E07C9D1000000000000000000000000000000000E1 +S315E07C9D2000000000000000000000000000000000D1 +S315E07C9D3000000000000000000000000000000000C1 +S315E07C9D4000000000000000000000000000000000B1 +S315E07C9D5000000000000000000000000000000000A1 +S315E07C9D600000000000000000000000000000000091 +S315E07C9D700000000000000000000000000000000081 +S315E07C9D800000000000000000000000000000000071 +S315E07C9D900000000000000000000000000000000061 +S315E07C9DA0000000000000003E4900000000000000CA +S315E07C9DB0000000040020000000000000000000001D +S315E07C9DC000000000000000000001000800400000E8 +S315E07C9DD00000000000000000000000000000000021 +S315E07C9DE0000200100080000000000000000000007F +S315E07C9DF000000000000000000004002000000000DD +S315E07C9E0000000000000000000000000000000001EF +S315E07C9E100008004000000000000000000000000098 +S315E07C9E20000000000000000200100080000000003E +S315E07C9E3000000000000000000000000000000004BC +S315E07C9E400020000000000000000000000000000090 +S315E07C9E500000000000010008004000000000000057 +S315E07C9E60000000000000000000000000000200107E +S315E07C9E700080000000000000000000000000000000 +S315E07C9E80000000000004002000000000000000004C +S315E07C9E900000000000000000000000010008004017 +S315E07C9EA00000000000000000000000000000000050 +S315E07C9EB000000002001000800000000000000000AE +S315E07C9EC0000000000000000000000004002000000C +S315E07C9ED00000000000000000000000000000000020 +S315E07C9EE000010008004000000000000000000000C7 +S315E07C9EF0000000000000000000020010008000006E +S315E07C9F0000000000000000000000000000000000EF +S315E07C9F1000040020000000000000000000000000BB +S315E07C9F20B18100000000000000000000000000009D +S315E07C9F3000000000000000000000000000000000BF +S315E07C9F4000000000000000000000000000000000AF +S315E07C9F50000000000000000000000000000000009F +S315E07C9F60000000000000000000000000000000008F +S315E07C9F70000000000000000000000000000000007F +S315E07C9F80000000000000000000000000000000006F +S315E07C9F90000000000000000000000000000000005F +S315E07C9FA0000000000000000000000000000000004F +S315E07C9FB0000000000000000000000000000000003F +S315E07C9FC0000000000000000000000000000000002F +S315E07C9FD0000000000000000000000000000000001F +S315E07C9FE0000000000000000000000000000000000F +S315E07C9FF000000000000000000000000000000000FF +S315E07CA00000000000000000000000000000000000EE +S315E07CA01000000000000000000000000000000000DE +S315E07CA02000000000000000000000000000000000CE +S315E07CA03000000000000000000000000000000000BE +S315E07CA04000000000000000000000000000000000AE +S315E07CA050000000000000000000000000000000009E +S315E07CA060000000000000000000000000000000008E +S315E07CA070000000000000000000000000000000007E +S315E07CA080000000000000000000000000000000006E +S315E07CA0900000000000000000003E490000000000D7 +S315E07CA0A0000000000000000000000000000000004E +S315E07CA0B0000000000000000000000000000000003E +S315E07CA0C0000000000000000000000000000000002E +S315E07CA0D0000000000000000000000000000000001E +S315E07CA0E0000000000000000000000000000000000E +S315E07CA0F000000000000000000000000000000000FE +S315E07CA10000000000000000000000000000000000ED +S315E07CA11000000000000000000000000000000000DD +S315E07CA12000000000000000000000000000000000CD +S315E07CA13000000000000000000000000000000000BD +S315E07CA14000000000000000000000000000000000AD +S315E07CA150000000000000000000000000000000009D +S315E07CA160000000000000000000000000000000008D +S315E07CA170000000000000000000000000000000007D +S315E07CA180000000000000000000000000000000006D +S315E07CA190000000000000000000000000000000005D +S315E07CA1A0000000000000000000000000000000004D +S315E07CA1B0000000000000000000000000000000003D +S315E07CA1C0000000000000000000000000000000002D +S315E07CA1D0000000000000000000000000000000001D +S315E07CA1E0000000000000000000000000000000000D +S315E07CA1F000000000000000000000000000000000FD +S315E07CA20000000000000000000000000000000000EC +S315E07CA21000003E4900000000000000000000000055 +S315E07CA22000000000000000000000000000000000CC +S315E07CA23000000000000000000000000000000000BC +S315E07CA24000000000000000000000000000000000AC +S315E07CA250000000000000000000000000000000009C +S315E07CA260000000000000000000000000000000008C +S315E07CA270000000000000000000000000000000007C +S315E07CA280000000000000000000000000000000006C +S315E07CA290000000000000000000000000000000005C +S315E07CA2A0000000000000000000000000000000004C +S315E07CA2B0000000000000000000000000000000003C +S315E07CA2C0000000000000000000000000000000002C +S315E07CA2D0000000000000000000000000000000001C +S315E07CA2E0000000000000000000000000000000000C +S315E07CA2F000000000000000000000000000000000FC +S315E07CA30000000000000000000000000000000000EB +S315E07CA31000000000000000000000000000000000DB +S315E07CA32000000000000000000000000000000000CB +S315E07CA33000000000000000000000000000000000BB +S315E07CA34000000000000000000000000000000000AB +S315E07CA350000000000000000000000000000000009B +S315E07CA360000000000000000000000000000000008B +S315E07CA370000000000000000000000000000000007B +S315E07CA38000000000000000000000003E49000000E4 +S315E07CA390000000000000000000000000000000005B +S315E07CA3A0000000000000000000000000000000004B +S315E07CA3B0000000000000000000000000000000003B +S315E07CA3C0000000000000000000000000000000002B +S315E07CA3D0000000000000000000000000000000001B +S315E07CA3E0000000000000000000000000000000000B +S315E07CA3F000000000000000000000000000000000FB +S315E07CA40000000000000000000000000000000000EA +S315E07CA41000000000000000000000000000000000DA +S315E07CA42000000000000000000000000000000000CA +S315E07CA43000000000000000000000000000000000BA +S315E07CA44000000000000000000000000000000000AA +S315E07CA450000000000000000000000000000000009A +S315E07CA460000000000000000000000000000000008A +S315E07CA470000000000000000000000000000000007A +S315E07CA480000000000000000000000000000000006A +S315E07CA490000000000000000000000000000000005A +S315E07CA4A0000000000000000000000000000000004A +S315E07CA4B0000000000000000000000000000000003A +S315E07CA4C0000000000000000000000000000000002A +S315E07CA4D0000000000000000000000000000000001A +S315E07CA4E0000000000000000000000000000000000A +S315E07CA4F000000000000000000000000000000000FA +S315E07CA500000000003E490000000000000000000062 +S315E07CA51000000000000000000000000000000000D9 +S315E07CA52000000000000000000000000000000000C9 +S315E07CA53000000000000000000000010000000000B8 +S315E07CA54000000000000000000000000000000000A9 +S315E07CA55000000000000000400000000000008000D9 +S315E07CA5600000000000000000000000040000000085 +S315E07CA57000100080000000000000000400000000E5 +S315E07CA5800000000000000000000000000000000069 +S315E07CA5900000000000000000000000004000000019 +S315E07CA5A00000000000000000000000000000000049 +S315E07CA5B00000000000000000000000000000000039 +S315E07CA5C000000000008000000000000000000000A9 +S315E07CA5D00000000000000000000000000000000019 +S315E07CA5E00000000000000000000000000000000009 +S315E07CA5F00000000000000080000000000000000079 +S315E07CA60020000000000000000000000000000000C8 +S315E07CA61000000000200000000000000000000000B8 +S315E07CA62000000000000000100000000000000000B8 +S315E07CA63000000000000000000000000000000000B8 +S315E07CA64000000000000000000000010000000000A7 +S315E07CA6500000000000000000000000000800000090 +S315E07CA6600000000000080000000000000000000080 +S315E07CA67000000000000000000000000000811200E5 +S315E07CA6800000000000000000000000000000000068 +S315E07CA69000000000000000000000002000000040F8 +S315E07CA6A00000000000000000000040000000000008 +S315E07CA6B00000408000000000000000000000000078 +S315E07CA6C000000040000000000000000000000000E8 +S315E07CA6D00000000040008000000000000040000018 +S315E07CA6E000400000000000000000000000000000C8 +S315E07CA6F000000000000000000000000000000000F8 +S315E07CA70000000000000000000000000000000000E7 +S315E07CA7100080000000000000000000000000000057 +S315E07CA72000000000000000000000000000000000C7 +S315E07CA73000000000000000000000000000000000B7 +S315E07CA7400000000000000000000000000000400067 +S315E07CA7500000000000000000000000000000000097 +S315E07CA7600000000000000000000000000000000087 +S315E07CA7700000000000000000000000000000000077 +S315E07CA7800000000000000000000000000000000067 +S315E07CA7900000000000000000000000000000000057 +S315E07CA7A00000000000000000000000000000000047 +S315E07CA7B00000000000000000000000000000000037 +S315E07CA7C000000000000000800000000000000000A7 +S315E07CA7D00000000000000000000000000000000017 +S315E07CA7E000000800000000000000000000000000FF +S315E07CA7F0000080000000CB5C000000000000000050 +S315E07CA80000000000000000000000000000000000E6 +S315E07CA8100000000060000000000000000100000075 +S315E07CA82000000000000000000000000000000000C6 +S315E07CA8300000000000000000800000000000000036 +S315E07CA84000000000000000040000000000000000A2 +S315E07CA8500000000000000000004000000000000056 +S315E07CA8600000000000000000000000000000000086 +S315E07CA8700000000000000000000000000000000076 +S315E07CA8800000000000000000000000000000000066 +S315E07CA8900000000000000000000000000000000056 +S315E07CA8A00000000000000000000000000000000046 +S315E07CA8B00000000000000000000000000000000036 +S315E07CA8C00000000000000000000000000000000026 +S315E07CA8D000000000000000000000200000000000F6 +S315E07CA8E00000000000000000008000000000000086 +S315E07CA8F000000000000000000000000000000000F6 +S315E07CA90000000010000000000000000000000000D5 +S315E07CA91000000000000000000000000000000000D5 +S315E07CA9200000000040000000000000000000000085 +S315E07CA93000000000010008000000000000000000AC +S315E07CA94000000000000000000000000000000000A5 +S315E07CA950000000000000000000000008000000008D +S315E07CA96000000000000000000000000000000099EC +S315E07CA970430000000000000000000000000000042E +S315E07CA9800000000000000000000000000000000065 +S315E07CA99000400000000000000000000040000000D5 +S315E07CA9A00000000040800000800000000000000005 +S315E07CA9B000000000004000000000000000000000F5 +S315E07CA9C00000000000004000800000000000400025 +S315E07CA9D000000000000000000000000000000040D5 +S315E07CA9E00000000000000000000000000000000005 +S315E07CA9F000000000001000800000008000000000E5 +S315E07CAA000000008000000000000000040000000060 +S315E07CAA1000000000000000000000000000000000D4 +S315E07CAA204000000000000000000000000000000084 +S315E07CAA300000000000000000000000000080000034 +S315E07CAA400040000000000000000000000000000064 +S315E07CAA500000000000000000000000000000000094 +S315E07CAA600000000000000000000000000000000084 +S315E07CAA700000000000000000000000000000000074 +S315E07CAA8000000080000000000000000000000000E4 +S315E07CAA900000000020000000000000000000000034 +S315E07CAAA00000000000000000000000000000000044 +S315E07CAAB000000000000000008000000000000000B4 +S315E07CAAC00000000000000000000000000000000024 +S315E07CAAD00000000000000000000000000000000014 +S315E07CAAE00000000000800000F62A00000000C000A4 +S315E07CAAF00080000000400000800000000000800034 +S315E07CAB0000000000008040000040000000000000E3 +S315E07CAB100000000000000000000000000000004093 +S315E07CAB200000000000000040000000000000400043 +S315E07CAB300000000000000000004000000000000073 +S315E07CAB400000004000000000000000000000000063 +S315E07CAB500000000000000000008000000000000013 +S315E07CAB600000000000000000000000000000000083 +S315E07CAB700000000000000000000000000000000073 +S315E07CAB800000000000000000000000000000000063 +S315E07CAB900000000000000000000000000000000053 +S315E07CABA00000000000000000000000000000000043 +S315E07CABB00000000000000000000000000000000033 +S315E07CABC00000000000000000000000000000000023 +S315E07CABD00000000000000000000000000000000013 +S315E07CABE000000000040000000000000000000000FF +S315E07CABF000000000000000000000000000000000F3 +S315E07CAC0000000000000000000000000000000000E2 +S315E07CAC100000000000000000400000000000000092 +S315E07CAC2000000000000000000000000000000000C2 +S315E07CAC3000000000000000000000000000000000B2 +S315E07CAC400020000000000000000000000000000082 +S315E07CAC500000000000000000000000000000000092 +S315E07CAC600042000000808000004000000000000000 +S315E07CAC7000000000000000008000004000000000B2 +S315E07CAC800040000000000000004000008000004022 +S315E07CAC9000004000000000400000000000000000D2 +S315E07CACA00000804000000000000040000000000042 +S315E07CACB00000000000000000000000000000000032 +S315E07CACC000000000000040000000000000000000E2 +S315E07CACD00000000000000000000000000000000012 +S315E07CACE00000000040004000000000000000000082 +S315E07CACF000000000000000000000000000000000F2 +S315E07CAD0000000000000000000000000000000000E1 +S315E07CAD1000000000000000000000000000000000D1 +S315E07CAD2000000000000000000000000000000000C1 +S315E07CAD3000000000000000000000000000000000B1 +S315E07CAD4000000000000000000000000000000000A1 +S315E07CAD500000000000000000000000000000000091 +S315E07CAD600000000000000000000000000000000081 +S315E07CAD700000000000000000000000000000000071 +S315E07CAD800000000000000000000000000000000061 +S315E07CAD900000000000000000000000000000000051 +S315E07CADA00000000000000000000000000000000041 +S315E07CADB040000000000000000000000000000000F1 +S315E07CADC00000000000000000000000000000000021 +S315E07CADD0000000000000000101005C9F0000000014 +S315E07CADE04000008000000000408000000000000081 +S315E07CADF08080000000000040004000004000000031 +S315E07CAE000000000000000000400000400000000060 +S315E07CAE104000400000000000000000C00000000090 +S315E07CAE2000000000000000000000000000000000C0 +S315E07CAE300000000000004000000000000000000070 +S315E07CAE4000000000000000000040008000000000E0 +S315E07CAE500000000000000000000000000000000090 +S315E07CAE604000000000000000000000000000000040 +S315E07CAE700000000000000000000000000000000070 +S315E07CAE800000000000000000000000000000000060 +S315E07CAE900000000000000000000000000000000050 +S315E07CAEA00000000000000000000000000000000040 +S315E07CAEB00000000000000000000000000000000030 +S315E07CAEC00000000000000000000000000000000020 +S315E07CAED0000000000004000000000000000000000C +S315E07CAEE00000000000000000000000000000000000 +S315E07CAEF000000000000000000000000000000000F0 +S315E07CAF00000000000000000000400000000000009F +S315E07CAF1000000000000000000000000000000000CF +S315E07CAF20000000000000000000004000000000007F +S315E07CAF30000000200000000000000000000000008F +S315E07CAF40000000000000000000000000000000009F +S315E07CAF50000000B4A80000000000004000004000B3 +S315E07CAF6000000000000000400000400000000000FF +S315E07CAF70000000000000000000000000200000004F +S315E07CAF8000008000000000000000000000000000DF +S315E07CAF90000040000000004000000000008000004F +S315E07CAFA0000000000000000040000080000000007F +S315E07CAFB0000000000000000000000000000000002F +S315E07CAFC0000000000000000000000000000000001F +S315E07CAFD0000000000000000000000000000000000F +S315E07CAFE0000000000000000000800000000000007F +S315E07CAFF000000000000000000000000000000000EF +S315E07CB00000000000000000000000000000000000DE +S315E07CB01000000000000000000000000000000000CE +S315E07CB02000000000000000000000000000000000BE +S315E07CB03000000000000000000000000000000000AE +S315E07CB040000000000000000000000000000000009E +S315E07CB050000000000000000000000000000000008E +S315E07CB060000000000000000000000000000000007E +S315E07CB070000000000000000000000000000000006E +S315E07CB080000000000000000000000000000000005E +S315E07CB090000000000000000000000000000000004E +S315E07CB0A000000000008000000000000000000000BE +S315E07CB0B0000000000000000000000000000000002E +S315E07CB0C000000000000000000000000047CD00000A +S315E07CB0D0000000000000800000000000000000008E +S315E07CB0E0400000400000000000000000000000007E +S315E07CB0F000000000000000000000008000800000EE +S315E07CB100000000000000000000000000400000009D +S315E07CB110000000000000400000000000000000008D +S315E07CB120000000800000000000000000000000003D +S315E07CB13000000000000000000000000000000000AD +S315E07CB140000000400000000000000000000000005D +S315E07CB150000000000000000000000000000000008D +S315E07CB16000800000000000000000000000000000FD +S315E07CB170000000000000000000000000000000006D +S315E07CB180000000000000000000000000000000005D +S315E07CB190000000000000000000000000000000004D +S315E07CB1A0000000000000000000000000000000003D +S315E07CB1B0000000000000000000000000000000002D +S315E07CB1C0000000000000000000000000000000001D +S315E07CB1D0000000000000000000000000000000000D +S315E07CB1E000000000000000000000000000000000FD +S315E07CB1F000000000000000000000000000000000ED +S315E07CB20000000000000000000000000000000000DC +S315E07CB21000000000000000000000000000000000CC +S315E07CB22000000000000000000000000000000000BC +S315E07CB23000000000000000000000000000000000AC +S315E07CB2400000000000C4EF000000000000000000E9 +S315E07CB250000000000000000000000000000000008C +S315E07CB260000000000000000000000000000000007C +S315E07CB270000000000000000000000000000000006C +S315E07CB280000000400000000000000000000000809C +S315E07CB290000000000000000000000040000000808C +S315E07CB2A000000000000000000000400000000000FC +S315E07CB2B0000000000000000000000000000000002C +S315E07CB2C0000000000080000000000000000000009C +S315E07CB2D0000000000000000000000000000000000C +S315E07CB2E000000000000000000000000000000000FC +S315E07CB2F000000000000000000000000000000000EC +S315E07CB30000000000000000000000000000000000DB +S315E07CB31000000000000000000000000000000000CB +S315E07CB32000000000000000000000000000000000BB +S315E07CB33000000000000000000000000000000000AB +S315E07CB340000000000000000000000000000000009B +S315E07CB350000000000000000000000000000000008B +S315E07CB360000000000000000000000000000000007B +S315E07CB370000000000000000000000000000000006B +S315E07CB380000000000000000000000000000000005B +S315E07CB39000000000000000800000000000000000CB +S315E07CB3A0000000000000000000000000000000003B +S315E07CB3B00000000000000000000000000000371ED6 +S315E07CB3C0000000000000400000400000000000009B +S315E07CB3D000000000000000000000400000000000CB +S315E07CB3E000000000000000002000000000000000DB +S315E07CB3F000004000000000000000000000000000AB +S315E07CB400000040000000000000004000000000005A +S315E07CB41000000000000000000000000000000000CA +S315E07CB42000000000000000000000000000000000BA +S315E07CB43000000000000000000000000000000000AA +S315E07CB440008000000000000000000000000000001A +S315E07CB450000000000000000000000000000000008A +S315E07CB460000000000000000000000000000000007A +S315E07CB470000000000000000000000000000000006A +S315E07CB480000000000000000000000000000000005A +S315E07CB490000000000000000000000000000000004A +S315E07CB4A0000000000000000000000000000000003A +S315E07CB4B0000000000000000000000000000000002A +S315E07CB4C0000000000000000000000000000000001A +S315E07CB4D0000000000000000000000000000000000A +S315E07CB4E000000000000000000000000000000000FA +S315E07CB4F000000000000000000000000000000000EA +S315E07CB50000000000000000000000000000000000D9 +S315E07CB51000000000000000000000000000000000C9 +S315E07CB52000000000000000000000000000000000B9 +S315E07CB5300000000000000052AD008000000000002A +S315E07CB54000000040004040000000000000000000D9 +S315E07CB5500000000000004000400000000000000009 +S315E07CB5600000000000000000000000000000000079 +S315E07CB5700000000000400000000000000000000029 +S315E07CB5800000000000000000000000000000000059 +S315E07CB5900000000000000000000000000000000049 +S315E07CB5A00000000000000000000000000000000039 +S315E07CB5B00000000000000000000000000000000029 +S315E07CB5C00000000080000000000000000000000099 +S315E07CB5D00000000000000000000000000000000009 +S315E07CB5E000000000000000000000000000000000F9 +S315E07CB5F000000000000000000000000000000000E9 +S315E07CB60000000000000000000000000000000000D8 +S315E07CB61000000000000000000000000000000000C8 +S315E07CB62000000000000000000000000000000000B8 +S315E07CB63000000000000000000000000000000000A8 +S315E07CB6400000000000000000000000000000000098 +S315E07CB6500000000000000000000000000000000088 +S315E07CB6600000000000000000000000000000000078 +S315E07CB6700000000000000000000000000000000068 +S315E07CB6800000000000000000000000000000000058 +S315E07CB6900000000000000000000000000000000048 +S315E07CB6A00000000000000000000000000000000038 +S315E07CB6B0948A0000004000000000000000000000CA +S315E07CB6C00000000000400000000040000040000058 +S315E07CB6D00000000040000000000000000040000088 +S315E07CB6E04000000000000000000000400000004038 +S315E07CB6F000000000000000004000000000000000A8 +S315E07CB70000000000000000000000000000000000D7 +S315E07CB7100000000080000000000000000000000047 +S315E07CB72000000000000000000000000000000000B7 +S315E07CB73000000000000000000000000000000000A7 +S315E07CB7400000000000000000000000000000000097 +S315E07CB7500000000000000000000000000000000087 +S315E07CB7600000000000000000000000000000000077 +S315E07CB7700000000000000000000000000000000067 +S315E07CB7800000000000000000000000000000000057 +S315E07CB7900000000000000000000000000000000047 +S315E07CB7A00000000000000000000000000000000037 +S315E07CB7B00000000000000000000000000000000027 +S315E07CB7C00000000000000000000000000000000017 +S315E07CB7D00000000000000000000000000000000007 +S315E07CB7E000000000000000000000000000000000F7 +S315E07CB7F000000000000000000000000000000000E7 +S315E07CB80000000000000000000000000000000000D6 +S315E07CB81000000000000000000000000000000000C6 +S315E07CB820000000000000000000AF7F000000000088 +S315E07CB8300000000000000000400000400000000026 +S315E07CB8400000000000000000004000000000000056 +S315E07CB8500000000000400000000000000000000046 +S315E07CB8600000000000000000000000000000000076 +S315E07CB8700000000000000000000000000000000066 +S315E07CB8800000000000000000000000000000000056 +S315E07CB8900000000000000000000000000000000046 +S315E07CB8A00000000000000000000000000000000036 +S315E07CB8B00000000000000000000000000000000026 +S315E07CB8C00000000000000000000000000000000016 +S315E07CB8D00000000000000000000000000000000006 +S315E07CB8E000000000000000000000000000000000F6 +S315E07CB8F000000000000000000000000000000000E6 +S315E07CB90000000000000000000000000000000000D5 +S315E07CB91000000000000000000000000000000000C5 +S315E07CB92000000000000000000000000000000000B5 +S315E07CB93000000000000000000000000000000000A5 +S315E07CB9400000000000000000000000000000000095 +S315E07CB9500000000000000000000000000000000085 +S315E07CB9600000000000000000000000000000000075 +S315E07CB9700000000000000000000000000000000065 +S315E07CB9800000000000000000000000000000000055 +S315E07CB9900000000000000000000000000000000144 +S315E07CB9A000007ADD0000008000000040000000001E +S315E07CB9B00000000000000000000000000000000025 +S315E07CB9C00000000000004000000000400000000095 +S315E07CB9D040000000000000000000000000000000C5 +S315E07CB9E04000000000400000000000000000000075 +S315E07CB9F000000000000000000000000000000000E5 +S315E07CBA000000000000000080000000000000000054 +S315E07CBA1000000000000000000000000000000000C4 +S315E07CBA2000000000000000000000000000000000B4 +S315E07CBA3000000000000000000000000000000000A4 +S315E07CBA400000000000000000000000000000000094 +S315E07CBA500000000000000000000000000000000084 +S315E07CBA600000000000000000000000000000000074 +S315E07CBA700000000000000000000000000000000064 +S315E07CBA800000000000000000000000000000000054 +S315E07CBA900000000000000000000000000000000044 +S315E07CBAA00000000000000000000000000000000034 +S315E07CBAB00000000000000000000000000000000024 +S315E07CBAC00000000000000000000000000000000014 +S315E07CBAD00000000000000000000000000000000004 +S315E07CBAE000000000000000000000000000000000F4 +S315E07CBAF000000000000000000000000000000000E4 +S315E07CBB0000000000000000000000000000000000D3 +S315E07CBB1000000000000000000000004D9300800063 +S315E07CBB2000000000000000000000000000000000B3 +S315E07CBB300000000000400000400000000000000023 +S315E07CBB400000000000000040008000400000400053 +S315E07CBB508000000000000000000000000000000003 +S315E07CBB600000000000000000000000000000000073 +S315E07CBB7000000000000000000000000000008000E3 +S315E07CBB800000000000000000000000000000000053 +S315E07CBB900000000000000000000000000000000043 +S315E07CBBA00000000000000000000000000000000033 +S315E07CBBB00000000000000000000000000000000023 +S315E07CBBC00000000000000000000000000000000013 +S315E07CBBD00000000000000000000000000000000003 +S315E07CBBE000000000000000000000000000000000F3 +S315E07CBBF000000000000000000000000000000000E3 +S315E07CBC0000000000000000000000000000000000D2 +S315E07CBC1000000000000000000000000000000000C2 +S315E07CBC2000000000000000000000000000000000B2 +S315E07CBC3000000000000000000000000000000000A2 +S315E07CBC400000000000000000000000000000000092 +S315E07CBC500000000000000000000000000000000082 +S315E07CBC600000000000000000000000000000000072 +S315E07CBC700000000000000000000000000000000062 +S315E07CBC800000000000000000000000000000000052 +S315E07CBC9000000100508200000000000040400000EF +S315E07CBCA000000000000000000000004000000000F2 +S315E07CBCB040000000000000000000000000000000E2 +S315E07CBCC00000000000004000000000400040000052 +S315E07CBCD00000000040004000000000400000000042 +S315E07CBCE000000000000000000000000000000000F2 +S315E07CBCF000000000000000000000000000000000E2 +S315E07CBD0000000000000000000000000000000000D1 +S315E07CBD100000000000000000000040000000000081 +S315E07CBD2000000000000000000000000000000000B1 +S315E07CBD3000000000000000000000000000000000A1 +S315E07CBD400000000000000000000000000000000091 +S315E07CBD500000000000000000000000000000000081 +S315E07CBD600000000000000000000000000000000071 +S315E07CBD700000000000000000000000000000000061 +S315E07CBD800000000000000000000000000000000051 +S315E07CBD900000000000000000000000000000000041 +S315E07CBDA00000000000000000000000000000000031 +S315E07CBDB00000000000000000000000000000000021 +S315E07CBDC00000000000000000000000000000000011 +S315E07CBDD00000000000000000000000000000000001 +S315E07CBDE000000000000000000000000000000000F1 +S315E07CBDF000000000000000000000000000000000E1 +S315E07CBE0000000000000000000000000000183E007A +S315E07CBE100080C000000000004000004000000040C0 +S315E07CBE2000808000000000000000000000000000B0 +S315E07CBE3000000000000000000000000000000000A0 +S315E07CBE400000000000000000400000000000000050 +S315E07CBE500000400000804000000000000000000080 +S315E07CBE6000000000000000000080000000000000F0 +S315E07CBE700000000000000000000000000000000060 +S315E07CBE800000000000000000000000000000000050 +S315E07CBE900000000000000000000000000000000040 +S315E07CBEA00000000000000000000000000000000030 +S315E07CBEB00000000000000000000000000000000020 +S315E07CBEC00000000000000000000000000000000010 +S315E07CBED00000000000000000000000000000000000 +S315E07CBEE000000000000000000000000000000000F0 +S315E07CBEF000000000000000000000000000000000E0 +S315E07CBF0000000000000000000000000000000000CF +S315E07CBF1000000000000000000000000000000000BF +S315E07CBF2000000000000000000000000000000000AF +S315E07CBF30000000000000000000000000000000009F +S315E07CBF40000000000000000000000000000000008F +S315E07CBF50000000000000000000000000000000007F +S315E07CBF60000000000000000000000000000000006F +S315E07CBF70000000000000000000000000000000005F +S315E07CBF8000000000000025B40000000080000000F6 +S315E07CBF90000000000000000000000000004080007F +S315E07CBFA000400000000000400000000000000000AF +S315E07CBFB000000000000000400000000000000000DF +S315E07CBFC000000000000000400000000000000000CF +S315E07CBFD0000000000000000000000000008000007F +S315E07CBFE0000000000080000000000000000000006F +S315E07CBFF000000000000000000000000000000000DF +S315E07CC00000000000000000000000000000000000CE +S315E07CC010000000000000800000000000000000003E +S315E07CC02000000000000000000000000000000000AE +S315E07CC030000000000000000000000000000000009E +S315E07CC040000000000000000000000000000000008E +S315E07CC050000000000000000000000000000000007E +S315E07CC060000000000000000000000000000000006E +S315E07CC070000000000000000000000000000000005E +S315E07CC080000000000000000000000000000000004E +S315E07CC090000000000000000000000000000000003E +S315E07CC0A0000000000000000000000000000000002E +S315E07CC0B0000000000000000000000000000000001E +S315E07CC0C0000000000000000000000000000000000E +S315E07CC0D000000000000000000000000000000000FE +S315E07CC0E000000000000000000000000000000000EE +S315E07CC0F00000000000000000000000000000009846 +S315E07CC100910000808000000000000000000000003C +S315E07CC110000000400040000000000000000000003D +S315E07CC12000000000000000000000000000000000AD +S315E07CC130000000000000000000400000000000005D +S315E07CC140000000400000000000400000000000000D +S315E07CC150000000000000000000000000000000007D +S315E07CC160000000000000000000000000000000006D +S315E07CC170000000000000000000000000000000005D +S315E07CC18000000000000000000000000000800000CD +S315E07CC190000000000000000000000000000000003D +S315E07CC1A0000000000000000000000000000000002D +S315E07CC1B0000000000000000000000000000000001D +S315E07CC1C0000000000000000000000000000000000D +S315E07CC1D000000000000000000000000000000000FD +S315E07CC1E000000000000000000000000000000000ED +S315E07CC1F000000000000000000000000000000000DD +S315E07CC20000000000000000000000000000000000CC +S315E07CC21000000000000000000000000000000000BC +S315E07CC22000000000000000000000000000000000AC +S315E07CC230000000000000000000000000000000009C +S315E07CC240000000000000000000000000000000008C +S315E07CC250000000000000000000000000000000007C +S315E07CC260000000000000000000000000000000006C +S315E07CC27000000000000101003BD30000000040000C +S315E07CC280000000004000004000000040004000004C +S315E07CC290004000000000004000000000400000007C +S315E07CC2A0000000400040000040000000000000006C +S315E07CC2B0000040400000004000000040000000001C +S315E07CC2C0000000000000000000000000000000000C +S315E07CC2D0000000000000000000000080000000007C +S315E07CC2E000000000000000000000000000000000EC +S315E07CC2F000000000000000000000000000000000DC +S315E07CC30000000000000080008000000000000000CB +S315E07CC31000000000000000000000000000000000BB +S315E07CC32000000000000000000000000000000000AB +S315E07CC330000000000000000000000000000000009B +S315E07CC340000000000000000000000000000000008B +S315E07CC350000000000000000000000000000000007B +S315E07CC360000000000000000000000000000000006B +S315E07CC370000000000000000000000000000000005B +S315E07CC380000000000000000000000000000000004B +S315E07CC390000000000000000000000000000000003B +S315E07CC3A0000000000000000000000000000000002B +S315E07CC3B0000000000000000000000000000000001B +S315E07CC3C0000000000000000000000000000000000B +S315E07CC3D000000000000000000000000000000000FB +S315E07CC3E000000000000000000000000000000000EB +S315E07CC3F000BD82000000004040000040400040005C +S315E07CC400400000400080408000C00000000040000A +S315E07CC4104000000040000000000040000000C0003A +S315E07CC42040000000004080000040000040004000EA +S315E07CC430400000000000400000C04000000000001A +S315E07CC440000000000000000080000000008000008A +S315E07CC450800000000080000000000000000000007A +S315E07CC460000000000000000000000000000000006A +S315E07CC470000000000000004000000000000080009A +S315E07CC480000000000000000000000000000000004A +S315E07CC490000000000000000000000000000000003A +S315E07CC4A0000000000000000000000000000000002A +S315E07CC4B0000000000000000000000000000000001A +S315E07CC4C0000000000000000000000000000000000A +S315E07CC4D000000000000000000000000000000000FA +S315E07CC4E000000000000000000000000000000000EA +S315E07CC4F000000000000000000000000000000000DA +S315E07CC50000000000000000000000000000000000C9 +S315E07CC51000000000000000000000000000000000B9 +S315E07CC52000000000000000000000000000000000A9 +S315E07CC5300000000000000000000000000000000099 +S315E07CC5400000000000000000000000000000000089 +S315E07CC5500000000000000000000000000000000079 +S315E07CC56000000000000000000000920A00000000CD +S315E07CC5700000404000800000000040C04000008099 +S315E07CC5800000404000000000000040400000004009 +S315E07CC5900000000000000000404080000000000039 +S315E07CC5A040408000000000004040000000000000A9 +S315E07CC5B040C0000000000000000000000000000019 +S315E07CC5C00080000000000000808000000000000089 +S315E07CC5D08000000000000000000000000000000079 +S315E07CC5E000000000000000000000000000000040A9 +S315E07CC5F00000000000000080000000000000000059 +S315E07CC60000000000000000000000000000000000C8 +S315E07CC61000000000000000000000000000000000B8 +S315E07CC62000000000000000000000000000000000A8 +S315E07CC6300000000000000000000000000000000098 +S315E07CC6400000000000000000000000000000000088 +S315E07CC6500000000000000000000000000000000078 +S315E07CC6600000000000000000000000000000000068 +S315E07CC6700000000000000000000000000000000058 +S315E07CC6800000000000000000000000000000000048 +S315E07CC6900000000000000000000000000000000038 +S315E07CC6A00000000000000000000000000000000028 +S315E07CC6B00000000000000000000000000000000018 +S315E07CC6C00000000000000000000000000000000008 +S315E07CC6D000000000000000000000000000000000F8 +S315E07CC6E0000000329800000000004040004004005A +S315E07CC6F02000000400600000000000000040000014 +S315E07CC7000000000001000800000100080040000075 +S315E07CC7100000C080000000004040C0C00200100065 +S315E07CC7208002405000800000404080C00000000055 +S315E07CC7300000000004002000000480A0000000004F +S315E07CC740808080800000000080800100080040013D +S315E07CC750000800400000000000000000000000002F +S315E07CC76000000200100080024050008000000000C3 +S315E07CC77000800000000000000000040020000004AF +S315E07CC7800020000000000000000000000000000027 +S315E07CC79001000800400100080040000000000000A5 +S315E07CC7A00000000000000000020010008002001083 +S315E07CC7B00080000000000000000000000000000097 +S315E07CC7C004002000000400200000000000000000BF +S315E07CC7D00000000000000100080040010008004065 +S315E07CC7E000000000000000000000000000000200E5 +S315E07CC7F010008002001000800000000000000000B5 +S315E07CC800000000000000040020000004002000007E +S315E07CC81000000000000000000000000001000800AD +S315E07CC820400100080040000000000000000000001D +S315E07CC8300000000002001000800200100080000072 +S315E07CC8400000000000000000000000000400200062 +S315E07CC850000400200000000000000000230300002C +S315E07CC86000000040404040800000000000400000A6 +S315E07CC8700000004000004000000000400000400056 +S315E07CC8800000000000000000004000C080000000C6 +S315E07CC890004040808000000000C040400000000076 +S315E07CC8A0004040C0C0000000000000000000000026 +S315E07CC8B00000008080000000008080808000000016 +S315E07CC8C00000000000000000000000000000000006 +S315E07CC8D000000000000000000000000000000000F6 +S315E07CC8E000404000000000000080000000000000E6 +S315E07CC8F000000000000000000000000000000000D6 +S315E07CC90000000000000000000000000000000000C5 +S315E07CC91000000000000000000000000000000000B5 +S315E07CC92000000000000000000000000000000000A5 +S315E07CC9300000000000000000000000000000000095 +S315E07CC9400000000000000000000000000000000085 +S315E07CC9500000000000000000000000000000000075 +S315E07CC9600000000000000000000000000000000065 +S315E07CC9700000000000000000000000000000000055 +S315E07CC9800000000000000000000000000000000045 +S315E07CC9900000000000000000000000000000000035 +S315E07CC9A00000000000000000000000000000000025 +S315E07CC9B00000000000000000000000000000000015 +S315E07CC9C00000000000000000000000000000000005 +S315E07CC9D00000000000319300800000000000004071 +S315E07CC9E000000000004000C00000000000000040A5 +S315E07CC9F000000000000000000000000000000000D5 +S315E07CCA0000004040C080000000004040C0C0000004 +S315E07CCA1000004040404000000000404080C00000F4 +S315E07CCA2000000000000000000000000080800000A4 +S315E07CCA300000808080800000000080800000000094 +S315E07CCA400000000000000000000000000000000084 +S315E07CCA5000000000000000000000404000000000F4 +S315E07CCA600000808000000000000000000000000064 +S315E07CCA700000000000000000000000000000000054 +S315E07CCA800000000000000000000000000000000044 +S315E07CCA900000000000000000000000000000000034 +S315E07CCAA00000000000000000000000000000000024 +S315E07CCAB00000000000000000000000000000000014 +S315E07CCAC00000000000000000000000000000000004 +S315E07CCAD000000000000000000000000000000000F4 +S315E07CCAE000000000000000000000000000000000E4 +S315E07CCAF000000000000000000000000000000000D4 +S315E07CCB0000000000000000000000000000000000C3 +S315E07CCB1000000000000000000000000000000000B3 +S315E07CCB2000000000000000000000000000000000A3 +S315E07CCB300000000000000000000000000000000093 +S315E07CCB400000000000000000000000000000757995 +S315E07CCB500000000000404000000000000040004073 +S315E07CCB600000008000400000000000000040000063 +S315E07CCB704000000000000000000000000080800013 +S315E07CCB800000004040808000000000404000000043 +S315E07CCB900000000000808000000000000000000033 +S315E07CCBA00000000000808000000000808080800023 +S315E07CCBB00000000000000000000000000000000013 +S315E07CCBC00000000000000000000000000000000003 +S315E07CCBD00000004040000000000000808000000073 +S315E07CCBE000000000000000000000000000000000E3 +S315E07CCBF000000000000000000000000000000000D3 +S315E07CCC0000000000000000000000000000000000C2 +S315E07CCC1000000000000000000000000000000000B2 +S315E07CCC2000000000000000000000000000000000A2 +S315E07CCC300000000000000000000000000000000092 +S315E07CCC400000000000000000000000000000000082 +S315E07CCC500000000000000000000000000000000072 +S315E07CCC600000000000000000000000000000000062 +S315E07CCC700000000000000000000000000000000052 +S315E07CCC800000000000000000000000000000000042 +S315E07CCC900000000000000000000000000000000032 +S315E07CCCA00000000000000000000000000000000022 +S315E07CCCB00000000000000000000000000000000012 +S315E07CCCC000000000000000D1DD00000000004040D4 +S315E07CCCD04040000000004000404000000000400072 +S315E07CCCE040400000000040004040000000000000A2 +S315E07CCCF00000000000004040000000000000004012 +S315E07CCD0000000000400040000000000000004040C1 +S315E07CCD1000000000000000000000000000000000B1 +S315E07CCD2000000000000000000000000080800000A1 +S315E07CCD300000000000000000000000000000000091 +S315E07CCD400000000000000000000000000000000081 +S315E07CCD5000000000008000000000000000000000F1 +S315E07CCD600000000000000000000000000000000061 +S315E07CCD700000000000000000000000000000000051 +S315E07CCD800000000000000000000000000000000041 +S315E07CCD900000000000000000000000000000000031 +S315E07CCDA00000000000000000000000000000000021 +S315E07CCDB00000000000000000000000000000000011 +S315E07CCDC00000000000000000000000000000000001 +S315E07CCDD000000000000000000000000000000000F1 +S315E07CCDE000000000000000000000000000000000E1 +S315E07CCDF000000000000000000000000000000000D1 +S315E07CCE0000000000000000000000000000000000C0 +S315E07CCE1000000000000000000000000000000000B0 +S315E07CCE2000000000000000000000000000000000A0 +S315E07CCE30000000000000000000000000000100008F +S315E07CCE40998B00000080000000000000000000409C +S315E07CCE504040400000000000400040000000000030 +S315E07CCE604040400000000000000000000040004020 +S315E07CCE7000000000000000400000000000000040D0 +S315E07CCE8000000000004040000000000000000000C0 +S315E07CCE900000000000000000000000000000000030 +S315E07CCEA00000000000808000000000000000000020 +S315E07CCEB00000000000000000000000000000000010 +S315E07CCEC00000000000000000000000000080000080 +S315E07CCED000000000000000000000000000000000F0 +S315E07CCEE000000000000000000000000000000000E0 +S315E07CCEF000000000000000000000000000000000D0 +S315E07CCF0000000000000000000000000000000000BF +S315E07CCF1000000000000000000000000000000000AF +S315E07CCF20000000000000000000000000000000009F +S315E07CCF30000000000000000000000000000000008F +S315E07CCF40000000000000000000000000000000007F +S315E07CCF50000000000000000000000000000000006F +S315E07CCF60000000000000000000000000000000005F +S315E07CCF70000000000000000000000000000000004F +S315E07CCF80000000000000000000000000000000003F +S315E07CCF90000000000000000000000000000000002F +S315E07CCFA0000000000000000000000000000000001F +S315E07CCFB00000000000000000001DB50080000000BD +S315E07CCFC0000040400000000040000000000000003F +S315E07CCFD040404040000000004040404000000000EF +S315E07CCFE000000000000040404040000000000000DF +S315E07CCFF0004000000000400040000000000000000F +S315E07CD000404000000000000000000000000000003E +S315E07CD01000000000000000000000000000000000AE +S315E07CD020000000000000000000000000000000009E +S315E07CD030000000000000000000000000000000008E +S315E07CD040000000000000000000000000000000007E +S315E07CD050000000000000000000000000000000006E +S315E07CD060000000000000000000000000000000005E +S315E07CD070000000000000000000000000000000004E +S315E07CD080000000000000000000000000000000003E +S315E07CD090000000000000000000000000000000002E +S315E07CD0A0000000000000000000000000000000001E +S315E07CD0B0000000000000000000000000000000000E +S315E07CD0C000000000000000000000000000000000FE +S315E07CD0D000000000000000000000000000000000EE +S315E07CD0E000000000000000000000000000000000DE +S315E07CD0F000000000000000000000000000000000CE +S315E07CD10000000000000000000000000000000000BD +S315E07CD11000000000000000000000000000000000AD +S315E07CD120000000000000000000000000000000009D +S315E07CD1300100FD2C00000000000000000000000063 +S315E07CD1400440600000000000004040000000000059 +S315E07CD1500040400000000100080040000000004064 +S315E07CD16040000000000000000040000000000200DB +S315E07CD17010008000000000000000000000000000BD +S315E07CD1800000000000000400200000000000000019 +S315E07CD1900000000000000000000000000100080024 +S315E07CD1A040000000000000000000000000000000DD +S315E07CD1B0000000000200100080000000000000007B +S315E07CD1C000000000000000000000000004002000D9 +S315E07CD1D000000000000000000000000000000000ED +S315E07CD1E00000010008004000000000000000000094 +S315E07CD1F0000000000000000000000200100080003B +S315E07CD20000000000000000000000000000000000BC +S315E07CD2100000040020000000000000000000000088 +S315E07CD2200000000000000000010008004000000053 +S315E07CD230000000000000000000000000000000008C +S315E07CD24002001000800000000000000000000000EA +S315E07CD2500000000000000000040020000000000048 +S315E07CD260000000000000000000000000000001005B +S315E07CD2700800400000000000000000000000000004 +S315E07CD28000000000000002001000800000000000AA +S315E07CD2900000000000000000000000000000040028 +S315E07CD2A02000000000000000000000628100008099 +S315E07CD2B08000000000000000000400200000000068 +S315E07CD2C0000000400000000000000000400000017B +S315E07CD2D00008004040000000400000000000000024 +S315E07CD2E0000000000000000240100080000000000A +S315E07CD2F000000000000000000000000000000004C8 +S315E07CD300002000000000000000000000000000009B +S315E07CD31080000000000100080040000000000000E2 +S315E07CD3200000000000000000000000000002001089 +S315E07CD330008000000000000080000000000000008B +S315E07CD3400000000000040020000000000000000057 +S315E07CD3500000000000000000000000010008004022 +S315E07CD360000000000000000000000000000000005B +S315E07CD37000000002001000800000000000000000B9 +S315E07CD3800000000000000000000000040020000017 +S315E07CD390000000000000000000000000000000002B +S315E07CD3A000010008004000000000000000000000D2 +S315E07CD3B00000000000000000000200100080000079 +S315E07CD3C000000000000000000000000000000000FB +S315E07CD3D000040020000000000000000000000000C7 +S315E07CD3E00000000000000001000800400000000092 +S315E07CD3F000000000000000000000000000000002C9 +S315E07CD400001000800000000000000000000000002A +S315E07CD4100000000000000004002000000000000086 +S315E07CD4200000000006B00000000000004040000064 +S315E07CD43000000400604000000000000000400000A6 +S315E07CD44000000000400000000100080040000000F1 +S315E07CD45000000040000000000000004000000000EA +S315E07CD4600200104080000000000040400000000008 +S315E07CD4700000000000000000040020000000000026 +S315E07CD48000000000000000000000800000000100B9 +S315E07CD49008004000000000000000000000000000E2 +S315E07CD4A00000000000000200100080000000000088 +S315E07CD4B00080000000000000000000000000040086 +S315E07CD4C020000000000000000000000000000000DA +S315E07CD4D000000000010008004000000000000000A1 +S315E07CD4E000000000000000000000000002001000C8 +S315E07CD4F0800000000000000000000000000000004A +S315E07CD5000000000004002000000000000000000095 +S315E07CD5100000000000000000000001000800400060 +S315E07CD5200000000000000000000000000000000099 +S315E07CD53000000200100080000000000000000000F7 +S315E07CD5400000000000000000000004002000000055 +S315E07CD5500000000000000000000000000000000069 +S315E07CD5600100080040000000000000000000000010 +S315E07CD57000000000000000000200100080000000B7 +S315E07CD5800000000000000000000000000000000039 +S315E07CD59004002000000000000000000000708B000A +S315E07CD5A00083831C1C606000000303181C40600041 +S315E07CD5B000070738384040000007073838C0C0000D +S315E07CD5C0000607303880C001010E0E707080800145 +S315E07CD5D0010E0E7070808001010C0E60700080037D +S315E07CD5E0031C1CE0E0000003031C1CE0E0000003DD +S315E07CD5F003181CC0E0000007073838C0C0000007ED +S315E07CD600073838C0C000000607303880C001010EFC +S315E07CD6100E7070808001010E0E7070808001010CAE +S315E07CD6200E6070008003031C1CE0E0000003031C1A +S315E07CD6301CE0E000000303181CC0E000000707388C +S315E07CD64038C0C0000007073838C0C0000006073085 +S315E07CD6503880C001010E0E7070808001010E0E7064 +S315E07CD66070808001010C0E6070008003031C1CE05E +S315E07CD670E0000003031C1CE0E000000303181CC070 +S315E07CD680E0000007073838C0C0000007073838C01C +S315E07CD690C000000607303880C001010E0E70708035 +S315E07CD6A08001010E0E7070808001010C0E607000AE +S315E07CD6B08003031C1CE0E0000003031C1CE0E0008C +S315E07CD6C0000303181CC0E0000007073838C0C00020 +S315E07CD6D00007073838C0C000000607303880C00134 +S315E07CD6E0010E0E7070808001010E0E7070808001DC +S315E07CD6F0010C0E6070008003031C1CE0E00000025D +S315E07CD700021C1CE0E000000202181CC0E0000006DF +S315E07CD710063838C1C100D784000000000000000054 +S315E07CD7200000000000000040000000000000000057 +S315E07CD7300000000000000000000000000000000087 +S315E07CD7400000008000000000000000800000000077 +S315E07CD7500000000000000000000000000000000067 +S315E07CD76080000000000000000000000000000000D7 +S315E07CD77080000000000000000000000000000000C7 +S315E07CD7800000000000000000000000000000000037 +S315E07CD79000000000000000000000000000004000E7 +S315E07CD7A00000000000000000000000000000000017 +S315E07CD7B00000000000000000000000000000000007 +S315E07CD7C000000000000000000000000000000000F7 +S315E07CD7D000000000000000000000000000000000E7 +S315E07CD7E000000000000000000000000000000000D7 +S315E07CD7F000000000000000000000000000000000C7 +S315E07CD80000000000000000000000000000000000B6 +S315E07CD81000000000000000000000000000000000A6 +S315E07CD8200000000000000000000000000000000096 +S315E07CD8300000000000000000000000000000000086 +S315E07CD8400000000000000000000000000000000076 +S315E07CD8500000000000000000000000000000000066 +S315E07CD8600000000000000000000000000000000056 +S315E07CD8700000000000000000000000000000000046 +S315E07CD8800000000000000000000000000000003BFB +S315E07CD8903D000000000000004000000000000000A9 +S315E07CD8A00000000000000000000000000000000016 +S315E07CD8B000000000000000000000100000000000F6 +S315E07CD8C000000000000000000000000000000000F6 +S315E07CD8D00000000000800000000000000000000066 +S315E07CD8E000000000000000000000000000000000D6 +S315E07CD8F00000000000400000000000000000000086 +S315E07CD90000000000000000000000000000000000B5 +S315E07CD91000000000000000000000000000000000A5 +S315E07CD9200000000000000000000000000000000095 +S315E07CD9300000000000000000000000000000000085 +S315E07CD9400000000000000000000000000000000075 +S315E07CD9500000000000000000000000000000000065 +S315E07CD9600000000000000000000000000000000055 +S315E07CD97000800000000000000000000000000000C5 +S315E07CD9800000001000000000000000000000000025 +S315E07CD9900004000000008000000000004000000061 +S315E07CD9A000000000000000000000000020000000F5 +S315E07CD9B000000000000000000000000040000000C5 +S315E07CD9C000000000000000000000000000000000F5 +S315E07CD9D000000000000000000000000000000000E5 +S315E07CD9E000000000000000000000000000000000D5 +S315E07CD9F000000000000000000000000000000000C5 +S315E07CDA000000000000000000A1690000000000406A +S315E07CDA1000004000000000400000000000000040E4 +S315E07CDA2000004040000000000000000040000000D4 +S315E07CDA300000000000400000404000000040000084 +S315E07CDA404040000000400000400000000000000074 +S315E07CDA5000000000008000000000000000000000E4 +S315E07CDA600000000080000000000000800000000054 +S315E07CDA700000000000000000000000000000004004 +S315E07CDA8000000000000000000000008000000000B4 +S315E07CDA9040008040000000000000008000000000A4 +S315E07CDAA00000000000000000000000000000000014 +S315E07CDAB00000000000000000000000000000000004 +S315E07CDAC000000000000000000000000000000000F4 +S315E07CDAD000000000000000000000000000000000E4 +S315E07CDAE000000000000000000000000000000000D4 +S315E07CDAF000000000000000000000000000000000C4 +S315E07CDB0000000000000000000000000000000000B3 +S315E07CDB1000000000000000000000000000000000A3 +S315E07CDB200000000000000000000000000000000093 +S315E07CDB300000000000000000000040000000000043 +S315E07CDB400000000000000000000000000000000073 +S315E07CDB500000000000000020000000000000000043 +S315E07CDB600000000000000000000000000000002033 +S315E07CDB700000000000000000000000000000000043 +S315E07CDB800023090000000000000000000000000007 +S315E07CDB9000000000000000000000000040000000E3 +S315E07CDBA00000000000000000000000000000000013 +S315E07CDBB04000000000000000004040000000000043 +S315E07CDBC0000000A0000000000000000000008000D3 +S315E07CDBD00000000000000000000000008000000063 +S315E07CDBE00000000000800000000000000000000053 +S315E07CDBF000000000000000000000000000000000C3 +S315E07CDC0000000000000000004000008040000000B2 +S315E07CDC100000000080000000000000000000000022 +S315E07CDC200000000000000000000000000000000092 +S315E07CDC300000000000000000000000000000000082 +S315E07CDC4000000000000000000000000000000080F2 +S315E07CDC500000000000000000000000000000000062 +S315E07CDC60000000040000000000000000000000004E +S315E07CDC700000000000000000400000000000000002 +S315E07CDC800000000000000000000000000000000032 +S315E07CDC900000000000000000000000000000000022 +S315E07CDCA00000000000000000000000000000000012 +S315E07CDCB000000000000000400000000000000000C2 +S315E07CDCC000000000000000000000000000000000F2 +S315E07CDCD020000000000000000000000000000000C2 +S315E07CDCE000000000000000002000000000000000B2 +S315E07CDCF00000000000000000000051D100000000A0 +S315E07CDD0000400000400000000000400000000000F1 +S315E07CDD100040004000008000000000000040000061 +S315E07CDD200000000040000040000000004000004091 +S315E07CDD3000000000000000400000500000000000F1 +S315E07CDD400000000000000000000000000000000071 +S315E07CDD500000000000000000000000000000000061 +S315E07CDD600000000000400000000000000000000011 +S315E07CDD700040000000000000000000000000000001 +S315E07CDD800000000000000000000000000000000031 +S315E07CDD9000000000000000000000000080000000A1 +S315E07CDDA00000000000000000000000000000000011 +S315E07CDDB00000000000000000000000000000000001 +S315E07CDDC000000000000000000000000000000000F1 +S315E07CDDD000000000000000000000000000000000E1 +S315E07CDDE000000000000000000000000000000000D1 +S315E07CDDF000000000000000000000000000000000C1 +S315E07CDE000000000000000010000000000000800020 +S315E07CDE1000000000000000000000000000000000A0 +S315E07CDE200000000020000000000000400000000030 +S315E07CDE300000000000000000000000004000000040 +S315E07CDE400000000000000000000000000000000070 +S315E07CDE500000000000000000000000000000000060 +S315E07CDE600000000000000000000000000000000050 +S315E07CDE700000000A1800000000400000400000009E +S315E07CDE800000000040000000004000400040000030 +S315E07CDE900000000000000000000000000000000020 +S315E07CDEA00000000000000000000000404000000090 +S315E07CDEB000000000000000000040000000000000C0 +S315E07CDEC000000000000000000040000000000000B0 +S315E07CDED000000000000000000000400000000000A0 +S315E07CDEE000000000000000000000000000000000D0 +S315E07CDEF00000400000000000000000000000000080 +S315E07CDF0000000000000000000000000000000000AF +S315E07CDF10000000000000000000000000000000009F +S315E07CDF20000000000000000000000000000000008F +S315E07CDF30000000000000000000000000000000007F +S315E07CDF40000000000000000000000000000000006F +S315E07CDF50000000000000000000000000000000005F +S315E07CDF60000000000000000000000000000000004F +S315E07CDF70000000000000000000000000000000003F +S315E07CDF80000000000000000000000000000000002F +S315E07CDF90000000000000000000000000000000001F +S315E07CDFA0000000000000000000000000000000000F +S315E07CDFB000000000000000000000000000000000FF +S315E07CDFC0000000800000000000000000200000004F +S315E07CDFD000000000000000000000000000000000DF +S315E07CDFE000000000000000000000000006A9000020 +S315E07CDFF000000000000000000000000000000000BF +S315E07CE00000000000000000000000000000000000AE +S315E07CE010000000000000000000000000000000009E +S315E07CE020404000000000000000000040000040008E +S315E07CE030000000000000000000000000000000403E +S315E07CE04000000080000000000000000000000000EE +S315E07CE050000000000000000000000000400000001E +S315E07CE060000000000000000000000000000000004E +S315E07CE070000000400000000000400040000000007E +S315E07CE080000000000000000000000000000000002E +S315E07CE090000000000000000000000000000000001E +S315E07CE0A0000000000000000000000000000000000E +S315E07CE0B000000000000000000000000000000000FE +S315E07CE0C000000000000000000000000000000000EE +S315E07CE0D000000000000000000000000000000000DE +S315E07CE0E000000000000000000000000000000200CC +S315E07CE0F000000000000000000000000000000000BE +S315E07CE10000000000000000000000000000000000AD +S315E07CE110000000000000000000000000000000009D +S315E07CE120000000000000000000000000000000008D +S315E07CE130000000000000000000000000000000007D +S315E07CE140000000000000000000000000000000006D +S315E07CE150000000000000000000000000000000005D +S315E07CE1600000000000F8A6000000804000004000AF +S315E07CE17000000000000000000000000040004000BD +S315E07CE18000000000000000000000000000400000ED +S315E07CE190000000000000000000404000400040001D +S315E07CE1A0000000000000400000000040000000008D +S315E07CE1B0000000000000000000400040000000007D +S315E07CE1C000000000000000000000000000000000ED +S315E07CE1D0000000000040000000000000000000009D +S315E07CE1E0000000004000000000000000000000008D +S315E07CE1F0000000000040000000000000000000007D +S315E07CE20000000000000000000000000000000000AC +S315E07CE210000000000000000000000000000000009C +S315E07CE220000000000000000000000000000000008C +S315E07CE230000000000000000000000000000000007C +S315E07CE240000000000000000000000000000000006C +S315E07CE250000000000000000000000000000000005C +S315E07CE260000000000000020000000000000000004A +S315E07CE270000000000000000000000000000000003C +S315E07CE280000000000000000000000000000000002C +S315E07CE290000000000000000000000000000000001C +S315E07CE2A0000000000000000000000000000000000C +S315E07CE2B0000000008000000000000000000020005C +S315E07CE2C000000000000000000000000000000000EC +S315E07CE2D0000000000000000000000001000025B204 +S315E07CE2E000000000000000000000000000000000CC +S315E07CE2F0000040000000000000000000000000007C +S315E07CE300000000000000000000004000000000006B +S315E07CE310000040000000000000000000000040001B +S315E07CE320000000000000000000004000000000004B +S315E07CE330000000000000000000000000000000007B +S315E07CE340000000000000000000000000000000006B +S315E07CE35000000000000000000000000080000000DB +S315E07CE36000400000000000004000000000000000CB +S315E07CE370000000000000000000000000000000003B +S315E07CE380000000000000000000000000000000002B +S315E07CE390000000000000000000000000000000001B +S315E07CE3A0000000000000000000000000000000000B +S315E07CE3B000000000000000000000000000000040BB +S315E07CE3C000000000000000000000000000000000EB +S315E07CE3D0000000000000000000008000000000005B +S315E07CE3E000000000000000000000000000000000CB +S315E07CE3F000000000000000000000000000000000BB +S315E07CE40000008000004000000000000000000000EA +S315E07CE410000000000000000000000000000000009A +S315E07CE420000000000000000000000000000000008A +S315E07CE43000004000000000000000000080000000BA +S315E07CE44000000000000000000000000000008000EA +S315E07CE45000000000000000D0AF000080000000005B +S315E07CE46000000000000000000000000000008000CA +S315E07CE470000000000000000000000000000000003A +S315E07CE480000000000000000000000000000000002A +S315E07CE49000000000400000000000000000000000DA +S315E07CE4A0000000000000000000000000000000000A +S315E07CE4B000000000000000000000000000000000FA +S315E07CE4C000000000000000000000000000000000EA +S315E07CE4D0000000000000000000000000000040009A +S315E07CE4E0400000000000000000000000000000008A +S315E07CE4F000000000000000000000000000000000BA +S315E07CE50000000000000000000000000000000000A9 +S315E07CE5100000000000000000000000000000000099 +S315E07CE5200000000000000000000000000000000089 +S315E07CE5300000000000000000000000000000000079 +S315E07CE5400000000000000000000000000000000069 +S315E07CE5500000000000000000000000000000000059 +S315E07CE5600000000000000000000000000000000049 +S315E07CE57000000000000000000000008000000000B9 +S315E07CE5800000000000000000000000000000000029 +S315E07CE5900000000000000000000000000000000019 +S315E07CE5A00000000000000000000000000000000009 +S315E07CE5B000000000000000000000000000000000F9 +S315E07CE5C000000000000000000000000000000100E8 +S315E07CE5D0290C0000000000000000004080000000E4 +S315E07CE5E000000000000000000000000000000000C9 +S315E07CE5F00000000000000000000000004000000079 +S315E07CE6000000000040000000000000000000000068 +S315E07CE6100000000000000000000000400000000058 +S315E07CE6200000000000000000000000000000000088 +S315E07CE6300040000000000000000000000000000038 +S315E07CE64000000000000000000000000000800000E8 +S315E07CE6500000000040000000000000000000000018 +S315E07CE6600000000000000000000000000000000048 +S315E07CE6700000000000000000000000000000000038 +S315E07CE6800000000000000000000000000000000028 +S315E07CE6900000000000000000000000000000000018 +S315E07CE6A00000000000000000000000000000000008 +S315E07CE6B000000000000000000000000000000000F8 +S315E07CE6C000000000000000000000000000000000E8 +S315E07CE6D000000000000000000000000000000000D8 +S315E07CE6E000000000000000000000000000000000C8 +S315E07CE6F000000000000000000000000000000000B8 +S315E07CE70000000000000000000000000000000000A7 +S315E07CE7100000000000000000000000000000000097 +S315E07CE7200000000000000000000000000000000087 +S315E07CE73000000000000000000000000000000080F7 +S315E07CE74000000000000000000052D2000000000043 +S315E07CE7500000000000000080000000000040000097 +S315E07CE7600000000000000000000000000000400007 +S315E07CE7700000000000000000000000000000000037 +S315E07CE78000000000000000004000000000000000E7 +S315E07CE7900000000000000000000000000000000017 +S315E07CE7A00000000000000000000000000000000007 +S315E07CE7B000000000000000000000000000000000F7 +S315E07CE7C000000000000000000000000000000000E7 +S315E07CE7D000000000000000000000000000000000D7 +S315E07CE7E000000000000000000000000000000000C7 +S315E07CE7F000000000000000000000000000000000B7 +S315E07CE80000000000000000000000000000000000A6 +S315E07CE8100000800000000000000000000000000016 +S315E07CE8200000000000000000000000400000000046 +S315E07CE8300000000000000000000000000000000076 +S315E07CE84000000000008000000000000000000000E6 +S315E07CE8500000000000000000000000000000000056 +S315E07CE8600000000000000000000000000000000046 +S315E07CE87000400000000000000000000000000000F6 +S315E07CE8800000000000000000000000000000000026 +S315E07CE89000000000000000000000000040000000D6 +S315E07CE8A00000000000008000000000000000000086 +S315E07CE8B000000000000000000000000000000000F6 +S315E07CE8C00000F017000000000000000000000000DF +S315E07CE8D00000000000004000000000400000000056 +S315E07CE8E00000004000004040000000000000000006 +S315E07CE8F000000000000000000000000000000000B6 +S315E07CE9000000400000000000000000000040000025 +S315E07CE9100000004000000000004000000000000015 +S315E07CE9200000000000000000000000000000000085 +S315E07CE93000000000000000004000000040000000F5 +S315E07CE9404000000000000000000000000000000025 +S315E07CE9500000000000000000000000000000000055 +S315E07CE9600000000000000000000000000000000045 +S315E07CE9700000000000000000000000000000000035 +S315E07CE9800000000000000000000000000000000025 +S315E07CE9900000000000800000000000000000000095 +S315E07CE9A00000000000000000000000000000000005 +S315E07CE9B000000000000000000000000000000000F5 +S315E07CE9C000000000000000000000000000000000E5 +S315E07CE9D000000000000000000000000000000000D5 +S315E07CE9E000000000000000000000000000000000C5 +S315E07CE9F000000000000000000000000000000000B5 +S315E07CEA0000000000000000000000000000000000A4 +S315E07CEA100000000000000000000000000000000094 +S315E07CEA200000000000000000000000000000000084 +S315E07CEA300000000000000000000000197E0000805D +S315E07CEA4080000000000000000000000040000000A4 +S315E07CEA500000000000000040000000000000000014 +S315E07CEA600000000000000000000000000000004004 +S315E07CEA700000000000000000000000000000000034 +S315E07CEA8040004000000000000000000000000000A4 +S315E07CEA900000000040000000000000000000400094 +S315E07CEAA000000000004000000000000000000000C4 +S315E07CEAB000000000000000000000000000000000F4 +S315E07CEAC04000000000400000004000000000000024 +S315E07CEAD000000000000000000000000000000000D4 +S315E07CEAE000000000000000000000000000000000C4 +S315E07CEAF000000000000000000000000000000000B4 +S315E07CEB0000000000000000000000000000000000A3 +S315E07CEB100000000000000000000000000000000093 +S315E07CEB200000000000000000000000000000000083 +S315E07CEB300000000000000000000000000000000073 +S315E07CEB400000000000000000000000000000000063 +S315E07CEB500000000000000000000000000000000053 +S315E07CEB600000000000000000000000000000000043 +S315E07CEB700000000000000000000000000000000033 +S315E07CEB800000000000000000000000000000000023 +S315E07CEB900000000000000000000000000000000013 +S315E07CEBA00000000000000000000000000000000003 +S315E07CEBB000010100EA410000004000000000000086 +S315E07CEBC000000000000000000000000000000000E3 +S315E07CEBD00000000000000000000000004000000093 +S315E07CEBE00000000000000000000000004000004043 +S315E07CEBF00000000000000040000000000000000073 +S315E07CEC000000000000004000000000000000400022 +S315E07CEC100000000040004000000000000000404092 +S315E07CEC200000000000000000000000004000000042 +S315E07CEC3000000000000040000000000040000000F2 +S315E07CEC400000000040000000000000000000000022 +S315E07CEC500000000000000000000000000000000052 +S315E07CEC600000000000000000000000000000000042 +S315E07CEC700000000000000000000000000000000032 +S315E07CEC800000000000000000000000000000000022 +S315E07CEC900000000000000000000000000000000012 +S315E07CECA00000000000000000000000000000000002 +S315E07CECB000000000000000000000000000000000F2 +S315E07CECC000000000000000000000000000000000E2 +S315E07CECD000000000000000000000000000000000D2 +S315E07CECE000000000000000000000000000000000C2 +S315E07CECF000000000000000000000000000000000B2 +S315E07CED0000000000000000000000000000000000A1 +S315E07CED100000000000000000000000000000000091 +S315E07CED2000000000000000000000000000C334008A +S315E07CED300000000000004000000000000000000031 +S315E07CED4000004000000000004000004000000000A1 +S315E07CED500000000000400000000000000000000011 +S315E07CED600000000000000000000000400000000001 +S315E07CED7000000000000000000000000040000000F1 +S315E07CED8040000000000000004000000000000000A1 +S315E07CED9000000000400000000000000000000000D1 +S315E07CEDA00000000000000000000000000000000001 +S315E07CEDB000000000000000000000000000000000F1 +S315E07CEDC000000000000000000000000000000000E1 +S315E07CEDD000000000000000000000000000000000D1 +S315E07CEDE000000000000000000000000000000000C1 +S315E07CEDF000000000000000000000000000000000B1 +S315E07CEE0000000000000000000000000000000000A0 +S315E07CEE100000000000000000000000000000000090 +S315E07CEE200000000000000000000000000000000080 +S315E07CEE300000000000000000000000000000000070 +S315E07CEE400000000000000000000000000000000060 +S315E07CEE500000000000000000000000000000000050 +S315E07CEE600000000000000000000000000000000040 +S315E07CEE700000000000000000000000000000000030 +S315E07CEE800000000000000000000000000000000020 +S315E07CEE900000000000000000000000000000000010 +S315E07CEEA0000000000000637200000000000000002B +S315E07CEEB000400000000000000000000000000000B0 +S315E07CEEC00000000000004000000040000000400020 +S315E07CEED000000000000000000000000000000000D0 +S315E07CEEE04000000000000000000000000000000080 +S315E07CEEF000000000000000000000000000000000B0 +S315E07CEF00000000000000000000000000000000009F +S315E07CEF10000000000000000000000000000000008F +S315E07CEF20000000000040000000000000000000003F +S315E07CEF30000000004000000000000000000000002F +S315E07CEF40000000000000000000000000000000005F +S315E07CEF50000000000000000000000000000000004F +S315E07CEF60000000000000000000000000000000003F +S315E07CEF70000000000000000000000000000000002F +S315E07CEF80000000000000000000000000000000001F +S315E07CEF90000000000000000000000000000000000F +S315E07CEFA000000000000000000000000000000000FF +S315E07CEFB000000000000000000000000000000000EF +S315E07CEFC000000000000000000000000000000000DF +S315E07CEFD000000000000000000000000000000000CF +S315E07CEFE000000000000000000000000000000000BF +S315E07CEFF000000000000000000000000000000000AF +S315E07CF000000000000000000000000000000000009E +S315E07CF01000000000000000000000000000000092FC +S315E07CF0206F000000000040000000000000000000CF +S315E07CF03000004000400040000000000000000000AE +S315E07CF040000000000000000000004000000000001E +S315E07CF050400000000000000000000000000000000E +S315E07CF06000000000400000000000000000000000FE +S315E07CF070000000000000000000000000000000002E +S315E07CF08000000000000000000000000000400000DE +S315E07CF090000000000000000000000000000000000E +S315E07CF0A000000000004000000000000000000000BE +S315E07CF0B000000000000000000000000000000000EE +S315E07CF0C000000000000000000000000000000000DE +S315E07CF0D000000000000000000000000000000000CE +S315E07CF0E000000000000000000000000000000000BE +S315E07CF0F0000000000080000000000000000000002E +S315E07CF100000000000000000000000000000000009D +S315E07CF110000000000000000000000000000000008D +S315E07CF120000000000000000000000000000000007D +S315E07CF130000000000000000000000000000000006D +S315E07CF140000000000000000000000000000000005D +S315E07CF150000000000000000000000000000000004D +S315E07CF160000000000000000000000000000000003D +S315E07CF170000000000000000000000000000000002D +S315E07CF180000000000000000000000000000000001D +S315E07CF190000000000000000009FA000000400000CA +S315E07CF1A000000000000000000000000000000000FD +S315E07CF1B000000000004000000000000000000000AD +S315E07CF1C0000000000000004000000000000000405D +S315E07CF1D000000040000000004040004000000000CD +S315E07CF1E000000000000000000000000000000000BD +S315E07CF1F000000000000000000000000000000000AD +S315E07CF200000000000000000000000000000000009C +S315E07CF210000000000000000000000000000000008C +S315E07CF220000000000000000000000000000000007C +S315E07CF230000000000000000000000000000000006C +S315E07CF240000000000000000000000000000000005C +S315E07CF250000000000000000000000000000000004C +S315E07CF260000000000000000000000000000000003C +S315E07CF270000000000000000000000000000000002C +S315E07CF280000000000000000000000000000000001C +S315E07CF290000000000000000000000000000000000C +S315E07CF2A000000000000000000000000000000000FC +S315E07CF2B000000000000000000000000000000000EC +S315E07CF2C000000000000000000000000000000000DC +S315E07CF2D000000000000000000000000000000000CC +S315E07CF2E000000000000000000000000000000000BC +S315E07CF2F000000000000000000000000000000000AC +S315E07CF300000000000000000000000000000000009B +S315E07CF31000E11E00000000004000004000000040CC +S315E07CF320000000000000000040000000000000003B +S315E07CF330000000400000000000000000000000002B +S315E07CF34000004000000000000000000000004000DB +S315E07CF350000000400000000000000000000000000B +S315E07CF360000000000000000000000000000000003B +S315E07CF37000400000000000000000000000000000EB +S315E07CF380400000000000000000000000000040009B +S315E07CF39000400000000000000000000000000000CB +S315E07CF3A000000000000000000000000000000000FB +S315E07CF3B000000000000000000000000000000000EB +S315E07CF3C000000000000000000000000000000000DB +S315E07CF3D000000000000000000000000000000000CB +S315E07CF3E000000000000000000000000000000000BB +S315E07CF3F000000000000000000000000000000000AB +S315E07CF400000000000000000000000000000000009A +S315E07CF410000000000000000000000000000000008A +S315E07CF420000000000000000000000000000000007A +S315E07CF430000000000000000000000000000000006A +S315E07CF440000000000000000000000000000000005A +S315E07CF450000000000000000000000000000000004A +S315E07CF460000000000000000000000000000000003A +S315E07CF470000000000000000000000000000000002A +S315E07CF480000000000000000000001A1F00000000E1 +S315E07CF490000000000000000000000000000000000A +S315E07CF4A000000000000000000000000000000040BA +S315E07CF4B000000000000000000000000000000000EA +S315E07CF4C0000000400000000000000000000000009A +S315E07CF4D000000000000000000000000000000000CA +S315E07CF4E000000000000000000000000000000000BA +S315E07CF4F0000000000000000000000000000000406A +S315E07CF5000000000000000000000000000000000099 +S315E07CF5100000000000000000000000000000000089 +S315E07CF5200000000000000000000000000000000079 +S315E07CF5300000000000000000000000000000000069 +S315E07CF5400000000000000000000000000000000059 +S315E07CF55000000000000000000000000000008000C9 +S315E07CF5600000000000000000000000000000000039 +S315E07CF5700000000000000000000000000000000029 +S315E07CF5800000000000000000000000000000000019 +S315E07CF5900000000000000000000000000000000009 +S315E07CF5A000000000000000000000000000000000F9 +S315E07CF5B000000000000000000000000000000000E9 +S315E07CF5C000000000000000000000000000000000D9 +S315E07CF5D000000000000000000000000000000000C9 +S315E07CF5E000000000000000000000000000000000B9 +S315E07CF5F000000000000000000000000000000000A9 +S315E07CF600000000E55400000080400000400000005F +S315E07CF61000000000400000000040000000000040C8 +S315E07CF62040000000000000400040000000000000B8 +S315E07CF63000000000000040000000000040000040A8 +S315E07CF6400000400000000000400000400000000098 +S315E07CF6500000004000400000000000000040004048 +S315E07CF6600000004000000000000000000040400078 +S315E07CF6700000400000000000004000000040000068 +S315E07CF68000000000004000000000000000000000D8 +S315E07CF6900000000000000000000000000000000008 +S315E07CF6A000000000000000000000000000000000F8 +S315E07CF6B000000000000000000000000000000000E8 +S315E07CF6C000000000000000000000000000000000D8 +S315E07CF6D00000000000000080000000000000000048 +S315E07CF6E000000000000000000000000000000000B8 +S315E07CF6F000000000000000000000000000000000A8 +S315E07CF7000000000000000000000000000000000097 +S315E07CF7100000000000000000000000000000000087 +S315E07CF7200000000000000000000000000000000077 +S315E07CF7300000000000000000000000000000000067 +S315E07CF7400000000000000000000000000000000057 +S315E07CF7500000000000000000000000000000000047 +S315E07CF7600000000000000000000000000000000037 +S315E07CF770000000000000000000000000DBA20000AA +S315E07CF7800040000040000000400040000000000017 +S315E07CF7900040004000000040000000004000000007 +S315E07CF7A00000000000000000000000004000400077 +S315E07CF7B000000000000040004000400040000000E7 +S315E07CF7C00000000000000000000000000040000097 +S315E07CF7D00000000000400000000000400040000007 +S315E07CF7E00000000000400000000000000000000077 +S315E07CF7F000400040000000000040004000000000A7 +S315E07CF8000040004000000000004000400000000096 +S315E07CF8100000000000000000000000000000000086 +S315E07CF8200000000000000000000000000000000076 +S315E07CF8300000000000000000000000000000000066 +S315E07CF84000000000000000000000000000000080D6 +S315E07CF8500000000000000000000000000000000046 +S315E07CF8600000000000000000000000000000000036 +S315E07CF8700000000000000000000000000000000026 +S315E07CF8800000000000000000000000000000000016 +S315E07CF8900000000000000000000000000000000006 +S315E07CF8A000000000000000000000000000000000F6 +S315E07CF8B000000000000000000000000000000000E6 +S315E07CF8C000000000000000000000000000000000D6 +S315E07CF8D000000000000000000000000000000000C6 +S315E07CF8E000000000000000000000000000000000B6 +S315E07CF8F00000000000D5AD00008000000040400024 +S315E07CF9000000000000404000000000004040400055 +S315E07CF91000000000004040000000000000000040C5 +S315E07CF92000000040400000000000000040000000B5 +S315E07CF93000000040400000000000004000000000A5 +S315E07CF9400000000040400000000000004040000055 +S315E07CF9500000000040400000000000004040000045 +S315E07CF9604000000000400000000040400000000035 +S315E07CF9700000400000000000000040400000000065 +S315E07CF9800000404000000000000000000000000095 +S315E07CF9900000000000000000000000000000000005 +S315E07CF9A000000000000000000000000000000000F5 +S315E07CF9B000000000000000000000000000000000E5 +S315E07CF9C00000000000000000800000000000000055 +S315E07CF9D000000000000000000000000000000000C5 +S315E07CF9E000000000000000000000000000000000B5 +S315E07CF9F000000000000000000000000000000000A5 +S315E07CFA000000000000000000000000000000000094 +S315E07CFA100000000000000000000000000000000084 +S315E07CFA200000000000000000000000000000000074 +S315E07CFA300000000000000000000000000000000064 +S315E07CFA400000000000000000000000000000000054 +S315E07CFA500000000000000000000000000000000044 +S315E07CFA600000000000000000000000000000E7311C +S315E07CFA70000000000040404040040020004044403C +S315E07CFA8060000000000000004000000000404001F3 +S315E07CFA904008004001000800000000404040400073 +S315E07CFAA00000000000004002001000C04240500010 +S315E07CFAB080000040000000000000000000004004E0 +S315E07CFAC000200000040060000000000000404000D0 +S315E07CFAD00000000000014008000001000800000072 +S315E07CFAE00000004040000000000000000002001022 +S315E07CFAF00080024050008000000000404000000092 +S315E07CFB00000000000004002000000400200000004B +S315E07CFB10000000000000000000000001000800403A +S315E07CFB20010008004000000000000000000000002A +S315E07CFB30000000020010008002001000800000003F +S315E07CFB40008080000000000000000004002000002F +S315E07CFB50040020000000000000000000000000001F +S315E07CFB6000010008004001000800400000000000A1 +S315E07CFB70000000000000000000020010008002008F +S315E07CFB801000800000000000000000000000000083 +S315E07CFB9000040020000004002000000000000000BB +S315E07CFBA000000000000000010008004001000800A1 +S315E07CFBB040000000000000000000000000000002A1 +S315E07CFBC000100080020010008000000000000000B1 +S315E07CFBD0000000000000000400200000040020007B +S315E07CFBE0000000000000009F4D0000000000400087 +S315E07CFBF000000000000040400040000000004000A3 +S315E07CFC0040000000000000004000000040000000D2 +S315E07CFC100000000040404000000000000000400082 +S315E07CFC2000000000400040000000000000400000B2 +S315E07CFC300000000000004040000000000000404062 +S315E07CFC400000000000004040000000000000404052 +S315E07CFC5000000000000000000000000040400000C2 +S315E07CFC6000000000000000000000000040400000B2 +S315E07CFC7000000000404000000000000000000000A2 +S315E07CFC800000000000000000000000000000000012 +S315E07CFC900000000000000000000000000000000002 +S315E07CFCA000000000000000000000000000000000F2 +S315E07CFCB000000000000000000000000000000000E2 +S315E07CFCC000000000000000000000000000000000D2 +S315E07CFCD000000000000000000000000000000000C2 +S315E07CFCE000000000000000000000000000000000B2 +S315E07CFCF000000000000000000000000000000000A2 +S315E07CFD000000000000000000000000000000000091 +S315E07CFD100000000000000000000000000000000081 +S315E07CFD200000000000000000000000000000000071 +S315E07CFD300000000000000000000000000000000061 +S315E07CFD400000000000000000000000000000000051 +S315E07CFD500000000000000000000000000000000041 +S315E07CFD602359000000000040404040000000004075 +S315E07CFD7040004000000000000040400000000040E1 +S315E07CFD804040400000000000000000000040404091 +S315E07CFD9040000000000000004000000000404040C1 +S315E07CFDA04000000000400000000000000000000071 +S315E07CFDB04000000000000000400000000000004021 +S315E07CFDC04000000000000000400000000000000051 +S315E07CFDD00000000000404000000000000000000041 +S315E07CFDE000000000004040000000000000404000B1 +S315E07CFDF000000000000000000000000000000000A1 +S315E07CFE000000000000000000000000000000000090 +S315E07CFE100000000000000000000000000000000080 +S315E07CFE200000000000000000000000000000000070 +S315E07CFE300000008080000000000000000000000060 +S315E07CFE400000000000000000000000000000000050 +S315E07CFE500000000000000000000000000000000040 +S315E07CFE600000000000000000000000000000000030 +S315E07CFE700000000000000000000000000000000020 +S315E07CFE800000000000000000000000000000000010 +S315E07CFE900000000000000000000000000000000000 +S315E07CFEA000000000000000000000000000000000F0 +S315E07CFEB000000000000000000000000000000000E0 +S315E07CFEC000000000000000000000000000000000D0 +S315E07CFED0000000000000000000424B000080800033 +S315E07CFEE040000000000000004040000000000000F0 +S315E07CFEF04000000000000000000000000000000060 +S315E07CFF0000000000000040404000000000000000CF +S315E07CFF1040000000000040000000000000000040BF +S315E07CFF20000000000000000000000000000000006F +S315E07CFF30000000000000000000000000000000005F +S315E07CFF40000000000000000000000000000000004F +S315E07CFF50000000000000000000000000000000003F +S315E07CFF60000000000000000000000000000000002F +S315E07CFF70000000000000000000000000000000001F +S315E07CFF80000000000000000000000000000000000F +S315E07CFF9000000000000000000000000000000000FF +S315E07CFFA000000000000000000000000080800000EF +S315E07CFFB000000000000000000000000000000000DF +S315E07CFFC000000000000000000000000000000000CF +S315E07CFFD000000000000000000000000000000000BF +S315E07CFFE000000000000000000000000000000000AF +S315E07CFFF0000000000000000000000000000000009F +S315E07D0000000000000000000000000000000000008D +S315E07D0010000000000000000000000000000000007D +S315E07D0020000000000000000000000000000000006D +S315E07D0030000000000000000000000000000000005D +S315E07D0040000000000000000000000000000000014C +S315E07D005001003B79000000000040004040000000C8 +S315E07D0060000000404000000000400000400000002D +S315E07D0070004040404000000000000000000000001D +S315E07D0080004000000000000000404000000000400D +S315E07D0090004000000000004040000000000000003D +S315E07D00A0000040000000000000004000000000006D +S315E07D00B0000000000000000000004000000000009D +S315E07D00C000000000000000000000000000000000CD +S315E07D00D000000000000000000000000000000000BD +S315E07D00E000000000000000000000000000000000AD +S315E07D00F0000000000000000000000000000000009D +S315E07D0100000000000000000000000000000000008C +S315E07D0110000000000000000000000000000000007C +S315E07D0120000000000080800000000000000000006C +S315E07D0130000000000000000000000000000000005C +S315E07D0140000000000000000000000000000000004C +S315E07D0150000000000000000000000000000000003C +S315E07D0160000000000000000000000000000000002C +S315E07D0170000000000000000000000000000000001C +S315E07D0180000000000000000000000000000000000C +S315E07D019000000000000000000000000000000000FC +S315E07D01A000000000000000000000000000000000EC +S315E07D01B000000000000000000000000000000000DC +S315E07D01C000000000000000000000009771000000C4 +S315E07D01D000000000404000000000000000400000FC +S315E07D01E0000000404000000000004040404000002C +S315E07D01F0000000000000000000000000000000009C +S315E07D0200000000000000000000004000000000004B +S315E07D021000000000000000000000404000000000FB +S315E07D0220000040400000000000004040000000006B +S315E07D023000004040000000000000000000000000DB +S315E07D024040400000000000000000000000000000CB +S315E07D0250404000000000000040400000000000003B +S315E07D0260000000000000000000000000000000002B +S315E07D0270000000000000000000000000000000001B +S315E07D0280000000000000000000000000000000000B +S315E07D029000000000000000000000000000000000FB +S315E07D02A000000000000000000000000000000000EB +S315E07D02B000000000000000000000000000000000DB +S315E07D02C000000000000000000000000000000000CB +S315E07D02D000000000000000000000000000000000BB +S315E07D02E000000000000000000000000000000000AB +S315E07D02F0000000000000000000000000000000009B +S315E07D0300000000000000000000000000000000008A +S315E07D0310000000000000000000000000000000007A +S315E07D0320000000000000000000000000000000006A +S315E07D0330000000000000000000000000000000005A +S315E07D034000000000FA5600000000004000000000BA +S315E07D035000000000000040000000004040404000FA +S315E07D0360000000000000000000000000000000002A +S315E07D0370000000400000000000000040400000005A +S315E07D0380004000400000000000404000000000000A +S315E07D0390000000004000000000000000400000007A +S315E07D03A000000000000000000000000040000000AA +S315E07D03B000000000000000000000000000000000DA +S315E07D03C000000000000000000000000000000000CA +S315E07D03D000000000000000000000000000000000BA +S315E07D03E000000000000000000000000000000000AA +S315E07D03F0000000000000000000000000000000009A +S315E07D04000000000000000000000000000000000089 +S315E07D04100000000000000000000000000000000079 +S315E07D04200000000000000000000000000000000069 +S315E07D04300000000000000000000000000000000059 +S315E07D04400000000000000000000000000000000049 +S315E07D04500000000000000000000000000000000039 +S315E07D04600000000000000000000000000000000029 +S315E07D04700000000000000000000000000000000019 +S315E07D04800000000000000000000000000000000009 +S315E07D049000000000000000000000000000000000F9 +S315E07D04A000000000000000000000000000000000E9 +S315E07D04B000000000000000000000000000E38C006A +S315E07D04C000000000000000000000000400200000A5 +S315E07D04D00000000040400000000000000000000039 +S315E07D04E00001000800400000000000000000000060 +S315E07D04F00000000000000000000200100080000007 +S315E07D05000000000000000000000000000000000088 +S315E07D05100004002000000000000000000000000054 +S315E07D0520000000000000000100080040000000001F +S315E07D05300000000000000000000000400000000216 +S315E07D054000100080000000000000000000000000B8 +S315E07D05500000000000000004002000000000000014 +S315E07D0560000000000000000000000000000100081F +S315E07D057000400000000000000000000000000000D8 +S315E07D05800000000000020010008000000000000076 +S315E07D059000000000000000000000000000040020D4 +S315E07D05A000000000000000000000000000000000E8 +S315E07D05B0000000010008004000000000000000008F +S315E07D05C00000000000000000000000020010008036 +S315E07D05D000000000000000000000000000000000B8 +S315E07D05E00000000400200000000000000000000084 +S315E07D05F0000000000000000000010008004000004F +S315E07D06000000000000000000000000000000000087 +S315E07D061000020010008000000000000000000000E5 +S315E07D06200000000000000000000400200000000043 +S315E07D0630000000000000A03E0000000000004040F9 +S315E07D064040000000040020000000000000004000A3 +S315E07D0650400000000000000000000100080040406E +S315E07D066000000000004000000000000000000000E7 +S315E07D0670000002401000C000000000000000000005 +S315E07D06800000000000004000000004002000400063 +S315E07D06900000000000004000000000000000400077 +S315E07D06A0010008004040000000000000400000001E +S315E07D06B000000040000000000200104080000000C5 +S315E07D06C00000004000000000000000000000000087 +S315E07D06D00400200000000000000000000000000093 +S315E07D06E0000000000000010008004000000000005E +S315E07D06F00000000000000000000000000000020095 +S315E07D07001000800000000000008000000000000076 +S315E07D07100000000000000400200000000000000052 +S315E07D0720000000000000000000000000010008005D +S315E07D07304000000000000000000000000000000016 +S315E07D074000000000020010008000000000000000B4 +S315E07D07500000000000000000000000000400200012 +S315E07D07600000000000000000000000000000000026 +S315E07D077000000100080040000000000000000000CD +S315E07D07800000000000000000000002001000800074 +S315E07D079000000000000000000000000000000000F6 +S315E07D07A0000004002000000000000000000000F7CB +S315E07D07B0280000000000000000000000000400208A +S315E07D07C040000000000000404000000000000040C6 +S315E07D07D0400000010008004000000000000000002D +S315E07D07E000000000000040000000000200100080D4 +S315E07D07F00000000000400000000000000000000056 +S315E07D08000000000400200000000000000000000061 +S315E07D0810000000000000000000010008004000002C +S315E07D08200000000000000000000000000000000065 +S315E07D083000020010008000000000000000000000C3 +S315E07D08400000000000000000000400200000000021 +S315E07D08500000000000000000000000000000000134 +S315E07D086000080040000000000000000000000000DD +S315E07D08700000000000000002001000800000000083 +S315E07D08800000800000000000000000000000000481 +S315E07D089000200000000000000000000000000000D5 +S315E07D08A0000000000001000800400000000000009C +S315E07D08B000000000000000000000000000020010C3 +S315E07D08C00080000000000000000000000000000045 +S315E07D08D00000000000040020000000000000000091 +S315E07D08E0000000000000000000000001000800405C +S315E07D08F00000000000000000000000000000000095 +S315E07D090000000002001000800000000000000000F2 +S315E07D09100000000000000000000000040020000050 +S315E07D0920000000000000000062E6000003031C1CDE +S315E07D0930606000000303181C40600000070738383C +S315E07D09404040000007073838C0C000000607303851 +S315E07D095080C001010E0E7070808001010E0E7070F8 +S315E07D0960808001010C0E6070008003031C1CE0E0BA +S315E07D0970000003031C1CE0E000000303181CC0E03C +S315E07D0980000007073838C0C0000007073838C0C008 +S315E07D099000000607303880C001010E0E7070808041 +S315E07D09A001010E0E7070808001010C0E607000807A +S315E07D09B003031C1CE0E0000003031C1CE0E00000D8 +S315E07D09C00303181CC0E0000007073838C0C00000EC +S315E07D09D007073838C0C000000607303880C00101FF +S315E07D09E00E0E7070808001010E0E707080800101A8 +S315E07D09F00C0E6070008003031C1CE0E00000030326 +S315E07D0A001C1CE0E000000303181CC0E000000707A3 +S315E07D0A103838C0C0000007073838C0C00000060778 +S315E07D0A20303880C001010E0E7070808001010E0E9F +S315E07D0A307070808001010C0E6070008003031C1CC9 +S315E07D0A40E0E0000003031C1CE0E000000303181C4B +S315E07D0A50C0E0000007073838C0C000000707383817 +S315E07D0A60C0C000000607303880C001010E0E7070F0 +S315E07D0A70808001010E0E7070808001010C0E607029 +S315E07D0A80008003031C1CE0E0000002021C1CE0E089 +S315E07D0A9000000202181CC0E0000006063838C0C01F +S315E07D0AA000727200000080000040000000004000FF +S315E07D0AB00000000000004000004000000000000053 +S315E07D0AC00000000000000000000000004000000083 +S315E07D0AD00000000040000040400000004000004073 +S315E07D0AE00000000040000040400000404000004023 +S315E07D0AF04000000040000040400000004000004013 +S315E07D0B004000000040000040400000000000000082 +S315E07D0B1000000000000040000000400000400000B2 +S315E07D0B2000004000004040000000400000404000E2 +S315E07D0B300000000000000000000000000000000052 +S315E07D0B400000000000000000000000000000000042 +S315E07D0B500000000000000000000000000000000032 +S315E07D0B600000000000000000000000000000000022 +S315E07D0B700000000000000000000000000000000012 +S315E07D0B800000000000000000000000000000000002 +S315E07D0B9000000000000000000000000000000000F2 +S315E07D0BA000000000000000000000000000000000E2 +S315E07D0BB000000000000000000000000000000000D2 +S315E07D0BC000000000000000000000000000000000C2 +S315E07D0BD000000000000000000000000000000000B2 +S315E07D0BE000000000000000000000000000000000A2 +S315E07D0BF00000000000000000000000000000000092 +S315E07D0C000000000000000000000000000000000081 +S315E07D0C1000000000000000010000B530000000008B +S315E07D0C200000000008000000000000000000000059 +S315E07D0C300000000000000000000000000000000051 +S315E07D0C400000000000000000000000000000000041 +S315E07D0C500000000000000000000000000000000031 +S315E07D0C6002000000000000002000000000000000FF +S315E07D0C700000000000000000000000000000000011 +S315E07D0C800080000000000000000000400000400001 +S315E07D0C9000000000000000000000000000000000F1 +S315E07D0CA000000000000000000000000000000000E1 +S315E07D0CB00000000000000000000000000000004091 +S315E07D0CC000000000000000000000000000000000C1 +S315E07D0CD02000000000000000000000000000008011 +S315E07D0CE01000000000000000000000000000000091 +S315E07D0CF00000000000000000000000000000000091 +S315E07D0D000000000000000000000000000000000080 +S315E07D0D100000000000000000000000000000000070 +S315E07D0D200000000000000000000000000000000060 +S315E07D0D3000000000000000000000800000000000D0 +S315E07D0D400000000000000000000000000000000040 +S315E07D0D5000004000000000000000000000000000F0 +S315E07D0D600000000000000000000000000000000020 +S315E07D0D7000000000400000000000000000000000D0 +S315E07D0D8000200000000000000000000000000000E0 +S315E07D0D900000005C5900008000404000000000003B +S315E07D0DA00000400000000000400000004000000020 +S315E07D0DB00000400000800000000000000000000010 +S315E07D0DC00000000000000000400040000040000000 +S315E07D0DD000400000000000000040004040000000B0 +S315E07D0DE040004000000000400000000000000040A0 +S315E07D0DF00000000000000000000000000000000090 +S315E07D0E00000000000000000000000000000040003F +S315E07D0E1000000000000000004000004040000000AF +S315E07D0E20000000004000000000000000000000001F +S315E07D0E30000000000000000000000000000000004F +S315E07D0E40000000000000000000000000000000003F +S315E07D0E50000000000000000000000000000000002F +S315E07D0E60000000000000000000000000800000009F +S315E07D0E70000000000000000000000000008000008F +S315E07D0E8000000000000000000000000000000000FF +S315E07D0E9000000000000000000000000000000000EF +S315E07D0EA000000000000000000000000000000000DF +S315E07D0EB000000000000000000000000000000000CF +S315E07D0EC000000000000000000000000000000000BF +S315E07D0ED000000000000000000000000000000000AF +S315E07D0EE0000000000000002000000000000000007F +S315E07D0EF0008000000000000000000000000000000F +S315E07D0F0000000000000000000000210063560000A4 +S315E07D0F10000040000000000000000000000000002E +S315E07D0F20000040000000404000004000000000005E +S315E07D0F30000000000000000000000000000000004E +S315E07D0F40004000000040000000400200400000003C +S315E07D0F5000400000404000000040000040004000AE +S315E07D0F60400000000000000040000000000000009E +S315E07D0F70000000000000004000000000400000008E +S315E07D0F80004000000040000040000000000000003E +S315E07D0F9000000040004000000000008000000000EE +S315E07D0FA0000000000000008000002000000000003E +S315E07D0FB000000000000000000000000000000000CE +S315E07D0FC0800000000000000000000000000000003E +S315E07D0FD000000000000000000000000000000000AE +S315E07D0FE0000000000080000000000000000000001E +S315E07D0FF0000000000000000000000000000000008E +S315E07D1000000000000000000000000000000000007D +S315E07D1010000000000000000000000000000000006D +S315E07D102080000000000000000000000000000000DD +S315E07D1030000000000000000000000000000000004D +S315E07D104000000000000000000000000000004000FD +S315E07D1050000000000000000000000000000000002D +S315E07D1060000000000000000000000000000000001D +S315E07D1070000000000000000000000000000000000D +S315E07D10800000000000388C000000000000400000F9 +S315E07D109000000000004000000000000000000000AD +S315E07D10A00000000000400080080000000000000015 +S315E07D10B0000000000000000000000000400000008D +S315E07D10C000000000000000000000000000000000BD +S315E07D10D0000000000000000020000000000000008D +S315E07D10E0000000000000000000000000000000009D +S315E07D10F0000000000000000000000000000000008D +S315E07D110000000000000000000000004000800000BC +S315E07D1110000000000000004000000000000000002C +S315E07D1120000000000000000000000000000000005C +S315E07D1130000000000000000000000040000000000C +S315E07D1140000000000000000000000000100000002C +S315E07D115000000080000000000000000000000000AC +S315E07D1160000000000000000000000000000080009C +S315E07D1170000000000000000000000000000000000C +S315E07D118000000000000000000000000000000000FC +S315E07D119000000000000000000000000000000000EC +S315E07D11A000000000000000000000000000000000DC +S315E07D11B000000000000000000000000000000000CC +S315E07D11C0000040000000000000000000000000007C +S315E07D11D0000000000000000020000000000000008C +S315E07D11E0000000800000000000000000000000001C +S315E07D11F00000000000200000000000000020869531 +S315E07D120000000000800000000000000000800080FB +S315E07D121000000000000000000080000000000000EB +S315E07D1220000000000000000000000000000000005B +S315E07D1230000000000000000000000000000000004B +S315E07D124000000000000000800000000000000000BB +S315E07D1250000000000000000000000000000000002B +S315E07D1260000000000000000000000000000000001B +S315E07D127000000000000000000000000040000000CB +S315E07D128000000000000000000000000000000000FB +S315E07D129000000000000000000000000000000000EB +S315E07D12A000000000000000000000000000000000DB +S315E07D12B000000000000000000000000000000000CB +S315E07D12C000000000000000000000000000000000BB +S315E07D12D000000000000000000000000000000000AB +S315E07D12E0000000000000000000000000000000009B +S315E07D12F0000000000000000000000000000000008B +S315E07D1300000000000000000000000000000000007A +S315E07D1310000000000000000000000000000000006A +S315E07D1320000000000000000000000000000000005A +S315E07D1330000000000000000000000000000000004A +S315E07D1340000000000000000000000000000000003A +S315E07D1350000000000000000000000000000000002A +S315E07D1360000000000000000000000000000000001A +S315E07D1370000000000000009EA400008080000000C8 +S315E07D1380000080000000000000000000000000007A +S315E07D1390800000000000000000000000000000006A +S315E07D13A000000000000000000000000000000000DA +S315E07D13B0000000000000000080000000000000004A +S315E07D13C000000000000000000000000000000000BA +S315E07D13D000000000000000000000000000000000AA +S315E07D13E0000000000000000000000000000000009A +S315E07D13F0000000000000000000000000000000008A +S315E07D14000000000000000000000000000000000079 +S315E07D141000000000800000000000000000000000E9 +S315E07D14200000000000000000000000000000000059 +S315E07D14300000000000000000000000000000000049 +S315E07D14400000000000000000000000000000000039 +S315E07D14500000000000000000000000000000000029 +S315E07D14600000000000000000000000000000000019 +S315E07D14700000000000000000000000000000000009 +S315E07D148000000000000000000000000000000000F9 +S315E07D149000000000000000000000000000000000E9 +S315E07D14A000000000000000000000000000000000D9 +S315E07D14B000000000000000000000000000000000C9 +S315E07D14C000000000000000000000000000000000B9 +S315E07D14D00000000000000000000080000000000029 +S315E07D14E00000000000000000000000000001010097 +S315E07D14F0DFDD00000000000000000000800000004D +S315E07D150000800000000000000000808000000000F8 +S315E07D15100000000000000000000000000000000068 +S315E07D15200000000000000000000000000000000058 +S315E07D15300080000000000000000080000000000048 +S315E07D15400000000000000000000000000000000038 +S315E07D15500000000000000000000000000000000028 +S315E07D156000000000000000000000000000004000D8 +S315E07D15700000000000000000000000000000000008 +S315E07D15800000000000000000000000000080000078 +S315E07D159000000000000000000000000000000000E8 +S315E07D15A000000000000000000000000000000000D8 +S315E07D15B000000000000000000000000000000000C8 +S315E07D15C000000000000000000000000000000000B8 +S315E07D15D000000000000000000000000000000000A8 +S315E07D15E00000000000000000000000000000000098 +S315E07D15F00000000000000000000000000000000088 +S315E07D16000000000000000000000000000000000077 +S315E07D16100000000000000000000000000000000067 +S315E07D16200000000000000000000000000000000057 +S315E07D16300000000000000000000000000000000047 +S315E07D16400000000000000000000000000000000037 +S315E07D165000000000800000000000000000000000A7 +S315E07D16600000000000000000002C5000000000009B +S315E07D16700000000000000000000000000000000007 +S315E07D168000002000000000000000000000000000D7 +S315E07D169000000020000000000000000000000000C7 +S315E07D16A000000000000000000000000000000000D7 +S315E07D16B00040000000000000008000800000000087 +S315E07D16C00000000000000000000000000000400077 +S315E07D16D000000000000000000000000000000000A7 +S315E07D16E00000000000000000000000000000000097 +S315E07D16F00000000000000000000000000000000087 +S315E07D17000000000000000000000000000000000076 +S315E07D171000000000000000000000008000000000E6 +S315E07D172000000000000000000000000000800000D6 +S315E07D17300000000000000000000000000000000046 +S315E07D17400000000000000000000000000000000036 +S315E07D17500000000000000000000000000000000026 +S315E07D17600000000000000000000000000000000016 +S315E07D17700000000000000000000000000000000006 +S315E07D17800000000000000000008000000000000076 +S315E07D17900000008000000000000000000000000066 +S315E07D17A000000000000000000000200000000000B6 +S315E07D17B08000000000000000000000000000000046 +S315E07D17C000000000000000000000000000000000B6 +S315E07D17D000000000000000000000000000000000A6 +S315E07D17E000005C5300000000000000008000000067 +S315E07D17F00000000000000000008000000000000006 +S315E07D18000000000000000000000000000000000075 +S315E07D18100000000000000000000000000000000065 +S315E07D18200000000000000000000000000000000055 +S315E07D18300080008000000000000000000000000045 +S315E07D18400000000000000000000000000000000035 +S315E07D18500000000000000000000000000000000025 +S315E07D18600000000000000000000000000000000015 +S315E07D18700000000000000000000000000000000005 +S315E07D188000000000000000000000000000000000F5 +S315E07D189000000000000000000000000000000000E5 +S315E07D18A000000000000000000000000000000000D5 +S315E07D18B000000000000000000000000000000000C5 +S315E07D18C000000000000000000000000000000000B5 +S315E07D18D000000000000000000000000000000000A5 +S315E07D18E00000000000000000000000000000000095 +S315E07D18F00000000000000000000000000000000085 +S315E07D19000000000000000000000000000000000074 +S315E07D19100000000000000000000000000000000064 +S315E07D19200000000000000000000000000000000054 +S315E07D19300000000000000000000000000000000044 +S315E07D19400000000000000000000000000000000034 +S315E07D19500000000000000000000000ABD6000000A3 +S315E07D19600000000000000000000000000000000014 +S315E07D19700000000000000000000000000000000004 +S315E07D19800000000000000000000000008000000074 +S315E07D199000000000000000000000000000000000E4 +S315E07D19A000000000000000000000000000000000D4 +S315E07D19B000000000000000000000000000000000C4 +S315E07D19C04000000000000000000000000000000074 +S315E07D19D000000000000000000000000000000000A4 +S315E07D19E00000000000000000000000800000000014 +S315E07D19F00000000000000000000000000000000084 +S315E07D1A000000000000000000000000000000000073 +S315E07D1A1000000000000000000000000000000080E3 +S315E07D1A200000000000000000000000000000000053 +S315E07D1A300000000000000000000000000000000043 +S315E07D1A400000000000000000000000000000000033 +S315E07D1A500000000000000000000000000000000023 +S315E07D1A600000000000000000000000000000000013 +S315E07D1A700000000000000000000000000000000003 +S315E07D1A8000000000000000000000000000000000F3 +S315E07D1A9000000000000000000000000000000000E3 +S315E07D1AA000000000000000000000000000000000D3 +S315E07D1AB000000000000000000000000000000000C3 +S315E07D1AC000000000000000000000000000000000B3 +S315E07D1AD0000000006701000000000000000000003B +S315E07D1AE00000000000000000000000000000200073 +S315E07D1AF00000000000000000000000000020000063 +S315E07D1B000000000000000000000000000000000072 +S315E07D1B1000000000000000000080000040000000A2 +S315E07D1B200000000000000000000000000000000052 +S315E07D1B300000000000000000000000000000000042 +S315E07D1B400000000000000000000000000000000032 +S315E07D1B500000000000000000000000000000000022 +S315E07D1B600000000000000000000000000000000012 +S315E07D1B700000000000000000000000000000000002 +S315E07D1B800000000000800000000000000000000072 +S315E07D1B9000000000000000000000000000000000E2 +S315E07D1BA000000000000000000000000000000000D2 +S315E07D1BB000000000000000000000000000000000C2 +S315E07D1BC000000000000000000000000000000000B2 +S315E07D1BD000000000000000000000000000000000A2 +S315E07D1BE00000000000000000000000000000000092 +S315E07D1BF00000000080000000000000000080000082 +S315E07D1C000000000000000000000000000000000071 +S315E07D1C1000000000000020000000000080000000C1 +S315E07D1C200000000000000000000000000000000051 +S315E07D1C300000000000000000000000000000000041 +S315E07D1C400000000000000000000000000072260099 +S315E07D1C5000800000000000000000000000000000A1 +S315E07D1C600000000000000000000000000000000011 +S315E07D1C700000000000000000000000000000000001 +S315E07D1C8000000000000000000000000000000000F1 +S315E07D1C9000000000000000000000000000000000E1 +S315E07D1CA000000000000000000000000000000000D1 +S315E07D1CB000000000000000000000000000000000C1 +S315E07D1CC000000000000000000000000000000000B1 +S315E07D1CD000000000000000000000000000000000A1 +S315E07D1CE00000000000000000000000000000000091 +S315E07D1CF00000000000000000000000000000000081 +S315E07D1D000000000000000000000000000000000070 +S315E07D1D100000000000000000000000000000000060 +S315E07D1D200000000000000000000000000000000050 +S315E07D1D300000000000000000000000000000000040 +S315E07D1D400000000000000000000000000000000030 +S315E07D1D500000000000000000000000000000000020 +S315E07D1D600000000000000000000000000000000010 +S315E07D1D700000000000000000000000000000000000 +S315E07D1D8000000000000000000000000000000000F0 +S315E07D1D9000000000000000000000000000000000E0 +S315E07D1DA000000000000000000000000000000000D0 +S315E07D1DB000000000000000000000000000000000C0 +S315E07D1DC0000000000000BEAE000000000000000044 +S315E07D1DD000000000000000000000000000000000A0 +S315E07D1DE00000000000000000000000000000000090 +S315E07D1DF00000000000000000000000000000000080 +S315E07D1E00000000000000000000000000000000006F +S315E07D1E10000000000000000000000000000000005F +S315E07D1E20000000000000000000000000000000004F +S315E07D1E30000000000000000000000000000000003F +S315E07D1E40000000000000000000000000000000002F +S315E07D1E50000000000000000000000000000000001F +S315E07D1E60000000000000000000000000000000000F +S315E07D1E7000000000000000000000000000000000FF +S315E07D1E8000000000000000000000000000000000EF +S315E07D1E9000000000000000000000000000000000DF +S315E07D1EA000000000000000000000000000000000CF +S315E07D1EB000000000000000000000000000000000BF +S315E07D1EC000000000000000000000000000000000AF +S315E07D1ED0000000000000000000000000000000009F +S315E07D1EE0000000000000000000000000000000008F +S315E07D1EF0000000000000000000000000000000007F +S315E07D1F00000000000000000000000000000000006E +S315E07D1F10000000000000000000000000000000005E +S315E07D1F20000000000000000000000000000000004E +S315E07D1F300000000000000000000000000000003E00 +S315E07D1F4049000000000000000000000000000000E5 +S315E07D1F50000000000000000000000000000000001E +S315E07D1F60000000000000000000000000000000000E +S315E07D1F7000000000000000000000000000000000FE +S315E07D1F8000000000000000000000000000000000EE +S315E07D1F9000000000000000000000000000000000DE +S315E07D1FA000000000000000000000000000000000CE +S315E07D1FB000000000000000000000000000000000BE +S315E07D1FC000000000000000000000000000000000AE +S315E07D1FD0000000000000000000000000000000009E +S315E07D1FE0000000000000000000000000000000008E +S315E07D1FF0000000000000000000000000000000007E +S315E07D2000000000000000000000000000000000006D +S315E07D2010000000000000000000000000000000005D +S315E07D2020000000000000000000000000000000004D +S315E07D2030000000000000000000000000000000003D +S315E07D2040000000000000000000000000000000002D +S315E07D2050000000000000000000000000000000001D +S315E07D2060000000000000000000000000000000000D +S315E07D207000000000000000000000000000000000FD +S315E07D208000000000000000000000000000000000ED +S315E07D209000000000000000000000000000000000DD +S315E07D20A000000000000000000000000000000000CD +S315E07D20B000000000000100006F8900000080000044 +S315E07D20C000000000000000000000000000000000AD +S315E07D20D0000000000000000000000000000000009D +S315E07D20E0000000000000000000000000000000008D +S315E07D20F0000000000000000000000000000000007D +S315E07D2100000000000000000000000000000000006C +S315E07D2110000000000000000000000000000000005C +S315E07D2120000000000000000000000000000000004C +S315E07D2130000000000000000000000000000000003C +S315E07D2140000000000000000000000000000000002C +S315E07D2150000000000000000000000000000000001C +S315E07D2160000000000000000000000000000000000C +S315E07D217000000000000000000000000000000000FC +S315E07D218000000000000000000000000000000000EC +S315E07D219000000000000000000000000000000000DC +S315E07D21A000000000000000000000000000000000CC +S315E07D21B000000000000000000000000000000000BC +S315E07D21C000000000000000000000000000000000AC +S315E07D21D0000000000000000000000000000000009C +S315E07D21E0000000000000000000000000000000008C +S315E07D21F0000000000000000000000000000000007C +S315E07D2200000000000000000000000000000000006B +S315E07D2210000000000000000000000000000000005B +S315E07D2220000000000000000000000000000000004B +S315E07D2230004B080080000000000000000000000068 +S315E07D2240000000000000000000000000000000002B +S315E07D2250000000000000800000000000000000801B +S315E07D2260000000000000000000000080000000008B +S315E07D227000000000000000000000000000000000FB +S315E07D228000000000000000000000000000000000EB +S315E07D2290008000000000000000000000000000005B +S315E07D22A000000000000000000000000000000000CB +S315E07D22B000000000000000000000000000000000BB +S315E07D22C000000000000000000000000000000000AB +S315E07D22D0000000000000000000000000000000009B +S315E07D22E0000000000000000000000000000000008B +S315E07D22F0000000000000000000000000000000007B +S315E07D2300000000000000000000000000000000006A +S315E07D2310000000000000000000000000000000005A +S315E07D2320000000000000000000000000000000004A +S315E07D2330000000000000000000000000000000003A +S315E07D2340000000000000000000000000000000002A +S315E07D2350000000000000000000000000000000001A +S315E07D2360000000000000000000000000000000000A +S315E07D237000000000000000000000000000000000FA +S315E07D238000000000000000000000000000000000EA +S315E07D239000000000000000000000000000000000DA +S315E07D23A000000000000000000100DC0200000000EB +S315E07D23B000000000000000000000000000000000BA +S315E07D23C000000000000000000000000000000000AA +S315E07D23D0000000000000000000000000000000009A +S315E07D23E0000000000000000000000000000000008A +S315E07D23F0000000000000000000000000000000007A +S315E07D24000000000000000000000000000000000069 +S315E07D24100000000000000000000000000000000059 +S315E07D24200000000000000000000000000000000049 +S315E07D24300000000000000000000000000000000039 +S315E07D24400000000000000000000000000000000029 +S315E07D24500000000000000000000000000000000019 +S315E07D24600000000000000000000000000000000009 +S315E07D247000000000000000000000000000000000F9 +S315E07D248000000000000000000000000000000000E9 +S315E07D249000000000000000000000000000000000D9 +S315E07D24A000000000000000000000000000000000C9 +S315E07D24B000000000000000000000000000000000B9 +S315E07D24C000000000000000000000000000000000A9 +S315E07D24D00000000000000000000000000000000099 +S315E07D24E00000000000000000000000000000000089 +S315E07D24F00000000000000000000000000000000079 +S315E07D25000000000000000000000000000000000068 +S315E07D25100000000000000000000000000000000058 +S315E07D25200000003E490000808000000000000000C1 +S315E07D25300000000000008000000080000000000038 +S315E07D25400000000000000000000000000000000028 +S315E07D25500000000000000000000000000000000018 +S315E07D25600000000000000000000000000000000008 +S315E07D257000000000000000000000000000000000F8 +S315E07D258000000000000000000000000000000000E8 +S315E07D259000000000000000000000000000000000D8 +S315E07D25A000000000000000000000000000000000C8 +S315E07D25B000000000000000000000000000000000B8 +S315E07D25C000000000000000000000000000000000A8 +S315E07D25D00000000000000000000000000000000098 +S315E07D25E00000000000000000000000000000000088 +S315E07D25F00000000000000000000000000000000078 +S315E07D26000000000000000000000000000000000067 +S315E07D26100000000000000000000000000000000057 +S315E07D26200000000000000000000000000000000047 +S315E07D26300000000000000000000000000000000037 +S315E07D26400000000000000000000000000000000027 +S315E07D26500000000000000000000000000000000017 +S315E07D26600000000000000000000000000000000007 +S315E07D267000000000000000000000000000000000F7 +S315E07D268000000000000000000000000000000000E7 +S315E07D26900000000000000000000000005F55000023 +S315E07D26A00000800000000000000000000000000047 +S315E07D26B000800000000000000000000000800000B7 +S315E07D26C000000000000000000000000000000000A7 +S315E07D26D00000000000000000000000000000000097 +S315E07D26E00000008000000000000000000000000007 +S315E07D26F00000000000000000000000000000000077 +S315E07D27000000000000000000000000000000000066 +S315E07D27100000000000000000000000000000000056 +S315E07D27200000000000000000000000000000000046 +S315E07D27300000000000000000000000000000000036 +S315E07D27400000000000000000000000000000000026 +S315E07D27500000000000000000000000000000000016 +S315E07D27600000000000000000000000000000000006 +S315E07D277000000000000000000000000000000000F6 +S315E07D278000000000000000000000000000000000E6 +S315E07D279000000000000000000000000000000000D6 +S315E07D27A000000000000000000000000000000000C6 +S315E07D27B000000000000000000000000000000000B6 +S315E07D27C000000000000000000000000000000000A6 +S315E07D27D00000000000000000000000000000000096 +S315E07D27E00000000000000000000000000000000086 +S315E07D27F00000000000000000000000000000000076 +S315E07D28000000000000000000000000000000000065 +S315E07D28100000000000C62B00008080000000000064 +S315E07D28200000000000000000000000000000000045 +S315E07D28300000000000000000000000000000000035 +S315E07D28400000000000000000000000000000000025 +S315E07D28500000000000000000000000000000000015 +S315E07D28600000000000000000008000000080000005 +S315E07D28700080000000000000000000000000000075 +S315E07D288000000000000000000000000000000000E5 +S315E07D289000000000000000000000000000000000D5 +S315E07D28A000000000000000000000000000000000C5 +S315E07D28B000000000000000000000000000000000B5 +S315E07D28C000000000000000000000000000000000A5 +S315E07D28D00000000000000000000000000000000095 +S315E07D28E00000000000000000000000000000000085 +S315E07D28F00000000000000000000000000000000075 +S315E07D29000000000000000000000000000000000064 +S315E07D29100000000000000000000000000000000054 +S315E07D29200000000000000000000000000000000044 +S315E07D29300000000000000000000000000000000034 +S315E07D29400000000000000000000000000000000024 +S315E07D29500000000000000000000000000000000014 +S315E07D29600000000000000000000000000000000004 +S315E07D297000000000000000000000000000000000F4 +S315E07D29800000000000000000000000010100F40CE2 +S315E07D299000000000000000000000000000000000D4 +S315E07D29A000000000000000000000000000000000C4 +S315E07D29B000000000000000000000000000000000B4 +S315E07D29C000000000000000000000000000000000A4 +S315E07D29D00000000000000000000000000000000094 +S315E07D29E00000000000000000000000000000000084 +S315E07D29F00000000000000000000000000000000074 +S315E07D2A000000000000000000000000000000000063 +S315E07D2A100000000000000000000000000000000053 +S315E07D2A200000000000000000000000000000000043 +S315E07D2A300000000000000000000000000000000033 +S315E07D2A400000000000000000000000000000000023 +S315E07D2A500000000000000000000000000000000013 +S315E07D2A600000000000000000000000000000000003 +S315E07D2A7000000000000000000000000000000000F3 +S315E07D2A8000000000000000000000000000000000E3 +S315E07D2A9000000000000000000000000000000000D3 +S315E07D2AA000000000000000000000000000000000C3 +S315E07D2AB000000000000000000000000000000000B3 +S315E07D2AC000000000000000000000000000000000A3 +S315E07D2AD00000000000000000000000000000000093 +S315E07D2AE00000000000000000000000000000000083 +S315E07D2AF00000000000000000000000000000000073 +S315E07D2B00000000000000003E4900000000000000DB +S315E07D2B1000000000000000000000008000808000D2 +S315E07D2B200000000000000000800000008000000042 +S315E07D2B3000000000800000000000000000000000B2 +S315E07D2B400080000000000000000000000000800022 +S315E07D2B500000000000000000000080000000000092 +S315E07D2B600000000000000080000000000000000082 +S315E07D2B7000000000000000000000000000000000F2 +S315E07D2B8000000000000000000000000000000000E2 +S315E07D2B9000000000000000000000000000000000D2 +S315E07D2BA000000000000000000000000000000000C2 +S315E07D2BB000000000000000000000000000000000B2 +S315E07D2BC000000000000000000000000000000000A2 +S315E07D2BD00000000000000000000000000000000092 +S315E07D2BE00000000000000000000000000000000082 +S315E07D2BF00000000000000000000000000000000072 +S315E07D2C000000000000000000000000000000000061 +S315E07D2C100000000000000000000000000000000051 +S315E07D2C200000000000000000000000000000000041 +S315E07D2C300000000000000000000000000000000031 +S315E07D2C400000000000000000000000000000000021 +S315E07D2C500000000000000000000000000000000011 +S315E07D2C600000000000000000000000000000000001 +S315E07D2C7000000000000000000000000000000000F1 +S315E07D2C809F8E000000000000000000008000000034 +S315E07D2C900000800000800000800000000000000051 +S315E07D2CA000800000000000008000000000000000C1 +S315E07D2CB080000000000000000080000000000000B1 +S315E07D2CC00000000000000080000000000000000021 +S315E07D2CD00000000000008080000000000000808091 +S315E07D2CE00000000000000000000000000000000081 +S315E07D2CF00000000000000000000000000000000071 +S315E07D2D000000000000000000000000000000000060 +S315E07D2D100000000000000000000000000000000050 +S315E07D2D200000000000000000000000000000000040 +S315E07D2D300000000000000000000000000000000030 +S315E07D2D400000000000000000000000000000000020 +S315E07D2D500000000000000000000000000000000010 +S315E07D2D600000000000000000000000000000000000 +S315E07D2D7000000000000000000000000000000000F0 +S315E07D2D8000000000000000000000000000000000E0 +S315E07D2D9000000000000000000000000000000000D0 +S315E07D2DA000000000000000000000000000000000C0 +S315E07D2DB000000000000000000000000000000000B0 +S315E07D2DC000000000000000000000000000000000A0 +S315E07D2DD00000000000000000000000000000000090 +S315E07D2DE00000000000000000000000000000000080 +S315E07D2DF00000000000000000008A060000000000E0 +S315E07D2E000000000004002000000400200000000017 +S315E07D2E100000000000000000000081800800400105 +S315E07D2E2080880040000000008080000000000000F7 +S315E07D2E30000082801000800200100080000000000B +S315E07D2E4080800000000000000000040020008084F7 +S315E07D2E5080A00000000080808080000000000000EF +S315E07D2E60010008004001000800400000000000006D +S315E07D2E70000000000000000002001000800200104B +S315E07D2E80008000000000000000000000000000005F +S315E07D2E900400200000040020000000000000000087 +S315E07D2EA0000000000000010008004001000800402D +S315E07D2EB000000000000000000000000000000200AD +S315E07D2EC0100080020010008000000000000000007D +S315E07D2ED00000000000000400200000040020000047 +S315E07D2EE00000000000000000000000000100080076 +S315E07D2EF040010008004000000000000000000000E6 +S315E07D2F00000000000200100080020010008000003A +S315E07D2F10000000000000000000000000040020002A +S315E07D2F20000400200000000000000000000000001A +S315E07D2F30000001000800400100080040000000009C +S315E07D2F40000000000000000000000200100080028A +S315E07D2F50001000800000000000000000000000007E +S315E07D2F6000000400200000040020000000000000B6 +S315E07D2F70000072D2000000000000000000000000AA +S315E07D2F8000000000000000000000000000000000DE +S315E07D2F9000000080800000000080800000000000CE +S315E07D2FA0008080000000000000000080800000803E +S315E07D2FB000000000000000000080800000000000AE +S315E07D2FC0000000000000008080808000000000801E +S315E07D2FD0808080000000000000000000000000000E +S315E07D2FE0000000000000000000000000000000007E +S315E07D2FF0000000000000000000000000000000006E +S315E07D3000000000000000000000000000000000005D +S315E07D3010000000000000000000000000000000004D +S315E07D3020000000000000000000000000000000003D +S315E07D3030000000000000000000000000000000002D +S315E07D3040000000000000000000000000000000001D +S315E07D3050000000000000000000000000000000000D +S315E07D306000000000000000000000000000000000FD +S315E07D307000000000000000000000000000000000ED +S315E07D308000000000000000000000000000000000DD +S315E07D309000000000000000000000000000000000CD +S315E07D30A000000000000000000000000000000000BD +S315E07D30B000000000000000000000000000000000AD +S315E07D30C0000000000000000000000000000000009D +S315E07D30D0000000000000000000000000000000008D +S315E07D30E0000000000000000000000010FF000080EE +S315E07D30F0000000000000800000000000008000006D +S315E07D3100000000000000000000000000808000005C +S315E07D3110000080800000000000008080000000004C +S315E07D3120000000008080000000000000000000003C +S315E07D3130000080800000000000000000000000002C +S315E07D3140808080800000000080808080000000001C +S315E07D3150000000000000000000000000000000000C +S315E07D316000000000000000000000000000000000FC +S315E07D317000000000000000000000000000000000EC +S315E07D318000000000000000000000000000000000DC +S315E07D319000000000000000000000000000000000CC +S315E07D31A000000000000000000000000000000000BC +S315E07D31B000000000000000000000000000000000AC +S315E07D31C0000000000000000000000000000000009C +S315E07D31D0000000000000000000000000000000008C +S315E07D31E0000000000000000000000000000000007C +S315E07D31F0000000000000000000000000000000006C +S315E07D3200000000000000000000000000000000005B +S315E07D3210000000000000000000000000000000004B +S315E07D3220000000000000000000000000000000003B +S315E07D3230000000000000000000000000000000002B +S315E07D3240000000000000000000000000000000001B +S315E07D3250000000000000000000000000000000000B +S315E07D3260000000002FA0000000000000000000002C +S315E07D327000000000000000000000808000000000EB +S315E07D328000000000008080000000008080000000DB +S315E07D329000000080800000000000000000808000CB +S315E07D32A000000000000000000000008080000000BB +S315E07D32B000000000000000000080808080000000AB +S315E07D32C0008080808000000000000000000000009B +S315E07D32D0000000000000000000000000000000008B +S315E07D32E0000000000000000000000000000000007B +S315E07D32F0000000000000000000000000000000006B +S315E07D3300000000000000000000000000000000005A +S315E07D3310000000000000000000000000000000004A +S315E07D3320000000000000000000000000000000003A +S315E07D3330000000000000000000000000000000002A +S315E07D3340000000000000000000000000000000001A +S315E07D3350000000000000000000000000000000000A +S315E07D336000000000000000000000000000000000FA +S315E07D337000000000000000000000000000000000EA +S315E07D338000000000000000000000000000000000DA +S315E07D339000000000000000000000000000000000CA +S315E07D33A000000000000000000000000000000000BA +S315E07D33B000000000000000000000000000000000AA +S315E07D33C0000000000000000000000000000000009A +S315E07D33D0000000000000000000000000009ED30019 +S315E07D33E0000000000000000000000000000000007A +S315E07D33F0000000000000000000000000000000006A +S315E07D34000000000000000000000000000000000059 +S315E07D34100000000000000000000000000000000049 +S315E07D34200000000000000000000000000000000039 +S315E07D34300000000000000000000000000000000029 +S315E07D34400000000000000000000000000000000019 +S315E07D34500000000000000000000000000000000009 +S315E07D346000000000000000000000000000000000F9 +S315E07D347000000000000000000000000000000000E9 +S315E07D348000000000000000000000000000000000D9 +S315E07D349000000000000000000000000000000000C9 +S315E07D34A000000000000000000000000000000000B9 +S315E07D34B000000000000000000000000000000000A9 +S315E07D34C00000000000000000000000000000000099 +S315E07D34D00000000000000000000000000000000089 +S315E07D34E00000000000000000000000000000000079 +S315E07D34F00000000000000000000000000000000069 +S315E07D35000000000000000000000000000000000058 +S315E07D35100000000000000000000000000000000048 +S315E07D35200000000000000000000000000000000038 +S315E07D35300000000000000000000000000000000028 +S315E07D35400000000000000000000000000000000018 +S315E07D35500000000000003E49000000800000000001 +S315E07D356000000000000000000000000000000000F8 +S315E07D357000000000000000000000000000000000E8 +S315E07D358000000000000000000000000000000000D8 +S315E07D359000000000000000000000000000000000C8 +S315E07D35A000000000000000000000000000000000B8 +S315E07D35B000000000000000000000000000000000A8 +S315E07D35C00000000000000000000000000000000098 +S315E07D35D00000000000000000000000000000000088 +S315E07D35E00000000000000000000000000000000078 +S315E07D35F00000000000000000000000000000000068 +S315E07D36000000000000000000000000000000000057 +S315E07D36100000000000000000000000000000000047 +S315E07D36200000000000000000000000000000000037 +S315E07D36300000000000000000000000000000000027 +S315E07D36400000000000000000000000000000000017 +S315E07D36500000000000000000000000000000000007 +S315E07D366000000000000000000000000000000000F7 +S315E07D367000000000000000000000000000000000E7 +S315E07D368000000000000000000000000000000000D7 +S315E07D369000000000000000000000000000000000C7 +S315E07D36A000000000000000000000000000000000B7 +S315E07D36B000000000000000000000000000000000A7 +S315E07D36C00000000000000000000000000000004B4C +S315E07D36D008008000000000000000000000000000FF +S315E07D36E00000000000000000000000000000000077 +S315E07D36F00000000000000000000000000000000067 +S315E07D37000000000000000000000000000000000056 +S315E07D37100000000000000000000000000000000046 +S315E07D37200000000000000000000000000000000036 +S315E07D37300000000000000000000000000000000026 +S315E07D37400000000000000000000000000000000016 +S315E07D37500000000000000000000000000000000006 +S315E07D376000000000000000000000000000000000F6 +S315E07D377000000000000000000000000000000000E6 +S315E07D378000000000000000000000000000000000D6 +S315E07D379000000000000000000000000000000000C6 +S315E07D37A000000000000000000000000000000000B6 +S315E07D37B000000000000000000000000000000000A6 +S315E07D37C00000000000000000000000000000000096 +S315E07D37D00000000000000000000000000000000086 +S315E07D37E00000000000000000000000000000000076 +S315E07D37F00000000000000000000000000000000066 +S315E07D38000000000000000000000000000000000055 +S315E07D38100000000000000000000000000000000045 +S315E07D38200000000000000000000000000000000035 +S315E07D38300000000000000000000000000000000025 +S315E07D38400000000000000000D8E900000000000054 +S315E07D385000000000000004002000000000000000E1 +S315E07D386000000000000000000000000001000800EC +S315E07D387040000000000000000000000000000000A5 +S315E07D38800000000002001000800000000000000043 +S315E07D389000000000000000000000000004002000A1 +S315E07D38A000000000000000000000000000000000B5 +S315E07D38B0000001000800400000000000000000005C +S315E07D38C00000000000000000000002001000800003 +S315E07D38D00000000000000000000000000000000085 +S315E07D38E00000040020000000000000000000000051 +S315E07D38F0000000000000000001000800400000001C +S315E07D39000000000000000000000000000000000054 +S315E07D391002001000800000000000000000000000B2 +S315E07D39200000000000000000040020000000000010 +S315E07D39300000000000000000000000000000010023 +S315E07D394008004000000000000000000000000000CC +S315E07D39500000000000000200100080000000000072 +S315E07D396000000000000000000000000000000400F0 +S315E07D397020000000000000000000000000000000C4 +S315E07D3980000000000100080040000000000000008B +S315E07D399000000000000000000000000002001000B2 +S315E07D39A08000000000000000000000000000000034 +S315E07D39B00000000004002000000000000000000080 +S315E07D39C00028D70000808000000000000000000491 +S315E07D39D000200000000000000080000000000000E4 +S315E07D39E0000000000001000800400000000000002B +S315E07D39F00000000000000000000000000002001052 +S315E07D3A0000800000000000000000000000000000D3 +S315E07D3A10000000000004002000000000000000001F +S315E07D3A2000000000000000000000000100080040EA +S315E07D3A300000000000000000000000000000000023 +S315E07D3A400000000200100080000000000000000081 +S315E07D3A5000000000000000000000000400200000DF +S315E07D3A6000000000000000000000000000000000F3 +S315E07D3A70000100080040000000000000000000009A +S315E07D3A800000000000000000000200100080000041 +S315E07D3A9000000000000000000000000000000000C3 +S315E07D3AA0000400200000000000000000000000008F +S315E07D3AB0000000000000000100080040000000005A +S315E07D3AC00000000000000000000000000000000291 +S315E07D3AD000100080000000000000000000000000F3 +S315E07D3AE0000000000000000400200000000000004F +S315E07D3AF0000000000000000000000000000100085A +S315E07D3B000040000000000000000000000000000012 +S315E07D3B1000000000000200100080000000000000B0 +S315E07D3B20000000000000000000000000000400200E +S315E07D3B3000000000000000000000E78C00000000AF +S315E07D3B4000000000000000000400200000000000EE +S315E07D3B500000000000000000000000000000010001 +S315E07D3B6008004000000000000000000000000000AA +S315E07D3B700000000000000200100080000000000050 +S315E07D3B8000000000000000000000000000000400CE +S315E07D3B9020000000000000000000000000000000A2 +S315E07D3BA00000000001000800400000000000000069 +S315E07D3BB00000000000000000000000000200100090 +S315E07D3BC08000000000000000000000000000000012 +S315E07D3BD0000000000400200000000000000000005E +S315E07D3BE00000000000000000000001000800400029 +S315E07D3BF00000000000000000000000000000000062 +S315E07D3C0000000200100080000000000000000000BF +S315E07D3C10000000000000000000000400200000001D +S315E07D3C200000000000000000000000000000000031 +S315E07D3C3001000800400000000000000000000000D8 +S315E07D3C40000000000000000002001000800000007F +S315E07D3C500000000000000000000000000000000001 +S315E07D3C6004002000000000000000000000000000CD +S315E07D3C700000000000000100080040000000000098 +S315E07D3C8000000000000000000000000000000200CF +S315E07D3C901000800000000000000000000000000031 +S315E07D3CA0000000000000040020000000000000008D +S315E07D3CB000000028D7000083831C1C6060000003A1 +S315E07D3CC003181C40600000070738384040000007B5 +S315E07D3CD0073838C0C000000607303880C001010EC5 +S315E07D3CE00E7070808001010E0E7070808001010C77 +S315E07D3CF00E6070008003031C1CE0E0000003031CE3 +S315E07D3D001CE0E000000303181CC0E0000007073854 +S315E07D3D1038C0C0000007073838C0C000000607304D +S315E07D3D203880C001010E0E7070808001010E0E702C +S315E07D3D3070808001010C0E6070008003031C1CE026 +S315E07D3D40E0000003031C1CE0E000000303181CC038 +S315E07D3D50E0000007073838C0C0000007073838C0E4 +S315E07D3D60C000000607303880C001010E0E707080FD +S315E07D3D708001010E0E7070808001010C0E60700076 +S315E07D3D808003031C1CE0E0000003031C1CE0E00054 +S315E07D3D90000303181CC0E0000007073838C0C000E8 +S315E07D3DA00007073838C0C000000607303880C001FC +S315E07D3DB0010E0E7070808001010E0E7070808001A4 +S315E07D3DC0010C0E6070008003031C1CE0E000000324 +S315E07D3DD0031C1CE0E000000303181CC0E0000007A4 +S315E07D3DE0073838C0C0000007073838C0C000000675 +S315E07D3DF007303880C001010E0E7070808001010EA3 +S315E07D3E000E7070808001010C0E6070008003031CD3 +S315E07D3E101CE0E0000002021C1CE0E000000202184B +S315E07D3E201CC0E0000006063838C1C100D78400001A +S315E07D3E30000000000000000000000000000000809F +S315E07D3E40000000000000000000000000000000000F +S315E07D3E50808000000000000000800000000000007F +S315E07D3E60000000000000000080000000000000006F +S315E07D3E70000000000000000000000000000000805F +S315E07D3E80000000000000800000000000000000004F +S315E07D3E9000000000000000000000000000000000BF +S315E07D3EA000000000000000000000000000000000AF +S315E07D3EB0000000000000000000000000000000009F +S315E07D3EC0000000000000000000000000000000008F +S315E07D3ED0000000000000000000000000000000007F +S315E07D3EE0000000000000000000000000000000006F +S315E07D3EF0000000000000000000000000000000005F +S315E07D3F00000000000000000000000000000000004E +S315E07D3F10000000000000000000000000000000003E +S315E07D3F20000000000000000000000000000000002E +S315E07D3F30000000000000000000000000000000001E +S315E07D3F40000000000000000000000000000000000E +S315E07D3F5000000000000000000000000000000000FE +S315E07D3F6000000000000000000000000000000000EE +S315E07D3F7000000000000000000000000000000000DE +S315E07D3F8000000000000000000000000000000000CE +S315E07D3F9000000000000000000000000000000000BE +S315E07D3FA000000000001E250000002000000000004B +S315E07D3FB0000000000000000000004000000000005E +S315E07D3FC0000000000000000000000000000000008E +S315E07D3FD0000000000000000000000000000000007E +S315E07D3FE0000000000000000000000000000000006E +S315E07D3FF0000000000000000000000000000000005E +S315E07D4000000000000000000000000000000000004D +S315E07D4010000000000000000000000000000000003D +S315E07D4020000000000000000000000000000000002D +S315E07D403000000000000000000020000000000010ED +S315E07D4040000000000000000000000000008000008D +S315E07D405000000000000000000000000000000000FD +S315E07D406000000000000000000000000000000000ED +S315E07D407000000000000000002000000000000000BD +S315E07D408000000000000000000000000000000000CD +S315E07D409000000000000000000000000000000000BD +S315E07D40A000000000000000000000000000000000AD +S315E07D40B0000000000000000000000000000000009D +S315E07D40C0000000000000000000000000000000008D +S315E07D40D0000000000000000000000000000000007D +S315E07D40E0000000000000000000000000000000006D +S315E07D40F000000000000080000000000000000000DD +S315E07D4100000000000000000000000000000000004C +S315E07D41100000000000000000002000000000307874 +S315E07D4120000000000000000000000000000000002C +S315E07D4130000000000000000000000000000000001C +S315E07D4140000000000000000080000000000000008C +S315E07D4150000000000000008000000000000000007C +S315E07D416000000000000000000000000000000000EC +S315E07D417000000000000000000000808000000000DC +S315E07D418000000000000000000000000000000000CC +S315E07D419000000000000000000000000000000000BC +S315E07D41A000000000000000000000000000000000AC +S315E07D41B0000000000000000000000000000000009C +S315E07D41C0000000000000000000000000000000008C +S315E07D41D0000000000000000000000000000000007C +S315E07D41E0000000000000000000000000000000006C +S315E07D41F00008000000000000000000000000000054 +S315E07D4200000000000000000000000000000000004B +S315E07D421000000000008000000000000000000000BB +S315E07D4220000000000000000000000000000000002B +S315E07D4230000000000000000000000000000000001B +S315E07D4240000000000000000000000000000000000B +S315E07D425000000000000000000000000000000000FB +S315E07D426000000000000000000000000000000000EB +S315E07D427000000000000000000000000000000000DB +S315E07D428000000000000000000000000000000000CB +S315E07D429000000000000000968100000000000000A4 +S315E07D42A000000000000000000000000000000000AB +S315E07D42B0000000000000000000000000000000009B +S315E07D42C0008000000000000000000000000000000B +S315E07D42D000800000000000000000000000000000FB +S315E07D42E0000000000000000000000000000000006B +S315E07D42F0000080008000000000000000000000005B +S315E07D4300000000000000000000000000000000004A +S315E07D431000000000000000000000000000100080AA +S315E07D4320000000000000000000000000000000002A +S315E07D4330000000000000000000000000000000001A +S315E07D4340000000000000000000000000000000000A +S315E07D435000000000000000000000000000000000FA +S315E07D436000000000000000000000000000000000EA +S315E07D437000000000000000000000000000000000DA +S315E07D4380000000000000000000000000000080004A +S315E07D439000000000000000000000000000000000BA +S315E07D43A000000000000000000000000000000000AA +S315E07D43B0000000000000000000000000000000009A +S315E07D43C0000000000000000000000000000000008A +S315E07D43D0000000000000000000000000000000007A +S315E07D43E000000000008000000000000000000000EA +S315E07D43F0000000000000000000000000000000005A +S315E07D44000000000000000020000000000000000029 +S315E07D4410C98C000000800000000000000000000064 +S315E07D44200000200000000000000000000000000009 +S315E07D44300000008000000000000040000000000059 +S315E07D44400000000000000000000000000000000009 +S315E07D445000000000000000000000000000000000F9 +S315E07D446000000000000000000000000000000000E9 +S315E07D44700000000000000040000000000000000099 +S315E07D448000000000000000000000000000000000C9 +S315E07D449000000000000000000000000000000000B9 +S315E07D44A00000000000000000002000000000000089 +S315E07D44B00000000000000000000000000000000099 +S315E07D44C00000000000000000000000000000000089 +S315E07D44D00000000000000000000000000000000079 +S315E07D44E00000000008000000000000000000000061 +S315E07D44F00000000020000000000000000000000039 +S315E07D45000000000000000000000000000000000048 +S315E07D45100000000000000000000000000000000038 +S315E07D45200000000000000000000000000000000028 +S315E07D45300000000000000000000000000000000018 +S315E07D45400000000000000000000000000000000008 +S315E07D455000000000000000000000000000000000F8 +S315E07D45600000000000000000000080000000000068 +S315E07D45700000000000008000000000000000000058 +S315E07D4580000000000000010000A5AD000000000075 +S315E07D45900080000000008000800000000000000038 +S315E07D45A000000000000000000000000000000000A8 +S315E07D45B00000000001000000000000000000000097 +S315E07D45C00000000000000000000000000000000088 +S315E07D45D00000000000000000000000000000000078 +S315E07D45E00000000000000000000000000000000068 +S315E07D45F00000040000000000000000000000000054 +S315E07D460000008000000000000000000000000000C7 +S315E07D46100000020000000000000000000000000035 +S315E07D46200000000000400080000000000000000067 +S315E07D46300000000000000000000000000000000017 +S315E07D46400000000000000000000000000000000007 +S315E07D465000000000000000000000000000000000F7 +S315E07D466000000000000000000000000000000000E7 +S315E07D467000000000000000000000000000000000D7 +S315E07D468000000000000000000000000000000004C3 +S315E07D469000000000000000000000000000000000B7 +S315E07D46A000000000000000000000000000000000A7 +S315E07D46B00000000000000000000000000000000097 +S315E07D46C00000000000000000000000000000000087 +S315E07D46D00000000000000000000000000000000077 +S315E07D46E00000000000000000000000000000000067 +S315E07D46F00000000000000000000000000000000057 +S315E07D47000000FFAF00000000000000000000000098 +S315E07D47100000000000000000000000000000000036 +S315E07D47200000000000000000000000000000000026 +S315E07D47300000000000000000000000000000000016 +S315E07D47400000000000000000000000000000000006 +S315E07D475040000000000000000000000000000000B6 +S315E07D476000000000000000000000000000000000E6 +S315E07D477000000000000000000000000000000000D6 +S315E07D478000000000000000000000000000000000C6 +S315E07D479000000000000000000000000000000000B6 +S315E07D47A000000000000000000000000000000000A6 +S315E07D47B00000000000000000000000000000000096 +S315E07D47C00000000000000000000000000000000086 +S315E07D47D00000000000000000000000000000000076 +S315E07D47E00000000000000000000000000000000066 +S315E07D47F00000000000000000000000000000000056 +S315E07D48000000000000000000000000000000000045 +S315E07D48100000000000000000000000000000000035 +S315E07D48200000000000000000000000000000000025 +S315E07D48300000000000000000000000000000000015 +S315E07D48400000000000000000000000000000000005 +S315E07D485000000000000000000000000000000000F5 +S315E07D486000000000000000000000000000000000E5 +S315E07D487000000000000000000000006BE200000088 +S315E07D48800000800000000000800000800000000045 +S315E07D489000000000000000000000000000000000B5 +S315E07D48A000000000000000010000000000000000A4 +S315E07D48B00000000000000000000000000000000095 +S315E07D48C00000000000000000000000000000000085 +S315E07D48D00000000000000000000000000000000075 +S315E07D48E00000000004000000000000000000000061 +S315E07D48F000000000008000000000000000000000D5 +S315E07D49000000000000020000000000000000000042 +S315E07D491000000000000000008000000000000000B4 +S315E07D49200000000000000000000000000000000024 +S315E07D49300000000000000000000000000000000014 +S315E07D49400000000000000000000000000000000004 +S315E07D495000000000000000000000000000000000F4 +S315E07D496000000000000000000000000000000000E4 +S315E07D497000000000000000000000000000000000D4 +S315E07D498000040000000000000000000000000000C0 +S315E07D499000000000000000000000000000000000B4 +S315E07D49A000000000000000000000000000000000A4 +S315E07D49B00000000000000000000000000000000094 +S315E07D49C00000000000000000000000000000000084 +S315E07D49D00000000000000000000000000000000074 +S315E07D49E00000000000000000000000000000000064 +S315E07D49F000000000CA6B000000000000000000001F +S315E07D4A000000000000000000000000000000000043 +S315E07D4A1000000000000000000080000000000000B3 +S315E07D4A200000000000000000000000000000000023 +S315E07D4A300000000000000000000000000000000013 +S315E07D4A400000000080000000000000000000000083 +S315E07D4A5000000000000000000000000000000000F3 +S315E07D4A6000000000000000000000000000000000E3 +S315E07D4A7000000000000000000000000000000000D3 +S315E07D4A800000008000000000000000000000000043 +S315E07D4A9000000000000000000000000000000000B3 +S315E07D4AA000000000000000000000000000000000A3 +S315E07D4AB00000000000000000000000000000000093 +S315E07D4AC00000000000000000008000000000000003 +S315E07D4AD00000000000000000000000000000000073 +S315E07D4AE00000000000000000000000000000000063 +S315E07D4AF00000000000000000000000000000000053 +S315E07D4B000000000000000000000000000000000042 +S315E07D4B100000000000000000000000000000000032 +S315E07D4B200000000000000000000000000000000022 +S315E07D4B300000000000000000000000000000000012 +S315E07D4B400000000000000000000000000000000002 +S315E07D4B5000000000000000200000000000000000D2 +S315E07D4B6000000000000000000000000000DCF30013 +S315E07D4B7000000000000000000000000000000000D2 +S315E07D4B8000000000000000000000000000000000C2 +S315E07D4B9000000000000000000000000000000000B2 +S315E07D4BA000000000000000000000000000000000A2 +S315E07D4BB00000000000000000000000000000000092 +S315E07D4BC00000000000000000000000000000000082 +S315E07D4BD00000000000000000000000000000000072 +S315E07D4BE00000000000000000000000000000000062 +S315E07D4BF00000000000000000000000000000000052 +S315E07D4C000000000000000000000000000000000041 +S315E07D4C1000000080000000000000000000000000B1 +S315E07D4C200000000000000000000000000000000021 +S315E07D4C300000000000000000000000000000000011 +S315E07D4C400000000000000000000000000000000001 +S315E07D4C5000000000000000000000000000000000F1 +S315E07D4C6000000000000000000000000000000000E1 +S315E07D4C7000000000000000000000000000000000D1 +S315E07D4C8000000000000000000000000000000000C1 +S315E07D4C9000000000000000000000000000000000B1 +S315E07D4CA000000000000000000000000000000000A1 +S315E07D4CB00000000000000000000000000000000091 +S315E07D4CC00000000000000000000000000000000081 +S315E07D4CD00020000000000000000000000000000051 +S315E07D4CE00000000000002F10000000000000000022 +S315E07D4CF000000000800000000000000000000000D1 +S315E07D4D0000000000000000000000000080000000C0 +S315E07D4D100000000000000000000000000000000030 +S315E07D4D200000000000000000000000000000000020 +S315E07D4D300000000000800000000000000000000090 +S315E07D4D400000000000000000000000000000000000 +S315E07D4D5000000000000000000000000000000000F0 +S315E07D4D6000000000000000000000000000000000E0 +S315E07D4D7000000000000000000000000000000000D0 +S315E07D4D8000000000000000000000000000000000C0 +S315E07D4D9000000000000000000000000000000000B0 +S315E07D4DA000000000000000000000000000000000A0 +S315E07D4DB00000000000000000000000000000000090 +S315E07D4DC00000000000000000000000000000000080 +S315E07D4DD00000000000000000000000000000000070 +S315E07D4DE00000000000000000000000000000000060 +S315E07D4DF00000000000000000000000000000000050 +S315E07D4E00000000000000000000000000000000003F +S315E07D4E10000000000000000000000000000000002F +S315E07D4E20000000000000000000000000000000001F +S315E07D4E30000000000000000000000000000000000F +S315E07D4E4000000000000000000000000000000000FF +S315E07D4E50000000000000000000000000000000905F +S315E07D4E60B30000000000000000000000000000002C +S315E07D4E7000000000000000000000000000000000CF +S315E07D4E8000000000000000000000000000000000BF +S315E07D4E9000000000000000000000000000000000AF +S315E07D4EA0000000000000000000000000000000009F +S315E07D4EB0000000000000000000000000000000008F +S315E07D4EC0000000000000000000000000000000007F +S315E07D4ED0000000000000000000000000000000006F +S315E07D4EE000000000000000000000000000000080DF +S315E07D4EF0000000000000000000000000000000004F +S315E07D4F00000000000000000000000000000000003E +S315E07D4F10000000000000000000000000000000002E +S315E07D4F20000000000000000000000000000000001E +S315E07D4F30000000000080000000000000000000008E +S315E07D4F4000000000000000000000000000000000FE +S315E07D4F5000000000000000000000000000000000EE +S315E07D4F6000000000000000000000000000000000DE +S315E07D4F7000000000000000000000000000000000CE +S315E07D4F8000000000000000000000000000000000BE +S315E07D4F9000000000000000000000000000000000AE +S315E07D4FA0000000000000000000000000000000009E +S315E07D4FB0000000000000000000000000000000008E +S315E07D4FC0000000000000000000000000000000007E +S315E07D4FD00000000000000000ED330000000000004E +S315E07D4FE000800000000000000000000000000000DE +S315E07D4FF0000000000000000000000000000000004E +S315E07D5000000000000000000000000000000000003D +S315E07D5010000000000000000000000000000000002D +S315E07D5020000000000000000000000000000000001D +S315E07D5030000000000000000000000000000000000D +S315E07D504000000000000000000000000000000000FD +S315E07D505000000000000000000000000000000000ED +S315E07D506000000000000000000000000000000000DD +S315E07D507000000000000000000000000000000000CD +S315E07D508000000000000000000000000000000000BD +S315E07D509000000000000000000000000000000000AD +S315E07D50A0000000000000000000000000000000009D +S315E07D50B0000000000000000000000000000000008D +S315E07D50C0000000000000000000000000000000007D +S315E07D50D0000000000000000000000000000000006D +S315E07D50E0000000000000000000000000000000005D +S315E07D50F0000000000000000000000000000000004D +S315E07D5100000000000000000000000000000000003C +S315E07D5110000000000000000000000000000000002C +S315E07D5120000000000000000000000000000000001C +S315E07D5130000000000000000000000000000000000C +S315E07D514000000000000000000000000000000000FC +S315E07D5150007867000080800000000000000000000D +S315E07D516000000000000000000000000000000000DC +S315E07D517000000000000000000000000000000000CC +S315E07D518000000000000000000000000000000000BC +S315E07D519000000000000000000000000000000000AC +S315E07D51A0000000000000000000000000000000009C +S315E07D51B0000000000000000000000000000000008C +S315E07D51C0000000000000000000000000000000007C +S315E07D51D0000000000000000000000000000000006C +S315E07D51E0000000000000000000000000000000005C +S315E07D51F0000000000000000000000000000000004C +S315E07D5200000000000000000000000000000000003B +S315E07D5210000000000000000000000000000000002B +S315E07D5220000000000000000000000000000000001B +S315E07D5230000000000000000000000000000000000B +S315E07D524000000000000000000000000000000000FB +S315E07D525000000000000000000000000000000000EB +S315E07D526000000000000000000000000000000000DB +S315E07D527000000000000000000000000000000000CB +S315E07D528000000000000000000000000000000000BB +S315E07D529000000000000000000000000000000000AB +S315E07D52A0000000000000000000000000000000009B +S315E07D52B0000000000000000000000000000000008B +S315E07D52C0000000000000000101009BBF000000001F +S315E07D52D0000000000000000000000000000000006B +S315E07D52E0000000000000000000000000000000005B +S315E07D52F0000000000000000000000000000000004B +S315E07D5300000000000000000000000000000000003A +S315E07D5310000000000000000000000000000000002A +S315E07D5320000000000000000000000000000000001A +S315E07D5330000000000000000000000000000000000A +S315E07D534000000000000000000000000000000000FA +S315E07D535000000000000000000000000000000000EA +S315E07D536000000000000000000000000000000000DA +S315E07D537000000000000000000000000000000000CA +S315E07D538000000000000000000000000000000000BA +S315E07D539000000000000000000000000000000000AA +S315E07D53A0000000000000000000000000000000009A +S315E07D53B0000000000000000000000000000000008A +S315E07D53C0000000000000000000000000000000007A +S315E07D53D0000000000000000000000000000000006A +S315E07D53E0000000000000000000000000000000005A +S315E07D53F0000000000000000000000000000000004A +S315E07D54000000000000000000000000000000000039 +S315E07D54100000000000000000000000000000000029 +S315E07D54200000000000000000000000000000000019 +S315E07D54300000000000000000000000000000000009 +S315E07D54400000003E49000000000000000000000072 +S315E07D545000000000000000000000000000000000E9 +S315E07D546000000000000000000000000000000000D9 +S315E07D547000000000000000000000000000000000C9 +S315E07D548000000000000000000000000000000000B9 +S315E07D549000000000000000000000000000000000A9 +S315E07D54A00000000000000000000000000000000099 +S315E07D54B00000000000000000000000000000000089 +S315E07D54C00000000000000000000000000000000079 +S315E07D54D00000000000000000000000000000000069 +S315E07D54E00000000000000000000000000000000059 +S315E07D54F00000000000000000000000000000000049 +S315E07D55000000000000000000000000000000000038 +S315E07D55100000000000000000000000000000000028 +S315E07D55200000000000000000000000000000000018 +S315E07D55300000000000000000000000000000000008 +S315E07D554000000000000000000000000000000000F8 +S315E07D555000000000000000000000000000000000E8 +S315E07D556000000000000000000000000000000000D8 +S315E07D557000000000000000000000000000000000C8 +S315E07D558000000000000000000000000000000000B8 +S315E07D559000000000000000000000000000000000A8 +S315E07D55A00000000000000000000000000000000098 +S315E07D55B00000000000000000000000003E49000001 +S315E07D55C00000000000000000000000000000000078 +S315E07D55D00000000000000000000000000000000068 +S315E07D55E00000000000000000000000000000000058 +S315E07D55F00000000000000000000000000000000048 +S315E07D56000000000000000000000000000000000037 +S315E07D56100000000000000000000000000000000027 +S315E07D56200000000000000000000000000000000017 +S315E07D56300000000000000000000000000000000007 +S315E07D564000000000000000000000000000000000F7 +S315E07D565000000000000000000000000000000000E7 +S315E07D566000000000000000000000000000000000D7 +S315E07D567000000000000000000000000000000000C7 +S315E07D568000000000000000000000000000000000B7 +S315E07D569000000000000000000000000000000000A7 +S315E07D56A00000000000000000000000000000000097 +S315E07D56B00000000000000000000000000000000087 +S315E07D56C00000000000000000000000000000000077 +S315E07D56D00000000000000000000000000000000067 +S315E07D56E00000000000000000000000000000000057 +S315E07D56F00000000000000000000000000000000047 +S315E07D57000000000000000000000000000000000036 +S315E07D57100000000000000000000000000000000026 +S315E07D57200000000000000000000000000000000016 +S315E07D573000000000003E490000000000000000007F +S315E07D574000000000000000000000000000000000F6 +S315E07D575000000000000000000000000000000000E6 +S315E07D576000000000000000000000000000000000D6 +S315E07D577000000000000000000000000000000000C6 +S315E07D578000000000000000000000000000000000B6 +S315E07D579000000000000000000000000000000000A6 +S315E07D57A00000000000000000000000000000000096 +S315E07D57B00000000000000000000000000000000086 +S315E07D57C00000000000000000000000000000000076 +S315E07D57D00000000000000000000000000000000066 +S315E07D57E00000000000000000000000000000000056 +S315E07D57F00000000000000000000000000000000046 +S315E07D58000000000000000000000000000000000035 +S315E07D58100000000000000000000000000000000025 +S315E07D58200000000000000000000000000000000015 +S315E07D58300000000000000000000000000000000005 +S315E07D584000000000000000000000000000000000F5 +S315E07D585000000000000000000000000000000000E5 +S315E07D586000000000000000000000000000000000D5 +S315E07D587000000000000000000000000000000000C5 +S315E07D588000000000000000000000000000000000B5 +S315E07D589000000000000000000000000000000000A5 +S315E07D58A000000000000000000000000000003E490E +S315E07D58B00000000000000000000000000000000085 +S315E07D58C00000000000000000000000000000000075 +S315E07D58D00000000000000000000000000000000065 +S315E07D58E00000000000000000000000000000000055 +S315E07D58F00000000000000000000000000000000045 +S315E07D59000000000000000000000000000000000034 +S315E07D59100000000000000000000000000000000024 +S315E07D59200000000000000000000000000000000014 +S315E07D59300000000000000000000000000000000004 +S315E07D594000000000000000000000000000000000F4 +S315E07D595000000000000000000000000000000000E4 +S315E07D596000000000000000000000000000000000D4 +S315E07D597000000000000000000000000000000000C4 +S315E07D598000000000000000000000000000000000B4 +S315E07D599000000000000000000000000000000000A4 +S315E07D59A00000000000000000000000000000000094 +S315E07D59B00000000000000000000000000000000084 +S315E07D59C00000000000000000000000000000000074 +S315E07D59D00000000000000000000000000000000064 +S315E07D59E00000000000000000000000000000000054 +S315E07D59F00000000000000000000000000000000044 +S315E07D5A000000000000000000000000000000000033 +S315E07D5A100000000000000000000000000000000023 +S315E07D5A20000000000100006F89000000000080009A +S315E07D5A300000000000000000000000000000000003 +S315E07D5A4000000000000000000000000000000000F3 +S315E07D5A5000000000000000000000000000000000E3 +S315E07D5A6000000000000000000000000000000000D3 +S315E07D5A7000000000000000000000000000000000C3 +S315E07D5A8000000000000000000000000000000000B3 +S315E07D5A9000000000000000000000000000000000A3 +S315E07D5AA00000000000000000000000000000000093 +S315E07D5AB00000000000000000000000000000000083 +S315E07D5AC00000000000000000000000000000000073 +S315E07D5AD00000000000000000000000000000000063 +S315E07D5AE00000000000000000000000000000000053 +S315E07D5AF00000000000000000000000000000000043 +S315E07D5B000000000000000000000000000000000032 +S315E07D5B100000000000000000000000000000000022 +S315E07D5B200000000000000000000000000000000012 +S315E07D5B300000000000000000000000000000000002 +S315E07D5B4000000000000000000000000000000000F2 +S315E07D5B5000000000000000000000000000000000E2 +S315E07D5B6000000000000000000000000000000000D2 +S315E07D5B7000000000000000000000000000000000C2 +S315E07D5B8000000000000000000000000000000000B2 +S315E07D5B9000000000000000000000000000000000A2 +S315E07D5BA08C350000000000000000000000000000D1 +S315E07D5BB00000000000000000000000000000000082 +S315E07D5BC00000000000000000000000000000000072 +S315E07D5BD00000000000000000000000000000000062 +S315E07D5BE00000000000000000000000000000000052 +S315E07D5BF00000000000000000000000000000000042 +S315E07D5C000000000000000000000000000000000031 +S315E07D5C100000000000000000000000000000000021 +S315E07D5C200000000000000000000000000000000011 +S315E07D5C300000000000000000000000000000000001 +S315E07D5C4000000000000000000000000000000000F1 +S315E07D5C5000000000000000000000000000000000E1 +S315E07D5C6000000000000000000000000000000000D1 +S315E07D5C7000000000000000000000000000000000C1 +S315E07D5C8000000000000000000000000000000000B1 +S315E07D5C9000000000000000000000000000000000A1 +S315E07D5CA00000000000000000000000000000000091 +S315E07D5CB00000000000000000000000000000000081 +S315E07D5CC00000000000000000000000000000000071 +S315E07D5CD00000000000000000000000000000000061 +S315E07D5CE00000000000000000000000000000000051 +S315E07D5CF00000000000000000000000000000000041 +S315E07D5D000000000000000000000000000000000030 +S315E07D5D100000000000000000003E49000000000099 +S315E07D5D200000000000000000000000000000000010 +S315E07D5D300000000000000000000000000000000000 +S315E07D5D4000000000000000000000000000000000F0 +S315E07D5D5000000000000000000000000000000000E0 +S315E07D5D6000000000000000000000000000000000D0 +S315E07D5D7000000000000000000000000000000000C0 +S315E07D5D8000000000000000000000000000000000B0 +S315E07D5D9000000000000000000000000000000000A0 +S315E07D5DA00000000000000000000000000000000090 +S315E07D5DB00000000000000000000000000000000080 +S315E07D5DC00000000000000000000000000000000070 +S315E07D5DD00000000000000000000000000000000060 +S315E07D5DE00000000000000000000000000000000050 +S315E07D5DF00000000000000000000000000000000040 +S315E07D5E00000000000000000000000000000000002F +S315E07D5E10000000000000000000000000000000001F +S315E07D5E20000000000000000000000000000000000F +S315E07D5E3000000000000000000000000000000000FF +S315E07D5E4000000000000000000000000000000000EF +S315E07D5E5000000000000000000000000000000000DF +S315E07D5E6000000000000000000000000000000000CF +S315E07D5E7000000000000000000000000000000000BF +S315E07D5E8000000000000000000000000000000000AF +S315E07D5E9000003E4900000000000080000000000098 +S315E07D5EA0000000000000000000000000000000008F +S315E07D5EB0000000000000000000000000000000007F +S315E07D5EC0000000000000000000000000000000006F +S315E07D5ED0000000000000000000000000000000005F +S315E07D5EE0000000000000000000000000000000004F +S315E07D5EF0000000000000000000000000000000003F +S315E07D5F00000000000000000000000000000000002E +S315E07D5F10000000000000000000000000000000001E +S315E07D5F20000000000000000000000000000000000E +S315E07D5F3000000000000000000000000000000000FE +S315E07D5F4000000000000000000000000000000000EE +S315E07D5F5000000000000000000000000000000000DE +S315E07D5F6000000000000000000000000000000000CE +S315E07D5F7000000000000000000000000000000000BE +S315E07D5F8000000000000000000000000000000000AE +S315E07D5F90000000000000000000000000000000009E +S315E07D5FA0000000000000000000000000000000008E +S315E07D5FB0000000000000000000000000000000007E +S315E07D5FC0000000000000000000000000000000006E +S315E07D5FD0000000000000000000000000000000005E +S315E07D5FE0000000000000000000000000000000004E +S315E07D5FF0000000000000000000000000000000003E +S315E07D6000000000000000000000000091BB000000E1 +S315E07D6010000000000000000000000000000000001D +S315E07D6020000000000000000000000000000000000D +S315E07D603000000000000000000000000000000000FD +S315E07D604000000000000000000000000000000000ED +S315E07D605000000000000000000000000000000000DD +S315E07D606000000000000000000000000000000000CD +S315E07D607000000000000000000000000000000000BD +S315E07D608000000000000000000000000000000000AD +S315E07D6090000000000000000000000000000000009D +S315E07D60A0000000000000000000000000000000008D +S315E07D60B0000000000000000000000000000000007D +S315E07D60C0000000000000000000000000000000006D +S315E07D60D0000000000000000000000000000000005D +S315E07D60E0000000000000000000000000000000004D +S315E07D60F0000000000000000000000000000000003D +S315E07D6100000000000000000000000000000000002C +S315E07D6110000000000000000000000000000000001C +S315E07D6120000000000000000000000000000000000C +S315E07D613000000000000000000000000000000000FC +S315E07D614000000000000000000000000000000000EC +S315E07D615000000000000000000000000000000000DC +S315E07D616000000000000000000000000000000000CC +S315E07D617000000000000000000000000000000000BC +S315E07D6180000000003E490000000000000000000421 +S315E07D61900020000004002000000000000000000058 +S315E07D61A000000000000100080040010008004000FA +S315E07D61B0000000000000000000000000000200106A +S315E07D61C0008002001000800000000000000000005A +S315E07D61D00000000000040020000004002000000014 +S315E07D61E00000000000000000000000010008004003 +S315E07D61F001000800400000000000000000000000F3 +S315E07D62000000000200100080020010008000000007 +S315E07D621000000000000000000000000400200000F7 +S315E07D622004002000000000000000000000000000E7 +S315E07D62300001000800400100080040000000000069 +S315E07D62400000000000000000000200100080020057 +S315E07D6250100080000000000000000000000000004B +S315E07D62600004002000000400200000000000000083 +S315E07D62700000000000000001000800400100080069 +S315E07D62804000000000000000000000000000000269 +S315E07D62900010008002001000800000000000000079 +S315E07D62A00000000000000004002000000400200043 +S315E07D62B00000000000000000000000000001000872 +S315E07D62C000400100080040000000000000000000E2 +S315E07D62D00000000000020010008002001000800037 +S315E07D62E00000000000000000000000000004002027 +S315E07D62F0000004002000000000000000007C7A0021 +S315E07D6300000000000000000000000000000000002A +S315E07D6310000000000000000000000000000000001A +S315E07D6320000000000000000000000000000000000A +S315E07D633000000000000000000000000000000000FA +S315E07D634000000000000000000000000000000000EA +S315E07D635000000000000000000000000000000000DA +S315E07D636000000000000000000000000000000000CA +S315E07D637000000000000000000000000000000000BA +S315E07D638000000000000000000000000000000000AA +S315E07D6390000000000000000000000000000000009A +S315E07D63A0000000000000000000000000000000008A +S315E07D63B0000000000000000000000000000000007A +S315E07D63C0000000000000000000000000000000006A +S315E07D63D0000000000000000000000000000000005A +S315E07D63E0000000000000000000000000000000004A +S315E07D63F0000000000000000000000000000000003A +S315E07D64000000000000000000000000000000000029 +S315E07D64100000000000000000000000000000000019 +S315E07D64200000000000000000000000000000000009 +S315E07D643000000000000000000000000000000000F9 +S315E07D644000000000000000000000000000000000E9 +S315E07D645000000000000000000000000000000000D9 +S315E07D646000000000000000000000000000000000C9 +S315E07D64700000000000003E49000000008080000032 +S315E07D648000000000000000000000000000000000A9 +S315E07D64900000000000000000000000000000000099 +S315E07D64A00000000000000000000000000000000089 +S315E07D64B00000000000000000000000000000000079 +S315E07D64C00000000000000000000000000000000069 +S315E07D64D00000000000000000000000000000000059 +S315E07D64E00000000000000000000000000000000049 +S315E07D64F00000000000000000000000000000000039 +S315E07D65000000000000000000000000000000000028 +S315E07D65100000000000000000000000000000000018 +S315E07D65200000000000000000000000000000000008 +S315E07D653000000000000000000000000000000000F8 +S315E07D654000000000000000000000000000000000E8 +S315E07D655000000000000000000000000000000000D8 +S315E07D656000000000000000000000000000000000C8 +S315E07D657000000000000000000000000000000000B8 +S315E07D658000000000000000000000000000000000A8 +S315E07D65900000000000000000000000000000000098 +S315E07D65A00000000000000000000000000000000088 +S315E07D65B00000000000000000000000000000000078 +S315E07D65C00000000000000000000000000000000068 +S315E07D65D00000000000000000000000000000000058 +S315E07D65E000000000000000000000000000000070D8 +S315E07D65F040000080800000000000000000000000F8 +S315E07D660080000000000000000000000000000000A7 +S315E07D66100000000000000000000000000000000017 +S315E07D66200000000000000000000000000000000007 +S315E07D663000000000000000000000000000000000F7 +S315E07D664000000000000000000000000000000000E7 +S315E07D665000000000000000000000000000000000D7 +S315E07D666000000000000000000000000000000000C7 +S315E07D667000000000000000000000000000000000B7 +S315E07D668000000000000000000000000000000000A7 +S315E07D66900000000000000000000000000000000097 +S315E07D66A00000000000000000000000000000000087 +S315E07D66B00000000000000000000000000000000077 +S315E07D66C00000000000000000000000000000000067 +S315E07D66D00000000000000000000000000000000057 +S315E07D66E00000000000000000000000000000000047 +S315E07D66F00000000000000000000000000000000037 +S315E07D67000000000000000000000000000000000026 +S315E07D67100000000000000000000000000000000016 +S315E07D67200000000000000000000000000000000006 +S315E07D673000000000000000000000000000000000F6 +S315E07D674000000000000000000000000000000000E6 +S315E07D675000000000000000000000000000000000D6 +S315E07D6760000000000001010014510000000000005F +S315E07D677000000000000000000000000000000000B6 +S315E07D678000000000000000000000000000000000A6 +S315E07D67900000000000000000000000000000000096 +S315E07D67A00000000000000000000000000000000086 +S315E07D67B00000000000000000000000000000000076 +S315E07D67C00000000000000000000000000000000066 +S315E07D67D00000000000000000000000000000000056 +S315E07D67E00000000000000000000000000000000046 +S315E07D67F00000000000000000000000000000000036 +S315E07D68000000000000000000000000000000000025 +S315E07D68100000000000000000000000000000000015 +S315E07D68200000000000000000000000000000000005 +S315E07D683000000000000000000000000000000000F5 +S315E07D684000000000000000000000000000000000E5 +S315E07D685000000000000000000000000000000000D5 +S315E07D686000000000000000000000000000000000C5 +S315E07D687000000000000000000000000000000000B5 +S315E07D688000000000000000000000000000000000A5 +S315E07D68900000000000000000000000000000000095 +S315E07D68A00000000000000000000000000000000085 +S315E07D68B00000000000000000000000000000000075 +S315E07D68C00000000000000000000000000000000065 +S315E07D68D00000000000000000000000000000000055 +S315E07D68E0003E4900000000000000000000000000BE +S315E07D68F00000000000000000000000000000000035 +S315E07D69000000000000000000000000000000000024 +S315E07D69100000000000000000000000000000000014 +S315E07D69200000000000000000000000000000000004 +S315E07D693000000000000000000000000000000000F4 +S315E07D694000000000000000000000000000000000E4 +S315E07D695000000000000000000000000000000000D4 +S315E07D696000000000000000000000000000000000C4 +S315E07D697000000000000000000000000000000000B4 +S315E07D698000000000000000000000000000000000A4 +S315E07D69900000000000000000000000000000000094 +S315E07D69A00000000000000000000000000000000084 +S315E07D69B00000000000000000000000000000000074 +S315E07D69C00000000000000000000000000000000064 +S315E07D69D00000000000000000000000000000000054 +S315E07D69E00000000000000000000000000000000044 +S315E07D69F00000000000000000000000000000000034 +S315E07D6A000000000000000000000000000000000023 +S315E07D6A100000000000000000000000000000000013 +S315E07D6A200000000000000000000000000000000003 +S315E07D6A3000000000000000000000000000000000F3 +S315E07D6A4000000000000000000000000000000000E3 +S315E07D6A50000000000000000000003E49000000004C +S315E07D6A6000000000000000000000000000000000C3 +S315E07D6A7000000000000000000000000000000000B3 +S315E07D6A8000000000000000000000000000000000A3 +S315E07D6A900000000000000000000000000000000093 +S315E07D6AA00000000000000000000000000000000083 +S315E07D6AB00000000000000000000000000000000073 +S315E07D6AC00000000000000000000000000000000063 +S315E07D6AD00000000000000000000000000000000053 +S315E07D6AE00000000000000000000000000000000043 +S315E07D6AF00000000000000000000000000000000033 +S315E07D6B000000000000000000000000000000000022 +S315E07D6B100000000000000000000000000000000012 +S315E07D6B200000000000000000000000000000000002 +S315E07D6B3000000000000000000000000000000000F2 +S315E07D6B4000000000000000000000000000000000E2 +S315E07D6B5000000000000000000000000000000000D2 +S315E07D6B6000000000000000000000000000000000C2 +S315E07D6B7000000000000000000000000000000000B2 +S315E07D6B8000000000000000000000000000000000A2 +S315E07D6B900000000000000000000000000000000092 +S315E07D6BA00000000000000000000000000000000082 +S315E07D6BB00000000000000000000000000000000072 +S315E07D6BC00000000000000000000000000000000062 +S315E07D6BD00000003E490000000000000000000000CB +S315E07D6BE0000400200000000000000000000000001E +S315E07D6BF000000000000000010008004000000000E9 +S315E07D6C00000000000000000000000000000000021F +S315E07D6C100010008000000000000000000000000081 +S315E07D6C2000000000000000040020000000000000DD +S315E07D6C3000000000000000000000000000010008E8 +S315E07D6C4000400000000000000000000000000000A1 +S315E07D6C50000000000002001000800000000000003F +S315E07D6C60000000000000000000000000000400209D +S315E07D6C7000000000000000000000000000000000B1 +S315E07D6C800000000100080040000000000000000058 +S315E07D6C9000000000000000000000000200100080FF +S315E07D6CA00000000000000000000000000000000081 +S315E07D6CB0000000040020000000000000000000004D +S315E07D6CC00000000000000000000100080040000018 +S315E07D6CD00000000000000000000000000000000051 +S315E07D6CE000020010008000000000000000000000AF +S315E07D6CF0000000000000000000040020000000000D +S315E07D6D00000000000000000000000000000000011F +S315E07D6D1000080040000000000000000000000000C8 +S315E07D6D20000000000000000200100080000000006E +S315E07D6D3000000000000000000000000000000004EC +S315E07D6D4000200000000000000000000028D70000C1 +S315E07D6D5000000000000000000000040020000000AC +S315E07D6D6000000000000000000000000000000000C0 +S315E07D6D700100080040000000000000000000000067 +S315E07D6D80000000000000000002001000800000000E +S315E07D6D900000000000000000000000000000000090 +S315E07D6DA0040020000000000000000000000000005C +S315E07D6DB00000000000000100080040000000000027 +S315E07D6DC0000000000000000000000000000002005E +S315E07D6DD010008000000000000000000000000000C0 +S315E07D6DE0000000000000040020000000000000001C +S315E07D6DF00000000000000000000000000100080027 +S315E07D6E0040000000000000000000000000000000DF +S315E07D6E10000000000200100080000000000000007D +S315E07D6E2000000000000000000000000004002000DB +S315E07D6E3000000000000000000000000000000000EF +S315E07D6E400000010008004000000000000000000096 +S315E07D6E50000000000000000000000200100080003D +S315E07D6E6000000000000000000000000000000000BF +S315E07D6E70000004002000000000000000000000008B +S315E07D6E800000000000000000010008004000000056 +S315E07D6E90000000000000000000000000000000008F +S315E07D6EA002001000800000000000000000000000ED +S315E07D6EB0000000000000000004002000000000004B +S315E07D6EC0000001000079170080000000000000004E +S315E07D6ED0000000040020000000000000000000002B +S315E07D6EE000000000000000000001000800400000F6 +S315E07D6EF0000000000000000000000000000000002F +S315E07D6F00000200100080000000000000000000008C +S315E07D6F1000000000000000000004002000000000EA +S315E07D6F2000000000000000000000000000000001FD +S315E07D6F3000080040000000000000000000000000A6 +S315E07D6F40000000000000000200100080000000004C +S315E07D6F5000000000000000000000000000000004CA +S315E07D6F60002000000000000000000000000000009E +S315E07D6F700000000000010008004000000000000065 +S315E07D6F80000000000000000000000000000200108C +S315E07D6F90008000000000000000000000000000000E +S315E07D6FA0000000000004002000000000000000005A +S315E07D6FB00000000000000000000000010008004025 +S315E07D6FC0000000000000000000000000000000005E +S315E07D6FD000000002001000800000000000000000BC +S315E07D6FE0000000000000000000000004002000001A +S315E07D6FF0000000000000000000000000000000002E +S315E07D700000010008004000000000000000000000D4 +S315E07D7010000000000000000000020010008000007B +S315E07D702000000000000000000000000000000000FD +S315E07D70300004002000000000000000000000CE7784 +S315E07D7040000003031C1C606000000303181C406005 +S315E07D70500000070738384040000007073838C0C0D1 +S315E07D706000000607303880C001010E0E707080800A +S315E07D707001010E0E7070808001010C0E6070008043 +S315E07D708003031C1CE0E0000003031C1CE0E00000A1 +S315E07D70900303181CC0E0000007073838C0C00000B5 +S315E07D70A007073838C0C000000607303880C00101C8 +S315E07D70B00E0E7070808001010E0E70708080010171 +S315E07D70C00C0E6070008003031C1CE0E000000303EF +S315E07D70D01C1CE0E000000303181CC0E0000007076D +S315E07D70E03838C0C0000007073838C0C00000060742 +S315E07D70F0303880C001010E0E7070808001010E0E69 +S315E07D71007070808001010C0E6070008003031C1C92 +S315E07D7110E0E0000003031C1CE0E000000303181C14 +S315E07D7120C0E0000007073838C0C0000007073838E0 +S315E07D7130C0C000000607303880C001010E0E7070B9 +S315E07D7140808001010E0E7070808001010C0E6070F2 +S315E07D7150008003031C1CE0E0000003031C1CE0E050 +S315E07D716000000303181CC0E0000007073838C0C0E4 +S315E07D7170000007073838C0C000000607303880C0F9 +S315E07D718001010E0E7070808001010E0E70708080A0 +S315E07D719001010C0E6070008003031C1CE0E0000022 +S315E07D71A002021C1CE0E000000202181CC0E00000A8 +S315E07D71B006063838C0C0007272000000000000008C +S315E07D71C0000000000000000000000000000000005C +S315E07D71D0000000000000000000000000000000004C +S315E07D71E0000000000000000000000000000000003C +S315E07D71F0000000000000000000000000000000002C +S315E07D7200000000000000000000000000000000001B +S315E07D7210000000000000000000000000000000000B +S315E07D722000000000000000000000000000000000FB +S315E07D723000000000000000000000000000000000EB +S315E07D724000000000000000000000000000000000DB +S315E07D725000000000000000000000000000000000CB +S315E07D726000000000000000000000000000000000BB +S315E07D727000000000000000000000000000000000AB +S315E07D7280000000000000000000000000000000009B +S315E07D7290000000000000000000000000000000008B +S315E07D72A0000000000000000000000000000000007B +S315E07D72B0000000000000000000000000000000006B +S315E07D72C0000000000000000000000000000000005B +S315E07D72D0000000000000000000000000000000004B +S315E07D72E0000000000000000000000000000000003B +S315E07D72F0000000000000000000000000000000002B +S315E07D7300000000000000000000000000000000001A +S315E07D7310000000000000000000000000000000000A +S315E07D732000000000000000000000000000000000FA +S315E07D73303E490000008000000000000000000000E3 +S315E07D734000000000000000000000000000000000DA +S315E07D735000000000000000000000000000000000CA +S315E07D7360000000000080000000000000000000003A +S315E07D737000000000000000000000000000000000AA +S315E07D7380000000000000000000100000000000008A +S315E07D7390000000000000000000000000000000008A +S315E07D73A000000000000000000000000000000080FA +S315E07D73B0000000000000000000000000000000006A +S315E07D73C0000000000000000000000000000000005A +S315E07D73D00000000000000800000000000000000042 +S315E07D73E0000000000000000000000000000000003A +S315E07D73F0000000000000000000000000000000002A +S315E07D74000000000000000000000000000000000019 +S315E07D741000000000000000002000000000000040A9 +S315E07D742000000000000000000000040000000000F5 +S315E07D743000000000000000000000000000000000E9 +S315E07D744000000000000000000000000000000000D9 +S315E07D745000000000000000000000000000000000C9 +S315E07D746000000000000000080000000000000000B1 +S315E07D747000000000000000000004000000000000A5 +S315E07D74800000000000000000000000000000000099 +S315E07D74900000000000000040000000000000000049 +S315E07D74A000200000000000000067A10080000000D1 +S315E07D74B00000000000000000000000000000000069 +S315E07D74C00000200000000000000000000000000039 +S315E07D74D00000000000000000000000000000000049 +S315E07D74E00000000000000000000000000000000039 +S315E07D74F00000000000200000000000000000000009 +S315E07D75000000000000000000000000000000000018 +S315E07D75100000000000000000000000000000000008 +S315E07D752000000000000000000000000000000000F8 +S315E07D753000000000000000000000000000000000E8 +S315E07D754000000000000000000000000000000000D8 +S315E07D755000000000000000000000000000000000C8 +S315E07D756000000000000000000000000000000000B8 +S315E07D757000000000000000000000000000000000A8 +S315E07D75800000000000000000000000000000000098 +S315E07D75900000000000000000000000000000000088 +S315E07D75A00000000000000000000000000000000078 +S315E07D75B00000000000000000000000000000000068 +S315E07D75C00000000000000000000000000000000058 +S315E07D75D00000000000000000000000000000000048 +S315E07D75E00000000000000000000000000000000038 +S315E07D75F00000000000000000000000000000000028 +S315E07D76000000000000000000000000000000000017 +S315E07D761000000800000000000000000000000000FF +S315E07D76200000B5D60000000000000000000000006C +S315E07D763000000000000000000000000000000000E7 +S315E07D764000000000000000000000000000000000D7 +S315E07D765000000000000000000000000000100000B7 +S315E07D766000000000000000000000000000000000B7 +S315E07D767000000000000000000000000000000000A7 +S315E07D76800000000000000000000000000000000097 +S315E07D76900000000000000000000000000000000087 +S315E07D76A00000000000000000000000000000000077 +S315E07D76B00000000000000000000000000000000067 +S315E07D76C00000000000000000000000000000000057 +S315E07D76D00000000000000000000000000000000047 +S315E07D76E00000000000000000000000000000000037 +S315E07D76F00000000000000000000000000000000027 +S315E07D770000000000040020000000000000000000F2 +S315E07D77100000000000000000000000000000000006 +S315E07D772000000000000000000000000000000000F6 +S315E07D773000000000000000000000000000000000E6 +S315E07D774000000000000000000000000000000000D6 +S315E07D775000000000000000000000000000000000C6 +S315E07D776000000000000000000000000000000000B6 +S315E07D777000000000000000000000000000000000A6 +S315E07D7780000000000000000000000008002000006E +S315E07D77900000000000000000000000D4A70000808B +S315E07D77A080000000000000000000000000200000D6 +S315E07D77B00000000000200000000000000000000046 +S315E07D77C00000000000000000000000000000000056 +S315E07D77D000000000000000000000000000800000C6 +S315E07D77E00000000000002000000000000000000016 +S315E07D77F00000000000000000000000000000000026 +S315E07D78000000000000000000000000000000000015 +S315E07D78100000000000000000000000000000000005 +S315E07D78200000008000000000000000000000000075 +S315E07D783000000000000000000000000000000000E5 +S315E07D784000000000000000000000080000000000CD +S315E07D785000000000000000000000000000000000C5 +S315E07D786000000000000000000000000000000000B5 +S315E07D787000000000000000000000000000000000A5 +S315E07D78800000000000000000000000000000000095 +S315E07D78900000000000000040000000000000000045 +S315E07D78A00000000000000000000000000000000075 +S315E07D78B00000000000000000000000000000000065 +S315E07D78C00000000000000000000000000000000055 +S315E07D78D0000000000000000000000008000000003D +S315E07D78E00000000000000000000000000000000035 +S315E07D78F00000000000000000000000000000000025 +S315E07D79000000000000000000000400000000000010 +S315E07D79100000000061E2000000000000000000823F +S315E07D79200000000080000000808000000000000074 +S315E07D793000000000000000020000000000022000C0 +S315E07D794000000200000000000000000000000000D2 +S315E07D795000000002000000000000000000000002C0 +S315E07D796000000000000200000000020000000000B0 +S315E07D797000000000000000000000000000000000A4 +S315E07D79800000000000000000000000000000000094 +S315E07D79900000000000000000000000000000000084 +S315E07D79A00000000000000000000000000000000074 +S315E07D79B00000000000000000000000000000000064 +S315E07D79C00000000000000000000000000000000054 +S315E07D79D00000000000000000000000000000000044 +S315E07D79E00000000000000000000000000000000034 +S315E07D79F00000000000000000000000000000000024 +S315E07D7A000000000000000000000000000000000013 +S315E07D7A100000000000000000000000000000000003 +S315E07D7A2000000000000000000000000000000000F3 +S315E07D7A3000000000004000000000000000000000A3 +S315E07D7A400040000000004000000000000000000053 +S315E07D7A500040000000000040000000000000000043 +S315E07D7A600004000000000004004000000004000067 +S315E07D7A700000040000000005000000000004000195 +S315E07D7A8000000000010000400004000040AA1C0048 +S315E07D7A90040120000008400048020010010400288F +S315E07D7AA0000800000004412048000002001012009A +S315E07D7AB0400400E1004A9000800000030048020097 +S315E07D7AC010008044600024010008000200544080DC +S315E07D7AD0202000060010040120080000C08040023E +S315E07D7AE000100184082000000000000441200842C7 +S315E07D7AF0001040400000000400A1028810008000D4 +S315E07D7B000041400802001000000400602441800826 +S315E07D7B1000820014A0000040000640900401A00809 +S315E07D7B208000004040020010018408200000000033 +S315E07D7B304044012008020010000000004084C0217E +S315E07D7B4002081000400040010008824090000004D9 +S315E07D7B5000202401800800C20014A0000000000679 +S315E07D7B6000900401208880000040400200100184DE +S315E07D7B7008200000000040440120080200001000BB +S315E07D7B801080C0044021024810000000000180C83A +S315E07D7B900240100080040020240100080042041009 +S315E07D7BA020800000000200100401A00800000040D3 +S315E07D7BB040820010010408200000008040C40120BE +S315E07D7BC00802000000100080D00044210208001069 +S315E07D7BD0441040018088024010000004002024010A +S315E07D7BE0800880420014200080008006001004801A +S315E07D7BF02000000800000802005000C400280000B4 +S315E07D7C004040000C0020C70600240000010940002A +S315E07D7C1000A0020020098400104000000038A4097D +S315E07D7C2020000248080080001000040021120800B0 +S315E07D7C30408000000110180240100080040400001E +S315E07D7C40010028204204002080000010120000146C +S315E07D7C508010090100000020020070418408004088 +S315E07D7C600000002024012008004002028000000080 +S315E07D7C701410210208104080000001000802400037 +S315E07D7C8000800404101001002820020410208000EA +S315E07D7C9040000240100480000901400020200200DF +S315E07D7CA01001840820400000000004012008004007 +S315E07D7CB01202000000000400A1820810408000004E +S315E07D7CC00100080240100080040400000100282025 +S315E07D7CD042041020800000000200100480000901AB +S315E07D7CE040002020020010018408204000000000B2 +S315E07D7CF004012008004012028000000004002102F9 +S315E07D7D000810408000000100080240100080040455 +S315E07D7D1020000100080042241000800000000220BF +S315E07D7D2030048021000108080000020050418408EB +S315E07D7D30004000000020240120080000120280009F +S315E07D7D400040040061020810008000000140480206 +S315E07D7D50401004800000200001000800422410004D +S315E07D7D60A000200002001004802100000808010028 +S315E07D7D70020050408408012000000000046020E8F5 +S315E07D7D80D800000000000000000000000000008038 +S315E07D7D900000000000000000000000000000000080 +S315E07D7DA00000000000000000000000000000000070 +S315E07D7DB00000000000000000000000000000000060 +S315E07D7DC00000000000000000000000000000000050 +S315E07D7DD00000000000000000000000000000000040 +S315E07D7DE00000000000000000000000000000000030 +S315E07D7DF00000000000000000000000000000000020 +S315E07D7E00000000000000000000000000000000000F +S315E07D7E1000000000000000000000000000000000FF +S315E07D7E2000000000000000000000000000000000EF +S315E07D7E3000000000000000000000000000000000DF +S315E07D7E4000000000000000000000000000000000CF +S315E07D7E5000000000000000000000000000000000BF +S315E07D7E6000000000000000000000000000000000AF +S315E07D7E70000000000000000000000000000000009F +S315E07D7E80000000000000000000000000000000008F +S315E07D7E90000000000000000000000000000000007F +S315E07D7EA0000000000000000000000000000000006F +S315E07D7EB0000000000000000000000000000000005F +S315E07D7EC0000000000000000000000000000000004F +S315E07D7ED0000000000000000000000000000000003F +S315E07D7EE0000000000000000000000000000000002F +S315E07D7EF0000000000000000091ED000000000000A1 +S315E07D7F00000000000000000000000000000000000E +S315E07D7F1000000000000000000000000000000000FE +S315E07D7F2000000000000000400000000000000000AE +S315E07D7F3000000000000000000000000000000000DE +S315E07D7F4000000000000000000000000000000000CE +S315E07D7F5000000000000000000000000000000000BE +S315E07D7F6000000000000000000000000000000000AE +S315E07D7F70000000000000000000000000000000009E +S315E07D7F80000000000000000000000000000000008E +S315E07D7F90000000000000000000000000000000007E +S315E07D7FA0000000000000000000000000000000006E +S315E07D7FB0000000000000000000000000000000005E +S315E07D7FC0000000000000000000000000000000004E +S315E07D7FD0000000000000000000000000000000003E +S315E07D7FE0000000000000000000000000000000002E +S315E07D7FF0000000000000000000000000000000001E +S315E07D8000000000000000000000020000000000000B +S315E07D801000000000000000000000000000000000FD +S315E07D802000000000000000000000000000000000ED +S315E07D8030000000004000000000000000000000009D +S315E07D804000000000000000000000000000002000AD +S315E07D805000000000000000000000000000000000BD +S315E07D806000000100000000000000000000000000AC +S315E07D80700001950000808000000000000000000007 +S315E07D8080000000000000000000000000000000008D +S315E07D8090004000000000000000000000000000003D +S315E07D80A0000000000000000000000000000000006D +S315E07D80B0000000000000000000000000000000005D +S315E07D80C0000000000000000000000000000000004D +S315E07D80D0000000000000000000000000000000003D +S315E07D80E0000000000000000000000000000000002D +S315E07D80F0000000000000000000000000000000001D +S315E07D8100000000000000000000000000000000000C +S315E07D811000000000000000000000000000000000FC +S315E07D812000000000000000000000000000000000EC +S315E07D813000000000000000000000000000000000DC +S315E07D814000000000000000000000000000000000CC +S315E07D815000000000000000000000000000000000BC +S315E07D816000000000000000000000000000000000AC +S315E07D8170000000000000000000000000000000009C +S315E07D8180000000000000000000000000000000008C +S315E07D8190000000000000000000000000000000007C +S315E07D81A0000000000000000000000000000000006C +S315E07D81B0000000000000000000000000000000005C +S315E07D81C0000000000000000000000000000000004C +S315E07D81D0000000000000000000000000000000003C +S315E07D81E00000000000000001010080A30000000007 +S315E07D81F0000000000000000000000000000000001C +S315E07D820000000000000000000040000000000000CB +S315E07D821000000000000000000000400000000000BB +S315E07D822000000000000000000000000000000000EB +S315E07D823000000000000000000000000000000000DB +S315E07D824000000000000000000000000000000000CB +S315E07D825000000000000000000000000000000000BB +S315E07D826000000000000000000000000000000000AB +S315E07D8270000000000000000000000000000000009B +S315E07D8280000000000000000000000000000000008B +S315E07D8290000000000000000000000000000000007B +S315E07D82A0000000000000000000000000000000006B +S315E07D82B0000000000000000000000000000000005B +S315E07D82C0000000000000000000000000000000004B +S315E07D82D0000000000000000000000000000000003B +S315E07D82E0000000000000000000000000000000002B +S315E07D82F0000000000000000000000000000000001B +S315E07D8300000000000000000000000000000000000A +S315E07D831000000000000000000000000000000000FA +S315E07D832000000000000040000000000000000000AA +S315E07D833000000000000000000000000000000000DA +S315E07D834000000000000000000000000000000000CA +S315E07D835000000000010000000000000000000000B9 +S315E07D836000000088390000000000000000000000E9 +S315E07D8370000000000000000000000000000000009A +S315E07D8380000000000000000000000000000000008A +S315E07D8390000000000000000000000000000000007A +S315E07D83A0000000000000000000000000000000006A +S315E07D83B0000000000000000000000000000000005A +S315E07D83C0000000000000000000000000000000004A +S315E07D83D0000000000000000000000000000000003A +S315E07D83E0000000000000000000000000000000002A +S315E07D83F0000000000000000000000000000000001A +S315E07D84000000000000000000000000000000000009 +S315E07D841000000000000000000000000000000000F9 +S315E07D842000000000000000000000000000000000E9 +S315E07D843000000000000000000000000000000000D9 +S315E07D844000000000000000000000000000000000C9 +S315E07D845000000000000000000000000000000000B9 +S315E07D846000010000000000000000000000000000A8 +S315E07D84700000000000000000000000000000000099 +S315E07D84800000000000000000000000000000000089 +S315E07D84900000000000000000000000000000000079 +S315E07D84A00000000000000000000000000000000069 +S315E07D84B00000000000000000000000000000000059 +S315E07D84C00000000000000000000000000000000049 +S315E07D84D00000000000000000000000006AB500001A +S315E07D84E00000000000000000000000000000000029 +S315E07D84F00000000000000000000000000000000019 +S315E07D85000000000000000000000000000000000008 +S315E07D851000000000000000000000000000000000F8 +S315E07D852000000000000000000000000000000000E8 +S315E07D853000000000000000000000000000000000D8 +S315E07D854000000000000000000000000000000000C8 +S315E07D855000000000000000000000000000000000B8 +S315E07D856000000000000000000000000000000000A8 +S315E07D85700000000000000000000000000000000098 +S315E07D85800000000000000000000000000000000088 +S315E07D85900000000000000000000000000000000078 +S315E07D85A00000000000000000000000000000000068 +S315E07D85B00000000000000000000000000000000058 +S315E07D85C00000000000000000000000000000000048 +S315E07D85D00000000000000000000000000000000038 +S315E07D85E00000000000000000000000000000000028 +S315E07D85F00000000000000000000000000000000018 +S315E07D86000000000000000000000000000000000007 +S315E07D861000000000000000000000000000000000F7 +S315E07D862000000000000000000000000000000000E7 +S315E07D863000000000000000000000000000000000D7 +S315E07D864000000000000000000000000000000000C7 +S315E07D865000000000003E4900000000000000000030 +S315E07D866000000000000000000000000000000000A7 +S315E07D86700000000000000000000000000000000097 +S315E07D86800000000000000000000000000000000087 +S315E07D86900000000000000000000000000000000077 +S315E07D86A00000000000000000000000000000000067 +S315E07D86B00000000000000000000000000000000057 +S315E07D86C00000000000000000000000000000000047 +S315E07D86D00000000000000000000000000000000037 +S315E07D86E00000000000000000000000000000000027 +S315E07D86F00000000000000000000000000000000017 +S315E07D87000000000000000000000000000000000006 +S315E07D871000000000000000000000000000000000F6 +S315E07D872000000000000000000000000000000000E6 +S315E07D873000000000000000000000000000000000D6 +S315E07D874000000000000000000000000000000000C6 +S315E07D875000000000000000000000000000000000B6 +S315E07D876000000000000000000000000000000000A6 +S315E07D87700000000000000000000000000000000096 +S315E07D87800000000000000000000000000000000086 +S315E07D87900000000000000000000000000000000076 +S315E07D87A00000000000000000000000000000000066 +S315E07D87B00000000000000000000000000000000056 +S315E07D87C000000000000000000000000000003E49BF +S315E07D87D00000000000000000000000000000000036 +S315E07D87E00000000000000000000000000000000026 +S315E07D87F00000000000000000000000000000000016 +S315E07D88000000000000000000000000000000000005 +S315E07D881000000000000000000000000000000000F5 +S315E07D882000000000000000000000000000000000E5 +S315E07D883000000000000000000000000000000000D5 +S315E07D884000000000000000000000000000000000C5 +S315E07D885000000000000000000000000000000000B5 +S315E07D8860000000000008000000000000000000009D +S315E07D88700000000000000000000000000000000095 +S315E07D88800000000000000000000000000000000085 +S315E07D88900000000000000000000000000000000075 +S315E07D88A00000000000000000000000000000000065 +S315E07D88B00000000000000000000000000000000055 +S315E07D88C00000000000000000000000010000000044 +S315E07D88D00000000000000000000000000000000035 +S315E07D88E00000000000000000000000000000000025 +S315E07D88F00000000000000000000000000000000015 +S315E07D89000000000000000000000000000000000004 +S315E07D891000000000000000000000000000000000F4 +S315E07D892000000000000000000000000000000000E4 +S315E07D893000000000000000000000000000000000D4 +S315E07D8940000000000000001BE800000000000000C1 +S315E07D895000000000000000000000000000000000B4 +S315E07D896000000000000000000000000000000000A4 +S315E07D89700000000000000000000000000000000094 +S315E07D89800000000000000000000000000000000084 +S315E07D89900000000000000000000000000000000074 +S315E07D89A00000000000000000000000000000000064 +S315E07D89B00000000000000000000000000000000054 +S315E07D89C00000000000000000000000000000000044 +S315E07D89D00000000000000000000000000000000034 +S315E07D89E00000000000000000000000000000000024 +S315E07D89F00000000000000000000000000000000014 +S315E07D8A000000000000000000000000000000000003 +S315E07D8A1000000000000000000000000000000000F3 +S315E07D8A2000000000000000000000000000000000E3 +S315E07D8A3000000000000000000000000000000000D3 +S315E07D8A4000000000000000000000000000000000C3 +S315E07D8A5000000000000000000000000000000000B3 +S315E07D8A6000000000000000000000000000000000A3 +S315E07D8A700000000000000000000000000000000093 +S315E07D8A800000000000000000000000000000000083 +S315E07D8A900000000000000000000000000000000073 +S315E07D8AA00000000000000000000000000000000063 +S315E07D8AB00000000000000000000000000000000053 +S315E07D8AC03E490000000000000000000000000000BC +S315E07D8AD00000000000000000000000000000000033 +S315E07D8AE00000000000000000000000000000000023 +S315E07D8AF00000000000000000000000000000000013 +S315E07D8B000000000000000000000000000000000002 +S315E07D8B1000000000000000000000000000000000F2 +S315E07D8B2000000000000000000000000000000000E2 +S315E07D8B3000000000000000000000000000000000D2 +S315E07D8B4000000000000000000000000000000000C2 +S315E07D8B5000000000000000000000000000000000B2 +S315E07D8B6000000000000000000000000000000000A2 +S315E07D8B700000000000000000000000000000000092 +S315E07D8B800000000000000000000000000000000082 +S315E07D8B900000000000000000000000000000000072 +S315E07D8BA00000000000000000000000000000000062 +S315E07D8BB00000000000000000000000000000000052 +S315E07D8BC00000000000000000000000000000000042 +S315E07D8BD00000000000000000000000000000000032 +S315E07D8BE00000000000000000000000000000000022 +S315E07D8BF00000000000000000000000000000000012 +S315E07D8C000000000000000000000000000000000001 +S315E07D8C1000000000000000000000000000000000F1 +S315E07D8C2000000000000000000000000000000000E1 +S315E07D8C300000000000000000003E490000008000CA +S315E07D8C4000000000000000000000000000000000C1 +S315E07D8C5000000000000000000000000000000000B1 +S315E07D8C6000000000000000000000000000000000A1 +S315E07D8C700000000000000000000000000000000091 +S315E07D8C800000000000000000000000000000000081 +S315E07D8C900000000000000000000000000000000071 +S315E07D8CA00000000000000000000000000000000061 +S315E07D8CB00000000000000000000000000000000051 +S315E07D8CC00000000000000000000000000000000041 +S315E07D8CD00000000000000000000000000000000031 +S315E07D8CE00000000000000000000000000000000021 +S315E07D8CF00000000000000000000000000000000011 +S315E07D8D000000000000000000000000000000000000 +S315E07D8D1000000000000000000000000000000000F0 +S315E07D8D2000000000000000000000000000000000E0 +S315E07D8D3000000000000000000000000000000000D0 +S315E07D8D4000000000000000000000000000000000C0 +S315E07D8D5000000000000000000000000000000000B0 +S315E07D8D6000000000000000000000000000000000A0 +S315E07D8D700000000000000000000000000000000090 +S315E07D8D800000000000000000000000000000000080 +S315E07D8D900000000000000000000000000000000070 +S315E07D8DA00000000000000000000000000000000060 +S315E07D8DB000004B08000000000000000000000000FD +S315E07D8DC00000000000000000000000000000000040 +S315E07D8DD00000000000000000000000000000000030 +S315E07D8DE00000000000000000000000000000000020 +S315E07D8DF00000000000000000000000000000000010 +S315E07D8E0000000000000000000000000000000000FF +S315E07D8E1000000000000000000000000000000000EF +S315E07D8E2000000000000000000000000000000000DF +S315E07D8E3000000000000000000000000000000000CF +S315E07D8E4000000000000000000000000000000000BF +S315E07D8E5000000000000000000000000000000000AF +S315E07D8E60000000000000000000000000000000009F +S315E07D8E70000000000000000000000000000000008F +S315E07D8E80000000000000000000000000000000007F +S315E07D8E90000000000000000000000000000000006F +S315E07D8EA0000000000000000000000000000000005F +S315E07D8EB0000000000000000000000000000000004F +S315E07D8EC0000000000000000000000000000000003F +S315E07D8ED0000000000000000000000000000000002F +S315E07D8EE0000000000000000000000000000000001F +S315E07D8EF0000000000000000000000000000000000F +S315E07D8F0000000000000000000000000000000000FE +S315E07D8F1000000000000000000000000000000000EE +S315E07D8F2000000000000000000000003E49000080D7 +S315E07D8F3000000000000000000000000000000000CE +S315E07D8F4000000000000000000000000000000000BE +S315E07D8F5000000000000000000000000000000000AE +S315E07D8F60000000000000000000000000000000009E +S315E07D8F70000000000000000000000000000000008E +S315E07D8F80000000000000000000000000000000007E +S315E07D8F90000000000000000000000000000000006E +S315E07D8FA0000000000000000000000000000000005E +S315E07D8FB0000000000000000000000000000000004E +S315E07D8FC0000000000000000000000000000000003E +S315E07D8FD0000000000000000000000000000000002E +S315E07D8FE0000000000000000000000000000000001E +S315E07D8FF0000000000000000000000000000000000E +S315E07D900000000000000000000000000000000000FD +S315E07D901000000000000000000000000000000000ED +S315E07D902000000000000000000000000000000000DD +S315E07D903000000000000000000000000000000000CD +S315E07D904000000000000000000000000000000000BD +S315E07D905000000000000000000000000000000000AD +S315E07D9060000000000000000000000000000000009D +S315E07D9070000000000000000000000000000000008D +S315E07D9080000000000000000000000000000000007D +S315E07D9090000000000000000000000000000000006D +S315E07D90A000000000BEAE00000000000000000000F1 +S315E07D90B0000000000000000000000000000000004D +S315E07D90C0000000000000000000000000000000003D +S315E07D90D0000000000000000000000000000000002D +S315E07D90E0000000000000000000000000000000001D +S315E07D90F0000000000000000000000000000000000D +S315E07D910000000000000000000000000000000000FC +S315E07D911000000000000000000000000000000000EC +S315E07D912000000000000000000000000000000000DC +S315E07D913000000000000000000000000000000000CC +S315E07D914000000000000000000000000000000000BC +S315E07D915000000000000000000000000000000000AC +S315E07D9160000000000000000000000000000000009C +S315E07D9170000000000000000000000000000000008C +S315E07D9180000000000000000000000000000000007C +S315E07D9190000000000000000000000000000000006C +S315E07D91A0000000000000000000000000000000005C +S315E07D91B0000000000000000000000000000000004C +S315E07D91C0000000000000000000000000000000003C +S315E07D91D0000000000000000000000000000000002C +S315E07D91E0000000000000000000000000000000001C +S315E07D91F0000000000000000000000000000000000C +S315E07D920000000000000000000000000000000000FB +S315E07D9210000000000000000000000000003E490064 +S315E07D922000000000000000000000000000000000DB +S315E07D923000000000000000000000000000000000CB +S315E07D924000000000000000000000000000000000BB +S315E07D925000000000000000000000000000000000AB +S315E07D9260000000000000000000000000000000009B +S315E07D9270000000000000000000000000000000008B +S315E07D9280000000000000000000000000000000007B +S315E07D9290000000000000000000000000000000006B +S315E07D92A0000000000000000000000000000000005B +S315E07D92B0000000000000000000000000000000004B +S315E07D92C0000000000000000000000000000000003B +S315E07D92D0000000000000000000000000000000002B +S315E07D92E0000000000000000000000000000000001B +S315E07D92F0000000000000000000000000000000000B +S315E07D930000000000000000000000000000000000FA +S315E07D931000000000000000000000000000000000EA +S315E07D932000000000000000000000000000000000DA +S315E07D933000000000000000000000000000000000CA +S315E07D934000000000000000000000000000000000BA +S315E07D935000000000000000000000000000000000AA +S315E07D9360000000000000000000000000000000009A +S315E07D9370000000000000000000000000000000008A +S315E07D9380000000000000000000000000000000007A +S315E07D93900000000000003E490000000000000000E3 +S315E07D93A0000000000000000000000000000000005A +S315E07D93B0000000000000000000000000000000004A +S315E07D93C0000000000000000000000000000000003A +S315E07D93D0000000000000000000000000000000002A +S315E07D93E0000000000000000000000000000000001A +S315E07D93F0000000000000000000000000000000000A +S315E07D940000000000000000000000000000000000F9 +S315E07D941000000000000000000000000000000000E9 +S315E07D942000000000000000000000000000000000D9 +S315E07D943000000000000000000000000000000000C9 +S315E07D944000000000000000000000000000000000B9 +S315E07D945000000000000000000000000000000000A9 +S315E07D94600000000000000000000000000000000099 +S315E07D94700000000000000000000000000000000089 +S315E07D94800000000000000000000000000000000079 +S315E07D94900000000000000000000000000000000069 +S315E07D94A00000000000000000000000000000000059 +S315E07D94B00000000000000000000000000000000049 +S315E07D94C00000000000000000000000000000000039 +S315E07D94D00000000000000000000000000000000029 +S315E07D94E00000000000000000000000000000000019 +S315E07D94F00000000000000000000000010000000008 +S315E07D950000000000000000000000000000000003F5 +S315E07D95109800008080000000000000000000000050 +S315E07D952000000000000000000000000000000000D8 +S315E07D953000000000000000000000000000000000C8 +S315E07D954000000000000000000000000000000000B8 +S315E07D955000000000000000000000000000000000A8 +S315E07D95600000000000000000000000000000000098 +S315E07D95700000000000000000000000000000000088 +S315E07D95800000000000000000000000000000000078 +S315E07D95900000000000000000000000000000000068 +S315E07D95A00000000000000000000000000000000058 +S315E07D95B00000000000000000000000000000000048 +S315E07D95C00000000000000000000000000000000038 +S315E07D95D00000000000000000000000000000000028 +S315E07D95E00000000000000000000000000000000018 +S315E07D95F00000000000000000000000000000000008 +S315E07D960000000000000000000000000000000000F7 +S315E07D961000000000000000000000000000000000E7 +S315E07D962000000000000000000000000000000000D7 +S315E07D963000000000000000000000000000000000C7 +S315E07D964000000000000000000000000000000000B7 +S315E07D965000000000000000000000000000000000A7 +S315E07D96600000000000000000000000000000000097 +S315E07D96700000000000000000000000000000000087 +S315E07D968000000000000101009BBF0000000000001B +S315E07D96900000000000000000000000000000000067 +S315E07D96A00000000000000000000000000000000057 +S315E07D96B00000000000000000000000000000000047 +S315E07D96C00000000000000000000000000000000037 +S315E07D96D00000000000000000000000000000000027 +S315E07D96E00000000000000000000000000000000017 +S315E07D96F00000000000000000000000000000000007 +S315E07D970000000000000000000000000000000000F6 +S315E07D971000000000000000000000000000000000E6 +S315E07D972000000000000000000000000000000000D6 +S315E07D973000000000000000000000000000000000C6 +S315E07D974000000000000000000000000000000000B6 +S315E07D975000000000000000000000000000000000A6 +S315E07D97600000000000000000000000000000000096 +S315E07D97700000000000000000000000000000000086 +S315E07D97800000000000000000000000000000000076 +S315E07D97900000000000000000000000000000000066 +S315E07D97A00000000000000000000000000000000056 +S315E07D97B00000000000000000000000000000000046 +S315E07D97C00000000000000000000000000000000036 +S315E07D97D00000000000000000000000000000000026 +S315E07D97E00000000000000000000000000000000016 +S315E07D97F00000000000000000000000000000000006 +S315E07D9800003E49000000000000000000000000006E +S315E07D981000000000000000000000000000000000E5 +S315E07D982000000000000000000000000000000000D5 +S315E07D983000000000000000000000000000000000C5 +S315E07D984000000000000000000000000000000000B5 +S315E07D985000000000000000000000000000000000A5 +S315E07D98600000000000000000000000000000000095 +S315E07D98700000000000000000000000000000000085 +S315E07D98800000000000000000000000000000000075 +S315E07D98900000000000000000000000000000000065 +S315E07D98A00000000000000000000000000000000055 +S315E07D98B00000000000000000000000000000000045 +S315E07D98C00000000000000000000000000000000035 +S315E07D98D00000000000000000000000000000000025 +S315E07D98E00000000000000000000000000000000015 +S315E07D98F00000000000000000000000000000000005 +S315E07D990000000000000000000000000000000000F4 +S315E07D991000000000000000000000000000000000E4 +S315E07D992000000000000000000000000000000000D4 +S315E07D993000000000000000000000000000000000C4 +S315E07D994000000000000000000000000000000000B4 +S315E07D995000000000000000000000000000000000A4 +S315E07D99600000000000000100000000000000000093 +S315E07D997000000000000000000000039800000000E9 +S315E07D99800000000000000000000000800000008074 +S315E07D99900000000000000000000000000000000064 +S315E07D99A00000000000000000000000000000000054 +S315E07D99B00000000000000000000000000000000044 +S315E07D99C00000000000000000000000000000000034 +S315E07D99D00000000000000000000000000000000024 +S315E07D99E00000000000000000000000000000000014 +S315E07D99F00000000000000000000000000000000004 +S315E07D9A0000000000000000000000000000000000F3 +S315E07D9A1000000000000000000000000000000000E3 +S315E07D9A2000000000000000000000000000000000D3 +S315E07D9A3000000000000000000000000000000000C3 +S315E07D9A4000000000000000000000000000000000B3 +S315E07D9A5000000000000000000000000000000000A3 +S315E07D9A600000000000000000000000000000000093 +S315E07D9A700000000000000000000000000000000083 +S315E07D9A800000000000000000000000000000000073 +S315E07D9A900000000000000000000000000000000063 +S315E07D9AA00000000000000000000000000000000053 +S315E07D9AB00000000000000000000000000000000043 +S315E07D9AC00000000000000000000000000000000033 +S315E07D9AD00000000000000000000000000000000023 +S315E07D9AE00000000000000000000000000000000013 +S315E07D9AF0000000D13A0000000000000000000400F4 +S315E07D9B002000000400A000008000000000000000AE +S315E07D9B100000000001000800400100080040000050 +S315E07D9B2000000000000000000000000002001000C0 +S315E07D9B3080020010008000000000000000000000B0 +S315E07D9B40000000000400200000040020000000006A +S315E07D9B500000000000000000000001000800400158 +S315E07D9B60000800400000000000000000000000004A +S315E07D9B70000002001000800200100080000000005E +S315E07D9B80000000000000000000000400200000044A +S315E07D9B900020000000000000000000000000000042 +S315E07D9BA001000800400100080040000000000000C0 +S315E07D9BB0000000000000000002001000800200109E +S315E07D9BC000800000000000000000000000000000B2 +S315E07D9BD004002000000400200000000000000000DA +S315E07D9BE00000000000000100080040010008004080 +S315E07D9BF00000000000000000000000000000020000 +S315E07D9C0010008002001000800000000000000000CF +S315E07D9C100000000000000400200000040020000099 +S315E07D9C2000000000000000000000000001000800C8 +S315E07D9C304001000800400000000000000000000038 +S315E07D9C40000000000200100080020010008000008D +S315E07D9C50000000000000000000000000040020007D +S315E07D9C600004002000000000000000007469000090 +S315E07D9C700000000000000000000000000000000081 +S315E07D9C800000000000000000000000000000000071 +S315E07D9C900000000000000000000000000000000061 +S315E07D9CA00000000000000000000000000000000051 +S315E07D9CB00000000000000000000000000000000041 +S315E07D9CC00000000000000000000000000000000031 +S315E07D9CD00000000000000000000000000000000021 +S315E07D9CE00000000000000000000000000000000011 +S315E07D9CF00000000000000000000000000000000001 +S315E07D9D0000000000000000000000000000000000F0 +S315E07D9D1000000000000000000000000000000000E0 +S315E07D9D2000000000000000000000000000000000D0 +S315E07D9D3000000000000000000000000000000000C0 +S315E07D9D4000000000000000000000000000000000B0 +S315E07D9D5000000000000000000000000000000000A0 +S315E07D9D600000000000000000000000000000000090 +S315E07D9D700000000000000000000000000000000080 +S315E07D9D800000000000000000000000000000000070 +S315E07D9D900000000000000000000000000000000060 +S315E07D9DA00000000000000000000000000000000050 +S315E07D9DB00000000000000000000000000000000040 +S315E07D9DC00000000000000000000000000000000030 +S315E07D9DD00000000000000000000000000000000020 +S315E07D9DE000000000003E4900000000000000000089 +S315E07D9DF00000000000000000000000000000000000 +S315E07D9E0000000000000000000000000000000000EF +S315E07D9E1000000000000000000000000000000000DF +S315E07D9E2000000000000000000000000000000000CF +S315E07D9E3000000000000000000000000000000000BF +S315E07D9E4000000000000000000000000000000000AF +S315E07D9E50000000000000000000000000000000009F +S315E07D9E60000000000000000000000000000000008F +S315E07D9E70000000000000000000000000000000007F +S315E07D9E80000000000000000000000000000000006F +S315E07D9E90000000000000000000000000000000005F +S315E07D9EA0000000000000000000000000000000004F +S315E07D9EB0000000000000000000000000000000003F +S315E07D9EC0000000000000000000000000000000002F +S315E07D9ED0000000000000000000000000000000001F +S315E07D9EE0000000000000000000000000000000000F +S315E07D9EF000000000000000000000000000000000FF +S315E07D9F0000000000000000000000000000000000EE +S315E07D9F1000000000000000000000000000000000DE +S315E07D9F2000000000000000000000000000000000CE +S315E07D9F3000000000000000000000000000000000BE +S315E07D9F4000000000000000000000000000000000AE +S315E07D9F5000000000000000000000000000003E4917 +S315E07D9F60000000000000000000000000000000008E +S315E07D9F70000000000000000000000000000000007E +S315E07D9F80000000000000000000000000000000006E +S315E07D9F90000000000000000000000000000000005E +S315E07D9FA0000000000000000000000000000000004E +S315E07D9FB0000000000000000000000000000000003E +S315E07D9FC0000000000000000000000000000000002E +S315E07D9FD0000000000000000000000000000000001E +S315E07D9FE0000000000000000000000000000000000E +S315E07D9FF000000000000000000000000000000000FE +S315E07DA00000000000000000000000000000000000ED +S315E07DA01000000000000000000000000000000000DD +S315E07DA02000000000000000000000000000000000CD +S315E07DA03000000000000000000000000000000000BD +S315E07DA04000000000000000000000000000000000AD +S315E07DA050000000000000000000000000000000009D +S315E07DA060000000000000000000000000000000008D +S315E07DA070000000000000000000000000000000007D +S315E07DA080000000000000000000000000000000006D +S315E07DA090000000000000000000000000000000005D +S315E07DA0A0000000000000000000000000000000004D +S315E07DA0B0000000000000000000000000000000003D +S315E07DA0C0000000000000000000000000000000002D +S315E07DA0D0000000000000003E490000000000000096 +S315E07DA0E0000000000000000000000000000000000D +S315E07DA0F000000000000000000000000000000000FD +S315E07DA10000000000000000000000000000000000EC +S315E07DA11000000000000000000000000000000000DC +S315E07DA12000000000000000000000000000000000CC +S315E07DA13000000000000000000000000000000000BC +S315E07DA14000000000000000000000000000000000AC +S315E07DA150000000000000000000000000000000009C +S315E07DA160000000000000000000000000000000008C +S315E07DA170000000000000000000000000000000007C +S315E07DA180000000000000000000000000000000006C +S315E07DA190000000000000000000000000000000005C +S315E07DA1A0000000000000000000000000000000004C +S315E07DA1B0000000000000000000000000000000003C +S315E07DA1C0000000000000000000000000000000002C +S315E07DA1D0000000000000000000000000000000001C +S315E07DA1E0000000000000000000000000000000000C +S315E07DA1F000000000000000000000000000000000FC +S315E07DA20000000000000000000000000000000000EB +S315E07DA21000000000000000000000000000000000DB +S315E07DA22000000000000000000000000000000000CB +S315E07DA23000000000000000000000000000000000BB +S315E07DA24000000000000000000000000000010000AA +S315E07DA2506F890000000000000000000000000000A3 +S315E07DA260000000000000000000000000000000008B +S315E07DA270000000000000000000000000000000007B +S315E07DA280000000000000000000000000000000006B +S315E07DA290000000000000000000000000000000005B +S315E07DA2A0000000000000000000000000000000004B +S315E07DA2B0000000000000000000000000000000003B +S315E07DA2C0000000000000000000000000000000002B +S315E07DA2D0000000000000000000000000000000001B +S315E07DA2E0000000000000000000000000000000000B +S315E07DA2F000000000000000000000000000000000FB +S315E07DA30000000000000000000000000000000000EA +S315E07DA31000000000000000000000000000000000DA +S315E07DA32000000000000000000000000000000000CA +S315E07DA33000000000000000000000000000000000BA +S315E07DA34000000000000000000000000000000000AA +S315E07DA350000000000000000000000000000000009A +S315E07DA360000000000000000000000000000000008A +S315E07DA370000000000000000000000000000000007A +S315E07DA380000000000000000000000000000000006A +S315E07DA390000000000000000000000000000000005A +S315E07DA3A0000000000000000000000000000000004A +S315E07DA3B0000000000000000000000000000000003A +S315E07DA3C00000000000000000003E490000000000A3 +S315E07DA3D0000000000000000000000000000000001A +S315E07DA3E0000000000000000000000000000000000A +S315E07DA3F000000000000000000000000000000000FA +S315E07DA40000000000000000000000000000000000E9 +S315E07DA41000000000000000000000000000000000D9 +S315E07DA42000000000000000000000000000000000C9 +S315E07DA43000000000000000000000000000000000B9 +S315E07DA44000000000000000000000000000000000A9 +S315E07DA4500000000000000000000000000000000099 +S315E07DA4600000000000000000000000000000000089 +S315E07DA4700000000000000000000000000000000079 +S315E07DA4800000000000000000000000000000000069 +S315E07DA4900000000000000000000000000000000059 +S315E07DA4A00000000000000000000000000000000049 +S315E07DA4B00000000000000000000000000000000039 +S315E07DA4C00000000000000000000000000000000029 +S315E07DA4D00000000000000000000000000000000019 +S315E07DA4E00000000000000000000000000000000009 +S315E07DA4F000000000000000000000000000000000F9 +S315E07DA50000000000000000000000000000000000E8 +S315E07DA51000000000000000000000000000000000D8 +S315E07DA52000000000000000000000000000000000C8 +S315E07DA53000000000000000000000000000000000B8 +S315E07DA54001003FD90000000000000000000000008F +S315E07DA5500400200000000000000000000000000074 +S315E07DA560000000000000010008004000000000003F +S315E07DA5700000000000000000000000000000020076 +S315E07DA58010008000000000000000000000000000D8 +S315E07DA5900000000000000400200000000000000034 +S315E07DA5A0000000000000000000000000010008003F +S315E07DA5B040000000000000000000000000000000F8 +S315E07DA5C00000000002001000800000000000000096 +S315E07DA5D000000000000000000000000004002000F4 +S315E07DA5E00000000000000000000000000000000008 +S315E07DA5F000000100080040000000000000000000AF +S315E07DA6000000000000000000000002001000800055 +S315E07DA61000000000000000000000000000000000D7 +S315E07DA62000000400200000000000000000000000A3 +S315E07DA630000000000000000001000800400000006E +S315E07DA64000000000000000000000000000000000A7 +S315E07DA6500200100080000000000000000000000005 +S315E07DA6600000000000000000040020000000000063 +S315E07DA6700000000000000000000000000000010076 +S315E07DA680080040000000000000000000000000001F +S315E07DA69000000000000002001000800000000000C5 +S315E07DA6A00000000000000000000000000000040043 +S315E07DA6B0200000000000000000000028D700000018 +S315E07DA6C00000000000000000000400200000000003 +S315E07DA6D00000000000000000000000000000000116 +S315E07DA6E000080040000000000000000000000000BF +S315E07DA6F00000000000000002001000800000000065 +S315E07DA70000000000000000000000000000000004E2 +S315E07DA71000200000000000000000000000000000B6 +S315E07DA720000000000001000800400000000000007D +S315E07DA73000000000000000000000000000020010A4 +S315E07DA7400080000000000000000000000000000026 +S315E07DA7500000000000040020000000000000000072 +S315E07DA760000000000000000000000001000800403D +S315E07DA7700000000000000000000000000000000076 +S315E07DA78000000002001000800000000000000000D4 +S315E07DA7900000000000000000000000040020000032 +S315E07DA7A00000000000000000000000000000000046 +S315E07DA7B000010008004000000000000000000000ED +S315E07DA7C00000000000000000000200100080000094 +S315E07DA7D00000000000000000000000000000000016 +S315E07DA7E000040020000000000000000000000000E2 +S315E07DA7F000000000000000010008004000000000AD +S315E07DA80000000000000000000000000000000002E3 +S315E07DA8100010008000000000000000000000000045 +S315E07DA82000000000000000040020000000000000A1 +S315E07DA8300000000028D700000000000000000000B6 +S315E07DA8400000040020000000000000000000000081 +S315E07DA850000000000000000001000800400000004C +S315E07DA8600000000000000000000000000000000085 +S315E07DA87002001000800000000000000000000000E3 +S315E07DA8800000000000000000040020000000000041 +S315E07DA8900000000000000000000000000000010054 +S315E07DA8A008004000000000000000000000000000FD +S315E07DA8B000000000000002001000800000000000A3 +S315E07DA8C00000000000000000000000000000040021 +S315E07DA8D020000000000000000000000000000000F5 +S315E07DA8E000000000010008004000000000000000BC +S315E07DA8F000000000000000000000000002001000E3 +S315E07DA9008000000000000000000000000000000064 +S315E07DA91000000000040020000000000000000000B0 +S315E07DA920000000000000000000000100080040007B +S315E07DA93000000000000000000000000000000000B4 +S315E07DA9400000020010008000000000000000000012 +S315E07DA9500000000000000000000004002000000070 +S315E07DA9600000000000000000000000000000000084 +S315E07DA970010008004000000000000000000000002B +S315E07DA98000000000000000000200100080000000D2 +S315E07DA9900000000000000000000000000000000054 +S315E07DA9A00400200000000000000000000028D70021 +S315E07DA9B00083831C1C606000000303181C4060005C +S315E07DA9C000070738384040000007073838C0C00028 +S315E07DA9D0000607303880C001010E0E707080800160 +S315E07DA9E0010E0E7070808001010C0E607000800398 +S315E07DA9F0031C1CE0E0000003031C1CE0E0000003F8 +S315E07DAA0003181CC0E0000007073838C0C000000707 +S315E07DAA10073838C0C000000607303880C001010E17 +S315E07DAA200E7070808001010E0E7070808001010CC9 +S315E07DAA300E6070008003031C1CE0E0000003031C35 +S315E07DAA401CE0E000000303181CC0E00000070738A7 +S315E07DAA5038C0C0000007073838C0C00000060730A0 +S315E07DAA603880C001010E0E7070808001010E0E707F +S315E07DAA7070808001010C0E6070008003031C1CE079 +S315E07DAA80E0000003031C1CE0E000000303181CC08B +S315E07DAA90E0000007073838C0C0000007073838C037 +S315E07DAAA0C000000607303880C001010E0E70708050 +S315E07DAAB08001010E0E7070808001010C0E607000C9 +S315E07DAAC08003031C1CE0E0000003031C1CE0E000A7 +S315E07DAAD0000303181CC0E0000007073838C0C0003B +S315E07DAAE00007073838C0C000000607303880C0014F +S315E07DAAF0010E0E7070808001010E0E7070808001F7 +S315E07DAB00010C0E6070008003031C1CE0E000000277 +S315E07DAB10021C1CE0E000000202181CC0E0000006FA +S315E07DAB20063838C1C100D78400000000000000006F +S315E07DAB3000000000000000000000000000000000B2 +S315E07DAB4000000000000000000000000000000000A2 +S315E07DAB500000000000000000000000000000000092 +S315E07DAB600000000000000000000000000000000082 +S315E07DAB700000000000000000000000000000000072 +S315E07DAB800000000000000000000000000000000062 +S315E07DAB900000000000000000000000000000000052 +S315E07DABA00000000000000000000000000000000042 +S315E07DABB00000000000000000000000000000000032 +S315E07DABC00000000000000000000000000000000022 +S315E07DABD00000000000000000000000000000000012 +S315E07DABE00000000000000000000000000000000002 +S315E07DABF000000000000000000000000000000000F2 +S315E07DAC0000000000000000000000000000000000E1 +S315E07DAC1000000000000000000000000000000000D1 +S315E07DAC2000000000000000000000000000000000C1 +S315E07DAC3000000000000000000000000000000000B1 +S315E07DAC4000000000000000000000000000000000A1 +S315E07DAC500000000000000000000000000000000091 +S315E07DAC600000000000000000000000000000000081 +S315E07DAC700000000000000000000000000000000071 +S315E07DAC800000000000000000000000000000000061 +S315E07DAC900000000000000000000000000000003E13 +S315E07DACA049000000000000000000000000000000F8 +S315E07DACB00000000000000000000000000000000031 +S315E07DACC00000000000000000000000000000000021 +S315E07DACD00000000000000000000000000000000011 +S315E07DACE00000000000000000000000000000000001 +S315E07DACF000000000000000000000000000000000F1 +S315E07DAD0000000000000400000000000000000000DC +S315E07DAD104000000000000000000000000000000090 +S315E07DAD2000000000000000000000000000000000C0 +S315E07DAD300000000000000000400000000000000070 +S315E07DAD4000000000000000000000000000000000A0 +S315E07DAD500000000080000000000000000000000010 +S315E07DAD600000000000000000000000000000000080 +S315E07DAD700000000000000000000000000000000070 +S315E07DAD800000000000000000000000000000400020 +S315E07DAD900000000000000000000000000000000050 +S315E07DADA00000000000000000000000000000000040 +S315E07DADB00000000000000000000000000000000030 +S315E07DADC00000000000000000000000000000000020 +S315E07DADD00000000000000000000000000000000010 +S315E07DADE00000000000000000000000000000000000 +S315E07DADF00000000000000000000000000080000070 +S315E07DAE00004000000000001000000000000040004F +S315E07DAE100000000000000000DB5200000010000092 +S315E07DAE20008000000000000000000000000000003F +S315E07DAE3000000000000000000000000000000000AF +S315E07DAE40000000000000400000004000000000001F +S315E07DAE50000000000000000000000000000000008F +S315E07DAE60000000000000000000000000000000007F +S315E07DAE70000000000000000000000000000000006F +S315E07DAE80000000000000000000000000000000005F +S315E07DAE90000000000000000000000000000000004F +S315E07DAEA0000000000000000000000000000000003F +S315E07DAEB0000000000000000000000000000000002F +S315E07DAEC0000000000000000000000000000000001F +S315E07DAED0000000000000000000000000000000000F +S315E07DAEE000000000000000000000000000000000FF +S315E07DAEF000000000000000000000000000000000EF +S315E07DAF0000000000000000000000000000000000DE +S315E07DAF1000000000000000000000000000000000CE +S315E07DAF2000000000000000000000000000000000BE +S315E07DAF3000000000000000000000000000000000AE +S315E07DAF40000000000000000000000000000000009E +S315E07DAF50000000000000000000000000000000008E +S315E07DAF6000000000000000000080000000000000FE +S315E07DAF70000000000000000020000000000000004E +S315E07DAF80000000000000000000000000000000005E +S315E07DAF900082D80000000000000000800000000074 +S315E07DAFA000800000000000000000000000000000BE +S315E07DAFB0000000000000000000000000000000002E +S315E07DAFC0000000000000000000000000000000001E +S315E07DAFD0000000000000000000000000000000000E +S315E07DAFE000000000000000040000000000000000FA +S315E07DAFF000000000000000000000000040000000AE +S315E07DB000000000004000000000000000000000009D +S315E07DB010000000000000000000000000004000008D +S315E07DB02000000000000000000000000000000000BD +S315E07DB03000000000000000000000000000000000AD +S315E07DB040000000000000000000000000000000009D +S315E07DB050000000000000000000000000000000008D +S315E07DB060000000000000000000000000000000007D +S315E07DB070000000000000000000000000000000006D +S315E07DB080000000000000000000000000000000005D +S315E07DB090000000000000000000000000000000004D +S315E07DB0A0000000000000000000000000000000003D +S315E07DB0B0000000000000000000000000000000002D +S315E07DB0C0000000000000000000000000000000001D +S315E07DB0D000000040000000000000000000000000CD +S315E07DB0E0000000000000000000100080000000006D +S315E07DB0F000000000000000000000000000000000ED +S315E07DB10000000000000000000000A10300000090A8 +S315E07DB11000000000000000000000000020000000AC +S315E07DB12000000000000000000000000000000000BC +S315E07DB130000000000000000040000000400000002C +S315E07DB140000000000000000000000000000000009C +S315E07DB150000000000000000000000000000000008C +S315E07DB160000000000000000000000000000000007C +S315E07DB170000000000000000000000000000000006C +S315E07DB180000000000000000000000000000000005C +S315E07DB190000000000000000000000000000000004C +S315E07DB1A0000000000000000000000000000000003C +S315E07DB1B0000000000000000000000000000000002C +S315E07DB1C040000000000000000000000000000000DC +S315E07DB1D0000000000000000080000000000000008C +S315E07DB1E000000000000000000000000000000000FC +S315E07DB1F000000000000000000000000000000000EC +S315E07DB200000000000000400000000000000000009B +S315E07DB21000000000000000000000000000000000CB +S315E07DB22000000000000000000000000000000000BB +S315E07DB23000000000000000000000000000000000AB +S315E07DB240000000000000000000000000000000009B +S315E07DB250000000000000000000000000800000000B +S315E07DB260000000000000000000002000000000005B +S315E07DB270000000000000000000000000000000006B +S315E07DB28000000071FC0000000010000000000000DE +S315E07DB29000000000000000001000000000108000AB +S315E07DB2A0000000000000000000000000000000003B +S315E07DB2B0000000000000000000000000000000002B +S315E07DB2C0000000000000000000000000000000001B +S315E07DB2D0000000000000000000000000000000000B +S315E07DB2E000000000000000000000000000000000FB +S315E07DB2F000000000000000000000000000000000EB +S315E07DB30000000000000000000000000000000000DA +S315E07DB31000000000000000000000000000000000CA +S315E07DB320000020000000000000000000000000009A +S315E07DB33000000000000000000000000000000000AA +S315E07DB340000000000000000000000000000000009A +S315E07DB350000000000000000000000000000000008A +S315E07DB360000000000000000000000000000000007A +S315E07DB370000000000000000000000000000000006A +S315E07DB380000000000000000000000000000000005A +S315E07DB390000000000000000000000000000000004A +S315E07DB3A0000000000000000000000000000000003A +S315E07DB3B0000000000000000000000000000000002A +S315E07DB3C0000000000000000000000000000000001A +S315E07DB3D000000000000000200000200000000000CA +S315E07DB3E000200000000000000000200000000000BA +S315E07DB3F000000020000000000000002051D7000082 +S315E07DB40000000000000000000000000000100000C9 +S315E07DB41000000000000000000000000000000000C9 +S315E07DB42000000000000000000000000000000000B9 +S315E07DB4300000000000000000000020000000000089 +S315E07DB4400000000000000000000000000000000099 +S315E07DB4500000000000004000000000000000000049 +S315E07DB4600000000000000000000000000000000079 +S315E07DB4700000000000000000000000000000000069 +S315E07DB4800000000000000000000000000000000059 +S315E07DB4900000000000000000000000000000000049 +S315E07DB4A00000000000000000000000000000000039 +S315E07DB4B00000000000000000000000000000000029 +S315E07DB4C00000000000000000000000000000000019 +S315E07DB4D00000000000000000000000000000000009 +S315E07DB4E000000000000000000000000000000000F9 +S315E07DB4F000000000000000000000000000000000E9 +S315E07DB50000000000000000000000000000000000D8 +S315E07DB51000000000000000000000000000000000C8 +S315E07DB52000000000000000000000000000000000B8 +S315E07DB5300000004000000000000000000000000068 +S315E07DB5400000000000000000200000002020000038 +S315E07DB5500000000000000000000000000000002068 +S315E07DB5600000000000000000000000000000000078 +S315E07DB5700000000000C2B6000000001000000000E0 +S315E07DB5800000000000000000000000000000000058 +S315E07DB59000800000000000000000000000000000C8 +S315E07DB5A00000000000000000000000000000000038 +S315E07DB5B00000200000000000000000000000000008 +S315E07DB5C000000000000000000000000000000040D8 +S315E07DB5D00000000000000000000000000000000008 +S315E07DB5E000000000000000000000000000000000F8 +S315E07DB5F000000000000000000000000000000000E8 +S315E07DB60000000000000000000000000000000000D7 +S315E07DB61000000000200000000000000000000000A7 +S315E07DB62000000000000000000000000000000000B7 +S315E07DB63000000000000000000000000000000000A7 +S315E07DB6400000000000000000000000000000000097 +S315E07DB6500000000000000000000000000000000087 +S315E07DB6600000000000000000000000000000000077 +S315E07DB6700000000000000000000000000000000067 +S315E07DB6800000000000000000000000000000000057 +S315E07DB6900000000000000000000000000000000047 +S315E07DB6A00000000000000000000000000000000037 +S315E07DB6B00000000000000000000000000000000027 +S315E07DB6C000000000200020000020000000000000B7 +S315E07DB6D000002000000000000020000000000000C7 +S315E07DB6E00000002000000000000000002000A5878B +S315E07DB6F000001000000000000010001000000000B7 +S315E07DB70000100020000000000000000000000000A6 +S315E07DB71000000000000000000000000000000000C6 +S315E07DB72000000000100000000000000000000000A6 +S315E07DB7300000000000000000000000002000000086 +S315E07DB7400000000000000000000000000000000096 +S315E07DB7500000000000000000000000000000000086 +S315E07DB7600000000000000000000000000000000076 +S315E07DB7700000000000000000000000400000000026 +S315E07DB78000000000000000800000000000000020B6 +S315E07DB79000000000000000000000400000002000E6 +S315E07DB7A00000000000000000000000000020000016 +S315E07DB7B00000000000000000000000000000000026 +S315E07DB7C00000000000000000000000000000000016 +S315E07DB7D00000000000000000008000000000000086 +S315E07DB7E000000000000000000000000000400000B6 +S315E07DB7F000000000000020000000000000000000C6 +S315E07DB80000000000000000000000000000000000D5 +S315E07DB81000000000000000000000000000000000C5 +S315E07DB82000000000000000000000000000000000B5 +S315E07DB83000000000000000000000000000000000A5 +S315E07DB8402000000000000000002000000000000055 +S315E07DB8500040002000000000000000000000000025 +S315E07DB860000020000000001ED9001000000000004E +S315E07DB8700000001000100000000000000020000025 +S315E07DB8800000000000000000000000000000000055 +S315E07DB8900000000000000000000000000010000035 +S315E07DB8A00000000000000000000000000000000035 +S315E07DB8B00000000000000000000000000000000025 +S315E07DB8C00000000000000000000000000000000015 +S315E07DB8D00000000000000000000000000000000005 +S315E07DB8E000000000000000000000000000000000F5 +S315E07DB8F000000000400000000000000000000000A5 +S315E07DB9008000000000000000000000000000000054 +S315E07DB91000000000000020000000000000000000A4 +S315E07DB9200000000000000020000000000000000094 +S315E07DB93000000000000000000000000000000000A4 +S315E07DB9400000000000000000000000000000000094 +S315E07DB9500000000000000000000000000000000084 +S315E07DB9600000000000000000000000000000002054 +S315E07DB9700000000000000000000000000000000064 +S315E07DB9800000000000000000000000000000000054 +S315E07DB9900000000000000000000000000000000044 +S315E07DB9A00000000000000000000000000000000034 +S315E07DB9B00000000000000000000000000000000024 +S315E07DB9C000000020000000000000000020000000D4 +S315E07DB9D000000000000000000000200000000000E4 +S315E07DB9E01A330000000000000000000000000000A7 +S315E07DB9F000000010000000000000000000000000D4 +S315E07DBA0000000000000000000000000000000000D3 +S315E07DBA1000000000000000000000000000000000C3 +S315E07DBA200000000000000000000000000000200093 +S315E07DBA3000000000000000000000000000000000A3 +S315E07DBA400000000000000000000000000000000093 +S315E07DBA500000000000000000000000000000000083 +S315E07DBA600000000000000000000000000000000073 +S315E07DBA700000000000000000000000000000000063 +S315E07DBA8000200000000000000000000040000000F3 +S315E07DBA900000000000000000000000000000000043 +S315E07DBAA00000000000000000000000000000000033 +S315E07DBAB00000000000000000000000000000000023 +S315E07DBAC00000000000000000000000000000000013 +S315E07DBAD00000000000000000000000000000000003 +S315E07DBAE040000000000000000000000000000000B3 +S315E07DBAF000000000000000000000000000000000E3 +S315E07DBB0000000000000000000000000000000000D2 +S315E07DBB1000000000000000000000000000000000C2 +S315E07DBB2000000000000000000000000000000000B2 +S315E07DBB300000000000000000000020000000000082 +S315E07DBB400000004000000000000000000000000052 +S315E07DBB50000000000000000000CAE50000000000D3 +S315E07DBB600000000000000000000000000000000072 +S315E07DBB700000000000000000000000000000000062 +S315E07DBB800000000000000000000000000000000052 +S315E07DBB900000000000000000000000000000000042 +S315E07DBBA00000000000000000000000000000000032 +S315E07DBBB00000000000000000000000000000000022 +S315E07DBBC00000000000000000000000000000000012 +S315E07DBBD00000000000000000000000000000000002 +S315E07DBBE000000000000000000000000000000000F2 +S315E07DBBF000000000000000000000000000000000E2 +S315E07DBC0000000000000000000000000000000000D1 +S315E07DBC1000000000000000000000000000000000C1 +S315E07DBC2000000000000000000000000000000000B1 +S315E07DBC3000000000000000000000000000000000A1 +S315E07DBC400000000000800000000000000000000011 +S315E07DBC500000000000000000000000000000000081 +S315E07DBC600000000000000000000000000000000071 +S315E07DBC700000000000000000000000000000000061 +S315E07DBC800000000000000000000000000000000051 +S315E07DBC900000000000000000000000000000000041 +S315E07DBCA00000000000000000000020000000000011 +S315E07DBCB00000000000000000000000000000000021 +S315E07DBCC00000000000000000000000000000000011 +S315E07DBCD0000021B40000000000000000100000001C +S315E07DBCE000000000000010000000000000000000E1 +S315E07DBCF000000000000000000000000000000000E1 +S315E07DBD0000000000000000000000000000000000D0 +S315E07DBD1000000000000000000000000000000000C0 +S315E07DBD2000000000000000000000000000000000B0 +S315E07DBD3000000000000000000000000000000000A0 +S315E07DBD400000000000000000000000000000000090 +S315E07DBD500000000000000000000000000000000080 +S315E07DBD600000000000000000000000000000000070 +S315E07DBD700000000000000000000000000000000060 +S315E07DBD800000000000000000000000000000000050 +S315E07DBD900000000000000000000000000000000040 +S315E07DBDA00000000000000000000000000000000030 +S315E07DBDB00000000000000000000000000000000020 +S315E07DBDC00000000000000000000000000000000010 +S315E07DBDD00000000000000000000000000000000000 +S315E07DBDE000000000000000000000000000000000F0 +S315E07DBDF000000000000000000000000000000000E0 +S315E07DBE0000000000000000000000000000000000CF +S315E07DBE1000000000000000000000000000000000BF +S315E07DBE20000020000000002000000000000000006F +S315E07DBE30000000000000000000000000200000007F +S315E07DBE400000000000000000000000103C001080B3 +S315E07DBE5080001000000000100000000000000000DF +S315E07DBE60000000000000000000000000000000006F +S315E07DBE70000000000000000000000000000000005F +S315E07DBE80000000000000000000000000000000004F +S315E07DBE90000000000000000000000000000000003F +S315E07DBEA0000000000000000000000000000000002F +S315E07DBEB0000000000000000000000000000000001F +S315E07DBEC0000000000000000000000000000000000F +S315E07DBED000000000000000000000000000000000FF +S315E07DBEE000000000000000000000000000000000EF +S315E07DBEF000000000000000000000000000000000DF +S315E07DBF0000000000000000000000000000000000CE +S315E07DBF1000000000000000000000000000000000BE +S315E07DBF2000000000000000000000000000000000AE +S315E07DBF30000000000000000000000000000000009E +S315E07DBF40000000000000000000000000000000008E +S315E07DBF50000000000000000000000000000000007E +S315E07DBF60000000000000000000000000000000006E +S315E07DBF70000000000000000000000000000000005E +S315E07DBF80000000000000000000000000000000004E +S315E07DBF90000000000000000000000000000000003E +S315E07DBFA0000000000000000000000000000000002E +S315E07DBFB000000000000000000000000000200000FE +S315E07DBFC020010100D61800000010000000000000EE +S315E07DBFD000000000000000000000000000000000FE +S315E07DBFE000000000000000000000000000000000EE +S315E07DBFF000000000000000000000000000000000DE +S315E07DC00000000000000000000000000000000000CD +S315E07DC01000000000000000000000000000000000BD +S315E07DC02000000000000000000000000000000000AD +S315E07DC030000000000000000000000000000000009D +S315E07DC040000000000000000000000000000000008D +S315E07DC050000000000000000000000000000000007D +S315E07DC060000000000000000000000000000000006D +S315E07DC070000000000000000000000000000000005D +S315E07DC080000000000000000000000000000000004D +S315E07DC090000000000000000000000000000000003D +S315E07DC0A0000000000000000000000000000000002D +S315E07DC0B0000000000000000000000000000000001D +S315E07DC0C0000000000000000000000000000000000D +S315E07DC0D000000000000000000000000000000000FD +S315E07DC0E000000000000000000000000000000000ED +S315E07DC0F000000000000000000000000000000000DD +S315E07DC10000000000000000000000000000000000CC +S315E07DC110000000000000002000000000200000007C +S315E07DC12000000000000000000000000000000000AC +S315E07DC130000000000000000000000020008A86006C +S315E07DC140000000000000000000000000100000007C +S315E07DC150000000000000000000000000000000007C +S315E07DC160000000000000000000000000000000006C +S315E07DC170000000000000000000000000000000005C +S315E07DC180000000000000000000000000000000004C +S315E07DC190000000000000000000000000000000003C +S315E07DC1A0000000000000000000000000000000002C +S315E07DC1B0000000000000000000000000000000001C +S315E07DC1C0000000000000000000000000000000000C +S315E07DC1D000000000000000000000000000000000FC +S315E07DC1E000000000000000000000000000000000EC +S315E07DC1F000000000000000000000000000000000DC +S315E07DC20000000000000000000000000000000000CB +S315E07DC21000000000000000000000000000000000BB +S315E07DC22000000000000000000000000000000000AB +S315E07DC230000000000000000000000000000000009B +S315E07DC240000000000000000000000000000000008B +S315E07DC250000000000000000000000000000000007B +S315E07DC260000000000000000000000000000000006B +S315E07DC270000000000000000000000000000000005B +S315E07DC280000000000000000000000000000000004B +S315E07DC290000000000000000000000000000020001B +S315E07DC2A0000000200000000000000000000000000B +S315E07DC2B0200000000000B62A00000000000000001B +S315E07DC2C0000000000000000000000000000000000B +S315E07DC2D000000000000000000000000000000000FB +S315E07DC2E000000000000000000000000000000000EB +S315E07DC2F000000000000000000000000000000000DB +S315E07DC30000000000000000000000000000000000CA +S315E07DC31000000000000000000000000000000000BA +S315E07DC32000000000000000000000000000000000AA +S315E07DC330000000000000000000000000000000009A +S315E07DC340000000000000000000000000000000008A +S315E07DC350000000000000000000000000000000007A +S315E07DC360000000000000000000000000000000006A +S315E07DC370000000000000000000000000000000005A +S315E07DC380000000000000000000000000000000004A +S315E07DC390000000000000000000000000000000003A +S315E07DC3A0000000000000000000000000000000002A +S315E07DC3B0000000000000000000000000000000001A +S315E07DC3C0000000000000000000000000000000000A +S315E07DC3D000000000000000000000000000000000FA +S315E07DC3E000000000000000000000000000000000EA +S315E07DC3F000000000000000000000000000000000DA +S315E07DC40000000000000000000000000000000000C9 +S315E07DC4100000002000000000000000000000000099 +S315E07DC4200000000000000000000000000000006148 +S315E07DC4300900000000000000000000000000000090 +S315E07DC4400000000000000000000000000000000089 +S315E07DC4500000000000000000000000000000000079 +S315E07DC4600000000000000000000000000000000069 +S315E07DC4700000000000000000000000000000000059 +S315E07DC4800000000000000000000000000000000049 +S315E07DC4900000000000000000000000000000000039 +S315E07DC4A00000000000000000000000000000000029 +S315E07DC4B00000000000000000000000000000000019 +S315E07DC4C00000000000000000000000000000000009 +S315E07DC4D000000000000000000000000000000000F9 +S315E07DC4E000000000000000000000000000000000E9 +S315E07DC4F000000000000000000000000000000000D9 +S315E07DC50000000000000000000000000000000000C8 +S315E07DC51000000000000000000000000000000000B8 +S315E07DC52000000000000000000000000000000000A8 +S315E07DC5300000000000000000000000000000000098 +S315E07DC5400000000000000000000000000000000088 +S315E07DC5500000000000000000000000000000000078 +S315E07DC5600000000000000000000000000000000068 +S315E07DC5700000000000000000000000000000000058 +S315E07DC5800000000000000000000000000000000048 +S315E07DC5900000000000000000002000000000000018 +S315E07DC5A000000000000000001E5100000080000039 +S315E07DC5B000100000000000000000101000000000E8 +S315E07DC5C00000000000000000000000000000000008 +S315E07DC5D000000000000000000000000000000000F8 +S315E07DC5E000000000000000000000000000000000E8 +S315E07DC5F000000000000000000000000000000000D8 +S315E07DC60000000000000000000000000000000000C7 +S315E07DC61000000000000000000000000000000000B7 +S315E07DC62000000000000000000000000000000000A7 +S315E07DC6300000000000000000000000000000000097 +S315E07DC6400000000000000000000000000000000087 +S315E07DC6500000000000000000000000000000000077 +S315E07DC6600000000000000000000000000000000067 +S315E07DC6700000000000000000000000000000000057 +S315E07DC6800000000000000000000000000000000047 +S315E07DC6900000000000000000000000000000000037 +S315E07DC6A00000000000000000000000000000000027 +S315E07DC6B00000000000000000000000000000000017 +S315E07DC6C00000000000000000000000000000000007 +S315E07DC6D000000000000000000000000000000000F7 +S315E07DC6E000000000000000000000000000000000E7 +S315E07DC6F00000000000000020000000200020000077 +S315E07DC70000000000000000000000000000000000C6 +S315E07DC71000000000000000000000000000000000B6 +S315E07DC72000D51400000000000000000000001000AD +S315E07DC7300000000000000000000000000000000096 +S315E07DC7400000000000000000000000000000000086 +S315E07DC7500000000000000000000000000000000076 +S315E07DC7600000000000000000000000000000000066 +S315E07DC7700000000000000000000000000000000056 +S315E07DC7800000000000000000000000000000000046 +S315E07DC7900000000000000000000000000000000036 +S315E07DC7A00000000000000000000000000000000026 +S315E07DC7B00000000000000000000000000000000016 +S315E07DC7C00000000000000000000000000000000006 +S315E07DC7D000000000000000000000000000000000F6 +S315E07DC7E000000000000000000000000000000000E6 +S315E07DC7F000000000000000000000000000000000D6 +S315E07DC80000000000000000000000000000000000C5 +S315E07DC81000000000000000000000000000000000B5 +S315E07DC82000000000000000000000000000000000A5 +S315E07DC8300000000000000000000000000000000095 +S315E07DC8400000000000000000000000000000000085 +S315E07DC8500000000000000000000000000000000075 +S315E07DC8600000000000000000000000000000000065 +S315E07DC8700000200000000000000000002000000015 +S315E07DC8800000000000000000000000000000000045 +S315E07DC890000000000020000000002E770000000070 +S315E07DC8A01000000000000000000000000000000015 +S315E07DC8B00000000000000000000000000000000015 +S315E07DC8C00000000000000000000000000000000005 +S315E07DC8D000000000000000000000000000000000F5 +S315E07DC8E000000000000000000000000000000000E5 +S315E07DC8F000000000000000000000000000000000D5 +S315E07DC90000000000000000000000000000000000C4 +S315E07DC91000000000000000000000000000000000B4 +S315E07DC92000000000000000000000000000000000A4 +S315E07DC9300000000000000000000000000000000094 +S315E07DC9400000000000000000000000000000000084 +S315E07DC9500000000000000000000000000000000074 +S315E07DC9600000000000000000000000000000000064 +S315E07DC9700000000000000000000000000000000054 +S315E07DC9800000000000000000000000000000000044 +S315E07DC9900000000000000000000000000000000034 +S315E07DC9A00000000000000000000000000000000024 +S315E07DC9B00000000000000000000000000000000014 +S315E07DC9C00000000000000000000000000000000004 +S315E07DC9D000000000000000000000000000000000F4 +S315E07DC9E000000000000000000000000000000000E4 +S315E07DC9F000000000000000000000002000000000B4 +S315E07DCA0020000000000000000000010000000000A2 +S315E07DCA10002000861B0010000000000000000000E2 +S315E07DCA200010001000000000000000000000000083 +S315E07DCA300000000000000000000000000000000093 +S315E07DCA400000000000000000000000000000000083 +S315E07DCA500000000000000000000000000000000073 +S315E07DCA600000000000000000000000000000000063 +S315E07DCA700000000000000000000000000000000053 +S315E07DCA800000000000000000000000000000000043 +S315E07DCA900000000000000000000000000000000033 +S315E07DCAA00000000000000000000000000000000023 +S315E07DCAB00000000000000000000000000000000013 +S315E07DCAC00000000000000000000000000000000003 +S315E07DCAD000000000000000000000000000000000F3 +S315E07DCAE000000000000000000000000000000000E3 +S315E07DCAF000000000000000000000000000000000D3 +S315E07DCB0000000000000000000000000000000000C2 +S315E07DCB1000000000000000000000000000000000B2 +S315E07DCB2000000000000000000000000000000000A2 +S315E07DCB300000000000000000000000000000000092 +S315E07DCB400000000000000000000000000000000082 +S315E07DCB500000000000000000000000000000000072 +S315E07DCB600000000000000020000000200000000022 +S315E07DCB7000000000002000000020000000200000F2 +S315E07DCB8000000000002000200021000021FF0000C1 +S315E07DCB900000100000100000000000000010000002 +S315E07DCBA00000000000000000000000000000000022 +S315E07DCBB00000000000000000000000000000000012 +S315E07DCBC00000000000000000000000000000000002 +S315E07DCBD000000000000000000000000000000000F2 +S315E07DCBE000000000000000000000000000000000E2 +S315E07DCBF000000000000000000000000000000000D2 +S315E07DCC0000000000000000000000000000000000C1 +S315E07DCC1000000000000000000000000000000000B1 +S315E07DCC2000000000000000000000000000000000A1 +S315E07DCC300000000000000000000000000000000091 +S315E07DCC400000000000000000000000000000000081 +S315E07DCC500000000000000000000000000000000071 +S315E07DCC600000000000000000000000000000000061 +S315E07DCC700000000000000000000000000000000051 +S315E07DCC800000000000000000000000000000000041 +S315E07DCC900000000000000000000000000000000031 +S315E07DCCA00000000000000000000000000000000021 +S315E07DCCB00000000000000000000000000000000011 +S315E07DCCC00000000000000000000000000000000001 +S315E07DCCD000000000000000000000000000000000F1 +S315E07DCCE00000000000000000200020000000200081 +S315E07DCCF00000200000200000000000000100002070 +S315E07DCD00000000000065F600000000000000000065 +S315E07DCD100000000010000080000000100000000010 +S315E07DCD2000000000000000000000000000000000A0 +S315E07DCD300000000000000000000000000000000090 +S315E07DCD400000000000000000000000000000000080 +S315E07DCD500000000000000000000000000000000070 +S315E07DCD600000000000000000000000000000000060 +S315E07DCD700000000000000000000000000000000050 +S315E07DCD800000000000000000000000000000000040 +S315E07DCD900000000000000000000000000000000030 +S315E07DCDA00000000000000000000000000000000020 +S315E07DCDB00000000000000000000000000000000010 +S315E07DCDC00000000000000000000000000000000000 +S315E07DCDD000000000000000000000000000000000F0 +S315E07DCDE000000000000000000000000000000000E0 +S315E07DCDF000000000000000000000000000000000D0 +S315E07DCE0000000000000000000000000000000000BF +S315E07DCE1000000000000000000000000000000000AF +S315E07DCE20000000000000000000000000000000009F +S315E07DCE30000000000000000000000000000000008F +S315E07DCE40000000000000000000000000000000007F +S315E07DCE50000000002000000000000020000000002F +S315E07DCE60000000000000000000000000000000005F +S315E07DCE700000000000000000000000000100F08ED0 +S315E07DCE8000000000100010000004003000000400E7 +S315E07DCE90200000000000000000000000000000010E +S315E07DCEA0000800400100080040000000000000008E +S315E07DCEB0000000000000000200100080020010006B +S315E07DCEC0800000000000000000000000000000047B +S315E07DCED000200000040020000000000000000000AB +S315E07DCEE0000000000001000800400100080040004D +S315E07DCEF000000000000000000000000000020010BD +S315E07DCF0000800200100080000000000000000000AC +S315E07DCF100000000000040020000004002000000066 +S315E07DCF200000000000000000000000010008004055 +S315E07DCF300100080040000000000000000000000045 +S315E07DCF40000000020010008002001000800000005A +S315E07DCF50000000000000000000000004002000004A +S315E07DCF60040020000000000000000000000000003A +S315E07DCF7000010008004001000800400000000000BC +S315E07DCF8000000000000000000002001000800200AA +S315E07DCF90100080000000000000000000000000009E +S315E07DCFA000040020000004002000000000000000D6 +S315E07DCFB000000000000000010008004001000800BC +S315E07DCFC0400000000000000000000000000020029C +S315E07DCFD0001000802200100080000000000020008C +S315E07DCFE00000000020002004002000000400200056 +S315E07DCFF0000020002000007361000000001000109A +S315E07DD00000000000001000000000000000000000AD +S315E07DD01000000000000000000000000000000000AD +S315E07DD020000000000000000000000000000000009D +S315E07DD030000000000000000000000000000000008D +S315E07DD040000000000000000000000000000000007D +S315E07DD050000000000000000000000000000000006D +S315E07DD060000000000000000000000000000000005D +S315E07DD070000000000000000000000000000000004D +S315E07DD080000000000000000000000000000000003D +S315E07DD090000000000000000000000000000000002D +S315E07DD0A0000000000000000000000000000000001D +S315E07DD0B0000000000000000000000000000000000D +S315E07DD0C000000000000000000000000000000000FD +S315E07DD0D000000000000000000000000000000000ED +S315E07DD0E000000000000000000000000000000000DD +S315E07DD0F000000000000000000000000000000000CD +S315E07DD10000000000000000000000000000000000BC +S315E07DD11000000000000000000000000000000000AC +S315E07DD120000000000000000000000000000000009C +S315E07DD130000000000000000000000000000000008C +S315E07DD140000000000000200000000000002000003C +S315E07DD15000000000202000200000000000200020CC +S315E07DD160000000000000000000000020002000001C +S315E07DD170A3B70000001000100000000000001000C2 +S315E07DD180000000000010100000000000000000001C +S315E07DD190000000000000000000000000000000002C +S315E07DD1A0000000000000000000000000000000001C +S315E07DD1B0000000000000000000000000000000000C +S315E07DD1C000000000000000000000000000000000FC +S315E07DD1D000000000000000000000000000000000EC +S315E07DD1E000000000000000000000000000000000DC +S315E07DD1F000000000000000000000000000000000CC +S315E07DD20000000000000000000000000000000000BB +S315E07DD21000000000000000000000000000000000AB +S315E07DD220000000000000000000000000000000009B +S315E07DD230000000000000000000000000000000008B +S315E07DD240000000000000000000000000000000007B +S315E07DD250000000000000000000000000000000006B +S315E07DD260000000000000000000000000000000005B +S315E07DD270000000000000000000000000000000004B +S315E07DD280000000000000000000000000000000003B +S315E07DD290000000000000000000000000000000002B +S315E07DD2A0000000000000000000000000000000001B +S315E07DD2B000000000000000000000000000000020EB +S315E07DD2C0000000000020000000000000002020207B +S315E07DD2D000000000002000200000000000000000AB +S315E07DD2E0000000200020000000D19A000080900020 +S315E07DD2F0100000000000100000000080000010100B +S315E07DD30000000000000000000000000000000000BA +S315E07DD31000000000000000000000000000000000AA +S315E07DD320000000000000000000000000000000009A +S315E07DD330000000000000000000000000000000008A +S315E07DD340000000000000000000000000000000007A +S315E07DD350000000000000000000000000000000006A +S315E07DD360000000000000000000000000000000005A +S315E07DD370000000000000000000000000000000004A +S315E07DD380000000000000000000000000000000003A +S315E07DD390000000000000000000000000000000002A +S315E07DD3A0000000000000000000000000000000001A +S315E07DD3B0000000000000000000000000000000000A +S315E07DD3C000000000000000000000000000000000FA +S315E07DD3D000000000000000000000000000000000EA +S315E07DD3E000000000000000000000000000000000DA +S315E07DD3F000000000000000000000000000000000CA +S315E07DD40000000000000000000000000000000000B9 +S315E07DD41000000000000000000000000000000000A9 +S315E07DD4200000000000000000000000000000000099 +S315E07DD4300000000000000000002000000000200049 +S315E07DD4400000000000000000200000000000200039 +S315E07DD4502000000000000000000000002000200108 +S315E07DD46001008E07000000000000000000000010B3 +S315E07DD4700000000000000010100000000000000029 +S315E07DD4800000000000000000000000000000000039 +S315E07DD4900000000000000000000000000000000029 +S315E07DD4A00000000000000000000000000000000019 +S315E07DD4B00000000000000000000000000000000009 +S315E07DD4C000000000000000000000000000000000F9 +S315E07DD4D000000000000000000000000000000000E9 +S315E07DD4E000000000000000000000000000000000D9 +S315E07DD4F000000000000000000000000000000000C9 +S315E07DD50000000000000000000000000000000000B8 +S315E07DD51000000000000000000000000000000000A8 +S315E07DD5200000000000000000000000000000000098 +S315E07DD5300000000000000000000000000000000088 +S315E07DD5400000000000000000000000000000000078 +S315E07DD5500000000000000000000000000000000068 +S315E07DD5600000000000000000000000000000000058 +S315E07DD5700000000000000000000000000000000048 +S315E07DD5800000000000000000000000000000000038 +S315E07DD5900000000000000000000000000000000028 +S315E07DD5A00000000000000000000000000000000018 +S315E07DD5B000200000000000200000000000000020A8 +S315E07DD5C020000000000000000000000000000000D8 +S315E07DD5D0000000000000000000000085E200000081 +S315E07DD5E00010100000000000001010100000000088 +S315E07DD5F010100000000000000000000000000000A8 +S315E07DD60000000000000000000000000000000000B7 +S315E07DD61000000000000000000000000000000000A7 +S315E07DD6200000000000000000000000000000000097 +S315E07DD6300000000000000000000000000000000087 +S315E07DD6400000000000000000000000000000000077 +S315E07DD6500000000000000000000000000000000067 +S315E07DD6600000000000000000000000000000000057 +S315E07DD6700000000000000000000000000000000047 +S315E07DD6800000000000000000000000000000000037 +S315E07DD6900000000000000000000000000000000027 +S315E07DD6A00000000000000000000000000000000017 +S315E07DD6B00000000000000000000000000000000007 +S315E07DD6C000000000000000000000000000000000F7 +S315E07DD6D000000000000000000000000000000000E7 +S315E07DD6E000000000000000000000000000000000D7 +S315E07DD6F000000000000000000000000000000000C7 +S315E07DD70000000000000000000000000000000000B6 +S315E07DD71000000000000000000000000000000000A6 +S315E07DD7200000000000000000000000200000000076 +S315E07DD7302000000000000000000020000000000046 +S315E07DD7400020200000000000000000000000002016 +S315E07DD7502000000016D00000001000001000000040 +S315E07DD7600010100000000000000000000000000036 +S315E07DD7700000000000000000000000000000000046 +S315E07DD7800000000000000000000000000000000036 +S315E07DD7900000000000000000000000000000000026 +S315E07DD7A00000000000000000000000000000000016 +S315E07DD7B00000000000000000000000000000000006 +S315E07DD7C000000000000000000000000000000000F6 +S315E07DD7D000000000000000000000000000000000E6 +S315E07DD7E000000000000000000000000000000000D6 +S315E07DD7F000000000000000000000000000000000C6 +S315E07DD80000000000000000000000000000000000B5 +S315E07DD81000000000000000000000000000000000A5 +S315E07DD8200000000000000000000000000000000095 +S315E07DD8300000000000000000000000000000000085 +S315E07DD8400000000000000000000000000000000075 +S315E07DD8500000000000000000000000000000000065 +S315E07DD8600000000000000000000000000000000055 +S315E07DD8700000000000000000000000000000000045 +S315E07DD8800000000000000000000000000000000035 +S315E07DD8900000000000000000000000000000000025 +S315E07DD8A000000000200000000000200000000000D5 +S315E07DD8B000000000200000000020000020000000A5 +S315E07DD8C0000000000000002000002000004522004E +S315E07DD8D00000101010100000000010141030000041 +S315E07DD8E000000000000000000000000000000000D5 +S315E07DD8F0000100080040000000000000000000007C +S315E07DD9000000000000000000000200100080000022 +S315E07DD91000000000000000000000000000000000A4 +S315E07DD9200004002000000000000000000000000070 +S315E07DD930000000000000000100080040000000003B +S315E07DD9400000000000000000000000000000000272 +S315E07DD95000100080000000000000000000000000D4 +S315E07DD9600000000000000004002000000000000030 +S315E07DD970000000000000000000000000000100083B +S315E07DD98000400000000000000000000000000000F4 +S315E07DD9900000000000020010008000000000000092 +S315E07DD9A000000000000000000000000000040020F0 +S315E07DD9B00000000000000000000000000000000004 +S315E07DD9C000000001000800400000000000000000AB +S315E07DD9D00000000000000000000000020010008052 +S315E07DD9E000000000000000000000000000000000D4 +S315E07DD9F000000004002000000000000000000000A0 +S315E07DDA00000000000000000000010008004000006A +S315E07DDA100000000000000000000000002000000083 +S315E07DDA200002003000800000000020202020000061 +S315E07DDA3000002020202000000004000000000000FF +S315E07DDA402020202000002D0B00000010001000009B +S315E07DDA50000000100400200000000000000000002F +S315E07DDA60000000000000000000000100080040000A +S315E07DDA700000000000000000000000000000000043 +S315E07DDA8000000200100080000000000000000000A1 +S315E07DDA9000000000000000000000040020000000FF +S315E07DDAA00000000000000000000000000000000013 +S315E07DDAB001000800400000000000000000000000BA +S315E07DDAC00000000000000000020010008000000061 +S315E07DDAD000000000000000000000000000000000E3 +S315E07DDAE004002000000000000000000000000000AF +S315E07DDAF0000000000000010008004000000000007A +S315E07DDB0000000000000000000000000000000200B0 +S315E07DDB101000800000000000000000000000000012 +S315E07DDB20000000000000040020000000000000006E +S315E07DDB300000000000000000000000000100080079 +S315E07DDB404000000000000000000000000000000032 +S315E07DDB5000000000020010008000000000000000D0 +S315E07DDB60000000000000000000000000040020002E +S315E07DDB700000000000000000000000000000000042 +S315E07DDB8000000100080040000000000000000000E9 +S315E07DDB900000000000200000000002201000800050 +S315E07DDBA00000002000200000000000002000200092 +S315E07DDBB00000040000200000002000200000005C42 +S315E07DDBC06B00000000000000000000000004002063 +S315E07DDBD000000000000000000000000000000000E2 +S315E07DDBE00000000100080040000000000000000089 +S315E07DDBF00000000000000000000000020010008030 +S315E07DDC0000000000000000000000000000000000B1 +S315E07DDC10000000040020000000000000000000007D +S315E07DDC200000000000000000000100080040000048 +S315E07DDC300000000000000000000000000000000081 +S315E07DDC4000020010008000000000000000000000DF +S315E07DDC50000000000000000000040020000000003D +S315E07DDC600000000000000000000000000000000150 +S315E07DDC7000080040000000000000000000000000F9 +S315E07DDC80000000000000000200100080000000009F +S315E07DDC90000000000000000000000000000000041D +S315E07DDCA000200000000000000000000000000000F1 +S315E07DDCB000000000000100080040000000000000B8 +S315E07DDCC000000000000000000000000000020010DF +S315E07DDCD00080000000000000000000000000000061 +S315E07DDCE000000000000400200000000000000000AD +S315E07DDCF00000000000000000000000010008004078 +S315E07DDD0000000000000000000000000000000000B0 +S315E07DDD1000000002003000800000000000000000EE +S315E07DDD20000000000000000000000004002000006C +S315E07DDD3000000000000000008912001003031C1C97 +S315E07DDD40606010100303181C406010100707383818 +S315E07DDD504040000007073838C0C00000060730386D +S315E07DDD6080C001010E0E7070808001010E0E707014 +S315E07DDD70808001010C0E6070008003031C1CE0E0D6 +S315E07DDD80000003031C1CE0E000000303181CC0E058 +S315E07DDD90000007073838C0C0000007073838C0C024 +S315E07DDDA000000607303880C001010E0E707080805D +S315E07DDDB001010E0E7070808001010C0E6070008096 +S315E07DDDC003031C1CE0E0000003031C1CE0E00000F4 +S315E07DDDD00303181CC0E0000007073838C0C0000008 +S315E07DDDE007073838C0C000000607303880C001011B +S315E07DDDF00E0E7070808001010E0E707080800101C4 +S315E07DDE000C0E6070008003031C1CE0E00000030341 +S315E07DDE101C1CE0E000000303181CC0E000000707BF +S315E07DDE203838C0C0000007073838C0C00000060794 +S315E07DDE30303880C001010E0E7070808001010E0EBB +S315E07DDE407070808001010C0E6070008003031C1CE5 +S315E07DDE50E0E0000003031C1CE0E000000303181C67 +S315E07DDE60C0E0000007073838C0C000000707383833 +S315E07DDE70C0C000000607303880C001010E0E70700C +S315E07DDE80808001010E0E7070808001010C0E607045 +S315E07DDE90008023031C1CE0E0000002021C1CE0E085 +S315E07DDEA000000202181CC0E0002006063838C0C01B +S315E07DDEB0204EBD0010000010100000101000001074 +S315E07DDEC010000010100000000000000000000000BF +S315E07DDED000000000000000000000000000000000DF +S315E07DDEE000000000000000000000000000000000CF +S315E07DDEF000000000000000000000000000000000BF +S315E07DDF0000000000000000000000000000000000AE +S315E07DDF10000000000000000000000000000000009E +S315E07DDF20000000000000000000000000000000008E +S315E07DDF30000000000000000000000000000000007E +S315E07DDF40000000000000000000000000000000006E +S315E07DDF50000000000000000000000000000000005E +S315E07DDF60000000000000000000000000000000004E +S315E07DDF70000000000000000000000000000000003E +S315E07DDF80000000000000000000000000000000002E +S315E07DDF90000000000000000000000000000000001E +S315E07DDFA0000000000000000000000000000000000E +S315E07DDFB000000000000000000000000000000000FE +S315E07DDFC000000000000000000000000000000000EE +S315E07DDFD000000000000000000000000000000000DE +S315E07DDFE000000000000000000000000000000000CE +S315E07DDFF000000000000000000000000000000000BE +S315E07DE000000000000000000020000020000000006D +S315E07DE010000000000000000000000000000000009D +S315E07DE020000020000020200100200E760000000088 +S315E07DE030000000000000000000000000000000007D +S315E07DE0400000000008200000000000000000000045 +S315E07DE050000000000000000000000000000000005D +S315E07DE060010000000000000000000000000000004C +S315E07DE070000000000000000000000000000000003D +S315E07DE080000000000000000000000000000000002D +S315E07DE0900400000000000000000000000000000019 +S315E07DE0A0000000000000000000000000000000000D +S315E07DE0B000000000000000000000000000000240BB +S315E07DE0C000000000000000000000000000000000ED +S315E07DE0D000000000000000000000000000000000DD +S315E07DE0E000100000000000000000000000000000BD +S315E07DE0F0000000000000000000200000000000009D +S315E07DE10000000000000000000000000000000000AC +S315E07DE110000000000000000000000000000000009C +S315E07DE120000000000000000000000000000000008C +S315E07DE130000000000000000000000000000000007C +S315E07DE140000000000000000000000000000000006C +S315E07DE150000000000000000000000000000000005C +S315E07DE160000000000000000000000000000000004C +S315E07DE170000000000000000000000000000000003C +S315E07DE180000000000000000000000000000000002C +S315E07DE190000000000000000000000000000000001C +S315E07DE1A0000000615B000000100000000000001030 +S315E07DE1B000000000000010000000000000000000EC +S315E07DE1C000000000000000000020000000000000CC +S315E07DE1D000000000000000000000000000000000DC +S315E07DE1E000000000000000000000000000000000CC +S315E07DE1F000000000000000000000000000000000BC +S315E07DE20000000000000000000000000000000000AB +S315E07DE210000000000000000000000000000000009B +S315E07DE220000000000000000000000000000000008B +S315E07DE230000000000000000000000000000000007B +S315E07DE240000000000000000000000000000000006B +S315E07DE250000000000000000000000000000000005B +S315E07DE260000000000000000000000000000000004B +S315E07DE270000000000000000000000000000000003B +S315E07DE280000000000000000000000000000000002B +S315E07DE290000000000000000000000000000000001B +S315E07DE2A0000000000000000000000000000000000B +S315E07DE2B000000000000000000000000000000000FB +S315E07DE2C000000000000000000000000000000000EB +S315E07DE2D000000000000000000000000000000000DB +S315E07DE2E000000000000000000000000000000000CB +S315E07DE2F0000000008000000000000000200000001B +S315E07DE3000000010020000000000000000000000089 +S315E07DE3100000000000000000000001008E5E0000AD +S315E07DE320001000000000000000200000000000005A +S315E07DE330100010000000000000000000000000005A +S315E07DE3400000210000000000000000000000000049 +S315E07DE350000000000000000000000000000000005A +S315E07DE360000000000000000000000000000000004A +S315E07DE3700000040000000000000000000000000036 +S315E07DE380000000000000000000000000000000002A +S315E07DE390000000000000000000000000000000001A +S315E07DE3A00200000000000000000000000000000008 +S315E07DE3B000000000000000000000080000000000F2 +S315E07DE3C000000000000000000000000000000000EA +S315E07DE3D000000000000000000000000000000000DA +S315E07DE3E000000000000000000000000000000000CA +S315E07DE3F000000000000000000000000000000000BA +S315E07DE40000000000000000000000000000000000A9 +S315E07DE4100000000000000000000000000000000099 +S315E07DE4200000000000000000000000000000000089 +S315E07DE4300000000000000000000000000000000079 +S315E07DE4400000000000000000000000000000000069 +S315E07DE4500000000000000000000000000000000059 +S315E07DE4600000000000000000000000000000000049 +S315E07DE4700000000000200000000000000000000019 +S315E07DE4800000000000000000000000000000000029 +S315E07DE4900000000000DD47000000000000100000E5 +S315E07DE4A000100000000000000000000000000000F9 +S315E07DE4B000000000000000000800000000000000F1 +S315E07DE4C000000000000000000000000000000000E9 +S315E07DE4D000000000000000000000000000000000D9 +S315E07DE4E000000000000000000000000000000000C9 +S315E07DE4F000000000000000000000000000000000B9 +S315E07DE50000000000000000000000000000000000A8 +S315E07DE5100000000000000000000000000000000098 +S315E07DE5200000000000000000000000000000000088 +S315E07DE5300000000000000000000000000000000078 +S315E07DE5400000000000000000000000400000000028 +S315E07DE5500000000000000000000000000000000058 +S315E07DE5600010000020000000000000000000000018 +S315E07DE5700000000000000000002000000000000018 +S315E07DE5800000000000000000000000000000000028 +S315E07DE5900000000000000000000000000000000018 +S315E07DE5A00000000000000000000000000000000008 +S315E07DE5B000000000000000000000000000000000F8 +S315E07DE5C000000000000000000000000000000000E8 +S315E07DE5D000000000000000000000000000000000D8 +S315E07DE5E00000200000000080000000000000000028 +S315E07DE5F00000000001002000000000000000000097 +S315E07DE6000000000000000000000000000000D9715D +S315E07DE6100000000000000000000000000000000097 +S315E07DE6200000000000000000000000000000000087 +S315E07DE6300000000000000000000000000000000077 +S315E07DE6400000000000000000000000000000000067 +S315E07DE6500000000000000000000000000000000057 +S315E07DE6600000000000000000000000000000000047 +S315E07DE6700000000000000000000000000000000037 +S315E07DE6800000000000000000000000000000000027 +S315E07DE6900040000000000080000000000000000057 +S315E07DE6A00000000000000000000000000000000007 +S315E07DE6B000000000000000000000000000000000F7 +S315E07DE6C000000000000000000000000000000000E7 +S315E07DE6D000000000000000000000000000000000D7 +S315E07DE6E000000000000000000000000000000000C7 +S315E07DE6F000000000000000000000000000000000B7 +S315E07DE70000000000000000000000000000000000A6 +S315E07DE7100000000000000000000000000000000096 +S315E07DE7200000000000000000000000000000000086 +S315E07DE7300000000000000000000000000000000076 +S315E07DE7400000000000000000000000002000000046 +S315E07DE7500000000000000000000000000000000056 +S315E07DE7600000002000000000000000000000000026 +S315E07DE77000000000000100002000000000002000F5 +S315E07DE7802000000000000058680000808000000046 +S315E07DE7900000000000001000000000000000000006 +S315E07DE7A000000000000000000000000000002000E6 +S315E07DE7B000000000000000000000000000000000F6 +S315E07DE7C000000000000000000000000000000000E6 +S315E07DE7D000000000000000000000000000000000D6 +S315E07DE7E000000000000000000000000000000000C6 +S315E07DE7F000000000000000000000000000000000B6 +S315E07DE80000000000000000000000000000000000A5 +S315E07DE8100000000000000000000000000000000095 +S315E07DE8200000000000000000000000000000000085 +S315E07DE8300000000000000000000000000000000075 +S315E07DE8400000000000000000000000000000000065 +S315E07DE8500000000000000000000000000000000055 +S315E07DE8600000000000000000000000000000000045 +S315E07DE8700000000000000000000000000000000035 +S315E07DE8800000000000000000000000000000000025 +S315E07DE8900000000000000000000000000000000015 +S315E07DE8A00000000000000000000000000000000005 +S315E07DE8B000000000000000000000000000000000F5 +S315E07DE8C000000000000000000000000100000000E4 +S315E07DE8D000000000000000000000000000000000D5 +S315E07DE8E00020000000200000000100000000000084 +S315E07DE8F000000000000000000000000000010100B3 +S315E07DE900DA9D00000000000000000000000000101D +S315E07DE9100000000000000000000000000000000094 +S315E07DE9200000000000000020000000000000000064 +S315E07DE9300000000000000000000000000000000074 +S315E07DE9400000000000000000000000000000000064 +S315E07DE9500000000000000000000000000000000054 +S315E07DE9600000000000000000000000000000000044 +S315E07DE9700000000000000000000000000000000034 +S315E07DE98000000040000000000000000000000000E4 +S315E07DE9900000000000000000000000000000000014 +S315E07DE9A00000000000000000000000000000000004 +S315E07DE9B000000000000000000000000000000000F4 +S315E07DE9C000000000000000000000000000000000E4 +S315E07DE9D000000000000000000000000000000000D4 +S315E07DE9E000000000000000000000000000000000C4 +S315E07DE9F000000000000000000000000000000000B4 +S315E07DEA0000000000000000000000000000000000A3 +S315E07DEA100000000000000000000000000000000093 +S315E07DEA200000000000000000000000000000000083 +S315E07DEA300000000000000000000000000000200053 +S315E07DEA400000000000000000000000000000000063 +S315E07DEA5000000000002000000000200000200000F3 +S315E07DEA600000010000000000010020000000200001 +S315E07DEA70000000000000000000D27F0000000000E2 +S315E07DEA800010000000000000000000000000000013 +S315E07DEA900000000000000000000000000000000013 +S315E07DEAA00000000000000000000000000000000003 +S315E07DEAB000000000000000000000000000000000F3 +S315E07DEAC000000000000000200000000000000000C3 +S315E07DEAD000000000000000000000000000010000D2 +S315E07DEAE000000000000000000000000000000000C3 +S315E07DEAF000000000000000000000000000000000B3 +S315E07DEB0000000000000000000000000000000000A2 +S315E07DEB100000000000000000000000000000000092 +S315E07DEB200000010000400000000000000000000041 +S315E07DEB30010000000000000000000200000000006F +S315E07DEB400000000000000000000000000000000062 +S315E07DEB500000000000000000000000000000000052 +S315E07DEB600000000000000000000000000000000042 +S315E07DEB700000000000000000000000000000000032 +S315E07DEB800000000000000000000000000000000022 +S315E07DEB900000000000000000000000000000000012 +S315E07DEBA00000000000000000000000000000000002 +S315E07DEBB000000000000000000000000000000000F2 +S315E07DEBC000000000000000000000000000000000E2 +S315E07DEBD000000000000000000000000000002000B2 +S315E07DEBE000000000000000000000000000000000C2 +S315E07DEBF000000AFF000000000000000000000000A9 +S315E07DEC0000000000000000000000000000000000A1 +S315E07DEC100000000000000000000000000000000091 +S315E07DEC200000000000000000000000000000000081 +S315E07DEC300000000000000000000000000000000071 +S315E07DEC400000000000000000000000000000000061 +S315E07DEC500000000000000000000000000000000051 +S315E07DEC600000000000000000000000000000000041 +S315E07DEC700000000000000000000000000000000031 +S315E07DEC800000000000000000000000000000000021 +S315E07DEC900000000000000000000000000000000011 +S315E07DECA00000000000000000000000000000000001 +S315E07DECB000000000000000000000000000000000F1 +S315E07DECC000000000000000000000000000000000E1 +S315E07DECD000000000000000000000000000000000D1 +S315E07DECE000000000000000000000000000000000C1 +S315E07DECF000000000000000000000000000000000B1 +S315E07DED0000000000000000000000000000000000A0 +S315E07DED100000000000000000000000000000000090 +S315E07DED200000000000000000000000000000000080 +S315E07DED300000000000000000000000000000000070 +S315E07DED400000000000000000000000000000000060 +S315E07DED500000000000000000000000000000000050 +S315E07DED6000000000000000000000003E49000000B9 +S315E07DED700000001000000000000000000000000020 +S315E07DED800000000000000000000000000000000020 +S315E07DED900000000000000000000000000000000010 +S315E07DEDA00000000000000000000000000000000000 +S315E07DEDB000000000000000000020000000000000D0 +S315E07DEDC000000000000000000000000000000100DF +S315E07DEDD000000000000000000000000000000000D0 +S315E07DEDE000000000000000000000000000000000C0 +S315E07DEDF000000000000000000000000000000000B0 +S315E07DEE00000000000000000000000000000000009F +S315E07DEE10000000000000004000000000000000004F +S315E07DEE20000000000000000000000000000000007F +S315E07DEE30000000000000000000000000000000006F +S315E07DEE40000000000000000000000000000000005F +S315E07DEE50000000000000000000000000000000004F +S315E07DEE60000000000000000000000000000000003F +S315E07DEE70000000000000000000000000000000002F +S315E07DEE80000000000000000000000000000000001F +S315E07DEE90000000000000000000000000000000000F +S315E07DEEA000000000000000000000000000000000FF +S315E07DEEB000000000000000000000000000000000EF +S315E07DEEC000000000000000000000000000000000DF +S315E07DEED020000000000000000000000000000000AF +S315E07DEEE000000000559700000000000000000000D3 +S315E07DEEF000000000000000000000000000000000AF +S315E07DEF00000000000000000000000000000000009E +S315E07DEF10000000000000000000000000000000008E +S315E07DEF20000000000000000000000000000000007E +S315E07DEF30000000000000000000000000000000006E +S315E07DEF40000000000000000000000000000000005E +S315E07DEF50000000000000000000000000000000004E +S315E07DEF60000000000000000000000000000000003E +S315E07DEF70000000000000000000000000000000002E +S315E07DEF80000000000000000000000000000100001D +S315E07DEF90000000000000000000000001000000000D +S315E07DEFA000000000000200000000000000000000FC +S315E07DEFB000000000000000000000000000000000EE +S315E07DEFC000000000000000000000000000000000DE +S315E07DEFD000000000000000000000000000000000CE +S315E07DEFE000000000000000000000000000000000BE +S315E07DEFF000000000000000000000000000000000AE +S315E07DF000000000000000000000000000000000009D +S315E07DF010000000000000000000000000000000008D +S315E07DF020000000000000000000000000000000007D +S315E07DF030000000000000000000000000000000006D +S315E07DF040000000000000000000000000000000005D +S315E07DF05000000000000000000000000000D0770006 +S315E07DF060000000000000000000000000000000003D +S315E07DF070000000000000000000000000000000002D +S315E07DF080000000000000000000000000000000001D +S315E07DF090000000000000000000000000000000000D +S315E07DF0A000000000000000000000000000000000FD +S315E07DF0B000000000000000000000000000000000ED +S315E07DF0C000000000000000000000000000000000DD +S315E07DF0D000000000000000000000000000000000CD +S315E07DF0E000000000000000000000000000000000BD +S315E07DF0F000000000000000000000000000000000AD +S315E07DF100000000000000000000000000000000009C +S315E07DF110000000000000000000000000000000008C +S315E07DF120000000000000000000000000000000007C +S315E07DF130000000000000000000000000000000006C +S315E07DF140000000000000000000000000000000005C +S315E07DF150000000000000000000000000000000004C +S315E07DF160000000000000000000000000000000003C +S315E07DF170000000000000000000000000000000002C +S315E07DF180000000000000000000000000000000001C +S315E07DF190000000000000000000000000000000000C +S315E07DF1A000000000000000000000000000000000FC +S315E07DF1B000000000000000000000000000000000EC +S315E07DF1C000000000000000000000000000000000DC +S315E07DF1D00000000000003E49000000000000000045 +S315E07DF1E000000000000000000000000000000000BC +S315E07DF1F000000000000000000000000000000000AC +S315E07DF200000000000000000000000000000000009B +S315E07DF210000000000000000000000000000000008B +S315E07DF220000000000000000000000000000000007B +S315E07DF230000000000000000000000000000000006B +S315E07DF240000000000000000000000000000000005B +S315E07DF250000000000000000000000000000000004B +S315E07DF260000000000000000000000000000000003B +S315E07DF270000000000000000000000000000000002B +S315E07DF280000000000000000000000000000000001B +S315E07DF290000000000000000000000000000000000B +S315E07DF2A000000000000000000000000000000000FB +S315E07DF2B000000000000000000000000000000000EB +S315E07DF2C000000000000000000000000000000000DB +S315E07DF2D000000000000000000000000000000000CB +S315E07DF2E000000000000000000000000000000000BB +S315E07DF2F000000000000000000000000000000000AB +S315E07DF300000000000000000000000000000000009A +S315E07DF310000000000000000000000000000000008A +S315E07DF320000000000000000000000000000000007A +S315E07DF330000000000000000000000000000000006A +S315E07DF3400000000000000000000000000000003E1C +S315E07DF35049000000000000000000100000000000F1 +S315E07DF360000000000000000000000000000000003A +S315E07DF370000000000000000000000000000000002A +S315E07DF380000000000000000000000000000000001A +S315E07DF390000000000000000000000000000000000A +S315E07DF3A000000000000000000000000000000000FA +S315E07DF3B000000000000000000000000000000000EA +S315E07DF3C000000000000000000000000000000000DA +S315E07DF3D000000000000000000000000000000000CA +S315E07DF3E000000000000000000000000000000000BA +S315E07DF3F000000000000000000000000000000000AA +S315E07DF4000000000000000000000000000000000099 +S315E07DF4100000000000000000000000000000000089 +S315E07DF4200000000000000000000000000000000079 +S315E07DF4300000000000000000000000000000000069 +S315E07DF4400000000000000000000000000000000059 +S315E07DF4500000000000000000000000000000000049 +S315E07DF4600000000000000000000000000000000039 +S315E07DF4700000000000000000000000000000000029 +S315E07DF4800000000000000000000000000000000019 +S315E07DF4900000000000000000000000000000000009 +S315E07DF4A000000000000000000000000000000000F9 +S315E07DF4B000000000000000000000000000000000E9 +S315E07DF4C0000000000000000021C4000000000000F4 +S315E07DF4D000000000000000000000000000000000C9 +S315E07DF4E000000000000000000000000000000000B9 +S315E07DF4F000000000000000000000000000000000A9 +S315E07DF5000000000000000000000000000000000098 +S315E07DF5100000000000000000000000000000000088 +S315E07DF5200000000000000000000000000000000078 +S315E07DF5300000000000000000000000000000000068 +S315E07DF5400000000000000000000000000000000058 +S315E07DF5500000000000000000000000000000000048 +S315E07DF5600000000000000000000000000000000038 +S315E07DF5700000000000000000000000000000000028 +S315E07DF5800000000000000000000000000000000018 +S315E07DF5900000000000000000000000000000000008 +S315E07DF5A000000000000000000000000000000000F8 +S315E07DF5B000000000000000000000000000000000E8 +S315E07DF5C000000000000000000000000000000000D8 +S315E07DF5D000000000000000000000000000000000C8 +S315E07DF5E000000000000000000000000000000000B8 +S315E07DF5F000000000000000000000000000000000A8 +S315E07DF6000000000000000000000000000000000097 +S315E07DF6100000000000000000000000000000000087 +S315E07DF6200000000000000000000000000000000077 +S315E07DF6300000000000000000000000000000000067 +S315E07DF640003E490000800000000000000000000050 +S315E07DF6500000000000000000000000000000000047 +S315E07DF6600000000000000000000000000000000037 +S315E07DF6700000000000000000000000000000000027 +S315E07DF6800000000000000000000000000000000017 +S315E07DF6900000000000000000000000000000000007 +S315E07DF6A000000000000000000000000000000000F7 +S315E07DF6B000000000000000000000000000000000E7 +S315E07DF6C000000000000000000000000000000000D7 +S315E07DF6D000000000000000000000000000000000C7 +S315E07DF6E000000000000000000000000000000000B7 +S315E07DF6F000000000000000000000000000000000A7 +S315E07DF7000000000000000000000000000000000096 +S315E07DF7100000000000000000000000000000000086 +S315E07DF7200000000000000000000000000000000076 +S315E07DF7300000000000000000000000000000000066 +S315E07DF7400000000000000000000000000000000056 +S315E07DF7500000000000000000000000000000000046 +S315E07DF7600000000000000000000000000000000036 +S315E07DF7700000000000000000000000000000000026 +S315E07DF7800000000000000000000000000000000016 +S315E07DF7900000000000000000000000000000000006 +S315E07DF7A000000000000000000000000000000000F6 +S315E07DF7B000000000000000000000BEAE000000007A +S315E07DF7C000000000000000000000000000000000D6 +S315E07DF7D000000000000000000000000000000000C6 +S315E07DF7E000000000000000000000000000000000B6 +S315E07DF7F000000000000000000000000000000000A6 +S315E07DF8000000000000000000000000000000000095 +S315E07DF8100000000000000000000000000000000085 +S315E07DF8200000000000000000000000000000000075 +S315E07DF8300000000000000000000000000000000065 +S315E07DF8400000000000000000000000000000000055 +S315E07DF8500000000000000000000000000000000045 +S315E07DF8600000000000000000000000000000000035 +S315E07DF8700000000000000000000000000000000025 +S315E07DF8800000000000000000000000000000000015 +S315E07DF8900000000000000000000000000000000005 +S315E07DF8A000000000000000000000000000000000F5 +S315E07DF8B000000000000000000000000000000000E5 +S315E07DF8C000000000000000000000000000000000D5 +S315E07DF8D000000000000000000000000000000000C5 +S315E07DF8E000000000000000000000000000000000B5 +S315E07DF8F000000000000000000000000000000000A5 +S315E07DF9000000000000000000000000000000000094 +S315E07DF9100000000000000000002000000000000064 +S315E07DF9200000000000000000000000000000000074 +S315E07DF93000000015F6000000000000000000000059 +S315E07DF9400000000000000000000000000000000054 +S315E07DF9500000000000000000000000000000000044 +S315E07DF9600000000000000000000000000000000034 +S315E07DF9700000000000000000000000000000000024 +S315E07DF9800000000000000000000000000000000014 +S315E07DF9900000000000000000000000000000000004 +S315E07DF9A000000000000000000000000000000000F4 +S315E07DF9B000000000000000000000000000000000E4 +S315E07DF9C000000000000000000000000000000000D4 +S315E07DF9D000000000000000000000000000000000C4 +S315E07DF9E000000000000000000000000000000000B4 +S315E07DF9F000000000000000000000000000000000A4 +S315E07DFA000000000000000000000000000000000093 +S315E07DFA100000000000000000000000000000000083 +S315E07DFA200000000000000000000000000000000073 +S315E07DFA300000000000000000000000000000000063 +S315E07DFA400000000000000000000000000000000053 +S315E07DFA500000000000000000000000000000000043 +S315E07DFA600000000000000000000000000000000033 +S315E07DFA700000000000000000000000000000000023 +S315E07DFA800000000000000000000000000000000013 +S315E07DFA900000000000000000010000000000000002 +S315E07DFAA00000000000000000000000000398000058 +S315E07DFAB000000000000000100000000000000000D3 +S315E07DFAC000000000000000000000000000000000D3 +S315E07DFAD000000000000000000000000000000000C3 +S315E07DFAE000000000000000000000000000000000B3 +S315E07DFAF000000000000000000000000000000000A3 +S315E07DFB000000000000000000000000000000000092 +S315E07DFB100000000000000000000000000000000082 +S315E07DFB200000000000000000000000000000000072 +S315E07DFB300000000000000000000000000000000062 +S315E07DFB400000000000000000000000000000000052 +S315E07DFB500000000000000000000000000000000042 +S315E07DFB600000000000000000000000000000000032 +S315E07DFB700000000000000000000000000000000022 +S315E07DFB800000000000000000000000000000000012 +S315E07DFB900000000000000000000000000000000002 +S315E07DFBA000000000000000000000000000000000F2 +S315E07DFBB000000000000000000000000000000000E2 +S315E07DFBC000000000000000000000000000000000D2 +S315E07DFBD000000000000000000000000000000000C2 +S315E07DFBE000000000000000000000000000000000B2 +S315E07DFBF000000000000000000000000000000000A2 +S315E07DFC000000000000000000000000000000000091 +S315E07DFC100000000000000000000000000000000081 +S315E07DFC20000000000021C40000808000000000008C +S315E07DFC300000000000000000000000000000000061 +S315E07DFC400000000000000000000000000000000051 +S315E07DFC500000000000000000000000000000000041 +S315E07DFC600000000000000000000000000000000031 +S315E07DFC700000000000000000000000000000000021 +S315E07DFC800000000000000000000000000000000011 +S315E07DFC900000000000000000000000000000000001 +S315E07DFCA000000000000000000000000000000000F1 +S315E07DFCB000000000000000000000000000000000E1 +S315E07DFCC000000000000000000000000000000000D1 +S315E07DFCD000000000000000000000000000000000C1 +S315E07DFCE000000000000000000000000000000000B1 +S315E07DFCF000000000000000000000000000000000A1 +S315E07DFD000000000000000000000000000000000090 +S315E07DFD100000000000000000000000000000000080 +S315E07DFD200000000000000000000000000000000070 +S315E07DFD300000000000000000000000000000000060 +S315E07DFD400000000000000000000000000000000050 +S315E07DFD500000000000000000000000000000000040 +S315E07DFD600000000000000000000000000000000030 +S315E07DFD700000000000000000000000000000000020 +S315E07DFD800000000000000000000000000000000010 +S315E07DFD9000000000000000000000000101009BBFA4 +S315E07DFDA000000000000000000010000000000000E0 +S315E07DFDB00000000080000000000000000000000060 +S315E07DFDC000000000000000000000000000000000D0 +S315E07DFDD000000000000000000000000000000000C0 +S315E07DFDE000000000000000000000000000000000B0 +S315E07DFDF000000000000000000000000000000000A0 +S315E07DFE00000000000000000000000000000000008F +S315E07DFE10000000000000000000000000000000007F +S315E07DFE20000000000000000000000000000000006F +S315E07DFE30000000000000000000000000000000005F +S315E07DFE40000000000000000000000000000000004F +S315E07DFE50000000000000000000000000000000003F +S315E07DFE60000000000000000000000000000000002F +S315E07DFE70000000000000000000000000000000001F +S315E07DFE80000000000000000000000000000000000F +S315E07DFE9000000000000000000000000000000000FF +S315E07DFEA000000000000000000000000000000000EF +S315E07DFEB000000000000000000000000000000000DF +S315E07DFEC000000000000000000000000000000000CF +S315E07DFED000000000000000000000000000000000BF +S315E07DFEE000000000000000000000000000000000AF +S315E07DFEF0000000000000000000000000000000009F +S315E07DFF00000000000000000000000000000000008E +S315E07DFF1000000000000000F2E500000000000000A7 +S315E07DFF2000000000000000000000000080000000EE +S315E07DFF30000000000000000000000000000000005E +S315E07DFF40000000000000000000000000000000004E +S315E07DFF50000000000000000000000000000000003E +S315E07DFF60000000000000000000000000000000002E +S315E07DFF70000000000000000000000000000000001E +S315E07DFF80000000000000000000000000000000000E +S315E07DFF9000000000000000000000000000000000FE +S315E07DFFA000000000000000000000000000000000EE +S315E07DFFB000000000000000000000000000000000DE +S315E07DFFC000000000000000000000000000000000CE +S315E07DFFD000000000000000000000000000000000BE +S315E07DFFE000000000000000000000000000000000AE +S315E07DFFF0000000000000000000000000000000009E +S315E07E0000000000000000000000000000000000008C +S315E07E0010000000000000000000000000000000007C +S315E07E0020000000000000000000000000000000006C +S315E07E0030000000000000000000000000000000005C +S315E07E0040000000000000000000000000000000004C +S315E07E0050000000000000000000000000000000003C +S315E07E0060000000000000000000000000000000002C +S315E07E0070000000000000000000000000000000001C +S315E07E0080000000000000000000000000000000000C +S315E07E00905ED40000000000000000000000001000BA +S315E07E00A0008000000000000000000000000000006C +S315E07E00B000000000000000000000000000000000DC +S315E07E00C000000000000000000000000000000000CC +S315E07E00D000000000000000000000000000000000BC +S315E07E00E000000000000000000000000000000000AC +S315E07E00F0000000000000000000000000000000009C +S315E07E0100000000000000000000000000000000008B +S315E07E0110000000000000000000000000000000007B +S315E07E0120000000000000000000000000000000006B +S315E07E0130000000000000000000000000000000005B +S315E07E0140000000000000000000000000000000004B +S315E07E0150000000000000000000000000000000003B +S315E07E0160000000000000000000000000000000002B +S315E07E0170000000000000000000000000000000001B +S315E07E0180000000000000000000000000000000000B +S315E07E019000000000000000000000000000000000FB +S315E07E01A000000000000000000000000000000000EB +S315E07E01B000000000000000000000000000000000DB +S315E07E01C000000000000000000000000000000000CB +S315E07E01D000000000000000000000000000000000BB +S315E07E01E0000000000000000000000000000000208B +S315E07E01F0000000000000000000000100000000009A +S315E07E020000000000000000000035B10000000000A4 +S315E07E02100000000004002000000400A000000000B2 +S315E07E02200000000000000000000001000800400120 +S315E07E02300008004000000000000000000000000012 +S315E07E02400000020010008002001000800000000026 +S315E07E02500000000000000000000004002000000412 +S315E07E0260002000000000000000000000000000000A +S315E07E02700100080040010008004000000000000088 +S315E07E02800000000000000000020010008002001066 +S315E07E0290008000000000000000000000000000007A +S315E07E02A004002000000400200000000000000000A2 +S315E07E02B00000000000000100080040010008004048 +S315E07E02C000000000000000000000000000000200C8 +S315E07E02D01000800200100080000000000000000098 +S315E07E02E00000000000000400200000040020000062 +S315E07E02F00000000000000000000000000100080091 +S315E07E03004001000800400000000000000000000000 +S315E07E03100000000002001000800200100080000055 +S315E07E03200000000000000000000000000400200045 +S315E07E03300004002000000000000000000000000035 +S315E07E034000000100080040010008004000000000B7 +S315E07E035000000000000000000000020010008002A5 +S315E07E03600010008000000000202000000000000059 +S315E07E037000000400200000040020000000000000D1 +S315E07E03800000942100000000000000000000000054 +S315E07E039000000000000000000000000000000000F9 +S315E07E03A000000000000000000000000000000000E9 +S315E07E03B000000000000000000000000000000000D9 +S315E07E03C000000000000000000000000000000000C9 +S315E07E03D000000000000000000000000000000000B9 +S315E07E03E000000000000000000000000000000000A9 +S315E07E03F00000000000000000000000000000000099 +S315E07E04000000000000000000000000000000000088 +S315E07E04100000000000000000000000000000000078 +S315E07E04200000000000000000000000000000000068 +S315E07E04300000000000000000000000000000000058 +S315E07E04400000000000000000000000000000000048 +S315E07E04500000000000000000000000000000000038 +S315E07E04600000000000000000000000000000000028 +S315E07E04700000000000000000000000000000000018 +S315E07E04800000000000000000000000000000000008 +S315E07E049000000000000000000000000000000000F8 +S315E07E04A000000000000000000000000000000000E8 +S315E07E04B000000000000000000000000000000000D8 +S315E07E04C000000000000000000000000000000000C8 +S315E07E04D000000000000000000000000000000000B8 +S315E07E04E00020200000000000000000000000000068 +S315E07E04F00000000000000000000000BE9C0000003E +S315E07E05000000000000000000101000000000000067 +S315E07E05100000000000000000000000000000000077 +S315E07E05200000000000000000000000000000000067 +S315E07E05300000000000000000000000000000000057 +S315E07E05400000000000000000000000000000000047 +S315E07E05500000000000000000000000000000000037 +S315E07E05600000000000000000000000000000000027 +S315E07E05700000000000000000000000000000000017 +S315E07E05800000000000000000000000000000000007 +S315E07E059000000000000000000000000000000000F7 +S315E07E05A000000000000000000000000000000000E7 +S315E07E05B000000000000000000000000000000000D7 +S315E07E05C000000000000000000000000000000000C7 +S315E07E05D000000000000000000000000000000000B7 +S315E07E05E000000000000000000000000000000000A7 +S315E07E05F00000000000000000000000000000000097 +S315E07E06000000000000000000000000000000000086 +S315E07E06100000000000000000000000000000000076 +S315E07E06200000000000000000000000000000000066 +S315E07E06300000000000000000000000000000000056 +S315E07E06400000000000000000000000000000000046 +S315E07E065000000000000000000000202000000000F6 +S315E07E06600000000000000000000000000000000026 +S315E07E067000000000F8D90000000000000000000045 +S315E07E068000101000000000000000000000000000E6 +S315E07E069000000000000000000000000000000000F6 +S315E07E06A000000000000000000000000000000000E6 +S315E07E06B000000000000000000000000000000000D6 +S315E07E06C000000000000000000000000000000000C6 +S315E07E06D000000000000000000000000000000000B6 +S315E07E06E000000000000000000000000000000000A6 +S315E07E06F00000000000000000000000000000000096 +S315E07E07000000000000000000000000000000000085 +S315E07E07100000000000000000000000000000000075 +S315E07E07200000000000000000000000000000000065 +S315E07E07300000000000000000000000000000000055 +S315E07E07400000000000000000000000000000000045 +S315E07E07500000000000000000000000000000000035 +S315E07E07600000000000000000000000000000000025 +S315E07E07700000000000000000000000000000000015 +S315E07E07800000000000000000000000000000000005 +S315E07E079000000000000000000000000000000000F5 +S315E07E07A000000000000000000000000000000000E5 +S315E07E07B000000000000000000000000000000000D5 +S315E07E07C000000000000000000000000000000000C5 +S315E07E07D00000002020000000000000000001000074 +S315E07E07E00000000000000000000000000039490023 +S315E07E07F00000000000000000000010100000000075 +S315E07E08000000000000000000000000000000000084 +S315E07E08100000000000000000000000000000000074 +S315E07E08200000000000000000000000000000000064 +S315E07E08300000000000000000000000000000000054 +S315E07E08400000000000000000000000000000000044 +S315E07E08500000000000000000000000000000000034 +S315E07E08600000000000000000000000000000000024 +S315E07E08700000000000000000000000000000000014 +S315E07E08800000000000000000000000000000000004 +S315E07E089000000000000000000000000000000000F4 +S315E07E08A000000000000000000000000000000000E4 +S315E07E08B000000000000000000000000000000000D4 +S315E07E08C000000000000000000000000000000000C4 +S315E07E08D000000000000000000000000000000000B4 +S315E07E08E000000000000000000000000000000000A4 +S315E07E08F00000000000000000000000000000000094 +S315E07E09000000000000000000000000000000000083 +S315E07E09100000000000000000000000000000000073 +S315E07E09200000000000000000000000000000000063 +S315E07E09300000000000000000000000000000000053 +S315E07E09400000000000000000000000000000000043 +S315E07E09500000000000000000000000000000000033 +S315E07E0960000000000000780C00000000000000009F +S315E07E097000000010100000000000000000000000F3 +S315E07E09800000000000000000000000000000000003 +S315E07E099000000000000000000000000000000000F3 +S315E07E09A000000000000000000000000000000000E3 +S315E07E09B000000000000000000000000000000000D3 +S315E07E09C000000000000000000000000000000000C3 +S315E07E09D000000000000000000000000000000000B3 +S315E07E09E000000000000000000000000000000000A3 +S315E07E09F00000000000000000000000000000000093 +S315E07E0A000000000000000000000000000000000082 +S315E07E0A100000000000000000000000000000000072 +S315E07E0A200000000000000000000000000000000062 +S315E07E0A300000000000000000000000000000000052 +S315E07E0A400000000000000000000000000000000042 +S315E07E0A500000000000000000000000000000000032 +S315E07E0A600000000000000000000000000000000022 +S315E07E0A700000000000000000000000000000000012 +S315E07E0A800000000000000000000000000000000002 +S315E07E0A9000000000000000000000000000000000F2 +S315E07E0AA000000000000000000000000000000000E2 +S315E07E0AB000000000000000000000000000000000D2 +S315E07E0AC000000000000000000000000000000000C2 +S315E07E0AD0000000000000000000000000000000783A +S315E07E0AE00C00000000000000000000000000000096 +S315E07E0AF00000000000000000000000000000000092 +S315E07E0B000000000000000000000000000000000081 +S315E07E0B100000000000000000000000000000000071 +S315E07E0B200000000000000000000000000000000061 +S315E07E0B300000000000000000000000000000000051 +S315E07E0B400000000000000000000000000000000041 +S315E07E0B500000000000000000000000000000000031 +S315E07E0B600000000000000000000000000000000021 +S315E07E0B700000000000000000000000000000000011 +S315E07E0B800000000000000000000000000000000001 +S315E07E0B9000000000000000000000000000000000F1 +S315E07E0BA000000000000000000000000000000000E1 +S315E07E0BB000000000000000000000000000000000D1 +S315E07E0BC000000000000000000000000000000000C1 +S315E07E0BD000000000000000000000000000000000B1 +S315E07E0BE000000000000000000000000000000000A1 +S315E07E0BF00000000000000000000000000000000091 +S315E07E0C000000000000000000000000000000000080 +S315E07E0C100000000000000000000000000000000070 +S315E07E0C200000000000000000000000000000000060 +S315E07E0C300000000000000000000000000000000050 +S315E07E0C400000000000000000000000000000000040 +S315E07E0C5000000000000000003E49000000000000A9 +S315E07E0C6000000000000004002000000000000000FC +S315E07E0C700000000000000000000000000100080007 +S315E07E0C8040000000000000000000000000000000C0 +S315E07E0C90000000000200100080000000000000005E +S315E07E0CA000000000000000000000000004002000BC +S315E07E0CB000000000000000000000000000000000D0 +S315E07E0CC00000010008004000000000000000000077 +S315E07E0CD0000000000000000000000200100080001E +S315E07E0CE000000000000000000000000000000000A0 +S315E07E0CF0000004002000000000000000000000006C +S315E07E0D000000000000000000010008004000000036 +S315E07E0D10000000000000000000000000000000006F +S315E07E0D2002001000800000000000000000000000CD +S315E07E0D30000000000000000004002000000000002B +S315E07E0D40000000000000000000000000000001003E +S315E07E0D5008004000000000000000000000000000E7 +S315E07E0D60000000000000020010008000000000008D +S315E07E0D70000000000000000000000000000004000B +S315E07E0D8020000000000000000000000000000000DF +S315E07E0D9000000000010008004000000000000000A6 +S315E07E0DA000000000000000000000000002001000CD +S315E07E0DB0800000000000000000000000000000004F +S315E07E0DC000000000040000000000000000000000BB +S315E07E0DD00083170000000000000000000000000411 +S315E07E0DE0002000000000000000000000000000007F +S315E07E0DF00000000000010008004000000000000046 +S315E07E0E00000000000000000000000000000200106C +S315E07E0E1000800000000000000000000000000000EE +S315E07E0E20000000000004002000000000000000003A +S315E07E0E300000000000000000000000010008004005 +S315E07E0E40000000000000000000000000000000003E +S315E07E0E50000000020010008000000000000000009C +S315E07E0E6000000000000000000000000400200000FA +S315E07E0E70000000000000000000000000000000000E +S315E07E0E8000010008004000000000000000000000B5 +S315E07E0E90000000000000000000020010008000005C +S315E07E0EA000000000000000000000000000000000DE +S315E07E0EB000040020000000000000000000000000AA +S315E07E0EC00000000000000001000800400000000075 +S315E07E0ED000000000000000000000000000000002AC +S315E07E0EE0001000800000000000000000000000000E +S315E07E0EF0000000000000000400200000000000006A +S315E07E0F000000000000000000000000000001000874 +S315E07E0F10004000000000000000000000000000002D +S315E07E0F2000000000000200100080000000000000CB +S315E07E0F300000000000000000000000000004000049 +S315E07E0F4000000000000000000000831700000000A3 +S315E07E0F500000000000000000040020000000000009 +S315E07E0F60000000000000000000000000000001001C +S315E07E0F7008004000000000000000000000000000C5 +S315E07E0F80000000000000020010008000000000006B +S315E07E0F9000000000000000000000000000000400E9 +S315E07E0FA020000000000000000000000000000000BD +S315E07E0FB00000000001000800400000000000000084 +S315E07E0FC000000000000000000000000002001000AB +S315E07E0FD0800000000000000000000000000000002D +S315E07E0FE00000000004002000000000000000000079 +S315E07E0FF00000000000000000000001000800400044 +S315E07E1000000000000000000000000000000000007C +S315E07E101000000200100080000000000000000000DA +S315E07E10200000000000000000000004002000000038 +S315E07E1030000000000000000000000000000000004C +S315E07E104001000800400000000000000000000000F3 +S315E07E1050000000000000000002001000800000009A +S315E07E1060000000000000000000000000000000001C +S315E07E107004002000000000000000000000000000E8 +S315E07E108000000000000001000800400000000000B3 +S315E07E109000000000000000000000000000000200EA +S315E07E10A0100080000000000000000000000000004C +S315E07E10B000000000000004002000000000000000A8 +S315E07E10C000000028D7000083831C1C6060001003AC +S315E07E10D003181C40600000070738384040000007D0 +S315E07E10E0073838C0C000000607303880C001010EE0 +S315E07E10F00E7070808001010E0E7070808001010C92 +S315E07E11000E6070008003031C1CE0E0000003031CFD +S315E07E11101CE0E000000303181CC0E000000707386F +S315E07E112038C0C0000007073838C0C0000006073068 +S315E07E11303880C001010E0E7070808001010E0E7047 +S315E07E114070808001010C0E6070008003031C1CE041 +S315E07E1150E0000003031C1CE0E000000303181CC053 +S315E07E1160E0000007073838C0C0000007073838C0FF +S315E07E1170C000000607303880C001010E0E70708018 +S315E07E11808001010E0E7070808001010C0E60700091 +S315E07E11908003031C1CE0E0000003031C1CE0E0006F +S315E07E11A0000303181CC0E0000007073838C0C00003 +S315E07E11B00007073838C0C000000607303880C00117 +S315E07E11C0010E0E7070808001010E0E7070808001BF +S315E07E11D0010C0E6070008003031C1CE0E00000033F +S315E07E11E0031C1CE0E000000303181CC0E0000007BF +S315E07E11F0073838C0C0000007073838C0C000000690 +S315E07E120007303880C001010E0E7070808001010EBD +S315E07E12100E7070808001010C0E6070008003031CEE +S315E07E12201CE0E0000022021C1CE0E0000002021846 +S315E07E12301CC0E0000006063838C1C100521000002E +S315E07E1240000000000000001000000000000000002A +S315E07E1250000000000000000000000000000000002A +S315E07E1260000000000000000000000000000000001A +S315E07E1270000000000000000000000000000000000A +S315E07E128000000000000000000000000000000000FA +S315E07E129000000000000000000000000000000000EA +S315E07E12A000000000000000000000000000000000DA +S315E07E12B000000000000000000000000000000000CA +S315E07E12C000000000000000000000000000000000BA +S315E07E12D000000000000000000000000000000000AA +S315E07E12E0000000000000000000000000000000009A +S315E07E12F0000000000000000000000000000000008A +S315E07E13000000000000000000000000000000000079 +S315E07E13100000000000000000000000000000000069 +S315E07E13200000000000000000000000000000000059 +S315E07E13300000000000000000000000000000000049 +S315E07E13400000000000000000000000000000000039 +S315E07E13500000000000000000000000000000000029 +S315E07E13600000000000000000000000000000000019 +S315E07E13700000000000000000000000000000000009 +S315E07E138000000000000000000000000000000000F9 +S315E07E139000000000000000000000000000002000C9 +S315E07E13A000000000000000000000000000000000D9 +S315E07E13B00000000000BBDD00000000000000000031 +S315E07E13C000000000000000000000000000000000B9 +S315E07E13D000000000000000000000000000000000A9 +S315E07E13E02000000000000000000000000000000079 +S315E07E13F00000000000000000000000000000000089 +S315E07E14004000000000000000000000000000000038 +S315E07E14100000000000000000000000000000000068 +S315E07E14200000000000000000000010000000000048 +S315E07E14300000000000000000000100000000000047 +S315E07E14400000000000000000000000000000000038 +S315E07E145000000000004000000000000000000000E8 +S315E07E14600000000000000000000000000000000018 +S315E07E14700000000000000000000000000000000008 +S315E07E148000000000000000002000000000000000D8 +S315E07E14900000000000000080000000000000000068 +S315E07E14A000000000000000000000000000000000D8 +S315E07E14B000000000000000000400000002000000C2 +S315E07E14C000000000000000000000000000000000B8 +S315E07E14D000000000000000000000000000000000A8 +S315E07E14E00040000000000000000000000000000058 +S315E07E14F00000000000000000000000000000800008 +S315E07E15000000002000000000000000000000000057 +S315E07E15100000000000000400000000000000000063 +S315E07E152000000000000000000000000000001B1527 +S315E07E15300000100000000000000000000000100027 +S315E07E15400000000000000000000000000000000037 +S315E07E15500000000000000000000000000000000027 +S315E07E15600000000000000000000000000000000017 +S315E07E15700000000000000000000000000000000007 +S315E07E158000000000000000000000000000000000F7 +S315E07E159000000000000000000400000000000000E3 +S315E07E15A000000000000000000000000000000000D7 +S315E07E15B000000000000000000000000000000000C7 +S315E07E15C000000000000000000000000000000000B7 +S315E07E15D000000000000000000000000000000000A7 +S315E07E15E00000000000000000000000000000000097 +S315E07E15F0000000000000000000000000000008007F +S315E07E16000000000000000000000000000000000076 +S315E07E16100000000000000000000000000000000066 +S315E07E16200000000000000000000000000000000056 +S315E07E16300000000000000000000000000000000046 +S315E07E16400000000000000000000000000000000036 +S315E07E16500000000000000000000000000000000026 +S315E07E16600000000000000000000000000000000016 +S315E07E16700000000000000000000000000000000006 +S315E07E168000000000200000000000200000000000B6 +S315E07E169000002000000000000000000000000000C6 +S315E07E16A000000000000000BBD50000000000000046 +S315E07E16B00000000020000080000000000000000026 +S315E07E16C000000000000000000000000000000000B6 +S315E07E16D000000000000000000000000000000000A6 +S315E07E16E00000000000000000000000000000000096 +S315E07E16F00000000000000000000000000000000086 +S315E07E17000000000000000000000000000000000075 +S315E07E17100004000100000000000000000000000060 +S315E07E17200000000000000000000000000000000055 +S315E07E17300000000000000000000000000000000045 +S315E07E17400000000000000000000000000000000035 +S315E07E17500000000000000000000000000000000025 +S315E07E1760000000000000000000000008000000000D +S315E07E1770000000000080000800000000000000007D +S315E07E178000000000000000000000000000000000F5 +S315E07E179000000000000000000000000000000000E5 +S315E07E17A000000000000000000000000000000000D5 +S315E07E17B000000000000000000000000000000000C5 +S315E07E17C000000000000000000000000000000000B5 +S315E07E17D000000000000000000000000000000000A5 +S315E07E17E00000000000000000000000000000000095 +S315E07E17F00000000000000000000000000000000085 +S315E07E18000000000000000000000000000000000074 +S315E07E18100000000000000000000000000000000064 +S315E07E18209B2E00001000000000000000000000007B +S315E07E18301010000000000000000000000000000024 +S315E07E18400000000000000000000000000000000034 +S315E07E18500000000000000000000000000000000024 +S315E07E18600000000000000000000000000000000014 +S315E07E18700000000000000000000000000000000004 +S315E07E188000000000000000000000000000000000F4 +S315E07E189040000000000000000000000000000000A4 +S315E07E18A000000000000010000000000000000000C4 +S315E07E18B000000000000000000000000000000000C4 +S315E07E18C000000000000000000000000000000000B4 +S315E07E18D00040000000000000000000000000000064 +S315E07E18E00000000000000000000000000000000094 +S315E07E18F00000000000000000000000000000000084 +S315E07E19000000000020000000000000000000000053 +S315E07E19100000000000000000000000000000000063 +S315E07E19200000000000000000000000000000000053 +S315E07E19300200000000000000000000000000000041 +S315E07E1940000000000000000004000000000000002F +S315E07E195000000000000000000000000000400000E3 +S315E07E196000000000000000000000000020000000F3 +S315E07E19700000000000200020000080200000000023 +S315E07E198000000020000000000000002000000400AF +S315E07E19900000000000000000008EFF000000000056 +S315E07E19A000000000100000000000000000000000C3 +S315E07E19B000000000000000000000000000000000C3 +S315E07E19C000000000000000000000000000000000B3 +S315E07E19D00000000010000000000000000000000093 +S315E07E19E00000000000000000000000000000000093 +S315E07E19F00000000000000000000000000000000083 +S315E07E1A000000000000000000000000000000000072 +S315E07E1A100000000000000000000000000000000062 +S315E07E1A200000000000000000000000000000000052 +S315E07E1A300000000000000000400000000000000002 +S315E07E1A400000000000000000000000000000000032 +S315E07E1A500000000000000000000000000000000022 +S315E07E1A600000000000000000000000000000000012 +S315E07E1A700000000000000000000000000000000002 +S315E07E1A8000000000000000000000000000000000F2 +S315E07E1A9000000000000000000000000000000000E2 +S315E07E1AA000000000000000000000000000000000D2 +S315E07E1AB000000000000000000000000000000000C2 +S315E07E1AC000000000000000000000000000000000B2 +S315E07E1AD000000000000000000000000000000000A2 +S315E07E1AE00000000000000000000000000000000092 +S315E07E1AF0200000000000000000010001000000015F +S315E07E1B000000000000000000002000000020000031 +S315E07E1B100020AA6600000000000000000000000031 +S315E07E1B2000100000000000000000008000000000C1 +S315E07E1B300000000000000000000000000000000041 +S315E07E1B400000000000000000000000000000000031 +S315E07E1B500000000000000000000000000000000021 +S315E07E1B600000000000000000000000000000000011 +S315E07E1B700000000000000000000000000000000001 +S315E07E1B8000000000000000000000000000000000F1 +S315E07E1B9000000000000000000000000000000000E1 +S315E07E1BA000000000000000000000000000000000D1 +S315E07E1BB000000000000000000000000000000000C1 +S315E07E1BC000000000000000000000000000000000B1 +S315E07E1BD000000000000000000000000000000000A1 +S315E07E1BE00000000000000000000000000000000091 +S315E07E1BF00000000000000000000000000000000081 +S315E07E1C000000000000000000000000000000000070 +S315E07E1C100000000000000000000000000000000060 +S315E07E1C200000000000000000000000000000000050 +S315E07E1C300000000000000000000000000000000040 +S315E07E1C400000000000000000000000000000000030 +S315E07E1C500000000000000000000000000000000020 +S315E07E1C6000000000000000002000000020200000B0 +S315E07E1C7000000000000000200000000000000000E0 +S315E07E1C8020000000000000200000004E2D00000035 +S315E07E1C9000000000000010000000100000000000C0 +S315E07E1CA00000000000800000000000000000000050 +S315E07E1CB000000000000000000000000000000000C0 +S315E07E1CC000000000000000000000100000000000A0 +S315E07E1CD000000000000000000000000000000000A0 +S315E07E1CE00000000000000000000000000000000090 +S315E07E1CF00000000000000000000000000000000080 +S315E07E1D00000000000000000000000000000000006F +S315E07E1D10000000000000000000000000000000005F +S315E07E1D20000000000000000000004000000000000F +S315E07E1D30000000000000000000000000000000003F +S315E07E1D40000000000000000000000000000000002F +S315E07E1D50000000000000000000000000000000001F +S315E07E1D60000000000000000000000000000000000F +S315E07E1D7000000000000000000000000000000000FF +S315E07E1D8000000000000000000000000000000000EF +S315E07E1D9000000000000000000000000000000000DF +S315E07E1DA000000000000000000000000000000000CF +S315E07E1DB000000000000000000000000000000000BF +S315E07E1DC000000000000000000000000000000000AF +S315E07E1DD0000000000000000000000000000000009F +S315E07E1DE0200020000020200000000100010000000D +S315E07E1DF0200100000000000000000000000000005E +S315E07E1E0000000020101A0010000000000010000004 +S315E07E1E10000000000000000010000000000000004E +S315E07E1E20000000000000000000000000000000004E +S315E07E1E30000000000000000000000000000000003E +S315E07E1E40000000000010000000000000000000001E +S315E07E1E50000000000000000000000000000000001E +S315E07E1E60000000000000000000000000000000000E +S315E07E1E7000000000000000000000000000000000FE +S315E07E1E8000000000000000000000000000000000EE +S315E07E1E90400000800000000000000000000000001E +S315E07E1EA000000000000000002000000000000000AE +S315E07E1EB000000000000000000000000000000000BE +S315E07E1EC000000000000000000000000000000000AE +S315E07E1ED0000000000000000000000000000000009E +S315E07E1EE0000000000000000000000000000020006E +S315E07E1EF0010000000000000000000000000000007D +S315E07E1F00000000000000000000000000000000006D +S315E07E1F10000000000000000000000000000000005D +S315E07E1F20000000000000100000000000000000003D +S315E07E1F30000000000000010000000000000000003C +S315E07E1F40000000000000000000000000000100002C +S315E07E1F50000000000000000000000000000000001D +S315E07E1F60000000000000000000000000000000000D +S315E07E1F7000000000000000000000000000EFC2004C +S315E07E1F8000000000000000000000000000000000ED +S315E07E1F9000100000000000000000000000000000CD +S315E07E1FA000000000000000000000000000000000CD +S315E07E1FB000000000000000000000000000000000BD +S315E07E1FC000000000000000000000000000000000AD +S315E07E1FD0000000000000000000000000000000009D +S315E07E1FE0000000000000000000000000000000008D +S315E07E1FF0000000000000000000000000000000007D +S315E07E2000000000000000000000000000000000006C +S315E07E2010000000000000000000000000000000005C +S315E07E2020000000000000000000000000000000004C +S315E07E2030000000000000000000000000000000003C +S315E07E2040000000000000000000000000000000002C +S315E07E2050000000000000000000000000000000001C +S315E07E2060000000000000000000000000000000000C +S315E07E207000000000000000000000000000000000FC +S315E07E208000000000000000000000000000000000EC +S315E07E209000000000000000000000000000000000DC +S315E07E20A000000000000000000000000000000000CC +S315E07E20B000000000000000000000000000000000BC +S315E07E20C000000000000000000000000000000000AC +S315E07E20D0000000000000000000000000000000009C +S315E07E20E0000000000000000000000000000000008C +S315E07E20F00000000000002D3400001000000000000B +S315E07E2100100000000000000000000000000000005B +S315E07E2110000000000000000000000000000000005B +S315E07E2120000000000000000000000000000000004B +S315E07E2130000000000000000000000000000000003B +S315E07E2140000000000000000000000000000000002B +S315E07E2150000000000000000000000000000000001B +S315E07E2160000000000000000000000000000000000B +S315E07E217000000000000000000000000000000000FB +S315E07E218000004000000000000000000000000000AB +S315E07E219000000000000000000000000000000000DB +S315E07E21A000000000000000000000000000000000CB +S315E07E21B000000000000000000000000000000000BB +S315E07E21C000000000000000000000000000000000AB +S315E07E21D0000000000000000000000000000000009B +S315E07E21E0000000000000000000000000000000008B +S315E07E21F0000000000000000000000000000000007B +S315E07E2200000000000000000000000000000000006A +S315E07E2210000000000000000000000000000000005A +S315E07E2220000000000000000000000000000000004A +S315E07E2230000000000000000000000000000000003A +S315E07E22400100000000000000000000000000000029 +S315E07E2250000000000000000000000000000000001A +S315E07E22600000000000000000000000000000006F9B +S315E07E22708E0000000000000000000000000000006C +S315E07E228000000000000000000000000000000000EA +S315E07E229000000000000000000000000000000000DA +S315E07E22A000000000000000000000000000000000CA +S315E07E22B010000000000000000000000000000000AA +S315E07E22C000000000000000000000000000000000AA +S315E07E22D0000000000000000000000000000000009A +S315E07E22E0000000000000000000000000000000008A +S315E07E22F000000000000000000000000000000080FA +S315E07E23000000000000000000000000000000000069 +S315E07E23100000200000000000000000000000000039 +S315E07E23200000000000000000000000000000000049 +S315E07E23300000000000000000000000000000000039 +S315E07E23400000000000000000000000000000000029 +S315E07E235000000000000000002000010000000000F8 +S315E07E23600000000000000000000000000000000009 +S315E07E237000000000000000000000000000000000F9 +S315E07E238000000000000000000000000000000000E9 +S315E07E239000100000000000000000000000000000C9 +S315E07E23A001000000000000000000000000000000C8 +S315E07E23B000000000000000000000000000000000B9 +S315E07E23C00000000000000000200000000000000089 +S315E07E23D00000000000000000000020000000000079 +S315E07E23E000000000000000009932000010000000AE +S315E07E23F00000000000000000001000000000000069 +S315E07E24000000000000000000000000000000000068 +S315E07E24100000000000000000000000000000000058 +S315E07E24200000000000000000000000000000000048 +S315E07E24300000000000000000000000000000000038 +S315E07E24400000000000000000000000000000000028 +S315E07E24500000000000000000000000000000000018 +S315E07E24600000000000000000000000000000000008 +S315E07E247000000000000000000000000000000000F8 +S315E07E248000000000000000000000000000000000E8 +S315E07E249000000000000000000000000000000000D8 +S315E07E24A000000000000000000000000000000000C8 +S315E07E24B000000000000000000000000000000000B8 +S315E07E24C000000000000000000000000000000000A8 +S315E07E24D00000000000000000000000000000000098 +S315E07E24E00000000000000000000000000000000088 +S315E07E24F00000000000000000000000000000000078 +S315E07E25000000000000000000000000000000000067 +S315E07E25100000000000000000000000000000000057 +S315E07E25200000000000000000000000000000000047 +S315E07E25300000000000000000000000000000002017 +S315E07E25400000000000000000000000000000000027 +S315E07E255000000000000000002000000000000000F7 +S315E07E2560008A61000080801000000000000000000C +S315E07E257000000000000000000000000000000000F7 +S315E07E258000000000000000000000000000000000E7 +S315E07E259000000000000000000000000000000000D7 +S315E07E25A000000000000000000000000000000000C7 +S315E07E25B000000000000000000000000000000000B7 +S315E07E25C000000000000000000000000000000000A7 +S315E07E25D00000000000000000000000000000000097 +S315E07E25E00000000000000000000000000000000087 +S315E07E25F00000000000000000000000000000000077 +S315E07E26000000000000000000000000000000000066 +S315E07E26100000000000000000000000000000000056 +S315E07E26200000000000000000000000000000000046 +S315E07E26300000000000000000000000000000000036 +S315E07E26400000000000000000000000000000000026 +S315E07E26500000000000000000000000000000000016 +S315E07E26600000000000000000000000000000000006 +S315E07E267000000000000000000000000000000000F6 +S315E07E268000000000000000000000000000000000E6 +S315E07E269000000000000000000000000000000000D6 +S315E07E26A000000000000000000000000000000000C6 +S315E07E26B000000000000000000000000000000000B6 +S315E07E26C00000000000000000000000000000002086 +S315E07E26D0000000000000000101008ED10000000035 +S315E07E26E00000000000000000000000000000000086 +S315E07E26F00000000000000000000000000000000076 +S315E07E27000000000000000000000000000000000065 +S315E07E27100000000000000000000000000000000055 +S315E07E27200000000000000000000000000000000045 +S315E07E27300000000000000000000000000000000035 +S315E07E27400000000000000000000000000000000025 +S315E07E27500000000000000000000000000000000015 +S315E07E27600000000000000000000000000000000005 +S315E07E277000000000000000000000000000000000F5 +S315E07E278000000000000000000000000000000000E5 +S315E07E279000000000000000000000000000000000D5 +S315E07E27A000000000000000000000000000000000C5 +S315E07E27B000000000000000000000000000000000B5 +S315E07E27C000000000000000000000000000000000A5 +S315E07E27D00000000000000000000000000000000095 +S315E07E27E00000000000000000000000000000000085 +S315E07E27F00000000000000000000000000000000075 +S315E07E28000000000000000000000000000000000064 +S315E07E28100000000000000000000000000000000054 +S315E07E28200000000000000000000000000000000044 +S315E07E28300000000000000000000000000000200014 +S315E07E284020200020000000000020000000000000A4 +S315E07E285000000081940000000010000000000000EF +S315E07E286000001000000000000000000000000000F4 +S315E07E287000000000000000000000000000000000F4 +S315E07E288000000000000000000000000000000000E4 +S315E07E289000000000000000000000000000000000D4 +S315E07E28A000000000000000000000000000000000C4 +S315E07E28B000000000000000000000000000000000B4 +S315E07E28C000000000000000000000000000000000A4 +S315E07E28D00000000000000000000000000000000094 +S315E07E28E00000000000000000000000000000000084 +S315E07E28F00000000000000000000000000000000074 +S315E07E29000000000000000000000000000000000063 +S315E07E29100000000000000000000000000000000053 +S315E07E29200000000000000000000000000000000043 +S315E07E29300000000000000000000000000000000033 +S315E07E29400000000000000000000000000000000023 +S315E07E29500000000000000000000000000000000013 +S315E07E29600000000000000000000000000000000003 +S315E07E297000000000000000000000000000000000F3 +S315E07E298000000000000000000000000000000000E3 +S315E07E299000000000000000000000000000000000D3 +S315E07E29A000000000000000000000000000000000C3 +S315E07E29B000000000000000000000000000000000B3 +S315E07E29C00000000000000000002000001C820000E5 +S315E07E29D00000000000000000000000000000000093 +S315E07E29E00000000000000000000000000000000083 +S315E07E29F00000000000000000000000000000000073 +S315E07E2A000000000000000000000000000000000062 +S315E07E2A100000000000000000000000000000000052 +S315E07E2A200000000000000000000000000000000042 +S315E07E2A300000000000000000000000000000000032 +S315E07E2A400000000000000000000000000000000022 +S315E07E2A500000000000000000000000000000000012 +S315E07E2A600000000000000000000000000000000002 +S315E07E2A7000000000000000000000000000000000F2 +S315E07E2A8000000000000000000000000000000000E2 +S315E07E2A9000000000000000000000000000000000D2 +S315E07E2AA000000000000000000000000000000000C2 +S315E07E2AB000000000000000000000000000000000B2 +S315E07E2AC000000000000000000000000000000000A2 +S315E07E2AD00000000000000000000000000000000092 +S315E07E2AE00000000000000000000000000000000082 +S315E07E2AF00000000000000000000000000000000072 +S315E07E2B000000000000000000000000000000000061 +S315E07E2B100000000000000020000000000000000031 +S315E07E2B200000000000000000000000000000000041 +S315E07E2B300000000000000000000000000000000031 +S315E07E2B4000000000002D9B00000000000000000059 +S315E07E2B501000000000000000000000000000000001 +S315E07E2B600000000000000000000000000000000001 +S315E07E2B7000000000000000000000000000000000F1 +S315E07E2B8000000000000000000000000000000000E1 +S315E07E2B9000000000000000000000000000000000D1 +S315E07E2BA000000000000000000000000000000000C1 +S315E07E2BB000000000000000000000000000000000B1 +S315E07E2BC000000000000000000000000000000000A1 +S315E07E2BD00000000000000000000000000000000091 +S315E07E2BE00000000000000000000000000000000081 +S315E07E2BF00000000000000000000000000000000071 +S315E07E2C000000000000000000000000000000000060 +S315E07E2C100000000000000000000000000000000050 +S315E07E2C200000000000000000000000000000000040 +S315E07E2C300000000000000000000000000000000030 +S315E07E2C400000000000000000000000000000000020 +S315E07E2C500000000000000000000000000000000010 +S315E07E2C600000000000000000000000000000000000 +S315E07E2C7000000000000000000000000000000000F0 +S315E07E2C8000000000000000000000000000000000E0 +S315E07E2C9000000000000000000000000000002000B0 +S315E07E2CA000000000000000000000000000000000C0 +S315E07E2CB0000000000000000000000000000032047A +S315E07E2CC00000000000001000008000000000000010 +S315E07E2CD01000000000000000000000000000000080 +S315E07E2CE00000000000000000000000000000000080 +S315E07E2CF00000000000000000000000000000000070 +S315E07E2D00000000000000000000000000000000005F +S315E07E2D10000000000000000000000000000000004F +S315E07E2D20000000000000000000000000000000003F +S315E07E2D30000000000000000000000000000000002F +S315E07E2D40000000000000000000000000000000001F +S315E07E2D50000000000000000000000000000000000F +S315E07E2D6000000000000000000000000000000000FF +S315E07E2D7000000000000000000000000000000000EF +S315E07E2D8000000000000000000000000000000000DF +S315E07E2D9000000000000000000000000000000000CF +S315E07E2DA000000000000000000000000000000000BF +S315E07E2DB000000000000000000000000000000000AF +S315E07E2DC0000000000000000000000000000000009F +S315E07E2DD0000000000000000000000000000000008F +S315E07E2DE0000000000000000000000000000000007F +S315E07E2DF0000000000000000000000000000000006F +S315E07E2E00000000000000000000000000000000005E +S315E07E2E10000000000000000000000000000000004E +S315E07E2E20000000000000000000000000000100003D +S315E07E2E30000001000000003CE3000000000000000E +S315E07E2E40000000000000000000000000000000001E +S315E07E2E50000000000000000000000000000000000E +S315E07E2E6000000000000000000000000000000000FE +S315E07E2E7000000000000000000000000000000000EE +S315E07E2E8000000000000000000000000000000000DE +S315E07E2E9000000000000000000000000000000000CE +S315E07E2EA000000000000000000000000000000000BE +S315E07E2EB000000000000000000000000000000000AE +S315E07E2EC0000000000000000000000000000000009E +S315E07E2ED0000000000000000000000000000000008E +S315E07E2EE0000000000000000000000000000000007E +S315E07E2EF0000000000000000000000000000000006E +S315E07E2F00000000000000000000000000000000005D +S315E07E2F10000000000000000000000000000000004D +S315E07E2F20000000000000000000000000000000003D +S315E07E2F30000000000000000000000000000000002D +S315E07E2F40000000000000000000000000000000001D +S315E07E2F50000000000000000000000000000000000D +S315E07E2F6000000000000000000000000000000000FD +S315E07E2F7000000000000000000000000000000000ED +S315E07E2F8000000000000000000000000000002000BD +S315E07E2F90000000200000000000002000000000008D +S315E07E2FA000000000000000000000000000000000BD +S315E07E2FB0110B000010000000000000000000000081 +S315E07E2FC0100000000000000000000000000000008D +S315E07E2FD0100000000000000000000000000000007D +S315E07E2FE0000000000000000000000000000000007D +S315E07E2FF0000000000000000000000000000000006D +S315E07E3000000000000000000000000000000000005C +S315E07E3010000000000000000000000000000000004C +S315E07E3020000000000000000000000000000000003C +S315E07E3030000000000000000000000000000000002C +S315E07E3040000000000000000000000000000000001C +S315E07E3050000000000000000000000000000000000C +S315E07E306000000000000000000000000000000000FC +S315E07E307000000000000000000000000000000000EC +S315E07E308000000000000000000000000000000000DC +S315E07E309000000000000000000000000000000000CC +S315E07E30A000000000000000000000000000000000BC +S315E07E30B000000000000000000000000000000000AC +S315E07E30C0000000000000000000000000000000009C +S315E07E30D0000000000000000000000000000000008C +S315E07E30E0000000000000000000000000000000007C +S315E07E30F0000000000000000000000000000000204C +S315E07E3100000000000000000000000000000000005B +S315E07E3110000000000000200000002000000000000B +S315E07E312000000000000000000056DE001000900067 +S315E07E3130000000000000000010000010000000000B +S315E07E3140000000000000000000000000000000001B +S315E07E3150000000000000000000000000000000000B +S315E07E316000000000000000000000000000000000FB +S315E07E317000000000000000000000000000000000EB +S315E07E318000000000000000000000000000000000DB +S315E07E319000000000000000000000000000000000CB +S315E07E31A000000000000000000000000000000000BB +S315E07E31B000000000000000000000000000000000AB +S315E07E31C0000000000000000000000000000000009B +S315E07E31D0000000000000000000000000000000008B +S315E07E31E0000000000000000000000000000000007B +S315E07E31F0000000000000000000000000000000006B +S315E07E3200000000000000000000000000000000005A +S315E07E3210000000000000000000000000000000004A +S315E07E3220000000000000000000000000000000003A +S315E07E3230000000000000000000000000000000002A +S315E07E3240000000000000000000000000000000001A +S315E07E3250000000000000000000000000000000000A +S315E07E326000000000000000000000000000000000FA +S315E07E327000000000000000000000000000000000EA +S315E07E3280000000000000000000000000200000209A +S315E07E3290200000200000000020000000000000204A +S315E07E32A00000AB2D00000000101000000000800042 +S315E07E32B0001000000000000000000000000000009A +S315E07E32C0000010000000000000000000000000008A +S315E07E32D0000000000000000000000000000000008A +S315E07E32E0000000000000000000000000000000007A +S315E07E32F0000000000000000000000000000000006A +S315E07E33000000000000000000000000000000000059 +S315E07E33100000000000000000000000000000000049 +S315E07E33200000000000000000000000000000000039 +S315E07E33300000000000000000000000000000000029 +S315E07E33400000000000000000000000000000000019 +S315E07E33500000000000000000000000000000000009 +S315E07E336000000000000000000000000000000000F9 +S315E07E337000000000000000000000000000000000E9 +S315E07E338000000000000000000000000000000000D9 +S315E07E339000000000000000000000000000000000C9 +S315E07E33A000000000000000000000000000000000B9 +S315E07E33B000000000000000000000000000000000A9 +S315E07E33C00000000000000000000000000000000099 +S315E07E33D00000000000000000000000000000000089 +S315E07E33E00000000000000000000000000000000079 +S315E07E33F000002000000000000000202000200000E9 +S315E07E340000000000000020002000000020000000F8 +S315E07E341000210000000100000000004EB90000809F +S315E07E342000101000000000000010100000000000F8 +S315E07E34300000000000000000000010000000000018 +S315E07E34400000000000000000000000000000000018 +S315E07E34500000000000000000000000000000000008 +S315E07E346000000000000000000000000000000000F8 +S315E07E347000000000000000000000000000000000E8 +S315E07E348000000000000000000000000000000000D8 +S315E07E349000000000000000000000000000000000C8 +S315E07E34A000000000000000000000000000000000B8 +S315E07E34B000000000000000000000000000000000A8 +S315E07E34C00000000000000000000000000000000098 +S315E07E34D00000000000000000000000000000000088 +S315E07E34E00000000000000000000000000000000078 +S315E07E34F00000000000000000000000000000000068 +S315E07E35000000000000000000000000000000000057 +S315E07E35100000000000000000000000000000000047 +S315E07E35200000000000000000000000000000000037 +S315E07E35300000000000000000000000000000000027 +S315E07E35400000000000000000000000000000000017 +S315E07E35500000000000000000000000000000000007 +S315E07E356000000000000000000020200000000000B7 +S315E07E357000002000000000000020000000000000A7 +S315E07E35800020200001002000000000000000000076 +S315E07E359000000000DEDE00000010001010000004D7 +S315E07E35A00030100014002000000000000000000043 +S315E07E35B000000010100100080040010008004000F5 +S315E07E35C00000000000000000000000000002001085 +S315E07E35D00080020010008000000000000000000075 +S315E07E35E0000000000004002000000400200000002F +S315E07E35F0000000000000000000000001000800401E +S315E07E3600010008004000000000000000000000000D +S315E07E36100000000200100080020010008000000022 +S315E07E36200000000000000000000000040020000012 +S315E07E36300400200000000000000000000000000002 +S315E07E36400001000800400100080040000000000084 +S315E07E36500000000000000000000200100080020072 +S315E07E36601000800000000000000000000000000066 +S315E07E3670000400200000040020000000000000009E +S315E07E36800000000000000001000800400100080084 +S315E07E36904000000000000000000000000000000284 +S315E07E36A00010008002001000800000000000000094 +S315E07E36B0000000000000000400200000040020005E +S315E07E36C0000000000000000000000000000100088D +S315E07E36D000400100080040000000000000000000FD +S315E07E36E00020202020020010008002203000800092 +S315E07E36F000202000000000000000200020040000E2 +S315E07E3700000004002000000000000000001E4F00C4 +S315E07E371000001000101000000000101000000000F5 +S315E07E37200000000000000000000000001010000015 +S315E07E37300000000000000000000000000000000025 +S315E07E37400000000000000000000000000000000015 +S315E07E37500000000000000000000000000000000005 +S315E07E376000000000000000000000000000000000F5 +S315E07E377000000000000000000000000000000000E5 +S315E07E378000000000000000000000000000000000D5 +S315E07E379000000000000000000000000000000000C5 +S315E07E37A000000000000000000000000000000000B5 +S315E07E37B000000000000000000000000000000000A5 +S315E07E37C00000000000000000000000000000000095 +S315E07E37D00000000000000000000000000000000085 +S315E07E37E00000000000000000000000000000000075 +S315E07E37F00000000000000000000000000000000065 +S315E07E38000000000000000000000000000000000054 +S315E07E38100000000000000000000000000000000044 +S315E07E38200000000000000000000000000000000034 +S315E07E38300000000000000000000000000000000024 +S315E07E38400000000000000000000000000000000014 +S315E07E38500000000000000000000020202020000084 +S315E07E386000000000000000000000202000000000B4 +S315E07E38700000002000200000000000000020000084 +S315E07E3880000000000000FC6C00000000001010004C +S315E07E389000000010100000000000000000000000A4 +S315E07E38A00000000000101000000000000000000094 +S315E07E38B000000000000000000000000000000000A4 +S315E07E38C00000000000000000000000000000000094 +S315E07E38D00000000000000000000000000000000084 +S315E07E38E00000000000000000000000000000000074 +S315E07E38F00000000000000000000000000000000064 +S315E07E39000000000000000000000000000000000053 +S315E07E39100000000000000000000000000000000043 +S315E07E39200000000000000000000000000000000033 +S315E07E39300000000000000000000000000000000023 +S315E07E39400000000000000000000000000000000013 +S315E07E39500000000000000000000000000000000003 +S315E07E396000000000000000000000000000000000F3 +S315E07E397000000000000000000000000000000000E3 +S315E07E398000000000000000000000000000000000D3 +S315E07E399000000000000000000000000000000000C3 +S315E07E39A000000000000000000000000000000000B3 +S315E07E39B000000000000000000000000000000000A3 +S315E07E39C00000000000000000000000000000000093 +S315E07E39D00000002020202000000000000000000003 +S315E07E39E000000020200000000000002000200000F3 +S315E07E39F0000000000000000000000000000000550E +S315E07E3A007D00008080001010000000001010100085 +S315E07E3A100000000000000000000000000000101022 +S315E07E3A200000000000000000000000000000000032 +S315E07E3A300000000000000000000000000000000022 +S315E07E3A400000000000000000000000000000000012 +S315E07E3A500000000000000000000000000000000002 +S315E07E3A6000000000000000000000000000000000F2 +S315E07E3A7000000000000000000000000000000000E2 +S315E07E3A8000000000000000000000000000000000D2 +S315E07E3A9000000000000000000000000000000000C2 +S315E07E3AA000000000000000000000000000000000B2 +S315E07E3AB000000000000000000000000000000000A2 +S315E07E3AC00000000000000000000000000000000092 +S315E07E3AD00000000000000000000000000000000082 +S315E07E3AE00000000000000000000000000000000072 +S315E07E3AF00000000000000000000000000000000062 +S315E07E3B000000000000000000000000000000000051 +S315E07E3B100000000000000000000000000000000041 +S315E07E3B200000000000000000000000000000000031 +S315E07E3B300000000000000000000000000000000021 +S315E07E3B400000000000000000000000002020202091 +S315E07E3B500000000000002020000000002020000081 +S315E07E3B6000000000200020000100000000000000B0 +S315E07E3B7000000000000101002019000000000000A6 +S315E07E3B8000000000000000100000000000000000C1 +S315E07E3B9000000000000000000000000000000000C1 +S315E07E3BA000000000000000000000000000000000B1 +S315E07E3BB000000000000000000000000000000000A1 +S315E07E3BC00000000000000000000000000000000091 +S315E07E3BD00000000000000000000000000000000081 +S315E07E3BE00000000000000000000000000000000071 +S315E07E3BF00000000000000000000000000000000061 +S315E07E3C000000000000000000000000000000000050 +S315E07E3C100000000000000000000000000000000040 +S315E07E3C200000000000000000000000000000000030 +S315E07E3C300000000000000000000000000000000020 +S315E07E3C400000000000000000000000000000000010 +S315E07E3C500000000000000000000000000000000000 +S315E07E3C6000000000000000000000000000000000F0 +S315E07E3C7000000000000000000000000000000000E0 +S315E07E3C8000000000000000000000000000000000D0 +S315E07E3C9000000000000000000000000000000000C0 +S315E07E3CA000000000000000000000000000000000B0 +S315E07E3CB000000000000000000000000000000000A0 +S315E07E3CC00000000000000000000000000000000090 +S315E07E3CD00000000000000000000000000020000060 +S315E07E3CE02000000000000000000000000000000050 +S315E07E3CF0003D4B00000000000000000000000000D8 +S315E07E3D00000000000000000000000000000000004F +S315E07E3D10000000000000000000000000000000003F +S315E07E3D20000000000000000000000000000000002F +S315E07E3D30000000000000000000000000000000001F +S315E07E3D40000000000000000000000000000000000F +S315E07E3D5000000000000000000000000000000000FF +S315E07E3D6000000000000000000000000000000000EF +S315E07E3D7000000000000000000000000000000000DF +S315E07E3D8000000000000000000000000000000000CF +S315E07E3D9000000000000000000000000000000000BF +S315E07E3DA000000000000000000000000000000000AF +S315E07E3DB0000000000000000000000000000000009F +S315E07E3DC0000000000000000000000000000000008F +S315E07E3DD0000000000000000000000000000000007F +S315E07E3DE0000000000000000000000000000000006F +S315E07E3DF0000000000000000000000000000000005F +S315E07E3E00000000000000000000000000000000004E +S315E07E3E10000000000000000000000000000000003E +S315E07E3E20000000000000000000000000000000002E +S315E07E3E30000000000000000000000000000000001E +S315E07E3E4000000000000000002020000000000000CE +S315E07E3E5000000000000020000020000000000000BE +S315E07E3E60000000000000000000002C490000001069 +S315E07E3E7000000000000000000000000000000000DE +S315E07E3E8000000000000000000000000000000000CE +S315E07E3E9000000000000000000000000000000000BE +S315E07E3EA000000000000000000000000000000000AE +S315E07E3EB0000000000000000000000000000000009E +S315E07E3EC0000000000000000000000000000000008E +S315E07E3ED0000000000000000000000000000000007E +S315E07E3EE0000000000000000000000000000000006E +S315E07E3EF0000000000000000000000000000000005E +S315E07E3F00000000000000000000000000000000004D +S315E07E3F10000000000000000000000000000000003D +S315E07E3F20000000000000000000000000000000002D +S315E07E3F30000000000000000000000000000000001D +S315E07E3F40000000000000000000000000000000000D +S315E07E3F5000000000000000000000000000000000FD +S315E07E3F6000000000000000000000000000000000ED +S315E07E3F7000000000000000000000000000000000DD +S315E07E3F8000000000000000000000000000000000CD +S315E07E3F9000000000000000000000000000000000BD +S315E07E3FA000000000000000000000000000000000AD +S315E07E3FB0000000000000000000000000000000009D +S315E07E3FC0002020000000000000000000000000004D +S315E07E3FD0202000000000000000000000000000003D +S315E07E3FE00000001C990000001000000000000000A8 +S315E07E3FF00004003000000000000000000000000029 +S315E07E40000000000000000001000800400000000003 +S315E07E4010000000000000000000000000000000023A +S315E07E402000000080000000000000000000000000AC +S315E07E403000000000000000040020000000000000F8 +S315E07E40400000000000000000000000000001000803 +S315E07E405000400000000000000000000000000000BC +S315E07E4060000000000002001000800000000000005A +S315E07E407000000000000000000000000000040020B8 +S315E07E408000000000000000000000000000000000CC +S315E07E40900000000100080040000000000000000073 +S315E07E40A0000000000000000000000002001000801A +S315E07E40B0000000000000000000000000000000009C +S315E07E40C00000000400200000000000000000000068 +S315E07E40D00000000000000000000100080040000033 +S315E07E40E0000000000000000000000000000000006C +S315E07E40F000020010008000000000000000000000CA +S315E07E41000000000000000000000400200000000027 +S315E07E4110000000000000000000000000000000013A +S315E07E412000080040000000000000000000000000E3 +S315E07E41300000000000000002001000800000000089 +S315E07E414000000000000000000020200000000004C7 +S315E07E4150000000000000000000000000BCF200004D +S315E07E416000001000000000000000041020000000A7 +S315E07E417000000000000000000000000000000000DB +S315E07E41800100080040000000000000000000000082 +S315E07E41900000000000000000020000008000000039 +S315E07E41A000000000000000000000000000000000AB +S315E07E41B00400200000000000000000000000000077 +S315E07E41C00000000000000100080040000000000042 +S315E07E41D00000000000000000000000000000020079 +S315E07E41E010008000000000000000000000000000DB +S315E07E41F00000000000000400200000000000000037 +S315E07E42000000000000000000000000000100080041 +S315E07E421040000000000000000000000000000000FA +S315E07E42200000000002001000800000000000000098 +S315E07E423000000000000000000000000004002000F6 +S315E07E4240000000000000000000000000000000000A +S315E07E425000000100080040000000000000000000B1 +S315E07E42600000000000000000000002001000800058 +S315E07E427000000000000000000000000000000000DA +S315E07E428000000400200000000000000000000000A6 +S315E07E42900000000000000000010008004000000071 +S315E07E42A000000000000000000000000000000000AA +S315E07E42B002001020800000000000000000000000E8 +S315E07E42C00020200020000000040000200000000006 +S315E07E42D00000000000BC720000000000000000004C +S315E07E42E00000000400200000000000000000000046 +S315E07E42F00000000000000000000100080040000011 +S315E07E43000000000000000000000000000000000049 +S315E07E431000020010008000000000000000000000A7 +S315E07E43200000000000000000000400200000000005 +S315E07E43300000000000000000000000000000000118 +S315E07E434000080040000000000000000000000000C1 +S315E07E43500000000000000002001000800000000067 +S315E07E436000000000000000000000000000000004E5 +S315E07E437000200000000000000000000000000000B9 +S315E07E43800000000000010008004000000000000080 +S315E07E439000000000000000000000000000020010A7 +S315E07E43A00080000000000000000000000000000029 +S315E07E43B00000000000040020000000000000000075 +S315E07E43C00000000000000000000000010008004040 +S315E07E43D00000000000000000000000000000000079 +S315E07E43E000000002001000800000000000000000D7 +S315E07E43F00000000000000000000000040020000035 +S315E07E44000000000000000000000000000000000048 +S315E07E441000010008004000000000000000000000EF +S315E07E44200000000000000000000200100080000096 +S315E07E44300000000000000000000000000000000018 +S315E07E4440000400200000000000000000000028D7E5 +S315E07E4450001003031C1C606010100303181C4060F0 +S315E07E44601000070738384040000007073838C0C0DC +S315E07E447010000607303880C001010E0E7070808015 +S315E07E448001010E0E7070808001010C0E607000805E +S315E07E449003031C1CE0E0000003031C1CE0E00000BC +S315E07E44A00303181CC0E0000007073838C0C00000D0 +S315E07E44B007073838C0C000000607303880C00101E3 +S315E07E44C00E0E7070808001010E0E7070808001018C +S315E07E44D00C0E6070008003031C1CE0E0000003030A +S315E07E44E01C1CE0E000000303181CC0E00000070788 +S315E07E44F03838C0C0000007073838C0C0000006075D +S315E07E4500303880C001010E0E7070808001010E0E83 +S315E07E45107070808001010C0E6070008003031C1CAD +S315E07E4520E0E0000003031C1CE0E000000303181C2F +S315E07E4530C0E0000007073838C0C0000007073838FB +S315E07E4540C0C000000607303880C001010E0E7070D4 +S315E07E4550808001010E0E7070808001010C0E60700D +S315E07E4560008003031C1CE0E0000003031C1CE0E06B +S315E07E457000000303181CC0E0000007073838C0C0FF +S315E07E4580000007073838C0C000000607303880C014 +S315E07E459001010E0E7070808001210E0E707080809B +S315E07E45A021010C0E6070008003231C1CE0E00000FD +S315E07E45B002021C1CE0E000000202181CC0E00000C3 +S315E07E45C006063838C0C0209E22001000801000000B +S315E07E45D00010100000001000001000000000000037 +S315E07E45E00000000000000000001000000000000057 +S315E07E45F00000000000000000000000000000000057 +S315E07E46000000000000000000000000000000000046 +S315E07E46100000000000000000000000000000000036 +S315E07E46200000000000000000000000000000000026 +S315E07E46300000000000000000000000000000000016 +S315E07E46400000000000000000000000000000000006 +S315E07E465000000000000000000000000000000000F6 +S315E07E466000000000000000000000000000000000E6 +S315E07E467000000000000000000000000000000000D6 +S315E07E468000000000000000000000000000000000C6 +S315E07E469000000000000000000000000000000000B6 +S315E07E46A000000000000000000000000000000000A6 +S315E07E46B00000000000000000000000000000000096 +S315E07E46C00000000000000000000000000000000086 +S315E07E46D00000000000000000000000000000000076 +S315E07E46E00000000000000000000000000000000066 +S315E07E46F00000000000000000000000000000000056 +S315E07E47000000000000000000000000000000000045 +S315E07E47100000000000000000002000000000000015 +S315E07E47200000200000000000000000000000000005 +S315E07E473000000000000000000000000020000000F5 +S315E07E47409D930000000000000000000000000000D5 +S315E07E475000000000400000000000000000000000B5 +S315E07E476000000000000000000000000000000000E5 +S315E07E477000000000000400000000000000000002CF +S315E07E47800000000000000000000000400000000085 +S315E07E479000000000000000000000000000000000B5 +S315E07E47A000000000000000000000000000000000A5 +S315E07E47B00000000000000002000000000000000093 +S315E07E47C00000000000000000000000000000000085 +S315E07E47D0000000000040001000000000000000081D +S315E07E47E00000000000000000000000100000000055 +S315E07E47F00000002000000000000000000000000035 +S315E07E48000000000000000000000000000000000044 +S315E07E48100000000000000000000000000000000034 +S315E07E48200000000000000000000000000000000024 +S315E07E48300000000000000000000000000000000014 +S315E07E48400000000000000004000000000000000000 +S315E07E485000000000000000000000000000000000F4 +S315E07E486000000000000000000000000040000000A4 +S315E07E487000000000000000000000200000000000B4 +S315E07E488000000000000000000000000000000000C4 +S315E07E489000000000000000000000000000000000B4 +S315E07E48A000000000000000000000000000000000A4 +S315E07E48B010000000002000000081F700009000104C +S315E07E48C00000000000100010000010000000200034 +S315E07E48D00000000000000000000000000000000074 +S315E07E48E00000000000000000000000000000000064 +S315E07E48F00000000000000000000000000000000054 +S315E07E49000000000010000000000000000000000033 +S315E07E49100000000000000000200000000000000013 +S315E07E49200000000000000000000000000000000023 +S315E07E493000000000004000000000000000000000D3 +S315E07E49400000000000000000000000000000000003 +S315E07E495000000000000000000000000000000000F3 +S315E07E496000000000000000000000000000000000E3 +S315E07E497000000000000000000000000000000000D3 +S315E07E498000000000000000000000000000000000C3 +S315E07E499000000000000000000000000000000000B3 +S315E07E49A000000000000000000000000000000000A3 +S315E07E49B00000000000000000000000000000000093 +S315E07E49C00000000000002000000000000000000063 +S315E07E49D00000000000000000000000000000000073 +S315E07E49E00000000000000000000000000000000063 +S315E07E49F00000000000000000000000000000000053 +S315E07E4A0000000000200020000000000000200000E2 +S315E07E4A1000000000000000000020000000200000F2 +S315E07E4A2020000000000000000000000020000000E2 +S315E07E4A300000FDB90000000010000000000000004C +S315E07E4A4010000000000000000000000000000000F2 +S315E07E4A5000000000000000000000000000000000F2 +S315E07E4A6000000000000000000000000200000000E0 +S315E07E4A7000000000000000000000000000000000D2 +S315E07E4A800000400000000000000000000000000082 +S315E07E4A9000000000000000000000000000000000B2 +S315E07E4AA000000000000000000000000000000000A2 +S315E07E4AB00000001000000000000000000000000082 +S315E07E4AC00000000000000000000000200000000062 +S315E07E4AD00000000000000000000000000000000072 +S315E07E4AE00000000000000000000000000000000062 +S315E07E4AF00000000000000000000000000000000052 +S315E07E4B000000000000000000000000000000000041 +S315E07E4B100000000000000000000000000000000031 +S315E07E4B200000000000000000000000000000000021 +S315E07E4B300000000000000000000000000000000011 +S315E07E4B400000000000000000000000000000000001 +S315E07E4B5000000000000000000000000020000000D1 +S315E07E4B6000000000000000000000000000000000E1 +S315E07E4B7000000000000000000000000000002000B1 +S315E07E4B800000000000000000200010000000000091 +S315E07E4B900000200000002000002000000020000031 +S315E07E4BA000000000000000000000009E04000010EF +S315E07E4BB00000000000000010000000000010000071 +S315E07E4BC02000000000000000000000000000000061 +S315E07E4BD04000000000000000000000000000000031 +S315E07E4BE00000000000000000000000000000000061 +S315E07E4BF00000000000000010000000000000000041 +S315E07E4C00000400000000000000000020000000001C +S315E07E4C1000000000000000000000004000000000F0 +S315E07E4C2000000000000040000000000000000002DE +S315E07E4C300000000000000000000000000000000010 +S315E07E4C400000000000000000000000000000000000 +S315E07E4C5000000000000000000000000000000008E8 +S315E07E4C6000400000000000000000000000000000A0 +S315E07E4C7000000000000000100000000000000000C0 +S315E07E4C8000000000000000000000000000000000C0 +S315E07E4C9000000000000000000000000000000000B0 +S315E07E4CA000000000000000000000000000000000A0 +S315E07E4CB00000000000000000200000000000000070 +S315E07E4CC00000000000000000000000000000000080 +S315E07E4CD0000000040000000000000000000000006C +S315E07E4CE00000000000000000400000000000000020 +S315E07E4CF00000000000000000200000000000200010 +S315E07E4D00000000000020000000000000000000001F +S315E07E4D1020000000000000000000000000000020EF +S315E07E4D2000000000139B0000001000200000000041 +S315E07E4D3000000000100000000010000000000000EF +S315E07E4D4000000000000000000000000000000000FF +S315E07E4D50000000200000200000000000000000109F +S315E07E4D60000000000000200000001000001000009F +S315E07E4D7000000000000020000000000000000000AF +S315E07E4D80000000000000400000000000000000007F +S315E07E4D9000000000000000000000000000000000AF +S315E07E4DA0000000000000000000400000000000005F +S315E07E4DB0000000000000000000000000000000008F +S315E07E4DC0000000000000000000000000000000007F +S315E07E4DD0000000000000000000000000000000006F +S315E07E4DE0000000000000000000000000000000005F +S315E07E4DF0000000000000000000000000000000004F +S315E07E4E00000000000000000000000000000000003E +S315E07E4E10000000000000000000000000000000002E +S315E07E4E20000000000000000000000000000000001E +S315E07E4E30000000000000000000000000000000000E +S315E07E4E4000000000000000000000000000000000FE +S315E07E4E5000000000000000000000000000000000EE +S315E07E4E6000000000000000000000000000000000DE +S315E07E4E70202000002000000000000000200020002E +S315E07E4E80000000400000002000200000002000001E +S315E07E4E9000004000200000200000200000D0EC0052 +S315E07E4EA0008080000010102000000000200000003E +S315E07E4EB0000000000000100000000000000000007E +S315E07E4EC0000000000000002000000000000000005E +S315E07E4ED0000000000000000000000020000000004E +S315E07E4EE0000000000004000000000000000000005A +S315E07E4EF0000000400000000000000000000000000E +S315E07E4F00000000200000000000000000000000001D +S315E07E4F10000000000000000000000000000000002D +S315E07E4F2000000000000000000000004000000000DD +S315E07E4F30000000000000000000000000000000000D +S315E07E4F4000000000000000000000000000000000FD +S315E07E4F5000000000000000000000000000000000ED +S315E07E4F6000000000000000000000000000000000DD +S315E07E4F7000000000000000000000000000000000CD +S315E07E4F8000000000000000000000000000000000BD +S315E07E4F9000000000000000000000000000000000AD +S315E07E4FA0000000000000000000000000000000009D +S315E07E4FB0000000000000000000000000000000008D +S315E07E4FC0000000000000000000000000000000007D +S315E07E4FD0000000000000000000400000000000002D +S315E07E4FE0000000000000000000000000000000005D +S315E07E4FF000202000000000000020000000200000CD +S315E07E500000000000000000004020000000000000DC +S315E07E5010000000410100CB330000001000000000DC +S315E07E502030000000002010000000000010000000AC +S315E07E503000000000000000000000000000000020EC +S315E07E504000000000000000000000000000000000FC +S315E07E505000000000001000002000000000000400B8 +S315E07E506010000000000000002000000000000000AC +S315E07E507000000000000000000000000000000000CC +S315E07E508000000000000000000000000000000000BC +S315E07E509000000000000000000000000000000000AC +S315E07E50A0000000004000000000000000000000005C +S315E07E50B0000000000000000000000000000000008C +S315E07E50C0000000000000000000000000000000007C +S315E07E50D0000000000000000000000000000000006C +S315E07E50E0000000000000000000000000000000005C +S315E07E50F0000000000000000000000000000000004C +S315E07E5100000000000000000000000000000000003B +S315E07E5110000000000000000000000000000000002B +S315E07E5120000000000000000000000000000000001B +S315E07E5130000000000000000000000000000000000B +S315E07E514000000000000000000000000000000000FB +S315E07E515000004000000000000000000000000000AB +S315E07E5160002000200000000000002000000000007B +S315E07E5170002000000020400000002000000000200B +S315E07E5180000040006000000000002000400000615A +S315E07E51904400000010000000000020000000000037 +S315E07E51A0000000200000000000000010000000105B +S315E07E51B0000000000000000000000000000000008B +S315E07E51C0000000000000000000000000002000005B +S315E07E51D0000000000000100000000000200000003B +S315E07E51E0000000000000000000000000000020003B +S315E07E51F0000000000000000000000000000000004B +S315E07E5200000000000000000000000000000000003A +S315E07E5210200000000000000000000000000000000A +S315E07E5220000000000000000000000000000000001A +S315E07E523000000000000008000000004000000000C2 +S315E07E524000000000000000000000000000000000FA +S315E07E525000000000000000000000000000000000EA +S315E07E5260000000000000000000000000000000409A +S315E07E5270400000000000000000000000000000008A +S315E07E528000000000000000000000000000000000BA +S315E07E5290000000001000000000000000000000009A +S315E07E52A0000000000000000000000000000000009A +S315E07E52B0000000000000000000400000000000004A +S315E07E52C0000000000000000000000000000000007A +S315E07E52D0000000000000000000000000200000202A +S315E07E52E020000000000000400000000000000000FA +S315E07E52F000200000000000400000000000000000EA +S315E07E530000000000000000005F5900000000000081 +S315E07E53100000000000000000000000000000000029 +S315E07E53200000000000000000000000000000000019 +S315E07E53300000000000000000000000000000000009 +S315E07E534000000000000000000000000000000000F9 +S315E07E535000000000000000000000000000000000E9 +S315E07E536000000000000000000000000000000000D9 +S315E07E537000000000000000000000000000000000C9 +S315E07E538000000000000000000000000000000000B9 +S315E07E539000000000000000000000000000000000A9 +S315E07E53A00000000000000000000000000000000099 +S315E07E53B00000000000000000000000000000000089 +S315E07E53C00000000000000000000000000000000079 +S315E07E53D00000000000000000000000000000000069 +S315E07E53E00000000000000000000000000000000059 +S315E07E53F00000000000000000000000000000000049 +S315E07E54000000000000000000000000000000000038 +S315E07E54100000000000000000000000000000000028 +S315E07E54200000000000000000000000000000000018 +S315E07E54300000000000000000000000000000000008 +S315E07E544000000000000000000000000000000000F8 +S315E07E54500000000000000000200000000000004088 +S315E07E546000000000000000000000000000000000D8 +S315E07E54704000000000000000000000000000000088 +S315E07E548000C03D000000100000000000002000008B +S315E07E549000000000000000000000000000000000A8 +S315E07E54A00000000000000000000000002000000078 +S315E07E54B00000000000000000000000000000000088 +S315E07E54C00000000000000000000000000000000078 +S315E07E54D00000000000000000000000000000000068 +S315E07E54E00000000000000000000000000000000058 +S315E07E54F00000000000000000000000000000000048 +S315E07E55000000000000000000000000000000000037 +S315E07E55100000000000000000000000000000000027 +S315E07E55200000000000000000000000000000000017 +S315E07E55300000000000000000000000000000000007 +S315E07E554000000000000000000000000000000000F7 +S315E07E555000000000000000000000000000000000E7 +S315E07E556000000000000000000000000000000000D7 +S315E07E557000000000000000000000000000000000C7 +S315E07E558000000000000000000000000000000000B7 +S315E07E559000000000000000000000000000000000A7 +S315E07E55A00000000000000000000000000000000097 +S315E07E55B00000000000000000000000000000000087 +S315E07E55C00000000000000000000000000000200057 +S315E07E55D000404000000000000000000000000000E7 +S315E07E55E00000200020000000000000000000000017 +S315E07E55F000000000000000000000FBDC0000000070 +S315E07E56000000000000000000000000000000200016 +S315E07E56100000000000001000000010000000000006 +S315E07E56200000000000000000001000000000000006 +S315E07E563000000000000000002000000000000000E6 +S315E07E564000001000000000002000000000000000C6 +S315E07E565000000000000000000000200000000000C6 +S315E07E566000000020000000000000000000000000B6 +S315E07E567000000000000000000000000020000000A6 +S315E07E568000000000000000000000000000000000B6 +S315E07E56900000000000000000000000200000000086 +S315E07E56A0000800000000400000000000000000004E +S315E07E56B00000000000000000000000000000000086 +S315E07E56C00000000000000000000000000000000076 +S315E07E56D000000000000000000040000040000000E6 +S315E07E56E00000000000000000000000000000000056 +S315E07E56F00000000000000000000000000000001036 +S315E07E57000000000000000000000000000000000035 +S315E07E57100000000000000000000000000000000025 +S315E07E572000000040000000000000000000000000D5 +S315E07E57300000000000000000000000000000000005 +S315E07E574000000000000000000000000020000000D5 +S315E07E575000000000000000000000000000000000E5 +S315E07E57600000000000000000000000004000000095 +S315E07E577000000027B90000000000000000000000E5 +S315E07E57802000000000200000000000000000000075 +S315E07E579000000000000000000000000000000000A5 +S315E07E57A00000000000000000000000000000000095 +S315E07E57B00000000000000000000000000000000085 +S315E07E57C00000000000000000000000000000000075 +S315E07E57D00000000000000000000000000000000065 +S315E07E57E00000000000000000000000000000000055 +S315E07E57F00000000000000000000000000000000045 +S315E07E58000000000000000000000000000000000034 +S315E07E58100000000000000000000000000000000024 +S315E07E58200000000000000000000000000000000014 +S315E07E58300000000000000000000000000000000004 +S315E07E584000000000000000000000000000000000F4 +S315E07E585000000000000000000000000000000000E4 +S315E07E586000000000000000000000000000000000D4 +S315E07E587000000000000000000000000000000000C4 +S315E07E588000000000000000000000000000000000B4 +S315E07E589000000000000000000000000000000000A4 +S315E07E58A00000000000000000000000000000000094 +S315E07E58B00000000000000000000000000000000084 +S315E07E58C00000000000000000000000000000200054 +S315E07E58D020000000000000400000006000000000A4 +S315E07E58E00000000000000020002000007665000039 +S315E07E58F000000000102000000000000000000020F4 +S315E07E59000000000000000020000000000000000013 +S315E07E591000000020000000002000000020000000C3 +S315E07E59200000000000000000000000000000000013 +S315E07E59300000000000000000000000000000000003 +S315E07E594000000000000000000000000000000000F3 +S315E07E595000000000000000000000000000000000E3 +S315E07E596000000000000000000000000000000000D3 +S315E07E597000000000000000000000000000000000C3 +S315E07E598000000000000000000000000000000000B3 +S315E07E599000000000000000000000000000000000A3 +S315E07E59A00000000000000000000000000000000093 +S315E07E59B00000000000000000000000000000000083 +S315E07E59C00000000000000000000000000000000073 +S315E07E59D00000000000000000000000000000000063 +S315E07E59E00000000000000000000000000000000053 +S315E07E59F00000000000000000000000000000000043 +S315E07E5A000000000000000000000000000000000032 +S315E07E5A100000000000000000000000000000000022 +S315E07E5A200000000000000000000000000000000012 +S315E07E5A3000000000000000000000000020000000E2 +S315E07E5A4020000000000000000000000000000001D1 +S315E07E5A5000000000000000000000000001002000C1 +S315E07E5A600000000000E759000000802000000000F2 +S315E07E5A700010000000000000000000002000000092 +S315E07E5A800000200000200000000000000000000072 +S315E07E5A9000000000000000000000000000000000A2 +S315E07E5AA00000000000000000000000000000000092 +S315E07E5AB00000000000000000000000000000000082 +S315E07E5AC00000000000000000000000000000000072 +S315E07E5AD00000000000000000000000000000000062 +S315E07E5AE00000000000000000000000000000000052 +S315E07E5AF00000000000000000000000000000000042 +S315E07E5B000000000000000000000000000000000031 +S315E07E5B100000000000000000000000000000000021 +S315E07E5B200000000000000000000000000000000011 +S315E07E5B300000000000000000000000000000000001 +S315E07E5B4000000000000000000000000000000000F1 +S315E07E5B5000000000000000000000000000000000E1 +S315E07E5B6000000000000000000000000000000000D1 +S315E07E5B7000000000000000000000000000000000C1 +S315E07E5B8000000000000000000000000000000000B1 +S315E07E5B9000000000000000000000000000000000A1 +S315E07E5BA00000000000000000000000000000000091 +S315E07E5BB02000000000000000000000000000000061 +S315E07E5BC00000200000000000000000000000000051 +S315E07E5BD04000000040000000400000010000E6F4C6 +S315E07E5BE00000000000002000000000000000000031 +S315E07E5BF00000000000100000000000000000100021 +S315E07E5C000000200000000000000000000000000010 +S315E07E5C100000000000000000000000000000000020 +S315E07E5C200000000000000000000000000000000010 +S315E07E5C300000000000000000000000000000000000 +S315E07E5C4000000000000000000000000000000000F0 +S315E07E5C5000000000000000000000000000000000E0 +S315E07E5C6000000000000000000000000000000000D0 +S315E07E5C7000000000000000000000000000000000C0 +S315E07E5C8000000000000000000000000000000000B0 +S315E07E5C9000000000000000000000000000000000A0 +S315E07E5CA00000000000000000000000000000000090 +S315E07E5CB00000000000000000000000000000000080 +S315E07E5CC00000000000000000000000000000000070 +S315E07E5CD00000000000000000000000000000000060 +S315E07E5CE00000000000000000000000000000000050 +S315E07E5CF00000000000000000000000000000000040 +S315E07E5D00000000000000000000000000000000002F +S315E07E5D10000000000000000000000000000000001F +S315E07E5D20000000000000000000000000000000000F +S315E07E5D3000000000000000000000000000000000FF +S315E07E5D4000000000000000000000000000000000EF +S315E07E5D50000000000000406E72000080000000102F +S315E07E5D6000000000000000100000000000000000BF +S315E07E5D7000000000000000000000000000000000BF +S315E07E5D80000020000000000000000000000000008F +S315E07E5D90000000000000000000000000000000009F +S315E07E5DA0000000000000000000000000000000008F +S315E07E5DB0000000000000000000000000000000007F +S315E07E5DC0000000000000000000000000000000006F +S315E07E5DD0000000000000000000000000000000005F +S315E07E5DE0000000000000000000000000000000004F +S315E07E5DF0000000000000000000000000000000003F +S315E07E5E00000000000000000000000000000000002E +S315E07E5E10000000000000000000000000000000001E +S315E07E5E20000000000000000000000000000000000E +S315E07E5E3000000000000000000000000000000000FE +S315E07E5E4000000000000000000000000000000000EE +S315E07E5E5000000000000000000000000000000000DE +S315E07E5E6000000000000000000000000000000000CE +S315E07E5E7000000000000000000000000000000000BE +S315E07E5E8000000000000000000000000000000000AE +S315E07E5E90000000000000000000000000000000009E +S315E07E5EA0000000000000000000000000002000006E +S315E07E5EB0000000000000000000000000000000007E +S315E07E5EC0000000000000000000200000000001004D +S315E07E5ED0E6880000000000000000000000000000F0 +S315E07E5EE020000020100000000000000000000000FE +S315E07E5EF0000000000000000000000000000000003E +S315E07E5F00000000000000000000000000000000002D +S315E07E5F10000000000000000000000000000000001D +S315E07E5F20000000000000000000000000000000000D +S315E07E5F3000000000000000000000000000000000FD +S315E07E5F4000000000000000000000000000000000ED +S315E07E5F5000000000000000000000000000000000DD +S315E07E5F6000000000000000000000000000000000CD +S315E07E5F7000000000000000000000000000000000BD +S315E07E5F8000000000000000000000000000000000AD +S315E07E5F90000000000000000000000000000000009D +S315E07E5FA0000000000000000000000000000000008D +S315E07E5FB0000000000000000000000000000000007D +S315E07E5FC0000000000000000000000000000000006D +S315E07E5FD0000000000000000000000000000000005D +S315E07E5FE0000000000000000000000000000000004D +S315E07E5FF0000000000000000000000000000000003D +S315E07E6000000000000000000000000000000000002C +S315E07E6010000000000000000000000000000000001C +S315E07E6020002000002000002000002000000000206C +S315E07E603000000000200000000000000000000000DC +S315E07E6040000000200000000000424E00100000002C +S315E07E605000001000100010000000000000000000AC +S315E07E606000000000000000000000000020000000AC +S315E07E607000000000000000000000000000000000BC +S315E07E608000000000000000000000000000000000AC +S315E07E6090000000000000000000000000000000009C +S315E07E60A0000000000000000000000000000000008C +S315E07E60B0000000000000000000000000000000007C +S315E07E60C0000000000000000000000000000000006C +S315E07E60D0000000000000000000000000000000005C +S315E07E60E0000000000000000000000000000000004C +S315E07E60F0000000000000000000000000000000003C +S315E07E6100000000000000000000000000000000002B +S315E07E6110000000000000000000000000000000001B +S315E07E6120000000000000000000000000000000000B +S315E07E613000000000000000000000000000000000FB +S315E07E614000000000000000000000000000000000EB +S315E07E615000000000000000000000000000000000DB +S315E07E616000000000000000000000000000000000CB +S315E07E617000000000000000000000000000000000BB +S315E07E618000000000000000000000000000000000AB +S315E07E6190000000000000000000000000000000009B +S315E07E61A0000000000000000000000000004000004B +S315E07E61B0000000004000000000000000000020001B +S315E07E61C00020120800000000000000100000001011 +S315E07E61D0000000000000000000000000000000005B +S315E07E61E0000000000000000000000000000000004B +S315E07E61F0000000000000000000000000000000003B +S315E07E6200000000000000000000000000000000002A +S315E07E6210000000000000000000000000000000001A +S315E07E6220000000000000000000000000000000000A +S315E07E623000000000000000000000000000000000FA +S315E07E624000000000000000000000000000000000EA +S315E07E625000000000000000000000000000000000DA +S315E07E626000000000000000000000000000000000CA +S315E07E627000000000000000000000000000000000BA +S315E07E628000000000000000000000000000000000AA +S315E07E6290000000000000000000000000000000009A +S315E07E62A0000000000000000000000000000000008A +S315E07E62B0000000000000000000000000000000007A +S315E07E62C0000000000000000000000000000000006A +S315E07E62D0000000000000000000000000000000005A +S315E07E62E0000000000000000000000000000000004A +S315E07E62F0000000000000000000000000000000003A +S315E07E63000000000000000000000000000000000029 +S315E07E631000000020000000200000000020000000B9 +S315E07E63200000000000000000000000000000000009 +S315E07E633000000000000000000000005A8F00008090 +S315E07E63408020000000000000000000000000000049 +S315E07E63502000000000000020000000000000000099 +S315E07E63602000000000000000200000000000000089 +S315E07E637000000000000000000000000000000000B9 +S315E07E638000000000000000000000000000000000A9 +S315E07E63900000000000000000000000000000000099 +S315E07E63A00000000000000000000000000000000089 +S315E07E63B00000000000000000000000000000000079 +S315E07E63C00000000000000000000000000000000069 +S315E07E63D00000000000000000000000000000000059 +S315E07E63E00000000000000000000000000000000049 +S315E07E63F00000000000000000000000000000000039 +S315E07E64000000000000000000000000000000000028 +S315E07E64100000000000000000000000000000000018 +S315E07E64200000000000000000000000000000000008 +S315E07E643000000000000000000000000000000000F8 +S315E07E644000000000000000000000000000000000E8 +S315E07E645000000000000000000000000000000000D8 +S315E07E646000000000000000000000000000000000C8 +S315E07E647000000000000000000000000000000000B8 +S315E07E64800000000000000000000020000000000088 +S315E07E64900000000000000000000000000000000098 +S315E07E64A040000000000000004000000000000040C8 +S315E07E64B040010120A2FA000000002010000030100A +S315E07E64C00000200000000000202000000000000008 +S315E07E64D00000000020000000002000000000000018 +S315E07E64E00020000000000000000000000000000028 +S315E07E64F00000000000000000000000000000000038 +S315E07E65000000000000000000000000000000000027 +S315E07E65100000000000000000000000000000000017 +S315E07E65200000000000000000000000000000000007 +S315E07E653000000000000000000000000000000000F7 +S315E07E654000000000000000000000000000000000E7 +S315E07E655000000000000000000000000000000000D7 +S315E07E656000000000000000000000000000000000C7 +S315E07E657000000000000000000000000000000000B7 +S315E07E658000000000000000000000000000000000A7 +S315E07E65900000000000000000000000000000000097 +S315E07E65A00000000000000000000000000000000087 +S315E07E65B00000000000000000000000000000000077 +S315E07E65C00000000000000000000000000000000067 +S315E07E65D00000000000000000000000000000000057 +S315E07E65E00000000000000000000000000000000047 +S315E07E65F00000000000000000000000000000002017 +S315E07E660000000000202000000020000000000000C6 +S315E07E661000200000000000000040000000000000B6 +S315E07E662040400000402000002060000000B55B0096 +S315E07E66301000002000300000100010001000000066 +S315E07E66403000000000000000002000200000000076 +S315E07E66502000000000000000200000000000000096 +S315E07E666000000000000000000000000000000000C6 +S315E07E667000000000000000000000000000000000B6 +S315E07E668000000000000000000000000000000000A6 +S315E07E66900000000000000000000000000000000096 +S315E07E66A00000000000000000000000000000000086 +S315E07E66B00000000000000000000000000000000076 +S315E07E66C00000000000000000000000000000000066 +S315E07E66D00000000000000000000000000000000056 +S315E07E66E00000000000000000000000000000000046 +S315E07E66F00000000000000000000000000000000036 +S315E07E67000000000000000000000000000000000025 +S315E07E67100000000000000000000000000000000015 +S315E07E67200000000000000000000000000000000005 +S315E07E673000000000000000000000000000000000F5 +S315E07E674000000000000000000000000000000000E5 +S315E07E675000000000000000000000000000000000D5 +S315E07E676000000000000000000000000000000000C5 +S315E07E67700000000000000000000000000020200075 +S315E07E67800020000000002000000000202000000025 +S315E07E679040000000000000000040000000000020F5 +S315E07E67A060002000000108A80000000010302000F4 +S315E07E67B000000020101000002000002030000000C5 +S315E07E67C000000020200000000000002020000000E5 +S315E07E67D00000002020000000000000000000000015 +S315E07E67E00000000000000000000000000000000045 +S315E07E67F00000000000000000000000000000000035 +S315E07E68000000000000000000000000000000000024 +S315E07E68100000000000000000000000000000000014 +S315E07E68200000000000000000000000000000000004 +S315E07E683000000000000000000000000000000000F4 +S315E07E684000000000000000000000000000000000E4 +S315E07E685000000000000000000000000000000000D4 +S315E07E686000000000000000000000000000000000C4 +S315E07E687000000000000000000000000000000000B4 +S315E07E688000000000000000000000000000000000A4 +S315E07E68900000000000000000000000000000000094 +S315E07E68A00000000000000000000000000000000084 +S315E07E68B00000000000000000000000000000000074 +S315E07E68C00000000000000000000000000000000064 +S315E07E68D00000000000000000000000000000000054 +S315E07E68E00000000000000000000000000000000044 +S315E07E68F00000000020200000000000002020200094 +S315E07E69000000000020200000000000406000000043 +S315E07E6910000000404000000000002060400000A92A +S315E07E6920CE0000001010302000000400100010148D +S315E07E69300000000030300000000000002020000053 +S315E07E694001000800602100080040000020200000D1 +S315E07E6950000000000000000002001000800200102F +S315E07E69600080000000000000000000000000000043 +S315E07E6970040020000004002000000000000000006B +S315E07E69800000000000000100080040010008004011 +S315E07E69900000000000000000000000000000020091 +S315E07E69A01000800200100080000000000000000061 +S315E07E69B0000000000000040020000004002000002B +S315E07E69C0000000000000000000000000010008005A +S315E07E69D040010008004000000000000000000000CA +S315E07E69E0000000000200100080020010008000001F +S315E07E69F0000000000000000000000000040020000F +S315E07E6A0000040020000000000000000000000000FE +S315E07E6A100000010008004001000800400000000080 +S315E07E6A20000000000000000000000200100080026E +S315E07E6A300010008000000000000000000000000062 +S315E07E6A40000004002000000400200000000000009A +S315E07E6A500000000000000000010008004001000880 +S315E07E6A600040000000000000000000002020200022 +S315E07E6A7002001000A00220300080000000202020CE +S315E07E6A80000000006060000004002000404400201A +S315E07E6A900000002040400000000F000000101010B3 +S315E07E6AA00000000000000010100000000030300002 +S315E07E6AB00000000000000000000000000020200032 +S315E07E6AC00000000000202000000000000000000022 +S315E07E6AD00000000000000000000000000000000052 +S315E07E6AE00000000000000000000000000000000042 +S315E07E6AF00000000000000000000000000000000032 +S315E07E6B000000000000000000000000000000000021 +S315E07E6B100000000000000000000000000000000011 +S315E07E6B200000000000000000000000000000000001 +S315E07E6B3000000000000000000000000000000000F1 +S315E07E6B4000000000000000000000000000000000E1 +S315E07E6B5000000000000000000000000000000000D1 +S315E07E6B6000000000000000000000000000000000C1 +S315E07E6B7000000000000000000000000000000000B1 +S315E07E6B8000000000000000000000000000000000A1 +S315E07E6B900000000000000000000000000000000091 +S315E07E6BA00000000000000000000000000000000081 +S315E07E6BB00000000000000000000000000000000071 +S315E07E6BC00000000000000000000000000000000061 +S315E07E6BD00000000000000000000000000000000051 +S315E07E6BE000000000002020200000000000200000C1 +S315E07E6BF020000000000020202000000000606000F1 +S315E07E6C0000000000004040000000000020404100FF +S315E07E6C100041C70000001010203000000000000098 +S315E07E6C201010000000003010000000000000202060 +S315E07E6C3000000000000020000000000000002000B0 +S315E07E6C4000000000000000000000000000000000E0 +S315E07E6C5000000000000000000000000000000000D0 +S315E07E6C6000000000000000000000000000000000C0 +S315E07E6C7000000000000000000000000000000000B0 +S315E07E6C8000000000000000000000000000000000A0 +S315E07E6C900000000000000000000000000000000090 +S315E07E6CA00000000000000000000000000000000080 +S315E07E6CB00000000000000000000000000000000070 +S315E07E6CC00000000000000000000000000000000060 +S315E07E6CD00000000000000000000000000000000050 +S315E07E6CE00000000000000000000000000000000040 +S315E07E6CF00000000000000000000000000000000030 +S315E07E6D00000000000000000000000000000000001F +S315E07E6D10000000000000000000000000000000000F +S315E07E6D2000000000000000000000000000000000FF +S315E07E6D3000000000000000000000000000000000EF +S315E07E6D4000000000000000000000000000000000DF +S315E07E6D5000000000000000000000000000000000CF +S315E07E6D60002000000000200000000000000000205F +S315E07E6D7020200000000060200000000000004000AF +S315E07E6D80000000002000402000013BB8000000101B +S315E07E6D90100010000000000010101000000000102F +S315E07E6DA0300000000000000000000000000000004F +S315E07E6DB0200000000000000020000000000000002F +S315E07E6DC0000000000000000000000000000000005F +S315E07E6DD0000000000000000000000000000000004F +S315E07E6DE0000000000000000000000000000000003F +S315E07E6DF0000000000000000000000000000000002F +S315E07E6E00000000000000000000000000000000001E +S315E07E6E10000000000000000000000000000000000E +S315E07E6E2000000000000000000000000000000000FE +S315E07E6E3000000000000000000000000000000000EE +S315E07E6E4000000000000000000000000000000000DE +S315E07E6E5000000000000000000000000000000000CE +S315E07E6E6000000000000000000000000000000000BE +S315E07E6E7000000000000000000000000000000000AE +S315E07E6E80000000000000000000000000000000009E +S315E07E6E90000000000000000000000000000000008E +S315E07E6EA0000000000000000000000000000000007E +S315E07E6EB0000000000000000000000000000000006E +S315E07E6EC0000000000000000000000000000000005E +S315E07E6ED0000000000000000000002000000000200E +S315E07E6EE0002000000000000020202000000000209E +S315E07E6EF0600000000000000040000000002000006E +S315E07E6F0040000021130000008000203000000000D9 +S315E07E6F1000100000000000000020000000000000DD +S315E07E6F20202000000000000000200000000000009D +S315E07E6F3000200000000000000000000000000000CD +S315E07E6F4000000000000000000000000000000000DD +S315E07E6F5000000000000000000000000000000000CD +S315E07E6F6000000000000000000000000000000000BD +S315E07E6F7000000000000000000000000000000000AD +S315E07E6F80000000000000000000000000000000009D +S315E07E6F90000000000000000000000000000000008D +S315E07E6FA0000000000000000000000000000000007D +S315E07E6FB0000000000000000000000000000000006D +S315E07E6FC0000000000000000000000000000000005D +S315E07E6FD0000000000000000000000000000000004D +S315E07E6FE0000000000000000000000000000000003D +S315E07E6FF0000000000000000000000000000000002D +S315E07E7000000000000000000000000000000000001C +S315E07E7010000000000000000000000000000000000C +S315E07E702000000000000000000000000000000000FC +S315E07E703000000000000000000000000000000000EC +S315E07E704000000000000000000000000000000000DC +S315E07E7050202000200000000000202020000000000C +S315E07E7060002000000000000000400000000000005C +S315E07E70700040000000002000004000002A090000D9 +S315E07E7080000000203000000000000000000000004C +S315E07E7090002000000000000000202000000000002C +S315E07E70A0002000000000000000200000000000003C +S315E07E70B0000000000000000000000000000000006C +S315E07E70C0000000000000000000000000000000005C +S315E07E70D0000000000000000000000000000000004C +S315E07E70E0000000000000000000000000000000003C +S315E07E70F0000000000000000000000000000000002C +S315E07E7100000000000000000000000000000000001B +S315E07E7110000000000000000000000000000000000B +S315E07E712000000000000000000000000000000000FB +S315E07E713000000000000000000000000000000000EB +S315E07E714000000000000000000000000000000000DB +S315E07E715000000000000000000000000000000000CB +S315E07E716000000000000000000000000000000000BB +S315E07E717000000000000000000000000000000000AB +S315E07E7180000000000000000000000000000000009B +S315E07E7190000000000000000000000000000000008B +S315E07E71A0000000000000000000000000000000007B +S315E07E71B0000000000000000000000000000000006B +S315E07E71C000000000000000000020200020000000FB +S315E07E71D000002020200000000000200000000000CB +S315E07E71E0004000000000000000400000000000209B +S315E07E71F000400000003685000080000010000000A0 +S315E07E7200000000000000000000000000000000001A +S315E07E7210000000000000000000000000000000000A +S315E07E722000000000000000000000000000000000FA +S315E07E723000000000000000000000000000000000EA +S315E07E724000000000000000000000000000000000DA +S315E07E725000000000000000000000000000000000CA +S315E07E726000000000000000000000000000000000BA +S315E07E727000000000000000000000000000000000AA +S315E07E7280000000000000000000000000000000009A +S315E07E7290000000000000000000000000000000008A +S315E07E72A0000000000000000000000000000000007A +S315E07E72B0000000000000000000000000000000006A +S315E07E72C0000000000000000000000000000000005A +S315E07E72D0000000000000000000000000000000004A +S315E07E72E0000000000000000000000000000000003A +S315E07E72F0000000000000000000000000000000002A +S315E07E73000000000000000000000000000000000019 +S315E07E73100000000000000000000000000000000009 +S315E07E732000000000000000000000000000000000F9 +S315E07E733000000000000000000000000000000000E9 +S315E07E73400000000020000000000000200000000099 +S315E07E735000000020000000000000000000000000A9 +S315E07E7360000000000000000000200000000057D36F +S315E07E73700000000000100000000000100400200065 +S315E07E73800000000000000000000000000000000099 +S315E07E73900000010008004000000000000000000040 +S315E07E73A000000000000000000000020000008000F7 +S315E07E73B00000000000000000000000000000000069 +S315E07E73C00000040020000000000000000000000035 +S315E07E73D00000000000000000010008004000000000 +S315E07E73E00000000000000000000000000000000039 +S315E07E73F00200100080000000000000000000000097 +S315E07E740000000000000000000400200000000000F4 +S315E07E74100000000000000000000000000000010007 +S315E07E742008004000000000000000000000000000B0 +S315E07E74300000000000000200100080000000000056 +S315E07E744000000000000000000000000000000400D4 +S315E07E745020000000000000000000000000000000A8 +S315E07E7460000000000100080040000000000000006F +S315E07E74700000000000000000000000000200100096 +S315E07E74808000000000000000000000000000000018 +S315E07E74900000000004002000000000000000000064 +S315E07E74A0000000000000000000000100080040002F +S315E07E74B00000000000000000000000000020000048 +S315E07E74C00000020030008000000000002000000086 +S315E07E74D00000000000000000000004000000000044 +S315E07E74E0000020200000004C42000000000020103A +S315E07E74F000000000001400202000000020000000B4 +S315E07E7500000000000020000000000001002800408E +S315E07E751000000000002000000000000000000000E7 +S315E07E75200000000200001080000000000000000065 +S315E07E753000000000000000000000000400200000C3 +S315E07E754000000000000000000000000000000000D7 +S315E07E7550000100080040000000000000000000007E +S315E07E75600000000000000000000200100080000025 +S315E07E757000000000000000000000000000000000A7 +S315E07E75800004002000000000000000000000000073 +S315E07E7590000000000000000100080040000000003E +S315E07E75A00000000000000000000000000000000275 +S315E07E75B000100080000000000000000000000000D7 +S315E07E75C00000000000000004002000000000000033 +S315E07E75D0000000000000000000000000000100083E +S315E07E75E000400000000000000000000000000000F7 +S315E07E75F00000000000020010008000000000000095 +S315E07E760000000000000000000000000000040020F2 +S315E07E76100000000000000000000000000000000006 +S315E07E762000000001000800400000000000000000AD +S315E07E76300000000000000000000000020030008034 +S315E07E76400000000000000000000000000040000096 +S315E07E76500000000400402000000000006000000002 +S315E07E7660A80000000000000000000000000004000A +S315E07E76702000000000000000000000000000000086 +S315E07E7680000000000100080040000000000000004D +S315E07E76900000000000000000000000000200100074 +S315E07E76A080000000000000000000000000000000F6 +S315E07E76B00000000004002000000000000000000042 +S315E07E76C0000000000000000000000100080040000D +S315E07E76D00000000000000000000000000000000046 +S315E07E76E000000200100080000000000000000000A4 +S315E07E76F00000000000000000000004002000000002 +S315E07E77000000000000000000000000000000000015 +S315E07E771001000800400000000000000000000000BC +S315E07E77200000000000000000020010008000000063 +S315E07E773000000000000000000000000000000000E5 +S315E07E774004002000000000000000000000000000B1 +S315E07E7750000000000000010008004000000000007C +S315E07E776000000000000000000000000000000200B3 +S315E07E77701000800000000000000000000000000015 +S315E07E77800000000000000400200000000000000071 +S315E07E7790000000000000000000000000010008007C +S315E07E77A04000000000000000000000000000000035 +S315E07E77B000000000020010008000000000002000B3 +S315E07E77C00000000000000000000000000400200031 +S315E07E77D0000000000000000000D7C8001083831C74 +S315E07E77E01C606010100303181C40601010070738F9 +S315E07E77F0384040100007073838C0C0100006073012 +S315E07E78003880C001010E0E7070808001010E0E7010 +S315E07E781070808001010C0E6070008003031C1CE00A +S315E07E7820E0000003031C1CE0E000000303181CC01C +S315E07E7830E0000007073838C0C0000007073838C0C8 +S315E07E7840C000000607303880C001010E0E707080E1 +S315E07E78508001010E0E7070808001010C0E6070005A +S315E07E78608003031C1CE0E0000003031C1CE0E00038 +S315E07E7870000303181CC0E0000007073838C0C000CC +S315E07E78800007073838C0C000000607303880C001E0 +S315E07E7890010E0E7070808001010E0E707080800188 +S315E07E78A0010C0E6070008003031C1CE0E000000308 +S315E07E78B0031C1CE0E000000303181CC0E000000788 +S315E07E78C0073838C0C0000007073838C0C000000659 +S315E07E78D007303880C001010E0E7070808001010E87 +S315E07E78E00E7070808001010C0E6070008003031CB8 +S315E07E78F01CE0E0000003031C1CE0E000000303182C +S315E07E79001CC0E0000007073838C0C0000007073813 +S315E07E791038C0C000000607303880C001010E0E7008 +S315E07E792070808001210E0E7070808021210C0E60A9 +S315E07E793070008023231C1CE0E0000022221C1CE059 +S315E07E7940E000002202181CC0E0002006063838C19E +S315E07E7950C100EA0800102000000020201010200060 +S315E07E79601000000010100000203000003000000003 +S315E07E797020300000300000002020000020000000C3 +S315E07E79802020000020000000000000000000000033 +S315E07E79900000000000000000000000000000000083 +S315E07E79A00000000000000000000000000000000073 +S315E07E79B00000000000000000000000000000000063 +S315E07E79C00000000000000000000000000000000053 +S315E07E79D00000000000000000000000000000000043 +S315E07E79E00000000000000000000000000000000033 +S315E07E79F00000000000000000000000000000000023 +S315E07E7A000000000000000000000000000000000012 +S315E07E7A100000000000000000000000000000000002 +S315E07E7A2000000000000000000000000000000000F2 +S315E07E7A3000000000000000000000000000000000E2 +S315E07E7A4000000000000000000000000000000000D2 +S315E07E7A5000000000000000000000000000000000C2 +S315E07E7A6000000000000000000000000000000000B2 +S315E07E7A7000000000000000000000000000000000A2 +S315E07E7A800000000000000000000000000000000092 +S315E07E7A900000000000000000000000000020000062 +S315E07E7AA000000000202000002000000020200000D2 +S315E07E7AB02000000020000000406000006000000022 +S315E07E7AC0404000204000000040400048E6000000C4 +S315E07E7AD00000000000000000000000000000000042 +S315E07E7AE0000008000000000000000000000000002A +S315E07E7AF00000000000000000000000000000000022 +S315E07E7B00000000000000000400000000000000000D +S315E07E7B100000000000000000000000000000000001 +S315E07E7B2000000000000000000000000000000000F1 +S315E07E7B3010000000000000000000000000000000D1 +S315E07E7B4000000000000000000000000000000000D1 +S315E07E7B500000000000000000000000000000008041 +S315E07E7B6000000000000000000000000000000000B1 +S315E07E7B700000000000280000000000000000000079 +S315E07E7B800000000000000000000000000000000091 +S315E07E7B900000000000002000000000000000000061 +S315E07E7BA00000000000000000000000000000000071 +S315E07E7BB00000000000000000000000000000000061 +S315E07E7BC00000000000000000000000000000000051 +S315E07E7BD00000000000000000000000000000000041 +S315E07E7BE00000000000000000000000000000000031 +S315E07E7BF00000000000000000000000000000000021 +S315E07E7C000000000000000000000000000000000010 +S315E07E7C100000400000000000000000000040000080 +S315E07E7C2000000004000000000000000000000000EC +S315E07E7C3000000000000000000000000000000000E0 +S315E07E7C40000000009E5800001000000000100000BA +S315E07E7C500010001000000000200000000000000080 +S315E07E7C6000000000000000000000000010000000A0 +S315E07E7C7000000000000000000000000000000000A0 +S315E07E7C800000000000000000000000000000000090 +S315E07E7C900000000000000000000000000000000080 +S315E07E7CA00000000000000000000000000000000070 +S315E07E7CB00000000000000000000000000000000060 +S315E07E7CC00000000000000000000000000000000050 +S315E07E7CD00000000000000000000000000000000040 +S315E07E7CE00000000000000000000000000000000030 +S315E07E7CF00000000000000000000000000000000020 +S315E07E7D00000000000000000000000000000000000F +S315E07E7D1000000000000000000000000000000000FF +S315E07E7D2000000000000000000000000000000000EF +S315E07E7D3000000000000000000000000000000000DF +S315E07E7D4000000000000000000000000000000000CF +S315E07E7D5000000000000000000000000000000000BF +S315E07E7D6000000000000000000000000000000000AF +S315E07E7D70000000000000000000000000000000009F +S315E07E7D80000000000000000000000000000000008F +S315E07E7D9020200020000000000000200000000000FF +S315E07E7DA000000000202000000020002000000000EF +S315E07E7DB0000000000000000020000000007BD900EB +S315E07E7DC0000000000000000000001000000000003F +S315E07E7DD0002000000000000000000000000000001F +S315E07E7DE0000000000000000000000000000000002F +S315E07E7DF0000000000000000000000000000000001F +S315E07E7E00000000000000000000000000000000000E +S315E07E7E1000000000000000000000000000000000FE +S315E07E7E2000000000000000000000000000000000EE +S315E07E7E3000000000000000000000000000000000DE +S315E07E7E40000000000080000000000000000000004E +S315E07E7E50000000000000000000000020000000009E +S315E07E7E6000000000000000000000000000000000AE +S315E07E7E70000000000000000000000000000000009E +S315E07E7E80000000000000000000000000000000008E +S315E07E7E90000000000000000000000000000000007E +S315E07E7EA0000000000000000000000000000000006E +S315E07E7EB0000000000000000000000000000000005E +S315E07E7EC0000000000000000000000000000000004E +S315E07E7ED0000000000000000000000000000000003E +S315E07E7EE0000000000000000000000000000000002E +S315E07E7EF0000000000000000000004000000000409E +S315E07E7F0000000000000000000000000000200020CD +S315E07E7F1000000000000000000000000000000000FD +S315E07E7F2000000000200000000000000000000000CD +S315E07E7F302000200000000EF9000010000000001076 +S315E07E7F4000000000001000000000000000000000BD +S315E07E7F5000000000000000000000000000001800A5 +S315E07E7F60000000000000200000000000000000008D +S315E07E7F70000000000000001000000000000000008D +S315E07E7F800000000000000004000000000000000089 +S315E07E7F90000000000000000000000000000000007D +S315E07E7FA0000000000000000000000000000000006D +S315E07E7FB0000000000000000000000000100000004D +S315E07E7FC0000000000000000000000000000000004D +S315E07E7FD00008000000000000000000000000000035 +S315E07E7FE00000000000080000000000000000000025 +S315E07E7FF0000000000000000000000000000000001D +S315E07E8000000000000000000000000000000000000C +S315E07E801000000000000000000000200000000000DC +S315E07E802000000000000000000000000000000000EC +S315E07E803000000000000000000000000000000000DC +S315E07E804000000000000000000000000000000000CC +S315E07E805000000000000000000000000000000000BC +S315E07E806000000000000000000000000000000000AC +S315E07E8070000000000000000000000000000000009C +S315E07E8080002000200000000000000020002000000C +S315E07E809000000000002000002000000060000004D8 +S315E07E80A00000000000000000000000000100000467 +S315E07E80B091000000000000000000000000000000CB +S315E07E80C0000000001000000010000000000000002C +S315E07E80D0000000000000000000000000000000003C +S315E07E80E000000000000000000000100000200000FC +S315E07E80F000000000000010001000000000000000FC +S315E07E810000000000000000000000000020000000EB +S315E07E8110000000000000000000000000000080007B +S315E07E8120000000000000000000000000000000806B +S315E07E813000000000000000000000000000000000DB +S315E07E814000000000000000000000000000000000CB +S315E07E815000000000000000000000000000000000BB +S315E07E8160000000000000200000000000000000008B +S315E07E8170000000000000000000000000000000009B +S315E07E8180000000000000000000000000000000008B +S315E07E8190000000000000000000000000000000007B +S315E07E81A0000000000000000000000000000000006B +S315E07E81B0000000000000000000000000000000005B +S315E07E81C0000000000000000000000000000000004B +S315E07E81D000000040000000000000000000000000FB +S315E07E81E040000000000000000000000000000000EB +S315E07E81F000000000000000000000200000200020BB +S315E07E820000000020000020002000000000000000AA +S315E07E8210200020000000200000000000000000207A +S315E07E82200000000000202100D27300001000000054 +S315E07E823000000000000000001010000010000000AA +S315E07E824000000000000000100010000000000000AA +S315E07E825000000000000000000000000000000000BA +S315E07E8260000020000000001000000000100000006A +S315E07E8270000000000000000010000010000000007A +S315E07E8280000000000000000000000000000000008A +S315E07E8290000000000000000000000000000000007A +S315E07E82A0000000200000000000000000400000000A +S315E07E82B0000000000000000000000000000000005A +S315E07E82C0000000000000000000000000000000004A +S315E07E82D000000000800000000000000000000000BA +S315E07E82E0000000000000000000000000000000002A +S315E07E82F0000000000000000000000000000000001A +S315E07E83000000000000000000000000000000000009 +S315E07E831000000000000000000000000000000000F9 +S315E07E832000000000000000000000200000000010B9 +S315E07E833000000000000000000000000000000000D9 +S315E07E834000000000000000000000000000000000C9 +S315E07E835000000000000000000000000000000000B9 +S315E07E83600000000000002000000000000000000089 +S315E07E83700000000000000000000020000020000059 +S315E07E83800000000020200000200000000020000009 +S315E07E83900000000000000000000000200000000059 +S315E07E83A0003A7D0000108000000000000000000022 +S315E07E83B01000100000000010000000100000000019 +S315E07E83C01000100000000000000000000000000029 +S315E07E83D00000000000000000000000200000000019 +S315E07E83E00000000000000000000000100000000019 +S315E07E83F000100000001000000000000000000000F9 +S315E07E84000000000000000000000000000000000008 +S315E07E841000000000000000000000000020000000D8 +S315E07E84208000000000400000000000000000000028 +S315E07E843000000000000000000000000000000000D8 +S315E07E84400000000000000000000000008000000048 +S315E07E84500000000000000000002000000000000098 +S315E07E846000000000000000000000000000000000A8 +S315E07E84700000000000000000000000000000000098 +S315E07E84800000000000000000000000000000000088 +S315E07E84900000000000000000000000000000000078 +S315E07E84A00000000000000000000000000000000068 +S315E07E84B00000000000000000000000000000000058 +S315E07E84C00000000000000000000000000000000048 +S315E07E84D00000004000000000000000000000402098 +S315E07E84E000000000000000000000000020000020E8 +S315E07E84F00000000020000020200000200000002078 +S315E07E85002000000020002000200000000000002067 +S315E07E851000000000200000002000973800100020B8 +S315E07E852010000000000000100000000000000000C7 +S315E07E85300020000000000000204000000000000057 +S315E07E85400020000000000000000000200000000087 +S315E07E855000000000000000000000000000000000B7 +S315E07E85600000001000000000000000000000100087 +S315E07E85700000000000000000000000000000000097 +S315E07E85800000000000000000000000000000000087 +S315E07E85900000000000000020000000000000000057 +S315E07E85A00000000000000000000000000000000067 +S315E07E85B00000000000000000000000000000000057 +S315E07E85C00000000000000000000020000000000027 +S315E07E85D00000000000000000000000000000000037 +S315E07E85E00000000000000000000000000000000027 +S315E07E85F000002000000000000000000000000000F7 +S315E07E860000000000000020000000000000000000E6 +S315E07E861000000000000000000000000000000000F6 +S315E07E862000000000000000000000000000000000E6 +S315E07E863000000000000000000000000000000000D6 +S315E07E864000000000000000000000000000000000C6 +S315E07E865000000000000000000000000000000000B6 +S315E07E866000000000000000000000000000000000A6 +S315E07E86700020000020000000000000002000200016 +S315E07E86800000000000000000000040000000000046 +S315E07E86900000000C140010801000000000000000B6 +S315E07E86A00000000000000000000000000000100056 +S315E07E86B00000100000000000000000001000000036 +S315E07E86C00000000000000000000000000000000046 +S315E07E86D00000000000000000000000000000000036 +S315E07E86E00000000000000000000000000000000026 +S315E07E86F00000000000000000000000000000000016 +S315E07E87000000000000000000000000000000000005 +S315E07E871000000000000000000000000000000000F5 +S315E07E872000000000000000000000000000000000E5 +S315E07E873000000000000000000000000000000000D5 +S315E07E874000000000000000000000000000000000C5 +S315E07E875000000000000000000000000000000000B5 +S315E07E876000000000000000000000000000000000A5 +S315E07E87700000000000000000000000000000200075 +S315E07E87800000000000000000000000000000000085 +S315E07E87900000000000000000000000000000000075 +S315E07E87A00000000000000000000000000000000065 +S315E07E87B00000000000000000000000000000000055 +S315E07E87C00000000000000000000000000000000045 +S315E07E87D00000000000000000000000000000000035 +S315E07E87E00000000000000000000000000000000025 +S315E07E87F00000000000000000000000000000000015 +S315E07E88000000000000000000000000007CE70000A1 +S315E07E881000002000000000000010000000000000C4 +S315E07E882000000000000000000000000000000000E4 +S315E07E883000000000200000000000000000000000B4 +S315E07E884000000000000000000000000010000000B4 +S315E07E885000000000000010000000000000000000A4 +S315E07E88601000000000000000000000000000000094 +S315E07E88700000000000000000000000000000000094 +S315E07E88800000000000000000000000000000000084 +S315E07E88900000000000000000000000000000000074 +S315E07E88A00000000000000000000000000000000064 +S315E07E88B00000000000000000000000000000000054 +S315E07E88C00000000000000000000000000000000044 +S315E07E88D00000000000000000000000000000000034 +S315E07E88E00000000000000000000000000000000024 +S315E07E88F00000000000000000000000000000000014 +S315E07E89000000000000000000000000000000000003 +S315E07E891000000000000000000000000000000000F3 +S315E07E892000000000000000000000000000000000E3 +S315E07E893000000000000000000000000000000000D3 +S315E07E894000000000000000000000000000000000C3 +S315E07E89500000000000000000000000000020000093 +S315E07E89600000000020000000000000000000000083 +S315E07E89700000000000000000000000004000000053 +S315E07E89800000000001BA19000000000000000000AF +S315E07E89900000000000000000000000002000000053 +S315E07E89A00000200000400000000000000000000003 +S315E07E89B00000000000002000000000000000000033 +S315E07E89C00000000000000000000000000000000043 +S315E07E89D000000000000000000000000080000000B3 +S315E07E89E00000000000000000000000000000000023 +S315E07E89F00000000000000000000000000000000013 +S315E07E8A0000002000000000000000000000000000E2 +S315E07E8A1000000000000000000000000000000000F2 +S315E07E8A2000000000000000000000000000000000E2 +S315E07E8A3000000000200000000000000000000000B2 +S315E07E8A4000000000000000000000000000000000C2 +S315E07E8A500000000000000000000000002000000092 +S315E07E8A600000000000000000800000000000000022 +S315E07E8A700000000000000000000000000000000092 +S315E07E8A800000000000000000000000000000000082 +S315E07E8A900000000000000000000000000000000072 +S315E07E8AA00000000000000000000000000000000062 +S315E07E8AB00000000000000000000000000000000052 +S315E07E8AC00000000000000000000000000000000042 +S315E07E8AD00000000000000000000000000000002012 +S315E07E8AE000000000000020000020000000000000E2 +S315E07E8AF02000000000000000000000000000A72229 +S315E07E8B0000001000000000000000000010001000D1 +S315E07E8B1000000010000000000000000000000000E1 +S315E07E8B2000000000000000000000000000000000E1 +S315E07E8B3000000000000000000000000000000000D1 +S315E07E8B4000000000000000000000000000000000C1 +S315E07E8B5000000000000000000000000000000000B1 +S315E07E8B6000000000000000000000000000000000A1 +S315E07E8B700000000000000000000000000000000091 +S315E07E8B800000000000000000000000000000000081 +S315E07E8B900000000000000000000000000000000071 +S315E07E8BA000000000000080000000000000000000E1 +S315E07E8BB00000000000000000000000000000000051 +S315E07E8BC00000000000000000000000000000000041 +S315E07E8BD00000000000000000000000000000000031 +S315E07E8BE00000000000000000000000000000000021 +S315E07E8BF00000000000000000000000000000000011 +S315E07E8C000000000000000000000000000000000000 +S315E07E8C1000000000000000000000000000000000F0 +S315E07E8C2000000000000000000000000000000000E0 +S315E07E8C3000000000000000000000000000000000D0 +S315E07E8C4000000000000000000000000000000000C0 +S315E07E8C5000000000000000000000000000000000B0 +S315E07E8C600000000000000000002000000000000080 +S315E07E8C70000000000000000F480000808000000039 +S315E07E8C800000000000000000000000000000000080 +S315E07E8C900000000000001000000000000000000060 +S315E07E8CA00000000000000000000000000000000060 +S315E07E8CB00000000000100000000000000000000040 +S315E07E8CC00000000000000000100000100000000020 +S315E07E8CD00000000000000000000000000000000030 +S315E07E8CE00000000000000000000000000000000020 +S315E07E8CF00000000000000000000000000000000010 +S315E07E8D0000000000000000000000000000000000FF +S315E07E8D10000000000000000000000000800000006F +S315E07E8D2000000000000000000000000000000000DF +S315E07E8D3000000000000000000000000000000000CF +S315E07E8D4000000000000000000000000000000000BF +S315E07E8D5000000000000000000000000000000000AF +S315E07E8D60000000000000000000000000000000009F +S315E07E8D70000000000000000000000000000000008F +S315E07E8D80000000000000000000000000000000007F +S315E07E8D90000000000000000000000000000000006F +S315E07E8DA0000000000000000000000000000000005F +S315E07E8DB0000000000000000000000000000000004F +S315E07E8DC000000020000000200000000020002000BF +S315E07E8DD000200000000000000000000020000000EF +S315E07E8DE000000000010000000000000020010100FC +S315E07E8DF07A3600000000000000000010000000004F +S315E07E8E0000000010001000000000100000000000CE +S315E07E8E1000000000100000000000000000000000DE +S315E07E8E2000000000000000000000000000000000DE +S315E07E8E3000000000000000000000000000000000CE +S315E07E8E4000000000000000000000000000000000BE +S315E07E8E5000000000000000000000000000000000AE +S315E07E8E60000000000000000000000000000000009E +S315E07E8E70000000000000000000000000000000008E +S315E07E8E80000000000000000000000000000000007E +S315E07E8E90000000000000000000000000000000006E +S315E07E8EA0000000000000000000000000000000005E +S315E07E8EB0000000000000000000000000000000004E +S315E07E8EC0000000000000000000000000000000003E +S315E07E8ED0000000000000000000000000000000002E +S315E07E8EE0000000000000000000000000000000001E +S315E07E8EF0000000000000000000000000000000000E +S315E07E8F0000000000000000000000000000000000FD +S315E07E8F1000000000000000000000000000000000ED +S315E07E8F2000000000000000000000000000000000DD +S315E07E8F3000000000000000000000000000000000CD +S315E07E8F40000000002000000000000000200000007D +S315E07E8F5000000000000000000000000000000000AD +S315E07E8F60200000000000000000AC6F000000000062 +S315E07E8F70000000000000000000000000000000008D +S315E07E8F80100000000000000000001000000000005D +S315E07E8F90001000000000000000000000100000004D +S315E07E8FA0000000000000000000000000000000104D +S315E07E8FB0000000100000000000000000001000002D +S315E07E8FC0000000000000000000000000000000003D +S315E07E8FD0000000000000000000000000000000002D +S315E07E8FE0000000000000000000000000000000001D +S315E07E8FF0000000000000000000000000000000000D +S315E07E900000000000000000000000000000000000FC +S315E07E901000000000000000000000000000000000EC +S315E07E902000000000000000000000000000000000DC +S315E07E903000000000000000000000000000000000CC +S315E07E904000000000000000000000000000000000BC +S315E07E905000000000000000000000000000000000AC +S315E07E9060000000000000000000000000000000009C +S315E07E9070000000000000000000000000000000008C +S315E07E9080000000000000000000000000000000007C +S315E07E9090000000000000000000000000000000006C +S315E07E90A0000000000000000000000000000000005C +S315E07E90B0000000000000000000000000000020002C +S315E07E90C0000000000000000000200000000000001C +S315E07E90D0000000000000002000000000000000000C +S315E07E90E000001B650000000010000000000000008C +S315E07E90F0000000000000000000000000000000000C +S315E07E910000000000000000000000000000000000FB +S315E07E911000000000000000000000000000000000EB +S315E07E912000000000000000000000000000000000DB +S315E07E913000000000000000100000000000000000BB +S315E07E914000000000000000000000000000000000BB +S315E07E915000000000000000000000000000000000AB +S315E07E9160000000000000000000000000000000009B +S315E07E9170000000000000000000000000000000008B +S315E07E918000000000000000800000000000000000FB +S315E07E9190000000000000000000000000000000006B +S315E07E91A0000000000000000000000000000000005B +S315E07E91B0000000000000000000000000000000004B +S315E07E91C0000000000000000000000000000000003B +S315E07E91D0000000000000000000000000000000002B +S315E07E91E0000000000000000000000000000000001B +S315E07E91F0000000000000000000000000000000000B +S315E07E920000000000000000000000000000000000FA +S315E07E921000000000000000000000000000000000EA +S315E07E922000000000000000000000000000200000BA +S315E07E923000000000200000000000000000000000AA +S315E07E924000000000000000000000000000000000BA +S315E07E92502000000000000000002000B4490000006D +S315E07E9260000000000000000000101000000000106A +S315E07E9270000000000000000000000000000000008A +S315E07E9280000000000000000000000010000000006A +S315E07E9290000000000000000000000000000000006A +S315E07E92A0000000000000000000000000000000005A +S315E07E92B0000000000000000000000000000000004A +S315E07E92C0000000000000000000000000000000003A +S315E07E92D0000000000000000000000000000000002A +S315E07E92E0000000000000000000000000000000001A +S315E07E92F0000000000000000000000000000000000A +S315E07E930000000000000000000000000000000000F9 +S315E07E931000000000000000000000000000000000E9 +S315E07E932000000000000000000000000000000000D9 +S315E07E933000000000000000000000000000000000C9 +S315E07E934000000000000000000000000000000000B9 +S315E07E935000000000000000000000000000000000A9 +S315E07E93600000000000000000000000000000000099 +S315E07E93700000000000000000000000000000000089 +S315E07E93800000000000000000000000000000000079 +S315E07E93900000000000400000000000000000000029 +S315E07E93A00000000000000000200000000000200019 +S315E07E93B00000000000000000002000000000000029 +S315E07E93C000000000002000000000000000000020F9 +S315E07E93D000000000F1E9000010000010000000002F +S315E07E93E01000000000000000000000000000000009 +S315E07E93F000000010000000000000000000000000F9 +S315E07E940000000000000000000000000010000000E8 +S315E07E941000000000000000000000000000000000E8 +S315E07E942000000000001000000000000000000000C8 +S315E07E943000000000000000000000000000000000C8 +S315E07E944000000000000000000000000000000000B8 +S315E07E945000000000000000000000000000000000A8 +S315E07E94600000000000000000000000000000000098 +S315E07E94700000000000000000000000008000000008 +S315E07E94800000000000000000000000000000000078 +S315E07E94900000000000000000000000000000000068 +S315E07E94A00000000000000000000000000000000058 +S315E07E94B00000000000000000000000000000000048 +S315E07E94C00000000000000000000000000000000038 +S315E07E94D00000000000000000000000000000000028 +S315E07E94E00000000000000000000000000000000018 +S315E07E94F00000000000000000000000000000000008 +S315E07E950000000000000000000000000000000000F7 +S315E07E951000000000000000000000000000000000E7 +S315E07E952000000000000000000000000000200000B7 +S315E07E953000000000000000000000000000000000C7 +S315E07E954000000000002000000000010000126C0018 +S315E07E955000000000000000000000000000000000A7 +S315E07E95600000000010000000000000000000000087 +S315E07E95700000000000000000000000000000000087 +S315E07E95800000000000000000000000000000000077 +S315E07E95900000000000000000000000000000000067 +S315E07E95A00000000000000010000000000000000047 +S315E07E95B00000000000000000000000000000000047 +S315E07E95C00000000000000000000000000000000037 +S315E07E95D00000000000000000000000000000000027 +S315E07E95E00000000000000000000000000000000017 +S315E07E95F00000000000000000000000000000000007 +S315E07E960000000000000000000000000000000000F6 +S315E07E961000000000000000000000000000000000E6 +S315E07E962000000000000000000000000000000000D6 +S315E07E963000000000000000000000000000000000C6 +S315E07E964000000000000000000000000000000000B6 +S315E07E965000000000000000000000000000000000A6 +S315E07E96600000000000000000000000000000000096 +S315E07E96700000000000000000000000000000000086 +S315E07E96800000000000000000000000000000000076 +S315E07E96900000000000000000000000200000000046 +S315E07E96A00000000000200000000000000000000036 +S315E07E96B00000000000000000000000000000000046 +S315E07E96C0000000200000574E000000001000000061 +S315E07E96D00000000000000000000000000000001016 +S315E07E96E000001000000000001000000000000000F6 +S315E07E96F00000000000000000000000000000000006 +S315E07E970000000000001000000000001000000000D5 +S315E07E971000000000000000000000000000000000E5 +S315E07E972000000000000000000000000000000000D5 +S315E07E973000000000000000000000000000000000C5 +S315E07E974000000000000000000000000000000000B5 +S315E07E975000000000000000000000000000000000A5 +S315E07E97600000000000000000000000000000000095 +S315E07E97700000000000000000000000000000000085 +S315E07E97800000000000000000000000000000000075 +S315E07E97900000000000000000000000000000000065 +S315E07E97A00000000000000000000000000000000055 +S315E07E97B00000000000000000000000000000000045 +S315E07E97C00000000000000000000000000000000035 +S315E07E97D00000000000000000000000000000000025 +S315E07E97E00000000000000000000000000000000015 +S315E07E97F00000000000000000000000000000000005 +S315E07E980000000000000000000000000000000000F4 +S315E07E981000000000000020000000000000000000C4 +S315E07E982000000000000000000000000000000000D4 +S315E07E98300000000000000000000000000000205450 +S315E07E984008001000900000000000100000000000FC +S315E07E98500000001010000010000000000000100064 +S315E07E98601000100000000010000000000000000064 +S315E07E98700000000000000000000000000000100074 +S315E07E98800000000000100000000000000000000064 +S315E07E98901000100000000000000000000000000044 +S315E07E98A00000000000000000000000000000000054 +S315E07E98B00000000000000000000000000000000044 +S315E07E98C00000000000000000000000000000000034 +S315E07E98D00000000000000000000000000000000024 +S315E07E98E00000000000000080000000000000000094 +S315E07E98F00000000000000000000000000000000004 +S315E07E990000000000000000000000000000000000F3 +S315E07E991000000000000000000000000000000000E3 +S315E07E992000000000000000000000000000000000D3 +S315E07E993000000000000000000000000000000000C3 +S315E07E994000000000000000000000000000000000B3 +S315E07E995000000000000000000000000000000000A3 +S315E07E99600000000000000000000000000000000093 +S315E07E99700000000000000000000000000000000083 +S315E07E99800000000000000000000000000000002053 +S315E07E99900000200000200000200000000000000003 +S315E07E99A00000000020000000000000200000000013 +S315E07E99B00000000020000020316E00001000000054 +S315E07E99C000000010000000100000000010001000F3 +S315E07E99D010000000000000100010000000000000F3 +S315E07E99E00000000000000010000000000000000003 +S315E07E99F000000000000000000000000000001000F3 +S315E07E9A0000000000000000000010001000001000C2 +S315E07E9A1000001000000000000000000000000000D2 +S315E07E9A2000000000000000000000000000000000D2 +S315E07E9A3000000000000000000000000000000000C2 +S315E07E9A4000000000000000000000000000000000B2 +S315E07E9A500000000000000000000000000000800022 +S315E07E9A600000000000000000000000000000000092 +S315E07E9A700000000000000000000000000000000082 +S315E07E9A800000000000000000000000000000000072 +S315E07E9A900000000000000000000000000000000062 +S315E07E9AA00000000000000000000000000000000052 +S315E07E9AB00000000000000000000000000000000042 +S315E07E9AC00000000000000000000000000000000032 +S315E07E9AD00000000000000000000000000000000022 +S315E07E9AE00000000000000000000000000000000012 +S315E07E9AF00000000000000000000000000000000002 +S315E07E9B000000000020000020000020002020002031 +S315E07E9B1000000000000020000000000000000000C1 +S315E07E9B200000200000000000000020200000000071 +S315E07E9B3020C104000080101010000000000000101C +S315E07E9B4010008000000000101000000000000010F1 +S315E07E9B501000000000000000000000000000000091 +S315E07E9B601000000000000000100000000000000071 +S315E07E9B700000000000001000000000000000000071 +S315E07E9B800000000000101000000000000010000041 +S315E07E9B900000000000000000000000000000000061 +S315E07E9BA00000000000000000000000000000000051 +S315E07E9BB00000000000000000000000000000000041 +S315E07E9BC00000000000000000000000000000000031 +S315E07E9BD000000000000080000000000000000000A1 +S315E07E9BE00000000000000000000000000000000011 +S315E07E9BF00000000000000000000000000000000001 +S315E07E9C0000000000000000000000000000000000F0 +S315E07E9C1000000000000000000000000000000000E0 +S315E07E9C2000000000000000000000000000000000D0 +S315E07E9C3000000000000000000000000000000000C0 +S315E07E9C4000000000000000000000000000000000B0 +S315E07E9C5000000000000000000000000000000000A0 +S315E07E9C600000000000000000000040000000000050 +S315E07E9C700000000000000000000000000000202040 +S315E07E9C8020000000000000202000000000000020F0 +S315E07E9C900000000000000000200000002000000020 +S315E07E9CA00000000020202000000080A200000010BE +S315E07E9CB000101000000400300000040020000010B8 +S315E07E9CC000100000000000101000000100080040B7 +S315E07E9CD001000800400000000010100000000000B7 +S315E07E9CE000101002001000800200100080000000CC +S315E07E9CF000000000000000000000000400200010CC +S315E07E9D00140020000010100000000000000000009B +S315E07E9D10000100080040010008004000000000004D +S315E07E9D20000000000000000000020010008002003B +S315E07E9D30100080000000000000000000000000002F +S315E07E9D400004002000000400200000000000000067 +S315E07E9D50000000000000000100080040010008004D +S315E07E9D60400000000000000000000000000000024D +S315E07E9D70001000800200100080000000000000005D +S315E07E9D800000000000000004002000000400200027 +S315E07E9D900000000000000000000000000001000856 +S315E07E9DA000400100080040000000000000000000C6 +S315E07E9DB0000000000002001000800200100080001B +S315E07E9DC0000000000000000000000000000400200B +S315E07E9DD000000400200000000000000000000000FB +S315E07E9DE000000041400800400100080040000000FD +S315E07E9DF0000000000000002000202002001000A0ED +S315E07E9E00020010008000000000000000000000005C +S315E07E9E102000000400000000040020000000000096 +S315E07E9E2000000067CE000000000010100000000079 +S315E07E9E30000000000080000010000000000000002E +S315E07E9E40101000100000000000000000000000007E +S315E07E9E50000010100000000000001010000000005E +S315E07E9E60000000100000000000000000000000007E +S315E07E9E70000000000000100010100000000010102E +S315E07E9E80000000000000000000000000000000006E +S315E07E9E90000000000000000000000000000000005E +S315E07E9EA0000000000000000000000000000000004E +S315E07E9EB0000000000000000000000000000000003E +S315E07E9EC0000000000000000000000000000000002E +S315E07E9ED0000000000000000000000000000000001E +S315E07E9EE0000000000000000000000000000000000E +S315E07E9EF000000000000000000000000000000000FE +S315E07E9F0000000000000000000000000000000000ED +S315E07E9F1000000000000000000000000000000000DD +S315E07E9F2000000000000000000000000000000000CD +S315E07E9F3000000000000000000000000000000000BD +S315E07E9F4000000000000000000000000000000000AD +S315E07E9F50000000000000000000000000404000001D +S315E07E9F60000000000000000000000000000000008D +S315E07E9F70000020200000000000000000000000003D +S315E07E9F8020200000000000002000202000002000AD +S315E07E9F900000000000002020000000009C7A000007 +S315E07E9FA0000000101000000000000000000000002D +S315E07E9FB000100010000000000010101000000000ED +S315E07E9FC0000000000000000000000010100000000D +S315E07E9FD000000010100000000000000000000000FD +S315E07E9FE000101000000000000000000000000000ED +S315E07E9FF010101000000000101000000000000000AD +S315E07EA00000000000000000000000000000000000EC +S315E07EA01000000000000000000000000000000000DC +S315E07EA02000000000000000000000000000000000CC +S315E07EA03000000000000000000000000000000000BC +S315E07EA04000000000000000000000000000000000AC +S315E07EA050000000000000000000000000000000009C +S315E07EA060000000000000000000000000000000008C +S315E07EA070000000000000000000000000000000007C +S315E07EA080000000000000000000000000000000006C +S315E07EA090000000000000000000000000000000005C +S315E07EA0A0000000000000000000000000000000004C +S315E07EA0B0000000000000000000000000000000003C +S315E07EA0C0000000000000000000000000000000002C +S315E07EA0D0000000000040400000000000000000009C +S315E07EA0E000000000000000000000202020000000AC +S315E07EA0F0000000002000000000000020200000009C +S315E07EA10000200000000000000000000000000020AB +S315E07EA110202020000009230000808010101000001F +S315E07EA120000000000000000000001000101000009B +S315E07EA130000010100000000000000000000000009B +S315E07EA140000000001010000000000000101000006B +S315E07EA150000000000000000000001010000000007B +S315E07EA160000000000000000000001010000000006B +S315E07EA170101000000000000000000000000000005B +S315E07EA180000000000000000000000000000000006B +S315E07EA190000000000000000000000000000000005B +S315E07EA1A0000000000000000000000000000000004B +S315E07EA1B0000000000000000000000000000000003B +S315E07EA1C0000000000000000000000000000000002B +S315E07EA1D0000000000000000000000000000000001B +S315E07EA1E0000000000000000000000000000000000B +S315E07EA1F000000000000000000000000000000000FB +S315E07EA20000000000000000000000000000000000EA +S315E07EA21000000000000000000000000000000000DA +S315E07EA22000000000000000000000000000000000CA +S315E07EA23000000000000000000000000000000000BA +S315E07EA240000000000000000000000000000040402A +S315E07EA250000000000000000000000000000000009A +S315E07EA260000000002020000000000000000000004A +S315E07EA270000020202020000000000020202000009A +S315E07EA2800000000000000000000020210100EFB287 +S315E07EA290000000001000000000000000001010002A +S315E07EA2A0000000000010000000000000000000003A +S315E07EA2B0000000000000000000000000000000003A +S315E07EA2C0000000000000000000000000000000002A +S315E07EA2D000000010100000000000000000000000FA +S315E07EA2E0000000000000000000000000000000000A +S315E07EA2F000000000000000000000000000000000FA +S315E07EA30000000000000000000000000000000000E9 +S315E07EA31000000000000000000000000000000000D9 +S315E07EA32000000000000000000000000000000000C9 +S315E07EA33000000000000000000000000000000000B9 +S315E07EA34000000000000000000000000000000000A9 +S315E07EA3500000000000000000000000000000000099 +S315E07EA3600000000000000000000000000000000089 +S315E07EA3700000000000000000000000000000000079 +S315E07EA3800000000000000000000000000000000069 +S315E07EA3900000000000000000000000000000000059 +S315E07EA3A00000000000000000000000000000000049 +S315E07EA3B00000000000000000000000000000000039 +S315E07EA3C00000000000000000000000000000000029 +S315E07EA3D000000000000000000000000000202000D9 +S315E07EA3E00000000000000000000000000000000009 +S315E07EA3F000000000200000000000000000000000D9 +S315E07EA40000202020000000C1B50000000000000012 +S315E07EA4100000000000001010000000000000101098 +S315E07EA42000000000000010000000000000000000B8 +S315E07EA43000000000000000000000000000000000B8 +S315E07EA4400000000000000000000000001010000088 +S315E07EA4500000000000000000000000100000000088 +S315E07EA4600000000000000000000000000000000088 +S315E07EA4700000000000000000000000000000000078 +S315E07EA4800000000000000000000000000000000068 +S315E07EA4900000000000000000000000000000000058 +S315E07EA4A00000000000000000000000000000000048 +S315E07EA4B00000000000000000000000000000000038 +S315E07EA4C00000000000000000000000000000000028 +S315E07EA4D00000000000000000000000000000000018 +S315E07EA4E00000000000000000000000000000000008 +S315E07EA4F000000000000000000000000000000000F8 +S315E07EA50000000000000000000000000000000000E7 +S315E07EA51000000000000000000000000000000000D7 +S315E07EA52000000000000000000000000000000000C7 +S315E07EA53000000000000000000000000000000000B7 +S315E07EA54000000000000000000000000000000000A7 +S315E07EA5500000000000200000000000000000000077 +S315E07EA56000000000202000000000000020002020E7 +S315E07EA57000000000000000000000202020200000F7 +S315E07EA580F08D0000000000000000000000000010DA +S315E07EA5901000000000000010000000000000000037 +S315E07EA5A01000000000000000000000000000000037 +S315E07EA5B00000000000000000000000000000000037 +S315E07EA5C00000000000000000000000000000000027 +S315E07EA5D00000001000000000000000000000000007 +S315E07EA5E00000000000000000000000000000000007 +S315E07EA5F000000000000000000000000000000000F7 +S315E07EA60000000000000000000000000000000000E6 +S315E07EA61000000000000000000000000000000000D6 +S315E07EA6200000000000800000000000000000000046 +S315E07EA63000000000000000000000000000000000B6 +S315E07EA64000000000000000000000000000000000A6 +S315E07EA6500000000000000000000000000000000096 +S315E07EA6600000000000000000000000000000000086 +S315E07EA6700000000000000000000000000000000076 +S315E07EA6800000000000000000000000000000000066 +S315E07EA6900000000000000000000000000000000056 +S315E07EA6A00000000000000000000000000000000046 +S315E07EA6B00000000000000000000000000000000036 +S315E07EA6C00000000000000000000000000000002006 +S315E07EA6D020000000002000000000000000000020B6 +S315E07EA6E020000000002020000000000000000000A6 +S315E07EA6F00000000000200000005A5C000000100010 +S315E07EA70000000000000000041030000000000000A1 +S315E07EA71010100000000000000000000000010008AC +S315E07EA7200040000000000000000000000000000085 +S315E07EA7300000000000020000008000000000000033 +S315E07EA7400000000000000000000000000004002081 +S315E07EA7500000000000000000000000000000000095 +S315E07EA760000000010008004000000000000000003C +S315E07EA77000000000000000000000000200100080E3 +S315E07EA7800000000000000000000000000000000065 +S315E07EA7900000000400200000000000000000000031 +S315E07EA7A000000000000000000001000800400000FC +S315E07EA7B00000000000000000000000000000000035 +S315E07EA7C00002001000800000000000000000000093 +S315E07EA7D000000000000000000004002000000000F1 +S315E07EA7E00000000000000000000000000000000104 +S315E07EA7F000080040000000000000000000000000AD +S315E07EA8000000000000000002001000800000000052 +S315E07EA81000000000000000000000000000000004D0 +S315E07EA82000200000000000000000000000000000A4 +S315E07EA830000000000001000800400000000000006B +S315E07EA8400000000000002000000000000002001072 +S315E07EA8500080000000002020202000000000202054 +S315E07EA8602020000000040000000000000000202000 +S315E07EA8700000651D000000000000000000000010E2 +S315E07EA8801400300000000000000000000000000020 +S315E07EA89000100000000001000800400000000000FB +S315E07EA8A00000000000000000000000000000020042 +S315E07EA8B00010800000000010000000000000000094 +S315E07EA8C000000000001004002000000000000000F0 +S315E07EA8D0000000000000000000000000010008000B +S315E07EA8E040000000000000000000000000000000C4 +S315E07EA8F00000000002001000800000000000000062 +S315E07EA90000000000000000000000000004002000BF +S315E07EA9100000000000000000800000000000000053 +S315E07EA920000001000800400000000000000000007A +S315E07EA9300000000000000000000002001000800021 +S315E07EA94000000000000000000000000000000000A3 +S315E07EA950000004002000000000000000000000006F +S315E07EA960000000000000000001000800400000003A +S315E07EA9700000000000000000000000000000000073 +S315E07EA98002001000800000000000000000000000D1 +S315E07EA990000000000000000004002000000000002F +S315E07EA9A00000000000000000000000000000010042 +S315E07EA9B008004000000000000000000000000000EB +S315E07EA9C00000000000000200102080000000002051 +S315E07EA9D000002000000000000000000000000400EF +S315E07EA9E00020000000000000000000285F0000005C +S315E07EA9F000100000000000000014002000000000AF +S315E07EAA0000100000000000000000000000000001D1 +S315E07EAA10000800400000000000000000000000008A +S315E07EAA200000000000000002001000800000000030 +S315E07EAA3000000000000000000000000000000004AE +S315E07EAA400020000000000000000000000000000082 +S315E07EAA500000000000010008004000000000000049 +S315E07EAA600000000000000000000000000002001070 +S315E07EAA7000800000000000000000000000000000F2 +S315E07EAA80000000000004002000000000000000003E +S315E07EAA900000000000000000000000010008004009 +S315E07EAAA00000000000000000000000000000000042 +S315E07EAAB000000002001000800000000000000000A0 +S315E07EAAC000000000000000000000000400200000FE +S315E07EAAD00000000000000000000000000000000012 +S315E07EAAE000010008004000000000000000000000B9 +S315E07EAAF00000000000000000000200100080000060 +S315E07EAB0000000000000000000000000000000000E1 +S315E07EAB1000040020000000000000000000000000AD +S315E07EAB200000000000000001000800400000000078 +S315E07EAB30000000000000000000202000000000026F +S315E07EAB4000302080000000000000000000000000D1 +S315E07EAB50010000000000000400200000000000006C +S315E07EAB6000000000ACAF001003031C1C6060100008 +S315E07EAB700303181C40601010070738384040101059 +S315E07EAB8007073838C0C000100607303880C011018C +S315E07EAB900E0E7070808011110E0E70708080110125 +S315E07EABA00C0E6070008003031C1CE0E000100303C3 +S315E07EABB01C1CE0E000000303181CC0E01010070731 +S315E07EABC03838C0C0000007073838C0C00000060726 +S315E07EABD0303880C001010E0E7070808001010E0E4D +S315E07EABE07070808001010C0E6070008003031C1C77 +S315E07EABF0E0E0000003031C1CE0E000000303181CF9 +S315E07EAC00C0E0000007073838C0C0000007073838C4 +S315E07EAC10C0C000000607303880C001010E0E70709D +S315E07EAC20808001010E0E7070808001010C0E6070D6 +S315E07EAC30008003031C1CE0E0000003031C1CE0E034 +S315E07EAC4000000303181CC0E0000007073838C0C0C8 +S315E07EAC50000007073838C0C000000607303880C0DD +S315E07EAC6001010E0E7070808001010E0E7070808084 +S315E07EAC7001010C0E6070008003031C1CE0E0000006 +S315E07EAC8003031C1CE0E000000303181CC0E0000088 +S315E07EAC9007073838C0C0000007073838C0C0000054 +S315E07EACA00607303880C001010E0E7070808001216B +S315E07EACB00E0E7070808021210C0E60700080232342 +S315E07EACC01C1CE0E0000022221C1CE0E000002202C8 +S315E07EACD0181CC0E0002006063838C0C020FCEE0016 +S315E07EACE010000010000000000000000010000010C0 +S315E07EACF000000010000000100000000000000000D0 +S315E07EAD0000000010100000000000000000000000BF +S315E07EAD10100000100000001000000000000000009F +S315E07EAD20000000000000100000100000000000009F +S315E07EAD30000000000010100000000000000000008F +S315E07EAD40000000000000000000000000000000009F +S315E07EAD50000000000000000000000000000000008F +S315E07EAD60000000000000000000000000000000007F +S315E07EAD70000000000000000000000000000000006F +S315E07EAD80000000000000000000000000000000005F +S315E07EAD90000000000000000000000000000000004F +S315E07EADA0000000000000000000000000000000003F +S315E07EADB0000000000000000000000000000000002F +S315E07EADC0000000000000000000000000000000001F +S315E07EADD0000000000000000000000000000000000F +S315E07EADE000000000000000000000000000000000FF +S315E07EADF000000000000000000000000000000000EF +S315E07EAE0000000000000000000000000000000000DE +S315E07EAE10000000000000000000400000000000008E +S315E07EAE20000000000000000020000020200000005E +S315E07EAE3020000020200000002000002020000000EE +S315E07EAE40000000000000000000000000000020007E +S315E07EAE5000000001002081B8000000000000000034 +S315E07EAE60000000000000000000000200000000007C +S315E07EAE70000000000000000000000000000000006E +S315E07EAE80000000000000000000000000000000005E +S315E07EAE90000000000000000000000000000000004E +S315E07EAEA000000000000000000080000000000000BE +S315E07EAEB0000000000000000000000000000000002E +S315E07EAEC000000000000000000000000000000020FE +S315E07EAED0000000000000000000000000000000000E +S315E07EAEE000000000000000000000000000000000FE +S315E07EAEF000000000000000000000000000000000EE +S315E07EAF0000000000000000000000000000000000DD +S315E07EAF1000000000000000000000000000000000CD +S315E07EAF2000000000000000000000000000000000BD +S315E07EAF3000000000000000000000000000000000AD +S315E07EAF40000000000000000000000000000000009D +S315E07EAF50000000000000200000000000000000006D +S315E07EAF60000000000000000000000000000000007D +S315E07EAF70000000000000000000000000000000006D +S315E07EAF80000000000000000000000000000000005D +S315E07EAF90000000000000000000000000000000004D +S315E07EAFA0200000000000000000000000000000001D +S315E07EAFB0000000000000000000000000000000002D +S315E07EAFC0000000000000000000000000000000D746 +S315E07EAFD05800000000000010000010000010100075 +S315E07EAFE000000000001000100010000000000000CD +S315E07EAFF000000000000000000000000000000000ED +S315E07EB00020000000000000000010000000000000AC +S315E07EB01000100000001000000000000000000000AC +S315E07EB02000000000000000000000000000000000BC +S315E07EB03000000000000000000000000000000000AC +S315E07EB040000000000000000000800000000000001C +S315E07EB050008000000000000000000000000000000C +S315E07EB060000000000000000000000000000000007C +S315E07EB070000000000000000000000000000000006C +S315E07EB080000000000000000000000000000000005C +S315E07EB090000000000000000000000000000000004C +S315E07EB0A0000000000000000000000000000000003C +S315E07EB0B0000000000000000000000000000000002C +S315E07EB0C0000000000000000000000000000000001C +S315E07EB0D0000000000000000000000000000000000C +S315E07EB0E000000000000000000000000000000000FC +S315E07EB0F000000000000000000000000000000000EC +S315E07EB100000000000000000040000000000000009B +S315E07EB110000000000000000000000000200020008B +S315E07EB120000020000000000000000020000000007B +S315E07EB130000000000000200000200000000040002B +S315E07EB1402000000000000100D2F800100000001090 +S315E07EB150000000000010000000000000001000006B +S315E07EB16010108000000000000000000000000000DB +S315E07EB170000000000000000000000000000000006B +S315E07EB18000000000008000000010000000001000BB +S315E07EB190000000000000000000000000000000004B +S315E07EB1A0000000000000000000000000000000003B +S315E07EB1B0000000000000000000000000000000002B +S315E07EB1C0000000000000000000008000000000009B +S315E07EB1D0000000000000000000000000000000000B +S315E07EB1E000000000000000000000000000000000FB +S315E07EB1F000000000000000000000000000000000EB +S315E07EB20000000000000000000000000000000000DA +S315E07EB21000000000000000000000000000000000CA +S315E07EB220000000000000000000000000200000009A +S315E07EB23000000000000000000000000000000000AA +S315E07EB240000000000000000000000000000000009A +S315E07EB250000000000000000000000000000000008A +S315E07EB260000000000000000000000000000000007A +S315E07EB270000020000000000000000000000000004A +S315E07EB280000040000000000000000000000000001A +S315E07EB29000000000002000002000000020000000EA +S315E07EB2A000000000200000000000000000002020DA +S315E07EB2B00000000000000400000000000000000026 +S315E07EB2C000255C0000000000000000001000000089 +S315E07EB2D010000000000000000000000000000000FA +S315E07EB2E000000000000000000000000000000000FA +S315E07EB2F000000020000000000000100000000000BA +S315E07EB30000000000000000000000000000000000D9 +S315E07EB31000000000000000000000000000000000C9 +S315E07EB32000000000000000000000000000000000B9 +S315E07EB3300000000000000000000000800000000029 +S315E07EB3400000000000000000000000000000000099 +S315E07EB3500000000000000000000000000000002069 +S315E07EB3600000000000000000000000000000000079 +S315E07EB3700000000000000000000000000000000069 +S315E07EB3800000000000000000000000000000000059 +S315E07EB3900000000000000000000000000000000049 +S315E07EB3A00000000000000000000000000000000039 +S315E07EB3B00000000000000000000000000000000029 +S315E07EB3C00000000000000000000000000000000019 +S315E07EB3D00000000000000000000000000000000009 +S315E07EB3E000000000000000000000000000000000F9 +S315E07EB3F000000000000000000000000000000000E9 +S315E07EB40000000000000000000000000000000000D8 +S315E07EB4100000000000000020200000200000000068 +S315E07EB4200000000000000000000000200000000098 +S315E07EB430400020000000000000000D6700000000D4 +S315E07EB4400000000000000010000000000000000088 +S315E07EB4500000000000000000000000000000000088 +S315E07EB4600000000000000000000000000000000078 +S315E07EB4700000001000000000000000001000000048 +S315E07EB4801000000010000000000000000000000038 +S315E07EB4900000000010000000000000000000000038 +S315E07EB4A00000000000000000000000000000000038 +S315E07EB4B000000000000000000000000040000000E8 +S315E07EB4C00000000000000000000000000000000018 +S315E07EB4D00000000000000000000000000000000008 +S315E07EB4E000000000000000000000000000000000F8 +S315E07EB4F000000000000000000000000000000000E8 +S315E07EB50000000000000000000000000000000000D7 +S315E07EB51000000000000000002000000000000000A7 +S315E07EB52000000000000000000000000000000000B7 +S315E07EB53000000000000000000000000000000000A7 +S315E07EB5400000000000000000000000000000000097 +S315E07EB5500000000000000000000000000000000087 +S315E07EB5600000000000000000000000000000000077 +S315E07EB5700040000000002000000000000000000007 +S315E07EB5800000000000002000000000000020000017 +S315E07EB59000000020000020002000002000000000C7 +S315E07EB5A000000020000000000000000020000000F7 +S315E07EB5B0000000A7E300000000102000100000005D +S315E07EB5C00000000000000000000000000000000017 +S315E07EB5D00000000000000000000000000000000007 +S315E07EB5E000000000000000000000000000000000F7 +S315E07EB5F000000000000000000000000000000000E7 +S315E07EB60000000000000000000000000000000000D6 +S315E07EB61000000000000000000000000000000000C6 +S315E07EB6200000000000000000200000000000000096 +S315E07EB6300040000000000000000000000000000066 +S315E07EB6400000000000000000000000000000000096 +S315E07EB6500000000000000000000000000000000086 +S315E07EB6600000000000000000000000000000000076 +S315E07EB6700000000000000000000000000000000066 +S315E07EB6800000000000000000000000000000000056 +S315E07EB6900000000000000000000000000000000046 +S315E07EB6A00000000000000000000000000000000036 +S315E07EB6B00000000000000000000000000000000026 +S315E07EB6C00000000000000000000000000000000016 +S315E07EB6D00000000000000000000000000000000006 +S315E07EB6E000000000000000000000000000000000F6 +S315E07EB6F000000000000000000000000000000000E6 +S315E07EB7000000200000000000000020000000000095 +S315E07EB7100000000000002000000000200000000085 +S315E07EB72000200000000000000000000071C3000061 +S315E07EB7300010000000100000000010000000000075 +S315E07EB7400000000000000000000000000000000095 +S315E07EB7500000000000000000000000000000000085 +S315E07EB7600000000000100000000000000000000065 +S315E07EB7700000100000001000000000000000000045 +S315E07EB7800000000000001000000000000000000045 +S315E07EB7900000000000000000000000000000000045 +S315E07EB7A00020000000000000000000000000000015 +S315E07EB7B00000000000000000000000000000000025 +S315E07EB7C00000000000000000000000000000000015 +S315E07EB7D00000000000000000000000000000000005 +S315E07EB7E000000000000000000000000000000000F5 +S315E07EB7F000000000000000000000000000000000E5 +S315E07EB80000000000000000000020000000000000B4 +S315E07EB81000000000000000000000000000000000C4 +S315E07EB82000000000000000000000000000000000B4 +S315E07EB83000000000000000000000000000000000A4 +S315E07EB8400000000000000000000000000000000094 +S315E07EB8500000000000000000000000000000000084 +S315E07EB8600000000040000000000000000000000034 +S315E07EB8700000000000000000200000000000000044 +S315E07EB88000000000200020002020000000200000B4 +S315E07EB8900000000000000000200000000000200004 +S315E07EB8A0000000000063B100001000000000000010 +S315E07EB8B00000001000000000000000000000000014 +S315E07EB8C00000000000000000000010000000000004 +S315E07EB8D00000000000000000000000000000000004 +S315E07EB8E000000000002000000000002000000000B4 +S315E07EB8F020000000000000100008000000000000AC +S315E07EB90000002000000000000000000000000000B3 +S315E07EB91000000000000000000000000000000000C3 +S315E07EB92000000000000000000000000000000000B3 +S315E07EB9300000000000000000000020000000000083 +S315E07EB9400000000000000000400000000000000053 +S315E07EB95000000000000000108000000000000000F3 +S315E07EB9600040000000000000000000000000000033 +S315E07EB9700000000000000000000000000020000043 +S315E07EB9800020000000000000000000000000000033 +S315E07EB9900000000000000010000000000000000033 +S315E07EB9A00000000000000000000000000010000023 +S315E07EB9B00000000000000020000000000000000003 +S315E07EB9C00000000000000000000000000000000013 +S315E07EB9D08000000000000000000000000000000083 +S315E07EB9E000000000002000000000000000000000D3 +S315E07EB9F00000200000000000002000000040000063 +S315E07EBA0000000000000000000000000000000000D2 +S315E07EBA100000000000002000000000002000527AB6 +S315E07EBA200000100000000000000000100000000092 +S315E07EBA300000100000000000000000000000000092 +S315E07EBA400000000000000000000000000000000092 +S315E07EBA500000000000000000000000000000000082 +S315E07EBA600000000000000000000000000000000072 +S315E07EBA700000000000000000000000000000000062 +S315E07EBA800000000000000000000000000000000052 +S315E07EBA900000000000000000000000000000000042 +S315E07EBAA00000000000000000000000000000000032 +S315E07EBAB00000000000000000000000000000000022 +S315E07EBAC000004000000000000000000000000000D2 +S315E07EBAD00000000000000000000000000000000002 +S315E07EBAE000000000000000000000000000000000F2 +S315E07EBAF000000000000000000000000000000000E2 +S315E07EBB0000000000000000000000000000000000D1 +S315E07EBB1000000000000000000000000000000000C1 +S315E07EBB2000000000000000000000000000000000B1 +S315E07EBB3000000000000000000000000000000000A1 +S315E07EBB400000000000000000000000000000000091 +S315E07EBB500000000000000000000000000020000061 +S315E07EBB600000000000000000000000002000000051 +S315E07EBB700000000000000000000000000000000061 +S315E07EBB800000000000000000000000000000002031 +S315E07EBB900000000000000064DD0000000000000000 +S315E07EBBA00000000000000000000000000000000031 +S315E07EBBB00000000000000000000000000000000021 +S315E07EBBC000000000000000000000000020000000F1 +S315E07EBBD00000000000000000000000000000000001 +S315E07EBBE000000000000000000000000000000000F1 +S315E07EBBF000000000200000000000000000002000A1 +S315E07EBC0000000000000000000000000000000000D0 +S315E07EBC1000000000000000000000000000000000C0 +S315E07EBC2000000000000000000000000000000000B0 +S315E07EBC3000000000000000000000000000000000A0 +S315E07EBC400000000000000000001000000000000080 +S315E07EBC500000000000000000000000000000000080 +S315E07EBC600000000000000000000000000000000070 +S315E07EBC700000200000000000000000000000000040 +S315E07EBC800000000000000000100000000000000040 +S315E07EBC900000000000000000000000000000000040 +S315E07EBCA00000000000000000000000000000000030 +S315E07EBCB00000000000000000000000000000000020 +S315E07EBCC00000000000000000000000000000000010 +S315E07EBCD000400000000000000000000000000000C0 +S315E07EBCE000000000000000000000002000000000D0 +S315E07EBCF000000000000000000000000000000000E0 +S315E07EBD00002000000000000000000000000020008F +S315E07EBD101CF10000000000000000000000000000B2 +S315E07EBD2000000000000000000000000000000000AF +S315E07EBD30000000000000102000000000000000006F +S315E07EBD40000000000000000000000000000000206F +S315E07EBD50000000000020000000000000200000003F +S315E07EBD600010000008000000000000000000000057 +S315E07EBD70000000000000000000000000000000005F +S315E07EBD80000000000000000000000000000000004F +S315E07EBD90000000000000000000000000000000003F +S315E07EBDA0000000000020000000000000000000000F +S315E07EBDB0000000000000000000000000000000001F +S315E07EBDC0000000008000000000000040000000004F +S315E07EBDD000000000000000000000000000000000FF +S315E07EBDE000000000000000200000000000000000CF +S315E07EBDF000000000000000000000000000000000DF +S315E07EBE0000000000000000000000200000000000AE +S315E07EBE1000000000000000001000000000000000AE +S315E07EBE20002000000000000000001000000000007E +S315E07EBE30000000000000000000000000800000001E +S315E07EBE40000000000000000000000000000000008E +S315E07EBE50000000000000000000000000000000007E +S315E07EBE60000000000000004000000000000000002E +S315E07EBE70000000000000000000000000000000005E +S315E07EBE80000000000000000000220200000000002A +S315E07EBE90100000100000000010000000000000000E +S315E07EBEA0000000000000000000000000000000002E +S315E07EBEB0000000000000000000000000000000001E +S315E07EBEC0000000000000000000000000000000000E +S315E07EBED000000000000000000000000000000000FE +S315E07EBEE000000000000000000000000000000000EE +S315E07EBEF000000000000000000000000000000000DE +S315E07EBF0000000000000000000000000000000000CD +S315E07EBF1000000000000000000000000000000000BD +S315E07EBF2000000000000000000000000000000000AD +S315E07EBF30000000000000000000000000000000009D +S315E07EBF40000000000000000000000000000000008D +S315E07EBF50000000000000000000000000000000007D +S315E07EBF60000000000000000000000000000000006D +S315E07EBF70000000000000000000000000000000005D +S315E07EBF80000000000000000000000000000000004D +S315E07EBF90000000000000000000000000000000003D +S315E07EBFA0000000000000000000000000000000002D +S315E07EBFB0000000000000000000000000000000001D +S315E07EBFC0000000000000000000000000000000000D +S315E07EBFD000000000000000000000000000000000FD +S315E07EBFE0002000000020002000000000000020006D +S315E07EBFF000000000000000000000200000000000BD +S315E07EC0000000034400000000000000000000100075 +S315E07EC010000000000000000010100010000000008C +S315E07EC02000000000000000000000000000000000AC +S315E07EC030000000000000000000000000000000009C +S315E07EC040000000000000000000000000000000008C +S315E07EC050000000000000000000000000000000007C +S315E07EC060000000000000000000000000000000006C +S315E07EC070000000000000000000000000000000005C +S315E07EC080000000000000000000000000000000004C +S315E07EC090000000000000000000000000000000003C +S315E07EC0A0000000000000000000000000000000002C +S315E07EC0B0000000000000000000000000000000001C +S315E07EC0C0000000000000000000000000000000000C +S315E07EC0D000000000000000000000000000000000FC +S315E07EC0E000000000000000000000000000000000EC +S315E07EC0F000000000000000000000000000000000DC +S315E07EC10000000000000000000000000000000000CB +S315E07EC11000000000000000000000000000000000BB +S315E07EC12000000000000000000000000000000000AB +S315E07EC130000000000000000000000000000000009B +S315E07EC140000000000000000000000000000000008B +S315E07EC15020000000200020000000002000000000FB +S315E07EC160000000200000000000200000000000002B +S315E07EC1700000000000002000002000213A000000C0 +S315E07EC180000000000010001000000000000000002B +S315E07EC190000000100000000000000000000000002B +S315E07EC1A0000000000000000000000000000000002B +S315E07EC1B0000000000000000000000000000000001B +S315E07EC1C0000000000000000000000000000000000B +S315E07EC1D000000000000000000000000000000000FB +S315E07EC1E000000000000000000000000000000000EB +S315E07EC1F000000000000000000000000000000000DB +S315E07EC20000000000000000000000000000000000CA +S315E07EC21000000000000000000000000000000000BA +S315E07EC22000000000000000000000000000000000AA +S315E07EC230000000000000000000000000000000009A +S315E07EC240000000000000000000000000000000008A +S315E07EC250000000000000000000000000000000007A +S315E07EC260000000000000000000000000000000006A +S315E07EC270000000000000000000000000000000005A +S315E07EC280000000000000000000000000000000004A +S315E07EC290000000000000000000000000000000003A +S315E07EC2A0000000000000000000000000000000002A +S315E07EC2B0000000000000000000000000000000001A +S315E07EC2C000000000000000002000000020002000AA +S315E07EC2D0000000000000200000200000002000009A +S315E07EC2E0002000200000000000000000200020006A +S315E07EC2F000000000C85C00000000000000000000B6 +S315E07EC30000000000001000000000000000000000B9 +S315E07EC31000000000000000000000000000000000B9 +S315E07EC32000000000000000000000000000000000A9 +S315E07EC3300000000000000000000000000000000099 +S315E07EC3400000000000000000000000000000000089 +S315E07EC3500000000000000000000000000000000079 +S315E07EC3600000000000000000000000000000000069 +S315E07EC3700000000000000000000000000000000059 +S315E07EC3800000000000000000000000000000000049 +S315E07EC3900000000000000000000000000000000039 +S315E07EC3A00000000000000000000000000000000029 +S315E07EC3B00000000000000000000000000000000019 +S315E07EC3C00000000000000000000000000000000009 +S315E07EC3D000000000000000000000000000000000F9 +S315E07EC3E000000000000000000000000000000000E9 +S315E07EC3F000000000000000000000000000000000D9 +S315E07EC40000000000000000000000000000000000C8 +S315E07EC41000000000000000000000000000000000B8 +S315E07EC42000000000000000000000000000000000A8 +S315E07EC4300000000000000000000000000000000098 +S315E07EC4400000000000000000000000000000000088 +S315E07EC4500000000000000000000000000000000078 +S315E07EC460000000000000000020000000006F1B00BE +S315E07EC4700000000000001000000000000000000048 +S315E07EC4801000000000000000000000000000000038 +S315E07EC4900000000000000000000000000000000038 +S315E07EC4A00000000000000000000000000000000028 +S315E07EC4B00000000000000000000000000000000018 +S315E07EC4C00000000000000000000000000000000008 +S315E07EC4D000000000000000000000000000000000F8 +S315E07EC4E000000000000000000000000000000000E8 +S315E07EC4F000000000000000000000000000000000D8 +S315E07EC50000000000000000000000000000000000C7 +S315E07EC51000000000000000000000000000000000B7 +S315E07EC52000000000000000000000000000000000A7 +S315E07EC5300000000000000000000000000000000097 +S315E07EC5400000000000000000000000000000000087 +S315E07EC5500000000000000000000000000000000077 +S315E07EC5600000000000000000000000000000000067 +S315E07EC5700000000000000000000000000000000057 +S315E07EC5800000000000000000000000000000000047 +S315E07EC5900000000000000000000000000000000037 +S315E07EC5A00000000000000000000000000000000027 +S315E07EC5B000000000000000000000000000000020F7 +S315E07EC5C00000000000000000000000000000000007 +S315E07EC5D000000000000000000000000000200000D7 +S315E07EC5E000000000000060D10000000000000000B6 +S315E07EC5F00004002000100000000000000010001083 +S315E07EC600000000000000000100080040000000007D +S315E07EC61000000000000000000000000000000002B4 +S315E07EC6200010008000000000000000000000000016 +S315E07EC6300000000000000004002000000000000072 +S315E07EC640000000000000000000000000000100087D +S315E07EC6500040000000000000000000000000000036 +S315E07EC66000000000000200100080000000000000D4 +S315E07EC6700000000000000000000000000004002032 +S315E07EC6800000000000000000000000000000000046 +S315E07EC69000000001000800400000000000000000ED +S315E07EC6A00000000000000000000000020010008094 +S315E07EC6B00000000000000000000000000000000016 +S315E07EC6C000000004002000000000000000000000E2 +S315E07EC6D000000000000000000001000800400000AD +S315E07EC6E000000000000000000000000000000000E6 +S315E07EC6F00002001000800000000000000000000044 +S315E07EC70000000000000000000004002000000000A1 +S315E07EC71000000000000000000000000000000001B4 +S315E07EC720000800400000000000000000000000005D +S315E07EC73000000000000000020010008000000020E3 +S315E07EC7400000200000000000000000000000000461 +S315E07EC7500020000000000000000000000000003D18 +S315E07EC7602700000000000000000004002000040412 +S315E07EC7702020000000000000000000000000000015 +S315E07EC780010008004101080840400000000000006A +S315E07EC790000000000000000002001000820210107F +S315E07EC7A08080000000000000000000000000000025 +S315E07EC7B004002000040420200000000000000000A9 +S315E07EC7C0000000000000010008004101080840402A +S315E07EC7D000000000000000000000000000000200F3 +S315E07EC7E01000820210108080000000000000000031 +S315E07EC7F00000000000000400200004042020000069 +S315E07EC80000000000000000000000000001000800BB +S315E07EC81041010808404000000000000000000000E2 +S315E07EC82000000000020010008202101080800000EE +S315E07EC8300000000000000000000000000400200070 +S315E07EC840040420200000000000000000000000003C +S315E07EC8500000010008004101080840400000000099 +S315E07EC86000000000000000000000020010008202CE +S315E07EC8701010808000000000000000000000000034 +S315E07EC88000000400200004042020000000000000D8 +S315E07EC89000000000000000000100080041010808D9 +S315E07EC8A04040000000000000000000200000200064 +S315E07EC8B0020010008202101080800000000000005E +S315E07EC8C00020000000000000040020000404202078 +S315E07EC8D00000000000000000A979000000000000D2 +S315E07EC8E000000000000000000010000000000000D4 +S315E07EC8F000000000000000000000000000000000D4 +S315E07EC90000000000000000000000000000000000C3 +S315E07EC91000000000000000000000000000000000B3 +S315E07EC92000000000000000000000000000000000A3 +S315E07EC9300000000000000000000000000000000093 +S315E07EC9400000000000000000000000000000000083 +S315E07EC9500000000000000000000000000000000073 +S315E07EC9600000000000000000000000000000000063 +S315E07EC9700000000000000000000000000000000053 +S315E07EC9800000000000000000000000000000000043 +S315E07EC9900000000000000000000000000000000033 +S315E07EC9A00000000000000000000000000000000023 +S315E07EC9B00000000000000000000000000000000013 +S315E07EC9C00000000000000000000000000000000003 +S315E07EC9D000000000000000000000000000000000F3 +S315E07EC9E000000000000000000000000000000000E3 +S315E07EC9F000000000000000000000000000000000D3 +S315E07ECA0000000000000000000000000000000000C2 +S315E07ECA1000000000000000000000000000000000B2 +S315E07ECA200000000000000000000000200020002042 +S315E07ECA300000000000200000000000000000000072 +S315E07ECA400000000000002000000000000000000062 +S315E07ECA500011360000000000001000000010040007 +S315E07ECA6024042020000000000000000000000000FA +S315E07ECA700000000001000901480840400000000077 +S315E07ECA80000000000000000000000000020012022C +S315E07ECA909010808000000000000000000000000092 +S315E07ECAA000000000040024042020000000000000B6 +S315E07ECAB000000000000000000000010009014808B7 +S315E07ECAC04040000000000000000000000000000082 +S315E07ECAD0000002001202901080800000000000003C +S315E07ECAE00000000000000000000004002404202076 +S315E07ECAF000000000000000000000000000000000D2 +S315E07ECB0001000901480840400000000000000000E6 +S315E07ECB1000000000000000000200120290108080FB +S315E07ECB2000000000000000000000000000000000A1 +S315E07ECB300400240420200000000000000000000025 +S315E07ECB4000000000000001000901480840400000A6 +S315E07ECB50000000000000000000000000000002006F +S315E07ECB6012029010808000000000000000000000AD +S315E07ECB7000000000000004002404202000000000E5 +S315E07ECB800000000000000000000000000100090136 +S315E07ECB904808404000000000000000000000002041 +S315E07ECBA0000000000200120290108080000000006B +S315E07ECBB000000000000000000000000004002404E5 +S315E07ECBC000200000000000000000DBDD0000000029 +S315E07ECBD000000000000000000004002000000000CD +S315E07ECBE000000000100000000000000000000001D0 +S315E07ECBF00008004000000000000000000000000089 +S315E07ECC00000000000000000200100080000000002E +S315E07ECC1000000000000000000000000000000004AC +S315E07ECC200020000000000000000000000000000080 +S315E07ECC300000000000010008004000000000000047 +S315E07ECC40000000000000000000000000000200106E +S315E07ECC5000800000000000000000000000000000F0 +S315E07ECC60000000000004002000000000000000003C +S315E07ECC700000000000000000000000010008004007 +S315E07ECC800000000000000000000000000000000040 +S315E07ECC90000000020010008000000000000000009E +S315E07ECCA000000000000000000000000400200000FC +S315E07ECCB00000000000000000000000000000000010 +S315E07ECCC000010008004000000000000000000000B7 +S315E07ECCD0000000000000000000020010008000005E +S315E07ECCE000000000000000000000000000000000E0 +S315E07ECCF000040020000000000000000000000000AC +S315E07ECD000000000000000001000800400000000076 +S315E07ECD1000000000000000000000000000000002AD +S315E07ECD2000100080000020000000000000000000EF +S315E07ECD30000000000000000400200000000000006B +S315E07ECD400000009D4C000000000000000000000096 +S315E07ECD50000400200000000000100000000000003B +S315E07ECD600000000000000001000800400000000016 +S315E07ECD70000000000000000000000000000000024D +S315E07ECD8000100080000000000000000000000000AF +S315E07ECD90000000000000000400200000000000000B +S315E07ECDA00000000000000000000000000001000816 +S315E07ECDB000400000000000000000000000000000CF +S315E07ECDC0000000000002001000800000000000006D +S315E07ECDD000000000000000000000000000040020CB +S315E07ECDE000000000000000000000000000000000DF +S315E07ECDF00000000100080040000000000000000086 +S315E07ECE00000000000000000000000002001000802C +S315E07ECE1000000000000000000000000000000000AE +S315E07ECE20000000040020000000000000000000007A +S315E07ECE300000000000000000000100080040000045 +S315E07ECE40000000000000000000000000000000007E +S315E07ECE5000020010008000000000000000000000DC +S315E07ECE60000000000000000000040020000000003A +S315E07ECE70000000000000000000000000000000014D +S315E07ECE8000080040000000000000000000000000F6 +S315E07ECE90000000000000000200100080000000009C +S315E07ECEA020000000200000000000000000000004DA +S315E07ECEB0202000000000000000000000556F00000A +S315E07ECEC00000000000000000000004042420201082 +S315E07ECED000000000100000000000000000000000DE +S315E07ECEE00101090848404000000000000000000003 +S315E07ECEF00000000000000000020212109080800018 +S315E07ECF0000000000000000000000000000000000BD +S315E07ECF100404242020000000000000000000000041 +S315E07ECF2000000000000001010908484040000000C2 +S315E07ECF300000000000000000000000000000020289 +S315E07ECF4012109080800000000000000000000000CB +S315E07ECF500000000000000404242020000000000001 +S315E07ECF60000000000000000000000000010109084A +S315E07ECF704840400000000000000000000000000085 +S315E07ECF800000000002021210908080000000000087 +S315E07ECF9000000000000000000000000004042420E1 +S315E07ECFA020000000000000000000000000000000FD +S315E07ECFB00000010109084840400000000000000032 +S315E07ECFC000000000000000000000020212109080C7 +S315E07ECFD0800000000000000000000000000000006D +S315E07ECFE00000040424202000000000000000000071 +S315E07ECFF000000000000000000101090848404000F2 +S315E07ED00000000000000000000000000000000000BC +S315E07ED01002023210908080000000000000000000D6 +S315E07ED0200000000000000000040424002000000050 +S315E07ED03000000000000F5A00000000000000100013 +S315E07ED0400000100004002010000000000000000038 +S315E07ED0500000000000000000000001000800400023 +S315E07ED060000000000000000000000000000000005C +S315E07ED07000000200100080000000000000000000BA +S315E07ED0800000000000000000000004002000000018 +S315E07ED090000000000000000000000000000000002C +S315E07ED0A001000800400000000000000000000000D3 +S315E07ED0B0000000000000000002001000800000007A +S315E07ED0C000000000000000000000000000000000FC +S315E07ED0D004002000000000000000000000000000C8 +S315E07ED0E00000000000000100080040000000000093 +S315E07ED0F000000000000000000000000000000200CA +S315E07ED100100080000000000000000000000000002B +S315E07ED1100000000000000400200000000000000087 +S315E07ED1200000000000000000000000000100080092 +S315E07ED130400000000000000000000000000000004B +S315E07ED14000000000020010008000000000000000E9 +S315E07ED1500000000000000000000000000400200047 +S315E07ED160000000000000000000000000000000005B +S315E07ED1700000010008004000000000000000000002 +S315E07ED1800000000020002000000002003000800049 +S315E07ED190000000000000000000000000000000002B +S315E07ED1A0200004200000000000000000000063D69E +S315E07ED1B000100000000000000010000000000000EB +S315E07ED1C000000000000000000000000000000000FB +S315E07ED1D000000000000000000000000000000000EB +S315E07ED1E000000000000000000000000000000000DB +S315E07ED1F000000000000000000000000000000000CB +S315E07ED20000000000000000000000000000000000BA +S315E07ED21000000000000000000000000000000000AA +S315E07ED220000000000000000000000000000000009A +S315E07ED230000000000000000000000000000000008A +S315E07ED240000000000000000000000000000000007A +S315E07ED250000000000000000000000000000000006A +S315E07ED260000000000000000000000000000000005A +S315E07ED270000000000000000000000000000000004A +S315E07ED280000000000000000000000000000000003A +S315E07ED290000000000000000000000000000000002A +S315E07ED2A0000000000000000000000000000000001A +S315E07ED2B0000000000000000000000000000000000A +S315E07ED2C000000000000000000000000000000000FA +S315E07ED2D000000000000000000000000000000000EA +S315E07ED2E000000000000000000000000000000000DA +S315E07ED2F000000000000000000000002000000000AA +S315E07ED30000000000000000000000000000000000B9 +S315E07ED31000000000000000000000000000000000A9 +S315E07ED3200000000000002005A000000000001000C4 +S315E07ED3300000000000000000001000000000100069 +S315E07ED3400000000000000000000000000000000079 +S315E07ED3500000000000000000000000000000000069 +S315E07ED3600000000000000000000000000000000059 +S315E07ED3700000000000000000000000000000000049 +S315E07ED3800000000000000000000000000000000039 +S315E07ED3900000000000000000000000000000000029 +S315E07ED3A00000000000000000000000000000000019 +S315E07ED3B00000000000000000000000000000000009 +S315E07ED3C000000000000000000000000000000000F9 +S315E07ED3D000000000000000000000000000000000E9 +S315E07ED3E000000000000000000000000000000000D9 +S315E07ED3F000000000000000000000000000000000C9 +S315E07ED40000000000000000000000000000000000B8 +S315E07ED41000000000000000000000000000000000A8 +S315E07ED4200000000000000000000000000000000098 +S315E07ED4300000000000000000000000000000000088 +S315E07ED4400000000000000000000000000000000078 +S315E07ED4500000000000000000000000000000000068 +S315E07ED4600000000000000000000000000000000058 +S315E07ED47000000000000000200020200020000000C8 +S315E07ED48000200020000000000020000000000000D8 +S315E07ED4900000000000000000000000000000000028 +S315E07ED4A07085000000000000001000001000000003 +S315E07ED4B000001010001000000010000000000000C8 +S315E07ED4C000000000000000000000000000000000F8 +S315E07ED4D000000000000000000000000000000000E8 +S315E07ED4E000000000000000000000000000000000D8 +S315E07ED4F000000000000000000000000000000000C8 +S315E07ED50000000000000000000000000000000000B7 +S315E07ED51000000000000000000000000000000000A7 +S315E07ED5200000000000000000000000000000000097 +S315E07ED5300000000000000000000000000000000087 +S315E07ED5400000000000000000000000000000000077 +S315E07ED5500000000000000000000000000000000067 +S315E07ED5600000000000000000000000000000000057 +S315E07ED5700000000000000000000000000000000047 +S315E07ED5800000000000000000000000000000000037 +S315E07ED5900000000000000000000000000000000027 +S315E07ED5A00000000000000000000000000000000017 +S315E07ED5B00000000000000000000000000000000007 +S315E07ED5C000000000000000000000000000000000F7 +S315E07ED5D000000000000000000000000000000000E7 +S315E07ED5E000000000000000000000000000200000B7 +S315E07ED5F00000200000200000200000200000000047 +S315E07ED6000020000000000000000000000000000096 +S315E07ED610000000000000000000020D00010008008E +S315E07ED620410009004801510A0852401002021010DA +S315E07ED63000000000020010008200120090028214B8 +S315E07ED64010A48020040420200000000004002000B6 +S315E07ED65004002400200504292048014108084040B2 +S315E07ED660000001000800410009004801410A085215 +S315E07ED670409002821010808000000200100082003E +S315E07ED68012009002821410A4802004042020000060 +S315E07ED6900000040020000400240020050429204820 +S315E07ED6A001410808404000000100080041000900F1 +S315E07ED6B04801410A085240900282101080800000A4 +S315E07ED6C002001000820012009002821410A48020D4 +S315E07ED6D00404202000000000040020000400240052 +S315E07ED6E02005042920480141080840400000010049 +S315E07ED6F00800410009004801410A08524090028232 +S315E07ED700101080800000020010008200120090025D +S315E07ED710821410A48020040420200000000004006F +S315E07ED7202000040024002005042920480141080841 +S315E07ED7304040000001000800410009004801410A1E +S315E07ED7400852409002821010808000000200100095 +S315E07ED750820012009002821410A48020040420200D +S315E07ED7600000000004202000040024002005042997 +S315E07ED77020480141080840400000000008004000C3 +S315E07ED78008004800400A08524090028210108080CD +S315E07ED7900000823500010008004000000000000025 +S315E07ED7A000000000000000000010000000020010F3 +S315E07ED7B00080000000000000000000000000000085 +S315E07ED7C000000000000400200000000000000000D1 +S315E07ED7D0000000000000000000000001000800409C +S315E07ED7E000000000000000000000000000000000D5 +S315E07ED7F00000000200100080000000000000000033 +S315E07ED8000000000000000000000000040020000090 +S315E07ED81000000000000000000000000000000000A4 +S315E07ED820000100080040000000000000000000004B +S315E07ED83000000000000000000002001000800000F2 +S315E07ED8400000000000000000000000000000000074 +S315E07ED8500004002000000000000000000000000040 +S315E07ED860000000000000000100080040000000000B +S315E07ED8700000000000000000000000000000000242 +S315E07ED88000100080000000000000000000000000A4 +S315E07ED8900000000000000004002000000000000000 +S315E07ED8A0000000000000000000000000000100080B +S315E07ED8B000400000000000000000000000000000C4 +S315E07ED8C00000000000020010008000000000000062 +S315E07ED8D000000000000000000000000000042020A0 +S315E07ED8E02000200000000000000000000000000094 +S315E07ED8F0000000000008004000000000000000007C +S315E07ED9000000000000000000000000D1BB0001081E +S315E07ED9100841400800400001020810400000020075 +S315E07ED92010020010000202101082801000800002B9 +S315E07ED930041020800000040020040020000404205F +S315E07ED94020040020000001040820400001000801B8 +S315E07ED95040080041010808414008004000010208F5 +S315E07ED96010408000020010028010008202101082B9 +S315E07ED9708010008000020410208000000400200455 +S315E07ED980002000040420200400200000010408207A +S315E07ED99040000100080140080041010808414008B6 +S315E07ED9A00040000102081040800002001002801054 +S315E07ED9B00082021010828010008000020410208017 +S315E07ED9C0000004002004002000040420200400203F +S315E07ED9D000000104082040000100080140080041E3 +S315E07ED9E0010808414008004000010208104080001E +S315E07ED9F002001002801000820210108280100080E9 +S315E07EDA0000020410208000000400200400200004B0 +S315E07EDA1004202004002000000104082040000100CC +S315E07EDA200801400800410108084140080040000125 +S315E07EDA300208104080000200100280100082021070 +S315E07EDA401082801000800002041020800000040016 +S315E07EDA5020040020000404200004002000000104CD +S315E07EDA6008204000012008014008004000080840E8 +S315E07EDA7040080040000002081040800002001002CC +S315E07EDA808010008268E600000000000000000000D2 +S315E07EDA900000000000000000000000000000000022 +S315E07EDAA00000000000000000000000000000000012 +S315E07EDAB00000000000000000000000000000000002 +S315E07EDAC000000000000000000000000000000000F2 +S315E07EDAD000000000000000000000000000000000E2 +S315E07EDAE000000000000000000000000000000000D2 +S315E07EDAF000000000000000000000000000000000C2 +S315E07EDB0000000000000000000000000000000000B1 +S315E07EDB1000000000000000000000000000000000A1 +S315E07EDB200000000000000000000000000000000091 +S315E07EDB300000000000000000000000000000000081 +S315E07EDB400000000000000000000000000000000071 +S315E07EDB500000000000000000000000000000000061 +S315E07EDB600000000000000000000000000000000051 +S315E07EDB700000000000000000000000000000000041 +S315E07EDB800000000000000000000000000000000031 +S315E07EDB900000000000000000000000000000000021 +S315E07EDBA00000000000000000000000000000000011 +S315E07EDBB00000000000000000000000000000000001 +S315E07EDBC000000000000000000000000000000000F1 +S315E07EDBD000000000000000000000000000000000E1 +S315E07EDBE000000000000000000000000000000000D1 +S315E07EDBF0000000000000000000000000003E49003A +S315E07EDC0000000000000000000000000000000000B0 +S315E07EDC1000000000000000000000000000000000A0 +S315E07EDC200000000000000000000000000000000090 +S315E07EDC300000000000000000000000000000000080 +S315E07EDC400000000000000000000000000000000070 +S315E07EDC500000000000000000000000000000000060 +S315E07EDC600000000000000000000000000000000050 +S315E07EDC700000000000000000000000000000000040 +S315E07EDC800000000000000000000000000000000030 +S315E07EDC900000000000000000000000000000000020 +S315E07EDCA00000000000000000000000000000000010 +S315E07EDCB00000000000000000000000000000000000 +S315E07EDCC000000000000000000000000000000000F0 +S315E07EDCD000000000000000000000000000000000E0 +S315E07EDCE000000000000000000000000000000000D0 +S315E07EDCF000000000000000000000000000000000C0 +S315E07EDD0000000000000000000000000000000000AF +S315E07EDD10000000000000000000000000000000009F +S315E07EDD20000000000000000000000000000000008F +S315E07EDD30000000000000000000000000000000007F +S315E07EDD40000000000000000000000000000000006F +S315E07EDD50000000000000000000000000000000005F +S315E07EDD60000000000000000000000000000000004F +S315E07EDD700000000000003E490000000000000000B8 +S315E07EDD80000000000000000000000000000000002F +S315E07EDD90000000000000000000000000000000001F +S315E07EDDA0000000000000000000000000000000000F +S315E07EDDB000000000000000000000000000000000FF +S315E07EDDC000000000000000000000000000000000EF +S315E07EDDD000000000000000000000000000000000DF +S315E07EDDE000000000000000000000000000000000CF +S315E07EDDF000000000000000000000000000000000BF +S315E07EDE0000000000000000000000000000000000AE +S315E07EDE10000000000000000000000000000000009E +S315E07EDE20000000000000000000000000000000008E +S315E07EDE30000000000000000000000000000000007E +S315E07EDE40000000000000000000000000000000006E +S315E07EDE50000000000000000000000000000000005E +S315E07EDE60000000000000000000000000000000004E +S315E07EDE70000000000000000000000000000000003E +S315E07EDE80000000000000000000000000000000002E +S315E07EDE90000000000000000000000000000000001E +S315E07EDEA0000000000000000000000000000000000E +S315E07EDEB000000000000000000000000000000000FE +S315E07EDEC000000000000000000000000000000000EE +S315E07EDED000000000000000000000000000000000DE +S315E07EDEE00000000000000000000000000000003E90 +S315E07EDEF04900000000000000000000000000000075 +S315E07EDF0000000000000000000000000000000000AD +S315E07EDF10000000000000000000000000000000009D +S315E07EDF20000000000000000000000000000000008D +S315E07EDF30000000000000000000000000000000007D +S315E07EDF40000000000000000000000000000000006D +S315E07EDF50000000000000000000000000000000005D +S315E07EDF60000000000000000000000000000000004D +S315E07EDF70000000000000000000000000000000003D +S315E07EDF80000000000000000000000000000000002D +S315E07EDF90000000000000000000000000000000001D +S315E07EDFA0000000000000000000000000000000000D +S315E07EDFB000000000000000000000000000000000FD +S315E07EDFC000000000000000000000000000000000ED +S315E07EDFD000000000000000000000000000000000DD +S315E07EDFE000000000000000000000000000000000CD +S315E07EDFF000000000000000000000000000000000BD +S315E07EE00000000000000000000000000000000000AC +S315E07EE010000000000000000000000000000000009C +S315E07EE020000000000000000000000000000000008C +S315E07EE030000000000000000000000000000000007C +S315E07EE040000000000000000000000000000000006C +S315E07EE050000000000000000000000000000000005C +S315E07EE06000000000000000003E49000000000000C5 +S315E07EE070000000000000000000000000000000003C +S315E07EE080000000000000000000000000000000002C +S315E07EE090000000000000000000000000000000001C +S315E07EE0A0000000000000000000000000000000000C +S315E07EE0B000000000000000000000000000000000FC +S315E07EE0C000000000000000000000000000000000EC +S315E07EE0D000000000000000000000000000000000DC +S315E07EE0E000000000000000000000000000000000CC +S315E07EE0F000000000000000000000000000000000BC +S315E07EE10000000000000000000000000000000000AB +S315E07EE110000000000000000000000000000000009B +S315E07EE120000000000000000000000000000000008B +S315E07EE130000000000000000000000000000000007B +S315E07EE140000000000000000000000000000000006B +S315E07EE150000000000000000000000000000000005B +S315E07EE160000000000000000000000000000000004B +S315E07EE170000000000000000000000000000000003B +S315E07EE180000000000000000000000000000000002B +S315E07EE190000000000000000000000000000000001B +S315E07EE1A0000000000000000000000000000000000B +S315E07EE1B000000000000000000000000000000000FB +S315E07EE1C000000000000000000000000000000000EB +S315E07EE1D000000000000000000000000000000000DB +S315E07EE1E0003E490000000000000000000000000044 +S315E07EE1F000000000000000000000000000000000BB +S315E07EE20000000000000000000000000000000000AA +S315E07EE210000000000000000000000000000000009A +S315E07EE220000000000000000000000000000000008A +S315E07EE230000000000000000000000000000000007A +S315E07EE240000000000000000000000000000000006A +S315E07EE250000000000000000000000000000000005A +S315E07EE260000000000000000000000000000000004A +S315E07EE270000000000000000000000000000000003A +S315E07EE280000000000000000000000000000000002A +S315E07EE290000000000000000000000000000000001A +S315E07EE2A0000000000000000000000000000000000A +S315E07EE2B000000000000000000000000000000000FA +S315E07EE2C000000000000000000000000000000000EA +S315E07EE2D000000000000000000000000000000000DA +S315E07EE2E000000000000000000000000000000000CA +S315E07EE2F000000000000000000000000000000000BA +S315E07EE30000000000000000000000000000000000A9 +S315E07EE3100000000000000000000000000000000099 +S315E07EE3200000000000000000000000000000000089 +S315E07EE3300000000000000000000000000000000079 +S315E07EE3400000000000000000000000000000000069 +S315E07EE350000000000000000000003E4900000000D2 +S315E07EE3600000000000000000000000000000000049 +S315E07EE3700000000000000000000000000000000039 +S315E07EE3800000000000000000000000000000000029 +S315E07EE3900000000000000000000000000000000019 +S315E07EE3A00000000000000000000000000000000009 +S315E07EE3B000000000000000000000000000000000F9 +S315E07EE3C000000000000000000000000000000000E9 +S315E07EE3D000000000000000000000000000000000D9 +S315E07EE3E000000000000000000000000000000000C9 +S315E07EE3F000000000000000000000000000000000B9 +S315E07EE40000000000000000000000000000000000A8 +S315E07EE4100000000000000000000000000000000098 +S315E07EE4200000000000000000000000000000000088 +S315E07EE4300000000000000000000000000000000078 +S315E07EE4400000000000000000000000000000000068 +S315E07EE4500000000000000000000000000000000058 +S315E07EE4600000000000000000000000000000000048 +S315E07EE4700000000000000000000000000000000038 +S315E07EE4800000000000000000000000000000000028 +S315E07EE4900000000000000000000000000000000018 +S315E07EE4A00000000000000000000000000000000008 +S315E07EE4B000000000000000000000000000000000F8 +S315E07EE4C000000000000000000000000000000000E8 +S315E07EE4D00000003E49000000000000000000000051 +S315E07EE4E000000000000000000000000000000000C8 +S315E07EE4F000000000000000000000000000000000B8 +S315E07EE50000000000000000000000000000000000A7 +S315E07EE5100000000000000000000000000000000097 +S315E07EE5200000000000000000000000000000000087 +S315E07EE5300000000000000000000000000000000077 +S315E07EE5400000000000000000000000000000000067 +S315E07EE5500000000000000000000000000000000057 +S315E07EE5600000000000000000000000000000000047 +S315E07EE5700000000000000000000000000000000037 +S315E07EE5800000000000000000000000000000000027 +S315E07EE5900000000000000000000000000000000017 +S315E07EE5A00000000000000000000000000000000007 +S315E07EE5B000000000000000000000000000000000F7 +S315E07EE5C000000000000000000000000000000000E7 +S315E07EE5D000000000000000000000000000000000D7 +S315E07EE5E000000000000000000000000000000000C7 +S315E07EE5F000000000000000000000000000000000B7 +S315E07EE60000000000000000000000000000000000A6 +S315E07EE6100000000000000000000000000000000096 +S315E07EE6200000000000000000000000000000000086 +S315E07EE6300000000000000000000000000000000076 +S315E07EE6400000000000000000000000003E490000DF +S315E07EE6500000000000000000000000000000000056 +S315E07EE6600000000000000000000000000000000046 +S315E07EE6700000000000000000000000000000000036 +S315E07EE6800000000000000000000000000000000026 +S315E07EE6900000000000000000000000000000000016 +S315E07EE6A00000000000000000000000000000000006 +S315E07EE6B000000000000000000000000000000000F6 +S315E07EE6C000000000000000000000000000000000E6 +S315E07EE6D000000000000000000000000000000000D6 +S315E07EE6E000000000000000000000000000000000C6 +S315E07EE6F000000000000000000000000000000000B6 +S315E07EE70000000000000000000000000000000000A5 +S315E07EE7100000000000000000000000000000000095 +S315E07EE7200000000000000000000000000000000085 +S315E07EE7300000000000000000000000000000000075 +S315E07EE7400000000000000000000000000000000065 +S315E07EE7500000000000000000000000000000000055 +S315E07EE7600000000000000000000000000000000045 +S315E07EE7700000000000000000000000000000000035 +S315E07EE7800000000000000000000000000000000025 +S315E07EE7900000000000000000000000000000000015 +S315E07EE7A00000000000000000000000000000000005 +S315E07EE7B000000000000000000000000000000000F5 +S315E07EE7C000000000003E490000000000000000005E +S315E07EE7D000000000000000000000000000000000D5 +S315E07EE7E000000000000000000000000000000000C5 +S315E07EE7F000000000000000000000000000000000B5 +S315E07EE80000000000000000000000000000000000A4 +S315E07EE8100000000000000000000000000000000094 +S315E07EE8200000000000000000000000000000000084 +S315E07EE8300000000000000000000000000000000074 +S315E07EE8400000000000000000000000000000000064 +S315E07EE8500000000000000000000000000000000054 +S315E07EE8600000000000000000000000000000000044 +S315E07EE8700000000000000000000000000000000034 +S315E07EE8800000000000000000000000000000000024 +S315E07EE8900000000000000000000000000000000014 +S315E07EE8A00000000000000000000000000000000004 +S315E07EE8B000000000000000000000000000000000F4 +S315E07EE8C000000000000000000000000000000000E4 +S315E07EE8D000000000000000000000000000000000D4 +S315E07EE8E000000000000000000000000000000000C4 +S315E07EE8F000000000000000000000000000000000B4 +S315E07EE90000000000000000000000000000000000A3 +S315E07EE9100000000000000000000000000000000093 +S315E07EE9200000000000000000000000000000000083 +S315E07EE93000000000000000000000000000003E49EC +S315E07EE9400000000000000000000000000000000063 +S315E07EE9500000000000000000000000000000000053 +S315E07EE9600000000000000000000000000000000043 +S315E07EE9700000000000000000000000000000000033 +S315E07EE9800000000000000000000000000000000023 +S315E07EE9900000000000000000000000000000000013 +S315E07EE9A00000000000000000000000000000000003 +S315E07EE9B000000000000000000000000000000000F3 +S315E07EE9C000000000000000000000000000000000E3 +S315E07EE9D000000000000000000000000000000000D3 +S315E07EE9E000000000000000000000000000000000C3 +S315E07EE9F000000000000000000000000000000000B3 +S315E07EEA0000000000000000000000000000000000A2 +S315E07EEA100000000000000000000000000000000092 +S315E07EEA200000000000000000000000000000000082 +S315E07EEA300000000000000000000000000000000072 +S315E07EEA400000000000000000000000000000000062 +S315E07EEA500000000000000000000000000000000052 +S315E07EEA600000000000000000000000000000000042 +S315E07EEA700000000000000000000000000000000032 +S315E07EEA800000000000000000000000000000000022 +S315E07EEA900000000000000000000000000000000012 +S315E07EEAA00000000000000000000000000000000002 +S315E07EEAB0000000000000003E49000000000000006B +S315E07EEAC000000000000000000000000000000000E2 +S315E07EEAD000000000000000000000000000000000D2 +S315E07EEAE000000000000000000000000000000000C2 +S315E07EEAF000000000000000000000000000000000B2 +S315E07EEB0000000000000000000000000000000000A1 +S315E07EEB100000000000000000000000000000000091 +S315E07EEB200000000000000000000000000000000081 +S315E07EEB300000000000000000000000000000000071 +S315E07EEB400000000000000000000000000000000061 +S315E07EEB500000000000000000000000000000000051 +S315E07EEB600000000000000000000000000000000041 +S315E07EEB700000000000000000000000000000000031 +S315E07EEB800000000000000000000000000000000021 +S315E07EEB900000000000000000000000000000000011 +S315E07EEBA00000000000000000000000000000000001 +S315E07EEBB000000000000000000000000000000000F1 +S315E07EEBC000000000000000000000000000000000E1 +S315E07EEBD000000000000000000000000000000000D1 +S315E07EEBE000000000000000000000000000000000C1 +S315E07EEBF000000000000000000000000000000000B1 +S315E07EEC0000000000000000000000000000000000A0 +S315E07EEC100000000000000000000000000000000090 +S315E07EEC200000000000000000000000000000000080 +S315E07EEC303E490000000000000000000000000000E9 +S315E07EEC400000000000000000000000000000000060 +S315E07EEC500000000000000000000000000000000050 +S315E07EEC600000000000000000000000000000000040 +S315E07EEC700000000000000000000000000000000030 +S315E07EEC800000000000000000000000000000000020 +S315E07EEC900000000000000000000000000000000010 +S315E07EECA00000000000000000000000000000000000 +S315E07EECB000000000000000000000000000000000F0 +S315E07EECC000000000000000000000000000000000E0 +S315E07EECD000000000000000000000000000000000D0 +S315E07EECE000000000000000000000000000000000C0 +S315E07EECF000000000000000000000000000000000B0 +S315E07EED00000000000000000000000000000000009F +S315E07EED10000000000000000000000000000000008F +S315E07EED20000000000000000000000000000000007F +S315E07EED30000000000000000000000000000000006F +S315E07EED40000000000000000000000000000000005F +S315E07EED50000000000000000000000000000000004F +S315E07EED60000000000000000000000000000000003F +S315E07EED70000000000000000000000000000000002F +S315E07EED80000000000000000000000000000000001F +S315E07EED90000000000000000000000000000000000F +S315E07EEDA00000000000000000003E49000000000078 +S315E07EEDB000000000000000000000000000000000EF +S315E07EEDC000000000000000000000000000000000DF +S315E07EEDD000000000000000000000000000000000CF +S315E07EEDE000000000000000000000000000000000BF +S315E07EEDF000000000000000000000000000000000AF +S315E07EEE00000000000000000000000000000000009E +S315E07EEE10000000000000000000000000000000008E +S315E07EEE20000000000000000000000000000000007E +S315E07EEE30000000000000000000000000000000006E +S315E07EEE40000000000000000000000000000000005E +S315E07EEE50000000000000000000000000000000004E +S315E07EEE60000000000000000000000000000000003E +S315E07EEE70000000000000000000000000000000002E +S315E07EEE80000000000000000000000000000000001E +S315E07EEE90000000000000000000000000000000000E +S315E07EEEA000000000000000000000000000000000FE +S315E07EEEB000000000000000000000000000000000EE +S315E07EEEC000000000000000000000000000000000DE +S315E07EEED000000000000000000000000000000000CE +S315E07EEEE000000000000000000000000000000000BE +S315E07EEEF000000000000000000000000000000000AE +S315E07EEF00000000000000000000000000000000009D +S315E07EEF10000000000000000000000000000000008D +S315E07EEF2000003E49000000000000000000000000F6 +S315E07EEF30000000000000000000000000000000006D +S315E07EEF40000000000000000000000000000000005D +S315E07EEF50000000000000000000000000000000004D +S315E07EEF60000000000000000000000000000000003D +S315E07EEF70000000000000000000000000000000002D +S315E07EEF80000000000000000000000000000000001D +S315E07EEF90000000000000000000000000000000000D +S315E07EEFA000000000000000000000000000000000FD +S315E07EEFB000000000000000000000000000000000ED +S315E07EEFC000000000000000000000000000000000DD +S315E07EEFD000000000000000000000000000000000CD +S315E07EEFE000000000000000000000000000000000BD +S315E07EEFF000000000000000000000000000000000AD +S315E07EF000000000000000000000000000000000009C +S315E07EF010000000000000000000000000000000008C +S315E07EF020000000000000000000000000000000007C +S315E07EF030000000000000000000000000000000006C +S315E07EF040000000000000000000000000000000005C +S315E07EF050000000000000000000000000000000004C +S315E07EF060000000000000000000000000000000003C +S315E07EF070000000000000000000000000000000002C +S315E07EF080000000000000000000000000000000001C +S315E07EF09000000000000000000000003E4900000085 +S315E07EF0A000000000000000000000000000000000FC +S315E07EF0B000000000000000000000000000000000EC +S315E07EF0C000000000000000000000000000000000DC +S315E07EF0D000000000000000000000000000000000CC +S315E07EF0E000000000000000000000000000000000BC +S315E07EF0F000000000000000000000000000000000AC +S315E07EF100000000000000000000000000000000009B +S315E07EF110000000000000000000000000000000008B +S315E07EF120000000000000000000000000000000007B +S315E07EF130000000000000000000000000000000006B +S315E07EF140000000000000000000000000000000005B +S315E07EF150000000000000000000000000000000004B +S315E07EF160000000000000000000000000000000003B +S315E07EF170000000000000000000000000000000002B +S315E07EF180000000000000000000000000000000001B +S315E07EF190000000000000000000000000000000000B +S315E07EF1A000000000000000000000000000000000FB +S315E07EF1B000000000000000000000000000000000EB +S315E07EF1C000000000000000000000000000000000DB +S315E07EF1D000000000000000000000000000000000CB +S315E07EF1E000000000000000000000000000000000BB +S315E07EF1F000000000000000000000000000000000AB +S315E07EF200000000000000000000000000000000009A +S315E07EF210000000003E490000000000000000000003 +S315E07EF220000000000000000000000000000000007A +S315E07EF230000000000000000000000000000000006A +S315E07EF240000000000000000000000000000000005A +S315E07EF250000000000000000000000000000000004A +S315E07EF260000000000000000000000000000000003A +S315E07EF270000000000000000000000000000000002A +S315E07EF280000000000000000000000000000000001A +S315E07EF290000000000000000000000000000000000A +S315E07EF2A000000000000000000000000000000000FA +S315E07EF2B000000000000000000000000000000000EA +S315E07EF2C000000000000000000000000000000000DA +S315E07EF2D000000000000000000000000000000000CA +S315E07EF2E000000000000000000000000000000000BA +S315E07EF2F000000000000000000000000000000000AA +S315E07EF3000000000000000000000000000000000099 +S315E07EF3100000000000000000000000000000000089 +S315E07EF3200000000000000000000000000000000079 +S315E07EF3300000000000000000000000000000000069 +S315E07EF3400000000000000000000000000000000059 +S315E07EF3500000000000000000000000000000000049 +S315E07EF3600000000000000000000000000000000039 +S315E07EF3700000000000000000000000000000000029 +S315E07EF380000000000000000000000000003E490092 +S315E07EF3900000000000000000000000000000000009 +S315E07EF3A000000000000000000000000000000000F9 +S315E07EF3B000000000000000000000000000000000E9 +S315E07EF3C000000000000000000000000000000000D9 +S315E07EF3D000000000000000000000000000000000C9 +S315E07EF3E000000000000000000000000000000000B9 +S315E07EF3F000000000000000000000000000000000A9 +S315E07EF4000000000000000000000000000000000098 +S315E07EF4100000000000000000000000000000000088 +S315E07EF4200000000000000000000000000000000078 +S315E07EF4300000000000000000000000000000000068 +S315E07EF4400000000000000000000000000000000058 +S315E07EF4500000000000000000000000000000000048 +S315E07EF4600000000000000000000000000000000038 +S315E07EF4700000000000000000000000000000000028 +S315E07EF4800000000000000000000000000000000018 +S315E07EF4900000000000000000000000000000000008 +S315E07EF4A000000000000000000000000000000000F8 +S315E07EF4B000000000000000000000000000000000E8 +S315E07EF4C000000000000000000000000000000000D8 +S315E07EF4D000000000000000000000000000000000C8 +S315E07EF4E000000000000000000000000000000000B8 +S315E07EF4F000000000000000000000000000000000A8 +S315E07EF5000000000000003E49000000000000000010 +S315E07EF5100000000000000000000000000000000087 +S315E07EF5200000000000000000000000000000000077 +S315E07EF5300000000000000000000000000000000067 +S315E07EF5400000000000000000000000000000000057 +S315E07EF5500000000000000000000000000000000047 +S315E07EF5600000000000000000000000000000000037 +S315E07EF5700000000000000000000000000000000027 +S315E07EF5800000000000000000000000000000000017 +S315E07EF5900000000000000000000000000000000007 +S315E07EF5A000000000000000000000000000000000F7 +S315E07EF5B000000000000000000000000000000000E7 +S315E07EF5C000000000000000000000000000000000D7 +S315E07EF5D000000000000000000000000000000000C7 +S315E07EF5E000000000000000000000000000000000B7 +S315E07EF5F000000000000000000000000000000000A7 +S315E07EF6000000000000000000000000000000000096 +S315E07EF6100000000000000000000000000000000086 +S315E07EF6200000000000000000000000000000000076 +S315E07EF6300000000000000000000000000000000066 +S315E07EF6400000000000000000000000000000000056 +S315E07EF6500000000000000000000000000000000046 +S315E07EF6600000000000000000000000000000000036 +S315E07EF6700000000000000000000000000000003EE8 +S315E07EF68049000000000000000000000000000000CD +S315E07EF6900000000000000000000000000000000006 +S315E07EF6A000000000000000000000000000000000F6 +S315E07EF6B000000000000000000000000000000000E6 +S315E07EF6C000000000000000000000000000000000D6 +S315E07EF6D000000000000000000000000000000000C6 +S315E07EF6E000000000000000000000000000000000B6 +S315E07EF6F000000000000000000000000000000000A6 +S315E07EF7000000000000000000000000000000000095 +S315E07EF7100000000000000000000000000000000085 +S315E07EF7200000000000000000000000000000000075 +S315E07EF7300000000000000000000000000000000065 +S315E07EF7400000000000000000000000000000000055 +S315E07EF7500000000000000000000000000000000045 +S315E07EF7600000000000000000000000000000000035 +S315E07EF7700000000000000000000000000000000025 +S315E07EF7800000000000000000000000000000000015 +S315E07EF7900000000000000000000000000000000005 +S315E07EF7A000000000000000000000000000000000F5 +S315E07EF7B000000000000000000000000000000000E5 +S315E07EF7C000000000000000000000000000000000D5 +S315E07EF7D000000000000000000000000000000000C5 +S315E07EF7E000000000000000000000000000000000B5 +S315E07EF7F000000000000000003E490000000000001E +S315E07EF8000000000000000000000000000000000094 +S315E07EF8100000000000000000000000000000000084 +S315E07EF8200000000000000000000000000000000074 +S315E07EF8300000000000000000000000000000000064 +S315E07EF8400000000000000000000000000000000054 +S315E07EF8500000000000000000000000000000000044 +S315E07EF8600000000000000000000000000000000034 +S315E07EF8700000000000000000000000000000000024 +S315E07EF8800000000000000000000000000000000014 +S315E07EF8900000000000000000000000000000000004 +S315E07EF8A000000000000000000000000000000000F4 +S315E07EF8B000000000000000000000000000000000E4 +S315E07EF8C000000000000000000000000000000000D4 +S315E07EF8D000000000000000000000000000000000C4 +S315E07EF8E000000000000000000000000000000000B4 +S315E07EF8F000000000000000000000000000000000A4 +S315E07EF9000000000000000000000000000000000093 +S315E07EF9100000000000000000000000000000000083 +S315E07EF9200000000000000000000000000000000073 +S315E07EF9300000000000000000000000000000000063 +S315E07EF9400000000000000000000000000000000053 +S315E07EF9500000000000000000000000000000000043 +S315E07EF9600000000000000000000000000000000033 +S315E07EF970003E49000000000000000000000000009C +S315E07EF9800000000000000000000000000000000013 +S315E07EF9900000000000000000000000000000000003 +S315E07EF9A000000000000000000000000000000000F3 +S315E07EF9B000000000000000000000000000000000E3 +S315E07EF9C000000000000000000000000000000000D3 +S315E07EF9D000000000000000000000000000000000C3 +S315E07EF9E000000000000000000000000000000000B3 +S315E07EF9F000000000000000000000000000000000A3 +S315E07EFA000000000000000000000000000000000092 +S315E07EFA100000000000000000000000000000000082 +S315E07EFA200000000000000000000000000000000072 +S315E07EFA300000000000000000000000000000000062 +S315E07EFA400000000000000000000000000000000052 +S315E07EFA500000000000000000000000000000000042 +S315E07EFA600000000000000000000000000000000032 +S315E07EFA700000000000000000000000000000000022 +S315E07EFA800000000000000000000000000000000012 +S315E07EFA900000000000000000000000000000000002 +S315E07EFAA000000000000000000000000000000000F2 +S315E07EFAB000000000000000000000000000000000E2 +S315E07EFAC000000000000000000000000000000000D2 +S315E07EFAD000000000000000000000000000000000C2 +S315E07EFAE0000000000000000000003E49000000002B +S315E07EFAF000000000000000000000000000000000A2 +S315E07EFB000000000000000000000000000000000091 +S315E07EFB100000000000000000000000000000000081 +S315E07EFB200000000000000000000000000000000071 +S315E07EFB300000000000000000000000000000000061 +S315E07EFB400000000000000000000000000000000051 +S315E07EFB500000000000000000000000000000000041 +S315E07EFB600000000000000000000000000000000031 +S315E07EFB700000000000000000000000000000000021 +S315E07EFB800000000000000000000000000000000011 +S315E07EFB900000000000000000000000000000000001 +S315E07EFBA000000000000000000000000000000000F1 +S315E07EFBB000000000000000000000000000000000E1 +S315E07EFBC000000000000000000000000000000000D1 +S315E07EFBD000000000000000000000000000000000C1 +S315E07EFBE000000000000000000000000000000000B1 +S315E07EFBF000000000000000000000000000000000A1 +S315E07EFC000000000000000000000000000000000090 +S315E07EFC100000000000000000000000000000000080 +S315E07EFC200000000000000000000000000000000070 +S315E07EFC300000000000000000000000000000000060 +S315E07EFC400000000000000000000000000000000050 +S315E07EFC500000000000000000000000000000000040 +S315E07EFC600000003E490000000000000000000000A9 +S315E07EFC700000000000000000000000000000000020 +S315E07EFC800000000000000000000000000000000010 +S315E07EFC900000000000000000000000000000000000 +S315E07EFCA000000000000000000000000000000000F0 +S315E07EFCB000000000000000000000000000000000E0 +S315E07EFCC000000000000000000000000000000000D0 +S315E07EFCD000000000000000000000000000000000C0 +S315E07EFCE000000000000000000000000000000000B0 +S315E07EFCF000000000000000000000000000000000A0 +S315E07EFD00000000000000000000000000000000008F +S315E07EFD10000000000000000000000000000000007F +S315E07EFD20000000000000000000000000000000006F +S315E07EFD30000000000000000000000000000000005F +S315E07EFD40000000000000000000000000000000004F +S315E07EFD50000000000000000000000000000000003F +S315E07EFD60000000000000000000000000000000002F +S315E07EFD70000000000000000000000000000000001F +S315E07EFD80000000000000000000000000000000000F +S315E07EFD9000000000000000000000000000000000FF +S315E07EFDA000000000000000000000000000000000EF +S315E07EFDB000000000000000000000000000000000DF +S315E07EFDC000000000000000000000000000000000CF +S315E07EFDD00000000000000000000000003E49000038 +S315E07EFDE000000000000000000000000000000000AF +S315E07EFDF0000000000000000000000000000000009F +S315E07EFE00000000000000000000000000000000008E +S315E07EFE10000000000000000000000000000000007E +S315E07EFE20000000000000000000000000000000006E +S315E07EFE30000000000000000000000000000000005E +S315E07EFE40000000000000000000000000000000004E +S315E07EFE50000000000000000000000000000000003E +S315E07EFE60000000000000000000000000000000002E +S315E07EFE70000000000000000000000000000000001E +S315E07EFE80000000000000000000000000000000000E +S315E07EFE9000000000000000000000000000000000FE +S315E07EFEA000000000000000000000000000000000EE +S315E07EFEB000000000000000000000000000000000DE +S315E07EFEC000000000000000000000000000000000CE +S315E07EFED000000000000000000000000000000000BE +S315E07EFEE000000000000000000000000000000000AE +S315E07EFEF0000000000000000000000000000000009E +S315E07EFF00000000000000000000000000000000008D +S315E07EFF10000000000000000000000000000000007D +S315E07EFF20000000000000000000000000000000006D +S315E07EFF30000000000000000000000000000000005D +S315E07EFF40000000000000000000000000000000004D +S315E07EFF5000000000003E49000000000000000000B6 +S315E07EFF60000000000000000000000000000000002D +S315E07EFF70000000000000000000000000000000001D +S315E07EFF80000000000000000000000000000000000D +S315E07EFF9000000000000000000000000000000000FD +S315E07EFFA000000000000000000000000000000000ED +S315E07EFFB000000000000000000000000000000000DD +S315E07EFFC000000000000000000000000000000000CD +S315E07EFFD000000000000000000000000000000000BD +S315E07EFFE000000000000000000000000000000000AD +S315E07EFFF0000000000000000000000000000000009D +S315E07F0000000000000000000000000000000000008B +S315E07F0010000000000000000000000000000000007B +S315E07F0020000000000000000000000000000000006B +S315E07F0030000000000000000000000000000000005B +S315E07F0040000000000000000000000000000000004B +S315E07F0050000000000000000000000000000000003B +S315E07F0060000000000000000000000000000000002B +S315E07F0070000000000000000000000000000000001B +S315E07F0080000000000000000000000000000000000B +S315E07F009000000000000000000000000000000000FB +S315E07F00A000000000000000000000000000000000EB +S315E07F00B000000000000000000000000000000000DB +S315E07F00C000000000000000000000000000003E4944 +S315E07F00D000000000000000000000000000000000BB +S315E07F00E000000000000000000000000000000000AB +S315E07F00F0000000000000000000000000000000009B +S315E07F0100000000000000000000000000000000008A +S315E07F0110000000000000000000000000000000007A +S315E07F0120000000000000000000000000000000006A +S315E07F0130000000000000000000000000000000005A +S315E07F0140000000000000000000000000000000004A +S315E07F0150000000000000000000000000000000003A +S315E07F0160000000000000000000000000000000002A +S315E07F0170000000000000000000000000000000001A +S315E07F0180000000000000000000000000000000000A +S315E07F019000000000000000000000000000000000FA +S315E07F01A000000000000000000000000000000000EA +S315E07F01B000000000000000000000000000000000DA +S315E07F01C000000000000000000000000000000000CA +S315E07F01D000000000000000000000000000000000BA +S315E07F01E000000000000000000000000000000000AA +S315E07F01F0000000000000000000000000000000009A +S315E07F02000000000000000000000000000000000089 +S315E07F02100000000000000000000000000000000079 +S315E07F02200000000000000000000000000000000069 +S315E07F02300000000000000000000000000000000059 +S315E07F0240000000000000003E4900000000000000C2 +S315E07F02500000000000000000000000000000000039 +S315E07F02600000000000000000000000000000000029 +S315E07F02700000000000000000000000000000000019 +S315E07F02800000000000000000000000000000000009 +S315E07F029000000000000000000000000000000000F9 +S315E07F02A000000000000000000000000000000000E9 +S315E07F02B000000000000000000000000000000000D9 +S315E07F02C000000000000000000000000000000000C9 +S315E07F02D000000000000000000000000000000000B9 +S315E07F02E000000000000000000000000000000000A9 +S315E07F02F00000000000000000000000000000000099 +S315E07F03000000000000000000000000000000000088 +S315E07F03100000000000000000000000000000000078 +S315E07F03200000000000000000000000000000000068 +S315E07F03300000000000000000000000000000000058 +S315E07F03400000000000000000000000000000000048 +S315E07F03500000000000000000000000000000000038 +S315E07F03600000000000000000000000000000000028 +S315E07F03700000000000000000000000000000000018 +S315E07F03800000000000000000000000000000000008 +S315E07F039000000000000000000000000000000000F8 +S315E07F03A000000000000000000000000000000000E8 +S315E07F03B000000000000000000000000000000000D8 +S315E07F03C03E49000000000000000000000000000041 +S315E07F03D000000000000000000000000000000000B8 +S315E07F03E000000000000000000000000000000000A8 +S315E07F03F00000000000000000000000000000000098 +S315E07F04000000000000000000000000000000000087 +S315E07F04100000000000000000000000000000000077 +S315E07F04200000000000000000000000000000000067 +S315E07F04300000000000000000000000000000000057 +S315E07F04400000000000000000000000000000000047 +S315E07F04500000000000000000000000000000000037 +S315E07F04600000000000000000000000000000000027 +S315E07F04700000000000000000000000000000000017 +S315E07F04800000000000000000000000000000000007 +S315E07F049000000000000000000000000000000000F7 +S315E07F04A000000000000000000000000000000000E7 +S315E07F04B000000000000000000000000000000000D7 +S315E07F04C000000000000000000000000000000000C7 +S315E07F04D000000000000000000000000000000000B7 +S315E07F04E000000000000000000000000000000000A7 +S315E07F04F00000000000000000000000000000000097 +S315E07F05000000000000000000000000000000000086 +S315E07F05100000000000000000000000000000000076 +S315E07F05200000000000000000000000000000000066 +S315E07F05300000000000000000003E490000000000CF +S315E07F05400000000000000000000000000000000046 +S315E07F05500000000000000000000000000000000036 +S315E07F05600000000000000000000000000000000026 +S315E07F05700000000000000000000000000000000016 +S315E07F05800000000000000000000000000000000006 +S315E07F059000000000000000000000000000000000F6 +S315E07F05A000000000000000000000000000000000E6 +S315E07F05B000000000000000000000000000000000D6 +S315E07F05C000000000000000000000000000000000C6 +S315E07F05D000000000000000000000000000000000B6 +S315E07F05E000000000000000000000000000000000A6 +S315E07F05F00000000000000000000000000000000096 +S315E07F06000000000000000000000000000000000085 +S315E07F06100000000000000000000000000000000075 +S315E07F06200000000000000000000000000000000065 +S315E07F06300000000000000000000000000000000055 +S315E07F06400000000000000000000000000000000045 +S315E07F06500000000000000000000000000000000035 +S315E07F06600000000000000000000000000000000025 +S315E07F06700000000000000000000000000000000015 +S315E07F06800000000000000000000000000000000005 +S315E07F069000000000000000000000000000000000F5 +S315E07F06A000000000000000000000000000000000E5 +S315E07F06B000003E490000000000000000000000004E +S315E07F06C000000000000000000000000000000000C5 +S315E07F06D000000000000000000000000000000000B5 +S315E07F06E000000000000000000000000000000000A5 +S315E07F06F00000000000000000000000000000000095 +S315E07F07000000000000000000000000000000000084 +S315E07F07100000000000000000000000000000000074 +S315E07F07200000000000000000000000000000000064 +S315E07F07300000000000000000000000000000000054 +S315E07F07400000000000000000000000000000000044 +S315E07F07500000000000000000000000000000000034 +S315E07F07600000000000000000000000000000000024 +S315E07F07700000000000000000000000000000000014 +S315E07F07800000000000000000000000000000000004 +S315E07F079000000000000000000000000000000000F4 +S315E07F07A000000000000000000000000000000000E4 +S315E07F07B000000000000000000000000000000000D4 +S315E07F07C000000000000000000000000000000000C4 +S315E07F07D000000000000000000000000000000000B4 +S315E07F07E000000000000000000000000000000000A4 +S315E07F07F00000000000000000000000000000000094 +S315E07F08000000000000000000000000000000000083 +S315E07F08100000000000000000000000000000000073 +S315E07F082000000000000000000000003E49000000DC +S315E07F08300000000000000000000000000000000053 +S315E07F08400000000000000000000000000000000043 +S315E07F08500000000000000000000000000000000033 +S315E07F08600000000000000000000000000000000023 +S315E07F08700000000000000000000000000000000013 +S315E07F08800000000000000000000000000000000003 +S315E07F089000000000000000000000000000000000F3 +S315E07F08A000000000000000000000000000000000E3 +S315E07F08B000000000000000000000000000000000D3 +S315E07F08C000000000000000000000000000000000C3 +S315E07F08D000000000000000000000000000000000B3 +S315E07F08E000000000000000000000000000000000A3 +S315E07F08F00000000000000000000000000000000093 +S315E07F09000000000000000000000000000000000082 +S315E07F09100000000000000000000000000000000072 +S315E07F09200000000000000000000000000000000062 +S315E07F09300000000000000000000000000000000052 +S315E07F09400000000000000000000000000000000042 +S315E07F09500000000000000000000000000000000032 +S315E07F09600000000000000000000000000000000022 +S315E07F09700000000000000000000000000000000012 +S315E07F09800000000000000000000000000000000002 +S315E07F099000000000000000000000000000000000F2 +S315E07F09A0000000003E49000000000000000000005B +S315E07F09B000000000000000000000000000000000D2 +S315E07F09C000000000000000000000000000000000C2 +S315E07F09D000000000000000000000000000000000B2 +S315E07F09E000000000000000000000000000000000A2 +S315E07F09F00000000000000000000000000000000092 +S315E07F0A000000000000000000000000000000000081 +S315E07F0A100000000000000000000000000000000071 +S315E07F0A200000000000000000000000000000000061 +S315E07F0A300000000000000000000000000000000051 +S315E07F0A400000000000000000000000000000000041 +S315E07F0A500000000000000000000000000000000031 +S315E07F0A600000000000000000000000000000000021 +S315E07F0A700000000000000000000000000000000011 +S315E07F0A800000000000000000000000000000000001 +S315E07F0A9000000000000000000000000000000000F1 +S315E07F0AA000000000000000000000000000000000E1 +S315E07F0AB000000000000000000000000000000000D1 +S315E07F0AC000000000000000000000000000000000C1 +S315E07F0AD000000000000000000000000000000000B1 +S315E07F0AE000000000000000000000000000000000A1 +S315E07F0AF00000000000000000000000000000000091 +S315E07F0B000000000000000000000000000000000080 +S315E07F0B10000000000000000000000000003E4900E9 +S315E07F0B200000000000000000000000000000000060 +S315E07F0B300000000000000000000000000000000050 +S315E07F0B400000000000000000000000000000000040 +S315E07F0B500000000000000000000000000000000030 +S315E07F0B600000000000000000000000000000000020 +S315E07F0B700000000000000000000000000000000010 +S315E07F0B800000000000000000000000000000000000 +S315E07F0B9000000000000000000000000000000000F0 +S315E07F0BA000000000000000000000000000000000E0 +S315E07F0BB000000000000000000000000000000000D0 +S315E07F0BC000000000000000000000000000000000C0 +S315E07F0BD000000000000000000000000000000000B0 +S315E07F0BE000000000000000000000000000000000A0 +S315E07F0BF00000000000000000000000000000000090 +S315E07F0C00000000000000000000000000000000007F +S315E07F0C10000000000000000000000000000000006F +S315E07F0C20000000000000000000000000000000005F +S315E07F0C30000000000000000000000000000000004F +S315E07F0C40000000000000000000000000000000003F +S315E07F0C50000000000000000000000000000000002F +S315E07F0C60000000000000000000000000000000001F +S315E07F0C70000000000000000000000000000000000F +S315E07F0C8000000000000000000000000000000000FF +S315E07F0C900000000000003E49000000000000000068 +S315E07F0CA000000000000000000000000000000000DF +S315E07F0CB000000000000000000000000000000000CF +S315E07F0CC000000000000000000000000000000000BF +S315E07F0CD000000000000000000000000000000000AF +S315E07F0CE0000000000000000000000000000000009F +S315E07F0CF0000000000000000000000000000000008F +S315E07F0D00000000000000000000000000000000007E +S315E07F0D10000000000000000000000000000000006E +S315E07F0D20000000000000000000000000000000005E +S315E07F0D30000000000000000000000000000000004E +S315E07F0D40000000000000000000000000000000003E +S315E07F0D50000000000000000000000000000000002E +S315E07F0D60000000000000000000000000000000001E +S315E07F0D70000000000000000000000000000000000E +S315E07F0D8000000000000000000000000000000000FE +S315E07F0D9000000000000000000000000000000000EE +S315E07F0DA000000000000000000000000000000000DE +S315E07F0DB000000000000000000000000000000000CE +S315E07F0DC000000000000000000000000000000000BE +S315E07F0DD000000000000000000000000000000000AE +S315E07F0DE0000000000000000000000000000000009E +S315E07F0DF0000000000000000000000000000000008E +S315E07F0E000000000000000000000000000000003E3F +S315E07F0E104900000000000000000000000000000024 +S315E07F0E20000000000000000000000000000000005D +S315E07F0E30000000000000000000000000000000004D +S315E07F0E40000000000000000000000000000000003D +S315E07F0E50000000000000000000000000000000002D +S315E07F0E60000000000000000000000000000000001D +S315E07F0E70000000000000000000000000000000000D +S315E07F0E8000000000000000000000000000000000FD +S315E07F0E9000000000000000000000000000000000ED +S315E07F0EA000000000000000000000000000000000DD +S315E07F0EB000000000000000000000000000000000CD +S315E07F0EC000000000000000000000000000000000BD +S315E07F0ED000000000000000000000000000000000AD +S315E07F0EE0000000000000000000000000000000009D +S315E07F0EF0000000000000000000000000000000008D +S315E07F0F00000000000000000000000000000000007C +S315E07F0F10000000000000000000000000000000006C +S315E07F0F20000000000000000000000000000000005C +S315E07F0F30000000000000000000000000000000004C +S315E07F0F40000000000000000000000000000000003C +S315E07F0F50000000000000000000000000000000002C +S315E07F0F60000000000000000000000000000000001C +S315E07F0F70000000000000000000000000000000000C +S315E07F0F8000000000000000003E4900000000000075 +S315E07F0F9000000000000000000000000000000000EC +S315E07F0FA000000000000000000000000000000000DC +S315E07F0FB000000000000000000000000000000000CC +S315E07F0FC000000000000000000000000000000000BC +S315E07F0FD000000000000000000000000000000000AC +S315E07F0FE0000000000000000000000000000000009C +S315E07F0FF0000000000000000000000000000000008C +S315E07F1000000000000000000000000000000000007B +S315E07F1010000000000000000000000000000000006B +S315E07F1020000000000000000000000000000000005B +S315E07F1030000000000000000000000000000000004B +S315E07F1040000000000000000000000000000000003B +S315E07F1050000000000000000000000000000000002B +S315E07F1060000000000000000000000000000000001B +S315E07F1070000000000000000000000000000000000B +S315E07F108000000000000000000000000000000000FB +S315E07F109000000000000000000000000000000000EB +S315E07F10A000000000000000000000000000000000DB +S315E07F10B000000000000000000000000000000000CB +S315E07F10C000000000000000000000000000000000BB +S315E07F10D000000000000000000000000000000000AB +S315E07F10E0000000000000000000000000000000009B +S315E07F10F0000000000000000000000000000000008B +S315E07F1100003E4900000000000000000000000000F3 +S315E07F1110000000000000000000000000000000006A +S315E07F1120000000000000000000000000000000005A +S315E07F1130000000000000000000000000000000004A +S315E07F1140000000000000000000000000000000003A +S315E07F1150000000000000000000000000000000002A +S315E07F1160000000000000000000000000000000001A +S315E07F1170000000000000000000000000000000000A +S315E07F118000000000000000000000000000000000FA +S315E07F119000000000000000000000000000000000EA +S315E07F11A000000000000000000000000000000000DA +S315E07F11B000000000000000000000000000000000CA +S315E07F11C000000000000000000000000000000000BA +S315E07F11D000000000000000000000000000000000AA +S315E07F11E0000000000000000000000000000000009A +S315E07F11F0000000000000000000000000000000008A +S315E07F12000000000000000000000000000000000079 +S315E07F12100000000000000000000000000000000069 +S315E07F12200000000000000000000000000000000059 +S315E07F12300000000000000000000000000000000049 +S315E07F12400000000000000000000000000000000039 +S315E07F12500000000000000000000000000000000029 +S315E07F12600000000000000000000000000000000019 +S315E07F1270000000000000000000003E490000000082 +S315E07F128000000000000000000000000000000000F9 +S315E07F129000000000000000000000000000000000E9 +S315E07F12A000000000000000000000000000000000D9 +S315E07F12B000000000000000000000000000000000C9 +S315E07F12C000000000000000000000000000000000B9 +S315E07F12D000000000000000000000000000000000A9 +S315E07F12E00000000000000000000000000000000099 +S315E07F12F00000000000000000000000000000000089 +S315E07F13000000000000000000000000000000000078 +S315E07F13100000000000000000000000000000000068 +S315E07F13200000000000000000000000000000000058 +S315E07F13300000000000000000000000000000000048 +S315E07F13400000000000000000000000000000000038 +S315E07F13500000000000000000000000000000000028 +S315E07F13600000000000000000000000000000000018 +S315E07F13700000000000000000000000000000000008 +S315E07F138000000000000000000000000000000000F8 +S315E07F139000000000000000000000000000000000E8 +S315E07F13A000000000000000000000000000000000D8 +S315E07F13B000000000000000000000000000000000C8 +S315E07F13C000000000000000000000000000000000B8 +S315E07F13D000000000000000000000000000000000A8 +S315E07F13E00000000000000000000000000000000098 +S315E07F13F00000003E49000000000000000000000001 +S315E07F14000000000000000000000000000000000077 +S315E07F14100000000000000000000000000000000067 +S315E07F14200000000000000000000000000000000057 +S315E07F14300000000000000000000000000000000047 +S315E07F14400000000000000000000000000000000037 +S315E07F14500000000000000000000000000000000027 +S315E07F14600000000000000000000000000000000017 +S315E07F14700000000000000000000000000000000007 +S315E07F148000000000000000000000000000000000F7 +S315E07F149000000000000000000000000000000000E7 +S315E07F14A000000000000000000000000000000000D7 +S315E07F14B000000000000000000000000000000000C7 +S315E07F14C000000000000000000000000000000000B7 +S315E07F14D000000000000000000000000000000000A7 +S315E07F14E00000000000000000000000000000000097 +S315E07F14F00000000000000000000000000000000087 +S315E07F15000000000000000000000000000000000076 +S315E07F15100000000000000000000000000000000066 +S315E07F15200000000000000000000000000000000056 +S315E07F15300000000000000000000000000000000046 +S315E07F15400000000000000000000000000000000036 +S315E07F15500000000000000000000000000000000026 +S315E07F15600000000000000000000000003E4900008F +S315E07F15700000000000000000000000000000000006 +S315E07F158000000000000000000000000000000000F6 +S315E07F159000000000000000000000000000000000E6 +S315E07F15A000000000000000000000000000000000D6 +S315E07F15B000000000000000000000000000000000C6 +S315E07F15C000000000000000000000000000000000B6 +S315E07F15D000000000000000000000000000000000A6 +S315E07F15E00000000000000000000000000000000096 +S315E07F15F00000000000000000000000000000000086 +S315E07F16000000000000000000000000000000000075 +S315E07F16100000000000000000000000000000000065 +S315E07F16200000000000000000000000000000000055 +S315E07F16300000000000000000000000000000000045 +S315E07F16400000000000000000000000000000000035 +S315E07F16500000000000000000000000000000000025 +S315E07F16600000000000000000000000000000000015 +S315E07F16700000000000000000000000000000000005 +S315E07F168000000000000000000000000000000000F5 +S315E07F169000000000000000000000000000000000E5 +S315E07F16A000000000000000000000000000000000D5 +S315E07F16B000000000000000000000000000000000C5 +S315E07F16C000000000000000000000000000000000B5 +S315E07F16D000000000000000000000000000000000A5 +S315E07F16E000000000003E490000000000000000000E +S315E07F16F00000000000000000000000000000000085 +S315E07F17000000000000000000000000000000000074 +S315E07F17100000000000000000000000000000000064 +S315E07F17200000000000000000000000000000000054 +S315E07F17300000000000000000000000000000000044 +S315E07F17400000000000000000000000000000000034 +S315E07F17500000000000000000000000000000000024 +S315E07F17600000000000000000000000000000000014 +S315E07F17700000000000000000000000000000000004 +S315E07F178000000000000000000000000000000000F4 +S315E07F179000000000000000000000000000000000E4 +S315E07F17A000000000000000000000000000000000D4 +S315E07F17B000000000000000000000000000000000C4 +S315E07F17C000000000000000000000000000000000B4 +S315E07F17D000000000000000000000000000000000A4 +S315E07F17E00000000000000000000000000000000094 +S315E07F17F00000000000000000000000000000000084 +S315E07F18000000000000000000000000000000000073 +S315E07F18100000000000000000000000000000000063 +S315E07F18200000000000000000000000000000000053 +S315E07F18300000000000000000000000000000000043 +S315E07F18400000000000000000000000000000000033 +S315E07F185000000000000000000000000000003E499C +S315E07F18600000000000000000000000000000000013 +S315E07F18700000000000000000000000000000000003 +S315E07F188000000000000000000000000000000000F3 +S315E07F189000000000000000000000000000000000E3 +S315E07F18A000000000000000000000000000000000D3 +S315E07F18B000000000000000000000000000000000C3 +S315E07F18C000000000000000000000000000000000B3 +S315E07F18D000000000000000000000000000000000A3 +S315E07F18E00000000000000000000000000000000093 +S315E07F18F00000000000000000000000000000000083 +S315E07F19000000000000000000000000000000000072 +S315E07F19100000000000000000000000000000000062 +S315E07F19200000000000000000000000000000000052 +S315E07F19300000000000000000000000000000000042 +S315E07F19400000000000000000000000000000000032 +S315E07F19500000000000000000000000000000000022 +S315E07F19600000000000000000000000000000000012 +S315E07F19700000000000000000000000000000000002 +S315E07F198000000000000000000000000000000000F2 +S315E07F199000000000000000000000000000000000E2 +S315E07F19A000000000000000000000000000000000D2 +S315E07F19B000000000000000000000000000000000C2 +S315E07F19C000000000000000000000000000000000B2 +S315E07F19D0000000000000003E49000000000000001B +S315E07F19E00000000000000000000000000000000092 +S315E07F19F00000000000000000000000000000000082 +S315E07F1A000000000000000000000000000000000071 +S315E07F1A100000000000000000000000000000000061 +S315E07F1A200000000000000000000000000000000051 +S315E07F1A300000000000000000000000000000000041 +S315E07F1A400000000000000000000000000000000031 +S315E07F1A500000000000000000000000000000000021 +S315E07F1A600000000000000000000000000000000011 +S315E07F1A700000000000000000000000000000000001 +S315E07F1A8000000000000000000000000000000000F1 +S315E07F1A9000000000000000000000000000000000E1 +S315E07F1AA000000000000000000000000000000000D1 +S315E07F1AB000000000000000000000000000000000C1 +S315E07F1AC000000000000000000000000000000000B1 +S315E07F1AD000000000000000000000000000000000A1 +S315E07F1AE00000000000000000000000000000000091 +S315E07F1AF00000000000000000000000000000000081 +S315E07F1B000000000000000000000000000000000070 +S315E07F1B100000000000000000000000000000000060 +S315E07F1B200000000000000000000000000000000050 +S315E07F1B300000000000000000000000000000000040 +S315E07F1B400000000000000000000000000000000030 +S315E07F1B503E49000000000000000000000000000099 +S315E07F1B600000000000000000000000000000000010 +S315E07F1B700000000000000000000000000000000000 +S315E07F1B8000000000000000000000000000000000F0 +S315E07F1B9000000000000000000000000000000000E0 +S315E07F1BA000000000000000000000000000000000D0 +S315E07F1BB000000000000000000000000000000000C0 +S315E07F1BC000000000000000000000000000000000B0 +S315E07F1BD000000000000000000000000000000000A0 +S315E07F1BE00000000000000000000000000000000090 +S315E07F1BF00000000000000000000000000000000080 +S315E07F1C00000000000000000000000000000000006F +S315E07F1C10000000000000000000000000000000005F +S315E07F1C20000000000000000000000000000000004F +S315E07F1C30000000000000000000000000000000003F +S315E07F1C40000000000000000000000000000000002F +S315E07F1C50000000000000000000000000000000001F +S315E07F1C60000000000000000000000000000000000F +S315E07F1C7000000000000000000000000000000000FF +S315E07F1C8000000000000000000000000000000000EF +S315E07F1C9000000000000000000000000000000000DF +S315E07F1CA000000000000000000000000000000000CF +S315E07F1CB000000000000000000000000000000000BF +S315E07F1CC00000000000000000003E49000000000028 +S315E07F1CD0000000000000000000000000000000009F +S315E07F1CE0000000000000000000000000000000008F +S315E07F1CF0000000000000000000000000000000007F +S315E07F1D00000000000000000000000000000000006E +S315E07F1D10000000000000000000000000000000005E +S315E07F1D20000000000000000000000000000000004E +S315E07F1D30000000000000000000000000000000003E +S315E07F1D40000000000000000000000000000000002E +S315E07F1D50000000000000000000000000000000001E +S315E07F1D60000000000000000000000000000000000E +S315E07F1D7000000000000000000000000000000000FE +S315E07F1D8000000000000000000000000000000000EE +S315E07F1D9000000000000000000000000000000000DE +S315E07F1DA000000000000000000000000000000000CE +S315E07F1DB000000000000000000000000000000000BE +S315E07F1DC000000000000000000000000000000000AE +S315E07F1DD0000000000000000000000000000000009E +S315E07F1DE0000000000000000000000000000000008E +S315E07F1DF0000000000000000000000000000000007E +S315E07F1E00000000000000000000000000000000006D +S315E07F1E10000000000000000000000000000000005D +S315E07F1E20000000000000000000000000000000004D +S315E07F1E30000000000000000000000000000000003D +S315E07F1E4000003E49000000000000000000000000A6 +S315E07F1E50000000000000000000000000000000001D +S315E07F1E60000000000000000000000000000000000D +S315E07F1E7000000000000000000000000000000000FD +S315E07F1E8000000000000000000000000000000000ED +S315E07F1E9000000000000000000000000000000000DD +S315E07F1EA000000000000000000000000000000000CD +S315E07F1EB000000000000000000000000000000000BD +S315E07F1EC000000000000000000000000000000000AD +S315E07F1ED0000000000000000000000000000000009D +S315E07F1EE0000000000000000000000000000000008D +S315E07F1EF0000000000000000000000000000000007D +S315E07F1F00000000000000000000000000000000006C +S315E07F1F10000000000000000000000000000000005C +S315E07F1F20000000000000000000000000000000004C +S315E07F1F30000000000000000000000000000000003C +S315E07F1F40000000000000000000000000000000002C +S315E07F1F50000000000000000000000000000000001C +S315E07F1F60000000000000000000000000000000000C +S315E07F1F7000000000000000000000000000000000FC +S315E07F1F8000000000000000000000000000000000EC +S315E07F1F9000000000000000000000000000000000DC +S315E07F1FA000000000000000000000000000000000CC +S315E07F1FB000000000000000000000003E4900000035 +S315E07F1FC000000000000000000000000000000000AC +S315E07F1FD0000000000000000000000000000000009C +S315E07F1FE0000000000000000000000000000000008C +S315E07F1FF0000000000000000000000000000000007C +S315E07F2000000000000000000000000000000000006B +S315E07F2010000000000000000000000000000000005B +S315E07F2020000000000000000000000000000000004B +S315E07F2030000000000000000000000000000000003B +S315E07F2040000000000000000000000000000000002B +S315E07F2050000000000000000000000000000000001B +S315E07F2060000000000000000000000000000000000B +S315E07F207000000000000000000000000000000000FB +S315E07F208000000000000000000000000000000000EB +S315E07F209000000000000000000000000000000000DB +S315E07F20A000000000000000000000000000000000CB +S315E07F20B000000000000000000000000000000000BB +S315E07F20C000000000000000000000000000000000AB +S315E07F20D0000000000000000000000000000000009B +S315E07F20E0000000000000000000000000000000008B +S315E07F20F0000000000000000000000000000000007B +S315E07F2100000000000000000000000000000000006A +S315E07F2110000000000000000000000000000000005A +S315E07F2120000000000000000000000000000000004A +S315E07F2130000000003E4900000000000000000000B3 +S315E07F2140000000000000000000000000000000002A +S315E07F2150000000000000000000000000000000001A +S315E07F2160000000000000000000000000000000000A +S315E07F217000000000000000000000000000000000FA +S315E07F218000000000000000000000000000000000EA +S315E07F219000000000000000000000000000000000DA +S315E07F21A000000000000000000000000000000000CA +S315E07F21B000000000000000000000000000000000BA +S315E07F21C000000000000000000000000000000000AA +S315E07F21D0000000000000000000000000000000009A +S315E07F21E0000000000000000000000000000000008A +S315E07F21F0000000000000000000000000000000007A +S315E07F22000000000000000000000000000000000069 +S315E07F22100000000000000000000000000000000059 +S315E07F22200000000000000000000000000000000049 +S315E07F22300000000000000000000000000000000039 +S315E07F22400000000000000000000000000000000029 +S315E07F22500000000000000000000000000000000019 +S315E07F22600000000000000000000000000000000009 +S315E07F227000000000000000000000000000000000F9 +S315E07F228000000000000000000000000000000000E9 +S315E07F229000000000000000000000000000000000D9 +S315E07F22A0000000000000000000000000003E490042 +S315E07F22B000000000000000000000000000000000B9 +S315E07F22C000000000000000000000000000000000A9 +S315E07F22D00000000000000000000000000000000099 +S315E07F22E00000000000000000000000000000000089 +S315E07F22F00000000000000000000000000000000079 +S315E07F23000000000000000000000000000000000068 +S315E07F23100000000000000000000000000000000058 +S315E07F23200000000000000000000000000000000048 +S315E07F23300000000000000000000000000000000038 +S315E07F23400000000000000000000000000000000028 +S315E07F23500000000000000000000000000000000018 +S315E07F23600000000000000000000000000000000008 +S315E07F237000000000000000000000000000000000F8 +S315E07F238000000000000000000000000000000000E8 +S315E07F239000000000000000000000000000000000D8 +S315E07F23A000000000000000000000000000000000C8 +S315E07F23B000000000000000000000000000000000B8 +S315E07F23C000000000000000000000000000000000A8 +S315E07F23D00000000000000000000000000000000098 +S315E07F23E00000000000000000000000000000000088 +S315E07F23F00000000000000000000000000000000078 +S315E07F24000000000000000000000000000000000067 +S315E07F24100000000000000000000000000000000057 +S315E07F24200000000000003E490000000000000000C0 +S315E07F24300000000000000000000000000000000037 +S315E07F24400000000000000000000000000000000027 +S315E07F24500000000000000000000000000000000017 +S315E07F24600000000000000000000000000000000007 +S315E07F247000000000000000000000000000000000F7 +S315E07F248000000000000000000000000000000000E7 +S315E07F249000000000000000000000000000000000D7 +S315E07F24A000000000000000000000000000000000C7 +S315E07F24B000000000000000000000000000000000B7 +S315E07F24C000000000000000000000000000000000A7 +S315E07F24D00000000000000000000000000000000097 +S315E07F24E00000000000000000000000000000000087 +S315E07F24F00000000000000000000000000000000077 +S315E07F25000000000000000000000000000000000066 +S315E07F25100000000000000000000000000000000056 +S315E07F25200000000000000000000000000000000046 +S315E07F25300000000000000000000000000000000036 +S315E07F25400000000000000000000000000000000026 +S315E07F25500000000000000000000000000000000016 +S315E07F25600000000000000000000000000000000006 +S315E07F257000000000000000000000000000000000F6 +S315E07F258000000000000000000000000000000000E6 +S315E07F25900000000000000000000000000000003E98 +S315E07F25A0490000000000000000000000000000007D +S315E07F25B000000000000000000000000000000000B6 +S315E07F25C000000000000000000000000000000000A6 +S315E07F25D00000000000000000000000000000000096 +S315E07F25E00000000000000000000000000000000086 +S315E07F25F00000000000000000000000000000000076 +S315E07F26000000000000000000000000000000000065 +S315E07F26100000000000000000000000000000000055 +S315E07F26200000000000000000000000000000000045 +S315E07F26300000000000000000000000000000000035 +S315E07F26400000000000000000000000000000000025 +S315E07F26500000000000000000000000000000000015 +S315E07F26600000000000000000000000000000000005 +S315E07F267000000000000000000000000000000000F5 +S315E07F268000000000000000000000000000000000E5 +S315E07F269000000000000000000000000000000000D5 +S315E07F26A000000000000000000000000000000000C5 +S315E07F26B000000000000000000000000000000000B5 +S315E07F26C000000000000000000000000000000000A5 +S315E07F26D00000000000000000000000000000000095 +S315E07F26E00000000000000000000000000000000085 +S315E07F26F00000000000000000000000000000000075 +S315E07F27000000000000000000000000000000000064 +S315E07F271000000000000000003E49000000000000CD +S315E07F27200000000000000000000000000000000044 +S315E07F27300000000000000000000000000000000034 +S315E07F27400000000000000000000000000000000024 +S315E07F27500000000000000000000000000000000014 +S315E07F27600000000000000000000000000000000004 +S315E07F277000000000000000000000000000000000F4 +S315E07F278000000000000000000000000000000000E4 +S315E07F279000000000000000000000000000000000D4 +S315E07F27A000000000000000000000000000000000C4 +S315E07F27B000000000000000000000000000000000B4 +S315E07F27C000000000000000000000000000000000A4 +S315E07F27D00000000000000000000000000000000094 +S315E07F27E00000000000000000000000000000000084 +S315E07F27F00000000000000000000000000000000074 +S315E07F28000000000000000000000000000000000063 +S315E07F28100000000000000000000000000000000053 +S315E07F28200000000000000000000000000000000043 +S315E07F28300000000000000000000000000000000033 +S315E07F28400000000000000000000000000000000023 +S315E07F28500000000000000000000000000000000013 +S315E07F28600000000000000000000000000000000003 +S315E07F287000000000000000000000000000000000F3 +S315E07F288000000000000000000000000000000000E3 +S315E07F2890003E49000000000000000000000000004C +S315E07F28A000000000000000000000000000000000C3 +S315E07F28B000000000000000000000000000000000B3 +S315E07F28C000000000000000000000000000000000A3 +S315E07F28D00000000000000000000000000000000093 +S315E07F28E00000000000000000000000000000000083 +S315E07F28F00000000000000000000000000000000073 +S315E07F29000000000000000000000000000000000062 +S315E07F29100000000000000000000000000000000052 +S315E07F29200000000000000000000000000000000042 +S315E07F29300000000000000000000000000000000032 +S315E07F29400000000000000000000000000000000022 +S315E07F29500000000000000000000000000000000012 +S315E07F29600000000000000000000000000000000002 +S315E07F297000000000000000000000000000000000F2 +S315E07F298000000000000000000000000000000000E2 +S315E07F299000000000000000000000000000000000D2 +S315E07F29A000000000000000000000000000000000C2 +S315E07F29B000000000000000000000000000000000B2 +S315E07F29C000000000000000000000000000000000A2 +S315E07F29D00000000000000000000000000000000092 +S315E07F29E00000000000000000000000000000000082 +S315E07F29F00000000000000000000000000000000072 +S315E07F2A00000000000000000000003E4900000000DA +S315E07F2A100000000000000000000000000000000051 +S315E07F2A200000000000000000000000000000000041 +S315E07F2A300000000000000000000000000000000031 +S315E07F2A400000000000000000000000000000000021 +S315E07F2A500000000000000000000000000000000011 +S315E07F2A600000000000000000000000000000000001 +S315E07F2A7000000000000000000000000000000000F1 +S315E07F2A8000000000000000000000000000000000E1 +S315E07F2A9000000000000000000000000000000000D1 +S315E07F2AA000000000000000000000000000000000C1 +S315E07F2AB000000000000000000000000000000000B1 +S315E07F2AC000000000000000000000000000000000A1 +S315E07F2AD00000000000000000000000000000000091 +S315E07F2AE00000000000000000000000000000000081 +S315E07F2AF00000000000000000000000000000000071 +S315E07F2B000000000000000000000000000000000060 +S315E07F2B100000000000000000000000000000000050 +S315E07F2B200000000000000000000000000000000040 +S315E07F2B300000000000000000000000000000000030 +S315E07F2B400000000000000000000000000000000020 +S315E07F2B500000000000000000000000000000000010 +S315E07F2B600000000000000000000000000000000000 +S315E07F2B7000000000000000000000000000000000F0 +S315E07F2B800000003E49000000000000000000000059 +S315E07F2B9000000000000000000000000000000000D0 +S315E07F2BA000000000000000000000000000000000C0 +S315E07F2BB000000000000000000000000000000000B0 +S315E07F2BC000000000000000000000000000000000A0 +S315E07F2BD00000000000000000000000000000000090 +S315E07F2BE00000000000000000000000000000000080 +S315E07F2BF00000000000000000000000000000000070 +S315E07F2C00000000000000000000000000000000005F +S315E07F2C10000000000000000000000000000000004F +S315E07F2C20000000000000000000000000000000003F +S315E07F2C30000000000000000000000000000000002F +S315E07F2C40000000000000000000000000000000001F +S315E07F2C50000000000000000000000000000000000F +S315E07F2C6000000000000000000000000000000000FF +S315E07F2C7000000000000000000000000000000000EF +S315E07F2C8000000000000000000000000000000000DF +S315E07F2C9000000000000000000000000000000000CF +S315E07F2CA000000000000000000000000000000000BF +S315E07F2CB000000000000000000000000000000000AF +S315E07F2CC0000000000000000000000000000000009F +S315E07F2CD0000000000000000000000000000000008F +S315E07F2CE0000000000000000000000000000000007F +S315E07F2CF00000000000000000000000003E490000E8 +S315E07F2D00000000000000000000000000000000005E +S315E07F2D10000000000000000000000000000000004E +S315E07F2D20000000000000000000000000000000003E +S315E07F2D30000000000000000000000000000000002E +S315E07F2D40000000000000000000000000000000001E +S315E07F2D50000000000000000000000000000000000E +S315E07F2D6000000000000000000000000000000000FE +S315E07F2D7000000000000000000000000000000000EE +S315E07F2D8000000000000000000000000000000000DE +S315E07F2D9000000000000000000000000000000000CE +S315E07F2DA000000000000000000000000000000000BE +S315E07F2DB000000000000000000000000000000000AE +S315E07F2DC0000000000000000000000000000000009E +S315E07F2DD0000000000000000000000000000000008E +S315E07F2DE0000000000000000000000000000000007E +S315E07F2DF0000000000000000000000000000000006E +S315E07F2E00000000000000000000000000000000005D +S315E07F2E10000000000000000000000000000000004D +S315E07F2E20000000000000000000000000000000003D +S315E07F2E30000000000000000000000000000000002D +S315E07F2E40000000000000000000000000000000001D +S315E07F2E50000000000000000000000000000000000D +S315E07F2E6000000000000000000000000000000000FD +S315E07F2E7000000000003E4900000000000000000066 +S315E07F2E8000000000000000000000000000000000DD +S315E07F2E9000000000000000000000000000000000CD +S315E07F2EA000000000000000000000000000000000BD +S315E07F2EB000000000000000000000000000000000AD +S315E07F2EC0000000000000000000000000000000009D +S315E07F2ED0000000000000000000000000000000008D +S315E07F2EE0000000000000000000000000000000007D +S315E07F2EF0000000000000000000000000000000006D +S315E07F2F00000000000000000000000000000000005C +S315E07F2F10000000000000000000000000000000004C +S315E07F2F20000000000000000000000000000000003C +S315E07F2F30000000000000000000000000000000002C +S315E07F2F40000000000000000000000000000000001C +S315E07F2F50000000000000000000000000000000000C +S315E07F2F6000000000000000000000000000000000FC +S315E07F2F7000000000000000000000000000000000EC +S315E07F2F8000000000000000000000000000000000DC +S315E07F2F9000000000000000000000000000000000CC +S315E07F2FA000000000000000000000000000000000BC +S315E07F2FB000000000000000000000000000000000AC +S315E07F2FC0000000000000000000000000000000009C +S315E07F2FD0000000000000000000000000000000008C +S315E07F2FE000000000000000000000000000003E49F5 +S315E07F2FF0000000000000000000000000000000006C +S315E07F3000000000000000000000000000000000005B +S315E07F3010000000000000000000000000000000004B +S315E07F3020000000000000000000000000000000003B +S315E07F3030000000000000000000000000000000002B +S315E07F3040000000000000000000000000000000001B +S315E07F3050000000000000000000000000000000000B +S315E07F306000000000000000000000000000000000FB +S315E07F307000000000000000000000000000000000EB +S315E07F308000000000000000000000000000000000DB +S315E07F309000000000000000000000000000000000CB +S315E07F30A000000000000000000000000000000000BB +S315E07F30B000000000000000000000000000000000AB +S315E07F30C0000000000000000000000000000000009B +S315E07F30D0000000000000000000000000000000008B +S315E07F30E0000000000000000000000000000000007B +S315E07F30F0000000000000000000000000000000006B +S315E07F3100000000000000000000000000000000005A +S315E07F3110000000000000000000000000000000004A +S315E07F3120000000000000000000000000000000003A +S315E07F3130000000000000000000000000000000002A +S315E07F3140000000000000000000000000000000001A +S315E07F3150000000000000000000000000000000000A +S315E07F3160000000000000003E490000000000000073 +S315E07F317000000000000000000000000000000000EA +S315E07F318000000000000000000000000000000000DA +S315E07F319000000000000000000000000000000000CA +S315E07F31A000000000000000000000000000000000BA +S315E07F31B000000000000000000000000000000000AA +S315E07F31C0000000000000000000000000000000009A +S315E07F31D0000000000000000000000000000000008A +S315E07F31E0000000000000000000000000000000007A +S315E07F31F0000000000000000000000000000000006A +S315E07F32000000000000000000000000000000000059 +S315E07F32100000000000000000000000000000000049 +S315E07F32200000000000000000000000000000000039 +S315E07F32300000000000000000000000000000000029 +S315E07F32400000000000000000000000000000000019 +S315E07F32500000000000000000000000000000000009 +S315E07F326000000000000000000000000000000000F9 +S315E07F327000000000000000000000000000000000E9 +S315E07F328000000000000000000000000000000000D9 +S315E07F329000000000000000000000000000000000C9 +S315E07F32A000000000000000000000000000000000B9 +S315E07F32B000000000000000000000000000000000A9 +S315E07F32C00000000000000000000000000000000099 +S315E07F32D00000000000000000000000000000000089 +S315E07F32E03E490000000000000000000000000000F2 +S315E07F32F00000000000000000000000000000000069 +S315E07F33000000000000000000000000000000000058 +S315E07F33100000000000000000000000000000000048 +S315E07F33200000000000000000000000000000000038 +S315E07F33300000000000000000000000000000000028 +S315E07F33400000000000000000000000000000000018 +S315E07F33500000000000000000000000000000000008 +S315E07F336000000000000000000000000000000000F8 +S315E07F337000000000000000000000000000000000E8 +S315E07F338000000000000000000000000000000000D8 +S315E07F339000000000000000000000000000000000C8 +S315E07F33A000000000000000000000000000000000B8 +S315E07F33B000000000000000000000000000000000A8 +S315E07F33C00000000000000000000000000000000098 +S315E07F33D00000000000000000000000000000000088 +S315E07F33E00000000000000000000000000000000078 +S315E07F33F00000000000000000000000000000000068 +S315E07F34000000000000000000000000000000000057 +S315E07F34100000000000000000000000000000000047 +S315E07F34200000000000000000000000000000000037 +S315E07F34300000000000000000000000000000000027 +S315E07F34400000000000000000000000000000000017 +S315E07F34500000000000000000003E49000000000080 +S315E07F346000000000000000000000000000000000F7 +S315E07F347000000000000000000000000000000000E7 +S315E07F348000000000000000000000000000000000D7 +S315E07F349000000000000000000000000000000000C7 +S315E07F34A000000000000000000000000000000000B7 +S315E07F34B000000000000000000000000000000000A7 +S315E07F34C00000000000000000000000000000000097 +S315E07F34D00000000000000000000000000000000087 +S315E07F34E00000000000000000000000000000000077 +S315E07F34F00000000000000000000000000000000067 +S315E07F35000000000000000000000000000000000056 +S315E07F35100000000000000000000000000000000046 +S315E07F35200000000000000000000000000000000036 +S315E07F35300000000000000000000000000000000026 +S315E07F35400000000000000000000000000000000016 +S315E07F35500000000000000000000000000000000006 +S315E07F356000000000000000000000000000000000F6 +S315E07F357000000000000000000000000000000000E6 +S315E07F358000000000000000000000000000000000D6 +S315E07F359000000000000000000000000000000000C6 +S315E07F35A000000000000000000000000000000000B6 +S315E07F35B000000000000000000000000000000000A6 +S315E07F35C00000000000000000000000000000000096 +S315E07F35D000003E49000000000000000000000000FF +S315E07F35E00000000000000000000000000000000076 +S315E07F35F00000000000000000000000000000000066 +S315E07F36000000000000000000000000000000000055 +S315E07F36100000000000000000000000000000000045 +S315E07F36200000000000000000000000000000000035 +S315E07F36300000000000000000000000000000000025 +S315E07F36400000000000000000000000000000000015 +S315E07F36500000000000000000000000000000000005 +S315E07F366000000000000000000000000000000000F5 +S315E07F367000000000000000000000000000000000E5 +S315E07F368000000000000000000000000000000000D5 +S315E07F369000000000000000000000000000000000C5 +S315E07F36A000000000000000000000000000000000B5 +S315E07F36B000000000000000000000000000000000A5 +S315E07F36C00000000000000000000000000000000095 +S315E07F36D00000000000000000000000000000000085 +S315E07F36E00000000000000000000000000000000075 +S315E07F36F00000000000000000000000000000000065 +S315E07F37000000000000000000000000000000000054 +S315E07F37100000000000000000000000000000000044 +S315E07F37200000000000000000000000000000000034 +S315E07F37300000000000000000000000000000000024 +S315E07F374000000000000000000000003E490000008D +S315E07F37500000000000000000000000000000000004 +S315E07F376000000000000000000000000000000000F4 +S315E07F377000000000000000000000000000000000E4 +S315E07F378000000000000000000000000000000000D4 +S315E07F379000000000000000000000000000000000C4 +S315E07F37A000000000000000000000000000000000B4 +S315E07F37B000000000000000000000000000000000A4 +S315E07F37C00000000000000000000000000000000094 +S315E07F37D00000000000000000000000000000000084 +S315E07F37E00000000000000000000000000000000074 +S315E07F37F00000000000000000000000000000000064 +S315E07F38000000000000000000000000000000000053 +S315E07F38100000000000000000000000000000000043 +S315E07F38200000000000000000000000000000000033 +S315E07F38300000000000000000000000000000000023 +S315E07F38400000000000000000000000000000000013 +S315E07F38500000000000000000000000000000000003 +S315E07F386000000000000000000000000000000000F3 +S315E07F387000000000000000000000000000000000E3 +S315E07F388000000000000000000000000000000000D3 +S315E07F389000000000000000000000000000000000C3 +S315E07F38A000000000000000000000000000000000B3 +S315E07F38B000000000000000000000000000000000A3 +S315E07F38C0000000003E49000000000000000000000C +S315E07F38D00000000000000000000000000000000083 +S315E07F38E00000000000000000000000000000000073 +S315E07F38F00000000000000000000000000000000063 +S315E07F39000000000000000000000000000000000052 +S315E07F39100000000000000000000000000000000042 +S315E07F39200000000000000000000000000000000032 +S315E07F39300000000000000000000000000000000022 +S315E07F39400000000000000000000000000000000012 +S315E07F39500000000000000000000000000000000002 +S315E07F396000000000000000000000000000000000F2 +S315E07F397000000000000000000000000000000000E2 +S315E07F398000000000000000000000000000000000D2 +S315E07F399000000000000000000000000000000000C2 +S315E07F39A000000000000000000000000000000000B2 +S315E07F39B000000000000000000000000000000000A2 +S315E07F39C00000000000000000000000000000000092 +S315E07F39D00000000000000000000000000000000082 +S315E07F39E00000000000000000000000000000000072 +S315E07F39F00000000000000000000000000000000062 +S315E07F3A000000000000000000000000000000000051 +S315E07F3A100000000000000000000000000000000041 +S315E07F3A200000000000000000000000000000000031 +S315E07F3A30000000000000000000000000003E49009A +S315E07F3A400000000000000000000000000000000011 +S315E07F3A500000000000000000000000000000000001 +S315E07F3A6000000000000000000000000000000000F1 +S315E07F3A7000000000000000000000000000000000E1 +S315E07F3A8000000000000000000000000000000000D1 +S315E07F3A9000000000000000000000000000000000C1 +S315E07F3AA000000000000000000000000000000000B1 +S315E07F3AB000000000000000000000000000000000A1 +S315E07F3AC00000000000000000000000000000000091 +S315E07F3AD00000000000000000000000000000000081 +S315E07F3AE00000000000000000000000000000000071 +S315E07F3AF00000000000000000000000000000000061 +S315E07F3B000000000000000000000000000000000050 +S315E07F3B100000000000000000000000000000000040 +S315E07F3B200000000000000000000000000000000030 +S315E07F3B300000000000000000000000000000000020 +S315E07F3B400000000000000000000000000000000010 +S315E07F3B500000000000000000000000000000000000 +S315E07F3B6000000000000000000000000000000000F0 +S315E07F3B7000000000000000000000000000000000E0 +S315E07F3B8000000000000000000000000000000000D0 +S315E07F3B9000000000000000000000000000000000C0 +S315E07F3BA000000000000000000000000000000000B0 +S315E07F3BB00000000000003E49000000000000000019 +S315E07F3BC00000000000000000000000000000000090 +S315E07F3BD00000000000000000000000000000000080 +S315E07F3BE00000000000000000000000000000000070 +S315E07F3BF00000000000000000000000000000000060 +S315E07F3C00000000000000000000000000000000004F +S315E07F3C10000000000000000000000000000000003F +S315E07F3C20000000000000000000000000000000002F +S315E07F3C30000000000000000000000000000000001F +S315E07F3C40000000000000000000000000000000000F +S315E07F3C5000000000000000000000000000000000FF +S315E07F3C6000000000000000000000000000000000EF +S315E07F3C7000000000000000000000000000000000DF +S315E07F3C8000000000000000000000000000000000CF +S315E07F3C9000000000000000000000000000000000BF +S315E07F3CA000000000000000000000000000000000AF +S315E07F3CB0000000000000000000000000000000009F +S315E07F3CC0000000000000000000000000000000008F +S315E07F3CD0000000000000000000000000000000007F +S315E07F3CE0000000000000000000000000000000006F +S315E07F3CF0000000000000000000000000000000005F +S315E07F3D00000000000000000000000000000000004E +S315E07F3D10000000000000000000000000000000003E +S315E07F3D200000000000000000000000000000003EF0 +S315E07F3D3049000000000000000000000000000000D5 +S315E07F3D40000000000000000000000000000000000E +S315E07F3D5000000000000000000000000000000000FE +S315E07F3D6000000000000000000000000000000000EE +S315E07F3D7000000000000000000000000000000000DE +S315E07F3D8000000000000000000000000000000000CE +S315E07F3D9000000000000000000000000000000000BE +S315E07F3DA000000000000000000000000000000000AE +S315E07F3DB0000000000000000000000000000000009E +S315E07F3DC0000000000000000000000000000000008E +S315E07F3DD0000000000000000000000000000000007E +S315E07F3DE0000000000000000000000000000000006E +S315E07F3DF0000000000000000000000000000000005E +S315E07F3E00000000000000000000000000000000004D +S315E07F3E10000000000000000000000000000000003D +S315E07F3E20000000000000000000000000000000002D +S315E07F3E30000000000000000000000000000000001D +S315E07F3E40000000000000000000000000000000000D +S315E07F3E5000000000000000000000000000000000FD +S315E07F3E6000000000000000000000000000000000ED +S315E07F3E7000000000000000000000000000000000DD +S315E07F3E8000000000000000000000000000000000CD +S315E07F3E9000000000000000000000000000000000BD +S315E07F3EA000000000000000003E4900000000000026 +S315E07F3EB0000000000000000000000000000000009D +S315E07F3EC0000000000000000000000000000000008D +S315E07F3ED0000000000000000000000000000000007D +S315E07F3EE0000000000000000000000000000000006D +S315E07F3EF0000000000000000000000000000000005D +S315E07F3F00000000000000000000000000000000004C +S315E07F3F10000000000000000000000000000000003C +S315E07F3F20000000000000000000000000000000002C +S315E07F3F30000000000000000000000000000000001C +S315E07F3F40000000000000000000000000000000000C +S315E07F3F5000000000000000000000000000000000FC +S315E07F3F6000000000000000000000000000000000EC +S315E07F3F7000000000000000000000000000000000DC +S315E07F3F8000000000000000000000000000000000CC +S315E07F3F9000000000000000000000000000000000BC +S315E07F3FA000000000000000000000000000000000AC +S315E07F3FB0000000000000000000000000000000009C +S315E07F3FC0000000000000000000000000000000008C +S315E07F3FD0000000000000000000000000000000007C +S315E07F3FE0000000000000000000000000000000006C +S315E07F3FF0000000000000000000000000000000005C +S315E07F4000000000000000000000000000000000004B +S315E07F4010000000000000000000000000000000003B +S315E07F4020003E4900000000000000000000000000A4 +S315E07F4030000000000000000000000000000000001B +S315E07F4040000000000000000000000000000000000B +S315E07F405000000000000000000000000000000000FB +S315E07F406000000000000000000000000000000000EB +S315E07F407000000000000000000000000000000000DB +S315E07F408000000000000000000000000000000000CB +S315E07F409000000000000000000000000000000000BB +S315E07F40A000000000000000000000000000000000AB +S315E07F40B0000000000000000000000000000000009B +S315E07F40C0000000000000000000000000000000008B +S315E07F40D0000000000000000000000000000000007B +S315E07F40E0000000000000000000000000000000006B +S315E07F40F0000000000000000000000000000000005B +S315E07F4100000000000000000000000000000000004A +S315E07F4110000000000000000000000000000000003A +S315E07F4120000000000000000000000000000000002A +S315E07F4130000000000000000000000000000000001A +S315E07F4140000000000000000000000000000000000A +S315E07F415000000000000000000000000000000000FA +S315E07F416000000000000000000000000000000000EA +S315E07F417000000000000000000000000000000000DA +S315E07F418000000000000000000000000000000000CA +S315E07F4190000000000000000000003E490000000033 +S315E07F41A000000000000000000000000000000000AA +S315E07F41B0000000000000000000000000000000009A +S315E07F41C0000000000000000000000000000000008A +S315E07F41D0000000000000000000000000000000007A +S315E07F41E0000000000000000000000000000000006A +S315E07F41F0000000000000000000000000000000005A +S315E07F42000000000000000000000000000000000049 +S315E07F42100000000000000000000000000000000039 +S315E07F42200000000000000000000000000000000029 +S315E07F42300000000000000000000000000000000019 +S315E07F42400000000000000000000000000000000009 +S315E07F425000000000000000000000000000000000F9 +S315E07F426000000000000000000000000000000000E9 +S315E07F427000000000000000000000000000000000D9 +S315E07F428000000000000000000000000000000000C9 +S315E07F429000000000000000000000000000000000B9 +S315E07F42A000000000000000000000000000000000A9 +S315E07F42B00000000000000000000000000000000099 +S315E07F42C00000000000000000000000000000000089 +S315E07F42D00000000000000000000000000000000079 +S315E07F42E00000000000000000000000000000000069 +S315E07F42F00000000000000000000000000000000059 +S315E07F43000000000000000000000000000000000048 +S315E07F43100000003E490000000000000000000000B1 +S315E07F43200000000000000000000000000000000028 +S315E07F43300000000000000000000000000000000018 +S315E07F43400000000000000000000000000000000008 +S315E07F435000000000000000000000000000000000F8 +S315E07F436000000000000000000000000000000000E8 +S315E07F437000000000000000000000000000000000D8 +S315E07F438000000000000000000000000000000000C8 +S315E07F439000000000000000000000000000000000B8 +S315E07F43A000000000000000000000000000000000A8 +S315E07F43B00000000000000000000000000000000098 +S315E07F43C00000000000000000000000000000000088 +S315E07F43D00000000000000000000000000000000078 +S315E07F43E00000000000000000000000000000000068 +S315E07F43F00000000000000000000000000000000058 +S315E07F44000000000000000000000000000000000047 +S315E07F44100000000000000000000000000000000037 +S315E07F44200000000000000000000000000000000027 +S315E07F44300000000000000000000000000000000017 +S315E07F44400000000000000000000000000000000007 +S315E07F445000000000000000000000000000000000F7 +S315E07F446000000000000000000000000000000000E7 +S315E07F447000000000000000000000000000000000D7 +S315E07F44800000000000000000000000003E49000040 +S315E07F449000000000000000000000000000000000B7 +S315E07F44A000000000000000000000000000000000A7 +S315E07F44B00000000000000000000000000000000097 +S315E07F44C00000000000000000000000000000000087 +S315E07F44D00000000000000000000000000000000077 +S315E07F44E00000000000000000000000000000000067 +S315E07F44F00000000000000000000000000000000057 +S315E07F45000000000000000000000000000000000046 +S315E07F45100000000000000000000000000000000036 +S315E07F45200000000000000000000000000000000026 +S315E07F45300000000000000000000000000000000016 +S315E07F45400000000000000000000000000000000006 +S315E07F455000000000000000000000000000000000F6 +S315E07F456000000000000000000000000000000000E6 +S315E07F457000000000000000000000000000000000D6 +S315E07F458000000000000000000000000000000000C6 +S315E07F459000000000000000000000000000000000B6 +S315E07F45A000000000000000000000000000000000A6 +S315E07F45B00000000000000000000000000000000096 +S315E07F45C00000000000000000000000000000000086 +S315E07F45D00000000000000000000000000000000076 +S315E07F45E00000000000000000000000000000000066 +S315E07F45F00000000000000000000000000000000056 +S315E07F460000000000003E49000000000000000000BE +S315E07F46100000000000000000000000000000000035 +S315E07F46200000000000000000000000000000000025 +S315E07F46300000000000000000000000000000000015 +S315E07F46400000000000000000000000000000000005 +S315E07F465000000000000000000000000000000000F5 +S315E07F466000000000000000000000000000000000E5 +S315E07F467000000000000000000000000000000000D5 +S315E07F468000000000000000000000000000000000C5 +S315E07F469000000000000000000000000000000000B5 +S315E07F46A000000000000000000000000000000000A5 +S315E07F46B00000000000000000000000000000000095 +S315E07F46C00000000000000000000000000000000085 +S315E07F46D00000000000000000000000000000000075 +S315E07F46E00000000000000000000000000000000065 +S315E07F46F00000000000000000000000000000000055 +S315E07F47000000000000000000000000000000000044 +S315E07F47100000000000000000000000000000000034 +S315E07F47200000000000000000000000000000000024 +S315E07F47300000000000000000000000000000000014 +S315E07F47400000000000000000000000000000000004 +S315E07F475000000000000000000000000000000000F4 +S315E07F476000000000000000000000000000000000E4 +S315E07F477000000000000000000000000000003E494D +S315E07F478000000000000000000000000000000000C4 +S315E07F479000000000000000000000000000000000B4 +S315E07F47A000000000000000000000000000000000A4 +S315E07F47B00000000000000000000000000000000094 +S315E07F47C00000000000000000000000000000000084 +S315E07F47D00000000000000000000000000000000074 +S315E07F47E00000000000000000000000000000000064 +S315E07F47F00000000000000000000000000000000054 +S315E07F48000000000000000000000000000000000043 +S315E07F48100000000000000000000000000000000033 +S315E07F48200000000000000000000000000000000023 +S315E07F48300000000000000000000000000000000013 +S315E07F48400000000000000000000000000000000003 +S315E07F485000000000000000000000000000000000F3 +S315E07F486000000000000000000000000000000000E3 +S315E07F487000000000000000000000000000000000D3 +S315E07F488000000000000000000000000000000000C3 +S315E07F489000000000000000000000000000000000B3 +S315E07F48A000000000000000000000000000000000A3 +S315E07F48B00000000000000000000000000000000093 +S315E07F48C00000000000000000000000000000000083 +S315E07F48D00000000000000000000000000000000073 +S315E07F48E00000000000000000000000000000000063 +S315E07F48F0000000000000003E4900000000000000CC +S315E07F49000000000000000000000000000000000042 +S315E07F49100000000000000000000000000000000032 +S315E07F49200000000000000000000000000000000022 +S315E07F49300000000000000000000000000000000012 +S315E07F49400000000000000000000000000000000002 +S315E07F495000000000000000000000000000000000F2 +S315E07F496000000000000000000000000000000000E2 +S315E07F497000000000000000000000000000000000D2 +S315E07F498000000000000000000000000000000000C2 +S315E07F499000000000000000000000000000000000B2 +S315E07F49A000000000000000000000000000000000A2 +S315E07F49B00000000000000000000000000000000092 +S315E07F49C00000000000000000000000000000000082 +S315E07F49D00000000000000000000000000000000072 +S315E07F49E00000000000000000000000000000000062 +S315E07F49F00000000000000000000000000000000052 +S315E07F4A000000000000000000000000000000000041 +S315E07F4A100000000000000000000000000000000031 +S315E07F4A200000000000000000000000000000000021 +S315E07F4A300000000000000000000000000000000011 +S315E07F4A400000000000000000000000000000000001 +S315E07F4A5000000000000000000000000000000000F1 +S315E07F4A6000000000000000000000000000000000E1 +S315E07F4A703E4900000000000000000000000000004A +S315E07F4A8000000000000000000000000000000000C1 +S315E07F4A9000000000000000000000000000000000B1 +S315E07F4AA000000000000000000000000000000000A1 +S315E07F4AB00000000000000000000000000000000091 +S315E07F4AC00000000000000000000000000000000081 +S315E07F4AD00000000000000000000000000000000071 +S315E07F4AE00000000000000000000000000000000061 +S315E07F4AF00000000000000000000000000000000051 +S315E07F4B000000000000000000000000000000000040 +S315E07F4B100000000000000000000000000000000030 +S315E07F4B200000000000000000000000000000000020 +S315E07F4B300000000000000000000000000000000010 +S315E07F4B400000000000000000000000000000000000 +S315E07F4B5000000000000000000000000000000000F0 +S315E07F4B6000000000000000000000000000000000E0 +S315E07F4B7000000000000000000000000000000000D0 +S315E07F4B8000000000000000000000000000000000C0 +S315E07F4B9000000000000000000000000000000000B0 +S315E07F4BA000000000000000000000000000000000A0 +S315E07F4BB00000000000000000000000000000000090 +S315E07F4BC00000000000000000000000000000000080 +S315E07F4BD00000000000000000000000000000000070 +S315E07F4BE00000000000000000003E490000000000D9 +S315E07F4BF00000000000000000000000000000000050 +S315E07F4C00000000000000000000000000000000003F +S315E07F4C10000000000000000000000000000000002F +S315E07F4C20000000000000000000000000000000001F +S315E07F4C30000000000000000000000000000000000F +S315E07F4C4000000000000000000000000000000000FF +S315E07F4C5000000000000000000000000000000000EF +S315E07F4C6000000000000000000000000000000000DF +S315E07F4C7000000000000000000000000000000000CF +S315E07F4C8000000000000000000000000000000000BF +S315E07F4C9000000000000000000000000000000000AF +S315E07F4CA0000000000000000000000000000000009F +S315E07F4CB0000000000000000000000000000000008F +S315E07F4CC0000000000000000000000000000000007F +S315E07F4CD0000000000000000000000000000000006F +S315E07F4CE0000000000000000000000000000000005F +S315E07F4CF0000000000000000000000000000000004F +S315E07F4D00000000000000000000000000000000003E +S315E07F4D10000000000000000000000000000000002E +S315E07F4D20000000000000000000000000000000001E +S315E07F4D30000000000000000000000000000000000E +S315E07F4D4000000000000000000000000000000000FE +S315E07F4D5000000000000000000000000000000000EE +S315E07F4D6000003E4900000000000000000000000057 +S315E07F4D7000000000000000000000000000000000CE +S315E07F4D8000000000000000000000000000000000BE +S315E07F4D9000000000000000000000000000000000AE +S315E07F4DA0000000000000000000000000000000009E +S315E07F4DB0000000000000000000000000000000008E +S315E07F4DC0000000000000000000000000000000007E +S315E07F4DD0000000000000000000000000000000006E +S315E07F4DE0000000000000000000000000000000005E +S315E07F4DF0000000000000000000000000000000004E +S315E07F4E00000000000000000000000000000000003D +S315E07F4E10000000000000000000000000000000002D +S315E07F4E20000000000000000000000000000000001D +S315E07F4E30000000000000000000000000000000000D +S315E07F4E4000000000000000000000000000000000FD +S315E07F4E5000000000000000000000000000000000ED +S315E07F4E6000000000000000000000000000000000DD +S315E07F4E7000000000000000000000000000000000CD +S315E07F4E8000000000000000000000000000000000BD +S315E07F4E9000000000000000000000000000000000AD +S315E07F4EA0000000000000000000000000000000009D +S315E07F4EB0000000000000000000000000000000008D +S315E07F4EC0000000000000000000000000000000007D +S315E07F4ED000000000000000000000003E49000000E6 +S315E07F4EE0000000000000000000000000000000005D +S315E07F4EF0000000000000000000000000000000004D +S315E07F4F00000000000000000000000000000000003C +S315E07F4F10000000000000000000000000000000002C +S315E07F4F20000000000000000000000000000000001C +S315E07F4F30000000000000000000000000000000000C +S315E07F4F4000000000000000000000000000000000FC +S315E07F4F5000000000000000000000000000000000EC +S315E07F4F6000000000000000000000000000000000DC +S315E07F4F7000000000000000000000000000000000CC +S315E07F4F8000000000000000000000000000000000BC +S315E07F4F9000000000000000000000000000000000AC +S315E07F4FA0000000000000000000000000000000009C +S315E07F4FB0000000000000000000000000000000008C +S315E07F4FC0000000000000000000000000000000007C +S315E07F4FD0000000000000000000000000000000006C +S315E07F4FE0000000000000000000000000000000005C +S315E07F4FF0000000000000000000000000000000004C +S315E07F5000000000000000000000000000000000003B +S315E07F5010000000000000000000000000000000002B +S315E07F5020000000000000000000000000000000001B +S315E07F5030000000000000000000000000000000000B +S315E07F504000000000000000000000000000000000FB +S315E07F5050000000003E490000000000000000000064 +S315E07F506000000000000000000000000000000000DB +S315E07F507000000000000000000000000000000000CB +S315E07F508000000000000000000000000000000000BB +S315E07F509000000000000000000000000000000000AB +S315E07F50A0000000000000000000000000000000009B +S315E07F50B0000000000000000000000000000000008B +S315E07F50C0000000000000000000000000000000007B +S315E07F50D0000000000000000000000000000000006B +S315E07F50E0000000000000000000000000000000005B +S315E07F50F0000000000000000000000000000000004B +S315E07F5100000000000000000000000000000000003A +S315E07F5110000000000000000000000000000000002A +S315E07F5120000000000000000000000000000000001A +S315E07F5130000000000000000000000000000000000A +S315E07F514000000000000000000000000000000000FA +S315E07F515000000000000000000000000000000000EA +S315E07F516000000000000000000000000000000000DA +S315E07F517000000000000000000000000000000000CA +S315E07F518000000000000000000000000000000000BA +S315E07F519000000000000000000000000000000000AA +S315E07F51A0000000000000000000000000000000009A +S315E07F51B0000000000000000000000000000000008A +S315E07F51C0000000000000000000000000003E4900F3 +S315E07F51D0000000000000000000000000000000006A +S315E07F51E0000000000000000000000000000000005A +S315E07F51F0000000000000000000000000000000004A +S315E07F52000000000000000000000000000000000039 +S315E07F52100000000000000000000000000000000029 +S315E07F52200000000000000000000000000000000019 +S315E07F52300000000000000000000000000000000009 +S315E07F524000000000000000000000000000000000F9 +S315E07F525000000000000000000000000000000000E9 +S315E07F526000000000000000000000000000000000D9 +S315E07F527000000000000000000000000000000000C9 +S315E07F528000000000000000000000000000000000B9 +S315E07F529000000000000000000000000000000000A9 +S315E07F52A00000000000000000000000000000000099 +S315E07F52B00000000000000000000000000000000089 +S315E07F52C00000000000000000000000000000000079 +S315E07F52D00000000000000000000000000000000069 +S315E07F52E00000000000000000000000000000000059 +S315E07F52F00000000000000000000000000000000049 +S315E07F53000000000000000000000000000000000038 +S315E07F53100000000000000000000000000000000028 +S315E07F53200000000000000000000000000000000018 +S315E07F53300000000000000000000000000000000008 +S315E07F53400000000000003E49000000000000000071 +S315E07F535000000000000000000000000000000000E8 +S315E07F536000000000000000000000000000000000D8 +S315E07F537000000000000000000000000000000000C8 +S315E07F538000000000000000000000000000000000B8 +S315E07F539000000000000000000000000000000000A8 +S315E07F53A00000000000000000000000000000000098 +S315E07F53B00000000000000000000000000000000088 +S315E07F53C00000000000000000000000000000000078 +S315E07F53D00000000000000000000000000000000068 +S315E07F53E00000000000000000000000000000000058 +S315E07F53F00000000000000000000000000000000048 +S315E07F54000000000000000000000000000000000037 +S315E07F54100000000000000000000000000000000027 +S315E07F54200000000000000000000000000000000017 +S315E07F54300000000000000000000000000000000007 +S315E07F544000000000000000000000000000000000F7 +S315E07F545000000000000000000000000000000000E7 +S315E07F546000000000000000000000000000000000D7 +S315E07F547000000000000000000000000000000000C7 +S315E07F548000000000000000000000000000000000B7 +S315E07F549000000000000000000000000000000000A7 +S315E07F54A00000000000000000000000000000000097 +S315E07F54B00000000000000000000000000000003E49 +S315E07F54C0490000000000000000000000000000002E +S315E07F54D00000000000000000000000000000000067 +S315E07F54E00000000000000000000000000000000057 +S315E07F54F00000000000000000000000000000000047 +S315E07F55000000000000000000000000000000000036 +S315E07F55100000000000000000000000000000000026 +S315E07F55200000000000000000000000000000000016 +S315E07F55300000000000000000000000000000000006 +S315E07F554000000000000000000000000000000000F6 +S315E07F555000000000000000000000000000000000E6 +S315E07F556000000000000000000000000000000000D6 +S315E07F557000000000000000000000000000000000C6 +S315E07F558000000000000000000000000000000000B6 +S315E07F559000000000000000000000000000000000A6 +S315E07F55A00000000000000000000000000000000096 +S315E07F55B00000000000000000000000000000000086 +S315E07F55C00000000000000000000000000000000076 +S315E07F55D00000000000000000000000000000000066 +S315E07F55E00000000000000000000000000000000056 +S315E07F55F00000000000000000000000000000000046 +S315E07F56000000000000000000000000000000000035 +S315E07F56100000000000000000000000000000000025 +S315E07F56200000000000000000000000000000000015 +S315E07F563000000000000000003E490000000000007E +S315E07F564000000000000000000000000000000000F5 +S315E07F565000000000000000000000000000000000E5 +S315E07F566000000000000000000000000000000000D5 +S315E07F567000000000000000000000000000000000C5 +S315E07F568000000000000000000000000000000000B5 +S315E07F569000000000000000000000000000000000A5 +S315E07F56A00000000000000000000000000000000095 +S315E07F56B00000000000000000000000000000000085 +S315E07F56C00000000000000000000000000000000075 +S315E07F56D00000000000000000000000000000000065 +S315E07F56E00000000000000000000000000000000055 +S315E07F56F00000000000000000000000000000000045 +S315E07F57000000000000000000000000000000000034 +S315E07F57100000000000000000000000000000000024 +S315E07F57200000000000000000000000000000000014 +S315E07F57300000000000000000000000000000000004 +S315E07F574000000000000000000000000000000000F4 +S315E07F575000000000000000000000000000000000E4 +S315E07F576000000000000000000000000000000000D4 +S315E07F577000000000000000000000000000000000C4 +S315E07F578000000000000000000000000000000000B4 +S315E07F579000000000000000000000000000000000A4 +S315E07F57A00000000000000000000000000000000094 +S315E07F57B0003E4900000000000000000000000000FD +S315E07F57C00000000000000000000000000000000074 +S315E07F57D00000000000000000000000000000000064 +S315E07F57E00000000000000000000000000000000054 +S315E07F57F00000000000000000000000000000000044 +S315E07F58000000000000000000000000000000000033 +S315E07F58100000000000000000000000000000000023 +S315E07F58200000000000000000000000000000000013 +S315E07F58300000000000000000000000000000000003 +S315E07F584000000000000000000000000000000000F3 +S315E07F585000000000000000000000000000000000E3 +S315E07F586000000000000000000000000000000000D3 +S315E07F587000000000000000000000000000000000C3 +S315E07F588000000000000000000000000000000000B3 +S315E07F589000000000000000000000000000000000A3 +S315E07F58A00000000000000000000000000000000093 +S315E07F58B00000000000000000000000000000000083 +S315E07F58C00000000000000000000000000000000073 +S315E07F58D00000000000000000000000000000000063 +S315E07F58E00000000000000000000000000000000053 +S315E07F58F00000000000000000000000000000000043 +S315E07F59000000000000000000000000000000000032 +S315E07F59100000000000000000000000000000000022 +S315E07F5920000000000000000000003E49000000008B +S315E07F59300000000000000000000000000000000002 +S315E07F594000000000000000000000000000000000F2 +S315E07F595000000000000000000000000000000000E2 +S315E07F596000000000000000000000000000000000D2 +S315E07F597000000000000000000000000000000000C2 +S315E07F598000000000000000000000000000000000B2 +S315E07F599000000000000000000000000000000000A2 +S315E07F59A00000000000000000000000000000000092 +S315E07F59B00000000000000000000000000000000082 +S315E07F59C00000000000000000000000000000000072 +S315E07F59D00000000000000000000000000000000062 +S315E07F59E00000000000000000000000000000000052 +S315E07F59F00000000000000000000000000000000042 +S315E07F5A000000000000000000000000000000000031 +S315E07F5A100000000000000000000000000000000021 +S315E07F5A200000000000000000000000000000000011 +S315E07F5A300000000000000000000000000000000001 +S315E07F5A4000000000000000000000000000000000F1 +S315E07F5A5000000000000000000000000000000000E1 +S315E07F5A6000000000000000000000000000000000D1 +S315E07F5A7000000000000000000000000000000000C1 +S315E07F5A8000000000000000000000000000000000B1 +S315E07F5A9000000000000000000000000000000000A1 +S315E07F5AA00000003E4900000000000000000000000A +S315E07F5AB00000000000000000000000000000000081 +S315E07F5AC00000000000000000000000000000000071 +S315E07F5AD00000000000000000000000000000000061 +S315E07F5AE00000000000000000000000000000000051 +S315E07F5AF00000000000000000000000000000000041 +S315E07F5B000000000000000000000000000000000030 +S315E07F5B100000000000000000000000000000000020 +S315E07F5B200000000000000000000000000000000010 +S315E07F5B300000000000000000000000000000000000 +S315E07F5B4000000000000000000000000000000000F0 +S315E07F5B5000000000000000000000000000000000E0 +S315E07F5B6000000000000000000000000000000000D0 +S315E07F5B7000000000000000000000000000000000C0 +S315E07F5B8000000000000000000000000000000000B0 +S315E07F5B9000000000000000000000000000000000A0 +S315E07F5BA00000000000000000000000000000000090 +S315E07F5BB00000000000000000000000000000000080 +S315E07F5BC00000000000000000000000000000000070 +S315E07F5BD00000000000000000000000000000000060 +S315E07F5BE00000000000000000000000000000000050 +S315E07F5BF00000000000000000000000000000000040 +S315E07F5C00000000000000000000000000000000002F +S315E07F5C100000000000000000000000003E49000098 +S315E07F5C20000000000000000000000000000000000F +S315E07F5C3000000000000000000000000000000000FF +S315E07F5C4000000000000000000000000000000000EF +S315E07F5C5000000000000000000000000000000000DF +S315E07F5C6000000000000000000000000000000000CF +S315E07F5C7000000000000000000000000000000000BF +S315E07F5C8000000000000000000000000000000000AF +S315E07F5C90000000000000000000000000000000009F +S315E07F5CA0000000000000000000000000000000008F +S315E07F5CB0000000000000000000000000000000007F +S315E07F5CC0000000000000000000000000000000006F +S315E07F5CD0000000000000000000000000000000005F +S315E07F5CE0000000000000000000000000000000004F +S315E07F5CF0000000000000000000000000000000003F +S315E07F5D00000000000000000000000000000000002E +S315E07F5D10000000000000000000000000000000001E +S315E07F5D20000000000000000000000000000000000E +S315E07F5D3000000000000000000000000000000000FE +S315E07F5D4000000000000000000000000000000000EE +S315E07F5D5000000000000000000000000000000000DE +S315E07F5D6000000000000000000000000000000000CE +S315E07F5D7000000000000000000000000000000000BE +S315E07F5D8000000000000000000000000000000000AE +S315E07F5D9000000000003E4900000000000000000017 +S315E07F5DA0000000000000000000000000000000008E +S315E07F5DB0000000000000000000000000000000007E +S315E07F5DC0000000000000000000000000000000006E +S315E07F5DD0000000000000000000000000000000005E +S315E07F5DE0000000000000000000000000000000004E +S315E07F5DF0000000000000000000000000000000003E +S315E07F5E00000000000000000000000000000000002D +S315E07F5E10000000000000000000000000000000001D +S315E07F5E20000000000000000000000000000000000D +S315E07F5E3000000000000000000000000000000000FD +S315E07F5E4000000000000000000000000000000000ED +S315E07F5E5000000000000000000000000000000000DD +S315E07F5E6000000000000000000000000000000000CD +S315E07F5E7000000000000000000000000000000000BD +S315E07F5E8000000000000000000000000000000000AD +S315E07F5E90000000000000000000000000000000009D +S315E07F5EA0000000000000000000000000000000008D +S315E07F5EB0000000000000000000000000000000007D +S315E07F5EC0000000000000000000000000000000006D +S315E07F5ED0000000000000000000000000000000005D +S315E07F5EE0000000000000000000000000000000004D +S315E07F5EF0000000000000000000000000000000003D +S315E07F5F0000000000000000000000000000003E49A5 +S315E07F5F10000000000000000000000000000000001C +S315E07F5F20000000000000000000000000000000000C +S315E07F5F3000000000000000000000000000000000FC +S315E07F5F4000000000000000000000000000000000EC +S315E07F5F5000000000000000000000000000000000DC +S315E07F5F6000000000000000000000000000000000CC +S315E07F5F7000000000000000000000000000000000BC +S315E07F5F8000000000000000000000000000000000AC +S315E07F5F90000000000000000000000000000000009C +S315E07F5FA0000000000000000000000000000000008C +S315E07F5FB0000000000000000000000000000000007C +S315E07F5FC0000000000000000000000000000000006C +S315E07F5FD0000000000000000000000000000000005C +S315E07F5FE0000000000000000000000000000000004C +S315E07F5FF0000000000000000000000000000000003C +S315E07F6000000000000000000000000000000000002B +S315E07F6010000000000000000000000000000000001B +S315E07F6020000000000000000000000000000000000B +S315E07F603000000000000000000000000000000000FB +S315E07F604000000000000000000000000000000000EB +S315E07F605000000000000000000000000000000000DB +S315E07F606000000000000000000000000000000000CB +S315E07F607000000000000000000000000000000000BB +S315E07F6080000000000000003E490000000000000024 +S315E07F6090000000000000000000000000000000009B +S315E07F60A0000000000000000000000000000000008B +S315E07F60B0000000000000000000000000000000007B +S315E07F60C0000000000000000000000000000000006B +S315E07F60D0000000000000000000000000000000005B +S315E07F60E0000000000000000000000000000000004B +S315E07F60F0000000000000000000000000000000003B +S315E07F6100000000000000000000000000000000002A +S315E07F6110000000000000000000000000000000001A +S315E07F6120000000000000000000000000000000000A +S315E07F613000000000000000000000000000000000FA +S315E07F614000000000000000000000000000000000EA +S315E07F615000000000000000000000000000000000DA +S315E07F616000000000000000000000000000000000CA +S315E07F617000000000000000000000000000000000BA +S315E07F618000000000000000000000000000000000AA +S315E07F6190000000000000000000000000000000009A +S315E07F61A0000000000000000000000000000000008A +S315E07F61B0000000000000000000000000000000007A +S315E07F61C0000000000000000000000000000000006A +S315E07F61D0000000000000000000000000000000005A +S315E07F61E0000000000000000000000000000000004A +S315E07F61F0000000000000000000000000000000003A +S315E07F62003E490000000000000000000000000000A2 +S315E07F62100000000000000000000000000000000019 +S315E07F62200000000000000000000000000000000009 +S315E07F623000000000000000000000000000000000F9 +S315E07F624000000000000000000000000000000000E9 +S315E07F625000000000000000000000000000000000D9 +S315E07F626000000000000000000000000000000000C9 +S315E07F627000000000000000000000000000000000B9 +S315E07F628000000000000000000000000000000000A9 +S315E07F62900000000000000000000000000000000099 +S315E07F62A00000000000000000000000000000000089 +S315E07F62B00000000000000000000000000000000079 +S315E07F62C00000000000000000000000000000000069 +S315E07F62D00000000000000000000000000000000059 +S315E07F62E00000000000000000000000000000000049 +S315E07F62F00000000000000000000000000000000039 +S315E07F63000000000000000000000000000000000028 +S315E07F63100000000000000000000000000000000018 +S315E07F63200000000000000000000000000000000008 +S315E07F633000000000000000000000000000000000F8 +S315E07F634000000000000000000000000000000000E8 +S315E07F635000000000000000000000000000000000D8 +S315E07F636000000000000000000000000000000000C8 +S315E07F63700000000000000000003E49000000000031 +S315E07F638000000000000000000000000000000000A8 +S315E07F63900000000000000000000000000000000098 +S315E07F63A00000000000000000000000000000000088 +S315E07F63B00000000000000000000000000000000078 +S315E07F63C00000000000000000000000000000000068 +S315E07F63D00000000000000000000000000000000058 +S315E07F63E00000000000000000000000000000000048 +S315E07F63F00000000000000000000000000000000038 +S315E07F64000000000000000000000000000000000027 +S315E07F64100000000000000000000000000000000017 +S315E07F64200000000000000000000000000000000007 +S315E07F643000000000000000000000000000000000F7 +S315E07F644000000000000000000000000000000000E7 +S315E07F645000000000000000000000000000000000D7 +S315E07F646000000000000000000000000000000000C7 +S315E07F647000000000000000000000000000000000B7 +S315E07F648000000000000000000000000000000000A7 +S315E07F64900000000000000000000000000000000097 +S315E07F64A00000000000000000000000000000000087 +S315E07F64B00000000000000000000000000000000077 +S315E07F64C00000000000000000000000000000000067 +S315E07F64D00000000000000000000000000000000057 +S315E07F64E00000000000000000000000000000000047 +S315E07F64F000003E49000000000000000000000000B0 +S315E07F65000000000000000000000000000000000026 +S315E07F65100000000000000000000000000000000016 +S315E07F65200000000000000000000000000000000006 +S315E07F653000000000000000000000000000000000F6 +S315E07F654000000000000000000000000000000000E6 +S315E07F655000000000000000000000000000000000D6 +S315E07F656000000000000000000000000000000000C6 +S315E07F657000000000000000000000000000000000B6 +S315E07F658000000000000000000000000000000000A6 +S315E07F65900000000000000000000000000000000096 +S315E07F65A00000000000000000000000000000000086 +S315E07F65B00000000000000000000000000000000076 +S315E07F65C00000000000000000000000000000000066 +S315E07F65D00000000000000000000000000000000056 +S315E07F65E00000000000000000000000000000000046 +S315E07F65F00000000000000000000000000000000036 +S315E07F66000000000000000000000000000000000025 +S315E07F66100000000000000000000000000000000015 +S315E07F66200000000000000000000000000000000005 +S315E07F663000000000000000000000000000000000F5 +S315E07F664000000000000000000000000000000000E5 +S315E07F665000000000000000000000000000000000D5 +S315E07F666000000000000000000000003E490000003E +S315E07F667000000000000000000000000000000000B5 +S315E07F668000000000000000000000000000000000A5 +S315E07F66900000000000000000000000000000000095 +S315E07F66A00000000000000000000000000000000085 +S315E07F66B00000000000000000000000000000000075 +S315E07F66C00000000000000000000000000000000065 +S315E07F66D00000000000000000000000000000000055 +S315E07F66E00000000000000000000000000000000045 +S315E07F66F00000000000000000000000000000000035 +S315E07F67000000000000000000000000000000000024 +S315E07F67100000000000000000000000000000000014 +S315E07F67200000000000000000000000000000000004 +S315E07F673000000000000000000000000000000000F4 +S315E07F674000000000000000000000000000000000E4 +S315E07F675000000000000000000000000000000000D4 +S315E07F676000000000000000000000000000000000C4 +S315E07F677000000000000000000000000000000000B4 +S315E07F678000000000000000000000000000000000A4 +S315E07F67900000000000000000000000000000000094 +S315E07F67A00000000000000000000000000000000084 +S315E07F67B00000000000000000000000000000000074 +S315E07F67C00000000000000000000000000000000064 +S315E07F67D00000000000000000000000000000000054 +S315E07F67E0000000003E4900000000000000000000BD +S315E07F67F00000000000000000000000000000000034 +S315E07F68000000000000000000000000000000000023 +S315E07F68100000000000000000000000000000000013 +S315E07F68200000000000000000000000000000000003 +S315E07F683000000000000000000000000000000000F3 +S315E07F684000000000000000000000000000000000E3 +S315E07F685000000000000000000000000000000000D3 +S315E07F686000000000000000000000000000000000C3 +S315E07F687000000000000000000000000000000000B3 +S315E07F688000000000000000000000000000000000A3 +S315E07F68900000000000000000000000000000000093 +S315E07F68A00000000000000000000000000000000083 +S315E07F68B00000000000000000000000000000000073 +S315E07F68C00000000000000000000000000000000063 +S315E07F68D00000000000000000000000000000000053 +S315E07F68E00000000000000000000000000000000043 +S315E07F68F00000000000000000000000000000000033 +S315E07F69000000000000000000000000000000000022 +S315E07F69100000000000000000000000000000000012 +S315E07F69200000000000000000000000000000000002 +S315E07F693000000000000000000000000000000000F2 +S315E07F694000000000000000000000000000000000E2 +S315E07F6950000000000000000000000000003E49004B +S315E07F696000000000000000000000000000000000C2 +S315E07F697000000000000000000000000000000000B2 +S315E07F698000000000000000000000000000000000A2 +S315E07F69900000000000000000000000000000000092 +S315E07F69A00000000000000000000000000000000082 +S315E07F69B00000000000000000000000000000000072 +S315E07F69C00000000000000000000000000000000062 +S315E07F69D00000000000000000000000000000000052 +S315E07F69E00000000000000000000000000000000042 +S315E07F69F00000000000000000000000000000000032 +S315E07F6A000000000000000000000000000000000021 +S315E07F6A100000000000000000000000000000000011 +S315E07F6A200000000000000000000000000000000001 +S315E07F6A3000000000000000000000000000000000F1 +S315E07F6A4000000000000000000000000000000000E1 +S315E07F6A5000000000000000000000000000000000D1 +S315E07F6A6000000000000000000000000000000000C1 +S315E07F6A7000000000000000000000000000000000B1 +S315E07F6A8000000000000000000000000000000000A1 +S315E07F6A900000000000000000000000000000000091 +S315E07F6AA00000000000000000000000000000000081 +S315E07F6AB00000000000000000000000000000000071 +S315E07F6AC00000000000000000000000000000000061 +S315E07F6AD00000000000003E490000000000000000CA +S315E07F6AE00000000000000000000000000000000041 +S315E07F6AF00000000000000000000000000000000031 +S315E07F6B000000000000000000000000000000000020 +S315E07F6B100000000000000000000000000000000010 +S315E07F6B200000000000000000000000000000000000 +S315E07F6B3000000000000000000000000000000000F0 +S315E07F6B4000000000000000000000000000000000E0 +S315E07F6B5000000000000000000000000000000000D0 +S315E07F6B6000000000000000000000000000000000C0 +S315E07F6B7000000000000000000000000000000000B0 +S315E07F6B8000000000000000000000000000000000A0 +S315E07F6B900000000000000000000000000000000090 +S315E07F6BA00000000000000000000000000000000080 +S315E07F6BB00000000000000000000000000000000070 +S315E07F6BC00000000000000000000000000000000060 +S315E07F6BD00000000000000000000000000000000050 +S315E07F6BE00000000000000000000000000000000040 +S315E07F6BF00000000000000000000000000000000030 +S315E07F6C00000000000000000000000000000000001F +S315E07F6C10000000000000000000000000000000000F +S315E07F6C2000000000000000000000000000000000FF +S315E07F6C3000000000000000000000000000000000EF +S315E07F6C400000000000000000000000000000003EA1 +S315E07F6C504900000000000000000000000000000086 +S315E07F6C6000000000000000000000000000000000BF +S315E07F6C7000000000000000000000000000000000AF +S315E07F6C80000000000000000000000000000000009F +S315E07F6C90000000000000000000000000000000008F +S315E07F6CA0000000000000000000000000000000007F +S315E07F6CB0000000000000000000000000000000006F +S315E07F6CC0000000000000000000000000000000005F +S315E07F6CD0000000000000000000000000000000004F +S315E07F6CE0000000000000000000000000000000003F +S315E07F6CF0000000000000000000000000000000002F +S315E07F6D00000000000000000000000000000000001E +S315E07F6D10000000000000000000000000000000000E +S315E07F6D2000000000000000000000000000000000FE +S315E07F6D3000000000000000000000000000000000EE +S315E07F6D4000000000000000000000000000000000DE +S315E07F6D5000000000000000000000000000000000CE +S315E07F6D6000000000000000000000000000000000BE +S315E07F6D7000000000000000000000000000000000AE +S315E07F6D80000000000000000000000000000000009E +S315E07F6D90000000000000000000000000000000008E +S315E07F6DA0000000000000000000000000000000007E +S315E07F6DB0000000000000000000000000000000006E +S315E07F6DC000000000000000003E49000000000000D7 +S315E07F6DD0000000000000000000000000000000004E +S315E07F6DE0000000000000000000000000000000003E +S315E07F6DF0000000000000000000000000000000002E +S315E07F6E00000000000000000000000000000000001D +S315E07F6E10000000000000000000000000000000000D +S315E07F6E2000000000000000000000000000000000FD +S315E07F6E3000000000000000000000000000000000ED +S315E07F6E4000000000000000000000000000000000DD +S315E07F6E5000000000000000000000000000000000CD +S315E07F6E6000000000000000000000000000000000BD +S315E07F6E7000000000000000000000000000000000AD +S315E07F6E80000000000000000000000000000000009D +S315E07F6E90000000000000000000000000000000008D +S315E07F6EA0000000000000000000000000000000007D +S315E07F6EB0000000000000000000000000000000006D +S315E07F6EC0000000000000000000000000000000005D +S315E07F6ED0000000000000000000000000000000004D +S315E07F6EE0000000000000000000000000000000003D +S315E07F6EF0000000000000000000000000000000002D +S315E07F6F00000000000000000000000000000000001C +S315E07F6F10000000000000000000000000000000000C +S315E07F6F2000000000000000000000000000000000FC +S315E07F6F3000000000000000000000000000000000EC +S315E07F6F40003E490000000000000000000000000055 +S315E07F6F5000000000000000000000000000000000CC +S315E07F6F6000000000000000000000000000000000BC +S315E07F6F7000000000000000000000000000000000AC +S315E07F6F80000000000000000000000000000000009C +S315E07F6F90000000000000000000000000000000008C +S315E07F6FA0000000000000000000000000000000007C +S315E07F6FB0000000000000000000000000000000006C +S315E07F6FC0000000000000000000000000000000005C +S315E07F6FD0000000000000000000000000000000004C +S315E07F6FE0000000000000000000000000000000003C +S315E07F6FF0000000000000000000000000000000002C +S315E07F7000000000000000000000000000000000001B +S315E07F7010000000000000000000000000000000000B +S315E07F702000000000000000000000000000000000FB +S315E07F703000000000000000000000000000000000EB +S315E07F704000000000000000000000000000000000DB +S315E07F705000000000000000000000000000000000CB +S315E07F706000000000000000000000000000000000BB +S315E07F707000000000000000000000000000000000AB +S315E07F7080000000000000000000000000000000009B +S315E07F7090000000000000000000000000000000008B +S315E07F70A0000000000000000000000000000000007B +S315E07F70B0000000000000000000003E4900000000E4 +S315E07F70C0000000000000000000000000000000005B +S315E07F70D0000000000000000000000000000000004B +S315E07F70E0000000000000000000000000000000003B +S315E07F70F0000000000000000000000000000000002B +S315E07F7100000000000000000000000000000000001A +S315E07F7110000000000000000000000000000000000A +S315E07F712000000000000000000000000000000000FA +S315E07F713000000000000000000000000000000000EA +S315E07F714000000000000000000000000000000000DA +S315E07F715000000000000000000000000000000000CA +S315E07F716000000000000000000000000000000000BA +S315E07F717000000000000000000000000000000000AA +S315E07F7180000000000000000000000000000000009A +S315E07F7190000000000000000000000000000000008A +S315E07F71A0000000000000000000000000000000007A +S315E07F71B0000000000000000000000000000000006A +S315E07F71C0000000000000000000000000000000005A +S315E07F71D0000000000000000000000000000000004A +S315E07F71E0000000000000000000000000000000003A +S315E07F71F0000000000000000000000000000000002A +S315E07F72000000000000000000000000000000000019 +S315E07F72100000000000000000000000000000000009 +S315E07F722000000000000000000000000000000000F9 +S315E07F72300000003E49000000000000000000000062 +S315E07F724000000000000000000000000000000000D9 +S315E07F725000000000000000000000000000000000C9 +S315E07F726000000000000000000000000000000000B9 +S315E07F727000000000000000000000000000000000A9 +S315E07F72800000000000000000000000000000000099 +S315E07F72900000000000000000000000000000000089 +S315E07F72A00000000000000000000000000000000079 +S315E07F72B00000000000000000000000000000000069 +S315E07F72C00000000000000000000000000000000059 +S315E07F72D00000000000000000000000000000000049 +S315E07F72E00000000000000000000000000000000039 +S315E07F72F00000000000000000000000000000000029 +S315E07F73000000000000000000000000000000000018 +S315E07F73100000000000000000000000000000000008 +S315E07F732000000000000000000000000000000000F8 +S315E07F733000000000000000000000000000000000E8 +S315E07F734000000000000000000000000000000000D8 +S315E07F735000000000000000000000000000000000C8 +S315E07F736000000000000000000000000000000000B8 +S315E07F737000000000000000000000000000000000A8 +S315E07F73800000000000000000000000000000000098 +S315E07F73900000000000000000000000000000000088 +S315E07F73A00000000000000000000000003E490000F1 +S315E07F73B00000000000000000000000000000000068 +S315E07F73C00000000000000000000000000000000058 +S315E07F73D00000000000000000000000000000000048 +S315E07F73E00000000000000000000000000000000038 +S315E07F73F00000000000000000000000000000000028 +S315E07F74000000000000000000000000000000000017 +S315E07F74100000000000000000000000000000000007 +S315E07F742000000000000000000000000000000000F7 +S315E07F743000000000000000000000000000000000E7 +S315E07F744000000000000000000000000000000000D7 +S315E07F745000000000000000000000000000000000C7 +S315E07F746000000000000000000000000000000000B7 +S315E07F747000000000000000000000000000000000A7 +S315E07F74800000000000000000000000000000000097 +S315E07F74900000000000000000000000000000000087 +S315E07F74A00000000000000000000000000000000077 +S315E07F74B00000000000000000000000000000000067 +S315E07F74C00000000000000000000000000000000057 +S315E07F74D00000000000000000000000000000000047 +S315E07F74E00000000000000000000000000000000037 +S315E07F74F00000000000000000000000000000000027 +S315E07F75000000000000000000000000000000000016 +S315E07F75100000000000000000000000000000000006 +S315E07F752000000000003E490000000000000000006F +S315E07F753000000000000000000000000000000000E6 +S315E07F754000000000000000000000000000000000D6 +S315E07F755000000000000000000000000000000000C6 +S315E07F756000000000000000000000000000000000B6 +S315E07F757000000000000000000000000000000000A6 +S315E07F75800000000000000000000000000000000096 +S315E07F75900000000000000000000000000000000086 +S315E07F75A00000000000000000000000000000000076 +S315E07F75B00000000000000000000000000000000066 +S315E07F75C00000000000000000000000000000000056 +S315E07F75D00000000000000000000000000000000046 +S315E07F75E00000000000000000000000000000000036 +S315E07F75F00000000000000000000000000000000026 +S315E07F76000000000000000000000000000000000015 +S315E07F76100000000000000000000000000000000005 +S315E07F762000000000000000000000000000000000F5 +S315E07F763000000000000000000000000000000000E5 +S315E07F764000000000000000000000000000000000D5 +S315E07F765000000000000000000000000000000000C5 +S315E07F766000000000000000000000000000000000B5 +S315E07F767000000000000000000000000000000000A5 +S315E07F76800000000000000000000000000000000095 +S315E07F769000000000000000000000000000003E49FE +S315E07F76A00000000000000000000000000000000075 +S315E07F76B00000000000000000000000000000000065 +S315E07F76C00000000000000000000000000000000055 +S315E07F76D00000000000000000000000000000000045 +S315E07F76E00000000000000000000000000000000035 +S315E07F76F00000000000000000000000000000000025 +S315E07F77000000000000000000000000000000000014 +S315E07F77100000000000000000000000000000000004 +S315E07F772000000000000000000000000000000000F4 +S315E07F773000000000000000000000000000000000E4 +S315E07F774000000000000000000000000000000000D4 +S315E07F775000000000000000000000000000000000C4 +S315E07F776000000000000000000000000000000000B4 +S315E07F777000000000000000000000000000000000A4 +S315E07F77800000000000000000000000000000000094 +S315E07F77900000000000000000000000000000000084 +S315E07F77A00000000000000000000000000000000074 +S315E07F77B00000000000000000000000000000000064 +S315E07F77C00000000000000000000000000000000054 +S315E07F77D00000000000000000000000000000000044 +S315E07F77E00000000000000000000000000000000034 +S315E07F77F00000000000000000000000000000000024 +S315E07F78000000000000000000000000000000000013 +S315E07F7810000000000000003E49000000000000007C +S315E07F782000000000000000000000000000000000F3 +S315E07F783000000000000000000000000000000000E3 +S315E07F784000000000000000000000000000000000D3 +S315E07F785000000000000000000000000000000000C3 +S315E07F786000000000000000000000000000000000B3 +S315E07F787000000000000000000000000000000000A3 +S315E07F78800000000000000000000000000000000093 +S315E07F78900000000000000000000000000000000083 +S315E07F78A00000000000000000000000000000000073 +S315E07F78B00000000000000000000000000000000063 +S315E07F78C00000000000000000000000000000000053 +S315E07F78D00000000000000000000000000000000043 +S315E07F78E00000000000000000000000000000000033 +S315E07F78F00000000000000000000000000000000023 +S315E07F79000000000000000000000000000000000012 +S315E07F79100000000000000000000000000000000002 +S315E07F792000000000000000000000000000000000F2 +S315E07F793000000000000000000000000000000000E2 +S315E07F794000000000000000000000000000000000D2 +S315E07F795000000000000000000000000000000000C2 +S315E07F796000000000000000000000000000000000B2 +S315E07F797000000000000000000000000000000000A2 +S315E07F79800000000000000000000000000000000092 +S315E07F79903E490000000000000000000000000000FB +S315E07F79A00000000000000000000000000000000072 +S315E07F79B00000000000000000000000000000000062 +S315E07F79C00000000000000000000000000000000052 +S315E07F79D00000000000000000000000000000000042 +S315E07F79E00000000000000000000000000000000032 +S315E07F79F00000000000000000000000000000000022 +S315E07F7A000000000000000000000000000000000011 +S315E07F7A100000000000000000000000000000000001 +S315E07F7A2000000000000000000000000000000000F1 +S315E07F7A3000000000000000000000000000000000E1 +S315E07F7A4000000000000000000000000000000000D1 +S315E07F7A5000000000000000000000000000000000C1 +S315E07F7A6000000000000000000000000000000000B1 +S315E07F7A7000000000000000000000000000000000A1 +S315E07F7A800000000000000000000000000000000091 +S315E07F7A900000000000000000000000000000000081 +S315E07F7AA00000000000000000000000000000000071 +S315E07F7AB00000000000000000000000000000000061 +S315E07F7AC00000000000000000000000000000000051 +S315E07F7AD00000000000000000000000000000000041 +S315E07F7AE00000000000000000000000000000000031 +S315E07F7AF00000000000000000000000000000000021 +S315E07F7B000000000000000000003E49000000000089 +S315E07F7B100000000000000000000000000000000000 +S315E07F7B2000000000000000000000000000000000F0 +S315E07F7B3000000000000000000000000000000000E0 +S315E07F7B4000000000000000000000000000000000D0 +S315E07F7B5000000000000000000000000000000000C0 +S315E07F7B6000000000000000000000000000000000B0 +S315E07F7B7000000000000000000000000000000000A0 +S315E07F7B800000000000000000000000000000000090 +S315E07F7B900000000000000000000000000000000080 +S315E07F7BA00000000000000000000000000000000070 +S315E07F7BB00000000000000000000000000000000060 +S315E07F7BC00000000000000000000000000000000050 +S315E07F7BD00000000000000000000000000000000040 +S315E07F7BE00000000000000000000000000000000030 +S315E07F7BF00000000000000000000000000000000020 +S315E07F7C00000000000000000000000000000000000F +S315E07F7C1000000000000000000000000000000000FF +S315E07F7C2000000000000000000000000000000000EF +S315E07F7C3000000000000000000000000000000000DF +S315E07F7C4000000000000000000000000000000000CF +S315E07F7C5000000000000000000000000000000000BF +S315E07F7C6000000000000000000000000000000000AF +S315E07F7C70000000000000000000000000000000009F +S315E07F7C8000003E4900000000000000000000000008 +S315E07F7C90000000000000000000000000000000007F +S315E07F7CA0000000000000000000000000000000006F +S315E07F7CB0000000000000000000000000000000005F +S315E07F7CC0000000000000000000000000000000004F +S315E07F7CD0000000000000000000000000000000003F +S315E07F7CE0000000000000000000000000000000002F +S315E07F7CF0000000000000000000000000000000001F +S315E07F7D00000000000000000000000000000000000E +S315E07F7D1000000000000000000000000000000000FE +S315E07F7D2000000000000000000000000000000000EE +S315E07F7D3000000000000000000000000000000000DE +S315E07F7D4000000000000000000000000000000000CE +S315E07F7D5000000000000000000000000000000000BE +S315E07F7D6000000000000000000000000000000000AE +S315E07F7D70000000000000000000000000000000009E +S315E07F7D80000000000000000000000000000000008E +S315E07F7D90000000000000000000000000000000007E +S315E07F7DA0000000000000000000000000000000006E +S315E07F7DB0000000000000000000000000000000005E +S315E07F7DC0000000000000000000000000000000004E +S315E07F7DD0000000000000000000000000000000003E +S315E07F7DE0000000000000000000000000000000002E +S315E07F7DF000000000000000000000003E4900000097 +S315E07F7E00000000000000000000000000000000000D +S315E07F7E1000000000000000000000000000000000FD +S315E07F7E2000000000000000000000000000000000ED +S315E07F7E3000000000000000000000000000000000DD +S315E07F7E4000000000000000000000000000000000CD +S315E07F7E5000000000000000000000000000000000BD +S315E07F7E6000000000000000000000000000000000AD +S315E07F7E70000000000000000000000000000000009D +S315E07F7E80000000000000000000000000000000008D +S315E07F7E90000000000000000000000000000000007D +S315E07F7EA0000000000000000000000000000000006D +S315E07F7EB0000000000000000000000000000000005D +S315E07F7EC0000000000000000000000000000000004D +S315E07F7ED0000000000000000000000000000000003D +S315E07F7EE0000000000000000000000000000000002D +S315E07F7EF0000000000000000000000000000000001D +S315E07F7F00000000000000000000000000000000000C +S315E07F7F1000000000000000000000000000000000FC +S315E07F7F2000000000000000000000000000000000EC +S315E07F7F3000000000000000000000000000000000DC +S315E07F7F4000000000000000000000000000000000CC +S315E07F7F5000000000000000000000000000000000BC +S315E07F7F6000000000000000000000000000000000AC +S315E07F7F70000000003E490000000000000000000015 +S315E07F7F80000000000000000000000000000000008C +S315E07F7F90000000000000000000000000000000007C +S315E07F7FA0000000000000000000000000000000006C +S315E07F7FB0000000000000000000000000000000005C +S315E07F7FC0000000000000000000000000000000004C +S315E07F7FD0000000000000000000000000000000003C +S315E07F7FE0000000000000000000000000000000002C +S315E07F7FF0000000000000000000000000000000001C +S315E07F8000000000000000000000000000000000000B +S315E07F801000000000000000000000000000000000FB +S315E07F802000000000000000000000000000000000EB +S315E07F803000000000000000000000000000000000DB +S315E07F804000000000000000000000000000000000CB +S315E07F805000000000000000000000000000000000BB +S315E07F806000000000000000000000000000000000AB +S315E07F8070000000000000000000000000000000009B +S315E07F8080000000000000000000000000000000008B +S315E07F8090000000000000000000000000000000007B +S315E07F80A0000000000000000000000000000000006B +S315E07F80B0000000000000000000000000000000005B +S315E07F80C0000000000000000000000000000000004B +S315E07F80D0000000000000000000000000000000003B +S315E07F80E0000000000000000000000000003E4900A4 +S315E07F80F0000000000000000000000000000000001B +S315E07F8100000000000000000000000000000000000A +S315E07F811000000000000000000000000000000000FA +S315E07F812000000000000000000000000000000000EA +S315E07F813000000000000000000000000000000000DA +S315E07F814000000000000000000000000000000000CA +S315E07F815000000000000000000000000000000000BA +S315E07F816000000000000000000000000000000000AA +S315E07F8170000000000000000000000000000000009A +S315E07F8180000000000000000000000000000000008A +S315E07F8190000000000000000000000000000000007A +S315E07F81A0000000000000000000000000000000006A +S315E07F81B0000000000000000000000000000000005A +S315E07F81C0000000000000000000000000000000004A +S315E07F81D0000000000000000000000000000000003A +S315E07F81E0000000000000000000000000000000002A +S315E07F81F0000000000000000000000000000000001A +S315E07F82000000000000000000000000000000000009 +S315E07F821000000000000000000000000000000000F9 +S315E07F822000000000000000000000000000000000E9 +S315E07F823000000000000000000000000000000000D9 +S315E07F824000000000000000000000000000000000C9 +S315E07F825000000000000000000000000000000000B9 +S315E07F82600000000000003E49000000000000000022 +S315E07F82700000000000000000000000000000000099 +S315E07F82800000000000000000000000000000000089 +S315E07F82900000000000000000000000000000000079 +S315E07F82A00000000000000000000000000000000069 +S315E07F82B00000000000000000000000000000000059 +S315E07F82C00000000000000000000000000000000049 +S315E07F82D00000000000000000000000000000000039 +S315E07F82E00000000000000000000000000000000029 +S315E07F82F00000000000000000000000000000000019 +S315E07F83000000000000000000000000000000000008 +S315E07F831000000000000000000000000000000000F8 +S315E07F832000000000000000000000000000000000E8 +S315E07F833000000000000000000000000000000000D8 +S315E07F834000000000000000000000000000000000C8 +S315E07F835000000000000000000000000000000000B8 +S315E07F836000000000000000000000000000000000A8 +S315E07F83700000000000000000000000000000000098 +S315E07F83800000000000000000000000000000000088 +S315E07F83900000000000000000000000000000000078 +S315E07F83A00000000000000000000000000000000068 +S315E07F83B00000000000000000000000000000000058 +S315E07F83C00000000000000000000000000000000048 +S315E07F83D00000000000000000000000000000003EFA +S315E07F83E049000000000000000000000000000000DF +S315E07F83F00000000000000000000000000000000018 +S315E07F84000000000000000000000000000000000007 +S315E07F841000000000000000000000000000000000F7 +S315E07F842000000000000000000000000000000000E7 +S315E07F843000000000000000000000000000000000D7 +S315E07F844000000000000000000000000000000000C7 +S315E07F845000000000000000000000000000000000B7 +S315E07F846000000000000000000000000000000000A7 +S315E07F84700000000000000000000000000000000097 +S315E07F84800000000000000000000000000000000087 +S315E07F84900000000000000000000000000000000077 +S315E07F84A00000000000000000000000000000000067 +S315E07F84B00000000000000000000000000000000057 +S315E07F84C00000000000000000000000000000000047 +S315E07F84D00000000000000000000000000000000037 +S315E07F84E00000000000000000000000000000000027 +S315E07F84F00000000000000000000000000000000017 +S315E07F85000000000000000000000000000000000006 +S315E07F851000000000000000000000000000000000F6 +S315E07F852000000000000000000000000000000000E6 +S315E07F853000000000000000000000000000000000D6 +S315E07F854000000000000000000000000000000000C6 +S315E07F855000000000000000003E490000000000002F +S315E07F856000000000000000000000000000000000A6 +S315E07F85700000000000000000000000000000000096 +S315E07F85800000000000000000000000000000000086 +S315E07F85900000000000000000000000000000000076 +S315E07F85A00000000000000000000000000000000066 +S315E07F85B00000000000000000000000000000000056 +S315E07F85C00000000000000000000000000000000046 +S315E07F85D00000000000000000000000000000000036 +S315E07F85E00000000000000000000000000000000026 +S315E07F85F00000000000000000000000000000000016 +S315E07F86000000000000000000000000000000000005 +S315E07F861000000000000000000000000000000000F5 +S315E07F862000000000000000000000000000000000E5 +S315E07F863000000000000000000000000000000000D5 +S315E07F864000000000000000000000000000000000C5 +S315E07F865000000000000000000000000000000000B5 +S315E07F866000000000000000000000000000000000A5 +S315E07F86700000000000000000000000000000000095 +S315E07F86800000000000000000000000000000000085 +S315E07F86900000000000000000000000000000000075 +S315E07F86A00000000000000000000000000000000065 +S315E07F86B00000000000000000000000000000000055 +S315E07F86C00000000000000000000000000000000045 +S315E07F86D0003E4900000000000000000000000000AE +S315E07F86E00000000000000000000000000000000025 +S315E07F86F00000000000000000000000000000000015 +S315E07F87000000000000000000000000000000000004 +S315E07F871000000000000000000000000000000000F4 +S315E07F872000000000000000000000000000000000E4 +S315E07F873000000000000000000000000000000000D4 +S315E07F874000000000000000000000000000000000C4 +S315E07F875000000000000000000000000000000000B4 +S315E07F876000000000000000000000000000000000A4 +S315E07F87700000000000000000000000000000000094 +S315E07F87800000000000000000000000000000000084 +S315E07F87900000000000000000000000000000000074 +S315E07F87A00000000000000000000000000000000064 +S315E07F87B00000000000000000000000000000000054 +S315E07F87C00000000000000000000000000000000044 +S315E07F87D00000000000000000000000000000000034 +S315E07F87E00000000000000000000000000000000024 +S315E07F87F00000000000000000000000000000000014 +S315E07F88000000000000000000000000000000000003 +S315E07F881000000000000000000000000000000000F3 +S315E07F882000000000000000000000000000000000E3 +S315E07F883000000000000000000000000000000000D3 +S315E07F8840000000000000000000003E49000000003C +S315E07F885000000000000000000000000000000000B3 +S315E07F886000000000000000000000000000000000A3 +S315E07F88700000000000000000000000000000000093 +S315E07F88800000000000000000000000000000000083 +S315E07F88900000000000000000000000000000000073 +S315E07F88A00000000000000000000000000000000063 +S315E07F88B00000000000000000000000000000000053 +S315E07F88C00000000000000000000000000000000043 +S315E07F88D00000000000000000000000000000000033 +S315E07F88E00000000000000000000000000000000023 +S315E07F88F00000000000000000000000000000000013 +S315E07F89000000000000000000000000000000000002 +S315E07F891000000000000000000000000000000000F2 +S315E07F892000000000000000000000000000000000E2 +S315E07F893000000000000000000000000000000000D2 +S315E07F894000000000000000000000000000000000C2 +S315E07F895000000000000000000000000000000000B2 +S315E07F896000000000000000000000000000000000A2 +S315E07F89700000000000000000000000000000000092 +S315E07F89800000000000000000000000000000000082 +S315E07F89900000000000000000000000000000000072 +S315E07F89A00000000000000000000000000000000062 +S315E07F89B00000000000000000000000000000000052 +S315E07F89C00000003E490000000000000000000000BB +S315E07F89D00000000000000000000000000000000032 +S315E07F89E00000000000000000000000000000000022 +S315E07F89F00000000000000000000000000000000012 +S315E07F8A000000000000000000000000000000000001 +S315E07F8A1000000000000000000000000000000000F1 +S315E07F8A2000000000000000000000000000000000E1 +S315E07F8A3000000000000000000000000000000000D1 +S315E07F8A4000000000000000000000000000000000C1 +S315E07F8A5000000000000000000000000000000000B1 +S315E07F8A6000000000000000000000000000000000A1 +S315E07F8A700000000000000000000000000000000091 +S315E07F8A800000000000000000000000000000000081 +S315E07F8A900000000000000000000000000000000071 +S315E07F8AA00000000000000000000000000000000061 +S315E07F8AB00000000000000000000000000000000051 +S315E07F8AC00000000000000000000000000000000041 +S315E07F8AD00000000000000000000000000000000031 +S315E07F8AE00000000000000000000000000000000021 +S315E07F8AF00000000000000000000000000000000011 +S315E07F8B000000000000000000000000000000000000 +S315E07F8B1000000000000000000000000000000000F0 +S315E07F8B2000000000000000000000000000000000E0 +S315E07F8B300000000000000000000000003E49000049 +S315E07F8B4000000000000000000000000000000000C0 +S315E07F8B5000000000000000000000000000000000B0 +S315E07F8B6000000000000000000000000000000000A0 +S315E07F8B700000000000000000000000000000000090 +S315E07F8B800000000000000000000000000000000080 +S315E07F8B900000000000000000000000000000000070 +S315E07F8BA00000000000000000000000000000000060 +S315E07F8BB00000000000000000000000000000000050 +S315E07F8BC00000000000000000000000000000000040 +S315E07F8BD00000000000000000000000000000000030 +S315E07F8BE00000000000000000000000000000000020 +S315E07F8BF00000000000000000000000000000000010 +S315E07F8C0000000000000000000000000000000000FF +S315E07F8C1000000000000000000000000000000000EF +S315E07F8C2000000000000000000000000000000000DF +S315E07F8C3000000000000000000000000000000000CF +S315E07F8C4000000000000000000000000000000000BF +S315E07F8C5000000000000000000000000000000000AF +S315E07F8C60000000000000000000000000000000009F +S315E07F8C70000000000000000000000000000000008F +S315E07F8C80000000000000000000000000000000007F +S315E07F8C90000000000000000000000000000000006F +S315E07F8CA0000000000000000000000000000000005F +S315E07F8CB000000000003E49000000000000000000C8 +S315E07F8CC0000000000000000000000000000000003F +S315E07F8CD0000000000000000000000000000000002F +S315E07F8CE0000000000000000000000000000000001F +S315E07F8CF0000000000000000000000000000000000F +S315E07F8D0000000000000000000000000000000000FE +S315E07F8D1000000000000000000000000000000000EE +S315E07F8D2000000000000000000000000000000000DE +S315E07F8D3000000000000000000000000000000000CE +S315E07F8D4000000000000000000000000000000000BE +S315E07F8D5000000000000000000000000000000000AE +S315E07F8D60000000000000000000000000000000009E +S315E07F8D70000000000000000000000000000000008E +S315E07F8D80000000000000000000000000000000007E +S315E07F8D90000000000000000000000000000000006E +S315E07F8DA0000000000000000000000000000000005E +S315E07F8DB0000000000000000000000000000000004E +S315E07F8DC0000000000000000000000000000000003E +S315E07F8DD0000000000000000000000000000000002E +S315E07F8DE0000000000000000000000000000000001E +S315E07F8DF0000000000000000000000000000000000E +S315E07F8E0000000000000000000000000000000000FD +S315E07F8E1000000000000000000000000000000000ED +S315E07F8E2000000000000000000000000000003E4956 +S315E07F8E3000000000000000000000000000000000CD +S315E07F8E4000000000000000000000000000000000BD +S315E07F8E5000000000000000000000000000000000AD +S315E07F8E60000000000000000000000000000000009D +S315E07F8E70000000000000000000000000000000008D +S315E07F8E80000000000000000000000000000000007D +S315E07F8E90000000000000000000000000000000006D +S315E07F8EA0000000000000000000000000000000005D +S315E07F8EB0000000000000000000000000000000004D +S315E07F8EC0000000000000000000000000000000003D +S315E07F8ED0000000000000000000000000000000002D +S315E07F8EE0000000000000000000000000000000001D +S315E07F8EF0000000000000000000000000000000000D +S315E07F8F0000000000000000000000000000000000FC +S315E07F8F1000000000000000000000000000000000EC +S315E07F8F2000000000000000000000000000000000DC +S315E07F8F3000000000000000000000000000000000CC +S315E07F8F4000000000000000000000000000000000BC +S315E07F8F5000000000000000000000000000000000AC +S315E07F8F60000000000000000000000000000000009C +S315E07F8F70000000000000000000000000000000008C +S315E07F8F80000000000000000000000000000000007C +S315E07F8F90000000000000000000000000000000006C +S315E07F8FA0000000000000003E4900000000000000D5 +S315E07F8FB0000000000000000000000000000000004C +S315E07F8FC0000000000000000000000000000000003C +S315E07F8FD0000000000000000000000000000000002C +S315E07F8FE0000000000000000000000000000000001C +S315E07F8FF0000000000000000000000000000000000C +S315E07F900000000000000000000000000000000000FB +S315E07F901000000000000000000000000000000000EB +S315E07F902000000000000000000000000000000000DB +S315E07F903000000000000000000000000000000000CB +S315E07F904000000000000000000000000000000000BB +S315E07F905000000000000000000000000000000000AB +S315E07F9060000000000000000000000000000000009B +S315E07F9070000000000000000000000000000000008B +S315E07F9080000000000000000000000000000000007B +S315E07F9090000000000000000000000000000000006B +S315E07F90A0000000000000000000000000000000005B +S315E07F90B0000000000000000000000000000000004B +S315E07F90C0000000000000000000000000000000003B +S315E07F90D0000000000000000000000000000000002B +S315E07F90E0000000000000000000000000000000001B +S315E07F90F0000000000000000000000000000000000B +S315E07F910000000000000000000000000000000000FA +S315E07F911000000000000000000000000000000000EA +S315E07F91203E49000000000000000000000000000053 +S315E07F913000000000000000000000000000000000CA +S315E07F914000000000000000000000000000000000BA +S315E07F915000000000000000000000000000000000AA +S315E07F9160000000000000000000000000000000009A +S315E07F9170000000000000000000000000000000008A +S315E07F9180000000000000000000000000000000007A +S315E07F9190000000000000000000000000000000006A +S315E07F91A0000000000000000000000000000000005A +S315E07F91B0000000000000000000000000000000004A +S315E07F91C0000000000000000000000000000000003A +S315E07F91D0000000000000000000000000000000002A +S315E07F91E0000000000000000000000000000000001A +S315E07F91F0000000000000000000000000000000000A +S315E07F920000000000000000000000000000000000F9 +S315E07F921000000000000000000000000000000000E9 +S315E07F922000000000000000000000000000000000D9 +S315E07F923000000000000000000000000000000000C9 +S315E07F924000000000000000000000000000000000B9 +S315E07F925000000000000000000000000000000000A9 +S315E07F92600000000000000000000000000000000099 +S315E07F92700000000000000000000000000000000089 +S315E07F92800000000000000000000000000000000079 +S315E07F92900000000000000000003E490000000000E2 +S315E07F92A00000000000000000000000000000000059 +S315E07F92B00000000000000000000000000000000049 +S315E07F92C00000000000000000000000000000000039 +S315E07F92D00000000000000000000000000000000029 +S315E07F92E00000000000000000000000000000000019 +S315E07F92F00000000000000000000000000000000009 +S315E07F930000000000000000000000000000000000F8 +S315E07F931000000000000000000000000000000000E8 +S315E07F932000000000000000000000000000000000D8 +S315E07F933000000000000000000000000000000000C8 +S315E07F934000000000000000000000000000000000B8 +S315E07F935000000000000000000000000000000000A8 +S315E07F93600000000000000000000000000000000098 +S315E07F93700000000000000000000000000000000088 +S315E07F93800000000000000000000000000000000078 +S315E07F93900000000000000000000000000000000068 +S315E07F93A00000000000000000000000000000000058 +S315E07F93B00000000000000000000000000000000048 +S315E07F93C00000000000000000000000000000000038 +S315E07F93D00000000000000000000000000000000028 +S315E07F93E00000000000000000000000000000000018 +S315E07F93F00000000000000000000000000000000008 +S315E07F940000000000000000000000000000000000F7 +S315E07F941000003E4900000000000000000000000060 +S315E07F942000000000000000000000000000000000D7 +S315E07F943000000000000000000000000000000000C7 +S315E07F944000000000000000000000000000000000B7 +S315E07F945000000000000000000000000000000000A7 +S315E07F94600000000000000000000000000000000097 +S315E07F94700000000000000000000000000000000087 +S315E07F94800000000000000000000000000000000077 +S315E07F94900000000000000000000000000000000067 +S315E07F94A00000000000000000000000000000000057 +S315E07F94B00000000000000000000000000000000047 +S315E07F94C00000000000000000000000000000000037 +S315E07F94D00000000000000000000000000000000027 +S315E07F94E00000000000000000000000000000000017 +S315E07F94F00000000000000000000000000000000007 +S315E07F950000000000000000000000000000000000F6 +S315E07F951000000000000000000000000000000000E6 +S315E07F952000000000000000000000000000000000D6 +S315E07F953000000000000000000000000000000000C6 +S315E07F954000000000000000000000000000000000B6 +S315E07F955000000000000000000000000000000000A6 +S315E07F95600000000000000000000000000000000096 +S315E07F95700000000000000000000000000000000086 +S315E07F958000000000000000000000003E49000000EF +S315E07F95900000000000000000000000000000000066 +S315E07F95A00000000000000000000000000000000056 +S315E07F95B00000000000000000000000000000000046 +S315E07F95C00000000000000000000000000000000036 +S315E07F95D00000000000000000000000000000000026 +S315E07F95E00000000000000000000000000000000016 +S315E07F95F00000000000000000000000000000000006 +S315E07F960000000000000000000000000000000000F5 +S315E07F961000000000000000000000000000000000E5 +S315E07F962000000000000000000000000000000000D5 +S315E07F963000000000000000000000000000000000C5 +S315E07F964000000000000000000000000000000000B5 +S315E07F965000000000000000000000000000000000A5 +S315E07F96600000000000000000000000000000000095 +S315E07F96700000000000000000000000000000000085 +S315E07F96800000000000000000000000000000000075 +S315E07F96900000000000000000000000000000000065 +S315E07F96A00000000000000000000000000000000055 +S315E07F96B00000000000000000000000000000000045 +S315E07F96C00000000000000000000000000000000035 +S315E07F96D00000000000000000000000000000000025 +S315E07F96E00000000000000000000000000000000015 +S315E07F96F00000000000000000000000000000000005 +S315E07F9700000000003E49000000000000000000006D +S315E07F971000000000000000000000000000000000E4 +S315E07F972000000000000000000000000000000000D4 +S315E07F973000000000000000000000000000000000C4 +S315E07F974000000000000000000000000000000000B4 +S315E07F975000000000000000000000000000000000A4 +S315E07F97600000000000000000000000000000000094 +S315E07F97700000000000000000000000000000000084 +S315E07F97800000000000000000000000000000000074 +S315E07F97900000000000000000000000000000000064 +S315E07F97A00000000000000000000000000000000054 +S315E07F97B00000000000000000000000000000000044 +S315E07F97C00000000000000000000000000000000034 +S315E07F97D00000000000000000000000000000000024 +S315E07F97E00000000000000000000000000000000014 +S315E07F97F00000000000000000000000000000000004 +S315E07F980000000000000000000000000000000000F3 +S315E07F981000000000000000000000000000000000E3 +S315E07F982000000000000000000000000000000000D3 +S315E07F983000000000000000000000000000000000C3 +S315E07F984000000000000000000000000000000000B3 +S315E07F985000000000000000000000000000000000A3 +S315E07F98600000000000000000000000000000000093 +S315E07F9870000000000000000000000000003E4900FC +S315E07F98800000000000000000000000000000000073 +S315E07F98900000000000000000000000000000000063 +S315E07F98A00000000000000000000000000000000053 +S315E07F98B00000000000000000000000000000000043 +S315E07F98C00000000000000000000000000000000033 +S315E07F98D00000000000000000000000000000000023 +S315E07F98E00000000000000000000000000000000013 +S315E07F98F00000000000000000000000000000000003 +S315E07F990000000000000000000000000000000000F2 +S315E07F991000000000000000000000000000000000E2 +S315E07F992000000000000000000000000000000000D2 +S315E07F993000000000000000000000000000000000C2 +S315E07F994000000000000000000000000000000000B2 +S315E07F995000000000000000000000000000000000A2 +S315E07F99600000000000000000000000000000000092 +S315E07F99700000000000000000000000000000000082 +S315E07F99800000000000000000000000000000000072 +S315E07F99900000000000000000000000000000000062 +S315E07F99A00000000000000000000000000000000052 +S315E07F99B00000000000000000000000000000000042 +S315E07F99C00000000000000000000000000000000032 +S315E07F99D00000000000000000000000000000000022 +S315E07F99E00000000000000000000000000000000012 +S315E07F99F00000000000003E4900000000000000007B +S315E07F9A0000000000000000000000000000000000F1 +S315E07F9A1000000000000000000000000000000000E1 +S315E07F9A2000000000000000000000000000000000D1 +S315E07F9A3000000000000000000000000000000000C1 +S315E07F9A4000000000000000000000000000000000B1 +S315E07F9A5000000000000000000000000000000000A1 +S315E07F9A600000000000000000000000000000000091 +S315E07F9A700000000000000000000000000000000081 +S315E07F9A800000000000000000000000000000000071 +S315E07F9A900000000000000000000000000000000061 +S315E07F9AA00000000000000000000000000000000051 +S315E07F9AB00000000000000000000000000000000041 +S315E07F9AC00000000000000000000000000000000031 +S315E07F9AD00000000000000000000000000000000021 +S315E07F9AE00000000000000000000000000000000011 +S315E07F9AF00000000000000000000000000000000001 +S315E07F9B0000000000000000000000000000000000F0 +S315E07F9B1000000000000000000000000000000000E0 +S315E07F9B2000000000000000000000000000000000D0 +S315E07F9B3000000000000000000000000000000000C0 +S315E07F9B4000000000000000000000000000000000B0 +S315E07F9B5000000000000000000000000000000000A0 +S315E07F9B600000000000000000000000000000003E52 +S315E07F9B704900000000000000000000000000000037 +S315E07F9B800000000000000000000000000000000070 +S315E07F9B900000000000000000000000000000000060 +S315E07F9BA00000000000000000000000000000000050 +S315E07F9BB00000000000000000000000000000000040 +S315E07F9BC00000000000000000000000000000000030 +S315E07F9BD00000000000000000000000000000000020 +S315E07F9BE00000000000000000000000000000000010 +S315E07F9BF00000000000000000000000000000000000 +S315E07F9C0000000000000000000000000000000000EF +S315E07F9C1000000000000000000000000000000000DF +S315E07F9C2000000000000000000000000000000000CF +S315E07F9C3000000000000000000000000000000000BF +S315E07F9C4000000000000000000000000000000000AF +S315E07F9C50000000000000000000000000000000009F +S315E07F9C60000000000000000000000000000000008F +S315E07F9C70000000000000000000000000000000007F +S315E07F9C80000000000000000000000000000000006F +S315E07F9C90000000000000000000000000000000005F +S315E07F9CA0000000000000000000000000000000004F +S315E07F9CB0000000000000000000000000000000003F +S315E07F9CC0000000000000000000000000000000002F +S315E07F9CD0000000000000000000000000000000001F +S315E07F9CE000000000000000003E4900000000000088 +S315E07F9CF000000000000000000000000000000000FF +S315E07F9D0000000000000000000000000000000000EE +S315E07F9D1000000000000000000000000000000000DE +S315E07F9D2000000000000000000000000000000000CE +S315E07F9D3000000000000000000000000000000000BE +S315E07F9D4000000000000000000000000000000000AE +S315E07F9D50000000000000000000000000000000009E +S315E07F9D60000000000000000000000000000000008E +S315E07F9D70000000000000000000000000000000007E +S315E07F9D80000000000000000000000000000000006E +S315E07F9D90000000000000000000000000000000005E +S315E07F9DA0000000000000000000000000000000004E +S315E07F9DB0000000000000000000000000000000003E +S315E07F9DC0000000000000000000000000000000002E +S315E07F9DD0000000000000000000000000000000001E +S315E07F9DE0000000000000000000000000000000000E +S315E07F9DF000000000000000000000000000000000FE +S315E07F9E0000000000000000000000000000000000ED +S315E07F9E1000000000000000000000000000000000DD +S315E07F9E2000000000000000000000000000000000CD +S315E07F9E3000000000000000000000000000000000BD +S315E07F9E4000000000000000000000000000000000AD +S315E07F9E50000000000000000000000000000000009D +S315E07F9E60003E490000000000000000000000000006 +S315E07F9E70000000000000000000000000000000007D +S315E07F9E80000000000000000000000000000000006D +S315E07F9E90000000000000000000000000000000005D +S315E07F9EA0000000000000000000000000000000004D +S315E07F9EB0000000000000000000000000000000003D +S315E07F9EC0000000000000000000000000000000002D +S315E07F9ED0000000000000000000000000000000001D +S315E07F9EE0000000000000000000000000000000000D +S315E07F9EF000000000000000000000000000000000FD +S315E07F9F0000000000000000000000000000000000EC +S315E07F9F1000000000000000000000000000000000DC +S315E07F9F2000000000000000000000000000000000CC +S315E07F9F3000000000000000000000000000000000BC +S315E07F9F4000000000000000000000000000000000AC +S315E07F9F50000000000000000000000000000000009C +S315E07F9F60000000000000000000000000000000008C +S315E07F9F70000000000000000000000000000000007C +S315E07F9F80000000000000000000000000000000006C +S315E07F9F90000000000000000000000000000000005C +S315E07F9FA0000000000000000000000000000000004C +S315E07F9FB0000000000000000000000000000000003C +S315E07F9FC0000000000000000000000000000000002C +S315E07F9FD0000000000000000000003E490000000095 +S315E07F9FE0000000000000000000000000000000000C +S315E07F9FF000000000000000000000000000000000FC +S315E07FA00000000000000000000000000000000000EB +S315E07FA01000000000000000000000000000000000DB +S315E07FA02000000000000000000000000000000000CB +S315E07FA03000000000000000000000000000000000BB +S315E07FA04000000000000000000000000000000000AB +S315E07FA050000000000000000000000000000000009B +S315E07FA060000000000000000000000000000000008B +S315E07FA070000000000000000000000000000000007B +S315E07FA080000000000000000000000000000000006B +S315E07FA090000000000000000000000000000000005B +S315E07FA0A0000000000000000000000000000000004B +S315E07FA0B0000000000000000000000000000000003B +S315E07FA0C0000000000000000000000000000000002B +S315E07FA0D0000000000000000000000000000000001B +S315E07FA0E0000000000000000000000000000000000B +S315E07FA0F000000000000000000000000000000000FB +S315E07FA10000000000000000000000000000000000EA +S315E07FA11000000000000000000000000000000000DA +S315E07FA12000000000000000000000000000000000CA +S315E07FA13000000000000000000000000000000000BA +S315E07FA14000000000000000000000000000000000AA +S315E07FA1500000003E49000000000000000000000013 +S315E07FA160000000000000000000000000000000008A +S315E07FA170000000000000000000000000000000007A +S315E07FA180000000000000000000000000000000006A +S315E07FA190000000000000000000000000000000005A +S315E07FA1A0000000000000000000000000000000004A +S315E07FA1B0000000000000000000000000000000003A +S315E07FA1C0000000000000000000000000000000002A +S315E07FA1D0000000000000000000000000000000001A +S315E07FA1E0000000000000000000000000000000000A +S315E07FA1F000000000000000000000000000000000FA +S315E07FA20000000000000000000000000000000000E9 +S315E07FA21000000000000000000000000000000000D9 +S315E07FA22000000000000000000000000000000000C9 +S315E07FA23000000000000000000000000000000000B9 +S315E07FA24000000000000000000000000000000000A9 +S315E07FA2500000000000000000000000000000000099 +S315E07FA2600000000000000000000000000000000089 +S315E07FA2700000000000000000000000000000000079 +S315E07FA2800000000000000000000000000000000069 +S315E07FA2900000000000000000000000000000000059 +S315E07FA2A00000000000000000000000000000000049 +S315E07FA2B00000000000000000000000000000000039 +S315E07FA2C00000000000000000000000003E490000A2 +S315E07FA2D00000000000000000000000000000000019 +S315E07FA2E00000000000000000000000000000000009 +S315E07FA2F000000000000000000000000000000000F9 +S315E07FA30000000000000000000000000000000000E8 +S315E07FA31000000000000000000000000000000000D8 +S315E07FA32000000000000000000000000000000000C8 +S315E07FA33000000000000000000000000000000000B8 +S315E07FA34000000000000000000000000000000000A8 +S315E07FA3500000000000000000000000000000000098 +S315E07FA3600000000000000000000000000000000088 +S315E07FA3700000000000000000000000000000000078 +S315E07FA3800000000000000000000000000000000068 +S315E07FA3900000000000000000000000000000000058 +S315E07FA3A00000000000000000000000000000000048 +S315E07FA3B00000000000000000000000000000000038 +S315E07FA3C00000000000000000000000000000000028 +S315E07FA3D00000000000000000000000000000000018 +S315E07FA3E00000000000000000000000000000000008 +S315E07FA3F000000000000000000000000000000000F8 +S315E07FA40000000000000000000000000000000000E7 +S315E07FA41000000000000000000000000000000000D7 +S315E07FA42000000000000000000000000000000000C7 +S315E07FA43000000000000000000000000000000000B7 +S315E07FA44000000000003E4900000000000000000020 +S315E07FA4500000000000000000000000000000000097 +S315E07FA4600000000000000000000000000000000087 +S315E07FA4700000000000000000000000000000000077 +S315E07FA4800000000000000000000000000000000067 +S315E07FA4900000000000000000000000000000000057 +S315E07FA4A00000000000000000000000000000000047 +S315E07FA4B00000000000000000000000000000000037 +S315E07FA4C00000000000000000000000000000000027 +S315E07FA4D00000000000000000000000000000000017 +S315E07FA4E00000000000000000000000000000000007 +S315E07FA4F000000000000000000000000000000000F7 +S315E07FA50000000000000000000000000000000000E6 +S315E07FA51000000000000000000000000000000000D6 +S315E07FA52000000000000000000000000000000000C6 +S315E07FA53000000000000000000000000000000000B6 +S315E07FA54000000000000000000000000000000000A6 +S315E07FA5500000000000000000000000000000000096 +S315E07FA5600000000000000000000000000000000086 +S315E07FA5700000000000000000000000000000000076 +S315E07FA5800000000000000000000000000000000066 +S315E07FA5900000000000000000000000000000000056 +S315E07FA5A00000000000000000000000000000000046 +S315E07FA5B000000000000000000000000000003E49AF +S315E07FA5C00000000000000000000000000000000026 +S315E07FA5D00000000000000000000000000000000016 +S315E07FA5E00000000000000000000000000000000006 +S315E07FA5F000000000000000000000000000000000F6 +S315E07FA60000000000000000000000000000000000E5 +S315E07FA61000000000000000000000000000000000D5 +S315E07FA62000000000000000000000000000000000C5 +S315E07FA63000000000000000000000000000000000B5 +S315E07FA64000000000000000000000000000000000A5 +S315E07FA6500000000000000000000000000000000095 +S315E07FA6600000000000000000000000000000000085 +S315E07FA6700000000000000000000000000000000075 +S315E07FA6800000000000000000000000000000000065 +S315E07FA6900000000000000000000000000000000055 +S315E07FA6A00000000000000000000000000000000045 +S315E07FA6B00000000000000000000000000000000035 +S315E07FA6C00000000000000000000000000000000025 +S315E07FA6D00000000000000000000000000000000015 +S315E07FA6E00000000000000000000000000000000005 +S315E07FA6F000000000000000000000000000000000F5 +S315E07FA70000000000000000000000000000000000E4 +S315E07FA71000000000000000000000000000000000D4 +S315E07FA72000000000000000000000000000000000C4 +S315E07FA730000000000000003E49000000000000002D +S315E07FA74000000000000000000000000000000000A4 +S315E07FA7500000000000000000000000000000000094 +S315E07FA7600000000000000000000000000000000084 +S315E07FA7700000000000000000000000000000000074 +S315E07FA7800000000000000000000000000000000064 +S315E07FA7900000000000000000000000000000000054 +S315E07FA7A00000000000000000000000000000000044 +S315E07FA7B00000000000000000000000000000000034 +S315E07FA7C00000000000000000000000000000000024 +S315E07FA7D00000000000000000000000000000000014 +S315E07FA7E00000000000000000000000000000000004 +S315E07FA7F000000000000000000000000000000000F4 +S315E07FA80000000000000000000000000000000000E3 +S315E07FA81000000000000000000000000000000000D3 +S315E07FA82000000000000000000000000000000000C3 +S315E07FA83000000000000000000000000000000000B3 +S315E07FA84000000000000000000000000000000000A3 +S315E07FA8500000000000000000000000000000000093 +S315E07FA8600000000000000000000000000000000083 +S315E07FA8700000000000000000000000000000000073 +S315E07FA8800000000000000000000000000000000063 +S315E07FA8900000000000000000000000000000000053 +S315E07FA8A00000000000000000000000000000000043 +S315E07FA8B03E490000000000000000000000000000AC +S315E07FA8C00000000000000000000000000000000023 +S315E07FA8D00000000000000000000000000000000013 +S315E07FA8E00000000000000000000000000000000003 +S315E07FA8F000000000000000000000000000000000F3 +S315E07FA90000000000000000000000000000000000E2 +S315E07FA91000000000000000000000000000000000D2 +S315E07FA92000000000000000000000000000000000C2 +S315E07FA93000000000000000000000000000000000B2 +S315E07FA94000000000000000000000000000000000A2 +S315E07FA9500000000000000000000000000000000092 +S315E07FA9600000000000000000000000000000000082 +S315E07FA9700000000000000000000000000000000072 +S315E07FA9800000000000000000000000000000000062 +S315E07FA9900000000000000000000000000000000052 +S315E07FA9A00000000000000000000000000000000042 +S315E07FA9B00000000000000000000000000000000032 +S315E07FA9C00000000000000000000000000000000022 +S315E07FA9D00000000000000000000000000000000012 +S315E07FA9E00000000000000000000000000000000002 +S315E07FA9F000000000000000000000000000000000F2 +S315E07FAA0000000000000000000000000000000000E1 +S315E07FAA1000000000000000000000000000000000D1 +S315E07FAA200000000000000000003E4900000000003A +S315E07FAA3000000000000000000000000000000000B1 +S315E07FAA4000000000000000000000000000000000A1 +S315E07FAA500000000000000000000000000000000091 +S315E07FAA600000000000000000000000000000000081 +S315E07FAA700000000000000000000000000000000071 +S315E07FAA800000000000000000000000000000000061 +S315E07FAA900000000000000000000000000000000051 +S315E07FAAA00000000000000000000000000000000041 +S315E07FAAB00000000000000000000000000000000031 +S315E07FAAC00000000000000000000000000000000021 +S315E07FAAD00000000000000000000000000000000011 +S315E07FAAE00000000000000000000000000000000001 +S315E07FAAF000000000000000000000000000000000F1 +S315E07FAB0000000000000000000000000000000000E0 +S315E07FAB1000000000000000000000000000000000D0 +S315E07FAB2000000000000000000000000000000000C0 +S315E07FAB3000000000000000000000000000000000B0 +S315E07FAB4000000000000000000000000000000000A0 +S315E07FAB500000000000000000000000000000000090 +S315E07FAB600000000000000000000000000000000080 +S315E07FAB700000000000000000000000000000000070 +S315E07FAB800000000000000000000000000000000060 +S315E07FAB900000000000000000000000000000000050 +S315E07FABA000003E49000000000000000000000000B9 +S315E07FABB00000000000000000000000000000000030 +S315E07FABC00000000000000000000000000000000020 +S315E07FABD00000000000000000000000000000000010 +S315E07FABE00000000000000000000000000000000000 +S315E07FABF000000000000000000000000000000000F0 +S315E07FAC0000000000000000000000000000000000DF +S315E07FAC1000000000000000000000000000000000CF +S315E07FAC2000000000000000000000000000000000BF +S315E07FAC3000000000000000000000000000000000AF +S315E07FAC40000000000000000000000000000000009F +S315E07FAC50000000000000000000000000000000008F +S315E07FAC60000000000000000000000000000000007F +S315E07FAC70000000000000000000000000000000006F +S315E07FAC80000000000000000000000000000000005F +S315E07FAC90000000000000000000000000000000004F +S315E07FACA0000000000000000000000000000000003F +S315E07FACB0000000000000000000000000000000002F +S315E07FACC0000000000000000000000000000000001F +S315E07FACD0000000000000000000000000000000000F +S315E07FACE000000000000000000000000000000000FF +S315E07FACF000000000000000000000000000000000EF +S315E07FAD0000000000000000000000000000000000DE +S315E07FAD1000000000000000000000003E4900000047 +S315E07FAD2000000000000000000000000000000000BE +S315E07FAD3000000000000000000000000000000000AE +S315E07FAD40000000000000000000000000000000009E +S315E07FAD50000000000000000000000000000000008E +S315E07FAD60000000000000000000000000000000007E +S315E07FAD70000000000000000000000000000000006E +S315E07FAD80000000000000000000000000000000005E +S315E07FAD90000000000000000000000000000000004E +S315E07FADA0000000000000000000000000000000003E +S315E07FADB0000000000000000000000000000000002E +S315E07FADC0000000000000000000000000000000001E +S315E07FADD0000000000000000000000000000000000E +S315E07FADE000000000000000000000000000000000FE +S315E07FADF000000000000000000000000000000000EE +S315E07FAE0000000000000000000000000000000000DD +S315E07FAE1000000000000000000000000000000000CD +S315E07FAE2000000000000000000000000000000000BD +S315E07FAE3000000000000000000000000000000000AD +S315E07FAE40000000000000000000000000000000009D +S315E07FAE50000000000000000000000000000000008D +S315E07FAE60000000000000000000000000000000007D +S315E07FAE70000000000000000000000000000000006D +S315E07FAE80000000000000000000000000000000005D +S315E07FAE90000000003E4900000000000000000000C6 +S315E07FAEA0000000000000000000000000000000003D +S315E07FAEB0000000000000000000000000000000002D +S315E07FAEC0000000000000000000000000000000001D +S315E07FAED0000000000000000000000000000000000D +S315E07FAEE000000000000000000000000000000000FD +S315E07FAEF000000000000000000000000000000000ED +S315E07FAF0000000000000000000000000000000000DC +S315E07FAF1000000000000000000000000000000000CC +S315E07FAF2000000000000000000000000000000000BC +S315E07FAF3000000000000000000000000000000000AC +S315E07FAF40000000000000000000000000000000009C +S315E07FAF50000000000000000000000000000000008C +S315E07FAF60000000000000000000000000000000007C +S315E07FAF70000000000000000000000000000000006C +S315E07FAF80000000000000000000000000000000005C +S315E07FAF90000000000000000000000000000000004C +S315E07FAFA0000000000000000000000000000000003C +S315E07FAFB0000000000000000000000000000000002C +S315E07FAFC0000000000000000000000000000000001C +S315E07FAFD0000000000000000000000000000000000C +S315E07FAFE000000000000000000000000000000000FC +S315E07FAFF000000000000000000000000000000000EC +S315E07FB000000000000000000000000000003E490054 +S315E07FB01000000000000000000000000000000000CB +S315E07FB02000000000000000000000000000000000BB +S315E07FB03000000000000000000000000000000000AB +S315E07FB040000000000000000000000000000000009B +S315E07FB050000000000000000000000000000000008B +S315E07FB060000000000000000000000000000000007B +S315E07FB070000000000000000000000000000000006B +S315E07FB080000000000000000000000000000000005B +S315E07FB090000000000000000000000000000000004B +S315E07FB0A0000000000000000000000000000000003B +S315E07FB0B0000000000000000000000000000000002B +S315E07FB0C0000000000000000000000000000000001B +S315E07FB0D0000000000000000000000000000000000B +S315E07FB0E000000000000000000000000000000000FB +S315E07FB0F000000000000000000000000000000000EB +S315E07FB10000000000000000000000000000000000DA +S315E07FB11000000000000000000000000000000000CA +S315E07FB12000000000000000000000000000000000BA +S315E07FB13000000000000000000000000000000000AA +S315E07FB140000000000000000000000000000000009A +S315E07FB150000000000000000000000000000000008A +S315E07FB160000000000000000000000000000000007A +S315E07FB170000000000000000000000000000000006A +S315E07FB1800000000000003E490000000000000000D3 +S315E07FB190000000000000000000000000000000004A +S315E07FB1A0000000000000000000000000000000003A +S315E07FB1B0000000000000000000000000000000002A +S315E07FB1C0000000000000000000000000000000001A +S315E07FB1D0000000000000000000000000000000000A +S315E07FB1E000000000000000000000000000000000FA +S315E07FB1F000000000000000000000000000000000EA +S315E07FB20000000000000000000000000000000000D9 +S315E07FB21000000000000000000000000000000000C9 +S315E07FB22000000000000000000000000000000000B9 +S315E07FB23000000000000000000000000000000000A9 +S315E07FB2400000000000000000000000000000000099 +S315E07FB2500000000000000000000000000000000089 +S315E07FB2600000000000000000000000000000000079 +S315E07FB2700000000000000000000000000000000069 +S315E07FB2800000000000000000000000000000000059 +S315E07FB2900000000000000000000000000000000049 +S315E07FB2A00000000000000000000000000000000039 +S315E07FB2B00000000000000000000000000000000029 +S315E07FB2C00000000000000000000000000000000019 +S315E07FB2D00000000000000000000000000000000009 +S315E07FB2E000000000000000000000000000000000F9 +S315E07FB2F00000000000000000000000000000003EAB +S315E07FB300490000000000000000000000000000008F +S315E07FB31000000000000000000000000000000000C8 +S315E07FB32000000000000000000000000000000000B8 +S315E07FB33000000000000000000000000000000000A8 +S315E07FB3400000000000000000000000000000000098 +S315E07FB3500000000000000000000000000000000088 +S315E07FB3600000000000000000000000000000000078 +S315E07FB3700000000000000000000000000000000068 +S315E07FB3800000000000000000000000000000000058 +S315E07FB3900000000000000000000000000000000048 +S315E07FB3A00000000000000000000000000000000038 +S315E07FB3B00000000000000000000000000000000028 +S315E07FB3C00000000000000000000000000000000018 +S315E07FB3D00000000000000000000000000000000008 +S315E07FB3E000000000000000000000000000000000F8 +S315E07FB3F000000000000000000000000000000000E8 +S315E07FB40000000000000000000000000000000000D7 +S315E07FB41000000000000000000000000000000000C7 +S315E07FB42000000000000000000000000000000000B7 +S315E07FB43000000000000000000000000000000000A7 +S315E07FB4400000000000000000000000000000000097 +S315E07FB4500000000000000000000000000000000087 +S315E07FB4600000000000000000000000000000000077 +S315E07FB47000000000000000003E49000000000000E0 +S315E07FB4800000000000000000000000000000000057 +S315E07FB4900000000000000000000000000000000047 +S315E07FB4A00000000000000000000000000000000037 +S315E07FB4B00000000000000000000000000000000027 +S315E07FB4C00000000000000000000000000000000017 +S315E07FB4D00000000000000000000000000000000007 +S315E07FB4E000000000000000000000000000000000F7 +S315E07FB4F000000000000000000000000000000000E7 +S315E07FB50000000000000000000000000000000000D6 +S315E07FB51000000000000000000000000000000000C6 +S315E07FB52000000000000000000000000000000000B6 +S315E07FB53000000000000000000000000000000000A6 +S315E07FB5400000000000000000000000000000000096 +S315E07FB5500000000000000000000000000000000086 +S315E07FB5600000000000000000000000000000000076 +S315E07FB5700000000000000000000000000000000066 +S315E07FB5800000000000000000000000000000000056 +S315E07FB5900000000000000000000000000000000046 +S315E07FB5A00000000000000000000000000000000036 +S315E07FB5B00000000000000000000000000000000026 +S315E07FB5C00000000000000000000000000000000016 +S315E07FB5D00000000000000000000000000000000006 +S315E07FB5E000000000000000000000000000000000F6 +S315E07FB5F0003E49000000000000000000000000005F +S315E07FB60000000000000000000000000000000000D5 +S315E07FB61000000000000000000000000000000000C5 +S315E07FB62000000000000000000000000000000000B5 +S315E07FB63000000000000000000000000000000000A5 +S315E07FB6400000000000000000000000000000000095 +S315E07FB6500000000000000000000000000000000085 +S315E07FB6600000000000000000000000000000000075 +S315E07FB6700000000000000000000000000000000065 +S315E07FB6800000000000000000000000000000000055 +S315E07FB6900000000000000000000000000000000045 +S315E07FB6A00000000000000000000000000000000035 +S315E07FB6B00000000000000000000000000000000025 +S315E07FB6C00000000000000000000000000000000015 +S315E07FB6D00000000000000000000000000000000005 +S315E07FB6E000000000000000000000000000000000F5 +S315E07FB6F000000000000000000000000000000000E5 +S315E07FB70000000000000000000000000000000000D4 +S315E07FB71000000000000000000000000000000000C4 +S315E07FB72000000000000000000000000000000000B4 +S315E07FB73000000000000000000000000000000000A4 +S315E07FB7400000000000000000000000000000000094 +S315E07FB7500000000000000000000000000000000084 +S315E07FB760000000000000000000003E4900000000ED +S315E07FB7700000000000000000000000000000000064 +S315E07FB7800000000000000000000000000000000054 +S315E07FB7900000000000000000000000000000000044 +S315E07FB7A00000000000000000000000000000000034 +S315E07FB7B00000000000000000000000000000000024 +S315E07FB7C00000000000000000000000000000000014 +S315E07FB7D00000000000000000000000000000000004 +S315E07FB7E000000000000000000000000000000000F4 +S315E07FB7F000000000000000000000000000000000E4 +S315E07FB80000000000000000000000000000000000D3 +S315E07FB81000000000000000000000000000000000C3 +S315E07FB82000000000000000000000000000000000B3 +S315E07FB83000000000000000000000000000000000A3 +S315E07FB8400000000000000000000000000000000093 +S315E07FB8500000000000000000000000000000000083 +S315E07FB8600000000000000000000000000000000073 +S315E07FB8700000000000000000000000000000000063 +S315E07FB8800000000000000000000000000000000053 +S315E07FB8900000000000000000000000000000000043 +S315E07FB8A00000000000000000000000000000000033 +S315E07FB8B00000000000000000000000000000000023 +S315E07FB8C00000000000000000000000000000000013 +S315E07FB8D00000000000000000000000000000000003 +S315E07FB8E00000003E4900000000000000000000006C +S315E07FB8F000000000000000000000000000000000E3 +S315E07FB90000000000000000000000000000000000D2 +S315E07FB91000000000000000000000000000000000C2 +S315E07FB92000000000000000000000000000000000B2 +S315E07FB93000000000000000000000000000000000A2 +S315E07FB9400000000000000000000000000000000092 +S315E07FB9500000000000000000000000000000000082 +S315E07FB9600000000000000000000000000000000072 +S315E07FB9700000000000000000000000000000000062 +S315E07FB9800000000000000000000000000000000052 +S315E07FB9900000000000000000000000000000000042 +S315E07FB9A00000000000000000000000000000000032 +S315E07FB9B00000000000000000000000000000000022 +S315E07FB9C00000000000000000000000000000000012 +S315E07FB9D00000000000000000000000000000000002 +S315E07FB9E000000000000000000000000000000000F2 +S315E07FB9F000000000000000000000000000000000E2 +S315E07FBA0000000000000000000000000000000000D1 +S315E07FBA1000000000000000000000000000000000C1 +S315E07FBA2000000000000000000000000000000000B1 +S315E07FBA3000000000000000000000000000000000A1 +S315E07FBA400000000000000000000000000000000091 +S315E07FBA500000000000000000000000003E490000FA +S315E07FBA600000000000000000000000000000000071 +S315E07FBA700000000000000000000000000000000061 +S315E07FBA800000000000000000000000000000000051 +S315E07FBA900000000000000000000000000000000041 +S315E07FBAA00000000000000000000000000000000031 +S315E07FBAB00000000000000000000000000000000021 +S315E07FBAC00000000000000000000000000000000011 +S315E07FBAD00000000000000000000000000000000001 +S315E07FBAE000000000000000000000000000000000F1 +S315E07FBAF000000000000000000000000000000000E1 +S315E07FBB0000000000000000000000000000000000D0 +S315E07FBB1000000000000000000000000000000000C0 +S315E07FBB2000000000000000000000000000000000B0 +S315E07FBB3000000000000000000000000000000000A0 +S315E07FBB400000000000000000000000000000000090 +S315E07FBB500000000000000000000000000000000080 +S315E07FBB600000000000000000000000000000000070 +S315E07FBB700000000000000000000000000000000060 +S315E07FBB800000000000000000000000000000000050 +S315E07FBB900000000000000000000000000000000040 +S315E07FBBA00000000000000000000000000000000030 +S315E07FBBB00000000000000000000000000000000020 +S315E07FBBC00000000000000000000000000000000010 +S315E07FBBD000000000003E4900000000000000000079 +S315E07FBBE000000000000000000000000000000000F0 +S315E07FBBF000000000000000000000000000000000E0 +S315E07FBC0000000000000000000000000000000000CF +S315E07FBC1000000000000000000000000000000000BF +S315E07FBC2000000000000000000000000000000000AF +S315E07FBC30000000000000000000000000000000009F +S315E07FBC40000000000000000000000000000000008F +S315E07FBC50000000000000000000000000000000007F +S315E07FBC60000000000000000000000000000000006F +S315E07FBC70000000000000000000000000000000005F +S315E07FBC80000000000000000000000000000000004F +S315E07FBC90000000000000000000000000000000003F +S315E07FBCA0000000000000000000000000000000002F +S315E07FBCB0000000000000000000000000000000001F +S315E07FBCC0000000000000000000000000000000000F +S315E07FBCD000000000000000000000000000000000FF +S315E07FBCE000000000000000000000000000000000EF +S315E07FBCF000000000000000000000000000000000DF +S315E07FBD0000000000000000000000000000000000CE +S315E07FBD1000000000000000000000000000000000BE +S315E07FBD2000000000000000000000000000000000AE +S315E07FBD30000000000000000000000000000000009E +S315E07FBD4000000000000000000000000000003E4907 +S315E07FBD50000000000000000000000000000000007E +S315E07FBD60000000000000000000000000000000006E +S315E07FBD70000000000000000000000000000000005E +S315E07FBD80000000000000000000000000000000004E +S315E07FBD90000000000000000000000000000000003E +S315E07FBDA0000000000000000000000000000000002E +S315E07FBDB0000000000000000000000000000000001E +S315E07FBDC0000000000000000000000000000000000E +S315E07FBDD000000000000000000000000000000000FE +S315E07FBDE000000000000000000000000000000000EE +S315E07FBDF000000000000000000000000000000000DE +S315E07FBE0000000000000000000000000000000000CD +S315E07FBE1000000000000000000000000000000000BD +S315E07FBE2000000000000000000000000000000000AD +S315E07FBE30000000000000000000000000000000009D +S315E07FBE40000000000000000000000000000000008D +S315E07FBE50000000000000000000000000000000007D +S315E07FBE60000000000000000000000000000000006D +S315E07FBE70000000000000000000000000000000005D +S315E07FBE80000000000000000000000000000000004D +S315E07FBE90000000000000000000000000000000003D +S315E07FBEA0000000000000000000000000000000002D +S315E07FBEB0000000000000000000000000000000001D +S315E07FBEC0000000000000003E490000000000000086 +S315E07FBED000000000000000000000000000000000FD +S315E07FBEE000000000000000000000000000000000ED +S315E07FBEF000000000000000000000000000000000DD +S315E07FBF0000000000000000000000000000000000CC +S315E07FBF1000000000000000000000000000000000BC +S315E07FBF2000000000000000000000000000000000AC +S315E07FBF30000000000000000000000000000000009C +S315E07FBF40000000000000000000000000000000008C +S315E07FBF50000000000000000000000000000000007C +S315E07FBF60000000000000000000000000000000006C +S315E07FBF70000000000000000000000000000000005C +S315E07FBF80000000000000000000000000000000004C +S315E07FBF90000000000000000000000000000000003C +S315E07FBFA0000000000000000000000000000000002C +S315E07FBFB0000000000000000000000000000000001C +S315E07FBFC0000000000000000000000000000000000C +S315E07FBFD000000000000000000000000000000000FC +S315E07FBFE000000000000000000000000000000000EC +S315E07FBFF000000000000000000000000000000000DC +S315E07FC00000000000000000000000000000000000CB +S315E07FC01000000000000000000000000000000000BB +S315E07FC02000000000000000000000000000000000AB +S315E07FC030000000000000000000000000000000009B +S315E07FC0403E49000000000000000000000000000004 +S315E07FC050000000000000000000000000000000007B +S315E07FC060000000000000000000000000000000006B +S315E07FC070000000000000000000000000000000005B +S315E07FC080000000000000000000000000000000004B +S315E07FC090000000000000000000000000000000003B +S315E07FC0A0000000000000000000000000000000002B +S315E07FC0B0000000000000000000000000000000001B +S315E07FC0C0000000000000000000000000000000000B +S315E07FC0D000000000000000000000000000000000FB +S315E07FC0E000000000000000000000000000000000EB +S315E07FC0F000000000000000000000000000000000DB +S315E07FC10000000000000000000000000000000000CA +S315E07FC11000000000000000000000000000000000BA +S315E07FC12000000000000000000000000000000000AA +S315E07FC130000000000000000000000000000000009A +S315E07FC140000000000000000000000000000000008A +S315E07FC150000000000000000000000000000000007A +S315E07FC160000000000000000000000000000000006A +S315E07FC170000000000000000000000000000000005A +S315E07FC180000000000000000000000000000000004A +S315E07FC190000000000000000000000000000000003A +S315E07FC1A0000000000000000000000000000000002A +S315E07FC1B00000000000000000003E49000000000093 +S315E07FC1C0000000000000000000000000000000000A +S315E07FC1D000000000000000000000000000000000FA +S315E07FC1E000000000000000000000000000000000EA +S315E07FC1F000000000000000000000000000000000DA +S315E07FC20000000000000000000000000000000000C9 +S315E07FC21000000000000000000000000000000000B9 +S315E07FC22000000000000000000000000000000000A9 +S315E07FC2300000000000000000000000000000000099 +S315E07FC2400000000000000000000000000000000089 +S315E07FC2500000000000000000000000000000000079 +S315E07FC2600000000000000000000000000000000069 +S315E07FC2700000000000000000000000000000000059 +S315E07FC2800000000000000000000000000000000049 +S315E07FC2900000000000000000000000000000000039 +S315E07FC2A00000000000000000000000000000000029 +S315E07FC2B00000000000000000000000000000000019 +S315E07FC2C00000000000000000000000000000000009 +S315E07FC2D000000000000000000000000000000000F9 +S315E07FC2E000000000000000000000000000000000E9 +S315E07FC2F000000000000000000000000000000000D9 +S315E07FC30000000000000000000000000000000000C8 +S315E07FC31000000000000000000000000000000000B8 +S315E07FC32000000000000000000000000000000000A8 +S315E07FC33000003E4900000000000000000000000011 +S315E07FC3400000000000000000000000000000000088 +S315E07FC3500000000000000000000000000000000078 +S315E07FC3600000000000000000000000000000000068 +S315E07FC3700000000000000000000000000000000058 +S315E07FC3800000000000000000000000000000000048 +S315E07FC3900000000000000000000000000000000038 +S315E07FC3A00000000000000000000000000000000028 +S315E07FC3B00000000000000000000000000000000018 +S315E07FC3C00000000000000000000000000000000008 +S315E07FC3D000000000000000000000000000000000F8 +S315E07FC3E000000000000000000000000000000000E8 +S315E07FC3F000000000000000000000000000000000D8 +S315E07FC40000000000000000000000000000000000C7 +S315E07FC41000000000000000000000000000000000B7 +S315E07FC42000000000000000000000000000000000A7 +S315E07FC4300000000000000000000000000000000097 +S315E07FC4400000000000000000000000000000000087 +S315E07FC4500000000000000000000000000000000077 +S315E07FC4600000000000000000000000000000000067 +S315E07FC4700000000000000000000000000000000057 +S315E07FC4800000000000000000000000000000000047 +S315E07FC4900000000000000000000000000000000037 +S315E07FC4A000000000000000000000003E49000000A0 +S315E07FC4B00000000000000000000000000000000017 +S315E07FC4C00000000000000000000000000000000007 +S315E07FC4D000000000000000000000000000000000F7 +S315E07FC4E000000000000000000000000000000000E7 +S315E07FC4F000000000000000000000000000000000D7 +S315E07FC50000000000000000000000000000000000C6 +S315E07FC51000000000000000000000000000000000B6 +S315E07FC52000000000000000000000000000000000A6 +S315E07FC5300000000000000000000000000000000096 +S315E07FC5400000000000000000000000000000000086 +S315E07FC5500000000000000000000000000000000076 +S315E07FC5600000000000000000000000000000000066 +S315E07FC5700000000000000000000000000000000056 +S315E07FC5800000000000000000000000000000000046 +S315E07FC5900000000000000000000000000000000036 +S315E07FC5A00000000000000000000000000000000026 +S315E07FC5B00000000000000000000000000000000016 +S315E07FC5C00000000000000000000000000000000006 +S315E07FC5D000000000000000000000000000000000F6 +S315E07FC5E000000000000000000000000000000000E6 +S315E07FC5F000000000000000000000000000000000D6 +S315E07FC60000000000000000000000000000000000C5 +S315E07FC61000000000000000000000000000000000B5 +S315E07FC620000000003E49000000000000000000001E +S315E07FC6300000000000000000000000000000000095 +S315E07FC6400000000000000000000000000000000085 +S315E07FC6500000000000000000000000000000000075 +S315E07FC6600000000000000000000000000000000065 +S315E07FC6700000000000000000000000000000000055 +S315E07FC6800000000000000000000000000000000045 +S315E07FC6900000000000000000000000000000000035 +S315E07FC6A00000000000000000000000000000000025 +S315E07FC6B00000000000000000000000000000000015 +S315E07FC6C00000000000000000000000000000000005 +S315E07FC6D000000000000000000000000000000000F5 +S315E07FC6E000000000000000000000000000000000E5 +S315E07FC6F000000000000000000000000000000000D5 +S315E07FC70000000000000000000000000000000000C4 +S315E07FC71000000000000000000000000000000000B4 +S315E07FC72000000000000000000000000000000000A4 +S315E07FC7300000000000000000000000000000000094 +S315E07FC7400000000000000000000000000000000084 +S315E07FC7500000000000000000000000000000000074 +S315E07FC7600000000000000000000000000000000064 +S315E07FC7700000000000000000000000000000000054 +S315E07FC7800000000000000000000000000000000044 +S315E07FC790000000000000000000000000003E4900AD +S315E07FC7A00000000000000000000000000000000024 +S315E07FC7B00000000000000000000000000000000014 +S315E07FC7C00000000000000000000000000000000004 +S315E07FC7D000000000000000000000000000000000F4 +S315E07FC7E000000000000000000000000000000000E4 +S315E07FC7F000000000000000000000000000000000D4 +S315E07FC80000000000000000000000000000000000C3 +S315E07FC81000000000000000000000000000000000B3 +S315E07FC82000000000000000000000000000000000A3 +S315E07FC8300000000000000000000000000000000093 +S315E07FC8400000000000000000000000000000000083 +S315E07FC8500000000000000000000000000000000073 +S315E07FC8600000000000000000000000000000000063 +S315E07FC8700000000000000000000000000000000053 +S315E07FC8800000000000000000000000000000000043 +S315E07FC8900000000000000000000000000000000033 +S315E07FC8A00000000000000000000000000000000023 +S315E07FC8B00000000000000000000000000000000013 +S315E07FC8C00000000000000000000000000000000003 +S315E07FC8D000000000000000000000000000000000F3 +S315E07FC8E000000000000000000000000000000000E3 +S315E07FC8F000000000000000000000000000000000D3 +S315E07FC90000000000000000000000000000000000C2 +S315E07FC9100000000000003E4900000000000000002B +S315E07FC92000000000000000000000000000000000A2 +S315E07FC9300000000000000000000000000000000092 +S315E07FC9400000000000000000000000000000000082 +S315E07FC9500000000000000000000000000000000072 +S315E07FC9600000000000000000000000000000000062 +S315E07FC9700000000000000000000000000000000052 +S315E07FC9800000000000000000000000000000000042 +S315E07FC9900000000000000000000000000000000032 +S315E07FC9A00000000000000000000000000000000022 +S315E07FC9B00000000000000000000000000000000012 +S315E07FC9C00000000000000000000000000000000002 +S315E07FC9D000000000000000000000000000000000F2 +S315E07FC9E000000000000000000000000000000000E2 +S315E07FC9F000000000000000000000000000000000D2 +S315E07FCA0000000000000000000000000000000000C1 +S315E07FCA1000000000000000000000000000000000B1 +S315E07FCA2000000000000000000000000000000000A1 +S315E07FCA300000000000000000000000000000000091 +S315E07FCA400000000000000000000000000000000081 +S315E07FCA500000000000000000000000000000000071 +S315E07FCA600000000000000000000000000000000061 +S315E07FCA700000000000000000000000000000000051 +S315E07FCA800000000000000000000000000000003E03 +S315E07FCA9049000000000000000000000000000000E8 +S315E07FCAA00000000000000000000000000000000021 +S315E07FCAB00000000000000000000000000000000011 +S315E07FCAC00000000000000000000000000000000001 +S315E07FCAD000000000000000000000000000000000F1 +S315E07FCAE000000000000000000000000000000000E1 +S315E07FCAF000000000000000000000000000000000D1 +S315E07FCB0000000000000000000000000000000000C0 +S315E07FCB1000000000000000000000000000000000B0 +S315E07FCB2000000000000000000000000000000000A0 +S315E07FCB300000000000000000000000000000000090 +S315E07FCB400000000000000000000000000000000080 +S315E07FCB500000000000000000000000000000000070 +S315E07FCB600000000000000000000000000000000060 +S315E07FCB700000000000000000000000000000000050 +S315E07FCB800000000000000000000000000000000040 +S315E07FCB900000000000000000000000000000000030 +S315E07FCBA00000000000000000000000000000000020 +S315E07FCBB00000000000000000000000000000000010 +S315E07FCBC00000000000000000000000000000000000 +S315E07FCBD000000000000000000000000000000000F0 +S315E07FCBE000000000000000000000000000000000E0 +S315E07FCBF000000000000000000000000000000000D0 +S315E07FCC0000000000000000003E4900000000000038 +S315E07FCC1000000000000000000000000000000000AF +S315E07FCC20000000000000000000000000000000009F +S315E07FCC30000000000000000000000000000000008F +S315E07FCC40000000000000000000000000000000007F +S315E07FCC50000000000000000000000000000000006F +S315E07FCC60000000000000000000000000000000005F +S315E07FCC70000000000000000000000000000000004F +S315E07FCC80000000000000000000000000000000003F +S315E07FCC90000000000000000000000000000000002F +S315E07FCCA0000000000000000000000000000000001F +S315E07FCCB0000000000000000000000000000000000F +S315E07FCCC000000000000000000000000000000000FF +S315E07FCCD000000000000000000000000000000000EF +S315E07FCCE000000000000000000000000000000000DF +S315E07FCCF000000000000000000000000000000000CF +S315E07FCD0000000000000000000000000000000000BE +S315E07FCD1000000000000000000000000000000000AE +S315E07FCD20000000000000000000000000000000009E +S315E07FCD30000000000000000000000000000000008E +S315E07FCD40000000000000000000000000000000007E +S315E07FCD50000000000000000000000000000000006E +S315E07FCD60000000000000000000000000000000005E +S315E07FCD70000000000000000000000000000000004E +S315E07FCD80003E4900000000000000000000000000B7 +S315E07FCD90000000000000000000000000000000002E +S315E07FCDA0000000000000000000000000000000001E +S315E07FCDB0000000000000000000000000000000000E +S315E07FCDC000000000000000000000000000000000FE +S315E07FCDD000000000000000000000000000000000EE +S315E07FCDE000000000000000000000000000000000DE +S315E07FCDF000000000000000000000000000000000CE +S315E07FCE0000000000000000000000000000000000BD +S315E07FCE1000000000000000000000000000000000AD +S315E07FCE20000000000000000000000000000000009D +S315E07FCE30000000000000000000000000000000008D +S315E07FCE40000000000000000000000000000000007D +S315E07FCE50000000000000000000000000000000006D +S315E07FCE60000000000000000000000000000000005D +S315E07FCE70000000000000000000000000000000004D +S315E07FCE80000000000000000000000000000000003D +S315E07FCE90000000000000000000000000000000002D +S315E07FCEA0000000000000000000000000000000001D +S315E07FCEB0000000000000000000000000000000000D +S315E07FCEC000000000000000000000000000000000FD +S315E07FCED000000000000000000000000000000000ED +S315E07FCEE000000000000000000000000000000000DD +S315E07FCEF0000000000000000000003E490000000046 +S315E07FCF0000000000000000000000000000000000BC +S315E07FCF1000000000000000000000000000000000AC +S315E07FCF20000000000000000000000000000000009C +S315E07FCF30000000000000000000000000000000008C +S315E07FCF40000000000000000000000000000000007C +S315E07FCF50000000000000000000000000000000006C +S315E07FCF60000000000000000000000000000000005C +S315E07FCF70000000000000000000000000000000004C +S315E07FCF80000000000000000000000000000000003C +S315E07FCF90000000000000000000000000000000002C +S315E07FCFA0000000000000000000000000000000001C +S315E07FCFB0000000000000000000000000000000000C +S315E07FCFC000000000000000000000000000000000FC +S315E07FCFD000000000000000000000000000000000EC +S315E07FCFE000000000000000000000000000000000DC +S315E07FCFF000000000000000000000000000000000CC +S315E07FD00000000000000000000000000000000000BB +S315E07FD01000000000000000000000000000000000AB +S315E07FD020000000000000000000000000000000009B +S315E07FD030000000000000000000000000000000008B +S315E07FD040000000000000000000000000000000007B +S315E07FD050000000000000000000000000000000006B +S315E07FD060000000000000000000000000000000005B +S315E07FD0700000003E490000000000000000000000C4 +S315E07FD080000000000000000000000000000000003B +S315E07FD090000000000000000000000000000000002B +S315E07FD0A0000000000000000000000000000000001B +S315E07FD0B0000000000000000000000000000000000B +S315E07FD0C000000000000000000000000000000000FB +S315E07FD0D000000000000000000000000000000000EB +S315E07FD0E000000000000000000000000000000000DB +S315E07FD0F000000000000000000000000000000000CB +S315E07FD10000000000000000000000000000000000BA +S315E07FD11000000000000000000000000000000000AA +S315E07FD120000000000000000000000000000000009A +S315E07FD130000000000000000000000000000000008A +S315E07FD140000000000000000000000000000000007A +S315E07FD150000000000000000000000000000000006A +S315E07FD160000000000000000000000000000000005A +S315E07FD170000000000000000000000000000000004A +S315E07FD180000000000000000000000000000000003A +S315E07FD190000000000000000000000000000000002A +S315E07FD1A0000000000000000000000000000000001A +S315E07FD1B0000000000000000000000000000000000A +S315E07FD1C000000000000000000000000000000000FA +S315E07FD1D000000000000000000000000000000000EA +S315E07FD1E00000000000000000000000003E49000053 +S315E07FD1F000000000000000000000000000000000CA +S315E07FD20000000000000000000000000000000000B9 +S315E07FD21000000000000000000000000000000000A9 +S315E07FD2200000000000000000000000000000000099 +S315E07FD2300000000000000000000000000000000089 +S315E07FD2400000000000000000000000000000000079 +S315E07FD2500000000000000000000000000000000069 +S315E07FD2600000000000000000000000000000000059 +S315E07FD2700000000000000000000000000000000049 +S315E07FD2800000000000000000000000000000000039 +S315E07FD2900000000000000000000000000000000029 +S315E07FD2A00000000000000000000000000000000019 +S315E07FD2B00000000000000000000000000000000009 +S315E07FD2C000000000000000000000000000000000F9 +S315E07FD2D000000000000000000000000000000000E9 +S315E07FD2E000000000000000000000000000000000D9 +S315E07FD2F000000000000000000000000000000000C9 +S315E07FD30000000000000000000000000000000000B8 +S315E07FD31000000000000000000000000000000000A8 +S315E07FD3200000000000000000000000000000000098 +S315E07FD3300000000000000000000000000000000088 +S315E07FD3400000000000000000000000000000000078 +S315E07FD3500000000000000000000000000000000068 +S315E07FD36000000000003E49000000000000000000D1 +S315E07FD3700000000000000000000000000000000048 +S315E07FD3800000000000000000000000000000000038 +S315E07FD3900000000000000000000000000000000028 +S315E07FD3A00000000000000000000000000000000018 +S315E07FD3B00000000000000000000000000000000008 +S315E07FD3C000000000000000000000000000000000F8 +S315E07FD3D000000000000000000000000000000000E8 +S315E07FD3E000000000000000000000000000000000D8 +S315E07FD3F000000000000000000000000000000000C8 +S315E07FD40000000000000000000000000000000000B7 +S315E07FD41000000000000000000000000000000000A7 +S315E07FD4200000000000000000000000000000000097 +S315E07FD4300000000000000000000000000000000087 +S315E07FD4400000000000000000000000000000000077 +S315E07FD4500000000000000000000000000000000067 +S315E07FD4600000000000000000000000000000000057 +S315E07FD4700000000000000000000000000000000047 +S315E07FD4800000000000000000000000000000000037 +S315E07FD4900000000000000000000000000000000027 +S315E07FD4A00000000000000000000000000000000017 +S315E07FD4B00000000000000000000000000000000007 +S315E07FD4C000000000000000000000000000000000F7 +S315E07FD4D000000000000000000000000000003E4960 +S315E07FD4E000000000000000000000000000000000D7 +S315E07FD4F000000000000000000000000000000000C7 +S315E07FD50000000000000000000000000000000000B6 +S315E07FD51000000000000000000000000000000000A6 +S315E07FD5200000000000000000000000000000000096 +S315E07FD5300000000000000000000000000000000086 +S315E07FD5400000000000000000000000000000000076 +S315E07FD5500000000000000000000000000000000066 +S315E07FD5600000000000000000000000000000000056 +S315E07FD5700000000000000000000000000000000046 +S315E07FD5800000000000000000000000000000000036 +S315E07FD5900000000000000000000000000000000026 +S315E07FD5A00000000000000000000000000000000016 +S315E07FD5B00000000000000000000000000000000006 +S315E07FD5C000000000000000000000000000000000F6 +S315E07FD5D000000000000000000000000000000000E6 +S315E07FD5E000000000000000000000000000000000D6 +S315E07FD5F000000000000000000000000000000000C6 +S315E07FD60000000000000000000000000000000000B5 +S315E07FD61000000000000000000000000000000000A5 +S315E07FD6200000000000000000000000000000000095 +S315E07FD6300000000000000000000000000000000085 +S315E07FD6400000000000000000000000000000000075 +S315E07FD650000000000000003E4900000000000000DE +S315E07FD6600000000000000000000000000000000055 +S315E07FD6700000000000000000000000000000000045 +S315E07FD6800000000000000000000000000000000035 +S315E07FD6900000000000000000000000000000000025 +S315E07FD6A00000000000000000000000000000000015 +S315E07FD6B00000000000000000000000000000000005 +S315E07FD6C000000000000000000000000000000000F5 +S315E07FD6D000000000000000000000000000000000E5 +S315E07FD6E000000000000000000000000000000000D5 +S315E07FD6F000000000000000000000000000000000C5 +S315E07FD70000000000000000000000000000000000B4 +S315E07FD71000000000000000000000000000000000A4 +S315E07FD7200000000000000000000000000000000094 +S315E07FD7300000000000000000000000000000000084 +S315E07FD7400000000000000000000000000000000074 +S315E07FD7500000000000000000000000000000000064 +S315E07FD7600000000000000000000000000000000054 +S315E07FD7700000000000000000000000000000000044 +S315E07FD7800000000000000000000000000000000034 +S315E07FD7900000000000000000000000000000000024 +S315E07FD7A00000000000000000000000000000000014 +S315E07FD7B00000000000000000000000000000000004 +S315E07FD7C000000000000000000000000000000000F4 +S315E07FD7D03E4900000000000000000000000000005D +S315E07FD7E000000000000000000000000000000000D4 +S315E07FD7F000000000000000000000000000000000C4 +S315E07FD80000000000000000000000000000000000B3 +S315E07FD81000000000000000000000000000000000A3 +S315E07FD8200000000000000000000000000000000093 +S315E07FD8300000000000000000000000000000000083 +S315E07FD8400000000000000000000000000000000073 +S315E07FD8500000000000000000000000000000000063 +S315E07FD8600000000000000000000000000000000053 +S315E07FD8700000000000000000000000000000000043 +S315E07FD8800000000000000000000000000000000033 +S315E07FD8900000000000000000000000000000000023 +S315E07FD8A00000000000000000000000000000000013 +S315E07FD8B00000000000000000000000000000000003 +S315E07FD8C000000000000000000000000000000000F3 +S315E07FD8D000000000000000000000000000000000E3 +S315E07FD8E000000000000000000000000000000000D3 +S315E07FD8F000000000000000000000000000000000C3 +S315E07FD90000000000000000000000000000000000B2 +S315E07FD91000000000000000000000000000000000A2 +S315E07FD9200000000000000000000000000000000092 +S315E07FD9300000000000000000000000000000000082 +S315E07FD9400000000000000000003E490000000000EB +S315E07FD9500000000000000000000000000000000062 +S315E07FD9600000000000000000000000000000000052 +S315E07FD9700000000000000000000000000000000042 +S315E07FD9800000000000000000000000000000000032 +S315E07FD9900000000000000000000000000000000022 +S315E07FD9A00000000000000000000000000000000012 +S315E07FD9B00000000000000000000000000000000002 +S315E07FD9C000000000000000000000000000000000F2 +S315E07FD9D000000000000000000000000000000000E2 +S315E07FD9E000000000000000000000000000000000D2 +S315E07FD9F000000000000000000000000000000000C2 +S315E07FDA0000000000000000000000000000000000B1 +S315E07FDA1000000000000000000000000000000000A1 +S315E07FDA200000000000000000000000000000000091 +S315E07FDA300000000000000000000000000000000081 +S315E07FDA400000000000000000000000000000000071 +S315E07FDA500000000000000000000000000000000061 +S315E07FDA600000000000000000000000000000000051 +S315E07FDA700000000000000000000000000000000041 +S315E07FDA800000000000000000000000000000000031 +S315E07FDA900000000000000000000000000000000021 +S315E07FDAA00000000000000000000000000000000011 +S315E07FDAB00000000000000000000000000000000001 +S315E07FDAC000003E490000000000000000000000006A +S315E07FDAD000000000000000000000000000000000E1 +S315E07FDAE000000000000000000000000000000000D1 +S315E07FDAF000000000000000000000000000000000C1 +S315E07FDB0000000000000000000000000000000000B0 +S315E07FDB1000000000000000000000000000000000A0 +S315E07FDB200000000000000000000000000000000090 +S315E07FDB300000000000000000000000000000000080 +S315E07FDB400000000000000000000000000000000070 +S315E07FDB500000000000000000000000000000000060 +S315E07FDB600000000000000000000000000000000050 +S315E07FDB700000000000000000000000000000000040 +S315E07FDB800000000000000000000000000000000030 +S315E07FDB900000000000000000000000000000000020 +S315E07FDBA00000000000000000000000000000000010 +S315E07FDBB00000000000000000000000000000000000 +S315E07FDBC000000000000000000000000000000000F0 +S315E07FDBD000000000000000000000000000000000E0 +S315E07FDBE000000000000000000000000000000000D0 +S315E07FDBF000000000000000000000000000000000C0 +S315E07FDC0000000000000000000000000000000000AF +S315E07FDC10000000000000000000000000000000009F +S315E07FDC20000000000000000000000000000000008F +S315E07FDC3000000000000000000000003E49000000F8 +S315E07FDC40000000000000000000000000000000006F +S315E07FDC50000000000000000000000000000000005F +S315E07FDC60000000000000000000000000000000004F +S315E07FDC70000000000000000000000000000000003F +S315E07FDC80000000000000000000000000000000002F +S315E07FDC90000000000000000000000000000000001F +S315E07FDCA0000000000000000000000000000000000F +S315E07FDCB000000000000000000000000000000000FF +S315E07FDCC000000000000000000000000000000000EF +S315E07FDCD000000000000000000000000000000000DF +S315E07FDCE000000000000000000000000000000000CF +S315E07FDCF000000000000000000000000000000000BF +S315E07FDD0000000000000000000000000000000000AE +S315E07FDD10000000000000000000000000000000009E +S315E07FDD20000000000000000000000000000000008E +S315E07FDD30000000000000000000000000000000007E +S315E07FDD40000000000000000000000000000000006E +S315E07FDD50000000000000000000000000000000005E +S315E07FDD60000000000000000000000000000000004E +S315E07FDD70000000000000000000000000000000003E +S315E07FDD80000000000000000000000000000000002E +S315E07FDD90000000000000000000000000000000001E +S315E07FDDA0000000000000000000000000000000000E +S315E07FDDB0000000003E490000000000000000000077 +S315E07FDDC000000000000000000000000000000000EE +S315E07FDDD000000000000000000000000000000000DE +S315E07FDDE000000000000000000000000000000000CE +S315E07FDDF000000000000000000000000000000000BE +S315E07FDE0000000000000000000000000000000000AD +S315E07FDE10000000000000000000000000000000009D +S315E07FDE20000000000000000000000000000000008D +S315E07FDE30000000000000000000000000000000007D +S315E07FDE40000000000000000000000000000000006D +S315E07FDE50000000000000000000000000000000005D +S315E07FDE60000000000000000000000000000000004D +S315E07FDE70000000000000000000000000000000003D +S315E07FDE80000000000000000000000000000000002D +S315E07FDE90000000000000000000000000000000001D +S315E07FDEA0000000000000000000000000000000000D +S315E07FDEB000000000000000000000000000000000FD +S315E07FDEC000000000000000000000000000000000ED +S315E07FDED000000000000000000000000000000000DD +S315E07FDEE000000000000000000000000000000000CD +S315E07FDEF000000000000000000000000000000000BD +S315E07FDF0000000000000000000000000000000000AC +S315E07FDF10000000000000000000000000000000009C +S315E07FDF20000000000000000000000000003E490005 +S315E07FDF30000000000000000000000000000000007C +S315E07FDF40000000000000000000000000000000006C +S315E07FDF50000000000000000000000000000000005C +S315E07FDF60000000000000000000000000000000004C +S315E07FDF70000000000000000000000000000000003C +S315E07FDF80000000000000000000000000000000002C +S315E07FDF90000000000000000000000000000000001C +S315E07FDFA0000000000000000000000000000000000C +S315E07FDFB000000000000000000000000000000000FC +S315E07FDFC000000000000000000000000000000000EC +S315E07FDFD000000000000000000000000000000000DC +S315E07FDFE000000000000000000000000000000000CC +S315E07FDFF000000000000000000000000000000000BC +S315E07FE00000000000000000000000000000000000AB +S315E07FE010000000000000000000000000000000009B +S315E07FE020000000000000000000000000000000008B +S315E07FE030000000000000000000000000000000007B +S315E07FE040000000000000000000000000000000006B +S315E07FE050000000000000000000000000000000005B +S315E07FE060000000000000000000000000000000004B +S315E07FE070000000000000000000000000000000003B +S315E07FE080000000000000000000000000000000002B +S315E07FE090000000000000000000000000000000001B +S315E07FE0A00000000000003E49000000000000000084 +S315E07FE0B000000000000000000000000000000000FB +S315E07FE0C000000000000000000000000000000000EB +S315E07FE0D000000000000000000000000000000000DB +S315E07FE0E000000000000000000000000000000000CB +S315E07FE0F000000000000000000000000000000000BB +S315E07FE10000000000000000000000000000000000AA +S315E07FE110000000000000000000000000000000009A +S315E07FE120000000000000000000000000000000008A +S315E07FE130000000000000000000000000000000007A +S315E07FE140000000000000000000000000000000006A +S315E07FE150000000000000000000000000000000005A +S315E07FE160000000000000000000000000000000004A +S315E07FE170000000000000000000000000000000003A +S315E07FE180000000000000000000000000000000002A +S315E07FE190000000000000000000000000000000001A +S315E07FE1A0000000000000000000000000000000000A +S315E07FE1B000000000000000000000000000000000FA +S315E07FE1C000000000000000000000000000000000EA +S315E07FE1D000000000000000000000000000000000DA +S315E07FE1E000000000000000000000000000000000CA +S315E07FE1F000000000000000000000000000000000BA +S315E07FE20000000000000000000000000000000000A9 +S315E07FE2100000000000000000000000000000003E5B +S315E07FE2204900000000000000000000000000000040 +S315E07FE2300000000000000000000000000000000079 +S315E07FE2400000000000000000000000000000000069 +S315E07FE2500000000000000000000000000000000059 +S315E07FE2600000000000000000000000000000000049 +S315E07FE2700000000000000000000000000000000039 +S315E07FE2800000000000000000000000000000000029 +S315E07FE2900000000000000000000000000000000019 +S315E07FE2A00000000000000000000000000000000009 +S315E07FE2B000000000000000000000000000000000F9 +S315E07FE2C000000000000000000000000000000000E9 +S315E07FE2D000000000000000000000000000000000D9 +S315E07FE2E000000000000000000000000000000000C9 +S315E07FE2F000000000000000000000000000000000B9 +S315E07FE30000000000000000000000000000000000A8 +S315E07FE3100000000000000000000000000000000098 +S315E07FE3200000000000000000000000000000000088 +S315E07FE3300000000000000000000000000000000078 +S315E07FE3400000000000000000000000000000000068 +S315E07FE3500000000000000000000000000000000058 +S315E07FE3600000000000000000000000000000000048 +S315E07FE3700000000000000000000000000000000038 +S315E07FE3800000000000000000000000000000000028 +S315E07FE39000000000000000003E4900000000000091 +S315E07FE3A00000000000000000000000000000000008 +S315E07FE3B000000000000000000000000000000000F8 +S315E07FE3C000000000000000000000000000000000E8 +S315E07FE3D000000000000000000000000000000000D8 +S315E07FE3E000000000000000000000000000000000C8 +S315E07FE3F000000000000000000000000000000000B8 +S315E07FE40000000000000000000000000000000000A7 +S315E07FE4100000000000000000000000000000000097 +S315E07FE4200000000000000000000000000000000087 +S315E07FE4300000000000000000000000000000000077 +S315E07FE4400000000000000000000000000000000067 +S315E07FE4500000000000000000000000000000000057 +S315E07FE4600000000000000000000000000000000047 +S315E07FE4700000000000000000000000000000000037 +S315E07FE4800000000000000000000000000000000027 +S315E07FE4900000000000000000000000000000000017 +S315E07FE4A00000000000000000000000000000000007 +S315E07FE4B000000000000000000000000000000000F7 +S315E07FE4C000000000000000000000000000000000E7 +S315E07FE4D000000000000000000000000000000000D7 +S315E07FE4E000000000000000000000000000000000C7 +S315E07FE4F000000000000000000000000000000000B7 +S315E07FE50000000000000000000000000000000000A6 +S315E07FE510003E49000000000000000000000000000F +S315E07FE5200000000000000000000000000000000086 +S315E07FE5300000000000000000000000000000000076 +S315E07FE5400000000000000000000000000000000066 +S315E07FE5500000000000000000000000000000000056 +S315E07FE5600000000000000000000000000000000046 +S315E07FE5700000000000000000000000000000000036 +S315E07FE5800000000000000000000000000000000026 +S315E07FE5900000000000000000000000000000000016 +S315E07FE5A00000000000000000000000000000000006 +S315E07FE5B000000000000000000000000000000000F6 +S315E07FE5C000000000000000000000000000000000E6 +S315E07FE5D000000000000000000000000000000000D6 +S315E07FE5E000000000000000000000000000000000C6 +S315E07FE5F000000000000000000000000000000000B6 +S315E07FE60000000000000000000000000000000000A5 +S315E07FE6100000000000000000000000000000000095 +S315E07FE6200000000000000000000000000000000085 +S315E07FE6300000000000000000000000000000000075 +S315E07FE6400000000000000000000000000000000065 +S315E07FE6500000000000000000000000000000000055 +S315E07FE6600000000000000000000000000000000045 +S315E07FE6700000000000000000000000000000000035 +S315E07FE680000000000000000000003E49000000009E +S315E07FE6900000000000000000000000000000000015 +S315E07FE6A00000000000000000000000000000000005 +S315E07FE6B000000000000000000000000000000000F5 +S315E07FE6C000000000000000000000000000000000E5 +S315E07FE6D000000000000000000000000000000000D5 +S315E07FE6E000000000000000000000000000000000C5 +S315E07FE6F000000000000000000000000000000000B5 +S315E07FE70000000000000000000000000000000000A4 +S315E07FE7100000000000000000000000000000000094 +S315E07FE7200000000000000000000000000000000084 +S315E07FE7300000000000000000000000000000000074 +S315E07FE7400000000000000000000000000000000064 +S315E07FE7500000000000000000000000000000000054 +S315E07FE7600000000000000000000000000000000044 +S315E07FE7700000000000000000000000000000000034 +S315E07FE7800000000000000000000000000000000024 +S315E07FE7900000000000000000000000000000000014 +S315E07FE7A00000000000000000000000000000000004 +S315E07FE7B000000000000000000000000000000000F4 +S315E07FE7C000000000000000000000000000000000E4 +S315E07FE7D000000000000000000000000000000000D4 +S315E07FE7E000000000000000000000000000000000C4 +S315E07FE7F000000000000000000000000000000000B4 +S315E07FE8000000003E4900000000000000000000001C +S315E07FE8100000000000000000000000000000000093 +S315E07FE8200000000000000000000000000000000083 +S315E07FE8300000000000000000000000000000000073 +S315E07FE8400000000000000000000000000000000063 +S315E07FE8500000000000000000000000000000000053 +S315E07FE8600000000000000000000000000000000043 +S315E07FE8700000000000000000000000000000000033 +S315E07FE8800000000000000000000000000000000023 +S315E07FE8900000000000000000000000000000000013 +S315E07FE8A00000000000000000000000000000000003 +S315E07FE8B000000000000000000000000000000000F3 +S315E07FE8C000000000000000000000000000000000E3 +S315E07FE8D000000000000000000000000000000000D3 +S315E07FE8E000000000000000000000000000000000C3 +S315E07FE8F000000000000000000000000000000000B3 +S315E07FE90000000000000000000000000000000000A2 +S315E07FE9100000000000000000000000000000000092 +S315E07FE9200000000000000000000000000000000082 +S315E07FE9300000000000000000000000000000000072 +S315E07FE9400000000000000000000000000000000062 +S315E07FE9500000000000000000000000000000000052 +S315E07FE9600000000000000000000000000000000042 +S315E07FE9700000000000000000000000003E490000AB +S315E07FE9800000000000000000000000000000000022 +S315E07FE9900000000000000000000000000000000012 +S315E07FE9A00000000000000000000000000000000002 +S315E07FE9B000000000000000000000000000000000F2 +S315E07FE9C000000000000000000000000000000000E2 +S315E07FE9D000000000000000000000000000000000D2 +S315E07FE9E000000000000000000000000000000000C2 +S315E07FE9F000000000000000000000000000000000B2 +S315E07FEA0000000000000000000000000000000000A1 +S315E07FEA100000000000000000000000000000000091 +S315E07FEA200000000000000000000000000000000081 +S315E07FEA300000000000000000000000000000000071 +S315E07FEA400000000000000000000000000000000061 +S315E07FEA500000000000000000000000000000000051 +S315E07FEA600000000000000000000000000000000041 +S315E07FEA700000000000000000000000000000000031 +S315E07FEA800000000000000000000000000000000021 +S315E07FEA900000000000000000000000000000000011 +S315E07FEAA00000000000000000000000000000000001 +S315E07FEAB000000000000000000000000000000000F1 +S315E07FEAC000000000000000000000000000000000E1 +S315E07FEAD000000000000000000000000000000000D1 +S315E07FEAE000000000000000000000000000000000C1 +S315E07FEAF000000000003E490000000000000000002A +S315E07FEB0000000000000000000000000000000000A0 +S315E07FEB100000000000000000000000000000000090 +S315E07FEB200000000000000000000000000000000080 +S315E07FEB300000000000000000000000000000000070 +S315E07FEB400000000000000000000000000000000060 +S315E07FEB500000000000000000000000000000000050 +S315E07FEB600000000000000000000000000000000040 +S315E07FEB700000000000000000000000000000000030 +S315E07FEB800000000000000000000000000000000020 +S315E07FEB900000000000000000000000000000000010 +S315E07FEBA00000000000000000000000000000000000 +S315E07FEBB000000000000000000000000000000000F0 +S315E07FEBC000000000000000000000000000000000E0 +S315E07FEBD000000000000000000000000000000000D0 +S315E07FEBE000000000000000000000000000000000C0 +S315E07FEBF000000000000000000000000000000000B0 +S315E07FEC00000000000000000000000000000000009F +S315E07FEC10000000000000000000000000000000008F +S315E07FEC20000000000000000000000000000000007F +S315E07FEC30000000000000000000000000000000006F +S315E07FEC40000000000000000000000000000000005F +S315E07FEC50000000000000000000000000000000004F +S315E07FEC6000000000000000000000000000003E49B8 +S315E07FEC70000000000000000000000000000000002F +S315E07FEC80000000000000000000000000000000001F +S315E07FEC90000000000000000000000000000000000F +S315E07FECA000000000000000000000000000000000FF +S315E07FECB000000000000000000000000000000000EF +S315E07FECC000000000000000000000000000000000DF +S315E07FECD000000000000000000000000000000000CF +S315E07FECE000000000000000000000000000000000BF +S315E07FECF000000000000000000000000000000000AF +S315E07FED00000000000000000000000000000000009E +S315E07FED10000000000000000000000000000000008E +S315E07FED20000000000000000000000000000000007E +S315E07FED30000000000000000000000000000000006E +S315E07FED40000000000000000000000000000000005E +S315E07FED50000000000000000000000000000000004E +S315E07FED60000000000000000000000000000000003E +S315E07FED70000000000000000000000000000000002E +S315E07FED80000000000000000000000000000000001E +S315E07FED90000000000000000000000000000000000E +S315E07FEDA000000000000000000000000000000000FE +S315E07FEDB000000000000000000000000000000000EE +S315E07FEDC000000000000000000000000000000000DE +S315E07FEDD000000000000000000000000000000000CE +S315E07FEDE0000000000000003E490000000000000037 +S315E07FEDF000000000000000000000000000000000AE +S315E07FEE00000000000000000000000000000000009D +S315E07FEE10000000000000000000000000000000008D +S315E07FEE20000000000000000000000000000000007D +S315E07FEE30000000000000000000000000000000006D +S315E07FEE40000000000000000000000000000000005D +S315E07FEE50000000000000000000000000000000004D +S315E07FEE60000000000000000000000000000000003D +S315E07FEE70000000000000000000000000000000002D +S315E07FEE80000000000000000000000000000000001D +S315E07FEE90000000000000000000000000000000000D +S315E07FEEA000000000000000000000000000000000FD +S315E07FEEB000000000000000000000000000000000ED +S315E07FEEC000000000000000000000000000000000DD +S315E07FEED000000000000000000000000000000000CD +S315E07FEEE000000000000000000000000000000000BD +S315E07FEEF000000000000000000000000000000000AD +S315E07FEF00000000000000000000000000000000009C +S315E07FEF10000000000000000000000000000000008C +S315E07FEF20000000000000000000000000000000007C +S315E07FEF30000000000000000000000000000000006C +S315E07FEF40000000000000000000000000000000005C +S315E07FEF50000000000000000000000000000000004C +S315E07FEF603E490000000000000000000000000000B5 +S315E07FEF70000000000000000000000000000000002C +S315E07FEF80000000000000000000000000000000001C +S315E07FEF90000000000000000000000000000000000C +S315E07FEFA000000000000000000000000000000000FC +S315E07FEFB000000000000000000000000000000000EC +S315E07FEFC000000000000000000000000000000000DC +S315E07FEFD000000000000000000000000000000000CC +S315E07FEFE000000000000000000000000000000000BC +S315E07FEFF000000000000000000000000000000000AC +S315E07FF000000000000000000000000000000000009B +S315E07FF010000000000000000000000000000000008B +S315E07FF020000000000000000000000000000000007B +S315E07FF030000000000000000000000000000000006B +S315E07FF040000000000000000000000000000000005B +S315E07FF050000000000000000000000000000000004B +S315E07FF060000000000000000000000000000000003B +S315E07FF070000000000000000000000000000000002B +S315E07FF080000000000000000000000000000000001B +S315E07FF090000000000000000000000000000000000B +S315E07FF0A000000000000000000000000000000000FB +S315E07FF0B000000000000000000000000000000000EB +S315E07FF0C000000000000000000000000000000000DB +S315E07FF0D00000000000000000003E49000000000044 +S315E07FF0E000000000000000000000000000000000BB +S315E07FF0F000000000000000000000000000000000AB +S315E07FF100000000000000000000000000000000009A +S315E07FF110000000000000000000000000000000008A +S315E07FF120000000000000000000000000000000007A +S315E07FF130000000000000000000000000000000006A +S315E07FF140000000000000000000000000000000005A +S315E07FF150000000000000000000000000000000004A +S315E07FF160000000000000000000000000000000003A +S315E07FF170000000000000000000000000000000002A +S315E07FF180000000000000000000000000000000001A +S315E07FF190000000000000000000000000000000000A +S315E07FF1A000000000000000000000000000000000FA +S315E07FF1B000000000000000000000000000000000EA +S315E07FF1C000000000000000000000000000000000DA +S315E07FF1D000000000000000000000000000000000CA +S315E07FF1E000000000000000000000000000000000BA +S315E07FF1F000000000000000000000000000000000AA +S315E07FF2000000000000000000000000000000000099 +S315E07FF2100000000000000000000000000000000089 +S315E07FF2200000000000000000000000000000000079 +S315E07FF2300000000000000000000000000000000069 +S315E07FF2400000000000000000000000000000000059 +S315E07FF25000003E49000000000000000000000000C2 +S315E07FF2600000000000000000000000000000000039 +S315E07FF2700000000000000000000000000000000029 +S315E07FF2800000000000000000000000000000000019 +S315E07FF2900000000000000000000000000000000009 +S315E07FF2A000000000000000000000000000000000F9 +S315E07FF2B000000000000000000000000000000000E9 +S315E07FF2C000000000000000000000000000000000D9 +S315E07FF2D000000000000000000000000000000000C9 +S315E07FF2E000000000000000000000000000000000B9 +S315E07FF2F000000000000000000000000000000000A9 +S315E07FF3000000000000000000000000000000000098 +S315E07FF3100000000000000000000000000000000088 +S315E07FF3200000000000000000000000000000000078 +S315E07FF3300000000000000000000000000000000068 +S315E07FF3400000000000000000000000000000000058 +S315E07FF3500000000000000000000000000000000048 +S315E07FF3600000000000000000000000000000000038 +S315E07FF3700000000000000000000000000000000028 +S315E07FF3800000000000000000000000000000000018 +S315E07FF3900000000000000000000000000000000008 +S315E07FF3A000000000000000000000000000000000F8 +S315E07FF3B000000000000000000000000000000000E8 +S315E07FF3C000000000000000000000003E4900000051 +S315E07FF3D000000000000000000000000000000000C8 +S315E07FF3E000000000000000000000000000000000B8 +S315E07FF3F000000000000000000000000000000000A8 +S315E07FF4000000000000000000000000000000000097 +S315E07FF4100000000000000000000000000000000087 +S315E07FF4200000000000000000000000000000000077 +S315E07FF4300000000000000000000000000000000067 +S315E07FF4400000000000000000000000000000000057 +S315E07FF4500000000000000000000000000000000047 +S315E07FF4600000000000000000000000000000000037 +S315E07FF4700000000000000000000000000000000027 +S315E07FF4800000000000000000000000000000000017 +S315E07FF4900000000000000000000000000000000007 +S315E07FF4A000000000000000000000000000000000F7 +S315E07FF4B000000000000000000000000000000000E7 +S315E07FF4C000000000000000000000000000000000D7 +S315E07FF4D000000000000000000000000000000000C7 +S315E07FF4E000000000000000000000000000000000B7 +S315E07FF4F000000000000000000000000000000000A7 +S315E07FF5000000000000000000000000000000000096 +S315E07FF5100000000000000000000000000000000086 +S315E07FF5200000000000000000000000000000000076 +S315E07FF5300000000000000000000000000000000066 +S315E07FF540000000003E4900000000000000000000CF +S315E07FF5500000000000000000000000000000000046 +S315E07FF5600000000000000000000000000000000036 +S315E07FF5700000000000000000000000000000000026 +S315E07FF5800000000000000000000000000000000016 +S315E07FF5900000000000000000000000000000000006 +S315E07FF5A000000000000000000000000000000000F6 +S315E07FF5B000000000000000000000000000000000E6 +S315E07FF5C000000000000000000000000000000000D6 +S315E07FF5D000000000000000000000000000000000C6 +S315E07FF5E000000000000000000000000000000000B6 +S315E07FF5F000000000000000000000000000000000A6 +S315E07FF6000000000000000000000000000000000095 +S315E07FF6100000000000000000000000000000000085 +S315E07FF6200000000000000000000000000000000075 +S315E07FF6300000000000000000000000000000000065 +S315E07FF6400000000000000000000000000000000055 +S315E07FF6500000000000000000000000000000000045 +S315E07FF6600000000000000000000000000000000035 +S315E07FF6700000000000000000000000000000000025 +S315E07FF6800000000000000000000000000000000015 +S315E07FF6900000000000000000000000000000000005 +S315E07FF6A000000000000000000000000000000000F5 +S315E07FF6B0000000000000000000000000003E49005E +S315E07FF6C000000000000000000000000000000000D5 +S315E07FF6D000000000000000000000000000000000C5 +S315E07FF6E000000000000000000000000000000000B5 +S315E07FF6F000000000000000000000000000000000A5 +S315E07FF7000000000000000000000000000000000094 +S315E07FF7100000000000000000000000000000000084 +S315E07FF7200000000000000000000000000000000074 +S315E07FF7300000000000000000000000000000000064 +S315E07FF7400000000000000000000000000000000054 +S315E07FF7500000000000000000000000000000000044 +S315E07FF7600000000000000000000000000000000034 +S315E07FF7700000000000000000000000000000000024 +S315E07FF7800000000000000000000000000000000014 +S315E07FF7900000000000000000000000000000000004 +S315E07FF7A000000000000000000000000000000000F4 +S315E07FF7B000000000000000000000000000000000E4 +S315E07FF7C000000000000000000000000000000000D4 +S315E07FF7D000000000000000000000000000000000C4 +S315E07FF7E000000000000000000000000000000000B4 +S315E07FF7F000000000000000000000000000000000A4 +S315E07FF8000000000000000000000000000000000093 +S315E07FF8100000000000000000000000000000000083 +S315E07FF8200000000000000000000000000000000073 +S315E07FF8300000000000003E490000000000000000DC +S315E07FF8400000000000000000000000000000000053 +S315E07FF8500000000000000000000000000000000043 +S315E07FF8600000000000000000000000000000000033 +S315E07FF8700000000000000000000000000000000023 +S315E07FF8800000000000000000000000000000000013 +S315E07FF8900000000000000000000000000000000003 +S315E07FF8A000000000000000000000000000000000F3 +S315E07FF8B000000000000000000000000000000000E3 +S315E07FF8C000000000000000000000000000000000D3 +S315E07FF8D000000000000000000000000000000000C3 +S315E07FF8E000000000000000000000000000000000B3 +S315E07FF8F000000000000000000000000000000000A3 +S315E07FF9000000000000000000000000000000000092 +S315E07FF9100000000000000000000000000000000082 +S315E07FF9200000000000000000000000000000000072 +S315E07FF9300000000000000000000000000000000062 +S315E07FF9400000000000000000000000000000000052 +S315E07FF9500000000000000000000000000000000042 +S315E07FF9600000000000000000000000000000000032 +S315E07FF9700000000000000000000000000000000022 +S315E07FF9800000000000000000000000000000000012 +S315E07FF9900000000000000000000000000000000002 +S315E07FF9A00000000000000000000000000000003EB4 +S315E07FF9B04900000000000000000000000000000099 +S315E07FF9C000000000000000000000000000000000D2 +S315E07FF9D000000000000000000000000000000000C2 +S315E07FF9E000000000000000000000000000000000B2 +S315E07FF9F000000000000000000000000000000000A2 +S315E07FFA000000000000000000000000000000000091 +S315E07FFA100000000000000000000000000000000081 +S315E07FFA200000000000000000000000000000000071 +S315E07FFA300000000000000000000000000000000061 +S315E07FFA400000000000000000000000000000000051 +S315E07FFA500000000000000000000000000000000041 +S315E07FFA600000000000000000000000000000000031 +S315E07FFA700000000000000000000000000000000021 +S315E07FFA800000000000000000000000000000000011 +S315E07FFA900000000000000000000000000000000001 +S315E07FFAA000000000000000000000000000000000F1 +S315E07FFAB000000000000000000000000000000000E1 +S315E07FFAC000000000000000000000000000000000D1 +S315E07FFAD000000000000000000000000000000000C1 +S315E07FFAE000000000000000000000000000000000B1 +S315E07FFAF000000000000000000000000000000000A1 +S315E07FFB000000000000000000000000000000000090 +S315E07FFB100000000000000000000000000000000080 +S315E07FFB2000000000000000003E49000000000000E9 +S315E07FFB300000000000000000000000000000000060 +S315E07FFB400000000000000000000000000000000050 +S315E07FFB500000000000000000000000000000000040 +S315E07FFB600000000000000000000000000000000030 +S315E07FFB700000000000000000000000000000000020 +S315E07FFB800000000000000000000000000000000010 +S315E07FFB900000000000000000000000000000000000 +S315E07FFBA000000000000000000000000000000000F0 +S315E07FFBB000000000000000000000000000000000E0 +S315E07FFBC000000000000000000000000000000000D0 +S315E07FFBD000000000000000000000000000000000C0 +S315E07FFBE000000000000000000000000000000000B0 +S315E07FFBF000000000000000000000000000000000A0 +S315E07FFC00000000000000000000000000000000008F +S315E07FFC10000000000000000000000000000000007F +S315E07FFC20000000000000000000000000000000006F +S315E07FFC30000000000000000000000000000000005F +S315E07FFC40000000000000000000000000000000004F +S315E07FFC50000000000000000000000000000000003F +S315E07FFC60000000000000000000000000000000002F +S315E07FFC70000000000000000000000000000000001F +S315E07FFC80000000000000000000000000000000000F +S315E07FFC9000000000000000000000000000000000FF +S315E07FFCA0003E490000000000000000000000000068 +S315E07FFCB000000000000000000000000000000000DF +S315E07FFCC000000000000000000000000000000000CF +S315E07FFCD000000000000000000000000000000000BF +S315E07FFCE000000000000000000000000000000000AF +S315E07FFCF0000000000000000000000000000000009F +S315E07FFD00000000000000000000000000000000008E +S315E07FFD10000000000000000000000000000000007E +S315E07FFD20000000000000000000000000000000006E +S315E07FFD30000000000000000000000000000000005E +S315E07FFD40000000000000000000000000000000004E +S315E07FFD50000000000000000000000000000000003E +S315E07FFD60000000000000000000000000000000002E +S315E07FFD70000000000000000000000000000000001E +S315E07FFD80000000000000000000000000000000000E +S315E07FFD9000000000000000000000000000000000FE +S315E07FFDA000000000000000000000000000000000EE +S315E07FFDB000000000000000000000000000000000DE +S315E07FFDC000000000000000000000000000000000CE +S315E07FFDD000000000000000000000000000000000BE +S315E07FFDE000000000000000000000000000000000AE +S315E07FFDF0000000000000000000000000000000009E +S315E07FFE00000000000000000000000000000000008D +S315E07FFE10000000000000000000003E4900000000F6 +S315E07FFE20000000000000000000000000000000006D +S315E07FFE30000000000000000000000000000000005D +S315E07FFE40000000000000000000000000000000004D +S315E07FFE50000000000000000000000000000000003D +S315E07FFE60000000000000000000000000000000002D +S315E07FFE70000000000000000000000000000000001D +S315E07FFE80000000000000000000000000000000000D +S315E07FFE9000000000000000000000000000000000FD +S315E07FFEA000000000000000000000000000000000ED +S315E07FFEB000000000000000000000000000000000DD +S315E07FFEC000000000000000000000000000000000CD +S315E07FFED000000000000000000000000000000000BD +S315E07FFEE000000000000000000000000000000000AD +S315E07FFEF0000000000000000000000000000000009D +S315E07FFF00000000000000000000000000000000008C +S315E07FFF10000000000000000000000000000000007C +S315E07FFF20000000000000000000000000000000006C +S315E07FFF30000000000000000000000000000000005C +S315E07FFF40000000000000000000000000000000004C +S315E07FFF50000000000000000000000000000000003C +S315E07FFF60000000000000000000000000000000002C +S315E07FFF70000000000000000000000000000000001C +S315E07FFF80000000000000000000000000000000000C +S315E07FFF900000003E49000000000000000000000075 +S315E07FFFA000000000000000000000000000000000EC +S315E07FFFB000000000000000000000000000000000DC +S315E07FFFC000000000000000000000000000000000CC +S315E07FFFD000000000000000000000000000000000BC +S315E07FFFE000000000000000000000000000000000AC +S315E07FFFF0000000000000000000000000000000009C +S315E0800000000000000000000000000000000000008A +S315E0800010000000000000000000000000000000007A +S315E0800020000000000000000000000000000000006A +S315E0800030000000000000000000000000000000005A +S315E0800040000000000000000000000000000000004A +S315E0800050000000000000000000000000000000003A +S315E0800060000000000000000000000000000000002A +S315E0800070000000000000000000000000000000001A +S315E0800080000000000000000000000000000000000A +S315E080009000000000000000000000000000000000FA +S315E08000A000000000000000000000000000000000EA +S315E08000B000000000000000000000000000000000DA +S315E08000C000000000000000000000000000000000CA +S315E08000D000000000000000000000000000000000BA +S315E08000E000000000000000000000000000000000AA +S315E08000F0000000000000000000000000000000009A +S315E08001000000000000000000000000003E49000002 +S315E08001100000000000000000000000000000000079 +S315E08001200000000000000000000000000000000069 +S315E08001300000000000000000000000000000000059 +S315E08001400000000000000000000000000000000049 +S315E08001500000000000000000000000000000000039 +S315E08001600000000000000000000000000000000029 +S315E08001700000000000000000000000000000000019 +S315E08001800000000000000000000000000000000009 +S315E080019000000000000000000000000000000000F9 +S315E08001A000000000000000000000000000000000E9 +S315E08001B000000000000000000000000000000000D9 +S315E08001C000000000000000000000000000000000C9 +S315E08001D000000000000000000000000000000000B9 +S315E08001E000000000000000000000000000000000A9 +S315E08001F00000000000000000000000000000000099 +S315E08002000000000000000000000000000000000088 +S315E08002100000000000000000000000000000000078 +S315E08002200000000000000000000000000000000068 +S315E08002300000000000000000000000000000000058 +S315E08002400000000000000000000000000000000048 +S315E08002500000000000000000000000000000000038 +S315E08002600000000000000000000000000000000028 +S315E08002700000000000000000000000000000000018 +S315E080028000000000003E4900000000000000000081 +S315E080029000000000000000000000000000000000F8 +S315E08002A000000000000000000000000000000000E8 +S315E08002B000000000000000000000000000000000D8 +S315E08002C000000000000000000000000000000000C8 +S315E08002D000000000000000000000000000000000B8 +S315E08002E000000000000000000000000000000000A8 +S315E08002F00000000000000000000000000000000098 +S315E08003000000000000000000000000000000000087 +S315E08003100000000000000000000000000000000077 +S315E08003200000000000000000000000000000000067 +S315E08003300000000000000000000000000000000057 +S315E08003400000000000000000000000000000000047 +S315E08003500000000000000000000000000000000037 +S315E08003600000000000000000000000000000000027 +S315E08003700000000000000000000000000000000017 +S315E08003800000000000000000000000000000000007 +S315E080039000000000000000000000000000000000F7 +S315E08003A000000000000000000000000000000000E7 +S315E08003B000000000000000000000000000000000D7 +S315E08003C000000000000000000000000000000000C7 +S315E08003D000000000000000000000000000000000B7 +S315E08003E000000000000000000000000000000000A7 +S315E08003F000000000000000000000000000003E4910 +S315E08004000000000000000000000000000000000086 +S315E08004100000000000000000000000000000000076 +S315E08004200000000000000000000000000000000066 +S315E08004300000000000000000000000000000000056 +S315E08004400000000000000000000000000000000046 +S315E08004500000000000000000000000000000000036 +S315E08004600000000000000000000000000000000026 +S315E08004700000000000000000000000000000000016 +S315E08004800000000000000000000000000000000006 +S315E080049000000000000000000000000000000000F6 +S315E08004A000000000000000000000000000000000E6 +S315E08004B000000000000000000000000000000000D6 +S315E08004C000000000000000000000000000000000C6 +S315E08004D000000000000000000000000000000000B6 +S315E08004E000000000000000000000000000000000A6 +S315E08004F00000000000000000000000000000000096 +S315E08005000000000000000000000000000000000085 +S315E08005100000000000000000000000000000000075 +S315E08005200000000000000000000000000000000065 +S315E08005300000000000000000000000000000000055 +S315E08005400000000000000000000000000000000045 +S315E08005500000000000000000000000000000000035 +S315E08005600000000000000000000000000000000025 +S315E0800570000000000000003E49000000000000008E +S315E08005800000000000000000000000000000000005 +S315E080059000000000000000000000000000000000F5 +S315E08005A000000000000000000000000000000000E5 +S315E08005B000000000000000000000000000000000D5 +S315E08005C000000000000000000000000000000000C5 +S315E08005D000000000000000000000000000000000B5 +S315E08005E000000000000000000000000000000000A5 +S315E08005F00000000000000000000000000000000095 +S315E08006000000000000000000000000000000000084 +S315E08006100000000000000000000000000000000074 +S315E08006200000000000000000000000000000000064 +S315E08006300000000000000000000000000000000054 +S315E08006400000000000000000000000000000000044 +S315E08006500000000000000000000000000000000034 +S315E08006600000000000000000000000000000000024 +S315E08006700000000000000000000000000000000014 +S315E08006800000000000000000000000000000000004 +S315E080069000000000000000000000000000000000F4 +S315E08006A000000000000000000000000000000000E4 +S315E08006B000000000000000000000000000000000D4 +S315E08006C000000000000000000000000000000000C4 +S315E08006D000000000000000000000000000000000B4 +S315E08006E000000000000000000000000000000000A4 +S315E08006F03E4900000000000000000000000000000D +S315E08007000000000000000000000000000000000083 +S315E08007100000000000000000000000000000000073 +S315E08007200000000000000000000000000000000063 +S315E08007300000000000000000000000000000000053 +S315E08007400000000000000000000000000000000043 +S315E08007500000000000000000000000000000000033 +S315E08007600000000000000000000000000000000023 +S315E08007700000000000000000000000000000000013 +S315E08007800000000000000000000000000000000003 +S315E080079000000000000000000000000000000000F3 +S315E08007A000000000000000000000000000000000E3 +S315E08007B000000000000000000000000000000000D3 +S315E08007C000000000000000000000000000000000C3 +S315E08007D000000000000000000000000000000000B3 +S315E08007E000000000000000000000000000000000A3 +S315E08007F00000000000000000000000000000000093 +S315E08008000000000000000000000000000000000082 +S315E08008100000000000000000000000000000000072 +S315E08008200000000000000000000000000000000062 +S315E08008300000000000000000000000000000000052 +S315E08008400000000000000000000000000000000042 +S315E08008500000000000000000000000000000000032 +S315E08008600000000000000000003E4900000000009B +S315E08008700000000000000000000000000000000012 +S315E08008800000000000000000000000000000000002 +S315E080089000000000000000000000000000000000F2 +S315E08008A000000000000000000000000000000000E2 +S315E08008B000000000000000000000000000000000D2 +S315E08008C000000000000000000000000000000000C2 +S315E08008D000000000000000000000000000000000B2 +S315E08008E000000000000000000000000000000000A2 +S315E08008F00000000000000000000000000000000092 +S315E08009000000000000000000000000000000000081 +S315E08009100000000000000000000000000000000071 +S315E08009200000000000000000000000000000000061 +S315E08009300000000000000000000000000000000051 +S315E08009400000000000000000000000000000000041 +S315E08009500000000000000000000000000000000031 +S315E08009600000000000000000000000000000000021 +S315E08009700000000000000000000000000000000011 +S315E08009800000000000000000000000000000000001 +S315E080099000000000000000000000000000000000F1 +S315E08009A000000000000000000000000000000000E1 +S315E08009B000000000000000000000000000000000D1 +S315E08009C000000000000000000000000000000000C1 +S315E08009D000000000000000000000000000000000B1 +S315E08009E000003E490000000000000000000000001A +S315E08009F00000000000000000000000000000000091 +S315E0800A000000000000000000000000000000000080 +S315E0800A100000000000000000000000000000000070 +S315E0800A200000000000000000000000000000000060 +S315E0800A300000000000000000000000000000000050 +S315E0800A400000000000000000000000000000000040 +S315E0800A500000000000000000000000000000000030 +S315E0800A600000000000000000000000000000000020 +S315E0800A700000000000000000000000000000000010 +S315E0800A800000000000000000000000000000000000 +S315E0800A9000000000000000000000000000000000F0 +S315E0800AA000000000000000000000000000000000E0 +S315E0800AB000000000000000000000000000000000D0 +S315E0800AC000000000000000000000000000000000C0 +S315E0800AD000000000000000000000000000000000B0 +S315E0800AE000000000000000000000000000000000A0 +S315E0800AF00000000000000000000000000000000090 +S315E0800B00000000000000000000000000000000007F +S315E0800B10000000000000000000000000000000006F +S315E0800B20000000000000000000000000000000005F +S315E0800B30000000000000000000000000000000004F +S315E0800B40000000000000000000000000000000003F +S315E0800B5000000000000000000000003E49000000A8 +S315E0800B60000000000000000000000000000000001F +S315E0800B70000000000000000000000000000000000F +S315E0800B8000000000000000000000000000000000FF +S315E0800B9000000000000000000000000000000000EF +S315E0800BA000000000000000000000000000000000DF +S315E0800BB000000000000000000000000000000000CF +S315E0800BC000000000000000000000000000000000BF +S315E0800BD000000000000000000000000000000000AF +S315E0800BE0000000000000000000000000000000009F +S315E0800BF0000000000000000000000000000000008F +S315E0800C00000000000000000000000000000000007E +S315E0800C10000000000000000000000000000000006E +S315E0800C20000000000000000000000000000000005E +S315E0800C30000000000000000000000000000000004E +S315E0800C40000000000000000000000000000000003E +S315E0800C50000000000000000000000000000000002E +S315E0800C60000000000000000000000000000000001E +S315E0800C70000000000000000000000000000000000E +S315E0800C8000000000000000000000000000000000FE +S315E0800C9000000000000000000000000000000000EE +S315E0800CA000000000000000000000000000000000DE +S315E0800CB000000000000000000000000000000000CE +S315E0800CC000000000000000000000000000000000BE +S315E0800CD0000000003E490000000000000000000027 +S315E0800CE0000000000000000000000000000000009E +S315E0800CF0000000000000000000000000000000008E +S315E0800D00000000000000000000000000000000007D +S315E0800D10000000000000000000000000000000006D +S315E0800D20000000000000000000000000000000005D +S315E0800D30000000000000000000000000000000004D +S315E0800D40000000000000000000000000000000003D +S315E0800D50000000000000000000000000000000002D +S315E0800D60000000000000000000000000000000001D +S315E0800D70000000000000000000000000000000000D +S315E0800D8000000000000000000000000000000000FD +S315E0800D9000000000000000000000000000000000ED +S315E0800DA000000000000000000000000000000000DD +S315E0800DB000000000000000000000000000000000CD +S315E0800DC000000000000000000000000000000000BD +S315E0800DD000000000000000000000000000000000AD +S315E0800DE0000000000000000000000000000000009D +S315E0800DF0000000000000000000000000000000008D +S315E0800E00000000000000000000000000000000007C +S315E0800E10000000000000000000000000000000006C +S315E0800E20000000000000000000000000000000005C +S315E0800E30000000000000000000000000000000004C +S315E0800E40000000000000000000000000003E4900B5 +S315E0800E50000000000000000000000000000000002C +S315E0800E60000000000000000000000000000000001C +S315E0800E70000000000000000000000000000000000C +S315E0800E8000000000000000000000000000000000FC +S315E0800E9000000000000000000000000000000000EC +S315E0800EA000000000000000000000000000000000DC +S315E0800EB000000000000000000000000000000000CC +S315E0800EC000000000000000000000000000000000BC +S315E0800ED000000000000000000000000000000000AC +S315E0800EE0000000000000000000000000000000009C +S315E0800EF0000000000000000000000000000000008C +S315E0800F00000000000000000000000000000000007B +S315E0800F10000000000000000000000000000000006B +S315E0800F20000000000000000000000000000000005B +S315E0800F30000000000000000000000000000000004B +S315E0800F40000000000000000000000000000000003B +S315E0800F50000000000000000000000000000000002B +S315E0800F60000000000000000000000000000000001B +S315E0800F70000000000000000000000000000000000B +S315E0800F8000000000000000000000000000000000FB +S315E0800F9000000000000000000000000000000000EB +S315E0800FA000000000000000000000000000000000DB +S315E0800FB000000000000000000000000000000000CB +S315E0800FC00000000000003E49000000000000000034 +S315E0800FD000000000000000000000000000000000AB +S315E0800FE0000000000000000000000000000000009B +S315E0800FF0000000000000000000000000000000008B +S315E0801000000000000000000000000000000000007A +S315E0801010000000000000000000000000000000006A +S315E0801020000000000000000000000000000000005A +S315E0801030000000000000000000000000000000004A +S315E0801040000000000000000000000000000000003A +S315E0801050000000000000000000000000000000002A +S315E0801060000000000000000000000000000000001A +S315E0801070000000000000000000000000000000000A +S315E080108000000000000000000000000000000000FA +S315E080109000000000000000000000000000000000EA +S315E08010A000000000000000000000000000000000DA +S315E08010B000000000000000000000000000000000CA +S315E08010C000000000000000000000000000000000BA +S315E08010D000000000000000000000000000000000AA +S315E08010E0000000000000000000000000000000009A +S315E08010F0000000000000000000000000000000008A +S315E08011000000000000000000000000000000000079 +S315E08011100000000000000000000000000000000069 +S315E08011200000000000000000000000000000000059 +S315E08011300000000000000000000000000000003E0B +S315E080114049000000000000000000000000000000F0 +S315E08011500000000000000000000000000000000029 +S315E08011600000000000000000000000000000000019 +S315E08011700000000000000000000000000000000009 +S315E080118000000000000000000000000000000000F9 +S315E080119000000000000000000000000000000000E9 +S315E08011A000000000000000000000000000000000D9 +S315E08011B000000000000000000000000000000000C9 +S315E08011C000000000000000000000000000000000B9 +S315E08011D000000000000000000000000000000000A9 +S315E08011E00000000000000000000000000000000099 +S315E08011F00000000000000000000000000000000089 +S315E08012000000000000000000000000000000000078 +S315E08012100000000000000000000000000000000068 +S315E08012200000000000000000000000000000000058 +S315E08012300000000000000000000000000000000048 +S315E08012400000000000000000000000000000000038 +S315E08012500000000000000000000000000000000028 +S315E08012600000000000000000000000000000000018 +S315E08012700000000000000000000000000000000008 +S315E080128000000000000000000000000000000000F8 +S315E080129000000000000000000000000000000000E8 +S315E08012A000000000000000000000000000000000D8 +S315E08012B000000000000000003E4900000000000041 +S315E08012C000000000000000000000000000000000B8 +S315E08012D000000000000000000000000000000000A8 +S315E08012E00000000000000000000000000000000098 +S315E08012F00000000000000000000000000000000088 +S315E08013000000000000000000000000000000000077 +S315E08013100000000000000000000000000000000067 +S315E08013200000000000000000000000000000000057 +S315E08013300000000000000000000000000000000047 +S315E08013400000000000000000000000000000000037 +S315E08013500000000000000000000000000000000027 +S315E08013600000000000000000000000000000000017 +S315E08013700000000000000000000000000000000007 +S315E080138000000000000000000000000000000000F7 +S315E080139000000000000000000000000000000000E7 +S315E08013A000000000000000000000000000000000D7 +S315E08013B000000000000000000000000000000000C7 +S315E08013C000000000000000000000000000000000B7 +S315E08013D000000000000000000000000000000000A7 +S315E08013E00000000000000000000000000000000097 +S315E08013F00000000000000000000000000000000087 +S315E08014000000000000000000000000000000000076 +S315E08014100000000000000000000000000000000066 +S315E08014200000000000000000000000000000000056 +S315E0801430003E4900000000000000000000000000BF +S315E08014400000000000000000000000000000000036 +S315E08014500000000000000000000000000000000026 +S315E08014600000000000000000000000000000000016 +S315E08014700000000000000000000000000000000006 +S315E080148000000000000000000000000000000000F6 +S315E080149000000000000000000000000000000000E6 +S315E08014A000000000000000000000000000000000D6 +S315E08014B000000000000000000000000000000000C6 +S315E08014C000000000000000000000000000000000B6 +S315E08014D000000000000000000000000000000000A6 +S315E08014E00000000000000000000000000000000096 +S315E08014F00000000000000000000000000000000086 +S315E08015000000000000000000000000000000000075 +S315E08015100000000000000000000000000000000065 +S315E08015200000000000000000000000000000000055 +S315E08015300000000000000000000000000000000045 +S315E08015400000000000000000000000000000000035 +S315E08015500000000000000000000000000000000025 +S315E08015600000000000000000000000000000000015 +S315E08015700000000000000000000000000000000005 +S315E080158000000000000000000000000000000000F5 +S315E080159000000000000000000000000000000000E5 +S315E08015A0000000000000000000003E49000000004E +S315E08015B000000000000000000000000000000000C5 +S315E08015C000000000000000000000000000000000B5 +S315E08015D000000000000000000000000000000000A5 +S315E08015E00000000000000000000000000000000095 +S315E08015F00000000000000000000000000000000085 +S315E08016000000000000000000000000000000000074 +S315E08016100000000000000000000000000000000064 +S315E08016200000000000000000000000000000000054 +S315E08016300000000000000000000000000000000044 +S315E08016400000000000000000000000000000000034 +S315E08016500000000000000000000000000000000024 +S315E08016600000000000000000000000000000000014 +S315E08016700000000000000000000000000000000004 +S315E080168000000000000000000000000000000000F4 +S315E080169000000000000000000000000000000000E4 +S315E08016A000000000000000000000000000000000D4 +S315E08016B000000000000000000000000000000000C4 +S315E08016C000000000000000000000000000000000B4 +S315E08016D000000000000000000000000000000000A4 +S315E08016E00000000000000000000000000000000094 +S315E08016F00000000000000000000000000000000084 +S315E08017000000000000000000000000000000000073 +S315E08017100000000000000000000000000000000063 +S315E08017200000003E490000000000000000000000CC +S315E08017300000000000000000000000000000000043 +S315E08017400000000000000000000000000000000033 +S315E08017500000000000000000000000000000000023 +S315E08017600000000000000000000000000000000013 +S315E08017700000000000000000000000000000000003 +S315E080178000000000000000000000000000000000F3 +S315E080179000000000000000000000000000000000E3 +S315E08017A000000000000000000000000000000000D3 +S315E08017B000000000000000000000000000000000C3 +S315E08017C000000000000000000000000000000000B3 +S315E08017D000000000000000000000000000000000A3 +S315E08017E00000000000000000000000000000000093 +S315E08017F00000000000000000000000000000000083 +S315E08018000000000000000000000000000000000072 +S315E08018100000000000000000000000000000000062 +S315E08018200000000000000000000000000000000052 +S315E08018300000000000000000000000000000000042 +S315E08018400000000000000000000000000000000032 +S315E08018500000000000000000000000000000000022 +S315E08018600000000000000000000000000000000012 +S315E08018700000000000000000000000000000000002 +S315E080188000000000000000000000000000000000F2 +S315E08018900000000000000000000000003E4900005B +S315E08018A000000000000000000000000000000000D2 +S315E08018B000000000000000000000000000000000C2 +S315E08018C000000000000000000000000000000000B2 +S315E08018D000000000000000000000000000000000A2 +S315E08018E00000000000000000000000000000000092 +S315E08018F00000000000000000000000000000000082 +S315E08019000000000000000000000000000000000071 +S315E08019100000000000000000000000000000000061 +S315E08019200000000000000000000000000000000051 +S315E08019300000000000000000000000000000000041 +S315E08019400000000000000000000000000000000031 +S315E08019500000000000000000000000000000000021 +S315E08019600000000000000000000000000000000011 +S315E08019700000000000000000000000000000000001 +S315E080198000000000000000000000000000000000F1 +S315E080199000000000000000000000000000000000E1 +S315E08019A000000000000000000000000000000000D1 +S315E08019B000000000000000000000000000000000C1 +S315E08019C000000000000000000000000000000000B1 +S315E08019D000000000000000000000000000000000A1 +S315E08019E00000000000000000000000000000000091 +S315E08019F00000000000000000000000000000000081 +S315E0801A000000000000000000000000000000000070 +S315E0801A1000000000003E49000000000000000000D9 +S315E0801A200000000000000000000000000000000050 +S315E0801A300000000000000000000000000000000040 +S315E0801A400000000000000000000000000000000030 +S315E0801A500000000000000000000000000000000020 +S315E0801A600000000000000000000000000000000010 +S315E0801A700000000000000000000000000000000000 +S315E0801A8000000000000000000000000000000000F0 +S315E0801A9000000000000000000000000000000000E0 +S315E0801AA000000000000000000000000000000000D0 +S315E0801AB000000000000000000000000000000000C0 +S315E0801AC000000000000000000000000000000000B0 +S315E0801AD000000000000000000000000000000000A0 +S315E0801AE00000000000000000000000000000000090 +S315E0801AF00000000000000000000000000000000080 +S315E0801B00000000000000000000000000000000006F +S315E0801B10000000000000000000000000000000005F +S315E0801B20000000000000000000000000000000004F +S315E0801B30000000000000000000000000000000003F +S315E0801B40000000000000000000000000000000002F +S315E0801B50000000000000000000000000000000001F +S315E0801B60000000000000000000000000000000000F +S315E0801B7000000000000000000000000000000000FF +S315E0801B8000000000000000000000000000003E4968 +S315E0801B9000000000000000000000000000000000DF +S315E0801BA000000000000000000000000000000000CF +S315E0801BB000000000000000000000000000000000BF +S315E0801BC000000000000000000000000000000000AF +S315E0801BD0000000000000000000000000000000009F +S315E0801BE0000000000000000000000000000000008F +S315E0801BF0000000000000000000000000000000007F +S315E0801C00000000000000000000000000000000006E +S315E0801C10000000000000000000000000000000005E +S315E0801C20000000000000000000000000000000004E +S315E0801C30000000000000000000000000000000003E +S315E0801C40000000000000000000000000000000002E +S315E0801C50000000000000000000000000000000001E +S315E0801C60000000000000000000000000000000000E +S315E0801C7000000000000000000000000000000000FE +S315E0801C8000000000000000000000000000000000EE +S315E0801C9000000000000000000000000000000000DE +S315E0801CA000000000000000000000000000000000CE +S315E0801CB000000000000000000000000000000000BE +S315E0801CC000000000000000000000000000000000AE +S315E0801CD0000000000000000000000000000000009E +S315E0801CE0000000000000000000000000000000008E +S315E0801CF0000000000000000000000000000000007E +S315E0801D00000000000000003E4900000000000000E6 +S315E0801D10000000000000000000000000000000005D +S315E0801D20000000000000000000000000000000004D +S315E0801D30000000000000000000000000000000003D +S315E0801D40000000000000000000000000000000002D +S315E0801D50000000000000000000000000000000001D +S315E0801D60000000000000000000000000000000000D +S315E0801D7000000000000000000000000000000000FD +S315E0801D8000000000000000000000000000000000ED +S315E0801D9000000000000000000000000000000000DD +S315E0801DA000000000000000000000000000000000CD +S315E0801DB000000000000000000000000000000000BD +S315E0801DC000000000000000000000000000000000AD +S315E0801DD0000000000000000000000000000000009D +S315E0801DE0000000000000000000000000000000008D +S315E0801DF0000000000000000000000000000000007D +S315E0801E00000000000000000000000000000000006C +S315E0801E10000000000000000000000000000000005C +S315E0801E20000000000000000000000000000000004C +S315E0801E30000000000000000000000000000000003C +S315E0801E40000000000000000000000000000000002C +S315E0801E50000000000000000000000000000000001C +S315E0801E60000000000000000000000000000000000C +S315E0801E7000000000000000000000000000000000FC +S315E0801E803E49000000000000000000000000000065 +S315E0801E9000000000000000000000000000000000DC +S315E0801EA000000000000000000000000000000000CC +S315E0801EB000000000000000000000000000000000BC +S315E0801EC000000000000000000000000000000000AC +S315E0801ED0000000000000000000000000000000009C +S315E0801EE0000000000000000000000000000000008C +S315E0801EF0000000000000000000000000000000007C +S315E0801F00000000000000000000000000000000006B +S315E0801F10000000000000000000000000000000005B +S315E0801F20000000000000000000000000000000004B +S315E0801F30000000000000000000000000000000003B +S315E0801F40000000000000000000000000000000002B +S315E0801F50000000000000000000000000000000001B +S315E0801F60000000000000000000000000000000000B +S315E0801F7000000000000000000000000000000000FB +S315E0801F8000000000000000000000000000000000EB +S315E0801F9000000000000000000000000000000000DB +S315E0801FA000000000000000000000000000000000CB +S315E0801FB000000000000000000000000000000000BB +S315E0801FC000000000000000000000000000000000AB +S315E0801FD0000000000000000000000000000000009B +S315E0801FE0000000000000000000000000000000008B +S315E0801FF00000000000000000003E490000000000F4 +S315E0802000000000000000000000000000000000006A +S315E0802010000000000000000000000000000000005A +S315E0802020000000000000000000000000000000004A +S315E0802030000000000000000000000000000000003A +S315E0802040000000000000000000000000000000002A +S315E0802050000000000000000000000000000000001A +S315E0802060000000000000000000000000000000000A +S315E080207000000000000000000000000000000000FA +S315E080208000000000000000000000000000000000EA +S315E080209000000000000000000000000000000000DA +S315E08020A000000000000000000000000000000000CA +S315E08020B000000000000000000000000000000000BA +S315E08020C000000000000000000000000000000000AA +S315E08020D0000000000000000000000000000000009A +S315E08020E0000000000000000000000000000000008A +S315E08020F0000000000000000000000000000000007A +S315E08021000000000000000000000000000000000069 +S315E08021100000000000000000000000000000000059 +S315E08021200000000000000000000000000000000049 +S315E08021300000000000000000000000000000000039 +S315E08021400000000000000000000000000000000029 +S315E08021500000000000000000000000000000000019 +S315E08021600000000000000000000000000000000009 +S315E080217000003E4900000000000000000000000072 +S315E080218000000000000000000000000000000000E9 +S315E080219000000000000000000000000000000000D9 +S315E08021A000000000000000000000000000000000C9 +S315E08021B000000000000000000000000000000000B9 +S315E08021C000000000000000000000000000000000A9 +S315E08021D00000000000000000000000000000000099 +S315E08021E00000000000000000000000000000000089 +S315E08021F00000000000000000000000000000000079 +S315E08022000000000000000000000000000000000068 +S315E08022100000000000000000000000000000000058 +S315E08022200000000000000000000000000000000048 +S315E08022300000000000000000000000000000000038 +S315E08022400000000000000000000000000000000028 +S315E08022500000000000000000000000000000000018 +S315E08022600000000000000000000000000000000008 +S315E080227000000000000000000000000000000000F8 +S315E080228000000000000000000000000000000000E8 +S315E080229000000000000000000000000000000000D8 +S315E08022A000000000000000000000000000000000C8 +S315E08022B000000000000000000000000000000000B8 +S315E08022C000000000000000000000000000000000A8 +S315E08022D00000000000000000000000000000000098 +S315E08022E000000000000000000000003E4900000001 +S315E08022F00000000000000000000000000000000078 +S315E08023000000000000000000000000000000000067 +S315E08023100000000000000000000000000000000057 +S315E08023200000000000000000000000000000000047 +S315E08023300000000000000000000000000000000037 +S315E08023400000000000000000000000000000000027 +S315E08023500000000000000000000000000000000017 +S315E08023600000000000000000000000000000000007 +S315E080237000000000000000000000000000000000F7 +S315E080238000000000000000000000000000000000E7 +S315E080239000000000000000000000000000000000D7 +S315E08023A000000000000000000000000000000000C7 +S315E08023B000000000000000000000000000000000B7 +S315E08023C000000000000000000000000000000000A7 +S315E08023D00000000000000000000000000000000097 +S315E08023E00000000000000000000000000000000087 +S315E08023F00000000000000000000000000000000077 +S315E08024000000000000000000000000000000000066 +S315E08024100000000000000000000000000000000056 +S315E08024200000000000000000000000000000000046 +S315E08024300000000000000000000000000000000036 +S315E08024400000000000000000000000000000000026 +S315E08024500000000000000000000000000000000016 +S315E0802460000000003E49000000000000000000007F +S315E080247000000000000000000000000000000000F6 +S315E080248000000000000000000000000000000000E6 +S315E080249000000000000000000000000000000000D6 +S315E08024A000000000000000000000000000000000C6 +S315E08024B000000000000000000000000000000000B6 +S315E08024C000000000000000000000000000000000A6 +S315E08024D00000000000000000000000000000000096 +S315E08024E00000000000000000000000000000000086 +S315E08024F00000000000000000000000000000000076 +S315E08025000000000000000000000000000000000065 +S315E08025100000000000000000000000000000000055 +S315E08025200000000000000000000000000000000045 +S315E08025300000000000000000000000000000000035 +S315E08025400000000000000000000000000000000025 +S315E08025500000000000000000000000000000000015 +S315E08025600000000000000000000000000000000005 +S315E080257000000000000000000000000000000000F5 +S315E080258000000000000000000000000000000000E5 +S315E080259000000000000000000000000000000000D5 +S315E08025A000000000000000000000000000000000C5 +S315E08025B000000000000000000000000000000000B5 +S315E08025C000000000000000000000000000000000A5 +S315E08025D0000000000000000000000000003E49000E +S315E08025E00000000000000000000000000000000085 +S315E08025F00000000000000000000000000000000075 +S315E08026000000000000000000000000000000000064 +S315E08026100000000000000000000000000000000054 +S315E08026200000000000000000000000000000000044 +S315E08026300000000000000000000000000000000034 +S315E08026400000000000000000000000000000000024 +S315E08026500000000000000000000000000000000014 +S315E08026600000000000000000000000000000000004 +S315E080267000000000000000000000000000000000F4 +S315E080268000000000000000000000000000000000E4 +S315E080269000000000000000000000000000000000D4 +S315E08026A000000000000000000000000000000000C4 +S315E08026B000000000000000000000000000000000B4 +S315E08026C000000000000000000000000000000000A4 +S315E08026D00000000000000000000000000000000094 +S315E08026E00000000000000000000000000000000084 +S315E08026F00000000000000000000000000000000074 +S315E08027000000000000000000000000000000000063 +S315E08027100000000000000000000000000000000053 +S315E08027200000000000000000000000000000000043 +S315E08027300000000000000000000000000000000033 +S315E08027400000000000000000000000000000000023 +S315E08027500000000000003E4900000000000000008C +S315E08027600000000000000000000000000000000003 +S315E080277000000000000000000000000000000000F3 +S315E080278000000000000000000000000000000000E3 +S315E080279000000000000000000000000000000000D3 +S315E08027A000000000000000000000000000000000C3 +S315E08027B000000000000000000000000000000000B3 +S315E08027C000000000000000000000000000000000A3 +S315E08027D00000000000000000000000000000000093 +S315E08027E00000000000000000000000000000000083 +S315E08027F00000000000000000000000000000000073 +S315E08028000000000000000000000000000000000062 +S315E08028100000000000000000000000000000000052 +S315E08028200000000000000000000000000000000042 +S315E08028300000000000000000000000000000000032 +S315E08028400000000000000000000000000000000022 +S315E08028500000000000000000000000000000000012 +S315E08028600000000000000000000000000000000002 +S315E080287000000000000000000000000000000000F2 +S315E080288000000000000000000000000000000000E2 +S315E080289000000000000000000000000000000000D2 +S315E08028A000000000000000000000000000000000C2 +S315E08028B000000000000000000000000000000000B2 +S315E08028C00000000000000000000000000000003E64 +S315E08028D04900000000000000000000000000000049 +S315E08028E00000000000000000000000000000000082 +S315E08028F00000000000000000000000000000000072 +S315E08029000000000000000000000000000000000061 +S315E08029100000000000000000000000000000000051 +S315E08029200000000000000000000000000000000041 +S315E08029300000000000000000000000000000000031 +S315E08029400000000000000000000000000000000021 +S315E08029500000000000000000000000000000000011 +S315E08029600000000000000000000000000000000001 +S315E080297000000000000000000000000000000000F1 +S315E080298000000000000000000000000000000000E1 +S315E080299000000000000000000000000000000000D1 +S315E08029A000000000000000000000000000000000C1 +S315E08029B000000000000000000000000000000000B1 +S315E08029C000000000000000000000000000000000A1 +S315E08029D00000000000000000000000000000000091 +S315E08029E00000000000000000000000000000000081 +S315E08029F00000000000000000000000000000000071 +S315E0802A000000000000000000000000000000000060 +S315E0802A100000000000000000000000000000000050 +S315E0802A200000000000000000000000000000000040 +S315E0802A300000000000000000000000000000000030 +S315E0802A4000000000000000003E4900000000000099 +S315E0802A500000000000000000000000000000000010 +S315E0802A600000000000000000000000000000000000 +S315E0802A7000000000000000000000000000000000F0 +S315E0802A8000000000000000000000000000000000E0 +S315E0802A9000000000000000000000000000000000D0 +S315E0802AA000000000000000000000000000000000C0 +S315E0802AB000000000000000000000000000000000B0 +S315E0802AC000000000000000000000000000000000A0 +S315E0802AD00000000000000000000000000000000090 +S315E0802AE00000000000000000000000000000000080 +S315E0802AF00000000000000000000000000000000070 +S315E0802B00000000000000000000000000000000005F +S315E0802B10000000000000000000000000000000004F +S315E0802B20000000000000000000000000000000003F +S315E0802B30000000000000000000000000000000002F +S315E0802B40000000000000000000000000000000001F +S315E0802B50000000000000000000000000000000000F +S315E0802B6000000000000000000000000000000000FF +S315E0802B7000000000000000000000000000000000EF +S315E0802B8000000000000000000000000000000000DF +S315E0802B9000000000000000000000000000000000CF +S315E0802BA000000000000000000000000000000000BF +S315E0802BB000000000000000000000000000000000AF +S315E0802BC0003E490000000000000000000000000018 +S315E0802BD0000000000000000000000000000000008F +S315E0802BE0000000000000000000000000000000007F +S315E0802BF0000000000000000000000000000000006F +S315E0802C00000000000000000000000000000000005E +S315E0802C10000000000000000000000000000000004E +S315E0802C20000000000000000000000000000000003E +S315E0802C30000000000000000000000000000000002E +S315E0802C40000000000000000000000000000000001E +S315E0802C50000000000000000000000000000000000E +S315E0802C6000000000000000000000000000000000FE +S315E0802C7000000000000000000000000000000000EE +S315E0802C8000000000000000000000000000000000DE +S315E0802C9000000000000000000000000000000000CE +S315E0802CA000000000000000000000000000000000BE +S315E0802CB000000000000000000000000000000000AE +S315E0802CC0000000000000000000000000000000009E +S315E0802CD0000000000000000000000000000000008E +S315E0802CE0000000000000000000000000000000007E +S315E0802CF0000000000000000000000000000000006E +S315E0802D00000000000000000000000000000000005D +S315E0802D10000000000000000000000000000000004D +S315E0802D20000000000000000000000000000000003D +S315E0802D30000000000000000000003E4900000000A6 +S315E0802D40000000000000000000000000000000001D +S315E0802D50000000000000000000000000000000000D +S315E0802D6000000000000000000000000000000000FD +S315E0802D7000000000000000000000000000000000ED +S315E0802D8000000000000000000000000000000000DD +S315E0802D9000000000000000000000000000000000CD +S315E0802DA000000000000000000000000000000000BD +S315E0802DB000000000000000000000000000000000AD +S315E0802DC0000000000000000000000000000000009D +S315E0802DD0000000000000000000000000000000008D +S315E0802DE0000000000000000000000000000000007D +S315E0802DF0000000000000000000000000000000006D +S315E0802E00000000000000000000000000000000005C +S315E0802E10000000000000000000000000000000004C +S315E0802E20000000000000000000000000000000003C +S315E0802E30000000000000000000000000000000002C +S315E0802E40000000000000000000000000000000001C +S315E0802E50000000000000000000000000000000000C +S315E0802E6000000000000000000000000000000000FC +S315E0802E7000000000000000000000000000000000EC +S315E0802E8000000000000000000000000000000000DC +S315E0802E9000000000000000000000000000000000CC +S315E0802EA000000000000000000000000000000000BC +S315E0802EB00000003E49000000000000000000000025 +S315E0802EC0000000000000000000000000000000009C +S315E0802ED0000000000000000000000000000000008C +S315E0802EE0000000000000000000000000000000007C +S315E0802EF0000000000000000000000000000000006C +S315E0802F00000000000000000000000000000000005B +S315E0802F10000000000000000000000000000000004B +S315E0802F20000000000000000000000000000000003B +S315E0802F30000000000000000000000000000000002B +S315E0802F40000000000000000000000000000000001B +S315E0802F50000000000000000000000000000000000B +S315E0802F6000000000000000000000000000000000FB +S315E0802F7000000000000000000000000000000000EB +S315E0802F8000000000000000000000000000000000DB +S315E0802F9000000000000000000000000000000000CB +S315E0802FA000000000000000000000000000000000BB +S315E0802FB000000000000000000000000000000000AB +S315E0802FC0000000000000000000000000000000009B +S315E0802FD0000000000000000000000000000000008B +S315E0802FE0000000000000000000000000000000007B +S315E0802FF0000000000000000000000000000000006B +S315E0803000000000000000000000000000000000005A +S315E0803010000000000000000000000000000000004A +S315E08030200000000000000000000000003E490000B3 +S315E0803030000000000000000000000000000000002A +S315E0803040000000000000000000000000000000001A +S315E0803050000000000000000000000000000000000A +S315E080306000000000000000000000000000000000FA +S315E080307000000000000000000000000000000000EA +S315E080308000000000000000000000000000000000DA +S315E080309000000000000000000000000000000000CA +S315E08030A000000000000000000000000000000000BA +S315E08030B000000000000000000000000000000000AA +S315E08030C0000000000000000000000000000000009A +S315E08030D0000000000000000000000000000000008A +S315E08030E0000000000000000000000000000000007A +S315E08030F0000000000000000000000000000000006A +S315E08031000000000000000000000000000000000059 +S315E08031100000000000000000000000000000000049 +S315E08031200000000000000000000000000000000039 +S315E08031300000000000000000000000000000000029 +S315E08031400000000000000000000000000000000019 +S315E08031500000000000000000000000000000000009 +S315E080316000000000000000000000000000000000F9 +S315E080317000000000000000000000000000000000E9 +S315E080318000000000000000000000000000000000D9 +S315E080319000000000000000000000000000000000C9 +S315E08031A000000000003E4900000000000000000032 +S315E08031B000000000000000000000000000000000A9 +S315E08031C00000000000000000000000000000000099 +S315E08031D00000000000000000000000000000000089 +S315E08031E00000000000000000000000000000000079 +S315E08031F00000000000000000000000000000000069 +S315E08032000000000000000000000000000000000058 +S315E08032100000000000000000000000000000000048 +S315E08032200000000000000000000000000000000038 +S315E08032300000000000000000000000000000000028 +S315E08032400000000000000000000000000000000018 +S315E08032500000000000000000000000000000000008 +S315E080326000000000000000000000000000000000F8 +S315E080327000000000000000000000000000000000E8 +S315E080328000000000000000000000000000000000D8 +S315E080329000000000000000000000000000000000C8 +S315E08032A000000000000000000000000000000000B8 +S315E08032B000000000000000000000000000000000A8 +S315E08032C00000000000000000000000000000000098 +S315E08032D00000000000000000000000000000000088 +S315E08032E00000000000000000000000000000000078 +S315E08032F00000000000000000000000000000000068 +S315E08033000000000000000000000000000000000057 +S315E080331000000000000000000000000000003E49C0 +S315E08033200000000000000000000000000000000037 +S315E08033300000000000000000000000000000000027 +S315E08033400000000000000000000000000000000017 +S315E08033500000000000000000000000000000000007 +S315E080336000000000000000000000000000000000F7 +S315E080337000000000000000000000000000000000E7 +S315E080338000000000000000000000000000000000D7 +S315E080339000000000000000000000000000000000C7 +S315E08033A000000000000000000000000000000000B7 +S315E08033B000000000000000000000000000000000A7 +S315E08033C00000000000000000000000000000000097 +S315E08033D00000000000000000000000000000000087 +S315E08033E00000000000000000000000000000000077 +S315E08033F00000000000000000000000000000000067 +S315E08034000000000000000000000000000000000056 +S315E08034100000000000000000000000000000000046 +S315E08034200000000000000000000000000000000036 +S315E08034300000000000000000000000000000000026 +S315E08034400000000000000000000000000000000016 +S315E08034500000000000000000000000000000000006 +S315E080346000000000000000000000000000000000F6 +S315E080347000000000000000000000000000000000E6 +S315E080348000000000000000000000000000000000D6 +S315E0803490000000000000003E49000000000000003F +S315E08034A000000000000000000000000000000000B6 +S315E08034B000000000000000000000000000000000A6 +S315E08034C00000000000000000000000000000000096 +S315E08034D00000000000000000000000000000000086 +S315E08034E00000000000000000000000000000000076 +S315E08034F00000000000000000000000000000000066 +S315E08035000000000000000000000000000000000055 +S315E08035100000000000000000000000000000000045 +S315E08035200000000000000000000000000000000035 +S315E08035300000000000000000000000000000000025 +S315E08035400000000000000000000000000000000015 +S315E08035500000000000000000000000000000000005 +S315E080356000000000000000000000000000000000F5 +S315E080357000000000000000000000000000000000E5 +S315E080358000000000000000000000000000000000D5 +S315E080359000000000000000000000000000000000C5 +S315E08035A000000000000000000000000000000000B5 +S315E08035B000000000000000000000000000000000A5 +S315E08035C00000000000000000000000000000000095 +S315E08035D00000000000000000000000000000000085 +S315E08035E00000000000000000000000000000000075 +S315E08035F00000000000000000000000000000000065 +S315E08036000000000000000000000000000000000054 +S315E08036103E490000000000000000000000000000BD +S315E08036200000000000000000000000000000000034 +S315E08036300000000000000000000000000000000024 +S315E08036400000000000000000000000000000000014 +S315E08036500000000000000000000000000000000004 +S315E080366000000000000000000000000000000000F4 +S315E080367000000000000000000000000000000000E4 +S315E080368000000000000000000000000000000000D4 +S315E080369000000000000000000000000000000000C4 +S315E08036A000000000000000000000000000000000B4 +S315E08036B000000000000000000000000000000000A4 +S315E08036C00000000000000000000000000000000094 +S315E08036D00000000000000000000000000000000084 +S315E08036E00000000000000000000000000000000074 +S315E08036F00000000000000000000000000000000064 +S315E08037000000000000000000000000000000000053 +S315E08037100000000000000000000000000000000043 +S315E08037200000000000000000000000000000000033 +S315E08037300000000000000000000000000000000023 +S315E08037400000000000000000000000000000000013 +S315E08037500000000000000000000000000000000003 +S315E080376000000000000000000000000000000000F3 +S315E080377000000000000000000000000000000000E3 +S315E08037800000000000000000003E4900000000004C +S315E080379000000000000000000000000000000000C3 +S315E08037A000000000000000000000000000000000B3 +S315E08037B000000000000000000000000000000000A3 +S315E08037C00000000000000000000000000000000093 +S315E08037D00000000000000000000000000000000083 +S315E08037E00000000000000000000000000000000073 +S315E08037F00000000000000000000000000000000063 +S315E08038000000000000000000000000000000000052 +S315E08038100000000000000000000000000000000042 +S315E08038200000000000000000000000000000000032 +S315E08038300000000000000000000000000000000022 +S315E08038400000000000000000000000000000000012 +S315E08038500000000000000000000000000000000002 +S315E080386000000000000000000000000000000000F2 +S315E080387000000000000000000000000000000000E2 +S315E080388000000000000000000000000000000000D2 +S315E080389000000000000000000000000000000000C2 +S315E08038A000000000000000000000000000000000B2 +S315E08038B000000000000000000000000000000000A2 +S315E08038C00000000000000000000000000000000092 +S315E08038D00000000000000000000000000000000082 +S315E08038E00000000000000000000000000000000072 +S315E08038F00000000000000000000000000000000062 +S315E080390000003E49000000000000000000000000CA +S315E08039100000000000000000000000000000000041 +S315E08039200000000000000000000000000000000031 +S315E08039300000000000000000000000000000000021 +S315E08039400000000000000000000000000000000011 +S315E08039500000000000000000000000000000000001 +S315E080396000000000000000000000000000000000F1 +S315E080397000000000000000000000000000000000E1 +S315E080398000000000000000000000000000000000D1 +S315E080399000000000000000000000000000000000C1 +S315E08039A000000000000000000000000000000000B1 +S315E08039B000000000000000000000000000000000A1 +S315E08039C00000000000000000000000000000000091 +S315E08039D00000000000000000000000000000000081 +S315E08039E00000000000000000000000000000000071 +S315E08039F00000000000000000000000000000000061 +S315E0803A000000000000000000000000000000000050 +S315E0803A100000000000000000000000000000000040 +S315E0803A200000000000000000000000000000000030 +S315E0803A300000000000000000000000000000000020 +S315E0803A400000000000000000000000000000000010 +S315E0803A500000000000000000000000000000000000 +S315E0803A6000000000000000000000000000000000F0 +S315E0803A7000000000000000000000003E4900000059 +S315E0803A8000000000000000000000000000000000D0 +S315E0803A9000000000000000000000000000000000C0 +S315E0803AA000000000000000000000000000000000B0 +S315E0803AB000000000000000000000000000000000A0 +S315E0803AC00000000000000000000000000000000090 +S315E0803AD00000000000000000000000000000000080 +S315E0803AE00000000000000000000000000000000070 +S315E0803AF00000000000000000000000000000000060 +S315E0803B00000000000000000000000000000000004F +S315E0803B10000000000000000000000000000000003F +S315E0803B20000000000000000000000000000000002F +S315E0803B30000000000000000000000000000000001F +S315E0803B40000000000000000000000000000000000F +S315E0803B5000000000000000000000000000000000FF +S315E0803B6000000000000000000000000000000000EF +S315E0803B7000000000000000000000000000000000DF +S315E0803B8000000000000000000000000000000000CF +S315E0803B9000000000000000000000000000000000BF +S315E0803BA000000000000000000000000000000000AF +S315E0803BB0000000000000000000000000000000009F +S315E0803BC0000000000000000000000000000000008F +S315E0803BD0000000000000000000000000000000007F +S315E0803BE0000000000000000000000000000000006F +S315E0803BF0000000003E4900000000000000000000D8 +S315E0803C00000000000000000000000000000000004E +S315E0803C10000000000000000000000000000000003E +S315E0803C20000000000000000000000000000000002E +S315E0803C30000000000000000000000000000000001E +S315E0803C40000000000000000000000000000000000E +S315E0803C5000000000000000000000000000000000FE +S315E0803C6000000000000000000000000000000000EE +S315E0803C7000000000000000000000000000000000DE +S315E0803C8000000000000000000000000000000000CE +S315E0803C9000000000000000000000000000000000BE +S315E0803CA000000000000000000000000000000000AE +S315E0803CB0000000000000000000000000000000009E +S315E0803CC0000000000000000000000000000000008E +S315E0803CD0000000000000000000000000000000007E +S315E0803CE0000000000000000000000000000000006E +S315E0803CF0000000000000000000000000000000005E +S315E0803D00000000000000000000000000000000004D +S315E0803D10000000000000000000000000000000003D +S315E0803D20000000000000000000000000000000002D +S315E0803D30000000000000000000000000000000001D +S315E0803D40000000000000000000000000000000000D +S315E0803D5000000000000000000000000000000000FD +S315E0803D60000000000000000000000000003E490066 +S315E0803D7000000000000000000000000000000000DD +S315E0803D8000000000000000000000000000000000CD +S315E0803D9000000000000000000000000000000000BD +S315E0803DA000000000000000000000000000000000AD +S315E0803DB0000000000000000000000000000000009D +S315E0803DC0000000000000000000000000000000008D +S315E0803DD0000000000000000000000000000000007D +S315E0803DE0000000000000000000000000000000006D +S315E0803DF0000000000000000000000000000000005D +S315E0803E00000000000000000000000000000000004C +S315E0803E10000000000000000000000000000000003C +S315E0803E20000000000000000000000000000000002C +S315E0803E30000000000000000000000000000000001C +S315E0803E40000000000000000000000000000000000C +S315E0803E5000000000000000000000000000000000FC +S315E0803E6000000000000000000000000000000000EC +S315E0803E7000000000000000000000000000000000DC +S315E0803E8000000000000000000000000000000000CC +S315E0803E9000000000000000000000000000000000BC +S315E0803EA000000000000000000000000000000000AC +S315E0803EB0000000000000000000000000000000009C +S315E0803EC0000000000000000000000000000000008C +S315E0803ED0000000000000000000000000000000007C +S315E0803EE00000000000003E490000000000000000E5 +S315E0803EF0000000000000000000000000000000005C +S315E0803F00000000000000000000000000000000004B +S315E0803F10000000000000000000000000000000003B +S315E0803F20000000000000000000000000000000002B +S315E0803F30000000000000000000000000000000001B +S315E0803F40000000000000000000000000000000000B +S315E0803F5000000000000000000000000000000000FB +S315E0803F6000000000000000000000000000000000EB +S315E0803F7000000000000000000000000000000000DB +S315E0803F8000000000000000000000000000000000CB +S315E0803F9000000000000000000000000000000000BB +S315E0803FA000000000000000000000000000000000AB +S315E0803FB0000000000000000000000000000000009B +S315E0803FC0000000000000000000000000000000008B +S315E0803FD0000000000000000000000000000000007B +S315E0803FE0000000000000000000000000000000006B +S315E0803FF0000000000000000000000000000000005B +S315E0804000000000000000000000000000000000004A +S315E0804010000000000000000000000000000000003A +S315E0804020000000000000000000000000000000002A +S315E0804030000000000000000000000000000000001A +S315E0804040000000000000000000000000000000000A +S315E08040500000000000000000000000000000003EBC +S315E080406049000000000000000000000000000000A1 +S315E080407000000000000000000000000000000000DA +S315E080408000000000000000000000000000000000CA +S315E080409000000000000000000000000000000000BA +S315E08040A000000000000000000000000000000000AA +S315E08040B0000000000000000000000000000000009A +S315E08040C0000000000000000000000000000000008A +S315E08040D0000000000000000000000000000000007A +S315E08040E0000000000000000000000000000000006A +S315E08040F0000000000000000000000000000000005A +S315E08041000000000000000000000000000000000049 +S315E08041100000000000000000000000000000000039 +S315E08041200000000000000000000000000000000029 +S315E08041300000000000000000000000000000000019 +S315E08041400000000000000000000000000000000009 +S315E080415000000000000000000000000000000000F9 +S315E080416000000000000000000000000000000000E9 +S315E080417000000000000000000000000000000000D9 +S315E080418000000000000000000000000000000000C9 +S315E080419000000000000000000000000000000000B9 +S315E08041A000000000000000000000000000000000A9 +S315E08041B00000000000000000000000000000000099 +S315E08041C00000000000000000000000000000000089 +S315E08041D000000000000000003E49000000000000F2 +S315E08041E00000000000000000000000000000000069 +S315E08041F00000000000000000000000000000000059 +S315E08042000000000000000000000000000000000048 +S315E08042100000000000000000000000000000000038 +S315E08042200000000000000000000000000000000028 +S315E08042300000000000000000000000000000000018 +S315E08042400000000000000000000000000000000008 +S315E080425000000000000000000000000000000000F8 +S315E080426000000000000000000000000000000000E8 +S315E080427000000000000000000000000000000000D8 +S315E080428000000000000000000000000000000000C8 +S315E080429000000000000000000000000000000000B8 +S315E08042A000000000000000000000000000000000A8 +S315E08042B00000000000000000000000000000000098 +S315E08042C00000000000000000000000000000000088 +S315E08042D00000000000000000000000000000000078 +S315E08042E00000000000000000000000000000000068 +S315E08042F00000000000000000000000000000000058 +S315E08043000000000000000000000000000000000047 +S315E08043100000000000000000000000000000000037 +S315E08043200000000000000000000000000000000027 +S315E08043300000000000000000000000000000000017 +S315E08043400000000000000000000000000000000007 +S315E0804350003E490000000000000000000000000070 +S315E080436000000000000000000000000000000000E7 +S315E080437000000000000000000000000000000000D7 +S315E080438000000000000000000000000000000000C7 +S315E080439000000000000000000000000000000000B7 +S315E08043A000000000000000000000000000000000A7 +S315E08043B00000000000000000000000000000000097 +S315E08043C00000000000000000000000000000000087 +S315E08043D00000000000000000000000000000000077 +S315E08043E00000000000000000000000000000000067 +S315E08043F00000000000000000000000000000000057 +S315E08044000000000000000000000000000000000046 +S315E08044100000000000000000000000000000000036 +S315E08044200000000000000000000000000000000026 +S315E08044300000000000000000000000000000000016 +S315E08044400000000000000000000000000000000006 +S315E080445000000000000000000000000000000000F6 +S315E080446000000000000000000000000000000000E6 +S315E080447000000000000000000000000000000000D6 +S315E080448000000000000000000000000000000000C6 +S315E080449000000000000000000000000000000000B6 +S315E08044A000000000000000000000000000000000A6 +S315E08044B00000000000000000000000000000000096 +S315E08044C0000000000000000000003E4900000000FF +S315E08044D00000000000000000000000000000000076 +S315E08044E00000000000000000000000000000000066 +S315E08044F00000000000000000000000000000000056 +S315E08045000000000000000000000000000000000045 +S315E08045100000000000000000000000000000000035 +S315E08045200000000000000000000000000000000025 +S315E08045300000000000000000000000000000000015 +S315E08045400000000000000000000000000000000005 +S315E080455000000000000000000000000000000000F5 +S315E080456000000000000000000000000000000000E5 +S315E080457000000000000000000000000000000000D5 +S315E080458000000000000000000000000000000000C5 +S315E080459000000000000000000000000000000000B5 +S315E08045A000000000000000000000000000000000A5 +S315E08045B00000000000000000000000000000000095 +S315E08045C00000000000000000000000000000000085 +S315E08045D00000000000000000000000000000000075 +S315E08045E00000000000000000000000000000000065 +S315E08045F00000000000000000000000000000000055 +S315E08046000000000000000000000000000000000044 +S315E08046100000000000000000000000000000000034 +S315E08046200000000000000000000000000000000024 +S315E08046300000000000000000000000000000000014 +S315E08046400000003E4900000000000000000000007D +S315E080465000000000000000000000000000000000F4 +S315E080466000000000000000000000000000000000E4 +S315E080467000000000000000000000000000000000D4 +S315E080468000000000000000000000000000000000C4 +S315E080469000000000000000000000000000000000B4 +S315E08046A000000000000000000000000000000000A4 +S315E08046B00000000000000000000000000000000094 +S315E08046C00000000000000000000000000000000084 +S315E08046D00000000000000000000000000000000074 +S315E08046E00000000000000000000000000000000064 +S315E08046F00000000000000000000000000000000054 +S315E08047000000000000000000000000000000000043 +S315E08047100000000000000000000000000000000033 +S315E08047200000000000000000000000000000000023 +S315E08047300000000000000000000000000000000013 +S315E08047400000000000000000000000000000000003 +S315E080475000000000000000000000000000000000F3 +S315E080476000000000000000000000000000000000E3 +S315E080477000000000000000000000000000000000D3 +S315E080478000000000000000000000000000000000C3 +S315E080479000000000000000000000000000000000B3 +S315E08047A000000000000000000000000000000000A3 +S315E08047B00000000000000000000000003E4900000C +S315E08047C00000000000000000000000000000000083 +S315E08047D00000000000000000000000000000000073 +S315E08047E00000000000000000000000000000000063 +S315E08047F00000000000000000000000000000000053 +S315E08048000000000000000000000000000000000042 +S315E08048100000000000000000000000000000000032 +S315E08048200000000000000000000000000000000022 +S315E08048300000000000000000000000000000000012 +S315E08048400000000000000000000000000000000002 +S315E080485000000000000000000000000000000000F2 +S315E080486000000000000000000000000000000000E2 +S315E080487000000000000000000000000000000000D2 +S315E080488000000000000000000000000000000000C2 +S315E080489000000000000000000000000000000000B2 +S315E08048A000000000000000000000000000000000A2 +S315E08048B00000000000000000000000000000000092 +S315E08048C00000000000000000000000000000000082 +S315E08048D00000000000000000000000000000000072 +S315E08048E00000000000000000000000000000000062 +S315E08048F00000000000000000000000000000000052 +S315E08049000000000000000000000000000000000041 +S315E08049100000000000000000000000000000000031 +S315E08049200000000000000000000000000000000021 +S315E080493000000000003E490000000000000000008A +S315E08049400000000000000000000000000000000001 +S315E080495000000000000000000000000000000000F1 +S315E080496000000000000000000000000000000000E1 +S315E080497000000000000000000000000000000000D1 +S315E080498000000000000000000000000000000000C1 +S315E080499000000000000000000000000000000000B1 +S315E08049A000000000000000000000000000000000A1 +S315E08049B00000000000000000000000000000000091 +S315E08049C00000000000000000000000000000000081 +S315E08049D00000000000000000000000000000000071 +S315E08049E00000000000000000000000000000000061 +S315E08049F00000000000000000000000000000000051 +S315E0804A000000000000000000000000000000000040 +S315E0804A100000000000000000000000000000000030 +S315E0804A200000000000000000000000000000000020 +S315E0804A300000000000000000000000000000000010 +S315E0804A400000000000000000000000000000000000 +S315E0804A5000000000000000000000000000000000F0 +S315E0804A6000000000000000000000000000000000E0 +S315E0804A7000000000000000000000000000000000D0 +S315E0804A8000000000000000000000000000000000C0 +S315E0804A9000000000000000000000000000000000B0 +S315E0804AA000000000000000000000000000003E4919 +S315E0804AB00000000000000000000000000000000090 +S315E0804AC00000000000000000000000000000000080 +S315E0804AD00000000000000000000000000000000070 +S315E0804AE00000000000000000000000000000000060 +S315E0804AF00000000000000000000000000000000050 +S315E0804B00000000000000000000000000000000003F +S315E0804B10000000000000000000000000000000002F +S315E0804B20000000000000000000000000000000001F +S315E0804B30000000000000000000000000000000000F +S315E0804B4000000000000000000000000000000000FF +S315E0804B5000000000000000000000000000000000EF +S315E0804B6000000000000000000000000000000000DF +S315E0804B7000000000000000000000000000000000CF +S315E0804B8000000000000000000000000000000000BF +S315E0804B9000000000000000000000000000000000AF +S315E0804BA0000000000000000000000000000000009F +S315E0804BB0000000000000000000000000000000008F +S315E0804BC0000000000000000000000000000000007F +S315E0804BD0000000000000000000000000000000006F +S315E0804BE0000000000000000000000000000000005F +S315E0804BF0000000000000000000000000000000004F +S315E0804C00000000000000000000000000000000003E +S315E0804C10000000000000000000000000000000002E +S315E0804C20000000000000003E490000000000000097 +S315E0804C30000000000000000000000000000000000E +S315E0804C4000000000000000000000000000000000FE +S315E0804C5000000000000000000000000000000000EE +S315E0804C6000000000000000000000000000000000DE +S315E0804C7000000000000000000000000000000000CE +S315E0804C8000000000000000000000000000000000BE +S315E0804C9000000000000000000000000000000000AE +S315E0804CA0000000000000000000000000000000009E +S315E0804CB0000000000000000000000000000000008E +S315E0804CC0000000000000000000000000000000007E +S315E0804CD0000000000000000000000000000000006E +S315E0804CE0000000000000000000000000000000005E +S315E0804CF0000000000000000000000000000000004E +S315E0804D00000000000000000000000000000000003D +S315E0804D10000000000000000000000000000000002D +S315E0804D20000000000000000000000000000000001D +S315E0804D30000000000000000000000000000000000D +S315E0804D4000000000000000000000000000000000FD +S315E0804D5000000000000000000000000000000000ED +S315E0804D6000000000000000000000000000000000DD +S315E0804D7000000000000000000000000000000000CD +S315E0804D8000000000000000000000000000000000BD +S315E0804D9000000000000000000000000000000000AD +S315E0804DA03E49000000000000000000000000000016 +S315E0804DB0000000000000000000000000000000008D +S315E0804DC0000000000000000000000000000000007D +S315E0804DD0000000000000000000000000000000006D +S315E0804DE0000000000000000000000000000000005D +S315E0804DF0000000000000000000000000000000004D +S315E0804E00000000000000000000000000000000003C +S315E0804E10000000000000000000000000000000002C +S315E0804E20000000000000000000000000000000001C +S315E0804E30000000000000000000000000000000000C +S315E0804E4000000000000000000000000000000000FC +S315E0804E5000000000000000000000000000000000EC +S315E0804E6000000000000000000000000000000000DC +S315E0804E7000000000000000000000000000000000CC +S315E0804E8000000000000000000000000000000000BC +S315E0804E9000000000000000000000000000000000AC +S315E0804EA0000000000000000000000000000000009C +S315E0804EB0000000000000000000000000000000008C +S315E0804EC0000000000000000000000000000000007C +S315E0804ED0000000000000000000000000000000006C +S315E0804EE0000000000000000000000000000000005C +S315E0804EF0000000000000000000000000000000004C +S315E0804F00000000000000000000000000000000003B +S315E0804F100000000000000000003E490000000000A4 +S315E0804F20000000000000000000000000000000001B +S315E0804F30000000000000000000000000000000000B +S315E0804F4000000000000000000000000000000000FB +S315E0804F5000000000000000000000000000000000EB +S315E0804F6000000000000000000000000000000000DB +S315E0804F7000000000000000000000000000000000CB +S315E0804F8000000000000000000000000000000000BB +S315E0804F9000000000000000000000000000000000AB +S315E0804FA0000000000000000000000000000000009B +S315E0804FB0000000000000000000000000000000008B +S315E0804FC0000000000000000000000000000000007B +S315E0804FD0000000000000000000000000000000006B +S315E0804FE0000000000000000000000000000000005B +S315E0804FF0000000000000000000000000000000004B +S315E0805000000000000000000000000000000000003A +S315E0805010000000000000000000000000000000002A +S315E0805020000000000000000000000000000000001A +S315E0805030000000000000000000000000000000000A +S315E080504000000000000000000000000000000000FA +S315E080505000000000000000000000000000000000EA +S315E080506000000000000000000000000000000000DA +S315E080507000000000000000000000000000000000CA +S315E080508000000000000000000000000000000000BA +S315E080509000003E4900000000000000000000000023 +S315E08050A0000000000000000000000000000000009A +S315E08050B0000000000000000000000000000000008A +S315E08050C0000000000000000000000000000000007A +S315E08050D0000000000000000000000000000000006A +S315E08050E0000000000000000000000000000000005A +S315E08050F0000000000000000000000000000000004A +S315E08051000000000000000000000000000000000039 +S315E08051100000000000000000000000000000000029 +S315E08051200000000000000000000000000000000019 +S315E08051300000000000000000000000000000000009 +S315E080514000000000000000000000000000000000F9 +S315E080515000000000000000000000000000000000E9 +S315E080516000000000000000000000000000000000D9 +S315E080517000000000000000000000000000000000C9 +S315E080518000000000000000000000000000000000B9 +S315E080519000000000000000000000000000000000A9 +S315E08051A00000000000000000000000000000000099 +S315E08051B00000000000000000000000000000000089 +S315E08051C00000000000000000000000000000000079 +S315E08051D00000000000000000000000000000000069 +S315E08051E00000000000000000000000000000000059 +S315E08051F00000000000000000000000000000000049 +S315E080520000000000000000000000003E49000000B1 +S315E08052100000000000000000000000000000000028 +S315E08052200000000000000000000000000000000018 +S315E08052300000000000000000000000000000000008 +S315E080524000000000000000000000000000000000F8 +S315E080525000000000000000000000000000000000E8 +S315E080526000000000000000000000000000000000D8 +S315E080527000000000000000000000000000000000C8 +S315E080528000000000000000000000000000000000B8 +S315E080529000000000000000000000000000000000A8 +S315E08052A00000000000000000000000000000000098 +S315E08052B00000000000000000000000000000000088 +S315E08052C00000000000000000000000000000000078 +S315E08052D00000000000000000000000000000000068 +S315E08052E00000000000000000000000000000000058 +S315E08052F00000000000000000000000000000000048 +S315E08053000000000000000000000000000000000037 +S315E08053100000000000000000000000000000000027 +S315E08053200000000000000000000000000000000017 +S315E08053300000000000000000000000000000000007 +S315E080534000000000000000000000000000000000F7 +S315E080535000000000000000000000000000000000E7 +S315E080536000000000000000000000000000000000D7 +S315E080537000000000000000000000000000000000C7 +S315E0805380000000003E490000000000100000000020 +S315E08053900000000000000000000010000000100087 +S315E08053A00000000000000000000000000000000097 +S315E08053B00000000000000000000000000000000087 +S315E08053C00000000000000000000000000000000077 +S315E08053D00000000000000000000000000000000067 +S315E08053E00000000000000000000000000000000057 +S315E08053F00000000000000000000000000000000047 +S315E08054000000000000000000000000000000000036 +S315E08054100000000000000000000000000000000026 +S315E08054200000000000000000000000000000000016 +S315E08054300000000000000000000000000000000006 +S315E080544000000000000000000000000000000000F6 +S315E080545000000000000000000000000000000000E6 +S315E080546000000000000000000000000000000000D6 +S315E080547000000000000000000000000000000000C6 +S315E080548000000000000000000000000000000000B6 +S315E080549000000000000000000000000000000000A6 +S315E08054A00000000000000000000000000000000096 +S315E08054B00000000000000000000000000000000086 +S315E08054C00000000000000000000000000000000076 +S315E08054D00000200000000000200000000000000026 +S315E08054E00000000020000020000000000000000016 +S315E08054F00000000000000000000020000089F100AC +S315E08055000000100000000000000000000000000025 +S315E08055100000000000100000000000000000000015 +S315E08055200000000000000000000000000000000015 +S315E08055300000000000000000000000000000000005 +S315E080554000000000000000000000000000000000F5 +S315E080555000000000000000000000000000000000E5 +S315E080556000000000000000000000000000000000D5 +S315E080557000000000000000000000000000000000C5 +S315E080558000000000000000000000000000000000B5 +S315E080559000000000000000000000000000000000A5 +S315E08055A00000000000000000000000000000000095 +S315E08055B00000000000000000000000000000000085 +S315E08055C00000000000000000000000000000000075 +S315E08055D00000000000000000000000000000000065 +S315E08055E00000000000000000000000000000000055 +S315E08055F00000000000000000000000000000000045 +S315E08056000000000000000000000000000000000034 +S315E08056100000000000000000000000000000000024 +S315E08056200000000000000000000000000000000014 +S315E08056300000000000000000000000000000000004 +S315E080564000000000000000000000000000000000F4 +S315E080565000000000000000000000000000000000E4 +S315E08056600000200000000000200000000000000094 +S315E08056700000000000001051000000000000000063 +S315E080568000000000000000000000000010000000A4 +S315E08056901000000000000000000000000000000094 +S315E08056A00000000000000000000000000000000094 +S315E08056B00000000000000000000000000000000084 +S315E08056C00000000000000000000000000000000074 +S315E08056D00000000000000000000000000000000064 +S315E08056E00000000000000000000000000000000054 +S315E08056F00000000000000000000000000000000044 +S315E08057000000000000000000000000000000000033 +S315E08057100000000000000000000000000000000023 +S315E08057200000000000000000000000000000000013 +S315E08057300000000000000000000000000000000003 +S315E080574000000000000000000000000000000000F3 +S315E080575000000000000000000000000000000000E3 +S315E080576000000000000000000000000000000000D3 +S315E080577000000000000000000000000000000000C3 +S315E080578000000000000000000000000000000000B3 +S315E080579000000000000000000000000000000000A3 +S315E08057A00000000000000000000000000000000093 +S315E08057B00000000000000000000000000000000083 +S315E08057C000200020000000000000200000200000F3 +S315E08057D00000000000000000000000000000202023 +S315E08057E000000000000020000000000000000076BD +S315E08057F095000000000000000000000000000000AE +S315E08058000000000000000000000000000000000032 +S315E08058100000000000000000000000000000000022 +S315E08058200000000000000000000000000000000012 +S315E08058300000000000000000000000000000000002 +S315E080584000000000000000000000000000000000F2 +S315E080585000000000000000000000000000000000E2 +S315E080586000000000000000000000000000000000D2 +S315E080587000000000000000000000000000000000C2 +S315E080588000000000000000000000000000000000B2 +S315E080589000000000000000000000000000000000A2 +S315E08058A00000000000000000000000000000000092 +S315E08058B00000000000000000000000000000000082 +S315E08058C00000000000000000000000000000000072 +S315E08058D00000000000000000000000000000000062 +S315E08058E00000000000000000000000000000000052 +S315E08058F00000000000000000000000000000000042 +S315E08059000000000000000000000000000000000031 +S315E08059100000000000000000000000000000000021 +S315E08059200000000000000000000000000000000011 +S315E08059300000000000000000000000000000000001 +S315E080594000000000000000000000000020000000D1 +S315E080595000200000000000000000000000000000C1 +S315E08059600000002000002000631700001000000007 +S315E080597000000000000000000000000000000000C1 +S315E080598000000000000000000000000000000000B1 +S315E080599000000000000000000000000000000000A1 +S315E08059A00000000000000000000000000000000091 +S315E08059B00000000000000000000000000000000081 +S315E08059C00000000000000000000000000000000071 +S315E08059D00000000000000000000000000000000061 +S315E08059E00000000000000000000000000000000051 +S315E08059F00000000000000000000000000000000041 +S315E0805A000000000000000000000000000000000030 +S315E0805A100000000000000000000000000000000020 +S315E0805A200000000000000000000000000000000010 +S315E0805A300000000000000000000000000000000000 +S315E0805A4000000000000000000000000000000000F0 +S315E0805A5000000000000000000000000000000000E0 +S315E0805A6000000000000000000000000000000000D0 +S315E0805A7000000000000000000000000000000000C0 +S315E0805A8000000000000000000000000000000000B0 +S315E0805A9000000000000000000000000000000000A0 +S315E0805AA00000000000000000000000000000000090 +S315E0805AB00000000000000000000000000000000080 +S315E0805AC00000000000000000000000000000000070 +S315E0805AD00000000000000000002000000000000040 +S315E0805AE000CC4D0010000010000000000000000017 +S315E0805AF00000000000000000000000000000000040 +S315E0805B00000000000000000000000000000000002F +S315E0805B10000000000000000000000000000000001F +S315E0805B20000000000000000000000000000000000F +S315E0805B3000000000000000000000000000000000FF +S315E0805B4000000000000000000000000000000000EF +S315E0805B5000000000000000000000000000000000DF +S315E0805B6000000000000000000000000000000000CF +S315E0805B7000000000000000000000000000000000BF +S315E0805B8000000000000000000000000000000000AF +S315E0805B90000000000000000000000000000000009F +S315E0805BA0000000000000000000000000000000008F +S315E0805BB0000000000000000000000000000000007F +S315E0805BC0000000000000000000000000000000006F +S315E0805BD0000000000000000000000000000000005F +S315E0805BE0000000000000000000000000000000004F +S315E0805BF0000000000000000000000000000000003F +S315E0805C00000000000000000000000000000000002E +S315E0805C10000000000000000000000000000000001E +S315E0805C20000000000000000000000000000000000E +S315E0805C3000000000000000000000000000000020DE +S315E0805C40200000200020200000200020002000000E +S315E0805C500020002020000020200093C400000000E7 +S315E0805C6000000000000000000000000000000000CE +S315E0805C7000000000000000000000000000000000BE +S315E0805C8000000000000000000000000000000000AE +S315E0805C90000000000000000000000000000000009E +S315E0805CA0000000000000000000000000000000008E +S315E0805CB0000000000000000000000000000000007E +S315E0805CC0000000000000000000000000000000006E +S315E0805CD0000000000000000000000000000000005E +S315E0805CE0000000000000000000000000000000004E +S315E0805CF0000000000000000000000000000000003E +S315E0805D00000000000000000000000000000000002D +S315E0805D10000000000000000000000000000000001D +S315E0805D20000000000000000000000000000000000D +S315E0805D3000000000000000000000000000000000FD +S315E0805D4000000000000000000000000000000000ED +S315E0805D5000000000000000000000000000000000DD +S315E0805D6000000000000000000000000000000000CD +S315E0805D7000000000000000000000000000000000BD +S315E0805D8000000000000000000000000000000000AD +S315E0805D90000000000000000000000000000000009D +S315E0805DA0000000000000000000000000000000008D +S315E0805DB0000000000000000000000000000000007D +S315E0805DC0000000000000000000000000000000006D +S315E0805DD00000003E490000002000000000000000B6 +S315E0805DE0000000000000000000000000000000004D +S315E0805DF000000000800000000000000000000000BD +S315E0805E000000000000000000000000000000000428 +S315E0805E10000000000000000000000000000000001C +S315E0805E2000000000000000000000000020020000EA +S315E0805E3000000000000000000000000000000000FC +S315E0805E40000000000000000000008000000000006C +S315E0805E50400000000080000000000000000000001C +S315E0805E6000000000000000000000000000100000BC +S315E0805E7000000000000000000000000000000000BC +S315E0805E8000000000000000000000000000000000AC +S315E0805E90000000000000000000000000000000009C +S315E0805EA0000000000000000000000000000000008C +S315E0805EB0000000000000000000000000000000007C +S315E0805EC0000000000000000000000000000000006C +S315E0805ED0000000000000020000000000000000005A +S315E0805EE000800000000000000000000000000400C8 +S315E0805EF0000000000000000000000000000000003C +S315E0805F0000000000000000000000000080000000AB +S315E0805F10000000000000000000000000000000001B +S315E0805F2000000000000000000000400000000000CB +S315E0805F3000000000000000000040000000000000BB +S315E0805F400000000000000000000000002F35001077 +S315E0805F5000000000100000000000100000000000BB +S315E0805F6000000000101000000000000000000000AB +S315E0805F7000000000000000000000000000000000BB +S315E0805F80000000000000000000000000000000109B +S315E0805F90000000000000000000000000000000009B +S315E0805FA0000000000000000000000000000000008B +S315E0805FB0000000000000000000000000000000007B +S315E0805FC0000000000000000000000000000000006B +S315E0805FD0000000000000000000000000000000005B +S315E0805FE0000000000000000000000000000000004B +S315E0805FF0000000000000000000000000000000003B +S315E0806000000000000000000000000000000000002A +S315E080601000000000000000200000000000000000FA +S315E0806020000000000000000000000000000000000A +S315E080603000000000000000000000000000000000FA +S315E080604000000000000000000000000000000000EA +S315E080605000000000000000000000000000000000DA +S315E080606000000000000000000000000000000000CA +S315E080607000000000000000000000000000000000BA +S315E080608000000000000000000000000000000000AA +S315E0806090000000000000002000200000200000003A +S315E08060A0000000000000200020000000000000004A +S315E08060B0000000002000200000000000002000001A +S315E08060C02020000000AE99000000000000000000E3 +S315E08060D000101000000000000000000010002010FA +S315E08060E0000000000000000000000000000000004A +S315E08060F00000000000000000000000000000040036 +S315E08061000000000600000000000000000000000023 +S315E080611000000000000000002000000000000000F9 +S315E08061200000000000000000000000000000000009 +S315E080613040000000000000000000000400000000B5 +S315E080614000000000000000000000001000000000D9 +S315E08061500000000000000000000000000000400099 +S315E080616000000000000000000000000000000000C9 +S315E080617000000000000000000000000000000000B9 +S315E080618000000000080000000000000000000000A1 +S315E08061902000000000000000000000000000000079 +S315E08061A00000000000000000000000000000000089 +S315E08061B00000000000000000000000000000000079 +S315E08061C00000000000000000000000000000000069 +S315E08061D00000000000000000000000000000000059 +S315E08061E00000000000000000000000000000000049 +S315E08061F00000000000000000000000000000000039 +S315E080620000004000000000000000000000000000E8 +S315E080621000200000000000000000000000000000F8 +S315E080622000000000000000202000000000000000C8 +S315E0806230000000000000200020000020000041F562 +S315E080624000100000001000000000002000000000A8 +S315E080625030000000000000000000000000000000A8 +S315E080626000000000000000000000000000000000C8 +S315E080627000000000000000000000000000000000B8 +S315E08062808010000000000000000000000000000414 +S315E08062900000000000000000000000000000000098 +S315E08062A00000000000000000000000000000000088 +S315E08062B00000000000000000000000000000000078 +S315E08062C00080000000008000000000000000000068 +S315E08062D00000000000000000000000000000000058 +S315E08062E00000000000000000000000000000000048 +S315E08062F00000000000000000000000000000000038 +S315E08063000000000000000000000000000000000027 +S315E08063100000000000000000000000000000000017 +S315E08063200000000000000000000000000000000007 +S315E080633000000000000000000000000000000000F7 +S315E08063400000000000000000000000000080020065 +S315E080635000000000100000000000000000000000C7 +S315E080636000000000000004000000000000000000C3 +S315E080637000000000000000000000000000000000B7 +S315E08063800000000000000000000000200020000067 +S315E08063900000002000000020C00020000000000077 +S315E08063A00000002000002000200000000000000027 +S315E08063B00000000000002026FA0000000000000037 +S315E08063C000000000800000000000000000000000E7 +S315E08063D00000100000000000000000000000000047 +S315E08063E000000010000030000000001000001000E7 +S315E08063F00000102000000000000000000000000007 +S315E080640000000000000000400000000000000000E6 +S315E08064100000000000000000000000000000000016 +S315E08064200000000000000000000000000000000006 +S315E080643000000000000040000000000000000000B6 +S315E080644000000000000000000000000000000000E6 +S315E080645000000000000000000000000000000000D6 +S315E080646000000000000000000000000000000000C6 +S315E080647000000000000000000000000000000000B6 +S315E080648000000000000000000000000000000000A6 +S315E08064900000000000000000000000000000000096 +S315E08064A00000000000000000000000000000000086 +S315E08064B00000000000000000000000000000000076 +S315E08064C00000000000000000000000000000000066 +S315E08064D00000000000400000000000000000000016 +S315E08064E00000000000000000000000000000000046 +S315E08064F00000000000000000000000000000000036 +S315E08065000000000000000000000000000000000025 +S315E08065100000000000000000000000000000000015 +S315E080652000000000000000200000000000000000E5 +S315E080653020B40000808000000000200000000020E1 +S315E080654000000000000000000000200000002000A5 +S315E080655000000010000000100000000000100000A5 +S315E080656000000000000000000000000000000000C5 +S315E08065700000100000001010000030001000103005 +S315E08065800000104000200000000000100000101005 +S315E08065900000000000000020400000000000000035 +S315E08065A04000000000000040000000000000000005 +S315E08065B000000000000000004000000000000040F5 +S315E08065C00000000000000000000000000000000065 +S315E08065D00000000000000000000000000000000055 +S315E08065E00000000000000000000000000000000045 +S315E08065F00000000000000000000000000000000035 +S315E08066000000000000000000000000000000000024 +S315E08066100000000000000000000000000000000014 +S315E08066200000000000000000000000000000000004 +S315E080663000000000000000000000000000000000F4 +S315E080664000000000000000000000000000000000E4 +S315E08066500000000000000000000000004000000094 +S315E08066600000000000000000000000000000004084 +S315E080667000000000000000000000000000000000B4 +S315E08066806000000000000000200000002000000004 +S315E08066900000000000000000000000000000200074 +S315E08066A00000000000000000003E9F0000000000A7 +S315E08066B000002000000000802000000000000000B4 +S315E08066C00000002010000000000000001000000024 +S315E08066D00000000000001000002000000000000024 +S315E08066E01000000000000000100000100000001004 +S315E08066F000000010001000102000100000002000B4 +S315E08067000000000000001000100000000000000003 +S315E08067106000000000000000004000000000000073 +S315E080672000400000000000000000000000000000C3 +S315E080673000000000000000000040000000000000B3 +S315E080674000000000000000000000000000000000E3 +S315E080675000000000000000000000000000000000D3 +S315E080676000000000000000000000000000000000C3 +S315E080677000000000000000000000000000000000B3 +S315E080678000000000000000000000000000000000A3 +S315E08067900000000000000000000000000000000093 +S315E08067A00000000000000000000000000000000083 +S315E08067B00000000000000000000000000000000073 +S315E08067C00000000000000040000000000000000023 +S315E08067D00000000000400000000000000000000013 +S315E08067E00000000000000000400000000000000003 +S315E08067F00000000000000000200000000000000013 +S315E08068000000000000000000000000000000000022 +S315E080681000000000000000200000000000000000F2 +S315E0806820000074B700000000100000000000201097 +S315E080683000000000000000000000001000000000E2 +S315E08068400000200010000000200000100000000082 +S315E080685000000000100000000080001020000020F2 +S315E080686000000000000000000000100000000000B2 +S315E080687020000000400010000000005020000000D2 +S315E080688000000000000000000000000000000000A2 +S315E080689000000060000000000000000040000000F2 +S315E08068A00000000000004000000000004000000002 +S315E08068B00000000000000000000800000000080062 +S315E08068C00000000020000000000000000000000042 +S315E08068D00000000000000000000000000000000052 +S315E08068E00000000000000000000000002000200002 +S315E08068F000000000000008000020002000000000EA +S315E08069000000000000000000000000000000000021 +S315E08069100000402000000010000080001000000011 +S315E08069200000000000000000000000000000000001 +S315E080693000000000000000000000000000000010E1 +S315E08069402000000000004000000000000000000081 +S315E08069500000000030400000000000000000000061 +S315E08069600000000000000000000000000040000081 +S315E08069700000000020200000000020002000000031 +S315E080698000000000202000002020400000000000E1 +S315E080699000000040200000000000001E5F000000B4 +S315E08069A00000000000000020100000000000000051 +S315E08069B00000000000002000000000200000000031 +S315E08069C00000000010000000000000000000000051 +S315E08069D00010000000100000000000000000000031 +S315E08069E000000000000020000000000020000010F1 +S315E08069F00000000000000000000000000000000031 +S315E0806A000000000000000000000000000000000020 +S315E0806A100000000000000000000000000000000010 +S315E0806A200000000000000000000000000000000000 +S315E0806A3000000000000000080000000000000000E8 +S315E0806A4000000000000000000000000000000000E0 +S315E0806A5000000000000000000000000000000000D0 +S315E0806A6000000000000000000000000000000000C0 +S315E0806A7000000000000000000000000000000000B0 +S315E0806A8000000000000000000000000000000000A0 +S315E0806A900000800000100000000000000000000000 +S315E0806AA00000000000000000000000000000000080 +S315E0806AB00000000000000000000000000000000070 +S315E0806AC00000000000000000000000000000000060 +S315E0806AD00000000000000000000000000000000050 +S315E0806AE00000000000000000000000000000000040 +S315E0806AF00000000000000000000000000020000010 +S315E0806B00000040004000000000000000000000009F +S315E0806B1000000000AE04000000000000000000005D +S315E0806B2000000000000000000000000000000000FF +S315E0806B3010000000000010000000000000000000CF +S315E0806B40200000000000000000000000000020009F +S315E0806B50002000001000000000000000100000008F +S315E0806B60000000000040000000000000004000003F +S315E0806B70001000000000000000000000000000009F +S315E0806B80000000000040000000000000000000005F +S315E0806B90000000000000000000000000000000008F +S315E0806BA0000000000000000000000000000000007F +S315E0806BB0000000000000000000000000000000006F +S315E0806BC000000000008000000000000000000000DF +S315E0806BD0000000000000000000000000000000004F +S315E0806BE0000000000000000000000020000000001F +S315E0806BF0000000000000000000000000000000002F +S315E0806C00000000000000000000000000000000001E +S315E0806C10000000000000000000000000000000000E +S315E0806C2000000000000000000000000000000000FE +S315E0806C3000000000000000400000000000000000AE +S315E0806C4000000000000020000000000000000000BE +S315E0806C50000000000000000000000000004000404E +S315E0806C60000000000000200020000000202000003E +S315E0806C70000000000000000020000000000000008E +S315E0806C800000000000400000000000000066BA003E +S315E0806C90000010000000000000000000000000007E +S315E0806CA0000000200000100000000000000000004E +S315E0806CB0000000200000000000000000000010003E +S315E0806CC000000000008000000000000000000000DE +S315E0806CD0000000000000000000000020000000002E +S315E0806CE0000000000000102000000000000000000E +S315E0806CF000000000000040000000000000002000CE +S315E0806D0000000000000000400000000000000000DD +S315E0806D10400000000000400000000000000000008D +S315E0806D2000200000000800000000000000000020B5 +S315E0806D3000000000000000000000000000000000ED +S315E0806D4000000000000000000000000000000000DD +S315E0806D50000000000000002020000000000000008D +S315E0806D600008000000000020000000100000400045 +S315E0806D70000000000000000000000000400020004D +S315E0806D80200000100000000000000000000000006D +S315E0806D90000000000000000000000000000000008D +S315E0806DA0000000000000000000002010000000004D +S315E0806DB0000000000000000000000000000000105D +S315E0806DC0004000000040000040000000000000009D +S315E0806DD0000000000000000000000000000000400D +S315E0806DE0000000000000000000000000000000003D +S315E0806DF0000000200020000000004000000020008D +S315E0806E00000000000000A73D000000100000001018 +S315E0806E1000000000000000100020000000000010CC +S315E0806E2000000000000000000010000000000010DC +S315E0806E3000000010200000000000100000000000AC +S315E0806E4000000000000000000000000000000000DC +S315E0806E50000000000000000010000000000010307C +S315E0806E6000000020000000200000400000000040FC +S315E0806E70000000200000000000004000000000004C +S315E0806E80000000004000000000000000000000005C +S315E0806E90000000000000000000000000000000008C +S315E0806EA0000000000000000000000000000000007C +S315E0806EB0000000000000000000000000000000006C +S315E0806EC0000000000000000000000000000000005C +S315E0806ED0000000000000000000000000000000004C +S315E0806EE0000000000000000000000000000000003C +S315E0806EF0000000000000000000000000000000002C +S315E0806F00000000000000000000000000000000001B +S315E0806F10000000000000000000000000000000000B +S315E0806F2000000000000000004000000000000000BB +S315E0806F3000000000400000000000000000000000AB +S315E0806F40000000000000000000400000004000005B +S315E0806F50000000000000000000000020000000208B +S315E0806F60000000000000000000002000004000005B +S315E0806F700040000000400000000000000000004EDD +S315E0806F8089000010000000000000100000000000F2 +S315E0806F90200000000000001000000000000020003B +S315E0806FA0100020000000200000002000000000000B +S315E0806FB0000000000000001010000020000020000B +S315E0806FC000002000000000201000000010000000FB +S315E0806FD000401000000000004000000000000010AB +S315E0806FE0000000000000000000200000000000001B +S315E0806FF0400000000060000000400000000000004B +S315E0807000000000000000400040000000400000005A +S315E0807010000000000000000000000000000000000A +S315E080702000000000000000000000000000000000FA +S315E080703000000000000000000000000000000000EA +S315E080704000000000000000000000000000000000DA +S315E080705000000000000000000000000000000000CA +S315E080706000000000000000000000000000000000BA +S315E080707000000000000000000000000000000000AA +S315E0807080000000000000000000000000000000009A +S315E0807090000000000000000000000000000000008A +S315E08070A0000000000000000000000000000000007A +S315E08070B0000000000000000000000000000000006A +S315E08070C0000000000000000000000000000000005A +S315E08070D000000000000000000000004000000040CA +S315E08070E000200000002001000000000000000000F9 +S315E08070F00000000000000020586000000000002032 +S315E080710010002000000000000000000000200000C9 +S315E080711000000010002000000000000000200000B9 +S315E08071201000001000200000000000000030000089 +S315E08071302000000000200000000000000020000089 +S315E080714000000040202000000000000000002040F9 +S315E080715000000060000010004000002000000040B9 +S315E080716000000020000040000000002040000000F9 +S315E080717000000000000000000000000000000000A9 +S315E08071800000000000000000000000000000000099 +S315E08071900000000000000000000000000000000089 +S315E08071A00000000000000000000000000000000079 +S315E08071B00000000000000000000000000000000069 +S315E08071C00000000000000000000000000000000059 +S315E08071D00000000000000000000000000000000049 +S315E08071E00000000000000000000000000000000039 +S315E08071F00000000000000000000000000000000029 +S315E08072000000000000000000000000000000000018 +S315E08072100000000000000000000000000000000008 +S315E080722000000000000000000000000000000000F8 +S315E080723000000000000000004000000000000000A8 +S315E080724000000000200000000000000000000000B8 +S315E08072500000000000000000000000004040000048 +S315E08072600000000000402000000000000040000018 +S315E0807270008359000000200000000000000000208C +S315E08072800000000000000000200000002000000058 +S315E08072901000002000000000000000000000000058 +S315E08072A02010000000200000000000000000000028 +S315E08072B00000100000001000001000000000000038 +S315E08072C06010000040000010000000000000000098 +S315E08072D000000040000000200000000000000000E8 +S315E08072E00000200000000000000000000000000018 +S315E08072F000000000000000404000000000000000A8 +S315E08073000000000000000000000000000000000017 +S315E08073100000000000000000000000000000000007 +S315E080732000000000000000000000000000000000F7 +S315E080733000000000000000000000000000000000E7 +S315E080734000000000000000000000000000000000D7 +S315E080735000000000000000000000000000000000C7 +S315E080736000000000000000000000000000000000B7 +S315E080737000000000000000000000000000000000A7 +S315E08073800000000000000000000000000000000097 +S315E08073900000000000000000000000000000000087 +S315E08073A04000000000000000000000000000000037 +S315E08073B00000000000004000000000000000000027 +S315E08073C020000020000000000000000000004000D7 +S315E08073D00000200000000000000000000000000027 +S315E08073E000000000004000200040EF660000000042 +S315E08073F00000000000000000000000000000000027 +S315E080740000000000002000000020000000000000D6 +S315E080741000000020000010000000000000000000D6 +S315E080742000000000102000001000000000100000A6 +S315E080743010000000000000001000000000001000B6 +S315E080744000000000001000000000000000000000C6 +S315E080745000000000000000000000000000000000C6 +S315E080746000000000000000000000000000000000B6 +S315E08074700000000000000000400000000000000066 +S315E08074800000000000000000000000000000000096 +S315E08074900000000000000000000000000000000086 +S315E08074A00000000000000000000000000000000076 +S315E08074B00000000000000000000000000000000066 +S315E08074C00000000000000000000000000000000056 +S315E08074D00000000000000000000000000000000046 +S315E08074E00000000000000000000000000000000036 +S315E08074F00000000000000000000000000000000026 +S315E08075000000000000000000000000000000000015 +S315E08075100000000000000000000000000000000005 +S315E080752000000000000000000000000000000000F5 +S315E080753000000000000000200000000000000000C5 +S315E08075400000000000400000002000000000000075 +S315E080755000000000000000000000000000000020A5 +S315E080756000000019FF00000010000000000000008D +S315E08075700000002000000000000000000000000085 +S315E08075800010000000100000100010001000000045 +S315E08075900000001000100000000000000000000065 +S315E08075A00000001010000000000000001000000045 +S315E08075B00000000000000000002000101000000025 +S315E08075C010005000000000000000000000000000F5 +S315E08075D00000000020000000000000000000000025 +S315E08075E000400000000000000000000000000000F5 +S315E08075F00000000000000000000000000000000025 +S315E08076000000000000000000000000000000000014 +S315E08076100000000000000000000000000000000004 +S315E080762000000000000000000000000000000000F4 +S315E080763000000000000000000000000000000000E4 +S315E080764000000000000000000000000000000000D4 +S315E080765000000000000000000000000000000000C4 +S315E080766000000000000000000000000000000000B4 +S315E080767000000000000000000000000000000000A4 +S315E08076800000000000000000000000000000000094 +S315E08076900000000000000000000000000000000084 +S315E08076A00000000000000000000000000000000074 +S315E08076B00000002000000000000000000000000044 +S315E08076C000200000000040000020000000000000D4 +S315E08076D0000000000000000000000000FE680000DE +S315E08076E000000010000010000000100000001020D4 +S315E08076F00080000000000000000000001000000094 +S315E08077000000000000000000000000000000001003 +S315E080771000000000100000000000000000000020D3 +S315E080772000000000000000003000000000001000B3 +S315E080773000000000000000000000000000000000E3 +S315E08077400000000000200000000000400000000073 +S315E080775000000000000000000000000000000000C3 +S315E08077600040000000000000000000000000000073 +S315E080777000000000000000000000000000000000A3 +S315E08077800000000000000000000000000000000093 +S315E08077900000000000000000000000000000000083 +S315E08077A00000000000000000000000000000000073 +S315E08077B00000000000000000000000000000000063 +S315E08077C00000000000000000000000000000000053 +S315E08077D00000000000000000000000000000000043 +S315E08077E00000000000000000000000000000000033 +S315E08077F00000000000000000000000000000000023 +S315E080780000000000000000000000400000000000D2 +S315E080781000000000000000000000000000400000C2 +S315E080782000000000000000000000000000000000F2 +S315E08078300000200000002000200000000000000082 +S315E08078400000000020000000400000000000004032 +S315E0807850200000002021ED00000000000000000074 +S315E080786010000000000000000000000000000000A2 +S315E08078701000100000000000201000100000002022 +S315E08078802000000000000000200000000000000052 +S315E08078900000000000000000000000000010000072 +S315E08078A00000000000000000000010002000200022 +S315E08078B01000000000004000000000000000000012 +S315E08078C00000000000004000000000000000000012 +S315E08078D00000000000000000000000000000000042 +S315E08078E00000000000000000000000000000000032 +S315E08078F00000000000000000000000000000000022 +S315E08079000000000000000000000000000000000011 +S315E08079100000000000000000000000000000000001 +S315E080792000000000000000000000000000000000F1 +S315E080793000000000000000000000000000000000E1 +S315E080794000000000000000000000000000000000D1 +S315E080795000000000000000000000000000000000C1 +S315E080796000000000000000000000000000000000B1 +S315E080797000000000000000000000000000000000A1 +S315E08079800000000000000000000000000000000091 +S315E08079900000400000000000000000000000000041 +S315E08079A00000000000000000000000000000000071 +S315E08079B00000200000000000000000000000000041 +S315E08079C00020000000000000000000000000E087CA +S315E08079D00000908020000000000000000000100001 +S315E08079E00000000000000000000000000000000031 +S315E08079F020000000000020000000000000000000E1 +S315E0807A0010000010000000000000100000000000E0 +S315E0807A100000100000000000001000000010400090 +S315E0807A200000200000004000000000000000000090 +S315E0807A302000000000004000000040000000000040 +S315E0807A400000004000400000000000000040000010 +S315E0807A500000000000000000000000000040000080 +S315E0807A6000000000000000000000000000000000B0 +S315E0807A7000000000000000000000000000000000A0 +S315E0807A800000000000000000000000000000000090 +S315E0807A900000000000000000000000000000000080 +S315E0807AA00000000000000000000000000000000070 +S315E0807AB00000000000000000000000000000000060 +S315E0807AC00000000000000000000000000000000050 +S315E0807AD00000000000000000000000000000000040 +S315E0807AE00000000000000000000000000000000030 +S315E0807AF00000000000000000000000000000000020 +S315E0807B00000000000000000000000000000000000F +S315E0807B1000004000000000000000000000000000BF +S315E0807B2000002000002000000000000000000000AF +S315E0807B30000020000000000000000000000000209F +S315E0807B4000000000000000D5370000100030100073 +S315E0807B5010201000000000003000002000000030FF +S315E0807B60001000000000002010000030100000101F +S315E0807B70100010200000000000001000001010200F +S315E0807B80000000000000000000100010100010202F +S315E0807B90000000201000005000400040100020103F +S315E0807BA0204010401020104040200000000000409F +S315E0807BB0006000002000000000404000004000001F +S315E0807BC000400000000000000000000000400000CF +S315E0807BD0000000000000000000000000000000003F +S315E0807BE0000000000000000000000000000000002F +S315E0807BF0000000000000000000000000000000001F +S315E0807C00000000000000000000000000000000000E +S315E0807C1000000000000000000000000000000000FE +S315E0807C2000000000000000000000000000000000EE +S315E0807C3000000000000000000000000000000000DE +S315E0807C4000000000000000000000000000000000CE +S315E0807C5000000000000000000000000000000000BE +S315E0807C60000000000000000000400000000000006E +S315E0807C70000000000040000000000000000000005E +S315E0807C80000000000000000000000040000000400E +S315E0807C90000020000000002000000000200000001E +S315E0807CA020000040002000402000204020004000CE +S315E0807CB0000040000000004000000040000020403E +S315E0807CC00A5F000010300000100010100000001065 +S315E0807CD000100000200000000000002000100000DE +S315E0807CE030102010200000001030002010002010FE +S315E0807CF0000000102000001000001020100000108E +S315E0807D00001000102010001000100020001000105D +S315E0807D10001000003010001000201010000010004D +S315E0807D20002000000000000000200000400000006D +S315E0807D3000200000404000000000000000400000FD +S315E0807D40000000000040000040000000004000000D +S315E0807D5000000000000000000000000000000000BD +S315E0807D6000000000000000000000000000000000AD +S315E0807D70000000000000000000000000000000009D +S315E0807D80000000000000000000000000000000008D +S315E0807D90000000000000000000000000000000007D +S315E0807DA0000000000000000000000000000000006D +S315E0807DB0000000000000000000000000000000005D +S315E0807DC0000000000000000000000000000000004D +S315E0807DD0000000000000000000000000000000003D +S315E0807DE000000000000000000000000000400040AD +S315E0807DF000000000000000000000000000004000DD +S315E0807E00004000400040000000000000002000200C +S315E0807E10000020200020002000002040004020209C +S315E0807E20000000402000200000000060000000000C +S315E0807E30002000402020000020FC3A0000000010D6 +S315E0807E4030200000000020101010002000002020CC +S315E0807E5010000000000020303000000000003030CC +S315E0807E6030100000000000301010000000003030BC +S315E0807E7010000000100020200000000000103030CC +S315E0807E80000000001010303040400000201010004C +S315E0807E9040600000303010004000000020200000EC +S315E0807EA0404000006020000000400000206040402C +S315E0807EB0000000000000404000000000000040009C +S315E0807EC000000000000040400000000000000000CC +S315E0807ED0000000000000000000000000000000003C +S315E0807EE0000000000000000000000000000000002C +S315E0807EF0000000000000000000000000000000001C +S315E0807F00000000000000000000000000000000000B +S315E0807F1000000000000000000000000000000000FB +S315E0807F2000000000000000000000000000000000EB +S315E0807F3000000000000000000000000000000000DB +S315E0807F4000000000000000000000000000000000CB +S315E0807F5000000000000000000000000000000000BB +S315E0807F60000000000000000040400000000000002B +S315E0807F70000000000000400000000040000040409B +S315E0807F80000000000000002020000000000020200B +S315E0807F90202000000000606020200000000040609B +S315E0807FA020200000000040400020000020206040AB +S315E0807FB00000E11400000000003020000004001002 +S315E0807FC010001400000000202010000000000030A7 +S315E0807FD020103001000800603110180040000000D9 +S315E0807FE0100010000000003020000002000000A019 +S315E0807FF022001000800010202000000000100020E9 +S315E08080003000400400000000140040000020200002 +S315E08080101000000000202000000140080020210020 +S315E080802008000000002020404000000000000040E2 +S315E080803040020010008002005000800000000040F6 +S315E08080404000000000000000000400200000040062 +S315E08080502000000000000000000000000000000199 +S315E08080600008004001000800400000000000000019 +S315E080807000000000000000020010008002001000F6 +S315E08080808000000000000000000000000000000406 +S315E08080900020000004002000000000000000000036 +S315E08080A000000000000100080040010008004000D8 +S315E08080B00000000000000000000000000002001048 +S315E08080C00080020010008000000000000000000038 +S315E08080D000000000000400200000040020000000F2 +S315E08080E000404000000000000000000100080000A1 +S315E08080F00100080000000040400000000000000091 +S315E080810000000002001000A0222030008000004025 +S315E08081106020200000000060402020040020004015 +S315E0808120440000000000004040000058C800000005 +S315E08081300000302000000000000010100000000069 +S315E080814020200010000000002020301000000000F9 +S315E08081502030101000000000100000000000000039 +S315E080816020201000000010002020000000000010F9 +S315E080817020200000000000003020400000000000C9 +S315E08081801010400000002020001000000000202099 +S315E080819000004000000020200000000000002020B9 +S315E08081A04040000000000000404000000000000069 +S315E08081B000000000000000004040000000000000D9 +S315E08081C00000000000000000000000000000000049 +S315E08081D00000000000000000000000000000000039 +S315E08081E00000000000000000000000000000000029 +S315E08081F00000000000000000000000000000000019 +S315E08082000000000000000000000000000000000008 +S315E080821000000000000000000000000000000000F8 +S315E080822000000000000000000000000000000000E8 +S315E080823000000000000000000000000000000000D8 +S315E080824000000000000000000000000000000000C8 +S315E08082500000000000000000000040400000000038 +S315E080826000000000000000000000000000000000A8 +S315E08082704040000000000000202020200000000098 +S315E08082800020002000000000606000200000000068 +S315E080829060402020000000004040000000002020D8 +S315E08082A040400000983900000000002030000000C7 +S315E08082B000101010000000000020200000000000E8 +S315E08082C00030201030000000003020000000000068 +S315E08082D000201010000000000020300000000000A8 +S315E08082E000202000000000000020200000000000A8 +S315E08082F00030200040000000000000004000002028 +S315E08083003000000000000020200000004000002037 +S315E08083102000000000000020200040000000000057 +S315E080832000004000000000000000000000000000A7 +S315E08083300000400000000000000000000000000097 +S315E080834000000000000000000000000000000000C7 +S315E080835000000000000000000000000000000000B7 +S315E080836000000000000000000000000000000000A7 +S315E08083700000000000000000000000000000000097 +S315E08083800000000000000000000000000000000087 +S315E08083900000000000000000000000000000000077 +S315E08083A00000000000000000000000000000000067 +S315E08083B00000000000000000000000000000000057 +S315E08083C00000000000000000000000000000000047 +S315E08083D000000040400000000000000000000000B7 +S315E08083E000000000000000000040400000000000A7 +S315E08083F00020202020000000000000000000000097 +S315E080840000604000000000000040600000000000C6 +S315E080841000404000000000202040400000868B00A5 +S315E080842000000000001000000000000000000000D6 +S315E08084300000000000000000000000003010000096 +S315E08084400000001000200000000010000000000086 +S315E080845000000000100000000000000000000000A6 +S315E08084600000001000000000001010004000000036 +S315E08084700010101040000000000000000000000026 +S315E08084800000000040000000000000000000000046 +S315E080849000004000000000000000400000000000F6 +S315E08084A00000000000000000000040000000000026 +S315E08084B00000000000000000000000000000000056 +S315E08084C00000000000000000000000000000000046 +S315E08084D00000000000000000000000000000000036 +S315E08084E00000000000000000000000000000000026 +S315E08084F00000000000000000000000000000000016 +S315E08085000000000000000000000000000000000005 +S315E080851000000000000000000000000000000000F5 +S315E080852000000000000000000000000000000000E5 +S315E080853000000000000000000000000000000000D5 +S315E080854000000000000000000000000000000000C5 +S315E080855000000000000000000000000000000000B5 +S315E080856000000000000000000000000000000000A5 +S315E08085700000200020000000000000002000000035 +S315E08085800000002000000000000000000000000065 +S315E0808590000000200000452E000000800000100052 +S315E08085A00000000000101000000000000010000035 +S315E08085B000000000002020000000001000001000F5 +S315E08085C00000001000000000000000000000100025 +S315E08085D00000000000000000000000000000000035 +S315E08085E000001000104040000000000010404000F5 +S315E08085F00000000010000000000000000040400085 +S315E080860000000000000000000000004000000000C4 +S315E080861000000040000000000000000000000000B4 +S315E080862000000040000000000000000000000000A4 +S315E080863000000000000000000000000000000000D4 +S315E080864000000000000000000000000000000000C4 +S315E080865000000000000000000000000000000000B4 +S315E080866000000000000000000000000000000000A4 +S315E08086700000000000000000000000000000000094 +S315E08086800000000000000000000000000000000084 +S315E08086900000000000000000000000000000000074 +S315E08086A00000000000000000000000000000000064 +S315E08086B00000000000000000000000000000000054 +S315E08086C00000000000000000000000000000000044 +S315E08086D00000000000000000000000000000000034 +S315E08086E00000000000202000000000202020200064 +S315E08086F00000002020202000000000002000000074 +S315E0808700000000000000000000202000000000CAF9 +S315E0808710150000001000203000000000000010105E +S315E08087200000000020200010000000002020100043 +S315E08087300000000020300000000000000010100063 +S315E08087400000000020301000000000002020000023 +S315E080875000000000202000000000000030204040A3 +S315E080876000000000000040400000202010000000D3 +S315E08087700000202000004040000020200000000093 +S315E08087800000602000400000000000000040000083 +S315E08087900000000000000000000000000040000033 +S315E08087A00000000000000000000000000000000063 +S315E08087B00000000000000000000000000000000053 +S315E08087C00000000000000000000000000000000043 +S315E08087D00000000000000000000000000000000033 +S315E08087E00000000000000000000000000000000023 +S315E08087F00000000000000000000000000000000013 +S315E08088000000000000000000000000000000000002 +S315E080881000000000000000000000000000000000F2 +S315E080882000000000000000000000000000000000E2 +S315E08088300000000000000000000000000000404052 +S315E080884000000000000000000000000000000000C2 +S315E080885000000000404000000000000020200000F2 +S315E08088600000000020202020000000006060202022 +S315E08088700000000040600000000000004040000072 +S315E080888000002020404000002A7000008000001098 +S315E08088900000000000000000000000000000000072 +S315E08088A00000000000000020200000000010000012 +S315E08088B00000000000100000000000000000000042 +S315E08088C01000000000000000000000001000000022 +S315E08088D00000000000001000000000100000000012 +S315E08088E00000000000000000000000000000000022 +S315E08088F00000000000000000000000000000000012 +S315E08089000000000000000000000000000000000001 +S315E080891000000000000000000000000000000000F1 +S315E080892000000000000000000000000000000000E1 +S315E080893000000000000000000000000000000000D1 +S315E080894000000000000000000000000000000000C1 +S315E080895000000000000000000000000000000000B1 +S315E080896000000000000000000000000000000000A1 +S315E08089700000000000000000000000000000000091 +S315E08089800000000000000000000000000000000081 +S315E08089900000000000000000000000000000000071 +S315E08089A00000000000000000000000000000000061 +S315E08089B00000000000000000000000000000000051 +S315E08089C00000000000000000000000000000000041 +S315E08089D000000000002020000000000000000000F1 +S315E08089E000000000000000000000000000200020E1 +S315E08089F020000000000000000000000000000000F1 +S315E0808A0000D0FF000000000010000000000000041D +S315E0808A1000200000000000000000000000000000D0 +S315E0808A200000000000010018104000000000001067 +S315E0808A30001000000000100010000000000200009E +S315E0808A400080000000100000000000001000100010 +S315E0808A50000000000014002000000000000000007C +S315E0808A600040000000000000000000010008004017 +S315E0808A700000000000000000000000000000000090 +S315E0808A8000000002001000800000000000000000EE +S315E0808A90000000000000000000000004002000004C +S315E0808AA00000000000000000000000000000000060 +S315E0808AB00001000800400000000000000000000007 +S315E0808AC000000000000000000002001000800000AE +S315E0808AD00000000000000000000000000000000030 +S315E0808AE000040020000000000000000000000000FC +S315E0808AF000000000000000010008004000000000C7 +S315E0808B0000000000000000000000000000000002FD +S315E0808B10001000800000000000000000000000005F +S315E0808B2000000000000000040020000000000000BB +S315E0808B3000000000000000000000000000010008C6 +S315E0808B40004000000000000000000000000000007F +S315E0808B5020200000000200100080000000000000DD +S315E0808B60000000000000200020200000000400003B +S315E0808B7000000000000000000000A93400000000B2 +S315E0808B80002000000000000004002020000000001B +S315E0808B9020000000000000003000200000000100FE +S315E0808BA02810400000000000301000000000001097 +S315E0808BB0200010000000022000108000000000303D +S315E0808BC000000000001000200000400000001400BB +S315E0808BD0202040000000300000000000000020005F +S315E0808BE000004000010028004040000000002040D6 +S315E0808BF0000000000000004000000000020010407D +S315E0808C00800000000000004000000000000000003E +S315E0808C1000000000040020000000000000000000CA +S315E0808C200000000000000000000001000800400095 +S315E0808C3000000000000000000000000000000000CE +S315E0808C40000002001000800000000000000000002C +S315E0808C50000000000000000000000400200000008A +S315E0808C60000000000000000000000000000000009E +S315E0808C700100080040000000000000000000000045 +S315E0808C8000000000000000000200100080000000EC +S315E0808C90000000000000000000000000000000006E +S315E0808CA004002000000000000040000000000000FA +S315E0808CB000000000000001000800404000000000C5 +S315E0808CC040000000000000002000000000000200DC +S315E0808CD0100080000000000040000000000000401E +S315E0808CE00000000000000440002000000100004079 +S315E0808CF0000000C6940000000010000000000000A4 +S315E0808D0000140020000000000000100000000000B9 +S315E0808D100000200000000001001820400000000054 +S315E0808D2000000000000000000000000000000002DB +S315E0808D30001000800000001000000000000000002D +S315E0808D401000000000000014102000000000001059 +S315E0808D500000400000000000000000000001000864 +S315E0808D60004000000000004000000000000000001D +S315E0808D7000000000000200100080000000000000FB +S315E0808D800000000000000000000000000004002059 +S315E0808D90000000000000000000000000000000006D +S315E0808DA00000000100080040000000000000000014 +S315E0808DB000000000000000000000000200100080BB +S315E0808DC0000000000000000000000000000000003D +S315E0808DD00000000400200000000000000000000009 +S315E0808DE000000000000000000001000800400000D4 +S315E0808DF0000000000000000000000000000000000D +S315E0808E00000200100080000000000000000000006A +S315E0808E1000000000000000000004002000000000C8 +S315E0808E2000000000000000000000000000000001DB +S315E0808E300008004000000000000000000000000084 +S315E0808E40000000000000000200100080000000002A +S315E0808E5000000000000000000000000000000004A8 +S315E0808E600020000000000000200000003F7B0000A2 +S315E0808E7083831C1C606010100303181C4060100084 +S315E0808E80070738384040001007073838C0C0101050 +S315E0808E900607303880C011110E0E70708080111177 +S315E0808EA00E0E7070808011010C0E607000900303CE +S315E0808EB01C1CE0E0101003031C1CE0E01000030320 +S315E0808EC0181CC0E0001007073838C0C0100007073C +S315E0808ED03838C0C000000607303880C001010E0E69 +S315E0808EE07070808001010E0E7070808001010C0E22 +S315E0808EF06070008003031C1CE0E0000003031C1C80 +S315E0808F00E0E000000303181CC0E0000007073838E3 +S315E0808F10C0C0000007073838C0C0000006073038F8 +S315E0808F2080C001010E0E7070808001010E0E70709F +S315E0808F30808001010C0E6070008003031C1CE0E061 +S315E0808F40000003031C1CE0E000000303181CC0E0E3 +S315E0808F50000007073838C0C0000007073838C0C0AF +S315E0808F6000000607303880C001010E0E70708080E8 +S315E0808F7001010E0E7070808001010C0E6070008021 +S315E0808F8003031C1CE0E0000003031C1CE0E000007F +S315E0808F900303181CC0E0000007073838C0C0000093 +S315E0808FA007073838C0C000000607303880C00101A6 +S315E0808FB00E0E7070808001010E0E7070808021210F +S315E0808FC00C0E6070008023231C1CE0E0000022224F +S315E0808FD01C1CE0E000002202181CC0E0002006060F +S315E0808FE03838C1C100592A00002000000020201036 +S315E0808FF0102000100000000000000020200000206B +S315E0809000100000302000003000000030100000101A +S315E080901010000010300000301000003030000030CA +S315E080902000000020200000200010102020101020DA +S315E080903040101060601000204000004040000000BA +S315E0809040403020400030000040202040402000009A +S315E0809050002020000020000000206000002040006A +S315E080906000404000000000000000000000004000DA +S315E0809070004040000000000000000000000000000A +S315E0809080000000000000000000000000000000007A +S315E0809090000000000000000000000000000000006A +S315E08090A0000000000000000000000000000000005A +S315E08090B0000000000000000000000000000000004A +S315E08090C0000000000000000000000000000000003A +S315E08090D0000000000000000000000000000000002A +S315E08090E0000000000000000000000000000000001A +S315E08090F0000000000000000000000000000000000A +S315E08091000000000000004000004000000000000079 +S315E080911000000000004000000000000000000000A9 +S315E08091200000000000000000000000404000004019 +S315E080913000000000000000200000000000000000A9 +S315E080914000000040400000402000004040000060F9 +S315E08091500000004040000040000000404000ED7309 +S315E08091600000000000000000100000000000000089 +S315E08091700000000000000000000000000000000089 +S315E08091800000000000000000000008000000000071 +S315E08091900000000000200000000000000000000049 +S315E08091A00000000000000000000000000000000059 +S315E08091B00000000000000000000000000000000049 +S315E08091C00000000000000000000000000000000039 +S315E08091D00000000000020000000000000000000027 +S315E08091E08000000200000000100000000000000087 +S315E08091F00000000000000000000000000000000009 +S315E080920000000000000000000000000000000000F8 +S315E08092100000000000000080000000002000000048 +S315E080922000000000000000000000000000000000D8 +S315E080923000000000020000000000000000000000C6 +S315E08092400000002000000000000000000000000098 +S315E080925000000000000000000000000000000100A7 +S315E08092600000000000000000000000000000002078 +S315E08092700000000000000000000000000000000088 +S315E08092800000000000000000000000000000000177 +S315E08092900000000000000000000000000000000860 +S315E08092A00000000000000000000000000000000058 +S315E08092B00000000000000000000000000000000048 +S315E08092C08000000000000000000000000040000078 +S315E08092D000000000000000FC0D000000000000001F +S315E08092E010000000200000000010000010002000A8 +S315E08092F00010000010002000001020000010200068 +S315E080930000000020000000000010000000001000B7 +S315E080931000000000000000001000100000100000B7 +S315E08093201000000000100000100010000050000047 +S315E08093303000000020000000000000200020000037 +S315E08093402000000000000000002000004000000037 +S315E080935000000000000000000000000000000000A7 +S315E0809360000000000000000000000000000000088F +S315E08093700000000000000000000000000000000087 +S315E08093800000000000000000000000000000000077 +S315E08093900000000000000000000000000000000067 +S315E08093A00000000000000000000000000000000057 +S315E08093B00000000000000000000000000000000047 +S315E08093C00000000000000000000000000000000037 +S315E08093D00000002000000000000000000000000007 +S315E08093E00000000000000000000000000000000017 +S315E08093F00000000000000000000000000000000007 +S315E080940000000000000000000000000000000000F6 +S315E080941000000000000000000000000000000000E6 +S315E080942000000020000000200020006000000020F6 +S315E08094302000002000000020000000200000000046 +S315E08094400000000000000000200020000000200056 +S315E08094507F480020000000000000000000000000BF +S315E08094600010000010000000000000000000000076 +S315E0809470001000002000000008000020000000002E +S315E08094800010000000000000100000000000000056 +S315E08094900000000000000000002000000000000046 +S315E08094A000001000000040000020000000002000C6 +S315E08094B000000000200020000000200000000000E6 +S315E08094C000002000000000000040000000000002D4 +S315E08094D00000000000401000000000000000400096 +S315E08094E000000000000000080000000000002000EE +S315E08094F00000000000000000000000000000000006 +S315E080950000000000000000000000000000000000F5 +S315E080951000000000000000000000020000000000E3 +S315E080952000000000000000000000000000000020B5 +S315E080953000000000000000000000000000000000C5 +S315E080954000000000000000000100000000000000B4 +S315E080955000000000000000000000000000000000A5 +S315E08095600000000000000000000000000000000095 +S315E08095700000000000000000000000000000000085 +S315E0809580000000000000000000000008000000006D +S315E08095900000000000000000000000002000000045 +S315E08095A020200040200000000020800020000000F5 +S315E08095B000000000000040000040000000000000C5 +S315E08095C0200000000000002000389A000000000023 +S315E08095D000001000000000000000002020001000C5 +S315E08095E020000010000010000020000000001000A5 +S315E08095F000200000000000000000000000000000E5 +S315E080960000000000000000000000100010000010C4 +S315E08096100000100000001000200000001000001084 +S315E08096200020001000001000000000000000000094 +S315E08096300000000000000000000000000000400084 +S315E08096400000000000000000000000008002000032 +S315E080965000000000000000000000000000000000A4 +S315E08096600000000000000000000000000000000094 +S315E08096700000000000000000000000000000000084 +S315E08096800000000000000000000000000000000074 +S315E080969000000000000000800000000000000000E4 +S315E08096A00000000000000000000000000000000054 +S315E08096B00000000000000000000000000000000044 +S315E08096C00000000020000000000000000000000014 +S315E08096D00000000000000000000000000000000024 +S315E08096E00000000000000000000000000000000014 +S315E08096F000000020000000000000000000000000E4 +S315E080970000000000000000010000000000000000F2 +S315E080971000000000000000000000000000000000E3 +S315E08097200020000000000000002000000020000073 +S315E08097300000000000000000000020002000000083 +S315E080974000006C0200000000102000000000000015 +S315E08097500000000000000000000020000000000083 +S315E08097600000000000002010000000000000000063 +S315E08097700000000000000000000000100010000063 +S315E0809780000400000000000000100000000000203F +S315E08097900000104000100040000000003000000093 +S315E08097A000000000000000402000000020000000D3 +S315E08097B000000000200000004000000000000000E3 +S315E08097C00000000000000000000000000000000033 +S315E08097D00000000000000000000000000000000023 +S315E08097E00000000000000000000000000000000013 +S315E08097F00000000000000000000000000000000003 +S315E080980000000000200000000000000000000000D2 +S315E080981000000000000000000000000000000000E2 +S315E080982000000000000000200000000000000000B2 +S315E080983000000000000000000000000000000000C2 +S315E080984000000000000000000000000000000000B2 +S315E080985000000000000000000000000000000000A2 +S315E08098600000000000000000000000000000000092 +S315E08098700000000000000000000000000000000082 +S315E08098800000000000004000002000000000000012 +S315E08098900000002000002000000040000000600082 +S315E08098A000002000010000000000000000000040F1 +S315E08098B00000200020000000000000347D00000051 +S315E08098C00000000000000000100000000000000022 +S315E08098D000000000001000100800000000000000FA +S315E08098E00000000000000000000000000000000012 +S315E08098F00000000000000000000000000000000002 +S315E080990000000000000000100000000000000000E1 +S315E080991000000000000000000000000000000000E1 +S315E080992000000000000000000000001000000000C1 +S315E080993000000000000000000000000000000000C1 +S315E080994000000000000000000000000000000000B1 +S315E08099500000000000100000000000000000000091 +S315E08099600000000000000000000000000000000091 +S315E08099700000000000000000000000000000000081 +S315E08099800000000000000000002000000000000051 +S315E08099900000000000000000000000000000000061 +S315E08099A00000000000000000000000000000000051 +S315E08099B020000000008000000000000000000000A1 +S315E08099C00000000000000000000000000000000031 +S315E08099D000000000000000000000000000004000E1 +S315E08099E00000000000000000000000000000000011 +S315E08099F00000000000000000000000000000000001 +S315E0809A0000000000000000000000000000004000B0 +S315E0809A100000002000000000000000400000000080 +S315E0809A2000000000000000000020000000000000B0 +S315E0809A3000000000ABCF0000009000200000000096 +S315E0809A400000100000000000000000200000100070 +S315E0809A501000000000000020001000000000000060 +S315E0809A600000000000000000000000000010000080 +S315E0809A70000000140000000000000010000000104C +S315E0809A800020001000400000100040000000300080 +S315E0809A9000000000000000000020400000002000E0 +S315E0809AA000000010000020000000400000000000E0 +S315E0809AB00000000000000000000000000000000040 +S315E0809AC00000000000000000000000000000100020 +S315E0809AD00000000000000000000000000000000020 +S315E0809AE00000000000000000000000000000000010 +S315E0809AF00000000000000000000000000000000000 +S315E0809B0000200000000000000000000000000000CF +S315E0809B1000000000000000000000200000000000BF +S315E0809B20000000000000000000000000008000004F +S315E0809B3000000000000000000000000000000000BF +S315E0809B4000000000000000000000000000000000AF +S315E0809B50000000000000000000000000000000009F +S315E0809B60000000000000000000000000000000008F +S315E0809B70000000000000000040000000200000001F +S315E0809B8000000000000020200000004000000000EF +S315E0809B9060000000200100000000000000000000DE +S315E0809BA000402000000020000000000000BCFA0019 +S315E0809BB0000000000000000000001000000000002F +S315E0809BC000000000000020000000000000002000EF +S315E0809BD000000000200000000000000000002000DF +S315E0809BE000001020000000100000002000000000AF +S315E0809BF00020000000880000000000200000000037 +S315E0809C0000100000000000000000000000000000DE +S315E0809C1000000000000000000000000000000000DE +S315E0809C20000000000000000000000000400000008E +S315E0809C30000000000000000040000000004000003E +S315E0809C4000000000000000000000000000000000AE +S315E0809C50000000100000000000000000000000008E +S315E0809C60000000000000000000400000000000004E +S315E0809C70000000000000000000000000000000007E +S315E0809C80000000000000000000000000000000006E +S315E0809C90000000000000000000000000000000005E +S315E0809CA000000000000000000080000000000000CE +S315E0809CB0000000000000000000000000000000003E +S315E0809CC0000000000000000000000000000000002E +S315E0809CD000000000000000400000000000000000DE +S315E0809CE0000001000000000000000000000000000D +S315E0809CF000000000000000200000200000000000BE +S315E0809D0000000000000000000000000020000000CD +S315E0809D10000060000000000000000000004000201D +S315E0809D20000000000000B6DE0000800000000000B9 +S315E0809D3000000010000000000000000000000000AD +S315E0809D4000000000000000000000000000000000AD +S315E0809D50000000000000000000000000000000009D +S315E0809D60000000000000000000000000000000008D +S315E0809D70000000004000000000001000000000002D +S315E0809D80000000000000000000000000000000006D +S315E0809D90000000000000000000000000000000005D +S315E0809DA0000000000000000000000000000000004D +S315E0809DB0000000000000000000000000000000003D +S315E0809DC0000000000000000000000000000000002D +S315E0809DD0000000000000000000000000000000001D +S315E0809DE0000000000000000000000000000000000D +S315E0809DF000000000000000000000000000000000FD +S315E0809E0000000000000000000000000000000000EC +S315E0809E10000000000000008000000000000000005C +S315E0809E2000000000000000000000000000000000CC +S315E0809E3000000000000000000000000000000000BC +S315E0809E4000000000000000000000000000000000AC +S315E0809E50000000000000000000000000000000009C +S315E0809E60000000000000000000000000000000008C +S315E0809E70000000200000000000000000000000005C +S315E0809E80000000000000000000000000000000006C +S315E0809E9000000000000000000000000000000096C6 +S315E0809EA096000000000000000000000000000000B6 +S315E0809EB0000000100000000000000000000000002C +S315E0809EC0000000000000002000000000000000000C +S315E0809ED000000000300000001000000000000010CC +S315E0809EE000000020000000000000000000200000CC +S315E0809EF000000000000000000000000000000000FC +S315E0809F0000000000000000000000000000000000EB +S315E0809F10000000000000000000000000000040009B +S315E0809F20000000000000000000004000000040004B +S315E0809F3000000000000000000000000000000000BB +S315E0809F40000000000010000000000000000000009B +S315E0809F50000000000000000000000000000000009B +S315E0809F60000000000000000000002000000000006B +S315E0809F70000000000000000000000000000000007B +S315E0809F80000000000000000000000000000000006B +S315E0809F90000000000000000000000000000000005B +S315E0809FA0000000000000000000000000000000004B +S315E0809FB0000000000000000000000000000000003B +S315E0809FC000000000000000000040000000000000EB +S315E0809FD0000000000000000000000000000000001B +S315E0809FE000000000000000400000000000000000CB +S315E0809FF000000000000000000000000000000000FB +S315E080A000000000004000000000000000000000406A +S315E080A0100020000000000000CB520000000000009D +S315E080A02000000000000000000000000000000000CA +S315E080A030000020000000000000200000000000007A +S315E080A040000000000000000000200000000000008A +S315E080A05000000000000020000000000000000080FA +S315E080A0600800000000000000000000000000000082 +S315E080A070000000000000000000000000000000007A +S315E080A080000000000000000000000000000000006A +S315E080A090000000000000000000000000000000005A +S315E080A0A0000000000000000000000000000000004A +S315E080A0B0000000000000000000000000000000003A +S315E080A0C0000000000000000000000000000000002A +S315E080A0D000000040000000000000000000000000DA +S315E080A0E0000000000000000000000000000000000A +S315E080A0F000000000000000000040000000000000BA +S315E080A10000000000000000000000000000000000E9 +S315E080A1100000208000000000000000000000000039 +S315E080A12000000000000000000000000000000000C9 +S315E080A1300080000000000000000000000000000039 +S315E080A14000000000000000000000000000010000A8 +S315E080A1500000000000000000000000000000000099 +S315E080A1600000200000000000000000000000000069 +S315E080A1700000000000000000202000000000200019 +S315E080A1800000000000000000000000000000000069 +S315E080A1900082C50000000000000000000000000012 +S315E080A1A00000000000101000000000000000000029 +S315E080A1B00000000000000000000000000000000039 +S315E080A1C00000000000000000000010001000000009 +S315E080A1D000000000100000100000000000000000F9 +S315E080A1E010000000100000001000000000000000D9 +S315E080A1F000000000000000000000000000000000F9 +S315E080A20000000000000000000000000000000000E8 +S315E080A21000000000000000000000000000000000D8 +S315E080A22000000000000000000000000000000000C8 +S315E080A23000000000000000000000000000000000B8 +S315E080A24000000000000000000000000000000000A8 +S315E080A2500000000000000000000000000000000098 +S315E080A2600000000000000000000000000000000088 +S315E080A2700000000000000000000000000000000078 +S315E080A2800000000000000000000000000000000068 +S315E080A2900000000000000000000000000000000058 +S315E080A2A00000000000000000000000000000000048 +S315E080A2B00000000000000000000000000000000038 +S315E080A2C00000000000000000000000000000000028 +S315E080A2D00000000000000000000000000000000018 +S315E080A2E000000000000000000020000000000000E8 +S315E080A2F00000200000202000000000000000000098 +S315E080A30000000000200000000000B0EC000080901B +S315E080A31000000000000000000000000000000000D7 +S315E080A32000000000000000000000000000000000C7 +S315E080A33000000000000000000000000000000000B7 +S315E080A34000000000000000000000000000000000A7 +S315E080A3500000000000000000000000000000000097 +S315E080A3600000000000000000000000000000000087 +S315E080A3700000000000000000000000000000000077 +S315E080A3800000000000000000000000000000000067 +S315E080A3900000000000000000000000000000000057 +S315E080A3A00000000000000000000000000000000047 +S315E080A3B00000000000000000000000000000000037 +S315E080A3C00000000000000000000000000000000027 +S315E080A3D00000000000000000000000000000000017 +S315E080A3E00000000000000000000000000000000007 +S315E080A3F000000000000000000000000000000000F7 +S315E080A40000000000000000000000000000000000E6 +S315E080A41000000000000000000000000000000000D6 +S315E080A42000000000000000000000000000000000C6 +S315E080A43000000000000000000000000000000000B6 +S315E080A44000000000000000000000000000000000A6 +S315E080A4500000000000000000000000000000200076 +S315E080A4600000000000000000000020000000000066 +S315E080A4700000000000000000000000000000000076 +S315E080A480210100A6AC0000000000000000000000F2 +S315E080A4900000000000000000000000000000000056 +S315E080A4A00000100000000000000010000000000026 +S315E080A4B00000000000000000000000100000000026 +S315E080A4C00000000000000000000000000000000026 +S315E080A4D00000000000000000000000000000000016 +S315E080A4E00000000000000000000000000000000006 +S315E080A4F000000000000000000000000000000000F6 +S315E080A50000000000000000000000000000000000E5 +S315E080A51000000000000000000000000000000000D5 +S315E080A52000000000000000000000000000000000C5 +S315E080A53000000000000000000000000000000000B5 +S315E080A54000000000000000000000000000000000A5 +S315E080A5500000000000000000000000000000000095 +S315E080A5600000000000000000000000000000000085 +S315E080A5700000000000000000000000000000000075 +S315E080A5800000000000000000000000000000000065 +S315E080A5900000000000000000000000000000000055 +S315E080A5A00000000000000000000000000000000045 +S315E080A5B00000000000000000000000000000000035 +S315E080A5C00000000000000000000000000000000025 +S315E080A5D000000000000000000000000020000000F5 +S315E080A5E00000000000000000000000000000000005 +S315E080A5F0000020000020000000000000912A0010EA +S315E080A60000000000000000000000000000000000E4 +S315E080A61000000000000000100000000000000000C4 +S315E080A62000000000000000000000000000000000C4 +S315E080A6300000000000001000000000000010000094 +S315E080A6401000000000000000000010001000100064 +S315E080A6501010000000000000000000000000000074 +S315E080A6600000000000000000000000000000000084 +S315E080A6700000000000000000000000000000000074 +S315E080A6800000000000000000000000000000000064 +S315E080A6900000000000000000000000000000000054 +S315E080A6A00000000000000000000000000000000044 +S315E080A6B00000000000000000000000000000000034 +S315E080A6C00000000000000000000000000000000024 +S315E080A6D00000000000000000000000000000000014 +S315E080A6E00000000000000000000000000000000004 +S315E080A6F000000000000000000000000000000000F4 +S315E080A70000000000000000000000000000000000E3 +S315E080A71000000000000000000000000000000000D3 +S315E080A72000000000000000000000000000000000C3 +S315E080A73000000000000000000000000000000000B3 +S315E080A74000000000000000000000000000000000A3 +S315E080A7500000000000000000000000000000200073 +S315E080A7600000000000000000000000000000000083 +S315E080A7700000000000ADAF00000010000000000007 +S315E080A7800000000000000000000000000000000063 +S315E080A7900000000000000000000000000000000053 +S315E080A7A00000000000000000001000000000000033 +S315E080A7B00000001000000000000000000010001003 +S315E080A7C00000000000000000000000000010000013 +S315E080A7D00000000000000000000000000000000013 +S315E080A7E00000000000000000000000000000000003 +S315E080A7F000000000000000000000000000000000F3 +S315E080A80000000000000000000000000000000000E2 +S315E080A81000000000000000000000000000000000D2 +S315E080A82000000000000000000000000000000000C2 +S315E080A83000000000000000000000000000000000B2 +S315E080A84000000000000000000000000000000000A2 +S315E080A8500000000000000000000000000000000092 +S315E080A8600000000000000000000000000000000082 +S315E080A8700000000000000000000000000000000072 +S315E080A8800000000000000000000000000000000062 +S315E080A8900000000000000000000000000000000052 +S315E080A8A00000000000000000000000000000000042 +S315E080A8B00000000000000000000000000000000032 +S315E080A8C00000000000000000000000000020000002 +S315E080A8D000000000200000000000200000000000D2 +S315E080A8E000000000000000000020000020000AA216 +S315E080A8F000000000000000000000100000100000D2 +S315E080A90000000000000000000000100000000000D1 +S315E080A91000100000000000000000000000000000C1 +S315E080A92000000000000000000000000000000000C1 +S315E080A93000000000000000000000000000000000B1 +S315E080A94000000000000000000000000000000000A1 +S315E080A9500000000000000000000000000000000091 +S315E080A9600000000000000000000000000000000081 +S315E080A9700000000000000000000000000000000071 +S315E080A9800000000000000000000000000000000061 +S315E080A9900000000000000000000000000000000051 +S315E080A9A00000000000000000000000000000000041 +S315E080A9B00000000000000000000000000000000031 +S315E080A9C00000000000000000000000000000000021 +S315E080A9D00000000000000000000000000000000011 +S315E080A9E00000000000000000000000000000000001 +S315E080A9F000000000000000000000000000000000F1 +S315E080AA0000000000000000000000000000000000E0 +S315E080AA1000000000000000000000000000000000D0 +S315E080AA2000000000000000000000000000000000C0 +S315E080AA300000000000000000000020000000000090 +S315E080AA4000000000000000000000000000000000A0 +S315E080AA500000000000000000000000000000000090 +S315E080AA602000000000000002460010000000000008 +S315E080AA700000000000000000000000000000000070 +S315E080AA800000000010000000000000000000000050 +S315E080AA900000000000000000000000000000000050 +S315E080AAA00000000000000000000000000000000040 +S315E080AAB00000000000000000000000000000000030 +S315E080AAC00000000010000000000000000000000010 +S315E080AAD00000000000000000000000000000000010 +S315E080AAE00000000000000000000000000000000000 +S315E080AAF000000000000000000000000000000000F0 +S315E080AB0000000000000000000000000000000000DF +S315E080AB1000000000000000000000000000000000CF +S315E080AB2000000000000000000000000000000000BF +S315E080AB3000000000000000000000000000000000AF +S315E080AB40000000000000000000000000000000009F +S315E080AB50000000000000000000000000000000008F +S315E080AB60000000000000000000000000000000007F +S315E080AB70000000000000000000000000000000006F +S315E080AB80000000000000000000000000000000005F +S315E080AB90000000000000000000000000000000004F +S315E080ABA0000000000000000000000000000000003F +S315E080ABB0000000000000000000000000000000002F +S315E080ABC000000020000000000000000000000000FF +S315E080ABD000000000000000010000000020010000ED +S315E080ABE0A2880000000000000000000000000000D5 +S315E080ABF000000000000000000000000000000000EF +S315E080AC0000000000000000000000000010000000CE +S315E080AC1010000000000000000000000000000000BE +S315E080AC2000000000000000001000000000000000AE +S315E080AC30000000000000000000100000000000009E +S315E080AC40000000000000000000000000000000009E +S315E080AC50000000000000000000000000000000008E +S315E080AC60000000000000000000000000000000007E +S315E080AC70000000000000000000000000000000006E +S315E080AC80000000000000000000000000000000005E +S315E080AC90000000000000000000000000000000004E +S315E080ACA0000000000000000000000000000000003E +S315E080ACB0000000000000000000000000000000002E +S315E080ACC0000000000000000000000000000000001E +S315E080ACD0000000000000000000000000000000000E +S315E080ACE000000000000000000000000000000000FE +S315E080ACF000000000000000000000000000000000EE +S315E080AD0000000000000000000000000000000000DD +S315E080AD1000000000000000000000000000000000CD +S315E080AD2000000000000000000000000000000000BD +S315E080AD30000000000000000000200000000000008D +S315E080AD40000000000000002000000000000000007D +S315E080AD50000000000000000100F7C30000000000D2 +S315E080AD60100000000000000000000000100000005D +S315E080AD70001000000000000000000000000000005D +S315E080AD80000000000000000000000000000000005D +S315E080AD90001000000010000000000010000010000D +S315E080ADA0000000000000100000000010000010000D +S315E080ADB0000000000000000000000000000000002D +S315E080ADC0000000000000000000000000000000001D +S315E080ADD0000000000000000000000000000000000D +S315E080ADE000000000000000000000000000000000FD +S315E080ADF000000000000000000000000000000000ED +S315E080AE0000000000000000000000000000000000DC +S315E080AE1000000000000000000000000000000000CC +S315E080AE2000000000000000000000000000000000BC +S315E080AE3000000000000000000000000000000000AC +S315E080AE40000000000000000000000000000000009C +S315E080AE50000000000000000000000000000000008C +S315E080AE60000000000000000000000000000000007C +S315E080AE70000000000000000000000000000000006C +S315E080AE80000000000000000000000000000000005C +S315E080AE90000000000000000000000000000000004C +S315E080AEA0000000000000000020000000000000001C +S315E080AEB0000000000000000000000000200000000C +S315E080AEC0000000000000000000000000000000001C +S315E080AED00000F399000010801000000000000000E0 +S315E080AEE000000000000010000000000000100000DC +S315E080AEF000000000000000000010000000000000DC +S315E080AF0000000000000000000000000010001000BB +S315E080AF10000000001000101000001000000000107B +S315E080AF20000010000000100000001000000000008B +S315E080AF3000000000000000000000000000000000AB +S315E080AF40000000000000000000000000000000009B +S315E080AF50000000000000000000000000000000008B +S315E080AF60000000000000000000000000000000007B +S315E080AF70000000000000000000000000000000006B +S315E080AF80000000000000000000000000000000005B +S315E080AF90000000000000000000000000000000004B +S315E080AFA0000000000000000000000000000000003B +S315E080AFB0000000000000000000000000000000002B +S315E080AFC0000000000000000000000000000000001B +S315E080AFD0000000000000000000000000000000000B +S315E080AFE000000000000000000000000000000000FB +S315E080AFF000000000000000000000000000000000EB +S315E080B00000000000000000000000000000000000DA +S315E080B01000000000000000000000000000000000CA +S315E080B020000000000000000000200000200000007A +S315E080B030002000000000200000000000000000006A +S315E080B04000000020000020200000002CB20000005C +S315E080B050000010000000001000001000000010004A +S315E080B060000000100000100010000000000010003A +S315E080B070000000000000100000000010000000103A +S315E080B080000000000000001000000000000000004A +S315E080B090100000101000000000000000000000001A +S315E080B0A010000010001000001000000000000000FA +S315E080B0B0000000000000000000000000000000002A +S315E080B0C0000000000000000000000000000000001A +S315E080B0D0000000000000000000000000000000000A +S315E080B0E000000000000000000000000000000000FA +S315E080B0F000000000000000000000000000000000EA +S315E080B10000000000000000000000000000000000D9 +S315E080B11000000000000000000000000000000000C9 +S315E080B12000000000000000000000000000000000B9 +S315E080B13000000000000000000000000000000000A9 +S315E080B1400000000000000000000000000000000099 +S315E080B1500000000000000000000000000000000089 +S315E080B1600000000000000000000000000000000079 +S315E080B1700000000000000000000000000000000069 +S315E080B1800000000000000000000000000000000059 +S315E080B1900000000000000000000000000000000049 +S315E080B1A00000002000202000000000002000200099 +S315E080B1B02000200000000000000021000020200088 +S315E080B1C000000000CBA80000800010100000000006 +S315E080B1D000001010000000000000101000000000C9 +S315E080B1E000101000000000000000100000000000C9 +S315E080B1F000001010000000000000101000000000A9 +S315E080B2000000000010000000101010000000000098 +S315E080B2101010100000000000101000000000000078 +S315E080B2201010000000000000000000000000000098 +S315E080B23000000000000000000000000000000000A8 +S315E080B2400000000000000000000000000000000098 +S315E080B2500000000000000000000000000000000088 +S315E080B2600000000000000000000000000000000078 +S315E080B2700000000000000000000000000000000068 +S315E080B2800000000000000000000000000000000058 +S315E080B2900000000000000000000000000000000048 +S315E080B2A00000000000000000000000000000000038 +S315E080B2B00000000000000000000000000000000028 +S315E080B2C00000000000000000000000000000000018 +S315E080B2D00000000000000000000000000000000008 +S315E080B2E000000000000000000000000000000000F8 +S315E080B2F000000000000000000000000000000000E8 +S315E080B30000000000000000000000000000000000D7 +S315E080B3100000202000000000000000200000000067 +S315E080B3200000202000000000000020200000002017 +S315E080B3300000000000000000202000000018260029 +S315E080B34000000010101000000400301010140020DF +S315E080B3500000100010100000000000000000010056 +S315E080B3600800501100080040000010101010000086 +S315E080B3700000101010100200100080020000008013 +S315E080B38010100010000000001010100000000400F3 +S315E080B39020100014002000001010101000000000A3 +S315E080B3A000000000010008004001000800400000A5 +S315E080B3B00000000000000000000000000200100015 +S315E080B3C08002001000800000000000000000000005 +S315E080B3D000000000040020000004002000000000BF +S315E080B3E000000000000000000000010008004001AD +S315E080B3F0000800400000000000000000000000009F +S315E080B40000000200100080020010008000000000B2 +S315E080B410000000000000000000000400200000049E +S315E080B4200020000000000000000000000000000096 +S315E080B4300100080040010008004000000000000014 +S315E080B44000000000000000000200100080020010F2 +S315E080B4500080000000000000000000000000000006 +S315E080B460040020000004002000000000000000002E +S315E080B47000000000000001000800400100080040D4 +S315E080B48000000000000000000000202020200200D4 +S315E080B49010008002003000800000202020000000A4 +S315E080B4A000000020202004000000000400200000AE +S315E080B4B020002020000183AC000000001010100066 +S315E080B4C000000010101010000000000010101000A6 +S315E080B4D000000010100000000000001010000000C6 +S315E080B4E00000001010101000000000101010000086 +S315E080B4F000100000000000000010000010000000B6 +S315E080B5000010101000000000000010000000000095 +S315E080B5100010101010000000000000000000000085 +S315E080B52000000000000000000000000000000000B5 +S315E080B53000000000000000000000000000000000A5 +S315E080B5400000000000000000000000000000000095 +S315E080B5500000000000000000000000000000000085 +S315E080B5600000000000000000000000000000000075 +S315E080B5700000000000000000000000000000000065 +S315E080B5800000000000000000000000000000000055 +S315E080B5900000000000000000000000000000000045 +S315E080B5A00000000000000000000000000000000035 +S315E080B5B00000000000000000000000000000000025 +S315E080B5C00000000000000000000000000000000015 +S315E080B5D00000000000000000000000000000000005 +S315E080B5E000000000000000000000000000000000F5 +S315E080B5F000000000000000000000000000000000E5 +S315E080B6000000002020202000000000000000000054 +S315E080B6100000002020200000000000002020200004 +S315E080B6200000000000000000000000000000008A2A +S315E080B630160000001000101000000000101010101E +S315E080B64080000000001010100000000010100000C4 +S315E080B6500000000010100000000000001010101024 +S315E080B6600000000010100000000000000000000054 +S315E080B6700000000000000000000010100010000034 +S315E080B6800000001000000000000010101010000004 +S315E080B6900000000000000000000000000000000044 +S315E080B6A00000000000000000000000000000000034 +S315E080B6B00000000000000000000000000000000024 +S315E080B6C00000000000000000000000000000000014 +S315E080B6D00000000000000000000000000000000004 +S315E080B6E000000000000000000000000000000000F4 +S315E080B6F000000000000000000000000000000000E4 +S315E080B70000000000000000000000000000000000D3 +S315E080B71000000000000000000000000000000000C3 +S315E080B72000000000000000000000000000000000B3 +S315E080B73000000000000000000000000000000000A3 +S315E080B7400000000000000000000000000000000093 +S315E080B7500000000000000000000000000000000083 +S315E080B7600000000000000000000000000000000073 +S315E080B77000000000000000000000000020202020E3 +S315E080B78000000000000020000000000020200020D3 +S315E080B79000000000200020200000000000000000E3 +S315E080B7A00000000000000000B2EB00008090001076 +S315E080B7B010000000001010101000000000100010B3 +S315E080B7C010000000000000000000000000101000E3 +S315E080B7D000000000001010101000000000101000A3 +S315E080B7E010000000000000000000000010000000D3 +S315E080B7F00000001010001000000000001010000093 +S315E080B8000000001010101000000000000000000092 +S315E080B81000000000000000000000000000000000C2 +S315E080B82000000000000000000000000000000000B2 +S315E080B83000000000000000000000000000000000A2 +S315E080B8400000000000000000000000000000000092 +S315E080B8500000000000000000000000000000000082 +S315E080B8600000000000000000000000000000000072 +S315E080B8700000000000000000000000000000000062 +S315E080B8800000000000000000000000000000000052 +S315E080B8900000000000000000000000000000000042 +S315E080B8A00000000000000000000000000000000032 +S315E080B8B00000000000000000000000000000000022 +S315E080B8C00000000000000000000000000000000012 +S315E080B8D00000000000000000000000000000000002 +S315E080B8E000000000000000000000000000000000F2 +S315E080B8F00000000000202020200000000000000062 +S315E080B9000000000000202000200000000020002031 +S315E080B910200000000000000000000000202021013F +S315E080B920005E29000000100000000000000000001A +S315E080B9300000000000000010000000000000101071 +S315E080B9400000000000000000000000000000000091 +S315E080B9500000000000000000101000000000000061 +S315E080B9600000000010100000000000000000001041 +S315E080B9700000000010001000000000000000000041 +S315E080B9800000000000000000000000000000000051 +S315E080B9900000000000000000000000000000000041 +S315E080B9A00000000000000000000000000000000031 +S315E080B9B00000000000000000000000000000000021 +S315E080B9C00000000000000000000000000000000011 +S315E080B9D00000000000000000000000000000000001 +S315E080B9E000000000000000000000000000000000F1 +S315E080B9F000000000000000000000000000000000E1 +S315E080BA0000000000000000000000000000000000D0 +S315E080BA1000000000000000000000000000000000C0 +S315E080BA2000000000000000000000000000000000B0 +S315E080BA3000000000000000000000000000000000A0 +S315E080BA400000000000000000000000000000000090 +S315E080BA500000000000000000000000000000000080 +S315E080BA600000000000000000000000000000000070 +S315E080BA700000000000000000000000000000000060 +S315E080BA800020000000002000000000000000000010 +S315E080BA9000000000002000000000005C00000010B4 +S315E080BAA00000000000000000000000000000001020 +S315E080BAB00000000000000000000000000000000020 +S315E080BAC00000000000000000000000000000000010 +S315E080BAD000101000000000000000000000101000C0 +S315E080BAE000000000000000001000000000001000D0 +S315E080BAF000000000000000000000000000000000E0 +S315E080BB0000000000000000000000000000000000CF +S315E080BB1000000000000000000000000000000000BF +S315E080BB2000000000000000000000000000000000AF +S315E080BB30000000000000000000000000000000009F +S315E080BB40000000000000000000000000000000008F +S315E080BB50000000000000000000000000000000007F +S315E080BB60000000000000000000000000000000006F +S315E080BB70000000000000000000000000000000005F +S315E080BB80000000000000000000000000000000004F +S315E080BB90000000000000000000000000000000003F +S315E080BBA0000000000000000000000000000000002F +S315E080BBB0000000000000000000000000000000001F +S315E080BBC0000000000000000000000000000000000F +S315E080BBD000000000000000000000000000000000FF +S315E080BBE000000000000000000000000000000000EF +S315E080BBF0002000000000000000002000000000207F +S315E080BC0000000000000000000000000000000020AE +S315E080BC10200000B2EC0000000010000000000000F0 +S315E080BC20000000000000000010000000000000009E +S315E080BC30000000000000000000000000000000009E +S315E080BC40000000000000000000000000000000008E +S315E080BC50000000000000000000100000000000006E +S315E080BC60100000000000100000000000000000004E +S315E080BC70000000000000000000000000000000005E +S315E080BC80000000000000000000000000000000004E +S315E080BC90000000000000000000000000000000003E +S315E080BCA0000000000000000000000000000000002E +S315E080BCB0000000000000000000000000000000001E +S315E080BCC0000000000000000000000000000000000E +S315E080BCD000000000000000000000000000000000FE +S315E080BCE000000000000000000000000000000000EE +S315E080BCF000000000000000000000000000000000DE +S315E080BD0000000000000000000000000000000000CD +S315E080BD1000000000000000000000000000000000BD +S315E080BD2000000000000000000000000000000000AD +S315E080BD30000000000000000000000000000000009D +S315E080BD40000000000000000000000000000000008D +S315E080BD50000000000000000000000000000000007D +S315E080BD60000000000000000000000000000000006D +S315E080BD70000020000000000000200000000000001D +S315E080BD800000000000000000202000006354000056 +S315E080BD900000100000000000000004002000000009 +S315E080BDA000001000000000000010100000000000FD +S315E080BDB001000800400000000000000000000000D4 +S315E080BDC0000000000000000002000000800000008B +S315E080BDD000001000000000000010000000000000DD +S315E080BDE014003000000000000000000000000000A9 +S315E080BDF00000000000000100080040000000000094 +S315E080BE0000000000000000000000000000000200CA +S315E080BE10100080000000000000000000000000002C +S315E080BE200000000000000400200000000000000088 +S315E080BE300000000000000000000000000100080093 +S315E080BE40400000000000000000000000000000004C +S315E080BE5000000000020010008000000000000000EA +S315E080BE600000000000000000000000000400200048 +S315E080BE70000000000000000000000000000000005C +S315E080BE800000010008004000000000000000000003 +S315E080BE9000000000000000000000020010008000AA +S315E080BEA0000000000000000000000000000000002C +S315E080BEB000000400200000000000000000000000F8 +S315E080BEC000000000000000000100080040000000C3 +S315E080BED000000000000000000000000000000000FC +S315E080BEE002001000A000000000000020000000001A +S315E080BEF00000200000000000040000000000002098 +S315E080BF000000000000E543000000000000000000A3 +S315E080BF100000000400200000000000000000000097 +S315E080BF200000001000000000000100080040000052 +S315E080BF30000000000000000000000000000000009B +S315E080BF4000020000108000000000001000000000E9 +S315E080BF500000000000000000000400300000000047 +S315E080BF60000000000000000000000000000000016A +S315E080BF700008004000000000000000000000000013 +S315E080BF8000000000000000020010008000000000B9 +S315E080BF900000000000000000000000000000000437 +S315E080BFA0002000000000000000000000000000000B +S315E080BFB000000000000100080040000000000000D2 +S315E080BFC000000000000000000000000000020010F9 +S315E080BFD0008000000000000000000000000000007B +S315E080BFE000000000000400200000000000000000C7 +S315E080BFF00000000000000000000000010008004092 +S315E080C00000000000000000000000000000000000CA +S315E080C0100000000200100080000000000000000028 +S315E080C0200000000000000000000000040020000086 +S315E080C030000000000000000000000000000000009A +S315E080C0400001000800400000000000000000000041 +S315E080C05000000000000000000002001020800000C8 +S315E080C060000000000000000000000000000000006A +S315E080C0700004000020000000002000010000FB3BDF +S315E080C0800000000010000000000000000400200016 +S315E080C090000000000000000000000000000000003A +S315E080C0A000000100080040000000000000000000E1 +S315E080C0B00000000000100000000002001000800078 +S315E080C0C000001000000000000000001000000000EA +S315E080C0D000001400200000000000000000000000C6 +S315E080C0E000000000000000000100080040000000A1 +S315E080C0F000000000000000000000000000000000DA +S315E080C1000200100080000000000000000000000037 +S315E080C1100000000000000000040020000000000095 +S315E080C12000000000000000000000000000000100A8 +S315E080C1300800400000000000000000000000000051 +S315E080C14000000000000002001000800000000000F7 +S315E080C1500000000000000000000000000000040075 +S315E080C1602000000000000000000000000000000049 +S315E080C1700000000001000800400000000000000010 +S315E080C1800000000000000000000000000200100037 +S315E080C19080000000000000000000000000000000B9 +S315E080C1A00000000004002000000000000000000005 +S315E080C1B000000000000000000000010008004000D0 +S315E080C1C00000000000000000000000000000000009 +S315E080C1D00000020010008000000000000000000067 +S315E080C1E000000000000000000000040020000000C5 +S315E080C1F000000000000100D422000003031C1C6044 +S315E080C2006010100303181C40601010070738384090 +S315E080C21040101007073838C0C01010060730388045 +S315E080C220C011110E0E7070808011110E0E7070802C +S315E080C2308011010C0E6070009003031C1CE0E0107E +S315E080C2401003031C1CE0E010100303181CC0E01070 +S315E080C2501007073838C0C0100007073838C0C0005C +S315E080C260000607303880C001010E0E7070808001B4 +S315E080C270010E0E7070808001010C0E6070008003EC +S315E080C280031C1CE0E0000003031C1CE0E00000034C +S315E080C29003181CC0E0000007073838C0C00000075C +S315E080C2A0073838C0C000000607303880C001010E6C +S315E080C2B00E7070808001010E0E7070808001010C1E +S315E080C2C00E6070008003031C1CE0E0000003031C8A +S315E080C2D01CE0E000000303181CC0E00000070738FC +S315E080C2E038C0C0000007073838C0C00000060730F5 +S315E080C2F03880C001010E0E7070808001010E0E70D4 +S315E080C30070808001010C0E6070008003031C1CE0CD +S315E080C310E0000003031C1CE0E000000303181CC0DF +S315E080C320E0000007073838C0C0000007073838C08B +S315E080C330C000000607303880C001010E0E707080A4 +S315E080C3408001210E0E7070808021210C0E607000BD +S315E080C3508023231C1CE0E0000022221C1CE0E0007D +S315E080C360002202181CC0E0002006063838C0C02033 +S315E080C3700BAC000000000000000010000000000090 +S315E080C38000001010000000000000001000001010F7 +S315E080C3900000100000000010000010000000000007 +S315E080C3A000000010000000100000100000000000F7 +S315E080C3B000100000101000001000000000100000C7 +S315E080C3C000100000101000001000000000000000C7 +S315E080C3D000000000000000000000000000000000F7 +S315E080C3E000000000000000000000000000000000E7 +S315E080C3F000000000000000000000000000000000D7 +S315E080C40000000000000000000000000000000000C6 +S315E080C41000000000000000000000000000000000B6 +S315E080C42000000000000000000000000000000000A6 +S315E080C4300000000000000000000000000000000096 +S315E080C4400000000000000000000000000000000086 +S315E080C4500000000000000000000000000000000076 +S315E080C4600000000000000000000000000000000066 +S315E080C4700000000000000000000000000000000056 +S315E080C4800000000000000000000000000000000046 +S315E080C4900000000000000000000000000000000036 +S315E080C4A00000000000000000000000000000000026 +S315E080C4B00000000000000000000000000000000016 +S315E080C4C00000200000002020000020200000000066 +S315E080C4D00000202000000000000020000000000096 +S315E080C4E0002000002000000020A39600000000004D +S315E080C4F000000000000000000000000000000000D6 +S315E080C50000000000000000000000000000000000C5 +S315E080C510000000000000000001000000200800008C +S315E080C5200000000000000000000000000000004065 +S315E080C5300000000000000000000000000000000095 +S315E080C5400000000000000000000000000000000085 +S315E080C5500000000000001000000000000000000065 +S315E080C5600000000000000000000000000000000065 +S315E080C5700000000000000000000000000000000055 +S315E080C58000000000000000000000000000800000C5 +S315E080C5900000000000000000000000000000000035 +S315E080C5A00000000000000000000000000000000025 +S315E080C5B020000000000000000000000000000000F5 +S315E080C5C00000000000000000000000000000000005 +S315E080C5D000002000000000000000000000000000D5 +S315E080C5E000000000000000000000000000400000A5 +S315E080C5F000000000000000000000000000000000D5 +S315E080C60000000000000100000000000000000000C3 +S315E080C61000000400000000000000000000000000B0 +S315E080C6200000000000000020000000000000000084 +S315E080C630000000000008000000000000000000008C +S315E080C6400000000040000000000000000000000044 +S315E080C6500000000000000000000000000000000074 +S315E080C66000005047000000100000000000000000BD +S315E080C67000000000008000000000000000100000C4 +S315E080C6800000100010001000000000000000000014 +S315E080C6900000000000000000001000000000000024 +S315E080C6A000000010000000001000001000100010D4 +S315E080C6B000001010000010000000000010000000D4 +S315E080C6C010000000000000000000000000000000F4 +S315E080C6D000000000000000000000000000000000F4 +S315E080C6E000000000000000000000000000000000E4 +S315E080C6F000000000000000000000000000000000D4 +S315E080C70000000000000000000000000000000000C3 +S315E080C71000000000000000000000000000000000B3 +S315E080C72000000000000000000000000000000000A3 +S315E080C7300000000000000000000000000000100083 +S315E080C7400000000000000000000020000000000063 +S315E080C7500000000000000000000000000000000073 +S315E080C7600000000000000000000000000000000063 +S315E080C7700000000000000000000000000000000053 +S315E080C7800000000000000000000000000000000043 +S315E080C7900000000000000000000000000000000033 +S315E080C7A000000000000000200000000000200000E3 +S315E080C7B00000202000002000000000000000002093 +S315E080C7C000000000000000200000200000000000C3 +S315E080C7D0000000000000200000000013FD000000C3 +S315E080C7E010000000000000000000000000001000C3 +S315E080C7F000000000000000000000001011000010A2 +S315E080C800000000080040000000000000000000007A +S315E080C8100000001000000000000000001000000092 +S315E080C8200000000000001000001010001000100052 +S315E080C8300000000000100000000000000000000082 +S315E080C8400000000000000000000000000000000082 +S315E080C8500000000000000000000000000000000072 +S315E080C86000000080000000000000000000000000E2 +S315E080C8700000000000000000000000000000000052 +S315E080C8800000000000000000000000000000000042 +S315E080C8900000000000000000000000000000000032 +S315E080C8A00000000000000000000000000000000022 +S315E080C8B000000000000000000000200000000000F2 +S315E080C8C000000020000000000000000000000000E2 +S315E080C8D000000000000000400000000000000000B2 +S315E080C8E000000000000000000000000000000000E2 +S315E080C8F000000000000000000000000000000400CE +S315E080C90000000000002000000000000000000000A1 +S315E080C9100000000000000000400000080000000069 +S315E080C9200000000000000000000000200000002061 +S315E080C9300000000000000000000000000000000091 +S315E080C9402000000000200000000000000000200021 +S315E080C950000000018272000000000000000000007C +S315E080C96000001000000000800000200000000000B1 +S315E080C9701000000000000000000000000000000041 +S315E080C9800000000000000000000000000000000041 +S315E080C9900000000000000000000010000000100011 +S315E080C9A00000000000000000000000002000000001 +S315E080C9B00000100000000000000000000000000001 +S315E080C9C00000000000000000000000000000000001 +S315E080C9D000000000000000000000100000000000E1 +S315E080C9E000000000000000000000000000000000E1 +S315E080C9F000000000000000000000000000000000D1 +S315E080CA0000000000000000000000000000000000C0 +S315E080CA1000000000000000000000000000000000B0 +S315E080CA200000000000000000000000000000001090 +S315E080CA300000000000000000200000000000000070 +S315E080CA400000000000000000000000000000000080 +S315E080CA500000000000000000000000000000000070 +S315E080CA600000000000000000000000000000000060 +S315E080CA700000000000000000000000000000000050 +S315E080CA80000000000000000000000000000100003F +S315E080CA9000000000000000000000200000000020F0 +S315E080CAA00000000000002000000000000000000000 +S315E080CAB000002000000000000000002000000000D0 +S315E080CAC00000000000000000000000000055EA00C1 +S315E080CAD00000000080000000000000000000000070 +S315E080CAE000000000000010000000000000000000D0 +S315E080CAF000000000000000000000000000000000D0 +S315E080CB00100000000000000010000000000000009F +S315E080CB10000000000000000000000000100000009F +S315E080CB20000000000000000000000000000000009F +S315E080CB30000000000000000000000000000000008F +S315E080CB40000000000000000000000000000000007F +S315E080CB50000000000000000000000000000000006F +S315E080CB60000000000000000000000000000000005F +S315E080CB70000000000000000000000000000000004F +S315E080CB80000000000000000000000000000000003F +S315E080CB90000000000000000000000000000000002F +S315E080CBA0000000000000000000000000000000001F +S315E080CBB0000000000000000000000000000000000F +S315E080CBC000000000000000000000000000000000FF +S315E080CBD000000000000000000000000000000000EF +S315E080CBE000000000000000000000000000000000DF +S315E080CBF000000000000000000000000000000000CF +S315E080CC0000000000000000000000000000000000BE +S315E080CC1000000000000000000000000000000000AE +S315E080CC20000000000000000000000000000000009E +S315E080CC30000000000000000000000000002000006E +S315E080CC400000000000001A9E0000808000000000C6 +S315E080CC50000000000000000000000000000000006E +S315E080CC60000000000000000000000000000000005E +S315E080CC70000000000000001000000000000000003E +S315E080CC80000000000010000000000000000000002E +S315E080CC90000000000000000000000000001000001E +S315E080CCA0000000000000000000000000000000001E +S315E080CCB0000000000000000000000000000000000E +S315E080CCC000000000000000000000000000000000FE +S315E080CCD000000000000000000000000000000000EE +S315E080CCE000000000000000000000000000000000DE +S315E080CCF000000000000000000000000000000000CE +S315E080CD0000000000000000000000000000000000BD +S315E080CD1000000000000000000000000000000000AD +S315E080CD20000000000000000000000000000000009D +S315E080CD30000000000000000000000000000000008D +S315E080CD40000000000000000000000000000000007D +S315E080CD50002000000000000000000000000000004D +S315E080CD60000000000000000000400000000000001D +S315E080CD70000000000000000000000000000000004D +S315E080CD80000000000000000000000000000000003D +S315E080CD90000001000000000000000000000000002C +S315E080CDA0000000000000000000000000000000001D +S315E080CDB00000000000000000000000000101001BF0 +S315E080CDC0AC000000000080000000000000000000D1 +S315E080CDD000000000000000001000000000000000DD +S315E080CDE000000000000000000000000000000000DD +S315E080CDF010000000000000000000000000001000AD +S315E080CE0000000000000000000000000000001000AC +S315E080CE1000000000000000000000000000000000AC +S315E080CE20000000000000000000000000000000009C +S315E080CE30000000000000000000000000000000008C +S315E080CE40000000000000000000000000000000007C +S315E080CE50000000000000000000000000000000006C +S315E080CE60000000000000000000000000000000005C +S315E080CE70000000000000000000000000000000004C +S315E080CE80000000000000000000000000000000003C +S315E080CE90000000000000000000000000000000002C +S315E080CEA0000000000000000000000000000000001C +S315E080CEB0000000000000000000000000000000000C +S315E080CEC000000000000000000000000000000000FC +S315E080CED000000000000000000000000000000000EC +S315E080CEE000000000000000000000000000000000DC +S315E080CEF000000000000000000000000000000000CC +S315E080CF0000000000000000000000000000000000BB +S315E080CF1000000000000000000000000000000000AB +S315E080CF20000000000000000000000020000000007B +S315E080CF3000000000000000004C68000000000000D7 +S315E080CF40000000000000100000000000000000006B +S315E080CF50000000000000000010001000000010003B +S315E080CF60000000001000000020001000000000001B +S315E080CF70000000000000000000000000000000004B +S315E080CF80000000100000000000001000100000000B +S315E080CF90101000000000000000000000000000000B +S315E080CFA0000000000080000000000000000000009B +S315E080CFB0000000000080000000000000000000008B +S315E080CFC000000000000000000000000000000000FB +S315E080CFD000000000000000000000000000000000EB +S315E080CFE000000000000000000000000000000000DB +S315E080CFF000000000000000000000000000000000CB +S315E080D00000000000000000000000000000000000BA +S315E080D01000000000000000000000000000000000AA +S315E080D020000000000000000000000000000000009A +S315E080D030000000000000000000000000000000008A +S315E080D040000000000000000000000000000000007A +S315E080D050200000000000000000000000000000004A +S315E080D060000000000000000000000000000000005A +S315E080D070000000000000000000000000000000004A +S315E080D080000000000000000000000000000000003A +S315E080D090000000000000000000000000000000002A +S315E080D0A000000000000000000000000000000040DA +S315E080D0B0011A6C0000000000000000000000000083 +S315E080D0C000000000000000000000000000000000FA +S315E080D0D000000010000000000000000000100000CA +S315E080D0E020000000000000000000000000000000BA +S315E080D0F000000000000000000000000000000000CA +S315E080D10000000000001000000000000000000000A9 +S315E080D11000000000000000000000000000000000A9 +S315E080D1200000000000000000000000000000000099 +S315E080D1300000000000000000000000000000000089 +S315E080D1400000000000000000000000000000000079 +S315E080D1500000000000000000000000000000000069 +S315E080D1600000000000000000000000000000000059 +S315E080D1700000000000000000000000000000000049 +S315E080D1800000000000000000000000000000000039 +S315E080D1900000000000000000000000000000000029 +S315E080D1A00000000000000000000000000000000019 +S315E080D1B00000000000000000000000000000000009 +S315E080D1C000000000000000000020000000000000D9 +S315E080D1D000000000000000000000000000000000E9 +S315E080D1E000000000000000000000000000000000D9 +S315E080D1F000000000000000000000000000000000C9 +S315E080D20000000000000000000000000000000000B8 +S315E080D21000000000000000000000000000000000A8 +S315E080D220000000000000000000001E6B000000000F +S315E080D2300000000000000010000000000000000078 +S315E080D2400000000000000000000010000000001058 +S315E080D2500000000000000000000000001000000058 +S315E080D2600000000000000000000000000000200038 +S315E080D2700000000000100000000000001000000028 +S315E080D2800010000000000000000000000000000028 +S315E080D2900000000000000000000000000000000028 +S315E080D2A00000000000000000000000000000000018 +S315E080D2B00000000000000000000000000000000008 +S315E080D2C000000000000000000000000000000000F8 +S315E080D2D000000000000000000000000000000000E8 +S315E080D2E000000000000000000000000000000000D8 +S315E080D2F00000000000000000000000004000000088 +S315E080D30000000000000000000000000000000000B7 +S315E080D31000000000000000000000000000000000A7 +S315E080D3200000000000000000000000000000000097 +S315E080D3300000000000000000000000000000000087 +S315E080D3400000000000000000000000000000000077 +S315E080D3500000000000000000000000000000000067 +S315E080D3600000000000000000000000000000000057 +S315E080D3700000000000000000000000002000000027 +S315E080D3800000000000000000000000000000000037 +S315E080D3900000000000000000000000000000000027 +S315E080D3A0000040ACC100000000000000000000006A +S315E080D3B00000000000000000000000000000000007 +S315E080D3C000000000000000000000000000000000F7 +S315E080D3D000000000000000000000000000000000E7 +S315E080D3E000000000000000000000000000100000C7 +S315E080D3F000000000000000000000000010000000B7 +S315E080D40000000000000000000000000000000000B6 +S315E080D4100080000000000000000000000000000026 +S315E080D4200080000000000000000000000000000016 +S315E080D4300000000000000000000000000000000086 +S315E080D4400000000000000000000000000000000076 +S315E080D4500000000000002000000000000000000046 +S315E080D4600000000000000000000000000000000056 +S315E080D4700000000000000000000000000000000046 +S315E080D4800000000000000000000000000000000036 +S315E080D4900000000000000000000000000000000026 +S315E080D4A00000000000000000000000000000000016 +S315E080D4B00000000000000000000000000000000006 +S315E080D4C000000000000000000000000000000000F6 +S315E080D4D000000000000000000000000000000000E6 +S315E080D4E000000000000000000000000000000000D6 +S315E080D4F000000000000000000000000000000000C6 +S315E080D50000000000000000000000000000000000B5 +S315E080D51000000000000000000001000059D4000077 +S315E080D5200000000000000000000000000000000095 +S315E080D5300000000000000000000000000000000085 +S315E080D5400000000000000000000000000000000075 +S315E080D5500000000000000000100000000000000055 +S315E080D5600000000000000000000000000000000055 +S315E080D5700000000000000000000000000000000045 +S315E080D5800000000000000000000000000000000035 +S315E080D5900000000000000000000000000000000025 +S315E080D5A00000000000000000000000000000000015 +S315E080D5B00000000000000000000000000000000005 +S315E080D5C000000000000000000000000000000000F5 +S315E080D5D000000000000000000000000000000000E5 +S315E080D5E000000000000000000000000000000000D5 +S315E080D5F000000000000000000000000000000000C5 +S315E080D60000000000000000000000000000000000B4 +S315E080D61000000000000000000000000000000000A4 +S315E080D6200000000000000000000000000000000094 +S315E080D6300000000000000000000000000000000084 +S315E080D6400000000000000000000000000000000074 +S315E080D6500000000000000000000000000000000064 +S315E080D6600000000000000000000000000000000054 +S315E080D6700000000000000000000000000000000044 +S315E080D6800000000000000000000001000000000033 +S315E080D6900000200001F82C000000000000000000DF +S315E080D6A00000000000000000000000000000000014 +S315E080D6B00000000000000000000000000000000004 +S315E080D6C000000000001000000000000000000000E4 +S315E080D6D000000000000000000000000000000000E4 +S315E080D6E000000000000000000000000000000000D4 +S315E080D6F010000010000000000000000000000000A4 +S315E080D70000000000000000000000000000000000B3 +S315E080D71000000000000000000000000000000000A3 +S315E080D7200000000000000000000000000000000093 +S315E080D7300000000000000000000000000000000083 +S315E080D7400000000000000000000000000000000073 +S315E080D7500000000000000000000000000000000063 +S315E080D7600000000000000000000000000000000053 +S315E080D7700000000000000000000000000000000043 +S315E080D7800000000000000000000000000000000033 +S315E080D7900000000000000000000000000000000023 +S315E080D7A00000000000000000000000000000000013 +S315E080D7B00000000000000000000000000000000003 +S315E080D7C000000000000000000000000000000000F3 +S315E080D7D000000000000000000000000000000000E3 +S315E080D7E000000000000000000000000000000000D3 +S315E080D7F000200000000000000000000000000000A3 +S315E080D80000000000000000000000000000001CE0B6 +S315E080D81000000000000000000000000000000000A2 +S315E080D8200000000000000000000000000000000092 +S315E080D8300000000000100000000000000000000072 +S315E080D8400000000000000000000000000000000072 +S315E080D8500000000000000000000000000000000062 +S315E080D8600000000000000000100000000000000042 +S315E080D8700000000000000000000000000000000042 +S315E080D8800000000000000000000000000000000032 +S315E080D8900000000000000000000000000000000022 +S315E080D8A00000000000000000000000000000000012 +S315E080D8B00000000000000000000000000000000002 +S315E080D8C000000000000000000000000000000000F2 +S315E080D8D000000000000000000000000000000000E2 +S315E080D8E000000000000000000000000000000000D2 +S315E080D8F000000000000000000000000000000000C2 +S315E080D90000000000000000000000000000000000B1 +S315E080D91000000000000000000000000000000000A1 +S315E080D9200000000000000000000000000000000091 +S315E080D9300000000000000000000000000000000081 +S315E080D9400000000000000000000000000000000071 +S315E080D9500000000000000000000000000000000061 +S315E080D9600000000000000000000000000000000051 +S315E080D9700000000000000000000000000000000041 +S315E080D980000000000000005C1700000000000000BE +S315E080D9900000000000001000000000000000000011 +S315E080D9A00000100000000000000000000000000001 +S315E080D9B010000000000000000000100000001000D1 +S315E080D9C000000000000000000000000000000000F1 +S315E080D9D000000000000000000000000000000000E1 +S315E080D9E000000010000000100000000000000000B1 +S315E080D9F000000000000000000000000000000000C1 +S315E080DA0000000000000000000000000000000000B0 +S315E080DA1000000000000000000000000000000000A0 +S315E080DA200000000000000000000000000000000090 +S315E080DA300000000000000000000000000000000080 +S315E080DA400000000000000000000000000000000070 +S315E080DA500000000000000000000000000000000060 +S315E080DA600000000000000000000000000000000050 +S315E080DA700000000000000000000000000000000040 +S315E080DA800000000000000000000000000000000030 +S315E080DA900000000000000000000000000000000020 +S315E080DAA00000000000000000000000000000000010 +S315E080DAB00000000000000000000000000000000000 +S315E080DAC000000000000000000000000000000000F0 +S315E080DAD000000000000000000000000000000000E0 +S315E080DAE000000000000000000000000000000000D0 +S315E080DAF000000000000000000000000000000000C0 +S315E080DB00D2FB0000000000000000000000000000E2 +S315E080DB10000000000000000000000000000000009F +S315E080DB20000000000000000000000000000000008F +S315E080DB30000000000000000000000000000000007F +S315E080DB40000000000000000000000000000010005F +S315E080DB50000000000000000000000000000000005F +S315E080DB60000000000000000000000000000000004F +S315E080DB70000000000000000000000000000000003F +S315E080DB80000000000000000000000000000000002F +S315E080DB90000000000000000000000000000000001F +S315E080DBA0000000000000000000000000000000000F +S315E080DBB000000000000000000000000000000000FF +S315E080DBC000000000000000000000000000000000EF +S315E080DBD000000000000000000000000000000000DF +S315E080DBE000000000000000000000000000000000CF +S315E080DBF000000000000000000000000000000000BF +S315E080DC0000000000000000000000000000000000AE +S315E080DC10000000000000000000000000000000009E +S315E080DC20000000000000000000000000000000008E +S315E080DC30000000000000000000000000000000007E +S315E080DC40000000000000000000000000000000006E +S315E080DC50000000000000000000000000000000005E +S315E080DC60000000000000000000000000000000004E +S315E080DC70000000000000000000EA930000000000C1 +S315E080DC80000000000000000000000000000000002E +S315E080DC90000000000000000000000000000000001E +S315E080DCA000100000000000000000000000000010EE +S315E080DCB000000000000000000000000000000000FE +S315E080DCC000000000000000000000100000000000DE +S315E080DCD000001000000000000000000000000000CE +S315E080DCE000000000000000000000000000000000CE +S315E080DCF000000000000000000000000000000000BE +S315E080DD0000000000000000000000000000000000AD +S315E080DD10000000000000000000000000000000009D +S315E080DD20000000000000000000000000000000008D +S315E080DD30000000000000000000000000000000007D +S315E080DD40000000000000000000000000000000006D +S315E080DD50000000000000000000000000000000005D +S315E080DD60000000000000000000000000000000004D +S315E080DD70000000000000000000000000000000003D +S315E080DD80000000000000000000000000000000002D +S315E080DD90000000000000000000000000000000001D +S315E080DDA0000000000000000000000000000000000D +S315E080DDB000000000000000000000000000000000FD +S315E080DDC000000000000000000000000000000000ED +S315E080DDD000000000000000000000000000000000DD +S315E080DDE000000000000000000000000000000000CD +S315E080DDF00000DEDB00000000000000000000000004 +S315E080DE0000000000000000000000000000000000AC +S315E080DE10000000000000000000000000001000008C +S315E080DE20000000000000000000000000000000008C +S315E080DE30000000000000001000000000000000006C +S315E080DE40000000000000000000000000000000006C +S315E080DE50000000000000000000000000000000005C +S315E080DE60000000000000000000000000000000004C +S315E080DE70000000000000000000000000000000003C +S315E080DE80000000000000000000000000000000002C +S315E080DE90000000000000000000000000000000001C +S315E080DEA0000000000000000000000000000000000C +S315E080DEB000000000000000000000000000000000FC +S315E080DEC000000000000000000000000000000000EC +S315E080DED000000000000000000000000000000000DC +S315E080DEE000000000000000000000000000000000CC +S315E080DEF000000000000000000000000000000000BC +S315E080DF0000000000000000000000000000000000AB +S315E080DF10000000000000000000000000000000009B +S315E080DF20000000000000000000000000000000008B +S315E080DF30000000000000000000000000000000007B +S315E080DF40000000000000000000000000000000006B +S315E080DF50000000000000000000000000000000005B +S315E080DF600000000000000000000000919200000028 +S315E080DF70000000000000000000000000000000003B +S315E080DF8000800000000000000000000000000000AB +S315E080DF90000000000000000000000000000010000B +S315E080DFA010000010100000000000000000000000DB +S315E080DFB000000000000000000000000000000000FB +S315E080DFC000000000000000000010100000000000CB +S315E080DFD000000000000000000000000000000000DB +S315E080DFE000000000000000000000000000000000CB +S315E080DFF000000000000000000000000000000000BB +S315E080E00000000000000000000000000000000000AA +S315E080E010000000000000000000000000000000009A +S315E080E020000000000000000000000000000000008A +S315E080E030000000000000000000000000000000007A +S315E080E040000000000000000000000000000000006A +S315E080E050000000000000000000000000000000005A +S315E080E060000000000000000000000000000000004A +S315E080E070000000000000000000000000000000003A +S315E080E080000000000000000000000000000000002A +S315E080E090000000000000000000000000000000001A +S315E080E0A0000000000000000000000000000000000A +S315E080E0B000000000000000000000000000000000FA +S315E080E0C000000000000000000000000000000000EA +S315E080E0D000000000000000000000000000000000DA +S315E080E0E000000000729100008080000000000000C7 +S315E080E0F000000000000000000000000000000000BA +S315E080E1000000000000000000000000000010000099 +S315E080E1100000000000000000000000000000000099 +S315E080E1200000000000000000000000000000000089 +S315E080E1300000000000000000000000000000000079 +S315E080E1400000000000000000000000000000000069 +S315E080E1500000000000000000000000000000000059 +S315E080E1600000000000000000000000000000000049 +S315E080E1700000000000000000000000000000000039 +S315E080E1800000000000000000000000000000000029 +S315E080E1900000000000000000000000000000000019 +S315E080E1A00000000000000000000000000000000009 +S315E080E1B000000000000000000000000000000000F9 +S315E080E1C000000000000000000000000000000000E9 +S315E080E1D000000000000000000000000000000000D9 +S315E080E1E000000000000000000000000000000000C9 +S315E080E1F000000000000000000000000000000000B9 +S315E080E20000000000000000000000000000000000A8 +S315E080E2100000000000000000000000000000000098 +S315E080E2200000000000000000000000000000000088 +S315E080E2300000000000000000000000000000000078 +S315E080E2400000000000000000000000000000000068 +S315E080E250000000000000000000000101003F6E00A9 +S315E080E2600000000000000000000000000010000038 +S315E080E2700000000000000000100000000000000028 +S315E080E28000000000001000100000000000100000F8 +S315E080E29010001000001000100010000000000000C8 +S315E080E2A00000000000000000000000000000000008 +S315E080E2B000000000000000101000001000100000B8 +S315E080E2C000000000000000000000000000000000E8 +S315E080E2D000000000000000000000000000000000D8 +S315E080E2E000000000000000000000000000000000C8 +S315E080E2F000000000000000000000000000000000B8 +S315E080E30000000000000000000000000000000000A7 +S315E080E3100000000000000000000000000000000097 +S315E080E3200000000000000000000000000000000087 +S315E080E3300000000000000000000000000000000077 +S315E080E3400000000000000000000000000000000067 +S315E080E3500000000000000000000000000000000057 +S315E080E3600000000000000000000000000000000047 +S315E080E3700000000000000000000000000000000037 +S315E080E3800000000000000000000000000000000027 +S315E080E3900000000000000000000000000000000017 +S315E080E3A00000000000000000000000000000000007 +S315E080E3B000000000000000000020000000000000D7 +S315E080E3C000000000000000000000000000000000E7 +S315E080E3D00000000000006C860000000000000000E5 +S315E080E3E000000000000000000000000000000000C7 +S315E080E3F00000000000000000000000000010001097 +S315E080E4000010000000000000000010000000100076 +S315E080E4100000000000000000000000001000000086 +S315E080E4200000001000000010000000000000000066 +S315E080E4301000100010001000000000000000000036 +S315E080E4400000000000000000000000000000000066 +S315E080E4500000000000000000000000000000000056 +S315E080E4600000000000000000000000000000000046 +S315E080E4700000000000000000000000000000000036 +S315E080E4800000000000000000000000000000000026 +S315E080E4900000000000000000000000000000000016 +S315E080E4A00000000000000000000000000000000006 +S315E080E4B000000000000000000000000000000000F6 +S315E080E4C000000000000000000000000000000000E6 +S315E080E4D000000000000000000000000000000000D6 +S315E080E4E000000000000000000000000000000000C6 +S315E080E4F000000000000000000000000000000000B6 +S315E080E50000000000000000000000000000000000A5 +S315E080E5100000000000000000000000000000000095 +S315E080E5200000000000000000000000000000000085 +S315E080E5300000000000000000000000000000000075 +S315E080E5400000000000000000000000000000001B4A +S315E080E55063000000000000000000000000000000F2 +S315E080E56000800000000000000000000000000000C5 +S315E080E5700000000000001000000000000010100005 +S315E080E58000000000001010000000000000000010F5 +S315E080E59000000000100000000000000010000000F5 +S315E080E5A000000010000000000000001010000000D5 +S315E080E5B000000000000000000000000000000000F5 +S315E080E5C000000000000000000000000000000000E5 +S315E080E5D000000000000000000000000000000000D5 +S315E080E5E000000000000000000000000000000000C5 +S315E080E5F000000000000000000000000000000000B5 +S315E080E60000000000000000000000000000000000A4 +S315E080E6100000000000000000000000000000000094 +S315E080E6200000000000000000000000000000000084 +S315E080E6300000000000000000000000000000000074 +S315E080E6400000000000000000000000000000000064 +S315E080E6500000000000000000000000000000000054 +S315E080E6600000000000000000000000000000000044 +S315E080E6700000000000000000000000000000000034 +S315E080E6800000000000000000000000000000000024 +S315E080E6900000000000000000000000000000000014 +S315E080E6A00000000000000000000000000000000004 +S315E080E6B000000000000000000000000000000000F4 +S315E080E6C000000000000000008F92000000000000C3 +S315E080E6D0000000040020000004002000000000008C +S315E080E6E0000000000000000000010008004001007A +S315E080E6F0180040000010100000000000000000102C +S315E080E700000200100080020000008000001010006F +S315E080E710000000000010100000040030100004002B +S315E080E7202000001010001000000000000000000132 +S315E080E73000080040010008004000000000000000E2 +S315E080E74000000000000000020010008002001000BF +S315E080E75080000000000000000000000000000004CF +S315E080E76000200000040020000000000000000000FF +S315E080E77000000000000100080040010008004000A1 +S315E080E7800000000000000000000000000002001011 +S315E080E7900080020010008000000000000000000001 +S315E080E7A000000000000400200000040020000000BB +S315E080E7B000000000000000000000000100080040AA +S315E080E7C0010008004000000000000000000000009A +S315E080E7D000000002001000800200100080000000AF +S315E080E7E0000000000000000000000004002000009F +S315E080E7F0040020000000000000000000000000008F +S315E080E8000001000800400100080040000000000010 +S315E080E81000000000000000000002001000800200FE +S315E080E82010008000000000000000000000000000F2 +S315E080E830000400200000040020000000000000002A +S315E080E8400050F90000000000000000000000000019 +S315E080E85000008000000000000000000000000000D2 +S315E080E8600000000000000000100000000000101012 +S315E080E8700000000000000000001000000000000022 +S315E080E88000000000000010100000000000001010E2 +S315E080E89000000000101000000000000000000010E2 +S315E080E8A00000000000000000000000000000000002 +S315E080E8B000000000000000000000000000000000F2 +S315E080E8C000000000000000000000000000000000E2 +S315E080E8D000000000000000000000000000000000D2 +S315E080E8E000000000000000000000000000000000C2 +S315E080E8F000000000000000000000000000000000B2 +S315E080E90000000000000000000000000000000000A1 +S315E080E9100000000000000000000000000000000091 +S315E080E9200000000000000000000000000000000081 +S315E080E9300000000000000000000000000000000071 +S315E080E9400000000000000000000000000000000061 +S315E080E9500000000000000000000000000000000051 +S315E080E9600000000000000000000000000000000041 +S315E080E9700000000000000000000000000000000031 +S315E080E9800000000000000000000000000000000021 +S315E080E9900000000000000000000000000000000011 +S315E080E9A00000000000000000000000000000000001 +S315E080E9B0000000000000000000007AC200000000B5 +S315E080E9C000000000000000000000000000000000E1 +S315E080E9D000000000000000000000000000000000D1 +S315E080E9E00010000000000010101010000000000071 +S315E080E9F01000100000000000000000000000001081 +S315E080EA001000000000000010100000000010100050 +S315E080EA100000000000100010000000000000000070 +S315E080EA200000000000000000000000000000000080 +S315E080EA300000000000000000000000000000000070 +S315E080EA400000000000000000000000000000000060 +S315E080EA500000000000000000000000000000000050 +S315E080EA600000000000000000000000000000000040 +S315E080EA700000000000000000000000000000000030 +S315E080EA800000000000000000000000000000000020 +S315E080EA900000000000000000000000000000000010 +S315E080EAA00000000000000000000000000000000000 +S315E080EAB000000000000000000000000000000000F0 +S315E080EAC000000000000000000000000000000000E0 +S315E080EAD000000000000000000000000000000000D0 +S315E080EAE000000000000000000000000000000000C0 +S315E080EAF000000000000000000000000000000000B0 +S315E080EB00000000000000000000000000000000009F +S315E080EB10000000000000000000000000000000008F +S315E080EB20000000000000000000000000000000007F +S315E080EB300000009B9900000000000000000000003B +S315E080EB40000000000000000000000000000000005F +S315E080EB50000000000000000000001000000000003F +S315E080EB6010101010000000000000100000000000EF +S315E080EB70000000000000000010100000000000000F +S315E080EB8010100000000010100000000000001000CF +S315E080EB9010000000000000000000000000000000FF +S315E080EBA000000000000000000000000000000000FF +S315E080EBB000000000000000000000000000000000EF +S315E080EBC000000000000000000000000000000000DF +S315E080EBD000000000000000000000000000000000CF +S315E080EBE000000000000000000000000000000000BF +S315E080EBF000000000000000000000000000000000AF +S315E080EC00000000000000000000000000000000009E +S315E080EC10000000000000000000000000000000008E +S315E080EC20000000000000000000000000000000007E +S315E080EC30000000000000000000000000000000006E +S315E080EC40000000000000000000000000000000005E +S315E080EC50000000000000000000000000000000004E +S315E080EC60000000000000000000000000000000003E +S315E080EC70000000000000000000000000000000002E +S315E080EC80000000000000000000000000000000001E +S315E080EC90000000000000000000000000000000000E +S315E080ECA0000000000000000000000000BB770000CC +S315E080ECB000000000000000000000000000000000EE +S315E080ECC000000000000000000000000000000000DE +S315E080ECD000000000100000000000000000000000BE +S315E080ECE000000000100000000000000000000000AE +S315E080ECF000000000000000000000000000000000AE +S315E080ED00000000000000001010100000000000006D +S315E080ED10000000000000000000000000000000008D +S315E080ED20000000000000000000000000000000007D +S315E080ED30000000000000000000000000000000006D +S315E080ED40000000000000000000000000000000005D +S315E080ED50000000000000000000000000000000004D +S315E080ED60000000000000000000000000000000003D +S315E080ED70000000000000000000000000000000002D +S315E080ED80000000000000000000000000000000001D +S315E080ED90000000000000000000000000000000000D +S315E080EDA000000000000000000000000000000000FD +S315E080EDB000000000000000000000000000000000ED +S315E080EDC000000000000000000000000000000000DD +S315E080EDD000000000000000000000000000000000CD +S315E080EDE000000000000000000000000000000000BD +S315E080EDF000000000000000000000000000000000AD +S315E080EE00000000000000000000000000000000009C +S315E080EE10000000000000000000000000000000008C +S315E080EE2000000100009C24000000000000000000BB +S315E080EE30000000000000000000000000000000006C +S315E080EE40000000000000000000000000100000004C +S315E080EE50000000000000000000000000100000003C +S315E080EE60000000000000000000000000000000003C +S315E080EE70000000000000000000000000000000002C +S315E080EE80000010000000000000000000000000000C +S315E080EE90000000000000000000000000000000000C +S315E080EEA000000000000000000000000000000000FC +S315E080EEB000000000000000000000000000000000EC +S315E080EEC000000000000000000000000000000000DC +S315E080EED000000000000000000000000000000000CC +S315E080EEE000000000000000000000000000000000BC +S315E080EEF000000000000000000000000000000000AC +S315E080EF00000000000000000000000000000000009B +S315E080EF10000000000000000000000000000000008B +S315E080EF20000000000000000000000000000000007B +S315E080EF30000000000000000000000000000000006B +S315E080EF40000000000000000000000000000000005B +S315E080EF50000000000000000000000000000000004B +S315E080EF60000000000000000000000000000000003B +S315E080EF70000000000000000000000000000000002B +S315E080EF80000000000000000000000000000000001B +S315E080EF900000000000000000000000000000D94DE5 +S315E080EFA000000000000000000000000000000000FB +S315E080EFB000000000000000000000000000000000EB +S315E080EFC000000000000010000000000000101000AB +S315E080EFD000000000000010000000000000000000BB +S315E080EFE000000000000000000000000000000000BB +S315E080EFF0000000000000000000101000100000007B +S315E080F000000000000000000000000000000000009A +S315E080F010000000000000000000000000000000008A +S315E080F020000000000000000000000000000000007A +S315E080F030000000000000000000000000000000006A +S315E080F040000000000000000000000000000000005A +S315E080F050000000000000000000000000000000004A +S315E080F060000000000000000000000000000000003A +S315E080F070000000000000000000000000000000002A +S315E080F080000000000000000000000000000000001A +S315E080F090000000000000000000000000000000000A +S315E080F0A000000000000000000000000000000000FA +S315E080F0B000000000000000000000000000000000EA +S315E080F0C000000000000000000000000000000000DA +S315E080F0D000000000000000000000000000000000CA +S315E080F0E000000000000000000000000000000000BA +S315E080F0F000000000000000000000000000000000AA +S315E080F1000000000000000000000000000000000099 +S315E080F1100000000000010020A700000000000000C1 +S315E080F1200000000000040020000000000000000055 +S315E080F1300000000000000000000000010008104010 +S315E080F1400000000000001010000000000000100029 +S315E080F15000000002000000800000000000000000C7 +S315E080F1600000000000000000000000040020000015 +S315E080F1700000000000100000000000000000000019 +S315E080F18000010008004000000000000000000000D0 +S315E080F1900000000000000000000200100080000077 +S315E080F1A000000000000000000000000000000000F9 +S315E080F1B000040020000000000000000000000000C5 +S315E080F1C00000000000000001000800400000000090 +S315E080F1D000000000000000000000000000000002C7 +S315E080F1E00010008000000000000000000000000029 +S315E080F1F00000000000000004002000000000000085 +S315E080F200000000000000000000000000000100088F +S315E080F2100040000000000000000000000000000048 +S315E080F22000000000000200100080000000000000E6 +S315E080F2300000000000000000000000000004002044 +S315E080F2400000000000000000000000000000000058 +S315E080F25000000001000800400000000000000000FF +S315E080F26000000000000000000000000200100080A6 +S315E080F2700000000000000000000000000000000028 +S315E080F2800000000400000000000000000000000014 +S315E080F2908DC40000000000000000000000000400B3 +S315E080F2A020000000000000000000000000000000D8 +S315E080F2B0000000000100080040000000000000009F +S315E080F2C000000000000000000000000002000010C6 +S315E080F2D08000000000000000000000000000000048 +S315E080F2E00000000004002000000000000000100084 +S315E080F2F0000000000000000000000100080040005F +S315E080F3000000000000000000000000000000000097 +S315E080F31000000200100080000000000000000000F5 +S315E080F3200000000000000000000004002000000053 +S315E080F3300000000000000000000000000000000067 +S315E080F340010008004000000000000000000000000E +S315E080F35000000000000000000200100080000000B5 +S315E080F3600000000000000000000000000000000037 +S315E080F3700400200000000000000000000000000003 +S315E080F38000000000000001000800400000000000CE +S315E080F3900000000000000000000000000000020005 +S315E080F3A01000800000000000000000000000000067 +S315E080F3B000000000000004002000000000000000C3 +S315E080F3C000000000000000000000000001000800CE +S315E080F3D04000000000000000000000000000000087 +S315E080F3E00000000002001000800000000000000025 +S315E080F3F00000000000000000010000000400002082 +S315E080F400000000000000000000F72500000000007A +S315E080F4100000000000000004002000000000000062 +S315E080F420000000000000000000000000000100086D +S315E080F4301040000000000000000000000000001006 +S315E080F44010000000000200100080000000000000B4 +S315E080F4500000000000000000000000000004002022 +S315E080F4600000000000100000000000000000000026 +S315E080F47000000001000800400000000000000000DD +S315E080F4800000000000000000000000020010008084 +S315E080F4900000000000000000000000000000000006 +S315E080F4A000000004002000000000000000000000D2 +S315E080F4B0000000000000000000010008004000009D +S315E080F4C000000000000000000000000000000000D6 +S315E080F4D00002001000800000000000000000000034 +S315E080F4E00000000000000000000400200000000092 +S315E080F4F000000000000000000000000000000001A5 +S315E080F500000800400000000000000000000000004D +S315E080F51000000000000000020010008000000000F3 +S315E080F5200000000000000000000000000000000471 +S315E080F5300020000000000000000000000000000045 +S315E080F540000000000001000800400000000000000C +S315E080F5500000000000000000000000000002001033 +S315E080F56000800000000000000000000000000000B5 +S315E080F5700000000000040020000001000000000000 +S315E080F58000005EFA000083831C1C606000000303B9 +S315E080F590181C406010000707383840400010070705 +S315E080F5A03838C0C000000607303880C001110E0E22 +S315E080F5B07070808011010E0E7070808001010C0EDB +S315E080F5C06070008003031C1CE0E0100003031C1C39 +S315E080F5D0E0E010100303181CC0E00000070738388D +S315E080F5E0C0C0000007073838C0C0000006073038C2 +S315E080F5F080C001010E0E7070808001010E0E707069 +S315E080F600808001010C0E6070008003031C1CE0E02A +S315E080F610000003031C1CE0E000000303181CC0E0AC +S315E080F620000007073838C0C0000007073838C0C078 +S315E080F63000000607303880C001010E0E70708080B1 +S315E080F64001010E0E7070808001010C0E60700080EA +S315E080F65003031C1CE0E0000003031C1CE0E0000048 +S315E080F6600303181CC0E0000007073838C0C000005C +S315E080F67007073838C0C000000607303880C001016F +S315E080F6800E0E7070808001010E0E70708080010118 +S315E080F6900C0E6070008003031C1CE0E00000030396 +S315E080F6A01C1CE0E000000303181CC0E00000070714 +S315E080F6B03838C0C0000007073838C0C000000607E9 +S315E080F6C0303880C001010E0E7070808001010E0E10 +S315E080F6D07070808001010C0E6070008003231C1C1A +S315E080F6E0E0E0000002021C1CE0E000000202181CC0 +S315E080F6F0C0E0000006063838C1C120DF9500000072 +S315E080F7000000000000000000000010000010000073 +S315E080F7100000000000001000001000000000000063 +S315E080F7200000000000000000000000000010000063 +S315E080F7300000000000000000000000000000000063 +S315E080F7400000000000000000000000000000000053 +S315E080F7500000000000000000000000000000000043 +S315E080F7600000000000000000000000000000000033 +S315E080F7700000000000000000000000000000000023 +S315E080F7800000000000000000000000000000000013 +S315E080F7900000000000000000000000000000000003 +S315E080F7A000000000000000000000000000000000F3 +S315E080F7B000000000000000000000000000000000E3 +S315E080F7C000000000000000000000000000000000D3 +S315E080F7D000000000000000000000000000000000C3 +S315E080F7E000000000000000000000000000000000B3 +S315E080F7F000000000000000000000000000000000A3 +S315E080F8000000000000000000000000000000000092 +S315E080F8100000000000000000000000000000000082 +S315E080F8200000000000000000000000000000000072 +S315E080F8300000000000000000000000000000000062 +S315E080F8400000000000000000000000000000000052 +S315E080F8500000000000002000002000000000000002 +S315E080F8600000000000000000000000000000000032 +S315E080F8702000002060E6000000000000000010008C +S315E080F8800000000000000000000000000000000012 +S315E080F8900000000000000000000000000000000002 +S315E080F8A000000000000000000000000000000020D2 +S315E080F8B000000000000000000000000000000000E2 +S315E080F8C000000000000000000000000000000000D2 +S315E080F8D000000000000004000000000000000000BE +S315E080F8E000000000000000000000000000000000B2 +S315E080F8F000000000000000000000000000000000A2 +S315E080F900000000000000000000020000000000008F +S315E080F910000400000000000000000000000000007D +S315E080F92000000000008000000000000000000001F0 +S315E080F9300000000008000000000000000000000059 +S315E080F9400000000000000000000000000000000051 +S315E080F9500000000000000000000000000000000041 +S315E080F9600000000000100000000000000000000021 +S315E080F9700040000000000080000000000000000061 +S315E080F9800000000000000000000000000000000011 +S315E080F9900000000000000000000000000000000001 +S315E080F9A000000000000000000000000000020000EF +S315E080F9B000000000000000400000000000000000A1 +S315E080F9C000000000000000000000000000000000D1 +S315E080F9D000000000000000000000000000000000C1 +S315E080F9E0000000000000000000000000000D9C0008 +S315E080F9F00000000000000000000000000000001091 +S315E080FA0000000000008000101000000000000000F0 +S315E080FA100000000000000000000000200000000060 +S315E080FA200000000000000000000000000000000070 +S315E080FA300000000000000000001000000010100030 +S315E080FA401000000010000000000000000000000030 +S315E080FA500000000000000000000000000000000040 +S315E080FA6000800000000000000000000000000000B0 +S315E080FA700000000000000000000000000000000020 +S315E080FA800000000000000000000000000000000010 +S315E080FA900000000000000000000000000000000000 +S315E080FAA00000000000800000000000000000000070 +S315E080FAB000000000000000000000000000000000E0 +S315E080FAC000000000000000000000000000000000D0 +S315E080FAD000000000000000000000000000000000C0 +S315E080FAE00000000000000000000000800000000030 +S315E080FAF000000000000000000000000000000000A0 +S315E080FB00000000000000000000000000000000008F +S315E080FB10000000000000000000000000000000007F +S315E080FB20000000000000000000000000000000006F +S315E080FB30000000000000000000000000000000005F +S315E080FB40000000000000000020000000000000002F +S315E080FB50000000000000000000000000000000003F +S315E080FB600000000000201660000000000000000099 +S315E080FB70000000000000001000000000008000107F +S315E080FB8000001000000000000000001000000000EF +S315E080FB9000000000200000000000000000000000DF +S315E080FBA000000000000000000000000000000000EF +S315E080FBB0000000000010001000100000041000009B +S315E080FBC000000000000000000000000000000000CF +S315E080FBD000000000000000000000000000000000BF +S315E080FBE000000000000200000000000000000000AD +S315E080FBF0000000000000000000000000000400009B +S315E080FC00000000000000000000000000000000008E +S315E080FC100000000100000000800008000080000075 +S315E080FC20000000000000000000000000000000006E +S315E080FC30000000000000000000000000000000005E +S315E080FC40000000000000000000000000000000004E +S315E080FC5000000000000000000000000000400000FE +S315E080FC6000000000800000000000000000000000AE +S315E080FC70000000000000000000000000000000001E +S315E080FC80000000000000000000000000000000000E +S315E080FC9000000000000000000000000000000000FE +S315E080FCA000000040000000000000000000000000AE +S315E080FCB000000000000000000000000000000020BE +S315E080FCC000002000000000000000000000000000AE +S315E080FCD0000000000000200000000000002000116D +S315E080FCE0E2000000000000000000000000000000CC +S315E080FCF0000000000000000000000000000000009E +S315E080FD00000000000000000010000000000000007D +S315E080FD10000000000000000000000000000000007D +S315E080FD20000000000000000000000010000000005D +S315E080FD30000000000000002000000000000000003D +S315E080FD40000000000000000000000000000000004D +S315E080FD5000008000000000000000000000000000BD +S315E080FD60000000000000000000000000000000002D +S315E080FD70000000000000000000000000000000001D +S315E080FD80000000000000000000000000000000000D +S315E080FD9000000000000000000000000000000000FD +S315E080FDA0000000000000000000000000008000006D +S315E080FDB000000000000000000000000000000000DD +S315E080FDC000000000000000000000000000000000CD +S315E080FDD000000000000000000000000000000000BD +S315E080FDE000000000000000000000000000000000AD +S315E080FDF0001000800000000000000000000000000D +S315E080FE00000000000000000000000000000000008C +S315E080FE10000000000000000000000000000000007C +S315E080FE20000000000000000000000000000000006C +S315E080FE30000000000002000000000000000000005A +S315E080FE40000000000000000000000000000000004C +S315E080FE5000000000000000008A570000000000005B +S315E080FE6000000000000000000080000000000000AC +S315E080FE70000000800000000000000000000000009C +S315E080FE80000000000000000000000000000000000C +S315E080FE9000000000000000000000000000000000FC +S315E080FEA000000000000000000000000000000000EC +S315E080FEB000000000000000000000000000000000DC +S315E080FEC000000000000000000000000000000000CC +S315E080FED000000000000000000000000000000000BC +S315E080FEE000000000000000000000000000000000AC +S315E080FEF0000000000000000000000000000000009C +S315E080FF00000000000000000000000000000000008B +S315E080FF10000000000000000000000000000000007B +S315E080FF20000000000000000000000000000000006B +S315E080FF30000000000000000000000000000000005B +S315E080FF40000000000000000000000000000000004B +S315E080FF50000000000000000000000000000000003B +S315E080FF60000000000000000000000000000000002B +S315E080FF70000000000000000000000000000000001B +S315E080FF80000000000000000000000000000000000B +S315E080FF9000000000000000000000000000000000FB +S315E080FFA000000000000000000000000000000002E9 +S315E080FFB000000000000000000000000000000000DB +S315E080FFC000002000000000000000000000000000AB +S315E080FFD00055410000000000000000000000000025 +S315E080FFE000000000000000000000000000000800A3 +S315E080FFF0000000000000000000000000000000009B +S315E08100000000000000000000000000000000000089 +S315E08100100000000000000000000000000000000079 +S315E08100200000000000000000000000000000000069 +S315E08100300000000000000000000000000000000059 +S315E08100400000000000000000000000000000000049 +S315E08100500000000000000000000000000000000039 +S315E08100600000000000000000000000000000000029 +S315E08100700000000000000000000000000000000019 +S315E08100800000000000000000000000000000000009 +S315E081009000000000000000000000000000000000F9 +S315E08100A000000000000000000000000000000000E9 +S315E08100B000000000000000000000000000000000D9 +S315E08100C000000000000000000000000000000000C9 +S315E08100D000000000000000000000000000000000B9 +S315E08100E000000000000000000000000000000000A9 +S315E08100F00000000000000000000000000000000099 +S315E08101000000000000000000000000000000000088 +S315E08101100000000000000000000000000000000078 +S315E08101200000000000000000000000000000000068 +S315E08101300000000001000000000000000000000057 +S315E081014000000000000000000000019D00000000AA +S315E08101500000000000000000000000000000000038 +S315E08101600000000000000000000000000000000028 +S315E08101700000000000000000000000000000000018 +S315E08101800000000000000000000000000000000008 +S315E081019000000000000000000000000000000000F8 +S315E08101A000000000000000000000000000000000E8 +S315E08101B000000000000000000000000000000000D8 +S315E08101C000000000000000000000000000000000C8 +S315E08101D000000000000000000000000000000000B8 +S315E08101E000000000000000000000000000000000A8 +S315E08101F00000000000000000000000000000000098 +S315E08102000000000000000000000000000000000087 +S315E08102100000000000000000000000000000000077 +S315E08102200000000000000000000000000000000067 +S315E08102300000000000000000000000000000000057 +S315E08102400000000000000000000000000000000047 +S315E08102500000000000000000000000000000000037 +S315E08102600000000000000000000000000000000027 +S315E08102700000000000000000000000000000000017 +S315E08102800000000000000000000000000000000007 +S315E081029000000000000000000000000000000000F7 +S315E08102A000020000000000000000000000010000E4 +S315E08102B000000000200000000000000000000000B7 +S315E08102C0000000CF070000000000000000000000F1 +S315E08102D000000000000000000000000000000000B7 +S315E08102E000000000000000000000000000000000A7 +S315E08102F00000100000000000000000000000000087 +S315E08103000000000000000000000000000000000086 +S315E08103100000000000000000000000000000400036 +S315E08103200000000000000000000000000000000066 +S315E081033080000000000000000000000000000000D6 +S315E08103400000000000000000000000000000000046 +S315E08103500000000000000000000000000000000036 +S315E08103600000000000000000000000000000000026 +S315E08103700000000000000000000000000000000016 +S315E08103800000000000000000000000000000000006 +S315E081039000000000000000000000000000000000F6 +S315E08103A00000000000000000800000000000000066 +S315E08103B000000000000000000000000000000000D6 +S315E08103C00000000000000000000000000080000046 +S315E08103D000000000000000000000000000000000B6 +S315E08103E000000000000000000000000000000000A6 +S315E08103F00040000000000000000000000000000056 +S315E08104000000000000000000000000000000000085 +S315E08104100000000000000100000000000000000074 +S315E08104200000000000000000000000000000000065 +S315E081043000000000000000000000000073270000BB +S315E08104400000000000000000000000000000000045 +S315E08104500000000000000000000000000000000035 +S315E08104600000000000000000000000000000000025 +S315E08104700000000000000000000000000000000015 +S315E08104800000000000000000000000000000000005 +S315E081049000000000000000000000000000000000F5 +S315E08104A000000000000000000000000000000000E5 +S315E08104B000000000000000000000000000000000D5 +S315E08104C000000000000000000000000000000000C5 +S315E08104D000000000000000000000000000000000B5 +S315E08104E000000000000000000000000000000000A5 +S315E08104F00000000000000000000000000000000095 +S315E08105000000000000000000000000000000000084 +S315E08105100000000000000000000000000000000074 +S315E08105200000000000000000000000000000000064 +S315E08105300000000000000000000000000000000054 +S315E08105400000000000000000000000000000000044 +S315E08105500000000000000000000000000000000034 +S315E081056000000000400000000040000000000000A4 +S315E08105700000000000000000000000000000000014 +S315E08105800000000000000000000000000000000103 +S315E081059000000000000000000000000000000000F4 +S315E08105A000000000000000000000000000000000E4 +S315E08105B00000000100893E0000000000000000000C +S315E08105C000000000100000000000000000000000B4 +S315E08105D000000000000000000000000000000000B4 +S315E08105E000000000000000000000000000000000A4 +S315E08105F00000000000000000000000000000000094 +S315E08106000000000000000000000000000000000083 +S315E08106104000000000000000000000000000000033 +S315E08106200000000000000000000000000000000063 +S315E08106300000000000000000000000000000000053 +S315E08106400000000000000000000000000000000043 +S315E08106500000000000000000000000000000000033 +S315E08106600000000000000000000000000000000023 +S315E08106700000000000000000000000000000000013 +S315E08106800000000000000000000000000000000003 +S315E081069000000000000000000000000000000000F3 +S315E08106A000000000000000000000000000000000E3 +S315E08106B000000000000000000000000000000000D3 +S315E08106C000000000000000000000000000000000C3 +S315E08106D000000000000000000000000000000000B3 +S315E08106E000000000000000000000000000000000A3 +S315E08106F00000000000000000000000000000000093 +S315E08107000000000000000000000000000000000082 +S315E08107100000000000000000000000000000000072 +S315E08107200000000000000000000000000000B902A7 +S315E08107300000000000000000000000000000000052 +S315E08107400000000000000000000000000000000042 +S315E08107500000000000000000000000000000100022 +S315E08107600000000000000000000000000000000022 +S315E08107700000000000000000000000000000000012 +S315E081078000000040000000000000000000000000C2 +S315E08107900000000000000000000000008000000072 +S315E08107A000000000000000000000000000000000E2 +S315E08107B000000000000000000000000000000000D2 +S315E08107C000000000000000000000000000000000C2 +S315E08107D000000000000000000000000000000000B2 +S315E08107E000000000000000000000000000000000A2 +S315E08107F00000000000000000000000000000000092 +S315E08108000000000000000000000000000000000081 +S315E081081000000000800000000000000000000000F1 +S315E08108200000000000000000000000000000000061 +S315E081083000000000000000008000000000000000D1 +S315E08108400000000000000000000000000000000041 +S315E08108500000000000000000000000000000000031 +S315E08108600000000000000000000000000000000021 +S315E08108700000000000000000000000000000000011 +S315E08108800000000000000000000000000000000001 +S315E081089000000000000000000000000000000000F1 +S315E08108A0000000000000001DA8000000008000009C +S315E08108B000000000000000000000000000000000D1 +S315E08108C000000000000000000000000000000000C1 +S315E08108D000000000000000000000000000000000B1 +S315E08108E000000000000000000000000000000000A1 +S315E08108F00000000000000000000000000000000091 +S315E08109000000000000000000000000000000000080 +S315E08109100000000000000000000000000000000070 +S315E08109200000000000000000000000000000000060 +S315E08109300000000000000000000000000000000050 +S315E08109400000000000000000000000000000000040 +S315E08109500000000000000000000000000000000030 +S315E08109600000000000000000000000000000000020 +S315E08109700000000000000000000000000000000010 +S315E08109800000000000000000000000000000000000 +S315E081099000000000000000000000000000000000F0 +S315E08109A000000000000000000000000000000000E0 +S315E08109B000000000000000000000000000000000D0 +S315E08109C000000000000000000000000000000000C0 +S315E08109D000000000000000000000000000000000B0 +S315E08109E000000000000000000000000000000000A0 +S315E08109F00000000000000000000000000000000090 +S315E0810A00000000000000000000000000000000007F +S315E0810A10000000000000000000000000000000006F +S315E0810A20C23C000080800000000000000000000061 +S315E0810A30000000000000000000000000000000004F +S315E0810A40000000000000000000000000000000003F +S315E0810A50000000000000000000000000000000002F +S315E0810A60000000000000000000000000000000001F +S315E0810A70000000000000000000000000000000000F +S315E0810A8000000000000000000000000000000000FF +S315E0810A9000000000000000000000000000000000EF +S315E0810AA000000000000000000000000000000000DF +S315E0810AB000000000000000000000000000000000CF +S315E0810AC000000000000000000000000000000000BF +S315E0810AD000000000000000000000000000000000AF +S315E0810AE0000000000000000000000000000000009F +S315E0810AF0000000000000000000000000000000008F +S315E0810B00000000000000000000000000000000007E +S315E0810B10000000000000000000000000000000006E +S315E0810B20000000000000000000000000000000005E +S315E0810B30000000000000000000000000000000004E +S315E0810B40000000000000000000000000000000003E +S315E0810B50000000000000000000000000000000002E +S315E0810B60000000000000000000000000000000001E +S315E0810B70000000000000000000000000000000000E +S315E0810B8000000000000000010000000000000000FD +S315E0810B90000000000000010100CA430000000000DF +S315E0810BA000000000000000000000000000000000DE +S315E0810BB000000000000000000000000000000000CE +S315E0810BC000000000000000000000000000000000BE +S315E0810BD000000000000000000000000000000000AE +S315E0810BE0000000000000000000000000000000009E +S315E0810BF0000000000000000000000000000000008E +S315E0810C00000000000000000000000000000000007D +S315E0810C10000000000000000000000000000000006D +S315E0810C20000000000000000000000000000000005D +S315E0810C30000000000000000000000000000000004D +S315E0810C40000000000000000000000000000000003D +S315E0810C50000000000000000000000000000000002D +S315E0810C60000000000000000000000000000000001D +S315E0810C70000000000000000000000000000000000D +S315E0810C8000000000000000000000000000000000FD +S315E0810C9000000000000000000000000000000000ED +S315E0810CA000000000000000000000000000000000DD +S315E0810CB000000000000000000000000000000000CD +S315E0810CC000000000000000000000000000000000BD +S315E0810CD000000000000000000000000000000000AD +S315E0810CE0000000000000000000000000000000009D +S315E0810CF0000000000000000000000000000000008D +S315E0810D00000000000000000000000000000000007C +S315E0810D1000003E49000000000000000000000000E5 +S315E0810D20000000000000000000000000000000005C +S315E0810D30000000000000000000000000000000004C +S315E0810D40000000000000000000000000000000003C +S315E0810D50000000000000000000000000000000002C +S315E0810D60000000000000000000000000000000001C +S315E0810D70000000000000000000000000000000000C +S315E0810D8000000000000000000000000000000000FC +S315E0810D9000000000000000000000000000000000EC +S315E0810DA000000000000000000000000000000000DC +S315E0810DB000000000000000000000000000000000CC +S315E0810DC000000000000000000000000000000000BC +S315E0810DD000000000000000000000000000000000AC +S315E0810DE0000000000000000000000000000000009C +S315E0810DF0000000000000000000000000000000008C +S315E0810E00000000000000000000000000000000007B +S315E0810E10000000000000000000000000000000006B +S315E0810E20000000000000000000000000000000005B +S315E0810E30000000000000000000000000000000004B +S315E0810E40000000000000000000000000000000003B +S315E0810E50000000000000000000000000000000002B +S315E0810E60000000000000000000000000000000001B +S315E0810E70000000000000000000000000000000000B +S315E0810E800000000000000000000001FF8900000072 +S315E0810E9000000000000000000000000000000000EB +S315E0810EA000000000000000000000000000000000DB +S315E0810EB000000000000000000000000000000000CB +S315E0810EC000000000000000000000000000000000BB +S315E0810ED000000000000000000000000000000000AB +S315E0810EE0000000000000000000000000000000009B +S315E0810EF0000000000000000000000000000000008B +S315E0810F00000000000000000000000000000000007A +S315E0810F10000000000000000000000000000000006A +S315E0810F20000000000000000000000000000000005A +S315E0810F30000000000000000000000000000000004A +S315E0810F40000000000000000000000000000000003A +S315E0810F50000000000000000000000000000000002A +S315E0810F60000000000000000000000000000000001A +S315E0810F70000000000000000000000000000000000A +S315E0810F8000000000000000000000000000000000FA +S315E0810F9000000000000000000000000000000000EA +S315E0810FA000000000000000000000000000000000DA +S315E0810FB000000000000000000000000000000000CA +S315E0810FC000000000000000000000000000000000BA +S315E0810FD000000000000000000000000000000000AA +S315E0810FE0000000000000000000000000000000009A +S315E0810FF0000000000000000000000000000000008A +S315E0811000000000003E4900000000000000000000F2 +S315E08110100000000000000000000000000000000069 +S315E08110200000000000000000000000000000000059 +S315E08110300000000000000000000000000000000049 +S315E08110400000000000000000000000000000000039 +S315E08110500000000000000000000000000000000029 +S315E08110600000000000000000000000000000000019 +S315E08110700000000000000000000000000000000009 +S315E081108000000000000000000000000000000000F9 +S315E081109000000000000000000000000000000000E9 +S315E08110A000000000000000000000000000000000D9 +S315E08110B000000000000000000000000000000000C9 +S315E08110C000000000000000000000000000000000B9 +S315E08110D000000000000000000000000000000000A9 +S315E08110E00000000000000000000000000000000099 +S315E08110F00000000000000000000000000000000089 +S315E08111000000000000000000000000000000000078 +S315E08111100000000000000000000000000000000068 +S315E08111200000000000000000000000000000000058 +S315E08111300000000000000000000000000000000048 +S315E08111400000000000000000000000000000000038 +S315E08111500000000000000000000000000000000028 +S315E08111600000000000000000000000000000000018 +S315E0811170000000000000000000000000003E490081 +S315E08111800000000000000000800000000000000078 +S315E081119000000000000000000000000000000000E8 +S315E08111A000000000000000000000000000000000D8 +S315E08111B000000000000000000000000000000000C8 +S315E08111C000000000000000000000000000000000B8 +S315E08111D000000000000000000000000000000000A8 +S315E08111E00000000000000000000000000000000098 +S315E08111F00000000000000000000000000000000088 +S315E08112000000000000000000000000000000000077 +S315E08112100000000000000000000000000000000067 +S315E08112200000000000000000000000000000000057 +S315E08112300000000000000000000000000000000047 +S315E08112400000000000000000000000000000000037 +S315E08112500000000000000000000000000000000027 +S315E08112600000000000000000000000000000000017 +S315E08112700000000000000000000000000000000007 +S315E081128000000000000000000000000000000000F7 +S315E081129000000000000000000000000000000000E7 +S315E08112A000000000000000000000000000000000D7 +S315E08112B000000000000000000000000000000000C7 +S315E08112C000000000000000000000000000000000B7 +S315E08112D000000000000000000000000000000000A7 +S315E08112E00000000000000000000000000100000096 +S315E08112F0000000010000C964000000000000000059 +S315E08113000000000000000000000000000000000076 +S315E081131080000000000000000000000000000000E6 +S315E08113200000000000000000000000000000000056 +S315E08113300000000000000000000000000000000046 +S315E08113400000000000000000000000000000000036 +S315E08113500000000000000000000000000000000026 +S315E08113600000000000000000000000000000000016 +S315E08113700000000000000000000000000000000006 +S315E081138000000000000000000000000000000000F6 +S315E081139000000000000000000000000000000000E6 +S315E08113A000000000000000000000000000000000D6 +S315E08113B000000000000000000000000000000000C6 +S315E08113C000000000000000000000000000000000B6 +S315E08113D000000000000000000000000000000000A6 +S315E08113E00000000000000000000000000000000096 +S315E08113F00000000000000000000000000000000086 +S315E08114000000000000000000000000000000000075 +S315E08114100000000000000000000000000000000065 +S315E08114200000000000000000000000000000000055 +S315E08114300000000000000000000000000000000045 +S315E08114400000000000000000000000000000000035 +S315E08114500000000000000000000000000000000025 +S315E08114600000000000000000000000000000015BB9 +S315E0811470DA0000000000000000000000000000002B +S315E081148000000000000000000000000000000000F5 +S315E081149000000000000000000000000000000000E5 +S315E08114A000000000000000000000000000000000D5 +S315E08114B000000000000000000000000000000000C5 +S315E08114C000000000000000000000000000000000B5 +S315E08114D000000000000000000000000000000000A5 +S315E08114E00000000000000000000000000000000095 +S315E08114F00000000000000000000000000000000085 +S315E08115000000000000000000000000000000000074 +S315E08115100000000000000000000000000000000064 +S315E08115200000000000000000000000000000000054 +S315E08115300000000000000000000000000000000044 +S315E08115400000000000000000000000000000000034 +S315E08115500000000000000000000000000000000024 +S315E08115600000000000000000000000000000000014 +S315E08115700000000000000000000000000000000004 +S315E081158000000000000000000000000000000000F4 +S315E081159000000000000000000000000000000000E4 +S315E08115A000000000000000000000000000000000D4 +S315E08115B000000000000000000000000000000000C4 +S315E08115C000000000000000000000000000000000B4 +S315E08115D000000000000000000000000000000000A4 +S315E08115E000000000000000003E490000008000008D +S315E08115F08000000000000000000000000000000004 +S315E08116000000000000000000000000000000000073 +S315E08116100000000000000000000000000000000063 +S315E08116200000000000000000000000000000000053 +S315E08116300000000000000000000000000000000043 +S315E08116400000000000000000000000000000000033 +S315E08116500000000000000000000000000000000023 +S315E08116600000000000000000000000000000000013 +S315E08116700000000000000000000000000000000003 +S315E081168000000000000000000000000000000000F3 +S315E081169000000000000000000000000000000000E3 +S315E08116A000000000000000000000000000000000D3 +S315E08116B000000000000000000000000000000000C3 +S315E08116C000000000000000000000000000000000B3 +S315E08116D000000000000000000000000000000000A3 +S315E08116E00000000000000000000000000000000093 +S315E08116F00000000000000000000000000000000083 +S315E08117000000000000000000000000000000000072 +S315E08117100000000000000000000000000000000062 +S315E08117200000000000000000000000000000000052 +S315E08117300000000000000000000000000000000042 +S315E08117400000000000000000000000000000000032 +S315E08117500000000000000000000000000000000022 +S315E081176000E4FA00000080008000000080000000B4 +S315E08117700000000000000000000000800000000082 +S315E081178000000000000000000000000000000000F2 +S315E081179000000000000000000000000000000000E2 +S315E08117A000000000000000000000000000000000D2 +S315E08117B000000000000000000000000000000000C2 +S315E08117C000000000000000000000000000000000B2 +S315E08117D000000000000000000000000000000000A2 +S315E08117E00000000000000000000000000000000092 +S315E08117F00000000000000000000000000000000082 +S315E08118000000000000000000000000000000000071 +S315E08118100000000000000000000000000000000061 +S315E08118200000000000000000000000000000000051 +S315E08118300000000000000000000000000000000041 +S315E08118400000000000000000000000000000000031 +S315E08118500000000000000000000000000000000021 +S315E08118600000000000000000000000000000000011 +S315E08118700000000000000000000000000000000001 +S315E081188000000000000000000000000000000000F1 +S315E081189000000000000000000000000000000000E1 +S315E08118A000000000000000000000000000000000D1 +S315E08118B000000000000000000000000000000000C1 +S315E08118C000000000000000000000000000000000B1 +S315E08118D000010000000000000000A79F008080005A +S315E08118E00000000000000000000000000000000091 +S315E08118F00000000000000000000000000000000081 +S315E08119000000000000000000000000000000000070 +S315E08119100000000000000000000000000000000060 +S315E08119200000000000000000000000000000000050 +S315E08119300000000000000000000000000000000040 +S315E08119400000000000000000000000000000000030 +S315E08119500000000000000000000000000000000020 +S315E08119600000000000000000000000000000000010 +S315E08119700000000000000000000000000000000000 +S315E081198000000000000000000000000000000000F0 +S315E081199000000000000000000000000000000000E0 +S315E08119A000000000000000000000000000000000D0 +S315E08119B000000000000000000000000000000000C0 +S315E08119C000000000000000000000000000000000B0 +S315E08119D000000000000000000000000000000000A0 +S315E08119E00000000000000000000000000000000090 +S315E08119F00000000000000000000000000000000080 +S315E0811A00000000000000000000000000000000006F +S315E0811A10000000000000000000000000000000005F +S315E0811A20000000000000000000000000000000004F +S315E0811A30000000000000000000000000000000003F +S315E0811A40000000000000000000000000000000002F +S315E0811A50000000580E000000800000000000040035 +S315E0811A6020000004002000000000000000000000CB +S315E0811A70000000000100080040010008004000006D +S315E0811A8000000000000000000000000002001000DD +S315E0811A9080020010008000000000000000000000CD +S315E0811AA00000000004002000000400200000000087 +S315E0811AB00000000000000000000001000800400175 +S315E0811AC00008004000000000000000000000000067 +S315E0811AD0000002001000800200100080000000007B +S315E0811AE00000000000000000000004002000000467 +S315E0811AF0002000000000000000000000000000005F +S315E0811B0001000800400100080040000000000000DC +S315E0811B1000000000000000000200100080020010BA +S315E0811B2000800000000000000000000000000000CE +S315E0811B3004002000000400200000000000000000F6 +S315E0811B40000000000000010008004001000800409C +S315E0811B50000000000000000000000000000002001C +S315E0811B6010008002001000800000000000000000EC +S315E0811B7000000000000004002000000400200000B6 +S315E0811B8000000000000000000000000001000800E5 +S315E0811B904001000800400000000000000000000055 +S315E0811BA000000000020010008002001000800000AA +S315E0811BB0000000000000000000000000040020009A +S315E0811BC0000400200000000000000000093B000046 +S315E0811BD0808000000000000000000000000000009E +S315E0811BE0000000000000000000000000000000008E +S315E0811BF0000000000000000000000000000000007E +S315E0811C00000000000000000000000000000000006D +S315E0811C10000000000000000000000000000000005D +S315E0811C20000000000000000000000000000000004D +S315E0811C30000000000000000000000000000000003D +S315E0811C40000000000000000000000000000000002D +S315E0811C50000000000000000000000000000000001D +S315E0811C60000000000000000000000000000000000D +S315E0811C7000000000000000000000000000000000FD +S315E0811C8000000000000000000000000000000000ED +S315E0811C9000000000000000000000000000000000DD +S315E0811CA000000000000000000000000000000000CD +S315E0811CB000000000000000000000000000000000BD +S315E0811CC000000000000000000000000000000000AD +S315E0811CD0000000000000000000000000000000009D +S315E0811CE0000000000000000000000000000000008D +S315E0811CF0000000000000000000000000000000007D +S315E0811D00000000000000000000000000000000006C +S315E0811D10000000000000000000000000000000005C +S315E0811D20000000000000000000000000000000004C +S315E0811D30000000000000000000000000000000003C +S315E0811D400000000000CBEF00000000000000000072 +S315E0811D50000000000000000000000000000000001C +S315E0811D60000000000000000000000000000000000C +S315E0811D7000000000000000000000000000000000FC +S315E0811D8000000000000000000000000000000000EC +S315E0811D9000000000000000000000000000000000DC +S315E0811DA000000000000000000000000000000000CC +S315E0811DB000000000000000000000000000000000BC +S315E0811DC000000000000000000000000000000000AC +S315E0811DD0000000000000000000000000000000009C +S315E0811DE0000000000000000000000000000000008C +S315E0811DF0000000000000000000000000000000007C +S315E0811E00000000000000000000000000000000006B +S315E0811E10000000000000000000000000000000005B +S315E0811E20000000000000000000000000000000004B +S315E0811E30000000000000000000000000000000003B +S315E0811E40000000000000000000000000000000002B +S315E0811E50000000000000000000000000000000001B +S315E0811E60000000000000000000000000000000000B +S315E0811E7000000000000000000000000000000000FB +S315E0811E8000000000000000000000000000000000EB +S315E0811E9000000000000000000000000000000000DB +S315E0811EA000000000000000000000000000000000CB +S315E0811EB000000000000000000000000000003E4934 +S315E0811EC000008080000000000000000000000000AB +S315E0811ED0000000000000000000000000000000009B +S315E0811EE0000000000000000000000000000000008B +S315E0811EF0000000000000000000000000000000007B +S315E0811F00000000000000000000000000000000006A +S315E0811F10000000000000000000000000000000005A +S315E0811F20000000000000000000000000000000004A +S315E0811F30000000000000000000000000000000003A +S315E0811F40000000000000000000000000000000002A +S315E0811F50000000000000000000000000000000001A +S315E0811F60000000000000000000000000000000000A +S315E0811F7000000000000000000000000000000000FA +S315E0811F8000000000000000000000000000000000EA +S315E0811F9000000000000000000000000000000000DA +S315E0811FA000000000000000000000000000000000CA +S315E0811FB000000000000000000000000000000000BA +S315E0811FC000000000000000000000000000000000AA +S315E0811FD0000000000000000000000000000000009A +S315E0811FE0000000000000000000000000000000008A +S315E0811FF0000000000000000000000000000000007A +S315E08120000000000000000000000000000000000069 +S315E08120100000000000000000000000000000000059 +S315E08120200000000000000000000000000000000049 +S315E0812030000000000101009BBF00000000000000DD +S315E08120400000000000000000000000000000000029 +S315E08120500000000000000000000000000000000019 +S315E08120600000000000000000000000000000000009 +S315E081207000000000000000000000000000000000F9 +S315E081208000000000000000000000000000000000E9 +S315E081209000000000000000000000000000000000D9 +S315E08120A000000000000000000000000000000000C9 +S315E08120B000000000000000000000000000000000B9 +S315E08120C000000000000000000000000000000000A9 +S315E08120D00000000000000000000000000000000099 +S315E08120E00000000000000000000000000000000089 +S315E08120F00000000000000000000000000000000079 +S315E08121000000000000000000000000000000000068 +S315E08121100000000000000000000000000000000058 +S315E08121200000000000000000000000000000000048 +S315E08121300000000000000000000000000000000038 +S315E08121400000000000000000000000000000000028 +S315E08121500000000000000000000000000000000018 +S315E08121600000000000000000000000000000000008 +S315E081217000000000000000000000000000000000F8 +S315E081218000000000000000000000000000000000E8 +S315E081219000000000000000000000000000000000D8 +S315E08121A000000000000000000000000000000000C8 +S315E08121B03E49000000000000000000000000000031 +S315E08121C000000000000000000000000000000000A8 +S315E08121D00000000000000000000000000000000098 +S315E08121E00000000000000000000000000000000088 +S315E08121F00000000000000000000000000000000078 +S315E08122000000000000000000000000000000000067 +S315E08122100000000000000000000000000000000057 +S315E08122200000000000000000000000000000000047 +S315E08122300000000000000000000000000000000037 +S315E08122400000000000000000000000000000000027 +S315E08122500000000000000000000000000000000017 +S315E08122600000000000000000000000000000000007 +S315E081227000000000000000000000000000000000F7 +S315E081228000000000000000000000000000000000E7 +S315E081229000000000000000000000000000000000D7 +S315E08122A000000000000000000000000000000000C7 +S315E08122B000000000000000000000000000000000B7 +S315E08122C000000000000000000000000000000000A7 +S315E08122D00000000000000000000000000000000097 +S315E08122E00000000000000000000000000000000087 +S315E08122F00000000000000000000000000000000077 +S315E08123000000000000000000000000000000000066 +S315E08123100000000000000000000000000000000056 +S315E0812320000000000000000001FF890000000000BD +S315E08123300000000000000000000000000000000036 +S315E08123400000000000000000000000000000000026 +S315E08123500000000000000000000000000000000016 +S315E08123600000000000000000000000000000000006 +S315E081237000000000000000000000000000000000F6 +S315E081238000000000000000000000000000000000E6 +S315E081239000000000000000000000000000000000D6 +S315E08123A000000000000000000000000000000000C6 +S315E08123B000000000000000000000000000000000B6 +S315E08123C000000000000000000000000000000000A6 +S315E08123D00000000000000000000000000000000096 +S315E08123E00000000000000000000000000000000086 +S315E08123F00000000000000000000000000000000076 +S315E08124000000000000000000000000000000000065 +S315E08124100000000000000000000000000000000055 +S315E08124200000000000000000000000000000000045 +S315E08124300000000000000000000000000000000035 +S315E08124400000000000000000000000000000000025 +S315E08124500000000000000000000000000000000015 +S315E08124600000000000000000000000000000000005 +S315E081247000000000000000000000000000000000F5 +S315E081248000000000000000000000000000000000E5 +S315E081249000000000000000000000000000000000D5 +S315E08124A000003E490000000000000000000000003E +S315E08124B00400200000000000000000000000000091 +S315E08124C0000000000000010008004000000000005C +S315E08124D00000000000000000000000000000020093 +S315E08124E010008000000000000000000000000000F5 +S315E08124F00000000000000400200000000000000051 +S315E0812500000000000000000000000000010008005B +S315E08125104000000000000000000000000000000014 +S315E081252000000000020010008000000000000000B2 +S315E08125300000000000000000000000000400200010 +S315E08125400000000000000000000000000000000024 +S315E081255000000100080040000000000000000000CB +S315E08125600000000000000000000002001000800072 +S315E081257000000000000000000000000000000000F4 +S315E081258000000400200000000000000000000000C0 +S315E0812590000000000000000001000800400000008B +S315E08125A000000000000000000000000000000000C4 +S315E08125B00200100080000000000000000000000022 +S315E08125C00000000000000000040020000000000080 +S315E08125D00000000000000000000000000000010093 +S315E08125E0080040000000000000000000000000003C +S315E08125F000000000000002001000800000000000E2 +S315E0812600000000000000000000000000000004005F +S315E0812610200000000000000000000028D700000034 +S315E0812620800000000000000000040020000000009F +S315E08126300000000000000000000000000000000132 +S315E081264000080040000000000000000000000000DB +S315E08126500000000000000002001000800000000081 +S315E081266000000000000000000000000000000004FF +S315E081267000200000000000000000000000000000D3 +S315E0812680000000000001000800400000000000009A +S315E081269000000000000000000000000000020010C1 +S315E08126A00080000000000000000000000000000043 +S315E08126B0000000000004002000000000000000008F +S315E08126C0000000000000000000000001000800405A +S315E08126D00000000000000000000000000000000093 +S315E08126E000000002001000800000000000000000F1 +S315E08126F0000000000000000000000004002000004F +S315E08127000000000000000000000000000000000062 +S315E08127100001000800400000000000000000000009 +S315E081272000000000000000000002001000800000B0 +S315E08127300000000000000000000000000000000032 +S315E081274000040020000000000000000000000000FE +S315E081275000000000000000010008004000000000C9 +S315E08127600000000000000000000000000000000200 +S315E08127700010008000000000000000000000000062 +S315E081278000000000000000040020000000000000BE +S315E0812790000100000C56000000000000000000006F +S315E08127A0000004002000000000000000000000009E +S315E08127B00000000000000000010008004000000069 +S315E08127C000000000000000000000000000000000A2 +S315E08127D00200100080000000000000000000000000 +S315E08127E0000000000000000004002000000000005E +S315E08127F00000000000000000000000000000010071 +S315E08128000800400000000000000000000000000019 +S315E081281000000000000002001000800000000000BF +S315E0812820000000000000000000000000000004003D +S315E08128302000000000000000000000000000000011 +S315E081284000000000010008004000000000000000D8 +S315E081285000000000000000000000000002001000FF +S315E08128608000000000000000000000000000000081 +S315E081287000000000040020000000000000000000CD +S315E08128800000000000000000000001000800400098 +S315E081289000000000000000000000000000000000D1 +S315E08128A0000002001000800000000000000000002F +S315E08128B0000000000000000000000400200000008D +S315E08128C000000000000000000000000000000000A1 +S315E08128D00100080040000000000000000000000048 +S315E08128E000000000000000000200100080000000EF +S315E08128F00000000000000000000000000000000071 +S315E081290004002000000000000000000001E917003B +S315E08129100003031C1C606000000303181C40600078 +S315E081292000070738384040000007073838C0C00044 +S315E0812930000607303880C001010E0E70708080017C +S315E0812940010E0E7070808001010C0E6070008003B4 +S315E0812950031C1CE0E0000003031C1CE0E000000314 +S315E081296003181CC0E0000007073838C0C000000724 +S315E0812970073838C0C000000607303880C001010E34 +S315E08129800E7070808001010E0E7070808001010CE6 +S315E08129900E6070008003031C1CE0E0000003031C52 +S315E08129A01CE0E000000303181CC0E00000070738C4 +S315E08129B038C0C0000007073838C0C00000060730BD +S315E08129C03880C001010E0E7070808001010E0E709C +S315E08129D070808001010C0E6070008003031C1CE096 +S315E08129E0E0000003031C1CE0E000000303181CC0A8 +S315E08129F0E0000007073838C0C0000007073838C054 +S315E0812A00C000000607303880C001010E0E7070806C +S315E0812A108001010E0E7070808001010C0E607000E5 +S315E0812A208003031C1CE0E0000003031C1CE0E000C3 +S315E0812A30000303181CC0E0000007073838C0C00057 +S315E0812A400007073838C0C000000607303880C0016B +S315E0812A50010E0E7070808001010E0E707080800113 +S315E0812A60010C0E6070008003031C1CE0E000000294 +S315E0812A70021C1CE0E000000202181CC0E000000617 +S315E0812A80063838C0C0007272000000000000000005 +S315E0812A9000000000000000000000000000000000CF +S315E0812AA000000000000000000000000000000000BF +S315E0812AB000000000000000000000000000000000AF +S315E0812AC0000000000000000000000000000000009F +S315E0812AD0000000000000000000000000000000008F +S315E0812AE0000000000000000000000000000000007F +S315E0812AF0000000000000000000000000000000006F +S315E0812B00000000000000000000000000000000005E +S315E0812B10000000000000000000000000000000004E +S315E0812B20000000000000000000000000000000003E +S315E0812B30000000000000000000000000000000002E +S315E0812B40000000000000000000000000000000001E +S315E0812B50000000000000000000000000000000000E +S315E0812B6000000000000000000000000000000000FE +S315E0812B7000000000000000000000000000000000EE +S315E0812B8000000000000000000000000000000000DE +S315E0812B9000000000000000000000000000000000CE +S315E0812BA000000000000000000000000000000000BE +S315E0812BB000000000000000000000000000000000AE +S315E0812BC0000000000000000000000000000000009E +S315E0812BD0000000000000000000000000000000008E +S315E0812BE0000000000000000000000000000000007E +S315E0812BF00000000000000000000000000000003E30 +S315E0812C004900000000000000000000000000000014 +S315E0812C10000000000000000000000000000000004D +S315E0812C20000000000000000000000000000000003D +S315E0812C300000000000000000000000040000000029 +S315E0812C40000000000000000000000000000000001D +S315E0812C50000000000000000000000000000000000D +S315E0812C6000000000000000000000000000000000FD +S315E0812C7000000000000000000000000010000000DD +S315E0812C8000000000000000000000000000000000DD +S315E0812C9000000000000000000000000000000000CD +S315E0812CA000000000000000000000000000000000BD +S315E0812CB000000000000000000000000000000000AD +S315E0812CC0000000000000000000002000000000007D +S315E0812CD0000000000000400000000000000000004D +S315E0812CE0000000000000000000000000000000007D +S315E0812CF0000000000000000000000000000000006D +S315E0812D00000000000000000000000000000000005C +S315E0812D10000000000000000000000000000000004C +S315E0812D20000000000000000000000000000000003C +S315E0812D3000000000800000000000000000000000AC +S315E0812D40000000000000000000000000000000001C +S315E0812D50000000000000000000000000000000000C +S315E0812D6000000000000000000000000000000000FC +S315E0812D700000000000000000BC9C00000000000094 +S315E0812D80000000800000100000000000000000004C +S315E0812D9000000000000000000000000000000000CC +S315E0812DA0000000000000000000000000200000009C +S315E0812DB000000000000000000000000000000000AC +S315E0812DC0000000000000000000000000000000009C +S315E0812DD0000000000000000000000000000000008C +S315E0812DE0000000000010000000000000000000006C +S315E0812DF0000000000000000000000000000000006C +S315E0812E00000000000000000000000000000000005B +S315E0812E10000000000000000000000000000000004B +S315E0812E20000000000000000000000000000000003B +S315E0812E30000000000000000020000000000000000B +S315E0812E40000000000000000000000000000000001B +S315E0812E50000000000000000000000000000000000B +S315E0812E6000000000000000000000000000000000FB +S315E0812E7000000000000000000000000000000000EB +S315E0812E8000000000000000000000000000002000BB +S315E0812E9000000000000000000000000000000000CB +S315E0812EA000000000000000000000000000000000BB +S315E0812EB000000000000000000000000000000000AB +S315E0812EC0000000000000000000000000000000009B +S315E0812ED0000000000000000000000000000000008B +S315E0812EE0200000000000000000000000000000005B +S315E0812EF000D8AB00000000000000000000000010D8 +S315E0812F00000000000000000000000000000000005A +S315E0812F10000000000000000000000000000000004A +S315E0812F20000000000000000000000000000000003A +S315E0812F30000000000000000000000000000000002A +S315E0812F40000000000000000000000000000000001A +S315E0812F5000000000000000000000000000001000FA +S315E0812F6000000000000000000000000000000000FA +S315E0812F7000000000000000000000000000000000EA +S315E0812F8000000000000000000000000000000000DA +S315E0812F9000000000000000000000000000000000CA +S315E0812FA000000000000000000000000000000000BA +S315E0812FB000000000000000000000000000000000AA +S315E0812FC0000000000000000000000000000000009A +S315E0812FD0000000000000000000000000000000008A +S315E0812FE0000000000000000000000000000000007A +S315E0812FF0000000000000000000000000000000006A +S315E08130000000000000000000000000000000000059 +S315E08130100000000000000000000000000000000049 +S315E08130200000000000000000000000000000000039 +S315E08130300000000000000000000000000000000029 +S315E08130400000000000000000000000000000000019 +S315E08130500000000000000000000000000000000009 +S315E081306000000000000000000000627C000000001B +S315E08130700000000000800000000000000000000069 +S315E081308000000000000000000000000000000000D9 +S315E081309000000000000000000000000000200000A9 +S315E08130A00000000000000000000020000000000099 +S315E08130B000000000000000000000000400000000A5 +S315E08130C00000000000000000000000000000000099 +S315E08130D00000000000000000000000000000000089 +S315E08130E00000000000000000000000000000000079 +S315E08130F01000400000000000000000000000000019 +S315E08131000000000000000000000000000000000058 +S315E08131100000000000000000000000000000000048 +S315E08131200000000000000000002000000000000018 +S315E08131300000000000000000000000000000000028 +S315E081314000000000000000000000000000002000F8 +S315E08131500000000000000000000000000000000008 +S315E081316000000000000040000000000000000000B8 +S315E081317000000000000000000000000000000020C8 +S315E081318000000000000000000000000000000000D8 +S315E081319000000000000000000000000000000000C8 +S315E08131A000000000000000000000000000000000B8 +S315E08131B000000000000000000000000000000000A8 +S315E08131C00000000080000000000000000000000018 +S315E08131D00020000000000000000000000000400028 +S315E08131E0000000BE29000000000000000000000091 +S315E08131F00000000000000000000000000000000068 +S315E08132000000000000000000000000200000000037 +S315E08132100000000000000000000000000000000047 +S315E08132200000000000000000000000000000000037 +S315E08132300000000000000000000000000000000027 +S315E08132400000000000000000000000000000000017 +S315E08132500000000000000000000000000000000007 +S315E081326000000000000000000000000000000000F7 +S315E081327000000000000000000000000000000000E7 +S315E081328000000000000000000000000000000000D7 +S315E081329000000000000000000000000000000000C7 +S315E08132A00000000000000000000000000040000077 +S315E08132B000000000000000000000000000000000A7 +S315E08132C00000000000000000000000000000000097 +S315E08132D00000000000000000000000200000000067 +S315E08132E00000000000000000000000000000000077 +S315E08132F00000000000000000000000000000000067 +S315E08133000000000000000000000000000000000056 +S315E08133100000000000000000000000000000000046 +S315E08133200000000000000000000000000000000036 +S315E08133300000000000000000000000000000000026 +S315E08133400000000000000000000000000000000016 +S315E0813350000000000000000000000000F58F000082 +S315E081336080800000000000000000000000000000F6 +S315E081337000000000000000000000000000000000E6 +S315E081338000000000000000000000000000000000D6 +S315E081339000000000000000000000000000000000C6 +S315E08133A000000000000000000000000000000000B6 +S315E08133B000000000000000000000000000000000A6 +S315E08133C00000000000000000000000000000000096 +S315E08133D00000000000000000000000000000000086 +S315E08133E00000000000000000000000000000000076 +S315E08133F00000000000000000000000100000000056 +S315E08134000000000000000000000000000000000055 +S315E08134100000000000000000000000000000000045 +S315E08134200000000000000000000000000000000035 +S315E08134300000000000000000000000000000000025 +S315E08134400000000000000000000000000000000015 +S315E08134500000020000000000000000000000000003 +S315E081346000000000000000000000000000000000F5 +S315E081347000000000000000000000000000000000E5 +S315E081348000000000000000000000000000000000D5 +S315E081349000000000000000000000000000000000C5 +S315E08134A000000000000000000000000000000000B5 +S315E08134B00040004000000000000000000000000025 +S315E08134C00000000000000000000000000000000095 +S315E08134D00000010100F26E00000000000000000023 +S315E08134E00000000000000000000000000000000075 +S315E08134F00000000000000000000000002000000045 +S315E08135000000000000000000000000000000000054 +S315E08135100000000000000000000000000000000044 +S315E08135200000000000000000000000000000000034 +S315E08135300000000000000000000000000000000024 +S315E08135400000000000000000000000000000000014 +S315E08135500000000000000000000000000000000004 +S315E081356000000000000000000000000000000000F4 +S315E081357000000000000000000000000000000000E4 +S315E081358000000000000000000000000000000000D4 +S315E08135900000000000000000000000000000004084 +S315E08135A000000000000000000000000000000000B4 +S315E08135B000000000000000000000000000000000A4 +S315E08135C00000000000000000000002000000000092 +S315E08135D00000000000000000000000000000000084 +S315E08135E00000000000000000000000000000000074 +S315E08135F00000000000000000000000000000000064 +S315E08136000000000000000000000000000000000053 +S315E08136100000000000000000000000000000000043 +S315E08136200000000000000000000000000000000033 +S315E08136300000000000000000000000000000000023 +S315E0813640000000000000000000000000000021EF03 +S315E08136500000000000000000000000000000000003 +S315E081366000000000000000000000000000000000F3 +S315E081367000000000000000000000000000000000E3 +S315E081368000000000000000000000000000000000D3 +S315E081369000000000000000000000000000000000C3 +S315E08136A000000000000000000000000000000000B3 +S315E08136B000000000000000000000000000000000A3 +S315E08136C00000000000000000000000000000000093 +S315E08136D00000000000000000000000000000000083 +S315E08136E00000000000000000000000000000000073 +S315E08136F000000000000000800000000000000000E3 +S315E08137000000000000000000000000000000000052 +S315E08137100000000000000000000000000000000042 +S315E08137200000000000000000000000000000000032 +S315E08137300000000000000000000000000000000022 +S315E08137400000000000000000000000000000000012 +S315E08137500000000000000000000000000000000002 +S315E081376000000000000000000000000000000000F2 +S315E081377000000000000000000000000000000000E2 +S315E081378000000000000000000000000000000000D2 +S315E081379000000000000000000000000000000000C2 +S315E08137A000000000000000000000000000000000B2 +S315E08137B000000000000000000000000000000000A2 +S315E08137C0000000000000001B3E0000000000000039 +S315E08137D00000000000000000000000000000000082 +S315E08137E00000000000000000000000000000000072 +S315E08137F00000000000000000000000000000000062 +S315E08138000000000000000000000000000000000051 +S315E08138100000000000000000000000000000000041 +S315E08138200000000000000000000000000000000031 +S315E08138300000000000000000000000000000000021 +S315E08138400000000000000000000000000000000011 +S315E08138500000000000000000000000000000000001 +S315E081386000000000000000000000000000000000F1 +S315E081387000000000000000000000000000000000E1 +S315E081388000000000000000000000000000000000D1 +S315E081389000000000000000000000000000000000C1 +S315E08138A000000000000000000000000000000000B1 +S315E08138B00000000000000000000000002000000081 +S315E08138C00000000000000000000000000000000091 +S315E08138D00000000000000000000000000000000081 +S315E08138E00000000000000000000000000000000071 +S315E08138F00000000000000000000000000000000061 +S315E08139000000000000000000000000000000000050 +S315E08139100000000000000000000000000000000040 +S315E08139200000000000000000000000000000000030 +S315E08139300000000000000000000000000000000020 +S315E08139403951000000000000000000000000000086 +S315E08139500000000000000000000000000000000000 +S315E081396000000000000000000000000000000000F0 +S315E081397000000000000000000000000000000000E0 +S315E081398000000000000000000000000000000000D0 +S315E081399000000000000000000000000000000000C0 +S315E08139A000000000000000000000000000000000B0 +S315E08139B000000000000000000000000000000000A0 +S315E08139C00000000000000000000000000000000090 +S315E08139D00000000000000000000000000000000080 +S315E08139E00000000000000000000000000000000070 +S315E08139F00000000000000000000000000000000060 +S315E0813A00000000000000000000000000000000004F +S315E0813A10000000000000000000000000000000003F +S315E0813A20000000000000000000000000000000002F +S315E0813A30000000000000000000000000000000001F +S315E0813A40000000000000000000000000000000000F +S315E0813A5000000000000000000000000000000000FF +S315E0813A6000000000000000000000000000000000EF +S315E0813A7000000000000000000000000000000000DF +S315E0813A8000000000000000000000000000000000CF +S315E0813A9000000000000000000000000000000000BF +S315E0813AA000000000000000000000000000000000AF +S315E0813AB00000000000000000003E49000000800098 +S315E0813AC0000000000000000000000000000000008F +S315E0813AD0000000000000000000000000000000007F +S315E0813AE0000000000000000000000000000000006F +S315E0813AF0000000000000000000000000000000005F +S315E0813B00000000000000000000000000000000004E +S315E0813B10000000000000000000000000000000003E +S315E0813B20000000000000000000000000000000002E +S315E0813B30000000000000000000000000000000001E +S315E0813B40000000000000000000000000000000000E +S315E0813B5000000000000000000000000000000000FE +S315E0813B60000000800000000000000000000000006E +S315E0813B7000000000000000000000000000000000DE +S315E0813B8000000000000000000000000000000000CE +S315E0813B9000000000000000000000000000000000BE +S315E0813BA000000000000000000000000000000000AE +S315E0813BB0000000000000000000000000000000009E +S315E0813BC0000000000000000000000000000000008E +S315E0813BD0000000000000000000000000000000007E +S315E0813BE0000000000000000000000000000000006E +S315E0813BF0000000000000000000000000000000005E +S315E0813C00000000000000000000000000000000004D +S315E0813C10000000000000000000000000000000003D +S315E0813C20000000000000000000000000000000002D +S315E0813C300000FF2D000000000000000000000000F1 +S315E0813C40000000000000000000000000000000000D +S315E0813C5000000000000000000000000000000000FD +S315E0813C6000000000000000000000000000000000ED +S315E0813C7000000000000000000000000000000000DD +S315E0813C8000000000000000000000000000000000CD +S315E0813C9000000000000000000000000000000000BD +S315E0813CA000000000000000000000000000000000AD +S315E0813CB0000000000000000000000000000000009D +S315E0813CC0000000000000000000000000000000008D +S315E0813CD0000000000000000000000000000000007D +S315E0813CE0000000000000000000000000000000006D +S315E0813CF0000000000000000000000000000000005D +S315E0813D00000000000000000000000000000000004C +S315E0813D10000000000000000000000000000000003C +S315E0813D20000000000000000000000000000000002C +S315E0813D30000000000000000000000000000000001C +S315E0813D40000000000000000000000000000000000C +S315E0813D5000000000000000000000000000000000FC +S315E0813D6000000000000000000000000000000000EC +S315E0813D7000000000000000000000000000000000DC +S315E0813D8000000000000000000000000000000000CC +S315E0813D9000000000000000000000000000000000BC +S315E0813DA000000000000000000000003E4900000025 +S315E0813DB0000000000000000000000000000000009C +S315E0813DC0000000000000000000000000000000008C +S315E0813DD0000000000000000000000000000000007C +S315E0813DE0000000000000000000000000000000006C +S315E0813DF0000000000000000000000000000000005C +S315E0813E00000000000000000000000000000000004B +S315E0813E10000000000000000000000000000000003B +S315E0813E20000000000000000000000000000000002B +S315E0813E30000000000000000000000000000000001B +S315E0813E40000000000000000000000000000000000B +S315E0813E5000000000000000000000000000000000FB +S315E0813E6000000000000000000000000000000000EB +S315E0813E7000000000000000000000000000000000DB +S315E0813E8000000000000000000000000000000000CB +S315E0813E9000000000000000000000000000000000BB +S315E0813EA000000000000000000000000000000000AB +S315E0813EB0000000000000000000000000000000009B +S315E0813EC0000000000000000000000000000000008B +S315E0813ED0000000000000000000000000000000007B +S315E0813EE0000000000000000000000000000000006B +S315E0813EF0000000000000000000000000000000005B +S315E0813F00000000000000000000000000000000004A +S315E0813F10000000000000000000000000000000003A +S315E0813F20000000003E4900000000000000000000A3 +S315E0813F30000000000000000000000000000000001A +S315E0813F40000000000000000000000000000000000A +S315E0813F5000000000000000000000000000000000FA +S315E0813F6000000000000000000000000000000000EA +S315E0813F7000000000000000000000000000000000DA +S315E0813F8000000000000000000000000000000000CA +S315E0813F9000000000000000000000000000000000BA +S315E0813FA000000000000000000000000000000000AA +S315E0813FB0000000000000000000000000000000009A +S315E0813FC0000000000000000000000000000000008A +S315E0813FD0000000000000000000000000000000007A +S315E0813FE0000000000000000000000000000000006A +S315E0813FF0000000000000000000000000000000005A +S315E08140000000000000000000000000000000000049 +S315E08140100000000000000000000000000000000039 +S315E08140200000000000000000000000000000000029 +S315E08140300000000000000000000000000000000019 +S315E08140400000000000000000000000000000000009 +S315E081405000000000000000000000000000000000F9 +S315E081406000000000000000000000000000000000E9 +S315E081407000000000000000000000000000000000D9 +S315E081408000000000000000000000000000000000C9 +S315E0814090000000000000000000000000003E490032 +S315E08140A000000000000000000000000000000000A9 +S315E08140B00000000000000000000000000000000099 +S315E08140C00000000000000000000000000000000089 +S315E08140D00000000000000000000000000000000079 +S315E08140E00000000000000000000000000000000069 +S315E08140F00000000000000000000000000000000059 +S315E08141000000000000000000000000000000000048 +S315E08141100000000000000000000000000000000038 +S315E08141200000000000000000000000000000000028 +S315E08141300000000000000000000000000000000018 +S315E08141400000000000000000000000000000000008 +S315E081415000000000000000000000000000000000F8 +S315E081416000000000000000000000000000000000E8 +S315E081417000000000000000000000000000000000D8 +S315E081418000000000000000000000000000000000C8 +S315E081419000000000000000000000000000000000B8 +S315E08141A000000000000000000000000000000000A8 +S315E08141B00000000000000000000000000000000098 +S315E08141C00000000000000000000000000000000088 +S315E08141D00000000000000000000000000000000078 +S315E08141E00000000000000000000000000000000068 +S315E08141F00000000000000000000000000000000058 +S315E08142000000000000000000000000000000000047 +S315E08142100000000000003E490000000000000000B0 +S315E08142200000000000000000000000000000000027 +S315E08142300000000000000000000000000000000017 +S315E08142400000000000000000000000000000000007 +S315E081425000000000000000000000000000000000F7 +S315E081426000000000000000000000000000000000E7 +S315E081427000000000000000000000000000000000D7 +S315E081428000000000000000000000000000000000C7 +S315E081429000000000000000000000000000000000B7 +S315E08142A000000000000000000000000000000000A7 +S315E08142B00000000000000000000000000000000097 +S315E08142C00000000000000000000000000000000087 +S315E08142D00000000000000000000000000000000077 +S315E08142E00000000000000000000000000000000067 +S315E08142F00000000000000000000000000000000057 +S315E08143000000000000000000000000000000000046 +S315E08143100000000000000000000000000000000036 +S315E08143200000000000000000000000000000000026 +S315E08143300000000000000000000000000000000016 +S315E08143400000000000000000000000000000000006 +S315E081435000000000000000000000000000000000F6 +S315E081436000000000000000000000000000000000E6 +S315E081437000000000000000000000000000000000D6 +S315E08143800000000000000000000000000001003F86 +S315E0814390D9000000000000000000000000000000DD +S315E08143A000000000000000000000000000000000A6 +S315E08143B00000000000000000000000000000000096 +S315E08143C00000000000000000000000000000000086 +S315E08143D00000000000000000000000000000000076 +S315E08143E00000000000000000000000000000000066 +S315E08143F00000000000000000000000000000000056 +S315E08144000000000000000000000000000000000045 +S315E08144100000000000000000000000000000000035 +S315E08144200000000000000000000000000000000025 +S315E08144300000000000000000000000000000000015 +S315E08144400000000000000000000000000000000005 +S315E081445000000000000000000000000000000000F5 +S315E081446000000000000000000000000000000000E5 +S315E081447000000000000000000000000000000000D5 +S315E081448000000000000000000000000000000000C5 +S315E081449000000000000000000000000000000000B5 +S315E08144A000000000000000000000000000000000A5 +S315E08144B00000000000000000000000000000000095 +S315E08144C00000000000000000000000000000000085 +S315E08144D00000000000000000000000000000000075 +S315E08144E00000000000000000000000000000000065 +S315E08144F00000000000000000000000000000000055 +S315E081450000000000000000003E49000000000000BD +S315E08145100000000000000000000000000000000034 +S315E08145200000000000000000000000000000000024 +S315E08145300000000000000000000000000000000014 +S315E08145400000000000000000000000000000000004 +S315E081455000000000000000000000000000000000F4 +S315E081456000000000000000000000000000000000E4 +S315E081457000000000000000000000000000000000D4 +S315E081458000000000000000000000000000000000C4 +S315E081459000000000000000000000000000000000B4 +S315E08145A000000000000000000000000000000000A4 +S315E08145B00000000000000000000000000000000094 +S315E08145C00000000000000000000000000000000084 +S315E08145D00000000000000000000000000000000074 +S315E08145E00000000000000000000000000000000064 +S315E08145F00000000000000000000000000000000054 +S315E08146000000000000000000000000000000000043 +S315E08146100000000000000000000000000000000033 +S315E08146200000000000000000000000000000000023 +S315E08146300000000000000000000000000000000013 +S315E08146400000000000000000000000000000000003 +S315E081465000000000000000000000000000000000F3 +S315E081466000000000000000000000000000000000E3 +S315E081467000000000000000000000000000000000D3 +S315E0814680003E49000000000000000000000000003C +S315E081469000000000000000000000000000000000B3 +S315E08146A000000000000000000000000000000000A3 +S315E08146B00000000000000000000000000000000093 +S315E08146C00000000000000000000000000000000083 +S315E08146D00000000000000000000000000000000073 +S315E08146E00000000000000000000000000000000063 +S315E08146F00000000000000000000000000000000053 +S315E08147000000000000000000000000000000000042 +S315E08147100000000000000000000000000000000032 +S315E08147200000000000000000000000000000000022 +S315E08147300000000000000000000000000000000012 +S315E08147400000000000000000000000000000000002 +S315E081475000000000000000000000000000000000F2 +S315E081476000000000000000000000000000000000E2 +S315E081477000000000000000000000000000000000D2 +S315E081478000000000000000000000000000000000C2 +S315E081479000000000000000000000000000000000B2 +S315E08147A000000000000000000000000000000000A2 +S315E08147B00000000000000000000000000000000092 +S315E08147C00000000000000000000000000000000082 +S315E08147D00000000000000000000000000000000072 +S315E08147E00000000000000001000000000000000061 +S315E08147F00000000000000000000003B5000080809A +S315E08148000000000000000000000000000000000041 +S315E08148100000000000000000000000000000000031 +S315E08148200000000000000000000000000000000021 +S315E08148300000000000000000000000000000000011 +S315E08148400000000000000000000000000000000001 +S315E081485000000000000000000000000000000000F1 +S315E081486000000000000000000000000000000000E1 +S315E081487000000000000000000000000000000000D1 +S315E081488000000000000000000000000000000000C1 +S315E081489000000000000000000000000000000000B1 +S315E08148A000000000000000000000000000000000A1 +S315E08148B00000000000000000000000000000000091 +S315E08148C00000000000000000000000000000000081 +S315E08148D00000000000000000000000000000000071 +S315E08148E00000000000000000000000000000000061 +S315E08148F00000000000000000000000000000000051 +S315E08149000000000000000000000000000000000040 +S315E08149100000000000000000000000000000000030 +S315E08149200000000000000000000000000000000020 +S315E08149300000000000000000000000000000000010 +S315E08149400000000000000000000000000000000000 +S315E081495000000000000000000000000000000000F0 +S315E081496000000000000000000000000000000000E0 +S315E08149700101009BBF000000000000000000000074 +S315E081498000000000000000000000000000000000C0 +S315E081499000000000000000000000000000000000B0 +S315E08149A000000000000000000000000000000000A0 +S315E08149B00000000000000000000000000000000090 +S315E08149C00000000000000000000000000000000080 +S315E08149D00000000000000000000000000000000070 +S315E08149E00000000000000000000000000000000060 +S315E08149F00000000000000000000000000000000050 +S315E0814A00000000000000000000000000000000003F +S315E0814A10000000000000000000000000000000002F +S315E0814A20000000000000000000000000000000001F +S315E0814A30000000000000000000000000000000000F +S315E0814A4000000000000000000000000000000000FF +S315E0814A5000000000000000000000000000000000EF +S315E0814A6000000000000000000000000000000000DF +S315E0814A7000000000000000000000000000000000CF +S315E0814A8000000000000000000000000000000000BF +S315E0814A9000000000000000000000000000000000AF +S315E0814AA0000000000000000000000000000000009F +S315E0814AB0000000000000000000000000000000008F +S315E0814AC0000000000000000000000000000000007F +S315E0814AD0000000000000000000000000000000006F +S315E0814AE00000000000000000000000003E490000D8 +S315E0814AF0000000000000000000000000000000004F +S315E0814B00000000000000000000000000000000003E +S315E0814B10000000000000000000000000000000002E +S315E0814B20000000000000000000000000000000001E +S315E0814B30000000000000000000000000000000000E +S315E0814B4000000000000000000000000000000000FE +S315E0814B5000000000000000000000000000000000EE +S315E0814B6000000000000000000000000000000000DE +S315E0814B7000000000000000000000000000000000CE +S315E0814B8000000000000000000000000000000000BE +S315E0814B9000000000000000000000000000000000AE +S315E0814BA0000000000000000000000000000000009E +S315E0814BB0000000000000000000000000000000008E +S315E0814BC0000000000000000000000000000000007E +S315E0814BD0000000000000000000000000000000006E +S315E0814BE0000000000000000000000000000000005E +S315E0814BF0000000000000000000000000000000004E +S315E0814C00000000000000000000000000000000003D +S315E0814C10000000000000000000000000000000002D +S315E0814C20000000000000000000000000000000001D +S315E0814C30000000000000000000000000000000000D +S315E0814C4000000000000000000000000000000000FD +S315E0814C5000000000000000000000000000000000ED +S315E0814C6000000000003E4900000000000000000056 +S315E0814C7000000000000000000000000000000000CD +S315E0814C8000000000000000000000000000000000BD +S315E0814C9000000000000000000000000000000000AD +S315E0814CA0000000000000000000000000000000009D +S315E0814CB0000000000000000000000000000000008D +S315E0814CC0000000000000000000000000000000007D +S315E0814CD0000000000000000000000000000000006D +S315E0814CE0000000000000000000000000000000005D +S315E0814CF0000000000000000000000000000000004D +S315E0814D00000000000000000000000000000000003C +S315E0814D10000000000000000000000000000000002C +S315E0814D20000000000000000000000000000000001C +S315E0814D30000000000000000000000000000000000C +S315E0814D4000000000000000000000000000000000FC +S315E0814D5000000000000000000000000000000000EC +S315E0814D6000000000000000000000000000000000DC +S315E0814D7000000000000000000000000000000000CC +S315E0814D8000000000000000000000000000000000BC +S315E0814D9000000000000000000000000000000000AC +S315E0814DA0000000000000000000000000000000009C +S315E0814DB0000000000000000000000000000000008C +S315E0814DC0000000000000000000000000000001007B +S315E0814DD00000000000000000000000000000FFD994 +S315E0814DE00000000000000000000400200000040034 +S315E0814DF020000000000000008000000000000001AB +S315E0814E0000080040010008004000000000000000AA +S315E0814E100000000000000002001000800200100087 +S315E0814E208000000000000000000000000000000497 +S315E0814E3000200000040020000000000000000000C7 +S315E0814E400000000000010008004001000800400069 +S315E0814E5000000000000000000000000000020010D9 +S315E0814E6000800200100080000000000000000000C9 +S315E0814E700000000000040020000004002000000083 +S315E0814E800000000000000000000000010008004072 +S315E0814E900100080040000000000000000000000062 +S315E0814EA00000000200100080020010008000000077 +S315E0814EB00000000000000000000000040020000067 +S315E0814EC00400200000000000000000000000000057 +S315E0814ED000010008004001000800400000000000D9 +S315E0814EE000000000000000000002001000800200C7 +S315E0814EF010008000000000000000000000000000BB +S315E0814F0000040020000004002000000000000000F2 +S315E0814F1000000000000000010008004001000800D8 +S315E0814F2040000000000000000000000000000002D8 +S315E0814F3000100080020010008000000000000000E8 +S315E0814F4000000000000000040020000004002000B2 +S315E0814F5000000000000000D82900000000000000E9 +S315E0814F6000000000000000000000000000000000DA +S315E0814F7000000000000000000000000000000000CA +S315E0814F8000000000000000000000000000000000BA +S315E0814F9000000000000000000000000000000000AA +S315E0814FA0000000000000000000000000000000009A +S315E0814FB0000000000000000000000000000000008A +S315E0814FC0000000000000000000000000000000007A +S315E0814FD0000000000000000000000000000000006A +S315E0814FE0000000000000000000000000000000005A +S315E0814FF0000000000000000000000000000000004A +S315E08150000000000000000000000000000000000039 +S315E08150100000000000000000000000000000000029 +S315E08150200000000000000000000000000000000019 +S315E08150300000000000000000000000000000000009 +S315E081504000000000000000000000000000000000F9 +S315E081505000000000000000000000000000000000E9 +S315E081506000000000000000000000000000000000D9 +S315E081507000000000000000000000000000000000C9 +S315E081508000000000000000000000000000000000B9 +S315E081509000000000000000000000000000000000A9 +S315E08150A00000000000000000000000000000000099 +S315E08150B00000000000000000000000000000000089 +S315E08150C00100000000000000000000000000000078 +S315E08150D0FFD9000000000000000000000000000091 +S315E08150E00000000000000000000000000000000059 +S315E08150F00000000000000000000000000000000049 +S315E08151000000000000000000000000000000000038 +S315E08151100000000000000000000000000000000028 +S315E08151200000000000000000000000000000000018 +S315E08151300000000000000000000000000000000008 +S315E081514000000000000000000000000000000000F8 +S315E081515000000000000000000000000000000000E8 +S315E081516000000000000000000000000000000000D8 +S315E081517000000000000000000000000000000000C8 +S315E081518000000000000000000000000000000000B8 +S315E081519000000000000000000000000000000000A8 +S315E08151A00000000000000000000000000000000098 +S315E08151B00000000000000000000000000000000088 +S315E08151C00000000000000000000000000000000078 +S315E08151D00000000000000000000000000000000068 +S315E08151E00000000000000000000000000000000058 +S315E08151F00000000000000000000000000000000048 +S315E08152000000000000000000000000000000000037 +S315E08152100000000000000000000000000000000027 +S315E08152200000000000000000000000000000000017 +S315E08152300000000000000000000000000000000007 +S315E08152400000000000000000003E49000000000070 +S315E081525000000000000000000000000000000000E7 +S315E081526000000000000000000000000000000000D7 +S315E081527000000000000000000000000000000000C7 +S315E081528000000000000000000000000000000000B7 +S315E081529000000000000000000000000000000000A7 +S315E08152A00000000000000000000000000000000097 +S315E08152B00000000000000000000000000000000087 +S315E08152C00000000000000000000000000000000077 +S315E08152D00000000000000000000000000000000067 +S315E08152E00000000000000000000000000000000057 +S315E08152F00000000000000000000000000000000047 +S315E08153000000000000000000000000000000000036 +S315E08153100000000000000000000000000000000026 +S315E08153200000000000000000000000000000000016 +S315E08153300000000000000000000000000000000006 +S315E081534000000000000000000000000000000000F6 +S315E081535000000000000000000000000000000000E6 +S315E081536000000000000000000000000000000000D6 +S315E081537000000000000000000000000000000000C6 +S315E081538000000000000000000000000000000000B6 +S315E081539000000000000000000000000000000000A6 +S315E08153A00000000000000000000000000000000096 +S315E08153B00000000000000000000000000000000086 +S315E08153C000003E490000008000000000000000006F +S315E08153D00000000000000000000000000000000066 +S315E08153E00000000000000000000000000000000056 +S315E08153F00000000000000000000000000000000046 +S315E08154000000000000000000000000000000000035 +S315E08154100000000000000000000000000000000025 +S315E08154200000000000000000000000000000000015 +S315E08154300000000000000000000000000000000005 +S315E081544000000000000000000000000000000000F5 +S315E081545000000000000000000000000000000000E5 +S315E081546000000000000000000000000000000000D5 +S315E081547000000000000000000000000000000000C5 +S315E081548000000000000000000000000000000000B5 +S315E081549000000000000000000000000000000000A5 +S315E08154A00000000000000000000000000000000095 +S315E08154B00000000000000000000000000000000085 +S315E08154C00000000000000000000000000000000075 +S315E08154D00000000000000000000000000000000065 +S315E08154E00000000000000000000000000000000055 +S315E08154F00000000000000000000000000000000045 +S315E08155000000000000000000000000000000000034 +S315E08155100000000000000000000000000000000024 +S315E08155200000000000000000000000000000000014 +S315E081553000000000000000000000004B08000000B1 +S315E081554000000000000000000000000000000000F4 +S315E081555000000000000000000000000000000000E4 +S315E081556000000000000000000000000000000000D4 +S315E081557000000000000000000000000000000000C4 +S315E081558000000000000000000000000000000000B4 +S315E081559000000000000000000000000000000000A4 +S315E08155A00000000000000000000000000000000094 +S315E08155B00000000000000000000000000000000084 +S315E08155C00000000000000000000000000000000074 +S315E08155D00000000000000000000000000000000064 +S315E08155E00000000000000000000000000000000054 +S315E08155F00000000000000000000000000000000044 +S315E08156000000000000000000000000000000000033 +S315E08156100000000000000000000000000000000023 +S315E08156200000000000000000000000000000000013 +S315E08156300000000000000000000000000000000003 +S315E081564000000000000000000000000000000000F3 +S315E081565000000000000000000000000000000000E3 +S315E081566000000000000000000000000000000000D3 +S315E081567000000000000000000000000000000000C3 +S315E081568000000000000000000000000000000000B3 +S315E081569000000000000000000000000000000000A3 +S315E08156A00000000000000000000000000000000093 +S315E08156B0000000003E49000080000000000000007C +S315E08156C00000000000000000000000000000000073 +S315E08156D00000000000000000000000000000000063 +S315E08156E00000000000000000000000000000000053 +S315E08156F00000000000000000000000000000000043 +S315E08157000000000000000000000000000000000032 +S315E08157100000000000000000000000000000000022 +S315E08157200000000000000000000000000000000012 +S315E08157300000000000000000000000000000000002 +S315E081574000000000000000000000000000000000F2 +S315E081575000000000000000000000000000000000E2 +S315E081576000000000000000000000000000000000D2 +S315E081577000000000000000000000000000000000C2 +S315E081578000000000000000000000000000000000B2 +S315E081579000000000000000000000000000000000A2 +S315E08157A00000000000000000000000000000000092 +S315E08157B00000000000000000000000000000000082 +S315E08157C00000000000000000000000000000000072 +S315E08157D00000000000000000000000000000000062 +S315E08157E00000000000000000000000000000000052 +S315E08157F00000000000000000000000000000000042 +S315E08158000000000000000000000000000000000031 +S315E08158100000000000000000000000000000000021 +S315E081582000000000000000000000000100BF3E0013 +S315E081583000000000000000000000000400200000DD +S315E081584000000000000000000000000000000000F1 +S315E08158500001000800400000000000000000000098 +S315E0815860000000000000000000020010008000003F +S315E081587000000000000000000000000000000000C1 +S315E0815880000400200000000000000000000000008D +S315E08158900000000000000001000800400000000058 +S315E08158A0000000000000000000000000000000028F +S315E08158B000100080000000000000000000000000F1 +S315E08158C0000000000000000400200000000000004D +S315E08158D00000000000000000000000000001000858 +S315E08158E00040000000000000000000000000000011 +S315E08158F000000000000200100080000000000000AF +S315E0815900000000000000000000000000000400200C +S315E08159100000000000000000000000000000000020 +S315E081592000000001000800400000000000000000C7 +S315E0815930000000000000000000000002001000806E +S315E081594000000000000000000000000000000000F0 +S315E081595000000004002000000000000000000000BC +S315E08159600000000000000000000100080040000087 +S315E081597000000000000000000000000000000000C0 +S315E0815980000200100080000000000000000000001E +S315E0815990000000000000000000040020000000007C +S315E08159A000000000000028D7000000000000000091 +S315E08159B0000000000400200000000000000000005C +S315E08159C00000000000000000000001000800400027 +S315E08159D00000000000000000000000000000000060 +S315E08159E000000200100080000000000000000000BE +S315E08159F0000000000000000000000400200000001C +S315E0815A00000000000000000000000000000000002F +S315E0815A1001000800400000000000000000000000D6 +S315E0815A20000000000000000002001000800000007D +S315E0815A3000000000000000000000000000000000FF +S315E0815A4004002000000000000000000000000000CB +S315E0815A500000000000000100080040000000000096 +S315E0815A6000000000000000000000000000000200CD +S315E0815A70100080000000000000000000000000002F +S315E0815A80000000000000040020000000000000008B +S315E0815A900000000000000000000000000100080096 +S315E0815AA0400000000000000000000000000000004F +S315E0815AB000000000020010008000000000000000ED +S315E0815AC0000000000000000000000000040020004B +S315E0815AD0000000000000000000000000000000005F +S315E0815AE00000010008004000000000000000000006 +S315E0815AF000000000000000000000020010008000AD +S315E0815B00000000000000000000000000000000002E +S315E0815B1000000400200000000000000000000028D2 +S315E0815B20D700000000000000000000000004002013 +S315E0815B3000000000000000000000000000000000FE +S315E0815B4000000001000800400000000000000000A5 +S315E0815B50000000000000000000000002001000804C +S315E0815B6000000000000000000000000000000000CE +S315E0815B70000000040020000000000000000000009A +S315E0815B800000000000000000000100080040000065 +S315E0815B90000000000000000000000000000000009E +S315E0815BA000020010008000000000000000000000FC +S315E0815BB0000000000000000000040020000000005A +S315E0815BC0000000000000000000000000000000016D +S315E0815BD00008004000000000000000000000000016 +S315E0815BE000000000000000020010008000000000BC +S315E0815BF0000000000000000000000000000000043A +S315E0815C00002000000000000000000000000000000D +S315E0815C1000000000000100080040000000000000D4 +S315E0815C2000000000000000000000000000020010FB +S315E0815C30008000000000000000000000000000007D +S315E0815C4000000000000400200000000000000000C9 +S315E0815C500000000000000000000000010008004094 +S315E0815C6000000000000000000000000000000000CD +S315E0815C70000000020010008000000000000000002B +S315E0815C800000000000000000000000040020000089 +S315E0815C90000000000000000028D7000083831C1C60 +S315E0815CA0606000000303181C406000000707383875 +S315E0815CB04040000007073838C0C00000060730388A +S315E0815CC080C001010E0E7070808001010E0E707031 +S315E0815CD0808001010C0E6070008003031C1CE0E0F3 +S315E0815CE0000003031C1CE0E000000303181CC0E075 +S315E0815CF0000007073838C0C0000007073838C0C041 +S315E0815D0000000607303880C001010E0E7070808079 +S315E0815D1001010E0E7070808001010C0E60700080B2 +S315E0815D2003031C1CE0E0000003031C1CE0E0000010 +S315E0815D300303181CC0E0000007073838C0C0000024 +S315E0815D4007073838C0C000000607303880C0010137 +S315E0815D500E0E7070808001010E0E707080800101E0 +S315E0815D600C0E6070008003031C1CE0E0000003035E +S315E0815D701C1CE0E000000303181CC0E000000707DC +S315E0815D803838C0C0000007073838C0C000000607B1 +S315E0815D90303880C001010E0E7070808001010E0ED8 +S315E0815DA07070808001010C0E6070008003031C1C02 +S315E0815DB0E0E0000003031C1CE0E000000303181C84 +S315E0815DC0C0E0000007073838C0C000000707383850 +S315E0815DD0C0C000000607303880C001010E0E707029 +S315E0815DE0808001010E0E7070808001010C0E607062 +S315E0815DF0008003031C1CE0E0000002021C1CE0E0C2 +S315E0815E0000000202181CC0E0000006063838C1C155 +S315E0815E1000D78400000000000000000000000000C0 +S315E0815E20000000000000000000000000000000000B +S315E0815E3000000000000000000000000000000000FB +S315E0815E4000000000000000000000000000000000EB +S315E0815E5000000000000000000000000000000000DB +S315E0815E6000000000000000000000000000000000CB +S315E0815E7000000000000000000000000000000000BB +S315E0815E8000000000000000000000000000000000AB +S315E0815E90000000000000000000000000000000009B +S315E0815EA0000000000000000000000000000000008B +S315E0815EB0000000000000000000000000000000007B +S315E0815EC0000000000000000000000000000000006B +S315E0815ED0000000000000000000000000000000005B +S315E0815EE0000000000000000000000000000000004B +S315E0815EF0000000000000000000000000000000003B +S315E0815F00000000000000000000000000000000002A +S315E0815F10000000000000000000000000000000001A +S315E0815F20000000000000000000000000000000000A +S315E0815F3000000000000000000000000000000000FA +S315E0815F4000000000000000000000000000000000EA +S315E0815F5000000000000000000000000000000000DA +S315E0815F6000000000000000000000000000000000CA +S315E0815F7000000000000000000000000000000000BA +S315E0815F80000000000000000000003E490000000023 +S315E0815F90000000000000000000000000000000009A +S315E0815FA0000000000000000000000000000000008A +S315E0815FB0000000000000000000000000000000007A +S315E0815FC0000000000000000000000000000000006A +S315E0815FD0000000000000000000000000000000005A +S315E0815FE0000000200000001000000000000000001A +S315E0815FF0000000000000000000000000000000003A +S315E08160000000000000000000000000000000000029 +S315E08160100000000000000000000000000000000019 +S315E08160200000000000000000000000000000000009 +S315E08160300000000000000080000000000010000069 +S315E081604000000000000000004000000000000000A9 +S315E081605000000000000000000000000000000000D9 +S315E081606000000000000000000000000000000000C9 +S315E081607000000000000000000000000000000000B9 +S315E081608000000000000000000000000000000000A9 +S315E08160900000000000000020000000000000000079 +S315E08160A00000000000000000000000000000000089 +S315E08160B00000000000000000000000000000000079 +S315E08160C00000000000000000000000000000000069 +S315E08160D0000000000000000000000008000004004D +S315E08160E00000000000000000000000000000000049 +S315E08160F000000000000000000040000000000000F9 +S315E08161000000000A1F00000000000080000000007F +S315E08161100000000000000000000000000000000018 +S315E08161200000000000000000000000000000000008 +S315E081613000000000000000000000000000000000F8 +S315E081614000000000000000000000000000000000E8 +S315E081615000000000000000000000000000000000D8 +S315E081616000000000000000000000000000000000C8 +S315E081617000000000000000000000000000000000B8 +S315E081618000000000000000000000000000000000A8 +S315E08161900000000000000000000000000000000098 +S315E08161A00000000000000000000000000000000088 +S315E08161B00000000000000000000000000000000078 +S315E08161C00000000000000000000000000000000068 +S315E08161D00020000000000000000000000000000038 +S315E08161E00000000000000000000000000000000048 +S315E08161F00000000000000000000000000000000038 +S315E08162000000000000000000000000000000000027 +S315E08162100000000000000000000000000000000017 +S315E08162200000000000000000000000000000000007 +S315E081623000000000000000000000000000000000F7 +S315E081624000000000000000000000000000000000E7 +S315E081625000000000000000000000000000000000D7 +S315E081626000000001000000000000000000000000C6 +S315E0816270000000000000000000000000781300002C +S315E081628000000000000000000000000000000000A7 +S315E08162900000000000000000000000000000000097 +S315E08162A00000000000000000000020000000000067 +S315E08162B00000000000000010000000000000000067 +S315E08162C00000000000000000000000000000002047 +S315E08162D00000000000000000000000000000000057 +S315E08162E00000000000000000000000000000000047 +S315E08162F00000000000000000000000000000000037 +S315E08163000000000000000000000000000000000026 +S315E08163100000000000000000000000000000000016 +S315E08163200000000000000000000000000000000006 +S315E081633000004000000000000000000000000000B6 +S315E081634000000000000000000000000000000000E6 +S315E081635000000000000000000000000000000000D6 +S315E081636000000000000000000000000000000000C6 +S315E081637000000000000000000000000000000000B6 +S315E081638000000000000000000000000000000000A6 +S315E08163900000000000000000000000000000000096 +S315E08163A00000000000000000000000000000000086 +S315E08163B0000000000000000800000000000000006E +S315E08163C00000000000000000000000000000000066 +S315E08163D00000000000000000000000000000000056 +S315E08163E00000000000000000000000000000000046 +S315E08163F00000000000A8CC00000000008000000042 +S315E08164000000000000000020000000000000000005 +S315E081641000000000000020000000000000000000F5 +S315E08164200000000000000000000000000000000005 +S315E081643000000000000000000000000000000000F5 +S315E081644000000000000000000000000000000000E5 +S315E081645000000000000000000000000000000000D5 +S315E081646000000000200000000000000000000000A5 +S315E081647000000000000000000000000000000000B5 +S315E081648000000000000000000000000000000000A5 +S315E08164900000000000000000000000000000000095 +S315E08164A00000000000000000000000000000000085 +S315E08164B00000000000000000000000000000000075 +S315E08164C0001000A0000000000000000000000000B5 +S315E08164D00000000000000000000000000000000055 +S315E08164E00000000000000000200000000000000025 +S315E08164F00000000000000000000000000000000035 +S315E08165000000000000000000000000000000000024 +S315E081651000000000000000000000000000000020F4 +S315E08165200000000000000000000000000000000004 +S315E081653000000000000000000000000000000000F4 +S315E081654000000000000000000000000000000000E4 +S315E081655000000000000100000000000000010400CE +S315E081656000000000000000000000000000000D3483 +S315E081657000000000000000000000000000000000B4 +S315E081658000000000000000000000000000000000A4 +S315E0816590000000200000000000000008000000006C +S315E08165A00000000000000000000000000000000084 +S315E08165B00000000000000000000000004000040030 +S315E08165C00000000000000040000000200000000004 +S315E08165D00000002001100000000000000000000023 +S315E08165E00000000020000000000000000000000024 +S315E08165F00000000000000000000000000000000034 +S315E08166000000000000000000000000000000000023 +S315E08166100000000000000000000000000000000013 +S315E08166200000000000000000000000000000000003 +S315E081663020000020000000000000000000000000B3 +S315E081664000000000000000000000000000000000E3 +S315E081665000000000000000000000000000000000D3 +S315E081666000000000002000000000000000000000A3 +S315E081667000000000000000000000000000000000B3 +S315E081668000000000000000000000000000000000A3 +S315E08166900000000000004000000000000000000053 +S315E08166A00000000000000000000000000000000083 +S315E08166B00000000000000000000000000040000033 +S315E08166C00000000000000000000000000000400023 +S315E08166D00000000001000000010000000000004011 +S315E08166E00000000000000061EB00002000000000D7 +S315E08166F00000000000000001000000000000000032 +S315E08167000000200000000000000000000000000002 +S315E08167100000000000000000000000000000000012 +S315E08167200000000000000000000000000000000002 +S315E081673000000000000000000020000000000000D2 +S315E081674000000000000000000040000000000000A2 +S315E081675000020000000000000000000000000000D0 +S315E08167604000000000000000000000000000000082 +S315E081677000000000000000000000000000000000B2 +S315E08167800000100000000100000000000000000091 +S315E08167900000000000000000000000000000000092 +S315E08167A00000000000000000000000000000000082 +S315E08167B00000000000000000000000000000000072 +S315E08167C00000000000000000000000002000000042 +S315E08167D00000000000000000000000000000000052 +S315E08167E00000000000000000000000000000000042 +S315E08167F00000000000000000000000000000000032 +S315E08168000000000000000000000000000000000021 +S315E08168100000000000000000000000000000000011 +S315E08168200000000000000000000000000000000001 +S315E081683000000000000000000000000000000000F1 +S315E081684000000000000000000000000000000000E1 +S315E081685000000000000000000000000000000000D1 +S315E0816860C05C002000800000000000000000000005 +S315E08168700100000000000000000000002000000090 +S315E08168800000000000200000000000000000080079 +S315E08168900000000000000000000000000000000091 +S315E08168A00000000000000000000000000000400041 +S315E08168B004002000000000000040000000002000ED +S315E08168C000400000000021001002000000000000EE +S315E08168D000000000002000000000400000000000F1 +S315E08168E00000000000000000000000000000000041 +S315E08168F00000000000000000000000100000000021 +S315E08169000000000000000000000000000000000020 +S315E08169100000000000000000000000000000000010 +S315E081692000002000000020000000000000000000C0 +S315E081693000000000000000000000000000000000F0 +S315E081694000000000002000000000000000000000C0 +S315E081695000000000000000200000000000000000B0 +S315E081696000000000000000000000000000000000C0 +S315E081697000000000000000000000000000000000B0 +S315E081698000000000000000000000000000000000A0 +S315E08169900000000000000000000000000000000090 +S315E08169A00000000000000000000000000000000080 +S315E08169B040000000000000000000000000000040F0 +S315E08169C0000000000001000000000000000000005F +S315E08169D00040000000000100008D3300000000004F +S315E08169E00000000000000000000000000000000040 +S315E08169F00000000000000000000000000000000030 +S315E0816A00000000000000000000000000000000001F +S315E0816A10000000000000000000000000000000000F +S315E0816A2000000000000000000001000000000000FE +S315E0816A3000000000000000000000000000000000EF +S315E0816A4000000000000000000000000000000000DF +S315E0816A5000000000000000000000000000002000AF +S315E0816A6000000000000000000000000000000000BF +S315E0816A7000000000000000000000000000000000AF +S315E0816A80000000000000000000000000800000001F +S315E0816A90000000000000000000000000000000008F +S315E0816AA0000000000000000000000000000000007F +S315E0816AB0000000000000000000000000000000006F +S315E0816AC0000000000000000000000000000000005F +S315E0816AD0000000000000010000000000000000004E +S315E0816AE0000000000000000000000000000000003F +S315E0816AF000000000000000400000000000000001EE +S315E0816B00000000000000000000000000000000001E +S315E0816B10000000000000000000000000000000000E +S315E0816B2000000000000000010000000000000000FD +S315E0816B3000000000000000000000000000000000EE +S315E0816B4000000000000000000000000000000000DE +S315E0816B50000079CF00008000000000000000000006 +S315E0816B6000000000000000000000000000000000BE +S315E0816B7000000000000000000000000000000000AE +S315E0816B80000000000000000000000000000000009E +S315E0816B90000000000000000000000000000000008E +S315E0816BA0000000000000000000000000000000007E +S315E0816BB0000000000000000000000000000000006E +S315E0816BC0000000000000000000000000000000005E +S315E0816BD0000000000000002000000000000000002E +S315E0816BE0000000000000000000000000000000003E +S315E0816BF0000000000000000000000000000000002E +S315E0816C00000000000000000000000000000000001D +S315E0816C10000000000000000000000000000000000D +S315E0816C2000000000000000000000000000000000FD +S315E0816C3000000000000000000000000000000000ED +S315E0816C4000000000000000000000000000000000DD +S315E0816C5000000000000000000000000000000000CD +S315E0816C6000000000000000000000000000000000BD +S315E0816C7000000000000000000000000000000000AD +S315E0816C80000000000000000000000000000000009D +S315E0816C90000000000000000000000000000000008D +S315E0816CA0010000000000000000000000000000007C +S315E0816CB0000000000000000000000000000000006D +S315E0816CC00000000000000000000100F01800000054 +S315E0816CD0000000000000000000000000000000004D +S315E0816CE0000000000000000000000000000000003D +S315E0816CF0000000000000000000000000000000002D +S315E0816D00000000000000000000000000000000001C +S315E0816D10000000000000000000000000000000000C +S315E0816D2000000000000000000000000000000000FC +S315E0816D3000000000000000000000000000000000EC +S315E0816D4000000000000000000000000000000000DC +S315E0816D5000000000000000000000000000000000CC +S315E0816D6000000000000000000000000000000000BC +S315E0816D7000000000000000000000000000000000AC +S315E0816D80000000000000000000000000000000009C +S315E0816D90000000000000000000000000000000008C +S315E0816DA0000000000000000000000000000000007C +S315E0816DB0000000000000000000000000000000006C +S315E0816DC0000000000000000001000000000000005B +S315E0816DD0000000000000000000000000000000004C +S315E0816DE000000000000000004000000000000000FC +S315E0816DF0000000000000000000000000000000002C +S315E0816E00000000000000000000000000000000001B +S315E0816E10000000000000000000000000000000000B +S315E0816E2000000000000000020000000000000000F9 +S315E0816E3000000000000000000000000000000000EB +S315E0816E40000000006C8500000000000000000000EA +S315E0816E5000000000000000000000000000000000CB +S315E0816E6000000000000000000000000000000000BB +S315E0816E7000000000000000000000000000000000AB +S315E0816E80000000000000000000000000000000009B +S315E0816E90000000010000000000000000000000008A +S315E0816EA0000000000000000000000000000000007B +S315E0816EB0000000000000000000000000000000006B +S315E0816EC0000000000000000000000000000000005B +S315E0816ED0000000000000000000000000000000004B +S315E0816EE0000000000000000000000000000000003B +S315E0816EF000000000000000008000000000000000AB +S315E0816F00000000000000000000000000000000001A +S315E0816F10000000000000000000000000000000000A +S315E0816F2000000000000000000000000000000000FA +S315E0816F3000000000000000000000000000000000EA +S315E0816F4000000000000000000000000000000000DA +S315E0816F5000000000000000000000000000000000CA +S315E0816F6000000000000000000001000000000000B9 +S315E0816F7000000000000000000000000000000000AA +S315E0816F80000000000000000000000000000000009A +S315E0816F90000000000000000000000000000000008A +S315E0816FA0000000000000000000000000000000007A +S315E0816FB000000000000000000000000000635B00AC +S315E0816FC0000000000000000000000000000000005A +S315E0816FD0000000000000000000000000000000004A +S315E0816FE0000000000000000000000000000000003A +S315E0816FF0000000000000000000000000000000002A +S315E08170000000000000000000000000000000000019 +S315E08170100000000000000000000000000000000009 +S315E081702000000000000000000000000000000000F9 +S315E081703000000000000000000000000000000000E9 +S315E081704000000000000000000000000000000000D9 +S315E081705000000000000000000000000000000000C9 +S315E081706000000000000000000000000000000000B9 +S315E081707000000000000000000000000000000000A9 +S315E08170800000000000000000000000000000000099 +S315E08170900000000000000000000000000000000089 +S315E08170A00000000000000000000000000000000079 +S315E08170B00000000000000000000000000000000069 +S315E08170C00000000000000000000000000000000059 +S315E08170D00000000000000000000000000000000049 +S315E08170E00000000000000000000000000000000039 +S315E08170F00000000000000000000000000000000029 +S315E08171000000000000000000000000000000000018 +S315E08171100000000000000000000000000000000008 +S315E081712000000000000000000000000000000000F8 +S315E08171300000000000003E49000080800000000061 +S315E081714000000000000000000000000000000000D8 +S315E081715000000000000000000000000000000000C8 +S315E081716000000000000000000000000000000000B8 +S315E081717000000000000000000000000000000000A8 +S315E08171800000000000000000000000000000000098 +S315E08171900000000000000000000000000000000088 +S315E08171A00000000000000000000000000000000078 +S315E08171B00000000000000000000000000000000068 +S315E08171C00000000000000000000000000000000058 +S315E08171D00000000000000000000000000000000048 +S315E08171E00000000000000000000000000000000038 +S315E08171F00000000000000000000000000000000028 +S315E08172000000000000000000000000000000000017 +S315E08172100000000000000000000000000000000007 +S315E081722000000000000000000000000000000000F7 +S315E081723000000000000000000000000000000000E7 +S315E081724000000000000000000000000000000000D7 +S315E081725000000000000000000000000000000000C7 +S315E081726000000000000000000000000000000000B7 +S315E081727000000000000000000000000000000000A7 +S315E08172800000000000000000000000000000000097 +S315E08172900000000000000000000000000000000087 +S315E08172A00000000000000000000000000101009BDA +S315E08172B0BF000000000000000000000000000000A8 +S315E08172C00000000000000000000000000000000057 +S315E08172D00000000000000000000000000000000047 +S315E08172E00000000000000000000000000000000037 +S315E08172F00000000000000000000000000000000027 +S315E08173000000000000000000000000000000000016 +S315E08173100000000000000000000000000000000006 +S315E081732000000000000000000000000000000000F6 +S315E081733000000000000000000000000000000000E6 +S315E081734000000000000000000000000000000000D6 +S315E081735000000000000000000000000000000000C6 +S315E081736000000000000000000000000000000000B6 +S315E081737000000000000000000000000000000000A6 +S315E08173800000000000000000000000000000000096 +S315E08173900000000000000000000000000000000086 +S315E08173A00000000000000000000000000000000076 +S315E08173B00000000000000000000000000000000066 +S315E08173C00000000000000000000000000000000056 +S315E08173D00000000000000000000000000000000046 +S315E08173E00000000000000000000000000000000036 +S315E08173F00000000000000000000000000000000026 +S315E08174000000000000000000000000000000000015 +S315E08174100000000000000000000000000000000005 +S315E081742000000000000000003E490000000000006E +S315E081743000000000000000000000000000000000E5 +S315E081744000000000000000000000000000000000D5 +S315E081745000000000000000000000000000000000C5 +S315E081746000000000000000000000000000000000B5 +S315E081747000000000000000000000000000000000A5 +S315E08174800000000000000000000000000000000095 +S315E08174900000000000000000000000000000000085 +S315E08174A00000000000000000000000000000000075 +S315E08174B00000000000000000000000000000000065 +S315E08174C00000000000000000000000000000000055 +S315E08174D00000000000000000000000000000000045 +S315E08174E00000000000000000000000000000000035 +S315E08174F00000000000000000000000000000000025 +S315E08175000000000000000000000000000000000014 +S315E08175100000000000000000000000000000000004 +S315E081752000000000000000000000000000000000F4 +S315E081753000000000000000000000000000000000E4 +S315E081754000000000000000000000000000000000D4 +S315E081755000000000000000000000000000000000C4 +S315E081756000000000000000000000000000000000B4 +S315E081757000000000000000000000000000000000A4 +S315E08175800000000000000000000000000000000094 +S315E08175900000000000000000000000000000000084 +S315E08175A0003E4900000000000000000000000000ED +S315E08175B00000000000000000000000000000000064 +S315E08175C00000000000000000000000000000000054 +S315E08175D00000000000000000000000000000000044 +S315E08175E00000000000000000000000000000000034 +S315E08175F00000000000000000000000000000000024 +S315E08176000000000000000000000000000000000013 +S315E08176100000000000000000000000000000000003 +S315E081762000000000000000000000000000000000F3 +S315E081763000000000000000000000000000000000E3 +S315E081764000000000000000000000000000000000D3 +S315E081765000000000000000000000000000000000C3 +S315E081766000000000000000000000000000000000B3 +S315E081767000000000000000000000000000000000A3 +S315E08176800000000000000000000000000000000093 +S315E08176900000000000000000000000000000000083 +S315E08176A00000000000000000000000000000000073 +S315E08176B00000000000000000000000000000000063 +S315E08176C00000000000000000000000000000000053 +S315E08176D00000000000000000000000000000000043 +S315E08176E00000000000000000000000000000000033 +S315E08176F00000000000000000000000000000000023 +S315E08177000000000000000000000000000000000012 +S315E0817710000000000000000000003E49000000007B +S315E081772000000000000000000000000000000000F2 +S315E081773000000000000000000000000000000000E2 +S315E081774000000000000000000000000000000000D2 +S315E081775000000000000000000000000000000000C2 +S315E081776000000000000000000000000000000000B2 +S315E081777000000000000000000000000000000000A2 +S315E08177800000000000000000000000000000000092 +S315E08177900000000000000000000000000000000082 +S315E08177A00000000000000000000000000000000072 +S315E08177B00000000000000000000000000000000062 +S315E08177C00000000000000000000000000000000052 +S315E08177D00000000000000000000000000000000042 +S315E08177E00000000000000000000000000000000032 +S315E08177F00000000000000000000000000000000022 +S315E08178000000000000000000000000000000000011 +S315E08178100000000000000000000000000000000001 +S315E081782000000000000000000000000000000000F1 +S315E081783000000000000000000000000000000000E1 +S315E081784000000000000000000000000000000000D1 +S315E081785000000000000000000000000000000000C1 +S315E081786000000000000000000000000000000000B1 +S315E081787000000000000000000000000000000000A1 +S315E08178800000000000000000000000000000000091 +S315E08178900000003E490000000000000000000000FA +S315E08178A00000000000000000000000000000000071 +S315E08178B00000000000000000000000000000000061 +S315E08178C00000000000000000000000000000000051 +S315E08178D00000000000000000000000000000000041 +S315E08178E00000000000000000000000000000000031 +S315E08178F00000000000000000000000000000000021 +S315E08179000000000000000000000000000000000010 +S315E08179100000000000000000000000000000000000 +S315E081792000000000000000000000000000000000F0 +S315E081793000000000000000000000000000000000E0 +S315E081794000000000000000000000000000000000D0 +S315E081795000000000000000000000000000000000C0 +S315E081796000000000000000000000000000000000B0 +S315E081797000000000000000000000000000000000A0 +S315E08179800000000000000000000000000000000090 +S315E08179900000000000000000000000000000000080 +S315E08179A00000000000000000000000000000000070 +S315E08179B00000000000000000000000000000000060 +S315E08179C00000000000000000000000000000000050 +S315E08179D00000000000000000000000000000000040 +S315E08179E00000000000000000000000000000000030 +S315E08179F00000000000000000000000000000000020 +S315E0817A000000000000000100000000003F98000037 +S315E0817A1000000000000000000000000000000000FF +S315E0817A2000000000000000000000000000000000EF +S315E0817A3000000000000000000000000000000000DF +S315E0817A4000000000000000000000000000000000CF +S315E0817A5000000000000000000000000000000000BF +S315E0817A6000000000000000000000000000000000AF +S315E0817A70000000000000000000000000000000009F +S315E0817A80000000000000000000000000000000008F +S315E0817A90000000000000000000000000000000007F +S315E0817AA0000000000000000000000000000000006F +S315E0817AB0000000000000000000000000000000005F +S315E0817AC0000000000000000000000000000000004F +S315E0817AD0000000000000000000000000000000003F +S315E0817AE0000000000000000000000000000000002F +S315E0817AF0000000000000000000000000000000001F +S315E0817B00000000000000000000000000000000000E +S315E0817B1000000000000000000000000000000000FE +S315E0817B2000000000000000000000000000000000EE +S315E0817B3000000000000000000000000000000000DE +S315E0817B4000000000000000000000000000000000CE +S315E0817B5000000000000000000000000000000000BE +S315E0817B6000000000000000000000000000000000AE +S315E0817B70000000000000000000000000000000009E +S315E0817B8000000000003E4900000000000000000007 +S315E0817B90000000000000000000000000000000007E +S315E0817BA0000000000000000000000000000000006E +S315E0817BB0000000000000000000000000000000005E +S315E0817BC0000000000000000000000000000000004E +S315E0817BD0000000000000000000000000000000003E +S315E0817BE0000000000000000000000000000000002E +S315E0817BF0000000000000000000000000000000001E +S315E0817C00000000000000000000000000000000000D +S315E0817C1000000000000000000000000000000000FD +S315E0817C2000000000000000000000000000000000ED +S315E0817C3000000000000000000000000000000000DD +S315E0817C4000000000000000000000000000000000CD +S315E0817C5000000000000000000000000000000000BD +S315E0817C6000000000000000000000000000000000AD +S315E0817C70000000000000000000000000000000009D +S315E0817C80000000000000000000000000000000008D +S315E0817C90000000000000000000000000000000007D +S315E0817CA0000000000000000000000000000000006D +S315E0817CB0000000000000000000000000000000005D +S315E0817CC0000000000000000000000000000000004D +S315E0817CD0000000000000000000000000000000003D +S315E0817CE0000000000000000000000000000000002D +S315E0817CF000000000000000000000000000003E4996 +S315E0817D00000000000080000000000000000000008C +S315E0817D1000000000000000000000000000000000FC +S315E0817D2000000000000000000000000000000000EC +S315E0817D3000000000000000000000000000000000DC +S315E0817D4000000000000000000000000000000000CC +S315E0817D5000000000000000000000000000000000BC +S315E0817D6000000000000000000000000000000000AC +S315E0817D70000000000000000000000000000000009C +S315E0817D80000000000000000000000000000000008C +S315E0817D90000000000000000000000000000000007C +S315E0817DA0000000000000000000000000000000006C +S315E0817DB0000000000000000000000000000000005C +S315E0817DC0000000000000000000000000000000004C +S315E0817DD0000000000000000000000000000000003C +S315E0817DE0000000000000000000000000000000002C +S315E0817DF0000000000000000000000000000000001C +S315E0817E00000000000000000000000000000000000B +S315E0817E1000000000000000000000000000000000FB +S315E0817E2000000000000000000000000000000000EB +S315E0817E3000000000000000000000000000000000DB +S315E0817E4000000000000000000000000000000000CB +S315E0817E5000000000000000000000000000000000BB +S315E0817E6000000000000000000000000000000000AB +S315E0817E70000000000000008C35000000000000805A +S315E0817E80000000000000000000000000000000008B +S315E0817E90000000000000000000000000000000007B +S315E0817EA0000000000000000000000000000000006B +S315E0817EB0000000000000000000000000000000005B +S315E0817EC0000000000000000000000000000000004B +S315E0817ED0000000000000000000000000000000003B +S315E0817EE0000000000000000000000000000000002B +S315E0817EF0000000000000000000000000000000001B +S315E0817F00000000000000000000000000000000000A +S315E0817F1000000000000000000000000000000000FA +S315E0817F2000000000000000000000000000000000EA +S315E0817F3000000000000000000000000000000000DA +S315E0817F4000000000000000000000000000000000CA +S315E0817F5000000000000000000000000000000000BA +S315E0817F6000000000000000000000000000000000AA +S315E0817F70000000000000000000000000000000009A +S315E0817F80000000000000000000000000000000008A +S315E0817F90000000000000000000000000000000007A +S315E0817FA0000000000000000000000000000000006A +S315E0817FB0000000000000000000000000000000005A +S315E0817FC0000000000000000000000000000000004A +S315E0817FD0000000000000000000000000000000003A +S315E0817FE00000000000000000000001000000000029 +S315E0817FF0906A000000000000000000000000000020 +S315E08180000000000000000000000000000000000009 +S315E081801000000000000000000000000000000000F9 +S315E081802000000000000000000000000000000000E9 +S315E081803000000000000000000000000000000000D9 +S315E081804000000000000000000000000000000000C9 +S315E081805000000000000000000000000000000000B9 +S315E081806000000000000000000000000000000000A9 +S315E08180700000000000000000000000000000000099 +S315E08180800000000000000000000000000000000089 +S315E08180900000000000000000000000000000000079 +S315E08180A00000000000000000000000000000000069 +S315E08180B00000000000000000000000000000000059 +S315E08180C00000000000000000000000000000000049 +S315E08180D00000000000000000000000000000000039 +S315E08180E00000000000000000000000000000000029 +S315E08180F00000000000000000000000000000000019 +S315E08181000000000000000000000000000000000008 +S315E081811000000000000000000000000000000000F8 +S315E081812000000000000000000000000000000000E8 +S315E081813000000000000000000000000000000000D8 +S315E081814000000000000000000000000000000000C8 +S315E081815000000000000000000001000000000000B7 +S315E0818160000000000000000100FE49000000000060 +S315E08181700000000004002000000400200000000050 +S315E0818180000000000000000000000100080040013E +S315E08181900008004000000000000000000000000030 +S315E08181A00000020010008002001000800000000044 +S315E08181B00000000000000000000004002000000430 +S315E08181C00020000000000000000000000000000028 +S315E08181D001000800400100080040000000000000A6 +S315E08181E00000000000000000020010008002001084 +S315E08181F00080000000000000000000000000000098 +S315E081820004002000000400200000000000000000BF +S315E08182100000000000000100080040010008004065 +S315E081822000000000000000000000000000000200E5 +S315E081823010008002001000800000000000000000B5 +S315E0818240000000000000040020000004002000007F +S315E081825000000000000000000000000001000800AE +S315E0818260400100080040000000000000000000001E +S315E08182700000000002001000800200100080000073 +S315E08182800000000000000000000000000400200063 +S315E08182900004002000000000000000000000000053 +S315E08182A000000100080040010008004000000000D5 +S315E08182B000000000000000000000020010008002C3 +S315E08182C000100080000000000000000000000000B7 +S315E08182D000000400200000040020000000000000EF +S315E08182E000007C7A00000000000000000000000031 +S315E08182F00000000000000000000000000000000017 +S315E08183000000000000000000000000000000000006 +S315E081831000000000000000000000000000000000F6 +S315E081832000000000000000000000000000000000E6 +S315E081833000000000000000000000000000000000D6 +S315E081834000000000000000000000000000000000C6 +S315E081835000000000000000000000000000000000B6 +S315E081836000000000000000000000000000000000A6 +S315E08183700000000000000000000000000000000096 +S315E08183800000000000000000000000000000000086 +S315E08183900000000000000000000000000000000076 +S315E08183A00000000000000000000000000000000066 +S315E08183B00000000000000000000000000000000056 +S315E08183C00000000000000000000000000000000046 +S315E08183D00000000000000000000000000000000036 +S315E08183E00000000000000000000000000000000026 +S315E08183F00000000000000000000000000000000016 +S315E08184000000000000000000000000000000000005 +S315E081841000000000000000000000000000000000F5 +S315E081842000000000000000000000000000000000E5 +S315E081843000000000000000000000000000000000D5 +S315E081844000000000000000000000000000000000C5 +S315E081845000000000000000000000003E490000002E +S315E081846000000000000000000000000000000000A5 +S315E08184700000000000000000000000000000000095 +S315E08184800000000000000000000000000000000085 +S315E08184900000000000000000000000000000000075 +S315E08184A00000000000000000000000000000000065 +S315E08184B00000000000000000000000000000000055 +S315E08184C00000000000000000000000000000000045 +S315E08184D00000000000000000000000000000000035 +S315E08184E00000000000000000000000000000000025 +S315E08184F00000000000000000000000000000000015 +S315E08185000000000000000000000000000000000004 +S315E081851000000000000000000000000000000000F4 +S315E081852000000000000000000000000000000000E4 +S315E081853000000000000000000000000000000000D4 +S315E081854000000000000000000000000000000000C4 +S315E081855000000000000000000000000000000000B4 +S315E081856000000000000000000000000000000000A4 +S315E08185700000000000000000000000000000000094 +S315E08185800000000000000000000000000000000084 +S315E08185900000000000000000000000000000000074 +S315E08185A00000000000000000000000000000000064 +S315E08185B00000000000000000000000000000000054 +S315E08185C00000000001000000000000000000000043 +S315E08185D000000000FFD9000080800000000000005C +S315E08185E00000000000000000000000000000000024 +S315E08185F00000000000000000000000000000000014 +S315E08186000000000000000000000000000000000003 +S315E081861000000000000000000000000000000000F3 +S315E081862000000000000000000000000000000000E3 +S315E081863000000000000000000000000000000000D3 +S315E081864000000000000000000000000000000000C3 +S315E081865000000000000000000000000000000000B3 +S315E081866000000000000000000000000000000000A3 +S315E08186700000000000000000000000000000000093 +S315E08186800000000000000000000000000000000083 +S315E08186900000000000000000000000000000000073 +S315E08186A00000000000000000000000000000000063 +S315E08186B00000000000000000000000000000000053 +S315E08186C00000000000000000000000000000000043 +S315E08186D00000000000000000000000000000000033 +S315E08186E00000000000000000000000000000000023 +S315E08186F00000000000000000000000000000000013 +S315E08187000000000000000000000000000000000002 +S315E081871000000000000000000000000000000000F2 +S315E081872000000000000000000000000000000000E2 +S315E081873000000000000000000000000000000000D2 +S315E0818740000000000000000000000101009BBF0066 +S315E081875000000000000000000000000000000000B2 +S315E081876000000000000000000000000000000000A2 +S315E08187700000000000000000000000000000000092 +S315E08187800000000000000000000000000000000082 +S315E08187900000000000000000000000000000000072 +S315E08187A00000000000000000000000000000000062 +S315E08187B00000000000000000000000000000000052 +S315E08187C00000000000000000000000000000000042 +S315E08187D00000000000000000000000000000000032 +S315E08187E00000000000000000000000000000000022 +S315E08187F00000000000000000000000000000000012 +S315E08188000000000000000000000000000000000001 +S315E081881000000000000000000000000000000000F1 +S315E081882000000000000000000000000000000000E1 +S315E081883000000000000000000000000000000000D1 +S315E081884000000000000000000000000000000000C1 +S315E081885000000000000000000000000000000000B1 +S315E081886000000000000000000000000000000000A1 +S315E08188700000000000000000000000000000000091 +S315E08188800000000000000000000000000000000081 +S315E08188900000000000000000000000000000000071 +S315E08188A00000000000000000000000000000000061 +S315E08188B00000000000000000000000000000000051 +S315E08188C00000000000003E490000000000000000BA +S315E08188D00000000000000000000000000000000031 +S315E08188E00000000000000000000000000000000021 +S315E08188F00000000000000000000000000000000011 +S315E08189000000000000000000000000000000000000 +S315E081891000000000000000000000000000000000F0 +S315E081892000000000000000000000000000000000E0 +S315E081893000000000000000000000000000000000D0 +S315E081894000000000000000000000000000000000C0 +S315E081895000000000000000000000000000000000B0 +S315E081896000000000000000000000000000000000A0 +S315E08189700000000000000000000000000000000090 +S315E08189800000000000000000000000000000000080 +S315E08189900000000000000000000000000000000070 +S315E08189A00000000000000000000000000000000060 +S315E08189B00000000000000000000000000000000050 +S315E08189C00000000000000000000000000000000040 +S315E08189D00000000000000000000000000000000030 +S315E08189E00000000000000000000000000000000020 +S315E08189F00000000000000000000000000000000010 +S315E0818A0000000000000000000000000000000000FF +S315E0818A1000000000000000000000000000000000EF +S315E0818A2000000000000000000000000000000000DF +S315E0818A300000000000000000000000000000003E91 +S315E0818A404900000000000000000000000000000076 +S315E0818A5000000000000000000000000000000000AF +S315E0818A60000000000000000000000000000000009F +S315E0818A70000000000000000000000000000000008F +S315E0818A80000000000000000000000000000000007F +S315E0818A90000000000000000000000000000000006F +S315E0818AA0000000000000000000000000000000005F +S315E0818AB0000000000000000000000000000000004F +S315E0818AC0000000000000000000000000000000003F +S315E0818AD0000000000000000000000000000000002F +S315E0818AE0000000000000000000000000000000001F +S315E0818AF0000000000000000000000000000000000F +S315E0818B0000000000000000000000000000000000FE +S315E0818B1000000000000000000000000000000000EE +S315E0818B2000000000000000000000000000000000DE +S315E0818B3000000000000000000000000000000000CE +S315E0818B4000000000000000000000000000000000BE +S315E0818B5000000000000000000000000000000000AE +S315E0818B60000000000000000000000000000000009E +S315E0818B70000000000000000000000000000000008E +S315E0818B80000000000000000000000000000000007E +S315E0818B90000000000000000000000000000000006E +S315E0818BA0000000000000000000000000000000005E +S315E0818BB000000000000000003E49000000000000C7 +S315E0818BC0000000000000040020000000000000001A +S315E0818BD00000000000000000000000000100080025 +S315E0818BE040000000000000000000000000000000DE +S315E0818BF0000000000200100080000000000000007C +S315E0818C0000000000000000000000000004002000D9 +S315E0818C1000000000000000000000000000000000ED +S315E0818C200000010008004000000000000000000094 +S315E0818C30000000000000000000000200100080003B +S315E0818C4000000000000000000000000000000000BD +S315E0818C500000040020000000000000000000000089 +S315E0818C600000000000000000010008004000000054 +S315E0818C70000000000000000000000000000000008D +S315E0818C8002001000800000000000000000000000EB +S315E0818C900000000000000000040020000000000049 +S315E0818CA0000000000000000000000000000001005C +S315E0818CB00800400000000000000000000000000005 +S315E0818CC000000000000002001000800000000000AB +S315E0818CD00000000000000000000000000000040029 +S315E0818CE020000000000000000000000000000000FD +S315E0818CF000000000010008004000000000000000C4 +S315E0818D0000000000000000000000000002001000EA +S315E0818D10800000000000000000000000000000006C +S315E0818D2000000000040020000000000000000000B8 +S315E0818D300028D70000008000000000000000000449 +S315E0818D40002000000000000000000000000000009C +S315E0818D500000000000010008004000000000000063 +S315E0818D60000000000000000000000000000200108A +S315E0818D70008000000000000000000000000000000C +S315E0818D800000000000040020000000000000000058 +S315E0818D900000000000000000000000010008004023 +S315E0818DA0000000000000000000000000000000005C +S315E0818DB000000002001000800000000000000000BA +S315E0818DC00000000000000000000000040020000018 +S315E0818DD0000000000000000000000000000000002C +S315E0818DE000010008004000000000000000000000D3 +S315E0818DF0000000000000000000020010008000007A +S315E0818E0000000000000000000000000000000000FB +S315E0818E1000040020000000000000000000000000C7 +S315E0818E200000000000000001000800400000000092 +S315E0818E3000000000000000000000000000000002C9 +S315E0818E40001000800000000000000000000000002B +S315E0818E500000000000000004002000000000000087 +S315E0818E600000000000000000000000000001000892 +S315E0818E70004000000000000000000000000000004B +S315E0818E8000000000000200100080000000000000E9 +S315E0818E900000000000000000000000000004002047 +S315E0818EA0000000000000000000005D960000000068 +S315E0818EB00000000000000000040020000000000027 +S315E0818EC0000000000000000000000000000001003A +S315E0818ED008004000000000000000000000000000E3 +S315E0818EE00000000000000200100080000000000089 +S315E0818EF00000000000000000000000000000040007 +S315E0818F0020000000000000000000000000000000DA +S315E0818F1000000000010008004000000000000000A1 +S315E0818F2000000000000000000000000002001000C8 +S315E0818F30800000000000000000000000000000004A +S315E0818F400000000004002000000000000000000096 +S315E0818F500000000000000000000001000800400061 +S315E0818F60000000000000000000000000000000009A +S315E0818F7000000200100080000000000000000000F8 +S315E0818F800000000000000000000004002000000056 +S315E0818F90000000000000000000000000000000006A +S315E0818FA00100080040000000000000000000000011 +S315E0818FB000000000000000000200100080000000B8 +S315E0818FC0000000000000000000000000000000003A +S315E0818FD00400200000000000000000000000000006 +S315E0818FE000000000000001000800400000000000D1 +S315E0818FF00000000000000000000000000000020008 +S315E08190001000800000000000000000000000000069 +S315E081901000000000000004002000000000000000C5 +S315E081902000000028D7000003031C1C6060000003D9 +S315E081903003181C40600000070738384040000007ED +S315E0819040073838C0C000000607303880C001010EFD +S315E08190500E7070808001010E0E7070808001010CAF +S315E08190600E6070008003031C1CE0E0000003031C1B +S315E08190701CE0E000000303181CC0E000000707388D +S315E081908038C0C0000007073838C0C0000006073086 +S315E08190903880C001010E0E7070808001010E0E7065 +S315E08190A070808001010C0E6070008003031C1CE05F +S315E08190B0E0000003031C1CE0E000000303181CC071 +S315E08190C0E0000007073838C0C0000007073838C01D +S315E08190D0C000000607303880C001010E0E70708036 +S315E08190E08001010E0E7070808001010C0E607000AF +S315E08190F08003031C1CE0E0000003031C1CE0E0008D +S315E0819100000303181CC0E0000007073838C0C00020 +S315E08191100007073838C0C000000607303880C00134 +S315E0819120010E0E7070808001010E0E7070808001DC +S315E0819130010C0E6070008003031C1CE0E00000035C +S315E0819140031C1CE0E000000303181CC0E0000007DC +S315E0819150073838C0C0000007073838C0C0000006AD +S315E081916007303880C001010E0E7070808001010EDB +S315E08191700E7070808001010C0E6070008003031C0C +S315E08191801CE0E0000002021C1CE0E0000002021884 +S315E08191901CC0E0000006063838C0C00072720000CC +S315E08191A00000000000000000000000000000000058 +S315E08191B00000000000000000000000000000000048 +S315E08191C00000000000000000000000000000000038 +S315E08191D00000000000000000000000000000000028 +S315E08191E00000000000000000000000000000000018 +S315E08191F00000000000000000000000000000000008 +S315E081920000000000000000000000000000000000F7 +S315E081921000000000000000000000000000000000E7 +S315E081922000000000000000000000000000000000D7 +S315E081923000000000000000000000000000000000C7 +S315E081924000000000000000000000000000000000B7 +S315E081925000000000000000000000000000000000A7 +S315E08192600000000000000000000000000000000097 +S315E08192700000000000000000000000000000000087 +S315E08192800000000000000000000000000000000077 +S315E08192900000000000000000000000000000000067 +S315E08192A00000000000000000000000000000000057 +S315E08192B00000000000000000000000000000000047 +S315E08192C00000000000000000000000000000000037 +S315E08192D00000000000000000000000000000000027 +S315E08192E00000000000000000000000000000000017 +S315E08192F00000000000000000000000000000000007 +S315E081930000000000000000000000000000000000F6 +S315E081931000000000003E490000000000000000005F +S315E081932000000000000000000000000000000000D6 +S315E081933000000000100000000000000000000000B6 +S315E081934000000000000000000000000000000000B6 +S315E081935000000000000000000000000000000000A6 +S315E08193600000000000000000000000000000000096 +S315E08193700000000000000000000000000000000086 +S315E08193800000000000100000000000000000000066 +S315E08193900000000000000000000000000000000066 +S315E08193A00000000000000000000000000000000056 +S315E08193B00000000000000000000000000000000046 +S315E08193C00000000000000000000000000000000036 +S315E08193D00000000000000000000000000000000026 +S315E08193E020000000000000000000000000000000F6 +S315E08193F00000000000000000000000000000000006 +S315E081940000000000000000000000000000000000F5 +S315E081941000000000000000000000000000000000E5 +S315E081942000000000000000000000000000000000D5 +S315E08194300000000000000000000000000000400085 +S315E081944000000000000000000000000000000400B1 +S315E081945000000000000000000000000000000000A5 +S315E08194600000000000000000000000000000000095 +S315E08194700000000000000000000000000000000085 +S315E0819480000000000000000000000000000046E14E +S315E08194900000000000000000000000000000000065 +S315E08194A00000000000000000000000000000000055 +S315E08194B00000000000000000000000000000000045 +S315E08194C00000000000000000000000000000000035 +S315E08194D00000000000000000000000000000000025 +S315E08194E00000000000000000000000000000000015 +S315E08194F00000000000000000000000000000000005 +S315E081950000000000000000000000000000000000F4 +S315E081951000000000000000000000000000000000E4 +S315E081952000000000000000000000000000000000D4 +S315E081953000000000000000000000000000000000C4 +S315E081954000000000000000000000000000000000B4 +S315E081955000000000000000000000000000000000A4 +S315E08195600000000000002000000000000000000074 +S315E08195700000000000000000000000000000000084 +S315E08195800000000000000000000000000000000074 +S315E08195900000000000000000000000000000000064 +S315E08195A00000000000000000000000000000000054 +S315E08195B00000000000000000000000000000000044 +S315E08195C00000000000000000000000000000000034 +S315E08195D00000000000000000000000000000000024 +S315E08195E00000000000000000000000000000000014 +S315E08195F00000000000000000000000000000000004 +S315E081960000000000000000478C0000000000000020 +S315E08196100000000000000080000000000000000063 +S315E081962000000000000000000000000000000000D3 +S315E081963000000000000000000000000000000000C3 +S315E081964000000000000000000000000000000000B3 +S315E081965000000000000000000000000000000000A3 +S315E08196600000000000000000000000000000000093 +S315E08196700000000000000000000000000000000083 +S315E08196800000000000000000000000000000000073 +S315E08196900000000000000000000000000000000063 +S315E08196A00000000000000000000000000000000053 +S315E08196B00000000000000000000000000000000043 +S315E08196C00000000000000000000000000000000033 +S315E08196D00000000000000000000000000000200003 +S315E08196E00000000000000000000000000000000013 +S315E08196F00000000000000000000000000000000003 +S315E081970000000000000000000000000000000000F2 +S315E081971000000000000000000000000000000000E2 +S315E081972000000000000000000000040000000000CE +S315E081973000000000000000000000000000000000C2 +S315E081974000000000000000000000000000000000B2 +S315E081975000000000000000000000000000000000A2 +S315E08197600000000001000000000000000000000091 +S315E08197700000000000000000000000000000000082 +S315E0819780757000000000000000000000000000008D +S315E08197900000000000000000000000000000000062 +S315E08197A00000000000000000000000000000000052 +S315E08197B00000000000000000000000000000000042 +S315E08197C01000000000000000000000000000000022 +S315E08197D00000000000000000000000000000000022 +S315E08197E00000000000000000000000000000000012 +S315E08197F00000000000000000000000000000000002 +S315E081980000100000000000000000000000000000E1 +S315E081981000000000000000000000000000000000E1 +S315E081982000000000000000000000000000000000D1 +S315E081983000000000000000000000000000000000C1 +S315E081984000000000000000000000000000000000B1 +S315E081985000000000000000000000000000000000A1 +S315E08198600000000020000000000000000000000071 +S315E08198700000000000000000000000000000000081 +S315E08198800000000000000000000000000000000071 +S315E08198900000000000000000000000000000000061 +S315E08198A00000000000000000000000000000000051 +S315E08198B00000000000000000000000000000000041 +S315E08198C000004000000000000000000000000000F1 +S315E08198D00000000000000000000000000000000021 +S315E08198E00000000000000000000000000000000011 +S315E08198F0000000000000000000114E0000000000A2 +S315E081990000000000000000000000000000000000F0 +S315E081991000000000000000000000000000000000E0 +S315E081992000000000000000000000000000000000D0 +S315E081993000000000000000000000000000000000C0 +S315E081994000000000000000000000000000000000B0 +S315E081995000000000000000000000000000000000A0 +S315E08199600000000000000000000000000000000090 +S315E08199700000000000000000000000000000000080 +S315E08199800000000000000000000000000000000070 +S315E08199900000000000000000000000000000000060 +S315E08199A00000000000000000000000000000000050 +S315E08199B00000000000000000000000000000000040 +S315E08199C00000000000000000000000000000000030 +S315E08199D00000000000000000000000000000000020 +S315E08199E00000000000000000000000000000000010 +S315E08199F00000000000000000000000000000000000 +S315E0819A0000000000002000000000000000000000CF +S315E0819A1000000000000000000000000000000000DF +S315E0819A2000000000000000000000000000000000CF +S315E0819A3000000000000000000000000000000000BF +S315E0819A4000000000000000000000000000000000AF +S315E0819A50000000000000000000000000000000009F +S315E0819A60000000000000000000000000000000008F +S315E0819A700000A25F0000808000000000000000007E +S315E0819A80000000000000000000000000000000006F +S315E0819A90000000000000000000000000000000005F +S315E0819AA0000000000000000000000000000000004F +S315E0819AB0000000000000000000000000000000003F +S315E0819AC000000000000000000000000040000000EF +S315E0819AD0000000000000000000000000000000001F +S315E0819AE0000000000000000000000000000000000F +S315E0819AF000000000000000000000000000000000FF +S315E0819B0000000000000000000000000000000000EE +S315E0819B1000000000000000000000000000000000DE +S315E0819B2000000000000000000000000000000000CE +S315E0819B3000000000000000000000000000000000BE +S315E0819B4000000000000000000000000000000000AE +S315E0819B50000000000000000000000000000000009E +S315E0819B60000000000000000000000000000000008E +S315E0819B70000000000000000000000000000000007E +S315E0819B80000000000000000000000000000000006E +S315E0819B90000000000000000000000000000000005E +S315E0819BA0000000000000000000000000000000004E +S315E0819BB0000000000000000000000000000000003E +S315E0819BC0000000000000000000000000000000002E +S315E0819BD0000000000000000000000000000000001E +S315E0819BE00000000000000000010100FE740000009A +S315E0819BF000000000000000000000000000000000FE +S315E0819C0000000000000000000000000000000000ED +S315E0819C1000000000000000000000000000000000DD +S315E0819C2000000000000000000000000000000000CD +S315E0819C3000000000000000000000000000000000BD +S315E0819C40000000000040000000000000000000006D +S315E0819C50000000000000000000000000000000009D +S315E0819C60000000000000000000000000000000008D +S315E0819C70000000000000000000000000000000007D +S315E0819C80000000000000000000000000000000006D +S315E0819C90000000000000000000000000000000005D +S315E0819CA0000000000000000000000000000000004D +S315E0819CB0000000000000000000000000000000003D +S315E0819CC0000000000000000000000000000000002D +S315E0819CD0000000000000000000000000000000001D +S315E0819CE0000000000000000000000000000000000D +S315E0819CF000000000000020000000000000000000DD +S315E0819D0000000000000000000000000000000000EC +S315E0819D1020000000000000000000000000000000BC +S315E0819D2000000000000000000000000000000000CC +S315E0819D3000000000000000000000000000000000BC +S315E0819D4000000000000000000000000000000000AC +S315E0819D50000000000000200000000000000000007C +S315E0819D6000000000ABE00000000000000000000001 +S315E0819D70000000000000000000000000000000007C +S315E0819D80000000000000000000000000000000006C +S315E0819D90000000000000000000000000000000005C +S315E0819DA0000000000000000000000000000000004C +S315E0819DB0000000000000000000000000000000003C +S315E0819DC0000000000000000000000000000000002C +S315E0819DD0000000000000000000000000000000001C +S315E0819DE0000000000000000000000000000000000C +S315E0819DF000000000000000000000000000000000FC +S315E0819E0000000000000000000000000000000000EB +S315E0819E1000000000000000000000000000000000DB +S315E0819E2000000000000000000000000000000000CB +S315E0819E3000000000000000000000000000000000BB +S315E0819E4000000000000000000000000000000000AB +S315E0819E50000000000000000000000000000000009B +S315E0819E60000000000000000000000000000000008B +S315E0819E70000000000000000000000000000000007B +S315E0819E80000000000000000000000000000000006B +S315E0819E90000000000000000000000000000000005B +S315E0819EA0000000000000000000000000000000004B +S315E0819EB0000000000000000000000000000000003B +S315E0819EC0000000000000000000000000000000002B +S315E0819ED000000000000000000000000001FF890092 +S315E0819EE0000000000000000000000000000000000B +S315E0819EF000000000000000000000000000000000FB +S315E0819F0000000000000000000000000000000000EA +S315E0819F1000000000000000000000000000000000DA +S315E0819F2000000000000000000000000000000000CA +S315E0819F3000000000000000000000000000000000BA +S315E0819F4000000000000000000000000000000000AA +S315E0819F50000000000000000000000000000000009A +S315E0819F60000000000000000000000000000000008A +S315E0819F70000000000000000000000000000000007A +S315E0819F80000000000000000000000000000000006A +S315E0819F90000000000000000000000000000000005A +S315E0819FA0000000000000000000000000000000004A +S315E0819FB0000000000000000000000000000000003A +S315E0819FC0000000000000000000000000000000002A +S315E0819FD0000000000000000000000000000000001A +S315E0819FE0000000000000000000000000000000000A +S315E0819FF000000000000000000000000000000000FA +S315E081A00000000000000000000000000000000000E9 +S315E081A01000000000000000000000000000000000D9 +S315E081A02000000000000000000000000000000000C9 +S315E081A03000000000000000000000000000000000B9 +S315E081A04000000000000000000000000000000000A9 +S315E081A0500000000000003E49000000000000000012 +S315E081A0600000000000000000000000000000000089 +S315E081A0700000000000000000000000000000000079 +S315E081A0800000000000000000000000000000000069 +S315E081A0900000000000000000000000000000000059 +S315E081A0A00000000000000000000000000000000049 +S315E081A0B00000000000000000000000000000000039 +S315E081A0C00000000000000000000000000000000029 +S315E081A0D00000000000000000000000000000000019 +S315E081A0E00000000000000000000000000000000009 +S315E081A0F000000000000000000000000000000000F9 +S315E081A10000000000000000000000000000000000E8 +S315E081A11000000020000000000000000000000000B8 +S315E081A12000000000000000000000000000000000C8 +S315E081A13000000000000000000000000000000000B8 +S315E081A14000000000000000000000000000000000A8 +S315E081A1500000000000000000000000000000000098 +S315E081A1600000000000000000000000000000000088 +S315E081A1700000000000000000000000000000000078 +S315E081A1800000000000000000000000000000000068 +S315E081A1900000000000000000000000000000000058 +S315E081A1A00000000000000000000000000000000048 +S315E081A1B00000000000000000000000000000000038 +S315E081A1C00000000000000000000000000000002206 +S315E081A1D09100000080000000000000000000000007 +S315E081A1E00000000000000000000000000000000008 +S315E081A1F000000000000000000000000000000000F8 +S315E081A20000000000000000000000000000000000E7 +S315E081A21000000000000000000000000000000000D7 +S315E081A22000000000000000000000000000000000C7 +S315E081A23000000000000000000000000000000000B7 +S315E081A24000000000000000000000000000000000A7 +S315E081A2500000000000000000000000000000000097 +S315E081A2600000000000000000000000000000000087 +S315E081A2700000000000000000000000000000000077 +S315E081A2800000000000000000000000000000000067 +S315E081A2900000000000000000000000000000000057 +S315E081A2A00000000000000000000000000000000047 +S315E081A2B00000000000000000000000000000000037 +S315E081A2C00000000000000000000000000000000027 +S315E081A2D00000000000000000000000000000000017 +S315E081A2E00000000000000000000000000000000007 +S315E081A2F000000000000000000000000000000000F7 +S315E081A30000000000000000000000000000000000E6 +S315E081A31000000000000000000000000000000000D6 +S315E081A32000000000000000000000000000000000C6 +S315E081A33000000000000000000000000000000000B6 +S315E081A34000000000000100001AC8000000000000C3 +S315E081A3500000000000000000000000000000000096 +S315E081A3600000000000000000000000000000000086 +S315E081A3700000000000000000000000000000000076 +S315E081A3800000000000000000000000000000000066 +S315E081A3900000000000000000000000000000000056 +S315E081A3A00000000000000000000000000000000046 +S315E081A3B00000000000000000000000000000000036 +S315E081A3C00000000000000000000000000000000026 +S315E081A3D00000000000000000000000000000000016 +S315E081A3E00000000000000000000000000000000006 +S315E081A3F000000000000000000000000000000000F6 +S315E081A40000000000000000000000000000000000E5 +S315E081A41000000000000000000000000000000000D5 +S315E081A42000000000000000000000000000000000C5 +S315E081A43000000000000000000000000000000000B5 +S315E081A44000000000000000000000000000000000A5 +S315E081A4500000000000000000000000000000000095 +S315E081A4600000000000000000000000000000000085 +S315E081A4700000000000000000000000000000000075 +S315E081A4800000000000000000000000000000000065 +S315E081A4900000000000000000000000000000000055 +S315E081A4A00000000000200000000000000000000025 +S315E081A4B00000000000000000000000000000000035 +S315E081A4C001A0C900000000000000000000000000BB +S315E081A4D00000000000000000000000000000000015 +S315E081A4E00000000000000000000000000000000005 +S315E081A4F000000000000000000000000000000000F5 +S315E081A50000000000000000000000000000000000E4 +S315E081A51000000000000000000000000000000000D4 +S315E081A52000000000000000000000000000000000C4 +S315E081A53000000000000000000000000000000000B4 +S315E081A54000000000000000000000000000000000A4 +S315E081A5500000000000000000000000000000000094 +S315E081A5600000000000000000000000000000000084 +S315E081A5700000000000000000000000000000000074 +S315E081A5800000000000000000000000000000000064 +S315E081A5900000000000000000000000000000000054 +S315E081A5A00000000000000000000000000000000044 +S315E081A5B00000000000000000000000000000000034 +S315E081A5C00000000000000000000000000000000024 +S315E081A5D00000000000000000000000000000000014 +S315E081A5E00000000000000000000000000000000004 +S315E081A5F000000000000000000000000000000000F4 +S315E081A60000000000000000000000000000002000C3 +S315E081A61000000000000000200000000000000000B3 +S315E081A62000000000000000000000000000000000C3 +S315E081A63000000000000000000000A6740000000099 +S315E081A64000000000000000000000000000000000A3 +S315E081A6500000000000000000000000000000000093 +S315E081A6600000000000000000000000000000000083 +S315E081A6700000000000000000000000000000000073 +S315E081A6800000000000000000000000000000000063 +S315E081A6900000000000000000000000000000000053 +S315E081A6A00000000000000000000000000000000043 +S315E081A6B00000000000000000000000000000000033 +S315E081A6C00000000000000000000000000000000023 +S315E081A6D00000000000000000000000000000000013 +S315E081A6E00000000000000000000000000000000003 +S315E081A6F000000000000000000000000000000000F3 +S315E081A70000000000000000000000000000000000E2 +S315E081A71000000000000000000000000000000000D2 +S315E081A72000000000000000000000000000000000C2 +S315E081A73000000000000000000000000000000000B2 +S315E081A74000000000000000000000000000000000A2 +S315E081A7500000000000000000000000000000000092 +S315E081A7600000000000000000000000000000000082 +S315E081A7700000000000000000000000200000000052 +S315E081A7800000000000000000000000000000000062 +S315E081A7900000000000000000000000000000000052 +S315E081A7A00000000000000000000000000000000042 +S315E081A7B00000004B76000000000000000000000071 +S315E081A7C00000000000000000000000000000000022 +S315E081A7D00000000000000000000000000000000012 +S315E081A7E00000000000000000000000000000000002 +S315E081A7F000000000000000000000000000000000F2 +S315E081A80000000000000000000000000000000000E1 +S315E081A81000000000000000000000000000000000D1 +S315E081A82000000000000000000000000000000000C1 +S315E081A83000000000000000000000000000000000B1 +S315E081A84000000000000000000000000000000000A1 +S315E081A8500000000000000000000000000000000091 +S315E081A8600000000000000000000000000000000081 +S315E081A8700000000000000000000000000000000071 +S315E081A8800000000000000000000000000000000061 +S315E081A8900000000000000000000000000000000051 +S315E081A8A00000000000000000000000000000000041 +S315E081A8B00000000000000000000000000000000031 +S315E081A8C00000000000000000000000000000000021 +S315E081A8D00000000000000000000000000000000011 +S315E081A8E020000000000000000000000000200000C1 +S315E081A8F000000000000000000000000000000000F1 +S315E081A90000000000000000000000000000000000E0 +S315E081A91000000000000000000000000000000000D0 +S315E081A920000000000000200000000000879E00007B +S315E081A93000000000000000000000000000000000B0 +S315E081A94000000000000000000000000000000000A0 +S315E081A9500000000000000000000000000000000090 +S315E081A9600000000000000000000000000000000080 +S315E081A9700000000000000000000000000000000070 +S315E081A9800000000000000000000000000000000060 +S315E081A9900000000000000000000000000000000050 +S315E081A9A00000000000000000000000000000000040 +S315E081A9B00000000000000000000000000000000030 +S315E081A9C00000000000000000000000000000000020 +S315E081A9D00000000000000000000000000000000010 +S315E081A9E00000000000000000000000000000000000 +S315E081A9F000000000000000000000000000000000F0 +S315E081AA0000000000000000000000000000000000DF +S315E081AA1000000000000000000000000000000000CF +S315E081AA2000000000000000000000000000000000BF +S315E081AA3000000000000000000000000000000000AF +S315E081AA40000000000000000000000000000000009F +S315E081AA50000000000000000000000000000000008F +S315E081AA60000000000000000000000000000000007F +S315E081AA70002000000000200000000000000000002F +S315E081AA80000000000000000000000000000000005F +S315E081AA90000000000000000000000000000000004F +S315E081AAA000000000001735000000000000000000F3 +S315E081AAB0000000000000000000000000000000002F +S315E081AAC0000000000000000000000000000000001F +S315E081AAD0000000000000000000000000000000000F +S315E081AAE000000000000000000000000000000000FF +S315E081AAF000000000000000000000000000000000EF +S315E081AB0000000000000000000000000000000000DE +S315E081AB1000000000000000000000000000000000CE +S315E081AB2000000000000000000000000000000000BE +S315E081AB3000000000000000000000000000000000AE +S315E081AB40000000000000000000000000000000009E +S315E081AB50000000000000000000000000000000008E +S315E081AB60000000000000000000000000000000007E +S315E081AB70000000000000000000000000000000006E +S315E081AB80000000000000000000000000000000005E +S315E081AB90000000000000000000000000000000004E +S315E081ABA0000000000000000000000000000000003E +S315E081ABB0000000000000000000000000000000002E +S315E081ABC000000000000020000000000000000000FE +S315E081ABD0000000000000000000000000000000000E +S315E081ABE000000000000000000000000000000000FE +S315E081ABF000000000000000000000000000000000EE +S315E081AC00000000000000000000002000000000209D +S315E081AC100000000000000000000000000000D47683 +S315E081AC2000000000000000000000000000000000BD +S315E081AC3000000000000000000000000000000000AD +S315E081AC40000000000000000000000000000000009D +S315E081AC50000000000000000000000000000000008D +S315E081AC60000000000000000000000000000000007D +S315E081AC70000000000000000000000000000000006D +S315E081AC80000000000000000000000000000000005D +S315E081AC90000000000000000000000000000000004D +S315E081ACA0000000000000000000000000000000003D +S315E081ACB0000000000000000000000000000000002D +S315E081ACC0000000000000000000000000000000001D +S315E081ACD0000000000000000000000000000000000D +S315E081ACE000000000000000000000000000000000FD +S315E081ACF000000000000000000000000000000000ED +S315E081AD0000000000000000000000000000000000DC +S315E081AD1000000000000000000000000000000000CC +S315E081AD2000000000000000000000000000000000BC +S315E081AD3000000000000000000000000000000000AC +S315E081AD40000000000000000000000000000000009C +S315E081AD50000000000000000000000000000000008C +S315E081AD60000000000000000000000000000000205C +S315E081AD70000000000000000020000000000000004C +S315E081AD80200000000000000000000000000000003C +S315E081AD900000000000000024970000000000000091 +S315E081ADA0000000000000000000000000000000003C +S315E081ADB0000000000000000000000000000000002C +S315E081ADC0000000000000000000000000000000001C +S315E081ADD0000000000000000000000000000000000C +S315E081ADE000000000000000000000000000000000FC +S315E081ADF000000000000000000000000000000000EC +S315E081AE0000000000000000000000000000000000DB +S315E081AE1000000000000000000000000000000000CB +S315E081AE2000000000000000000000000000000000BB +S315E081AE3000000000000000000000000000000000AB +S315E081AE40000000000000000000000000000000009B +S315E081AE50000000000000000000000000000000008B +S315E081AE60000000000000000000000000000000007B +S315E081AE70000000000000000000000000000000006B +S315E081AE80000000000000000000000000000000005B +S315E081AE90000000000000000000000000000000004B +S315E081AEA0000000000000000000000000000000003B +S315E081AEB0000000000000000000000000000000002B +S315E081AEC0000000000000000000000000000000001B +S315E081AED000000000200000000000000000000000EB +S315E081AEE000000000000000000000000000000000FB +S315E081AEF000000000000000000000000000000000EB +S315E081AF0000000000000000000000000000000000DA +S315E081AF10144900008080000000000000000000006D +S315E081AF2000000000000000000000000000000000BA +S315E081AF3000000000000000000000000000000000AA +S315E081AF40000000000000000000000000000000009A +S315E081AF50000000000000000000000000000000008A +S315E081AF60000000000000000000000000000000007A +S315E081AF70000000000000000000000000000000006A +S315E081AF80000000000000000000000000000000005A +S315E081AF90000000000000000000000000000000004A +S315E081AFA0000000000000000000000000000000003A +S315E081AFB0000000000000000000000000000000002A +S315E081AFC0000000000000000000000000000000001A +S315E081AFD0000000000000000000000000000000000A +S315E081AFE000000000000000000000000000000000FA +S315E081AFF000000000000000000000000000000000EA +S315E081B00000000000000000000000000000000000D9 +S315E081B01000000000000000000000000000000000C9 +S315E081B02000000000000000000000000000000000B9 +S315E081B03000000000000000000000000000000000A9 +S315E081B0400020000000002000000000000000000059 +S315E081B0500000000000000000000000000000000089 +S315E081B0600000000000000000000000000000000079 +S315E081B0700000000000000000000000000000000069 +S315E081B08000000000000001010089DA0000000000F4 +S315E081B0900000000000000000000000000000000049 +S315E081B0A00000000000000000000000000000000039 +S315E081B0B00000000000000000000000000000000029 +S315E081B0C00000000000000000000000000000000019 +S315E081B0D00000000000000000000000000000000009 +S315E081B0E000000000000000000000000000000000F9 +S315E081B0F000000000000000000000000000000000E9 +S315E081B10000000000000000000000000000000000D8 +S315E081B11000000000000000000000000000000000C8 +S315E081B12000000000000000000000000000000000B8 +S315E081B13000000000000000000000000000000000A8 +S315E081B1400000000000000000000000000000000098 +S315E081B1500000000000000000000000000000000088 +S315E081B1600000000000000000000000000000000078 +S315E081B1700000000000000000000000000000000068 +S315E081B1800000000000000000000000000000000058 +S315E081B1900000000000000000000000000000000048 +S315E081B1A00000000000000000000000000000000038 +S315E081B1B000000000000000000000002000000020E8 +S315E081B1C000000000000000200000000000000000F8 +S315E081B1D000000000000000200000000000000020C8 +S315E081B1E000000000000000200000000000000000D8 +S315E081B1F000000000000000000000000000000000E8 +S315E081B20000003FDB000000000000000000000000BD +S315E081B21000000000000000000000000000000000C7 +S315E081B22000000000000000000000000000000000B7 +S315E081B23000000000000000000000000000000000A7 +S315E081B2400000000000000000000000000000000097 +S315E081B2500000000000000000000000000000000087 +S315E081B2600000000000000000000000000000000077 +S315E081B2700000000000000000000000000000000067 +S315E081B2800000000000000000000000000000000057 +S315E081B2900000000000000000000000000000000047 +S315E081B2A00000000000000000000000000000000037 +S315E081B2B00000000000000000000000000000000027 +S315E081B2C00000000000000000000000000000000017 +S315E081B2D00000000000000000000000000000000007 +S315E081B2E000000000000000000000000000000000F7 +S315E081B2F000000000000000000000000000000000E7 +S315E081B30000000000000000000000000000000000D6 +S315E081B31000000000000000000000000000000000C6 +S315E081B3200000002000000000000000000000000096 +S315E081B3302000000000000000000000002000000066 +S315E081B3400000000020000000200000002000000036 +S315E081B3500000000020000000000000200000000046 +S315E081B3600000000020000000200000002000000016 +S315E081B3700000000000002000000000121D00000017 +S315E081B3800000000000000000000000000000000056 +S315E081B3900000000000000000000000000000000046 +S315E081B3A00000000000000000000000000000000036 +S315E081B3B00000000000000000000000000000000026 +S315E081B3C00000000000000000000000000000000016 +S315E081B3D00000000000000000000000000000000006 +S315E081B3E000000000000000000000000000000000F6 +S315E081B3F000000000000000000000000000000000E6 +S315E081B40000000000000000000000000000000000D5 +S315E081B41000000000000000000000000000000000C5 +S315E081B42000000000000000000000000000000000B5 +S315E081B43000000000000000000000000000000000A5 +S315E081B4400000000000000000000000000000000095 +S315E081B4500000000000000000000000000000000085 +S315E081B4600000000000000000000000000000000075 +S315E081B4700000000000000000000000000000000065 +S315E081B4800000000000000000000000000000000055 +S315E081B4900000000000000000000000000000000045 +S315E081B4A00000000000000000000000000000000035 +S315E081B4B00000000000000000000000000000000025 +S315E081B4C00000000000000000000000000000000015 +S315E081B4D00000000000000000000000000000000005 +S315E081B4E000000000000000000000000000000020D5 +S315E081B4F000000000BF8E0000000000000000000494 +S315E081B5000020000004002000000000000000000090 +S315E081B5100000000000010008004001000800400032 +S315E081B52000000000000000000000000000020010A2 +S315E081B5300080020010008000000000000000000092 +S315E081B540000000000004002000000400200000004C +S315E081B550000000000000000000000001000800403B +S315E081B560010008004000000000000000000000002B +S315E081B5700000000200100080020010008000000040 +S315E081B5800000000000000000000000040020000030 +S315E081B5900400200000000000000000000000000020 +S315E081B5A000010008004001000800400000000000A2 +S315E081B5B00000000000000000000200100080020090 +S315E081B5C01000800000000000000000000000000084 +S315E081B5D000040020000004002000000000000000BC +S315E081B5E000000000000000010008004001000800A2 +S315E081B5F040000000000000000000000000000002A2 +S315E081B60000100080020010008000000000000000B1 +S315E081B610000000000000000400200000040020007B +S315E081B620002020200000000000200000000100082A +S315E081B63000600100080040000020200000000000BA +S315E081B640002000000002001000A00200100080002F +S315E081B65000200000000000000020200000040020FF +S315E081B66000000400200000000000000000A23D0070 +S315E081B67000008000000000000000000000000000E3 +S315E081B6800000000000000000000000000000000053 +S315E081B6900000000000000000000000000000000043 +S315E081B6A00000000000000000000000000000000033 +S315E081B6B00000000000000000000000000000000023 +S315E081B6C00000000000000000000000000000000013 +S315E081B6D00000000000000000000000000000000003 +S315E081B6E000000000000000000000000000000000F3 +S315E081B6F000000000000000000000000000000000E3 +S315E081B70000000000000000000000000000000000D2 +S315E081B71000000000000000000000000000000000C2 +S315E081B72000000000000000000000000000000000B2 +S315E081B73000000000000000000000000000000000A2 +S315E081B7400000000000000000000000000000000092 +S315E081B7500000000000000000000000000000000082 +S315E081B7600000000000000000000000000000000072 +S315E081B7700000000000000000000000000000000062 +S315E081B7800000000000000000000000000000000052 +S315E081B7900000000000000000000000000020000022 +S315E081B7A00000002020200000000000202020000072 +S315E081B7B00000000020200000000000202020000082 +S315E081B7C00000002020200000000000202020000052 +S315E081B7D000000000202000000000000000000000C2 +S315E081B7E020200001000095BB000000000000000061 +S315E081B7F000000000000000000000000000000000E2 +S315E081B80000000000000000000000000000000000D1 +S315E081B81000000000000000000000000000000000C1 +S315E081B82000000000000000000000000000000000B1 +S315E081B83000000000000000000000000000000000A1 +S315E081B8400000000000000000000000000000000091 +S315E081B8500000000000000000000000000000000081 +S315E081B8600000000000000000000000000000000071 +S315E081B8700000000000000000000000000000000061 +S315E081B8800000000000000000000000000000000051 +S315E081B8900000000000000000000000000000000041 +S315E081B8A00000000000000000000000000000000031 +S315E081B8B00000000000000000000000000000000021 +S315E081B8C00000000000000000000000000000000011 +S315E081B8D00000000000000000000000000000000001 +S315E081B8E000000000000000000000000000000000F1 +S315E081B8F000000000000000000000000000000000E1 +S315E081B9000000000000000020200000000000000090 +S315E081B9100000000000002000000000002020200040 +S315E081B9200000000020202000000000000020200010 +S315E081B93000000000202020000000000020202000E0 +S315E081B94000000000202020000000000000202000F0 +S315E081B95000000000000000000000000000010084FB +S315E081B9604000000000000000000000000000000030 +S315E081B9700000000000000000000000000000000060 +S315E081B9800000000000000000000000000000000050 +S315E081B9900000000000000000000000000000000040 +S315E081B9A00000000000000000000000000000000030 +S315E081B9B00000000000000000000000000000000020 +S315E081B9C00000000000000000000000000000000010 +S315E081B9D00000000000000000000000000000000000 +S315E081B9E000000000000000000000000000000000F0 +S315E081B9F000000000000000000000000000000000E0 +S315E081BA0000000000000000000000000000000000CF +S315E081BA1000000000000000000000000000000000BF +S315E081BA2000000000000000000000000000000000AF +S315E081BA30000000000000000000000000000000009F +S315E081BA40000000000000000000000000000000008F +S315E081BA50000000000000000000000000000000007F +S315E081BA60000000000000000000000000000000006F +S315E081BA70000000000000000000000000000000005F +S315E081BA8020200000000000000000000020202000AF +S315E081BA9000000000200000000000000020000000FF +S315E081BAA000000000202000000000000020000000CF +S315E081BAB000000000200000000000000020000000DF +S315E081BAC000000000202000000000000000000000CF +S315E081BAD00000202000000000D4E400000000000007 +S315E081BAE000000000000000000000000000000000EF +S315E081BAF000000000000000000000000000000000DF +S315E081BB0000000000000000000000000000000000CE +S315E081BB1000000000000000000000000000000000BE +S315E081BB2000000000000000000000000000000000AE +S315E081BB30000000000000000000000000000000009E +S315E081BB40000000000000000000000000000000008E +S315E081BB50000000000000000000000000000000007E +S315E081BB60000000000000000000000000000000006E +S315E081BB70000000000000000000000000000000005E +S315E081BB80000000000000000000000000000000004E +S315E081BB90000000000000000000000000000000003E +S315E081BBA0000000000000000000000000000000002E +S315E081BBB0000000000000000000000000000000001E +S315E081BBC0000000000000000000000000000000000E +S315E081BBD000000000000000000000000000000000FE +S315E081BBE000000000000000000000000000000000EE +S315E081BBF0000000000000000000202000000000009E +S315E081BC0000000000000000200000000000000000AD +S315E081BC1000000000000000000000000000000000BD +S315E081BC2000000000000000000000000000000000AD +S315E081BC30000000000000000000000000000000009D +S315E081BC40000000000000000000000020200000004D +S315E081BC500021490000000000000000000000000013 +S315E081BC60000000000000000000000000000000006D +S315E081BC70000000000000000000000000000000005D +S315E081BC80000000000000000000000000000000004D +S315E081BC90000000000000000000000000000000003D +S315E081BCA0000000000000000000000000000000002D +S315E081BCB0000000000000000000000000000000001D +S315E081BCC0000000000000000000000000000000000D +S315E081BCD000000000000000000000000000000000FD +S315E081BCE000000000000000000000000000000000ED +S315E081BCF000000000000000000000000000000000DD +S315E081BD0000000000000000000000000000000000CC +S315E081BD1000000000000000000000000000000000BC +S315E081BD2000000000000000000000000000000000AC +S315E081BD30000000000000000000000000000000009C +S315E081BD40000000000000000000000000000000008C +S315E081BD50000000000000000000000000000000007C +S315E081BD60000000000000000000000000000000006C +S315E081BD70000020200000000000000000000000001C +S315E081BD8000200000000000002020000000000000EC +S315E081BD9020200000000000002020000000000000BC +S315E081BDA020200000000000002020000000000000AC +S315E081BDB0202000000000000020200000000000009C +S315E081BDC0000000000000000000000E5A00000000A4 +S315E081BDD000000000000000000000000000000000FC +S315E081BDE000000000000000000000000000000000EC +S315E081BDF000000000000000000000000000000000DC +S315E081BE0000000000000000000000000000000000CB +S315E081BE1000000000000000000000000000000000BB +S315E081BE2000000000000000000000000000000000AB +S315E081BE30000000000000000000000000000000009B +S315E081BE40000000000000000000000000000000008B +S315E081BE50000000000000000000000000000000007B +S315E081BE60000000000000000000000000000000006B +S315E081BE70000000000000000000000000000000005B +S315E081BE80000000000000000000000000000000004B +S315E081BE90000000000000000000000000000000003B +S315E081BEA0000000000000000000000000000000002B +S315E081BEB0000000000000000000000000000000001B +S315E081BEC0000000000000000000000000000000000B +S315E081BED000000000000000000000000000000000FB +S315E081BEE000000000000000000000000000000000EB +S315E081BEF0000000000000002020202000000000203B +S315E081BF00002020000000002000202000000000200A +S315E081BF1020202000000000200020200000000020DA +S315E081BF2000202000000000200020200000000020EA +S315E081BF3020202000000000000000000000202000FA +S315E081BF40000000E4F70000000000000000000000AF +S315E081BF500004002000000000000000000000000056 +S315E081BF600000000000000001000800400000000021 +S315E081BF700000000000000000000000000000000258 +S315E081BF8000100080000000000000000000000000BA +S315E081BF900000000000000004002000000000000016 +S315E081BFA00000000000000000000000000001000821 +S315E081BFB000400000000000000000000000000000DA +S315E081BFC00000000000020010008000000000000078 +S315E081BFD000000000000000000000000000040020D6 +S315E081BFE000000000000000000000000000000000EA +S315E081BFF00000000100080040000000000000000091 +S315E081C0000000000000000000000000020010008037 +S315E081C01000000000000000000000000000000000B9 +S315E081C0200000000400200000000000000000000085 +S315E081C0300000000000000000000100080040000050 +S315E081C0400000000000000000000000000000000089 +S315E081C05000020010008000000000000000000000E7 +S315E081C0600000000000000000000400200000000045 +S315E081C07000002020000000000020202000000001B8 +S315E081C0800028206000000000000020200000000061 +S315E081C0900020202000000002003020A000000000E7 +S315E081C0A00020202000000000000020200000000485 +S315E081C0B0002000000000000000000001CB29000004 +S315E081C0C000000000000000000000040020000000E5 +S315E081C0D000000000000000000000000000000000F9 +S315E081C0E001000800400000000000000000000000A0 +S315E081C0F00000000000000000020010008000000047 +S315E081C10000000000000000000000000000000000C8 +S315E081C1100400200000000000000000000000000094 +S315E081C120000000000000010008004000000000005F +S315E081C1300000000000000000000000000000020096 +S315E081C14010008000000000000000000000000000F8 +S315E081C1500000000000000400200000000000000054 +S315E081C160000000000000000000000000010008005F +S315E081C1704000000000000000000000000000000018 +S315E081C18000000000020010008000000000000000B6 +S315E081C1900000000000000000000000000400200014 +S315E081C1A00000000000000000000000000000000028 +S315E081C1B000000100080040000000000000000000CF +S315E081C1C00000000000000000000002001000800076 +S315E081C1D000000000000000000000000000000000F8 +S315E081C1E000000400200000000000000000000000C4 +S315E081C1F0000000000000000001000800400000008F +S315E081C20000000000000000000000000000000000C7 +S315E081C2100200100080000000000000000000000025 +S315E081C2200000000000000000040020010000000082 +S315E081C230000000000079120000000000000000000C +S315E081C2400000000400200000000000000000000063 +S315E081C250000000000000000000010008004000002E +S315E081C2600000000000000000000000000000000067 +S315E081C27000020010008000000000000000000000C5 +S315E081C2800000000000000000000400200000000023 +S315E081C2900000000000000000000000000000000136 +S315E081C2A000080040000000000000000000000000DF +S315E081C2B00000000000000002001000800000000085 +S315E081C2C00000000000000000000000000000000403 +S315E081C2D000200000000000000000000000000000D7 +S315E081C2E0000000000001000800400000000000009E +S315E081C2F000000000000000000000000000020010C5 +S315E081C3000080000000000000000000000000000046 +S315E081C3100000000000040020000000000000000092 +S315E081C320000000000000000000000001000800405D +S315E081C3300000000000000000000000000000000096 +S315E081C34000000002001000800000000000000000F4 +S315E081C3500000000000000000000000040020000052 +S315E081C3600000000000000000000000000000000066 +S315E081C370000100080040000000000000000000000D +S315E081C38000000000000000000002001000800000B4 +S315E081C3900000000000000000000000010000000035 +S315E081C3A00004012000000000000000000000E8E831 +S315E081C3B0000083831C1C606000000303181C40603E +S315E081C3C00000070738384040000007073838C0C00A +S315E081C3D000000607303880C001010E0E7070808043 +S315E081C3E001010E0E7070808001010C0E607000807C +S315E081C3F003031C1CE0E0000003031C1CE0E00000DA +S315E081C4000303181CC0E0000007073838C0C00000ED +S315E081C41007073838C0C000000607303880C0010100 +S315E081C4200E0E7070808001010E0E707080800101A9 +S315E081C4300C0E6070008003031C1CE0E00000030327 +S315E081C4401C1CE0E000000303181CC0E000000707A5 +S315E081C4503838C0C0000007073838C0C0000006077A +S315E081C460303880C001010E0E7070808001010E0EA1 +S315E081C4707070808001010C0E6070008003031C1CCB +S315E081C480E0E0000003031C1CE0E000000303181C4D +S315E081C490C0E0000007073838C0C000000707383819 +S315E081C4A0C0C000000607303880C001010E0E7070F2 +S315E081C4B0808001010E0E7070808001010C0E60702B +S315E081C4C0008003031C1CE0E0000003031C1CE0E089 +S315E081C4D000000303181CC0E0000007073838C0C01D +S315E081C4E0000007073838C0C000000607303880C032 +S315E081C4F001010E0E7070808001010E0E70708080D9 +S315E081C50001010C0E6070008003031C1CE0E000005A +S315E081C51002021C1CE0E000000202181CC0E00000E0 +S315E081C52006063838C1C100D784000000000000004B +S315E081C5300000000000000000000000000000000094 +S315E081C5400000000000000000000000000000000084 +S315E081C5500000000000000000000000000000000074 +S315E081C5600000000000000000000000000000000064 +S315E081C5700000000000000000000000000000000054 +S315E081C5800000000000000000000000000000000044 +S315E081C5900000000000000000000000000000000034 +S315E081C5A00000000000000000000000000000000024 +S315E081C5B00000000000000000000000000000000014 +S315E081C5C00000000000000000000000000000000004 +S315E081C5D000000000000000000000000000000000F4 +S315E081C5E000000000000000000000000000000000E4 +S315E081C5F000000000000000000000000000000000D4 +S315E081C60000000000000000000000000000000000C3 +S315E081C61000000000000000000000000000000000B3 +S315E081C62000000000000000000000000000000000A3 +S315E081C6300000000000000000000000000000000093 +S315E081C6400000000000000000000000200000000063 +S315E081C6500000200000000000002020000000000013 +S315E081C66000202000000000000020200000000000E3 +S315E081C67000202000000000000020200000000000D3 +S315E081C68000202000000000000020200000000000C3 +S315E081C69000200000000000002000000000000000F3 +S315E081C6A0DD2D0000000000002000000000000000F9 +S315E081C6B00000000002000000000000000000000011 +S315E081C6C000000000000000000000200000000000E3 +S315E081C6D000000000000000000000000000000000F3 +S315E081C6E000000000000000000000000000000000E3 +S315E081C6F000000000000000000000000000000000D3 +S315E081C70000000000000000000000000000000000C2 +S315E081C71000000400000000000000000000000000AE +S315E081C72000000000000000000000000000000000A2 +S315E081C7300000000000400000000000000000000052 +S315E081C7400000000000000000000000000000000082 +S315E081C7500000000000000000000000000000000072 +S315E081C7600000000000000000000020000000000042 +S315E081C77000000000000080000000000000000000D2 +S315E081C7800000000000000000000000000000000042 +S315E081C7900000000000000000000000000000000032 +S315E081C7A00000000000000000000000000000000022 +S315E081C7B00000000000000000000000000000000012 +S315E081C7C000000000000000000002000000001000F0 +S315E081C7D000000000000000000000000000000000F2 +S315E081C7E000000000000000000000000000000000E2 +S315E081C7F000000000000000000000002000000000B2 +S315E081C80000000000000000000000000000000000C1 +S315E081C8100000000000000000005AB800000000009F +S315E081C82000000000000000000000000000000000A1 +S315E081C8300000000000000000000020000000000071 +S315E081C8400000000000000000000000000000000081 +S315E081C8500000000000000000000000000000000071 +S315E081C8600000000000000000000000000000000061 +S315E081C8700000000000100000000000000000000041 +S315E081C8800000000000000000000000000000001031 +S315E081C8900000000000000000000000000000000031 +S315E081C8A00000000000000000000000000000000021 +S315E081C8B00000000000000000000000000000000011 +S315E081C8C00000000000000000000000000000000001 +S315E081C8D000000000000000000000000000000000F1 +S315E081C8E000000000000000000000000000000000E1 +S315E081C8F000200000000000000000000000000000B1 +S315E081C90000000000000000000000000000000000C0 +S315E081C91000000000000000000000000000000000B0 +S315E081C9200000000000000020000000000000000080 +S315E081C9300000002000000000000000000000004030 +S315E081C9400000004000000000000000000000000040 +S315E081C9500000000000000000000000000000000070 +S315E081C9600000000000000000000000000000000060 +S315E081C9700000000000000000000000000000000050 +S315E081C9800000000000000000000000400000000000 +S315E081C99000000F40000000000000000000000000E1 +S315E081C9A00000000020000000000000000000000000 +S315E081C9B00000000000000000000000000000000010 +S315E081C9C00000000000000000000000000000000000 +S315E081C9D000000000000000000000000000000000F0 +S315E081C9E000000000000000000400000000000000DC +S315E081C9F000000000000000000000000000000000D0 +S315E081CA00008000000000000000000000000000003F +S315E081CA1000000000000000000000000000000000AF +S315E081CA20000000000000000000000000000000009F +S315E081CA30000000000000000000000000000000008F +S315E081CA40000000000000000000000000000000007F +S315E081CA50000000000000000000000000000000006F +S315E081CA60800000000000000000200000000040007F +S315E081CA70000000000000000000000000000000004F +S315E081CA80000000000000000000000000000000003F +S315E081CA90000000000000000000000000000200002D +S315E081CAA0000000001000000000000000000000000F +S315E081CAB0000000000000000000000000000000000F +S315E081CAC000000000000000000000000000000000FF +S315E081CAD000000000000000000000000000000000EF +S315E081CAE000000000000000000000000000000000DF +S315E081CAF000000000000000000000000000000000CF +S315E081CB0004000040000000000000003EDC00000060 +S315E081CB10000000000000000020000000000000008E +S315E081CB20000000000000000000000000200000007E +S315E081CB30000000000000000000000000000000008E +S315E081CB40000000000000000000000000000000007E +S315E081CB50000000000000000000000000000000006E +S315E081CB60000000000000001000000000000000004E +S315E081CB70000000000000000000000000000000004E +S315E081CB80001000000000000000000000000000002E +S315E081CB90000000000000000000000000000000002E +S315E081CBA0000000000000000000000000000000001E +S315E081CBB0000000000000000000000000000000000E +S315E081CBC000400000000000000000000000000000BE +S315E081CBD000000000000000000000000000000000EE +S315E081CBE000000000000000000000200000000000BE +S315E081CBF000000000000000000000000000000000CE +S315E081CC0000000000000000000000000000000000BD +S315E081CC10000000000000000000200000000000008D +S315E081CC20000000000020000000000000000000007D +S315E081CC30004000000040000000000000000000000D +S315E081CC4000000000008000000000000000000000FD +S315E081CC50000000000000000000000000000000006D +S315E081CC60000000000000000000000000000000005D +S315E081CC70000000000000000000000020000000002D +S315E081CC80000000004FF400000000000000000000FA +S315E081CC90000000000000000000000000000000002D +S315E081CCA0000000000000000000000000000000001D +S315E081CCB0000000000000000000000000000000000D +S315E081CCC000000000000000000000000000000000FD +S315E081CCD000000000000000000000000000000000ED +S315E081CCE000000000000000000000000000000000DD +S315E081CCF000000000000000000000000000000020AD +S315E081CD0000000000000000000000000000000000BC +S315E081CD10004000000000000000000000000000006C +S315E081CD20000000002000000000000000000000007C +S315E081CD30000000000000000000000000000000008C +S315E081CD40000000000000000000000000000000007C +S315E081CD500000000004000000000000000000000068 +S315E081CD60000000000000000000000000000000005C +S315E081CD70000000000000000000000000000000004C +S315E081CD80000020000000000000000000000000001C +S315E081CD90000000000000000000000000000000002C +S315E081CDA000000000000000200000000000000000FC +S315E081CDB0000000000000000000000000000000000C +S315E081CDC000000000000000000000000000000000FC +S315E081CDD000000000000000000000000000000000EC +S315E081CDE0400000000000000000000000000000009C +S315E081CDF00000000000000000000000000087010044 +S315E081CE00000000000000000000000000002000009B +S315E081CE10000000000000000000001000000000009B +S315E081CE20000008000000000000080000000000008B +S315E081CE30000000000000000000000010000000007B +S315E081CE40000000000000000000000000000000007B +S315E081CE50000000600000000000000000000000000B +S315E081CE60000000000000000000000000000000005B +S315E081CE7000100002000000000000008000000000B9 +S315E081CE80100000000000000000200000000000000B +S315E081CE90000000000000000020000000000000000B +S315E081CEA0000000000000000000000000000000001B +S315E081CEB0000000000000000000000000000000000B +S315E081CEC000000000000000000000000000000020DB +S315E081CED000000000000000000000000000002000CB +S315E081CEE000000000000000000000000000000000DB +S315E081CEF000000000000000000000000000000000CB +S315E081CF0000000000000000000000000000000000BA +S315E081CF1000000000000000000000000000000000AA +S315E081CF20000000000020000000000000000000007A +S315E081CF30000000000000000000000000004000004A +S315E081CF40000000000000000000000000000000007A +S315E081CF50000000000000000000000000000000006A +S315E081CF60000000000000000000000000000000005A +S315E081CF70000000000000AFB5000000800000000066 +S315E081CF80000000000000200000000000000000001A +S315E081CF90000000100000000000000000000000001A +S315E081CFA00000080000000000000000000000000012 +S315E081CFB000000000100000000000000000000000FA +S315E081CFC0000000000000000000000040200000009A +S315E081CFD000000000000000000000000000000000EA +S315E081CFE000000000000000000000000002000000D8 +S315E081CFF000000000000000000010000000000000BA +S315E081D0000020004000000000000000000000000059 +S315E081D0100020000000000000000000000000000089 +S315E081D0200000000000000000000000000000000099 +S315E081D0300000000000000000000000000000000089 +S315E081D0400000000000000400000000000000000075 +S315E081D0500000000000000020000000000000000049 +S315E081D0600000000000000000000000000000000059 +S315E081D0700000000000000000000000000000000049 +S315E081D0800000000000000000000000000000000039 +S315E081D09000000000000000000020000000002000E9 +S315E081D0A00000000000000000000000000000000019 +S315E081D0B000000000000040000000000000000000C9 +S315E081D0C000000000000000000000000000000000F9 +S315E081D0D000000000000000000000000000000000E9 +S315E081D0E00000000000000000000000000100005F79 +S315E081D0F0E2000000000000000000000000000000E7 +S315E081D10000000000000000000000000000000000B8 +S315E081D11000000000000000000000000000000000A8 +S315E081D1200000000000000000000000000000002078 +S315E081D1300000000020000000000000000000000068 +S315E081D1400000000000000000000000000000000078 +S315E081D1500000000000000000000000000000000068 +S315E081D1600000400010000000000000000000000008 +S315E081D1700000000000000040000000000000000008 +S315E081D1800000000000000000000000000000000038 +S315E081D1900000000000000000000000000000000028 +S315E081D1A000000000000000000000000020000000F8 +S315E081D1B00000000000000000000000000000000008 +S315E081D1C08000000000040000000000000000000074 +S315E081D1D000000000000000000000000000000000E8 +S315E081D1E000000000000000000000000000000000D8 +S315E081D1F000000000000000000000000000000000C8 +S315E081D20000000000000000000000000000000000B7 +S315E081D21000000000000000000000000000000000A7 +S315E081D2200000000000000000000000000000000097 +S315E081D2300000000000400000400000000000008087 +S315E081D2400000000000000020000000000000000057 +S315E081D2500000000000000000000000000000000067 +S315E081D26000000800000000001A280000800000008D +S315E081D2700000000000000000000000000000000047 +S315E081D2800000000000000000000000000000000037 +S315E081D2900000000000000000000000000000000027 +S315E081D2A000000000000000000000000000200000F7 +S315E081D2B00000000000000000000000000000000007 +S315E081D2C000000000000000000000000000000000F7 +S315E081D2D000000000000000000000000000001000D7 +S315E081D2E04000000000002000000000000000004037 +S315E081D2F000000000000000000000000000000000C7 +S315E081D30000000000000000000000000000000000B6 +S315E081D31000000000000000000000000000000000A6 +S315E081D3200000000000200000000000000000000076 +S315E081D3300000000000000000000000000000000086 +S315E081D3400000000000000000000000000000000076 +S315E081D3500000000000000000000000000000000066 +S315E081D3600000000000000000000000000000000056 +S315E081D3700000000000000000000000000000000046 +S315E081D3800000000000000000000000000000000036 +S315E081D3900000000000000000000000000000000026 +S315E081D3A000000000000000000000000000400000D6 +S315E081D3B000400000000000000000000000000000C6 +S315E081D3C02000000000000000400000000000000096 +S315E081D3D000000000000000000000000000000001E5 +S315E081D3E000088F000000000000000000000000003F +S315E081D3F000000000000000000000000000000000C6 +S315E081D40000000000080000000000000000000000AD +S315E081D41000000000000000000000000000000000A5 +S315E081D4200000000000000000000000000000000095 +S315E081D4300000000000000000000000000000000085 +S315E081D4400000000000000000000000000000000075 +S315E081D4500000000040000000000000000000000025 +S315E081D4600000000000000000000000000000000055 +S315E081D4700000000000000000000000000000000045 +S315E081D4800000000000000000000000000000000035 +S315E081D4900000000000000000000000000000000025 +S315E081D4A00000000000000000000000000000000015 +S315E081D4B00000008000000000000000000000000085 +S315E081D4C000000000000000000000000000000000F5 +S315E081D4D000000000000000000000000000000000E5 +S315E081D4E000000000000000000000000000000000D5 +S315E081D4F000002000000000000000000000000000A5 +S315E081D50000000000000000000000000000000000B4 +S315E081D51000000000000000000000000000000000A4 +S315E081D5200000000000000000000000000000000094 +S315E081D5300000000000000000000000000000000084 +S315E081D5400000000000000000000000000000000074 +S315E081D55000000000000000000000A01400000000B0 +S315E081D5600000000000000000000000000000000054 +S315E081D5700000000000000000000000000000000044 +S315E081D5800000000000000000000000000000000034 +S315E081D5900000000000000000002000000000000004 +S315E081D5A00000000000000000000000000000000014 +S315E081D5B00000000000000000000000000000000004 +S315E081D5C000000000000000000000000000000000F4 +S315E081D5D000000000000000000000000000000000E4 +S315E081D5E000000000000000000000000000000000D4 +S315E081D5F000000000000000000000000000000000C4 +S315E081D60000000000000000000000000000000000B3 +S315E081D61000000000000000000000000000000000A3 +S315E081D620000000000000000000000000000000048F +S315E081D6300000000000000000000000000000000083 +S315E081D6400000000000000000000000000000000073 +S315E081D6500000000000000000000000000000000063 +S315E081D6600000000000000000000000000000000053 +S315E081D6702000000000000000000000000000000023 +S315E081D6800000000000000000000000000000000033 +S315E081D6900000000000000000000000000000000023 +S315E081D6A00000000000000000000080000000000093 +S315E081D6B00000000000000000000000000000000003 +S315E081D6C000000000000000000000000000000800EB +S315E081D6D0000000CB9900000000000000000000007F +S315E081D6E000000000000000000000000000000000D3 +S315E081D6F000000000000000000000000800000000BB +S315E081D70000000000000000000000000000000000B2 +S315E081D71000000000000000000000000000000000A2 +S315E081D7200000000000000000000000000000000092 +S315E081D7300000000000000000000000000000000082 +S315E081D7400000000000000000000000000000000072 +S315E081D7500000000000000000000000000000000062 +S315E081D7600000000000000000000000000000000052 +S315E081D7700000000000000000000000000000000042 +S315E081D7800000000000000000000000000000000032 +S315E081D7900000000000000000000000000000000022 +S315E081D7A00000000000000000000000000000000012 +S315E081D7B00000000000000000000000000000000002 +S315E081D7C000000000000000000000000000000000F2 +S315E081D7D000000000000000000000000000000000E2 +S315E081D7E000000000000000000000000000000000D2 +S315E081D7F000000000000000000000000000000000C2 +S315E081D80000000000000000000000000000000000B1 +S315E081D81000000000000000000000000000000000A1 +S315E081D8200000000000000000000000000000000091 +S315E081D8300000000000000000000000000000000081 +S315E081D840000000000000000000000000D614000087 +S315E081D8508080000000000000000000000000000061 +S315E081D8600000000000000000000000000000000051 +S315E081D8700000080000000000000000000000000039 +S315E081D8800000000000000000000000000000000031 +S315E081D8900000000000000000000000000000000021 +S315E081D8A00000000000000000000000000000000011 +S315E081D8B00000000000000000000000000000000001 +S315E081D8C000000000000000000000000000000000F1 +S315E081D8D000000000000000000000000000000000E1 +S315E081D8E000000000000000000000000000000000D1 +S315E081D8F000000000000000000000000000000000C1 +S315E081D90000000000000000000000000000000000B0 +S315E081D91000000000000000000000000000000000A0 +S315E081D9200000000000000000000000000000000090 +S315E081D9300000000000000000000000000000000080 +S315E081D9400000000000000000000000000000000070 +S315E081D9500000000000000000000000000000000060 +S315E081D9600000000000000000000000000000000050 +S315E081D9700000000000000000000000000000000040 +S315E081D9800000000000000000000000000000000030 +S315E081D9900000000000000000000000000000000020 +S315E081D9A00000000000000000000000000000000010 +S315E081D9B00000000000000000000000000000000000 +S315E081D9C00000010100144600000000000000000094 +S315E081D9D000000000000000000000000000000000E0 +S315E081D9E000000000000000000000000000080000C8 +S315E081D9F000000000000000000000000000000000C0 +S315E081DA0000000000000000000000000000000000AF +S315E081DA10000000000000000000000000000000009F +S315E081DA20000000000000000000000000000000008F +S315E081DA30000000000000000000000000000000007F +S315E081DA40000000000000000000000000000000006F +S315E081DA50000000000000000000000000000000005F +S315E081DA60000000000000000000000000000000004F +S315E081DA70000000000000000000000000000000003F +S315E081DA80000000000000000000000000000000002F +S315E081DA90000000000000000000000000000000001F +S315E081DAA0000000000000000000000000000000000F +S315E081DAB000000000000000000000000000000000FF +S315E081DAC000000000000000000000000000000000EF +S315E081DAD000000000000000000000000000000000DF +S315E081DAE000000000000000000000000000000000CF +S315E081DAF000000000000000000000000000000000BF +S315E081DB0000000000000000000000000000000000AE +S315E081DB10000000000000000000000000000000009E +S315E081DB20000000000000000000000000000000008E +S315E081DB300000000000000000000000000000D61494 +S315E081DB40000000000000000000000000000000006E +S315E081DB50000000000000000000000000002000003E +S315E081DB60000000000000000000000000000000004E +S315E081DB70000000000000000000000000000000003E +S315E081DB80000000000000000000000000000000002E +S315E081DB90000000000000000000000000000000001E +S315E081DBA0000000000000000000000000000000000E +S315E081DBB000000000000000000000000000000000FE +S315E081DBC000000000000000000000000000000000EE +S315E081DBD000000000000000000000000000000000DE +S315E081DBE000000000000000000000000000000000CE +S315E081DBF000000000000000000000000000000000BE +S315E081DC0000000000000000000000000000000000AD +S315E081DC10000000000000000000000000000000009D +S315E081DC20000000000000000000000000000000008D +S315E081DC30000000000000000000000000000000007D +S315E081DC40000000000000000000000000000000006D +S315E081DC50000000000000000000000000000000005D +S315E081DC60000000000000000000000000000000004D +S315E081DC70000000000000000000000000000000003D +S315E081DC80000000000000000000000000000000002D +S315E081DC90000000000000000000000000000000001D +S315E081DCA0000000000000000000000000000000000D +S315E081DCB000000000000000904C0000000000000021 +S315E081DCC000000000000000000000000000000000ED +S315E081DCD0000010000000300000000020000000007D +S315E081DCE0000000000000002000000000000020008D +S315E081DCF0000000000000000000000020000000009D +S315E081DD00000000000000002000000000000000008C +S315E081DD10000000001000000000100000000000007C +S315E081DD20200000000000000000200000200000002C +S315E081DD30000000000000000000000000000000007C +S315E081DD40002000000000000000000000000000004C +S315E081DD50000000000000000000000000000000005C +S315E081DD60000000000000000000000000000000004C +S315E081DD70000000000000002000000000000000001C +S315E081DD80000000200000000000000000000000000C +S315E081DD90000000000000000000000000000000001C +S315E081DDA000000000000000000020000000000000EC +S315E081DDB000000000000000000000000000000000FC +S315E081DDC000000000200000000000000000000000CC +S315E081DDD0000000000000000000000000004000009C +S315E081DDE0000000004000000000000000000000008C +S315E081DDF000000000000000000000000000000000BC +S315E081DE00000000000000004000000000000000006B +S315E081DE10000000000000004000000000000000005B +S315E081DE20000000000000000000004000000000400B +S315E081DE30CDBA0000000000000000000000000000F4 +S315E081DE40000000000000000000000000000000006B +S315E081DE50000000000000002000000020000000001B +S315E081DE60000000000000000000000000000000004B +S315E081DE70000000000000000000000000000000003B +S315E081DE80000000000000000000000000000000002B +S315E081DE90000000000000000000000000000000001B +S315E081DEA0000000000000000000000000000000000B +S315E081DEB000000000000000000000000000000000FB +S315E081DEC000000000000000000000000000000000EB +S315E081DED000000000000000000000000000000000DB +S315E081DEE000000000000000000000000000000000CB +S315E081DEF000000000000000000000000000000000BB +S315E081DF0000000000000000000000000000000000AA +S315E081DF10000000000000000000000000000000009A +S315E081DF20000000000000000000000000000000008A +S315E081DF30000000000000000000000000000000007A +S315E081DF40000000000000000000000000000000006A +S315E081DF50004000000000000000000000000000001A +S315E081DF60000000000000000000000000000000004A +S315E081DF7000000000000000400000000000000000FA +S315E081DF80000000000000000000000000000000002A +S315E081DF90000000000000000000000000000000001A +S315E081DFA00000000000000000008130000000000059 +S315E081DFB000000000000000000000000000000000FA +S315E081DFC000000000000000000000000000000000EA +S315E081DFD000000000000000000000000000000000DA +S315E081DFE000000000000000000000000000000000CA +S315E081DFF000000000000000000000000000000000BA +S315E081E00000000000000000000000000000000000A9 +S315E081E0100000000000000000000000000000000099 +S315E081E0200000000000000000000000000000000089 +S315E081E0300000000000000000000000000000000079 +S315E081E0400000000000000000000000000000000069 +S315E081E0500000000000000000000000000000000059 +S315E081E0600000000000000000000000000000000049 +S315E081E0702000000000000000000000000000000019 +S315E081E0800000000000000000000000000000000029 +S315E081E0900000000000000000000000000000000019 +S315E081E0A00000000000000000000000000000000009 +S315E081E0B000000000000000000000000000000000F9 +S315E081E0C000000000000000000000000000000000E9 +S315E081E0D000000000000000000000000000000000D9 +S315E081E0E00000000000000000000000000040000089 +S315E081E0F000000000000000000000000000000000B9 +S315E081E10000000000000000000000000000000000A8 +S315E081E1100000000000000000000000000000000098 +S315E081E12000003DE500000000000000000000000066 +S315E081E1300000000000000000000000000000000078 +S315E081E1400000000020000000000000000000000048 +S315E081E1500000000000000000000000000000000058 +S315E081E1600800000000000000000000000000000040 +S315E081E1700000000000000000000000000000000038 +S315E081E1800000000000000010000000000000000018 +S315E081E1900000000000000010000000000000000008 +S315E081E1A000000000000000200000000000100000D8 +S315E081E1B000000000000000000000000000000000F8 +S315E081E1C000100000002000000000000000000000B8 +S315E081E1D00000000000000000002000000020000098 +S315E081E1E000000000002000000000000000000000A8 +S315E081E1F000000000000000000000000000000000B8 +S315E081E2000000000000000000000000200000000087 +S315E081E2100000000000000000000000000000002077 +S315E081E2200000002000000000000000000000000067 +S315E081E2300000000000000000000000200000000057 +S315E081E2400000000000000000000000400000000027 +S315E081E2500000000000000000000000000000000057 +S315E081E2600000000000000000002000000000000027 +S315E081E27000000000000000000000000000400000F7 +S315E081E2800000000000000000000000000000000027 +S315E081E290000000000000000000000081C5000000D1 +S315E081E2A00000000000000000000000000000000007 +S315E081E2B000000000000000000000000000000000F7 +S315E081E2C000000000000000000000000000000000E7 +S315E081E2D000000000080000000000000000000000CF +S315E081E2E000000000000000000000000000000000C7 +S315E081E2F000000000000000000000000000000000B7 +S315E081E3000000000000000000000000000010000096 +S315E081E3100000000000000000000000000000000096 +S315E081E3200000000000000000000000000000000086 +S315E081E3300000000000000000000000200000000056 +S315E081E3400000000000000000000000000000000066 +S315E081E3500000000000000000000000000000000056 +S315E081E3600000000000000000000000000000000046 +S315E081E3700000000000000000000000000000000036 +S315E081E3800020000000000000000000000000000006 +S315E081E3900000000000000000000000000000000016 +S315E081E3A00000000000000000000000000000000006 +S315E081E3B000000000000000000000000000000000F6 +S315E081E3C000000000000000000000000000000000E6 +S315E081E3D000000000000000000000000000000000D6 +S315E081E3E000000000000000000000000000000000C6 +S315E081E3F000000000000000000000000000000000B6 +S315E081E40000000000000000000000000000000000A5 +S315E081E41000000000AAF30000008000000000000078 +S315E081E4200000000000000000000000000000000085 +S315E081E430000000200020000000000008000000002D +S315E081E4400000000000000000000000000000000065 +S315E081E4500000000000000000000000000000000055 +S315E081E4600000000000000000000000000000000045 +S315E081E4700000000000000000000000000000000035 +S315E081E4800000000000000000000000000000000025 +S315E081E4900000000000000000000000000000000015 +S315E081E4A00000000000000000000000000000000005 +S315E081E4B000000000000000000000000000000000F5 +S315E081E4C000000000000000000000000000000000E5 +S315E081E4D000000000000000000000000000000000D5 +S315E081E4E000000000000000000000000000000000C5 +S315E081E4F000000000000000000000000000000000B5 +S315E081E50000000000000000000000000000000000A4 +S315E081E5100000000000000000000000000000000094 +S315E081E5200000000000000000000000000000000084 +S315E081E5300000000000000000000000000000000074 +S315E081E5400000000000000000000000000000000064 +S315E081E5500000000000000000000000000000000054 +S315E081E5600000000000000000000000000000000044 +S315E081E5700000000000000000000000000000000034 +S315E081E580000000000000000000000100007ECE00D7 +S315E081E5900000000000000000000000000000000014 +S315E081E5A000000000000000001000000000200000D4 +S315E081E5B020000000000800000000000000000000CC +S315E081E5C000000000002000080000080000000000B4 +S315E081E5D020000000000000000000000000000000B4 +S315E081E5E000000000000000000000000000001000B4 +S315E081E5F00000001000002000000000000000100074 +S315E081E6000000002000000000000000000000000083 +S315E081E6100000002000002000000000000000000053 +S315E081E6200000000000000000000000002010000053 +S315E081E6302000000000000000000000000000000053 +S315E081E6400000000000200000200000002000000003 +S315E081E6500020000000200000000000000000000013 +S315E081E6600000000000000000000000000000000043 +S315E081E67000002000000000200000000000000000F3 +S315E081E68000000000000000000000200000002000E3 +S315E081E69000000000000000000000200000000000F3 +S315E081E6A000000000000020000000000000000000E3 +S315E081E6B00000400000004000000040000000000033 +S315E081E6C000000000000000000000000000000000E3 +S315E081E6D04000000020000000000000000000000073 +S315E081E6E00000000000000000400000000000000083 +S315E081E6F000000000000000000000000000000000B3 +S315E081E70040000000000015040000800000000000C9 +S315E081E7100000000000000000000000000000000092 +S315E081E72000000000103000000008000020200000FA +S315E081E7300000000020200000000000000020000012 +S315E081E7400000080800000000000000002000000032 +S315E081E7500000000000200000000000000000000032 +S315E081E7600000001000000000000010100000000012 +S315E081E77000002000000000000000303000000000B2 +S315E081E7800000000000000000000000200000000002 +S315E081E79000102000000000000000000000000000E2 +S315E081E7A000000000000000003020000000000000B2 +S315E081E7B000000000000000000000000000000000F2 +S315E081E7C02020000000000000202000000000000062 +S315E081E7D02020000000000000000000000000000092 +S315E081E7E00000000000000000000000000000202082 +S315E081E7F00000000000000020000000000000000092 +S315E081E8000000000000002020000000000000000061 +S315E081E8100000000000002000000000000000002051 +S315E081E82000000000000000400000000000004040C1 +S315E081E8300000000000004000000000000000000031 +S315E081E84000000000000000000000000040600000C1 +S315E081E8500000000000400000000000000000000011 +S315E081E86000000000404000000000000000000000C1 +S315E081E870000000000000000000000000404100624E +S315E081E8805B0000000000000000000400200000049E +S315E081E8900020000000000000000000001010103091 +S315E081E8A00100000060212028004000002020202077 +S315E081E8B0000000000000202002001808880A0010ED +S315E081E8C000800000202000000000000000002020E1 +S315E081E8D00400200000040020000000001010000069 +S315E081E8E000001010101001000800602100080040AF +S315E081E8F000003030303000000000000000000200EF +S315E081E90010008002203000800000303000000000DE +S315E081E9100000000000000400200000040020000048 +S315E081E92030302020000000000000000001000800D7 +S315E081E9304001000800400000202020200000000067 +S315E081E9402020202002001000A0222030008000003C +S315E081E950000000000000000000000000040020002C +S315E081E960000400200000202020200000000000009C +S315E081E970202001000800400100080040000020201E +S315E081E9802020000000000000000002001000A0220C +S315E081E9900010008000000000202000000000000040 +S315E081E9A040400400200040444060000000004040B8 +S315E081E9B0000000000000000001000800400100089E +S315E081E9C000400000404060600000000000004040E0 +S315E081E9D002001000800200100080000040404040AC +S315E081E9E00000000000000000040020000004002078 +S315E081E9F000000000404040409B8500000000000090 +S315E081EA00000000000020000000000000000000007F +S315E081EA1000000000001010301000000000202020CF +S315E081EA2028000000002020202000000000000020B7 +S315E081EA3020000018080808000000000000202000DF +S315E081EA4000000000000000202000002000000000FF +S315E081EA5000000000001010000000001010101000EF +S315E081EA60000000202000000000000030303030003F +S315E081EA7000000000000000000010000000202000DF +S315E081EA8000000030300000000000000000000000BF +S315E081EA90002000000000000000303020200000004F +S315E081EAA000000000000000000000000000000000FF +S315E081EAB000202020200000000020202020000000EF +S315E081EAC0002020202000000000000000000000005F +S315E081EAD0000000000000002000000000000000208F +S315E081EAE0202020000000000000202000000000001F +S315E081EAF0000000000000002020202000000000002F +S315E081EB00000000000000002020000000000000005E +S315E081EB10002020000000000000404000002000406E +S315E081EB20404040000000004040000000000000003E +S315E081EB30000000000040000000000000004040604E +S315E081EB40600000000000004040000000000000007E +S315E081EB50000000000040404040000000000000004E +S315E081EB60000000000000000000000000004040407E +S315E081EB7040BB6A00000000000000000000000000C9 +S315E081EB8000000000000000000000000000001010FE +S315E081EB90103000000000202020200000000020200E +S315E081EBA0202000000000000020200000080808085E +S315E081EBB000000000000020200000000000000000AE +S315E081EBC0202000000000000000000000000010107E +S315E081EBD0000000001010101000000000202000004E +S315E081EBE000000000303030300000000000000000FE +S315E081EBF0000000000000202000000000303000000E +S315E081EC00000000000000000000000000000000009D +S315E081EC1000003030202000000000000000000000ED +S315E081EC2000000000000000000000202020200000FD +S315E081EC30000020202020000000002020202000006D +S315E081EC40000000000000000000000000000000005D +S315E081EC5000000000000000002020202000000000CD +S315E081EC6000002020000000000000000000000000FD +S315E081EC7020202020000000000000000000000000AD +S315E081EC80202000000000000000002020000000009D +S315E081EC90000040400000000040404040000000008D +S315E081ECA0404000000000000000000000000000007D +S315E081ECB000000000000040406060000000000000AD +S315E081ECC040400000000000000000000000004040DD +S315E081ECD0404000000000000000000000000000004D +S315E081ECE000000000000040404040AA0D0000808006 +S315E081ECF000000000000000000000000000000000AD +S315E081ED00000000000000001010301000000000201C +S315E081ED1020202000000000202020200000000000AC +S315E081ED2000202000000808080800000000000020FC +S315E081ED30200000000000000000202000000000000C +S315E081ED40000000000000001010000000001010100C +S315E081ED50100000000020200000000000003030306C +S315E081ED6030000000000000000000000000000020EC +S315E081ED7020000000003030000000000000000000AC +S315E081ED80000000000000000000000030302020007C +S315E081ED90000000000000000000000000000000000C +S315E081EDA000000020202020000000002020202000FC +S315E081EDB0000000202020200000000000000000006C +S315E081EDC000000000000000000000000000000000DC +S315E081EDD0002020202000000000000020200000000C +S315E081EDE0000000000000000000202020200000003C +S315E081EDF0000000000000000000202000000000006C +S315E081EE0000000020200000000000004040000000DB +S315E081EE10004040404000000000404000000000000B +S315E081EE20000000000000000000000000000000403B +S315E081EE3040606000000000000040400000000000EB +S315E081EE40000000000000004040404000000000005B +S315E081EE50000000000000000000000000000000400B +S315E081EE60414140AD5000000000000000000000007C +S315E081EE70000000000000000000000000000000002B +S315E081EE8000002020000000000000000000000000DB +S315E081EE90000000000000000000000000000000000B +S315E081EEA000000000000000000000000000000000FB +S315E081EEB000000000000000000000000000000000EB +S315E081EEC000000000000000000000000000000000DB +S315E081EED000000000000000000000000000000000CB +S315E081EEE000000000000000000000000000000000BB +S315E081EEF000000000000000000000000000000000AB +S315E081EF00000000000000000000000000000000009A +S315E081EF10000000000000000000000000000000008A +S315E081EF20000000000000000000000000000000007A +S315E081EF30000000000000000000000000000000006A +S315E081EF40000000000000000000000000000000005A +S315E081EF50000000000000000000000000000000004A +S315E081EF60000000000000000000000000000000003A +S315E081EF70000000000000000000000000000000002A +S315E081EF80000000000000000000000000000000001A +S315E081EF90000000000000000000000000000000000A +S315E081EFA000000000000000000000000000000000FA +S315E081EFB000000000000000000000000000000000EA +S315E081EFC000000000000000000000000000000000DA +S315E081EFD00000000000000000000000009CE200004C +S315E081EFE000000000000000000000000000000000BA +S315E081EFF0000000000000000000000020200000006A +S315E081F0000000000000000000000000000000000099 +S315E081F0100000000000000000000000000000000089 +S315E081F0200000000000000000000000000000000079 +S315E081F0300000000000000000000000000000000069 +S315E081F0400000000000000000000000000000000059 +S315E081F0500000000000000000000000000000000049 +S315E081F0600000000000000000000000000000000039 +S315E081F0700000000000000000000000000000000029 +S315E081F0800000000000000000000000000000000019 +S315E081F0900000000000000000000000000000000009 +S315E081F0A000000000000000000000000000000000F9 +S315E081F0B000000000000000000000000000000000E9 +S315E081F0C000000000000000000000000000000000D9 +S315E081F0D000000000000000000000000000000000C9 +S315E081F0E000000000000000000000000000000000B9 +S315E081F0F000000000000000000000000000000000A9 +S315E081F1000000000000000000000000000000000098 +S315E081F1100000000000000000000000000000000088 +S315E081F1200000000000000000000000000000000078 +S315E081F1300000000000000000000000000000000068 +S315E081F1400000000000000000000000000000000058 +S315E081F15000000000009CE2000000000000000000CA +S315E081F1600000000000000000000000000000000038 +S315E081F1700000000000000000000000000000000028 +S315E081F1800000000000000000000000000000000018 +S315E081F1900000000000000000000000000000000008 +S315E081F1A000000000000000000000000000000000F8 +S315E081F1B000000000000000000000000000000000E8 +S315E081F1C000000000000000000000000000000000D8 +S315E081F1D000000000000000000000000000000000C8 +S315E081F1E000000000000000000000000000000000B8 +S315E081F1F000000000000000000000000000000000A8 +S315E081F2000000000000000000000000000000000097 +S315E081F2100000000000000000000000000000000087 +S315E081F2200000000000000000000000000000000077 +S315E081F2300000000000000000000000000000000067 +S315E081F2400000000000000000000000000000000057 +S315E081F2500000000000000000000000000000000047 +S315E081F2600000000000000000000000000000000037 +S315E081F2700000000000000000000000000000000027 +S315E081F2800000000000000000000000000000000017 +S315E081F2900000000000000000000000000000000007 +S315E081F2A000000000000000000000000000000000F7 +S315E081F2B000000000000000000000000000000000E7 +S315E081F2C000000000000000000000000000003E4950 +S315E081F2D000000000000000000000000004002000A3 +S315E081F2E000000000000000000000000000000000B7 +S315E081F2F0000001000800400000000000000000005E +S315E081F3000000000000000000000002001000800004 +S315E081F3100000000000000000000000000000000086 +S315E081F3200000040020000000000000000000000052 +S315E081F330000000000000000001000800400000001D +S315E081F3400000000000000000000000000000000056 +S315E081F35002001000800000000000000000000000B4 +S315E081F3600000000000000000040020000000000012 +S315E081F3700000000000000000000000000000010025 +S315E081F38008004000000000000000000000000000CE +S315E081F3900000000000000200100080000000000074 +S315E081F3A000000000000000000000000000000400F2 +S315E081F3B020000000000000000000000000000000C6 +S315E081F3C0000000000100080040000000000000008D +S315E081F3D000000000000000000000000002001000B4 +S315E081F3E08000000000000000000000000000000036 +S315E081F3F00000000004002000000000000000000082 +S315E081F400000000000000000000000100080040004C +S315E081F4100000000000000000000000000000000085 +S315E081F42000000200100080000000000000000000E3 +S315E081F4300000000000000000000004002000000041 +S315E081F4400000000000000028D70000000000000056 +S315E081F4500000000000040020000000000000000021 +S315E081F46000000000000000200000000100080040CC +S315E081F4700000000000000000000000000000000025 +S315E081F4800000000200100080000000000000000083 +S315E081F49000000000000000000000000400200000E1 +S315E081F4A000000000000000000000000000000000F5 +S315E081F4B0000100080040000000000000000000009C +S315E081F4C00000000000000000000200100080000043 +S315E081F4D000000000000000000000000000000000C5 +S315E081F4E00004002000000000000000000000000091 +S315E081F4F0000000000000000100080040000000005C +S315E081F5000000000000000000000000000000000292 +S315E081F51000100080000000000000000000000000F4 +S315E081F5200000000000000004002000000000000050 +S315E081F530000000000000000000000000000100085B +S315E081F5400040000000000000000000000000000014 +S315E081F55000000000000200100080000000000000B2 +S315E081F5600000000000000000000000000004002010 +S315E081F5700000000000000000000000000000000024 +S315E081F58000000001000800400000000000000000CB +S315E081F5900000000000000000000000020010008072 +S315E081F5A000000000000000000000000000000000F4 +S315E081F5B000000004002000000000000000000000C0 +S315E081F5C02479000000000000000000000000040033 +S315E081F5D02000000000000000000000000000002084 +S315E081F5E0000000000100080040000000000000006B +S315E081F5F00000000000000000000000000200100092 +S315E081F6008000000000000000000000000000000013 +S315E081F610000000000400200000000000000000005F +S315E081F620000000000000000000000100080040002A +S315E081F6300000000000000000000000000000000063 +S315E081F64000000200100080000000000000000000C1 +S315E081F650000000000000000000000400200000001F +S315E081F6600000000000000000000000000000000033 +S315E081F67001000800400000000000000000000000DA +S315E081F6800000000000000000020010008000000081 +S315E081F6900000000000000000000000000000000003 +S315E081F6A004002000000000000000000000000000CF +S315E081F6B0000000000000010008004000000000009A +S315E081F6C000000000000000000000000000000200D1 +S315E081F6D01000800000000000000000000000000033 +S315E081F6E0000000000000040020000000000000008F +S315E081F6F0000000000000000000000000010008009A +S315E081F7004000000000000000000000000000000052 +S315E081F71000000000020010008000000000000000F0 +S315E081F720000000000000000000000000040020004E +S315E081F73000000000000000000086D2000003031CE8 +S315E081F7401C606000000303181C4060000007073856 +S315E081F750384040000007073838C0C000000607304F +S315E081F7603880C001010E0E7070808001010E0E702E +S315E081F77070808001010C0E6070008003031C1CE028 +S315E081F780E0000003031C1CE0E000000303181CC03A +S315E081F790E0000007073838C0C0000007073838C0E6 +S315E081F7A0C000000607303880C001010E0E707080FF +S315E081F7B08001010E0E7070808001010C0E60700078 +S315E081F7C08003031C1CE0E0000003031C1CE0E00056 +S315E081F7D0000303181CC0E0000007073838C0C000EA +S315E081F7E00007073838C0C000000607303880C001FE +S315E081F7F0010E0E7070808001010E0E7070808001A6 +S315E081F800010C0E6070008003031C1CE0E000000325 +S315E081F810031C1CE0E000000303181CC0E0000007A5 +S315E081F820073838C0C0000007073838C0C000000676 +S315E081F83007303880C001010E0E7070808001010EA4 +S315E081F8400E7070808001010C0E6070008003031CD5 +S315E081F8501CE0E0000003031C1CE0E0000003031849 +S315E081F8601CC0E0000007073838C0C0000007073831 +S315E081F87038C0C000000607303880C001010E0E7026 +S315E081F88070808001010E0E7070808001010C0E6027 +S315E081F89070008003031C1CE0E0000002021C1CE0F7 +S315E081F8A0E000000202181CC0E0000006063838C0FD +S315E081F8B0C00072720000208000000000000000009D +S315E081F8C000000000000000000000000000100000C1 +S315E081F8D00000000010200000000000002000000071 +S315E081F8E00000000000000000000000002000000091 +S315E081F8F00000080000200000000000000000000079 +S315E081F9000000000020000000000000000000000070 +S315E081F9100000001000000000000010200000000040 +S315E081F9200000001000000000000010000000000050 +S315E081F9300000000000000000000020200000000020 +S315E081F9400000000000000000000000000000000050 +S315E081F9500020000000000000000000000000000020 +S315E081F9600000000000000000000000000000000030 +S315E081F97020200000000000002020000000000000A0 +S315E081F9800000000000000000000000000000000010 +S315E081F99000000000000000200000000000000000E0 +S315E081F9A000000000000020000000000000000000D0 +S315E081F9B000000000000020000000000000000020A0 +S315E081F9C000000000000000000000000000002000B0 +S315E081F9D00000000000000040000000000000404000 +S315E081F9E000000000000000000000000000000000B0 +S315E081F9F00000000000400000000000004000000020 +S315E081FA00000000004000000000000000000000004F +S315E081FA10000000000000000000000000000000007F +S315E081FA200000000000400000010000C43300000037 +S315E081FA30000000000000000000000000000000005F +S315E081FA400000000000000000000800000000000047 +S315E081FA5000000000000000000000000000400000FF +S315E081FA600000000000000000000000080000000027 +S315E081FA70000000000000000000000000000000001F +S315E081FA80000000000000000000000000000000000F +S315E081FA9000000000000000000000000000000000FF +S315E081FAA000000000000000100000000000000000DF +S315E081FAB000000000000000000000000000000000DF +S315E081FAC000000000000000000000000000000000CF +S315E081FAD000000000000000000000000000000000BF +S315E081FAE000000000000000000000000000000000AF +S315E081FAF0000000000000000000000000000000009F +S315E081FB00000000000000000400000000000000008A +S315E081FB10000000000000000000000000000000007E +S315E081FB20000000200000000000000000000000004E +S315E081FB30000000000000000000000000000000005E +S315E081FB40000000000000000000000000000000004E +S315E081FB50000000000000000000000000000000003E +S315E081FB60000000000000000000000000000000002E +S315E081FB70000000000000000000000000000000001E +S315E081FB80000000000000000000000000000000000E +S315E081FB9000000000000000000000000000000000FE +S315E081FBA0000000000D9400008000000000000000CD +S315E081FBB000200000000000000000000000001000AE +S315E081FBC0100000000000000020002000000020005E +S315E081FBD0000020000000000000100020000000006E +S315E081FBE00000000008000000002000000000000086 +S315E081FBF0000000000020000000000000000000007E +S315E081FC00000000000010000000000000000000007D +S315E081FC10000000200000000000000000000000005D +S315E081FC20000000000000200000002000000000002D +S315E081FC30000000000000000000000000100000004D +S315E081FC40100000000000200000000000000000001D +S315E081FC5000000000200000000000001020000000ED +S315E081FC6000002000000000200000002000000000CD +S315E081FC7020000000002000000000000000000000DD +S315E081FC8000000000000000000000000000000020ED +S315E081FC9000000000000000002000200000000000BD +S315E081FCA000002000000000000000000000000000CD +S315E081FCB000000000000000000000000000000000DD +S315E081FCC0000020000000000000000040000040002D +S315E081FCD0000000400000000000000000000000007D +S315E081FCE0000000000000000020000000000000008D +S315E081FCF0000000000000400000000000000000005D +S315E081FD00400000000000000000000000000000004C +S315E081FD1000004000000000004040000100E10E00CC +S315E081FD20000000000000000000000000000000006C +S315E081FD30000000000000100000100000000000003C +S315E081FD4000002000000820400000000000000008BC +S315E081FD500000000000200000000000000800000014 +S315E081FD60000000000000000000000000000000002C +S315E081FD70000000000000000000000000000000100C +S315E081FD8000000000000000000000000020000000EC +S315E081FD9000000000000000000000000000000020DC +S315E081FDA000000020000000000000000000000000CC +S315E081FDB000000000000000000000000000002000BC +S315E081FDC0000000000000000000000000000000804C +S315E081FDD0000000000000000000002000000000009C +S315E081FDE0002000000020000000000000000000006C +S315E081FDF0000000000000000000000000000000009C +S315E081FE00002000000000000020000000000000004B +S315E081FE10200000000000000000000000000000005B +S315E081FE20000000000000000000000000000000006B +S315E081FE30000000000000000000002000000000003B +S315E081FE40000000000000004000000000000000000B +S315E081FE50000000000000000000000000000000003B +S315E081FE6000000000000000000000000000004000EB +S315E081FE70000000000000000000000000000000001B +S315E081FE80000000000000000000000000000000000B +S315E081FE90004000000000309E0000000000000000ED +S315E081FEA000000000000000000000000000000000EB +S315E081FEB000000000000000000008200000000000B3 +S315E081FEC0000000200000000000000010000000009B +S315E081FED0000000000000000000000020000000009B +S315E081FEE0000000000000002000000000000000008B +S315E081FEF0000000000000000000000000000000009B +S315E081FF00000000000000000000000000000000008A +S315E081FF10000000000000001000000000000000006A +S315E081FF20000000000000000000000000000010005A +S315E081FF30000010000000000000000000000000004A +S315E081FF4000000000000020000000000000102000FA +S315E081FF50000000000000000000000000000000003A +S315E081FF6000200000000000200000000000000000EA +S315E081FF700000000400000000000000000000000016 +S315E081FF8000000000000000000000000020000000EA +S315E081FF9000000000200000000000000000000000DA +S315E081FFA000000000000000000000000000000000EA +S315E081FFB0000000000000000000000000004000009A +S315E081FFC0000000000040000000000000000000008A +S315E081FFD0000000000000000000002000000000009A +S315E081FFE000000000000000000000000000000000AA +S315E081FFF0000040000000000000000000000000005A +S315E0820000000000400000000000000040000000FE0A +S315E082001090000000000000000000000000000000E8 +S315E08200200000000000000000000000000000000068 +S315E08200300000000000000000000000000000000058 +S315E08200400020000000000000000000000000000028 +S315E08200500000000000000000000000000000000038 +S315E08200600000000000000000000000000000000028 +S315E08200700000000000000000000000000000000018 +S315E08200800000000000000000000000000000000008 +S315E08200900020000000000000000000000000800058 +S315E08200A000000000000000000000000000000000E8 +S315E08200B000000000000000000000000000000000D8 +S315E08200C00000000080000000002000000000000028 +S315E08200D000000000000000000000000000000000B8 +S315E08200E000000000000000000000000000000000A8 +S315E08200F00000000000000000000000000000000098 +S315E08201000000000000000002000000000000000085 +S315E08201100000000000000000000000000000000077 +S315E08201200000000000000000000000000020000047 +S315E08201300000000000000000000000000040000017 +S315E08201400000000000000000000000000000000047 +S315E08201500000000000000000000000000000000037 +S315E08201600000000000000000000000000000000027 +S315E08201700000000000000000000000000000000017 +S315E0820180000000000000000033EE000000000000E6 +S315E082019000000000000000000000000000000000F7 +S315E08201A000000000000000000000200000000000C7 +S315E08201B000000000000000000000000000000000D7 +S315E08201C000000000000000000000000000000000C7 +S315E08201D02000000000000000000000000000000097 +S315E08201E000000000000000010000000000000000A6 +S315E08201F00000000000000000030000000000000094 +S315E08202000000000000000000000000000000000086 +S315E08202100000000000000000000000000000000076 +S315E08202200000000000001000000000000000000056 +S315E08202300000000000000000000000000000000056 +S315E082024000000000000000002000400000000000E6 +S315E08202500000000000000000000000000000000036 +S315E08202600000000000000000000000000000000026 +S315E082027020000000000000000000000000000000F6 +S315E082028000000000000000200000000000000000E6 +S315E082029000000000000000000000000000000200F4 +S315E08202A000000000000000000000000000000000E6 +S315E08202B00000400000010000000040000000000055 +S315E08202C000000000000000000000000000000000C6 +S315E08202D00000000000000000004000000000000076 +S315E08202E00000000000004000000000000000000066 +S315E08202F00000000000000000000000004000000056 +S315E082030000568500000000000000000000000000AA +S315E08203100000000000000000000000000000000075 +S315E08203200000200000000000000000000000000045 +S315E08203300000002000000000000000000000000035 +S315E08203400000000000000000000000000000000045 +S315E08203500000000000000000000000000000000035 +S315E08203600000000000000000000000000000000025 +S315E08203700100000000000000000000000000000014 +S315E08203800000000000000000000000000000000005 +S315E082039000000000000000000000000000001000E5 +S315E08203A000000000000000000000000000000000E5 +S315E08203B00000000000008000000000000000000055 +S315E08203C00000004000000000000000000000000085 +S315E08203D000000000000000000000000000000000B5 +S315E08203E00000000000000000200000000000000085 +S315E08203F00000000000000000000000000000000095 +S315E08204000000000000000000000000000000000084 +S315E08204100000000000000002000000000000000072 +S315E082042000000000000000000000400000000040E4 +S315E08204300000000000000000000000000000000054 +S315E08204400000000000000000000000000000000044 +S315E082045000000040000000000000000000000040B4 +S315E08204600000000000000000000000000000000024 +S315E08204700000000000000000000029970020000034 +S315E082048000200000000000000000000400010000DF +S315E082049000000000000000000000000000000000F4 +S315E08204A000000000800000000040000000004000E4 +S315E08204B000000000000800000000000000000000CC +S315E08204C000800000000020000000020000000040E2 +S315E08204D00000042000000040000000000010004000 +S315E08204E00000024000000000200000000000000042 +S315E08204F00000000000000000000000000020000074 +S315E08205000000000000000000000010000000000073 +S315E08205100000000000000000000000000000000073 +S315E08205200000000000010000000000000000000062 +S315E08205300000000008000002000000000000000049 +S315E08205400000000000000000000000000000000043 +S315E08205500000000000000000000000000000000033 +S315E08205600000000000000100000000000000000022 +S315E082057000000000200000000000000000002000D3 +S315E082058000000000002000000000000002000000E1 +S315E0820590000080000000040000200000000000004F +S315E08205A000000004000000000000000000000000DF +S315E08205B0000800004000100000010000000000007A +S315E08205C00000000000000000800000000000000043 +S315E08205D00000400000000000000000000000000073 +S315E08205E00000000000000000000040000000000063 +S315E08205F00000000F670020000020000000000000DD +S315E0820600000000000004000000000000000000007E +S315E08206100000000000000000000000000000000072 +S315E08206200000000000100040000000000000000012 +S315E08206300000000000000000000000000000000052 +S315E08206400000000000000000000000002000000022 +S315E082065000400000000000400000000000000000B2 +S315E08206600000000000000000000000000000000022 +S315E08206700000000000000000000000000000000012 +S315E082068000000000200000000000000000000000E2 +S315E082069000000000000000000000000000000001F1 +S315E08206A000000000000000000000000000000000E2 +S315E08206B000000000000000000000000000000000D2 +S315E08206C000000000000000000000000000000000C2 +S315E08206D000000000000000000000000000000000B2 +S315E08206E000000000000000000000000000000000A2 +S315E08206F00000000000000000000000000000200072 +S315E0820700000000000200000000000000000000007F +S315E0820710000000000000000000000000040000006D +S315E08207200000000000000000400000000100000020 +S315E08207300000000100000000000000000040000010 +S315E08207400000000000000000000000000000000041 +S315E08207500000000000000000000000000000000031 +S315E0820760000000000000000000000000AEFC000077 +S315E082077000000000000000000020000000000000F1 +S315E08207800000000000000000000000000000000001 +S315E082079000000000000000000000000000000000F1 +S315E08207A000000000000000080000000000000000D9 +S315E08207B000000000000000002000000000000000B1 +S315E08207C0000040040000000000000000200000005D +S315E08207D00000000000004000002000000000000051 +S315E08207E00000000000400000000000000000004021 +S315E08207F02000000000000000000000000000000071 +S315E08208000000000000000000000000000000000080 +S315E08208100020000000000000000000000000000050 +S315E08208200000000000000000000000000000000060 +S315E08208300000000000000000000000000000000050 +S315E08208400000000020000000000000000000000020 +S315E08208500000000000000000000000000000000030 +S315E08208600000000000000000000000000000002000 +S315E08208700000000000000000000000000000000010 +S315E08208800000000000000000000000000000000000 +S315E082089000000000000000000000000000000000F0 +S315E08208A000000000000040000000000000000000A0 +S315E08208B000000000000000000000000000000000D0 +S315E08208C00000004000000000000000000000000080 +S315E08208D00000000000000000000000004000000070 +S315E08208E000000000009510000000000000200020BB +S315E08208F0000000000000000000010000000000008F +S315E082090000000000000000000000000000008000FF +S315E0820910000000004000000000000000000000002F +S315E082092000000000000000000000000080000000DF +S315E082093000000020020000000040000000000000ED +S315E0820940200000000000000010000040024000008D +S315E0820950000000000000000000000000000000002F +S315E0820960000000000000000000000000000000001F +S315E082097000000000100000000000000000000000FF +S315E0820980000080000000000000000000000000007F +S315E082099000000000000000000020000000000800C7 +S315E08209A000000200000000000000000000000000DD +S315E08209B000000000000000000000000000000000CF +S315E08209C000000000000000000000000000000000BF +S315E08209D0010000000000000000000000000020008E +S315E08209E0000000000000200000000000000000007F +S315E08209F0000000000000000000000000008080008F +S315E0820A00040000000020000000000000000000005A +S315E0820A100000000000000000000000000800000066 +S315E0820A20100000000000000000000000000000004E +S315E0820A3000008000000000000000000000000000CE +S315E0820A40000000000000000000000000000000003E +S315E0820A500000000000000000000000000000C96104 +S315E0820A6000000000002000000000000000000000FE +S315E0820A700008000000000000000000000000000006 +S315E0820A8000000000000000000000000000000000FE +S315E0820A9000000000200000000000000008000000C6 +S315E0820AA000000000000000200000000000000000BE +S315E0820AB000000000000000000000000010000000BE +S315E0820AC000000000000000000000000000000000BE +S315E0820AD0000000000000000000000000100000009E +S315E0820AE0000000000000002000000000000000007E +S315E0820AF0000000000000000010000000002000005E +S315E0820B00000000000000000000000000000000007D +S315E0820B10000000000000000000000000000000006D +S315E0820B20000000000000000000000000000000005D +S315E0820B30000000000000000020000000000000002D +S315E0820B40000000000000000000000000000000201D +S315E0820B50000000000000000020000000000000000D +S315E0820B60000000000000000000000000000000001D +S315E0820B70000000000000000000000100000000000C +S315E0820B8000000000000000000020000000000000DD +S315E0820B9000000000004000000000000000000000AD +S315E0820BA0000000000000000000000000000000409D +S315E0820BB0000000000040000000000000000000008D +S315E0820BC000000000000000000000000000000000BD +S315E0820BD000000000000000C7C20001000000000023 +S315E0820BE0000000000000000000000000000000009D +S315E0820BF0000000000000000020000000000010005D +S315E0820C00000000010000000000000000000000007B +S315E0820C100000000000000000000400000000000068 +S315E0820C20000000004000000000000000000000001C +S315E0820C300000000000000000000000000400000048 +S315E0820C40000000000000000000000000000000023A +S315E0820C50000000001000000000000000000000001C +S315E0820C6000200000000000000000020000000000FA +S315E0820C70000000000000000000000000000000000C +S315E0820C80000000000000000000800000000000007C +S315E0820C9000000000000000000000000000000000EC +S315E0820CA000000000000000000000000000000000DC +S315E0820CB00400200080000000000000000000000028 +S315E0820CC000000000020000000000000000000000BA +S315E0820CD000000002000000000000010004000000A5 +S315E0820CE0000000000000000000000000000000009C +S315E0820CF00000000400000000000000000000000088 +S315E0820D00000100000000000000000000000000007A +S315E0820D100002000020000000000000000000000049 +S315E0820D20000000000000000000000000004000001B +S315E0820D30000000000000000000000000000000004B +S315E0820D40000040000000800000000000000000007B +S315E0820D506D97000000000000000001000000000026 +S315E0820D60000000000000000000000000000000001B +S315E0820D70000000000000000000000000000000000B +S315E0820D800000000C000000002000000000000000CF +S315E0820D9000000020000000000000000000000000CB +S315E0820DA0000000401000000000000000000000206B +S315E0820DB000000000000000000000100000000002B9 +S315E0820DC08000010000000000000400000000000036 +S315E0820DD000000000000000000000000000000000AB +S315E0820DE0000000000000000000000000001000008B +S315E0820DF0000000000000000000000000000000008B +S315E0820E0000200000002080000000000000000000BA +S315E0820E10002000000000000020000020000000000A +S315E0820E200200000000000000000000000000000058 +S315E0820E30000000000000000000000000000000004A +S315E0820E40000000000000000000000000000000003A +S315E0820E50000000000000000000000000000000002A +S315E0820E600000000000000000000000010008000011 +S315E0820E70000000000000000000004000000040008A +S315E0820E8000200000000000000000000000000000DA +S315E0820E9000000000000000000000000000000000EA +S315E0820EA000000000000000000000000000020000D8 +S315E0820EB000000000000000000000000000000000CA +S315E0820EC00000000000000000009B0A000001000014 +S315E0820ED000000100000000000000000000000000A9 +S315E0820EE0000000000000000000000000000000009A +S315E0820EF0100000000001000000000000080400006D +S315E0820F002000000000000000000000002000000039 +S315E0820F1000000000000040000000000000400000E9 +S315E0820F200000000000000000002000000000040035 +S315E0820F3000000000000000000080010000000000C8 +S315E0820F400002000400001000000000000000000023 +S315E0820F500000002000000000000000000200000007 +S315E0820F600000000000001000000000000000000009 +S315E0820F70000000000000000000000020000000A049 +S315E0820F8000000000000000000000002000000000D9 +S315E0820F9000200000000000000200000000000000C7 +S315E0820FA00000040020008000000000000000000035 +S315E0820FB000000000000002000000000000000000C7 +S315E0820FC000000000000200000000000001000400B2 +S315E0820FD000000000000000000000000000000000A9 +S315E0820FE0000000000005000800000000000000008C +S315E0820FF00000004100000000000000200000000028 +S315E08210000000020000002000000000000000000056 +S315E08210100000000000000000000000000000000068 +S315E08210200000000000000002000000000000000056 +S315E082103000000000000000008000000000000000C8 +S315E082104000004D02000100000100000000000000E7 +S315E08210500000000000000101000000000000001016 +S315E082106000000000000000200000200000000000D8 +S315E082107000000000000000000000000020000000E8 +S315E082108000000000000000000000000020000000D8 +S315E082109000000000000000000000000004040000E0 +S315E08210A00040000000000000000000000000000098 +S315E08210B00000000000000000400000000000000088 +S315E08210C000000000000000000000000000000000B8 +S315E08210D00000000000000000000000100000000098 +S315E08210E00000000000000000000000000000000098 +S315E08210F08000040400000000000000000000000000 +S315E08211000000000020000000000000000000000057 +S315E08211100000000000000000000000000000000067 +S315E08211200000000000000000000000002000000037 +S315E08211300000000000000000000000000000000047 +S315E0821140000000000000000004040000000000002F +S315E08211500000000000000202000000000000000023 +S315E08211600808000000000000000000000000000007 +S315E082117000000000200000000200000000000000E5 +S315E082118000000000000000000000000001000000F6 +S315E082119000000000000000000000000000000000E7 +S315E08211A000000000000000000000000000000000D7 +S315E08211B00000000000000000000000671A00000046 +S315E08211C000000000000000000000000000000000B7 +S315E08211D0000020000040000000000000081000002F +S315E08211E00000000000000000000000000000040093 +S315E08211F0002400000000000000000000000000045F +S315E08212002400000000000000000000400000000012 +S315E08212100000000000000000004000000000000026 +S315E082122000008000000000000000000000000000D6 +S315E08212300000000000000000000000000000000046 +S315E082124000400000000000000000000101000000F4 +S315E08212500000020000020010000000000000000012 +S315E082126000000000000000000000000000000020F6 +S315E082127000000000000000000000000000002000E6 +S315E082128000000000000000000000000000000000F6 +S315E08212900000000000000000000000000000800066 +S315E08212A000000000000000000000000000000000D6 +S315E08212B000000000000000000002020000000000C2 +S315E08212C000000000000000000000000000000000B6 +S315E08212D00000000000000000000000004001020063 +S315E08212E0000200010000000404000000000000008B +S315E08212F00000000000000000000000000000000086 +S315E08213000000004000000000000000000000000035 +S315E08213100000000000000100000000000000000064 +S315E0821320000000000000000000000000000000084D +S315E082133008000000476E0000000000000000000088 +S315E08213400000000000000000000000000000000035 +S315E08213500000000000000000000000000000000025 +S315E08213600000000000000000000000000000000015 +S315E08213700000000000000000000000000000000005 +S315E082138000000000000000000000000000000000F5 +S315E082139000000000000000000000000000000000E5 +S315E08213A000000000000000000000000000000000D5 +S315E08213B000000000000000000000000200000200C1 +S315E08213C000000000000000000000000000000000B5 +S315E08213D00000000000000000002000000000000085 +S315E08213E00000000000000000002000000000000075 +S315E08213F00000000000000000000000000000000085 +S315E08214000000000000000000000000000000000074 +S315E08214100000000000000000000000000000000064 +S315E08214200000000000000000000000002000000034 +S315E08214300000000000000000000000000000000044 +S315E08214400000000000000000000000000000000034 +S315E08214500000000000000000000000000000000024 +S315E08214600000000000000000000000000000000014 +S315E08214700000040000000000000000000000000000 +S315E082148000000000000000000000000000000000F4 +S315E082149000000000000000000000000000000000E4 +S315E08214A0000000000000000000000000002A5D004D +S315E08214B000000000000000000000000000000000C4 +S315E08214C000000000000000000000000000000000B4 +S315E08214D000000000000000000000000000000000A4 +S315E08214E00000000000000000000000000000000094 +S315E08214F00000000000200000000000000000000064 +S315E08215000000000000000100000100000000000071 +S315E08215100200000000000000000000000000000061 +S315E08215200000000000000000000000000000000053 +S315E08215300000000000000000000000100000000033 +S315E08215400000000000000000000000100000000023 +S315E08215500000000000000000000000000000000023 +S315E0821560000000000000000000008000000404008B +S315E082157000000020000000000000000000000000E3 +S315E082158000000000000000000000000000000000F3 +S315E082159000000000000000000020000202000000BF +S315E08215A000000000000000000020000000000000B3 +S315E08215B000000000000000000000000000000000C3 +S315E08215C000000000000000000000000000000000B3 +S315E08215D000400000000000000000000000400040E3 +S315E08215E00040000000000000000000000020000033 +S315E08215F00000000000000040000000000000000043 +S315E08216000000000000010000000000000000000071 +S315E08216100000004000000000000000000000000022 +S315E0821620000000000000319400000000000000008D +S315E08216300000000000000000000000000000000042 +S315E08216400000000000000000000000000000000032 +S315E08216500000000000000000000000000020000002 +S315E0821660000000000000000000080000000000000A +S315E08216700000000000000000000000000000000002 +S315E082168000000000000000000000000000000000F2 +S315E08216900000000000000101000000000000800060 +S315E08216A000000000000000000000000000000000D2 +S315E08216B00000000000000000000000004000000082 +S315E08216C000000000000000000000000000000000B2 +S315E08216D000000000000000000000000000000000A2 +S315E08216E00000000000000000000000000000000092 +S315E08216F00000000000000000000000000000000082 +S315E0821700000000000000000000000001000001006F +S315E08217100000000000000000000000000000002041 +S315E08217200000000000000000000000000000000051 +S315E08217300000000000000000000000000000000041 +S315E08217400000000000000000000000000000000031 +S315E08217500000000000200000000000000000000001 +S315E08217600000000000000000000000000000000011 +S315E08217700000000000000000000000000000000001 +S315E082178000000000000000000000000000000000F1 +S315E0821790020200000000000000000000000000A736 +S315E08217A04A00000000000000000000000000000087 +S315E08217B00000000000000000002000000000001091 +S315E08217C00000000000000000200000000000000091 +S315E08217D000000000000000000000000000000000A1 +S315E08217E00000000000000000000000000000000091 +S315E08217F00000000000000000000000000000000081 +S315E08218000000000000000000000404000000000068 +S315E0821810000202000000000000000000000000005C +S315E08218200000000000000000001000000000000040 +S315E08218300000000000000000000000000000000040 +S315E08218400000002000000000000000800000000090 +S315E08218502000000000000000000000000000000000 +S315E08218600000000000000000000000000000000010 +S315E08218700000000000000000000000000000000000 +S315E082188000000000000020000000000000000000D0 +S315E082189000000000000000000000000000000000E0 +S315E08218A000000000000000000000000000000000D0 +S315E08218B00000000000000000000000000000004080 +S315E08218C00000000000000000000000002000000090 +S315E08218D000000000000000000000000000000000A0 +S315E08218E00000000040000000000000000000000050 +S315E08218F00000000000000040000000000000000040 +S315E082190000000000000040004000000000000000EF +S315E08219100000000000000000164A000000000000FF +S315E0821920000000000000000000000000000000004F +S315E0821930000000000000000000000000000000003F +S315E0821940000001010000000000000000000000002D +S315E0821950000000000000000000000000000000001F +S315E0821960000001010000000000000000000000000D +S315E082197000000000000000000000000000000000FF +S315E082198000000000000000000000000000000000EF +S315E082199000000000000000000000000000000000DF +S315E08219A000000010000000000000000000000000BF +S315E08219B0000000000000000000002000000000009F +S315E08219C000000000000000000000000000000000AF +S315E08219D0000000000000000000000000000000009F +S315E08219E0000000000000000000000000000000008F +S315E08219F0000000000000020200000000000000007B +S315E0821A00000000000000000000000000000000006E +S315E0821A10000000000000000000000000000000005E +S315E0821A20000000000000000000000000000000004E +S315E0821A30000000000000000000000000000000003E +S315E0821A40000000000000000000000000000000002E +S315E0821A50000000000000000000000000000000001E +S315E0821A60000000000000000000000000000000000E +S315E0821A70000000000000000080000000000000007E +S315E0821A8000000000000000000000000000000000EE +S315E0821A90007E46000000000000000000000000001A +S315E0821AA0000000000000000020004000000010005E +S315E0821AB00000080000000000002021000001000074 +S315E0821AC0000000000000200000000020000000006E +S315E0821AD00000000004000004200001200001000054 +S315E0821AE0400000000000000000000100000100400C +S315E0821AF0000000000002000000000000000000007C +S315E0821B0001000001000000008000000000000000EB +S315E0821B10000000000000004000001000000000000D +S315E0821B2000010100000000400000000010000000FB +S315E0821B30000000000000200000000000000000001D +S315E0821B40000000200000200000000000000080006D +S315E0821B50000000000000000000000000000000001D +S315E0821B60000000000000000000000000000002000B +S315E0821B7000020000000000000020000000000002D9 +S315E0821B8002000000000000002000002000000200A9 +S315E0821B9000020000000000000000000000000000DB +S315E0821BA000000000000000000000000000000000CD +S315E0821BB00040000000400000010000000400000434 +S315E0821BC040006000004000000000000000000000CD +S315E0821BD000200000000000400000004000000000FD +S315E0821BE0000000000000000001000000010000008B +S315E0821BF0800000000000400040004000000000003D +S315E0821C0000000000080000080000515C00000000AF +S315E0821C10000000000000000000000000000000005C +S315E0821C20000000000000000000000000000000004C +S315E0821C30000000000000000000000000000000003C +S315E0821C40000000000000000000000000000000002C +S315E0821C50000000000000000000000000000000001C +S315E0821C60000000000000000000000000000000000C +S315E0821C7000000000000000000000000000000000FC +S315E0821C8000000000000000000000000000000000EC +S315E0821C9000000000000000000000000000000000DC +S315E0821CA000000000000000000000000000000000CC +S315E0821CB000000000000000000000000000000000BC +S315E0821CC000000000000000000000000000000000AC +S315E0821CD0000000000000000000000000000000009C +S315E0821CE0000000000000000000000000000000008C +S315E0821CF0000000000000000000000000000000007C +S315E0821D00000000000000000000000000000000006B +S315E0821D10000000000000000000000000000000005B +S315E0821D20000000000000000000000000000000004B +S315E0821D30000000000000000000000000000000003B +S315E0821D40000000000000000000000000000000002B +S315E0821D50000000000000000000000000000000001B +S315E0821D60000000000000000000000000000000000B +S315E0821D7000000000000000000000000000000000FB +S315E0821D800000003E49000000020010000000000052 +S315E0821D902000000000000040000200100000000069 +S315E0821DA000000000000000000000000200000000C9 +S315E0821DB000000000000000000000000002000000B9 +S315E0821DC000000000000000010000000000000200A8 +S315E0821DD00000000000000000000000000000000299 +S315E0821DE0000000000000000020000000000040002B +S315E0821DF0000000000000000000200000000000005B +S315E0821E000000000000000000000400200001000045 +S315E0821E1000000000000000008000040000000000D6 +S315E0821E2000000000000000000080000004000000C6 +S315E0821E300000000040000002000000800000000078 +S315E0821E4000000100080040000200000000000000DF +S315E0821E500000000100080040000000000000800051 +S315E0821E6004002000000000000040000000000000A6 +S315E0821E7000000400000000000000000000000010E6 +S315E0821E80008000040000000001000800000000005D +S315E0821E9010008000000000200001000800400000E1 +S315E0821EA0000010000000000020000000000000009A +S315E0821EB000000010000000000000000000000000AA +S315E0821EC0000000000000008000000000000000002A +S315E0821ED008000000020000008000000400200000EC +S315E0821EE0000800000000000000000000040020005E +S315E0821EF0000000000000000000000080693300203E +S315E0821F0000010100004840060210100801000000AE +S315E0821F102020010908084040000202101001000852 +S315E0821F2008202000010110000000020A30100001A2 +S315E0821F3008040428200101080800000006022000A7 +S315E0821F400000040420200001010000404006022037 +S315E0821F500000010004042020010100004040000648 +S315E0821F6002101081800404602000010100004040DC +S315E0821F700602101080810004042020030100004044 +S315E0821F804000020210108080040420200003011029 +S315E0821F9000404002021010808100040420200200EA +S315E0821FA010004040000202301080800404202000AD +S315E0821FB001010808C0400602301080800004042037 +S315E0821FC020010108084040000400301080800404AB +S315E0821FD020200001010808404002020000808000C3 +S315E0821FE004042020030108084040000202301081E8 +S315E0821FF080040420200003010808404002023010D9 +S315E08220008080000404202003010808404000060284 +S315E08220101010000000002020000200080840400264 +S315E08220200210100000000C04602002000000404014 +S315E08220300006022000808004046020000000080878 +S315E08220404040020200008080000404602002000812 +S315E08220500840400000000000808004042020000048 +S315E082206000080840400202000080800004046020EC +S315E082207002000808409C8100000000000000000881 +S315E082208000000000080000000000000000000000E0 +S315E082209000000000000000000000000808000000C8 +S315E08220A000000000000000080000000000000010B0 +S315E08220B000000808000000000000000000000000A8 +S315E08220C000000000000000000000000000000000A8 +S315E08220D00000000000000000000000000000000098 +S315E08220E00000000010000000000000000000000078 +S315E08220F00000000000100000000000000000000068 +S315E08221000000000000000000000000000020000047 +S315E08221100000000000000000000000000000000057 +S315E08221200000000000000000000010000000000037 +S315E08221300000000000000000000000100000000027 +S315E08221400000000000000000000000000010000017 +S315E0822150000000000000000008000000000000000F +S315E082216000000000000000000008004000000000BF +S315E082217000000000000000000000000000400000B7 +S315E082218000000000000000000000000000000000E7 +S315E082219000000000000000000000000000000000D7 +S315E08221A000000000000000000000000000000000C7 +S315E08221B000000000000000000000000000000000B7 +S315E08221C000000000000000000000000000000000A7 +S315E08221D00000000000000000000000000000000097 +S315E08221E000000000000000000000000000007EAC5D +S315E08221F00000020110000000000020000000000044 +S315E08222000040000201100000000000000010000003 +S315E08222100000002000020100000000000000000033 +S315E08222200000000400200200000000000000000020 +S315E0822230000100000400200002010000000000000E +S315E0822240000000000000040000020100000040409F +S315E082225000002000000000044000000001000000B1 +S315E082226000000220000000000000000000000000E4 +S315E082227000000004022010010000000000000001BE +S315E08222800000800004020010000000000000200030 +S315E082229000000080000004000000008080044020EE +S315E08222A00002000000800000000000000100080437 +S315E08222B040200200000080000000000000010008CB +S315E08222C000400000000000008000040220000001BF +S315E08222D0000000402000010000000000040200002F +S315E08222E000000000002000000010008000040200D0 +S315E08222F000000100080400000000100080000000D9 +S315E082230002200001000800400000000010080040A2 +S315E082231000022000000000000400200000100000FF +S315E08223204000000000000000000000000000000005 +S315E0822330008040000200000000000800000000006B +S315E08223400000800000040020000000080000000079 +S315E082235000000000004004022000000000000000AF +S315E08223600000000008800072850000000100000085 +S315E082237000000000000000000000000000010000F4 +S315E082238000000000000010000000000020000001B4 +S315E082239000000000000000000000000004002000B1 +S315E08223A000000000000000000000000000040020A1 +S315E08223B000000100000000000000000000000004B0 +S315E08223C00000000100000040000000000000000064 +S315E08223D0040000000001000000000002000000008E +S315E08223E00000000000000000000000000002001073 +S315E08223F00000000000000000010000000000020072 +S315E08224001000000000000020000000000000000034 +S315E082241000000000800004002000000000000000B0 +S315E08224200000000000000000040020000000000020 +S315E08224300000000000000000000000000000000034 +S315E08224400000000002000000000000000020000101 +S315E082245000000000000002000000000000002000F2 +S315E082246000000000000000020000000000000400FE +S315E082247000000000000000000002000000000000F2 +S315E0822480000000000000080040000200000000009A +S315E08224900004002000000000004000000000000070 +S315E08224A00000000000000000000000400002000082 +S315E08224B000000000000000000000000000000000B4 +S315E08224C00000000000000000000000000000400064 +S315E08224D0020000000000000000000000000800008A +S315E08224E088BE000000000000000004000000000139 +S315E08224F00000000000000000000000000000000074 +S315E08225000100000000000000001000000000002032 +S315E0822510000001000000000000000000000000044E +S315E08225200020000000000000000000000000000023 +S315E0822530040020000001000000000000000000000E +S315E082254000000400000001000000400000000000DE +S315E0822550000000040000000001000000000002000C +S315E08225600000000000000000000000000000000003 +S315E082257002001000000000000000000100000000E0 +S315E082258000020010000000000000200000000000B1 +S315E0822590000000000000008000040020000000002F +S315E08225A0000000000000000000000004002000009F +S315E08225B000000000000000000000000000000000B3 +S315E08225C000000000000000020000000000000000A1 +S315E08225D02000010000000000000200000000000070 +S315E08225E00020000000000000000002000000000061 +S315E08225F0000400000000000000000000020000006D +S315E08226000000000000000000000800400002000018 +S315E082261000000000040020000000000040000000EE +S315E08226200000000000000000000000000000400002 +S315E08226300200000000000000000000000000000030 +S315E08226400000000000000000000000000000000022 +S315E082265000400002000000000094D9000000000063 +S315E082266000000004000000000100000000000000FD +S315E082267000000000000000000001000000000000F1 +S315E082268000000000000000000000000100000000E1 +S315E082269000000000000000000400000000000000CE +S315E08226A000000000000000000004000000000100BD +S315E08226B000000000000000000000000400000001AD +S315E08226C0000000000000000000000000040000009E +S315E08226D0000100000000000200000000000000008F +S315E08226E00000000000000000000200000000000080 +S315E08226F0000000000100000000000200000000006F +S315E08227000000000000000000000000000000000061 +S315E0822710000004000000000000000000000000004D +S315E0822720000000000400000000000000000000003D +S315E08227300000000000000000000000000000000031 +S315E0822740020000000000000000000001000000001E +S315E0822750000002000000000000000000000000000F +S315E082276000000002000000000000040000000000FB +S315E082277000000000000200000000000000000000EF +S315E082278000000800000002000000000000040000D3 +S315E082279000000000000000000000000000000000D1 +S315E08227A000000000000000000002000000000000BF +S315E08227B000000000000000000000000000000000B1 +S315E08227C0000000000000000000000000020000009F +S315E08227D00000A8D000000000000000000000000019 +S315E08227E00000000000000000000000000000000081 +S315E08227F00000000000000000000000000000000071 +S315E08228000000000000000000000000000000000060 +S315E08228100000000000000000000000000000000050 +S315E08228200000000000000000000000000000000040 +S315E08228300000000000000000000000000000000030 +S315E08228400000000000000000000000000000000020 +S315E08228500000000000000000000000000000000010 +S315E08228600000000000000000000000000000000000 +S315E082287000000000000000000000000000000000F0 +S315E082288000000000000000000000000000000000E0 +S315E082289000000000000000000000000000000000D0 +S315E08228A000000000000000000000000000000000C0 +S315E08228B000000000000000000000000000000000B0 +S315E08228C000000000000000000000000000000000A0 +S315E08228D00000000000000000000000000000000090 +S315E08228E00000000000000000000000000000000080 +S315E08228F00000000000000000000000000000000070 +S315E0822900000000000000000000000000000000005F +S315E0822910000000000000000000000000000000004F +S315E0822920000000000000000000000000000000003F +S315E0822930000000000000000000000000000000002F +S315E082294000000000000000000000003E4900000098 +S315E0822950000000000000000000000000000000000F +S315E082296000000000000000000000000000000000FF +S315E082297000000000100000000000200000000000BF +S315E082298000002000000000000000000000000000BF +S315E082299000000000000000000000000000200000AF +S315E08229A000000000000000000000000000000000BF +S315E08229B000000000000000000000000000000000AF +S315E08229C0000000000000000000000000000000009F +S315E08229D0000000000000000000000000001000007F +S315E08229E0000000001000000000000020000000004F +S315E08229F0000000000000000000000000200000004F +S315E0822A00000000000000000000000000000020003E +S315E0822A10000000000000000000000000000000004E +S315E0822A20000000000000000000000000000000003E +S315E0822A30002000000000000000000000000000000E +S315E0822A4000002000000000000000000000000000FE +S315E0822A50000000000000000000000000000000000E +S315E0822A6000000000000000000000000040000000BE +S315E0822A70000000000000002000000000004000008E +S315E0822A80000000000000000000000000000000409E +S315E0822A9000000000000000000000000000000000CE +S315E0822AA000000000000000000000000000000000BE +S315E0822AB0000040000000000000000000000000006E +S315E0822AC000000000B34A00000000000000000000A1 +S315E0822AD0000000000000000000000000000000107E +S315E0822AE0000000000000000000000000000000007E +S315E0822AF0000000000000000000000000000000006E +S315E0822B00000000000000000000000000000000005D +S315E0822B10000000000000000000000000000000004D +S315E0822B20000000000000000000000000000000003D +S315E0822B30000000000000000000000000000000002D +S315E0822B40000000000000000000000000000000001D +S315E0822B50000000000000000000000000000000000D +S315E0822B6000000000000000000000000000000000FD +S315E0822B7000000000000000000000000000000000ED +S315E0822B8000000000000000000000000000000000DD +S315E0822B9000000000000000000000000000000000CD +S315E0822BA000000000000000000000000000000000BD +S315E0822BB000000000000000000000000000000000AD +S315E0822BC0000000000000000000000000000000009D +S315E0822BD0000000000000000000000000000000008D +S315E0822BE0000000000000000000000000000000205D +S315E0822BF0000000000000000000000000000000006D +S315E0822C00000000000000000000000000000000005C +S315E0822C10000000000000000000000000000000004C +S315E0822C20000000000000000000000000000000003C +S315E0822C30000000000000000000000000008E2D0071 +S315E0822C40000000000000000000000000000000001C +S315E0822C50000000000000000000000000000000000C +S315E0822C6000000000000000000000000000000000FC +S315E0822C7000000000000000000000000000000000EC +S315E0822C8000000000000000000000000000000000DC +S315E0822C9000000000000000000000000000000000CC +S315E0822CA000000000000000000000000000000000BC +S315E0822CB000000000000000000000000000000000AC +S315E0822CC0000000000000000000000000000000009C +S315E0822CD0000000000000000000000000000000008C +S315E0822CE0000000000000000000000000000000007C +S315E0822CF0000000000000000000000000000000006C +S315E0822D00000000000000000000000000000000005B +S315E0822D10000000000000000000000000000000004B +S315E0822D20000000000000000000000000000000003B +S315E0822D30000000000000000000000000000000002B +S315E0822D40000000000000000000000000000000001B +S315E0822D50000000000000000000000000000000000B +S315E0822D6000000000000000000000000000000000FB +S315E0822D7000000000000000000000000000000000EB +S315E0822D8000000000000000000000000000000000DB +S315E0822D9000000000000000000000000000000000CB +S315E0822DA000000000000000000000000000000000BB +S315E0822DB00000000000003E49000000010000000023 +S315E0822DC0000000000000000000000000010000009A +S315E0822DD0000000000000000000000020000001006A +S315E0822DE00000000000000000000000040020000057 +S315E0822DF000008000000000000000000004002000C7 +S315E0822E000001000000000000000000000000040055 +S315E0822E100000010000004000000000000000000405 +S315E0822E200000000001000000000002000000000037 +S315E0822E300000000000000000000000000200100018 +S315E0822E400000000000000001000000000002001007 +S315E0822E5000000000000020000000000000000000EA +S315E0822E600000008000040020000000000000000056 +S315E0822E7000000000000000040020000000000000C6 +S315E0822E8000000000000000000000000000000000DA +S315E0822E9000000002000000000000000020000100A7 +S315E0822EA00000000000020000000000000020000098 +S315E0822EB000000000000002000000000000040000A4 +S315E0822EC00000000000000000020000000000000098 +S315E0822ED00000000000080040000200000000000040 +S315E0822EE00400000000000000400000000000010035 +S315E0822EF00000000000000000000040000200000028 +S315E0822F000000000000000000000000000000000059 +S315E0822F100000000000000000000000000040000207 +S315E0822F200000000000000000000000000800004EE3 +S315E0822F309CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +S315E0822F40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315E0822F50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S311E0822F60FFFFFFFFFFFFFFFFFFFFFFFF09 +S705E0700000AA diff --git a/FPGA_by_Gregory_Estrade/lpm_ffs.v b/FPGA_by_Gregory_Estrade/lpm_ffs.v new file mode 100644 index 0000000..0d07de5 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/lpm_ffs.v @@ -0,0 +1,145 @@ +module lpm_ff0( + clock, + data, + enable, + q +); +input clock; +input [31:0] data; +input enable; +output [31:0] q; + +reg [31:0] r_q = 32'd0; + +assign q = r_q; + +always @(posedge clock) begin + if (enable) begin + r_q <= data; + end +end +endmodule + +//////////////////////////////////////////////////////////////////////////////// + +module lpm_ff1( + clock, + data, + q +); +input clock; +input [31:0] data; +output [31:0] q; + +reg [31:0] r_q = 32'd0; + +assign q = r_q; + +always @(posedge clock) begin + r_q <= data; +end +endmodule + +//////////////////////////////////////////////////////////////////////////////// + +module lpm_ff2( + clock, + data, + q +); +input clock; +input [127:0] data; +output [127:0] q; + +reg [127:0] r_q = 128'd0; + +assign q = r_q; + +always @(posedge clock) begin + r_q <= data; +end +endmodule + +//////////////////////////////////////////////////////////////////////////////// + +module lpm_ff3( + clock, + data, + q +); +input clock; +input [23:0] data; +output [23:0] q; + +reg [23:0] r_q = 24'd0; + +assign q = r_q; + +always @(posedge clock) begin + r_q <= data; +end +endmodule + +//////////////////////////////////////////////////////////////////////////////// + +module lpm_ff4( + clock, + data, + q +); +input clock; +input [15:0] data; +output [15:0] q; + +reg [15:0] r_q = 16'd0; + +assign q = r_q; + +always @(posedge clock) begin + r_q <= data; +end +endmodule + +//////////////////////////////////////////////////////////////////////////////// + +module lpm_ff5( + clock, + data, + q +); +input clock; +input [7:0] data; +output [7:0] q; + +reg [7:0] r_q = 8'd0; + +assign q = r_q; + +always @(posedge clock) begin + r_q <= data; +end +endmodule + +//////////////////////////////////////////////////////////////////////////////// + +module lpm_ff6( + clock, + data, + enable, + q +); +input clock; +input [127:0] data; +input enable; +output [127:0] q; + +reg [127:0] r_q = 128'd0; + +assign q = r_q; + +always @(posedge clock) begin + if (enable) begin + r_q <= data; + end +end +endmodule diff --git a/FPGA_by_Gregory_Estrade/mkS19.bat b/FPGA_by_Gregory_Estrade/mkS19.bat new file mode 100644 index 0000000..2386099 --- /dev/null +++ b/FPGA_by_Gregory_Estrade/mkS19.bat @@ -0,0 +1,2 @@ +%QUARTUS_ROOTDIR%\bin\quartus_cpf.exe -c firebee1.sof firebee1.rbf +objcopy -I binary -O srec --change-addresses 0xe0700000 firebee1.rbf fpga.s19 diff --git a/FPGA_by_Gregory_Estrade/mux41.v b/FPGA_by_Gregory_Estrade/mux41.v new file mode 100644 index 0000000..ddb02fb --- /dev/null +++ b/FPGA_by_Gregory_Estrade/mux41.v @@ -0,0 +1,74 @@ +// Copyright (C) 1991-2009 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" +// CREATED "Sat Mar 01 09:17:14 2014" + +module mux41( + S0, + D2, + INH, + D0, + D1, + D3, + S1, + Q +); + + +input S0; +input D2; +input INH; +input D0; +input D1; +input D3; +input S1; +output Q; + +wire SYNTHESIZED_WIRE_18; +wire SYNTHESIZED_WIRE_19; +wire SYNTHESIZED_WIRE_20; +wire SYNTHESIZED_WIRE_21; +wire SYNTHESIZED_WIRE_22; +wire SYNTHESIZED_WIRE_13; +wire SYNTHESIZED_WIRE_14; +wire SYNTHESIZED_WIRE_15; +wire SYNTHESIZED_WIRE_16; + + + + +assign SYNTHESIZED_WIRE_18 = ~S0; + +assign SYNTHESIZED_WIRE_21 = ~SYNTHESIZED_WIRE_18; + +assign SYNTHESIZED_WIRE_13 = SYNTHESIZED_WIRE_19 & SYNTHESIZED_WIRE_20 & SYNTHESIZED_WIRE_18 & D0; + +assign SYNTHESIZED_WIRE_14 = SYNTHESIZED_WIRE_19 & SYNTHESIZED_WIRE_20 & SYNTHESIZED_WIRE_21 & D1; + +assign SYNTHESIZED_WIRE_15 = SYNTHESIZED_WIRE_19 & SYNTHESIZED_WIRE_22 & SYNTHESIZED_WIRE_18 & D2; + +assign SYNTHESIZED_WIRE_16 = SYNTHESIZED_WIRE_19 & SYNTHESIZED_WIRE_22 & SYNTHESIZED_WIRE_21 & D3; + +assign Q = SYNTHESIZED_WIRE_13 | SYNTHESIZED_WIRE_14 | SYNTHESIZED_WIRE_15 | SYNTHESIZED_WIRE_16; + +assign SYNTHESIZED_WIRE_19 = ~INH; + +assign SYNTHESIZED_WIRE_20 = ~S1; + +assign SYNTHESIZED_WIRE_22 = ~SYNTHESIZED_WIRE_20; + + +endmodule diff --git a/FPGA_by_Gregory_Estrade/mux41.vhd b/FPGA_by_Gregory_Estrade/mux41.vhd new file mode 100644 index 0000000..b0b24ad --- /dev/null +++ b/FPGA_by_Gregory_Estrade/mux41.vhd @@ -0,0 +1,90 @@ +-- Copyright (C) 1991-2009 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + +-- PROGRAM "Quartus II 64-Bit" +-- VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" +-- CREATED "Sat Mar 01 09:16:22 2014" + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY work; + +ENTITY mux41 IS + PORT + ( + S0 : IN STD_LOGIC; + D2 : IN STD_LOGIC; + INH : IN STD_LOGIC; + D0 : IN STD_LOGIC; + D1 : IN STD_LOGIC; + D3 : IN STD_LOGIC; + S1 : IN STD_LOGIC; + Q : OUT STD_LOGIC + ); +END mux41; + +ARCHITECTURE bdf_type OF mux41 IS + +SIGNAL SYNTHESIZED_WIRE_18 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_19 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_20 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_21 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_22 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_13 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_14 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_15 : STD_LOGIC; +SIGNAL SYNTHESIZED_WIRE_16 : STD_LOGIC; + + +BEGIN + + + +SYNTHESIZED_WIRE_18 <= NOT(S0); + + + +SYNTHESIZED_WIRE_21 <= NOT(SYNTHESIZED_WIRE_18); + + + +SYNTHESIZED_WIRE_13 <= SYNTHESIZED_WIRE_19 AND SYNTHESIZED_WIRE_20 AND SYNTHESIZED_WIRE_18 AND D0; + + +SYNTHESIZED_WIRE_14 <= SYNTHESIZED_WIRE_19 AND SYNTHESIZED_WIRE_20 AND SYNTHESIZED_WIRE_21 AND D1; + + +SYNTHESIZED_WIRE_15 <= SYNTHESIZED_WIRE_19 AND SYNTHESIZED_WIRE_22 AND SYNTHESIZED_WIRE_18 AND D2; + + +SYNTHESIZED_WIRE_16 <= SYNTHESIZED_WIRE_19 AND SYNTHESIZED_WIRE_22 AND SYNTHESIZED_WIRE_21 AND D3; + + +Q <= SYNTHESIZED_WIRE_13 OR SYNTHESIZED_WIRE_14 OR SYNTHESIZED_WIRE_15 OR SYNTHESIZED_WIRE_16; + + +SYNTHESIZED_WIRE_19 <= NOT(INH); + + + +SYNTHESIZED_WIRE_20 <= NOT(S1); + + + +SYNTHESIZED_WIRE_22 <= NOT(SYNTHESIZED_WIRE_20); + + + +END bdf_type; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/objcopy.exe b/FPGA_by_Gregory_Estrade/objcopy.exe new file mode 100644 index 0000000000000000000000000000000000000000..8fb799aab2145636f1603f82b62d0837e9a63ce9 GIT binary patch literal 719360 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 MBkkS{KYNqQ zbMNi;U6I>hP?t)up`braHito?ftF~-xC5r0NcV)wyptR7PsB3Z#zFm*AS`ahR!^5) z04lqRz|sYo(!?`N$K?`bjkz*4BDtq* z)o8AR0(2e%_0p!q9}D@devw_fUcVr>5xcGVGVn_DZH~Lz->)s`54|@%x`omr&T&>m z3%e{Xm@+>O$_%88z&6X-;$azv8s&L4#GH<|`0PQCe0xU(uvTd702XcZaCNA!bH86r z|9t&-FxtX*J|*{TB9HINpv-xcvE-}w7ks(A?cAcEu{0|C;dJ0$j z-{c*7?@>OF@9{y6XXv+~okG8nLIJPwuOmjI*PjC+f-tnN|=543CVN5Id73^AhnL4`ltpE zqc3(&Gh5RfCJSRw(JR%~nDSvG!?Dai1qrwln$)4w!gMG>)Mi+Jyd6wz9~oA=-eB}h zLMsWu_wJ^oa1n#3t5*TjI7?#B+e5r97cuBj13$bZ|& zvpAk5LNr@jW!9u7mJe%&5ZB1@#GpteV5t_bn(DOgx-pjRmIJyMWZ}0MWM~rXz~RT@ zo8nFEv2CPeDGnk<%Y_L6bE`uo7!_{tA7JwokZ7O`R&bK~q`Sicl=RcbE)frY$XsM2 zd>YI2<84_$wgiVCx%tX@p0ijFny`SbvfYhbd8O5Hm&~^W8iQ`*zZKsONOm8+C?uIR zgrJr1bP>90{u{y>4Q9`x}8Br_hJy`G~xR`Ab}3 z(;zd(*Ev?;YhTIjD|;8nd&J0lvgWH~{a$8u;P3)CB!F+#J?>v3d;Ksnd+=XTHK^tXG@69aTM_hwkoLBAZDWF-4hc2J@m(n5B$OdD}b7S8gh_X zE(C!@DNTyVraUHGOofmlZ2Mync%o_|?2PJlXe0TUwC*llE; zBGe8LNST2V8tmLaE0S7qmYU%^1)c#tOn9dm7Nzb(xZcw0&#u9$8_T{47+15WgXa#yW)E9&>s<0GUXj zh?Q_uBq(IESC99vx-ZiG9)e-(3QWlUL6N_TLZi4_j?MMwOWFT#aGC+!>bcYf zS^U)rY!l}aWx>MAf^MVumMC$^M_XHk~>vbJbtUH1znutPQ6EXi`8*?q*7oXiLN5qq38-e@4M^bB0- z*G84U#^qr$_+}-MpAo$g8s_b@fC0z_44O1Fy}G`mmu}_OpYXhQEN0o85C$B_wcx-2 zR4$$JyeCX1(LS0m+cU!5zigoix?*fp?$^5&|CKGitgv{7;{Hr%TiCXBtUOOATjBQ& zG{}etN##Tbnv-u&kqr}zRH1Pt?)hO#uystuE7*~qh+149G5cj>nG?it1ku^n(_*pH zWy|csI~E)EHN0kI9zx8r2CgT3ZNo7l7kGEhH-mPj1~FE{DAUa8UjO-r7`^0R`Zj7=UbZId4+Q+C6>>cf`>qkFS{FT~z&sdAiCMPwSefH6I$ zyr^?bHPu4Sn93mFToKFsLx5mF=a?$xX($>K*8m2_f#0+roIMc|GB;-Y6Vv!TJRxm{ z-kKmLP-XBwjM!)wKMoJxx{}@EosVh+^ARzF9vMLUSwKB)okI($yK?`uV3-QS;BN2t z=K6B(*3|?Zmqrp}XV4~0llzT@Z1*SX_o$r>Hlkny=p&?=g)`5@RE|0}ORaduvUk zU!qR#2{pt@hfc&>(fY@~j57V%)Sq6;{hbF}WJ-FFyxSld=RmT7%W~szJz23Nou2ef z_pVjy`lgU~hv`W2J&tUdytc0|U#jvy{683H#Ge39nZ9QRzraXjc61~FaaBiGF(J_^Ly@@5k;;4Dm;emm#VXaCJh83#zCjs z0DKDtIIAH@vR?&*S}@+#u3gT3DEySKr_1=U6OX6DxbpwZqaOu*^k|YSYK0BFIb3IV zPQ=+IOD)n<6r;&qXAw`~1c<-FnQj7jPR=RLwJf`rQJ1SJMxbf_6-dgmg*Kr^2^Wx{ zKx?nOn88sxlw_2a<>UA_{XV&M_6rE? zvZrXvTeDeSipr^sWTIDo^lR&)Z=T+U&e(A+U{-721SX-5ooV#zyY2-TnB=!0+F%iF ztEZc=AX-Q2sIR7S8?=09*)H4P1X$!YhF=B*iQ<|Q?!Pb-HtxZG6|7AwF0DA?`Ik9| z$=Mx}<)7>q@T*V>wGo#Uqt!AlW#2{mZbqjKWAa{r0N0Ta2e$}xCZEsC=|CY+BMUG# zntSyBygyvR5%NA@?uLHY{ur+R;{rpqD#kxd;hsGR==J{!e?zW$wn2-(83IqW4faU9 z=}M2-t5f&xW`F)q`NicLA#YG&|IASM3P0&q$St~wllNst^~z^p!n9sq{$J#S>m?cg znF99E)3o=4|7Y!ut6j@^kL9d@gv55Q$pY+1N=*!d4zK`w)zZOj-yrm`a$et_oBY-KTWu7#!1O>a_H-vpok^tyZ9Qn?W!9SH z-VMg9uW3KxrI{nj5+{$$w|~~xx8K`LKo8jyLy!7Am>zlz1PmB{4L!7uri=0?WAt*F1pp~$yiHwacx9)kd8R)+By8!|H(q9x2&S||O;%r#( zUN@lmZH3$~mQ^$}O5XXhM#F-d16cMa4csQ~T6GTyjS(+#Yr zT^MB!-5kkzwd=V)nep7-sG7VbJ+Cd&o!aIk+ak`4HtUe*o?O} zlF$`An8Z{VNjobqBFBN~R}L{OjC1Fd88tB#XGI*gx2;beO+5NJO^H&woFZqG-PmR{ zW7%{ye4%OBB&1hHa<2sT*xKQ$z%EzH9^-GsF}**=zxW|5>A;?d3kM0#1T|x}esONz zZ$$X23GK>Lm>IDHHp)}to~3FddJ(ddl06LkvKxiinhkhE#=kVevD*-kUK!4<>e(+T zd6wL=J>1AMo}-ax_6m@>EAuAUw{{n3Db5)9uC11yLMKO&W2J!f|;=Uh^l$C#t|F%J=rGku#t-z6KY$ERL1cBW+lo*0#d*XD{7OuIV&Z*^uu*z->G>CQv|bR&{maY;h6w7? z7Yx+53jH(rOY*bg^3aT$^mu6C{Gmn%bCZF0708(}coUs9L*{!Ej4iGXe3~9<>;X_X zzm&tR4P-|EvBcb);C<6TWUs%Ov)byKq)<)E+vcU$Ul5M3aj*gyiuYEUYX)8;2BiIz z+4k4M@np$sfl9~;eQjf|__d7!RMCOFmpB!1ZnM@zQ3q09MEoOeNo>Wy*wSq~GT)uD z?$l5?IjZ%?>sn7Oa#A5D5?gT|ze(`?j?6wb@37X=rJO`*O^#a^Tl$UI3VuK7vmKd} zO=jw?maYqv2XI#{Qm1(*k!neH1cSm{yrhGQHZub3+^czi&)kSn$|9p|V{@tVteYsW zTXp3T*kR`hXUICEKF+-7G=D2ik18z!rtG?zwxrt!I-|;0Ztf%VpjaaU`rtTNG7f*D zgr6B-QAq#Y_fJnn9D)tKKOX*-`=@s=e@$=s5nolF{k|LQegD<&tOVP4_hGg4IERx& zcTqh1f%9Rq#vNmW{dk29#BRsfWsfnsO+r2Jbn_|7^+Z0B*Eu!;IqeT|=hO1~VEyru z{G~fKWU)aMI2#Ixx0toy4%X&+b}Vb^QKBnNMM+UnV$n;Vd_42pIwP_}p})B^hRtla z@=~OZYt{G(8!%b+;~-3dUFF=hELBp>yGR*%yY1IoyM?8;~D; z1(2K237O9D1Au^@k=#Rj`1cZ>I>?fb@~mO&)d{Q(W!tZ+X>C3%-F0Z}hN%o-&Z?c8 zTCXl~8~&k@d9(;uNHn{i_@uMZ(+vW$v1sHbw;0yFK>M-`c0(l0zlFsLBZld&!)A}j z=L$;=loF5ca9hmsPld9HjVewb_AcNm5r^jYY`QysOZ7N5FVTuLtq@Lbi&-@IQu_0x zFCTR_mt6ct#f6=kou}mefR($U5K30b6DjTgU!0u_e3ZrY_j6exXmq2b8Wj~Z)}YZQ zf^C4Pkwl#fxypj-k-z$;QOh!?z7 zpNEJdT7;-H7r4fQOo2LCFZNdzABN~21ZokPL}> zCEA6@@3tusVfwI2e5n%2ZAwJF&8oyYl^C;4i3rC3sKmP}QM*lvsJFva;x(0syAtNJ z(ulpljaTzpmGfUbYvQ4(caJM)p>o~~b0Uo9D(6Y%D4<1kqMSb}=V9giHOz@{%qZv2 z%E^T}5pEYM=MLpeaXFoQ7nSf-;wF{Q{bBPy)2P{9`gzzMuQI<@nZrZ)5l)9G=Njeo zCTEreROcD2e*-F1Mj!rAS5*cx*^3U%wdlOiC`4pKHo+-k_L{h1!M&uX!@t^py0UU~ z?!*pa6Q`b+9jU`66SE`xa#o>dc4Q?VCnHv>5y7^^sQF2kjVAQA*`dG`S7LT#12Vi? zZ<$Xo@i5{_S$uen4W^RYbQG-&j7m+_gfX@sZ(yShyuh+^S1h%3l+?^=vfn^Jo8kVW zqtF3A;+w}gCvWW+e{XGUGOmu<&OU;?5|6pgkPL;kmi)9Fnj?gY| z93d}7`I+7ATl86UKG0iEKN|dJH+M}A&or(ye9XV@-?p02?vD~Gyz)x_)1%DNMn}50 z>WB|q@Cx{{Y#RqAed4pLI9x;caAG)Sv$w9UEGdtx&I+3RzMlH1gSWF2b`#zjn4JL2f$5UPhsTYnFkZNDmPr_ zg^UV+FR2kj+#6ojmdUsOS^u!Z$I8wuu)b!2RcZy8=+Ual!p)C%rO06&uZMKToQPx# zkrx;mEdx=_dekMcrLtMDJ%d@!r*Ltvxiv_{CRAEgSD+j$$4P z>Kv!lVk`IzXTq8RyfgckE_C4<+uBwBp|FHEEIgNm@hKY= zGbl2nhZk~bVKGX(NacEDi<|4J*#O?`?}6tBv%hS?td*nj_quGvH53yv@FKIIPgPTQG?E*@E1n7eZHN^d}XL65w=%HT*$3VwzbQA8i@$GRh@^>CneWXD2*(O4$Y zcyjja;Hg#O5J&q>l9+FG(fa~gC+fl5V3rm^6U)c`7$IOM^Nk@a_Rm<{_wPc6QTR;a z+%}vw@u!>*CJ@mVp9`vr!_fNh&w<=pSLWcVZ12=M4se#luYa3`yg!E)xynY4GzExg zZ{L_fLW=6P)=zUyKVXS-(OLW-u%)47EIXpDXQjwM%4J*v1*u6_I~VvXeIz{+_jPj!}st zOkuw44ow-7{Y^Dp`QyWU*+)_SYkB#nh554iqWsx;`QyU;gxU|`-Dj(p#if0>lNtOr&AuX23GAR^s6f%?BTXu%3Tw2X@Qcn3VZ=zcj( z#J>&TCeiuG5jGxuyf=iSjjdq&!`OupO_uo={UCofp2vPoJgsAFCjYn>=7z;W&1+5e z3dWN>ivu^=o|^bB;eX=T??>VNo=;004?P6()pZfKA<5!hBb=LE zZ3XX({AOv=j^~nVNM=1s!g81JTxhGpch=>fxn%jVRb9rCN}u48Kc{2)go@MkDa!?)+$y;WOlqW3c-%`!FmcxmZ%`0Bny?A9_ z@pDytE8LfldepO7?-*(K+6K2M`&TY|^EO6518sCU#bv({W=9>5vIn^Ad1Q-<(=kO5BqN?My*aD1QDhM9{8x&~_zz z+w(&C+LsZKGqwtx{UyiA@y$VCJz_H2*-{)BAS*TGP|i8>rBPiD`Q z(Rj6Gdn9_V*%TUSC#N(i03`5a>Ah8(;?E?G$c-x;f`{?a`5eG2-6p3mF21z0vyg4Qr^Z^-Sbvp4JT)qf1~C7qE;@%<)7xX?yLLh5*rSY zr9a7hMz^V@ndlMU^*Iz@lO6*1ALLtCU6*znX>E_l{*%8+*3yLRks#Lx`=_rScPWZ5 z7>Cnw@uqZv`4x#GhEa0EifTJ@r3<+q>dF&Vdd2YtW!Pcy+0SlD_j2yX_ql|F>$(!9 z;-S&~O9}>Up0Yb}8av@DkO$PAvCmz3G~P*X2&dIY`RiDWBHY(tagEYmh8~2bQyMg# ze5lV3Xg=l)7xoL0`skFE|9wmcNw3Ku#Z$7i>%Fy9v60|&psMm&XCM~ytvXDp(Pw&* z*Al;V30o z$=g%v-hvhJ*)Mk*um=*l%p-#3zs-$3*+!rw&uyIikgc(!u{W_E{og`YtzfreAucPd zT@RhS7VlYi(jP)9afLSkYOcnbQ{&u+q?5o^gol|IjMCIVwh9#F73!t>iExmiT4l=tRm} zZkEU9t2!F2LFwpJ_u6pnDm~h#^=fWRq4!4H9y1HQ*KlLA6RGQ26jc_VJ+z~~Z}Owu z1s&dNgW9Hi*gW`{yq7NNP&n@< zpUb5Kz}J27#cf5_C+g*OYd3NuNP(`1p&i{%u*rzTo^P)USMBT-=f>{5l1_TdC>x)> zrE|04eU>$Q<;wT;dI!2(EQC}Nj8JvBCMc4*v%&8f-gSNeeS&;C%w=UAP9@x!BeCYmhQw^69w7_B2@!1Vxf%@9`4HMwo`a$uVxJQiXvIs#^o$_la zqyUL(HZPkmE1Jk|KOE>CU%>S_quAbOeJA-RRu}I-K_;)+8(&cN4owAC;f2lZ2}o*y zSJl3mNA1LsF8+(jSbAq}0^*R`3%ZTR2OcKoNM;8NJmX0X3;0XK4FH~YIG6H?xQw}H z6^@%@Dg?HFh;)!)YTorR1Vo}an{uYgUxY~1?l2J#Z3E@M3abzOm&ws`3fLCmuW494 zdyIxVt#tqRd|b0Nb(VS5#okka9z7I{}ck!>-k=r>{zc1iH~?Bj~KS7}L6 z-U2%DdVNje-{Re#Kry4Tg_+r{NN*0~@w9bbt>pUpiOIWki{>c&Og}9MCcuVN9_X#5 zoAp@*cHpx4@Su`{LUKoi9BV_>IYODU9Pic?61K5n?-gIYe2^CM;rV#&9MnkA#08q; zBEs?U1Ho}ztefSZ?ctAN8^BD2Q6k61w8}tbUW1`w+^w#Dogo%dY$QcMw`z`756p)j z2q+Y$4esv%Vmqo&(k!t+_}>5|cGONqQ5OdnYo6FR|BHLT;cPcD=mj-i*kXjJr2B}` z55QNbd<70{s^8IdUcv=msDGk@c+49VjNz;4cfH?j8h(^%_)643ZuG+D_8-Krp9RLX zD{4FH$6$GMDM{13i6-Y&xn}?R#>5%*)2B}LHVB?SgaZrWgHdLR%&I>%QC&YS`3_Uj z>n$KKn2DdF`Z3AHq}rYAUhlRx2alA6DniN|f)~}RQexY(SqNj6EV0v2wzf;o6*ss* zmUjM@ae_R8Jy!dVS$umu{d0r`Lr@8y4jeSJJbwMjN*G1L$z>dGj4h_T#6eB)FIvf+ zSm^B%pFOTH&Ej=9s;jx334aV<;tN)FGkJCfjF~)b2dM0Ru87I1PKzg={!o-I#ifJ@ zXfYWJz~qY{Q;C-1Ncb*Z;3p}h$#@rwWyNru$|syy3B_XaQ#emve4#6abtbt`mL*Ds z67s{yp0VHs`cWdD5v%kRo1Cy3);T`Z6_dmPYI&Jj9^h*?L+u_Mw)?gdb86Zkm;9RLa72)7toaghC6OzJhPT|B+>)(7pst7238^2 zFzWF+Dh#NwX$5Q7<@d!fxj4Tsw*z5T*b%kt*EouSQuY`Eb8#>NciOTa%1S{W`!n~q zDc+Zt&aT^pM$5(aVk5bjsV*MlOxqR>6w{PuofBbkwx?f&I%nR4Uu4#C^<&jfi2jPt zZpR%v(sWHDmNn*AbNe^~d+f`wc;+|K_&7fQmoc~{w17v^k8ljmbhYxvpaVs#F*t-m z8iTbEN-{*xy1+x4Gd2X^Xxvcb!B2x<&Etl0V2bt;KRp~md{vNunB%hxQY>o_M!b{< zLD%XC0xVHuYb4HbRV>S-iy9k2`|_8Yf-!YA8n%_dWh$ruz1HV(PmZ?`U`t0 zS_5s-iB~EDqK5v=vJp-^556-=uF3Z9zu0dBCu4_YhPzGCA3bHb%azp!DMH^gD&LD? zlTx%wLvo7*LV~p*{-rwP&UQpS=Y{*l7Jes*(IR8J!LhrfWglkEpUR(=q2+N+)-k)1pd_X~LoYX=mlz zv;if^^vZ@VYs2=ILp#tZ9Wl(s>Kg;Al5zsOQhP>V;+c^u5OxbO7El7^DoVfI-iNDK-gCUV|_g$1oM#w-1LiZTEnjhm>k#+*mYgNo>YMln03#9wLEVl z65K&bkH~G zK(H`yx|4h36R{939-$43cS!n`n0%ypdeJ4x2b!lBPfp&;Ij**6^WtCYL5p+51WGed+$A2$>^}Wkyv^WU z&CxIpVr38Y`x)@$eikdZ-J#(Szw9oo2sZZ*{N8T}mBgydCesgz=a`BFR3)Sd8t7b8 zmdi78r}H%6l-{hz$|cboQU!%py6rAXH!04oDD>jFCEJVDxbisqELgPEqpel@-7k*e zZJ19+Wp}m!EC}-G*9rXEs5bD$jNvNy?f5lOq<_`!C^rGCbE& z*^Jcp?8~|F^lJMumgB$4t7*FeLldtSPtM#$1~AOw1k?&yzW&VDZ4}bnxXe-D@*zl+ z`1LdSkxM{GO6NvP6kt^Al3s|y}A8d8;WFxm{WVi&}}*ipzQ1t%MB(0&duELd@QSviR(t^+V$6qfn!{iwkuHemqr1^Yuq0V)d2DA2(l9I8pO~o6Cw3Fk_3c z19FoKy#aW~_{TJv$^$~!X_z^iAr%5)tXEp;zf~?5%C$??BeQY5dK2t}`RzYSrk0xV zbUTrKz!;nx!E*?`I9Ze(!15Al)PExYheK+KCXlXCYb;S1IZ*mRJZ+ajiat7}Igk=2 zgFIHug%#L*2L1RR0Ay#oSf`@KvPj3>R8&7Wo?Za3`fB!qsYE-+I>hUQ_(9<2(2kr7 zrhoA_R?A7Q3o6Hkb4$e&{qYj&+WOf&gXOSMZn*icPAd}5lHAShwTThU?MFs^NDOIi zm&mM<;gUGQeB?+H+sK}9hQ;dTM>WKHV}}(-m9=y!wh%Z4-R=Sc$hVsLyQIr)S0biQwS+2`bpOSLfh&V7JJunD_kFPjymEMWruj5 z%J0fud19K3Ho7>Wx)q3Hy(cQ0DbyOfmcPsc9$Sa4e#hY_oZdL7yjQ{0RzQ4CQW-#N zZtEXkZ*bqlpVKXgeu-CPi#G2OvCFY+r;A+KH)gonC0kzUq@jF-Viq>R0@?zO+ z**!wzWePz(oqW*Fr$6y8SXP^R$J5%Yu3gU}xg87JBX~S_8b&RUS=$ZoT=n7ftH-ap z0PYNp_fraUC%o3YWuN%*=?(P6u9St_6iGjj zX5|hnQxBnOi3xM)`nzY~LOIv8j%nJ}RwKG;Dm#E>G;P+zxHL1}f>j|IHkVJ9CZn}s ze>77O$UBe@A8>w>`N1CdWI@6$fIKKuaYuF9tMZRnWz{F4cQrjGi6%RX-0%p>S)uv$ z9tduV!xH!&Ja&=R@m&&9tE2^`@WG-$*KUUTT{CXA*PFPbf39KHw5VYO&{1#_0%!rA z4H~W!oO^*o-4@jyU4)5(&>CHY8_rx7`I2rXI#8YTzF9lT>V8}z!NWI4KI4gnzZz)^C$_Wj=>u%oVIzTRSGT@;jwqve<~ z3|*ziGNHK+fw9^ZF+h5>#Lg6hV7X)=pJn1Jsw&XkCf0dNrF^}f@k}!YWbjAoNA!&1 zt*oW9y0?@Z0n&u46({wWfL41oFsWOjAmHeZo|MrYmQL_#?~^cU4|)D2_n(tr?-d2R z(j;SZ;7U?tFhHUnkchE47(A@9(4^8OcRRzSmJZMud}!iC=Y9@=nEu*9rX=cu`=ueA zK8f)6?_EtZQY?-mc15t!T$BGG<~D83-AonkAHkKLyTQUCjX;t-)s?or=QsSxnJCwZ zM%VC%^6}X#Ix2G`&W!w%Ce1=w0c!}&27O9aWL}|;C}uO-gx>!;^W$mVu7MQMB3!%y zz61Sdp_3_|i*Okz!yOH?kc_SOgn5&>OILMGBC@rGNApO;64SQItoenDp_ldQi@$(k zLMX<6wmC0xTiI+z!(x;3qKw?4mj-QM=whuC#=1yXCJ{WTx(H?>r@dLQiSz z+_15Qt+Zn;5)x(?lrscZg4UIojU`&O9R^RdpLSPXR5 zu;dnXF9Ku7!j73pF7Xdq%uc5ELED+NsR{|?ioVHFMqt0u6&gX z4v<{falXn09hxKXOQ`8VOCndMWSMv#ob18`6R}8}4;LCM*HfP5`|iOV0x$iC*iE(U z>@AnAgJ7qgjbys7v2uOThk`gav$0I#Y_>z0Ai)pZw3uYLd(4ZkdLa^Jds%c)3AjuW z9DnUc3UG?2cZHsG%+v{=+cBMW_!g`T{GXlk*>MdPBnA;m2KxYI zpx2dYdIt*Nec1_m!zxsrQLCohn%mI^2htCjFPT6c;)y@&5D0eDf3!6|_=?$S`)kna zd=6!==XPVhc~G{!gbny*uusGM7hpEdj_fr5dA`6lO$%RA%8KMp3zZ^Y+Bfp6@vOTd z)shbP^Jy_AlL_+qS3*jWOwoF%%97kel}{^+7m-x#Wx%M><0*zUbvs$cRq4t!U-b{- zCu+4Q+RcUmVRpI@Z1q0nC4ptJ+;tsWw{HDvRlk)7H}fyC?r+V_JmuG;#V<=OD+05s zf<>u!iu-?BxK-%vM_oEHsrU)k*0Sb7mn3&?zO0Z5{(UsQ%(gB2Gfxtg309X_`dK=- zjEs8DpY^0+?f&7nUgi%Ks2dDV=63JwE%sG;%p$+iHB_bF*r$HEelv;UvrjG1n)4Tu zCOjyu00lXgy{9W*p|{P)P6VB63JJ(~79)=ux~czcNb`V*!9Tt}P!PcR(Q_S&>6QS>oB;%Q$)^^i50OB_`&=+k)mI(%f!Jee2I`~zV_ zkgE)ehgX26tE5r92fvHQ5X^=W!Oi@z_!=;*Z;cs(&By4)5;jK$VCGCOgeW)A9(VXo zkEeD=G6A$+<4D(ae!Np*KJzr~JYG{keT(#IPdG-A^h1O70{6E+Ig=35j3^z7(5p%yOJq zOPQeY*(2DxZHc_!$?xGxPn0!pNyIbvlO6e2&^V@7v>y*RQxG%V^ytz)(h5=t?7`@U z`zxEDHfB5{o_P;Y!6#kt@-Xct6@vdjW659Ba1Dj^M}&>UGwt-8L8+qZm71K|?N6rK z?zH~=FLU}=JHhfzmFL5M(Y%KLG_Qk0;P}x0=Z2LV7QB@b+2M2PlG+I37xzJGyY*Jk zV)9hXqd6sUyfOwCo}? zyqMc4Pzni&&pw6thQkuQn%j?NP-!>Pj?L`{<4LANx#=>mhvaTCspxOTcG5h%$T7Ux zDQU|ZQkdKyW>!k=BD=y823`cnAwP*>w*ZP+5o!%j4iqLh{lu;CAlO^HN_s`IcTmqS zYGQ4$9D-%G_{)v8nbUNx?Llftxg0^^ZtEEi#4`2EDrY37>{Qloy-DJK$53D-x~V zI@t%paH4*p4BiE%&?^%cFfVhX3zKVAU?0p+f_(wAD`0qSCVu@In$9J9Yzd{_aakw9HSE?;mY@xLP*vdwzC(wBHpV_ z9CKdnCcHR_AL6|^Z$S|NvshLn3fAg8SRmAGmEI_TawdewLmt<51;W9Z`t_gW?ER&OWwnc%r6jflkNc}?@7#5F44yLm7|Kfzbnk_}`% z|HnYj(E0C{kBjI4TY;^yI%p^P-4rZn1Gmp}w>W*4uDpi~|5AdYgo4b}P}PA!0&Efx zSyOzOCesQ#WpgFHT#Lu&xwhdsr(hYboO=dx8@QL-u4Fv@360o9U2 z0$9$HrfL6l@fAS@0fW9-p^_k*-O62+D|5_vsU(?hkwd zWh~<-YXT0G1pzD>6uKFidtH!sVBBjCgYav(O7bZ;u84d%bR5P(XLxY()aLe+6Qc>1 zON?wjW}>$t8SnBZXb;IQtLr1N1;DenO6(?fW)}!+u0PEplr-FH7t+$OwN#AnSI*Xr`XnT*(?zP8A@DB54VGn9nhK)dGrsl zlOKGO`CSRNOI195lRgiRr)Th~z^<>L#@S34*{c)uiN6~(<<_qg96lSAOjl~qTSMQj zKXodB$he?iosTeHdS!TM&Iz>yv6n;}^3??oDzRGS;8DW3i@ zeIS_V`V9)CVzK4(sdY9mofrNc5<(@gA7yJ-v>hDIr}|^!=?7UuDU5VK5I0-Nw1vWV z>+6ZcYbk6CauAT&Gf;zEyQsN+if#&C$FCT)tC!jJ0gU47LN-$Hv?pkh30kM!0Wu~Yr{}& zW@9mRgwxj%DjN-zwzQ^|SzsWM++^Q^ebi;gwDnW4ys%8`lV&r;)3?e@U5Rbve>4wb zmWpT)x4G`pct&w)thZ`%h;#;jlGNJ(hHa960{Bb4C>#WiH9vX-D1qvDxF|DF-x;o> z{=G1`ZzDo8&pCbD9>hNM+%&$(R@ap7|GGnzt}y5Aj8J zM->CmHtmc7TKnp#|Bfu&vbSIF~cgKf_5Z;*P> z4wfnwYjwTp0Wh^^9y^x>f~cAJUz3|nl96el3-YpI{>G^Cy*{T6 z(slj=b6r2%HLs$IN2t-W|K4vXUG2uS zrg`u|_=GSzc2w7+u4#^e#9OKY!+?}y?7ih}yE*@q6iYi6GvspPlU#2t^Q>z9n0R_U3%dF#$r*}} zfr~HR$b=f=EpBN)pk>{DxmZ!{s+P@qC-aYsQ|k(Q=_!nc;51ZF$lVvSlu+mQgfwvX z`y!mkz0Mz~ZY~S-lzQzZjW~3w0ST?_PiEKs?q;q)At-Drm#8b%B!7Iq8)8<^9|1~3 z?Cyft^mJ#&3*9o_R)(#&(+|@X;qog!TYL#FXUk|`n;A9b&xTMn)vc{Rch<~^V^W_M zr?wWwXMA6iO#6^jM{@da-D}nUOFz7o+|3HE>zpEC>^dcU58R__dp973%l`~X^ts+V zQRkTlxG*+INIEf|-mI?} zE-GNNL2eJZxKNwp{$^BJOCOoi0~Ky1KYtykQDG59vs8=bFYV;)TBQjTxY%KxCrRgf zQ}BU0925rQL@W$0yd%LcWZ^&o%$NiINi)@)7usNOtnSyJ@f|(kLAKBM9vm!RV<@1y zdk!bFCPpwWi)SVwpn`AsIZHE66bckWUq5(OJhO)SvM(f+z%jUv8D%W#j`JYtk@jbI zZdQ&8K9=+m7*WRCCD_dGP+a&&|H%lmEDxuAK6!^VxAbJNMjab|PQIKKF-EnhP?sSGp}WKltF>iN2kYvP$N zn1||%kcDDquxhf3QWrQ}4+2-w-Ij;5v5kVa;2h*`lP(_ePCGrNM0B=A3NR18-9#?2aLsTV0F2H~>1jd;JM z8uA{1HNg;2k$?L&iegi6v~!>u)UYV9THSc=6AfMBQXpBn;;selaZ8V<^-!Nkpy3SE zq%)|1uGE1rfS_&Th24$HLQO@~V-+#F0r*JJ4CaRepI^Wj1t!>?0*IDp!JY2U>_y9r z2T+Kh=dZ?w@0rsC!i`BMuR$K`)Qfi+h#4A*t=A;yh{y7qQfD;r|KiF`q@1xKNlRSP zD3Wp$JF>C6k(1SokW&Ki@sZ8eZnfOuY3=Ff`pgGhcra>jume<$w@&lG+og7e`mTHt z_4{~$qQ&{4YBaKogD=9FE-ZzeY8jTaSm02aOPs%m`qew26pIQ9?AkwAcW+k#divGc z&P=feom$`uObZJrTPUd!8y1S(NfBFrWtw52+D*X?Djd$`sIbu&j4pQY4hb>Jhi6EG z(@0k&MiFN5jU&Ht&>{<})Mft%g0y_VRo20~6v*@c;Q3*pbP+C}G>y~Y$@nVG`*S5e z+o#<|`idE`^ zhp-!~l0Ar4_8Kd?-%93h>F5z%;p;VyXjSooR0pwH2O%NiH_ZZMs-rTVz7!J9ir+Mk z)Ko`lXb;BI-;y8CweeTo!dIs~4pH2~A|c}c1ST}ox*~-TF}BEtX^ZSU76cf)*)izt z#E5KTo%cDnZY6pQS~j(agMVv0pQ&BvU-5Sv>^k-CGxb<1l^*~3YS-g8NeeGdv-WkF zccR#vqFr9Yq|t)6I}t(@toDTvq?-^=9}80Q5h<`Y^9wV;<=u*qS0Vp_&hp7u!v6VB zU>P%-6KNffuNn%2%P(MJ44P8z4nesq>&}!&(<3W%k}k3m#9SS;%=?OtwyLB4Z9p@7 zNF5X})4|18xwLj*hfTCL4&+DFT^c-ZmO$GjL09m4GZD_1OU>={>lT{hQ0gq6cT~fU z7R{FvlA69u37x}a6C~PUeWy2u23O41BOgBI>lAl+dD|5%(bo_|&k9Y%5fUnMEc-A} z`%GSly?O05z{m!hBglOdO12?WWg^Ri@ zm;EtQUi!L6LH3FoG-~4rcis%y(7@CefALOfDfc-Yt6|ogoI|FSayj4d&TWNt{}EU7 zF!I8a=@8f=TF^eLWF zq3XzV|A&};%GsYnHUVzMpjX1K0@YaWPKgACg5hRYvz}I$u@=Idp{y(Px_B|54aUhK z44vmvE1E=CUGCuii?nd|I19yHwHW-7^i&7;)imL^2#y5kwH@!<0A6jw_MyIKbkkBe zh13JAbN`mh@(6G`P@?@ABy;8~t?$FlUQRP@Qgzo2d20e7hruZeizgD^r&xKX<_8tBF3JVIZgYuz(fk?8tQbhl`zo4dM``w)k0`cY%O`jlUY_-m|> zd&g1N>>Ora2|==*>KOmV{Ij|?f%gBPr}n#lMSXH)75huJz^krPSm=#49`~V7D{UQK zPG$iM_Qq=NZ4?V$QR7{~_p%)^{5$x>vZrzT=7{iMN=UUJB}^R!MRBH~KXiH?#Xp9m z&VLB6J4-DT_jF_>m`j{Q##-q8`q}#!YmFnaW7t=p^^MSUQ{zrxNeTsD$|a#oMu~UU zSCiI>l0nPjDMiwHQ|j2i*;hF(v}oZT8a>^T_r+h5dops2UkGz}gdh61E45ZFeHHW) zdxR2sFpBjfse_PR(vRnf>%o1KyRhmRv>1VeyN+l=SL!fV*?$SCisYRjZvXPvH8O{m1dmZ$OKAQzFty#7m}AkkY@nM`0V7KKGaZ6^%fqvCy#sHeb=~W0L5oTEK^$PpS+hTo8U$$YEGJ;B9;`4 zk{&BrI&?nWsvlsTnvr1z<94B{p!tsb@sAHf{?`ZzcT^D=m1;gg5VsgdCJeeOkCE=C zFxE}-p z49_|1p_JJT74aL-hsHuPKD!rEeiX;>7Hbb>CWdX>LEKnW_biVVP-ZX*NPNDfK4Y;J zzj21XE{SCiBk1?|Sn?IhwyoJQ8h3x-NHSaNReVv9q|`_eO0h>0d8D{mg+K^U!Lbrv zr79gVA=9EDn2LyM9yBbTeg-YFPa=o;H7b{wCB|D3d?ahPmHV$Szl{-!o zhRJeVp-yiy(DnbrtHQKUe`!3uT%X+aQ>KzToHE0#McsTjL2XjTT*&h8KrjEaci?Po z?-^MXa@`C1YA(MBE@Q=dkCs92bJXH?F33=>KAwJp1S4WtHoO|C*Dl9+u8oCLE$75a=d3C%{ zFedx>E0pF~iU#`VUZ8G&P!Gu>H>nE&UudQzBQ zGC*0kUaiMyi@~QJp5I*^WEUjpDeCW#H4Y1V(I{RB8Cep@wlWkUNJ~FRtsCFmzW>y# zoaS;`6grix+eUMR!CrrT6U{|y!D~+JG{9t?2yY}aL^z&#LmFls2H+^31kGMrl0~8v zPwpc`0HA;}6VO3lgq*t?W;61Xiw|{-9!sx3a_PqMG+zVo57n zhYb|HTZh%5GdtSSRyXhci~rkiLQnMY%Aok{edux-Qmgzh9^aDJu0hZEG6u0`cW|Ox zbW8agJquDxtIk|Pt-PYQ?VxC|IxK4IkG%JobW3-F``NC9dix9+uf<~Nl#}AKhvcRd zdPjO&(krH)>>l;XjxX*1#h|s*j)aLz3kP$gxrT2wUY&I>(X;h2KGr7s5eGNW+sB{)L;u?5<)#pdbp;r-&15|}`)W3VrWCe( zR8sg=Zc4Ftq&@jLcey&c#-9&A1NHiC&)c(LZGe_K?yWe;I_ux1hsdq_poR-0FEkaw zdAqarBEf}))GPH4O?6x|Z6A&%3`(5kZW=da+m=Uccu8~WTde{6OdH{~F&|5FPak~^ zeH}Etbn4K|n>r^-G|v9Di^BNp!7cBWcy#I5R8e8!=2TmuSD0Lf)V$Z=+VdE2?7rSU zwr@2nBHt?rJXQcF0(tH`uI~!aCTR#s2-a{uxc4O0rmq`gQ+kZW4w8lWyeHG@?$5e1 zTa?qr5&MCJWa?sLqD{F8lf7-TI&-7gD&Oq?9VjvkdP{S-eeXWrhQoB>;^sr*H?`0b z$roi0^LnI~#o88SiRh+#E3a)|OICbF8-I~F*S4EeZ5QWTt-pWDp5D5-B|l>jH~X8l z*f@-PQijEpcMF2STCBc^M7d-aB)QU z?RXmxgEXo3L#|nqZRivBGI$-LII>c-`}yxrV}lahi=bydtAINmMEt!R8V^7yIpV8B zbFA%m6gb*p`XwS1Of!0~m#`NLlI5}p@vgneP@UbUdC2F<-nm9yW;(mEu=)AVkACrU zSgR5smkP)l|4{?7BaY5B7I{U`v=0>3jk%C%Cz^Xj`@$d?1>64KaMB$HqZ53Yr2I97_;aVudUgYYqF3EJXS25{hP@RekI;~;`>VN;!oyf z=Sw-v&x-6G-b>Ac-=}XbYGx>Xd;jPcaRVg!c^l^bUKD&4eQBBKCcL7>>{#lztq3RBLe=dKe>VreXLhu%<~UHme%&3| zsGkEY-U$q1S9+uSm@F_1xb7kKNneJvhG@vdFH&1N5< zIzsP*QB@HleN$UX5@%06BDJM7F*>!S%=IsM&^*GzG~AUU7oUCgi5v}1hM8w^t4tJH zNk}o-v89Y)7;<{e%UWnl=FSt@+vc7(%U(updu*P1AooxdO&onK z1f6Pvu34oI|5GNbHIc8+TzMXO+@`Sf-*))eRW(&yRkMOwF*N3lDdBaOa5`Zv&61*{ zwJ*_Te)C6ozw}#e7qm7QD%@5(G}g9sRya(0&k@2Kf9mDqs_ckTuE;w&0Kl{ZXO1o8 zR{PRaL(F+h8Nt4Ar0y}R61#EVdtQ5GYHx~N`5#WkW4xBIS)0YY`reZ#LBJTxukBv5 zKYO&T&zCRbyk&O#C5o^Vr}?$*hRBb-H(Iuo%p6r#qD}hFp_U8$Wp~Q}!e}{4VjO*)|ZeXeW2O1x0Sy*<3ZCgyp>#@9n*(r!?R=h zB35yYd!zei$5eTvD?@@*(s3H-BL+TmZ=3LuobP=OqB-%RE&cig=Rgp|mV3``6w2_T zT^Qv_bnEnQxgORgr* z#2k_6v*x~Fu^bH=JAKu18K}&DaG}Ru-^~Qf7|#ZGA@}@O_^J6A$%9Idjnzj9k4bI5 z#%q~&hMTiaJj7?bMu)njL))%1$Ci}H4KN~R_ZRopF6OzTAFNE~YL`76v-z6V9-Y5fwy*aR;`Fn%T&pP_hdzIHy(S(bh5 z9x4oaZQ6OP=5|Z9$In|(Rxn3_8&gXQHx2q~N_#FgJKAqd{XxKC=m~4l2{)^z_j$w; z{a?RLvXyr41oDCp!7hf^=qai!XP{m$>8``oELfS~Bf2!HCpKe8$IW{>0`k zj-tm01TCbpUf-oFIrS;Gb!oi~m*qp4`UXSF8sU%dJPp}fvJJ8|(U+Tj#RsRBhQFO* zBPGg+A)jTDnF~z=hMZ;k|5$SR8&2ssZ=Nd~J0~2}v5syZM)_2bE#|7n{Pc1;M;dGm zC$|mXI|-usmAkE((qN?!EwRw<3_q*xk$i;ukeSNUVe_=WY;Km85#tDU9Y9;L<&htQ2(h-5!5Q4Z_MZow+ zNH}3s2uAaoB>-3Zy-gSpX(uQS_pY|SA7c4uYvMcGyCy_=bJ$)tWUdM`cXF8)bo&VF zNhHvfj@n?Mcy$sk?B0*xhE=!ihaOg<^wCitPI9#m5AnCLn5RWNkPos^O6;DEh;XD; zMv{b%Nyiq3mi!68{m;Cfj$S?8?^m-ouXYLA@ut91D;>BWPiC`X5*B9Gfni-%Z)G=Z7Wog9m(t6|+CncoaE^U18;T7lBs zk_ETg*M6^3I+z*Vf$s`W?1*QILl`emBck_On}P(O7?d*42p-5uAZcb;74L zFJn-cp*w141rPJr1e=pDV@%qGPLb4857AJeb5vZ^ojliyJm)Rx$>dWZVi-L8lDqi{ z*W>FHM#{A@vJ~m~H6Yu42e%d9RV&xMnjYp4nxl7pA*09SO$fg7s zF8*G2WEIP~=~-ffin6IWs@_Tzx$M@|V|>v+>tL$^)6Z4|;Jyih z`?kn^Ay???U+_c5ji9}@hxBJ=jzz<2|L)HnTULls^Q6bLpL_?uy9_<-f%$1YJu~D< zU0|(s%4&a*lh2u506Hs>M>}Lb8}BQu$>f8|eZ`5}_iapC-H%u29p}jV zr2GAhDd*oiIp^;DeM0^K(R7)41>_GHKUPmwh;87)fi6Jw@J)@CvE+}lCsyRHu8_+9 zkFv$edudDlCVp`#GTcl&C_Zh16KqRr*jWGhh1hqSHGCSn$d8a6SCzXOE>AwCn=9@8 zRiF*;ZbE+o)OZiN z6XzTJGHWb(Ge^VU=$s`R{L`(qxXmB3ajx3j9~;>KWqN#{e!GL*YR{8eU`(h0onpzz5pW#$IWe#VN zqr(ulE&|}Ki@n#qb-h}72KnQ{R7c_7D^l-$m1>#lmpH!J(p&JHN&N|0i*}yTV#dS4hvk_vTcpSl$p)2TG*7r|papoxrd3c<#x zYG4_9^ImrYj|{t#eN?R?Tr1iHW;!~kx=gpbyf>cdl=zbN^k^*R5X2IT+(FIkz8h;k*R9X>5 zr!k^)NvN^}o!2DcfzGjWZz=QS5B7}4=b-N6vq-Y$8*E$ixNq|wqTBCBJVv&PEe!v) zZ?_RPTV);)BInR;D|_g${GwJxfkVedvD9X{hnl!E+EVbkf*yfkl`DPu8Hbh9wKBLO zck^=feVD>Gs=Q&koTS{*T&yFhr+RsfN zCDx_P#Bly%O5n%{1&r+;=d!~^>1Ou+ti@{$}#1;TKM?cFn6G;T}|c=_RD145+5{|A{}0NrELwB zf~*Do`E!}JZV3WBw|~T$cNGjBR&Xl;zsxNGJ$xZjQL z_p_#te&~M8w;%o8kH>6^^l?A_41`}{qPN;A2neiP7U_e3U27Qb``Ez6TlSt%c1n#j zK(Tsci-A>`EaLG~AtF4UvejH+o_9v$m2b0+Db1b``iA2(bTc8FAa#X%FG{^zgg~9y zw6nRCPjJhegyXjKR}8WVlrbh03AQG|x^+reLJJ}5+Ho$y&C(W9#ShsjI3DUum~f8W z-!DY^9C@N7{!ng-8>Q~oTag}#@+hEPu+&BV*>u;L&R4B7j` zgeuiK1|kFfH(^@2(nh2)Yfy#C^Y1Eq|td-=`ZL7nfpXLAEHQZ`Uy1?nrdB%_ba6cY~)FXD9TJ5y7 zf95|O^}gJvo5^9+8%|zOt@*^MXP*75f~28r^Un$S?o4ItiHuRGWdC7|c01rXgn60T z97`7K0w(FK0b%*WC_mri<3_V;wN8yG-Jlw!-}&=u-P#qOwjAP(d?KKrd_DCaCS@# z)1>*L*)cLqYb32}cHAHK{%}$iTSVu68z$*>DD00WOZ?W^0ZwKp#5__mUph6C)}&)J zMgicxP_sNju|V;35em!0vWrxIa?sF zC1;jJYmk#Ln9`>gbV99N-yLLM1DX6sFq|S0GDAXS26R@l(eGaKqc@!{p8_KUy(pRL z*xm7G{Kf_P`B_n@HiJh6dxMh&KUnLk=@rFb6>5t6vh(Jz)|_FyWNr%nB5$Mr@H?tO zD2nq8ay|e?>dsm^l$@_7x>;jUW{=LL{c8Vo?17?7|$=?79r%%ty6Xbf6RUgk;sG^q>A+HQ?@o>Q~M?Aa>-=^KH~h<=AuO9v~r>+ zxCMobP@e4ai1uuYIde~%B*4cDiWP4DrZkBK#1GgArWe6*S)!XxB3fdof}aXk zq~873#XSu#PhC@5NUJ(NSxRVF>g^6M40!%YyQ|-<`Z~&(`8gP4u!AEnZHKFxSp zP)P-1){p@X48_i?N(&YB))1;fe@sg58diLa1Y?d+U!`@hFcL++iFmFSS6V2FUJ28t zk(N8P7>pN(DRPs~9ZIjPfj;5Doi))i4Z^?qS$^WNmKl?jl8V4^(70;lU4Ptd? z5=BC?S>dTgXY_RxLqZ0=W8Xrq; z*wjE2%x8j4k(c2X9 z&QK)fz?OH5do2g)K07zjy)(2psPj%J;rzQryLe|PLbSfua_`XfEKH?^1YpVnpHv+ z^^%RP^PoHtgTbmv(TtCd28Yadhb2|Z?Ywtoq2njC9;iU~Yvt^~)z28<57 zdX^)t;fomYj4WG&&$!y~F#xSRguU}WowQv{5RQ;m*wR>0S=Ss zY3y}!H2xj~{ow=dGzI`$R?JkEEtc4czU3-jcua-ng)Xh=H?|3kU(JZC&} zD@M;#+TaXEg!vB5<0w*Gfr@1qUV*% z97vHsw^ms>wjc@?PEt8hAg^3n_K_74y%r|b-uLqJZ&g0zd3-Ms=nC>90xkJ#CxLi9 zRK+0D?n{xmD$Hw+2N}jTnANITvQ5oXscDHp zkEr@!Rd_+k$Y%x;v`q zZ`@pcJE5<(1Rl}XQwZOWrxh9zpFN$>d?E-rSg_i!#dy_*0N#BL^dRNko%!Bo?l$85 z_}JzV$ZmG{PQMQeWs!;T6Oj*+X+r*m^FY287XuyGL=nspb_y0(_?NvR8zZs1X|f4# zn8A@*O7k9JY@bka$7?jF=73x>yt_a6OQ>Y^w5Xh1>NaM*#45fVgzonGqaId=3Kibd@Mj<{N zeu#MOW850rVf`g{Yz^A7uGqhZR5b`B`Gm8<&dSzShv2^arnU3{8zlNU)O38}j?jE~ z+~xi{v;ZnYYeM@_LfAGvb`nYt(rstF>Q0Fi&H-&x9WQ#4zrmwP&4)1RFeN5HwTqk@JX68FFYmIf1+=S6~yV&CQOjSOk zc#T&WXaCiEjq!p?2;lTvkKiP}M@Hn^uNf*&LybW3=(7yL*I%~OzvLr0?cDD`Zrat# z$am@9zFO6hya04A-Ko}0@(u#S6n+t{C>B~f9Au^-S-J!<%DT_8lDCmON6F$*m?9U} z_?k4b?oyUiHCdO2S(iCry7mqGYuoXbMB()~Zq!IDAk~U0V{|!t z)x|O~Rd2kj_Xjv#KUcU4U3+;uwdqE%lAQ_f%NyTC+6MYBZ-Hp+V9OlK zZ|C#a#X1mA4I#;qaL|Bz-#-)AEn zPrpKfEi`Tp6Li^hw9vRFOnX#m;X>oWFin1bH<7cWwYfAVOy`CyJa1l9a-<~o^7Zk3u~^gjav{yYuI{qgT`;Q-}I94 zXr>1p4Gy3U4=*bI)V9C#rLCpg{&VEN%Ul10srbYMfGL&x0h>L+Vi|Okh4?C-X;$L& z5^bAtc|waq)88*#86bUEdoQ8{_e%Yz5MQ6)3Im{EDm*_=wJ@yN3;ODnhApyHc)7>_ zBS=dTiB4U6)BRsG79F)?wPAyC-aC;Y{FXTBsP2-Y>KAa*-|vQ#fLms3cekUd4dfv< z4vBkBOe^6~m+%`Bn#>P)$J=hYUnvfY64PPgFO-Pp`#d{T+tM-Jg4bXD!EeoTDPtz& z)Di#O7aWW_D_%;hy`3P5&-j9}%bJSVd*h}6&Z~$?>q3Uyg~Ab&mYYoFs$qsQV$uyE z&<`}cs@P$=jH|^-FuHsiCdiu}G3lBx?O~;bOu8&gyF+QRbpiIzFfBt`mt(H+oPRw+I27q0hDg!Gm_y_QF|b)OdTUty{)0s;Yf6|-T|SuRO9 zIsF$;k0gnoE8dPeIzp2m*iXY6PSd-dvrcAWbTZhN@~74=vLk<^WZPoEpD)d=$X%)` z(xhu;P1I9(sAT#BcBq6~YV64k9fFOg>!?$^sdjza?zWf?kCbSMy{nek>$reHHp&-* zzZ+$F*Qd&nWssk+P4)k>R>+gb_i7fMdnaxnrtC9NsrF6I3fE;%ENLB9%}<2}O$xD` zOuag#@ma4=_68Kb9(KS2xc%MD!IStUrrAY>$_Y0!#`r(7appYlSgsu-!~ecZ;5;?A zg8+^UJCZ?*EguxaTJ<{hqbnqcG8tVVw@B*!uX?SS$!Gpa6a1Y^kt6PKuasax_UdX| zEb9!);S5aheg5FH!_14^45vR9xfzHc@V@%u@7`HDG}A}N%LoV-KGG@eL- z)X?#T!CD5C`1wjCbk{KsjMnGxh^)86#Me4^Gp;Oq+*poXcqf+d3Ws+h(fXy{iDlBB zCzfYNlzS&uNYkF!M+jzTpme0DYpQkl(s&A*zyA=9g_RrA2<_MD$zE+Q{)fs6+{pz%9KX$5N z&I*5u%(G1lPoLzTC|~SD(*|B^VqXjl%&#QORUrlD!FJD>3HF^n_lq6T7aEAfn#dY` z)ct-IGHcOukNf#lW|K21pAdRD4~M%0mTmVre_(|dh){sk;+A?9OX>Cu#}C`AXaC>( zo08R--{0#@Ke+yKnz?&_UtKGH_`mh{B?Cc!nGs^Th3hJ7t)sp=F zc8kYlXe$<~HApA3i9zkBwfOz;Z|$nNhDW`kOIQ1QxGwA<9BbYbhi;j}@100v7r5Uq znjZYZX%^FiZSyOOpTPhK%!OB|pXNWs`wh2Y}K<$27|t^vMBQ3F_dD7MtkhEFU�lWo$ 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⩔M>2^ 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�?PaA9QsAAgaZaj3hSPbV``M8%+#{6TPuT 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
x$b?ynfy!gfSAnNrsovffxt3pnI@<8qcd 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
WJv46R^X@gU<);QW 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%0AOA4;JrB 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

0c<~(09 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

u+=fwAN7NckN>p%f%P|j{lX^?{PZ=y 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 IHE9X_A5$rF7ytkO literal 0 HcmV?d00001