summaryrefslogtreecommitdiffstats
path: root/zpu/hdl
diff options
context:
space:
mode:
authoroharboe <oharboe>2008-01-02 21:52:27 +0000
committeroharboe <oharboe>2008-01-02 21:52:27 +0000
commitf2b214b0dff95d6bb79cbb5b6ff5ba9d90f655c9 (patch)
tree2f53ff8c86e2708f838d26e3edede86c111b309e /zpu/hdl
downloadzpu-f2b214b0dff95d6bb79cbb5b6ff5ba9d90f655c9.zip
zpu-f2b214b0dff95d6bb79cbb5b6ff5ba9d90f655c9.tar.gz
Initial import from www.ecosforge.net
Diffstat (limited to 'zpu/hdl')
-rw-r--r--zpu/hdl/example/helloworld.vhd12506
-rw-r--r--zpu/hdl/example/io.vhd97
-rw-r--r--zpu/hdl/example/log.txt15
-rw-r--r--zpu/hdl/example/sim_fpga_top.vhd179
-rw-r--r--zpu/hdl/example/simzpu.do29
-rw-r--r--zpu/hdl/example/zpu_config.vhd20
-rw-r--r--zpu/hdl/index.html47
-rw-r--r--zpu/hdl/wishbone/wishbone_pkg.vhd52
-rw-r--r--zpu/hdl/wishbone/zpu_system.vhd71
-rw-r--r--zpu/hdl/wishbone/zpu_wb_bridge.vhd49
-rw-r--r--zpu/hdl/zpu3/src/.cvsignore1
-rw-r--r--zpu/hdl/zpu3/src/build.xml114
-rw-r--r--zpu/hdl/zpu3/src/clocks.vhd246
-rw-r--r--zpu/hdl/zpu3/src/ddr_bridge.vhd203
-rw-r--r--zpu/hdl/zpu3/src/dmips_ram.vhd3824
-rw-r--r--zpu/hdl/zpu3/src/dualport_ram.vhd4996
-rw-r--r--zpu/hdl/zpu3/src/dualport_ram_synplicity.vhd5012
-rw-r--r--zpu/hdl/zpu3/src/helloworld_ram.vhd3345
-rw-r--r--zpu/hdl/zpu3/src/ic300.bitgen27
-rw-r--r--zpu/hdl/zpu3/src/ic300.lso1
-rw-r--r--zpu/hdl/zpu3/src/ic300.ucf146
-rw-r--r--zpu/hdl/zpu3/src/ic300.vhd144
-rw-r--r--zpu/hdl/zpu3/src/ic300_config.vhd20
-rw-r--r--zpu/hdl/zpu3/src/ic300pkg.vhd88
-rw-r--r--zpu/hdl/zpu3/src/io.vhd95
-rw-r--r--zpu/hdl/zpu3/src/log.txt156
-rw-r--r--zpu/hdl/zpu3/src/niltrace.vhd26
-rw-r--r--zpu/hdl/zpu3/src/sim_fpga_top.vhd127
-rw-r--r--zpu/hdl/zpu3/src/status.txt67
-rw-r--r--zpu/hdl/zpu3/src/testlut.vhd106
-rw-r--r--zpu/hdl/zpu3/src/timer.vhd157
-rw-r--r--zpu/hdl/zpu3/src/trace.vhd80
-rw-r--r--zpu/hdl/zpu3/src/txt_util.vhd586
-rw-r--r--zpu/hdl/zpu3/src/xilinx_dualport.vhd1482
-rw-r--r--zpu/hdl/zpu3/src/xmake.filelist5
-rw-r--r--zpu/hdl/zpu3/src/xmake.xst53
-rw-r--r--zpu/hdl/zpu3/src/zpu_config.vhd25
-rw-r--r--zpu/hdl/zpu3/src/zpu_pipelined.vhd852
-rw-r--r--zpu/hdl/zpu3/src/zpu_top.vhd421
-rw-r--r--zpu/hdl/zpu3/src/zpu_top_medium.vhd768
-rw-r--r--zpu/hdl/zpu3/src/zpuio.vhd180
-rw-r--r--zpu/hdl/zpu3/src/zpupkg.vhd130
-rw-r--r--zpu/hdl/zpu4/dummyfpgalib/arm7/src/arm7pkg.vhd31
-rw-r--r--zpu/hdl/zpu4/dummyfpgalib/arm7/src/arm7wb.vhd213
-rw-r--r--zpu/hdl/zpu4/dummyfpgalib/ddrsdram/simscripts/ddr_tb.do17
-rw-r--r--zpu/hdl/zpu4/dummyfpgalib/ddrsdram/simscripts/ddr_top.do111
-rw-r--r--zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_pkg.vhd90
-rw-r--r--zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_tb.vhd301
-rw-r--r--zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_top.vhd660
-rw-r--r--zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/mt46v16m16.vhd1320
-rw-r--r--zpu/hdl/zpu4/src/.cvsignore5
-rw-r--r--zpu/hdl/zpu4/src/bram.vhd3807
-rw-r--r--zpu/hdl/zpu4/src/bram_dmips.vhd3717
-rw-r--r--zpu/hdl/zpu4/src/build.xml114
-rw-r--r--zpu/hdl/zpu4/src/clocks.vhd246
-rw-r--r--zpu/hdl/zpu4/src/dmipssmalltrace.do26
-rw-r--r--zpu/hdl/zpu4/src/dmipstrace.do25
-rw-r--r--zpu/hdl/zpu4/src/dmipstraceintstack.do25
-rw-r--r--zpu/hdl/zpu4/src/dram_dmips.vhd3702
-rw-r--r--zpu/hdl/zpu4/src/dram_hello.vhd3214
-rw-r--r--zpu/hdl/zpu4/src/fastdmips.do19
-rw-r--r--zpu/hdl/zpu4/src/fastdmipsintstack.do19
-rw-r--r--zpu/hdl/zpu4/src/fastdmipssmall.do21
-rw-r--r--zpu/hdl/zpu4/src/fastsimzpu.do19
-rw-r--r--zpu/hdl/zpu4/src/ic300.bitgen27
-rw-r--r--zpu/hdl/zpu4/src/ic300.lso1
-rw-r--r--zpu/hdl/zpu4/src/ic300.ucf146
-rw-r--r--zpu/hdl/zpu4/src/ic300.vhd144
-rw-r--r--zpu/hdl/zpu4/src/ic300_config.vhd26
-rw-r--r--zpu/hdl/zpu4/src/ic300pkg.vhd88
-rw-r--r--zpu/hdl/zpu4/src/io.vhd92
-rw-r--r--zpu/hdl/zpu4/src/log.txt380
-rw-r--r--zpu/hdl/zpu4/src/niltrace.vhd26
-rw-r--r--zpu/hdl/zpu4/src/sim_fpga_top.vhd190
-rw-r--r--zpu/hdl/zpu4/src/simzpu.do23
-rw-r--r--zpu/hdl/zpu4/src/simzpu_intstack.do23
-rw-r--r--zpu/hdl/zpu4/src/status.txt109
-rw-r--r--zpu/hdl/zpu4/src/testlut.vhd114
-rw-r--r--zpu/hdl/zpu4/src/timer.vhd61
-rw-r--r--zpu/hdl/zpu4/src/trace.vhd84
-rw-r--r--zpu/hdl/zpu4/src/txt_util.vhd587
-rw-r--r--zpu/hdl/zpu4/src/xmake.filelist12
-rw-r--r--zpu/hdl/zpu4/src/xmake.filelist.bramsmall5
-rw-r--r--zpu/hdl/zpu4/src/xmake.xst53
-rw-r--r--zpu/hdl/zpu4/src/zpu_config.vhd16
-rw-r--r--zpu/hdl/zpu4/src/zpu_config_fastsim.vhd15
-rw-r--r--zpu/hdl/zpu4/src/zpu_config_trace.vhd15
-rw-r--r--zpu/hdl/zpu4/src/zpu_core.vhd900
-rw-r--r--zpu/hdl/zpu4/src/zpu_core_small.vhd433
-rw-r--r--zpu/hdl/zpu4/src/zpuio.vhd256
-rw-r--r--zpu/hdl/zpu4/src/zpuio_bram.vhd229
-rw-r--r--zpu/hdl/zpu4/src/zpupkg.vhd168
-rw-r--r--zpu/hdl/zpu4/test/dmips/build.sh3
-rw-r--r--zpu/hdl/zpu4/test/dmips/dmips.binbin0 -> 14612 bytes
-rw-r--r--zpu/hdl/zpu4/test/dmips/dmips.elfbin0 -> 89778 bytes
-rw-r--r--zpu/hdl/zpu4/test/dmips/dmips.ram3507
-rw-r--r--zpu/hdl/zpu4/test/hello/build.sh3
-rw-r--r--zpu/hdl/zpu4/test/hello/hello.binbin0 -> 12664 bytes
-rw-r--r--zpu/hdl/zpu4/test/hello/hello.c51
-rw-r--r--zpu/hdl/zpu4/test/hello/hello.elfbin0 -> 150455 bytes
-rw-r--r--zpu/hdl/zpu4/test/hello/hello.ram3165
101 files changed, 65202 insertions, 0 deletions
diff --git a/zpu/hdl/example/helloworld.vhd b/zpu/hdl/example/helloworld.vhd
new file mode 100644
index 0000000..9c99259
--- /dev/null
+++ b/zpu/hdl/example/helloworld.vhd
@@ -0,0 +1,12506 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+
+entity dualport_ram is
+port (clk : in std_logic;
+ memAWriteEnable : in std_logic;
+ memAAddr : in std_logic_vector(maxAddrBitBRAM downto minAddrBit);
+ memAWrite : in std_logic_vector(wordSize-1 downto 0);
+ memARead : out std_logic_vector(wordSize-1 downto 0);
+ memBWriteEnable : in std_logic;
+ memBAddr : in std_logic_vector(maxAddrBitBRAM downto minAddrBit);
+ memBWrite : in std_logic_vector(wordSize-1 downto 0);
+ memBRead : out std_logic_vector(wordSize-1 downto 0));
+end dualport_ram;
+
+architecture dualport_ram_arch of dualport_ram is
+
+
+type ram_type is array(0 to ((2**(maxAddrBitBRAM+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
+
+shared variable ram : ram_type :=
+(
+0 => x"0b0b0b0b",
+1 => x"82700b0b",
+2 => x"82f4e00c",
+3 => x"3a0b0b81",
+4 => x"e48c0400",
+5 => x"00000000",
+6 => x"00000000",
+7 => x"00000000",
+8 => x"80088408",
+9 => x"88080b0b",
+10 => x"81e4fd2d",
+11 => x"880c840c",
+12 => x"800c0400",
+13 => x"00000000",
+14 => x"00000000",
+15 => x"00000000",
+16 => x"71fd0608",
+17 => x"72830609",
+18 => x"81058205",
+19 => x"832b2a83",
+20 => x"ffff0652",
+21 => x"04000000",
+22 => x"00000000",
+23 => x"00000000",
+24 => x"71fd0608",
+25 => x"83ffff73",
+26 => x"83060981",
+27 => x"05820583",
+28 => x"2b2b0906",
+29 => x"7383ffff",
+30 => x"0b0b0b0b",
+31 => x"83a70400",
+32 => x"72098105",
+33 => x"72057373",
+34 => x"09060906",
+35 => x"73097306",
+36 => x"070a8106",
+37 => x"53510400",
+38 => x"00000000",
+39 => x"00000000",
+40 => x"72722473",
+41 => x"732e0753",
+42 => x"51040000",
+43 => x"00000000",
+44 => x"00000000",
+45 => x"00000000",
+46 => x"00000000",
+47 => x"00000000",
+48 => x"71737109",
+49 => x"71068106",
+50 => x"30720a10",
+51 => x"0a720a10",
+52 => x"0a31050a",
+53 => x"81065151",
+54 => x"53510400",
+55 => x"00000000",
+56 => x"72722673",
+57 => x"732e0753",
+58 => x"51040000",
+59 => x"00000000",
+60 => x"00000000",
+61 => x"00000000",
+62 => x"00000000",
+63 => x"00000000",
+64 => x"00000000",
+65 => x"00000000",
+66 => x"00000000",
+67 => x"00000000",
+68 => x"00000000",
+69 => x"00000000",
+70 => x"00000000",
+71 => x"00000000",
+72 => x"0b0b0b88",
+73 => x"c9040000",
+74 => x"00000000",
+75 => x"00000000",
+76 => x"00000000",
+77 => x"00000000",
+78 => x"00000000",
+79 => x"00000000",
+80 => x"720a722b",
+81 => x"0a535104",
+82 => x"00000000",
+83 => x"00000000",
+84 => x"00000000",
+85 => x"00000000",
+86 => x"00000000",
+87 => x"00000000",
+88 => x"72729f06",
+89 => x"0981050b",
+90 => x"0b0b88ac",
+91 => x"05040000",
+92 => x"00000000",
+93 => x"00000000",
+94 => x"00000000",
+95 => x"00000000",
+96 => x"72722aff",
+97 => x"739f062a",
+98 => x"0974090a",
+99 => x"8106ff05",
+100 => x"06075351",
+101 => x"04000000",
+102 => x"00000000",
+103 => x"00000000",
+104 => x"71715351",
+105 => x"020d0406",
+106 => x"73830609",
+107 => x"81058205",
+108 => x"832b0b2b",
+109 => x"0772fc06",
+110 => x"0c515104",
+111 => x"00000000",
+112 => x"72098105",
+113 => x"72050970",
+114 => x"81050906",
+115 => x"0a810653",
+116 => x"51040000",
+117 => x"00000000",
+118 => x"00000000",
+119 => x"00000000",
+120 => x"72098105",
+121 => x"72050970",
+122 => x"81050906",
+123 => x"0a098106",
+124 => x"53510400",
+125 => x"00000000",
+126 => x"00000000",
+127 => x"00000000",
+128 => x"71098105",
+129 => x"52040000",
+130 => x"00000000",
+131 => x"00000000",
+132 => x"00000000",
+133 => x"00000000",
+134 => x"00000000",
+135 => x"00000000",
+136 => x"72720981",
+137 => x"05055351",
+138 => x"04000000",
+139 => x"00000000",
+140 => x"00000000",
+141 => x"00000000",
+142 => x"00000000",
+143 => x"00000000",
+144 => x"72097206",
+145 => x"73730906",
+146 => x"07535104",
+147 => x"00000000",
+148 => x"00000000",
+149 => x"00000000",
+150 => x"00000000",
+151 => x"00000000",
+152 => x"71fc0608",
+153 => x"72830609",
+154 => x"81058305",
+155 => x"1010102a",
+156 => x"81ff0652",
+157 => x"04000000",
+158 => x"00000000",
+159 => x"00000000",
+160 => x"71fc0608",
+161 => x"0b0b82f4",
+162 => x"cc738306",
+163 => x"10100508",
+164 => x"060b0b0b",
+165 => x"88af0400",
+166 => x"00000000",
+167 => x"00000000",
+168 => x"80088408",
+169 => x"88087575",
+170 => x"0b0b0b8e",
+171 => x"c42d5050",
+172 => x"80085688",
+173 => x"0c840c80",
+174 => x"0c510400",
+175 => x"00000000",
+176 => x"80088408",
+177 => x"88087575",
+178 => x"0b0b0b90",
+179 => x"8d2d5050",
+180 => x"80085688",
+181 => x"0c840c80",
+182 => x"0c510400",
+183 => x"00000000",
+184 => x"72097081",
+185 => x"0509060a",
+186 => x"8106ff05",
+187 => x"70547106",
+188 => x"73097274",
+189 => x"05ff0506",
+190 => x"07515151",
+191 => x"04000000",
+192 => x"72097081",
+193 => x"0509060a",
+194 => x"098106ff",
+195 => x"05705471",
+196 => x"06730972",
+197 => x"7405ff05",
+198 => x"06075151",
+199 => x"51040000",
+200 => x"05ff0504",
+201 => x"00000000",
+202 => x"00000000",
+203 => x"00000000",
+204 => x"00000000",
+205 => x"00000000",
+206 => x"00000000",
+207 => x"00000000",
+208 => x"810b0b0b",
+209 => x"82f4dc0c",
+210 => x"51040000",
+211 => x"00000000",
+212 => x"00000000",
+213 => x"00000000",
+214 => x"00000000",
+215 => x"00000000",
+216 => x"71810552",
+217 => x"04000000",
+218 => x"00000000",
+219 => x"00000000",
+220 => x"00000000",
+221 => x"00000000",
+222 => x"00000000",
+223 => x"00000000",
+224 => x"00000000",
+225 => x"00000000",
+226 => x"00000000",
+227 => x"00000000",
+228 => x"00000000",
+229 => x"00000000",
+230 => x"00000000",
+231 => x"00000000",
+232 => x"02840572",
+233 => x"10100552",
+234 => x"04000000",
+235 => x"00000000",
+236 => x"00000000",
+237 => x"00000000",
+238 => x"00000000",
+239 => x"00000000",
+240 => x"00000000",
+241 => x"00000000",
+242 => x"00000000",
+243 => x"00000000",
+244 => x"00000000",
+245 => x"00000000",
+246 => x"00000000",
+247 => x"00000000",
+248 => x"717105ff",
+249 => x"05715351",
+250 => x"020d0400",
+251 => x"00000000",
+252 => x"00000000",
+253 => x"00000000",
+254 => x"00000000",
+255 => x"00000000",
+256 => x"0b0b0b83",
+257 => x"e93f0b0b",
+258 => x"82e4cc3f",
+259 => x"04101010",
+260 => x"10101010",
+261 => x"10101010",
+262 => x"10101010",
+263 => x"10101010",
+264 => x"10101010",
+265 => x"10101010",
+266 => x"10101010",
+267 => x"53510473",
+268 => x"81ff0673",
+269 => x"83060981",
+270 => x"05830510",
+271 => x"10102b07",
+272 => x"72fc060c",
+273 => x"5151043c",
+274 => x"04727280",
+275 => x"728106ff",
+276 => x"05097206",
+277 => x"05711052",
+278 => x"720a100a",
+279 => x"5372ed38",
+280 => x"51515351",
+281 => x"04fe3d0d",
+282 => x"0b0b8384",
+283 => x"e8085384",
+284 => x"13087088",
+285 => x"2a708106",
+286 => x"51525270",
+287 => x"802e0b0b",
+288 => x"0b0bec38",
+289 => x"7181ff06",
+290 => x"800c843d",
+291 => x"0d04ff3d",
+292 => x"0d0b0b83",
+293 => x"84e80852",
+294 => x"71087088",
+295 => x"2a813270",
+296 => x"81065151",
+297 => x"51700b0b",
+298 => x"0b0bed38",
+299 => x"73720c83",
+300 => x"3d0d040b",
+301 => x"0b82f4dc",
+302 => x"08802e0b",
+303 => x"0b0b0bae",
+304 => x"380b0b82",
+305 => x"f4e00882",
+306 => x"2e0b0b0b",
+307 => x"80c53883",
+308 => x"80800b0b",
+309 => x"0b8384e8",
+310 => x"0c82a080",
+311 => x"0b0b0b83",
+312 => x"84ec0c82",
+313 => x"90800b0b",
+314 => x"0b8384f0",
+315 => x"0c04f880",
+316 => x"8080a40b",
+317 => x"0b0b8384",
+318 => x"e80cf880",
+319 => x"8082800b",
+320 => x"0b0b8384",
+321 => x"ec0cf880",
+322 => x"8084800b",
+323 => x"0b0b8384",
+324 => x"f00c0480",
+325 => x"c0a8808c",
+326 => x"0b0b0b83",
+327 => x"84e80c80",
+328 => x"c0a88094",
+329 => x"0b0b0b83",
+330 => x"84ec0c0b",
+331 => x"0b82ed90",
+332 => x"0b0b0b83",
+333 => x"84f00c04",
+334 => x"f23d0d60",
+335 => x"0b0b8384",
+336 => x"ec08565d",
+337 => x"82750c80",
+338 => x"59805a80",
+339 => x"0b8f3d5d",
+340 => x"5b7a1010",
+341 => x"15700871",
+342 => x"08719f2c",
+343 => x"7e852b58",
+344 => x"55557d53",
+345 => x"59570b0b",
+346 => x"0b81d13f",
+347 => x"7d7f7a72",
+348 => x"077c7207",
+349 => x"71716081",
+350 => x"05415f5d",
+351 => x"5b595755",
+352 => x"817b270b",
+353 => x"0b0b0b8f",
+354 => x"38767d0c",
+355 => x"77841e0c",
+356 => x"7c800c90",
+357 => x"3d0d040b",
+358 => x"0b8384ec",
+359 => x"08550b0b",
+360 => x"0bffae39",
+361 => x"70700b0b",
+362 => x"8384f433",
+363 => x"51700b0b",
+364 => x"0b0bb738",
+365 => x"0b0b82f4",
+366 => x"e8087008",
+367 => x"52527080",
+368 => x"2e0b0b0b",
+369 => x"0b9c3884",
+370 => x"120b0b82",
+371 => x"f4e80c70",
+372 => x"2d0b0b82",
+373 => x"f4e80870",
+374 => x"08525270",
+375 => x"0b0b0b0b",
+376 => x"e638810b",
+377 => x"0b0b8384",
+378 => x"f4345050",
+379 => x"0404700b",
+380 => x"0b8384e4",
+381 => x"08802e0b",
+382 => x"0b0b0b92",
+383 => x"380b0b0b",
+384 => x"0b800b80",
+385 => x"2e098106",
+386 => x"0b0b0b0b",
+387 => x"83385004",
+388 => x"0b0b8384",
+389 => x"e4510b0b",
+390 => x"0bf3e53f",
+391 => x"5004048c",
+392 => x"08028c0c",
+393 => x"ff3d0d0b",
+394 => x"0b82ed94",
+395 => x"510b0b0b",
+396 => x"88ab3f71",
+397 => x"800c833d",
+398 => x"0d8c0c04",
+399 => x"8c08028c",
+400 => x"0cf53d0d",
+401 => x"8c089405",
+402 => x"080b0b0b",
+403 => x"0ba0388c",
+404 => x"088c0508",
+405 => x"8c089005",
+406 => x"088c0888",
+407 => x"05085856",
+408 => x"5473760c",
+409 => x"7484170c",
+410 => x"0b0b0b81",
+411 => x"ca39800b",
+412 => x"8c08f005",
+413 => x"0c800b8c",
+414 => x"08f4050c",
+415 => x"8c088c05",
+416 => x"088c0890",
+417 => x"05085654",
+418 => x"738c08f0",
+419 => x"050c748c",
+420 => x"08f4050c",
+421 => x"8c08f805",
+422 => x"8c08f005",
+423 => x"56568870",
+424 => x"54755376",
+425 => x"52540b0b",
+426 => x"0b85e03f",
+427 => x"a00b8c08",
+428 => x"94050831",
+429 => x"8c08ec05",
+430 => x"0c8c08ec",
+431 => x"05088024",
+432 => x"0b0b0b0b",
+433 => x"a138800b",
+434 => x"8c08f405",
+435 => x"0c8c08ec",
+436 => x"0508308c",
+437 => x"08fc0508",
+438 => x"712b8c08",
+439 => x"f0050c54",
+440 => x"0b0b0b0b",
+441 => x"b9398c08",
+442 => x"fc05088c",
+443 => x"08ec0508",
+444 => x"2a8c08e8",
+445 => x"050c8c08",
+446 => x"fc05088c",
+447 => x"08940508",
+448 => x"2b8c08f4",
+449 => x"050c8c08",
+450 => x"f805088c",
+451 => x"08940508",
+452 => x"2b708c08",
+453 => x"e8050807",
+454 => x"8c08f005",
+455 => x"0c548c08",
+456 => x"f005088c",
+457 => x"08f40508",
+458 => x"8c088805",
+459 => x"08585654",
+460 => x"73760c74",
+461 => x"84170c8c",
+462 => x"08880508",
+463 => x"800c8d3d",
+464 => x"0d8c0c04",
+465 => x"8c08028c",
+466 => x"0cf93d0d",
+467 => x"800b8c08",
+468 => x"fc050c8c",
+469 => x"08880508",
+470 => x"80250b0b",
+471 => x"0b0baf38",
+472 => x"8c088805",
+473 => x"08308c08",
+474 => x"88050c80",
+475 => x"0b8c08f4",
+476 => x"050c8c08",
+477 => x"fc05080b",
+478 => x"0b0b0b88",
+479 => x"38810b8c",
+480 => x"08f4050c",
+481 => x"8c08f405",
+482 => x"088c08fc",
+483 => x"050c8c08",
+484 => x"8c050880",
+485 => x"250b0b0b",
+486 => x"0baf388c",
+487 => x"088c0508",
+488 => x"308c088c",
+489 => x"050c800b",
+490 => x"8c08f005",
+491 => x"0c8c08fc",
+492 => x"05080b0b",
+493 => x"0b0b8838",
+494 => x"810b8c08",
+495 => x"f0050c8c",
+496 => x"08f00508",
+497 => x"8c08fc05",
+498 => x"0c80538c",
+499 => x"088c0508",
+500 => x"528c0888",
+501 => x"0508510b",
+502 => x"0b0b81bb",
+503 => x"3f800870",
+504 => x"8c08f805",
+505 => x"0c548c08",
+506 => x"fc050880",
+507 => x"2e0b0b0b",
+508 => x"0b8c388c",
+509 => x"08f80508",
+510 => x"308c08f8",
+511 => x"050c8c08",
+512 => x"f8050870",
+513 => x"800c5489",
+514 => x"3d0d8c0c",
+515 => x"048c0802",
+516 => x"8c0cfb3d",
+517 => x"0d800b8c",
+518 => x"08fc050c",
+519 => x"8c088805",
+520 => x"0880250b",
+521 => x"0b0b0b93",
+522 => x"388c0888",
+523 => x"0508308c",
+524 => x"0888050c",
+525 => x"810b8c08",
+526 => x"fc050c8c",
+527 => x"088c0508",
+528 => x"80250b0b",
+529 => x"0b0b8c38",
+530 => x"8c088c05",
+531 => x"08308c08",
+532 => x"8c050c81",
+533 => x"538c088c",
+534 => x"0508528c",
+535 => x"08880508",
+536 => x"510b0b0b",
+537 => x"0bb13f80",
+538 => x"08708c08",
+539 => x"f8050c54",
+540 => x"8c08fc05",
+541 => x"08802e0b",
+542 => x"0b0b0b8c",
+543 => x"388c08f8",
+544 => x"0508308c",
+545 => x"08f8050c",
+546 => x"8c08f805",
+547 => x"0870800c",
+548 => x"54873d0d",
+549 => x"8c0c048c",
+550 => x"08028c0c",
+551 => x"70707070",
+552 => x"810b8c08",
+553 => x"fc050c80",
+554 => x"0b8c08f8",
+555 => x"050c8c08",
+556 => x"8c05088c",
+557 => x"08880508",
+558 => x"270b0b0b",
+559 => x"0bb8388c",
+560 => x"08fc0508",
+561 => x"802e0b0b",
+562 => x"0b0bab38",
+563 => x"800b8c08",
+564 => x"8c050824",
+565 => x"0b0b0b0b",
+566 => x"9d388c08",
+567 => x"8c050810",
+568 => x"8c088c05",
+569 => x"0c8c08fc",
+570 => x"0508108c",
+571 => x"08fc050c",
+572 => x"0b0b0bff",
+573 => x"b9398c08",
+574 => x"fc050880",
+575 => x"2e0b0b0b",
+576 => x"80d0388c",
+577 => x"088c0508",
+578 => x"8c088805",
+579 => x"08260b0b",
+580 => x"0b0ba138",
+581 => x"8c088805",
+582 => x"088c088c",
+583 => x"0508318c",
+584 => x"0888050c",
+585 => x"8c08f805",
+586 => x"088c08fc",
+587 => x"0508078c",
+588 => x"08f8050c",
+589 => x"8c08fc05",
+590 => x"08812a8c",
+591 => x"08fc050c",
+592 => x"8c088c05",
+593 => x"08812a8c",
+594 => x"088c050c",
+595 => x"0b0b0bff",
+596 => x"a5398c08",
+597 => x"90050880",
+598 => x"2e0b0b0b",
+599 => x"0b93388c",
+600 => x"08880508",
+601 => x"708c08f4",
+602 => x"050c510b",
+603 => x"0b0b0b8d",
+604 => x"398c08f8",
+605 => x"0508708c",
+606 => x"08f4050c",
+607 => x"518c08f4",
+608 => x"0508800c",
+609 => x"50505050",
+610 => x"8c0c04fc",
+611 => x"3d0d7670",
+612 => x"797b5555",
+613 => x"55558f72",
+614 => x"270b0b0b",
+615 => x"0b903872",
+616 => x"75078306",
+617 => x"5170802e",
+618 => x"0b0b0b0b",
+619 => x"af38ff12",
+620 => x"5271ff2e",
+621 => x"0b0b0b0b",
+622 => x"9c387270",
+623 => x"81055433",
+624 => x"74708105",
+625 => x"5634ff12",
+626 => x"5271ff2e",
+627 => x"0981060b",
+628 => x"0b0b0be6",
+629 => x"3874800c",
+630 => x"863d0d04",
+631 => x"74517270",
+632 => x"84055408",
+633 => x"71708405",
+634 => x"530c7270",
+635 => x"84055408",
+636 => x"71708405",
+637 => x"530c7270",
+638 => x"84055408",
+639 => x"71708405",
+640 => x"530c7270",
+641 => x"84055408",
+642 => x"71708405",
+643 => x"530cf012",
+644 => x"52718f26",
+645 => x"0b0b0b0b",
+646 => x"c5388372",
+647 => x"270b0b0b",
+648 => x"0b993872",
+649 => x"70840554",
+650 => x"08717084",
+651 => x"05530cfc",
+652 => x"12527183",
+653 => x"260b0b0b",
+654 => x"0be93870",
+655 => x"540b0b0b",
+656 => x"feec39fb",
+657 => x"3d0d7789",
+658 => x"3d880555",
+659 => x"79548811",
+660 => x"0853510b",
+661 => x"0b0b80e3",
+662 => x"3f873d0d",
+663 => x"04fc3d0d",
+664 => x"873d7070",
+665 => x"84055208",
+666 => x"56537452",
+667 => x"0b0b82f4",
+668 => x"ec088811",
+669 => x"0852540b",
+670 => x"0b0bb4a2",
+671 => x"3f863d0d",
+672 => x"04707070",
+673 => x"70768811",
+674 => x"08545472",
+675 => x"0b0b0b0b",
+676 => x"8d387284",
+677 => x"150c7280",
+678 => x"0c505050",
+679 => x"50047352",
+680 => x"75510b0b",
+681 => x"80fcfe3f",
+682 => x"800b8815",
+683 => x"0c800b84",
+684 => x"150c8008",
+685 => x"800c5050",
+686 => x"505004fc",
+687 => x"c43d0d83",
+688 => x"bf3d0883",
+689 => x"c13d0883",
+690 => x"c33d0883",
+691 => x"c53d0848",
+692 => x"5e484b0b",
+693 => x"0b8186f6",
+694 => x"3f800808",
+695 => x"4c800b83",
+696 => x"bb3d0c80",
+697 => x"0b83bc3d",
+698 => x"0c807071",
+699 => x"698c0522",
+700 => x"70832a81",
+701 => x"32708106",
+702 => x"515d5d4c",
+703 => x"4f4d786d",
+704 => x"2e098106",
+705 => x"0b0b0b0b",
+706 => x"90386690",
+707 => x"05086d2e",
+708 => x"0981060b",
+709 => x"0b0b0b98",
+710 => x"3866510b",
+711 => x"0b0bbfc8",
+712 => x"3fff5980",
+713 => x"080b0b0b",
+714 => x"82893866",
+715 => x"8c05225a",
+716 => x"799a0659",
+717 => x"788a2e0b",
+718 => x"0b0b80ce",
+719 => x"387b83a6",
+720 => x"3d707183",
+721 => x"b93d0c5e",
+722 => x"475d800b",
+723 => x"83b83d0c",
+724 => x"800b83b7",
+725 => x"3d0c8049",
+726 => x"7c5e807d",
+727 => x"337081ff",
+728 => x"065b5b5b",
+729 => x"787b2e0b",
+730 => x"0b0b0b83",
+731 => x"38815b78",
+732 => x"a52e0b0b",
+733 => x"0b81c438",
+734 => x"7a802e0b",
+735 => x"0b0b81bb",
+736 => x"38811d5d",
+737 => x"0b0b0b0b",
+738 => x"d139668e",
+739 => x"05227090",
+740 => x"2b5a5b80",
+741 => x"79240b0b",
+742 => x"0bffa238",
+743 => x"79fd0659",
+744 => x"7882ba3d",
+745 => x"237a0284",
+746 => x"0589e205",
+747 => x"23669c05",
+748 => x"0882be3d",
+749 => x"0c66a405",
+750 => x"0882c03d",
+751 => x"0cb63d70",
+752 => x"82b83d0c",
+753 => x"82bb3d0c",
+754 => x"88800b82",
+755 => x"b93d0c88",
+756 => x"800b82bc",
+757 => x"3d0c800b",
+758 => x"82bd3d0c",
+759 => x"64537b52",
+760 => x"82b63d70",
+761 => x"52590b0b",
+762 => x"0bb1b33f",
+763 => x"80085a80",
+764 => x"0b800824",
+765 => x"0b0b0b0b",
+766 => x"95387851",
+767 => x"0b0b80ec",
+768 => x"bf3f8008",
+769 => x"802e0b0b",
+770 => x"0b0b8338",
+771 => x"ff5a82b9",
+772 => x"3d227086",
+773 => x"2a708106",
+774 => x"515a5b78",
+775 => x"802e0b0b",
+776 => x"0b0b8e38",
+777 => x"668c0522",
+778 => x"80c00759",
+779 => x"78678c05",
+780 => x"23795978",
+781 => x"800c83be",
+782 => x"3d0d047c",
+783 => x"7e315b7a",
+784 => x"802e0b0b",
+785 => x"0b0bb138",
+786 => x"7d7c0c7a",
+787 => x"841d0c83",
+788 => x"b73d081b",
+789 => x"83b83d0c",
+790 => x"881c83b7",
+791 => x"3d088111",
+792 => x"83b93d0c",
+793 => x"8111515a",
+794 => x"5c788724",
+795 => x"0b0b0b80",
+796 => x"cb38681b",
+797 => x"7d335b49",
+798 => x"7981ff06",
+799 => x"5978802e",
+800 => x"0b0b0bae",
+801 => x"df38811d",
+802 => x"5d807071",
+803 => x"4a4543ff",
+804 => x"416283be",
+805 => x"3d347c33",
+806 => x"5a7981ff",
+807 => x"06811e5e",
+808 => x"407fe005",
+809 => x"597880d8",
+810 => x"260b0b0b",
+811 => x"88a83878",
+812 => x"10100b0b",
+813 => x"82edc405",
+814 => x"59780804",
+815 => x"83be3ddc",
+816 => x"05526651",
+817 => x"0b0b0bfb",
+818 => x"b83f8008",
+819 => x"0b0b0b8b",
+820 => x"b3386569",
+821 => x"1c7e335c",
+822 => x"4a5c0b0b",
+823 => x"0bff9939",
+824 => x"62900743",
+825 => x"62842a70",
+826 => x"81065159",
+827 => x"780b0b0b",
+828 => x"9e873862",
+829 => x"862a7081",
+830 => x"06515978",
+831 => x"802e0b0b",
+832 => x"0b9df638",
+833 => x"64658405",
+834 => x"8212225d",
+835 => x"4659815f",
+836 => x"800b83be",
+837 => x"3d346044",
+838 => x"8061240b",
+839 => x"0b0b0b86",
+840 => x"3862feff",
+841 => x"0643657b",
+842 => x"30707d07",
+843 => x"9f2a6630",
+844 => x"7068079f",
+845 => x"2a720752",
+846 => x"5c515b5e",
+847 => x"79802e0b",
+848 => x"0b0b98fd",
+849 => x"387e812e",
+850 => x"0b0b0b8c",
+851 => x"8438817f",
+852 => x"250b0b0b",
+853 => x"a0eb387e",
+854 => x"822e0b0b",
+855 => x"0b8cc038",
+856 => x"0b0b82f0",
+857 => x"a85e7d51",
+858 => x"0b0b81c0",
+859 => x"ae3f8008",
+860 => x"5f7e427e",
+861 => x"64250b0b",
+862 => x"0b0b8338",
+863 => x"634283bd",
+864 => x"3d337081",
+865 => x"ff065a5b",
+866 => x"78802e0b",
+867 => x"0b0b9488",
+868 => x"38618105",
+869 => x"42628184",
+870 => x"0641600b",
+871 => x"0b0b8186",
+872 => x"38676231",
+873 => x"5a807a25",
+874 => x"0b0b0b80",
+875 => x"f938907a",
+876 => x"250b0b0b",
+877 => x"0bbd380b",
+878 => x"0b82eda4",
+879 => x"7c0c900b",
+880 => x"841d0c83",
+881 => x"b73d0890",
+882 => x"0583b83d",
+883 => x"0c881c83",
+884 => x"b73d0881",
+885 => x"1183b93d",
+886 => x"0c811151",
+887 => x"5a5c7887",
+888 => x"240b0b0b",
+889 => x"868e38f0",
+890 => x"1a5a7990",
+891 => x"240b0b0b",
+892 => x"0bc5380b",
+893 => x"0b82eda4",
+894 => x"7c0c7984",
+895 => x"1d0c83b7",
+896 => x"3d081a83",
+897 => x"b83d0c88",
+898 => x"1c83b73d",
+899 => x"08811183",
+900 => x"b93d0c81",
+901 => x"11515a5c",
+902 => x"7887240b",
+903 => x"0b0b96fe",
+904 => x"3883bd3d",
+905 => x"335b7a81",
+906 => x"ff065978",
+907 => x"802e0b0b",
+908 => x"0b938138",
+909 => x"83be3dfc",
+910 => x"057c0c81",
+911 => x"0b841d0c",
+912 => x"83b73d08",
+913 => x"810583b8",
+914 => x"3d0c881c",
+915 => x"83b73d08",
+916 => x"811183b9",
+917 => x"3d0c8111",
+918 => x"515a5c78",
+919 => x"87240b0b",
+920 => x"0b879f38",
+921 => x"6081802e",
+922 => x"0b0b0b85",
+923 => x"c938637f",
+924 => x"315a807a",
+925 => x"250b0b0b",
+926 => x"818c3890",
+927 => x"7a250b0b",
+928 => x"0b0bbd38",
+929 => x"0b0b82ed",
+930 => x"b47c0c90",
+931 => x"0b841d0c",
+932 => x"83b73d08",
+933 => x"900583b8",
+934 => x"3d0c881c",
+935 => x"83b73d08",
+936 => x"811183b9",
+937 => x"3d0c8111",
+938 => x"515a5c78",
+939 => x"87240b0b",
+940 => x"0b84e238",
+941 => x"f01a5a79",
+942 => x"90240b0b",
+943 => x"0b0bc538",
+944 => x"0b0b82ed",
+945 => x"b47c0c79",
+946 => x"841d0c83",
+947 => x"b73d081a",
+948 => x"83b83d0c",
+949 => x"881c83b7",
+950 => x"3d088111",
+951 => x"83b93d0c",
+952 => x"8111515a",
+953 => x"5c877925",
+954 => x"0b0b0b0b",
+955 => x"993883be",
+956 => x"3ddc0552",
+957 => x"66510b0b",
+958 => x"0bf7863f",
+959 => x"80080b0b",
+960 => x"0b878138",
+961 => x"655c6288",
+962 => x"2a813270",
+963 => x"81065159",
+964 => x"78802e0b",
+965 => x"0b0b91f3",
+966 => x"387d7c0c",
+967 => x"7e841d0c",
+968 => x"83b73d08",
+969 => x"1f83b83d",
+970 => x"0c881c83",
+971 => x"b73d0881",
+972 => x"1183b93d",
+973 => x"0c811151",
+974 => x"5a5c7887",
+975 => x"240b0b0b",
+976 => x"868c3862",
+977 => x"822a7081",
+978 => x"06515978",
+979 => x"802e0b0b",
+980 => x"0b819438",
+981 => x"6762315a",
+982 => x"807a250b",
+983 => x"0b0b8187",
+984 => x"38907a25",
+985 => x"0b0b0b0b",
+986 => x"bd380b0b",
+987 => x"82eda47c",
+988 => x"0c900b84",
+989 => x"1d0c83b7",
+990 => x"3d089005",
+991 => x"83b83d0c",
+992 => x"881c83b7",
+993 => x"3d088111",
+994 => x"83b93d0c",
+995 => x"8111515a",
+996 => x"5c788724",
+997 => x"0b0b0b85",
+998 => x"9438f01a",
+999 => x"5a799024",
+1000 => x"0b0b0b0b",
+1001 => x"c5380b0b",
+1002 => x"82eda47c",
+1003 => x"0c79841d",
+1004 => x"0c83b73d",
+1005 => x"081a83b8",
+1006 => x"3d0c83b6",
+1007 => x"3d088111",
+1008 => x"83b83d0c",
+1009 => x"81115159",
+1010 => x"8779250b",
+1011 => x"0b0b0b97",
+1012 => x"3883be3d",
+1013 => x"dc055266",
+1014 => x"510b0b0b",
+1015 => x"f5a33f80",
+1016 => x"080b0b0b",
+1017 => x"859e3861",
+1018 => x"59616825",
+1019 => x"0b0b0b0b",
+1020 => x"83386759",
+1021 => x"68194983",
+1022 => x"b73d080b",
+1023 => x"0b0b84ec",
+1024 => x"38800b83",
+1025 => x"b73d0c65",
+1026 => x"5c69802e",
+1027 => x"0b0b0bf6",
+1028 => x"c7386951",
+1029 => x"0b0b80ff",
+1030 => x"953f807d",
+1031 => x"5f4a0b0b",
+1032 => x"0bf6b739",
+1033 => x"62900743",
+1034 => x"62842a70",
+1035 => x"81065159",
+1036 => x"780b0b0b",
+1037 => x"97d43862",
+1038 => x"862a7081",
+1039 => x"06515978",
+1040 => x"802e0b0b",
+1041 => x"0b97c338",
+1042 => x"64658405",
+1043 => x"8212225d",
+1044 => x"4659805f",
+1045 => x"800b83be",
+1046 => x"3d340b0b",
+1047 => x"0bf9b739",
+1048 => x"62900743",
+1049 => x"62842a70",
+1050 => x"81065159",
+1051 => x"780b0b0b",
+1052 => x"97a93862",
+1053 => x"862a7081",
+1054 => x"06515978",
+1055 => x"802e0b0b",
+1056 => x"0b979838",
+1057 => x"64658405",
+1058 => x"7108902b",
+1059 => x"70902c51",
+1060 => x"5d465980",
+1061 => x"7b240b0b",
+1062 => x"0b8bdf38",
+1063 => x"815f0b0b",
+1064 => x"0bf8f339",
+1065 => x"64658405",
+1066 => x"71084a46",
+1067 => x"59678025",
+1068 => x"0b0b0bf7",
+1069 => x"e1386730",
+1070 => x"48628407",
+1071 => x"7d335b43",
+1072 => x"0b0b0bf7",
+1073 => x"d439811d",
+1074 => x"5d629007",
+1075 => x"7d335b43",
+1076 => x"0b0b0bf7",
+1077 => x"c4397f80",
+1078 => x"2e0b0b0b",
+1079 => x"a6863882",
+1080 => x"ce3d5e7f",
+1081 => x"7e34815f",
+1082 => x"800b83be",
+1083 => x"3d340b0b",
+1084 => x"0bf8fe39",
+1085 => x"83be3ddc",
+1086 => x"05526651",
+1087 => x"0b0b0bf3",
+1088 => x"803f8008",
+1089 => x"0b0b0b82",
+1090 => x"fb3865f0",
+1091 => x"1b5b5c0b",
+1092 => x"0b0bf9d6",
+1093 => x"3983be3d",
+1094 => x"dc055266",
+1095 => x"510b0b0b",
+1096 => x"f2df3f80",
+1097 => x"080b0b0b",
+1098 => x"82da3865",
+1099 => x"f01b5b5c",
+1100 => x"0b0b0bfb",
+1101 => x"82396762",
+1102 => x"315a807a",
+1103 => x"250b0b0b",
+1104 => x"faac3890",
+1105 => x"7a250b0b",
+1106 => x"0b0bbd38",
+1107 => x"0b0b82ed",
+1108 => x"b47c0c90",
+1109 => x"0b841d0c",
+1110 => x"83b73d08",
+1111 => x"900583b8",
+1112 => x"3d0c881c",
+1113 => x"83b73d08",
+1114 => x"811183b9",
+1115 => x"3d0c8111",
+1116 => x"515a5c78",
+1117 => x"87240b0b",
+1118 => x"0b80e638",
+1119 => x"f01a5a79",
+1120 => x"90240b0b",
+1121 => x"0b0bc538",
+1122 => x"0b0b82ed",
+1123 => x"b47c0c79",
+1124 => x"841d0c83",
+1125 => x"b73d081a",
+1126 => x"83b83d0c",
+1127 => x"881c83b7",
+1128 => x"3d088111",
+1129 => x"83b93d0c",
+1130 => x"8111515a",
+1131 => x"5c877925",
+1132 => x"0b0b0bf9",
+1133 => x"b93883be",
+1134 => x"3ddc0552",
+1135 => x"66510b0b",
+1136 => x"0bf1be3f",
+1137 => x"80080b0b",
+1138 => x"0b81b938",
+1139 => x"65646031",
+1140 => x"5b5c7980",
+1141 => x"240b0b0b",
+1142 => x"f9a1380b",
+1143 => x"0b0bfaa6",
+1144 => x"3983be3d",
+1145 => x"dc055266",
+1146 => x"510b0b0b",
+1147 => x"f1933f80",
+1148 => x"080b0b0b",
+1149 => x"818e3865",
+1150 => x"f01b5b5c",
+1151 => x"0b0b0bfe",
+1152 => x"fe3983be",
+1153 => x"3ddc0552",
+1154 => x"66510b0b",
+1155 => x"0bf0f23f",
+1156 => x"80080b0b",
+1157 => x"0b80ed38",
+1158 => x"655c6081",
+1159 => x"802e0981",
+1160 => x"060b0b0b",
+1161 => x"f8c8380b",
+1162 => x"0b0bfe8a",
+1163 => x"3983be3d",
+1164 => x"dc055266",
+1165 => x"510b0b0b",
+1166 => x"f0c73f80",
+1167 => x"080b0b0b",
+1168 => x"80c23865",
+1169 => x"f01b5b5c",
+1170 => x"0b0b0bfa",
+1171 => x"d03983be",
+1172 => x"3ddc0552",
+1173 => x"66510b0b",
+1174 => x"0bf0a63f",
+1175 => x"80080b0b",
+1176 => x"0b0ba138",
+1177 => x"655c0b0b",
+1178 => x"0bf9d839",
+1179 => x"83be3ddc",
+1180 => x"05526651",
+1181 => x"0b0b0bf0",
+1182 => x"883f8008",
+1183 => x"802e0b0b",
+1184 => x"0bfafe38",
+1185 => x"69802e0b",
+1186 => x"0b0b0b89",
+1187 => x"3869510b",
+1188 => x"0b80fa9a",
+1189 => x"3f668c05",
+1190 => x"2270862a",
+1191 => x"7081066b",
+1192 => x"5d515a47",
+1193 => x"78802e0b",
+1194 => x"0b0bf385",
+1195 => x"38ff590b",
+1196 => x"0b0bf2ff",
+1197 => x"397c3370",
+1198 => x"81ff065a",
+1199 => x"5a7880ec",
+1200 => x"2e0b0b0b",
+1201 => x"fc803862",
+1202 => x"90077a81",
+1203 => x"ff06811f",
+1204 => x"5f41430b",
+1205 => x"0b0bf3c9",
+1206 => x"397c7081",
+1207 => x"055e3340",
+1208 => x"7faa2e0b",
+1209 => x"0b0ba2f9",
+1210 => x"388060d0",
+1211 => x"0571435a",
+1212 => x"5a788926",
+1213 => x"0b0b0bf3",
+1214 => x"a8387910",
+1215 => x"10107a10",
+1216 => x"056005d0",
+1217 => x"057d7081",
+1218 => x"055f33d0",
+1219 => x"115b415a",
+1220 => x"8979270b",
+1221 => x"0b0b0be2",
+1222 => x"38794179",
+1223 => x"ff250b0b",
+1224 => x"0bf2fe38",
+1225 => x"ff410b0b",
+1226 => x"0bf2f639",
+1227 => x"64658405",
+1228 => x"71085d46",
+1229 => x"59820b0b",
+1230 => x"0b82f0c4",
+1231 => x"64720745",
+1232 => x"4f5f80f8",
+1233 => x"40800b83",
+1234 => x"be3d340b",
+1235 => x"0b0bf3c6",
+1236 => x"39897b27",
+1237 => x"0b0b0b0b",
+1238 => x"ac38ff1e",
+1239 => x"5e8a527a",
+1240 => x"510b0b82",
+1241 => x"9e803f80",
+1242 => x"08b00559",
+1243 => x"787e348a",
+1244 => x"527a510b",
+1245 => x"0b829dc4",
+1246 => x"3f80085b",
+1247 => x"7a89260b",
+1248 => x"0b0b0bd6",
+1249 => x"38ff1eb0",
+1250 => x"1c5a5e78",
+1251 => x"7e3483be",
+1252 => x"3d707f31",
+1253 => x"ff9c0540",
+1254 => x"5b0b0b0b",
+1255 => x"f3d339ff",
+1256 => x"1e7b8f06",
+1257 => x"6f055a5e",
+1258 => x"78337e34",
+1259 => x"7a842a5b",
+1260 => x"7a802e0b",
+1261 => x"0b0b0bd6",
+1262 => x"38ff1e7b",
+1263 => x"8f066f05",
+1264 => x"5a5e7833",
+1265 => x"7e347a84",
+1266 => x"2a5b7a0b",
+1267 => x"0b0b0bcf",
+1268 => x"380b0b0b",
+1269 => x"ffb83962",
+1270 => x"80c0077d",
+1271 => x"335b430b",
+1272 => x"0b0bf1b5",
+1273 => x"3960ff2e",
+1274 => x"0b0b0b9f",
+1275 => x"a0387f80",
+1276 => x"e7327030",
+1277 => x"70720780",
+1278 => x"256280c7",
+1279 => x"32703070",
+1280 => x"72078025",
+1281 => x"73075354",
+1282 => x"5e515b59",
+1283 => x"79802e0b",
+1284 => x"0b0b0b8a",
+1285 => x"38600b0b",
+1286 => x"0b0b8338",
+1287 => x"81416465",
+1288 => x"88058412",
+1289 => x"08720870",
+1290 => x"83bf3d0c",
+1291 => x"7183c03d",
+1292 => x"0c545446",
+1293 => x"590b0b81",
+1294 => x"adad3f80",
+1295 => x"08802e0b",
+1296 => x"0b0b95db",
+1297 => x"38805980",
+1298 => x"79545483",
+1299 => x"ba3d0883",
+1300 => x"bc3d085b",
+1301 => x"5179520b",
+1302 => x"0b8290c9",
+1303 => x"3f800b80",
+1304 => x"08240b0b",
+1305 => x"0b85f138",
+1306 => x"0b0b82f0",
+1307 => x"d85e835f",
+1308 => x"0b0b0bf1",
+1309 => x"fc3982ce",
+1310 => x"3d5e7f80",
+1311 => x"c32e0b0b",
+1312 => x"0b0b9238",
+1313 => x"62842a70",
+1314 => x"81065159",
+1315 => x"78802e0b",
+1316 => x"0b0b83d3",
+1317 => x"38885380",
+1318 => x"52b43d70",
+1319 => x"52590b0b",
+1320 => x"8188f23f",
+1321 => x"78546465",
+1322 => x"84057108",
+1323 => x"557f546c",
+1324 => x"5346590b",
+1325 => x"0b0ba0b1",
+1326 => x"3f80085f",
+1327 => x"8008ff2e",
+1328 => x"0b0b0bfb",
+1329 => x"bf38800b",
+1330 => x"83be3d34",
+1331 => x"0b0b0bf1",
+1332 => x"a0390b0b",
+1333 => x"82f0dc63",
+1334 => x"842a7081",
+1335 => x"06515a4e",
+1336 => x"780b0b0b",
+1337 => x"82ca3862",
+1338 => x"862a7081",
+1339 => x"06515978",
+1340 => x"802e0b0b",
+1341 => x"0b82b938",
+1342 => x"64658405",
+1343 => x"8212225d",
+1344 => x"46598263",
+1345 => x"81065a5f",
+1346 => x"7a802e0b",
+1347 => x"0b0bf080",
+1348 => x"3878802e",
+1349 => x"0b0b0bef",
+1350 => x"f738627f",
+1351 => x"0743800b",
+1352 => x"83be3d34",
+1353 => x"0b0b0bef",
+1354 => x"ed39800b",
+1355 => x"83be3d34",
+1356 => x"64658405",
+1357 => x"71084046",
+1358 => x"597d802e",
+1359 => x"0b0b0b9c",
+1360 => x"d4387f80",
+1361 => x"d32e0b0b",
+1362 => x"0b82c038",
+1363 => x"62842a70",
+1364 => x"81065159",
+1365 => x"780b0b0b",
+1366 => x"82b13880",
+1367 => x"61240b0b",
+1368 => x"0bf08338",
+1369 => x"60537852",
+1370 => x"7d510b0b",
+1371 => x"8183e73f",
+1372 => x"605f8008",
+1373 => x"802e0b0b",
+1374 => x"0beff638",
+1375 => x"80087e31",
+1376 => x"5f607f25",
+1377 => x"0b0b0bef",
+1378 => x"e838605f",
+1379 => x"0b0b0bef",
+1380 => x"e0396284",
+1381 => x"2a708106",
+1382 => x"5159780b",
+1383 => x"0b0b908d",
+1384 => x"3862862a",
+1385 => x"70810651",
+1386 => x"5978802e",
+1387 => x"0b0b0b8f",
+1388 => x"fc386465",
+1389 => x"84057108",
+1390 => x"52465968",
+1391 => x"79237c5e",
+1392 => x"0b0b0beb",
+1393 => x"9539ab0b",
+1394 => x"83be3d34",
+1395 => x"7c335a0b",
+1396 => x"0b0bedc5",
+1397 => x"39805a79",
+1398 => x"1010107a",
+1399 => x"10056005",
+1400 => x"d0057d70",
+1401 => x"81055f33",
+1402 => x"d0115b41",
+1403 => x"5a897927",
+1404 => x"0b0b0b0b",
+1405 => x"e2387948",
+1406 => x"0b0b0bed",
+1407 => x"a4396281",
+1408 => x"80077d33",
+1409 => x"5b430b0b",
+1410 => x"0bed8e39",
+1411 => x"6288077d",
+1412 => x"335b430b",
+1413 => x"0b0bed81",
+1414 => x"390b0b82",
+1415 => x"f0c46384",
+1416 => x"2a708106",
+1417 => x"515a4e78",
+1418 => x"802e0b0b",
+1419 => x"0bfdb838",
+1420 => x"64658405",
+1421 => x"71085d46",
+1422 => x"590b0b0b",
+1423 => x"fdc43962",
+1424 => x"81077d33",
+1425 => x"5b430b0b",
+1426 => x"0becce39",
+1427 => x"83bd3d33",
+1428 => x"59780b0b",
+1429 => x"0becbf38",
+1430 => x"a00b83be",
+1431 => x"3d347c33",
+1432 => x"5a0b0b0b",
+1433 => x"ecb33964",
+1434 => x"65840546",
+1435 => x"59831933",
+1436 => x"7e34815f",
+1437 => x"0b0b0bf4",
+1438 => x"ef397a30",
+1439 => x"5bad0b83",
+1440 => x"be3d3481",
+1441 => x"5f0b0b0b",
+1442 => x"ed8c397d",
+1443 => x"a23d0c80",
+1444 => x"705c5f88",
+1445 => x"537e52a6",
+1446 => x"3d70525a",
+1447 => x"0b0b8184",
+1448 => x"f43f7e61",
+1449 => x"240b0b0b",
+1450 => x"81c2387a",
+1451 => x"1010a23d",
+1452 => x"08055978",
+1453 => x"08802e0b",
+1454 => x"0b0b0bbd",
+1455 => x"38795478",
+1456 => x"085383be",
+1457 => x"3dfcc005",
+1458 => x"526a510b",
+1459 => x"0b0b9c99",
+1460 => x"3f8008ff",
+1461 => x"2e0b0b0b",
+1462 => x"f7aa3880",
+1463 => x"081f5978",
+1464 => x"61240b0b",
+1465 => x"0b0b9238",
+1466 => x"811b7940",
+1467 => x"5b78612e",
+1468 => x"0981060b",
+1469 => x"0b0bffb3",
+1470 => x"387e802e",
+1471 => x"0b0b0bec",
+1472 => x"f038811f",
+1473 => x"526a510b",
+1474 => x"0b80f1b6",
+1475 => x"3f80084a",
+1476 => x"8008802e",
+1477 => x"0b0b0bf6",
+1478 => x"fc388853",
+1479 => x"80527951",
+1480 => x"0b0b8183",
+1481 => x"f03f7955",
+1482 => x"7e5483be",
+1483 => x"3df38c05",
+1484 => x"5369526a",
+1485 => x"510b0b0b",
+1486 => x"9cb03f80",
+1487 => x"087f2e09",
+1488 => x"81060b0b",
+1489 => x"0bf6bd38",
+1490 => x"696a8008",
+1491 => x"055a5e80",
+1492 => x"79340b0b",
+1493 => x"0bec9a39",
+1494 => x"ad0b83be",
+1495 => x"3d340b0b",
+1496 => x"82f0d85e",
+1497 => x"835f0b0b",
+1498 => x"0bec8639",
+1499 => x"79557e54",
+1500 => x"83be3df3",
+1501 => x"8c05537e",
+1502 => x"526a510b",
+1503 => x"0b0b9bea",
+1504 => x"3f80085f",
+1505 => x"8008ff2e",
+1506 => x"0b0b0bf5",
+1507 => x"f7387da2",
+1508 => x"3d0c0b0b",
+1509 => x"0bfee239",
+1510 => x"620a100a",
+1511 => x"70810651",
+1512 => x"5978802e",
+1513 => x"0b0b0beb",
+1514 => x"ec386182",
+1515 => x"05420b0b",
+1516 => x"0bebe239",
+1517 => x"620a100a",
+1518 => x"70810651",
+1519 => x"5978802e",
+1520 => x"0b0b0bed",
+1521 => x"9f38b00b",
+1522 => x"82ce3d34",
+1523 => x"7f028405",
+1524 => x"8ab10534",
+1525 => x"83be3dfc",
+1526 => x"bc057c0c",
+1527 => x"820b841d",
+1528 => x"0c83b73d",
+1529 => x"08820583",
+1530 => x"b83d0c88",
+1531 => x"1c83b73d",
+1532 => x"08811183",
+1533 => x"b93d0c81",
+1534 => x"11515a5c",
+1535 => x"8779250b",
+1536 => x"0b0bece0",
+1537 => x"380b0b0b",
+1538 => x"f3f83980",
+1539 => x"e560250b",
+1540 => x"0b0b83da",
+1541 => x"38805980",
+1542 => x"79545483",
+1543 => x"ba3d0883",
+1544 => x"bc3d085b",
+1545 => x"5179520b",
+1546 => x"0b8282bd",
+1547 => x"3f80080b",
+1548 => x"0b0b87ff",
+1549 => x"380b0b82",
+1550 => x"f0f07c0c",
+1551 => x"810b841d",
+1552 => x"0c83b73d",
+1553 => x"08810583",
+1554 => x"b83d0c88",
+1555 => x"1c83b73d",
+1556 => x"08811183",
+1557 => x"b93d0c81",
+1558 => x"11515a5c",
+1559 => x"7887240b",
+1560 => x"0b0b81ce",
+1561 => x"38a43d08",
+1562 => x"5b7aa63d",
+1563 => x"08240b0b",
+1564 => x"0b0b8e38",
+1565 => x"62810659",
+1566 => x"78802e0b",
+1567 => x"0b0bedc3",
+1568 => x"386b7c0c",
+1569 => x"810b841d",
+1570 => x"0c83b73d",
+1571 => x"08810583",
+1572 => x"b83d0c88",
+1573 => x"1c83b73d",
+1574 => x"08811183",
+1575 => x"b93d0c81",
+1576 => x"11515a5c",
+1577 => x"7887240b",
+1578 => x"0b0b81c5",
+1579 => x"38ff1b5a",
+1580 => x"807a250b",
+1581 => x"0b0bed8b",
+1582 => x"38907a25",
+1583 => x"0b0b0b0b",
+1584 => x"bd380b0b",
+1585 => x"82edb47c",
+1586 => x"0c900b84",
+1587 => x"1d0c83b7",
+1588 => x"3d089005",
+1589 => x"83b83d0c",
+1590 => x"881c83b7",
+1591 => x"3d088111",
+1592 => x"83b93d0c",
+1593 => x"8111515a",
+1594 => x"5c788724",
+1595 => x"0b0b0b80",
+1596 => x"df38f01a",
+1597 => x"5a799024",
+1598 => x"0b0b0b0b",
+1599 => x"c5380b0b",
+1600 => x"82edb47c",
+1601 => x"0c79841d",
+1602 => x"0c83b73d",
+1603 => x"081a83b8",
+1604 => x"3d0c881c",
+1605 => x"83b73d08",
+1606 => x"811183b9",
+1607 => x"3d0c8111",
+1608 => x"515a5c87",
+1609 => x"79250b0b",
+1610 => x"0bec9838",
+1611 => x"0b0b0bf2",
+1612 => x"9d3983be",
+1613 => x"3ddc0552",
+1614 => x"66510b0b",
+1615 => x"0be2c23f",
+1616 => x"80080b0b",
+1617 => x"0bf2bd38",
+1618 => x"655c0b0b",
+1619 => x"0bfe9639",
+1620 => x"83be3ddc",
+1621 => x"05526651",
+1622 => x"0b0b0be2",
+1623 => x"a43f8008",
+1624 => x"0b0b0bf2",
+1625 => x"9f3865f0",
+1626 => x"1b5b5c0b",
+1627 => x"0b0bff85",
+1628 => x"3983be3d",
+1629 => x"dc055266",
+1630 => x"510b0b0b",
+1631 => x"e2833f80",
+1632 => x"080b0b0b",
+1633 => x"f1fe3865",
+1634 => x"a53d08ff",
+1635 => x"055b5c79",
+1636 => x"80240b0b",
+1637 => x"0bfea238",
+1638 => x"0b0b0beb",
+1639 => x"a63983be",
+1640 => x"3ddc0552",
+1641 => x"66510b0b",
+1642 => x"0be1d63f",
+1643 => x"80080b0b",
+1644 => x"0bf1d138",
+1645 => x"6583be3d",
+1646 => x"335c5c0b",
+1647 => x"0b0be8e6",
+1648 => x"397e0b0b",
+1649 => x"0bf3c738",
+1650 => x"62810659",
+1651 => x"78802e0b",
+1652 => x"0b0bf3ba",
+1653 => x"38028d8f",
+1654 => x"055eb07e",
+1655 => x"3483be3d",
+1656 => x"707f31ff",
+1657 => x"9c05405b",
+1658 => x"0b0b0be7",
+1659 => x"8439a43d",
+1660 => x"085b817b",
+1661 => x"250b0b0b",
+1662 => x"83bc387d",
+1663 => x"7081055f",
+1664 => x"3382ce3d",
+1665 => x"34ae0284",
+1666 => x"058ab105",
+1667 => x"3483be3d",
+1668 => x"fcbc057c",
+1669 => x"0c820b84",
+1670 => x"1d0c83b7",
+1671 => x"3d088205",
+1672 => x"83b83d0c",
+1673 => x"881c83b7",
+1674 => x"3d088111",
+1675 => x"83b93d0c",
+1676 => x"8111515a",
+1677 => x"5c788724",
+1678 => x"0b0b0b81",
+1679 => x"8b388059",
+1680 => x"80795454",
+1681 => x"83ba3d08",
+1682 => x"83bc3d08",
+1683 => x"5b517952",
+1684 => x"0b0b8280",
+1685 => x"a83f8008",
+1686 => x"802e0b0b",
+1687 => x"0b81a538",
+1688 => x"7d7c0cff",
+1689 => x"1b841d0c",
+1690 => x"83b73d08",
+1691 => x"1bff0583",
+1692 => x"b83d0c88",
+1693 => x"1c83b73d",
+1694 => x"08811183",
+1695 => x"b93d0c81",
+1696 => x"11515a5c",
+1697 => x"7887240b",
+1698 => x"0b0b81f7",
+1699 => x"3883be3d",
+1700 => x"e8057c0c",
+1701 => x"6c841d0c",
+1702 => x"83b73d08",
+1703 => x"6d0583b8",
+1704 => x"3d0c881c",
+1705 => x"83b73d08",
+1706 => x"811183b9",
+1707 => x"3d0c8111",
+1708 => x"515a5c87",
+1709 => x"79250b0b",
+1710 => x"0be98838",
+1711 => x"83be3ddc",
+1712 => x"05520b0b",
+1713 => x"0bef8d39",
+1714 => x"83be3ddc",
+1715 => x"05526651",
+1716 => x"0b0b0bdf",
+1717 => x"ac3f8008",
+1718 => x"0b0b0bef",
+1719 => x"a73865a5",
+1720 => x"3d085c5c",
+1721 => x"80598079",
+1722 => x"545483ba",
+1723 => x"3d0883bc",
+1724 => x"3d085b51",
+1725 => x"79520b0b",
+1726 => x"81ff823f",
+1727 => x"80080b0b",
+1728 => x"0bfedd38",
+1729 => x"ff1b5a80",
+1730 => x"7a250b0b",
+1731 => x"0bfefe38",
+1732 => x"907a250b",
+1733 => x"0b0b0bbd",
+1734 => x"380b0b82",
+1735 => x"edb47c0c",
+1736 => x"900b841d",
+1737 => x"0c83b73d",
+1738 => x"08900583",
+1739 => x"b83d0c88",
+1740 => x"1c83b73d",
+1741 => x"08811183",
+1742 => x"b93d0c81",
+1743 => x"11515a5c",
+1744 => x"7887240b",
+1745 => x"0b0b84c4",
+1746 => x"38f01a5a",
+1747 => x"7990240b",
+1748 => x"0b0b0bc5",
+1749 => x"380b0b82",
+1750 => x"edb47c0c",
+1751 => x"79841d0c",
+1752 => x"83b73d08",
+1753 => x"1a83b83d",
+1754 => x"0c881c83",
+1755 => x"b73d0881",
+1756 => x"1183b93d",
+1757 => x"0c811151",
+1758 => x"5a5c8779",
+1759 => x"250b0b0b",
+1760 => x"fe8b3883",
+1761 => x"be3ddc05",
+1762 => x"5266510b",
+1763 => x"0b0bddf1",
+1764 => x"3f80080b",
+1765 => x"0b0bedec",
+1766 => x"386583bf",
+1767 => x"3de80571",
+1768 => x"0c6d8412",
+1769 => x"0c83b83d",
+1770 => x"086e0583",
+1771 => x"b93d0c5c",
+1772 => x"0b0b0bfd",
+1773 => x"ed396281",
+1774 => x"0659780b",
+1775 => x"0b0bfcbb",
+1776 => x"387d7c0c",
+1777 => x"810b841d",
+1778 => x"0c83b73d",
+1779 => x"08810583",
+1780 => x"b83d0c88",
+1781 => x"1c83b73d",
+1782 => x"08811183",
+1783 => x"b93d0c81",
+1784 => x"11515a5c",
+1785 => x"8779250b",
+1786 => x"0b0bfda1",
+1787 => x"3883be3d",
+1788 => x"dc05520b",
+1789 => x"0b0bff91",
+1790 => x"39646584",
+1791 => x"0571085d",
+1792 => x"4659815f",
+1793 => x"0b0b0be2",
+1794 => x"87396465",
+1795 => x"84057108",
+1796 => x"5d465980",
+1797 => x"5f0b0b0b",
+1798 => x"e8ba3964",
+1799 => x"65840571",
+1800 => x"085d4659",
+1801 => x"7a80250b",
+1802 => x"0b0be8f0",
+1803 => x"380b0b0b",
+1804 => x"f4c839a5",
+1805 => x"3d085a80",
+1806 => x"7a250b0b",
+1807 => x"0b8bbd38",
+1808 => x"a43d085b",
+1809 => x"7a7a240b",
+1810 => x"0b0b83b5",
+1811 => x"387d7c0c",
+1812 => x"7a841d0c",
+1813 => x"83b73d08",
+1814 => x"1b83b83d",
+1815 => x"0c881c83",
+1816 => x"b73d0881",
+1817 => x"1183b93d",
+1818 => x"0c811151",
+1819 => x"5a5c7887",
+1820 => x"240b0b0b",
+1821 => x"81e33879",
+1822 => x"7b315a80",
+1823 => x"7a250b0b",
+1824 => x"0b818c38",
+1825 => x"907a250b",
+1826 => x"0b0b0bbd",
+1827 => x"380b0b82",
+1828 => x"edb47c0c",
+1829 => x"900b841d",
+1830 => x"0c83b73d",
+1831 => x"08900583",
+1832 => x"b83d0c88",
+1833 => x"1c83b73d",
+1834 => x"08811183",
+1835 => x"b93d0c81",
+1836 => x"11515a5c",
+1837 => x"7887240b",
+1838 => x"0b0b80fc",
+1839 => x"38f01a5a",
+1840 => x"7990240b",
+1841 => x"0b0b0bc5",
+1842 => x"380b0b82",
+1843 => x"edb47c0c",
+1844 => x"79841d0c",
+1845 => x"83b73d08",
+1846 => x"1a83b83d",
+1847 => x"0c881c83",
+1848 => x"b73d0881",
+1849 => x"1183b93d",
+1850 => x"0c811151",
+1851 => x"5a5c8779",
+1852 => x"250b0b0b",
+1853 => x"0b993883",
+1854 => x"be3ddc05",
+1855 => x"5266510b",
+1856 => x"0b0bdafd",
+1857 => x"3f80080b",
+1858 => x"0b0beaf8",
+1859 => x"38655c62",
+1860 => x"81065978",
+1861 => x"802e0b0b",
+1862 => x"0be4a838",
+1863 => x"0b0b82f0",
+1864 => x"f47c0c81",
+1865 => x"0b841d0c",
+1866 => x"83b73d08",
+1867 => x"810583b8",
+1868 => x"3d0c0b0b",
+1869 => x"0bfaeb39",
+1870 => x"83be3ddc",
+1871 => x"05526651",
+1872 => x"0b0b0bda",
+1873 => x"bc3f8008",
+1874 => x"0b0b0bea",
+1875 => x"b73865f0",
+1876 => x"1b5b5c0b",
+1877 => x"0b0bfee8",
+1878 => x"3983be3d",
+1879 => x"dc055266",
+1880 => x"510b0b0b",
+1881 => x"da9b3f80",
+1882 => x"080b0b0b",
+1883 => x"ea963865",
+1884 => x"a63d08a6",
+1885 => x"3d087171",
+1886 => x"31525d5b",
+1887 => x"5c798024",
+1888 => x"0b0b0bfd",
+1889 => x"ff380b0b",
+1890 => x"0bff8439",
+1891 => x"83be3ddc",
+1892 => x"05526651",
+1893 => x"0b0b0bd9",
+1894 => x"e83f8008",
+1895 => x"0b0b0be9",
+1896 => x"e33865f0",
+1897 => x"1b5b5c0b",
+1898 => x"0b0bfba0",
+1899 => x"39646584",
+1900 => x"0571086b",
+1901 => x"710c527e",
+1902 => x"4046590b",
+1903 => x"0b0bdb9a",
+1904 => x"397e0b0b",
+1905 => x"0bdf9938",
+1906 => x"ff1e7bb7",
+1907 => x"06b0075b",
+1908 => x"5e797e34",
+1909 => x"7a832a5b",
+1910 => x"7a0b0b0b",
+1911 => x"0bea3862",
+1912 => x"81065978",
+1913 => x"802e0b0b",
+1914 => x"0beba338",
+1915 => x"79b02e0b",
+1916 => x"0b0beb9a",
+1917 => x"38ff1e5e",
+1918 => x"b07e340b",
+1919 => x"0b0bf7dd",
+1920 => x"397d7c0c",
+1921 => x"79841d0c",
+1922 => x"83b73d08",
+1923 => x"1a83b83d",
+1924 => x"0c881c83",
+1925 => x"b73d0881",
+1926 => x"1183b93d",
+1927 => x"0c811151",
+1928 => x"5a5c7887",
+1929 => x"240b0b0b",
+1930 => x"81a03879",
+1931 => x"1e0b0b82",
+1932 => x"f0f47d0c",
+1933 => x"5e810b84",
+1934 => x"1d0c83b7",
+1935 => x"3d088105",
+1936 => x"83b83d0c",
+1937 => x"881c83b7",
+1938 => x"3d088111",
+1939 => x"83b93d0c",
+1940 => x"8111515a",
+1941 => x"5c788724",
+1942 => x"0b0b0b0b",
+1943 => x"b6387d7c",
+1944 => x"0ca43d08",
+1945 => x"7a317084",
+1946 => x"1e0c83b8",
+1947 => x"3d080583",
+1948 => x"b83d0c88",
+1949 => x"1c83b73d",
+1950 => x"08811183",
+1951 => x"b93d0c81",
+1952 => x"11515a5c",
+1953 => x"8779250b",
+1954 => x"0b0be1b7",
+1955 => x"380b0b0b",
+1956 => x"e7bc3983",
+1957 => x"be3ddc05",
+1958 => x"5266510b",
+1959 => x"0b0bd7e1",
+1960 => x"3f80080b",
+1961 => x"0b0be7dc",
+1962 => x"3865a63d",
+1963 => x"087f720c",
+1964 => x"a63d0871",
+1965 => x"31708414",
+1966 => x"0c83ba3d",
+1967 => x"080583ba",
+1968 => x"3d0c5b5c",
+1969 => x"0b0b0bff",
+1970 => x"aa3983be",
+1971 => x"3ddc0552",
+1972 => x"66510b0b",
+1973 => x"0bd7aa3f",
+1974 => x"80080b0b",
+1975 => x"0be7a538",
+1976 => x"65a63d08",
+1977 => x"7f110b0b",
+1978 => x"82f0f473",
+1979 => x"0c405b5c",
+1980 => x"810b841d",
+1981 => x"0c83b73d",
+1982 => x"08810583",
+1983 => x"b83d0c88",
+1984 => x"1c83b73d",
+1985 => x"08811183",
+1986 => x"b93d0c81",
+1987 => x"11515a5c",
+1988 => x"8779250b",
+1989 => x"0b0bfec6",
+1990 => x"380b0b0b",
+1991 => x"fef53983",
+1992 => x"ba3d0883",
+1993 => x"bc3d085b",
+1994 => x"5179520b",
+1995 => x"0b8197ea",
+1996 => x"3f0b0b82",
+1997 => x"f0f85e83",
+1998 => x"5f80080b",
+1999 => x"0b0bdcb1",
+2000 => x"38628280",
+2001 => x"0783bb3d",
+2002 => x"0883bd3d",
+2003 => x"086383c0",
+2004 => x"3daa3da5",
+2005 => x"3d0c5f45",
+2006 => x"415f4383",
+2007 => x"0ba13d0c",
+2008 => x"7f80e62e",
+2009 => x"0b0b0b0b",
+2010 => x"b1388008",
+2011 => x"5a7f80e5",
+2012 => x"2e0b0b0b",
+2013 => x"83ea3880",
+2014 => x"08597f80",
+2015 => x"c52e0b0b",
+2016 => x"0b83f038",
+2017 => x"79790759",
+2018 => x"78802e0b",
+2019 => x"0b0b0b85",
+2020 => x"38608105",
+2021 => x"42820ba1",
+2022 => x"3d0c7db3",
+2023 => x"3d0c7eb4",
+2024 => x"3d0c800b",
+2025 => x"b33d0824",
+2026 => x"0b0b0b88",
+2027 => x"ef38807b",
+2028 => x"3483be3d",
+2029 => x"f3941159",
+2030 => x"f3900557",
+2031 => x"6e566155",
+2032 => x"6f547d52",
+2033 => x"7e536a51",
+2034 => x"0b0b0b9b",
+2035 => x"b03f8008",
+2036 => x"6080e732",
+2037 => x"70307072",
+2038 => x"079f2a51",
+2039 => x"5b5ba13d",
+2040 => x"0c7f80c7",
+2041 => x"2e0b0b0b",
+2042 => x"0b883878",
+2043 => x"0b0b0b81",
+2044 => x"e4386281",
+2045 => x"0659780b",
+2046 => x"0b0b81d9",
+2047 => x"38a33d08",
+2048 => x"5978a13d",
+2049 => x"0831a53d",
+2050 => x"0c6f6080",
+2051 => x"e7327030",
+2052 => x"70720780",
+2053 => x"256380c7",
+2054 => x"32703070",
+2055 => x"72078025",
+2056 => x"73075354",
+2057 => x"5f515c5a",
+2058 => x"5e79802e",
+2059 => x"0b0b0b86",
+2060 => x"f238a53d",
+2061 => x"085afc7a",
+2062 => x"250b0b0b",
+2063 => x"0b8a3860",
+2064 => x"7a250b0b",
+2065 => x"0b82cc38",
+2066 => x"80e5597f",
+2067 => x"80e72e0b",
+2068 => x"0b0b0b84",
+2069 => x"3880c559",
+2070 => x"78407f80",
+2071 => x"e5240b0b",
+2072 => x"0b86ca38",
+2073 => x"ff1a70a7",
+2074 => x"3d0c83b9",
+2075 => x"3d715d43",
+2076 => x"5a7f6234",
+2077 => x"028ddd05",
+2078 => x"5f807a24",
+2079 => x"0b0b0b87",
+2080 => x"c138ab7f",
+2081 => x"34028dde",
+2082 => x"05b33d70",
+2083 => x"5c425f89",
+2084 => x"7b250b0b",
+2085 => x"0b818738",
+2086 => x"ff1a8a7c",
+2087 => x"36b0055a",
+2088 => x"5a787a34",
+2089 => x"8a7b355b",
+2090 => x"7a89240b",
+2091 => x"0b0b0be8",
+2092 => x"38ff1ab0",
+2093 => x"1c5a5a78",
+2094 => x"7a347961",
+2095 => x"270b0b0b",
+2096 => x"80ed3879",
+2097 => x"7081055b",
+2098 => x"337f7081",
+2099 => x"0541340b",
+2100 => x"0b0b0be6",
+2101 => x"39800862",
+2102 => x"055b7f80",
+2103 => x"e62e0b0b",
+2104 => x"0b819838",
+2105 => x"80598079",
+2106 => x"54547d51",
+2107 => x"7e520b0b",
+2108 => x"81f0f63f",
+2109 => x"80080b0b",
+2110 => x"0b0b8538",
+2111 => x"7aa43d0c",
+2112 => x"a33d0859",
+2113 => x"787b270b",
+2114 => x"0b0bfdf5",
+2115 => x"38b07934",
+2116 => x"a33d0881",
+2117 => x"05a43d0c",
+2118 => x"0b0b0b0b",
+2119 => x"e339b07f",
+2120 => x"70810541",
+2121 => x"34b01b59",
+2122 => x"787f7081",
+2123 => x"0541347e",
+2124 => x"6231a53d",
+2125 => x"08701241",
+2126 => x"5a4d8179",
+2127 => x"250b0b0b",
+2128 => x"81a43881",
+2129 => x"1f5f83bc",
+2130 => x"3d335978",
+2131 => x"802e0b0b",
+2132 => x"0bd89e38",
+2133 => x"ad0b83be",
+2134 => x"3d340b0b",
+2135 => x"0bd89239",
+2136 => x"810b8008",
+2137 => x"5a5a7f80",
+2138 => x"c52e0981",
+2139 => x"060b0b0b",
+2140 => x"fc923881",
+2141 => x"590b0b0b",
+2142 => x"fc8a3980",
+2143 => x"08335978",
+2144 => x"b02e0b0b",
+2145 => x"0b0bb438",
+2146 => x"6e087b05",
+2147 => x"5b0b0b0b",
+2148 => x"fed23980",
+2149 => x"e740a43d",
+2150 => x"0859787a",
+2151 => x"240b0b0b",
+2152 => x"85883879",
+2153 => x"6381065a",
+2154 => x"5f78802e",
+2155 => x"0b0b0bff",
+2156 => x"9538811a",
+2157 => x"5f0b0b0b",
+2158 => x"ff8c3980",
+2159 => x"59807954",
+2160 => x"547d517e",
+2161 => x"520b0b81",
+2162 => x"f1b33f80",
+2163 => x"08802e0b",
+2164 => x"0b0bffb4",
+2165 => x"38816231",
+2166 => x"70a13d08",
+2167 => x"0c7b055b",
+2168 => x"0b0b0bfd",
+2169 => x"ff396281",
+2170 => x"06597880",
+2171 => x"2e0b0b0b",
+2172 => x"fed43881",
+2173 => x"1f5f0b0b",
+2174 => x"0bfecb39",
+2175 => x"0b0b82f0",
+2176 => x"f07c0c81",
+2177 => x"0b841d0c",
+2178 => x"83b73d08",
+2179 => x"810583b8",
+2180 => x"3d0c881c",
+2181 => x"83b73d08",
+2182 => x"811183b9",
+2183 => x"3d0c8111",
+2184 => x"515a5c78",
+2185 => x"87240b0b",
+2186 => x"0b829238",
+2187 => x"790b0b0b",
+2188 => x"0b8c38a4",
+2189 => x"3d08802e",
+2190 => x"0b0b0bda",
+2191 => x"86386b7c",
+2192 => x"0c810b84",
+2193 => x"1d0c83b7",
+2194 => x"3d088105",
+2195 => x"83b83d0c",
+2196 => x"881c83b7",
+2197 => x"3d088111",
+2198 => x"83b93d0c",
+2199 => x"8111515a",
+2200 => x"5c788724",
+2201 => x"0b0b0b81",
+2202 => x"f6387930",
+2203 => x"5a807a25",
+2204 => x"0b0b0b81",
+2205 => x"8c38907a",
+2206 => x"250b0b0b",
+2207 => x"0bbd380b",
+2208 => x"0b82edb4",
+2209 => x"7c0c900b",
+2210 => x"841d0c83",
+2211 => x"b73d0890",
+2212 => x"0583b83d",
+2213 => x"0c881c83",
+2214 => x"b73d0881",
+2215 => x"1183b93d",
+2216 => x"0c811151",
+2217 => x"5a5c7887",
+2218 => x"240b0b0b",
+2219 => x"80ee38f0",
+2220 => x"1a5a7990",
+2221 => x"240b0b0b",
+2222 => x"0bc5380b",
+2223 => x"0b82edb4",
+2224 => x"7c0c7984",
+2225 => x"1d0c83b7",
+2226 => x"3d081a83",
+2227 => x"b83d0c88",
+2228 => x"1c83b73d",
+2229 => x"08811183",
+2230 => x"b93d0c81",
+2231 => x"11515a5c",
+2232 => x"8779250b",
+2233 => x"0b0b0b99",
+2234 => x"3883be3d",
+2235 => x"dc055266",
+2236 => x"510b0b0b",
+2237 => x"cf8b3f80",
+2238 => x"080b0b0b",
+2239 => x"df863865",
+2240 => x"5c7d7c0c",
+2241 => x"a43d0884",
+2242 => x"1d0c83b7",
+2243 => x"3d08a53d",
+2244 => x"080583b8",
+2245 => x"3d0c0b0b",
+2246 => x"0bef8739",
+2247 => x"83be3ddc",
+2248 => x"05526651",
+2249 => x"0b0b0bce",
+2250 => x"d83f8008",
+2251 => x"0b0b0bde",
+2252 => x"d33865f0",
+2253 => x"1b5b5c0b",
+2254 => x"0b0bfef6",
+2255 => x"3983be3d",
+2256 => x"dc055266",
+2257 => x"510b0b0b",
+2258 => x"ceb73f80",
+2259 => x"080b0b0b",
+2260 => x"deb23865",
+2261 => x"a63d085b",
+2262 => x"5c0b0b0b",
+2263 => x"fdce3983",
+2264 => x"be3ddc05",
+2265 => x"5266510b",
+2266 => x"0b0bce95",
+2267 => x"3f80080b",
+2268 => x"0b0bde90",
+2269 => x"3865a63d",
+2270 => x"08703051",
+2271 => x"5b5c7980",
+2272 => x"240b0b0b",
+2273 => x"fdf0380b",
+2274 => x"0b0bfef5",
+2275 => x"3986410b",
+2276 => x"0b0be18a",
+2277 => x"390b0b82",
+2278 => x"f0fc5e86",
+2279 => x"5f0b0b0b",
+2280 => x"d3cf39a5",
+2281 => x"3d085a0b",
+2282 => x"0b0bf9ae",
+2283 => x"397f80e6",
+2284 => x"2e098106",
+2285 => x"0b0b0bfb",
+2286 => x"dd38807a",
+2287 => x"250b0b0b",
+2288 => x"81bc3879",
+2289 => x"5f600b0b",
+2290 => x"0b0b8e38",
+2291 => x"62810659",
+2292 => x"78802e0b",
+2293 => x"0b0bfaee",
+2294 => x"38601a81",
+2295 => x"055f0b0b",
+2296 => x"0bfae339",
+2297 => x"83b73d08",
+2298 => x"0b0b0b0b",
+2299 => x"8d38800b",
+2300 => x"83b73d0c",
+2301 => x"0b0b0bdd",
+2302 => x"8b3983be",
+2303 => x"3ddc0552",
+2304 => x"66510b0b",
+2305 => x"0bccfa3f",
+2306 => x"80080b0b",
+2307 => x"0bdcf538",
+2308 => x"800b83b7",
+2309 => x"3d0c0b0b",
+2310 => x"0bdce939",
+2311 => x"7d810a32",
+2312 => x"5ead7b34",
+2313 => x"0b0b0bf7",
+2314 => x"8839787a",
+2315 => x"3182055f",
+2316 => x"807a250b",
+2317 => x"0b0bfa8e",
+2318 => x"3881195f",
+2319 => x"0b0b0bfa",
+2320 => x"85397930",
+2321 => x"5bad7f34",
+2322 => x"028dde05",
+2323 => x"b33d705c",
+2324 => x"425f897b",
+2325 => x"250b0b0b",
+2326 => x"f9c4380b",
+2327 => x"0b0bf8b8",
+2328 => x"39646584",
+2329 => x"05710843",
+2330 => x"46596080",
+2331 => x"250b0b0b",
+2332 => x"d0a438ff",
+2333 => x"7d335b41",
+2334 => x"0b0b0bd0",
+2335 => x"9c39600b",
+2336 => x"0b0b0b90",
+2337 => x"38628106",
+2338 => x"59815f78",
+2339 => x"802e0b0b",
+2340 => x"0bf9b338",
+2341 => x"6082055f",
+2342 => x"0b0b0bf9",
+2343 => x"a939fc3d",
+2344 => x"0d0b0b82",
+2345 => x"f4ec0855",
+2346 => x"b8150880",
+2347 => x"2e0b0b0b",
+2348 => x"0b983878",
+2349 => x"54775376",
+2350 => x"520b0b82",
+2351 => x"f4ec0851",
+2352 => x"0b0b0bcb",
+2353 => x"f63f863d",
+2354 => x"0d047451",
+2355 => x"0b0b0bbe",
+2356 => x"8e3f7854",
+2357 => x"77537652",
+2358 => x"0b0b82f4",
+2359 => x"ec08510b",
+2360 => x"0b0bcbd7",
+2361 => x"3f863d0d",
+2362 => x"04f63d0d",
+2363 => x"7c7e6159",
+2364 => x"56588056",
+2365 => x"74762e0b",
+2366 => x"0b0b0ba3",
+2367 => x"3876547e",
+2368 => x"53745277",
+2369 => x"510b0b0b",
+2370 => x"83823f80",
+2371 => x"08558008",
+2372 => x"ff2e0b0b",
+2373 => x"0b0ba938",
+2374 => x"74800c8c",
+2375 => x"3d0d0476",
+2376 => x"5475538c",
+2377 => x"3df40552",
+2378 => x"77510b0b",
+2379 => x"0b82dd3f",
+2380 => x"80085580",
+2381 => x"08ff2e09",
+2382 => x"81060b0b",
+2383 => x"0b0bd938",
+2384 => x"80770c81",
+2385 => x"8a780c74",
+2386 => x"800c8c3d",
+2387 => x"0d047070",
+2388 => x"70707754",
+2389 => x"76537552",
+2390 => x"0b0b82f4",
+2391 => x"ec08510b",
+2392 => x"0b0bff85",
+2393 => x"3f505050",
+2394 => x"5004ec3d",
+2395 => x"0d66686a",
+2396 => x"6c6e735c",
+2397 => x"405d4242",
+2398 => x"4260802e",
+2399 => x"0b0b0b81",
+2400 => x"b2388060",
+2401 => x"085a5d7c",
+2402 => x"7a270b0b",
+2403 => x"0b819b38",
+2404 => x"933d5b7b",
+2405 => x"08841d08",
+2406 => x"7d567a08",
+2407 => x"557c5463",
+2408 => x"53405e0b",
+2409 => x"0b0bfec1",
+2410 => x"3f800858",
+2411 => x"8008ff2e",
+2412 => x"0b0b0b81",
+2413 => x"9538807a",
+2414 => x"80083156",
+2415 => x"567c7526",
+2416 => x"0b0b0b0b",
+2417 => x"83388156",
+2418 => x"80087a27",
+2419 => x"0b0b0b80",
+2420 => x"ea387580",
+2421 => x"2e0b0b0b",
+2422 => x"80e13880",
+2423 => x"081d5d60",
+2424 => x"802e0b0b",
+2425 => x"0b0baa38",
+2426 => x"80567580",
+2427 => x"08250b0b",
+2428 => x"0b0b9838",
+2429 => x"751b5574",
+2430 => x"33777081",
+2431 => x"05593481",
+2432 => x"16567776",
+2433 => x"240b0b0b",
+2434 => x"0bea387f",
+2435 => x"08840560",
+2436 => x"0c787084",
+2437 => x"055a0855",
+2438 => x"74802e0b",
+2439 => x"0b0b0bb9",
+2440 => x"38797d26",
+2441 => x"0b0b0bfe",
+2442 => x"ea387c55",
+2443 => x"74800c96",
+2444 => x"3d0d04ff",
+2445 => x"5a0b0b0b",
+2446 => x"fec8397d",
+2447 => x"7c0c7e84",
+2448 => x"1d0c7c55",
+2449 => x"0b0b0b0b",
+2450 => x"e339818a",
+2451 => x"620c807c",
+2452 => x"0c800880",
+2453 => x"0c963d0d",
+2454 => x"0460802e",
+2455 => x"0b0b0b0b",
+2456 => x"84387460",
+2457 => x"0c747c0c",
+2458 => x"ff1d800c",
+2459 => x"963d0d04",
+2460 => x"fc3d0d79",
+2461 => x"55785477",
+2462 => x"5376520b",
+2463 => x"0b82f4ec",
+2464 => x"08510b0b",
+2465 => x"0bfde33f",
+2466 => x"863d0d04",
+2467 => x"f83d0d7b",
+2468 => x"7d7f0b0b",
+2469 => x"82fbec54",
+2470 => x"5957550b",
+2471 => x"0b818dfb",
+2472 => x"3f800881",
+2473 => x"260b0b0b",
+2474 => x"0b983874",
+2475 => x"5474802e",
+2476 => x"0b0b0b0b",
+2477 => x"86387575",
+2478 => x"34815473",
+2479 => x"800c8a3d",
+2480 => x"0d040b0b",
+2481 => x"82f18452",
+2482 => x"0b0b82fb",
+2483 => x"ec510b0b",
+2484 => x"818c953f",
+2485 => x"80080b0b",
+2486 => x"0b81d838",
+2487 => x"80085474",
+2488 => x"802e0b0b",
+2489 => x"0b0bd438",
+2490 => x"80ff7625",
+2491 => x"0b0b0b0b",
+2492 => x"c538ff80",
+2493 => x"16538eff",
+2494 => x"73270b0b",
+2495 => x"0b85e338",
+2496 => x"f0801653",
+2497 => x"83efff73",
+2498 => x"270b0b0b",
+2499 => x"82d838fc",
+2500 => x"80801653",
+2501 => x"80fbffff",
+2502 => x"73270b0b",
+2503 => x"0b85e838",
+2504 => x"8fff0a16",
+2505 => x"53f7c00a",
+2506 => x"73270b0b",
+2507 => x"0b86a638",
+2508 => x"ff54c00a",
+2509 => x"76250b0b",
+2510 => x"0bff8038",
+2511 => x"75820a06",
+2512 => x"709e2c70",
+2513 => x"fc075151",
+2514 => x"53727570",
+2515 => x"81055734",
+2516 => x"7581fc0a",
+2517 => x"0670982a",
+2518 => x"ff800751",
+2519 => x"53727570",
+2520 => x"81055734",
+2521 => x"7587f080",
+2522 => x"80067092",
+2523 => x"2aff8007",
+2524 => x"51537275",
+2525 => x"70810557",
+2526 => x"34758fe0",
+2527 => x"8006708c",
+2528 => x"2aff8007",
+2529 => x"51537275",
+2530 => x"70810557",
+2531 => x"34759fc0",
+2532 => x"0670862a",
+2533 => x"ff800751",
+2534 => x"53727570",
+2535 => x"81055734",
+2536 => x"75ffbf06",
+2537 => x"ff800753",
+2538 => x"72753486",
+2539 => x"0b800c8a",
+2540 => x"3d0d040b",
+2541 => x"0b82f18c",
+2542 => x"520b0b82",
+2543 => x"fbec510b",
+2544 => x"0b818aa4",
+2545 => x"3f80080b",
+2546 => x"0b0b81f7",
+2547 => x"387581ff",
+2548 => x"0676882c",
+2549 => x"7081ff06",
+2550 => x"80085759",
+2551 => x"54587480",
+2552 => x"2e0b0b0b",
+2553 => x"fdd53876",
+2554 => x"802e0b0b",
+2555 => x"0bfdbc38",
+2556 => x"800880ff",
+2557 => x"187081ff",
+2558 => x"06515456",
+2559 => x"729e260b",
+2560 => x"0b0b0b83",
+2561 => x"38815680",
+2562 => x"08a01870",
+2563 => x"81ff0651",
+2564 => x"5454728f",
+2565 => x"260b0b0b",
+2566 => x"0b833881",
+2567 => x"54757407",
+2568 => x"5372802e",
+2569 => x"0b0b0b0b",
+2570 => x"b5388008",
+2571 => x"c0195456",
+2572 => x"72be260b",
+2573 => x"0b0b0b83",
+2574 => x"38815680",
+2575 => x"08ff8019",
+2576 => x"7081ff06",
+2577 => x"51545472",
+2578 => x"80fc260b",
+2579 => x"0b0b0b83",
+2580 => x"38815475",
+2581 => x"74075372",
+2582 => x"0b0b0b80",
+2583 => x"d338ff0b",
+2584 => x"800c8a3d",
+2585 => x"0d04fcd0",
+2586 => x"801653ff",
+2587 => x"548fff73",
+2588 => x"270b0b0b",
+2589 => x"fcc53875",
+2590 => x"83e08006",
+2591 => x"708c2ae0",
+2592 => x"07515372",
+2593 => x"75708105",
+2594 => x"5734759f",
+2595 => x"c0067086",
+2596 => x"2aff8007",
+2597 => x"51537275",
+2598 => x"70810557",
+2599 => x"3475ffbf",
+2600 => x"06ff8007",
+2601 => x"53727534",
+2602 => x"830b800c",
+2603 => x"8a3d0d04",
+2604 => x"76757081",
+2605 => x"05573477",
+2606 => x"75348254",
+2607 => x"73800c8a",
+2608 => x"3d0d040b",
+2609 => x"0b82f194",
+2610 => x"520b0b82",
+2611 => x"fbec510b",
+2612 => x"0b818894",
+2613 => x"3f80080b",
+2614 => x"0b0b80f8",
+2615 => x"387581ff",
+2616 => x"0676882c",
+2617 => x"7081ff06",
+2618 => x"80085759",
+2619 => x"54587480",
+2620 => x"2e0b0b0b",
+2621 => x"fbc53876",
+2622 => x"802e0b0b",
+2623 => x"0bfbac38",
+2624 => x"80085381",
+2625 => x"a077270b",
+2626 => x"0b0b0b83",
+2627 => x"38815376",
+2628 => x"81ff2e0b",
+2629 => x"0b0bfec6",
+2630 => x"38817074",
+2631 => x"06545472",
+2632 => x"802e0b0b",
+2633 => x"0bfeb738",
+2634 => x"80085381",
+2635 => x"a078270b",
+2636 => x"0b0b0b83",
+2637 => x"38735377",
+2638 => x"81ff2e0b",
+2639 => x"0b0bfe9e",
+2640 => x"38727406",
+2641 => x"5372802e",
+2642 => x"0b0b0bfe",
+2643 => x"91380b0b",
+2644 => x"0bfedd39",
+2645 => x"0b0b82f1",
+2646 => x"9c520b0b",
+2647 => x"82fbec51",
+2648 => x"0b0b8187",
+2649 => x"833f8008",
+2650 => x"0b0b0bfa",
+2651 => x"be388008",
+2652 => x"7681ff06",
+2653 => x"77882c70",
+2654 => x"81ff0659",
+2655 => x"55595981",
+2656 => x"5474802e",
+2657 => x"0b0b0bfa",
+2658 => x"b2387580",
+2659 => x"2e0b0b0b",
+2660 => x"82a538df",
+2661 => x"16537280",
+2662 => x"dd260b0b",
+2663 => x"0bfdbf38",
+2664 => x"df185372",
+2665 => x"80dd260b",
+2666 => x"0b0bfdb2",
+2667 => x"3876080b",
+2668 => x"0b0b0b9c",
+2669 => x"3873770c",
+2670 => x"9b757081",
+2671 => x"055734a4",
+2672 => x"75708105",
+2673 => x"573480c2",
+2674 => x"75708105",
+2675 => x"57348359",
+2676 => x"75757081",
+2677 => x"05573477",
+2678 => x"75348219",
+2679 => x"800c8a3d",
+2680 => x"0d04758f",
+2681 => x"c0067086",
+2682 => x"2ac00751",
+2683 => x"53727570",
+2684 => x"81055734",
+2685 => x"75ffbf06",
+2686 => x"ff800753",
+2687 => x"72753482",
+2688 => x"540b0b0b",
+2689 => x"fdb63975",
+2690 => x"80f08080",
+2691 => x"0670922a",
+2692 => x"f0075153",
+2693 => x"72757081",
+2694 => x"05573475",
+2695 => x"8fe08006",
+2696 => x"708c2aff",
+2697 => x"80075153",
+2698 => x"72757081",
+2699 => x"05573475",
+2700 => x"9fc00670",
+2701 => x"862aff80",
+2702 => x"07515372",
+2703 => x"75708105",
+2704 => x"573475ff",
+2705 => x"bf06ff80",
+2706 => x"07537275",
+2707 => x"34840b80",
+2708 => x"0c8a3d0d",
+2709 => x"047581c0",
+2710 => x"0a067098",
+2711 => x"2af80751",
+2712 => x"53727570",
+2713 => x"81055734",
+2714 => x"7587f080",
+2715 => x"80067092",
+2716 => x"2aff8007",
+2717 => x"51537275",
+2718 => x"70810557",
+2719 => x"34758fe0",
+2720 => x"8006708c",
+2721 => x"2aff8007",
+2722 => x"51537275",
+2723 => x"70810557",
+2724 => x"34759fc0",
+2725 => x"0670862a",
+2726 => x"ff800751",
+2727 => x"53727570",
+2728 => x"81055734",
+2729 => x"75ffbf06",
+2730 => x"ff800753",
+2731 => x"72753485",
+2732 => x"0b800c8a",
+2733 => x"3d0d0476",
+2734 => x"08802e0b",
+2735 => x"0b0b0b9d",
+2736 => x"38800877",
+2737 => x"0c9b7570",
+2738 => x"81055734",
+2739 => x"a8757081",
+2740 => x"05573480",
+2741 => x"c2757081",
+2742 => x"05573483",
+2743 => x"59777534",
+2744 => x"8119800c",
+2745 => x"8a3d0d04",
+2746 => x"fa3d0d78",
+2747 => x"0b0b82f4",
+2748 => x"ec085455",
+2749 => x"b8130880",
+2750 => x"2e0b0b0b",
+2751 => x"81dc388c",
+2752 => x"15227083",
+2753 => x"ffff0670",
+2754 => x"832a8132",
+2755 => x"70810651",
+2756 => x"55555672",
+2757 => x"802e0b0b",
+2758 => x"0b80f038",
+2759 => x"73842a81",
+2760 => x"32810657",
+2761 => x"ff53760b",
+2762 => x"0b0b8193",
+2763 => x"3873822a",
+2764 => x"70810651",
+2765 => x"5372802e",
+2766 => x"0b0b0b80",
+2767 => x"c638b015",
+2768 => x"08547380",
+2769 => x"2e0b0b0b",
+2770 => x"0ba53880",
+2771 => x"c0155373",
+2772 => x"732e0b0b",
+2773 => x"0b0b9438",
+2774 => x"73520b0b",
+2775 => x"82f4ec08",
+2776 => x"510b0b0b",
+2777 => x"b5d23f8c",
+2778 => x"15225676",
+2779 => x"b0160c75",
+2780 => x"db065372",
+2781 => x"8c162380",
+2782 => x"0b84160c",
+2783 => x"90150875",
+2784 => x"0c725675",
+2785 => x"88075372",
+2786 => x"8c162390",
+2787 => x"1508802e",
+2788 => x"0b0b0b80",
+2789 => x"d3388c15",
+2790 => x"22708106",
+2791 => x"5553730b",
+2792 => x"0b0b0ba2",
+2793 => x"38720a10",
+2794 => x"0a708106",
+2795 => x"5153720b",
+2796 => x"0b0b0b85",
+2797 => x"38941508",
+2798 => x"54738816",
+2799 => x"0c805372",
+2800 => x"800c883d",
+2801 => x"0d04800b",
+2802 => x"88160c94",
+2803 => x"15083098",
+2804 => x"160c8053",
+2805 => x"0b0b0b0b",
+2806 => x"e6397251",
+2807 => x"0b0b0baf",
+2808 => x"fe3f0b0b",
+2809 => x"0bfe9839",
+2810 => x"74510b0b",
+2811 => x"80c4ef3f",
+2812 => x"8c152270",
+2813 => x"81065553",
+2814 => x"73802e0b",
+2815 => x"0b0bffa5",
+2816 => x"380b0b0b",
+2817 => x"0bc039ef",
+2818 => x"3d0d6365",
+2819 => x"9011085e",
+2820 => x"40408053",
+2821 => x"7b609005",
+2822 => x"08240b0b",
+2823 => x"0b81d038",
+2824 => x"941f70ff",
+2825 => x"1e70822b",
+2826 => x"73116494",
+2827 => x"05705c43",
+2828 => x"5f610570",
+2829 => x"087f0881",
+2830 => x"0557555c",
+2831 => x"5e42570b",
+2832 => x"0b81ebf8",
+2833 => x"3f80085d",
+2834 => x"80080b0b",
+2835 => x"0b81a738",
+2836 => x"7e527f51",
+2837 => x"0b0b80e9",
+2838 => x"803f800b",
+2839 => x"8008240b",
+2840 => x"0b0b8189",
+2841 => x"38811d5d",
+2842 => x"80707f63",
+2843 => x"5a585b58",
+2844 => x"76708405",
+2845 => x"58087083",
+2846 => x"ffff067b",
+2847 => x"0571902a",
+2848 => x"71902a05",
+2849 => x"70902a5d",
+2850 => x"5283ffff",
+2851 => x"06821822",
+2852 => x"7072311b",
+2853 => x"585b5483",
+2854 => x"ffff0676",
+2855 => x"22707231",
+2856 => x"77902c05",
+2857 => x"70902c5b",
+2858 => x"52435372",
+2859 => x"76237482",
+2860 => x"17238416",
+2861 => x"567a7727",
+2862 => x"0b0b0bff",
+2863 => x"b3387b10",
+2864 => x"101e5978",
+2865 => x"080b0b0b",
+2866 => x"0ba338fc",
+2867 => x"19597d79",
+2868 => x"270b0b0b",
+2869 => x"0b923878",
+2870 => x"080b0b0b",
+2871 => x"0b8a38ff",
+2872 => x"1c5c0b0b",
+2873 => x"0b0be439",
+2874 => x"7b609005",
+2875 => x"0c7c5372",
+2876 => x"800c933d",
+2877 => x"0d048070",
+2878 => x"5b587670",
+2879 => x"84055808",
+2880 => x"7083ffff",
+2881 => x"06707f29",
+2882 => x"1c72902a",
+2883 => x"60297190",
+2884 => x"2a057090",
+2885 => x"2a5e5283",
+2886 => x"ffff0682",
+2887 => x"19227072",
+2888 => x"311c5945",
+2889 => x"5283ffff",
+2890 => x"06772270",
+2891 => x"72317890",
+2892 => x"2c057090",
+2893 => x"2c5c5256",
+2894 => x"51537276",
+2895 => x"23748217",
+2896 => x"23841656",
+2897 => x"7a77270b",
+2898 => x"0b0bffae",
+2899 => x"3878080b",
+2900 => x"0b0bfdfc",
+2901 => x"38fc1959",
+2902 => x"7d79270b",
+2903 => x"0b0b0b92",
+2904 => x"3878080b",
+2905 => x"0b0b0b8a",
+2906 => x"38ff1c5c",
+2907 => x"0b0b0b0b",
+2908 => x"e4397b60",
+2909 => x"90050c0b",
+2910 => x"0b0bfdd4",
+2911 => x"398c08c8",
+2912 => x"3d0dbc3d",
+2913 => x"0880c03d",
+2914 => x"0880c23d",
+2915 => x"0880c53d",
+2916 => x"0880c73d",
+2917 => x"088c0c5d",
+2918 => x"4b434080",
+2919 => x"0bbe3d08",
+2920 => x"80c03d08",
+2921 => x"5bba3d0c",
+2922 => x"79bb3d0c",
+2923 => x"6080c005",
+2924 => x"08574875",
+2925 => x"682e0981",
+2926 => x"060b0b0b",
+2927 => x"80ea38b8",
+2928 => x"3d085780",
+2929 => x"77240b0b",
+2930 => x"0b818c38",
+2931 => x"677a0c76",
+2932 => x"9ffe0a06",
+2933 => x"56759ffe",
+2934 => x"0a2e0b0b",
+2935 => x"0b819838",
+2936 => x"b83d08ba",
+2937 => x"3d085a58",
+2938 => x"80568076",
+2939 => x"54547751",
+2940 => x"78520b0b",
+2941 => x"81d6f23f",
+2942 => x"80080b0b",
+2943 => x"0b81c638",
+2944 => x"80c13d08",
+2945 => x"5881780c",
+2946 => x"0b0b82f0",
+2947 => x"f05f8c08",
+2948 => x"802e0b0b",
+2949 => x"0b0b8638",
+2950 => x"811f8c08",
+2951 => x"0c7e5675",
+2952 => x"800cba3d",
+2953 => x"0d8c0c04",
+2954 => x"7f80c405",
+2955 => x"0884170c",
+2956 => x"816080c4",
+2957 => x"05082b88",
+2958 => x"170c7552",
+2959 => x"7f510b0b",
+2960 => x"80d8ad3f",
+2961 => x"676080c0",
+2962 => x"050cb83d",
+2963 => x"08577680",
+2964 => x"250b0b0b",
+2965 => x"fef63881",
+2966 => x"7a0c76fe",
+2967 => x"0a0670ba",
+2968 => x"3d0c709f",
+2969 => x"fe0a0657",
+2970 => x"57759ffe",
+2971 => x"0a2e0981",
+2972 => x"060b0b0b",
+2973 => x"feea3880",
+2974 => x"c13d0856",
+2975 => x"80ce8f76",
+2976 => x"0cb93d08",
+2977 => x"0b0b0b84",
+2978 => x"c93876bf",
+2979 => x"ffff060b",
+2980 => x"0b82f1a4",
+2981 => x"4056750b",
+2982 => x"0b0b84b6",
+2983 => x"388c0880",
+2984 => x"2e0b0b0b",
+2985 => x"fef73883",
+2986 => x"1f337f88",
+2987 => x"05585675",
+2988 => x"0b0b0b0b",
+2989 => x"8438831f",
+2990 => x"57768c08",
+2991 => x"0c7e560b",
+2992 => x"0b0bfedb",
+2993 => x"39ba3dff",
+2994 => x"b41156ff",
+2995 => x"b0055477",
+2996 => x"5278537f",
+2997 => x"510b0b80",
+2998 => x"eaa43f80",
+2999 => x"08b93d08",
+3000 => x"70942a8f",
+3001 => x"ff065e59",
+3002 => x"417b0b0b",
+3003 => x"0b83ef38",
+3004 => x"a73d08a7",
+3005 => x"3d080588",
+3006 => x"b2115d56",
+3007 => x"a07c250b",
+3008 => x"0b0b8ff4",
+3009 => x"3880c07c",
+3010 => x"31889217",
+3011 => x"79722bbc",
+3012 => x"3d08722a",
+3013 => x"07b53d71",
+3014 => x"5670555d",
+3015 => x"5157570b",
+3016 => x"0b81dfa9",
+3017 => x"3fb23d08",
+3018 => x"b43d08b2",
+3019 => x"3d5d5a58",
+3020 => x"8076240b",
+3021 => x"0b0b93f5",
+3022 => x"3877b73d",
+3023 => x"0c78b83d",
+3024 => x"0cb63d08",
+3025 => x"90ff0a05",
+3026 => x"b73d0cf7",
+3027 => x"cd1c5c81",
+3028 => x"4ebffc0a",
+3029 => x"56807655",
+3030 => x"55b63d08",
+3031 => x"b83d0858",
+3032 => x"5276537a",
+3033 => x"510b0b81",
+3034 => x"a2803f83",
+3035 => x"feca8fa7",
+3036 => x"56869bbd",
+3037 => x"86e17655",
+3038 => x"55b03d08",
+3039 => x"b23d0858",
+3040 => x"52765379",
+3041 => x"510b0b81",
+3042 => x"a3933f83",
+3043 => x"fe9a94a8",
+3044 => x"56f8db83",
+3045 => x"91b37655",
+3046 => x"55b23d08",
+3047 => x"b43d0858",
+3048 => x"527653ba",
+3049 => x"3dd00551",
+3050 => x"0b0b81a0",
+3051 => x"963fae3d",
+3052 => x"08b03d08",
+3053 => x"7d54ae3d",
+3054 => x"535a580b",
+3055 => x"0b81de8d",
+3056 => x"3faa3d4c",
+3057 => x"83fecd88",
+3058 => x"93568584",
+3059 => x"fdf3fb76",
+3060 => x"5555ac3d",
+3061 => x"08ae3d08",
+3062 => x"58527653",
+3063 => x"6b510b0b",
+3064 => x"81a2ba3f",
+3065 => x"a83dab3d",
+3066 => x"08ad3d08",
+3067 => x"59557756",
+3068 => x"78537954",
+3069 => x"7052450b",
+3070 => x"0b819fc7",
+3071 => x"3fa83d08",
+3072 => x"aa3d0871",
+3073 => x"5370545f",
+3074 => x"5d0b0b81",
+3075 => x"dfdf3f80",
+3076 => x"08438056",
+3077 => x"80765454",
+3078 => x"7c517d52",
+3079 => x"0b0b81d9",
+3080 => x"843f800b",
+3081 => x"8008240b",
+3082 => x"0b0b8eae",
+3083 => x"38810ba2",
+3084 => x"3d0c6296",
+3085 => x"260b0b0b",
+3086 => x"0bb23862",
+3087 => x"1010100b",
+3088 => x"0b82f2d8",
+3089 => x"05841108",
+3090 => x"71085555",
+3091 => x"b93d08bb",
+3092 => x"3d085952",
+3093 => x"5676520b",
+3094 => x"0b81d8c9",
+3095 => x"3f800b80",
+3096 => x"08246371",
+3097 => x"31445680",
+3098 => x"0ba23d0c",
+3099 => x"a73d087c",
+3100 => x"31ff055a",
+3101 => x"807a454b",
+3102 => x"6a7a240b",
+3103 => x"0b0b8da9",
+3104 => x"38806324",
+3105 => x"0b0b0ba0",
+3106 => x"8b38800b",
+3107 => x"a63d0c62",
+3108 => x"4f636305",
+3109 => x"44896227",
+3110 => x"0b0b0b0b",
+3111 => x"83388042",
+3112 => x"81588562",
+3113 => x"250b0b0b",
+3114 => x"0b873861",
+3115 => x"fc054280",
+3116 => x"58810ba1",
+3117 => x"3d0cff70",
+3118 => x"a53d0c46",
+3119 => x"6185260b",
+3120 => x"0b0b82bd",
+3121 => x"38611010",
+3122 => x"0b0b82f1",
+3123 => x"b0055675",
+3124 => x"08040b0b",
+3125 => x"82f0f85f",
+3126 => x"0b0b0bfb",
+3127 => x"c039b83d",
+3128 => x"08ba3d08",
+3129 => x"58b73d0c",
+3130 => x"76b83d0c",
+3131 => x"b63d08fc",
+3132 => x"0a069ffc",
+3133 => x"0a07b73d",
+3134 => x"0cf8811c",
+3135 => x"5c804eb2",
+3136 => x"3db13d5c",
+3137 => x"5abffc0a",
+3138 => x"56807655",
+3139 => x"55b63d08",
+3140 => x"b83d0858",
+3141 => x"5276537a",
+3142 => x"510b0b81",
+3143 => x"9ecc3f83",
+3144 => x"feca8fa7",
+3145 => x"56869bbd",
+3146 => x"86e17655",
+3147 => x"55b03d08",
+3148 => x"b23d0858",
+3149 => x"52765379",
+3150 => x"510b0b81",
+3151 => x"9fdf3f83",
+3152 => x"fe9a94a8",
+3153 => x"56f8db83",
+3154 => x"91b37655",
+3155 => x"55b23d08",
+3156 => x"b43d0858",
+3157 => x"527653ba",
+3158 => x"3dd00551",
+3159 => x"0b0b819c",
+3160 => x"e23fae3d",
+3161 => x"08b03d08",
+3162 => x"7d54ae3d",
+3163 => x"535a580b",
+3164 => x"0b81dad9",
+3165 => x"3faa3d4c",
+3166 => x"83fecd88",
+3167 => x"93568584",
+3168 => x"fdf3fb76",
+3169 => x"5555ac3d",
+3170 => x"08ae3d08",
+3171 => x"58527653",
+3172 => x"6b510b0b",
+3173 => x"819f863f",
+3174 => x"a83dab3d",
+3175 => x"08ad3d08",
+3176 => x"59557756",
+3177 => x"78537954",
+3178 => x"7052450b",
+3179 => x"0b819c93",
+3180 => x"3fa83d08",
+3181 => x"aa3d0871",
+3182 => x"5370545f",
+3183 => x"5d0b0b81",
+3184 => x"dcab3f80",
+3185 => x"08438056",
+3186 => x"80765454",
+3187 => x"7c517d52",
+3188 => x"0b0b81d5",
+3189 => x"d03f8008",
+3190 => x"80250b0b",
+3191 => x"0bfcce38",
+3192 => x"0b0b0b8a",
+3193 => x"f539800b",
+3194 => x"a13d0c68",
+3195 => x"63058111",
+3196 => x"70485da4",
+3197 => x"3d0c7b80",
+3198 => x"240b0b0b",
+3199 => x"0b833881",
+3200 => x"5c845a80",
+3201 => x"6080c405",
+3202 => x"0c987c26",
+3203 => x"0b0b0b0b",
+3204 => x"9b388057",
+3205 => x"81177a10",
+3206 => x"9411585b",
+3207 => x"577b7627",
+3208 => x"0b0b0b0b",
+3209 => x"ef387660",
+3210 => x"80c4050c",
+3211 => x"7f80c405",
+3212 => x"08527f51",
+3213 => x"0b0b80cf",
+3214 => x"903f8008",
+3215 => x"6080c005",
+3216 => x"0c800880",
+3217 => x"088e6827",
+3218 => x"58404d77",
+3219 => x"802e0b0b",
+3220 => x"0b86fd38",
+3221 => x"75802e0b",
+3222 => x"0b0b86f4",
+3223 => x"38b83d08",
+3224 => x"ba3d0871",
+3225 => x"b93d0c70",
+3226 => x"ba3d0c64",
+3227 => x"a53d0c67",
+3228 => x"a73d0c5a",
+3229 => x"58825c80",
+3230 => x"63250b0b",
+3231 => x"0b8cae38",
+3232 => x"62832b80",
+3233 => x"f8060b0b",
+3234 => x"82f2d811",
+3235 => x"080b0b82",
+3236 => x"f2dc1208",
+3237 => x"65842c70",
+3238 => x"842a7081",
+3239 => x"0651545d",
+3240 => x"405e5675",
+3241 => x"0b0b0b8a",
+3242 => x"8a387980",
+3243 => x"2e0b0b0b",
+3244 => x"0ba8380b",
+3245 => x"0b82f2b0",
+3246 => x"58798106",
+3247 => x"56750b0b",
+3248 => x"0b88f138",
+3249 => x"79812c88",
+3250 => x"19595a79",
+3251 => x"0b0b0b0b",
+3252 => x"e838b83d",
+3253 => x"08ba3d08",
+3254 => x"5a587c54",
+3255 => x"7d557752",
+3256 => x"78536451",
+3257 => x"0b0b81bb",
+3258 => x"b43fa83d",
+3259 => x"08aa3d08",
+3260 => x"71bb3d0c",
+3261 => x"70bc3d0c",
+3262 => x"5a58a13d",
+3263 => x"08802e0b",
+3264 => x"0b0b80eb",
+3265 => x"38805a9f",
+3266 => x"fc0a5680",
+3267 => x"76545477",
+3268 => x"5178520b",
+3269 => x"0b81d38d",
+3270 => x"3f798008",
+3271 => x"240b0b0b",
+3272 => x"8def3880",
+3273 => x"66250b0b",
+3274 => x"0b80c438",
+3275 => x"79802e0b",
+3276 => x"0b0b0bbb",
+3277 => x"38800ba4",
+3278 => x"3d08250b",
+3279 => x"0b0b84f8",
+3280 => x"38a33d08",
+3281 => x"63ff0544",
+3282 => x"4680c882",
+3283 => x"0a568076",
+3284 => x"55557752",
+3285 => x"78536451",
+3286 => x"0b0b819b",
+3287 => x"c03fa83d",
+3288 => x"08aa3d08",
+3289 => x"5ab93d0c",
+3290 => x"78ba3d0c",
+3291 => x"811c5c7b",
+3292 => x"5264510b",
+3293 => x"0b81d6d5",
+3294 => x"3fb83d08",
+3295 => x"ba3d0858",
+3296 => x"547655a8",
+3297 => x"3d08aa3d",
+3298 => x"08585276",
+3299 => x"536b510b",
+3300 => x"0b819b89",
+3301 => x"3f80f082",
+3302 => x"0a568076",
+3303 => x"5555aa3d",
+3304 => x"08ac3d08",
+3305 => x"58527653",
+3306 => x"ac3d510b",
+3307 => x"0b819893",
+3308 => x"3fac3d08",
+3309 => x"ae3d0858",
+3310 => x"b53d0c76",
+3311 => x"b63d0cb4",
+3312 => x"3d0886bf",
+3313 => x"0a05b53d",
+3314 => x"0c65802e",
+3315 => x"0b0b0b9b",
+3316 => x"c9386f80",
+3317 => x"2e0b0b0b",
+3318 => x"99e23865",
+3319 => x"1010100b",
+3320 => x"0b82f2d0",
+3321 => x"05841108",
+3322 => x"71085656",
+3323 => x"568ffc0a",
+3324 => x"56807653",
+3325 => x"5364510b",
+3326 => x"0b81b9a1",
+3327 => x"3fb43d08",
+3328 => x"b63d0858",
+3329 => x"547655a8",
+3330 => x"3d08aa3d",
+3331 => x"08585276",
+3332 => x"536b510b",
+3333 => x"0b8198d2",
+3334 => x"3faa3d08",
+3335 => x"ac3d0858",
+3336 => x"b53d0c76",
+3337 => x"b63d0c80",
+3338 => x"0bb93d08",
+3339 => x"bb3d085b",
+3340 => x"595c80c8",
+3341 => x"820a5d80",
+3342 => x"5e775178",
+3343 => x"520b0b81",
+3344 => x"d7ab3f80",
+3345 => x"08800853",
+3346 => x"65525a0b",
+3347 => x"0b81d4fd",
+3348 => x"3fa83d08",
+3349 => x"aa3d0858",
+3350 => x"547655b8",
+3351 => x"3d08ba3d",
+3352 => x"08585276",
+3353 => x"536b510b",
+3354 => x"0b8197fe",
+3355 => x"3faa3d08",
+3356 => x"ac3d085a",
+3357 => x"b93d0c78",
+3358 => x"ba3d0cb0",
+3359 => x"1a56757f",
+3360 => x"70810541",
+3361 => x"34b83d08",
+3362 => x"ba3d08b6",
+3363 => x"3d08b83d",
+3364 => x"085a5578",
+3365 => x"56715370",
+3366 => x"545a580b",
+3367 => x"0b81d085",
+3368 => x"3f800b80",
+3369 => x"08240b0b",
+3370 => x"0b87d438",
+3371 => x"77547855",
+3372 => x"9ffc0a56",
+3373 => x"80765353",
+3374 => x"64510b0b",
+3375 => x"8197ab3f",
+3376 => x"b43d08b6",
+3377 => x"3d087155",
+3378 => x"7056aa3d",
+3379 => x"08ac3d08",
+3380 => x"5a537854",
+3381 => x"5a580b0b",
+3382 => x"81cfca3f",
+3383 => x"800b8008",
+3384 => x"240b0b0b",
+3385 => x"86e63881",
+3386 => x"1c5c7b66",
+3387 => x"250b0b0b",
+3388 => x"81c6387c",
+3389 => x"547d5577",
+3390 => x"5278536b",
+3391 => x"510b0b81",
+3392 => x"989b3faa",
+3393 => x"3d08ac3d",
+3394 => x"0858b53d",
+3395 => x"0c76b63d",
+3396 => x"0c7c547d",
+3397 => x"55b83d08",
+3398 => x"ba3d0858",
+3399 => x"52765364",
+3400 => x"510b0b81",
+3401 => x"97f73fa8",
+3402 => x"3d08aa3d",
+3403 => x"0871bb3d",
+3404 => x"0c70bc3d",
+3405 => x"0c5a580b",
+3406 => x"0b0bfdfd",
+3407 => x"398ffc0a",
+3408 => x"58807855",
+3409 => x"7056b53d",
+3410 => x"08b73d08",
+3411 => x"59537754",
+3412 => x"6552590b",
+3413 => x"0b8194eb",
+3414 => x"3fa83d08",
+3415 => x"aa3d0858",
+3416 => x"537654b8",
+3417 => x"3d08ba3d",
+3418 => x"08585176",
+3419 => x"520b0b81",
+3420 => x"cc9f3f80",
+3421 => x"0880240b",
+3422 => x"0b0b85d0",
+3423 => x"38b43d08",
+3424 => x"b63d0858",
+3425 => x"54765577",
+3426 => x"5278536b",
+3427 => x"510b0b81",
+3428 => x"95d83faa",
+3429 => x"3d08ac3d",
+3430 => x"08585376",
+3431 => x"54b83d08",
+3432 => x"ba3d0858",
+3433 => x"5176520b",
+3434 => x"0b81cdf9",
+3435 => x"3f800b80",
+3436 => x"08240b0b",
+3437 => x"0b97cb38",
+3438 => x"6cb73d08",
+3439 => x"b93d085b",
+3440 => x"ba3d0c79",
+3441 => x"bb3d0ca3",
+3442 => x"3d08a63d",
+3443 => x"0848445f",
+3444 => x"800ba73d",
+3445 => x"08575877",
+3446 => x"76240b0b",
+3447 => x"0b0b8338",
+3448 => x"81588078",
+3449 => x"0657628e",
+3450 => x"240b0b0b",
+3451 => x"89ad3881",
+3452 => x"70790658",
+3453 => x"5976802e",
+3454 => x"0b0b0b89",
+3455 => x"9e386210",
+3456 => x"10100b0b",
+3457 => x"82f2d805",
+3458 => x"70088412",
+3459 => x"08806c24",
+3460 => x"53405e56",
+3461 => x"8066250b",
+3462 => x"0b0b86c9",
+3463 => x"38810bb9",
+3464 => x"3d08bb3d",
+3465 => x"085b595c",
+3466 => x"7c547d55",
+3467 => x"77527853",
+3468 => x"64510b0b",
+3469 => x"81b4e63f",
+3470 => x"a83d08aa",
+3471 => x"3d085851",
+3472 => x"76520b0b",
+3473 => x"81d3a63f",
+3474 => x"80088008",
+3475 => x"5365525a",
+3476 => x"0b0b81d0",
+3477 => x"f83f7c54",
+3478 => x"7d55a83d",
+3479 => x"08aa3d08",
+3480 => x"58527653",
+3481 => x"6b510b0b",
+3482 => x"8195b23f",
+3483 => x"aa3d08ac",
+3484 => x"3d085854",
+3485 => x"7655b83d",
+3486 => x"08ba3d08",
+3487 => x"58527653",
+3488 => x"ac3d510b",
+3489 => x"0b8193e2",
+3490 => x"3fac3d08",
+3491 => x"ae3d085a",
+3492 => x"b93d0c78",
+3493 => x"ba3d0cb0",
+3494 => x"1a56757f",
+3495 => x"70810541",
+3496 => x"347b662e",
+3497 => x"0b0b0b82",
+3498 => x"c23880c8",
+3499 => x"820a5680",
+3500 => x"765555b8",
+3501 => x"3d08ba3d",
+3502 => x"08585276",
+3503 => x"5364510b",
+3504 => x"0b8194d9",
+3505 => x"3fa83d08",
+3506 => x"aa3d0871",
+3507 => x"bb3d0c70",
+3508 => x"bc3d0c5a",
+3509 => x"58805680",
+3510 => x"76545477",
+3511 => x"5178520b",
+3512 => x"0b81c585",
+3513 => x"3f800880",
+3514 => x"2e0b0b0b",
+3515 => x"83913881",
+3516 => x"1c5c0b0b",
+3517 => x"0bfeb139",
+3518 => x"a07c31ba",
+3519 => x"3d08712b",
+3520 => x"b43d7155",
+3521 => x"70545c51",
+3522 => x"560b0b81",
+3523 => x"cfbf3fb2",
+3524 => x"3d08b43d",
+3525 => x"08b23d5d",
+3526 => x"5a587580",
+3527 => x"250b0b0b",
+3528 => x"f097380b",
+3529 => x"0b0b8485",
+3530 => x"3979304b",
+3531 => x"80440b0b",
+3532 => x"0bf2ce39",
+3533 => x"811c7808",
+3534 => x"841a0859",
+3535 => x"5577567d",
+3536 => x"537e5465",
+3537 => x"525c0b0b",
+3538 => x"8193d23f",
+3539 => x"a83d08aa",
+3540 => x"3d085f5d",
+3541 => x"0b0b0bf6",
+3542 => x"eb396252",
+3543 => x"64510b0b",
+3544 => x"81ceea3f",
+3545 => x"7c537d54",
+3546 => x"a83d08aa",
+3547 => x"3d085851",
+3548 => x"76520b0b",
+3549 => x"81c6863f",
+3550 => x"80083070",
+3551 => x"8008079f",
+3552 => x"2a647131",
+3553 => x"4551560b",
+3554 => x"0b0bf1a1",
+3555 => x"39800ba1",
+3556 => x"3d0c8069",
+3557 => x"250b0b0b",
+3558 => x"84e73868",
+3559 => x"69a53d0c",
+3560 => x"69475c0b",
+3561 => x"0b0bf4d9",
+3562 => x"39925c80",
+3563 => x"490b0b0b",
+3564 => x"f4cf3979",
+3565 => x"8f060b0b",
+3566 => x"82f2d008",
+3567 => x"0b0b82f2",
+3568 => x"d4085955",
+3569 => x"77567853",
+3570 => x"79546552",
+3571 => x"5a0b0b81",
+3572 => x"b1cb3fa8",
+3573 => x"3d08aa3d",
+3574 => x"0871bb3d",
+3575 => x"0c70bc3d",
+3576 => x"0c5a5883",
+3577 => x"5c0b0b0b",
+3578 => x"f5c039b8",
+3579 => x"3d08ba3d",
+3580 => x"08715670",
+3581 => x"57585276",
+3582 => x"5364510b",
+3583 => x"0b818fc3",
+3584 => x"3fa83d08",
+3585 => x"aa3d0871",
+3586 => x"bb3d0c70",
+3587 => x"bc3d0c7e",
+3588 => x"557f5671",
+3589 => x"5370545a",
+3590 => x"580b0b81",
+3591 => x"c6f33f80",
+3592 => x"0880240b",
+3593 => x"0b0b0ba4",
+3594 => x"387c537d",
+3595 => x"54775178",
+3596 => x"520b0b81",
+3597 => x"c2b33f80",
+3598 => x"080b0b0b",
+3599 => x"80c13879",
+3600 => x"81065675",
+3601 => x"802e0b0b",
+3602 => x"0b0bb438",
+3603 => x"ff1f7033",
+3604 => x"575f75b9",
+3605 => x"2e098106",
+3606 => x"0b0b0b0b",
+3607 => x"94387e6d",
+3608 => x"2e098106",
+3609 => x"0b0b0b0b",
+3610 => x"e3386281",
+3611 => x"0543b06d",
+3612 => x"347e7f81",
+3613 => x"05713381",
+3614 => x"05584057",
+3615 => x"75773460",
+3616 => x"527f510b",
+3617 => x"0b80c3e8",
+3618 => x"3f807f34",
+3619 => x"80c13d08",
+3620 => x"63810571",
+3621 => x"0c568c08",
+3622 => x"802e0b0b",
+3623 => x"0b0b8538",
+3624 => x"7e8c080c",
+3625 => x"6c800cba",
+3626 => x"3d0d8c0c",
+3627 => x"0462305b",
+3628 => x"7a802e0b",
+3629 => x"0b0bf4c2",
+3630 => x"387a832b",
+3631 => x"80f8060b",
+3632 => x"0b82f2dc",
+3633 => x"11080b0b",
+3634 => x"82f2d812",
+3635 => x"08565678",
+3636 => x"53795465",
+3637 => x"52560b0b",
+3638 => x"8190c23f",
+3639 => x"a83d08aa",
+3640 => x"3d0871bb",
+3641 => x"3d0c70bc",
+3642 => x"3d0c7c84",
+3643 => x"2c5c5a58",
+3644 => x"79802e0b",
+3645 => x"0b0bf482",
+3646 => x"380b0b82",
+3647 => x"f2b07a81",
+3648 => x"06575b75",
+3649 => x"0b0b0b82",
+3650 => x"90387981",
+3651 => x"2c881c5c",
+3652 => x"5a79802e",
+3653 => x"0b0b0bf3",
+3654 => x"e1387981",
+3655 => x"06567580",
+3656 => x"2e0b0b0b",
+3657 => x"0be4380b",
+3658 => x"0b0b81ed",
+3659 => x"399f820a",
+3660 => x"56807655",
+3661 => x"55775278",
+3662 => x"537a510b",
+3663 => x"0b818d83",
+3664 => x"3fb03d08",
+3665 => x"b23d085a",
+3666 => x"b73d0c78",
+3667 => x"b83d0cb6",
+3668 => x"3d0890ff",
+3669 => x"0a05b73d",
+3670 => x"0cf7cd1c",
+3671 => x"5c814e0b",
+3672 => x"0b0bebed",
+3673 => x"39757906",
+3674 => x"5675802e",
+3675 => x"0b0b0bf9",
+3676 => x"ac388070",
+3677 => x"484a6966",
+3678 => x"240b0b0b",
+3679 => x"82943880",
+3680 => x"d0820a56",
+3681 => x"80765555",
+3682 => x"7c527d53",
+3683 => x"64510b0b",
+3684 => x"818f8a3f",
+3685 => x"a83d08aa",
+3686 => x"3d085853",
+3687 => x"7654b83d",
+3688 => x"08ba3d08",
+3689 => x"58517652",
+3690 => x"0b0b81c8",
+3691 => x"8c3f6980",
+3692 => x"08250b0b",
+3693 => x"0b81db38",
+3694 => x"6c5fb17f",
+3695 => x"70810541",
+3696 => x"34628105",
+3697 => x"4366527f",
+3698 => x"510b0b80",
+3699 => x"c1a23f69",
+3700 => x"802e0b0b",
+3701 => x"0bfda838",
+3702 => x"67307069",
+3703 => x"079f2a51",
+3704 => x"56676a2e",
+3705 => x"0b0b0b0b",
+3706 => x"8838750b",
+3707 => x"0b0b80e5",
+3708 => x"3869527f",
+3709 => x"510b0b80",
+3710 => x"c0f63f0b",
+3711 => x"0b0bfcff",
+3712 => x"39817071",
+3713 => x"a63d0c71",
+3714 => x"485d490b",
+3715 => x"0b0beff1",
+3716 => x"39815a0b",
+3717 => x"0b0bf28b",
+3718 => x"39811c7b",
+3719 => x"08841d08",
+3720 => x"59557756",
+3721 => x"78537954",
+3722 => x"65525c0b",
+3723 => x"0b818ded",
+3724 => x"3fa83d08",
+3725 => x"aa3d0871",
+3726 => x"bb3d0c70",
+3727 => x"bc3d0c7b",
+3728 => x"812c881e",
+3729 => x"5e5c5a58",
+3730 => x"790b0b0b",
+3731 => x"fdcc380b",
+3732 => x"0b0bf1a6",
+3733 => x"3967527f",
+3734 => x"510b0b80",
+3735 => x"c0923f69",
+3736 => x"527f510b",
+3737 => x"0b80c088",
+3738 => x"3f0b0b0b",
+3739 => x"fc913977",
+3740 => x"810a3253",
+3741 => x"78547951",
+3742 => x"7a520b0b",
+3743 => x"81c4a63f",
+3744 => x"80088025",
+3745 => x"0b0b0bf6",
+3746 => x"af3879b9",
+3747 => x"3d0c7aba",
+3748 => x"3d0c6809",
+3749 => x"430b0b0b",
+3750 => x"feab396a",
+3751 => x"a63d0878",
+3752 => x"794b4c59",
+3753 => x"596f802e",
+3754 => x"0b0b0b80",
+3755 => x"d0388162",
+3756 => x"250b0b0b",
+3757 => x"8ec73865",
+3758 => x"ff05a63d",
+3759 => x"08713159",
+3760 => x"5aa53d08",
+3761 => x"7a250b0b",
+3762 => x"0b0b9438",
+3763 => x"79a63d08",
+3764 => x"316f11a1",
+3765 => x"3d0ca63d",
+3766 => x"0805a63d",
+3767 => x"0c765865",
+3768 => x"5c806624",
+3769 => x"0b0b0b84",
+3770 => x"cb386a1c",
+3771 => x"641d454b",
+3772 => x"81527f51",
+3773 => x"0b0b80c4",
+3774 => x"de3f8008",
+3775 => x"4a788024",
+3776 => x"56806425",
+3777 => x"0b0b0b0b",
+3778 => x"a3387580",
+3779 => x"2e0b0b0b",
+3780 => x"0b9a3863",
+3781 => x"5c786425",
+3782 => x"0b0b0b0b",
+3783 => x"8338785c",
+3784 => x"6a7c3179",
+3785 => x"7d31657e",
+3786 => x"31465a4b",
+3787 => x"800ba63d",
+3788 => x"08250b0b",
+3789 => x"0b80cb38",
+3790 => x"6f802e0b",
+3791 => x"0b0b8ae5",
+3792 => x"38807825",
+3793 => x"0b0b0b0b",
+3794 => x"ac387753",
+3795 => x"69527f51",
+3796 => x"0b0b80c7",
+3797 => x"943f8008",
+3798 => x"61548008",
+3799 => x"5360524a",
+3800 => x"0b0b80c4",
+3801 => x"8e3f8008",
+3802 => x"61536052",
+3803 => x"560b0b0b",
+3804 => x"bdfe3f75",
+3805 => x"41a53d08",
+3806 => x"78315a79",
+3807 => x"0b0b0b83",
+3808 => x"9e388152",
+3809 => x"7f510b0b",
+3810 => x"80c3cc3f",
+3811 => x"80084780",
+3812 => x"6f250b0b",
+3813 => x"0b0b9138",
+3814 => x"6e538008",
+3815 => x"527f510b",
+3816 => x"0b80c6c5",
+3817 => x"3f800847",
+3818 => x"80588162",
+3819 => x"250b0b0b",
+3820 => x"829b3863",
+3821 => x"81059f06",
+3822 => x"5c6e0b0b",
+3823 => x"0b81ee38",
+3824 => x"7b802e0b",
+3825 => x"0b0b0b85",
+3826 => x"38a07c31",
+3827 => x"5c847c25",
+3828 => x"0b0b0b88",
+3829 => x"c238fc1c",
+3830 => x"6b11711b",
+3831 => x"5b4c6405",
+3832 => x"44806b25",
+3833 => x"0b0b0b0b",
+3834 => x"90386a53",
+3835 => x"60527f51",
+3836 => x"0b0b80c7",
+3837 => x"f23f8008",
+3838 => x"41806425",
+3839 => x"0b0b0b0b",
+3840 => x"90386353",
+3841 => x"66527f51",
+3842 => x"0b0b80c7",
+3843 => x"da3f8008",
+3844 => x"47a13d08",
+3845 => x"0b0b0b80",
+3846 => x"da388066",
+3847 => x"25568262",
+3848 => x"250b0b0b",
+3849 => x"82c73875",
+3850 => x"802e0b0b",
+3851 => x"0b82be38",
+3852 => x"8066240b",
+3853 => x"0b0bfcda",
+3854 => x"38805485",
+3855 => x"5366527f",
+3856 => x"510b0b0b",
+3857 => x"bcce3f80",
+3858 => x"08800853",
+3859 => x"6152470b",
+3860 => x"0b80c985",
+3861 => x"3f800b80",
+3862 => x"08250b0b",
+3863 => x"0bfcb338",
+3864 => x"6c5fb17f",
+3865 => x"70810541",
+3866 => x"34628105",
+3867 => x"430b0b0b",
+3868 => x"fad33966",
+3869 => x"5260510b",
+3870 => x"0b80c8dd",
+3871 => x"3f800880",
+3872 => x"250b0b0b",
+3873 => x"ff943862",
+3874 => x"ff054380",
+3875 => x"548a5360",
+3876 => x"527f510b",
+3877 => x"0b0bbbfc",
+3878 => x"3f800841",
+3879 => x"6f0b0b0b",
+3880 => x"81b038a3",
+3881 => x"3d08460b",
+3882 => x"0b0bfeee",
+3883 => x"39669005",
+3884 => x"08101067",
+3885 => x"05901108",
+3886 => x"52560b0b",
+3887 => x"0bbec93f",
+3888 => x"63800831",
+3889 => x"9f065c0b",
+3890 => x"0b0bfdf4",
+3891 => x"39b93d08",
+3892 => x"782e0981",
+3893 => x"060b0b0b",
+3894 => x"fdd938b8",
+3895 => x"3d0870bf",
+3896 => x"ffff0657",
+3897 => x"5775782e",
+3898 => x"0981060b",
+3899 => x"0b0bfdc3",
+3900 => x"38769ffe",
+3901 => x"0a065675",
+3902 => x"782e0b0b",
+3903 => x"0bfdb438",
+3904 => x"6a810564",
+3905 => x"8105454b",
+3906 => x"81648105",
+3907 => x"9f065d58",
+3908 => x"6e802e0b",
+3909 => x"0b0bfda8",
+3910 => x"380b0b0b",
+3911 => x"ff8f3979",
+3912 => x"5360527f",
+3913 => x"510b0b80",
+3914 => x"c3bf3f80",
+3915 => x"08410b0b",
+3916 => x"0bfccf39",
+3917 => x"6a663159",
+3918 => x"806b114c",
+3919 => x"64054481",
+3920 => x"527f510b",
+3921 => x"0b80c08f",
+3922 => x"3f80084a",
+3923 => x"0b0b0bfb",
+3924 => x"ac398054",
+3925 => x"8a536952",
+3926 => x"7f510b0b",
+3927 => x"0bbab53f",
+3928 => x"8008a43d",
+3929 => x"08474a0b",
+3930 => x"0b0bfdae",
+3931 => x"39815c6f",
+3932 => x"802e0b0b",
+3933 => x"0b82bb38",
+3934 => x"8079250b",
+3935 => x"0b0b0b90",
+3936 => x"38785369",
+3937 => x"527f510b",
+3938 => x"0b80c4db",
+3939 => x"3f80084a",
+3940 => x"6948770b",
+3941 => x"0b0b82e9",
+3942 => x"38815c66",
+3943 => x"5260510b",
+3944 => x"0b0bdce3",
+3945 => x"3f8008b0",
+3946 => x"05685361",
+3947 => x"52570b0b",
+3948 => x"80c6a63f",
+3949 => x"80086a54",
+3950 => x"67536052",
+3951 => x"5a0b0b80",
+3952 => x"c6fe3f80",
+3953 => x"0856815b",
+3954 => x"80088c05",
+3955 => x"08802e0b",
+3956 => x"0b0b8299",
+3957 => x"3875527f",
+3958 => x"510b0b0b",
+3959 => x"b9923f7a",
+3960 => x"62075675",
+3961 => x"0b0b0b0b",
+3962 => x"9038b93d",
+3963 => x"08810656",
+3964 => x"75802e0b",
+3965 => x"0b0b82c8",
+3966 => x"38807a24",
+3967 => x"0b0b0b82",
+3968 => x"da387962",
+3969 => x"0756750b",
+3970 => x"0b0b0b90",
+3971 => x"38b93d08",
+3972 => x"81065675",
+3973 => x"802e0b0b",
+3974 => x"0b82c038",
+3975 => x"7a80240b",
+3976 => x"0b0b8883",
+3977 => x"38767f70",
+3978 => x"81054134",
+3979 => x"7b662e0b",
+3980 => x"0b0b83fd",
+3981 => x"3880548a",
+3982 => x"5360527f",
+3983 => x"510b0b0b",
+3984 => x"b8d23f80",
+3985 => x"0841676a",
+3986 => x"2e0b0b0b",
+3987 => x"83ac3880",
+3988 => x"548a5367",
+3989 => x"527f510b",
+3990 => x"0b0bb8b8",
+3991 => x"3f800848",
+3992 => x"80548a53",
+3993 => x"69527f51",
+3994 => x"0b0b0bb8",
+3995 => x"a73f8008",
+3996 => x"811d5d4a",
+3997 => x"66526051",
+3998 => x"0b0b0bdb",
+3999 => x"8a3f8008",
+4000 => x"b0056853",
+4001 => x"6152570b",
+4002 => x"0b80c4cd",
+4003 => x"3f80086a",
+4004 => x"54675360",
+4005 => x"525a0b0b",
+4006 => x"80c5a53f",
+4007 => x"80085681",
+4008 => x"5b80088c",
+4009 => x"05080b0b",
+4010 => x"0bfeaa38",
+4011 => x"0b0b0b0b",
+4012 => x"bc396652",
+4013 => x"7e7f8105",
+4014 => x"62534056",
+4015 => x"0b0b0bda",
+4016 => x"c63f8008",
+4017 => x"b0055776",
+4018 => x"76347b66",
+4019 => x"250b0b0b",
+4020 => x"82df3880",
+4021 => x"548a5360",
+4022 => x"527f510b",
+4023 => x"0b0bb7b4",
+4024 => x"3f800881",
+4025 => x"1d5d410b",
+4026 => x"0b0b0bc6",
+4027 => x"39800852",
+4028 => x"60510b0b",
+4029 => x"80c3e23f",
+4030 => x"80085b0b",
+4031 => x"0b0bfdd5",
+4032 => x"39698405",
+4033 => x"08527f51",
+4034 => x"0b0b0bb5",
+4035 => x"bc3f8008",
+4036 => x"68900508",
+4037 => x"10108805",
+4038 => x"54688c05",
+4039 => x"5380088c",
+4040 => x"05524a0b",
+4041 => x"0bff94e3",
+4042 => x"3f815369",
+4043 => x"527f510b",
+4044 => x"0b80c1b3",
+4045 => x"3f80084a",
+4046 => x"815c0b0b",
+4047 => x"0bfcdc39",
+4048 => x"76b92e0b",
+4049 => x"0b0b80d0",
+4050 => x"38798024",
+4051 => x"1757767f",
+4052 => x"70810541",
+4053 => x"340b0b0b",
+4054 => x"f4eb3980",
+4055 => x"7b250b0b",
+4056 => x"0b0beb38",
+4057 => x"81536052",
+4058 => x"7f510b0b",
+4059 => x"80c0f83f",
+4060 => x"80086753",
+4061 => x"80085241",
+4062 => x"0b0b80c2",
+4063 => x"dc3f800b",
+4064 => x"8008250b",
+4065 => x"0b0b80c8",
+4066 => x"38811757",
+4067 => x"76ba2e09",
+4068 => x"81060b0b",
+4069 => x"0bffb738",
+4070 => x"b97f7081",
+4071 => x"054134ff",
+4072 => x"1f703357",
+4073 => x"5f75b92e",
+4074 => x"0981060b",
+4075 => x"0b0b81d0",
+4076 => x"387e6d2e",
+4077 => x"0981060b",
+4078 => x"0b0b0be3",
+4079 => x"38628105",
+4080 => x"6d4043b1",
+4081 => x"7f708105",
+4082 => x"41340b0b",
+4083 => x"0bf3f639",
+4084 => x"80080b0b",
+4085 => x"0bfef738",
+4086 => x"76810656",
+4087 => x"75802e0b",
+4088 => x"0b0bfeea",
+4089 => x"38811757",
+4090 => x"76ba2e09",
+4091 => x"81060b0b",
+4092 => x"0bfedb38",
+4093 => x"0b0b0bff",
+4094 => x"9f398054",
+4095 => x"8a536952",
+4096 => x"7f510b0b",
+4097 => x"0bb58d3f",
+4098 => x"80088008",
+4099 => x"811e5e49",
+4100 => x"4a0b0b0b",
+4101 => x"fcde397b",
+4102 => x"83240b0b",
+4103 => x"0bf7c238",
+4104 => x"9c1c6b11",
+4105 => x"711b5b4c",
+4106 => x"6405440b",
+4107 => x"0b0bf7b1",
+4108 => x"39815360",
+4109 => x"527f510b",
+4110 => x"0b0bbfab",
+4111 => x"3f800867",
+4112 => x"53800852",
+4113 => x"410b0b80",
+4114 => x"c18f3f80",
+4115 => x"0880240b",
+4116 => x"0b0bfecb",
+4117 => x"3880080b",
+4118 => x"0b0b0b8c",
+4119 => x"38768106",
+4120 => x"56750b0b",
+4121 => x"0bfeb838",
+4122 => x"ff1f7033",
+4123 => x"575f75b0",
+4124 => x"2e0b0b0b",
+4125 => x"0bf23881",
+4126 => x"1f5f0b0b",
+4127 => x"0bf2c639",
+4128 => x"7e7f8105",
+4129 => x"71338105",
+4130 => x"58405775",
+4131 => x"77340b0b",
+4132 => x"0bf2b239",
+4133 => x"6a633163",
+4134 => x"30a73d0c",
+4135 => x"4b804f0b",
+4136 => x"0b0bdff1",
+4137 => x"39a53d08",
+4138 => x"5360527f",
+4139 => x"510b0b0b",
+4140 => x"bcb73f80",
+4141 => x"08410b0b",
+4142 => x"0bf5c739",
+4143 => x"65101010",
+4144 => x"0b0b82f2",
+4145 => x"d0058411",
+4146 => x"08710856",
+4147 => x"56b53d08",
+4148 => x"b73d0859",
+4149 => x"53567653",
+4150 => x"64510b0b",
+4151 => x"8180be3f",
+4152 => x"a83d08aa",
+4153 => x"3d0858b5",
+4154 => x"3d0c76b6",
+4155 => x"3d0c810b",
+4156 => x"b93d08bb",
+4157 => x"3d085b59",
+4158 => x"5c775178",
+4159 => x"520b0b81",
+4160 => x"bdeb3f80",
+4161 => x"08800853",
+4162 => x"65525a0b",
+4163 => x"0b81bbbd",
+4164 => x"3fa83d08",
+4165 => x"aa3d0858",
+4166 => x"547655b8",
+4167 => x"3d08ba3d",
+4168 => x"08585276",
+4169 => x"536b510b",
+4170 => x"0b80febe",
+4171 => x"3faa3d08",
+4172 => x"ac3d085a",
+4173 => x"b93d0c78",
+4174 => x"ba3d0cb0",
+4175 => x"1a56757f",
+4176 => x"70810541",
+4177 => x"347b662e",
+4178 => x"0b0b0be7",
+4179 => x"f038811c",
+4180 => x"5c80c882",
+4181 => x"0a568076",
+4182 => x"5555b83d",
+4183 => x"08ba3d08",
+4184 => x"58527653",
+4185 => x"64510b0b",
+4186 => x"80ffb23f",
+4187 => x"a83d08aa",
+4188 => x"3d0871bb",
+4189 => x"3d0c70bc",
+4190 => x"3d0c5a58",
+4191 => x"0b0b0bfe",
+4192 => x"f839ff1f",
+4193 => x"7033575f",
+4194 => x"75b02e0b",
+4195 => x"0b0b0bf2",
+4196 => x"38811f5f",
+4197 => x"0b0b0bed",
+4198 => x"e6396566",
+4199 => x"484a80d0",
+4200 => x"820a5680",
+4201 => x"765555b8",
+4202 => x"3d08ba3d",
+4203 => x"08585276",
+4204 => x"5364510b",
+4205 => x"0b80fdb2",
+4206 => x"3fa83d08",
+4207 => x"aa3d08b6",
+4208 => x"3d08b83d",
+4209 => x"08715770",
+4210 => x"58735572",
+4211 => x"565c5a5c",
+4212 => x"5a0b0b81",
+4213 => x"b3bb3f80",
+4214 => x"0b800825",
+4215 => x"0b0b0bf1",
+4216 => x"8e3879b9",
+4217 => x"3d0c7aba",
+4218 => x"3d0c6c5f",
+4219 => x"b17f7081",
+4220 => x"05413462",
+4221 => x"8105430b",
+4222 => x"0b0befc9",
+4223 => x"3988b316",
+4224 => x"5c6d0b0b",
+4225 => x"0bf1e338",
+4226 => x"b60ba83d",
+4227 => x"08316b11",
+4228 => x"4c640544",
+4229 => x"81527f51",
+4230 => x"0b0b0bb6",
+4231 => x"ba3f8008",
+4232 => x"4a0b0b0b",
+4233 => x"f1d73976",
+4234 => x"b92e0b0b",
+4235 => x"0bfae938",
+4236 => x"81175675",
+4237 => x"7f708105",
+4238 => x"41340b0b",
+4239 => x"0bef8639",
+4240 => x"f83d0d7a",
+4241 => x"5877802e",
+4242 => x"0b0b0b81",
+4243 => x"bd380b0b",
+4244 => x"82f4ec08",
+4245 => x"54b81408",
+4246 => x"802e0b0b",
+4247 => x"0b818238",
+4248 => x"8c182270",
+4249 => x"902b7090",
+4250 => x"2c70832a",
+4251 => x"81328106",
+4252 => x"5c515754",
+4253 => x"780b0b0b",
+4254 => x"80df3890",
+4255 => x"18085776",
+4256 => x"802e0b0b",
+4257 => x"0b80d238",
+4258 => x"77087731",
+4259 => x"77790c76",
+4260 => x"83067a58",
+4261 => x"5555730b",
+4262 => x"0b0b0b85",
+4263 => x"38941808",
+4264 => x"56758819",
+4265 => x"0c807525",
+4266 => x"0b0b0b0b",
+4267 => x"ac387453",
+4268 => x"76529c18",
+4269 => x"0851a418",
+4270 => x"0854732d",
+4271 => x"800b8008",
+4272 => x"250b0b0b",
+4273 => x"80df3880",
+4274 => x"08177580",
+4275 => x"08315657",
+4276 => x"7480240b",
+4277 => x"0b0b0bd6",
+4278 => x"38800b80",
+4279 => x"0c8a3d0d",
+4280 => x"0473510b",
+4281 => x"0b0b81f7",
+4282 => x"3f8c1822",
+4283 => x"70902b70",
+4284 => x"902c7083",
+4285 => x"2a813281",
+4286 => x"065c5157",
+4287 => x"54780b0b",
+4288 => x"0b0bd638",
+4289 => x"0b0b0bfe",
+4290 => x"f2390b0b",
+4291 => x"8184c052",
+4292 => x"0b0b82f4",
+4293 => x"ec08510b",
+4294 => x"0b0b93b4",
+4295 => x"3f800880",
+4296 => x"0c8a3d0d",
+4297 => x"048c1822",
+4298 => x"80c00754",
+4299 => x"738c1923",
+4300 => x"ff0b800c",
+4301 => x"8a3d0d04",
+4302 => x"70725180",
+4303 => x"710c800b",
+4304 => x"84120c80",
+4305 => x"0b88120c",
+4306 => x"028e0522",
+4307 => x"8c122302",
+4308 => x"9205228e",
+4309 => x"1223800b",
+4310 => x"90120c80",
+4311 => x"0b94120c",
+4312 => x"800b9812",
+4313 => x"0c709c12",
+4314 => x"0c0b0b81",
+4315 => x"d7880ba0",
+4316 => x"120c0b0b",
+4317 => x"81d7dd0b",
+4318 => x"a4120c0b",
+4319 => x"0b81d8ec",
+4320 => x"0ba8120c",
+4321 => x"0b0b81d9",
+4322 => x"c60bac12",
+4323 => x"0c5004fa",
+4324 => x"3d0d7970",
+4325 => x"80dc298c",
+4326 => x"11547a53",
+4327 => x"56570b0b",
+4328 => x"0b989f3f",
+4329 => x"80088008",
+4330 => x"55568008",
+4331 => x"802e0b0b",
+4332 => x"0b0ba538",
+4333 => x"80088c05",
+4334 => x"54800b80",
+4335 => x"080c7680",
+4336 => x"0884050c",
+4337 => x"73800888",
+4338 => x"050c7453",
+4339 => x"80527351",
+4340 => x"0b0b0baa",
+4341 => x"c03f7554",
+4342 => x"73800c88",
+4343 => x"3d0d04fc",
+4344 => x"3d0d760b",
+4345 => x"0b818aa8",
+4346 => x"0bbc120c",
+4347 => x"55810bb8",
+4348 => x"160c800b",
+4349 => x"84dc160c",
+4350 => x"830b84e0",
+4351 => x"160c84e8",
+4352 => x"1584e416",
+4353 => x"0c745480",
+4354 => x"53845284",
+4355 => x"1508510b",
+4356 => x"0b0bfea4",
+4357 => x"3f745481",
+4358 => x"53895288",
+4359 => x"1508510b",
+4360 => x"0b0bfe94",
+4361 => x"3f745482",
+4362 => x"538a528c",
+4363 => x"1508510b",
+4364 => x"0b0bfe84",
+4365 => x"3f863d0d",
+4366 => x"04f93d0d",
+4367 => x"790b0b82",
+4368 => x"f4ec0854",
+4369 => x"57b81308",
+4370 => x"802e0b0b",
+4371 => x"0b80db38",
+4372 => x"84dc1356",
+4373 => x"88160884",
+4374 => x"1708ff05",
+4375 => x"55558074",
+4376 => x"240b0b0b",
+4377 => x"0ba6388c",
+4378 => x"15227090",
+4379 => x"2b70902c",
+4380 => x"51545872",
+4381 => x"802e0b0b",
+4382 => x"0b80e838",
+4383 => x"80dc15ff",
+4384 => x"15555573",
+4385 => x"80250b0b",
+4386 => x"0b0bdc38",
+4387 => x"75085372",
+4388 => x"802e0b0b",
+4389 => x"0b0bab38",
+4390 => x"72568816",
+4391 => x"08841708",
+4392 => x"ff055555",
+4393 => x"0b0b0bff",
+4394 => x"b5397251",
+4395 => x"0b0b0bfe",
+4396 => x"ae3f0b0b",
+4397 => x"82f4ec08",
+4398 => x"84dc0556",
+4399 => x"0b0b0bff",
+4400 => x"93398452",
+4401 => x"76510b0b",
+4402 => x"0bfdc43f",
+4403 => x"8008760c",
+4404 => x"8008802e",
+4405 => x"0b0b0b80",
+4406 => x"c4388008",
+4407 => x"560b0b0b",
+4408 => x"ffb83981",
+4409 => x"0b8c1623",
+4410 => x"72750c72",
+4411 => x"88160c72",
+4412 => x"84160c72",
+4413 => x"90160c72",
+4414 => x"94160c72",
+4415 => x"98160cff",
+4416 => x"0b8e1623",
+4417 => x"72b0160c",
+4418 => x"72b4160c",
+4419 => x"7280c416",
+4420 => x"0c7280c8",
+4421 => x"160c7480",
+4422 => x"0c893d0d",
+4423 => x"048c770c",
+4424 => x"800b800c",
+4425 => x"893d0d04",
+4426 => x"70700b0b",
+4427 => x"8184c052",
+4428 => x"73510b0b",
+4429 => x"0b8f993f",
+4430 => x"50500470",
+4431 => x"0b0b82f4",
+4432 => x"ec08510b",
+4433 => x"0b0b0be0",
+4434 => x"3f5004fb",
+4435 => x"3d0d7770",
+4436 => x"52560b0b",
+4437 => x"0ba8f03f",
+4438 => x"0b0b82fc",
+4439 => x"c80b8805",
+4440 => x"08841108",
+4441 => x"fc06707b",
+4442 => x"319fef05",
+4443 => x"e08006e0",
+4444 => x"80055656",
+4445 => x"53a08074",
+4446 => x"240b0b0b",
+4447 => x"0b9d3880",
+4448 => x"5275510b",
+4449 => x"0b80cbba",
+4450 => x"3f0b0b82",
+4451 => x"fcd00815",
+4452 => x"53728008",
+4453 => x"2e0b0b0b",
+4454 => x"0b923875",
+4455 => x"510b0b0b",
+4456 => x"a8a63f80",
+4457 => x"5372800c",
+4458 => x"873d0d04",
+4459 => x"73305275",
+4460 => x"510b0b80",
+4461 => x"cb8c3f80",
+4462 => x"08ff2e0b",
+4463 => x"0b0b0bb1",
+4464 => x"380b0b82",
+4465 => x"fcc80b88",
+4466 => x"05087575",
+4467 => x"31810784",
+4468 => x"120c530b",
+4469 => x"0b82fc8c",
+4470 => x"0874310b",
+4471 => x"0b82fc8c",
+4472 => x"0c75510b",
+4473 => x"0b0ba7e0",
+4474 => x"3f810b80",
+4475 => x"0c873d0d",
+4476 => x"04805275",
+4477 => x"510b0b80",
+4478 => x"cac83f0b",
+4479 => x"0b82fcc8",
+4480 => x"0b880508",
+4481 => x"80087131",
+4482 => x"56538f75",
+4483 => x"250b0b0b",
+4484 => x"ff893880",
+4485 => x"080b0b82",
+4486 => x"fcbc0831",
+4487 => x"0b0b82fc",
+4488 => x"8c0c7481",
+4489 => x"0784140c",
+4490 => x"75510b0b",
+4491 => x"0ba7993f",
+4492 => x"80530b0b",
+4493 => x"0bfeee39",
+4494 => x"f63d0d7c",
+4495 => x"7e545b72",
+4496 => x"802e0b0b",
+4497 => x"0b82c838",
+4498 => x"7a510b0b",
+4499 => x"0ba6f83f",
+4500 => x"f8138411",
+4501 => x"0870fe06",
+4502 => x"70138411",
+4503 => x"08fc065d",
+4504 => x"58595458",
+4505 => x"0b0b82fc",
+4506 => x"d008752e",
+4507 => x"0b0b0b83",
+4508 => x"b5387884",
+4509 => x"160c8073",
+4510 => x"8106545a",
+4511 => x"727a2e0b",
+4512 => x"0b0b828f",
+4513 => x"38781584",
+4514 => x"11088106",
+4515 => x"5153720b",
+4516 => x"0b0b0ba8",
+4517 => x"38781757",
+4518 => x"790b0b0b",
+4519 => x"82a13888",
+4520 => x"15085372",
+4521 => x"0b0b82fc",
+4522 => x"d02e0b0b",
+4523 => x"0b83d738",
+4524 => x"8c150870",
+4525 => x"8c150c73",
+4526 => x"88120c56",
+4527 => x"76810784",
+4528 => x"190c7618",
+4529 => x"77710c53",
+4530 => x"790b0b0b",
+4531 => x"81b93883",
+4532 => x"ff77270b",
+4533 => x"0b0b81fb",
+4534 => x"3876892a",
+4535 => x"77832a56",
+4536 => x"5372802e",
+4537 => x"0b0b0b80",
+4538 => x"d3387686",
+4539 => x"2ab80555",
+4540 => x"8473270b",
+4541 => x"0b0b80c4",
+4542 => x"3880db13",
+4543 => x"55947327",
+4544 => x"0b0b0b0b",
+4545 => x"b738768c",
+4546 => x"2a80ee05",
+4547 => x"5580d473",
+4548 => x"270b0b0b",
+4549 => x"0ba63876",
+4550 => x"8f2a80f7",
+4551 => x"055582d4",
+4552 => x"73270b0b",
+4553 => x"0b0b9538",
+4554 => x"76922a80",
+4555 => x"fc05558a",
+4556 => x"d473270b",
+4557 => x"0b0b0b84",
+4558 => x"3880fe55",
+4559 => x"74101010",
+4560 => x"0b0b82fc",
+4561 => x"c8058811",
+4562 => x"08555673",
+4563 => x"762e0b0b",
+4564 => x"0b82fa38",
+4565 => x"841408fc",
+4566 => x"06537673",
+4567 => x"270b0b0b",
+4568 => x"0b913888",
+4569 => x"14085473",
+4570 => x"762e0981",
+4571 => x"060b0b0b",
+4572 => x"0be2388c",
+4573 => x"1408708c",
+4574 => x"1a0c7488",
+4575 => x"1a0c7888",
+4576 => x"120c5677",
+4577 => x"8c150c7a",
+4578 => x"510b0b0b",
+4579 => x"a4ba3f8c",
+4580 => x"3d0d0477",
+4581 => x"08787131",
+4582 => x"59770588",
+4583 => x"19085457",
+4584 => x"720b0b82",
+4585 => x"fcd02e0b",
+4586 => x"0b0b80f2",
+4587 => x"388c1808",
+4588 => x"708c150c",
+4589 => x"7388120c",
+4590 => x"560b0b0b",
+4591 => x"fdc73988",
+4592 => x"15088c16",
+4593 => x"08708c13",
+4594 => x"0c578817",
+4595 => x"0c0b0b0b",
+4596 => x"fdea3976",
+4597 => x"832a7054",
+4598 => x"55807524",
+4599 => x"0b0b0b81",
+4600 => x"bd387282",
+4601 => x"2c81712b",
+4602 => x"0b0b82fc",
+4603 => x"cc08070b",
+4604 => x"0b82fcc8",
+4605 => x"0b84050c",
+4606 => x"53741010",
+4607 => x"100b0b82",
+4608 => x"fcc80588",
+4609 => x"11085556",
+4610 => x"758c190c",
+4611 => x"7388190c",
+4612 => x"7788170c",
+4613 => x"778c150c",
+4614 => x"0b0b0bfe",
+4615 => x"ea39815a",
+4616 => x"0b0b0bfc",
+4617 => x"e0397817",
+4618 => x"73810654",
+4619 => x"57720b0b",
+4620 => x"0b0b9838",
+4621 => x"77087871",
+4622 => x"31597705",
+4623 => x"8c190888",
+4624 => x"1a08718c",
+4625 => x"120c8812",
+4626 => x"0c575776",
+4627 => x"81078419",
+4628 => x"0c770b0b",
+4629 => x"82fcc80b",
+4630 => x"88050c0b",
+4631 => x"0b82fcc4",
+4632 => x"0877260b",
+4633 => x"0b0bfe9f",
+4634 => x"380b0b82",
+4635 => x"fcc00852",
+4636 => x"7a510b0b",
+4637 => x"0bf9d43f",
+4638 => x"7a510b0b",
+4639 => x"0ba2c93f",
+4640 => x"0b0b0bfe",
+4641 => x"8a398178",
+4642 => x"8c150c78",
+4643 => x"88150c73",
+4644 => x"8c1a0c73",
+4645 => x"881a0c5a",
+4646 => x"0b0b0bfc",
+4647 => x"9f398315",
+4648 => x"70822c81",
+4649 => x"712b0b0b",
+4650 => x"82fccc08",
+4651 => x"070b0b82",
+4652 => x"fcc80b84",
+4653 => x"050c5153",
+4654 => x"74101010",
+4655 => x"0b0b82fc",
+4656 => x"c8058811",
+4657 => x"0855560b",
+4658 => x"0b0bfebc",
+4659 => x"39745380",
+4660 => x"75240b0b",
+4661 => x"0b0bae38",
+4662 => x"72822c81",
+4663 => x"712b0b0b",
+4664 => x"82fccc08",
+4665 => x"070b0b82",
+4666 => x"fcc80b84",
+4667 => x"050c5375",
+4668 => x"8c190c73",
+4669 => x"88190c77",
+4670 => x"88170c77",
+4671 => x"8c150c0b",
+4672 => x"0b0bfd83",
+4673 => x"39831570",
+4674 => x"822c8171",
+4675 => x"2b0b0b82",
+4676 => x"fccc0807",
+4677 => x"0b0b82fc",
+4678 => x"c80b8405",
+4679 => x"0c51530b",
+4680 => x"0b0b0bcb",
+4681 => x"39f23d0d",
+4682 => x"60628811",
+4683 => x"08705757",
+4684 => x"5f5a7480",
+4685 => x"2e0b0b0b",
+4686 => x"81b3388c",
+4687 => x"1a227083",
+4688 => x"2a813270",
+4689 => x"81065155",
+4690 => x"58730b0b",
+4691 => x"0b0b8a38",
+4692 => x"901a080b",
+4693 => x"0b0b0b97",
+4694 => x"3879510b",
+4695 => x"0b0bc388",
+4696 => x"3fff5480",
+4697 => x"080b0b0b",
+4698 => x"8183388c",
+4699 => x"1a22587d",
+4700 => x"08578078",
+4701 => x"83ffff06",
+4702 => x"700a100a",
+4703 => x"70810651",
+4704 => x"56575573",
+4705 => x"752e0b0b",
+4706 => x"0b80e938",
+4707 => x"740b0b0b",
+4708 => x"0b943876",
+4709 => x"08841808",
+4710 => x"88195956",
+4711 => x"5974802e",
+4712 => x"0b0b0b0b",
+4713 => x"ee387454",
+4714 => x"88807527",
+4715 => x"0b0b0b0b",
+4716 => x"84388880",
+4717 => x"54735378",
+4718 => x"529c1a08",
+4719 => x"51a41a08",
+4720 => x"54732d80",
+4721 => x"0b800825",
+4722 => x"0b0b0b83",
+4723 => x"bf388008",
+4724 => x"19758008",
+4725 => x"317f8805",
+4726 => x"08800831",
+4727 => x"70618805",
+4728 => x"0c565659",
+4729 => x"730b0b0b",
+4730 => x"ffa23880",
+4731 => x"5473800c",
+4732 => x"903d0d04",
+4733 => x"75813270",
+4734 => x"81067641",
+4735 => x"51547380",
+4736 => x"2e0b0b0b",
+4737 => x"81f03874",
+4738 => x"0b0b0b0b",
+4739 => x"94387608",
+4740 => x"84180888",
+4741 => x"19595659",
+4742 => x"74802e0b",
+4743 => x"0b0b0bee",
+4744 => x"38881a08",
+4745 => x"7883ffff",
+4746 => x"0670892a",
+4747 => x"70810651",
+4748 => x"56595673",
+4749 => x"802e0b0b",
+4750 => x"0b83e338",
+4751 => x"7575270b",
+4752 => x"0b0b0b90",
+4753 => x"3877872a",
+4754 => x"70810651",
+4755 => x"54730b0b",
+4756 => x"0b838c38",
+4757 => x"7476270b",
+4758 => x"0b0b0b83",
+4759 => x"38745675",
+4760 => x"53785279",
+4761 => x"08510b0b",
+4762 => x"0b9bb83f",
+4763 => x"881a0876",
+4764 => x"31881b0c",
+4765 => x"7908167a",
+4766 => x"0c745675",
+4767 => x"19757731",
+4768 => x"7f880508",
+4769 => x"78317061",
+4770 => x"88050c56",
+4771 => x"56597380",
+4772 => x"2e0b0b0b",
+4773 => x"fed5388c",
+4774 => x"1a22580b",
+4775 => x"0b0bfee7",
+4776 => x"39777854",
+4777 => x"79537b52",
+4778 => x"560b0b0b",
+4779 => x"9af53f88",
+4780 => x"1a087831",
+4781 => x"881b0c79",
+4782 => x"08187a0c",
+4783 => x"7c76315d",
+4784 => x"7c0b0b0b",
+4785 => x"0b943879",
+4786 => x"510b0b0b",
+4787 => x"eef23f80",
+4788 => x"080b0b0b",
+4789 => x"81b63880",
+4790 => x"085f7519",
+4791 => x"7577317f",
+4792 => x"88050878",
+4793 => x"31706188",
+4794 => x"050c5656",
+4795 => x"5973802e",
+4796 => x"0b0b0bfd",
+4797 => x"f638740b",
+4798 => x"0b0b81a4",
+4799 => x"38760884",
+4800 => x"18088819",
+4801 => x"59565974",
+4802 => x"802e0b0b",
+4803 => x"0b0bee38",
+4804 => x"74538a52",
+4805 => x"78510b0b",
+4806 => x"0b98bb3f",
+4807 => x"80087931",
+4808 => x"81055d80",
+4809 => x"080b0b0b",
+4810 => x"0b843881",
+4811 => x"155d815f",
+4812 => x"7c58747d",
+4813 => x"270b0b0b",
+4814 => x"0b833874",
+4815 => x"58941a08",
+4816 => x"881b0811",
+4817 => x"575c807a",
+4818 => x"085c5490",
+4819 => x"1a087b27",
+4820 => x"0b0b0b0b",
+4821 => x"83388154",
+4822 => x"7578250b",
+4823 => x"0b0b0b88",
+4824 => x"38730b0b",
+4825 => x"0b80c638",
+4826 => x"7b78240b",
+4827 => x"0b0bfeb1",
+4828 => x"387b5378",
+4829 => x"529c1a08",
+4830 => x"51a41a08",
+4831 => x"54732d80",
+4832 => x"08568008",
+4833 => x"80240b0b",
+4834 => x"0bfeb138",
+4835 => x"8c1a2280",
+4836 => x"c0075473",
+4837 => x"8c1b23ff",
+4838 => x"5473800c",
+4839 => x"903d0d04",
+4840 => x"7e0b0b0b",
+4841 => x"ff8a380b",
+4842 => x"0b0bfee4",
+4843 => x"39755378",
+4844 => x"527a510b",
+4845 => x"0b0b98eb",
+4846 => x"3f790816",
+4847 => x"7a0c7951",
+4848 => x"0b0b0bec",
+4849 => x"fb3f8008",
+4850 => x"0b0b0bff",
+4851 => x"bf387c76",
+4852 => x"315d7c0b",
+4853 => x"0b0bfe82",
+4854 => x"380b0b0b",
+4855 => x"fde93990",
+4856 => x"1a087a08",
+4857 => x"71317611",
+4858 => x"70565a57",
+4859 => x"520b0b82",
+4860 => x"f4ec0851",
+4861 => x"0b0b0bb4",
+4862 => x"ad3f8008",
+4863 => x"802e0b0b",
+4864 => x"0bff8938",
+4865 => x"8008901b",
+4866 => x"0c800816",
+4867 => x"7a0c7794",
+4868 => x"1b0c7488",
+4869 => x"1b0c7456",
+4870 => x"0b0b0bfc",
+4871 => x"b7397908",
+4872 => x"58901a08",
+4873 => x"78270b0b",
+4874 => x"0b0b8338",
+4875 => x"81547575",
+4876 => x"270b0b0b",
+4877 => x"0b883873",
+4878 => x"0b0b0b0b",
+4879 => x"bc38941a",
+4880 => x"08567575",
+4881 => x"260b0b0b",
+4882 => x"80e53875",
+4883 => x"5378529c",
+4884 => x"1a0851a4",
+4885 => x"1a085473",
+4886 => x"2d800856",
+4887 => x"80088024",
+4888 => x"0b0b0bfc",
+4889 => x"96388c1a",
+4890 => x"2280c007",
+4891 => x"54738c1b",
+4892 => x"23ff540b",
+4893 => x"0b0bfea1",
+4894 => x"39755378",
+4895 => x"5277510b",
+4896 => x"0b0b979f",
+4897 => x"3f790816",
+4898 => x"7a0c7951",
+4899 => x"0b0b0beb",
+4900 => x"af3f8008",
+4901 => x"802e0b0b",
+4902 => x"0bfbe038",
+4903 => x"8c1a2280",
+4904 => x"c0075473",
+4905 => x"8c1b23ff",
+4906 => x"540b0b0b",
+4907 => x"fdeb3974",
+4908 => x"75547953",
+4909 => x"7852560b",
+4910 => x"0b0b96e7",
+4911 => x"3f881a08",
+4912 => x"7531881b",
+4913 => x"0c790815",
+4914 => x"7a0c0b0b",
+4915 => x"0bfbac39",
+4916 => x"f93d0d79",
+4917 => x"7b585380",
+4918 => x"0b0b0b82",
+4919 => x"f4ec0853",
+4920 => x"5672722e",
+4921 => x"0b0b0b80",
+4922 => x"d53884dc",
+4923 => x"13557476",
+4924 => x"2e0b0b0b",
+4925 => x"80c83888",
+4926 => x"15088416",
+4927 => x"08ff0554",
+4928 => x"54807324",
+4929 => x"0b0b0b0b",
+4930 => x"a4388c14",
+4931 => x"2270902b",
+4932 => x"70902c51",
+4933 => x"5358710b",
+4934 => x"0b0b80f6",
+4935 => x"3880dc14",
+4936 => x"ff145454",
+4937 => x"7280250b",
+4938 => x"0b0b0bde",
+4939 => x"38740855",
+4940 => x"740b0b0b",
+4941 => x"0bc1380b",
+4942 => x"0b82f4ec",
+4943 => x"085284dc",
+4944 => x"12557480",
+4945 => x"2e0b0b0b",
+4946 => x"80c13888",
+4947 => x"15088416",
+4948 => x"08ff0554",
+4949 => x"54807324",
+4950 => x"0b0b0b0b",
+4951 => x"a4388c14",
+4952 => x"2270902b",
+4953 => x"70902c51",
+4954 => x"5358710b",
+4955 => x"0b0b0bb8",
+4956 => x"3880dc14",
+4957 => x"ff145454",
+4958 => x"7280250b",
+4959 => x"0b0b0bde",
+4960 => x"38740855",
+4961 => x"740b0b0b",
+4962 => x"0bc13875",
+4963 => x"800c893d",
+4964 => x"0d047351",
+4965 => x"762d7580",
+4966 => x"080780dc",
+4967 => x"15ff1555",
+4968 => x"55560b0b",
+4969 => x"0bfefd39",
+4970 => x"7351762d",
+4971 => x"75800807",
+4972 => x"80dc15ff",
+4973 => x"15555556",
+4974 => x"0b0b0bff",
+4975 => x"bb39fc3d",
+4976 => x"0d767955",
+4977 => x"5573802e",
+4978 => x"0b0b0b0b",
+4979 => x"9f380b0b",
+4980 => x"82f1c852",
+4981 => x"73510b0b",
+4982 => x"0bbe8d3f",
+4983 => x"80080b0b",
+4984 => x"0b0b9638",
+4985 => x"77b0160c",
+4986 => x"73b4160c",
+4987 => x"0b0b82f1",
+4988 => x"c8537280",
+4989 => x"0c863d0d",
+4990 => x"040b0b82",
+4991 => x"f0ec5273",
+4992 => x"510b0b0b",
+4993 => x"bde23f80",
+4994 => x"53800873",
+4995 => x"2e098106",
+4996 => x"0b0b0b0b",
+4997 => x"dd3877b0",
+4998 => x"160c73b4",
+4999 => x"160c0b0b",
+5000 => x"0b0bc939",
+5001 => x"0b0b82fc",
+5002 => x"8808800c",
+5003 => x"040b0b82",
+5004 => x"f1d80b80",
+5005 => x"0c047070",
+5006 => x"70755374",
+5007 => x"520b0b82",
+5008 => x"f4ec0851",
+5009 => x"0b0b0bfe",
+5010 => x"f53f5050",
+5011 => x"5004700b",
+5012 => x"0b82f4ec",
+5013 => x"08510b0b",
+5014 => x"0b0bd23f",
+5015 => x"5004ea3d",
+5016 => x"0d688c11",
+5017 => x"22700a10",
+5018 => x"0a810657",
+5019 => x"5856740b",
+5020 => x"0b0b8180",
+5021 => x"388e1622",
+5022 => x"70902b70",
+5023 => x"902c5155",
+5024 => x"58807424",
+5025 => x"0b0b0b80",
+5026 => x"c038983d",
+5027 => x"c4055373",
+5028 => x"520b0b82",
+5029 => x"f4ec0851",
+5030 => x"0b0b80c1",
+5031 => x"ac3f800b",
+5032 => x"8008240b",
+5033 => x"0b0b0b9d",
+5034 => x"387983e0",
+5035 => x"80065473",
+5036 => x"80c0802e",
+5037 => x"0b0b0b81",
+5038 => x"aa387382",
+5039 => x"80802e0b",
+5040 => x"0b0b81ac",
+5041 => x"388c1622",
+5042 => x"57769080",
+5043 => x"0754738c",
+5044 => x"17238880",
+5045 => x"520b0b82",
+5046 => x"f4ec0851",
+5047 => x"0b0b0b81",
+5048 => x"e13f8008",
+5049 => x"0b0b0b0b",
+5050 => x"9d388c16",
+5051 => x"22820754",
+5052 => x"738c1723",
+5053 => x"80c31670",
+5054 => x"770c9017",
+5055 => x"0c810b94",
+5056 => x"170c983d",
+5057 => x"0d040b0b",
+5058 => x"82f4ec08",
+5059 => x"0b0b818a",
+5060 => x"a80bbc12",
+5061 => x"0c548c16",
+5062 => x"22818007",
+5063 => x"54738c17",
+5064 => x"23800876",
+5065 => x"0c800890",
+5066 => x"170c8880",
+5067 => x"0b94170c",
+5068 => x"74802e0b",
+5069 => x"0b0b0bca",
+5070 => x"388e1622",
+5071 => x"70902b70",
+5072 => x"902c5355",
+5073 => x"580b0b80",
+5074 => x"ced33f80",
+5075 => x"08802e0b",
+5076 => x"0b0bffae",
+5077 => x"388c1622",
+5078 => x"81075473",
+5079 => x"8c172398",
+5080 => x"3d0d0481",
+5081 => x"0b8c1722",
+5082 => x"58550b0b",
+5083 => x"0bfeda39",
+5084 => x"a816080b",
+5085 => x"0b81d8ec",
+5086 => x"2e098106",
+5087 => x"0b0b0bfe",
+5088 => x"c4388c16",
+5089 => x"22888007",
+5090 => x"54738c17",
+5091 => x"2388800b",
+5092 => x"80cc170c",
+5093 => x"0b0b0bfe",
+5094 => x"b9397070",
+5095 => x"73520b0b",
+5096 => x"82f4ec08",
+5097 => x"510b0b0b",
+5098 => x"0b983f50",
+5099 => x"50047070",
+5100 => x"73520b0b",
+5101 => x"82f4ec08",
+5102 => x"510b0b0b",
+5103 => x"ecfa3f50",
+5104 => x"5004f33d",
+5105 => x"0d7f618b",
+5106 => x"1170f806",
+5107 => x"5c55555e",
+5108 => x"7296260b",
+5109 => x"0b0b0b83",
+5110 => x"38905980",
+5111 => x"7924747a",
+5112 => x"26075380",
+5113 => x"5472742e",
+5114 => x"0981060b",
+5115 => x"0b0b80d9",
+5116 => x"387d510b",
+5117 => x"0b0b93cf",
+5118 => x"3f7883f7",
+5119 => x"260b0b0b",
+5120 => x"80ce3878",
+5121 => x"832a7010",
+5122 => x"10100b0b",
+5123 => x"82fcc805",
+5124 => x"8c110859",
+5125 => x"595a7678",
+5126 => x"2e0b0b0b",
+5127 => x"84aa3884",
+5128 => x"1708fc06",
+5129 => x"568c1708",
+5130 => x"88180871",
+5131 => x"8c120c88",
+5132 => x"120c5875",
+5133 => x"17841108",
+5134 => x"81078412",
+5135 => x"0c537d51",
+5136 => x"0b0b0b93",
+5137 => x"833f8817",
+5138 => x"5473800c",
+5139 => x"8f3d0d04",
+5140 => x"78892a79",
+5141 => x"832a5b53",
+5142 => x"72802e0b",
+5143 => x"0b0b80d3",
+5144 => x"3878862a",
+5145 => x"b8055a84",
+5146 => x"73270b0b",
+5147 => x"0b80c438",
+5148 => x"80db135a",
+5149 => x"9473270b",
+5150 => x"0b0b0bb7",
+5151 => x"38788c2a",
+5152 => x"80ee055a",
+5153 => x"80d47327",
+5154 => x"0b0b0b0b",
+5155 => x"a638788f",
+5156 => x"2a80f705",
+5157 => x"5a82d473",
+5158 => x"270b0b0b",
+5159 => x"0b953878",
+5160 => x"922a80fc",
+5161 => x"055a8ad4",
+5162 => x"73270b0b",
+5163 => x"0b0b8438",
+5164 => x"80fe5a79",
+5165 => x"1010100b",
+5166 => x"0b82fcc8",
+5167 => x"058c1108",
+5168 => x"58557675",
+5169 => x"2e0b0b0b",
+5170 => x"0bad3884",
+5171 => x"1708fc06",
+5172 => x"707a3155",
+5173 => x"56738f24",
+5174 => x"0b0b0b8b",
+5175 => x"94387380",
+5176 => x"250b0b0b",
+5177 => x"febf388c",
+5178 => x"17085776",
+5179 => x"752e0981",
+5180 => x"060b0b0b",
+5181 => x"0bd53881",
+5182 => x"1a5a0b0b",
+5183 => x"82fcd808",
+5184 => x"57760b0b",
+5185 => x"82fcd02e",
+5186 => x"0b0b0b83",
+5187 => x"9a388417",
+5188 => x"08fc0670",
+5189 => x"7a315556",
+5190 => x"738f240b",
+5191 => x"0b0b82c4",
+5192 => x"380b0b82",
+5193 => x"fcd00b0b",
+5194 => x"0b82fcdc",
+5195 => x"0c0b0b82",
+5196 => x"fcd00b0b",
+5197 => x"0b82fcd8",
+5198 => x"0c738025",
+5199 => x"0b0b0bfd",
+5200 => x"f23883ff",
+5201 => x"76270b0b",
+5202 => x"0b84e238",
+5203 => x"75892a76",
+5204 => x"832a5553",
+5205 => x"72802e0b",
+5206 => x"0b0b80d3",
+5207 => x"3875862a",
+5208 => x"b8055484",
+5209 => x"73270b0b",
+5210 => x"0b80c438",
+5211 => x"80db1354",
+5212 => x"9473270b",
+5213 => x"0b0b0bb7",
+5214 => x"38758c2a",
+5215 => x"80ee0554",
+5216 => x"80d47327",
+5217 => x"0b0b0b0b",
+5218 => x"a638758f",
+5219 => x"2a80f705",
+5220 => x"5482d473",
+5221 => x"270b0b0b",
+5222 => x"0b953875",
+5223 => x"922a80fc",
+5224 => x"05548ad4",
+5225 => x"73270b0b",
+5226 => x"0b0b8438",
+5227 => x"80fe5473",
+5228 => x"1010100b",
+5229 => x"0b82fcc8",
+5230 => x"05881108",
+5231 => x"56587478",
+5232 => x"2e0b0b0b",
+5233 => x"88b83884",
+5234 => x"1508fc06",
+5235 => x"53757327",
+5236 => x"0b0b0b0b",
+5237 => x"91388815",
+5238 => x"08557478",
+5239 => x"2e098106",
+5240 => x"0b0b0b0b",
+5241 => x"e2388c15",
+5242 => x"080b0b82",
+5243 => x"fcc80b84",
+5244 => x"0508718c",
+5245 => x"1a0c7688",
+5246 => x"1a0c7888",
+5247 => x"130c788c",
+5248 => x"180c5d58",
+5249 => x"7953807a",
+5250 => x"240b0b0b",
+5251 => x"84e93872",
+5252 => x"822c8171",
+5253 => x"2b5c537a",
+5254 => x"7c260b0b",
+5255 => x"0b81c538",
+5256 => x"7b7b0653",
+5257 => x"720b0b0b",
+5258 => x"83d03879",
+5259 => x"fc068405",
+5260 => x"5a7a1070",
+5261 => x"7d06545b",
+5262 => x"720b0b0b",
+5263 => x"83bc3884",
+5264 => x"1a5a0b0b",
+5265 => x"0b0bea39",
+5266 => x"88178c11",
+5267 => x"08585876",
+5268 => x"782e0981",
+5269 => x"060b0b0b",
+5270 => x"fbc53882",
+5271 => x"1a5a0b0b",
+5272 => x"0bfd9739",
+5273 => x"78177981",
+5274 => x"0784190c",
+5275 => x"700b0b82",
+5276 => x"fcdc0c70",
+5277 => x"0b0b82fc",
+5278 => x"d80c0b0b",
+5279 => x"82fcd00b",
+5280 => x"8c120c8c",
+5281 => x"11088812",
+5282 => x"0c748107",
+5283 => x"84120c74",
+5284 => x"1175710c",
+5285 => x"51537d51",
+5286 => x"0b0b0b8e",
+5287 => x"ab3f8817",
+5288 => x"540b0b0b",
+5289 => x"fba3390b",
+5290 => x"0b82fcc8",
+5291 => x"0b840508",
+5292 => x"7a545c79",
+5293 => x"80250b0b",
+5294 => x"0bfed438",
+5295 => x"0b0b0b83",
+5296 => x"b6397a09",
+5297 => x"7c06700b",
+5298 => x"0b82fcc8",
+5299 => x"0b84050c",
+5300 => x"5c7a105b",
+5301 => x"7a7c260b",
+5302 => x"0b0b0b88",
+5303 => x"387a0b0b",
+5304 => x"0b86f738",
+5305 => x"0b0b82fc",
+5306 => x"c80b8805",
+5307 => x"08708412",
+5308 => x"08fc0670",
+5309 => x"7c317c72",
+5310 => x"268f7225",
+5311 => x"0757575c",
+5312 => x"5d557280",
+5313 => x"2e0b0b0b",
+5314 => x"80f73879",
+5315 => x"7a160b0b",
+5316 => x"82fcc008",
+5317 => x"1b90115a",
+5318 => x"55575b0b",
+5319 => x"0b82fcbc",
+5320 => x"08ff2e0b",
+5321 => x"0b0b0b88",
+5322 => x"38a08f13",
+5323 => x"e0800657",
+5324 => x"76527d51",
+5325 => x"0b0b0bb0",
+5326 => x"893f8008",
+5327 => x"548008ff",
+5328 => x"2e0b0b0b",
+5329 => x"0b983880",
+5330 => x"0876270b",
+5331 => x"0b0b82e1",
+5332 => x"38740b0b",
+5333 => x"82fcc82e",
+5334 => x"0b0b0b82",
+5335 => x"d4380b0b",
+5336 => x"82fcc80b",
+5337 => x"88050855",
+5338 => x"841508fc",
+5339 => x"06707a31",
+5340 => x"7a72268f",
+5341 => x"72250752",
+5342 => x"5553720b",
+5343 => x"0b0b84ee",
+5344 => x"38747981",
+5345 => x"0784170c",
+5346 => x"7916700b",
+5347 => x"0b82fcc8",
+5348 => x"0b88050c",
+5349 => x"75810784",
+5350 => x"120c547e",
+5351 => x"52570b0b",
+5352 => x"0b8ca53f",
+5353 => x"8817540b",
+5354 => x"0b0bf99d",
+5355 => x"3975832a",
+5356 => x"70545480",
+5357 => x"74240b0b",
+5358 => x"0b81c538",
+5359 => x"72822c81",
+5360 => x"712b0b0b",
+5361 => x"82fccc08",
+5362 => x"07700b0b",
+5363 => x"82fcc80b",
+5364 => x"84050c75",
+5365 => x"1010100b",
+5366 => x"0b82fcc8",
+5367 => x"05881108",
+5368 => x"585a5d53",
+5369 => x"778c180c",
+5370 => x"7488180c",
+5371 => x"7688190c",
+5372 => x"768c160c",
+5373 => x"0b0b0bfc",
+5374 => x"8b39797a",
+5375 => x"1010100b",
+5376 => x"0b82fcc8",
+5377 => x"05705759",
+5378 => x"5d8c1508",
+5379 => x"5776752e",
+5380 => x"0b0b0b0b",
+5381 => x"ad388417",
+5382 => x"08fc0670",
+5383 => x"7a315556",
+5384 => x"738f240b",
+5385 => x"0b0b84d5",
+5386 => x"38738025",
+5387 => x"0b0b0b85",
+5388 => x"92388c17",
+5389 => x"08577675",
+5390 => x"2e098106",
+5391 => x"0b0b0b0b",
+5392 => x"d5388815",
+5393 => x"811b7083",
+5394 => x"06555b55",
+5395 => x"720b0b0b",
+5396 => x"ffb7387c",
+5397 => x"83065372",
+5398 => x"802e0b0b",
+5399 => x"0bfce338",
+5400 => x"ff1df819",
+5401 => x"595d8818",
+5402 => x"08782e0b",
+5403 => x"0b0b0be3",
+5404 => x"380b0b0b",
+5405 => x"fcdb3983",
+5406 => x"1a530b0b",
+5407 => x"0bfb9039",
+5408 => x"83147082",
+5409 => x"2c81712b",
+5410 => x"0b0b82fc",
+5411 => x"cc080770",
+5412 => x"0b0b82fc",
+5413 => x"c80b8405",
+5414 => x"0c761010",
+5415 => x"100b0b82",
+5416 => x"fcc80588",
+5417 => x"1108595b",
+5418 => x"5e51530b",
+5419 => x"0b0bfeb4",
+5420 => x"390b0b82",
+5421 => x"fc8c0817",
+5422 => x"58800876",
+5423 => x"2e0b0b0b",
+5424 => x"81b2380b",
+5425 => x"0b82fcbc",
+5426 => x"08ff2e0b",
+5427 => x"0b0b84e8",
+5428 => x"38737631",
+5429 => x"180b0b82",
+5430 => x"fc8c0c73",
+5431 => x"87067057",
+5432 => x"5372802e",
+5433 => x"0b0b0b0b",
+5434 => x"88388873",
+5435 => x"31701555",
+5436 => x"5676149f",
+5437 => x"ff06a080",
+5438 => x"71311770",
+5439 => x"547f5357",
+5440 => x"530b0b0b",
+5441 => x"acbc3f80",
+5442 => x"08538008",
+5443 => x"ff2e0b0b",
+5444 => x"0b81d138",
+5445 => x"0b0b82fc",
+5446 => x"8c081670",
+5447 => x"0b0b82fc",
+5448 => x"8c0c7475",
+5449 => x"0b0b82fc",
+5450 => x"c80b8805",
+5451 => x"0c747631",
+5452 => x"18708107",
+5453 => x"51555658",
+5454 => x"7b0b0b82",
+5455 => x"fcc82e0b",
+5456 => x"0b0b8488",
+5457 => x"38798f26",
+5458 => x"0b0b0b83",
+5459 => x"a038810b",
+5460 => x"84150c84",
+5461 => x"1508fc06",
+5462 => x"707a317a",
+5463 => x"72268f72",
+5464 => x"25075255",
+5465 => x"5372802e",
+5466 => x"0b0b0bfc",
+5467 => x"94380b0b",
+5468 => x"0b80fb39",
+5469 => x"80089fff",
+5470 => x"0653720b",
+5471 => x"0b0bfec3",
+5472 => x"38770b0b",
+5473 => x"82fc8c0c",
+5474 => x"0b0b82fc",
+5475 => x"c80b8805",
+5476 => x"087b1881",
+5477 => x"0784120c",
+5478 => x"550b0b82",
+5479 => x"fcb80878",
+5480 => x"270b0b0b",
+5481 => x"0b883877",
+5482 => x"0b0b82fc",
+5483 => x"b80c0b0b",
+5484 => x"82fcb408",
+5485 => x"78270b0b",
+5486 => x"0bfbad38",
+5487 => x"770b0b82",
+5488 => x"fcb40c84",
+5489 => x"1508fc06",
+5490 => x"707a317a",
+5491 => x"72268f72",
+5492 => x"25075255",
+5493 => x"5372802e",
+5494 => x"0b0b0bfb",
+5495 => x"a4380b0b",
+5496 => x"0b0b8b39",
+5497 => x"80745456",
+5498 => x"0b0b0bfe",
+5499 => x"a7397d51",
+5500 => x"0b0b0b87",
+5501 => x"d33f800b",
+5502 => x"800c8f3d",
+5503 => x"0d047353",
+5504 => x"8074240b",
+5505 => x"0b0b0bb0",
+5506 => x"3872822c",
+5507 => x"81712b0b",
+5508 => x"0b82fccc",
+5509 => x"0807700b",
+5510 => x"0b82fcc8",
+5511 => x"0b84050c",
+5512 => x"5d53778c",
+5513 => x"180c7488",
+5514 => x"180c7688",
+5515 => x"190c768c",
+5516 => x"160c0b0b",
+5517 => x"0bf7cd39",
+5518 => x"83147082",
+5519 => x"2c81712b",
+5520 => x"0b0b82fc",
+5521 => x"cc080770",
+5522 => x"0b0b82fc",
+5523 => x"c80b8405",
+5524 => x"0c5e5153",
+5525 => x"0b0b0b0b",
+5526 => x"c9397b7b",
+5527 => x"0653720b",
+5528 => x"0b0bfb96",
+5529 => x"38841a7b",
+5530 => x"105c5a0b",
+5531 => x"0b0b0bea",
+5532 => x"39ff1a81",
+5533 => x"11515a0b",
+5534 => x"0b0bf4fe",
+5535 => x"39781779",
+5536 => x"81078419",
+5537 => x"0c8c1808",
+5538 => x"88190871",
+5539 => x"8c120c88",
+5540 => x"120c5970",
+5541 => x"0b0b82fc",
+5542 => x"dc0c700b",
+5543 => x"0b82fcd8",
+5544 => x"0c0b0b82",
+5545 => x"fcd00b8c",
+5546 => x"120c8c11",
+5547 => x"0888120c",
+5548 => x"74810784",
+5549 => x"120c7411",
+5550 => x"75710c51",
+5551 => x"530b0b0b",
+5552 => x"f7d43975",
+5553 => x"17841108",
+5554 => x"81078412",
+5555 => x"0c538c17",
+5556 => x"08881808",
+5557 => x"718c120c",
+5558 => x"88120c58",
+5559 => x"7d510b0b",
+5560 => x"0b85e53f",
+5561 => x"8817540b",
+5562 => x"0b0bf2dd",
+5563 => x"39728415",
+5564 => x"0cf41af8",
+5565 => x"0670841e",
+5566 => x"08810607",
+5567 => x"841e0c70",
+5568 => x"1d545b85",
+5569 => x"0b84140c",
+5570 => x"850b8814",
+5571 => x"0c8f7b27",
+5572 => x"0b0b0bfd",
+5573 => x"8438881c",
+5574 => x"527d510b",
+5575 => x"0b0bde98",
+5576 => x"3f0b0b82",
+5577 => x"fcc80b88",
+5578 => x"05080b0b",
+5579 => x"82fc8c08",
+5580 => x"59550b0b",
+5581 => x"0bfce239",
+5582 => x"770b0b82",
+5583 => x"fc8c0c73",
+5584 => x"0b0b82fc",
+5585 => x"bc0c0b0b",
+5586 => x"0bfb9039",
+5587 => x"7284150c",
+5588 => x"0b0b0bfc",
+5589 => x"c439fa3d",
+5590 => x"0d7a7902",
+5591 => x"8805a705",
+5592 => x"33565253",
+5593 => x"8373270b",
+5594 => x"0b0b0b8e",
+5595 => x"38708306",
+5596 => x"5271802e",
+5597 => x"0b0b0b0b",
+5598 => x"b438ff13",
+5599 => x"5372ff2e",
+5600 => x"0b0b0b0b",
+5601 => x"9f387033",
+5602 => x"5273722e",
+5603 => x"0b0b0b0b",
+5604 => x"95388111",
+5605 => x"ff145451",
+5606 => x"72ff2e09",
+5607 => x"81060b0b",
+5608 => x"0b0be338",
+5609 => x"80517080",
+5610 => x"0c883d0d",
+5611 => x"04707257",
+5612 => x"55835175",
+5613 => x"82802914",
+5614 => x"ff125256",
+5615 => x"7080250b",
+5616 => x"0b0b0bef",
+5617 => x"38837327",
+5618 => x"0b0b0b80",
+5619 => x"ce387408",
+5620 => x"76327009",
+5621 => x"f7fbfdff",
+5622 => x"120670f8",
+5623 => x"84828180",
+5624 => x"06515151",
+5625 => x"70802e0b",
+5626 => x"0b0b0ba0",
+5627 => x"38745180",
+5628 => x"52703357",
+5629 => x"73772e0b",
+5630 => x"0b0bffaa",
+5631 => x"38811181",
+5632 => x"13535183",
+5633 => x"72270b0b",
+5634 => x"0b0be638",
+5635 => x"fc138416",
+5636 => x"56537283",
+5637 => x"260b0b0b",
+5638 => x"ffb43874",
+5639 => x"510b0b0b",
+5640 => x"fed839fa",
+5641 => x"3d0d787a",
+5642 => x"7c727272",
+5643 => x"57575759",
+5644 => x"56567476",
+5645 => x"270b0b0b",
+5646 => x"0bbe3876",
+5647 => x"15517571",
+5648 => x"270b0b0b",
+5649 => x"0bb23870",
+5650 => x"7717ff14",
+5651 => x"54555371",
+5652 => x"ff2e0b0b",
+5653 => x"0b0b9a38",
+5654 => x"ff14ff14",
+5655 => x"54547233",
+5656 => x"7434ff12",
+5657 => x"5271ff2e",
+5658 => x"0981060b",
+5659 => x"0b0b0be8",
+5660 => x"3875800c",
+5661 => x"883d0d04",
+5662 => x"768f260b",
+5663 => x"0b0b0b9f",
+5664 => x"38ff1252",
+5665 => x"71ff2e0b",
+5666 => x"0b0b0be5",
+5667 => x"38727081",
+5668 => x"05543374",
+5669 => x"70810556",
+5670 => x"340b0b0b",
+5671 => x"0be33974",
+5672 => x"76078306",
+5673 => x"51700b0b",
+5674 => x"0b0bd638",
+5675 => x"75755451",
+5676 => x"72708405",
+5677 => x"54087170",
+5678 => x"8405530c",
+5679 => x"72708405",
+5680 => x"54087170",
+5681 => x"8405530c",
+5682 => x"72708405",
+5683 => x"54087170",
+5684 => x"8405530c",
+5685 => x"72708405",
+5686 => x"54087170",
+5687 => x"8405530c",
+5688 => x"f0125271",
+5689 => x"8f260b0b",
+5690 => x"0b0bc538",
+5691 => x"8372270b",
+5692 => x"0b0b0b99",
+5693 => x"38727084",
+5694 => x"05540871",
+5695 => x"70840553",
+5696 => x"0cfc1252",
+5697 => x"7183260b",
+5698 => x"0b0b0be9",
+5699 => x"3870540b",
+5700 => x"0b0bfeed",
+5701 => x"39fc3d0d",
+5702 => x"76797102",
+5703 => x"8c059f05",
+5704 => x"33575553",
+5705 => x"55837227",
+5706 => x"0b0b0b0b",
+5707 => x"8e387483",
+5708 => x"06517080",
+5709 => x"2e0b0b0b",
+5710 => x"0baa38ff",
+5711 => x"125271ff",
+5712 => x"2e0b0b0b",
+5713 => x"0b973873",
+5714 => x"73708105",
+5715 => x"5534ff12",
+5716 => x"5271ff2e",
+5717 => x"0981060b",
+5718 => x"0b0b0beb",
+5719 => x"3874800c",
+5720 => x"863d0d04",
+5721 => x"7474882b",
+5722 => x"75077071",
+5723 => x"902b0751",
+5724 => x"54518f72",
+5725 => x"270b0b0b",
+5726 => x"0ba93872",
+5727 => x"71708405",
+5728 => x"530c7271",
+5729 => x"70840553",
+5730 => x"0c727170",
+5731 => x"8405530c",
+5732 => x"72717084",
+5733 => x"05530cf0",
+5734 => x"1252718f",
+5735 => x"260b0b0b",
+5736 => x"0bd93883",
+5737 => x"72270b0b",
+5738 => x"0b0b9438",
+5739 => x"72717084",
+5740 => x"05530cfc",
+5741 => x"12527183",
+5742 => x"260b0b0b",
+5743 => x"0bee3870",
+5744 => x"530b0b0b",
+5745 => x"fef53904",
+5746 => x"04f93d0d",
+5747 => x"797b80cc",
+5748 => x"12085658",
+5749 => x"5673802e",
+5750 => x"0b0b0b0b",
+5751 => x"a9387610",
+5752 => x"10147008",
+5753 => x"55557380",
+5754 => x"2e0b0b0b",
+5755 => x"80c03873",
+5756 => x"08750c80",
+5757 => x"0b90150c",
+5758 => x"800b8c15",
+5759 => x"0c735574",
+5760 => x"800c893d",
+5761 => x"0d049053",
+5762 => x"84527551",
+5763 => x"0b0b0ba8",
+5764 => x"c63f8008",
+5765 => x"80cc170c",
+5766 => x"80085580",
+5767 => x"08802e0b",
+5768 => x"0b0b0bdb",
+5769 => x"38800854",
+5770 => x"0b0b0bff",
+5771 => x"b1398177",
+5772 => x"2b701010",
+5773 => x"94055458",
+5774 => x"81527551",
+5775 => x"0b0b0ba8",
+5776 => x"963f8008",
+5777 => x"80085654",
+5778 => x"8008802e",
+5779 => x"0b0b0bff",
+5780 => x"ae387680",
+5781 => x"0884050c",
+5782 => x"77800888",
+5783 => x"050c800b",
+5784 => x"90150c80",
+5785 => x"0b8c150c",
+5786 => x"73550b0b",
+5787 => x"0bff9039",
+5788 => x"70707452",
+5789 => x"71802e0b",
+5790 => x"0b0b0b95",
+5791 => x"38738413",
+5792 => x"08101080",
+5793 => x"cc120805",
+5794 => x"7008740c",
+5795 => x"73710c51",
+5796 => x"51505004",
+5797 => x"f53d0d7d",
+5798 => x"7f616390",
+5799 => x"13089414",
+5800 => x"5b5d5b5c",
+5801 => x"5c5c8057",
+5802 => x"8216227a",
+5803 => x"71291977",
+5804 => x"227c7129",
+5805 => x"72902a05",
+5806 => x"70902a73",
+5807 => x"83ffff06",
+5808 => x"72848080",
+5809 => x"29057b70",
+5810 => x"84055d0c",
+5811 => x"811c5c52",
+5812 => x"535a5555",
+5813 => x"7877240b",
+5814 => x"0b0b0bcc",
+5815 => x"3877802e",
+5816 => x"0b0b0b0b",
+5817 => x"9a387888",
+5818 => x"1c08250b",
+5819 => x"0b0b0b96",
+5820 => x"38781010",
+5821 => x"1b789412",
+5822 => x"0c548119",
+5823 => x"901c0c7a",
+5824 => x"800c8d3d",
+5825 => x"0d04841b",
+5826 => x"08810552",
+5827 => x"7b510b0b",
+5828 => x"0bfdb63f",
+5829 => x"8008901c",
+5830 => x"08101088",
+5831 => x"05548c1c",
+5832 => x"5380088c",
+5833 => x"0552540b",
+5834 => x"0bfedcdf",
+5835 => x"3f7a527b",
+5836 => x"510b0b0b",
+5837 => x"feba3f73",
+5838 => x"79101011",
+5839 => x"7994120c",
+5840 => x"55811a90",
+5841 => x"120c5b0b",
+5842 => x"0b0bffb3",
+5843 => x"39f63d0d",
+5844 => x"7c7e6062",
+5845 => x"890b8812",
+5846 => x"355b5e5c",
+5847 => x"59598056",
+5848 => x"81557477",
+5849 => x"250b0b0b",
+5850 => x"0b903874",
+5851 => x"10811757",
+5852 => x"55767524",
+5853 => x"0b0b0b0b",
+5854 => x"f2387552",
+5855 => x"78510b0b",
+5856 => x"0bfcc63f",
+5857 => x"80086180",
+5858 => x"0894050c",
+5859 => x"56810b80",
+5860 => x"0890050c",
+5861 => x"8957767a",
+5862 => x"250b0b0b",
+5863 => x"80e13876",
+5864 => x"18587770",
+5865 => x"81055933",
+5866 => x"d005548a",
+5867 => x"53755278",
+5868 => x"510b0b0b",
+5869 => x"fdde3f80",
+5870 => x"08811858",
+5871 => x"56797724",
+5872 => x"0b0b0b0b",
+5873 => x"dd388118",
+5874 => x"58767b25",
+5875 => x"0b0b0b0b",
+5876 => x"a7387a77",
+5877 => x"31577770",
+5878 => x"81055933",
+5879 => x"d005548a",
+5880 => x"53755278",
+5881 => x"510b0b0b",
+5882 => x"fdaa3f80",
+5883 => x"08ff1858",
+5884 => x"56760b0b",
+5885 => x"0b0bdf38",
+5886 => x"75800c8c",
+5887 => x"3d0d048a",
+5888 => x"18580b0b",
+5889 => x"0b0bc239",
+5890 => x"70707074",
+5891 => x"528072fc",
+5892 => x"80800652",
+5893 => x"5370732e",
+5894 => x"0981060b",
+5895 => x"0b0b0b87",
+5896 => x"38907271",
+5897 => x"2b535371",
+5898 => x"81ff0a06",
+5899 => x"51700b0b",
+5900 => x"0b0b8838",
+5901 => x"88137288",
+5902 => x"2b535371",
+5903 => x"8f0a0651",
+5904 => x"700b0b0b",
+5905 => x"0b883884",
+5906 => x"1372842b",
+5907 => x"53537183",
+5908 => x"0a065170",
+5909 => x"0b0b0b0b",
+5910 => x"88388213",
+5911 => x"72822b53",
+5912 => x"53807224",
+5913 => x"0b0b0b0b",
+5914 => x"97388113",
+5915 => x"729e2a70",
+5916 => x"81065152",
+5917 => x"53a05270",
+5918 => x"802e0b0b",
+5919 => x"0b0b8338",
+5920 => x"72527180",
+5921 => x"0c505050",
+5922 => x"04fc3d0d",
+5923 => x"76700870",
+5924 => x"87065353",
+5925 => x"5570802e",
+5926 => x"0b0b0b0b",
+5927 => x"b1387181",
+5928 => x"06518053",
+5929 => x"70732e09",
+5930 => x"81060b0b",
+5931 => x"0b0b9838",
+5932 => x"710a100a",
+5933 => x"70810652",
+5934 => x"5370802e",
+5935 => x"0b0b0b81",
+5936 => x"89387275",
+5937 => x"0c815372",
+5938 => x"800c863d",
+5939 => x"0d047072",
+5940 => x"83ffff06",
+5941 => x"52547080",
+5942 => x"2e0b0b0b",
+5943 => x"80e03871",
+5944 => x"81ff0651",
+5945 => x"700b0b0b",
+5946 => x"0b883888",
+5947 => x"1472882a",
+5948 => x"5354718f",
+5949 => x"0651700b",
+5950 => x"0b0b0b88",
+5951 => x"38841472",
+5952 => x"842a5354",
+5953 => x"71830651",
+5954 => x"700b0b0b",
+5955 => x"0b883882",
+5956 => x"1472822a",
+5957 => x"53547181",
+5958 => x"0651700b",
+5959 => x"0b0b0b94",
+5960 => x"38811472",
+5961 => x"0a100a53",
+5962 => x"54a05371",
+5963 => x"802e0b0b",
+5964 => x"0bff9438",
+5965 => x"71750c73",
+5966 => x"800c863d",
+5967 => x"0d049072",
+5968 => x"712a5354",
+5969 => x"0b0b0bff",
+5970 => x"96397182",
+5971 => x"2a750c82",
+5972 => x"0b800c86",
+5973 => x"3d0d0470",
+5974 => x"70815273",
+5975 => x"510b0b0b",
+5976 => x"f8e73f74",
+5977 => x"80089405",
+5978 => x"0c810b80",
+5979 => x"0890050c",
+5980 => x"505004ee",
+5981 => x"3d0d6567",
+5982 => x"90120890",
+5983 => x"12085856",
+5984 => x"57537375",
+5985 => x"250b0b0b",
+5986 => x"0b8d3872",
+5987 => x"76717790",
+5988 => x"14085957",
+5989 => x"58544274",
+5990 => x"14708815",
+5991 => x"08248415",
+5992 => x"08055365",
+5993 => x"525e0b0b",
+5994 => x"0bf89e3f",
+5995 => x"80088008",
+5996 => x"94057060",
+5997 => x"822b7211",
+5998 => x"43465941",
+5999 => x"427f7f27",
+6000 => x"0b0b0b0b",
+6001 => x"91388077",
+6002 => x"70840559",
+6003 => x"0c7e7726",
+6004 => x"0b0b0b0b",
+6005 => x"f1389413",
+6006 => x"74101011",
+6007 => x"94187710",
+6008 => x"10116341",
+6009 => x"445d5d5f",
+6010 => x"7a61270b",
+6011 => x"0b0b81c9",
+6012 => x"387a0870",
+6013 => x"83ffff06",
+6014 => x"59537780",
+6015 => x"2e0b0b0b",
+6016 => x"80cb387e",
+6017 => x"7d575780",
+6018 => x"5a767084",
+6019 => x"05580870",
+6020 => x"83ffff06",
+6021 => x"82182271",
+6022 => x"7b29057c",
+6023 => x"1173902a",
+6024 => x"7c297a22",
+6025 => x"5e7d0571",
+6026 => x"902a0570",
+6027 => x"902a5f59",
+6028 => x"51515454",
+6029 => x"74762372",
+6030 => x"82172384",
+6031 => x"16567b77",
+6032 => x"260b0b0b",
+6033 => x"0bc33879",
+6034 => x"760c7a08",
+6035 => x"5372902a",
+6036 => x"5877802e",
+6037 => x"0b0b0b80",
+6038 => x"d1387e7d",
+6039 => x"5757807d",
+6040 => x"08705b56",
+6041 => x"5a767084",
+6042 => x"05580870",
+6043 => x"83ffff06",
+6044 => x"707a297b",
+6045 => x"902a057c",
+6046 => x"11515154",
+6047 => x"54727623",
+6048 => x"74821723",
+6049 => x"84167490",
+6050 => x"2a792971",
+6051 => x"08821322",
+6052 => x"5d5b7b05",
+6053 => x"74902a05",
+6054 => x"70902a5c",
+6055 => x"56567b77",
+6056 => x"260b0b0b",
+6057 => x"ffbf3874",
+6058 => x"760c841b",
+6059 => x"841e5e5b",
+6060 => x"607b260b",
+6061 => x"0b0bfeb9",
+6062 => x"38626005",
+6063 => x"56807e25",
+6064 => x"0b0b0b0b",
+6065 => x"9838fc16",
+6066 => x"5675080b",
+6067 => x"0b0b0b8d",
+6068 => x"38ff1e5e",
+6069 => x"7d80240b",
+6070 => x"0b0b0bea",
+6071 => x"387d6290",
+6072 => x"050c6180",
+6073 => x"0c943d0d",
+6074 => x"04f73d0d",
+6075 => x"7b7d7f70",
+6076 => x"83065858",
+6077 => x"5a5a740b",
+6078 => x"0b0b8181",
+6079 => x"3875822c",
+6080 => x"5675802e",
+6081 => x"0b0b0b80",
+6082 => x"cc3880c8",
+6083 => x"1a087056",
+6084 => x"5776802e",
+6085 => x"0b0b0b81",
+6086 => x"a3387581",
+6087 => x"0655740b",
+6088 => x"0b0b0bb8",
+6089 => x"3875812c",
+6090 => x"5675802e",
+6091 => x"0b0b0b0b",
+6092 => x"a4387608",
+6093 => x"70595574",
+6094 => x"802e0b0b",
+6095 => x"0b80e038",
+6096 => x"74577581",
+6097 => x"06557480",
+6098 => x"2e0b0b0b",
+6099 => x"0bd7380b",
+6100 => x"0b0b0b88",
+6101 => x"3978800c",
+6102 => x"8b3d0d04",
+6103 => x"76537852",
+6104 => x"79510b0b",
+6105 => x"0bfc8c3f",
+6106 => x"80087953",
+6107 => x"7a52550b",
+6108 => x"0b0bf5fc",
+6109 => x"3f74590b",
+6110 => x"0b0bffa9",
+6111 => x"39805474",
+6112 => x"10100b0b",
+6113 => x"82f49c05",
+6114 => x"70085455",
+6115 => x"78527951",
+6116 => x"0b0b0bf5",
+6117 => x"ff3f8008",
+6118 => x"590b0b0b",
+6119 => x"fedf3976",
+6120 => x"53765279",
+6121 => x"510b0b0b",
+6122 => x"fbc93f80",
+6123 => x"08770c80",
+6124 => x"08788008",
+6125 => x"0c570b0b",
+6126 => x"0bff8739",
+6127 => x"84f15279",
+6128 => x"510b0b0b",
+6129 => x"fb913f80",
+6130 => x"0880c81b",
+6131 => x"0c800875",
+6132 => x"80080c76",
+6133 => x"81065657",
+6134 => x"74802e0b",
+6135 => x"0b0bfec5",
+6136 => x"380b0b0b",
+6137 => x"fef639f5",
+6138 => x"3d0d7d7f",
+6139 => x"6170852c",
+6140 => x"84130890",
+6141 => x"14081281",
+6142 => x"05881508",
+6143 => x"595e5959",
+6144 => x"5a5c5c72",
+6145 => x"79250b0b",
+6146 => x"0b0b9038",
+6147 => x"81157310",
+6148 => x"54557873",
+6149 => x"240b0b0b",
+6150 => x"0bf23874",
+6151 => x"527b510b",
+6152 => x"0b0bf3a5",
+6153 => x"3f800880",
+6154 => x"08940555",
+6155 => x"5a807625",
+6156 => x"0b0b0b0b",
+6157 => x"94387553",
+6158 => x"80747084",
+6159 => x"05560cff",
+6160 => x"1353720b",
+6161 => x"0b0b0bf0",
+6162 => x"38941b90",
+6163 => x"1c081010",
+6164 => x"11799f06",
+6165 => x"5a585377",
+6166 => x"802e0b0b",
+6167 => x"0b80ca38",
+6168 => x"a0783155",
+6169 => x"80567208",
+6170 => x"782b7607",
+6171 => x"74708405",
+6172 => x"560c7270",
+6173 => x"84055408",
+6174 => x"752a5676",
+6175 => x"73260b0b",
+6176 => x"0b0be338",
+6177 => x"75740c75",
+6178 => x"802e0b0b",
+6179 => x"0b0b8438",
+6180 => x"811959ff",
+6181 => x"19901b0c",
+6182 => x"7a527b51",
+6183 => x"0b0b0bf3",
+6184 => x"cf3f7980",
+6185 => x"0c8d3d0d",
+6186 => x"04727084",
+6187 => x"05540874",
+6188 => x"70840556",
+6189 => x"0c727727",
+6190 => x"0b0b0b0b",
+6191 => x"d6387270",
+6192 => x"84055408",
+6193 => x"74708405",
+6194 => x"560c7673",
+6195 => x"260b0b0b",
+6196 => x"0bd7380b",
+6197 => x"0b0bffbb",
+6198 => x"39fb3d0d",
+6199 => x"77799011",
+6200 => x"08901308",
+6201 => x"71317056",
+6202 => x"54555754",
+6203 => x"700b0b0b",
+6204 => x"0bb33894",
+6205 => x"1473822b",
+6206 => x"71117119",
+6207 => x"94055254",
+6208 => x"5255fc12",
+6209 => x"fc127108",
+6210 => x"71085656",
+6211 => x"52527373",
+6212 => x"2e098106",
+6213 => x"0b0b0b0b",
+6214 => x"93387175",
+6215 => x"260b0b0b",
+6216 => x"0be03880",
+6217 => x"5271800c",
+6218 => x"873d0d04",
+6219 => x"ff517274",
+6220 => x"260b0b0b",
+6221 => x"0b833881",
+6222 => x"5170800c",
+6223 => x"873d0d04",
+6224 => x"f33d0d7f",
+6225 => x"61637055",
+6226 => x"71545754",
+6227 => x"560b0b0b",
+6228 => x"ff873f80",
+6229 => x"08548008",
+6230 => x"802e0b0b",
+6231 => x"0b81e038",
+6232 => x"80547380",
+6233 => x"08240b0b",
+6234 => x"0b81f638",
+6235 => x"84130852",
+6236 => x"75510b0b",
+6237 => x"0bf0d23f",
+6238 => x"80087480",
+6239 => x"088c050c",
+6240 => x"90140894",
+6241 => x"15711010",
+6242 => x"11941990",
+6243 => x"1a081010",
+6244 => x"11800894",
+6245 => x"055d415d",
+6246 => x"415a5c5d",
+6247 => x"805a7770",
+6248 => x"84055908",
+6249 => x"7083ffff",
+6250 => x"067a7084",
+6251 => x"055c0870",
+6252 => x"83ffff06",
+6253 => x"7271311e",
+6254 => x"74902a73",
+6255 => x"902a3171",
+6256 => x"902c1170",
+6257 => x"902c4151",
+6258 => x"55515657",
+6259 => x"57547377",
+6260 => x"23728218",
+6261 => x"23841757",
+6262 => x"7b79260b",
+6263 => x"0b0bffbe",
+6264 => x"38777e27",
+6265 => x"0b0b0b0b",
+6266 => x"b0387770",
+6267 => x"84055908",
+6268 => x"7083ffff",
+6269 => x"067b1170",
+6270 => x"902c7390",
+6271 => x"2a057090",
+6272 => x"2c5e5351",
+6273 => x"54547377",
+6274 => x"23728218",
+6275 => x"23841757",
+6276 => x"7d78260b",
+6277 => x"0b0b0bd2",
+6278 => x"38fc1757",
+6279 => x"76080b0b",
+6280 => x"0b0b9138",
+6281 => x"ff1bfc18",
+6282 => x"585b7608",
+6283 => x"802e0b0b",
+6284 => x"0b0bf138",
+6285 => x"7a901e0c",
+6286 => x"7c800c8f",
+6287 => x"3d0d0480",
+6288 => x"08527551",
+6289 => x"0b0b0bef",
+6290 => x"803f8008",
+6291 => x"5d810b80",
+6292 => x"0890050c",
+6293 => x"73800894",
+6294 => x"050c7c80",
+6295 => x"0c8f3d0d",
+6296 => x"04727554",
+6297 => x"55810b84",
+6298 => x"14085376",
+6299 => x"52540b0b",
+6300 => x"0beed63f",
+6301 => x"80087480",
+6302 => x"088c050c",
+6303 => x"90140894",
+6304 => x"15711010",
+6305 => x"11941990",
+6306 => x"1a081010",
+6307 => x"11800894",
+6308 => x"055d415d",
+6309 => x"415a5c5d",
+6310 => x"805a0b0b",
+6311 => x"0bfdff39",
+6312 => x"fa3d0d78",
+6313 => x"7a7c5457",
+6314 => x"7258769f",
+6315 => x"fe0a0686",
+6316 => x"bf0a0553",
+6317 => x"53807225",
+6318 => x"0b0b0b0b",
+6319 => x"95387154",
+6320 => x"80557375",
+6321 => x"53730c71",
+6322 => x"84140c72",
+6323 => x"800c883d",
+6324 => x"0d047130",
+6325 => x"70942c53",
+6326 => x"51937225",
+6327 => x"0b0b0b0b",
+6328 => x"ab388054",
+6329 => x"ec129f71",
+6330 => x"3181712b",
+6331 => x"5152529e",
+6332 => x"72250b0b",
+6333 => x"0b0b8338",
+6334 => x"81517055",
+6335 => x"73755373",
+6336 => x"0c718414",
+6337 => x"0c72800c",
+6338 => x"883d0d04",
+6339 => x"a0808072",
+6340 => x"2c548055",
+6341 => x"0b0b0bff",
+6342 => x"a939f63d",
+6343 => x"0d7c7e94",
+6344 => x"11901208",
+6345 => x"101011fc",
+6346 => x"11700870",
+6347 => x"575a5157",
+6348 => x"5853590b",
+6349 => x"0b0bf1d0",
+6350 => x"3f80087f",
+6351 => x"a00b8008",
+6352 => x"31710c53",
+6353 => x"538a0b80",
+6354 => x"08250b0b",
+6355 => x"0b80f738",
+6356 => x"80577376",
+6357 => x"260b0b0b",
+6358 => x"80c438f5",
+6359 => x"13537280",
+6360 => x"2e0b0b0b",
+6361 => x"80c838a0",
+6362 => x"73317574",
+6363 => x"2b78722a",
+6364 => x"079ffc0a",
+6365 => x"075b5880",
+6366 => x"55757427",
+6367 => x"0b0b0b0b",
+6368 => x"8538fc14",
+6369 => x"08557673",
+6370 => x"2b75792a",
+6371 => x"075b797b",
+6372 => x"54790c72",
+6373 => x"841a0c78",
+6374 => x"800c8c3d",
+6375 => x"0d04fc14",
+6376 => x"7008f515",
+6377 => x"55585472",
+6378 => x"0b0b0bff",
+6379 => x"ba38749f",
+6380 => x"fc0a075a",
+6381 => x"765b797b",
+6382 => x"54790c72",
+6383 => x"841a0c78",
+6384 => x"800c8c3d",
+6385 => x"0d048b0b",
+6386 => x"80083175",
+6387 => x"712a9ffc",
+6388 => x"0a075b57",
+6389 => x"80587574",
+6390 => x"270b0b0b",
+6391 => x"0b8538fc",
+6392 => x"14085895",
+6393 => x"1375712b",
+6394 => x"79792a07",
+6395 => x"5c52797b",
+6396 => x"54790c72",
+6397 => x"841a0c78",
+6398 => x"800c8c3d",
+6399 => x"0d04f33d",
+6400 => x"0d626462",
+6401 => x"64575f75",
+6402 => x"405b5981",
+6403 => x"527f510b",
+6404 => x"0b0bebb5",
+6405 => x"3f800880",
+6406 => x"0894057e",
+6407 => x"70bfffff",
+6408 => x"06705f71",
+6409 => x"fe0a0670",
+6410 => x"4270942a",
+6411 => x"5b525755",
+6412 => x"59577580",
+6413 => x"2e0b0b0b",
+6414 => x"0b873873",
+6415 => x"90800a07",
+6416 => x"5b7d5372",
+6417 => x"802e0b0b",
+6418 => x"0b80e038",
+6419 => x"725c8f3d",
+6420 => x"f405510b",
+6421 => x"0b0bf0b1",
+6422 => x"3f800855",
+6423 => x"8008802e",
+6424 => x"0b0b0b81",
+6425 => x"8d38a00b",
+6426 => x"8008317b",
+6427 => x"712b7d07",
+6428 => x"790c537a",
+6429 => x"80082a5b",
+6430 => x"7a70841a",
+6431 => x"0c703070",
+6432 => x"72078025",
+6433 => x"82713170",
+6434 => x"901c0c51",
+6435 => x"51545475",
+6436 => x"802e0b0b",
+6437 => x"0b0bb638",
+6438 => x"7416f7cd",
+6439 => x"05790cb5",
+6440 => x"75317a0c",
+6441 => x"76800c8f",
+6442 => x"3d0d048f",
+6443 => x"3df00551",
+6444 => x"0b0b0bef",
+6445 => x"d43f7a78",
+6446 => x"0c810b90",
+6447 => x"180c810b",
+6448 => x"8008a005",
+6449 => x"5653750b",
+6450 => x"0b0b0bcc",
+6451 => x"38f7ce15",
+6452 => x"790c7285",
+6453 => x"2b731010",
+6454 => x"19fc1108",
+6455 => x"5354540b",
+6456 => x"0b0beea4",
+6457 => x"3f738008",
+6458 => x"317a0c76",
+6459 => x"800c8f3d",
+6460 => x"0d047b78",
+6461 => x"0c7a7084",
+6462 => x"1a0c7030",
+6463 => x"70720780",
+6464 => x"25827131",
+6465 => x"70901c0c",
+6466 => x"51515454",
+6467 => x"0b0b0bfe",
+6468 => x"fe39f03d",
+6469 => x"0d626466",
+6470 => x"953de411",
+6471 => x"577256f8",
+6472 => x"05545858",
+6473 => x"580b0b0b",
+6474 => x"fbf03f92",
+6475 => x"3de01154",
+6476 => x"7653f005",
+6477 => x"510b0b0b",
+6478 => x"fbe03f90",
+6479 => x"17089017",
+6480 => x"0831852b",
+6481 => x"7b7b3111",
+6482 => x"51568076",
+6483 => x"250b0b0b",
+6484 => x"0bb03875",
+6485 => x"90800a29",
+6486 => x"6005407d",
+6487 => x"7f585476",
+6488 => x"557f6158",
+6489 => x"52765392",
+6490 => x"3de80551",
+6491 => x"0b0b80d6",
+6492 => x"ac3f7b7d",
+6493 => x"58780c76",
+6494 => x"84190c77",
+6495 => x"800c923d",
+6496 => x"0d047530",
+6497 => x"7090800a",
+6498 => x"291f5f56",
+6499 => x"7d7f5854",
+6500 => x"76557f61",
+6501 => x"58527653",
+6502 => x"923de805",
+6503 => x"510b0b80",
+6504 => x"d5fb3f7b",
+6505 => x"7d58780c",
+6506 => x"7684190c",
+6507 => x"77800c92",
+6508 => x"3d0d04f3",
+6509 => x"3d0d7f61",
+6510 => x"575c9ffc",
+6511 => x"0a578058",
+6512 => x"7597240b",
+6513 => x"0b0b0b9d",
+6514 => x"38751010",
+6515 => x"100b0b82",
+6516 => x"f2d80584",
+6517 => x"11087108",
+6518 => x"7e0c841e",
+6519 => x"0c7c800c",
+6520 => x"568f3d0d",
+6521 => x"04807625",
+6522 => x"0b0b0b0b",
+6523 => x"ab388d3d",
+6524 => x"5b80c882",
+6525 => x"0a59805a",
+6526 => x"78547955",
+6527 => x"76527753",
+6528 => x"7a510b0b",
+6529 => x"0bb6963f",
+6530 => x"7c7eff18",
+6531 => x"58595775",
+6532 => x"80240b0b",
+6533 => x"0b0be138",
+6534 => x"767c0c77",
+6535 => x"841d0c7b",
+6536 => x"800c8f3d",
+6537 => x"0d04ef3d",
+6538 => x"0d636567",
+6539 => x"405d427b",
+6540 => x"802e0b0b",
+6541 => x"0b85ea38",
+6542 => x"61510b0b",
+6543 => x"0be7883f",
+6544 => x"f81c7084",
+6545 => x"120870fc",
+6546 => x"0670628b",
+6547 => x"0570f806",
+6548 => x"4159455b",
+6549 => x"5c415796",
+6550 => x"74270b0b",
+6551 => x"0b82fe38",
+6552 => x"807b247e",
+6553 => x"7c260759",
+6554 => x"80547874",
+6555 => x"2e098106",
+6556 => x"0b0b0b82",
+6557 => x"e138777b",
+6558 => x"250b0b0b",
+6559 => x"82ab3877",
+6560 => x"170b0b82",
+6561 => x"fcc80b88",
+6562 => x"05085e56",
+6563 => x"7c762e0b",
+6564 => x"0b0b859f",
+6565 => x"38841608",
+6566 => x"70fe0617",
+6567 => x"84110881",
+6568 => x"06515555",
+6569 => x"730b0b0b",
+6570 => x"82bb3874",
+6571 => x"fc06597c",
+6572 => x"762e0b0b",
+6573 => x"0b85c938",
+6574 => x"77195f7e",
+6575 => x"7b250b0b",
+6576 => x"0b82aa38",
+6577 => x"79810654",
+6578 => x"730b0b0b",
+6579 => x"82f53876",
+6580 => x"77083184",
+6581 => x"1108fc06",
+6582 => x"565a7580",
+6583 => x"2e0b0b0b",
+6584 => x"0b97387c",
+6585 => x"762e0b0b",
+6586 => x"0b85d438",
+6587 => x"74191859",
+6588 => x"787b250b",
+6589 => x"0b0b84e2",
+6590 => x"3879802e",
+6591 => x"0b0b0b82",
+6592 => x"c2387715",
+6593 => x"567a7624",
+6594 => x"0b0b0b82",
+6595 => x"b6388c1a",
+6596 => x"08881b08",
+6597 => x"718c120c",
+6598 => x"88120c55",
+6599 => x"79765957",
+6600 => x"881761fc",
+6601 => x"05575975",
+6602 => x"a4260b0b",
+6603 => x"0b86e638",
+6604 => x"7b795555",
+6605 => x"9376270b",
+6606 => x"0b0b80d1",
+6607 => x"387b7084",
+6608 => x"055d087c",
+6609 => x"56790c74",
+6610 => x"70840556",
+6611 => x"088c180c",
+6612 => x"9017549b",
+6613 => x"76270b0b",
+6614 => x"0b0bb238",
+6615 => x"74708405",
+6616 => x"5608740c",
+6617 => x"74708405",
+6618 => x"56089418",
+6619 => x"0c981754",
+6620 => x"a376270b",
+6621 => x"0b0b0b95",
+6622 => x"38747084",
+6623 => x"05560874",
+6624 => x"0c747084",
+6625 => x"0556089c",
+6626 => x"180ca017",
+6627 => x"54747084",
+6628 => x"05560874",
+6629 => x"70840556",
+6630 => x"0c747084",
+6631 => x"05560874",
+6632 => x"70840556",
+6633 => x"0c740874",
+6634 => x"0c777b31",
+6635 => x"56758f26",
+6636 => x"0b0b0b80",
+6637 => x"d5388417",
+6638 => x"08810678",
+6639 => x"0784180c",
+6640 => x"77178411",
+6641 => x"08810784",
+6642 => x"120c5461",
+6643 => x"510b0b0b",
+6644 => x"e3f63f88",
+6645 => x"17547380",
+6646 => x"0c933d0d",
+6647 => x"04905b0b",
+6648 => x"0b0bfcfc",
+6649 => x"3978560b",
+6650 => x"0b0bfdd8",
+6651 => x"398c1608",
+6652 => x"88170871",
+6653 => x"8c120c88",
+6654 => x"120c557e",
+6655 => x"707c3157",
+6656 => x"588f7627",
+6657 => x"0b0b0bff",
+6658 => x"ad387a17",
+6659 => x"84180881",
+6660 => x"067c0784",
+6661 => x"190c7681",
+6662 => x"0784120c",
+6663 => x"76118411",
+6664 => x"08810784",
+6665 => x"120c5588",
+6666 => x"05526151",
+6667 => x"0b0bffbc",
+6668 => x"873f6151",
+6669 => x"0b0b0be3",
+6670 => x"8f3f8817",
+6671 => x"540b0b0b",
+6672 => x"ff94397d",
+6673 => x"5261510b",
+6674 => x"0b0bcef6",
+6675 => x"3f800859",
+6676 => x"8008802e",
+6677 => x"0b0b0b81",
+6678 => x"b7388008",
+6679 => x"f8056084",
+6680 => x"0508fe06",
+6681 => x"61055557",
+6682 => x"76742e0b",
+6683 => x"0b0b84b7",
+6684 => x"38fc1856",
+6685 => x"75a4260b",
+6686 => x"0b0b81c1",
+6687 => x"387b8008",
+6688 => x"55559376",
+6689 => x"270b0b0b",
+6690 => x"80e03874",
+6691 => x"70840556",
+6692 => x"08800870",
+6693 => x"8405800c",
+6694 => x"0c800875",
+6695 => x"70840557",
+6696 => x"08717084",
+6697 => x"05530c54",
+6698 => x"9b76270b",
+6699 => x"0b0b0bba",
+6700 => x"38747084",
+6701 => x"05560874",
+6702 => x"70840556",
+6703 => x"0c747084",
+6704 => x"05560874",
+6705 => x"70840556",
+6706 => x"0ca37627",
+6707 => x"0b0b0b0b",
+6708 => x"99387470",
+6709 => x"84055608",
+6710 => x"74708405",
+6711 => x"560c7470",
+6712 => x"84055608",
+6713 => x"74708405",
+6714 => x"560c7470",
+6715 => x"84055608",
+6716 => x"74708405",
+6717 => x"560c7470",
+6718 => x"84055608",
+6719 => x"74708405",
+6720 => x"560c7408",
+6721 => x"740c7b52",
+6722 => x"61510b0b",
+6723 => x"ffbaa93f",
+6724 => x"61510b0b",
+6725 => x"0be1b13f",
+6726 => x"78547380",
+6727 => x"0c933d0d",
+6728 => x"047d5261",
+6729 => x"510b0b0b",
+6730 => x"cd983f80",
+6731 => x"08800c93",
+6732 => x"3d0d0484",
+6733 => x"1608550b",
+6734 => x"0b0bfaef",
+6735 => x"3975537b",
+6736 => x"52800851",
+6737 => x"0b0bfec0",
+6738 => x"c23f7b52",
+6739 => x"61510b0b",
+6740 => x"ffb9e53f",
+6741 => x"0b0b0bff",
+6742 => x"b7398c16",
+6743 => x"08881708",
+6744 => x"718c120c",
+6745 => x"88120c55",
+6746 => x"8c1a0888",
+6747 => x"1b08718c",
+6748 => x"120c8812",
+6749 => x"0c557979",
+6750 => x"59570b0b",
+6751 => x"0bfba139",
+6752 => x"7719901c",
+6753 => x"55557375",
+6754 => x"240b0b0b",
+6755 => x"fab6387a",
+6756 => x"17700b0b",
+6757 => x"82fcc80b",
+6758 => x"88050c75",
+6759 => x"7c318107",
+6760 => x"84120c5d",
+6761 => x"84170881",
+6762 => x"067b0784",
+6763 => x"180c6151",
+6764 => x"0b0b0be0",
+6765 => x"933f8817",
+6766 => x"540b0b0b",
+6767 => x"fc983974",
+6768 => x"1918901c",
+6769 => x"555d737d",
+6770 => x"240b0b0b",
+6771 => x"faab388c",
+6772 => x"1a08881b",
+6773 => x"08718c12",
+6774 => x"0c88120c",
+6775 => x"55881a61",
+6776 => x"fc055759",
+6777 => x"75a4260b",
+6778 => x"0b0b81ca",
+6779 => x"387b7955",
+6780 => x"55937627",
+6781 => x"0b0b0b80",
+6782 => x"d1387b70",
+6783 => x"84055d08",
+6784 => x"7c56790c",
+6785 => x"74708405",
+6786 => x"56088c1b",
+6787 => x"0c901a54",
+6788 => x"9b76270b",
+6789 => x"0b0b0bb2",
+6790 => x"38747084",
+6791 => x"05560874",
+6792 => x"0c747084",
+6793 => x"05560894",
+6794 => x"1b0c981a",
+6795 => x"54a37627",
+6796 => x"0b0b0b0b",
+6797 => x"95387470",
+6798 => x"84055608",
+6799 => x"740c7470",
+6800 => x"84055608",
+6801 => x"9c1b0ca0",
+6802 => x"1a547470",
+6803 => x"84055608",
+6804 => x"74708405",
+6805 => x"560c7470",
+6806 => x"84055608",
+6807 => x"74708405",
+6808 => x"560c7408",
+6809 => x"740c7a1a",
+6810 => x"700b0b82",
+6811 => x"fcc80b88",
+6812 => x"050c7d7c",
+6813 => x"31810784",
+6814 => x"120c5484",
+6815 => x"1a088106",
+6816 => x"7b07841b",
+6817 => x"0c61510b",
+6818 => x"0b0bdebc",
+6819 => x"3f78540b",
+6820 => x"0b0bfd86",
+6821 => x"3975537b",
+6822 => x"5278510b",
+6823 => x"0bfebdeb",
+6824 => x"3f0b0b0b",
+6825 => x"fa833984",
+6826 => x"1708fc06",
+6827 => x"18605858",
+6828 => x"0b0b0bf9",
+6829 => x"f4397553",
+6830 => x"7b527851",
+6831 => x"0b0bfebd",
+6832 => x"ca3f7a1a",
+6833 => x"700b0b82",
+6834 => x"fcc80b88",
+6835 => x"050c7d7c",
+6836 => x"31810784",
+6837 => x"120c5484",
+6838 => x"1a088106",
+6839 => x"7b07841b",
+6840 => x"0c0b0b0b",
+6841 => x"ff9f3970",
+6842 => x"70707075",
+6843 => x"77535371",
+6844 => x"54733070",
+6845 => x"75079f2a",
+6846 => x"7075fe0a",
+6847 => x"06079081",
+6848 => x"0a119ffe",
+6849 => x"0a723107",
+6850 => x"709f2a81",
+6851 => x"7131800c",
+6852 => x"51515151",
+6853 => x"51505050",
+6854 => x"50047070",
+6855 => x"70707577",
+6856 => x"53537154",
+6857 => x"73307075",
+6858 => x"079f2a70",
+6859 => x"75fe0a06",
+6860 => x"079ffe0a",
+6861 => x"71319f2a",
+6862 => x"800c5151",
+6863 => x"51505050",
+6864 => x"50047070",
+6865 => x"7070800b",
+6866 => x"0b0b8385",
+6867 => x"840c7651",
+6868 => x"0b0b0b8c",
+6869 => x"f33f8008",
+6870 => x"538008ff",
+6871 => x"2e0b0b0b",
+6872 => x"0b893872",
+6873 => x"800c5050",
+6874 => x"5050040b",
+6875 => x"0b838584",
+6876 => x"08547380",
+6877 => x"2e0b0b0b",
+6878 => x"0be93875",
+6879 => x"74710c52",
+6880 => x"72800c50",
+6881 => x"50505004",
+6882 => x"f93d0d79",
+6883 => x"7c557b54",
+6884 => x"8e112270",
+6885 => x"902b7090",
+6886 => x"2c55570b",
+6887 => x"0b82f4ec",
+6888 => x"08535856",
+6889 => x"0b0b0b88",
+6890 => x"ac3f8008",
+6891 => x"57800b80",
+6892 => x"08240b0b",
+6893 => x"0b0b9338",
+6894 => x"80d01608",
+6895 => x"80080580",
+6896 => x"d0170c76",
+6897 => x"800c893d",
+6898 => x"0d048c16",
+6899 => x"2283dfff",
+6900 => x"0655748c",
+6901 => x"17237680",
+6902 => x"0c893d0d",
+6903 => x"04fa3d0d",
+6904 => x"788c1122",
+6905 => x"70882a70",
+6906 => x"81065157",
+6907 => x"5856740b",
+6908 => x"0b0b0bae",
+6909 => x"388c1622",
+6910 => x"83dfff06",
+6911 => x"55748c17",
+6912 => x"237a5479",
+6913 => x"538e1622",
+6914 => x"70902b70",
+6915 => x"902c5456",
+6916 => x"0b0b82f4",
+6917 => x"ec085256",
+6918 => x"0b0b0b83",
+6919 => x"f33f883d",
+6920 => x"0d048254",
+6921 => x"80538e16",
+6922 => x"2270902b",
+6923 => x"70902c54",
+6924 => x"560b0b82",
+6925 => x"f4ec0852",
+6926 => x"570b0b0b",
+6927 => x"86d03f8c",
+6928 => x"162283df",
+6929 => x"ff065574",
+6930 => x"8c17237a",
+6931 => x"5479538e",
+6932 => x"16227090",
+6933 => x"2b70902c",
+6934 => x"54560b0b",
+6935 => x"82f4ec08",
+6936 => x"52560b0b",
+6937 => x"0b83a93f",
+6938 => x"883d0d04",
+6939 => x"f93d0d79",
+6940 => x"7c557b54",
+6941 => x"8e112270",
+6942 => x"902b7090",
+6943 => x"2c55570b",
+6944 => x"0b82f4ec",
+6945 => x"08535856",
+6946 => x"0b0b0b86",
+6947 => x"813f8008",
+6948 => x"578008ff",
+6949 => x"2e0b0b0b",
+6950 => x"0b99388c",
+6951 => x"1622a080",
+6952 => x"0755748c",
+6953 => x"17238008",
+6954 => x"80d0170c",
+6955 => x"76800c89",
+6956 => x"3d0d048c",
+6957 => x"162283df",
+6958 => x"ff065574",
+6959 => x"8c172376",
+6960 => x"800c893d",
+6961 => x"0d047070",
+6962 => x"70748e11",
+6963 => x"2270902b",
+6964 => x"70902c55",
+6965 => x"5151530b",
+6966 => x"0b82f4ec",
+6967 => x"08510b0b",
+6968 => x"0b84a03f",
+6969 => x"50505004",
+6970 => x"fb3d0d77",
+6971 => x"79707207",
+6972 => x"83065354",
+6973 => x"52700b0b",
+6974 => x"0b0b9638",
+6975 => x"71737308",
+6976 => x"54565471",
+6977 => x"73082e0b",
+6978 => x"0b0b80d0",
+6979 => x"38737554",
+6980 => x"52713370",
+6981 => x"81ff0652",
+6982 => x"5470802e",
+6983 => x"0b0b0b0b",
+6984 => x"a5387233",
+6985 => x"5570752e",
+6986 => x"0981060b",
+6987 => x"0b0b0b99",
+6988 => x"38811281",
+6989 => x"14713370",
+6990 => x"81ff0654",
+6991 => x"56545270",
+6992 => x"0b0b0b0b",
+6993 => x"dd387233",
+6994 => x"557381ff",
+6995 => x"067581ff",
+6996 => x"06717131",
+6997 => x"800c5252",
+6998 => x"873d0d04",
+6999 => x"710970f7",
+7000 => x"fbfdff14",
+7001 => x"0670f884",
+7002 => x"82818006",
+7003 => x"51515170",
+7004 => x"0b0b0b0b",
+7005 => x"9e388414",
+7006 => x"84167108",
+7007 => x"54565471",
+7008 => x"75082e0b",
+7009 => x"0b0b0bd4",
+7010 => x"38737554",
+7011 => x"520b0b0b",
+7012 => x"feff3980",
+7013 => x"0b800c87",
+7014 => x"3d0d0470",
+7015 => x"70707075",
+7016 => x"70718306",
+7017 => x"53555270",
+7018 => x"0b0b0b80",
+7019 => x"c0387170",
+7020 => x"087009f7",
+7021 => x"fbfdff12",
+7022 => x"0670f884",
+7023 => x"82818006",
+7024 => x"51515253",
+7025 => x"700b0b0b",
+7026 => x"0ba13884",
+7027 => x"13700870",
+7028 => x"09f7fbfd",
+7029 => x"ff120670",
+7030 => x"f8848281",
+7031 => x"80065151",
+7032 => x"52537080",
+7033 => x"2e0b0b0b",
+7034 => x"0be13872",
+7035 => x"52713351",
+7036 => x"70802e0b",
+7037 => x"0b0b0b8e",
+7038 => x"38811270",
+7039 => x"33525270",
+7040 => x"0b0b0b0b",
+7041 => x"f4387174",
+7042 => x"31800c50",
+7043 => x"50505004",
+7044 => x"fb3d0d80",
+7045 => x"0b0b0b83",
+7046 => x"85840c7a",
+7047 => x"53795278",
+7048 => x"510b0b0b",
+7049 => x"88de3f80",
+7050 => x"08558008",
+7051 => x"ff2e0b0b",
+7052 => x"0b0b8838",
+7053 => x"74800c87",
+7054 => x"3d0d040b",
+7055 => x"0b838584",
+7056 => x"08567580",
+7057 => x"2e0b0b0b",
+7058 => x"0bea3877",
+7059 => x"76710c54",
+7060 => x"74800c87",
+7061 => x"3d0d04fb",
+7062 => x"3d0d787a",
+7063 => x"29527751",
+7064 => x"0b0b0bc2",
+7065 => x"dd3f8008",
+7066 => x"80085556",
+7067 => x"8008802e",
+7068 => x"0b0b0b80",
+7069 => x"f2388008",
+7070 => x"fc0508fc",
+7071 => x"06fc0555",
+7072 => x"74a4260b",
+7073 => x"0b0b80e6",
+7074 => x"38937527",
+7075 => x"0b0b0b80",
+7076 => x"c338800b",
+7077 => x"80087084",
+7078 => x"05800c0c",
+7079 => x"80085480",
+7080 => x"74708405",
+7081 => x"560c9b75",
+7082 => x"270b0b0b",
+7083 => x"0ba63880",
+7084 => x"74708405",
+7085 => x"560c8074",
+7086 => x"70840556",
+7087 => x"0ca37527",
+7088 => x"0b0b0b0b",
+7089 => x"8f388074",
+7090 => x"70840556",
+7091 => x"0c807470",
+7092 => x"8405560c",
+7093 => x"80747084",
+7094 => x"05560c80",
+7095 => x"74708405",
+7096 => x"560c8074",
+7097 => x"0c755473",
+7098 => x"800c873d",
+7099 => x"0d047453",
+7100 => x"80528008",
+7101 => x"510b0b0b",
+7102 => x"d49b3f75",
+7103 => x"540b0b0b",
+7104 => x"0be53970",
+7105 => x"70707080",
+7106 => x"0b0b0b83",
+7107 => x"85840c76",
+7108 => x"510b0b0b",
+7109 => x"8a943f80",
+7110 => x"08538008",
+7111 => x"ff2e0b0b",
+7112 => x"0b0b8938",
+7113 => x"72800c50",
+7114 => x"50505004",
+7115 => x"0b0b8385",
+7116 => x"84085473",
+7117 => x"802e0b0b",
+7118 => x"0b0be938",
+7119 => x"7574710c",
+7120 => x"5272800c",
+7121 => x"50505050",
+7122 => x"04fc3d0d",
+7123 => x"800b0b0b",
+7124 => x"8385840c",
+7125 => x"78527751",
+7126 => x"0b0b0b8d",
+7127 => x"823f8008",
+7128 => x"548008ff",
+7129 => x"2e0b0b0b",
+7130 => x"0b883873",
+7131 => x"800c863d",
+7132 => x"0d040b0b",
+7133 => x"83858408",
+7134 => x"5574802e",
+7135 => x"0b0b0b0b",
+7136 => x"ea387675",
+7137 => x"710c5373",
+7138 => x"800c863d",
+7139 => x"0d04fb3d",
+7140 => x"0d800b0b",
+7141 => x"0b838584",
+7142 => x"0c7a5379",
+7143 => x"5278510b",
+7144 => x"0b0b8a9e",
+7145 => x"3f800855",
+7146 => x"8008ff2e",
+7147 => x"0b0b0b0b",
+7148 => x"88387480",
+7149 => x"0c873d0d",
+7150 => x"040b0b83",
+7151 => x"85840856",
+7152 => x"75802e0b",
+7153 => x"0b0b0bea",
+7154 => x"38777671",
+7155 => x"0c547480",
+7156 => x"0c873d0d",
+7157 => x"04fb3d0d",
+7158 => x"800b0b0b",
+7159 => x"8385840c",
+7160 => x"7a537952",
+7161 => x"78510b0b",
+7162 => x"0b86b13f",
+7163 => x"80085580",
+7164 => x"08ff2e0b",
+7165 => x"0b0b0b88",
+7166 => x"3874800c",
+7167 => x"873d0d04",
+7168 => x"0b0b8385",
+7169 => x"84085675",
+7170 => x"802e0b0b",
+7171 => x"0b0bea38",
+7172 => x"7776710c",
+7173 => x"5474800c",
+7174 => x"873d0d04",
+7175 => x"fc3d0d76",
+7176 => x"78700855",
+7177 => x"5555720b",
+7178 => x"0b0b0b8f",
+7179 => x"38735274",
+7180 => x"510b0bff",
+7181 => x"ac823f86",
+7182 => x"3d0d0472",
+7183 => x"5274510b",
+7184 => x"0b0b0bd8",
+7185 => x"3f735274",
+7186 => x"510b0bff",
+7187 => x"abea3f86",
+7188 => x"3d0d04fb",
+7189 => x"3d0d7755",
+7190 => x"740b0b82",
+7191 => x"f4ec082e",
+7192 => x"0b0b0b80",
+7193 => x"fe3880cc",
+7194 => x"15085380",
+7195 => x"5672762e",
+7196 => x"0981060b",
+7197 => x"0b0b8180",
+7198 => x"3882c815",
+7199 => x"08537280",
+7200 => x"2e0b0b0b",
+7201 => x"0bb23882",
+7202 => x"cc155672",
+7203 => x"762e0b0b",
+7204 => x"0b0ba538",
+7205 => x"72547574",
+7206 => x"2e0b0b0b",
+7207 => x"0b9a3873",
+7208 => x"74085552",
+7209 => x"74510b0b",
+7210 => x"ffab8d3f",
+7211 => x"75742e09",
+7212 => x"81060b0b",
+7213 => x"0b0be838",
+7214 => x"80d41508",
+7215 => x"53720b0b",
+7216 => x"0b80d938",
+7217 => x"b8150880",
+7218 => x"2e0b0b0b",
+7219 => x"0b953874",
+7220 => x"51bc1508",
+7221 => x"53722d84",
+7222 => x"dc150853",
+7223 => x"720b0b0b",
+7224 => x"80ca3887",
+7225 => x"3d0d0481",
+7226 => x"1656758e",
+7227 => x"240b0b0b",
+7228 => x"80c83880",
+7229 => x"cc150853",
+7230 => x"75101013",
+7231 => x"70085553",
+7232 => x"73802e0b",
+7233 => x"0b0b0bdf",
+7234 => x"38737408",
+7235 => x"55527451",
+7236 => x"0b0bffaa",
+7237 => x"a33f0b0b",
+7238 => x"0b0be539",
+7239 => x"72527451",
+7240 => x"0b0bffaa",
+7241 => x"933f0b0b",
+7242 => x"0bff9939",
+7243 => x"72527451",
+7244 => x"0b0b0bfd",
+7245 => x"e73f873d",
+7246 => x"0d0480cc",
+7247 => x"15085274",
+7248 => x"510b0bff",
+7249 => x"a9f23f0b",
+7250 => x"0b0bfead",
+7251 => x"39fb3d0d",
+7252 => x"77567580",
+7253 => x"2e0b0b0b",
+7254 => x"80dc3882",
+7255 => x"c8160855",
+7256 => x"74802e0b",
+7257 => x"0b0b0bb5",
+7258 => x"38841508",
+7259 => x"ff055480",
+7260 => x"74240b0b",
+7261 => x"0b0b9c38",
+7262 => x"73101015",
+7263 => x"88055372",
+7264 => x"08fc1454",
+7265 => x"52712dff",
+7266 => x"14547380",
+7267 => x"250b0b0b",
+7268 => x"0bed3874",
+7269 => x"0855740b",
+7270 => x"0b0b0bcd",
+7271 => x"38bc1608",
+7272 => x"0b0b0b0b",
+7273 => x"8538873d",
+7274 => x"0d047551",
+7275 => x"bc160852",
+7276 => x"712d873d",
+7277 => x"0d040b0b",
+7278 => x"82f4ec08",
+7279 => x"82c81108",
+7280 => x"56560b0b",
+7281 => x"0bff9939",
+7282 => x"7070700b",
+7283 => x"0b8384fc",
+7284 => x"080b0b0b",
+7285 => x"0b8d380b",
+7286 => x"0b838588",
+7287 => x"0b0b0b83",
+7288 => x"84fc0c0b",
+7289 => x"0b8384fc",
+7290 => x"08751152",
+7291 => x"52ff5370",
+7292 => x"0b87fb80",
+7293 => x"80260b0b",
+7294 => x"0b0b8a38",
+7295 => x"700b0b83",
+7296 => x"84fc0c71",
+7297 => x"5372800c",
+7298 => x"50505004",
+7299 => x"fd3d0d80",
+7300 => x"0b0b0b82",
+7301 => x"f4e00854",
+7302 => x"5472812e",
+7303 => x"0b0b0b0b",
+7304 => x"ab38730b",
+7305 => x"0b838580",
+7306 => x"0c0b0bfe",
+7307 => x"a5853f0b",
+7308 => x"0bfea3cc",
+7309 => x"3f0b0b83",
+7310 => x"84d05281",
+7311 => x"510b0bfe",
+7312 => x"a7dd3f80",
+7313 => x"08510b0b",
+7314 => x"0b89973f",
+7315 => x"720b0b83",
+7316 => x"85800c0b",
+7317 => x"0bfea4db",
+7318 => x"3f0b0bfe",
+7319 => x"a3a23f0b",
+7320 => x"0b8384d0",
+7321 => x"5281510b",
+7322 => x"0bfea7b3",
+7323 => x"3f800851",
+7324 => x"0b0b0b88",
+7325 => x"ed3f000b",
+7326 => x"0b0b0bfb",
+7327 => x"39000b0b",
+7328 => x"0b0bfb39",
+7329 => x"f53d0d7e",
+7330 => x"600b0b83",
+7331 => x"85800870",
+7332 => x"5b585b5b",
+7333 => x"750b0b0b",
+7334 => x"80db3877",
+7335 => x"7a250b0b",
+7336 => x"0b0bac38",
+7337 => x"771b7033",
+7338 => x"7081ff06",
+7339 => x"58585975",
+7340 => x"8a2e0b0b",
+7341 => x"0b0b9f38",
+7342 => x"7681ff06",
+7343 => x"510b0bfe",
+7344 => x"a3cc3f81",
+7345 => x"18587978",
+7346 => x"240b0b0b",
+7347 => x"0bd63879",
+7348 => x"800c8d3d",
+7349 => x"0d048d51",
+7350 => x"0b0bfea3",
+7351 => x"b13f7833",
+7352 => x"7081ff06",
+7353 => x"52570b0b",
+7354 => x"fea3a33f",
+7355 => x"8118580b",
+7356 => x"0b0b0bd2",
+7357 => x"3979557a",
+7358 => x"547d5385",
+7359 => x"528d3dfc",
+7360 => x"05510b0b",
+7361 => x"fea2c03f",
+7362 => x"8008560b",
+7363 => x"0b0b87c9",
+7364 => x"3f7b8008",
+7365 => x"0c75800c",
+7366 => x"8d3d0d04",
+7367 => x"f63d0d7d",
+7368 => x"7f0b0b83",
+7369 => x"85800870",
+7370 => x"5b585a5a",
+7371 => x"750b0b0b",
+7372 => x"80d63877",
+7373 => x"79250b0b",
+7374 => x"0b80c438",
+7375 => x"0b0bfea2",
+7376 => x"a43f8008",
+7377 => x"81ff0670",
+7378 => x"8d327030",
+7379 => x"709f2a51",
+7380 => x"51575776",
+7381 => x"8a2e0b0b",
+7382 => x"0b80d438",
+7383 => x"75802e0b",
+7384 => x"0b0b80cb",
+7385 => x"38771a56",
+7386 => x"76763476",
+7387 => x"510b0bfe",
+7388 => x"a29c3f81",
+7389 => x"18587878",
+7390 => x"240b0b0b",
+7391 => x"ffbe3877",
+7392 => x"5675800c",
+7393 => x"8c3d0d04",
+7394 => x"78557954",
+7395 => x"7c538452",
+7396 => x"8c3dfc05",
+7397 => x"510b0bfe",
+7398 => x"a1ad3f80",
+7399 => x"08560b0b",
+7400 => x"0b86b63f",
+7401 => x"7a80080c",
+7402 => x"75800c8c",
+7403 => x"3d0d0477",
+7404 => x"1a568a76",
+7405 => x"34811858",
+7406 => x"8d510b0b",
+7407 => x"fea1cf3f",
+7408 => x"8a510b0b",
+7409 => x"fea1c73f",
+7410 => x"77560b0b",
+7411 => x"0bffb239",
+7412 => x"f93d0d79",
+7413 => x"570b0b83",
+7414 => x"85800880",
+7415 => x"2e0b0b0b",
+7416 => x"0bb53876",
+7417 => x"510b0b0b",
+7418 => x"f3b13f7b",
+7419 => x"567a5580",
+7420 => x"08810554",
+7421 => x"76538252",
+7422 => x"893dfc05",
+7423 => x"510b0bfe",
+7424 => x"a0c53f80",
+7425 => x"08570b0b",
+7426 => x"0b85ce3f",
+7427 => x"7780080c",
+7428 => x"76800c89",
+7429 => x"3d0d040b",
+7430 => x"0b0b85bd",
+7431 => x"3f850b80",
+7432 => x"080cff0b",
+7433 => x"800c893d",
+7434 => x"0d04fb3d",
+7435 => x"0d0b0b83",
+7436 => x"85800870",
+7437 => x"5654730b",
+7438 => x"0b0b0b88",
+7439 => x"3874800c",
+7440 => x"873d0d04",
+7441 => x"77538352",
+7442 => x"873dfc05",
+7443 => x"510b0bfe",
+7444 => x"9ff53f80",
+7445 => x"08540b0b",
+7446 => x"0b84fe3f",
+7447 => x"7580080c",
+7448 => x"73800c87",
+7449 => x"3d0d04ff",
+7450 => x"0b800c04",
+7451 => x"fb3d0d77",
+7452 => x"550b0b83",
+7453 => x"85800880",
+7454 => x"2e0b0b0b",
+7455 => x"0bb13874",
+7456 => x"510b0b0b",
+7457 => x"f2953f80",
+7458 => x"08810554",
+7459 => x"74538752",
+7460 => x"873dfc05",
+7461 => x"510b0bfe",
+7462 => x"9fad3f80",
+7463 => x"08550b0b",
+7464 => x"0b84b63f",
+7465 => x"7580080c",
+7466 => x"74800c87",
+7467 => x"3d0d040b",
+7468 => x"0b0b84a5",
+7469 => x"3f850b80",
+7470 => x"080cff0b",
+7471 => x"800c873d",
+7472 => x"0d04fa3d",
+7473 => x"0d0b0b83",
+7474 => x"85800880",
+7475 => x"2e0b0b0b",
+7476 => x"0ba8387a",
+7477 => x"55795478",
+7478 => x"53865288",
+7479 => x"3dfc0551",
+7480 => x"0b0bfe9e",
+7481 => x"e23f8008",
+7482 => x"560b0b0b",
+7483 => x"83eb3f76",
+7484 => x"80080c75",
+7485 => x"800c883d",
+7486 => x"0d040b0b",
+7487 => x"0b83da3f",
+7488 => x"9d0b8008",
+7489 => x"0cff0b80",
+7490 => x"0c883d0d",
+7491 => x"04fb3d0d",
+7492 => x"77795656",
+7493 => x"80705454",
+7494 => x"7375250b",
+7495 => x"0b0b0ba3",
+7496 => x"38741010",
+7497 => x"10f80552",
+7498 => x"72167033",
+7499 => x"70742b76",
+7500 => x"078116f8",
+7501 => x"16565656",
+7502 => x"51517473",
+7503 => x"240b0b0b",
+7504 => x"0be63873",
+7505 => x"800c873d",
+7506 => x"0d04fc3d",
+7507 => x"0d767855",
+7508 => x"55bc5380",
+7509 => x"5273510b",
+7510 => x"0b0bc7b9",
+7511 => x"3f845274",
+7512 => x"510b0b0b",
+7513 => x"ffa73f80",
+7514 => x"08742384",
+7515 => x"52841551",
+7516 => x"0b0b0bff",
+7517 => x"983f8008",
+7518 => x"82152384",
+7519 => x"52881551",
+7520 => x"0b0b0bff",
+7521 => x"883f8008",
+7522 => x"84150c84",
+7523 => x"528c1551",
+7524 => x"0b0b0bfe",
+7525 => x"f83f8008",
+7526 => x"88152384",
+7527 => x"52901551",
+7528 => x"0b0b0bfe",
+7529 => x"e83f8008",
+7530 => x"8a152384",
+7531 => x"52941551",
+7532 => x"0b0b0bfe",
+7533 => x"d83f8008",
+7534 => x"8c152384",
+7535 => x"52981551",
+7536 => x"0b0b0bfe",
+7537 => x"c83f8008",
+7538 => x"8e152388",
+7539 => x"529c1551",
+7540 => x"0b0b0bfe",
+7541 => x"b83f8008",
+7542 => x"90150c86",
+7543 => x"3d0d04e9",
+7544 => x"3d0d6a0b",
+7545 => x"0b838580",
+7546 => x"08575775",
+7547 => x"0b0b0b0b",
+7548 => x"933880c0",
+7549 => x"800b8418",
+7550 => x"0c75ac18",
+7551 => x"0c75800c",
+7552 => x"993d0d04",
+7553 => x"893d7055",
+7554 => x"6a54558a",
+7555 => x"52993dff",
+7556 => x"bc05510b",
+7557 => x"0bfe9caf",
+7558 => x"3f800877",
+7559 => x"53755256",
+7560 => x"0b0b0bfe",
+7561 => x"a53f0b0b",
+7562 => x"0b81ae3f",
+7563 => x"7780080c",
+7564 => x"75800c99",
+7565 => x"3d0d04e9",
+7566 => x"3d0d6957",
+7567 => x"0b0b8385",
+7568 => x"8008802e",
+7569 => x"0b0b0b80",
+7570 => x"c1387651",
+7571 => x"0b0b0bee",
+7572 => x"ca3f893d",
+7573 => x"70568008",
+7574 => x"81055577",
+7575 => x"54568f52",
+7576 => x"993dffbc",
+7577 => x"05510b0b",
+7578 => x"fe9bdc3f",
+7579 => x"80086b53",
+7580 => x"7652570b",
+7581 => x"0b0bfdd2",
+7582 => x"3f0b0b0b",
+7583 => x"80db3f77",
+7584 => x"80080c76",
+7585 => x"800c993d",
+7586 => x"0d040b0b",
+7587 => x"0b80ca3f",
+7588 => x"850b8008",
+7589 => x"0cff0b80",
+7590 => x"0c993d0d",
+7591 => x"04fc3d0d",
+7592 => x"81540b0b",
+7593 => x"83858008",
+7594 => x"0b0b0b0b",
+7595 => x"88387380",
+7596 => x"0c863d0d",
+7597 => x"04765397",
+7598 => x"b952863d",
+7599 => x"fc05510b",
+7600 => x"0bfe9b83",
+7601 => x"3f800854",
+7602 => x"0b0b0b0b",
+7603 => x"8c3f7480",
+7604 => x"080c7380",
+7605 => x"0c863d0d",
+7606 => x"040b0b82",
+7607 => x"f4ec0880",
+7608 => x"0c04f73d",
+7609 => x"0d7b0b0b",
+7610 => x"82f4ec08",
+7611 => x"82c81108",
+7612 => x"5a545a77",
+7613 => x"802e0b0b",
+7614 => x"0b80ee38",
+7615 => x"81881884",
+7616 => x"1908ff05",
+7617 => x"81712b59",
+7618 => x"55598074",
+7619 => x"240b0b0b",
+7620 => x"81893880",
+7621 => x"74240b0b",
+7622 => x"0b0bbd38",
+7623 => x"73822b78",
+7624 => x"11880556",
+7625 => x"56818019",
+7626 => x"08770653",
+7627 => x"72802e0b",
+7628 => x"0b0b80c6",
+7629 => x"38781670",
+7630 => x"08535379",
+7631 => x"51740853",
+7632 => x"722dff14",
+7633 => x"fc17fc17",
+7634 => x"79812c5a",
+7635 => x"57575473",
+7636 => x"80250b0b",
+7637 => x"0b0bce38",
+7638 => x"77085877",
+7639 => x"0b0b0bff",
+7640 => x"9b380b0b",
+7641 => x"82f4ec08",
+7642 => x"53bc1308",
+7643 => x"0b0b0b0b",
+7644 => x"b2387951",
+7645 => x"0b0b0bf5",
+7646 => x"fd3f7408",
+7647 => x"53722dff",
+7648 => x"14fc17fc",
+7649 => x"1779812c",
+7650 => x"5a575754",
+7651 => x"7380250b",
+7652 => x"0b0bff91",
+7653 => x"380b0b0b",
+7654 => x"ffbe3980",
+7655 => x"570b0b0b",
+7656 => x"fef13972",
+7657 => x"51bc1308",
+7658 => x"53722d79",
+7659 => x"510b0b0b",
+7660 => x"f5c43f8c",
+7661 => x"08028c0c",
+7662 => x"d43d0d8c",
+7663 => x"08880508",
+7664 => x"510b0b0b",
+7665 => x"8fb43f80",
+7666 => x"08547380",
+7667 => x"2e0b0b0b",
+7668 => x"0b93388c",
+7669 => x"08880508",
+7670 => x"708c08d0",
+7671 => x"050c540b",
+7672 => x"0b0b8e8a",
+7673 => x"398c088c",
+7674 => x"0508510b",
+7675 => x"0b0b8f8a",
+7676 => x"3f800854",
+7677 => x"73802e0b",
+7678 => x"0b0b0b93",
+7679 => x"388c088c",
+7680 => x"0508708c",
+7681 => x"08d0050c",
+7682 => x"540b0b0b",
+7683 => x"8de0398c",
+7684 => x"08880508",
+7685 => x"510b0b0b",
+7686 => x"8eaa3f80",
+7687 => x"08547380",
+7688 => x"2e0b0b0b",
+7689 => x"80d9388c",
+7690 => x"088c0508",
+7691 => x"510b0b0b",
+7692 => x"8e923f80",
+7693 => x"08547380",
+7694 => x"2e0b0b0b",
+7695 => x"0baf388c",
+7696 => x"08880508",
+7697 => x"8c088c05",
+7698 => x"08555584",
+7699 => x"15088415",
+7700 => x"082e0b0b",
+7701 => x"0b0b9638",
+7702 => x"0b0b0b8d",
+7703 => x"d43f8008",
+7704 => x"708c08d0",
+7705 => x"050c540b",
+7706 => x"0b0b8d82",
+7707 => x"398c0888",
+7708 => x"0508708c",
+7709 => x"08d0050c",
+7710 => x"540b0b0b",
+7711 => x"8cf0398c",
+7712 => x"088c0508",
+7713 => x"510b0b0b",
+7714 => x"8dba3f80",
+7715 => x"08547380",
+7716 => x"2e0b0b0b",
+7717 => x"0b93388c",
+7718 => x"088c0508",
+7719 => x"708c08d0",
+7720 => x"050c540b",
+7721 => x"0b0b8cc6",
+7722 => x"398c088c",
+7723 => x"0508510b",
+7724 => x"0b0b8cc7",
+7725 => x"3f800854",
+7726 => x"73802e0b",
+7727 => x"0b0b80f5",
+7728 => x"388c0888",
+7729 => x"0508510b",
+7730 => x"0b0b8caf",
+7731 => x"3f800854",
+7732 => x"73802e0b",
+7733 => x"0b0b80cb",
+7734 => x"388c0890",
+7735 => x"05088c08",
+7736 => x"88050871",
+7737 => x"58565494",
+7738 => x"70547553",
+7739 => x"7652540b",
+7740 => x"0bfea197",
+7741 => x"3f8c0890",
+7742 => x"05088c08",
+7743 => x"8805088c",
+7744 => x"088c0508",
+7745 => x"84120884",
+7746 => x"12080684",
+7747 => x"140c8c08",
+7748 => x"90050870",
+7749 => x"8c08d005",
+7750 => x"0c515656",
+7751 => x"560b0b0b",
+7752 => x"8bcc398c",
+7753 => x"08880508",
+7754 => x"708c08d0",
+7755 => x"050c540b",
+7756 => x"0b0b8bba",
+7757 => x"398c0888",
+7758 => x"0508510b",
+7759 => x"0b0b8bbb",
+7760 => x"3f800854",
+7761 => x"73802e0b",
+7762 => x"0b0b0b93",
+7763 => x"388c088c",
+7764 => x"0508708c",
+7765 => x"08d0050c",
+7766 => x"540b0b0b",
+7767 => x"8b90398c",
+7768 => x"08880508",
+7769 => x"8811088c",
+7770 => x"08f4050c",
+7771 => x"8c088c05",
+7772 => x"08881108",
+7773 => x"8c08f005",
+7774 => x"0c8c0888",
+7775 => x"05085151",
+7776 => x"54901408",
+7777 => x"8c150855",
+7778 => x"55738c08",
+7779 => x"e8050c74",
+7780 => x"8c08ec05",
+7781 => x"0c8c088c",
+7782 => x"05085490",
+7783 => x"14088c15",
+7784 => x"08555573",
+7785 => x"8c08e005",
+7786 => x"0c748c08",
+7787 => x"e4050c8c",
+7788 => x"08f40508",
+7789 => x"8c08f005",
+7790 => x"08318c08",
+7791 => x"dc050c8c",
+7792 => x"08dc0508",
+7793 => x"80250b0b",
+7794 => x"0b0b8c38",
+7795 => x"8c08dc05",
+7796 => x"08308c08",
+7797 => x"dc050c8c",
+7798 => x"08dc0508",
+7799 => x"bf240b0b",
+7800 => x"0b81bf38",
+7801 => x"8c08f005",
+7802 => x"088c08f4",
+7803 => x"0508250b",
+7804 => x"0b0b80cf",
+7805 => x"388c08f0",
+7806 => x"05088105",
+7807 => x"8c08f005",
+7808 => x"0c8c08e0",
+7809 => x"05088006",
+7810 => x"8c08e405",
+7811 => x"0881068c",
+7812 => x"08e00508",
+7813 => x"9f2b8c08",
+7814 => x"e4050881",
+7815 => x"2a707207",
+7816 => x"8c08e005",
+7817 => x"08812a70",
+7818 => x"76078c08",
+7819 => x"e0050c74",
+7820 => x"72078c08",
+7821 => x"e4050c59",
+7822 => x"595b5b58",
+7823 => x"560b0b0b",
+7824 => x"ffa2398c",
+7825 => x"08f40508",
+7826 => x"8c08f005",
+7827 => x"08250b0b",
+7828 => x"0b819a38",
+7829 => x"8c08f405",
+7830 => x"0881058c",
+7831 => x"08f4050c",
+7832 => x"8c08e805",
+7833 => x"0880068c",
+7834 => x"08ec0508",
+7835 => x"81068c08",
+7836 => x"e805089f",
+7837 => x"2b8c08ec",
+7838 => x"0508812a",
+7839 => x"7072078c",
+7840 => x"08e80508",
+7841 => x"812a7076",
+7842 => x"078c08e8",
+7843 => x"050c7472",
+7844 => x"078c08ec",
+7845 => x"050c5959",
+7846 => x"5b5b5856",
+7847 => x"0b0b0bff",
+7848 => x"a2398c08",
+7849 => x"f005088c",
+7850 => x"08f40508",
+7851 => x"250b0b0b",
+7852 => x"0ba1388c",
+7853 => x"08f40508",
+7854 => x"8c08f005",
+7855 => x"0c805480",
+7856 => x"55738c08",
+7857 => x"e0050c74",
+7858 => x"8c08e405",
+7859 => x"0c0b0b0b",
+7860 => x"0b9b398c",
+7861 => x"08f00508",
+7862 => x"8c08f405",
+7863 => x"0c805480",
+7864 => x"55738c08",
+7865 => x"e8050c74",
+7866 => x"8c08ec05",
+7867 => x"0c8c0888",
+7868 => x"05088c08",
+7869 => x"8c050855",
+7870 => x"55841508",
+7871 => x"8415082e",
+7872 => x"0b0b0b85",
+7873 => x"85388c08",
+7874 => x"88050854",
+7875 => x"84140880",
+7876 => x"2e0b0b0b",
+7877 => x"81bc388c",
+7878 => x"08e00508",
+7879 => x"8c08e405",
+7880 => x"08565473",
+7881 => x"8c08c805",
+7882 => x"0c748c08",
+7883 => x"cc050c8c",
+7884 => x"08e80508",
+7885 => x"8c08ec05",
+7886 => x"08575574",
+7887 => x"8c08c005",
+7888 => x"0c758c08",
+7889 => x"c4050c8c",
+7890 => x"08cc0508",
+7891 => x"8c08c405",
+7892 => x"08717131",
+7893 => x"708c08ff",
+7894 => x"bc050c52",
+7895 => x"5556810b",
+7896 => x"8c08ffb4",
+7897 => x"050c8c08",
+7898 => x"ffbc0508",
+7899 => x"8c08cc05",
+7900 => x"08575574",
+7901 => x"76260b0b",
+7902 => x"0b0b8938",
+7903 => x"800b8c08",
+7904 => x"ffb4050c",
+7905 => x"8c08c805",
+7906 => x"088c08c0",
+7907 => x"05087171",
+7908 => x"31708c08",
+7909 => x"ffb8050c",
+7910 => x"8c08ffb8",
+7911 => x"0508708c",
+7912 => x"08ffb405",
+7913 => x"0831708c",
+7914 => x"08ffb805",
+7915 => x"0c525952",
+7916 => x"56548c08",
+7917 => x"ffb80508",
+7918 => x"8c08ffbc",
+7919 => x"05085654",
+7920 => x"738c08f8",
+7921 => x"050c748c",
+7922 => x"08fc050c",
+7923 => x"0b0b0b81",
+7924 => x"bf398c08",
+7925 => x"e805088c",
+7926 => x"08ec0508",
+7927 => x"5755748c",
+7928 => x"08ffac05",
+7929 => x"0c758c08",
+7930 => x"ffb0050c",
+7931 => x"8c08e005",
+7932 => x"088c08e4",
+7933 => x"05085654",
+7934 => x"738c08ff",
+7935 => x"a4050c74",
+7936 => x"8c08ffa8",
+7937 => x"050c8c08",
+7938 => x"ffb00508",
+7939 => x"8c08ffa8",
+7940 => x"05087171",
+7941 => x"31708c08",
+7942 => x"ffa0050c",
+7943 => x"52575581",
+7944 => x"0b8c08ff",
+7945 => x"98050c8c",
+7946 => x"08ffa005",
+7947 => x"088c08ff",
+7948 => x"b0050856",
+7949 => x"54737526",
+7950 => x"0b0b0b0b",
+7951 => x"8938800b",
+7952 => x"8c08ff98",
+7953 => x"050c8c08",
+7954 => x"ffac0508",
+7955 => x"8c08ffa4",
+7956 => x"05087171",
+7957 => x"31708c08",
+7958 => x"ff9c050c",
+7959 => x"8c08ff9c",
+7960 => x"0508708c",
+7961 => x"08ff9805",
+7962 => x"0831708c",
+7963 => x"08ff9c05",
+7964 => x"0c535852",
+7965 => x"55568c08",
+7966 => x"ff9c0508",
+7967 => x"8c08ffa0",
+7968 => x"05085654",
+7969 => x"738c08f8",
+7970 => x"050c748c",
+7971 => x"08fc050c",
+7972 => x"800b8c08",
+7973 => x"f8050824",
+7974 => x"0b0b0b0b",
+7975 => x"ba388c08",
+7976 => x"90050854",
+7977 => x"800b8415",
+7978 => x"0c8c0890",
+7979 => x"05088c08",
+7980 => x"f4050888",
+7981 => x"120c8c08",
+7982 => x"90050857",
+7983 => x"548c08f8",
+7984 => x"05088c08",
+7985 => x"fc050856",
+7986 => x"54738c17",
+7987 => x"0c749017",
+7988 => x"0c0b0b0b",
+7989 => x"80d1398c",
+7990 => x"08900508",
+7991 => x"54810b84",
+7992 => x"150c8c08",
+7993 => x"9005088c",
+7994 => x"08f40508",
+7995 => x"88120c8c",
+7996 => x"08900508",
+7997 => x"8c08d405",
+7998 => x"5858548c",
+7999 => x"08f80508",
+8000 => x"8c08fc05",
+8001 => x"08565473",
+8002 => x"52745375",
+8003 => x"510b0b80",
+8004 => x"cfcb3f8c",
+8005 => x"08d40508",
+8006 => x"8c08d805",
+8007 => x"08565473",
+8008 => x"8c180c74",
+8009 => x"90180c8c",
+8010 => x"08900508",
+8011 => x"548c1408",
+8012 => x"f00a260b",
+8013 => x"0b0b82bb",
+8014 => x"388c0890",
+8015 => x"05088c11",
+8016 => x"08709013",
+8017 => x"08075155",
+8018 => x"5573802e",
+8019 => x"0b0b0b82",
+8020 => x"a2388c08",
+8021 => x"9005088c",
+8022 => x"08900508",
+8023 => x"9011089f",
+8024 => x"2a8c1208",
+8025 => x"10707207",
+8026 => x"8c150c90",
+8027 => x"13081090",
+8028 => x"150c8c08",
+8029 => x"90050888",
+8030 => x"1108ff05",
+8031 => x"88120c53",
+8032 => x"58585557",
+8033 => x"0b0b0bff",
+8034 => x"9e398c08",
+8035 => x"9005088c",
+8036 => x"08880508",
+8037 => x"84110884",
+8038 => x"130c8c08",
+8039 => x"9005088c",
+8040 => x"08f40508",
+8041 => x"88120c8c",
+8042 => x"08900508",
+8043 => x"8c08ff94",
+8044 => x"050c5256",
+8045 => x"548c08e8",
+8046 => x"05088c08",
+8047 => x"ec050857",
+8048 => x"55748c08",
+8049 => x"ff8c050c",
+8050 => x"758c08ff",
+8051 => x"90050c8c",
+8052 => x"08e00508",
+8053 => x"8c08e405",
+8054 => x"08565473",
+8055 => x"8c08ff84",
+8056 => x"050c748c",
+8057 => x"08ff8805",
+8058 => x"0c8c08ff",
+8059 => x"9005088c",
+8060 => x"08ff8805",
+8061 => x"08701270",
+8062 => x"8c08ff80",
+8063 => x"050c5257",
+8064 => x"55810b8c",
+8065 => x"08fef805",
+8066 => x"0c8c08ff",
+8067 => x"8005088c",
+8068 => x"08ff9005",
+8069 => x"08565474",
+8070 => x"74260b0b",
+8071 => x"0b0b8938",
+8072 => x"800b8c08",
+8073 => x"fef8050c",
+8074 => x"8c08ff8c",
+8075 => x"05088c08",
+8076 => x"ff840508",
+8077 => x"7012708c",
+8078 => x"08fefc05",
+8079 => x"0c8c08fe",
+8080 => x"fc05088c",
+8081 => x"08fef805",
+8082 => x"0811708c",
+8083 => x"08fefc05",
+8084 => x"0c535852",
+8085 => x"55568c08",
+8086 => x"fefc0508",
+8087 => x"8c08ff80",
+8088 => x"05088c08",
+8089 => x"ff940508",
+8090 => x"58565473",
+8091 => x"8c170c74",
+8092 => x"90170c8c",
+8093 => x"08900508",
+8094 => x"5483740c",
+8095 => x"8c089005",
+8096 => x"08548c14",
+8097 => x"08f80a26",
+8098 => x"0b0b0b0b",
+8099 => x"87380b0b",
+8100 => x"0b80cf39",
+8101 => x"8c089005",
+8102 => x"088c0890",
+8103 => x"05088c11",
+8104 => x"08800690",
+8105 => x"12088106",
+8106 => x"8c089005",
+8107 => x"088c1108",
+8108 => x"9f2b9012",
+8109 => x"08812a70",
+8110 => x"72078c14",
+8111 => x"08812a70",
+8112 => x"77078c1a",
+8113 => x"0c757207",
+8114 => x"901a0c8c",
+8115 => x"08900508",
+8116 => x"88110881",
+8117 => x"0588120c",
+8118 => x"51575c5f",
+8119 => x"5f5c5a58",
+8120 => x"555b8c08",
+8121 => x"90050870",
+8122 => x"8c08d005",
+8123 => x"0c548c08",
+8124 => x"d0050880",
+8125 => x"0cae3d0d",
+8126 => x"8c0c048c",
+8127 => x"08028c0c",
+8128 => x"7070800b",
+8129 => x"8c08fc05",
+8130 => x"0c8c0888",
+8131 => x"05085170",
+8132 => x"08822e09",
+8133 => x"81060b0b",
+8134 => x"0b0b8838",
+8135 => x"810b8c08",
+8136 => x"fc050c8c",
+8137 => x"08fc0508",
+8138 => x"70800c51",
+8139 => x"50508c0c",
+8140 => x"048c0802",
+8141 => x"8c0c700b",
+8142 => x"0b82f4b8",
+8143 => x"70800c51",
+8144 => x"508c0c04",
+8145 => x"8c08028c",
+8146 => x"0c707080",
+8147 => x"0b8c08fc",
+8148 => x"050c8c08",
+8149 => x"88050851",
+8150 => x"7008842e",
+8151 => x"0981060b",
+8152 => x"0b0b0b88",
+8153 => x"38810b8c",
+8154 => x"08fc050c",
+8155 => x"8c08fc05",
+8156 => x"0870800c",
+8157 => x"5150508c",
+8158 => x"0c048c08",
+8159 => x"028c0c70",
+8160 => x"70800b8c",
+8161 => x"08fc050c",
+8162 => x"8c088805",
+8163 => x"08517008",
+8164 => x"802e0b0b",
+8165 => x"0b0b9738",
+8166 => x"8c088805",
+8167 => x"08517008",
+8168 => x"812e0b0b",
+8169 => x"0b0b8738",
+8170 => x"0b0b0b0b",
+8171 => x"8839810b",
+8172 => x"8c08fc05",
+8173 => x"0c8c08fc",
+8174 => x"05087080",
+8175 => x"0c515050",
+8176 => x"8c0c048c",
+8177 => x"08028c0c",
+8178 => x"e73d0d8c",
+8179 => x"08880508",
+8180 => x"568c088c",
+8181 => x"05088c08",
+8182 => x"90050856",
+8183 => x"54738c08",
+8184 => x"ffb8050c",
+8185 => x"748c08ff",
+8186 => x"bc050c8c",
+8187 => x"08940508",
+8188 => x"8c089805",
+8189 => x"08565473",
+8190 => x"8c08ffb0",
+8191 => x"050c748c",
+8192 => x"08ffb405",
+8193 => x"0c8c08ec",
+8194 => x"0570538c",
+8195 => x"08ffb805",
+8196 => x"70535154",
+8197 => x"0b0b80de",
+8198 => x"c13f8c08",
+8199 => x"d8057053",
+8200 => x"8c08ffb0",
+8201 => x"05705351",
+8202 => x"540b0b80",
+8203 => x"deac3f8c",
+8204 => x"08c40570",
+8205 => x"548c08d8",
+8206 => x"0570548c",
+8207 => x"08ec0570",
+8208 => x"54515154",
+8209 => x"0b0b0bee",
+8210 => x"ea3f8008",
+8211 => x"708c08c0",
+8212 => x"050c8c08",
+8213 => x"c0050853",
+8214 => x"7652540b",
+8215 => x"0b80ccb8",
+8216 => x"3f75800c",
+8217 => x"9b3d0d8c",
+8218 => x"0c048c08",
+8219 => x"028c0ce7",
+8220 => x"3d0d8c08",
+8221 => x"88050856",
+8222 => x"8c088c05",
+8223 => x"088c0890",
+8224 => x"05085654",
+8225 => x"738c08ff",
+8226 => x"b8050c74",
+8227 => x"8c08ffbc",
+8228 => x"050c8c08",
+8229 => x"9405088c",
+8230 => x"08980508",
+8231 => x"5654738c",
+8232 => x"08ffb005",
+8233 => x"0c748c08",
+8234 => x"ffb4050c",
+8235 => x"8c08ec05",
+8236 => x"70538c08",
+8237 => x"ffb80570",
+8238 => x"5351540b",
+8239 => x"0b80dd9a",
+8240 => x"3f8c08d8",
+8241 => x"0570538c",
+8242 => x"08ffb005",
+8243 => x"70535154",
+8244 => x"0b0b80dd",
+8245 => x"853f8c08",
+8246 => x"dc050881",
+8247 => x"328c08dc",
+8248 => x"050c8c08",
+8249 => x"c4057054",
+8250 => x"8c08d805",
+8251 => x"70548c08",
+8252 => x"ec057054",
+8253 => x"5151540b",
+8254 => x"0b0bedb7",
+8255 => x"3f800870",
+8256 => x"8c08c005",
+8257 => x"0c8c08c0",
+8258 => x"05085376",
+8259 => x"52540b0b",
+8260 => x"80cb853f",
+8261 => x"75800c9b",
+8262 => x"3d0d8c0c",
+8263 => x"048c0802",
+8264 => x"8c0cff83",
+8265 => x"3d0d8c08",
+8266 => x"8c05088c",
+8267 => x"08900508",
+8268 => x"5856758c",
+8269 => x"08ffb805",
+8270 => x"0c768c08",
+8271 => x"ffbc050c",
+8272 => x"8c089405",
+8273 => x"088c0898",
+8274 => x"05085856",
+8275 => x"758c08ff",
+8276 => x"b0050c76",
+8277 => x"8c08ffb4",
+8278 => x"050c8c08",
+8279 => x"ec057053",
+8280 => x"8c08ffb8",
+8281 => x"05705351",
+8282 => x"560b0b80",
+8283 => x"dbec3f8c",
+8284 => x"08d80570",
+8285 => x"538c08ff",
+8286 => x"b0057053",
+8287 => x"51560b0b",
+8288 => x"80dbd73f",
+8289 => x"8c08ec05",
+8290 => x"8c08ffac",
+8291 => x"050c8c08",
+8292 => x"d8058c08",
+8293 => x"ffa8050c",
+8294 => x"8c08c405",
+8295 => x"8c08ffa4",
+8296 => x"050c8056",
+8297 => x"8057758c",
+8298 => x"08ff9805",
+8299 => x"0c768c08",
+8300 => x"ff9c050c",
+8301 => x"80568057",
+8302 => x"758c08ff",
+8303 => x"90050c76",
+8304 => x"8c08ff94",
+8305 => x"050c8c08",
+8306 => x"ffac0508",
+8307 => x"510b0b0b",
+8308 => x"9d823f80",
+8309 => x"08567580",
+8310 => x"2e0b0b0b",
+8311 => x"80da388c",
+8312 => x"08ffac05",
+8313 => x"088c08fe",
+8314 => x"c4050c80",
+8315 => x"0b8c08fe",
+8316 => x"c0050c8c",
+8317 => x"08ffac05",
+8318 => x"088c08ff",
+8319 => x"a8050857",
+8320 => x"57841708",
+8321 => x"8417082e",
+8322 => x"0b0b0b0b",
+8323 => x"8938810b",
+8324 => x"8c08fec0",
+8325 => x"050c8c08",
+8326 => x"fec40508",
+8327 => x"8c08fec0",
+8328 => x"05088412",
+8329 => x"0c8c08ff",
+8330 => x"ac05088c",
+8331 => x"08ffa005",
+8332 => x"0c560b0b",
+8333 => x"0b9af139",
+8334 => x"8c08ffa8",
+8335 => x"0508510b",
+8336 => x"0b0b9c90",
+8337 => x"3f800856",
+8338 => x"75802e0b",
+8339 => x"0b0b80da",
+8340 => x"388c08ff",
+8341 => x"a805088c",
+8342 => x"08febc05",
+8343 => x"0c800b8c",
+8344 => x"08feb805",
+8345 => x"0c8c08ff",
+8346 => x"ac05088c",
+8347 => x"08ffa805",
+8348 => x"08575784",
+8349 => x"17088417",
+8350 => x"082e0b0b",
+8351 => x"0b0b8938",
+8352 => x"810b8c08",
+8353 => x"feb8050c",
+8354 => x"8c08febc",
+8355 => x"05088c08",
+8356 => x"feb80508",
+8357 => x"84120c8c",
+8358 => x"08ffa805",
+8359 => x"088c08ff",
+8360 => x"a0050c57",
+8361 => x"0b0b0b99",
+8362 => x"ff398c08",
+8363 => x"ffac0508",
+8364 => x"510b0b0b",
+8365 => x"9ae83f80",
+8366 => x"08567580",
+8367 => x"2e0b0b0b",
+8368 => x"8189388c",
+8369 => x"08ffa805",
+8370 => x"08510b0b",
+8371 => x"0b9a993f",
+8372 => x"80085675",
+8373 => x"802e0b0b",
+8374 => x"0b0b9738",
+8375 => x"0b0b0b99",
+8376 => x"f43f8008",
+8377 => x"708c08ff",
+8378 => x"a0050c56",
+8379 => x"0b0b0b99",
+8380 => x"b7398c08",
+8381 => x"ffac0508",
+8382 => x"8c08feb4",
+8383 => x"050c800b",
+8384 => x"8c08feb0",
+8385 => x"050c8c08",
+8386 => x"ffac0508",
+8387 => x"8c08ffa8",
+8388 => x"05085757",
+8389 => x"84170884",
+8390 => x"17082e0b",
+8391 => x"0b0b0b89",
+8392 => x"38810b8c",
+8393 => x"08feb005",
+8394 => x"0c8c08fe",
+8395 => x"b405088c",
+8396 => x"08feb005",
+8397 => x"0884120c",
+8398 => x"8c08ffac",
+8399 => x"05088c08",
+8400 => x"ffa0050c",
+8401 => x"560b0b0b",
+8402 => x"98de398c",
+8403 => x"08ffa805",
+8404 => x"08510b0b",
+8405 => x"0b99c73f",
+8406 => x"80085675",
+8407 => x"802e0b0b",
+8408 => x"0b818938",
+8409 => x"8c08ffac",
+8410 => x"0508510b",
+8411 => x"0b0b98f8",
+8412 => x"3f800856",
+8413 => x"75802e0b",
+8414 => x"0b0b0b97",
+8415 => x"380b0b0b",
+8416 => x"98d33f80",
+8417 => x"08708c08",
+8418 => x"ffa0050c",
+8419 => x"560b0b0b",
+8420 => x"9896398c",
+8421 => x"08ffa805",
+8422 => x"088c08fe",
+8423 => x"ac050c80",
+8424 => x"0b8c08fe",
+8425 => x"a8050c8c",
+8426 => x"08ffac05",
+8427 => x"088c08ff",
+8428 => x"a8050857",
+8429 => x"57841708",
+8430 => x"8417082e",
+8431 => x"0b0b0b0b",
+8432 => x"8938810b",
+8433 => x"8c08fea8",
+8434 => x"050c8c08",
+8435 => x"feac0508",
+8436 => x"8c08fea8",
+8437 => x"05088412",
+8438 => x"0c8c08ff",
+8439 => x"a805088c",
+8440 => x"08ffa005",
+8441 => x"0c570b0b",
+8442 => x"0b97bd39",
+8443 => x"8c08ffac",
+8444 => x"0508510b",
+8445 => x"0b0b97f0",
+8446 => x"3f800856",
+8447 => x"75802e0b",
+8448 => x"0b0b80da",
+8449 => x"388c08ff",
+8450 => x"ac05088c",
+8451 => x"08fea405",
+8452 => x"0c800b8c",
+8453 => x"08fea005",
+8454 => x"0c8c08ff",
+8455 => x"ac05088c",
+8456 => x"08ffa805",
+8457 => x"08575784",
+8458 => x"17088417",
+8459 => x"082e0b0b",
+8460 => x"0b0b8938",
+8461 => x"810b8c08",
+8462 => x"fea0050c",
+8463 => x"8c08fea4",
+8464 => x"05088c08",
+8465 => x"fea00508",
+8466 => x"84120c8c",
+8467 => x"08ffac05",
+8468 => x"088c08ff",
+8469 => x"a0050c56",
+8470 => x"0b0b0b96",
+8471 => x"cb398c08",
+8472 => x"ffa80508",
+8473 => x"510b0b0b",
+8474 => x"96fe3f80",
+8475 => x"08567580",
+8476 => x"2e0b0b0b",
+8477 => x"80da388c",
+8478 => x"08ffa805",
+8479 => x"088c08fe",
+8480 => x"9c050c80",
+8481 => x"0b8c08fe",
+8482 => x"98050c8c",
+8483 => x"08ffac05",
+8484 => x"088c08ff",
+8485 => x"a8050857",
+8486 => x"57841708",
+8487 => x"8417082e",
+8488 => x"0b0b0b0b",
+8489 => x"8938810b",
+8490 => x"8c08fe98",
+8491 => x"050c8c08",
+8492 => x"fe9c0508",
+8493 => x"8c08fe98",
+8494 => x"05088412",
+8495 => x"0c8c08ff",
+8496 => x"a805088c",
+8497 => x"08ffa005",
+8498 => x"0c570b0b",
+8499 => x"0b95d939",
+8500 => x"8c08ffac",
+8501 => x"05089011",
+8502 => x"088c08ff",
+8503 => x"8c050c8c",
+8504 => x"08ffac05",
+8505 => x"088c1108",
+8506 => x"802a5959",
+8507 => x"5680778c",
+8508 => x"08ff8805",
+8509 => x"0c8c08ff",
+8510 => x"a8050890",
+8511 => x"11088c08",
+8512 => x"ff84050c",
+8513 => x"8c08ffa8",
+8514 => x"05088c11",
+8515 => x"08802a5a",
+8516 => x"5a515680",
+8517 => x"778c08ff",
+8518 => x"80050c8c",
+8519 => x"08ff8405",
+8520 => x"085a5680",
+8521 => x"0b8c08ff",
+8522 => x"8c050858",
+8523 => x"58800b8c",
+8524 => x"08fef005",
+8525 => x"5b567554",
+8526 => x"76557752",
+8527 => x"78537951",
+8528 => x"0b0b0bbb",
+8529 => x"b23f8c08",
+8530 => x"fef00508",
+8531 => x"8c08fef4",
+8532 => x"05085856",
+8533 => x"758c08fe",
+8534 => x"f8050c76",
+8535 => x"8c08fefc",
+8536 => x"050c8c08",
+8537 => x"ff800508",
+8538 => x"59800b8c",
+8539 => x"08ff8c05",
+8540 => x"08585880",
+8541 => x"0b8c08fe",
+8542 => x"e8055b56",
+8543 => x"75547655",
+8544 => x"77527853",
+8545 => x"79510b0b",
+8546 => x"0bbaec3f",
+8547 => x"8c08fee8",
+8548 => x"05088c08",
+8549 => x"feec0508",
+8550 => x"5856758c",
+8551 => x"08fef005",
+8552 => x"0c768c08",
+8553 => x"fef4050c",
+8554 => x"8c08ff84",
+8555 => x"05085980",
+8556 => x"0b8c08ff",
+8557 => x"88050858",
+8558 => x"58800b8c",
+8559 => x"08fee005",
+8560 => x"5b567554",
+8561 => x"76557752",
+8562 => x"78537951",
+8563 => x"0b0b0bba",
+8564 => x"a63f8c08",
+8565 => x"fee00508",
+8566 => x"8c08fee4",
+8567 => x"05085856",
+8568 => x"758c08fe",
+8569 => x"e8050c76",
+8570 => x"8c08feec",
+8571 => x"050c8c08",
+8572 => x"ff800508",
+8573 => x"59800b8c",
+8574 => x"08ff8805",
+8575 => x"08585880",
+8576 => x"0b8c08fe",
+8577 => x"d8055b56",
+8578 => x"75547655",
+8579 => x"77527853",
+8580 => x"79510b0b",
+8581 => x"0bb9e03f",
+8582 => x"8c08fed8",
+8583 => x"05088c08",
+8584 => x"fedc0508",
+8585 => x"5856758c",
+8586 => x"08fee005",
+8587 => x"0c768c08",
+8588 => x"fee4050c",
+8589 => x"80568057",
+8590 => x"758c08fe",
+8591 => x"d8050c76",
+8592 => x"8c08fedc",
+8593 => x"050c8056",
+8594 => x"8057758c",
+8595 => x"08fed005",
+8596 => x"0c768c08",
+8597 => x"fed4050c",
+8598 => x"8c08fef0",
+8599 => x"05088c08",
+8600 => x"fef40508",
+8601 => x"5856758c",
+8602 => x"08fe9005",
+8603 => x"0c768c08",
+8604 => x"fe94050c",
+8605 => x"8c08fee8",
+8606 => x"05088c08",
+8607 => x"feec0508",
+8608 => x"5856758c",
+8609 => x"08fe8805",
+8610 => x"0c768c08",
+8611 => x"fe8c050c",
+8612 => x"8c08fe94",
+8613 => x"05088c08",
+8614 => x"fe8c0508",
+8615 => x"7012708c",
+8616 => x"08fe8405",
+8617 => x"0c525757",
+8618 => x"810b8c08",
+8619 => x"fdfc050c",
+8620 => x"8c08fe84",
+8621 => x"05088c08",
+8622 => x"fe940508",
+8623 => x"57577577",
+8624 => x"260b0b0b",
+8625 => x"0b893880",
+8626 => x"0b8c08fd",
+8627 => x"fc050c8c",
+8628 => x"08fe9005",
+8629 => x"088c08fe",
+8630 => x"88050870",
+8631 => x"12708c08",
+8632 => x"fe80050c",
+8633 => x"8c08fe80",
+8634 => x"05088c08",
+8635 => x"fdfc0508",
+8636 => x"11708c08",
+8637 => x"fe80050c",
+8638 => x"53515257",
+8639 => x"578c08fe",
+8640 => x"8005088c",
+8641 => x"08fe8405",
+8642 => x"08585675",
+8643 => x"8c08fec8",
+8644 => x"050c768c",
+8645 => x"08fecc05",
+8646 => x"0c8c08fe",
+8647 => x"f005088c",
+8648 => x"08fec805",
+8649 => x"08260b0b",
+8650 => x"0b0bb038",
+8651 => x"8c08fef0",
+8652 => x"05088c08",
+8653 => x"fec80508",
+8654 => x"2e098106",
+8655 => x"0b0b0b81",
+8656 => x"d1388c08",
+8657 => x"fef40508",
+8658 => x"8c08fecc",
+8659 => x"0508260b",
+8660 => x"0b0b0b87",
+8661 => x"380b0b0b",
+8662 => x"81b8398c",
+8663 => x"08fed805",
+8664 => x"088c08fe",
+8665 => x"dc050858",
+8666 => x"56758c08",
+8667 => x"fdf4050c",
+8668 => x"768c08fd",
+8669 => x"f8050c81",
+8670 => x"56805775",
+8671 => x"8c08fdec",
+8672 => x"050c768c",
+8673 => x"08fdf005",
+8674 => x"0c8c08fd",
+8675 => x"f805088c",
+8676 => x"08fdf005",
+8677 => x"08701270",
+8678 => x"8c08fde8",
+8679 => x"050c5257",
+8680 => x"57810b8c",
+8681 => x"08fde005",
+8682 => x"0c8c08fd",
+8683 => x"e805088c",
+8684 => x"08fdf805",
+8685 => x"08575775",
+8686 => x"77260b0b",
+8687 => x"0b0b8938",
+8688 => x"800b8c08",
+8689 => x"fde0050c",
+8690 => x"8c08fdf4",
+8691 => x"05088c08",
+8692 => x"fdec0508",
+8693 => x"7012708c",
+8694 => x"08fde405",
+8695 => x"0c8c08fd",
+8696 => x"e405088c",
+8697 => x"08fde005",
+8698 => x"0811708c",
+8699 => x"08fde405",
+8700 => x"0c535152",
+8701 => x"57578c08",
+8702 => x"fde40508",
+8703 => x"8c08fde8",
+8704 => x"05085856",
+8705 => x"758c08fe",
+8706 => x"d8050c76",
+8707 => x"8c08fedc",
+8708 => x"050c8c08",
+8709 => x"fecc0508",
+8710 => x"57807780",
+8711 => x"2b8c08fe",
+8712 => x"f0050c56",
+8713 => x"800b8c08",
+8714 => x"fef4050c",
+8715 => x"8c08fef8",
+8716 => x"05088c08",
+8717 => x"fefc0508",
+8718 => x"5856758c",
+8719 => x"08fdd805",
+8720 => x"0c768c08",
+8721 => x"fddc050c",
+8722 => x"8c08fef0",
+8723 => x"05088c08",
+8724 => x"fef40508",
+8725 => x"5856758c",
+8726 => x"08fdd005",
+8727 => x"0c768c08",
+8728 => x"fdd4050c",
+8729 => x"8c08fddc",
+8730 => x"05088c08",
+8731 => x"fdd40508",
+8732 => x"7012708c",
+8733 => x"08fdcc05",
+8734 => x"0c525757",
+8735 => x"810b8c08",
+8736 => x"fdc4050c",
+8737 => x"8c08fdcc",
+8738 => x"05088c08",
+8739 => x"fddc0508",
+8740 => x"57577577",
+8741 => x"260b0b0b",
+8742 => x"0b893880",
+8743 => x"0b8c08fd",
+8744 => x"c4050c8c",
+8745 => x"08fdd805",
+8746 => x"088c08fd",
+8747 => x"d0050870",
+8748 => x"12708c08",
+8749 => x"fdc8050c",
+8750 => x"8c08fdc8",
+8751 => x"05088c08",
+8752 => x"fdc40508",
+8753 => x"11708c08",
+8754 => x"fdc8050c",
+8755 => x"53515257",
+8756 => x"578c08fd",
+8757 => x"c805088c",
+8758 => x"08fdcc05",
+8759 => x"08585675",
+8760 => x"8c08fed0",
+8761 => x"050c768c",
+8762 => x"08fed405",
+8763 => x"0c8c08fe",
+8764 => x"f805088c",
+8765 => x"08fed005",
+8766 => x"08260b0b",
+8767 => x"0b0bb038",
+8768 => x"8c08fef8",
+8769 => x"05088c08",
+8770 => x"fed00508",
+8771 => x"2e098106",
+8772 => x"0b0b0b81",
+8773 => x"d1388c08",
+8774 => x"fefc0508",
+8775 => x"8c08fed4",
+8776 => x"0508260b",
+8777 => x"0b0b0b87",
+8778 => x"380b0b0b",
+8779 => x"81b8398c",
+8780 => x"08fed805",
+8781 => x"088c08fe",
+8782 => x"dc050858",
+8783 => x"56758c08",
+8784 => x"fdbc050c",
+8785 => x"768c08fd",
+8786 => x"c0050c80",
+8787 => x"56815775",
+8788 => x"8c08fdb4",
+8789 => x"050c768c",
+8790 => x"08fdb805",
+8791 => x"0c8c08fd",
+8792 => x"c005088c",
+8793 => x"08fdb805",
+8794 => x"08701270",
+8795 => x"8c08fdb0",
+8796 => x"050c5257",
+8797 => x"57810b8c",
+8798 => x"08fda805",
+8799 => x"0c8c08fd",
+8800 => x"b005088c",
+8801 => x"08fdc005",
+8802 => x"08575775",
+8803 => x"77260b0b",
+8804 => x"0b0b8938",
+8805 => x"800b8c08",
+8806 => x"fda8050c",
+8807 => x"8c08fdbc",
+8808 => x"05088c08",
+8809 => x"fdb40508",
+8810 => x"7012708c",
+8811 => x"08fdac05",
+8812 => x"0c8c08fd",
+8813 => x"ac05088c",
+8814 => x"08fda805",
+8815 => x"0811708c",
+8816 => x"08fdac05",
+8817 => x"0c535152",
+8818 => x"57578c08",
+8819 => x"fdac0508",
+8820 => x"8c08fdb0",
+8821 => x"05085856",
+8822 => x"758c08fe",
+8823 => x"d8050c76",
+8824 => x"8c08fedc",
+8825 => x"050c8c08",
+8826 => x"fec80508",
+8827 => x"802a708c",
+8828 => x"08fda405",
+8829 => x"0c578070",
+8830 => x"8c08fda0",
+8831 => x"050c568c",
+8832 => x"08fda005",
+8833 => x"088c08fd",
+8834 => x"a4050858",
+8835 => x"56758c08",
+8836 => x"fda0050c",
+8837 => x"768c08fd",
+8838 => x"a4050c8c",
+8839 => x"08fee005",
+8840 => x"088c08fe",
+8841 => x"e4050858",
+8842 => x"56758c08",
+8843 => x"fd98050c",
+8844 => x"768c08fd",
+8845 => x"9c050c8c",
+8846 => x"08fda405",
+8847 => x"088c08fd",
+8848 => x"9c050870",
+8849 => x"12708c08",
+8850 => x"fd94050c",
+8851 => x"52575781",
+8852 => x"0b8c08fd",
+8853 => x"8c050c8c",
+8854 => x"08fd9405",
+8855 => x"088c08fd",
+8856 => x"a4050857",
+8857 => x"57757726",
+8858 => x"0b0b0b0b",
+8859 => x"8938800b",
+8860 => x"8c08fd8c",
+8861 => x"050c8c08",
+8862 => x"fda00508",
+8863 => x"8c08fd98",
+8864 => x"05087012",
+8865 => x"708c08fd",
+8866 => x"90050c8c",
+8867 => x"08fd9005",
+8868 => x"088c08fd",
+8869 => x"8c050811",
+8870 => x"708c08fd",
+8871 => x"90050c53",
+8872 => x"51525757",
+8873 => x"8c08fed8",
+8874 => x"05088c08",
+8875 => x"fedc0508",
+8876 => x"5856758c",
+8877 => x"08fd8405",
+8878 => x"0c768c08",
+8879 => x"fd88050c",
+8880 => x"8c08fd88",
+8881 => x"05088c08",
+8882 => x"fd940508",
+8883 => x"7012708c",
+8884 => x"08fd8005",
+8885 => x"0c525757",
+8886 => x"810b8c08",
+8887 => x"fcf8050c",
+8888 => x"8c08fd80",
+8889 => x"05088c08",
+8890 => x"fd880508",
+8891 => x"57577577",
+8892 => x"260b0b0b",
+8893 => x"0b893880",
+8894 => x"0b8c08fc",
+8895 => x"f8050c8c",
+8896 => x"08fd8405",
+8897 => x"088c08fd",
+8898 => x"90050870",
+8899 => x"12708c08",
+8900 => x"fcfc050c",
+8901 => x"8c08fcfc",
+8902 => x"05088c08",
+8903 => x"fcf80508",
+8904 => x"11708c08",
+8905 => x"fcfc050c",
+8906 => x"53515257",
+8907 => x"578c08fc",
+8908 => x"fc05088c",
+8909 => x"08fd8005",
+8910 => x"08585675",
+8911 => x"8c08fed8",
+8912 => x"050c768c",
+8913 => x"08fedc05",
+8914 => x"0c8c08fe",
+8915 => x"d805088c",
+8916 => x"08fedc05",
+8917 => x"08585675",
+8918 => x"8c08ff90",
+8919 => x"050c768c",
+8920 => x"08ff9405",
+8921 => x"0c8c08fe",
+8922 => x"d005088c",
+8923 => x"08fed405",
+8924 => x"08585675",
+8925 => x"8c08ff98",
+8926 => x"050c768c",
+8927 => x"08ff9c05",
+8928 => x"0c8c08ff",
+8929 => x"a405088c",
+8930 => x"08ffac05",
+8931 => x"088c08ff",
+8932 => x"a8050888",
+8933 => x"12088812",
+8934 => x"08058411",
+8935 => x"88150c8c",
+8936 => x"08ffa405",
+8937 => x"088c08fc",
+8938 => x"f4050c51",
+8939 => x"58585880",
+8940 => x"0b8c08fc",
+8941 => x"f0050c8c",
+8942 => x"08ffac05",
+8943 => x"088c08ff",
+8944 => x"a8050857",
+8945 => x"57841708",
+8946 => x"8417082e",
+8947 => x"0b0b0b0b",
+8948 => x"8938810b",
+8949 => x"8c08fcf0",
+8950 => x"050c8c08",
+8951 => x"fcf40508",
+8952 => x"8c08fcf0",
+8953 => x"05088412",
+8954 => x"0c578c08",
+8955 => x"ff900508",
+8956 => x"f80a260b",
+8957 => x"0b0b0b87",
+8958 => x"380b0b0b",
+8959 => x"81ae398c",
+8960 => x"08ffa405",
+8961 => x"08881108",
+8962 => x"81058812",
+8963 => x"0c8c08ff",
+8964 => x"90050880",
+8965 => x"068c08ff",
+8966 => x"94050881",
+8967 => x"06705259",
+8968 => x"51567580",
+8969 => x"2e0b0b0b",
+8970 => x"80cf388c",
+8971 => x"08ff9805",
+8972 => x"089f2b8c",
+8973 => x"08ff9c05",
+8974 => x"08812a70",
+8975 => x"72078c08",
+8976 => x"ff980508",
+8977 => x"812a5959",
+8978 => x"5959758c",
+8979 => x"08ff9805",
+8980 => x"0c768c08",
+8981 => x"ff9c050c",
+8982 => x"8c08ff98",
+8983 => x"0508810a",
+8984 => x"078c08ff",
+8985 => x"9c050880",
+8986 => x"07585675",
+8987 => x"8c08ff98",
+8988 => x"050c768c",
+8989 => x"08ff9c05",
+8990 => x"0c8c08ff",
+8991 => x"9005089f",
+8992 => x"2b8c08ff",
+8993 => x"94050881",
+8994 => x"2a707207",
+8995 => x"8c08ff90",
+8996 => x"0508812a",
+8997 => x"59595959",
+8998 => x"758c08ff",
+8999 => x"90050c76",
+9000 => x"8c08ff94",
+9001 => x"050c0b0b",
+9002 => x"0bfebf39",
+9003 => x"8c08ff90",
+9004 => x"0508f00a",
+9005 => x"260b0b0b",
+9006 => x"81a1388c",
+9007 => x"08ffa405",
+9008 => x"08881108",
+9009 => x"ff058812",
+9010 => x"0c8c08ff",
+9011 => x"9405089f",
+9012 => x"2a8c08ff",
+9013 => x"90050810",
+9014 => x"7072078c",
+9015 => x"08ff9405",
+9016 => x"08105b53",
+9017 => x"5a5a5675",
+9018 => x"8c08ff90",
+9019 => x"050c768c",
+9020 => x"08ff9405",
+9021 => x"0c800b8c",
+9022 => x"08ff9805",
+9023 => x"08240b0b",
+9024 => x"0b0b8738",
+9025 => x"0b0b0b0b",
+9026 => x"a1398c08",
+9027 => x"ff900508",
+9028 => x"80078c08",
+9029 => x"ff940508",
+9030 => x"81075856",
+9031 => x"758c08ff",
+9032 => x"90050c76",
+9033 => x"8c08ff94",
+9034 => x"050c8c08",
+9035 => x"ff9c0508",
+9036 => x"9f2a8c08",
+9037 => x"ff980508",
+9038 => x"10707207",
+9039 => x"8c08ff9c",
+9040 => x"0508105a",
+9041 => x"58595975",
+9042 => x"8c08ff98",
+9043 => x"050c768c",
+9044 => x"08ff9c05",
+9045 => x"0c0b0b0b",
+9046 => x"fed2398c",
+9047 => x"08ff9005",
+9048 => x"08800670",
+9049 => x"8c08fce8",
+9050 => x"050c8c08",
+9051 => x"ff940508",
+9052 => x"81ff0670",
+9053 => x"8c08fcec",
+9054 => x"050c5856",
+9055 => x"8c08fce8",
+9056 => x"05088c08",
+9057 => x"fcec0508",
+9058 => x"5856758c",
+9059 => x"08fce805",
+9060 => x"0c768c08",
+9061 => x"fcec050c",
+9062 => x"8c08fce8",
+9063 => x"05085776",
+9064 => x"0b0b0b83",
+9065 => x"d0388c08",
+9066 => x"fcec0508",
+9067 => x"56758180",
+9068 => x"2e098106",
+9069 => x"0b0b0b83",
+9070 => x"bc388c08",
+9071 => x"ff900508",
+9072 => x"982b8c08",
+9073 => x"ff940508",
+9074 => x"882a7072",
+9075 => x"078c08ff",
+9076 => x"90050888",
+9077 => x"2a718106",
+9078 => x"51595959",
+9079 => x"5975802e",
+9080 => x"0b0b0b81",
+9081 => x"bf388c08",
+9082 => x"ff900508",
+9083 => x"8c08ff94",
+9084 => x"05085856",
+9085 => x"758c08fc",
+9086 => x"e0050c76",
+9087 => x"8c08fce4",
+9088 => x"050c8056",
+9089 => x"81805775",
+9090 => x"8c08fcd8",
+9091 => x"050c768c",
+9092 => x"08fcdc05",
+9093 => x"0c8c08fc",
+9094 => x"e405088c",
+9095 => x"08fcdc05",
+9096 => x"08701270",
+9097 => x"8c08fcd4",
+9098 => x"050c5257",
+9099 => x"57810b8c",
+9100 => x"08fccc05",
+9101 => x"0c8c08fc",
+9102 => x"d405088c",
+9103 => x"08fce405",
+9104 => x"08575775",
+9105 => x"77260b0b",
+9106 => x"0b0b8938",
+9107 => x"800b8c08",
+9108 => x"fccc050c",
+9109 => x"8c08fce0",
+9110 => x"05088c08",
+9111 => x"fcd80508",
+9112 => x"7012708c",
+9113 => x"08fcd005",
+9114 => x"0c8c08fc",
+9115 => x"d005088c",
+9116 => x"08fccc05",
+9117 => x"0811708c",
+9118 => x"08fcd005",
+9119 => x"0c535152",
+9120 => x"57578c08",
+9121 => x"fcd00508",
+9122 => x"8c08fcd4",
+9123 => x"05085856",
+9124 => x"758c08ff",
+9125 => x"90050c76",
+9126 => x"8c08ff94",
+9127 => x"050c0b0b",
+9128 => x"0b81d239",
+9129 => x"8c08ff98",
+9130 => x"0508708c",
+9131 => x"08ff9c05",
+9132 => x"08075156",
+9133 => x"75802e0b",
+9134 => x"0b0b81b9",
+9135 => x"388c08ff",
+9136 => x"9005088c",
+9137 => x"08ff9405",
+9138 => x"08585675",
+9139 => x"8c08fcc4",
+9140 => x"050c768c",
+9141 => x"08fcc805",
+9142 => x"0c805681",
+9143 => x"8057758c",
+9144 => x"08fcbc05",
+9145 => x"0c768c08",
+9146 => x"fcc0050c",
+9147 => x"8c08fcc8",
+9148 => x"05088c08",
+9149 => x"fcc00508",
+9150 => x"7012708c",
+9151 => x"08fcb805",
+9152 => x"0c525757",
+9153 => x"810b8c08",
+9154 => x"fcb0050c",
+9155 => x"8c08fcb8",
+9156 => x"05088c08",
+9157 => x"fcc80508",
+9158 => x"57577577",
+9159 => x"260b0b0b",
+9160 => x"0b893880",
+9161 => x"0b8c08fc",
+9162 => x"b0050c8c",
+9163 => x"08fcc405",
+9164 => x"088c08fc",
+9165 => x"bc050870",
+9166 => x"12708c08",
+9167 => x"fcb4050c",
+9168 => x"8c08fcb4",
+9169 => x"05088c08",
+9170 => x"fcb00508",
+9171 => x"11708c08",
+9172 => x"fcb4050c",
+9173 => x"53515257",
+9174 => x"578c08fc",
+9175 => x"b405088c",
+9176 => x"08fcb805",
+9177 => x"08585675",
+9178 => x"8c08ff90",
+9179 => x"050c768c",
+9180 => x"08ff9405",
+9181 => x"0c8c08ff",
+9182 => x"a4050856",
+9183 => x"8c08ff90",
+9184 => x"05088c08",
+9185 => x"ff940508",
+9186 => x"5957768c",
+9187 => x"170c7790",
+9188 => x"170c8c08",
+9189 => x"ffa40508",
+9190 => x"5683760c",
+9191 => x"8c08ffa4",
+9192 => x"05088c08",
+9193 => x"ffa0050c",
+9194 => x"8c08ffa0",
+9195 => x"0508708c",
+9196 => x"08c0050c",
+9197 => x"8c08c005",
+9198 => x"08538c08",
+9199 => x"88050852",
+9200 => x"560b0b0b",
+9201 => x"add23f8c",
+9202 => x"08880508",
+9203 => x"800c80ff",
+9204 => x"3d0d8c0c",
+9205 => x"048c0802",
+9206 => x"8c0c700b",
+9207 => x"0b82f4b8",
+9208 => x"70800c51",
+9209 => x"508c0c04",
+9210 => x"8c08028c",
+9211 => x"0c707080",
+9212 => x"0b8c08fc",
+9213 => x"050c8c08",
+9214 => x"88050851",
+9215 => x"7008822e",
+9216 => x"0981060b",
+9217 => x"0b0b0b88",
+9218 => x"38810b8c",
+9219 => x"08fc050c",
+9220 => x"8c08fc05",
+9221 => x"0870800c",
+9222 => x"5150508c",
+9223 => x"0c048c08",
+9224 => x"028c0c70",
+9225 => x"70800b8c",
+9226 => x"08fc050c",
+9227 => x"8c088805",
+9228 => x"08517008",
+9229 => x"842e0981",
+9230 => x"060b0b0b",
+9231 => x"0b883881",
+9232 => x"0b8c08fc",
+9233 => x"050c8c08",
+9234 => x"fc050870",
+9235 => x"800c5150",
+9236 => x"508c0c04",
+9237 => x"8c08028c",
+9238 => x"0c707080",
+9239 => x"0b8c08fc",
+9240 => x"050c8c08",
+9241 => x"88050851",
+9242 => x"7008802e",
+9243 => x"0b0b0b0b",
+9244 => x"97388c08",
+9245 => x"88050851",
+9246 => x"7008812e",
+9247 => x"0b0b0b0b",
+9248 => x"87380b0b",
+9249 => x"0b0b8839",
+9250 => x"810b8c08",
+9251 => x"fc050c8c",
+9252 => x"08fc0508",
+9253 => x"70800c51",
+9254 => x"50508c0c",
+9255 => x"048c0802",
+9256 => x"8c0cffbc",
+9257 => x"3d0d8c08",
+9258 => x"8c05088c",
+9259 => x"08900508",
+9260 => x"5553728c",
+9261 => x"08cc050c",
+9262 => x"738c08d0",
+9263 => x"050c8c08",
+9264 => x"9405088c",
+9265 => x"08980508",
+9266 => x"5553728c",
+9267 => x"08c4050c",
+9268 => x"738c08c8",
+9269 => x"050c8c08",
+9270 => x"ec057053",
+9271 => x"8c08cc05",
+9272 => x"70535153",
+9273 => x"0b0b0bbc",
+9274 => x"f13f8c08",
+9275 => x"d8057053",
+9276 => x"8c08c405",
+9277 => x"70535153",
+9278 => x"0b0b0bbc",
+9279 => x"dd3f8c08",
+9280 => x"ec058c08",
+9281 => x"c0050c8c",
+9282 => x"08d8058c",
+9283 => x"08ffbc05",
+9284 => x"0c8c08c0",
+9285 => x"0508510b",
+9286 => x"0b0b9084",
+9287 => x"3f800853",
+9288 => x"72802e0b",
+9289 => x"0b0b0b92",
+9290 => x"388c08c0",
+9291 => x"05088c08",
+9292 => x"ffb8050c",
+9293 => x"0b0b0b8e",
+9294 => x"bb398c08",
+9295 => x"ffbc0508",
+9296 => x"510b0b0b",
+9297 => x"8fda3f80",
+9298 => x"08537280",
+9299 => x"2e0b0b0b",
+9300 => x"0b93388c",
+9301 => x"08ffbc05",
+9302 => x"088c08ff",
+9303 => x"b8050c0b",
+9304 => x"0b0b8e90",
+9305 => x"398c08c0",
+9306 => x"05088c08",
+9307 => x"c005088c",
+9308 => x"08ffbc05",
+9309 => x"08841208",
+9310 => x"84120832",
+9311 => x"84140c8c",
+9312 => x"08c00508",
+9313 => x"54555555",
+9314 => x"0b0b0b8e",
+9315 => x"dd3f8008",
+9316 => x"53720b0b",
+9317 => x"0b0b9d38",
+9318 => x"8c08c005",
+9319 => x"08510b0b",
+9320 => x"0b8e913f",
+9321 => x"80085372",
+9322 => x"0b0b0b0b",
+9323 => x"87380b0b",
+9324 => x"0b80c339",
+9325 => x"8c08c005",
+9326 => x"088c08ff",
+9327 => x"bc050854",
+9328 => x"54730873",
+9329 => x"082e0981",
+9330 => x"060b0b0b",
+9331 => x"0b97380b",
+9332 => x"0b0b8dcd",
+9333 => x"3f800870",
+9334 => x"8c08ffb8",
+9335 => x"050c530b",
+9336 => x"0b0b8d90",
+9337 => x"398c08c0",
+9338 => x"05088c08",
+9339 => x"ffb8050c",
+9340 => x"0b0b0b8c",
+9341 => x"ff398c08",
+9342 => x"ffbc0508",
+9343 => x"510b0b0b",
+9344 => x"8de83f80",
+9345 => x"08537280",
+9346 => x"2e0b0b0b",
+9347 => x"0baf388c",
+9348 => x"08c00508",
+9349 => x"53805480",
+9350 => x"55738c14",
+9351 => x"0c749014",
+9352 => x"0c8c08c0",
+9353 => x"05085380",
+9354 => x"0b88140c",
+9355 => x"8c08c005",
+9356 => x"088c08ff",
+9357 => x"b8050c0b",
+9358 => x"0b0b8cb8",
+9359 => x"398c08ff",
+9360 => x"bc050851",
+9361 => x"0b0b0b8c",
+9362 => x"eb3f8008",
+9363 => x"5372802e",
+9364 => x"0b0b0b0b",
+9365 => x"9b388c08",
+9366 => x"c0050853",
+9367 => x"84730c8c",
+9368 => x"08c00508",
+9369 => x"8c08ffb8",
+9370 => x"050c0b0b",
+9371 => x"0b8c8539",
+9372 => x"8c08c005",
+9373 => x"088c08c0",
+9374 => x"05088c08",
+9375 => x"ffbc0508",
+9376 => x"88120888",
+9377 => x"12083188",
+9378 => x"140c8c08",
+9379 => x"c0050851",
+9380 => x"55555590",
+9381 => x"13088c14",
+9382 => x"08545472",
+9383 => x"8c08ffa8",
+9384 => x"050c738c",
+9385 => x"08ffac05",
+9386 => x"0c8c08ff",
+9387 => x"bc050853",
+9388 => x"9013088c",
+9389 => x"14085454",
+9390 => x"728c08ff",
+9391 => x"a0050c73",
+9392 => x"8c08ffa4",
+9393 => x"050c8c08",
+9394 => x"ffa00508",
+9395 => x"8c08ffa8",
+9396 => x"0508260b",
+9397 => x"0b0b0bb0",
+9398 => x"388c08ff",
+9399 => x"a005088c",
+9400 => x"08ffa805",
+9401 => x"082e0981",
+9402 => x"060b0b0b",
+9403 => x"81e9388c",
+9404 => x"08ffa405",
+9405 => x"088c08ff",
+9406 => x"ac050826",
+9407 => x"0b0b0b0b",
+9408 => x"87380b0b",
+9409 => x"0b81d039",
+9410 => x"8c08ffa8",
+9411 => x"05088c08",
+9412 => x"ffac0508",
+9413 => x"5553728c",
+9414 => x"08ff9005",
+9415 => x"0c738c08",
+9416 => x"ff94050c",
+9417 => x"8c08ff90",
+9418 => x"05088c08",
+9419 => x"ff940508",
+9420 => x"5553728c",
+9421 => x"08ff8805",
+9422 => x"0c738c08",
+9423 => x"ff8c050c",
+9424 => x"8c08ff8c",
+9425 => x"05088c08",
+9426 => x"ff940508",
+9427 => x"7012708c",
+9428 => x"08ff8405",
+9429 => x"0c525454",
+9430 => x"810b8c08",
+9431 => x"fefc050c",
+9432 => x"8c08ff84",
+9433 => x"05088c08",
+9434 => x"ff8c0508",
+9435 => x"54547274",
+9436 => x"260b0b0b",
+9437 => x"0b893880",
+9438 => x"0b8c08fe",
+9439 => x"fc050c8c",
+9440 => x"08ff8805",
+9441 => x"088c08ff",
+9442 => x"90050870",
+9443 => x"12708c08",
+9444 => x"ff80050c",
+9445 => x"8c08ff80",
+9446 => x"05088c08",
+9447 => x"fefc0508",
+9448 => x"11708c08",
+9449 => x"ff80050c",
+9450 => x"53515254",
+9451 => x"548c08ff",
+9452 => x"8005088c",
+9453 => x"08ff8405",
+9454 => x"08555372",
+9455 => x"8c08ffa8",
+9456 => x"050c738c",
+9457 => x"08ffac05",
+9458 => x"0c8c08c0",
+9459 => x"05088811",
+9460 => x"08ff0588",
+9461 => x"120c5388",
+9462 => x"0a538054",
+9463 => x"728c08ff",
+9464 => x"b0050c73",
+9465 => x"8c08ffb4",
+9466 => x"050c8053",
+9467 => x"8054728c",
+9468 => x"08ff9805",
+9469 => x"0c738c08",
+9470 => x"ff9c050c",
+9471 => x"8c08ffb0",
+9472 => x"0508708c",
+9473 => x"08ffb405",
+9474 => x"08075153",
+9475 => x"72802e0b",
+9476 => x"0b0b849f",
+9477 => x"388c08ff",
+9478 => x"a005088c",
+9479 => x"08ffa805",
+9480 => x"08260b0b",
+9481 => x"0b829838",
+9482 => x"8c08ffa0",
+9483 => x"05088c08",
+9484 => x"ffa80508",
+9485 => x"2e098106",
+9486 => x"0b0b0b0b",
+9487 => x"94388c08",
+9488 => x"ffa40508",
+9489 => x"8c08ffac",
+9490 => x"0508260b",
+9491 => x"0b0b81ef",
+9492 => x"388c08ff",
+9493 => x"9805088c",
+9494 => x"08ffb005",
+9495 => x"08078c08",
+9496 => x"ff9c0508",
+9497 => x"8c08ffb4",
+9498 => x"05080755",
+9499 => x"53728c08",
+9500 => x"ff98050c",
+9501 => x"738c08ff",
+9502 => x"9c050c8c",
+9503 => x"08ffa805",
+9504 => x"088c08ff",
+9505 => x"ac050855",
+9506 => x"53728c08",
+9507 => x"fef4050c",
+9508 => x"738c08fe",
+9509 => x"f8050c8c",
+9510 => x"08ffa005",
+9511 => x"088c08ff",
+9512 => x"a4050855",
+9513 => x"53728c08",
+9514 => x"feec050c",
+9515 => x"738c08fe",
+9516 => x"f0050c8c",
+9517 => x"08fef805",
+9518 => x"088c08fe",
+9519 => x"f0050871",
+9520 => x"7131708c",
+9521 => x"08fee805",
+9522 => x"0c525454",
+9523 => x"810b8c08",
+9524 => x"fee0050c",
+9525 => x"8c08fee8",
+9526 => x"05088c08",
+9527 => x"fef80508",
+9528 => x"54547373",
+9529 => x"260b0b0b",
+9530 => x"0b893880",
+9531 => x"0b8c08fe",
+9532 => x"e0050c8c",
+9533 => x"08fef405",
+9534 => x"088c08fe",
+9535 => x"ec050871",
+9536 => x"7131708c",
+9537 => x"08fee405",
+9538 => x"0c8c08fe",
+9539 => x"e4050870",
+9540 => x"8c08fee0",
+9541 => x"05083170",
+9542 => x"8c08fee4",
+9543 => x"050c5351",
+9544 => x"5254548c",
+9545 => x"08fee405",
+9546 => x"088c08fe",
+9547 => x"e8050855",
+9548 => x"53728c08",
+9549 => x"ffa8050c",
+9550 => x"738c08ff",
+9551 => x"ac050c8c",
+9552 => x"08ffb005",
+9553 => x"089f2b8c",
+9554 => x"08ffb405",
+9555 => x"08812a70",
+9556 => x"72078c08",
+9557 => x"ffb00508",
+9558 => x"812a5656",
+9559 => x"5656728c",
+9560 => x"08ffb005",
+9561 => x"0c738c08",
+9562 => x"ffb4050c",
+9563 => x"8c08ffa8",
+9564 => x"05088c08",
+9565 => x"ffac0508",
+9566 => x"5553728c",
+9567 => x"08fed805",
+9568 => x"0c738c08",
+9569 => x"fedc050c",
+9570 => x"8c08fed8",
+9571 => x"05088c08",
+9572 => x"fedc0508",
+9573 => x"5553728c",
+9574 => x"08fed005",
+9575 => x"0c738c08",
+9576 => x"fed4050c",
+9577 => x"8c08fed4",
+9578 => x"05088c08",
+9579 => x"fedc0508",
+9580 => x"7012708c",
+9581 => x"08fecc05",
+9582 => x"0c525454",
+9583 => x"810b8c08",
+9584 => x"fec4050c",
+9585 => x"8c08fecc",
+9586 => x"05088c08",
+9587 => x"fed40508",
+9588 => x"54547274",
+9589 => x"260b0b0b",
+9590 => x"0b893880",
+9591 => x"0b8c08fe",
+9592 => x"c4050c8c",
+9593 => x"08fed005",
+9594 => x"088c08fe",
+9595 => x"d8050870",
+9596 => x"12708c08",
+9597 => x"fec8050c",
+9598 => x"8c08fec8",
+9599 => x"05088c08",
+9600 => x"fec40508",
+9601 => x"11708c08",
+9602 => x"fec8050c",
+9603 => x"53515254",
+9604 => x"548c08fe",
+9605 => x"c805088c",
+9606 => x"08fecc05",
+9607 => x"08555372",
+9608 => x"8c08ffa8",
+9609 => x"050c738c",
+9610 => x"08ffac05",
+9611 => x"0c0b0b0b",
+9612 => x"fbca398c",
+9613 => x"08ff9805",
+9614 => x"08800670",
+9615 => x"8c08febc",
+9616 => x"050c8c08",
+9617 => x"ff9c0508",
+9618 => x"81ff0670",
+9619 => x"8c08fec0",
+9620 => x"050c5454",
+9621 => x"8c08febc",
+9622 => x"05088c08",
+9623 => x"fec00508",
+9624 => x"5553728c",
+9625 => x"08febc05",
+9626 => x"0c738c08",
+9627 => x"fec0050c",
+9628 => x"8c08febc",
+9629 => x"05085473",
+9630 => x"0b0b0b83",
+9631 => x"d0388c08",
+9632 => x"fec00508",
+9633 => x"53728180",
+9634 => x"2e098106",
+9635 => x"0b0b0b83",
+9636 => x"bc388c08",
+9637 => x"ff980508",
+9638 => x"982b8c08",
+9639 => x"ff9c0508",
+9640 => x"882a7072",
+9641 => x"078c08ff",
+9642 => x"98050888",
+9643 => x"2a718106",
+9644 => x"51565656",
+9645 => x"5672802e",
+9646 => x"0b0b0b81",
+9647 => x"bf388c08",
+9648 => x"ff980508",
+9649 => x"8c08ff9c",
+9650 => x"05085553",
+9651 => x"728c08fe",
+9652 => x"b4050c73",
+9653 => x"8c08feb8",
+9654 => x"050c8053",
+9655 => x"81805472",
+9656 => x"8c08feac",
+9657 => x"050c738c",
+9658 => x"08feb005",
+9659 => x"0c8c08fe",
+9660 => x"b805088c",
+9661 => x"08feb005",
+9662 => x"08701270",
+9663 => x"8c08fea8",
+9664 => x"050c5254",
+9665 => x"54810b8c",
+9666 => x"08fea005",
+9667 => x"0c8c08fe",
+9668 => x"a805088c",
+9669 => x"08feb805",
+9670 => x"08545472",
+9671 => x"74260b0b",
+9672 => x"0b0b8938",
+9673 => x"800b8c08",
+9674 => x"fea0050c",
+9675 => x"8c08feb4",
+9676 => x"05088c08",
+9677 => x"feac0508",
+9678 => x"7012708c",
+9679 => x"08fea405",
+9680 => x"0c8c08fe",
+9681 => x"a405088c",
+9682 => x"08fea005",
+9683 => x"0811708c",
+9684 => x"08fea405",
+9685 => x"0c535152",
+9686 => x"54548c08",
+9687 => x"fea40508",
+9688 => x"8c08fea8",
+9689 => x"05085553",
+9690 => x"728c08ff",
+9691 => x"98050c73",
+9692 => x"8c08ff9c",
+9693 => x"050c0b0b",
+9694 => x"0b81d239",
+9695 => x"8c08ffa8",
+9696 => x"0508708c",
+9697 => x"08ffac05",
+9698 => x"08075153",
+9699 => x"72802e0b",
+9700 => x"0b0b81b9",
+9701 => x"388c08ff",
+9702 => x"9805088c",
+9703 => x"08ff9c05",
+9704 => x"08555372",
+9705 => x"8c08fe98",
+9706 => x"050c738c",
+9707 => x"08fe9c05",
+9708 => x"0c805381",
+9709 => x"8054728c",
+9710 => x"08fe9005",
+9711 => x"0c738c08",
+9712 => x"fe94050c",
+9713 => x"8c08fe9c",
+9714 => x"05088c08",
+9715 => x"fe940508",
+9716 => x"7012708c",
+9717 => x"08fe8c05",
+9718 => x"0c525454",
+9719 => x"810b8c08",
+9720 => x"fe84050c",
+9721 => x"8c08fe8c",
+9722 => x"05088c08",
+9723 => x"fe9c0508",
+9724 => x"54547274",
+9725 => x"260b0b0b",
+9726 => x"0b893880",
+9727 => x"0b8c08fe",
+9728 => x"84050c8c",
+9729 => x"08fe9805",
+9730 => x"088c08fe",
+9731 => x"90050870",
+9732 => x"12708c08",
+9733 => x"fe88050c",
+9734 => x"8c08fe88",
+9735 => x"05088c08",
+9736 => x"fe840508",
+9737 => x"11708c08",
+9738 => x"fe88050c",
+9739 => x"53515254",
+9740 => x"548c08fe",
+9741 => x"8805088c",
+9742 => x"08fe8c05",
+9743 => x"08555372",
+9744 => x"8c08ff98",
+9745 => x"050c738c",
+9746 => x"08ff9c05",
+9747 => x"0c8c08c0",
+9748 => x"0508558c",
+9749 => x"08ff9805",
+9750 => x"088c08ff",
+9751 => x"9c050855",
+9752 => x"53728c16",
+9753 => x"0c739016",
+9754 => x"0c8c08c0",
+9755 => x"05088c08",
+9756 => x"ffb8050c",
+9757 => x"8c08ffb8",
+9758 => x"0508708c",
+9759 => x"08d4050c",
+9760 => x"8c08d405",
+9761 => x"08538c08",
+9762 => x"88050852",
+9763 => x"530b0b0b",
+9764 => x"9c863f8c",
+9765 => x"08880508",
+9766 => x"800c80c6",
+9767 => x"3d0d8c0c",
+9768 => x"048c0802",
+9769 => x"8c0c700b",
+9770 => x"0b82f4b8",
+9771 => x"70800c51",
+9772 => x"508c0c04",
+9773 => x"8c08028c",
+9774 => x"0c707080",
+9775 => x"0b8c08fc",
+9776 => x"050c8c08",
+9777 => x"88050851",
+9778 => x"7008822e",
+9779 => x"0981060b",
+9780 => x"0b0b0b88",
+9781 => x"38810b8c",
+9782 => x"08fc050c",
+9783 => x"8c08fc05",
+9784 => x"0870800c",
+9785 => x"5150508c",
+9786 => x"0c048c08",
+9787 => x"028c0c70",
+9788 => x"70800b8c",
+9789 => x"08fc050c",
+9790 => x"8c088805",
+9791 => x"08517008",
+9792 => x"842e0981",
+9793 => x"060b0b0b",
+9794 => x"0b883881",
+9795 => x"0b8c08fc",
+9796 => x"050c8c08",
+9797 => x"fc050870",
+9798 => x"800c5150",
+9799 => x"508c0c04",
+9800 => x"8c08028c",
+9801 => x"0c707080",
+9802 => x"0b8c08fc",
+9803 => x"050c8c08",
+9804 => x"88050851",
+9805 => x"7008802e",
+9806 => x"0b0b0b0b",
+9807 => x"97388c08",
+9808 => x"88050851",
+9809 => x"7008812e",
+9810 => x"0b0b0b0b",
+9811 => x"87380b0b",
+9812 => x"0b0b8839",
+9813 => x"810b8c08",
+9814 => x"fc050c8c",
+9815 => x"08fc0508",
+9816 => x"70800c51",
+9817 => x"50508c0c",
+9818 => x"048c0802",
+9819 => x"8c0cee3d",
+9820 => x"0d8c0888",
+9821 => x"05088c08",
+9822 => x"8c050855",
+9823 => x"53728c08",
+9824 => x"d0050c73",
+9825 => x"8c08d405",
+9826 => x"0c8c0890",
+9827 => x"05088c08",
+9828 => x"94050855",
+9829 => x"53728c08",
+9830 => x"c8050c73",
+9831 => x"8c08cc05",
+9832 => x"0c8c08ec",
+9833 => x"0570538c",
+9834 => x"08d00570",
+9835 => x"5351530b",
+9836 => x"0b0baba6",
+9837 => x"3f8c08d8",
+9838 => x"0570538c",
+9839 => x"08c80570",
+9840 => x"5351530b",
+9841 => x"0b0bab92",
+9842 => x"3f8c08ec",
+9843 => x"05705253",
+9844 => x"0b0b0b80",
+9845 => x"df3f8008",
+9846 => x"53720b0b",
+9847 => x"0b0b9e38",
+9848 => x"8c08d805",
+9849 => x"7052530b",
+9850 => x"0b0b80c8",
+9851 => x"3f800853",
+9852 => x"720b0b0b",
+9853 => x"0b87380b",
+9854 => x"0b0b0b8e",
+9855 => x"39810b8c",
+9856 => x"08c4050c",
+9857 => x"0b0b0b0b",
+9858 => x"9e398c08",
+9859 => x"d8057053",
+9860 => x"8c08ec05",
+9861 => x"70535153",
+9862 => x"0b0b0bae",
+9863 => x"c53f8008",
+9864 => x"708c08c4",
+9865 => x"050c538c",
+9866 => x"08c40508",
+9867 => x"800c943d",
+9868 => x"0d8c0c04",
+9869 => x"8c08028c",
+9870 => x"0c707080",
+9871 => x"0b8c08fc",
+9872 => x"050c8c08",
+9873 => x"88050851",
+9874 => x"7008802e",
+9875 => x"0b0b0b0b",
+9876 => x"97388c08",
+9877 => x"88050851",
+9878 => x"7008812e",
+9879 => x"0b0b0b0b",
+9880 => x"87380b0b",
+9881 => x"0b0b8839",
+9882 => x"810b8c08",
+9883 => x"fc050c8c",
+9884 => x"08fc0508",
+9885 => x"70800c51",
+9886 => x"50508c0c",
+9887 => x"048c0802",
+9888 => x"8c0cee3d",
+9889 => x"0d8c0888",
+9890 => x"05088c08",
+9891 => x"8c050855",
+9892 => x"53728c08",
+9893 => x"d0050c73",
+9894 => x"8c08d405",
+9895 => x"0c8c0890",
+9896 => x"05088c08",
+9897 => x"94050855",
+9898 => x"53728c08",
+9899 => x"c8050c73",
+9900 => x"8c08cc05",
+9901 => x"0c8c08ec",
+9902 => x"0570538c",
+9903 => x"08d00570",
+9904 => x"5351530b",
+9905 => x"0b0ba992",
+9906 => x"3f8c08d8",
+9907 => x"0570538c",
+9908 => x"08c80570",
+9909 => x"5351530b",
+9910 => x"0b0ba8fe",
+9911 => x"3f8c08ec",
+9912 => x"05705253",
+9913 => x"0b0b0b80",
+9914 => x"df3f8008",
+9915 => x"53720b0b",
+9916 => x"0b0b9e38",
+9917 => x"8c08d805",
+9918 => x"7052530b",
+9919 => x"0b0b80c8",
+9920 => x"3f800853",
+9921 => x"720b0b0b",
+9922 => x"0b87380b",
+9923 => x"0b0b0b8e",
+9924 => x"39810b8c",
+9925 => x"08c4050c",
+9926 => x"0b0b0b0b",
+9927 => x"9e398c08",
+9928 => x"d8057053",
+9929 => x"8c08ec05",
+9930 => x"70535153",
+9931 => x"0b0b0bac",
+9932 => x"b13f8008",
+9933 => x"708c08c4",
+9934 => x"050c538c",
+9935 => x"08c40508",
+9936 => x"800c943d",
+9937 => x"0d8c0c04",
+9938 => x"8c08028c",
+9939 => x"0c707080",
+9940 => x"0b8c08fc",
+9941 => x"050c8c08",
+9942 => x"88050851",
+9943 => x"7008802e",
+9944 => x"0b0b0b0b",
+9945 => x"97388c08",
+9946 => x"88050851",
+9947 => x"7008812e",
+9948 => x"0b0b0b0b",
+9949 => x"87380b0b",
+9950 => x"0b0b8839",
+9951 => x"810b8c08",
+9952 => x"fc050c8c",
+9953 => x"08fc0508",
+9954 => x"70800c51",
+9955 => x"50508c0c",
+9956 => x"048c0802",
+9957 => x"8c0cee3d",
+9958 => x"0d8c0888",
+9959 => x"05088c08",
+9960 => x"8c050855",
+9961 => x"53728c08",
+9962 => x"d0050c73",
+9963 => x"8c08d405",
+9964 => x"0c8c0890",
+9965 => x"05088c08",
+9966 => x"94050855",
+9967 => x"53728c08",
+9968 => x"c8050c73",
+9969 => x"8c08cc05",
+9970 => x"0c8c08ec",
+9971 => x"0570538c",
+9972 => x"08d00570",
+9973 => x"5351530b",
+9974 => x"0b0ba6fe",
+9975 => x"3f8c08d8",
+9976 => x"0570538c",
+9977 => x"08c80570",
+9978 => x"5351530b",
+9979 => x"0b0ba6ea",
+9980 => x"3f8c08ec",
+9981 => x"05705253",
+9982 => x"0b0b0b80",
+9983 => x"df3f8008",
+9984 => x"53720b0b",
+9985 => x"0b0b9e38",
+9986 => x"8c08d805",
+9987 => x"7052530b",
+9988 => x"0b0b80c8",
+9989 => x"3f800853",
+9990 => x"720b0b0b",
+9991 => x"0b87380b",
+9992 => x"0b0b0b8e",
+9993 => x"39ff0b8c",
+9994 => x"08c4050c",
+9995 => x"0b0b0b0b",
+9996 => x"9e398c08",
+9997 => x"d8057053",
+9998 => x"8c08ec05",
+9999 => x"70535153",
+10000 => x"0b0b0baa",
+10001 => x"9d3f8008",
+10002 => x"708c08c4",
+10003 => x"050c538c",
+10004 => x"08c40508",
+10005 => x"800c943d",
+10006 => x"0d8c0c04",
+10007 => x"8c08028c",
+10008 => x"0c707080",
+10009 => x"0b8c08fc",
+10010 => x"050c8c08",
+10011 => x"88050851",
+10012 => x"7008802e",
+10013 => x"0b0b0b0b",
+10014 => x"97388c08",
+10015 => x"88050851",
+10016 => x"7008812e",
+10017 => x"0b0b0b0b",
+10018 => x"87380b0b",
+10019 => x"0b0b8839",
+10020 => x"810b8c08",
+10021 => x"fc050c8c",
+10022 => x"08fc0508",
+10023 => x"70800c51",
+10024 => x"50508c0c",
+10025 => x"048c0802",
+10026 => x"8c0cee3d",
+10027 => x"0d8c0888",
+10028 => x"05088c08",
+10029 => x"8c050855",
+10030 => x"53728c08",
+10031 => x"d0050c73",
+10032 => x"8c08d405",
+10033 => x"0c8c0890",
+10034 => x"05088c08",
+10035 => x"94050855",
+10036 => x"53728c08",
+10037 => x"c8050c73",
+10038 => x"8c08cc05",
+10039 => x"0c8c08ec",
+10040 => x"0570538c",
+10041 => x"08d00570",
+10042 => x"5351530b",
+10043 => x"0b0ba4ea",
+10044 => x"3f8c08d8",
+10045 => x"0570538c",
+10046 => x"08c80570",
+10047 => x"5351530b",
+10048 => x"0b0ba4d6",
+10049 => x"3f8c08ec",
+10050 => x"05705253",
+10051 => x"0b0b0b80",
+10052 => x"df3f8008",
+10053 => x"53720b0b",
+10054 => x"0b0b9e38",
+10055 => x"8c08d805",
+10056 => x"7052530b",
+10057 => x"0b0b80c8",
+10058 => x"3f800853",
+10059 => x"720b0b0b",
+10060 => x"0b87380b",
+10061 => x"0b0b0b8e",
+10062 => x"39810b8c",
+10063 => x"08c4050c",
+10064 => x"0b0b0b0b",
+10065 => x"9e398c08",
+10066 => x"d8057053",
+10067 => x"8c08ec05",
+10068 => x"70535153",
+10069 => x"0b0b0ba8",
+10070 => x"893f8008",
+10071 => x"708c08c4",
+10072 => x"050c538c",
+10073 => x"08c40508",
+10074 => x"800c943d",
+10075 => x"0d8c0c04",
+10076 => x"8c08028c",
+10077 => x"0c707080",
+10078 => x"0b8c08fc",
+10079 => x"050c8c08",
+10080 => x"88050851",
+10081 => x"7008802e",
+10082 => x"0b0b0b0b",
+10083 => x"97388c08",
+10084 => x"88050851",
+10085 => x"7008812e",
+10086 => x"0b0b0b0b",
+10087 => x"87380b0b",
+10088 => x"0b0b8839",
+10089 => x"810b8c08",
+10090 => x"fc050c8c",
+10091 => x"08fc0508",
+10092 => x"70800c51",
+10093 => x"50508c0c",
+10094 => x"048c0802",
+10095 => x"8c0cee3d",
+10096 => x"0d8c0888",
+10097 => x"05088c08",
+10098 => x"8c050855",
+10099 => x"53728c08",
+10100 => x"d0050c73",
+10101 => x"8c08d405",
+10102 => x"0c8c0890",
+10103 => x"05088c08",
+10104 => x"94050855",
+10105 => x"53728c08",
+10106 => x"c8050c73",
+10107 => x"8c08cc05",
+10108 => x"0c8c08ec",
+10109 => x"0570538c",
+10110 => x"08d00570",
+10111 => x"5351530b",
+10112 => x"0b0ba2d6",
+10113 => x"3f8c08d8",
+10114 => x"0570538c",
+10115 => x"08c80570",
+10116 => x"5351530b",
+10117 => x"0b0ba2c2",
+10118 => x"3f8c08ec",
+10119 => x"05705253",
+10120 => x"0b0b0b80",
+10121 => x"df3f8008",
+10122 => x"53720b0b",
+10123 => x"0b0b9e38",
+10124 => x"8c08d805",
+10125 => x"7052530b",
+10126 => x"0b0b80c8",
+10127 => x"3f800853",
+10128 => x"720b0b0b",
+10129 => x"0b87380b",
+10130 => x"0b0b0b8e",
+10131 => x"39810b8c",
+10132 => x"08c4050c",
+10133 => x"0b0b0b0b",
+10134 => x"9e398c08",
+10135 => x"d8057053",
+10136 => x"8c08ec05",
+10137 => x"70535153",
+10138 => x"0b0b0ba5",
+10139 => x"f53f8008",
+10140 => x"708c08c4",
+10141 => x"050c538c",
+10142 => x"08c40508",
+10143 => x"800c943d",
+10144 => x"0d8c0c04",
+10145 => x"8c08028c",
+10146 => x"0c707080",
+10147 => x"0b8c08fc",
+10148 => x"050c8c08",
+10149 => x"88050851",
+10150 => x"7008802e",
+10151 => x"0b0b0b0b",
+10152 => x"97388c08",
+10153 => x"88050851",
+10154 => x"7008812e",
+10155 => x"0b0b0b0b",
+10156 => x"87380b0b",
+10157 => x"0b0b8839",
+10158 => x"810b8c08",
+10159 => x"fc050c8c",
+10160 => x"08fc0508",
+10161 => x"70800c51",
+10162 => x"50508c0c",
+10163 => x"048c0802",
+10164 => x"8c0cf63d",
+10165 => x"0d830b8c",
+10166 => x"08ec050c",
+10167 => x"800b8c08",
+10168 => x"e8050c8c",
+10169 => x"088c0508",
+10170 => x"80250b0b",
+10171 => x"0b0b8838",
+10172 => x"810b8c08",
+10173 => x"e8050c8c",
+10174 => x"08e80508",
+10175 => x"8c08f005",
+10176 => x"0c8c088c",
+10177 => x"05080b0b",
+10178 => x"0b0b8e38",
+10179 => x"820b8c08",
+10180 => x"ec050c0b",
+10181 => x"0b0b81b5",
+10182 => x"39bc0b8c",
+10183 => x"08f4050c",
+10184 => x"8c08f005",
+10185 => x"08802e0b",
+10186 => x"0b0b80c9",
+10187 => x"388c088c",
+10188 => x"0508810a",
+10189 => x"2e098106",
+10190 => x"0b0b0b0b",
+10191 => x"9b388f83",
+10192 => x"0a53800b",
+10193 => x"8c088805",
+10194 => x"08565472",
+10195 => x"750c7384",
+10196 => x"160c0b0b",
+10197 => x"0b818939",
+10198 => x"8c088c05",
+10199 => x"0830708c",
+10200 => x"08fc050c",
+10201 => x"709f2c70",
+10202 => x"8c08f805",
+10203 => x"0c51530b",
+10204 => x"0b0b0b97",
+10205 => x"398c088c",
+10206 => x"0508708c",
+10207 => x"08fc050c",
+10208 => x"709f2c70",
+10209 => x"8c08f805",
+10210 => x"0c51538c",
+10211 => x"08f80508",
+10212 => x"f00a260b",
+10213 => x"0b0b0bb5",
+10214 => x"388c08fc",
+10215 => x"05089f2a",
+10216 => x"8c08f805",
+10217 => x"08107072",
+10218 => x"078c08f8",
+10219 => x"050c8c08",
+10220 => x"fc050810",
+10221 => x"8c08fc05",
+10222 => x"0c8c08f4",
+10223 => x"0508ff05",
+10224 => x"8c08f405",
+10225 => x"0c54540b",
+10226 => x"0b0bffbf",
+10227 => x"398c08ec",
+10228 => x"0570538c",
+10229 => x"08880508",
+10230 => x"52530b0b",
+10231 => x"0b8db93f",
+10232 => x"8c088805",
+10233 => x"08800c8c",
+10234 => x"3d0d8c0c",
+10235 => x"048c0802",
+10236 => x"8c0cec3d",
+10237 => x"0d8c0888",
+10238 => x"05088c08",
+10239 => x"8c050857",
+10240 => x"55748c08",
+10241 => x"e0050c75",
+10242 => x"8c08e405",
+10243 => x"0c8c08ec",
+10244 => x"0570538c",
+10245 => x"08e00570",
+10246 => x"5351550b",
+10247 => x"0b0b9eba",
+10248 => x"3f8c08ec",
+10249 => x"05705255",
+10250 => x"0b0b0b83",
+10251 => x"d93f8008",
+10252 => x"5574802e",
+10253 => x"0b0b0b0b",
+10254 => x"8e38800b",
+10255 => x"8c08d405",
+10256 => x"0c0b0b0b",
+10257 => x"82b4398c",
+10258 => x"08ec0570",
+10259 => x"52550b0b",
+10260 => x"0b82ea3f",
+10261 => x"80085574",
+10262 => x"802e0b0b",
+10263 => x"0b0b8e38",
+10264 => x"800b8c08",
+10265 => x"d4050c0b",
+10266 => x"0b0b828e",
+10267 => x"398c08ec",
+10268 => x"05705255",
+10269 => x"0b0b0b82",
+10270 => x"8e3f8008",
+10271 => x"5574802e",
+10272 => x"0b0b0b0b",
+10273 => x"b4388c08",
+10274 => x"f0050880",
+10275 => x"2e0b0b0b",
+10276 => x"0b8f3881",
+10277 => x"0a0b8c08",
+10278 => x"d0050c0b",
+10279 => x"0b0b0b89",
+10280 => x"39fe0a0b",
+10281 => x"8c08d005",
+10282 => x"0c8c08d0",
+10283 => x"05088c08",
+10284 => x"d4050c0b",
+10285 => x"0b0b81c2",
+10286 => x"398c08f4",
+10287 => x"05088025",
+10288 => x"0b0b0b0b",
+10289 => x"8e38800b",
+10290 => x"8c08d405",
+10291 => x"0c0b0b0b",
+10292 => x"81a8399e",
+10293 => x"0b8c08f4",
+10294 => x"0508250b",
+10295 => x"0b0b0bb4",
+10296 => x"388c08f0",
+10297 => x"0508802e",
+10298 => x"0b0b0b0b",
+10299 => x"8f38810a",
+10300 => x"0b8c08cc",
+10301 => x"050c0b0b",
+10302 => x"0b0b8939",
+10303 => x"fe0a0b8c",
+10304 => x"08cc050c",
+10305 => x"8c08cc05",
+10306 => x"088c08d4",
+10307 => x"050c0b0b",
+10308 => x"0b80e739",
+10309 => x"bc0b8c08",
+10310 => x"f4050831",
+10311 => x"8c08d805",
+10312 => x"71565855",
+10313 => x"8c08f805",
+10314 => x"088c08fc",
+10315 => x"05085755",
+10316 => x"74527553",
+10317 => x"76510b0b",
+10318 => x"0b88d53f",
+10319 => x"8c08d805",
+10320 => x"088c08dc",
+10321 => x"0508708c",
+10322 => x"08e8050c",
+10323 => x"8c08e805",
+10324 => x"088c08c8",
+10325 => x"050c5755",
+10326 => x"8c08f005",
+10327 => x"08802e0b",
+10328 => x"0b0b0b8c",
+10329 => x"388c08c8",
+10330 => x"0508308c",
+10331 => x"08c8050c",
+10332 => x"8c08c805",
+10333 => x"088c08d4",
+10334 => x"050c8c08",
+10335 => x"d4050880",
+10336 => x"0c963d0d",
+10337 => x"8c0c048c",
+10338 => x"08028c0c",
+10339 => x"7070800b",
+10340 => x"8c08fc05",
+10341 => x"0c8c0888",
+10342 => x"05085170",
+10343 => x"08842e09",
+10344 => x"81060b0b",
+10345 => x"0b0b8838",
+10346 => x"810b8c08",
+10347 => x"fc050c8c",
+10348 => x"08fc0508",
+10349 => x"70800c51",
+10350 => x"50508c0c",
+10351 => x"048c0802",
+10352 => x"8c0c7070",
+10353 => x"800b8c08",
+10354 => x"fc050c8c",
+10355 => x"08880508",
+10356 => x"51700880",
+10357 => x"2e0b0b0b",
+10358 => x"0b97388c",
+10359 => x"08880508",
+10360 => x"51700881",
+10361 => x"2e0b0b0b",
+10362 => x"0b87380b",
+10363 => x"0b0b0b88",
+10364 => x"39810b8c",
+10365 => x"08fc050c",
+10366 => x"8c08fc05",
+10367 => x"0870800c",
+10368 => x"5150508c",
+10369 => x"0c048c08",
+10370 => x"028c0c70",
+10371 => x"70800b8c",
+10372 => x"08fc050c",
+10373 => x"8c088805",
+10374 => x"08517008",
+10375 => x"822e0981",
+10376 => x"060b0b0b",
+10377 => x"0b883881",
+10378 => x"0b8c08fc",
+10379 => x"050c8c08",
+10380 => x"fc050870",
+10381 => x"800c5150",
+10382 => x"508c0c04",
+10383 => x"8c08028c",
+10384 => x"0c707070",
+10385 => x"7080538c",
+10386 => x"088c0508",
+10387 => x"528c0888",
+10388 => x"0508510b",
+10389 => x"0bfdccbf",
+10390 => x"3f800870",
+10391 => x"800c5450",
+10392 => x"5050508c",
+10393 => x"0c048c08",
+10394 => x"028c0c70",
+10395 => x"70707081",
+10396 => x"538c088c",
+10397 => x"0508528c",
+10398 => x"08880508",
+10399 => x"510b0bfd",
+10400 => x"cc953f80",
+10401 => x"0870800c",
+10402 => x"54505050",
+10403 => x"508c0c04",
+10404 => x"8c08028c",
+10405 => x"0c707080",
+10406 => x"0b8c08fc",
+10407 => x"050c8c08",
+10408 => x"88050881",
+10409 => x"06ff1170",
+10410 => x"09708c08",
+10411 => x"8c050806",
+10412 => x"8c08fc05",
+10413 => x"08118c08",
+10414 => x"fc050c8c",
+10415 => x"08880508",
+10416 => x"812a8c08",
+10417 => x"88050c8c",
+10418 => x"088c0508",
+10419 => x"108c088c",
+10420 => x"050c5151",
+10421 => x"51518c08",
+10422 => x"88050880",
+10423 => x"2e0b0b0b",
+10424 => x"0b87380b",
+10425 => x"0b0bffb6",
+10426 => x"398c08fc",
+10427 => x"05087080",
+10428 => x"0c515050",
+10429 => x"8c0c048c",
+10430 => x"08028c0c",
+10431 => x"eb3d0d80",
+10432 => x"0b8c08f0",
+10433 => x"050c800b",
+10434 => x"8c08f405",
+10435 => x"0c8c088c",
+10436 => x"05088c08",
+10437 => x"90050856",
+10438 => x"54738c08",
+10439 => x"f0050c74",
+10440 => x"8c08f405",
+10441 => x"0c8c08f8",
+10442 => x"058c08f0",
+10443 => x"05565688",
+10444 => x"70547553",
+10445 => x"7652540b",
+10446 => x"0bfdcccf",
+10447 => x"3f800b8c",
+10448 => x"08e8050c",
+10449 => x"800b8c08",
+10450 => x"ec050c8c",
+10451 => x"08940508",
+10452 => x"8c089805",
+10453 => x"08565473",
+10454 => x"8c08e805",
+10455 => x"0c748c08",
+10456 => x"ec050c8c",
+10457 => x"08f0058c",
+10458 => x"08e80556",
+10459 => x"56887054",
+10460 => x"75537652",
+10461 => x"540b0bfd",
+10462 => x"cc913f80",
+10463 => x"0b8c08e8",
+10464 => x"050c800b",
+10465 => x"8c08ec05",
+10466 => x"0c8c08fc",
+10467 => x"050883ff",
+10468 => x"ff068c08",
+10469 => x"cc050c8c",
+10470 => x"08fc0508",
+10471 => x"902a8c08",
+10472 => x"c4050c8c",
+10473 => x"08f40508",
+10474 => x"83ffff06",
+10475 => x"8c08c805",
+10476 => x"0c8c08f4",
+10477 => x"0508902a",
+10478 => x"8c08c005",
+10479 => x"0c8c08cc",
+10480 => x"05088c08",
+10481 => x"c8050829",
+10482 => x"708c08dc",
+10483 => x"050c8c08",
+10484 => x"cc05088c",
+10485 => x"08c00508",
+10486 => x"29708c08",
+10487 => x"d8050c8c",
+10488 => x"08c40508",
+10489 => x"8c08c805",
+10490 => x"0829708c",
+10491 => x"08d4050c",
+10492 => x"8c08c405",
+10493 => x"088c08c0",
+10494 => x"05082970",
+10495 => x"8c08d005",
+10496 => x"0c8c08dc",
+10497 => x"0508902a",
+10498 => x"8c08d805",
+10499 => x"08118c08",
+10500 => x"d8050c8c",
+10501 => x"08d80508",
+10502 => x"8c08d405",
+10503 => x"08058c08",
+10504 => x"d8050c51",
+10505 => x"51515154",
+10506 => x"8c08d805",
+10507 => x"088c08d4",
+10508 => x"0508270b",
+10509 => x"0b0b0b8f",
+10510 => x"388c08d0",
+10511 => x"05088480",
+10512 => x"80058c08",
+10513 => x"d0050c8c",
+10514 => x"08d80508",
+10515 => x"902a8c08",
+10516 => x"d0050811",
+10517 => x"8c08e005",
+10518 => x"0c8c08d8",
+10519 => x"050883ff",
+10520 => x"ff067090",
+10521 => x"2b8c08dc",
+10522 => x"050883ff",
+10523 => x"ff067012",
+10524 => x"8c08e405",
+10525 => x"0c525751",
+10526 => x"548c08e0",
+10527 => x"05088c08",
+10528 => x"e4050856",
+10529 => x"54738c08",
+10530 => x"e8050c74",
+10531 => x"8c08ec05",
+10532 => x"0c8c08fc",
+10533 => x"05088c08",
+10534 => x"f0050829",
+10535 => x"8c08f805",
+10536 => x"088c08f4",
+10537 => x"05082970",
+10538 => x"128c08e8",
+10539 => x"0508118c",
+10540 => x"08e8050c",
+10541 => x"5155558c",
+10542 => x"08e80508",
+10543 => x"8c08ec05",
+10544 => x"088c0888",
+10545 => x"05085856",
+10546 => x"5473760c",
+10547 => x"7484170c",
+10548 => x"8c088805",
+10549 => x"08800c97",
+10550 => x"3d0d8c0c",
+10551 => x"048c0802",
+10552 => x"8c0cf63d",
+10553 => x"0d800b8c",
+10554 => x"08f0050c",
+10555 => x"800b8c08",
+10556 => x"f4050c8c",
+10557 => x"088c0508",
+10558 => x"8c089005",
+10559 => x"08565473",
+10560 => x"8c08f005",
+10561 => x"0c748c08",
+10562 => x"f4050c8c",
+10563 => x"08f8058c",
+10564 => x"08f00556",
+10565 => x"56887054",
+10566 => x"75537652",
+10567 => x"540b0bfd",
+10568 => x"c8e93f80",
+10569 => x"0b8c08f0",
+10570 => x"050c800b",
+10571 => x"8c08f405",
+10572 => x"0c8c08f8",
+10573 => x"0508308c",
+10574 => x"08ec050c",
+10575 => x"8c08fc05",
+10576 => x"08802e0b",
+10577 => x"0b0b0b8d",
+10578 => x"388c08ec",
+10579 => x"0508ff05",
+10580 => x"8c08ec05",
+10581 => x"0c8c08ec",
+10582 => x"05088c08",
+10583 => x"f0050c8c",
+10584 => x"08fc0508",
+10585 => x"308c08f4",
+10586 => x"050c8c08",
+10587 => x"f005088c",
+10588 => x"08f40508",
+10589 => x"8c088805",
+10590 => x"08585654",
+10591 => x"73760c74",
+10592 => x"84170c8c",
+10593 => x"08880508",
+10594 => x"800c8c3d",
+10595 => x"0d8c0c04",
+10596 => x"8c08028c",
+10597 => x"0cf53d0d",
+10598 => x"8c089405",
+10599 => x"080b0b0b",
+10600 => x"0ba0388c",
+10601 => x"088c0508",
+10602 => x"8c089005",
+10603 => x"088c0888",
+10604 => x"05085856",
+10605 => x"5473760c",
+10606 => x"7484170c",
+10607 => x"0b0b0b81",
+10608 => x"ca39800b",
+10609 => x"8c08f005",
+10610 => x"0c800b8c",
+10611 => x"08f4050c",
+10612 => x"8c088c05",
+10613 => x"088c0890",
+10614 => x"05085654",
+10615 => x"738c08f0",
+10616 => x"050c748c",
+10617 => x"08f4050c",
+10618 => x"8c08f805",
+10619 => x"8c08f005",
+10620 => x"56568870",
+10621 => x"54755376",
+10622 => x"52540b0b",
+10623 => x"fdc78c3f",
+10624 => x"a00b8c08",
+10625 => x"94050831",
+10626 => x"8c08ec05",
+10627 => x"0c8c08ec",
+10628 => x"05088024",
+10629 => x"0b0b0b0b",
+10630 => x"a138800b",
+10631 => x"8c08f005",
+10632 => x"0c8c08ec",
+10633 => x"0508308c",
+10634 => x"08f80508",
+10635 => x"712a8c08",
+10636 => x"f4050c54",
+10637 => x"0b0b0b0b",
+10638 => x"b9398c08",
+10639 => x"f805088c",
+10640 => x"08ec0508",
+10641 => x"2b8c08e8",
+10642 => x"050c8c08",
+10643 => x"f805088c",
+10644 => x"08940508",
+10645 => x"2a8c08f0",
+10646 => x"050c8c08",
+10647 => x"fc05088c",
+10648 => x"08940508",
+10649 => x"2a708c08",
+10650 => x"e8050807",
+10651 => x"8c08f405",
+10652 => x"0c548c08",
+10653 => x"f005088c",
+10654 => x"08f40508",
+10655 => x"8c088805",
+10656 => x"08585654",
+10657 => x"73760c74",
+10658 => x"84170c8c",
+10659 => x"08880508",
+10660 => x"800c8d3d",
+10661 => x"0d8c0c04",
+10662 => x"8c08028c",
+10663 => x"0cc73d0d",
+10664 => x"8c088c05",
+10665 => x"08559015",
+10666 => x"088c1608",
+10667 => x"5656748c",
+10668 => x"08f0050c",
+10669 => x"758c08f4",
+10670 => x"050c8c08",
+10671 => x"8c050884",
+10672 => x"11088c08",
+10673 => x"ec050c55",
+10674 => x"800b8c08",
+10675 => x"e8050c8c",
+10676 => x"088c0508",
+10677 => x"510b0b0b",
+10678 => x"90b73f80",
+10679 => x"08557480",
+10680 => x"2e0b0b0b",
+10681 => x"0bad388f",
+10682 => x"ff0b8c08",
+10683 => x"e8050c8c",
+10684 => x"08f00508",
+10685 => x"a0808007",
+10686 => x"8c08f405",
+10687 => x"08800757",
+10688 => x"55748c08",
+10689 => x"f0050c75",
+10690 => x"8c08f405",
+10691 => x"0c0b0b0b",
+10692 => x"8df4398c",
+10693 => x"088c0508",
+10694 => x"510b0b0b",
+10695 => x"8fbd3f80",
+10696 => x"08557480",
+10697 => x"2e0b0b0b",
+10698 => x"0b9f388f",
+10699 => x"ff0b8c08",
+10700 => x"e8050c80",
+10701 => x"55805674",
+10702 => x"8c08f005",
+10703 => x"0c758c08",
+10704 => x"f4050c0b",
+10705 => x"0b0b8dbe",
+10706 => x"398c088c",
+10707 => x"0508510b",
+10708 => x"0b0b8ed1",
+10709 => x"3f800855",
+10710 => x"74802e0b",
+10711 => x"0b0b0b9e",
+10712 => x"38800b8c",
+10713 => x"08e8050c",
+10714 => x"80558056",
+10715 => x"748c08f0",
+10716 => x"050c758c",
+10717 => x"08f4050c",
+10718 => x"0b0b0b8d",
+10719 => x"89398c08",
+10720 => x"f0050870",
+10721 => x"8c08f405",
+10722 => x"08075155",
+10723 => x"740b0b0b",
+10724 => x"0b8e3880",
+10725 => x"0b8c08e8",
+10726 => x"050c0b0b",
+10727 => x"0b8ce739",
+10728 => x"8c088c05",
+10729 => x"08558815",
+10730 => x"08f88225",
+10731 => x"0b0b0b87",
+10732 => x"af388c08",
+10733 => x"8c0508f8",
+10734 => x"820b8812",
+10735 => x"08318c08",
+10736 => x"e4050c55",
+10737 => x"800b8c08",
+10738 => x"e8050cb8",
+10739 => x"0b8c08e4",
+10740 => x"0508250b",
+10741 => x"0b0b0b97",
+10742 => x"38805580",
+10743 => x"56748c08",
+10744 => x"f0050c75",
+10745 => x"8c08f405",
+10746 => x"0c0b0b0b",
+10747 => x"82b03980",
+10748 => x"0b8c08e0",
+10749 => x"050c8c08",
+10750 => x"d8055780",
+10751 => x"55810b8c",
+10752 => x"08e40508",
+10753 => x"55567452",
+10754 => x"75537651",
+10755 => x"0b0bfdbc",
+10756 => x"ab3f8c08",
+10757 => x"d805088c",
+10758 => x"08dc0508",
+10759 => x"5755748c",
+10760 => x"08d0050c",
+10761 => x"758c08d4",
+10762 => x"050cff56",
+10763 => x"ff57758c",
+10764 => x"08c8050c",
+10765 => x"768c08cc",
+10766 => x"050c8c08",
+10767 => x"d405088c",
+10768 => x"08cc0508",
+10769 => x"7012708c",
+10770 => x"08c4050c",
+10771 => x"52565781",
+10772 => x"0b8c08ff",
+10773 => x"bc050c8c",
+10774 => x"08c40508",
+10775 => x"8c08d405",
+10776 => x"08585676",
+10777 => x"76260b0b",
+10778 => x"0b0b8938",
+10779 => x"800b8c08",
+10780 => x"ffbc050c",
+10781 => x"8c08d005",
+10782 => x"088c08c8",
+10783 => x"05087012",
+10784 => x"708c08c0",
+10785 => x"050c8c08",
+10786 => x"c005088c",
+10787 => x"08ffbc05",
+10788 => x"0811708c",
+10789 => x"08c0050c",
+10790 => x"8c08c005",
+10791 => x"08708c08",
+10792 => x"f0050806",
+10793 => x"8c08c405",
+10794 => x"08708c08",
+10795 => x"f4050806",
+10796 => x"72707207",
+10797 => x"51525752",
+10798 => x"5252525a",
+10799 => x"52575576",
+10800 => x"802e0b0b",
+10801 => x"0b0b8838",
+10802 => x"810b8c08",
+10803 => x"e0050c8c",
+10804 => x"08d8058c",
+10805 => x"08e40508",
+10806 => x"55578c08",
+10807 => x"f005088c",
+10808 => x"08f40508",
+10809 => x"57557452",
+10810 => x"75537651",
+10811 => x"0b0b0bf9",
+10812 => x"9f3f8c08",
+10813 => x"d805088c",
+10814 => x"08dc0508",
+10815 => x"8c08e005",
+10816 => x"089f2c8c",
+10817 => x"08e00508",
+10818 => x"71707507",
+10819 => x"8c08f005",
+10820 => x"0c737207",
+10821 => x"8c08f405",
+10822 => x"0c59595b",
+10823 => x"59578c08",
+10824 => x"f0050880",
+10825 => x"06708c08",
+10826 => x"ffb4050c",
+10827 => x"8c08f405",
+10828 => x"0881ff06",
+10829 => x"708c08ff",
+10830 => x"b8050c57",
+10831 => x"558c08ff",
+10832 => x"b405088c",
+10833 => x"08ffb805",
+10834 => x"08575574",
+10835 => x"8c08ffb4",
+10836 => x"050c758c",
+10837 => x"08ffb805",
+10838 => x"0c8c08ff",
+10839 => x"b4050856",
+10840 => x"750b0b0b",
+10841 => x"81f8388c",
+10842 => x"08ffb805",
+10843 => x"08577681",
+10844 => x"802e0981",
+10845 => x"060b0b0b",
+10846 => x"81e4388c",
+10847 => x"08f00508",
+10848 => x"982b8c08",
+10849 => x"f4050888",
+10850 => x"2a707207",
+10851 => x"8c08f005",
+10852 => x"08882a71",
+10853 => x"81065158",
+10854 => x"58585874",
+10855 => x"802e0b0b",
+10856 => x"0b82ef38",
+10857 => x"8c08f005",
+10858 => x"088c08f4",
+10859 => x"05085755",
+10860 => x"748c08ff",
+10861 => x"ac050c75",
+10862 => x"8c08ffb0",
+10863 => x"050c8056",
+10864 => x"81805775",
+10865 => x"8c08ffa4",
+10866 => x"050c768c",
+10867 => x"08ffa805",
+10868 => x"0c8c08ff",
+10869 => x"b005088c",
+10870 => x"08ffa805",
+10871 => x"08701270",
+10872 => x"8c08ffa0",
+10873 => x"050c5256",
+10874 => x"57810b8c",
+10875 => x"08ff9805",
+10876 => x"0c8c08ff",
+10877 => x"a005088c",
+10878 => x"08ffb005",
+10879 => x"08585676",
+10880 => x"76260b0b",
+10881 => x"0b0b8938",
+10882 => x"800b8c08",
+10883 => x"ff98050c",
+10884 => x"8c08ffac",
+10885 => x"05088c08",
+10886 => x"ffa40508",
+10887 => x"7012708c",
+10888 => x"08ff9c05",
+10889 => x"0c8c08ff",
+10890 => x"9c05088c",
+10891 => x"08ff9805",
+10892 => x"0811708c",
+10893 => x"08ff9c05",
+10894 => x"0c525a52",
+10895 => x"57558c08",
+10896 => x"ff9c0508",
+10897 => x"8c08ffa0",
+10898 => x"05085755",
+10899 => x"748c08f0",
+10900 => x"050c758c",
+10901 => x"08f4050c",
+10902 => x"0b0b0b81",
+10903 => x"b5398c08",
+10904 => x"f005088c",
+10905 => x"08f40508",
+10906 => x"5856758c",
+10907 => x"08ff9005",
+10908 => x"0c768c08",
+10909 => x"ff94050c",
+10910 => x"805580ff",
+10911 => x"56748c08",
+10912 => x"ff88050c",
+10913 => x"758c08ff",
+10914 => x"8c050c8c",
+10915 => x"08ff9405",
+10916 => x"088c08ff",
+10917 => x"8c050870",
+10918 => x"12708c08",
+10919 => x"ff84050c",
+10920 => x"52585681",
+10921 => x"0b8c08fe",
+10922 => x"fc050c8c",
+10923 => x"08ff8405",
+10924 => x"088c08ff",
+10925 => x"94050857",
+10926 => x"55757526",
+10927 => x"0b0b0b0b",
+10928 => x"8938800b",
+10929 => x"8c08fefc",
+10930 => x"050c8c08",
+10931 => x"ff900508",
+10932 => x"8c08ff88",
+10933 => x"05087012",
+10934 => x"708c08ff",
+10935 => x"80050c8c",
+10936 => x"08ff8005",
+10937 => x"088c08fe",
+10938 => x"fc050811",
+10939 => x"708c08ff",
+10940 => x"80050c53",
+10941 => x"59525657",
+10942 => x"8c08ff80",
+10943 => x"05088c08",
+10944 => x"ff840508",
+10945 => x"5755748c",
+10946 => x"08f0050c",
+10947 => x"758c08f4",
+10948 => x"050c8c08",
+10949 => x"f00508f0",
+10950 => x"0a260b0b",
+10951 => x"0b0b8738",
+10952 => x"0b0b0b0b",
+10953 => x"8d398c08",
+10954 => x"e8050881",
+10955 => x"058c08e8",
+10956 => x"050c8c08",
+10957 => x"f0050898",
+10958 => x"2b8c08f4",
+10959 => x"0508882a",
+10960 => x"7072078c",
+10961 => x"08f00508",
+10962 => x"882a5858",
+10963 => x"5858748c",
+10964 => x"08f0050c",
+10965 => x"758c08f4",
+10966 => x"050c0b0b",
+10967 => x"0b85a739",
+10968 => x"8c088c05",
+10969 => x"085587ff",
+10970 => x"0b881608",
+10971 => x"250b0b0b",
+10972 => x"0b9f388f",
+10973 => x"ff0b8c08",
+10974 => x"e8050c80",
+10975 => x"55805674",
+10976 => x"8c08f005",
+10977 => x"0c758c08",
+10978 => x"f4050c0b",
+10979 => x"0b0b84f6",
+10980 => x"398c088c",
+10981 => x"05088811",
+10982 => x"0887ff05",
+10983 => x"8c08e805",
+10984 => x"0c8c08f0",
+10985 => x"05088006",
+10986 => x"708c08fe",
+10987 => x"f4050c8c",
+10988 => x"08f40508",
+10989 => x"81ff0670",
+10990 => x"8c08fef8",
+10991 => x"050c5957",
+10992 => x"558c08fe",
+10993 => x"f405088c",
+10994 => x"08fef805",
+10995 => x"08575574",
+10996 => x"8c08fef4",
+10997 => x"050c758c",
+10998 => x"08fef805",
+10999 => x"0c8c08fe",
+11000 => x"f4050856",
+11001 => x"750b0b0b",
+11002 => x"81f8388c",
+11003 => x"08fef805",
+11004 => x"08577681",
+11005 => x"802e0981",
+11006 => x"060b0b0b",
+11007 => x"81e4388c",
+11008 => x"08f00508",
+11009 => x"982b8c08",
+11010 => x"f4050888",
+11011 => x"2a707207",
+11012 => x"8c08f005",
+11013 => x"08882a71",
+11014 => x"81065158",
+11015 => x"58585874",
+11016 => x"802e0b0b",
+11017 => x"0b82ef38",
+11018 => x"8c08f005",
+11019 => x"088c08f4",
+11020 => x"05085755",
+11021 => x"748c08fe",
+11022 => x"ec050c75",
+11023 => x"8c08fef0",
+11024 => x"050c8056",
+11025 => x"81805775",
+11026 => x"8c08fee4",
+11027 => x"050c768c",
+11028 => x"08fee805",
+11029 => x"0c8c08fe",
+11030 => x"f005088c",
+11031 => x"08fee805",
+11032 => x"08701270",
+11033 => x"8c08fee0",
+11034 => x"050c5256",
+11035 => x"57810b8c",
+11036 => x"08fed805",
+11037 => x"0c8c08fe",
+11038 => x"e005088c",
+11039 => x"08fef005",
+11040 => x"08585676",
+11041 => x"76260b0b",
+11042 => x"0b0b8938",
+11043 => x"800b8c08",
+11044 => x"fed8050c",
+11045 => x"8c08feec",
+11046 => x"05088c08",
+11047 => x"fee40508",
+11048 => x"7012708c",
+11049 => x"08fedc05",
+11050 => x"0c8c08fe",
+11051 => x"dc05088c",
+11052 => x"08fed805",
+11053 => x"0811708c",
+11054 => x"08fedc05",
+11055 => x"0c525a52",
+11056 => x"57558c08",
+11057 => x"fedc0508",
+11058 => x"8c08fee0",
+11059 => x"05085755",
+11060 => x"748c08f0",
+11061 => x"050c758c",
+11062 => x"08f4050c",
+11063 => x"0b0b0b81",
+11064 => x"b5398c08",
+11065 => x"f005088c",
+11066 => x"08f40508",
+11067 => x"5856758c",
+11068 => x"08fed005",
+11069 => x"0c768c08",
+11070 => x"fed4050c",
+11071 => x"805580ff",
+11072 => x"56748c08",
+11073 => x"fec8050c",
+11074 => x"758c08fe",
+11075 => x"cc050c8c",
+11076 => x"08fed405",
+11077 => x"088c08fe",
+11078 => x"cc050870",
+11079 => x"12708c08",
+11080 => x"fec4050c",
+11081 => x"52585681",
+11082 => x"0b8c08fe",
+11083 => x"bc050c8c",
+11084 => x"08fec405",
+11085 => x"088c08fe",
+11086 => x"d4050857",
+11087 => x"55757526",
+11088 => x"0b0b0b0b",
+11089 => x"8938800b",
+11090 => x"8c08febc",
+11091 => x"050c8c08",
+11092 => x"fed00508",
+11093 => x"8c08fec8",
+11094 => x"05087012",
+11095 => x"708c08fe",
+11096 => x"c0050c8c",
+11097 => x"08fec005",
+11098 => x"088c08fe",
+11099 => x"bc050811",
+11100 => x"708c08fe",
+11101 => x"c0050c53",
+11102 => x"59525657",
+11103 => x"8c08fec0",
+11104 => x"05088c08",
+11105 => x"fec40508",
+11106 => x"5755748c",
+11107 => x"08f0050c",
+11108 => x"758c08f4",
+11109 => x"050c8c08",
+11110 => x"f00508f8",
+11111 => x"0a260b0b",
+11112 => x"0b0b8738",
+11113 => x"0b0b0b0b",
+11114 => x"b5398c08",
+11115 => x"f005089f",
+11116 => x"2b8c08f4",
+11117 => x"0508812a",
+11118 => x"7072078c",
+11119 => x"08f00508",
+11120 => x"812a5858",
+11121 => x"5858748c",
+11122 => x"08f0050c",
+11123 => x"758c08f4",
+11124 => x"050c8c08",
+11125 => x"e8050881",
+11126 => x"058c08e8",
+11127 => x"050c8c08",
+11128 => x"f0050898",
+11129 => x"2b8c08f4",
+11130 => x"0508882a",
+11131 => x"7072078c",
+11132 => x"08f00508",
+11133 => x"882a5858",
+11134 => x"5858748c",
+11135 => x"08f0050c",
+11136 => x"758c08f4",
+11137 => x"050c8c08",
+11138 => x"f00508bf",
+11139 => x"ffff068c",
+11140 => x"08f8050c",
+11141 => x"8c08f405",
+11142 => x"08ff068c",
+11143 => x"08fc050c",
+11144 => x"8c08e805",
+11145 => x"08568070",
+11146 => x"8006778f",
+11147 => x"ff067094",
+11148 => x"2b535a58",
+11149 => x"55800b8c",
+11150 => x"08f80508",
+11151 => x"76078c08",
+11152 => x"f8050c70",
+11153 => x"8c08fc05",
+11154 => x"08078c08",
+11155 => x"fc050c8c",
+11156 => x"08ec0508",
+11157 => x"51568070",
+11158 => x"80067781",
+11159 => x"06709f2b",
+11160 => x"535a5855",
+11161 => x"800b8c08",
+11162 => x"f8050876",
+11163 => x"078c08f8",
+11164 => x"050c708c",
+11165 => x"08fc0508",
+11166 => x"078c08fc",
+11167 => x"050c568c",
+11168 => x"08f80508",
+11169 => x"8c08fc05",
+11170 => x"088c0888",
+11171 => x"05085957",
+11172 => x"5574770c",
+11173 => x"7584180c",
+11174 => x"8c088805",
+11175 => x"08800cbb",
+11176 => x"3d0d8c0c",
+11177 => x"048c0802",
+11178 => x"8c0c7070",
+11179 => x"800b8c08",
+11180 => x"fc050c8c",
+11181 => x"08880508",
+11182 => x"51700882",
+11183 => x"2e098106",
+11184 => x"0b0b0b0b",
+11185 => x"8838810b",
+11186 => x"8c08fc05",
+11187 => x"0c8c08fc",
+11188 => x"05087080",
+11189 => x"0c515050",
+11190 => x"8c0c048c",
+11191 => x"08028c0c",
+11192 => x"7070800b",
+11193 => x"8c08fc05",
+11194 => x"0c8c0888",
+11195 => x"05085170",
+11196 => x"08842e09",
+11197 => x"81060b0b",
+11198 => x"0b0b8838",
+11199 => x"810b8c08",
+11200 => x"fc050c8c",
+11201 => x"08fc0508",
+11202 => x"70800c51",
+11203 => x"50508c0c",
+11204 => x"048c0802",
+11205 => x"8c0c7070",
+11206 => x"800b8c08",
+11207 => x"fc050c8c",
+11208 => x"08880508",
+11209 => x"51700880",
+11210 => x"2e0b0b0b",
+11211 => x"0b97388c",
+11212 => x"08880508",
+11213 => x"51700881",
+11214 => x"2e0b0b0b",
+11215 => x"0b87380b",
+11216 => x"0b0b0b88",
+11217 => x"39810b8c",
+11218 => x"08fc050c",
+11219 => x"8c08fc05",
+11220 => x"0870800c",
+11221 => x"5150508c",
+11222 => x"0c048c08",
+11223 => x"028c0cf8",
+11224 => x"3d0d8c08",
+11225 => x"88050870",
+11226 => x"08bfffff",
+11227 => x"068c08f8",
+11228 => x"050c8411",
+11229 => x"08ff068c",
+11230 => x"08fc050c",
+11231 => x"8c088805",
+11232 => x"08700894",
+11233 => x"2a545451",
+11234 => x"80728fff",
+11235 => x"068c08f4",
+11236 => x"050c8c08",
+11237 => x"88050870",
+11238 => x"089f2a54",
+11239 => x"54518072",
+11240 => x"81068c08",
+11241 => x"f0050c8c",
+11242 => x"088c0508",
+11243 => x"8c08f005",
+11244 => x"0884120c",
+11245 => x"51518c08",
+11246 => x"f405080b",
+11247 => x"0b0b81cf",
+11248 => x"388c08f8",
+11249 => x"0508708c",
+11250 => x"08fc0508",
+11251 => x"07515170",
+11252 => x"0b0b0b0b",
+11253 => x"90388c08",
+11254 => x"8c050851",
+11255 => x"82710c0b",
+11256 => x"0b0b82f8",
+11257 => x"398c088c",
+11258 => x"05088c08",
+11259 => x"f40508f8",
+11260 => x"82058812",
+11261 => x"0c8c08fc",
+11262 => x"0508982a",
+11263 => x"8c08f805",
+11264 => x"08882b70",
+11265 => x"72078c08",
+11266 => x"fc050888",
+11267 => x"2b565355",
+11268 => x"5551708c",
+11269 => x"08f8050c",
+11270 => x"718c08fc",
+11271 => x"050c8c08",
+11272 => x"8c050851",
+11273 => x"83710c8c",
+11274 => x"08f80508",
+11275 => x"f00a260b",
+11276 => x"0b0b0bbb",
+11277 => x"388c08fc",
+11278 => x"05089f2a",
+11279 => x"8c08f805",
+11280 => x"08107072",
+11281 => x"078c08fc",
+11282 => x"05081055",
+11283 => x"53545470",
+11284 => x"8c08f805",
+11285 => x"0c718c08",
+11286 => x"fc050c8c",
+11287 => x"088c0508",
+11288 => x"881108ff",
+11289 => x"0588120c",
+11290 => x"510b0b0b",
+11291 => x"ffb9398c",
+11292 => x"088c0508",
+11293 => x"538c08f8",
+11294 => x"05088c08",
+11295 => x"fc050853",
+11296 => x"51708c14",
+11297 => x"0c719014",
+11298 => x"0c0b0b0b",
+11299 => x"81ce398c",
+11300 => x"08f40508",
+11301 => x"8fff2e09",
+11302 => x"81060b0b",
+11303 => x"0b80f438",
+11304 => x"8c08f805",
+11305 => x"08708c08",
+11306 => x"fc050807",
+11307 => x"5151700b",
+11308 => x"0b0b0b90",
+11309 => x"388c088c",
+11310 => x"05085184",
+11311 => x"710c0b0b",
+11312 => x"0b819939",
+11313 => x"8c08f805",
+11314 => x"08932a52",
+11315 => x"80728106",
+11316 => x"51517080",
+11317 => x"2e0b0b0b",
+11318 => x"0b90388c",
+11319 => x"088c0508",
+11320 => x"5181710c",
+11321 => x"0b0b0b0b",
+11322 => x"8a398c08",
+11323 => x"8c050851",
+11324 => x"80710c8c",
+11325 => x"088c0508",
+11326 => x"538c08f8",
+11327 => x"05088c08",
+11328 => x"fc050853",
+11329 => x"51708c14",
+11330 => x"0c719014",
+11331 => x"0c0b0b0b",
+11332 => x"80ca398c",
+11333 => x"088c0508",
+11334 => x"8c08f405",
+11335 => x"08f88105",
+11336 => x"88120c8c",
+11337 => x"088c0508",
+11338 => x"51518371",
+11339 => x"0c8c088c",
+11340 => x"05088c08",
+11341 => x"fc050898",
+11342 => x"2a8c08f8",
+11343 => x"0508882b",
+11344 => x"7072078c",
+11345 => x"08fc0508",
+11346 => x"882b7188",
+11347 => x"0a078c16",
+11348 => x"0c708007",
+11349 => x"90160c56",
+11350 => x"54555555",
+11351 => x"8a3d0d8c",
+11352 => x"0c048c08",
+11353 => x"028c0cf0",
+11354 => x"3d0d8c08",
+11355 => x"88050851",
+11356 => x"0b0b0b89",
+11357 => x"993f8008",
+11358 => x"52710b0b",
+11359 => x"0b0b9d38",
+11360 => x"8c088c05",
+11361 => x"08510b0b",
+11362 => x"0b89833f",
+11363 => x"80085271",
+11364 => x"0b0b0b0b",
+11365 => x"87380b0b",
+11366 => x"0b0b8e39",
+11367 => x"810b8c08",
+11368 => x"fc050c0b",
+11369 => x"0b0b87ed",
+11370 => x"398c0888",
+11371 => x"0508510b",
+11372 => x"0b0b88a4",
+11373 => x"3f800852",
+11374 => x"71802e0b",
+11375 => x"0b0b0bb9",
+11376 => x"388c088c",
+11377 => x"0508510b",
+11378 => x"0b0b888c",
+11379 => x"3f800852",
+11380 => x"71802e0b",
+11381 => x"0b0b0ba1",
+11382 => x"388c088c",
+11383 => x"05088c08",
+11384 => x"88050884",
+11385 => x"12088412",
+11386 => x"0831708c",
+11387 => x"08fc050c",
+11388 => x"5254520b",
+11389 => x"0b0b879d",
+11390 => x"398c0888",
+11391 => x"0508510b",
+11392 => x"0b0b87d4",
+11393 => x"3f800852",
+11394 => x"71802e0b",
+11395 => x"0b0b0bb6",
+11396 => x"388c0888",
+11397 => x"05085284",
+11398 => x"1208802e",
+11399 => x"0b0b0b0b",
+11400 => x"8e38ff0b",
+11401 => x"8c08f805",
+11402 => x"0c0b0b0b",
+11403 => x"0b883981",
+11404 => x"0b8c08f8",
+11405 => x"050c8c08",
+11406 => x"f805088c",
+11407 => x"08fc050c",
+11408 => x"0b0b0b86",
+11409 => x"d0398c08",
+11410 => x"8c050851",
+11411 => x"0b0b0b87",
+11412 => x"873f8008",
+11413 => x"5271802e",
+11414 => x"0b0b0b0b",
+11415 => x"b6388c08",
+11416 => x"8c050852",
+11417 => x"84120880",
+11418 => x"2e0b0b0b",
+11419 => x"0b8e3881",
+11420 => x"0b8c08f4",
+11421 => x"050c0b0b",
+11422 => x"0b0b8839",
+11423 => x"ff0b8c08",
+11424 => x"f4050c8c",
+11425 => x"08f40508",
+11426 => x"8c08fc05",
+11427 => x"0c0b0b0b",
+11428 => x"8683398c",
+11429 => x"08880508",
+11430 => x"510b0b0b",
+11431 => x"86843f80",
+11432 => x"08527180",
+11433 => x"2e0b0b0b",
+11434 => x"0ba6388c",
+11435 => x"088c0508",
+11436 => x"510b0b0b",
+11437 => x"85ec3f80",
+11438 => x"08527180",
+11439 => x"2e0b0b0b",
+11440 => x"0b8e3880",
+11441 => x"0b8c08fc",
+11442 => x"050c0b0b",
+11443 => x"0b85c639",
+11444 => x"8c088805",
+11445 => x"08510b0b",
+11446 => x"0b85c73f",
+11447 => x"80085271",
+11448 => x"802e0b0b",
+11449 => x"0b0bb638",
+11450 => x"8c088c05",
+11451 => x"08528412",
+11452 => x"08802e0b",
+11453 => x"0b0b0b8e",
+11454 => x"38810b8c",
+11455 => x"08f0050c",
+11456 => x"0b0b0b0b",
+11457 => x"8839ff0b",
+11458 => x"8c08f005",
+11459 => x"0c8c08f0",
+11460 => x"05088c08",
+11461 => x"fc050c0b",
+11462 => x"0b0b84f9",
+11463 => x"398c088c",
+11464 => x"0508510b",
+11465 => x"0b0b84fa",
+11466 => x"3f800852",
+11467 => x"71802e0b",
+11468 => x"0b0b0bb6",
+11469 => x"388c0888",
+11470 => x"05085284",
+11471 => x"1208802e",
+11472 => x"0b0b0b0b",
+11473 => x"8e38ff0b",
+11474 => x"8c08ec05",
+11475 => x"0c0b0b0b",
+11476 => x"0b883981",
+11477 => x"0b8c08ec",
+11478 => x"050c8c08",
+11479 => x"ec05088c",
+11480 => x"08fc050c",
+11481 => x"0b0b0b84",
+11482 => x"ac398c08",
+11483 => x"8805088c",
+11484 => x"088c0508",
+11485 => x"53538413",
+11486 => x"08841308",
+11487 => x"2e0b0b0b",
+11488 => x"0bb6388c",
+11489 => x"08880508",
+11490 => x"52841208",
+11491 => x"802e0b0b",
+11492 => x"0b0b8e38",
+11493 => x"ff0b8c08",
+11494 => x"e8050c0b",
+11495 => x"0b0b0b88",
+11496 => x"39810b8c",
+11497 => x"08e8050c",
+11498 => x"8c08e805",
+11499 => x"088c08fc",
+11500 => x"050c0b0b",
+11501 => x"0b83de39",
+11502 => x"8c088805",
+11503 => x"088c088c",
+11504 => x"05085353",
+11505 => x"88120888",
+11506 => x"1408250b",
+11507 => x"0b0b0bb6",
+11508 => x"388c0888",
+11509 => x"05085284",
+11510 => x"1208802e",
+11511 => x"0b0b0b0b",
+11512 => x"8e38ff0b",
+11513 => x"8c08e405",
+11514 => x"0c0b0b0b",
+11515 => x"0b883981",
+11516 => x"0b8c08e4",
+11517 => x"050c8c08",
+11518 => x"e405088c",
+11519 => x"08fc050c",
+11520 => x"0b0b0b83",
+11521 => x"90398c08",
+11522 => x"8805088c",
+11523 => x"088c0508",
+11524 => x"53538813",
+11525 => x"08881308",
+11526 => x"250b0b0b",
+11527 => x"0bb6388c",
+11528 => x"08880508",
+11529 => x"52841208",
+11530 => x"802e0b0b",
+11531 => x"0b0b8e38",
+11532 => x"810b8c08",
+11533 => x"e0050c0b",
+11534 => x"0b0b0b88",
+11535 => x"39ff0b8c",
+11536 => x"08e0050c",
+11537 => x"8c08e005",
+11538 => x"088c08fc",
+11539 => x"050c0b0b",
+11540 => x"0b82c239",
+11541 => x"8c088805",
+11542 => x"088c08dc",
+11543 => x"050c8c08",
+11544 => x"8c05088c",
+11545 => x"08d8050c",
+11546 => x"8c08dc05",
+11547 => x"088c08d8",
+11548 => x"05085452",
+11549 => x"8c12088c",
+11550 => x"1408260b",
+11551 => x"0b0b0bbc",
+11552 => x"388c08dc",
+11553 => x"05088c08",
+11554 => x"d8050854",
+11555 => x"528c1208",
+11556 => x"8c14082e",
+11557 => x"0981060b",
+11558 => x"0b0b80d5",
+11559 => x"388c08dc",
+11560 => x"05088c08",
+11561 => x"d8050854",
+11562 => x"52901208",
+11563 => x"90140826",
+11564 => x"0b0b0b0b",
+11565 => x"87380b0b",
+11566 => x"0b0bb639",
+11567 => x"8c088805",
+11568 => x"08528412",
+11569 => x"08802e0b",
+11570 => x"0b0b0b8e",
+11571 => x"38ff0b8c",
+11572 => x"08d4050c",
+11573 => x"0b0b0b0b",
+11574 => x"8839810b",
+11575 => x"8c08d405",
+11576 => x"0c8c08d4",
+11577 => x"05088c08",
+11578 => x"fc050c0b",
+11579 => x"0b0b81a5",
+11580 => x"398c088c",
+11581 => x"05088c08",
+11582 => x"d0050c8c",
+11583 => x"08880508",
+11584 => x"8c08cc05",
+11585 => x"0c8c08d0",
+11586 => x"05088c08",
+11587 => x"cc050854",
+11588 => x"528c1208",
+11589 => x"8c140826",
+11590 => x"0b0b0b0b",
+11591 => x"bc388c08",
+11592 => x"d005088c",
+11593 => x"08cc0508",
+11594 => x"54528c12",
+11595 => x"088c1408",
+11596 => x"2e098106",
+11597 => x"0b0b0b80",
+11598 => x"d5388c08",
+11599 => x"d005088c",
+11600 => x"08cc0508",
+11601 => x"54529012",
+11602 => x"08901408",
+11603 => x"260b0b0b",
+11604 => x"0b87380b",
+11605 => x"0b0b0bb6",
+11606 => x"398c0888",
+11607 => x"05085284",
+11608 => x"1208802e",
+11609 => x"0b0b0b0b",
+11610 => x"8e38810b",
+11611 => x"8c08c805",
+11612 => x"0c0b0b0b",
+11613 => x"0b8839ff",
+11614 => x"0b8c08c8",
+11615 => x"050c8c08",
+11616 => x"c805088c",
+11617 => x"08fc050c",
+11618 => x"0b0b0b0b",
+11619 => x"8839800b",
+11620 => x"8c08fc05",
+11621 => x"0c8c08fc",
+11622 => x"0508800c",
+11623 => x"923d0d8c",
+11624 => x"0c048c08",
+11625 => x"028c0c70",
+11626 => x"70800b8c",
+11627 => x"08fc050c",
+11628 => x"8c088805",
+11629 => x"08517008",
+11630 => x"822e0981",
+11631 => x"060b0b0b",
+11632 => x"0b883881",
+11633 => x"0b8c08fc",
+11634 => x"050c8c08",
+11635 => x"fc050870",
+11636 => x"800c5150",
+11637 => x"508c0c04",
+11638 => x"8c08028c",
+11639 => x"0c707080",
+11640 => x"0b8c08fc",
+11641 => x"050c8c08",
+11642 => x"88050851",
+11643 => x"7008842e",
+11644 => x"0981060b",
+11645 => x"0b0b0b88",
+11646 => x"38810b8c",
+11647 => x"08fc050c",
+11648 => x"8c08fc05",
+11649 => x"0870800c",
+11650 => x"5150508c",
+11651 => x"0c048c08",
+11652 => x"028c0c70",
+11653 => x"70800b8c",
+11654 => x"08fc050c",
+11655 => x"8c088805",
+11656 => x"08517008",
+11657 => x"802e0b0b",
+11658 => x"0b0b9738",
+11659 => x"8c088805",
+11660 => x"08517008",
+11661 => x"812e0b0b",
+11662 => x"0b0b8738",
+11663 => x"0b0b0b0b",
+11664 => x"8839810b",
+11665 => x"8c08fc05",
+11666 => x"0c8c08fc",
+11667 => x"05087080",
+11668 => x"0c515050",
+11669 => x"8c0c0470",
+11670 => x"700b0b83",
+11671 => x"84d80bfc",
+11672 => x"05700852",
+11673 => x"5270ff2e",
+11674 => x"0b0b0b0b",
+11675 => x"9538702d",
+11676 => x"fc127008",
+11677 => x"525270ff",
+11678 => x"2e098106",
+11679 => x"0b0b0b0b",
+11680 => x"ed385050",
+11681 => x"04040b0b",
+11682 => x"fd9e993f",
+11683 => x"04000000",
+11684 => x"00000040",
+11685 => x"48656c6c",
+11686 => x"6f20776f",
+11687 => x"726c6421",
+11688 => x"0a000000",
+11689 => x"20202020",
+11690 => x"20202020",
+11691 => x"20202020",
+11692 => x"20202020",
+11693 => x"30303030",
+11694 => x"30303030",
+11695 => x"30303030",
+11696 => x"30303030",
+11697 => x"0000164c",
+11698 => x"000010d6",
+11699 => x"000010d6",
+11700 => x"0000163f",
+11701 => x"000010d6",
+11702 => x"000010d6",
+11703 => x"000010d6",
+11704 => x"000010d6",
+11705 => x"000010d6",
+11706 => x"000010d6",
+11707 => x"000010a4",
+11708 => x"000015c6",
+11709 => x"000010d6",
+11710 => x"000010b9",
+11711 => x"000012d9",
+11712 => x"000010d6",
+11713 => x"000015fe",
+11714 => x"000015d5",
+11715 => x"000015d5",
+11716 => x"000015d5",
+11717 => x"000015d5",
+11718 => x"000015d5",
+11719 => x"000015d5",
+11720 => x"000015d5",
+11721 => x"000015d5",
+11722 => x"000015d5",
+11723 => x"000010d6",
+11724 => x"000010d6",
+11725 => x"000010d6",
+11726 => x"000010d6",
+11727 => x"000010d6",
+11728 => x"000010d6",
+11729 => x"000010d6",
+11730 => x"000010d6",
+11731 => x"000010d6",
+11732 => x"00001476",
+11733 => x"00001060",
+11734 => x"000013e5",
+11735 => x"000010d6",
+11736 => x"000013e5",
+11737 => x"000010d6",
+11738 => x"000010d6",
+11739 => x"000010d6",
+11740 => x"000010d6",
+11741 => x"0000160c",
+11742 => x"000010d6",
+11743 => x"000010d6",
+11744 => x"00001024",
+11745 => x"000010d6",
+11746 => x"000010d6",
+11747 => x"000010d6",
+11748 => x"0000152a",
+11749 => x"000010d6",
+11750 => x"00000ce0",
+11751 => x"000010d6",
+11752 => x"000010d6",
+11753 => x"000014d2",
+11754 => x"000010d6",
+11755 => x"000010d6",
+11756 => x"000010d6",
+11757 => x"000010d6",
+11758 => x"000010d6",
+11759 => x"000010d6",
+11760 => x"000010d6",
+11761 => x"000010d6",
+11762 => x"000010d6",
+11763 => x"000010d6",
+11764 => x"00001476",
+11765 => x"00001064",
+11766 => x"000013e5",
+11767 => x"000013e5",
+11768 => x"000013e5",
+11769 => x"000013d7",
+11770 => x"00001064",
+11771 => x"000010d6",
+11772 => x"000010d6",
+11773 => x"000012b5",
+11774 => x"000010d6",
+11775 => x"00001592",
+11776 => x"00001028",
+11777 => x"0000132c",
+11778 => x"000010c9",
+11779 => x"000010d6",
+11780 => x"0000152a",
+11781 => x"000010d6",
+11782 => x"00000ce4",
+11783 => x"000010d6",
+11784 => x"000010d6",
+11785 => x"00001619",
+11786 => x"62756720",
+11787 => x"696e2076",
+11788 => x"66707269",
+11789 => x"6e74663a",
+11790 => x"20626164",
+11791 => x"20626173",
+11792 => x"65000000",
+11793 => x"30313233",
+11794 => x"34353637",
+11795 => x"38396162",
+11796 => x"63646566",
+11797 => x"00000000",
+11798 => x"496e6600",
+11799 => x"30313233",
+11800 => x"34353637",
+11801 => x"38394142",
+11802 => x"43444546",
+11803 => x"00000000",
+11804 => x"30000000",
+11805 => x"2e000000",
+11806 => x"4e614e00",
+11807 => x"286e756c",
+11808 => x"6c290000",
+11809 => x"432d5554",
+11810 => x"462d3800",
+11811 => x"432d534a",
+11812 => x"49530000",
+11813 => x"432d4555",
+11814 => x"434a5000",
+11815 => x"432d4a49",
+11816 => x"53000000",
+11817 => x"496e6669",
+11818 => x"6e697479",
+11819 => x"00000000",
+11820 => x"000037a9",
+11821 => x"000037a9",
+11822 => x"0000378d",
+11823 => x"000031e6",
+11824 => x"00003792",
+11825 => x"000031eb",
+11826 => x"43000000",
+11827 => x"49534f2d",
+11828 => x"38383539",
+11829 => x"2d310000",
+11830 => x"0000b874",
+11831 => x"0000b86c",
+11832 => x"0000b86c",
+11833 => x"0000b86c",
+11834 => x"0000b86c",
+11835 => x"0000b86c",
+11836 => x"0000b86c",
+11837 => x"0000b86c",
+11838 => x"0000b86c",
+11839 => x"0000b86c",
+11840 => x"ffffffff",
+11841 => x"ffffffff",
+11842 => x"3c9cd2b2",
+11843 => x"97d889bc",
+11844 => x"3949f623",
+11845 => x"d5a8a733",
+11846 => x"32a50ffd",
+11847 => x"44f4a73d",
+11848 => x"255bba08",
+11849 => x"cf8c979d",
+11850 => x"0ac80628",
+11851 => x"64ac6f43",
+11852 => x"4341c379",
+11853 => x"37e08000",
+11854 => x"4693b8b5",
+11855 => x"b5056e17",
+11856 => x"4d384f03",
+11857 => x"e93ff9f5",
+11858 => x"5a827748",
+11859 => x"f9301d32",
+11860 => x"75154fdd",
+11861 => x"7f73bf3c",
+11862 => x"3ff00000",
+11863 => x"00000000",
+11864 => x"40240000",
+11865 => x"00000000",
+11866 => x"40590000",
+11867 => x"00000000",
+11868 => x"408f4000",
+11869 => x"00000000",
+11870 => x"40c38800",
+11871 => x"00000000",
+11872 => x"40f86a00",
+11873 => x"00000000",
+11874 => x"412e8480",
+11875 => x"00000000",
+11876 => x"416312d0",
+11877 => x"00000000",
+11878 => x"4197d784",
+11879 => x"00000000",
+11880 => x"41cdcd65",
+11881 => x"00000000",
+11882 => x"4202a05f",
+11883 => x"20000000",
+11884 => x"42374876",
+11885 => x"e8000000",
+11886 => x"426d1a94",
+11887 => x"a2000000",
+11888 => x"42a2309c",
+11889 => x"e5400000",
+11890 => x"42d6bcc4",
+11891 => x"1e900000",
+11892 => x"430c6bf5",
+11893 => x"26340000",
+11894 => x"4341c379",
+11895 => x"37e08000",
+11896 => x"43763457",
+11897 => x"85d8a000",
+11898 => x"43abc16d",
+11899 => x"674ec800",
+11900 => x"43e158e4",
+11901 => x"60913d00",
+11902 => x"4415af1d",
+11903 => x"78b58c40",
+11904 => x"444b1ae4",
+11905 => x"d6e2ef50",
+11906 => x"4480f0cf",
+11907 => x"064dd592",
+11908 => x"44b52d02",
+11909 => x"c7e14af6",
+11910 => x"44ea7843",
+11911 => x"79d99db4",
+11912 => x"00000005",
+11913 => x"00000019",
+11914 => x"0000007d",
+11915 => x"64756d6d",
+11916 => x"792e6578",
+11917 => x"65000000",
+11918 => x"00000000",
+11919 => x"00000000",
+11920 => x"00000000",
+11921 => x"00000000",
+11922 => x"00000000",
+11923 => x"00ffffff",
+11924 => x"ff00ffff",
+11925 => x"ffff00ff",
+11926 => x"ffffff00",
+11927 => x"00000000",
+11928 => x"00000000",
+11929 => x"00000000",
+11930 => x"0000c260",
+11931 => x"0000ba70",
+11932 => x"00000000",
+11933 => x"0000bcd8",
+11934 => x"0000bd34",
+11935 => x"0000bd90",
+11936 => x"00000000",
+11937 => x"00000000",
+11938 => x"00000000",
+11939 => x"00000000",
+11940 => x"00000000",
+11941 => x"00000000",
+11942 => x"00000000",
+11943 => x"00000000",
+11944 => x"00000000",
+11945 => x"0000b8c8",
+11946 => x"00000000",
+11947 => x"00000000",
+11948 => x"00000000",
+11949 => x"00000000",
+11950 => x"00000000",
+11951 => x"00000000",
+11952 => x"00000000",
+11953 => x"00000000",
+11954 => x"00000000",
+11955 => x"00000000",
+11956 => x"00000000",
+11957 => x"00000000",
+11958 => x"00000000",
+11959 => x"00000000",
+11960 => x"00000000",
+11961 => x"00000000",
+11962 => x"00000000",
+11963 => x"00000000",
+11964 => x"00000000",
+11965 => x"00000000",
+11966 => x"00000000",
+11967 => x"00000000",
+11968 => x"00000000",
+11969 => x"00000000",
+11970 => x"00000000",
+11971 => x"00000000",
+11972 => x"00000000",
+11973 => x"00000000",
+11974 => x"00000001",
+11975 => x"330eabcd",
+11976 => x"1234e66d",
+11977 => x"deec0005",
+11978 => x"000b0000",
+11979 => x"00000000",
+11980 => x"00000000",
+11981 => x"00000000",
+11982 => x"00000000",
+11983 => x"00000000",
+11984 => x"00000000",
+11985 => x"00000000",
+11986 => x"00000000",
+11987 => x"00000000",
+11988 => x"00000000",
+11989 => x"00000000",
+11990 => x"00000000",
+11991 => x"00000000",
+11992 => x"00000000",
+11993 => x"00000000",
+11994 => x"00000000",
+11995 => x"00000000",
+11996 => x"00000000",
+11997 => x"00000000",
+11998 => x"00000000",
+11999 => x"00000000",
+12000 => x"00000000",
+12001 => x"00000000",
+12002 => x"00000000",
+12003 => x"00000000",
+12004 => x"00000000",
+12005 => x"00000000",
+12006 => x"00000000",
+12007 => x"00000000",
+12008 => x"00000000",
+12009 => x"00000000",
+12010 => x"00000000",
+12011 => x"00000000",
+12012 => x"00000000",
+12013 => x"00000000",
+12014 => x"00000000",
+12015 => x"00000000",
+12016 => x"00000000",
+12017 => x"00000000",
+12018 => x"00000000",
+12019 => x"00000000",
+12020 => x"00000000",
+12021 => x"00000000",
+12022 => x"00000000",
+12023 => x"00000000",
+12024 => x"00000000",
+12025 => x"00000000",
+12026 => x"00000000",
+12027 => x"00000000",
+12028 => x"00000000",
+12029 => x"00000000",
+12030 => x"00000000",
+12031 => x"00000000",
+12032 => x"00000000",
+12033 => x"00000000",
+12034 => x"00000000",
+12035 => x"00000000",
+12036 => x"00000000",
+12037 => x"00000000",
+12038 => x"00000000",
+12039 => x"00000000",
+12040 => x"00000000",
+12041 => x"00000000",
+12042 => x"00000000",
+12043 => x"00000000",
+12044 => x"00000000",
+12045 => x"00000000",
+12046 => x"00000000",
+12047 => x"00000000",
+12048 => x"00000000",
+12049 => x"00000000",
+12050 => x"00000000",
+12051 => x"00000000",
+12052 => x"00000000",
+12053 => x"00000000",
+12054 => x"00000000",
+12055 => x"00000000",
+12056 => x"00000000",
+12057 => x"00000000",
+12058 => x"00000000",
+12059 => x"00000000",
+12060 => x"00000000",
+12061 => x"00000000",
+12062 => x"00000000",
+12063 => x"00000000",
+12064 => x"00000000",
+12065 => x"00000000",
+12066 => x"00000000",
+12067 => x"00000000",
+12068 => x"00000000",
+12069 => x"00000000",
+12070 => x"00000000",
+12071 => x"00000000",
+12072 => x"00000000",
+12073 => x"00000000",
+12074 => x"00000000",
+12075 => x"00000000",
+12076 => x"00000000",
+12077 => x"00000000",
+12078 => x"00000000",
+12079 => x"00000000",
+12080 => x"00000000",
+12081 => x"00000000",
+12082 => x"00000000",
+12083 => x"00000000",
+12084 => x"00000000",
+12085 => x"00000000",
+12086 => x"00000000",
+12087 => x"00000000",
+12088 => x"00000000",
+12089 => x"00000000",
+12090 => x"00000000",
+12091 => x"00000000",
+12092 => x"00000000",
+12093 => x"00000000",
+12094 => x"00000000",
+12095 => x"00000000",
+12096 => x"00000000",
+12097 => x"00000000",
+12098 => x"00000000",
+12099 => x"00000000",
+12100 => x"00000000",
+12101 => x"00000000",
+12102 => x"00000000",
+12103 => x"00000000",
+12104 => x"00000000",
+12105 => x"00000000",
+12106 => x"00000000",
+12107 => x"00000000",
+12108 => x"00000000",
+12109 => x"00000000",
+12110 => x"00000000",
+12111 => x"00000000",
+12112 => x"00000000",
+12113 => x"00000000",
+12114 => x"00000000",
+12115 => x"00000000",
+12116 => x"00000000",
+12117 => x"00000000",
+12118 => x"00000000",
+12119 => x"00000000",
+12120 => x"00000000",
+12121 => x"00000000",
+12122 => x"00000000",
+12123 => x"00000000",
+12124 => x"00000000",
+12125 => x"00000000",
+12126 => x"00000000",
+12127 => x"00000000",
+12128 => x"00000000",
+12129 => x"00000000",
+12130 => x"00000000",
+12131 => x"00000000",
+12132 => x"00000000",
+12133 => x"00000000",
+12134 => x"00000000",
+12135 => x"00000000",
+12136 => x"00000000",
+12137 => x"00000000",
+12138 => x"00000000",
+12139 => x"00000000",
+12140 => x"00000000",
+12141 => x"00000000",
+12142 => x"00000000",
+12143 => x"00000000",
+12144 => x"00000000",
+12145 => x"00000000",
+12146 => x"00000000",
+12147 => x"00000000",
+12148 => x"00000000",
+12149 => x"00000000",
+12150 => x"00000000",
+12151 => x"00000000",
+12152 => x"00000000",
+12153 => x"00000000",
+12154 => x"00000000",
+12155 => x"43000000",
+12156 => x"00000000",
+12157 => x"00000000",
+12158 => x"00000000",
+12159 => x"00000000",
+12160 => x"00000000",
+12161 => x"00000001",
+12162 => x"0000b8cc",
+12163 => x"00000000",
+12164 => x"00000000",
+12165 => x"00000000",
+12166 => x"00000000",
+12167 => x"00000000",
+12168 => x"00000000",
+12169 => x"00000000",
+12170 => x"00000000",
+12171 => x"00000000",
+12172 => x"00000000",
+12173 => x"00000000",
+12174 => x"00000000",
+12175 => x"ffffffff",
+12176 => x"00000000",
+12177 => x"00020000",
+12178 => x"00000000",
+12179 => x"00000000",
+12180 => x"0000be48",
+12181 => x"0000be48",
+12182 => x"0000be50",
+12183 => x"0000be50",
+12184 => x"0000be58",
+12185 => x"0000be58",
+12186 => x"0000be60",
+12187 => x"0000be60",
+12188 => x"0000be68",
+12189 => x"0000be68",
+12190 => x"0000be70",
+12191 => x"0000be70",
+12192 => x"0000be78",
+12193 => x"0000be78",
+12194 => x"0000be80",
+12195 => x"0000be80",
+12196 => x"0000be88",
+12197 => x"0000be88",
+12198 => x"0000be90",
+12199 => x"0000be90",
+12200 => x"0000be98",
+12201 => x"0000be98",
+12202 => x"0000bea0",
+12203 => x"0000bea0",
+12204 => x"0000bea8",
+12205 => x"0000bea8",
+12206 => x"0000beb0",
+12207 => x"0000beb0",
+12208 => x"0000beb8",
+12209 => x"0000beb8",
+12210 => x"0000bec0",
+12211 => x"0000bec0",
+12212 => x"0000bec8",
+12213 => x"0000bec8",
+12214 => x"0000bed0",
+12215 => x"0000bed0",
+12216 => x"0000bed8",
+12217 => x"0000bed8",
+12218 => x"0000bee0",
+12219 => x"0000bee0",
+12220 => x"0000bee8",
+12221 => x"0000bee8",
+12222 => x"0000bef0",
+12223 => x"0000bef0",
+12224 => x"0000bef8",
+12225 => x"0000bef8",
+12226 => x"0000bf00",
+12227 => x"0000bf00",
+12228 => x"0000bf08",
+12229 => x"0000bf08",
+12230 => x"0000bf10",
+12231 => x"0000bf10",
+12232 => x"0000bf18",
+12233 => x"0000bf18",
+12234 => x"0000bf20",
+12235 => x"0000bf20",
+12236 => x"0000bf28",
+12237 => x"0000bf28",
+12238 => x"0000bf30",
+12239 => x"0000bf30",
+12240 => x"0000bf38",
+12241 => x"0000bf38",
+12242 => x"0000bf40",
+12243 => x"0000bf40",
+12244 => x"0000bf48",
+12245 => x"0000bf48",
+12246 => x"0000bf50",
+12247 => x"0000bf50",
+12248 => x"0000bf58",
+12249 => x"0000bf58",
+12250 => x"0000bf60",
+12251 => x"0000bf60",
+12252 => x"0000bf68",
+12253 => x"0000bf68",
+12254 => x"0000bf70",
+12255 => x"0000bf70",
+12256 => x"0000bf78",
+12257 => x"0000bf78",
+12258 => x"0000bf80",
+12259 => x"0000bf80",
+12260 => x"0000bf88",
+12261 => x"0000bf88",
+12262 => x"0000bf90",
+12263 => x"0000bf90",
+12264 => x"0000bf98",
+12265 => x"0000bf98",
+12266 => x"0000bfa0",
+12267 => x"0000bfa0",
+12268 => x"0000bfa8",
+12269 => x"0000bfa8",
+12270 => x"0000bfb0",
+12271 => x"0000bfb0",
+12272 => x"0000bfb8",
+12273 => x"0000bfb8",
+12274 => x"0000bfc0",
+12275 => x"0000bfc0",
+12276 => x"0000bfc8",
+12277 => x"0000bfc8",
+12278 => x"0000bfd0",
+12279 => x"0000bfd0",
+12280 => x"0000bfd8",
+12281 => x"0000bfd8",
+12282 => x"0000bfe0",
+12283 => x"0000bfe0",
+12284 => x"0000bfe8",
+12285 => x"0000bfe8",
+12286 => x"0000bff0",
+12287 => x"0000bff0",
+12288 => x"0000bff8",
+12289 => x"0000bff8",
+12290 => x"0000c000",
+12291 => x"0000c000",
+12292 => x"0000c008",
+12293 => x"0000c008",
+12294 => x"0000c010",
+12295 => x"0000c010",
+12296 => x"0000c018",
+12297 => x"0000c018",
+12298 => x"0000c020",
+12299 => x"0000c020",
+12300 => x"0000c028",
+12301 => x"0000c028",
+12302 => x"0000c030",
+12303 => x"0000c030",
+12304 => x"0000c038",
+12305 => x"0000c038",
+12306 => x"0000c040",
+12307 => x"0000c040",
+12308 => x"0000c048",
+12309 => x"0000c048",
+12310 => x"0000c050",
+12311 => x"0000c050",
+12312 => x"0000c058",
+12313 => x"0000c058",
+12314 => x"0000c060",
+12315 => x"0000c060",
+12316 => x"0000c068",
+12317 => x"0000c068",
+12318 => x"0000c070",
+12319 => x"0000c070",
+12320 => x"0000c078",
+12321 => x"0000c078",
+12322 => x"0000c080",
+12323 => x"0000c080",
+12324 => x"0000c088",
+12325 => x"0000c088",
+12326 => x"0000c090",
+12327 => x"0000c090",
+12328 => x"0000c098",
+12329 => x"0000c098",
+12330 => x"0000c0a0",
+12331 => x"0000c0a0",
+12332 => x"0000c0a8",
+12333 => x"0000c0a8",
+12334 => x"0000c0b0",
+12335 => x"0000c0b0",
+12336 => x"0000c0b8",
+12337 => x"0000c0b8",
+12338 => x"0000c0c0",
+12339 => x"0000c0c0",
+12340 => x"0000c0c8",
+12341 => x"0000c0c8",
+12342 => x"0000c0d0",
+12343 => x"0000c0d0",
+12344 => x"0000c0d8",
+12345 => x"0000c0d8",
+12346 => x"0000c0e0",
+12347 => x"0000c0e0",
+12348 => x"0000c0e8",
+12349 => x"0000c0e8",
+12350 => x"0000c0f0",
+12351 => x"0000c0f0",
+12352 => x"0000c0f8",
+12353 => x"0000c0f8",
+12354 => x"0000c100",
+12355 => x"0000c100",
+12356 => x"0000c108",
+12357 => x"0000c108",
+12358 => x"0000c110",
+12359 => x"0000c110",
+12360 => x"0000c118",
+12361 => x"0000c118",
+12362 => x"0000c120",
+12363 => x"0000c120",
+12364 => x"0000c128",
+12365 => x"0000c128",
+12366 => x"0000c130",
+12367 => x"0000c130",
+12368 => x"0000c138",
+12369 => x"0000c138",
+12370 => x"0000c140",
+12371 => x"0000c140",
+12372 => x"0000c148",
+12373 => x"0000c148",
+12374 => x"0000c150",
+12375 => x"0000c150",
+12376 => x"0000c158",
+12377 => x"0000c158",
+12378 => x"0000c160",
+12379 => x"0000c160",
+12380 => x"0000c168",
+12381 => x"0000c168",
+12382 => x"0000c170",
+12383 => x"0000c170",
+12384 => x"0000c178",
+12385 => x"0000c178",
+12386 => x"0000c180",
+12387 => x"0000c180",
+12388 => x"0000c188",
+12389 => x"0000c188",
+12390 => x"0000c190",
+12391 => x"0000c190",
+12392 => x"0000c198",
+12393 => x"0000c198",
+12394 => x"0000c1a0",
+12395 => x"0000c1a0",
+12396 => x"0000c1a8",
+12397 => x"0000c1a8",
+12398 => x"0000c1b0",
+12399 => x"0000c1b0",
+12400 => x"0000c1b8",
+12401 => x"0000c1b8",
+12402 => x"0000c1c0",
+12403 => x"0000c1c0",
+12404 => x"0000c1c8",
+12405 => x"0000c1c8",
+12406 => x"0000c1d0",
+12407 => x"0000c1d0",
+12408 => x"0000c1d8",
+12409 => x"0000c1d8",
+12410 => x"0000c1e0",
+12411 => x"0000c1e0",
+12412 => x"0000c1e8",
+12413 => x"0000c1e8",
+12414 => x"0000c1f0",
+12415 => x"0000c1f0",
+12416 => x"0000c1f8",
+12417 => x"0000c1f8",
+12418 => x"0000c200",
+12419 => x"0000c200",
+12420 => x"0000c208",
+12421 => x"0000c208",
+12422 => x"0000c210",
+12423 => x"0000c210",
+12424 => x"0000c218",
+12425 => x"0000c218",
+12426 => x"0000c220",
+12427 => x"0000c220",
+12428 => x"0000c228",
+12429 => x"0000c228",
+12430 => x"0000c230",
+12431 => x"0000c230",
+12432 => x"0000c238",
+12433 => x"0000c238",
+12434 => x"0000c240",
+12435 => x"0000c240",
+12436 => x"0000ba2c",
+12437 => x"ffffffff",
+12438 => x"00000000",
+12439 => x"ffffffff",
+12440 => x"00000000",
+ others => x"00000000"
+);
+
+begin
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memAWriteEnable = '1') and (memBWriteEnable = '1') and (memAAddr=memBAddr) and (memAWrite/=memBWrite) then
+ report "write collision" severity failure;
+ end if;
+
+ if (memAWriteEnable = '1') then
+ ram(conv_integer(memAAddr)) := memAWrite;
+ memARead <= memAWrite;
+ else
+ memARead <= ram(conv_integer(memAAddr));
+ end if;
+ end if;
+end process;
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memBWriteEnable = '1') then
+ ram(conv_integer(memBAddr)) := memBWrite;
+ memBRead <= memBWrite;
+ else
+ memBRead <= ram(conv_integer(memBAddr));
+ end if;
+ end if;
+end process;
+
+
+
+
+end dualport_ram_arch;
diff --git a/zpu/hdl/example/io.vhd b/zpu/hdl/example/io.vhd
new file mode 100644
index 0000000..7dbe36f
--- /dev/null
+++ b/zpu/hdl/example/io.vhd
@@ -0,0 +1,97 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+use std.textio.all;
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+use work.txt_util.all;
+
+entity zpu_io is
+ generic (
+ log_file: string := "log.txt"
+ );
+ port(
+ clk : in std_logic;
+ areset : in std_logic;
+ busy : out std_logic;
+ writeEnable : in std_logic;
+ readEnable : in std_logic;
+ write : in std_logic_vector(wordSize-1 downto 0);
+ read : out std_logic_vector(wordSize-1 downto 0);
+ addr : in std_logic_vector(maxAddrBit downto minAddrBit)
+ );
+end zpu_io;
+
+
+architecture behave of zpu_io is
+
+
+
+signal timer_read : std_logic_vector(7 downto 0);
+--signal timer_write : std_logic_vector(7 downto 0);
+signal timer_we : std_logic;
+
+signal serving : std_logic;
+
+file l_file : TEXT open write_mode is log_file;
+
+begin
+
+
+ timerinst: timer port map (
+ clk => clk,
+ areset => areset,
+ we => timer_we,
+ din => write(7 downto 0),
+ adr => addr(4 downto 2),
+ dout => timer_read);
+
+ busy <= writeEnable or readEnable;
+ timer_we <= writeEnable and addr(12);
+
+ process(areset, clk)
+ begin
+ if (areset = '1') then
+-- timer_we <= '0';
+ elsif (clk'event and clk = '1') then
+-- timer_we <= '0';
+ if writeEnable = '1' then
+ -- external interface
+ if addr=x"2028003" then
+ -- Write to UART
+ -- report "" & character'image(conv_integer(memBint)) severity note;
+ print(l_file, character'val(conv_integer(write)));
+ elsif addr(12)='1' then
+-- report "xxx" severity failure;
+-- timer_we <= '1';
+ else
+ print(l_file, character'val(conv_integer(write)));
+ report "Illegal IO write" severity warning;
+ end if;
+
+ end if;
+ read <= (others => '0');
+ if (readEnable = '1') then
+ if addr=x"1001" then
+ read <= (0=>'1', others => '0'); -- recieve empty
+ elsif addr(12)='1' then
+ read(7 downto 0) <= timer_read;
+ elsif addr(11)='1' then
+ read(7 downto 0) <= ZPU_Frequency;
+ elsif addr=x"2028003" then
+ read <= (others => '0');
+ else
+ read <= (others => '0');
+ read(8) <= '1';
+ report "Illegal IO read" severity warning;
+ end if;
+ end if;
+ end if;
+ end process;
+
+
+end behave;
+
diff --git a/zpu/hdl/example/log.txt b/zpu/hdl/example/log.txt
new file mode 100644
index 0000000..6954a81
--- /dev/null
+++ b/zpu/hdl/example/log.txt
@@ -0,0 +1,15 @@
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+!
+
+
+
diff --git a/zpu/hdl/example/sim_fpga_top.vhd b/zpu/hdl/example/sim_fpga_top.vhd
new file mode 100644
index 0000000..b51fea0
--- /dev/null
+++ b/zpu/hdl/example/sim_fpga_top.vhd
@@ -0,0 +1,179 @@
+--------------------------------------------------------------------------------
+-- Company:
+-- Engineer:
+--
+-- Create Date: 20:15:31 04/14/05
+-- Design Name:
+-- Module Name: fpga_top - behave
+-- Project Name:
+-- Target Device:
+-- Tool versions:
+-- Description:
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+--------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+library UNISIM;
+use UNISIM.VComponents.all;
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+
+entity fpga_top is
+end fpga_top;
+
+architecture behave of fpga_top is
+
+
+signal clk : std_logic;
+
+signal areset : std_logic;
+
+
+component zpu_io is
+ generic (
+ log_file: string := "log.txt"
+ );
+ port(
+ clk : in std_logic;
+ areset : in std_logic;
+ busy : out std_logic;
+ writeEnable : in std_logic;
+ readEnable : in std_logic;
+ write : in std_logic_vector(wordSize-1 downto 0);
+ read : out std_logic_vector(wordSize-1 downto 0);
+ addr : in std_logic_vector(maxAddrBit downto minAddrBit)
+ );
+end component;
+
+
+
+
+
+signal mem_busy : std_logic;
+signal mem_read : std_logic_vector(wordSize-1 downto 0);
+signal mem_write : std_logic_vector(wordSize-1 downto 0);
+signal mem_addr : std_logic_vector(maxAddrBitIncIO downto 0);
+signal mem_writeEnable : std_logic;
+signal mem_readEnable : std_logic;
+signal mem_writeMask: std_logic_vector(wordBytes-1 downto 0);
+
+signal enable : std_logic;
+
+signal dram_mem_busy : std_logic;
+signal dram_mem_read : std_logic_vector(wordSize-1 downto 0);
+signal dram_mem_write : std_logic_vector(wordSize-1 downto 0);
+signal dram_mem_writeEnable : std_logic;
+signal dram_mem_readEnable : std_logic;
+signal dram_mem_writeMask: std_logic_vector(wordBytes-1 downto 0);
+
+
+signal io_busy : std_logic;
+
+signal io_mem_read : std_logic_vector(wordSize-1 downto 0);
+signal io_mem_writeEnable : std_logic;
+signal io_mem_readEnable : std_logic;
+
+
+signal dram_ready : std_logic;
+signal io_ready : std_logic;
+signal io_reading : std_logic;
+
+
+signal break : std_logic;
+
+begin
+ poweronreset: roc port map (O => areset);
+
+
+
+ zpu: zpu_core port map (
+ clk => clk ,
+ areset => areset,
+ enable => enable,
+ in_mem_busy => mem_busy,
+ mem_read => mem_read,
+ mem_write => mem_write,
+ out_mem_addr => mem_addr,
+ out_mem_writeEnable => mem_writeEnable,
+ out_mem_readEnable => mem_readEnable,
+ mem_writeMask => mem_writeMask,
+ interrupt => '0',
+ break => break);
+
+
+ ioMap: zpu_io port map (
+ clk => clk,
+ areset => areset,
+ busy => io_busy,
+ writeEnable => io_mem_writeEnable,
+ readEnable => io_mem_readEnable,
+ write => mem_write,
+ read => io_mem_read,
+ addr => mem_addr(maxAddrBit downto minAddrBit)
+ );
+
+ dram_mem_writeEnable <= mem_writeEnable and not mem_addr(ioBit);
+ dram_mem_readEnable <= mem_readEnable and not mem_addr(ioBit);
+ io_mem_writeEnable <= mem_writeEnable and mem_addr(ioBit);
+ io_mem_readEnable <= mem_readEnable and mem_addr(ioBit);
+ mem_busy <= io_busy;
+
+
+
+ -- Memory reads either come from IO or DRAM. We need to pick the right one.
+ memorycontrol:
+ process(dram_mem_read, dram_ready, io_ready, io_mem_read)
+ begin
+ mem_read <= (others => 'U');
+ if dram_ready='1' then
+ mem_read <= dram_mem_read;
+ end if;
+
+ if io_ready='1' then
+ mem_read <= (others => '0');
+ mem_read <= io_mem_read;
+ end if;
+ end process;
+
+
+ io_ready <= (io_reading or io_mem_readEnable) and not io_busy;
+
+ memoryControlSync:
+ process(clk, areset)
+ begin
+ if areset = '1' then
+ enable <= '0';
+ io_reading <= '0';
+ dram_ready <= '0';
+ elsif (clk'event and clk = '1') then
+ enable <= '1';
+ io_reading <= io_busy or io_mem_readEnable;
+ dram_ready<=dram_mem_readEnable;
+
+ end if;
+ end process;
+
+ -- wiggle the clock @ 100MHz
+ clock : PROCESS
+ begin
+ clk <= '0';
+ wait for 5 ns;
+ clk <= '1';
+ wait for 5 ns;
+ end PROCESS clock;
+
+
+end behave;
diff --git a/zpu/hdl/example/simzpu.do b/zpu/hdl/example/simzpu.do
new file mode 100644
index 0000000..083187f
--- /dev/null
+++ b/zpu/hdl/example/simzpu.do
@@ -0,0 +1,29 @@
+# Xilinx WebPack modelsim script
+#
+# 1. Change directory to this source directory
+# cd C:/workspace/zpunew/hdl/example
+# "do zimzpu.do"
+
+set BreakOnAssertion 1
+vlib work
+
+vcom -93 -explicit zpu_config.vhd
+vcom -93 -explicit ../zpu4/src/zpupkg.vhd
+vcom -93 -explicit ../zpu4/src/txt_util.vhd
+vcom -93 -explicit sim_fpga_top.vhd
+vcom -93 -explicit ../zpu4/src/zpu_core_small.vhd
+vcom -93 -explicit helloworld.vhd
+vcom -93 -explicit ../zpu4/src/timer.vhd
+vcom -93 -explicit io.vhd
+vcom -93 -explicit ../zpu4/src/trace.vhd
+
+# run ZPU
+vsim fpga_top
+view wave
+add wave -recursive fpga_top/zpu/*
+#add wave -recursive fpga_top/*
+view structure
+#view signals
+
+# Enough to run tiny programs
+run 10 ms
diff --git a/zpu/hdl/example/zpu_config.vhd b/zpu/hdl/example/zpu_config.vhd
new file mode 100644
index 0000000..a59ac8e
--- /dev/null
+++ b/zpu/hdl/example/zpu_config.vhd
@@ -0,0 +1,20 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+package zpu_config is
+ -- generate trace output
+ constant Generate_Trace : boolean := true;
+ constant wordPower : integer := 5;
+ -- during simulation, set this to '0' to get matching trace.txt
+ constant DontCareValue : std_logic := '0';
+ -- Clock frequency in MHz.
+ constant ZPU_Frequency : std_logic_vector(7 downto 0) := x"64";
+ -- This is the msb address bit. bytes=2^(maxAddrBitIncIO+1)
+ constant maxAddrBitIncIO : integer := 27;
+ constant maxAddrBitBRAM : integer := 16;
+
+ -- start byte address of stack.
+ -- point to top of RAM - 2*words
+ constant spStart : std_logic_vector(maxAddrBitIncIO downto 0) := x"1fffff8";
+end zpu_config;
diff --git a/zpu/hdl/index.html b/zpu/hdl/index.html
new file mode 100644
index 0000000..d3b4c1a
--- /dev/null
+++ b/zpu/hdl/index.html
@@ -0,0 +1,47 @@
+<html>
+<body>
+<h1>Getting started - FPGA </h1>
+The simplest version of the ZPU uses BRAM. When getting accustomed to the ZPU, a BRAM ZPU with a UART
+is a good place to start.
+<p>
+You'll find a working simulation script in hdl/example/simzpu.do.
+<p>
+When implementing the ZPU, copy the following files and modify them to your needs:
+<ol>
+ <li>hdl/example/zpu_config.vhd - set up RAM size here
+ <li>hdl/example/helloworld.vhd - dual port BRAM implementation.
+</ol>
+Obviously you must also connect the ZPU to the rest of your IO subsystem. IO is memory mapped(read/write) in the ZPU.
+<h2>Generating VHDL BRAM initialization </h2>
+
+<code>
+../install/bin/zpu-elf-objdump -O binary hello.elf hello.bin<br>
+java -classpath ../simulator/zpusim.jar com.zylin.zpu.simulator.tools.MakeRam hello.bin &gt;hello.bram<br>
+
+</code>
+<h2>Running example simulation</h2>
+The hdl/example directory has a simulation written for Xilinx WebPack ModelSim. From the ModelSim command prompt:
+<ol>
+<li>cd c:/&lt;installfolder&gt;/hdl/example
+<li>do zpusim.do
+</ol>
+<p>
+After running the hello world simulation (see zpusim.do), two files are written to the hdl/exmaple directory:
+<ol>
+<li>log.txt - contains the "Hello world!" text written to the debug channel/simplified UART.
+<li>trace.txt - a trace file for the CPU. The instruction set simulator has the capability of taking
+this file as input in order to verify that the HDL implementation matches the instruction set simulator.
+When a mismatch is found, the GDB debugger will break. Very handy for debugging custom ZPU implementations.
+</ol>
+<h2>HDL Directories & files </h2>
+<ul>
+<li>example - contains example files & working ZPU. Start here.
+<li>wishbone - contains wishbone interface for the ZPU
+<li>zpu3 - if you are interested in developing ZPU cores and not only using them, then this directory contains various stuff of more or less historical interest.
+<li>zpu4 - if you are interested in developing ZPU cores and not only using them, then this is the active development version. You'll also want to copy out the
+files you need from this folder to your own project.
+</ul>
+
+The HDL files need a bit of spit and polish!
+</body>
+</html>
diff --git a/zpu/hdl/wishbone/wishbone_pkg.vhd b/zpu/hdl/wishbone/wishbone_pkg.vhd
new file mode 100644
index 0000000..c3b0d9b
--- /dev/null
+++ b/zpu/hdl/wishbone/wishbone_pkg.vhd
@@ -0,0 +1,52 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+package wishbone_pkg is
+
+ type wishbone_bus_in is record
+ adr : std_logic_vector(31 downto 0);
+ sel : std_logic_vector(3 downto 0);
+ we : std_logic;
+ dat : std_logic_vector(31 downto 0); -- Note! Data written with 'we'
+ cyc : std_logic;
+ stb : std_logic;
+ end record;
+
+ type wishbone_bus_out is record
+ dat : std_logic_vector(31 downto 0);
+ ack : std_logic;
+ end record;
+
+ type wishbone_bus is record
+ insig : wishbone_bus_in;
+ outsig : wishbone_bus_out;
+ end record;
+
+ component atomic32_access is
+ port ( cpu_clk : in std_logic;
+ areset : in std_logic;
+
+ -- Wishbone from CPU interface
+ wb_16_i : in wishbone_bus_in;
+ wb_16_o : out wishbone_bus_out;
+ -- Wishbone to FPGA registers and ethernet core
+ wb_32_i : in wishbone_bus_out;
+ wb_32_o : out wishbone_bus_in);
+ end component;
+
+ component eth_access_corr is
+ port ( cpu_clk : in std_logic;
+ areset : in std_logic;
+
+ -- Wishbone from Wishbone MUX
+ eth_raw_o : out wishbone_bus_out;
+ eth_raw_i : in wishbone_bus_in;
+
+ -- Wishbone ethernet core
+ eth_slave_i : in wishbone_bus_out;
+ eth_slave_o : out wishbone_bus_in);
+ end component;
+
+
+end wishbone_pkg;
diff --git a/zpu/hdl/wishbone/zpu_system.vhd b/zpu/hdl/wishbone/zpu_system.vhd
new file mode 100644
index 0000000..6e79370
--- /dev/null
+++ b/zpu/hdl/wishbone/zpu_system.vhd
@@ -0,0 +1,71 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.all;
+
+library work;
+use work.wishbone_pkg.all;
+use work.zpupkg.all;
+use work.zpu_config.all;
+use work.ic300pkg.all;
+
+entity zpu_system is
+ generic(
+ simulate : boolean := false);
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+
+ -- ZPU Control signals
+ enable : in std_logic;
+ interrupt : in std_logic;
+
+ zpu_status : out std_logic_vector(63 downto 0);
+
+ -- wishbone interfaces
+ zpu_wb_i : in wishbone_bus_out;
+ zpu_wb_o : out wishbone_bus_in);
+end zpu_system;
+
+architecture behave of zpu_system is
+
+signal mem_req : std_logic;
+signal mem_we : std_logic;
+signal mem_ack : std_logic;
+signal mem_read : std_logic_vector(wordSize-1 downto 0);
+signal mem_write : std_logic_vector(wordSize-1 downto 0);
+signal out_mem_addr : std_logic_vector(maxAddrBitIncIO downto 0);
+signal mem_writeMask : std_logic_vector(wordBytes-1 downto 0);
+
+
+begin
+
+ my_zpu_core:
+ zpu_core port map (
+ clk => cpu_clk,
+ areset => areset,
+ enable => enable,
+ mem_req => mem_req,
+ mem_we => mem_we,
+ mem_ack => mem_ack,
+ mem_read => mem_read,
+ mem_write => mem_write,
+ out_mem_addr => out_mem_addr,
+ mem_writeMask => mem_writeMask,
+ interrupt => interrupt,
+ zpu_status => zpu_status,
+ break => open);
+
+ my_zpu_wb_bridge:
+ zpu_wb_bridge port map (
+ clk => cpu_clk,
+ areset => areset,
+ mem_req => mem_req,
+ mem_we => mem_we,
+ mem_ack => mem_ack,
+ mem_read => mem_read,
+ mem_write => mem_write,
+ out_mem_addr => out_mem_addr,
+ mem_writeMask => mem_writeMask,
+ zpu_wb_i => zpu_wb_i,
+ zpu_wb_o => zpu_wb_o);
+
+end behave;
diff --git a/zpu/hdl/wishbone/zpu_wb_bridge.vhd b/zpu/hdl/wishbone/zpu_wb_bridge.vhd
new file mode 100644
index 0000000..4182f7a
--- /dev/null
+++ b/zpu/hdl/wishbone/zpu_wb_bridge.vhd
@@ -0,0 +1,49 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library work;
+use work.phi_config.all;
+use work.wishbone_pkg.all;
+use work.zpupkg.all;
+use work.zpu_config.all;
+
+entity zpu_wb_bridge is
+ port ( -- Native ZPU interface
+ clk : in std_logic;
+ areset : in std_logic;
+
+ mem_req : in std_logic;
+ mem_we : in std_logic;
+ mem_ack : out std_logic;
+ mem_read : out std_logic_vector(wordSize-1 downto 0);
+ mem_write : in std_logic_vector(wordSize-1 downto 0);
+ out_mem_addr : in std_logic_vector(maxAddrBitIncIO downto 0);
+ mem_writeMask : in std_logic_vector(wordBytes-1 downto 0);
+
+ -- Wishbone from ZPU
+ zpu_wb_i : in wishbone_bus_out;
+ zpu_wb_o : out wishbone_bus_in);
+
+end zpu_wb_bridge;
+
+architecture behave of zpu_wb_bridge is
+
+begin
+
+ mem_read <= zpu_wb_i.dat;
+ mem_ack <= zpu_wb_i.ack;
+
+ zpu_wb_o.adr <= "000000" & out_mem_addr(27) & out_mem_addr(24 downto 0);
+ zpu_wb_o.dat <= mem_write;
+ zpu_wb_o.sel <= mem_writeMask;
+ zpu_wb_o.stb <= mem_req;
+ zpu_wb_o.cyc <= mem_req;
+ zpu_wb_o.we <= mem_we;
+
+end behave;
+
+
+
+
+
diff --git a/zpu/hdl/zpu3/src/.cvsignore b/zpu/hdl/zpu3/src/.cvsignore
new file mode 100644
index 0000000..760be11
--- /dev/null
+++ b/zpu/hdl/zpu3/src/.cvsignore
@@ -0,0 +1 @@
+xilinx_device_details.xml
diff --git a/zpu/hdl/zpu3/src/build.xml b/zpu/hdl/zpu3/src/build.xml
new file mode 100644
index 0000000..e1b268a
--- /dev/null
+++ b/zpu/hdl/zpu3/src/build.xml
@@ -0,0 +1,114 @@
+<!--
+
+FIX!!! start /b /wait /belownormal does not propagate return code..
+-->
+<project name="ZPU3" default="all" basedir=".">
+ <property name="chipname" value="ic300"/>
+ <property name="packagetype" value="xc3s400-ft256-4"/>
+
+
+ <description>eCosBoard firmware build file</description>
+
+ <target name="setuplibs">
+ <!-- N/A yet
+ <copy todir="../src">
+ <fileset dir="..\fpgalib\" includes="foo_top.ngc" />
+ </copy>
+ -->
+ </target>
+
+ <target name="setup">
+ <mkdir dir="..\reports"/>
+ <mkdir dir="..\syn"/>
+ <mkdir dir="..\ngo"/>
+ <mkdir dir="..\output"/>
+ <mkdir dir="..\tmp"/>
+ <mkdir dir="..\xst"/>
+ </target>
+
+ <target name="clean">
+ <delete dir="..\reports"/>
+ <delete dir="..\syn"/>
+ <delete dir="..\ngo"/>
+ <delete dir="..\output"/>
+ <delete dir="..\tmp"/>
+ <delete dir="..\xst"/>
+ </target>
+
+ <target name="synthesis" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c xst -intstyle ise -ifn xmake.xst -ofn ..\reports\1_synthesis.txt"/>
+ </exec>
+ </target>
+
+
+ <target name="translate" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c ngdbuild -intstyle ise -dd ..\ngo -uc ${chipname}.ucf -a -p ${packagetype} ..\syn\${chipname}.ngc ..\ngo\${chipname}.ngd"/>
+ </exec>
+ <move tofile="..\reports\2_translate.txt">
+ <fileset dir="..\ngo" includes="${chipname}.bld"/>
+ </move>
+ </target>
+
+ <target name="mapping" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c map -intstyle ise -p ${packagetype} -ol high -timing -detail -cm area -ignore_keep_hierarchy -pr b -k 6 -r -c 100 -tx off -o ..\ngo\${chipname}_map.ncd ..\ngo\${chipname}.ngd ..\ngo\${chipname}.pcf"/>
+ </exec>
+ <move tofile="..\reports\3_mapping.txt">
+ <fileset dir="..\ngo" includes="${chipname}_map.mrp"/>
+ </move>
+ </target>
+
+
+ <target name="placeandroute" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c par -w -intstyle ise -ol high -t 1 ..\ngo\${chipname}_map.ncd ..\ngo\${chipname}.ncd ..\ngo\${chipname}.pcf"/>
+ </exec>
+ <move tofile="..\reports\4_placeandroute.txt">
+ <fileset dir="..\ngo" includes="${chipname}.par"/>
+ </move>
+ <move tofile="..\reports\5_pads.txt">
+ <fileset dir="..\ngo" includes="${chipname}_pad.txt"/>
+ </move>
+ </target>
+
+
+ <target name="gentime" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c trce -intstyle ise -v 3 -l 3 -a -u 100 ..\ngo\${chipname}.ncd -o ..\reports\timing.twr ..\ngo\${chipname}.pcf"/>
+ </exec>
+ <delete file="..\reports\6_timing.txt"/>
+ <move tofile="..\reports\6_timing.txt">
+ <fileset dir="..\reports" includes="timing.twr"/>
+ </move>
+ </target>
+
+
+ <target name="genbit" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c bitgen -intstyle ise -w -f ${chipname}.bitgen ..\ngo\${chipname}.ncd"/>
+ </exec>
+ <move tofile="..\reports\7_bitgen.txt">
+ <fileset dir="..\ngo" includes="${chipname}.bgn"/>
+ </move>
+ </target>
+
+ <target name="copyfiles" depends="setup">
+ <copy todir="../output">
+ <fileset dir="..\ngo" includes="${chipname}.bin"/>
+ </copy>
+ <!--
+ <copy tofile="${workspace_loc}\firmware\board\xeddvifpgadata.rawdata">
+ <fileset dir="..\ngo" includes="${chipname}.bin"/>
+ </copy>
+ -->
+ </target>
+
+
+ <target name="all" depends="setuplibs,synthesis,translate,mapping,placeandroute,gentime,genbit,copyfiles">
+
+ </target>
+
+
+</project> \ No newline at end of file
diff --git a/zpu/hdl/zpu3/src/clocks.vhd b/zpu/hdl/zpu3/src/clocks.vhd
new file mode 100644
index 0000000..a352b3c
--- /dev/null
+++ b/zpu/hdl/zpu3/src/clocks.vhd
@@ -0,0 +1,246 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library UNISIM;
+use UNISIM.vcomponents.all;
+
+entity clocks is
+ port ( areset : in std_logic;
+ cpu_clk_p : in std_logic;
+ sdr_clk_fb_p : in std_logic;
+ cpu_clk : out std_logic;
+ cpu_clk_2x : out std_logic;
+ cpu_clk_4x : out std_logic;
+ ddr_in_clk : out std_logic;
+ ddr_in_clk_2x : out std_logic;
+ locked : out std_logic_vector(2 downto 0));
+end clocks;
+
+architecture behave of clocks is
+
+signal low : std_logic;
+
+signal cpu_clk_in : std_logic;
+signal sdr_clk_fb_in : std_logic;
+
+signal dcm_cpu1 : std_logic;
+signal dcm_cpu2 : std_logic;
+signal dcm_cpu2_dum : std_logic;
+signal dcm_cpu4 : std_logic;
+signal dcm_ddr2 : std_logic;
+signal dcm_ddr2_2x : std_logic;
+
+signal cpu_clk_int : std_logic;
+signal cpu_clk_2x_int : std_logic;
+signal cpu_clk_2x_dum_int : std_logic;
+signal cpu_clk_4x_int : std_logic;
+signal ddr_in_clk_int : std_logic;
+signal ddr_in_clk_2x_int : std_logic;
+
+signal dcm1_locked_del : std_logic;
+signal dcm2_locked_del : std_logic;
+signal dcm2_reset : std_logic;
+signal dcm3_reset : std_logic;
+
+signal locked_int : std_logic_vector(2 downto 0);
+signal del_addr : std_logic_vector(3 downto 0);
+
+begin
+
+ low <= '0';
+ del_addr <= "1111";
+
+ cpu_clk <= cpu_clk_int;
+ cpu_clk_2x <= cpu_clk_2x_int;
+ cpu_clk_4x <= cpu_clk_4x_int;
+ ddr_in_clk <= ddr_in_clk_int;
+ ddr_in_clk_2x <= ddr_in_clk_2x_int;
+ locked <= locked_int;
+
+
+ CPU_IBUFG:
+ IBUFG port map (
+ O => cpu_clk_in,
+ I => cpu_clk_p);
+
+ SDR_FB_IBUFG:
+ IBUFG port map (
+ O => sdr_clk_fb_in,
+ I => sdr_clk_fb_p);
+
+ dcm2_rst:
+ SRL16 generic map (
+ INIT => X"0000")
+ port map (
+ Q => dcm1_locked_del,
+ A0 => del_addr(0),
+ A1 => del_addr(1),
+ A2 => del_addr(2),
+ A3 => del_addr(3),
+ CLK => cpu_clk_int,
+ D => locked_int(0));
+
+ dcm2_reset <= not(dcm1_locked_del);
+
+ dcm3_rst:
+ SRL16 generic map (
+ INIT => X"0000")
+ port map (
+ Q => dcm2_locked_del,
+ A0 => del_addr(0),
+ A1 => del_addr(1),
+ A2 => del_addr(2),
+ A3 => del_addr(3),
+ CLK => cpu_clk_int,
+ D => locked_int(1));
+
+ dcm3_reset <= not(dcm2_locked_del);
+
+ cpu1_dcm:
+ DCM generic map (
+ CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
+ -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
+ CLKFX_DIVIDE => 1, -- Can be any interger from 1 to 32
+ CLKFX_MULTIPLY => 4, -- Can be any integer from 1 to 32
+ CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
+ CLKIN_PERIOD => 15.625, -- Specify period of input clock
+ CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift of NONE, FIXED or VARIABLE
+ CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE, 1X or 2X
+ DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
+ -- an integer from 0 to 15
+ DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency synthesis
+ DLL_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for DLL
+ DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
+ FACTORY_JF => X"8080", -- FACTORY JF Values
+ PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 255
+ STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
+ port map (
+ CLK0 => dcm_cpu1, -- 0 degree DCM CLK ouptput
+ CLK180 => open, -- 180 degree DCM CLK output
+ CLK270 => open, -- 270 degree DCM CLK output
+ CLK2X => dcm_cpu2, -- 2X DCM CLK output
+ CLK2X180 => open, -- 2X, 180 degree DCM CLK out
+ CLK90 => open, -- 90 degree DCM CLK output
+ CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE)
+ CLKFX => open, -- DCM CLK synthesis out (M/D)
+ CLKFX180 => open, -- 180 degree CLK synthesis out
+ LOCKED => locked_int(0), -- DCM LOCK status output
+ PSDONE => open, -- Dynamic phase adjust done output
+ STATUS => open, -- 8-bit DCM status bits output
+ CLKFB => cpu_clk_int, -- DCM clock feedback
+ CLKIN => cpu_clk_in, -- Clock input (from IBUFG, BUFG or DCM)
+ PSCLK => low, -- Dynamic phase adjust clock input
+ PSEN => low, -- Dynamic phase adjust enable input
+ PSINCDEC => low, -- Dynamic phase adjust increment/decrement
+ RST => areset); -- DCM asynchronous reset input
+
+ cpu2_dcm:
+ DCM generic map (
+ CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
+ -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
+ CLKFX_DIVIDE => 1, -- Can be any interger from 1 to 32
+ CLKFX_MULTIPLY => 4, -- Can be any integer from 1 to 32
+ CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
+ CLKIN_PERIOD => 7.8125, -- Specify period of input clock
+ CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift of NONE, FIXED or VARIABLE
+ CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE, 1X or 2X
+ DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
+ -- an integer from 0 to 15
+ DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency synthesis
+ DLL_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for DLL
+ DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
+ FACTORY_JF => X"8080", -- FACTORY JF Values
+ PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 255
+ STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
+ port map (
+ CLK0 => dcm_cpu2_dum, -- 0 degree DCM CLK ouptput
+ CLK180 => open, -- 180 degree DCM CLK output
+ CLK270 => open, -- 270 degree DCM CLK output
+ CLK2X => dcm_cpu4, -- 2X DCM CLK output
+ CLK2X180 => open, -- 2X, 180 degree DCM CLK out
+ CLK90 => open, -- 90 degree DCM CLK output
+ CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE)
+ CLKFX => open, -- DCM CLK synthesis out (M/D)
+ CLKFX180 => open, -- 180 degree CLK synthesis out
+ LOCKED => locked_int(1), -- DCM LOCK status output
+ PSDONE => open, -- Dynamic phase adjust done output
+ STATUS => open, -- 8-bit DCM status bits output
+ CLKFB => cpu_clk_2x_dum_int, -- DCM clock feedback
+ CLKIN => cpu_clk_2x_int, -- Clock input (from IBUFG, BUFG or DCM)
+ PSCLK => low, -- Dynamic phase adjust clock input
+ PSEN => low, -- Dynamic phase adjust enable input
+ PSINCDEC => low, -- Dynamic phase adjust increment/decrement
+ RST => dcm2_reset); -- DCM asynchronous reset input
+
+ ddr_read_dcm:
+ DCM generic map (
+ CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
+ -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
+ CLKFX_DIVIDE => 1, -- Can be any interger from 1 to 32
+ CLKFX_MULTIPLY => 4, -- Can be any integer from 1 to 32
+ CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
+ CLKIN_PERIOD => 7.8125, -- Specify period of input clock
+ CLKOUT_PHASE_SHIFT => "FIXED", -- Specify phase shift of NONE, FIXED or VARIABLE
+-- CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift of NONE, FIXED or VARIABLE
+ CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE, 1X or 2X
+ DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
+ -- an integer from 0 to 15
+ DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency synthesis
+ DLL_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for DLL
+ DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
+ FACTORY_JF => X"8080", -- FACTORY JF Values
+ PHASE_SHIFT => 103, -- Amount of fixed phase shift from -255 to 255
+-- PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 255
+ STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
+ port map (
+ CLK0 => dcm_ddr2, -- 0 degree DCM CLK ouptput
+ CLK180 => open, -- 180 degree DCM CLK output
+ CLK270 => open, -- 270 degree DCM CLK output
+ CLK2X => dcm_ddr2_2x, -- 2X DCM CLK output
+ CLK2X180 => open, -- 2X, 180 degree DCM CLK out
+ CLK90 => open, -- 90 degree DCM CLK output
+ CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE)
+ CLKFX => open, -- DCM CLK synthesis out (M/D)
+ CLKFX180 => open, -- 180 degree CLK synthesis out
+ LOCKED => locked_int(2), -- DCM LOCK status output
+ PSDONE => open, -- Dynamic phase adjust done output
+ STATUS => open, -- 8-bit DCM status bits output
+ CLKFB => ddr_in_clk_int, -- DCM clock feedback
+ CLKIN => sdr_clk_fb_in, -- Clock input (from IBUFG, BUFG or DCM)
+ PSCLK => low, -- Dynamic phase adjust clock input
+ PSEN => low, -- Dynamic phase adjust enable input
+ PSINCDEC => low, -- Dynamic phase adjust increment/decrement
+ RST => dcm3_reset); -- DCM asynchronous reset input
+
+ cpu1:
+ BUFG port map (
+ I => dcm_cpu1,
+ O => cpu_clk_int);
+
+ cpu2:
+ BUFG port map (
+ I => dcm_cpu2,
+ O => cpu_clk_2x_int);
+
+ cpu2_dum:
+ BUFG port map (
+ I => dcm_cpu2_dum,
+ O => cpu_clk_2x_dum_int);
+
+ cpu4:
+ BUFG port map (
+ I => dcm_cpu4,
+ O => cpu_clk_4x_int);
+
+ ddr_clk:
+ BUFG port map (
+ I => dcm_ddr2,
+ O => ddr_in_clk_int);
+
+ ddr_clk_2x:
+ BUFG port map (
+ I => dcm_ddr2_2x,
+ O => ddr_in_clk_2x_int);
+
+end behave; \ No newline at end of file
diff --git a/zpu/hdl/zpu3/src/ddr_bridge.vhd b/zpu/hdl/zpu3/src/ddr_bridge.vhd
new file mode 100644
index 0000000..7dece76
--- /dev/null
+++ b/zpu/hdl/zpu3/src/ddr_bridge.vhd
@@ -0,0 +1,203 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library UNISIM;
+use UNISIM.vcomponents.all;
+
+library zylin;
+use zylin.ddr.all;
+
+library work;
+use work.phi_config.all;
+
+entity ddr_bridge is
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ cpu_clk_2x : in std_logic;
+ cpu_clk_4x : in std_logic;
+ ddr_in_clk : in std_logic;
+ ddr_in_clk_2x : in std_logic;
+
+ cpu_we : in std_logic_vector(1 downto 0);
+ cpu_re : in std_logic;
+ cpu_din : in std_logic_vector(15 downto 0);
+ cpu_a : in std_logic_vector(20 downto 0);
+ cpu_dout : inout std_logic_vector(15 downto 0);
+
+ sdr_clk_p : out std_logic; -- ddr_sdram_clock
+ sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
+ cke_q_p : out std_logic; -- clock enable
+ cs_qn_p : out std_logic; -- /chip select
+ ras_qn_p : inout std_logic; -- /ras
+ cas_qn_p : inout std_logic; -- /cas
+ we_qn_p : inout std_logic; -- /write enable
+ dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
+ dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
+ ba_q_p : out std_logic_vector(1 downto 0); -- bank select
+ sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
+ sdr_d_p : inout std_logic_vector(15 downto 0)); -- bidir data bus
+end ddr_bridge;
+
+architecture behave of ddr_bridge is
+
+signal refresh_en : std_logic;
+signal ddr_command_we : std_logic;
+signal ddr_command : std_logic_vector(15 downto 0);
+
+signal ddr_req : std_logic;
+signal ddr_req_adr : std_logic_vector(23 downto 1);
+signal ddr_rd_wr_n : std_logic;
+signal ddr_req_len : std_logic;
+
+signal ddr_read_en : std_logic;
+signal ddr_write_en : std_logic;
+signal ddr_data_read : std_logic_vector(31 downto 0);
+signal ddr_data_write : std_logic_vector(35 downto 0);
+
+signal ddr_read_smp : std_logic_vector(31 downto 0);
+signal ddr_read_delay : std_logic_vector(15 downto 0);
+
+signal ddr_write_smp : std_logic_vector(15 downto 0);
+signal ddr_addr_smp : std_logic_vector(15 downto 0);
+
+signal ddr_req_type_smp : std_logic;
+signal ddr_req_on : std_logic;
+signal ddr_req_off : std_logic;
+signal ddr_req_int : std_logic;
+
+constant Sim_Delay : time := 1.0 ns;
+
+begin
+
+ ddr_req_len <= '0';
+ ddr_data_write <= "0000" & ddr_write_smp & ddr_write_smp;
+ ddr_req_adr <= "0000000" & ddr_addr_smp;
+ ddr_rd_wr_n <= ddr_req_type_smp;
+ ddr_req <= ddr_req_int;
+
+ process(cpu_clk, areset) -- CPU writeable registers
+ begin
+ if areset = '1' then
+ refresh_en <= '0';
+ ddr_command_we <= '0';
+ ddr_command <= "0000000000000000";
+ ddr_write_smp <= "0000000000000000";
+ ddr_req_type_smp <= '0';
+ ddr_req_on <= '0';
+ elsif (cpu_clk'event and cpu_clk = '1') then
+
+ if cpu_we(0) = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Ctrl_Reg_Addr then
+ refresh_en <= cpu_din(0);
+ else
+ refresh_en <= refresh_en;
+ end if;
+
+ if cpu_we(0) = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Mode_Reg_Addr then
+ ddr_command <= cpu_din;
+ ddr_command_we <= '1';
+ else
+ ddr_command <= ddr_command;
+ ddr_command_we <= '0';
+ end if;
+
+ if cpu_we(0) = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Data_Reg_Addr then
+ ddr_write_smp <= cpu_din;
+ else
+ ddr_write_smp <= ddr_write_smp;
+ end if;
+
+ if cpu_we(0) = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Addr_Reg_Addr then
+ ddr_addr_smp <= cpu_din;
+ else
+ ddr_addr_smp <= ddr_addr_smp;
+ end if;
+
+ if cpu_we(0) = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Req_Reg_Addr then
+ ddr_req_type_smp <= cpu_din(0);
+ ddr_req_on <= '1';
+ else
+ ddr_req_type_smp <= ddr_req_type_smp;
+ ddr_req_on <= '0';
+ end if;
+
+ end if;
+ end process;
+
+ -- CPU readable registers
+ cpu_dout <= ddr_read_delay when (cpu_re = '1' and cpu_a(19 downto 17) = Fpga_DDR_Ctrl_Base and cpu_a(3 downto 1) = DDR_Data_Reg_Addr) else "ZZZZZZZZZZZZZZZZ";
+
+ -- Capture data read from DDR
+ process(cpu_clk_2x, areset)
+ begin
+ if areset = '1' then
+ ddr_read_smp <= (others => '0');
+ elsif (cpu_clk_2x'event and cpu_clk_2x = '1') then
+ if ddr_read_en = '1' then
+ ddr_read_smp <= ddr_data_read after Sim_Delay;
+ else
+ ddr_read_smp <= ddr_read_smp after Sim_Delay;
+ end if;
+ end if;
+ end process;
+
+ -- Move captured data from DDR to cpu_clk domain (for better routing timing)
+ process(cpu_clk, areset)
+ begin
+ if areset = '1' then
+ ddr_read_delay <= "0000000000000000";
+ elsif (cpu_clk'event and cpu_clk = '1') then
+ ddr_read_delay <= ddr_read_smp(15 downto 0);
+ end if;
+ end process;
+
+ process(cpu_clk_2x, areset)
+ begin
+ if areset = '1' then
+ ddr_req_int <= '0';
+ elsif (cpu_clk_2x'event and cpu_clk_2x = '1') then
+ if ddr_req_on = '1' then
+ ddr_req_int <= '1' after Sim_Delay;
+ elsif ddr_read_en = '1' or ddr_write_en = '1' then
+ ddr_req_int <= '0' after Sim_Delay;
+ else
+ ddr_req_int <= ddr_req_int after Sim_Delay;
+ end if;
+ end if;
+ end process;
+
+
+ ddr_interface:
+ ddr_top port map(
+ areset => areset,
+ cpu_clk => cpu_clk,
+ cpu_clk_2x => cpu_clk_2x,
+ cpu_clk_4x => cpu_clk_4x,
+ ddr_in_clk => ddr_in_clk,
+ ddr_in_clk_2x => ddr_in_clk_2x,
+ ddr_command => ddr_command,
+ ddr_command_we => ddr_command_we,
+ refresh_en => refresh_en,
+ ddr_data_read => ddr_data_read,
+ ddr_data_write => ddr_data_write,
+ ddr_req => ddr_req,
+ ddr_req_adr => ddr_req_adr,
+ ddr_rd_wr_n => ddr_rd_wr_n,
+ ddr_req_len => ddr_req_len,
+ ddr_read_en => ddr_read_en,
+ ddr_write_en => ddr_write_en,
+ sdr_clk_p => sdr_clk_p,
+ sdr_clk_n_p => sdr_clk_n_p,
+ cke_q_p => cke_q_p,
+ cs_qn_p => cs_qn_p,
+ ras_qn_p => ras_qn_p,
+ cas_qn_p => cas_qn_p,
+ we_qn_p => we_qn_p,
+ dm_q_p => dm_q_p,
+ dqs_q_p => dqs_q_p,
+ ba_q_p => ba_q_p,
+ sdr_a_p => sdr_a_p,
+ sdr_d_p => sdr_d_p);
+
+
+end behave;
diff --git a/zpu/hdl/zpu3/src/dmips_ram.vhd b/zpu/hdl/zpu3/src/dmips_ram.vhd
new file mode 100644
index 0000000..f472653
--- /dev/null
+++ b/zpu/hdl/zpu3/src/dmips_ram.vhd
@@ -0,0 +1,3824 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+entity dualport_ram is
+port (clk : in std_logic;
+ memAWriteEnable : in std_logic;
+ memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memAWrite : in std_logic_vector(wordSize-1 downto 0);
+ memARead : out std_logic_vector(wordSize-1 downto 0);
+ memBWriteEnable : in std_logic;
+ memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memBWrite : in std_logic_vector(wordSize-1 downto 0);
+ memBRead : out std_logic_vector(wordSize-1 downto 0));
+end dualport_ram;
+
+architecture dualport_ram_arch of dualport_ram is
+
+
+type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
+
+shared variable ram : ram_type :=
+(
+0 => x"800b0b0b",
+1 => x"0b0b8070",
+2 => x"0b0b80e5",
+3 => x"d00c3a0b",
+4 => x"0b0bbed7",
+5 => x"04000000",
+6 => x"00000000",
+7 => x"00000000",
+8 => x"80088408",
+9 => x"88080b0b",
+10 => x"0bbfa72d",
+11 => x"880c840c",
+12 => x"800c0400",
+13 => x"00000000",
+14 => x"00000000",
+15 => x"00000000",
+16 => x"71fd0608",
+17 => x"72830609",
+18 => x"81058205",
+19 => x"832b2a83",
+20 => x"ffff0652",
+21 => x"0b0b0400",
+22 => x"00000000",
+23 => x"00000000",
+24 => x"71fd0608",
+25 => x"83ffff73",
+26 => x"83060981",
+27 => x"05820583",
+28 => x"2b2b0906",
+29 => x"7383ffff",
+30 => x"0b0b0b0b",
+31 => x"83a70400",
+32 => x"72098105",
+33 => x"72057373",
+34 => x"09060906",
+35 => x"73097306",
+36 => x"070a8106",
+37 => x"530b0b51",
+38 => x"04000000",
+39 => x"00000000",
+40 => x"72722473",
+41 => x"732e0753",
+42 => x"0b0b5104",
+43 => x"00000000",
+44 => x"00000000",
+45 => x"00000000",
+46 => x"00000000",
+47 => x"00000000",
+48 => x"71737109",
+49 => x"71068106",
+50 => x"30720a10",
+51 => x"0a720a10",
+52 => x"0a31050a",
+53 => x"81065151",
+54 => x"530b0b51",
+55 => x"04000000",
+56 => x"72722673",
+57 => x"732e0753",
+58 => x"0b0b5104",
+59 => x"00000000",
+60 => x"00000000",
+61 => x"00000000",
+62 => x"00000000",
+63 => x"00000000",
+64 => x"00000000",
+65 => x"00000000",
+66 => x"00000000",
+67 => x"00000000",
+68 => x"00000000",
+69 => x"00000000",
+70 => x"00000000",
+71 => x"00000000",
+72 => x"0b0b0b88",
+73 => x"c6040000",
+74 => x"00000000",
+75 => x"00000000",
+76 => x"00000000",
+77 => x"00000000",
+78 => x"00000000",
+79 => x"00000000",
+80 => x"720a722b",
+81 => x"0a530b0b",
+82 => x"51040000",
+83 => x"00000000",
+84 => x"00000000",
+85 => x"00000000",
+86 => x"00000000",
+87 => x"00000000",
+88 => x"72729f06",
+89 => x"0981050b",
+90 => x"0b0b88a7",
+91 => x"05040000",
+92 => x"00000000",
+93 => x"00000000",
+94 => x"00000000",
+95 => x"00000000",
+96 => x"72722aff",
+97 => x"739f062a",
+98 => x"0974090a",
+99 => x"8106ff05",
+100 => x"0607530b",
+101 => x"0b510400",
+102 => x"00000000",
+103 => x"00000000",
+104 => x"7171530b",
+105 => x"0b510406",
+106 => x"73830609",
+107 => x"81058205",
+108 => x"832b0b2b",
+109 => x"0772fc06",
+110 => x"0c515104",
+111 => x"00000000",
+112 => x"72098105",
+113 => x"72050970",
+114 => x"81050906",
+115 => x"0a810653",
+116 => x"0b0b5104",
+117 => x"00000000",
+118 => x"00000000",
+119 => x"00000000",
+120 => x"72098105",
+121 => x"72050970",
+122 => x"81050906",
+123 => x"0a098106",
+124 => x"530b0b51",
+125 => x"04000000",
+126 => x"00000000",
+127 => x"00000000",
+128 => x"71098105",
+129 => x"520b0b04",
+130 => x"00000000",
+131 => x"00000000",
+132 => x"00000000",
+133 => x"00000000",
+134 => x"00000000",
+135 => x"00000000",
+136 => x"72720981",
+137 => x"0505530b",
+138 => x"0b510400",
+139 => x"00000000",
+140 => x"00000000",
+141 => x"00000000",
+142 => x"00000000",
+143 => x"00000000",
+144 => x"72097206",
+145 => x"73730906",
+146 => x"07530b0b",
+147 => x"51040000",
+148 => x"00000000",
+149 => x"00000000",
+150 => x"00000000",
+151 => x"00000000",
+152 => x"71fc0608",
+153 => x"72830609",
+154 => x"81058305",
+155 => x"1010102a",
+156 => x"81ff0652",
+157 => x"0b0b0400",
+158 => x"00000000",
+159 => x"00000000",
+160 => x"71fc0608",
+161 => x"0b0b80e5",
+162 => x"bc738306",
+163 => x"10100508",
+164 => x"060b0b0b",
+165 => x"88ac0400",
+166 => x"00000000",
+167 => x"00000000",
+168 => x"80088408",
+169 => x"88087575",
+170 => x"0b0b0ba3",
+171 => x"fa2d5050",
+172 => x"80085688",
+173 => x"0c840c80",
+174 => x"0c510400",
+175 => x"00000000",
+176 => x"80088408",
+177 => x"88087575",
+178 => x"0b0b0ba4",
+179 => x"ca2d5050",
+180 => x"80085688",
+181 => x"0c840c80",
+182 => x"0c510400",
+183 => x"00000000",
+184 => x"72097081",
+185 => x"0509060a",
+186 => x"8106ff05",
+187 => x"70540b0b",
+188 => x"71067309",
+189 => x"727405ff",
+190 => x"05060751",
+191 => x"51510400",
+192 => x"72097081",
+193 => x"0509060a",
+194 => x"098106ff",
+195 => x"0570540b",
+196 => x"0b710673",
+197 => x"09727405",
+198 => x"ff050607",
+199 => x"51515104",
+200 => x"05ff0504",
+201 => x"00000000",
+202 => x"00000000",
+203 => x"00000000",
+204 => x"00000000",
+205 => x"00000000",
+206 => x"00000000",
+207 => x"00000000",
+208 => x"810b0b0b",
+209 => x"80e5cc0c",
+210 => x"51040000",
+211 => x"00000000",
+212 => x"00000000",
+213 => x"00000000",
+214 => x"00000000",
+215 => x"00000000",
+216 => x"71810552",
+217 => x"0b0b0400",
+218 => x"00000000",
+219 => x"00000000",
+220 => x"00000000",
+221 => x"00000000",
+222 => x"00000000",
+223 => x"00000000",
+224 => x"00000000",
+225 => x"00000000",
+226 => x"00000000",
+227 => x"00000000",
+228 => x"00000000",
+229 => x"00000000",
+230 => x"00000000",
+231 => x"00000000",
+232 => x"02840572",
+233 => x"10100552",
+234 => x"0b0b0400",
+235 => x"00000000",
+236 => x"00000000",
+237 => x"00000000",
+238 => x"00000000",
+239 => x"00000000",
+240 => x"00000000",
+241 => x"00000000",
+242 => x"00000000",
+243 => x"00000000",
+244 => x"00000000",
+245 => x"00000000",
+246 => x"00000000",
+247 => x"00000000",
+248 => x"717105ff",
+249 => x"0571530b",
+250 => x"0b510400",
+251 => x"00000000",
+252 => x"00000000",
+253 => x"00000000",
+254 => x"00000000",
+255 => x"00000000",
+256 => x"84803f80",
+257 => x"cef23f04",
+258 => x"10101010",
+259 => x"10101010",
+260 => x"10101010",
+261 => x"10101010",
+262 => x"10101010",
+263 => x"10101010",
+264 => x"10101010",
+265 => x"10101053",
+266 => x"0b0b5104",
+267 => x"7381ff06",
+268 => x"73830609",
+269 => x"81058305",
+270 => x"1010102b",
+271 => x"0772fc06",
+272 => x"0c515104",
+273 => x"3c047272",
+274 => x"80728106",
+275 => x"ff050972",
+276 => x"06057110",
+277 => x"520b0b72",
+278 => x"0a100a53",
+279 => x"0b0b72e9",
+280 => x"38515153",
+281 => x"0b0b5104",
+282 => x"70700b0b",
+283 => x"80f5c008",
+284 => x"520b0b84",
+285 => x"0b720508",
+286 => x"70810651",
+287 => x"510b0b70",
+288 => x"f2387108",
+289 => x"81ff0680",
+290 => x"0c505004",
+291 => x"70700b0b",
+292 => x"80f5c008",
+293 => x"520b0b84",
+294 => x"0b720508",
+295 => x"700a100a",
+296 => x"70810651",
+297 => x"51510b0b",
+298 => x"70ed3873",
+299 => x"720c5050",
+300 => x"0480e5cc",
+301 => x"08802ea8",
+302 => x"38838080",
+303 => x"0b0b0b80",
+304 => x"f5c00c82",
+305 => x"a0800b0b",
+306 => x"0b80f5c4",
+307 => x"0c829080",
+308 => x"0b80f5d4",
+309 => x"0c0b0b80",
+310 => x"f5c80b80",
+311 => x"f5d80c04",
+312 => x"f8808080",
+313 => x"a40b0b0b",
+314 => x"80f5c00c",
+315 => x"f8808082",
+316 => x"800b0b0b",
+317 => x"80f5c40c",
+318 => x"f8808084",
+319 => x"800b80f5",
+320 => x"d40cf880",
+321 => x"8080940b",
+322 => x"80f5d80c",
+323 => x"f8808080",
+324 => x"9c0b80f5",
+325 => x"d00cf880",
+326 => x"8080a00b",
+327 => x"80f5dc0c",
+328 => x"04f23d0d",
+329 => x"600b0b80",
+330 => x"f5c40856",
+331 => x"5d82750c",
+332 => x"8059805a",
+333 => x"800b8f3d",
+334 => x"71101017",
+335 => x"70085957",
+336 => x"5d5b8076",
+337 => x"81ff067c",
+338 => x"832b5658",
+339 => x"520b0b0b",
+340 => x"76530b0b",
+341 => x"7b5198c6",
+342 => x"3f7d7f7a",
+343 => x"72077c72",
+344 => x"07717160",
+345 => x"8105415f",
+346 => x"5d5b5957",
+347 => x"557a8724",
+348 => x"80c1380b",
+349 => x"0b80f5c4",
+350 => x"087b1010",
+351 => x"71057008",
+352 => x"58515580",
+353 => x"7681ff06",
+354 => x"7c832b56",
+355 => x"58520b0b",
+356 => x"0b76530b",
+357 => x"0b7b5198",
+358 => x"853f7d7f",
+359 => x"7a72077c",
+360 => x"72077171",
+361 => x"60810541",
+362 => x"5f5d5b59",
+363 => x"5755877b",
+364 => x"25c13876",
+365 => x"7d0c7784",
+366 => x"1e0c7c80",
+367 => x"0c903d0d",
+368 => x"04707080",
+369 => x"f5cc3351",
+370 => x"0b0b70b2",
+371 => x"3880e5d8",
+372 => x"08700852",
+373 => x"0b0b520b",
+374 => x"0b0b7080",
+375 => x"2e9a3884",
+376 => x"720580e5",
+377 => x"d80c702d",
+378 => x"80e5d808",
+379 => x"7008520b",
+380 => x"0b520b0b",
+381 => x"0b70e838",
+382 => x"810b80f5",
+383 => x"cc345050",
+384 => x"0404700b",
+385 => x"0b80f5bc",
+386 => x"08802e8e",
+387 => x"380b0b0b",
+388 => x"0b800b80",
+389 => x"2e098106",
+390 => x"83385004",
+391 => x"0b0b80f5",
+392 => x"bc510b0b",
+393 => x"0bf3d93f",
+394 => x"50040470",
+395 => x"70028f05",
+396 => x"33520b0b",
+397 => x"0b0b718a",
+398 => x"2e893871",
+399 => x"51fccd3f",
+400 => x"5050048d",
+401 => x"51fcc53f",
+402 => x"7151fcc0",
+403 => x"3f505004",
+404 => x"cd3d0db6",
+405 => x"3d707084",
+406 => x"05520b0b",
+407 => x"088cab5d",
+408 => x"56a63d5f",
+409 => x"5d807570",
+410 => x"81055733",
+411 => x"765c5559",
+412 => x"0b730b79",
+413 => x"2e80ca38",
+414 => x"8f3d5c73",
+415 => x"a52e0981",
+416 => x"0680cf38",
+417 => x"79708105",
+418 => x"5b33540b",
+419 => x"0b7380e4",
+420 => x"2e81c838",
+421 => x"7380e424",
+422 => x"80d13873",
+423 => x"80e32ea8",
+424 => x"3880520b",
+425 => x"0ba5517a",
+426 => x"2d80520b",
+427 => x"0b73517a",
+428 => x"2d821959",
+429 => x"79708105",
+430 => x"5b33540b",
+431 => x"0b73ffbb",
+432 => x"3878800c",
+433 => x"b53d0d04",
+434 => x"7c841e83",
+435 => x"72053356",
+436 => x"5e578052",
+437 => x"0b0b7351",
+438 => x"7a2d8119",
+439 => x"7a708105",
+440 => x"5c335559",
+441 => x"0b73ff93",
+442 => x"38d73973",
+443 => x"80f32e09",
+444 => x"8106ffad",
+445 => x"387c841e",
+446 => x"7108595e",
+447 => x"56807733",
+448 => x"56560b74",
+449 => x"0b762e8d",
+450 => x"38811670",
+451 => x"1870335a",
+452 => x"555677f5",
+453 => x"38ff1655",
+454 => x"807625ff",
+455 => x"97387670",
+456 => x"81055833",
+457 => x"5880520b",
+458 => x"0b77517a",
+459 => x"2d811975",
+460 => x"ff175757",
+461 => x"59807625",
+462 => x"fefa3876",
+463 => x"70810558",
+464 => x"33588052",
+465 => x"0b0b7751",
+466 => x"7a2d8119",
+467 => x"75ff1757",
+468 => x"57590b75",
+469 => x"8024c738",
+470 => x"feda397c",
+471 => x"841e7108",
+472 => x"70719f2c",
+473 => x"59530b0b",
+474 => x"595e5680",
+475 => x"7524818d",
+476 => x"38757e7d",
+477 => x"58595580",
+478 => x"57740b77",
+479 => x"2e098106",
+480 => x"bc38b07c",
+481 => x"3402b905",
+482 => x"567b0b76",
+483 => x"2e9938ff",
+484 => x"16560b0b",
+485 => x"75337870",
+486 => x"81055a34",
+487 => x"8117577b",
+488 => x"762e0981",
+489 => x"06e93880",
+490 => x"7834767e",
+491 => x"ff720557",
+492 => x"58560b0b",
+493 => x"758024fe",
+494 => x"e538fdf8",
+495 => x"398a7536",
+496 => x"0b0b80d7",
+497 => x"b005540b",
+498 => x"0b733376",
+499 => x"70810558",
+500 => x"348a7535",
+501 => x"550b0b74",
+502 => x"802effad",
+503 => x"388a7536",
+504 => x"0b0b80d7",
+505 => x"b005540b",
+506 => x"0b733376",
+507 => x"70810558",
+508 => x"348a7535",
+509 => x"550b0b74",
+510 => x"c438ff8d",
+511 => x"3974520b",
+512 => x"0b76530b",
+513 => x"0bb53dff",
+514 => x"b8055192",
+515 => x"dc3fa43d",
+516 => x"0856fedd",
+517 => x"397080c1",
+518 => x"0b81c48c",
+519 => x"34800b81",
+520 => x"c5e40c70",
+521 => x"800c5004",
+522 => x"7070800b",
+523 => x"81c48c33",
+524 => x"520b0b52",
+525 => x"0b0b0b70",
+526 => x"80c12e98",
+527 => x"387181c5",
+528 => x"e4080781",
+529 => x"c5e40c80",
+530 => x"c20b81c4",
+531 => x"90347080",
+532 => x"0c505004",
+533 => x"810b81c5",
+534 => x"e4080781",
+535 => x"c5e40c80",
+536 => x"c20b81c4",
+537 => x"90347080",
+538 => x"0c505004",
+539 => x"70707070",
+540 => x"7570088a",
+541 => x"05530b0b",
+542 => x"530b0b81",
+543 => x"c48c3351",
+544 => x"0b0b7080",
+545 => x"c12e8c38",
+546 => x"73f13870",
+547 => x"800c5050",
+548 => x"505004ff",
+549 => x"72057081",
+550 => x"c4880831",
+551 => x"740c800c",
+552 => x"50505050",
+553 => x"04fc3d0d",
+554 => x"81c49408",
+555 => x"550b0b74",
+556 => x"802e8e38",
+557 => x"76750871",
+558 => x"0c81c494",
+559 => x"0856540b",
+560 => x"0b8c1553",
+561 => x"0b0b81c4",
+562 => x"8808520b",
+563 => x"0b8a518e",
+564 => x"e93f7380",
+565 => x"0c863d0d",
+566 => x"04fb3d0d",
+567 => x"77700856",
+568 => x"56b0530b",
+569 => x"0b81c494",
+570 => x"08520b0b",
+571 => x"7451a1ff",
+572 => x"3f850b8c",
+573 => x"170c850b",
+574 => x"8c160c75",
+575 => x"08750c81",
+576 => x"c4940854",
+577 => x"0b0b7380",
+578 => x"2e8c3873",
+579 => x"08750c81",
+580 => x"c4940854",
+581 => x"0b0b8c14",
+582 => x"530b0b81",
+583 => x"c4880852",
+584 => x"0b0b8a51",
+585 => x"8e943f84",
+586 => x"1508b738",
+587 => x"860b8c16",
+588 => x"0c881552",
+589 => x"0b0b8816",
+590 => x"08518d96",
+591 => x"3f81c494",
+592 => x"08700876",
+593 => x"0c540b0b",
+594 => x"8c157054",
+595 => x"0b0b540b",
+596 => x"0b8a520b",
+597 => x"0b730851",
+598 => x"8de03f73",
+599 => x"800c873d",
+600 => x"0d047508",
+601 => x"540b0bb0",
+602 => x"530b0b73",
+603 => x"520b0b75",
+604 => x"51a0fc3f",
+605 => x"73800c87",
+606 => x"3d0d04e1",
+607 => x"3d0db051",
+608 => x"93833f80",
+609 => x"0881c484",
+610 => x"0cb05192",
+611 => x"f83f8008",
+612 => x"81c4940c",
+613 => x"81c48408",
+614 => x"80080c80",
+615 => x"0b800884",
+616 => x"050c820b",
+617 => x"80088805",
+618 => x"0ca80b80",
+619 => x"088c050c",
+620 => x"9f530b0b",
+621 => x"0b0b80d7",
+622 => x"bc520b0b",
+623 => x"80089005",
+624 => x"51a0ac3f",
+625 => x"993d5c9f",
+626 => x"530b0b0b",
+627 => x"0b80d7dc",
+628 => x"520b0b7b",
+629 => x"51a0983f",
+630 => x"8a0b8182",
+631 => x"cc0c0b0b",
+632 => x"80e28051",
+633 => x"f8ea3f0b",
+634 => x"0b80d7fc",
+635 => x"51f8e13f",
+636 => x"0b0b80e2",
+637 => x"8051f8d8",
+638 => x"3f80e5e0",
+639 => x"08802e8a",
+640 => x"a1380b0b",
+641 => x"80d8ac51",
+642 => x"f8c63f0b",
+643 => x"0b80e280",
+644 => x"51f8bd3f",
+645 => x"80e5dc08",
+646 => x"520b0b0b",
+647 => x"0b80d8d8",
+648 => x"51f8ad3f",
+649 => x"8051b488",
+650 => x"3f800880",
+651 => x"f5ec0c81",
+652 => x"0b923d5c",
+653 => x"58800b80",
+654 => x"e5dc0825",
+655 => x"8383388e",
+656 => x"3d5d80c1",
+657 => x"0b81c48c",
+658 => x"34810b81",
+659 => x"c5e40c80",
+660 => x"c20b81c4",
+661 => x"9034825e",
+662 => x"835a9f53",
+663 => x"0b0b0b0b",
+664 => x"80d98852",
+665 => x"0b0b7a51",
+666 => x"9f853f81",
+667 => x"5f807b53",
+668 => x"0b0b7c52",
+669 => x"0b0b558c",
+670 => x"f43f8008",
+671 => x"752e0981",
+672 => x"06833881",
+673 => x"550b0b74",
+674 => x"81c5e40c",
+675 => x"7d705755",
+676 => x"0b0b7483",
+677 => x"25a63874",
+678 => x"101015fd",
+679 => x"0540a13d",
+680 => x"ffbc0553",
+681 => x"0b0b8352",
+682 => x"0b0b7551",
+683 => x"8b8c3f81",
+684 => x"1e705f70",
+685 => x"5755830b",
+686 => x"7524dc38",
+687 => x"7f540b0b",
+688 => x"74530b0b",
+689 => x"80f5f052",
+690 => x"0b0b81c4",
+691 => x"9c518af6",
+692 => x"3f81c494",
+693 => x"08700857",
+694 => x"57b0530b",
+695 => x"0b76520b",
+696 => x"0b75519e",
+697 => x"8a3f850b",
+698 => x"8c180c85",
+699 => x"0b8c170c",
+700 => x"7608760c",
+701 => x"81c49408",
+702 => x"550b0b74",
+703 => x"802e8a38",
+704 => x"7408760c",
+705 => x"81c49408",
+706 => x"558c1553",
+707 => x"0b0b81c4",
+708 => x"8808520b",
+709 => x"0b8a518a",
+710 => x"a13f8416",
+711 => x"08888c38",
+712 => x"860b8c17",
+713 => x"0c881652",
+714 => x"0b0b8817",
+715 => x"085189a2",
+716 => x"3f81c494",
+717 => x"08700877",
+718 => x"0c578c16",
+719 => x"70540b0b",
+720 => x"558a520b",
+721 => x"0b740851",
+722 => x"89f03f80",
+723 => x"c10b81c4",
+724 => x"90335656",
+725 => x"0b0b7575",
+726 => x"26a83880",
+727 => x"c3520b0b",
+728 => x"75518adb",
+729 => x"3f80087f",
+730 => x"2e87ff38",
+731 => x"81167081",
+732 => x"ff0681c4",
+733 => x"9033520b",
+734 => x"0b57550b",
+735 => x"0b747627",
+736 => x"da38797e",
+737 => x"29607072",
+738 => x"35704172",
+739 => x"72317087",
+740 => x"2972315e",
+741 => x"530b0b8a",
+742 => x"0581c48c",
+743 => x"3381c488",
+744 => x"085a520b",
+745 => x"0b520b0b",
+746 => x"58550b76",
+747 => x"80c12e87",
+748 => x"f03878f6",
+749 => x"38811858",
+750 => x"80e5dc08",
+751 => x"7825fd82",
+752 => x"388051b0",
+753 => x"eb3f8008",
+754 => x"81c4800c",
+755 => x"0b0b80d9",
+756 => x"a851f4fc",
+757 => x"3f0b0b80",
+758 => x"e28051f4",
+759 => x"f33f0b0b",
+760 => x"80d9b851",
+761 => x"f4ea3f0b",
+762 => x"0b80e280",
+763 => x"51f4e13f",
+764 => x"81c48808",
+765 => x"520b0b0b",
+766 => x"0b80d9f0",
+767 => x"51f4d13f",
+768 => x"85520b0b",
+769 => x"0b0b80da",
+770 => x"8c51f4c4",
+771 => x"3f81c5e4",
+772 => x"08520b0b",
+773 => x"0b0b80da",
+774 => x"a851f4b4",
+775 => x"3f81520b",
+776 => x"0b0b0b80",
+777 => x"da8c51f4",
+778 => x"a73f81c4",
+779 => x"8c33520b",
+780 => x"0b0b0b80",
+781 => x"dac451f4",
+782 => x"973f80c1",
+783 => x"520b0b0b",
+784 => x"0b80dae0",
+785 => x"51f4893f",
+786 => x"81c49033",
+787 => x"520b0b0b",
+788 => x"0b80dafc",
+789 => x"51f3f93f",
+790 => x"80c2520b",
+791 => x"0b0b0b80",
+792 => x"dae051f3",
+793 => x"eb3f81c4",
+794 => x"bc08520b",
+795 => x"0b0b0b80",
+796 => x"db9851f3",
+797 => x"db3f8752",
+798 => x"0b0b0b0b",
+799 => x"80da8c51",
+800 => x"f3ce3f81",
+801 => x"82cc0852",
+802 => x"0b0b0b0b",
+803 => x"80dbb451",
+804 => x"f3be3f0b",
+805 => x"0b80dbd0",
+806 => x"51f3b53f",
+807 => x"0b0b80db",
+808 => x"fc51f3ac",
+809 => x"3f81c494",
+810 => x"08700853",
+811 => x"0b0b560b",
+812 => x"0b80dc88",
+813 => x"51f3993f",
+814 => x"0b0b80dc",
+815 => x"a451f390",
+816 => x"3f81c494",
+817 => x"08847105",
+818 => x"08530b0b",
+819 => x"5d0b0b80",
+820 => x"dcd851f2",
+821 => x"fb3f8052",
+822 => x"0b0b0b0b",
+823 => x"80da8c51",
+824 => x"f2ee3f81",
+825 => x"c4940888",
+826 => x"71050853",
+827 => x"0b0b580b",
+828 => x"0b80dcf4",
+829 => x"51f2d93f",
+830 => x"82520b0b",
+831 => x"0b0b80da",
+832 => x"8c51f2cc",
+833 => x"3f81c494",
+834 => x"088c7105",
+835 => x"08530b0b",
+836 => x"590b0b80",
+837 => x"dd9051f2",
+838 => x"b73f9152",
+839 => x"0b0b0b0b",
+840 => x"80da8c51",
+841 => x"f2aa3f81",
+842 => x"c4940890",
+843 => x"05520b0b",
+844 => x"0b0b80dd",
+845 => x"ac51f298",
+846 => x"3f0b0b80",
+847 => x"ddc851f2",
+848 => x"8f3f0b0b",
+849 => x"80de8051",
+850 => x"f2863f81",
+851 => x"c4840870",
+852 => x"08530b0b",
+853 => x"570b0b80",
+854 => x"dc8851f1",
+855 => x"f33f0b0b",
+856 => x"80de9451",
+857 => x"f1ea3f81",
+858 => x"c4840884",
+859 => x"71050853",
+860 => x"0b0b550b",
+861 => x"0b80dcd8",
+862 => x"51f1d53f",
+863 => x"80520b0b",
+864 => x"0b0b80da",
+865 => x"8c51f1c8",
+866 => x"3f81c484",
+867 => x"08887105",
+868 => x"08530b0b",
+869 => x"560b0b80",
+870 => x"dcf451f1",
+871 => x"b33f8152",
+872 => x"0b0b0b0b",
+873 => x"80da8c51",
+874 => x"f1a63f81",
+875 => x"c484088c",
+876 => x"71050853",
+877 => x"0b0b5d0b",
+878 => x"0b80dd90",
+879 => x"51f1913f",
+880 => x"92520b0b",
+881 => x"0b0b80da",
+882 => x"8c51f184",
+883 => x"3f81c484",
+884 => x"08900552",
+885 => x"0b0b0b0b",
+886 => x"80ddac51",
+887 => x"f0f23f0b",
+888 => x"0b80ddc8",
+889 => x"51f0e93f",
+890 => x"7d520b0b",
+891 => x"0b0b80de",
+892 => x"d451f0dc",
+893 => x"3f85520b",
+894 => x"0b0b0b80",
+895 => x"da8c51f0",
+896 => x"cf3f7952",
+897 => x"0b0b0b0b",
+898 => x"80def051",
+899 => x"f0c23f8d",
+900 => x"520b0b0b",
+901 => x"0b80da8c",
+902 => x"51f0b53f",
+903 => x"7f520b0b",
+904 => x"0b0b80df",
+905 => x"8c51f0a8",
+906 => x"3f87520b",
+907 => x"0b0b0b80",
+908 => x"da8c51f0",
+909 => x"9b3f7e52",
+910 => x"0b0b0b0b",
+911 => x"80dfa851",
+912 => x"f08e3f81",
+913 => x"520b0b0b",
+914 => x"0b80da8c",
+915 => x"51f0813f",
+916 => x"7b520b0b",
+917 => x"0b0b80df",
+918 => x"c451eff4",
+919 => x"3f0b0b80",
+920 => x"dfe051ef",
+921 => x"eb3f7a52",
+922 => x"0b0b0b0b",
+923 => x"80e09851",
+924 => x"efde3f0b",
+925 => x"0b80e0b4",
+926 => x"51efd53f",
+927 => x"0b0b80e2",
+928 => x"8051efcc",
+929 => x"3f81c480",
+930 => x"0880f5ec",
+931 => x"08317080",
+932 => x"f5e80c52",
+933 => x"0b0b0b0b",
+934 => x"80e0ec51",
+935 => x"efb23f80",
+936 => x"f5e80856",
+937 => x"810b7625",
+938 => x"819d3880",
+939 => x"e5dc0870",
+940 => x"77bd84c0",
+941 => x"293580f5",
+942 => x"e00c7671",
+943 => x"3580f5e4",
+944 => x"0c768ddd",
+945 => x"297187e8",
+946 => x"293581c4",
+947 => x"980c5b0b",
+948 => x"0b80e0fc",
+949 => x"51eef93f",
+950 => x"80f5e008",
+951 => x"520b0b0b",
+952 => x"0b80e1ac",
+953 => x"51eee93f",
+954 => x"0b0b80e1",
+955 => x"b451eee0",
+956 => x"3f80f5e4",
+957 => x"08520b0b",
+958 => x"0b0b80e1",
+959 => x"ac51eed0",
+960 => x"3f81c498",
+961 => x"08520b0b",
+962 => x"0b0b80e1",
+963 => x"e451eec0",
+964 => x"3f0b0b80",
+965 => x"e28051ee",
+966 => x"b73f800b",
+967 => x"800ca13d",
+968 => x"0d040b0b",
+969 => x"80e28451",
+970 => x"f5de3976",
+971 => x"0856b053",
+972 => x"0b0b7552",
+973 => x"0b0b7651",
+974 => x"95b53f80",
+975 => x"c10b81c4",
+976 => x"90335656",
+977 => x"f88e390b",
+978 => x"0b80e2b4",
+979 => x"51ee813f",
+980 => x"0b0b80e2",
+981 => x"ec51edf8",
+982 => x"3f0b0b80",
+983 => x"e28051ed",
+984 => x"ef3f800b",
+985 => x"800ca13d",
+986 => x"0d04a13d",
+987 => x"ffb80552",
+988 => x"0b0b8051",
+989 => x"80dc3f9f",
+990 => x"530b0b0b",
+991 => x"0b80e38c",
+992 => x"520b0b7a",
+993 => x"5194e83f",
+994 => x"777881c4",
+995 => x"880c8117",
+996 => x"7081ff06",
+997 => x"81c49033",
+998 => x"520b0b58",
+999 => x"565af7db",
+1000 => x"39ff1570",
+1001 => x"77317e0c",
+1002 => x"59800b81",
+1003 => x"19595980",
+1004 => x"e5dc0878",
+1005 => x"25f58b38",
+1006 => x"f8873970",
+1007 => x"70738232",
+1008 => x"70307072",
+1009 => x"07802580",
+1010 => x"0c520b0b",
+1011 => x"520b0b50",
+1012 => x"50047070",
+1013 => x"70747671",
+1014 => x"530b0b54",
+1015 => x"0b0b520b",
+1016 => x"0b0b0b71",
+1017 => x"822e8338",
+1018 => x"83517181",
+1019 => x"2e9a3881",
+1020 => x"72269f38",
+1021 => x"71822eb8",
+1022 => x"3871842e",
+1023 => x"a9387073",
+1024 => x"0c70800c",
+1025 => x"50505004",
+1026 => x"80e40b81",
+1027 => x"c4880825",
+1028 => x"8b388073",
+1029 => x"0c70800c",
+1030 => x"50505004",
+1031 => x"83730c70",
+1032 => x"800c5050",
+1033 => x"50048273",
+1034 => x"0c70800c",
+1035 => x"50505004",
+1036 => x"81730c70",
+1037 => x"800c5050",
+1038 => x"50047074",
+1039 => x"74148205",
+1040 => x"710c800c",
+1041 => x"5004f73d",
+1042 => x"0d7b7d7f",
+1043 => x"61857205",
+1044 => x"70822b75",
+1045 => x"71057074",
+1046 => x"71708405",
+1047 => x"530b0b0c",
+1048 => x"5a5a5d5b",
+1049 => x"760c7980",
+1050 => x"f8180c79",
+1051 => x"86720552",
+1052 => x"0b0b5758",
+1053 => x"5a5a7676",
+1054 => x"249e3876",
+1055 => x"b329822b",
+1056 => x"79710551",
+1057 => x"530b0b76",
+1058 => x"73708405",
+1059 => x"550c8114",
+1060 => x"540b0b75",
+1061 => x"7425f038",
+1062 => x"7681cc29",
+1063 => x"19fc7105",
+1064 => x"088105fc",
+1065 => x"72050c7a",
+1066 => x"1970089f",
+1067 => x"a073050c",
+1068 => x"5856850b",
+1069 => x"81c4880c",
+1070 => x"75800c8b",
+1071 => x"3d0d0470",
+1072 => x"70700293",
+1073 => x"05335180",
+1074 => x"02840597",
+1075 => x"0533540b",
+1076 => x"0b520b0b",
+1077 => x"70732e88",
+1078 => x"3871800c",
+1079 => x"50505004",
+1080 => x"7081c48c",
+1081 => x"34810b80",
+1082 => x"0c505050",
+1083 => x"04f83d0d",
+1084 => x"7a7c5956",
+1085 => x"820b8319",
+1086 => x"55550b0b",
+1087 => x"74167033",
+1088 => x"75335b51",
+1089 => x"530b0b72",
+1090 => x"792e80cf",
+1091 => x"3880c10b",
+1092 => x"81168116",
+1093 => x"56565782",
+1094 => x"7525df38",
+1095 => x"ffa91770",
+1096 => x"81ff0655",
+1097 => x"590b7382",
+1098 => x"26833887",
+1099 => x"5581530b",
+1100 => x"0b7680d2",
+1101 => x"2e9e3877",
+1102 => x"520b0b75",
+1103 => x"5193b53f",
+1104 => x"80530b0b",
+1105 => x"72800825",
+1106 => x"8b388715",
+1107 => x"81c4880c",
+1108 => x"81530b0b",
+1109 => x"72800c8a",
+1110 => x"3d0d0472",
+1111 => x"81c48c34",
+1112 => x"827525ff",
+1113 => x"9538ffb4",
+1114 => x"39f93d0d",
+1115 => x"797b7d54",
+1116 => x"0b0b5872",
+1117 => x"59773079",
+1118 => x"70307072",
+1119 => x"079f2a73",
+1120 => x"71315a52",
+1121 => x"0b0b5977",
+1122 => x"0b795673",
+1123 => x"0c530b0b",
+1124 => x"73847305",
+1125 => x"0c540b0b",
+1126 => x"800c893d",
+1127 => x"0d04f93d",
+1128 => x"0d797b7d",
+1129 => x"7f56540b",
+1130 => x"0b520b0b",
+1131 => x"540b0b72",
+1132 => x"802ea638",
+1133 => x"70577158",
+1134 => x"a0733152",
+1135 => x"0b0b800b",
+1136 => x"7225a638",
+1137 => x"7770742b",
+1138 => x"5770732a",
+1139 => x"78752b07",
+1140 => x"56510b74",
+1141 => x"76530b0b",
+1142 => x"510b0b70",
+1143 => x"740c7184",
+1144 => x"150c7380",
+1145 => x"0c893d0d",
+1146 => x"04805677",
+1147 => x"72302b55",
+1148 => x"0b0b7476",
+1149 => x"530b0b51",
+1150 => x"e039fb3d",
+1151 => x"0d777955",
+1152 => x"5580560b",
+1153 => x"0b757524",
+1154 => x"b5388074",
+1155 => x"24a53880",
+1156 => x"530b0b73",
+1157 => x"520b0b74",
+1158 => x"5180f33f",
+1159 => x"8008540b",
+1160 => x"0b75802e",
+1161 => x"87388008",
+1162 => x"30540b0b",
+1163 => x"73800c87",
+1164 => x"3d0d0473",
+1165 => x"30768132",
+1166 => x"57540b0b",
+1167 => x"d2397430",
+1168 => x"55815673",
+1169 => x"8025c838",
+1170 => x"ea39fa3d",
+1171 => x"0d787a57",
+1172 => x"5580570b",
+1173 => x"0b767524",
+1174 => x"ae38759f",
+1175 => x"2c540b0b",
+1176 => x"81530b0b",
+1177 => x"75743274",
+1178 => x"31520b0b",
+1179 => x"74519f3f",
+1180 => x"8008540b",
+1181 => x"0b76802e",
+1182 => x"87388008",
+1183 => x"30540b0b",
+1184 => x"73800c88",
+1185 => x"3d0d0474",
+1186 => x"30558157",
+1187 => x"cd39fc3d",
+1188 => x"0d767853",
+1189 => x"0b0b540b",
+1190 => x"0b81530b",
+1191 => x"0b807473",
+1192 => x"26520b0b",
+1193 => x"5572802e",
+1194 => x"9e387080",
+1195 => x"2eb73880",
+1196 => x"7224b238",
+1197 => x"71107310",
+1198 => x"75722653",
+1199 => x"0b0b540b",
+1200 => x"0b520b0b",
+1201 => x"72e43873",
+1202 => x"51788338",
+1203 => x"74510b0b",
+1204 => x"70800c86",
+1205 => x"3d0d0472",
+1206 => x"0a100a72",
+1207 => x"0a100a53",
+1208 => x"0b0b530b",
+1209 => x"0b72802e",
+1210 => x"de387174",
+1211 => x"26e93873",
+1212 => x"72317574",
+1213 => x"07740a10",
+1214 => x"0a740a10",
+1215 => x"0a555556",
+1216 => x"540b0be1",
+1217 => x"39707073",
+1218 => x"520b0b80",
+1219 => x"eea80851",
+1220 => x"953f5050",
+1221 => x"04707073",
+1222 => x"520b0b80",
+1223 => x"eea80851",
+1224 => x"92dc3f50",
+1225 => x"5004f43d",
+1226 => x"0d7e608b",
+1227 => x"710570f8",
+1228 => x"065b5555",
+1229 => x"5d729626",
+1230 => x"83389058",
+1231 => x"800b7824",
+1232 => x"74792607",
+1233 => x"5580540b",
+1234 => x"0b74742e",
+1235 => x"09810680",
+1236 => x"d5387c51",
+1237 => x"8edf3f77",
+1238 => x"83f72680",
+1239 => x"d0387783",
+1240 => x"2a701010",
+1241 => x"1080e6a0",
+1242 => x"058c7105",
+1243 => x"08585854",
+1244 => x"0b0b7577",
+1245 => x"2e828a38",
+1246 => x"841608fc",
+1247 => x"068c1708",
+1248 => x"88180871",
+1249 => x"8c72050c",
+1250 => x"8872050c",
+1251 => x"5b760584",
+1252 => x"71050881",
+1253 => x"07847205",
+1254 => x"0c530b0b",
+1255 => x"7c518e96",
+1256 => x"3f881654",
+1257 => x"0b0b7380",
+1258 => x"0c8e3d0d",
+1259 => x"0477892a",
+1260 => x"78832a58",
+1261 => x"540b0b73",
+1262 => x"802ebf38",
+1263 => x"77862ab8",
+1264 => x"05578474",
+1265 => x"27b43880",
+1266 => x"db145794",
+1267 => x"7427ab38",
+1268 => x"778c2a80",
+1269 => x"ee055780",
+1270 => x"d474279e",
+1271 => x"38778f2a",
+1272 => x"80f70557",
+1273 => x"82d47427",
+1274 => x"91387792",
+1275 => x"2a80fc05",
+1276 => x"578ad474",
+1277 => x"27843880",
+1278 => x"fe570b0b",
+1279 => x"76101010",
+1280 => x"80e6a005",
+1281 => x"8c710508",
+1282 => x"56530b0b",
+1283 => x"74732ea6",
+1284 => x"38841508",
+1285 => x"fc067079",
+1286 => x"3155560b",
+1287 => x"738f2489",
+1288 => x"d2387380",
+1289 => x"2589d438",
+1290 => x"8c150855",
+1291 => x"0b0b7473",
+1292 => x"2e098106",
+1293 => x"dc388117",
+1294 => x"5980e6b0",
+1295 => x"08560b0b",
+1296 => x"7580e6a8",
+1297 => x"2e82f938",
+1298 => x"841608fc",
+1299 => x"06707931",
+1300 => x"55550b73",
+1301 => x"8f2480c2",
+1302 => x"3880e6a8",
+1303 => x"0b80e6b4",
+1304 => x"0c80e6a8",
+1305 => x"0b80e6b0",
+1306 => x"0c807424",
+1307 => x"80e83874",
+1308 => x"16847105",
+1309 => x"08810784",
+1310 => x"72050c53",
+1311 => x"0b0bfe9c",
+1312 => x"3988168c",
+1313 => x"71050857",
+1314 => x"590b750b",
+1315 => x"792e0981",
+1316 => x"06fde538",
+1317 => x"821459ff",
+1318 => x"a0397716",
+1319 => x"78810784",
+1320 => x"180c7080",
+1321 => x"e6b40c70",
+1322 => x"80e6b00c",
+1323 => x"80e6a80b",
+1324 => x"8c72050c",
+1325 => x"8c710508",
+1326 => x"8872050c",
+1327 => x"74810784",
+1328 => x"72050c74",
+1329 => x"0574710c",
+1330 => x"5b7c518b",
+1331 => x"e93f8816",
+1332 => x"540b0bfd",
+1333 => x"d13983ff",
+1334 => x"752783c1",
+1335 => x"3874892a",
+1336 => x"75832a54",
+1337 => x"0b0b540b",
+1338 => x"0b73802e",
+1339 => x"80cb3874",
+1340 => x"862ab805",
+1341 => x"530b0b84",
+1342 => x"7427be38",
+1343 => x"80db1453",
+1344 => x"0b0b9474",
+1345 => x"27b33874",
+1346 => x"8c2a80ee",
+1347 => x"05530b0b",
+1348 => x"80d47427",
+1349 => x"a438748f",
+1350 => x"2a80f705",
+1351 => x"530b0b82",
+1352 => x"d4742795",
+1353 => x"3874922a",
+1354 => x"80fc0553",
+1355 => x"0b0b8ad4",
+1356 => x"74278638",
+1357 => x"80fe530b",
+1358 => x"0b721010",
+1359 => x"1080e6a0",
+1360 => x"05887105",
+1361 => x"0855570b",
+1362 => x"730b772e",
+1363 => x"86cd3884",
+1364 => x"1408fc06",
+1365 => x"5b740b7b",
+1366 => x"278f3888",
+1367 => x"1408540b",
+1368 => x"0b73772e",
+1369 => x"098106e7",
+1370 => x"388c1408",
+1371 => x"80e6a00b",
+1372 => x"84050871",
+1373 => x"8c190c75",
+1374 => x"88190c77",
+1375 => x"8873050c",
+1376 => x"5c57758c",
+1377 => x"150c7853",
+1378 => x"0b0b8079",
+1379 => x"2483be38",
+1380 => x"72822c81",
+1381 => x"712b5656",
+1382 => x"0b747b26",
+1383 => x"80d1387a",
+1384 => x"7506570b",
+1385 => x"0b7682bc",
+1386 => x"3878fc06",
+1387 => x"84055974",
+1388 => x"10707c06",
+1389 => x"55550b73",
+1390 => x"82aa3884",
+1391 => x"1959f039",
+1392 => x"80e6a00b",
+1393 => x"84050879",
+1394 => x"540b0b5b",
+1395 => x"788025c0",
+1396 => x"3882fa39",
+1397 => x"74097b06",
+1398 => x"7080e6a0",
+1399 => x"0b84050c",
+1400 => x"5b741055",
+1401 => x"0b0b747b",
+1402 => x"26853874",
+1403 => x"85f33880",
+1404 => x"e6a00b88",
+1405 => x"05087084",
+1406 => x"720508fc",
+1407 => x"06707b31",
+1408 => x"7b72268f",
+1409 => x"7225075d",
+1410 => x"575c5c55",
+1411 => x"78802e80",
+1412 => x"e3387915",
+1413 => x"80e69808",
+1414 => x"19907105",
+1415 => x"59540b0b",
+1416 => x"5680e694",
+1417 => x"08ff2e89",
+1418 => x"38a08f73",
+1419 => x"05e08006",
+1420 => x"570b0b76",
+1421 => x"520b0b7c",
+1422 => x"5188fc3f",
+1423 => x"8008540b",
+1424 => x"0b8008ff",
+1425 => x"2e903880",
+1426 => x"08762782",
+1427 => x"c2387480",
+1428 => x"e6a02e82",
+1429 => x"ba3880e6",
+1430 => x"a00b8805",
+1431 => x"08558415",
+1432 => x"08fc0670",
+1433 => x"79317972",
+1434 => x"268f7225",
+1435 => x"075d555a",
+1436 => x"7a849b38",
+1437 => x"77810784",
+1438 => x"160c7715",
+1439 => x"7080e6a0",
+1440 => x"0b88050c",
+1441 => x"74810784",
+1442 => x"72050c56",
+1443 => x"7c5188a6",
+1444 => x"3f881554",
+1445 => x"0b0b7380",
+1446 => x"0c8e3d0d",
+1447 => x"0474832a",
+1448 => x"70540b0b",
+1449 => x"540b0b80",
+1450 => x"742481a9",
+1451 => x"3872822c",
+1452 => x"81712b80",
+1453 => x"e6a40807",
+1454 => x"7080e6a0",
+1455 => x"0b84050c",
+1456 => x"75101010",
+1457 => x"80e6a005",
+1458 => x"88710508",
+1459 => x"718c1b0c",
+1460 => x"70881b0c",
+1461 => x"79887305",
+1462 => x"0c57555c",
+1463 => x"55758c15",
+1464 => x"0cfda339",
+1465 => x"78791010",
+1466 => x"1080e6a0",
+1467 => x"0570565b",
+1468 => x"5c8c1408",
+1469 => x"560b0b75",
+1470 => x"742ea738",
+1471 => x"841608fc",
+1472 => x"06707931",
+1473 => x"58530b0b",
+1474 => x"768f2484",
+1475 => x"98387680",
+1476 => x"2584de38",
+1477 => x"8c160856",
+1478 => x"0b0b7574",
+1479 => x"2e098106",
+1480 => x"db388814",
+1481 => x"811a7083",
+1482 => x"06555a54",
+1483 => x"0b0b72c1",
+1484 => x"387b8306",
+1485 => x"560b0b75",
+1486 => x"802efd98",
+1487 => x"38ff1cf8",
+1488 => x"1b5b5c88",
+1489 => x"1a087a2e",
+1490 => x"e838fd95",
+1491 => x"39831953",
+1492 => x"0b0bfcbc",
+1493 => x"39831470",
+1494 => x"822c8171",
+1495 => x"2b80e6a4",
+1496 => x"08077080",
+1497 => x"e6a00b84",
+1498 => x"050c7610",
+1499 => x"101080e6",
+1500 => x"a0058871",
+1501 => x"0508718c",
+1502 => x"1c0c7088",
+1503 => x"1c0c7a88",
+1504 => x"73050c58",
+1505 => x"530b0b5d",
+1506 => x"56530b0b",
+1507 => x"fecf3980",
+1508 => x"e5e40817",
+1509 => x"59800876",
+1510 => x"2e819438",
+1511 => x"80e69408",
+1512 => x"ff2e84b7",
+1513 => x"38737631",
+1514 => x"1980e5e4",
+1515 => x"0c738706",
+1516 => x"7056530b",
+1517 => x"0b72802e",
+1518 => x"88388873",
+1519 => x"31701555",
+1520 => x"5576149f",
+1521 => x"ff06a080",
+1522 => x"71311670",
+1523 => x"540b0b7e",
+1524 => x"530b0b51",
+1525 => x"530b0b85",
+1526 => x"de3f8008",
+1527 => x"568008ff",
+1528 => x"2e81a238",
+1529 => x"80e5e408",
+1530 => x"73057080",
+1531 => x"e5e40c74",
+1532 => x"7580e6a0",
+1533 => x"0b88050c",
+1534 => x"77763115",
+1535 => x"81075556",
+1536 => x"597a80e6",
+1537 => x"a02e83e0",
+1538 => x"38798f26",
+1539 => x"838d3881",
+1540 => x"0b84150c",
+1541 => x"841508fc",
+1542 => x"06707931",
+1543 => x"7972268f",
+1544 => x"7225075d",
+1545 => x"555a7a80",
+1546 => x"2efcc938",
+1547 => x"80e03980",
+1548 => x"089fff06",
+1549 => x"550b0b74",
+1550 => x"fee23878",
+1551 => x"80e5e40c",
+1552 => x"80e6a00b",
+1553 => x"8805087a",
+1554 => x"18810784",
+1555 => x"72050c55",
+1556 => x"80e69008",
+1557 => x"79278638",
+1558 => x"7880e690",
+1559 => x"0c80e68c",
+1560 => x"087927fb",
+1561 => x"f9387880",
+1562 => x"e68c0c84",
+1563 => x"1508fc06",
+1564 => x"70793179",
+1565 => x"72268f72",
+1566 => x"25075d55",
+1567 => x"5a7a802e",
+1568 => x"fbf2388a",
+1569 => x"39807457",
+1570 => x"530b0bfe",
+1571 => x"d7397c51",
+1572 => x"84a43f80",
+1573 => x"0b800c8e",
+1574 => x"3d0d0480",
+1575 => x"7324a538",
+1576 => x"72822c81",
+1577 => x"712b80e6",
+1578 => x"a4080770",
+1579 => x"80e6a00b",
+1580 => x"84050c5c",
+1581 => x"5a768c17",
+1582 => x"0c738817",
+1583 => x"0c758818",
+1584 => x"0cf9bf39",
+1585 => x"83730570",
+1586 => x"822c8171",
+1587 => x"2b80e6a4",
+1588 => x"08077080",
+1589 => x"e6a00b84",
+1590 => x"050c5d5b",
+1591 => x"530b0bd5",
+1592 => x"397a7506",
+1593 => x"5c0b0b7b",
+1594 => x"fbfa3884",
+1595 => x"19751056",
+1596 => x"59ef39ff",
+1597 => x"17810559",
+1598 => x"f6bf398c",
+1599 => x"15088816",
+1600 => x"08718c72",
+1601 => x"050c8872",
+1602 => x"050c5975",
+1603 => x"15847105",
+1604 => x"08810784",
+1605 => x"72050c58",
+1606 => x"7c51839a",
+1607 => x"3f881554",
+1608 => x"0b0bfaf2",
+1609 => x"39771678",
+1610 => x"81078418",
+1611 => x"0c8c1708",
+1612 => x"88180871",
+1613 => x"8c72050c",
+1614 => x"8872050c",
+1615 => x"5c7080e6",
+1616 => x"b40c7080",
+1617 => x"e6b00c80",
+1618 => x"e6a80b8c",
+1619 => x"72050c8c",
+1620 => x"71050888",
+1621 => x"72050c77",
+1622 => x"81078472",
+1623 => x"050c7705",
+1624 => x"77710c55",
+1625 => x"7c5182ce",
+1626 => x"3f881654",
+1627 => x"0b0bf4b6",
+1628 => x"39721684",
+1629 => x"71050881",
+1630 => x"07847205",
+1631 => x"0c588c16",
+1632 => x"08881708",
+1633 => x"718c7205",
+1634 => x"0c887205",
+1635 => x"0c577c51",
+1636 => x"82a43f88",
+1637 => x"16540b0b",
+1638 => x"f48c3972",
+1639 => x"84150cf4",
+1640 => x"1af80670",
+1641 => x"841d0881",
+1642 => x"0607841d",
+1643 => x"0c701c55",
+1644 => x"56850b84",
+1645 => x"150c850b",
+1646 => x"88150c8f",
+1647 => x"7627fd90",
+1648 => x"38881b52",
+1649 => x"0b0b7c51",
+1650 => x"85b43f80",
+1651 => x"e6a00b88",
+1652 => x"050880e5",
+1653 => x"e4085a55",
+1654 => x"fcf63978",
+1655 => x"80e5e40c",
+1656 => x"7380e694",
+1657 => x"0cfbc639",
+1658 => x"7284150c",
+1659 => x"fce239fb",
+1660 => x"3d0d7770",
+1661 => x"7a7c5855",
+1662 => x"530b0b56",
+1663 => x"8f752781",
+1664 => x"85387276",
+1665 => x"07830651",
+1666 => x"0b0b7080",
+1667 => x"f9387573",
+1668 => x"520b0b54",
+1669 => x"0b0b7070",
+1670 => x"8405520b",
+1671 => x"0b087470",
+1672 => x"8405560c",
+1673 => x"73717084",
+1674 => x"05530b0b",
+1675 => x"08717084",
+1676 => x"05530b0b",
+1677 => x"0c717084",
+1678 => x"05530b0b",
+1679 => x"08717084",
+1680 => x"05530b0b",
+1681 => x"0c717084",
+1682 => x"05530b0b",
+1683 => x"08717084",
+1684 => x"05530b0b",
+1685 => x"0cf01656",
+1686 => x"540b0b74",
+1687 => x"8f26ffb6",
+1688 => x"38837527",
+1689 => x"99387070",
+1690 => x"8405520b",
+1691 => x"0b087470",
+1692 => x"8405560c",
+1693 => x"fc15550b",
+1694 => x"0b748326",
+1695 => x"e9387371",
+1696 => x"540b0b52",
+1697 => x"0b0bff15",
+1698 => x"510b0b70",
+1699 => x"ff2e9f38",
+1700 => x"72708105",
+1701 => x"540b0b33",
+1702 => x"72708105",
+1703 => x"540b0b34",
+1704 => x"ff710551",
+1705 => x"0b0b70ff",
+1706 => x"2e098106",
+1707 => x"e3387580",
+1708 => x"0c873d0d",
+1709 => x"04040470",
+1710 => x"70707080",
+1711 => x"0b81c5e8",
+1712 => x"0c765188",
+1713 => x"d93f8008",
+1714 => x"530b0b80",
+1715 => x"08ff2e89",
+1716 => x"3872800c",
+1717 => x"50505050",
+1718 => x"0481c5e8",
+1719 => x"08540b0b",
+1720 => x"73802eed",
+1721 => x"38757471",
+1722 => x"0c520b0b",
+1723 => x"72800c50",
+1724 => x"50505004",
+1725 => x"fb3d0d77",
+1726 => x"79707207",
+1727 => x"8306530b",
+1728 => x"0b540b0b",
+1729 => x"520b0b70",
+1730 => x"9b387173",
+1731 => x"7308540b",
+1732 => x"0b56540b",
+1733 => x"0b717308",
+1734 => x"2e80d838",
+1735 => x"7375540b",
+1736 => x"0b520b0b",
+1737 => x"0b0b7133",
+1738 => x"7081ff06",
+1739 => x"520b0b54",
+1740 => x"0b0b7080",
+1741 => x"2ea53872",
+1742 => x"3355700b",
+1743 => x"752e0981",
+1744 => x"069c3881",
+1745 => x"72058114",
+1746 => x"71337081",
+1747 => x"ff06540b",
+1748 => x"0b56540b",
+1749 => x"0b520b0b",
+1750 => x"70dd3872",
+1751 => x"33557381",
+1752 => x"ff067581",
+1753 => x"ff067171",
+1754 => x"31800c55",
+1755 => x"520b0b87",
+1756 => x"3d0d0471",
+1757 => x"09f7fbfd",
+1758 => x"ff730506",
+1759 => x"f8848281",
+1760 => x"8006520b",
+1761 => x"0b0b0b71",
+1762 => x"9f388414",
+1763 => x"84167108",
+1764 => x"540b0b56",
+1765 => x"540b0b71",
+1766 => x"75082ed7",
+1767 => x"38737554",
+1768 => x"0b0b520b",
+1769 => x"0bfefd39",
+1770 => x"800b800c",
+1771 => x"873d0d04",
+1772 => x"fb3d0d77",
+1773 => x"70520b0b",
+1774 => x"56fdfa3f",
+1775 => x"80e6a00b",
+1776 => x"88050884",
+1777 => x"710508fc",
+1778 => x"06707b31",
+1779 => x"9fef05e0",
+1780 => x"8006e080",
+1781 => x"05520b0b",
+1782 => x"5555a080",
+1783 => x"75249838",
+1784 => x"80520b0b",
+1785 => x"7551fdcf",
+1786 => x"3f80e6a8",
+1787 => x"0814530b",
+1788 => x"0b728008",
+1789 => x"2e913875",
+1790 => x"51fdbb3f",
+1791 => x"80530b0b",
+1792 => x"72800c87",
+1793 => x"3d0d0474",
+1794 => x"30520b0b",
+1795 => x"7551fda7",
+1796 => x"3f8008ff",
+1797 => x"2eab3880",
+1798 => x"e6a00b88",
+1799 => x"05087476",
+1800 => x"31810784",
+1801 => x"72050c53",
+1802 => x"0b0b80e5",
+1803 => x"e4087531",
+1804 => x"80e5e40c",
+1805 => x"7551fcfe",
+1806 => x"3f810b80",
+1807 => x"0c873d0d",
+1808 => x"0480520b",
+1809 => x"0b7551fc",
+1810 => x"ee3f80e6",
+1811 => x"a00b8805",
+1812 => x"08800871",
+1813 => x"31540b0b",
+1814 => x"540b0b8f",
+1815 => x"7325ff97",
+1816 => x"38800880",
+1817 => x"e6940831",
+1818 => x"80e5e40c",
+1819 => x"72810784",
+1820 => x"150c7551",
+1821 => x"fcc03f80",
+1822 => x"530b0bff",
+1823 => x"8339f73d",
+1824 => x"0d7b7d54",
+1825 => x"0b0b5a72",
+1826 => x"802e82ab",
+1827 => x"387951fc",
+1828 => x"a43ff873",
+1829 => x"05847105",
+1830 => x"0870fe06",
+1831 => x"70730584",
+1832 => x"710508fc",
+1833 => x"065c5758",
+1834 => x"540b0b57",
+1835 => x"80e6a808",
+1836 => x"742e838b",
+1837 => x"38778415",
+1838 => x"0c807381",
+1839 => x"0656590b",
+1840 => x"740b792e",
+1841 => x"81f53877",
+1842 => x"14847105",
+1843 => x"08810656",
+1844 => x"530b0b74",
+1845 => x"a3387716",
+1846 => x"56788287",
+1847 => x"38881408",
+1848 => x"550b0b74",
+1849 => x"80e6a82e",
+1850 => x"83a7388c",
+1851 => x"1408708c",
+1852 => x"170c7588",
+1853 => x"72050c58",
+1854 => x"75810784",
+1855 => x"180c7517",
+1856 => x"76710c54",
+1857 => x"0b0b7881",
+1858 => x"a93883ff",
+1859 => x"762781e5",
+1860 => x"3875892a",
+1861 => x"76832a54",
+1862 => x"0b0b540b",
+1863 => x"0b73802e",
+1864 => x"80cb3875",
+1865 => x"862ab805",
+1866 => x"530b0b84",
+1867 => x"7427be38",
+1868 => x"80db1453",
+1869 => x"0b0b9474",
+1870 => x"27b33875",
+1871 => x"8c2a80ee",
+1872 => x"05530b0b",
+1873 => x"80d47427",
+1874 => x"a438758f",
+1875 => x"2a80f705",
+1876 => x"530b0b82",
+1877 => x"d4742795",
+1878 => x"3875922a",
+1879 => x"80fc0553",
+1880 => x"0b0b8ad4",
+1881 => x"74278638",
+1882 => x"80fe530b",
+1883 => x"0b721010",
+1884 => x"1080e6a0",
+1885 => x"05887105",
+1886 => x"0855550b",
+1887 => x"730b752e",
+1888 => x"82da3884",
+1889 => x"1408fc06",
+1890 => x"59750b79",
+1891 => x"278f3888",
+1892 => x"1408540b",
+1893 => x"0b73752e",
+1894 => x"098106e7",
+1895 => x"388c1408",
+1896 => x"708c190c",
+1897 => x"7488190c",
+1898 => x"77887205",
+1899 => x"0c55768c",
+1900 => x"150c7951",
+1901 => x"fa803f8b",
+1902 => x"3d0d0476",
+1903 => x"08777131",
+1904 => x"58760588",
+1905 => x"18085656",
+1906 => x"0b7480e6",
+1907 => x"a82e80ea",
+1908 => x"388c1708",
+1909 => x"708c170c",
+1910 => x"75887205",
+1911 => x"0c530b0b",
+1912 => x"fde53988",
+1913 => x"14088c15",
+1914 => x"08708c73",
+1915 => x"050c5988",
+1916 => x"190cfe84",
+1917 => x"3975832a",
+1918 => x"70540b0b",
+1919 => x"540b0b80",
+1920 => x"742481a2",
+1921 => x"3872822c",
+1922 => x"81712b80",
+1923 => x"e6a40807",
+1924 => x"80e6a00b",
+1925 => x"84050c74",
+1926 => x"10101080",
+1927 => x"e6a00588",
+1928 => x"71050871",
+1929 => x"8c1b0c70",
+1930 => x"881b0c79",
+1931 => x"8873050c",
+1932 => x"565a5576",
+1933 => x"8c150cfe",
+1934 => x"f9398159",
+1935 => x"fd893977",
+1936 => x"16738106",
+1937 => x"540b0b55",
+1938 => x"729a3876",
+1939 => x"08777131",
+1940 => x"5875058c",
+1941 => x"18088819",
+1942 => x"08718c72",
+1943 => x"050c8872",
+1944 => x"050c5555",
+1945 => x"0b0b7481",
+1946 => x"0784180c",
+1947 => x"7680e6a0",
+1948 => x"0b88050c",
+1949 => x"80e69c08",
+1950 => x"7526feb6",
+1951 => x"3880e698",
+1952 => x"08520b0b",
+1953 => x"7951faa8",
+1954 => x"3f7951f8",
+1955 => x"a93ffea7",
+1956 => x"3981778c",
+1957 => x"170c7788",
+1958 => x"170c758c",
+1959 => x"190c7588",
+1960 => x"190c59fc",
+1961 => x"d3398314",
+1962 => x"70822c81",
+1963 => x"712b80e6",
+1964 => x"a4080780",
+1965 => x"e6a00b84",
+1966 => x"050c7510",
+1967 => x"101080e6",
+1968 => x"a0058871",
+1969 => x"0508718c",
+1970 => x"1c0c7088",
+1971 => x"1c0c7a88",
+1972 => x"73050c57",
+1973 => x"5b56530b",
+1974 => x"0bfed839",
+1975 => x"807324a3",
+1976 => x"3872822c",
+1977 => x"81712b80",
+1978 => x"e6a40807",
+1979 => x"80e6a00b",
+1980 => x"84050c58",
+1981 => x"748c180c",
+1982 => x"7388180c",
+1983 => x"7688160c",
+1984 => x"fdac3983",
+1985 => x"73057082",
+1986 => x"2c81712b",
+1987 => x"80e6a408",
+1988 => x"0780e6a0",
+1989 => x"0b84050c",
+1990 => x"59530b0b",
+1991 => x"d7397070",
+1992 => x"7081c5ec",
+1993 => x"08510b0b",
+1994 => x"708a3881",
+1995 => x"c5f47081",
+1996 => x"c5ec0c51",
+1997 => x"740b7105",
+1998 => x"520b0bff",
+1999 => x"530b0b71",
+2000 => x"87fb8080",
+2001 => x"268a3871",
+2002 => x"81c5ec0c",
+2003 => x"70530b0b",
+2004 => x"72800c50",
+2005 => x"50500470",
+2006 => x"70707080",
+2007 => x"0b80e5d0",
+2008 => x"08540b0b",
+2009 => x"540b0b72",
+2010 => x"812e9d38",
+2011 => x"7381c5f0",
+2012 => x"0ccabe3f",
+2013 => x"c98a3f80",
+2014 => x"f5a8520b",
+2015 => x"0b8151d3",
+2016 => x"fa3f8008",
+2017 => x"518a8f3f",
+2018 => x"7281c5f0",
+2019 => x"0ccaa23f",
+2020 => x"c8ee3f80",
+2021 => x"f5a8520b",
+2022 => x"0b8151d3",
+2023 => x"de3f8008",
+2024 => x"5189f33f",
+2025 => x"00ff3900",
+2026 => x"ff39f53d",
+2027 => x"0d7e6081",
+2028 => x"c5f00870",
+2029 => x"5b585b5b",
+2030 => x"7580c538",
+2031 => x"777a25a2",
+2032 => x"38771b70",
+2033 => x"337081ff",
+2034 => x"06585859",
+2035 => x"758a2e99",
+2036 => x"387681ff",
+2037 => x"0651c9b4",
+2038 => x"3f811858",
+2039 => x"790b7824",
+2040 => x"e0387980",
+2041 => x"0c8d3d0d",
+2042 => x"048d51c9",
+2043 => x"9f3f7833",
+2044 => x"7081ff06",
+2045 => x"520b0b57",
+2046 => x"c9923f81",
+2047 => x"1858dd39",
+2048 => x"79557a54",
+2049 => x"0b0b7d53",
+2050 => x"0b0b8552",
+2051 => x"0b0b8d3d",
+2052 => x"fc0551c8",
+2053 => x"af3f8008",
+2054 => x"5688f43f",
+2055 => x"7b80080c",
+2056 => x"75800c8d",
+2057 => x"3d0d04f6",
+2058 => x"3d0d7d7f",
+2059 => x"81c5f008",
+2060 => x"705a585a",
+2061 => x"5a7580ca",
+2062 => x"38767925",
+2063 => x"b638761a",
+2064 => x"58c8a53f",
+2065 => x"80087834",
+2066 => x"800b8008",
+2067 => x"81ff0657",
+2068 => x"580b758a",
+2069 => x"2ea83875",
+2070 => x"8d327030",
+2071 => x"7080257a",
+2072 => x"07515156",
+2073 => x"0b0b7580",
+2074 => x"c0388117",
+2075 => x"57780b77",
+2076 => x"24cc3876",
+2077 => x"560b0b75",
+2078 => x"800c8c3d",
+2079 => x"0d048158",
+2080 => x"d6397855",
+2081 => x"79540b0b",
+2082 => x"7c530b0b",
+2083 => x"84520b0b",
+2084 => x"8c3dfc05",
+2085 => x"51c7ad3f",
+2086 => x"80085687",
+2087 => x"f23f7a80",
+2088 => x"080c7580",
+2089 => x"0c8c3d0d",
+2090 => x"04811756",
+2091 => x"c839f93d",
+2092 => x"0d795781",
+2093 => x"c5f00880",
+2094 => x"2eb23876",
+2095 => x"518ac03f",
+2096 => x"7b567a55",
+2097 => x"80088105",
+2098 => x"540b0b76",
+2099 => x"530b0b82",
+2100 => x"520b0b89",
+2101 => x"3dfc0551",
+2102 => x"c6ea3f80",
+2103 => x"085787af",
+2104 => x"3f778008",
+2105 => x"0c76800c",
+2106 => x"893d0d04",
+2107 => x"87a13f85",
+2108 => x"0b80080c",
+2109 => x"ff0b800c",
+2110 => x"893d0d04",
+2111 => x"fb3d0d81",
+2112 => x"c5f00870",
+2113 => x"56540b0b",
+2114 => x"73883874",
+2115 => x"800c873d",
+2116 => x"0d047753",
+2117 => x"0b0b8352",
+2118 => x"0b0b873d",
+2119 => x"fc0551c6",
+2120 => x"a33f8008",
+2121 => x"540b0b86",
+2122 => x"e63f7580",
+2123 => x"080c7380",
+2124 => x"0c873d0d",
+2125 => x"04ff0b80",
+2126 => x"0c04fb3d",
+2127 => x"0d775581",
+2128 => x"c5f00880",
+2129 => x"2eae3874",
+2130 => x"5189b43f",
+2131 => x"80088105",
+2132 => x"540b0b74",
+2133 => x"530b0b87",
+2134 => x"520b0b87",
+2135 => x"3dfc0551",
+2136 => x"c5e23f80",
+2137 => x"085586a7",
+2138 => x"3f758008",
+2139 => x"0c74800c",
+2140 => x"873d0d04",
+2141 => x"86993f85",
+2142 => x"0b80080c",
+2143 => x"ff0b800c",
+2144 => x"873d0d04",
+2145 => x"fa3d0d81",
+2146 => x"c5f00880",
+2147 => x"2ea8387a",
+2148 => x"5579540b",
+2149 => x"0b78530b",
+2150 => x"0b86520b",
+2151 => x"0b883dfc",
+2152 => x"0551c5a0",
+2153 => x"3f800856",
+2154 => x"85e53f76",
+2155 => x"80080c75",
+2156 => x"800c883d",
+2157 => x"0d0485d7",
+2158 => x"3f9d0b80",
+2159 => x"080cff0b",
+2160 => x"800c883d",
+2161 => x"0d04f73d",
+2162 => x"0d7b7d5b",
+2163 => x"59bc530b",
+2164 => x"0b80520b",
+2165 => x"0b795186",
+2166 => x"fd3f8070",
+2167 => x"56579856",
+2168 => x"74197033",
+2169 => x"70782b79",
+2170 => x"078118f8",
+2171 => x"1a5a5859",
+2172 => x"55588475",
+2173 => x"24ea3876",
+2174 => x"7a238419",
+2175 => x"58807056",
+2176 => x"57985674",
+2177 => x"18703370",
+2178 => x"782b7907",
+2179 => x"8118f81a",
+2180 => x"5a585951",
+2181 => x"540b0b84",
+2182 => x"7524e838",
+2183 => x"76821b23",
+2184 => x"88195880",
+2185 => x"70565798",
+2186 => x"56741870",
+2187 => x"3370782b",
+2188 => x"79078118",
+2189 => x"f81a5a58",
+2190 => x"5951540b",
+2191 => x"0b847524",
+2192 => x"e8387684",
+2193 => x"1b0c8c19",
+2194 => x"58807056",
+2195 => x"57985674",
+2196 => x"18703370",
+2197 => x"782b7907",
+2198 => x"8118f81a",
+2199 => x"5a585951",
+2200 => x"540b0b84",
+2201 => x"7524e838",
+2202 => x"76881b23",
+2203 => x"90195880",
+2204 => x"70565798",
+2205 => x"56741870",
+2206 => x"3370782b",
+2207 => x"79078118",
+2208 => x"f81a5a58",
+2209 => x"5951540b",
+2210 => x"0b847524",
+2211 => x"e838768a",
+2212 => x"1b239419",
+2213 => x"58807056",
+2214 => x"57985674",
+2215 => x"18703370",
+2216 => x"782b7907",
+2217 => x"8118f81a",
+2218 => x"5a585951",
+2219 => x"540b0b84",
+2220 => x"7524e838",
+2221 => x"768c1b23",
+2222 => x"98195880",
+2223 => x"70565798",
+2224 => x"56741870",
+2225 => x"3370782b",
+2226 => x"79078118",
+2227 => x"f81a5a58",
+2228 => x"5951540b",
+2229 => x"0b847524",
+2230 => x"e838768e",
+2231 => x"1b239c19",
+2232 => x"58807056",
+2233 => x"57b85674",
+2234 => x"18703370",
+2235 => x"782b7907",
+2236 => x"8118f81a",
+2237 => x"5a58595a",
+2238 => x"540b0b88",
+2239 => x"7524e838",
+2240 => x"76901b0c",
+2241 => x"8b3d0d04",
+2242 => x"e93d0d6a",
+2243 => x"81c5f008",
+2244 => x"57570b75",
+2245 => x"933880c0",
+2246 => x"800b8418",
+2247 => x"0c75ac18",
+2248 => x"0c75800c",
+2249 => x"993d0d04",
+2250 => x"893d7055",
+2251 => x"6a540b0b",
+2252 => x"558a520b",
+2253 => x"0b993dff",
+2254 => x"bc0551c2",
+2255 => x"873f8008",
+2256 => x"77530b0b",
+2257 => x"75520b0b",
+2258 => x"56fcfb3f",
+2259 => x"82c13f77",
+2260 => x"80080c75",
+2261 => x"800c993d",
+2262 => x"0d04e93d",
+2263 => x"0d695781",
+2264 => x"c5f00880",
+2265 => x"2ebd3876",
+2266 => x"5185943f",
+2267 => x"893d7056",
+2268 => x"80088105",
+2269 => x"5577540b",
+2270 => x"0b568f52",
+2271 => x"0b0b993d",
+2272 => x"ffbc0551",
+2273 => x"c1be3f80",
+2274 => x"086b530b",
+2275 => x"0b76520b",
+2276 => x"0b57fcb2",
+2277 => x"3f81f83f",
+2278 => x"7780080c",
+2279 => x"76800c99",
+2280 => x"3d0d0481",
+2281 => x"ea3f850b",
+2282 => x"80080cff",
+2283 => x"0b800c99",
+2284 => x"3d0d04fc",
+2285 => x"3d0d8154",
+2286 => x"0b0b81c5",
+2287 => x"f0088838",
+2288 => x"73800c86",
+2289 => x"3d0d0476",
+2290 => x"530b0b97",
+2291 => x"b9520b0b",
+2292 => x"863dfc05",
+2293 => x"51c0ed3f",
+2294 => x"8008540b",
+2295 => x"0b81b03f",
+2296 => x"7480080c",
+2297 => x"73800c86",
+2298 => x"3d0d04f4",
+2299 => x"3d0d7e80",
+2300 => x"f5d40870",
+2301 => x"0881ff06",
+2302 => x"913df805",
+2303 => x"540b0b51",
+2304 => x"5959c29d",
+2305 => x"3f775780",
+2306 => x"540b0b76",
+2307 => x"557b7d58",
+2308 => x"520b0b0b",
+2309 => x"76530b0b",
+2310 => x"8e3df005",
+2311 => x"5184dc3f",
+2312 => x"797b5879",
+2313 => x"0c76841a",
+2314 => x"0c78800c",
+2315 => x"8e3d0d04",
+2316 => x"f43d0d7e",
+2317 => x"80f5d408",
+2318 => x"70087081",
+2319 => x"ff06923d",
+2320 => x"f8055551",
+2321 => x"5a5759c1",
+2322 => x"d83f7757",
+2323 => x"800b8b3d",
+2324 => x"59540b0b",
+2325 => x"76557b7d",
+2326 => x"58520b0b",
+2327 => x"0b76530b",
+2328 => x"0b775184",
+2329 => x"963f8056",
+2330 => x"bd84c076",
+2331 => x"5555797b",
+2332 => x"58520b0b",
+2333 => x"0b76530b",
+2334 => x"0b775183",
+2335 => x"fe3f7a57",
+2336 => x"78802e84",
+2337 => x"3876790c",
+2338 => x"76800c8e",
+2339 => x"3d0d0480",
+2340 => x"eea80880",
+2341 => x"0c04f73d",
+2342 => x"0d7b80ee",
+2343 => x"a80882c8",
+2344 => x"7105085a",
+2345 => x"540b0b5a",
+2346 => x"77802e80",
+2347 => x"eb388188",
+2348 => x"18841908",
+2349 => x"ff058171",
+2350 => x"2b595559",
+2351 => x"80742481",
+2352 => x"80388074",
+2353 => x"2480c138",
+2354 => x"73822b78",
+2355 => x"71058805",
+2356 => x"56568180",
+2357 => x"19087706",
+2358 => x"530b0b72",
+2359 => x"802e80c3",
+2360 => x"38781670",
+2361 => x"08530b0b",
+2362 => x"530b0b79",
+2363 => x"51740853",
+2364 => x"0b0b722d",
+2365 => x"ff14fc17",
+2366 => x"fc177981",
+2367 => x"2c5a5757",
+2368 => x"540b0b73",
+2369 => x"8025cb38",
+2370 => x"7708580b",
+2371 => x"0b77ff9e",
+2372 => x"3880eea8",
+2373 => x"08530b0b",
+2374 => x"bc730508",
+2375 => x"a9387951",
+2376 => x"f5823f74",
+2377 => x"08530b0b",
+2378 => x"722dff14",
+2379 => x"fc17fc17",
+2380 => x"79812c5a",
+2381 => x"5757540b",
+2382 => x"0b738025",
+2383 => x"ff9438c8",
+2384 => x"398057fe",
+2385 => x"fd397251",
+2386 => x"bc730508",
+2387 => x"540b0b73",
+2388 => x"2d7951f4",
+2389 => x"cf3ffb3d",
+2390 => x"0d777a71",
+2391 => x"028c05a3",
+2392 => x"05335854",
+2393 => x"0b0b540b",
+2394 => x"0b568373",
+2395 => x"2780e738",
+2396 => x"75830651",
+2397 => x"0b0b7080",
+2398 => x"dd387488",
+2399 => x"2b750770",
+2400 => x"71902b07",
+2401 => x"55518f73",
+2402 => x"27b33873",
+2403 => x"72708405",
+2404 => x"540b0b0c",
+2405 => x"71747170",
+2406 => x"8405530b",
+2407 => x"0b0c7471",
+2408 => x"70840553",
+2409 => x"0b0b0c74",
+2410 => x"71708405",
+2411 => x"530b0b0c",
+2412 => x"f014540b",
+2413 => x"0b520b0b",
+2414 => x"728f26cf",
+2415 => x"38837327",
+2416 => x"95387372",
+2417 => x"70840554",
+2418 => x"0b0b0cfc",
+2419 => x"7305530b",
+2420 => x"0b728326",
+2421 => x"ed38ff73",
+2422 => x"05510b0b",
+2423 => x"70ff2e98",
+2424 => x"38747270",
+2425 => x"8105540b",
+2426 => x"0b34ff71",
+2427 => x"05510b0b",
+2428 => x"70ff2e09",
+2429 => x"8106ea38",
+2430 => x"75800c87",
+2431 => x"3d0d0470",
+2432 => x"70707075",
+2433 => x"70718306",
+2434 => x"530b0b55",
+2435 => x"520b0b70",
+2436 => x"80c53871",
+2437 => x"70087009",
+2438 => x"f7fbfdff",
+2439 => x"720506f8",
+2440 => x"84828180",
+2441 => x"06540b0b",
+2442 => x"520b0b53",
+2443 => x"0b0b71a3",
+2444 => x"38847305",
+2445 => x"70087009",
+2446 => x"f7fbfdff",
+2447 => x"720506f8",
+2448 => x"84828180",
+2449 => x"06540b0b",
+2450 => x"520b0b53",
+2451 => x"0b0b7180",
+2452 => x"2edf3872",
+2453 => x"520b0b0b",
+2454 => x"0b713353",
+2455 => x"0b0b7280",
+2456 => x"2e8f3881",
+2457 => x"72057033",
+2458 => x"540b0b52",
+2459 => x"0b0b72f3",
+2460 => x"38717431",
+2461 => x"800c5050",
+2462 => x"505004e4",
+2463 => x"3d0d6ea1",
+2464 => x"3d08a33d",
+2465 => x"0859575f",
+2466 => x"80764d77",
+2467 => x"4ea33d08",
+2468 => x"a53d0857",
+2469 => x"4b0b754c",
+2470 => x"5e0b0b7d",
+2471 => x"6c2487b2",
+2472 => x"38806a24",
+2473 => x"87cd3869",
+2474 => x"6b58566b",
+2475 => x"6d5d460b",
+2476 => x"7b477544",
+2477 => x"76450b0b",
+2478 => x"64646868",
+2479 => x"5c5c5656",
+2480 => x"0b7481f5",
+2481 => x"38787627",
+2482 => x"82dd3875",
+2483 => x"81ff2683",
+2484 => x"2b5583ff",
+2485 => x"ff76278c",
+2486 => x"389055fe",
+2487 => x"800a7627",
+2488 => x"83389855",
+2489 => x"750b752a",
+2490 => x"80e3bc05",
+2491 => x"7033a077",
+2492 => x"31713157",
+2493 => x"55577480",
+2494 => x"2e953875",
+2495 => x"752ba076",
+2496 => x"317a772b",
+2497 => x"7c722a07",
+2498 => x"7c782b5d",
+2499 => x"5b59560b",
+2500 => x"0b75902a",
+2501 => x"7683ffff",
+2502 => x"0671540b",
+2503 => x"0b7a530b",
+2504 => x"0b595788",
+2505 => x"bf3f8008",
+2506 => x"5b88a53f",
+2507 => x"80088008",
+2508 => x"79297c90",
+2509 => x"2b7c902a",
+2510 => x"07565659",
+2511 => x"73752794",
+2512 => x"388008ff",
+2513 => x"05761555",
+2514 => x"59757426",
+2515 => x"87387474",
+2516 => x"2687f438",
+2517 => x"76520b0b",
+2518 => x"73753151",
+2519 => x"88863f80",
+2520 => x"085587ec",
+2521 => x"3f800880",
+2522 => x"0879297b",
+2523 => x"83ffff06",
+2524 => x"77902b07",
+2525 => x"56595773",
+2526 => x"78279638",
+2527 => x"8008ff05",
+2528 => x"76155557",
+2529 => x"75742689",
+2530 => x"38777426",
+2531 => x"77713158",
+2532 => x"5678902b",
+2533 => x"77075880",
+2534 => x"5b0b0b7a",
+2535 => x"4077417f",
+2536 => x"0b615654",
+2537 => x"0b0b7d80",
+2538 => x"dd38737f",
+2539 => x"0c747f84",
+2540 => x"050c7e80",
+2541 => x"0c9e3d0d",
+2542 => x"0480705c",
+2543 => x"58747926",
+2544 => x"d8387481",
+2545 => x"ff26832b",
+2546 => x"577483ff",
+2547 => x"ff2682bd",
+2548 => x"3874772a",
+2549 => x"80e3bc05",
+2550 => x"7033a079",
+2551 => x"31713159",
+2552 => x"5c5d7682",
+2553 => x"cf387654",
+2554 => x"0b0b7479",
+2555 => x"27853881",
+2556 => x"540b0b79",
+2557 => x"76277407",
+2558 => x"59815878",
+2559 => x"ff993876",
+2560 => x"58805bff",
+2561 => x"94397352",
+2562 => x"0b0b7453",
+2563 => x"0b0b9e3d",
+2564 => x"e80551d2",
+2565 => x"d43f6769",
+2566 => x"567f0c74",
+2567 => x"7f84050c",
+2568 => x"7e800c9e",
+2569 => x"3d0d0475",
+2570 => x"802e81d2",
+2571 => x"387581ff",
+2572 => x"26832b55",
+2573 => x"83ffff76",
+2574 => x"278c3890",
+2575 => x"55fe800a",
+2576 => x"76278338",
+2577 => x"9855750b",
+2578 => x"752a80e3",
+2579 => x"bc057033",
+2580 => x"a0773171",
+2581 => x"31575e54",
+2582 => x"0b0b7484",
+2583 => x"b8387876",
+2584 => x"31540b0b",
+2585 => x"8176902a",
+2586 => x"7783ffff",
+2587 => x"065f5d5b",
+2588 => x"0b7b520b",
+2589 => x"0b735185",
+2590 => x"eb3f8008",
+2591 => x"5785d13f",
+2592 => x"80088008",
+2593 => x"7e297890",
+2594 => x"2b7c902a",
+2595 => x"07565659",
+2596 => x"73752794",
+2597 => x"388008ff",
+2598 => x"05761555",
+2599 => x"59757426",
+2600 => x"87387474",
+2601 => x"26859738",
+2602 => x"7b520b0b",
+2603 => x"73753151",
+2604 => x"85b23f80",
+2605 => x"08558598",
+2606 => x"3f800880",
+2607 => x"087e297b",
+2608 => x"83ffff06",
+2609 => x"77902b07",
+2610 => x"56595773",
+2611 => x"78279638",
+2612 => x"8008ff05",
+2613 => x"76155557",
+2614 => x"75742689",
+2615 => x"38777426",
+2616 => x"77713158",
+2617 => x"5a78902b",
+2618 => x"77077b41",
+2619 => x"410b7f0b",
+2620 => x"6156540b",
+2621 => x"0b7d802e",
+2622 => x"fdb038fe",
+2623 => x"89397552",
+2624 => x"0b0b8151",
+2625 => x"84ca3f80",
+2626 => x"0856fea1",
+2627 => x"399057fe",
+2628 => x"800a7527",
+2629 => x"fdbb3898",
+2630 => x"75712a80",
+2631 => x"e3bc0570",
+2632 => x"33a07331",
+2633 => x"7131530b",
+2634 => x"0b5d5e57",
+2635 => x"0b0b7680",
+2636 => x"2efdb338",
+2637 => x"a0773175",
+2638 => x"782b7772",
+2639 => x"2a077779",
+2640 => x"2b7b7a2b",
+2641 => x"7d742a07",
+2642 => x"7d7b2b73",
+2643 => x"902a7483",
+2644 => x"ffff0671",
+2645 => x"597f772a",
+2646 => x"585e5c41",
+2647 => x"5f585c54",
+2648 => x"0b0b8480",
+2649 => x"3f800854",
+2650 => x"0b0b83e4",
+2651 => x"3f800880",
+2652 => x"08792975",
+2653 => x"902b7e90",
+2654 => x"2a075656",
+2655 => x"59737527",
+2656 => x"99388008",
+2657 => x"ff057b15",
+2658 => x"55597a74",
+2659 => x"268c3873",
+2660 => x"75278738",
+2661 => x"ff197b15",
+2662 => x"55597652",
+2663 => x"0b0b7375",
+2664 => x"315183c0",
+2665 => x"3f800855",
+2666 => x"83a63f80",
+2667 => x"08800879",
+2668 => x"297d83ff",
+2669 => x"ff067790",
+2670 => x"2b075659",
+2671 => x"57737827",
+2672 => x"99388008",
+2673 => x"ff057b15",
+2674 => x"55577a74",
+2675 => x"268c3873",
+2676 => x"78278738",
+2677 => x"ff177b15",
+2678 => x"55570b73",
+2679 => x"78317990",
+2680 => x"2b780770",
+2681 => x"83ffff06",
+2682 => x"71902a79",
+2683 => x"83ffff06",
+2684 => x"7a902a73",
+2685 => x"72297373",
+2686 => x"29747329",
+2687 => x"76742973",
+2688 => x"902a0572",
+2689 => x"05575543",
+2690 => x"5f5b585a",
+2691 => x"57595a74",
+2692 => x"7c278638",
+2693 => x"84808017",
+2694 => x"5774902a",
+2695 => x"177983ff",
+2696 => x"ff067684",
+2697 => x"80802905",
+2698 => x"57570b0b",
+2699 => x"767a269a",
+2700 => x"38767a32",
+2701 => x"70307072",
+2702 => x"07802556",
+2703 => x"5a5b7c76",
+2704 => x"27fad438",
+2705 => x"73802efa",
+2706 => x"ce38ff18",
+2707 => x"58805bfa",
+2708 => x"c839ff76",
+2709 => x"530b0b77",
+2710 => x"540b0b9f",
+2711 => x"3de80552",
+2712 => x"0b0b5ece",
+2713 => x"843f6769",
+2714 => x"574c0b75",
+2715 => x"4d698025",
+2716 => x"f8b5387d",
+2717 => x"096a6c5c",
+2718 => x"530b0b7a",
+2719 => x"540b0b9f",
+2720 => x"3de80552",
+2721 => x"0b0b5ecd",
+2722 => x"e03f6769",
+2723 => x"714c704d",
+2724 => x"5856f897",
+2725 => x"39a07531",
+2726 => x"76762b7a",
+2727 => x"772b7c73",
+2728 => x"2a077c78",
+2729 => x"2b72902a",
+2730 => x"7383ffff",
+2731 => x"0671587e",
+2732 => x"762a5742",
+2733 => x"405d5d57",
+2734 => x"5881a93f",
+2735 => x"80085781",
+2736 => x"8f3f8008",
+2737 => x"80087e29",
+2738 => x"78902b7d",
+2739 => x"902a0756",
+2740 => x"56597375",
+2741 => x"27993880",
+2742 => x"08ff0576",
+2743 => x"15555975",
+2744 => x"74268c38",
+2745 => x"73752787",
+2746 => x"38ff1976",
+2747 => x"1555597b",
+2748 => x"520b0b73",
+2749 => x"75315180",
+2750 => x"eb3f8008",
+2751 => x"5580d13f",
+2752 => x"80088008",
+2753 => x"7e297c83",
+2754 => x"ffff0670",
+2755 => x"78902b07",
+2756 => x"51565858",
+2757 => x"73772799",
+2758 => x"388008ff",
+2759 => x"05761555",
+2760 => x"58757426",
+2761 => x"8c387377",
+2762 => x"278738ff",
+2763 => x"18761555",
+2764 => x"5878902b",
+2765 => x"78077478",
+2766 => x"31555bfa",
+2767 => x"b339ff19",
+2768 => x"76155559",
+2769 => x"fae239ff",
+2770 => x"19761555",
+2771 => x"59f88539",
+2772 => x"70707080",
+2773 => x"530b0b75",
+2774 => x"520b0b74",
+2775 => x"51ceaf3f",
+2776 => x"50505004",
+2777 => x"70707081",
+2778 => x"530b0b75",
+2779 => x"520b0b74",
+2780 => x"51ce9b3f",
+2781 => x"50505004",
+2782 => x"707080f5",
+2783 => x"b00bfc05",
+2784 => x"7008520b",
+2785 => x"0b520b0b",
+2786 => x"0b70ff2e",
+2787 => x"9738702d",
+2788 => x"fc720570",
+2789 => x"08520b0b",
+2790 => x"520b0b0b",
+2791 => x"70ff2e09",
+2792 => x"8106eb38",
+2793 => x"50500404",
+2794 => x"ffb4963f",
+2795 => x"04000000",
+2796 => x"30313233",
+2797 => x"34353637",
+2798 => x"38390000",
+2799 => x"44485259",
+2800 => x"53544f4e",
+2801 => x"45205052",
+2802 => x"4f475241",
+2803 => x"4d2c2053",
+2804 => x"4f4d4520",
+2805 => x"53545249",
+2806 => x"4e470000",
+2807 => x"44485259",
+2808 => x"53544f4e",
+2809 => x"45205052",
+2810 => x"4f475241",
+2811 => x"4d2c2031",
+2812 => x"27535420",
+2813 => x"53545249",
+2814 => x"4e470000",
+2815 => x"44687279",
+2816 => x"73746f6e",
+2817 => x"65204265",
+2818 => x"6e63686d",
+2819 => x"61726b2c",
+2820 => x"20566572",
+2821 => x"73696f6e",
+2822 => x"20322e31",
+2823 => x"20284c61",
+2824 => x"6e677561",
+2825 => x"67653a20",
+2826 => x"43290a00",
+2827 => x"50726f67",
+2828 => x"72616d20",
+2829 => x"636f6d70",
+2830 => x"696c6564",
+2831 => x"20776974",
+2832 => x"68202772",
+2833 => x"65676973",
+2834 => x"74657227",
+2835 => x"20617474",
+2836 => x"72696275",
+2837 => x"74650a00",
+2838 => x"45786563",
+2839 => x"7574696f",
+2840 => x"6e207374",
+2841 => x"61727473",
+2842 => x"2c202564",
+2843 => x"2072756e",
+2844 => x"73207468",
+2845 => x"726f7567",
+2846 => x"68204468",
+2847 => x"72797374",
+2848 => x"6f6e650a",
+2849 => x"00000000",
+2850 => x"44485259",
+2851 => x"53544f4e",
+2852 => x"45205052",
+2853 => x"4f475241",
+2854 => x"4d2c2032",
+2855 => x"274e4420",
+2856 => x"53545249",
+2857 => x"4e470000",
+2858 => x"45786563",
+2859 => x"7574696f",
+2860 => x"6e20656e",
+2861 => x"64730a00",
+2862 => x"46696e61",
+2863 => x"6c207661",
+2864 => x"6c756573",
+2865 => x"206f6620",
+2866 => x"74686520",
+2867 => x"76617269",
+2868 => x"61626c65",
+2869 => x"73207573",
+2870 => x"65642069",
+2871 => x"6e207468",
+2872 => x"65206265",
+2873 => x"6e63686d",
+2874 => x"61726b3a",
+2875 => x"0a000000",
+2876 => x"496e745f",
+2877 => x"476c6f62",
+2878 => x"3a202020",
+2879 => x"20202020",
+2880 => x"20202020",
+2881 => x"2025640a",
+2882 => x"00000000",
+2883 => x"20202020",
+2884 => x"20202020",
+2885 => x"73686f75",
+2886 => x"6c642062",
+2887 => x"653a2020",
+2888 => x"2025640a",
+2889 => x"00000000",
+2890 => x"426f6f6c",
+2891 => x"5f476c6f",
+2892 => x"623a2020",
+2893 => x"20202020",
+2894 => x"20202020",
+2895 => x"2025640a",
+2896 => x"00000000",
+2897 => x"43685f31",
+2898 => x"5f476c6f",
+2899 => x"623a2020",
+2900 => x"20202020",
+2901 => x"20202020",
+2902 => x"2025630a",
+2903 => x"00000000",
+2904 => x"20202020",
+2905 => x"20202020",
+2906 => x"73686f75",
+2907 => x"6c642062",
+2908 => x"653a2020",
+2909 => x"2025630a",
+2910 => x"00000000",
+2911 => x"43685f32",
+2912 => x"5f476c6f",
+2913 => x"623a2020",
+2914 => x"20202020",
+2915 => x"20202020",
+2916 => x"2025630a",
+2917 => x"00000000",
+2918 => x"4172725f",
+2919 => x"315f476c",
+2920 => x"6f625b38",
+2921 => x"5d3a2020",
+2922 => x"20202020",
+2923 => x"2025640a",
+2924 => x"00000000",
+2925 => x"4172725f",
+2926 => x"325f476c",
+2927 => x"6f625b38",
+2928 => x"5d5b375d",
+2929 => x"3a202020",
+2930 => x"2025640a",
+2931 => x"00000000",
+2932 => x"20202020",
+2933 => x"20202020",
+2934 => x"73686f75",
+2935 => x"6c642062",
+2936 => x"653a2020",
+2937 => x"204e756d",
+2938 => x"6265725f",
+2939 => x"4f665f52",
+2940 => x"756e7320",
+2941 => x"2b203130",
+2942 => x"0a000000",
+2943 => x"5074725f",
+2944 => x"476c6f62",
+2945 => x"2d3e0a00",
+2946 => x"20205074",
+2947 => x"725f436f",
+2948 => x"6d703a20",
+2949 => x"20202020",
+2950 => x"20202020",
+2951 => x"2025640a",
+2952 => x"00000000",
+2953 => x"20202020",
+2954 => x"20202020",
+2955 => x"73686f75",
+2956 => x"6c642062",
+2957 => x"653a2020",
+2958 => x"2028696d",
+2959 => x"706c656d",
+2960 => x"656e7461",
+2961 => x"74696f6e",
+2962 => x"2d646570",
+2963 => x"656e6465",
+2964 => x"6e74290a",
+2965 => x"00000000",
+2966 => x"20204469",
+2967 => x"7363723a",
+2968 => x"20202020",
+2969 => x"20202020",
+2970 => x"20202020",
+2971 => x"2025640a",
+2972 => x"00000000",
+2973 => x"2020456e",
+2974 => x"756d5f43",
+2975 => x"6f6d703a",
+2976 => x"20202020",
+2977 => x"20202020",
+2978 => x"2025640a",
+2979 => x"00000000",
+2980 => x"2020496e",
+2981 => x"745f436f",
+2982 => x"6d703a20",
+2983 => x"20202020",
+2984 => x"20202020",
+2985 => x"2025640a",
+2986 => x"00000000",
+2987 => x"20205374",
+2988 => x"725f436f",
+2989 => x"6d703a20",
+2990 => x"20202020",
+2991 => x"20202020",
+2992 => x"2025730a",
+2993 => x"00000000",
+2994 => x"20202020",
+2995 => x"20202020",
+2996 => x"73686f75",
+2997 => x"6c642062",
+2998 => x"653a2020",
+2999 => x"20444852",
+3000 => x"5953544f",
+3001 => x"4e452050",
+3002 => x"524f4752",
+3003 => x"414d2c20",
+3004 => x"534f4d45",
+3005 => x"20535452",
+3006 => x"494e470a",
+3007 => x"00000000",
+3008 => x"4e657874",
+3009 => x"5f507472",
+3010 => x"5f476c6f",
+3011 => x"622d3e0a",
+3012 => x"00000000",
+3013 => x"20202020",
+3014 => x"20202020",
+3015 => x"73686f75",
+3016 => x"6c642062",
+3017 => x"653a2020",
+3018 => x"2028696d",
+3019 => x"706c656d",
+3020 => x"656e7461",
+3021 => x"74696f6e",
+3022 => x"2d646570",
+3023 => x"656e6465",
+3024 => x"6e74292c",
+3025 => x"2073616d",
+3026 => x"65206173",
+3027 => x"2061626f",
+3028 => x"76650a00",
+3029 => x"496e745f",
+3030 => x"315f4c6f",
+3031 => x"633a2020",
+3032 => x"20202020",
+3033 => x"20202020",
+3034 => x"2025640a",
+3035 => x"00000000",
+3036 => x"496e745f",
+3037 => x"325f4c6f",
+3038 => x"633a2020",
+3039 => x"20202020",
+3040 => x"20202020",
+3041 => x"2025640a",
+3042 => x"00000000",
+3043 => x"496e745f",
+3044 => x"335f4c6f",
+3045 => x"633a2020",
+3046 => x"20202020",
+3047 => x"20202020",
+3048 => x"2025640a",
+3049 => x"00000000",
+3050 => x"456e756d",
+3051 => x"5f4c6f63",
+3052 => x"3a202020",
+3053 => x"20202020",
+3054 => x"20202020",
+3055 => x"2025640a",
+3056 => x"00000000",
+3057 => x"5374725f",
+3058 => x"315f4c6f",
+3059 => x"633a2020",
+3060 => x"20202020",
+3061 => x"20202020",
+3062 => x"2025730a",
+3063 => x"00000000",
+3064 => x"20202020",
+3065 => x"20202020",
+3066 => x"73686f75",
+3067 => x"6c642062",
+3068 => x"653a2020",
+3069 => x"20444852",
+3070 => x"5953544f",
+3071 => x"4e452050",
+3072 => x"524f4752",
+3073 => x"414d2c20",
+3074 => x"31275354",
+3075 => x"20535452",
+3076 => x"494e470a",
+3077 => x"00000000",
+3078 => x"5374725f",
+3079 => x"325f4c6f",
+3080 => x"633a2020",
+3081 => x"20202020",
+3082 => x"20202020",
+3083 => x"2025730a",
+3084 => x"00000000",
+3085 => x"20202020",
+3086 => x"20202020",
+3087 => x"73686f75",
+3088 => x"6c642062",
+3089 => x"653a2020",
+3090 => x"20444852",
+3091 => x"5953544f",
+3092 => x"4e452050",
+3093 => x"524f4752",
+3094 => x"414d2c20",
+3095 => x"32274e44",
+3096 => x"20535452",
+3097 => x"494e470a",
+3098 => x"00000000",
+3099 => x"55736572",
+3100 => x"2074696d",
+3101 => x"653a2025",
+3102 => x"640a0000",
+3103 => x"4d696372",
+3104 => x"6f736563",
+3105 => x"6f6e6473",
+3106 => x"20666f72",
+3107 => x"206f6e65",
+3108 => x"2072756e",
+3109 => x"20746872",
+3110 => x"6f756768",
+3111 => x"20446872",
+3112 => x"7973746f",
+3113 => x"6e653a20",
+3114 => x"00000000",
+3115 => x"2564200a",
+3116 => x"00000000",
+3117 => x"44687279",
+3118 => x"73746f6e",
+3119 => x"65732070",
+3120 => x"65722053",
+3121 => x"65636f6e",
+3122 => x"643a2020",
+3123 => x"20202020",
+3124 => x"20202020",
+3125 => x"20202020",
+3126 => x"20202020",
+3127 => x"20202020",
+3128 => x"00000000",
+3129 => x"56415820",
+3130 => x"4d495053",
+3131 => x"20726174",
+3132 => x"696e6720",
+3133 => x"2a203130",
+3134 => x"3030203d",
+3135 => x"20256420",
+3136 => x"0a000000",
+3137 => x"50726f67",
+3138 => x"72616d20",
+3139 => x"636f6d70",
+3140 => x"696c6564",
+3141 => x"20776974",
+3142 => x"686f7574",
+3143 => x"20277265",
+3144 => x"67697374",
+3145 => x"65722720",
+3146 => x"61747472",
+3147 => x"69627574",
+3148 => x"650a0000",
+3149 => x"4d656173",
+3150 => x"75726564",
+3151 => x"2074696d",
+3152 => x"6520746f",
+3153 => x"6f20736d",
+3154 => x"616c6c20",
+3155 => x"746f206f",
+3156 => x"62746169",
+3157 => x"6e206d65",
+3158 => x"616e696e",
+3159 => x"6766756c",
+3160 => x"20726573",
+3161 => x"756c7473",
+3162 => x"0a000000",
+3163 => x"506c6561",
+3164 => x"73652069",
+3165 => x"6e637265",
+3166 => x"61736520",
+3167 => x"6e756d62",
+3168 => x"6572206f",
+3169 => x"66207275",
+3170 => x"6e730a00",
+3171 => x"44485259",
+3172 => x"53544f4e",
+3173 => x"45205052",
+3174 => x"4f475241",
+3175 => x"4d2c2033",
+3176 => x"27524420",
+3177 => x"53545249",
+3178 => x"4e470000",
+3179 => x"43000000",
+3180 => x"64756d6d",
+3181 => x"792e6578",
+3182 => x"65000000",
+3183 => x"00010202",
+3184 => x"03030303",
+3185 => x"04040404",
+3186 => x"04040404",
+3187 => x"05050505",
+3188 => x"05050505",
+3189 => x"05050505",
+3190 => x"05050505",
+3191 => x"06060606",
+3192 => x"06060606",
+3193 => x"06060606",
+3194 => x"06060606",
+3195 => x"06060606",
+3196 => x"06060606",
+3197 => x"06060606",
+3198 => x"06060606",
+3199 => x"07070707",
+3200 => x"07070707",
+3201 => x"07070707",
+3202 => x"07070707",
+3203 => x"07070707",
+3204 => x"07070707",
+3205 => x"07070707",
+3206 => x"07070707",
+3207 => x"07070707",
+3208 => x"07070707",
+3209 => x"07070707",
+3210 => x"07070707",
+3211 => x"07070707",
+3212 => x"07070707",
+3213 => x"07070707",
+3214 => x"07070707",
+3215 => x"08080808",
+3216 => x"08080808",
+3217 => x"08080808",
+3218 => x"08080808",
+3219 => x"08080808",
+3220 => x"08080808",
+3221 => x"08080808",
+3222 => x"08080808",
+3223 => x"08080808",
+3224 => x"08080808",
+3225 => x"08080808",
+3226 => x"08080808",
+3227 => x"08080808",
+3228 => x"08080808",
+3229 => x"08080808",
+3230 => x"08080808",
+3231 => x"08080808",
+3232 => x"08080808",
+3233 => x"08080808",
+3234 => x"08080808",
+3235 => x"08080808",
+3236 => x"08080808",
+3237 => x"08080808",
+3238 => x"08080808",
+3239 => x"08080808",
+3240 => x"08080808",
+3241 => x"08080808",
+3242 => x"08080808",
+3243 => x"08080808",
+3244 => x"08080808",
+3245 => x"08080808",
+3246 => x"08080808",
+3247 => x"00ffffff",
+3248 => x"ff00ffff",
+3249 => x"ffff00ff",
+3250 => x"ffffff00",
+3251 => x"00000000",
+3252 => x"00000000",
+3253 => x"00000000",
+3254 => x"00003ab8",
+3255 => x"000186a0", -- iterations
+3256 => x"00000000",
+3257 => x"00000000",
+3258 => x"00000000",
+3259 => x"00000000",
+3260 => x"00000000",
+3261 => x"00000000",
+3262 => x"00000000",
+3263 => x"00000000",
+3264 => x"00000000",
+3265 => x"00000000",
+3266 => x"00000000",
+3267 => x"00000000",
+3268 => x"00000000",
+3269 => x"ffffffff",
+3270 => x"00000000",
+3271 => x"00020000",
+3272 => x"00000000",
+3273 => x"00000000",
+3274 => x"00003320",
+3275 => x"00003320",
+3276 => x"00003328",
+3277 => x"00003328",
+3278 => x"00003330",
+3279 => x"00003330",
+3280 => x"00003338",
+3281 => x"00003338",
+3282 => x"00003340",
+3283 => x"00003340",
+3284 => x"00003348",
+3285 => x"00003348",
+3286 => x"00003350",
+3287 => x"00003350",
+3288 => x"00003358",
+3289 => x"00003358",
+3290 => x"00003360",
+3291 => x"00003360",
+3292 => x"00003368",
+3293 => x"00003368",
+3294 => x"00003370",
+3295 => x"00003370",
+3296 => x"00003378",
+3297 => x"00003378",
+3298 => x"00003380",
+3299 => x"00003380",
+3300 => x"00003388",
+3301 => x"00003388",
+3302 => x"00003390",
+3303 => x"00003390",
+3304 => x"00003398",
+3305 => x"00003398",
+3306 => x"000033a0",
+3307 => x"000033a0",
+3308 => x"000033a8",
+3309 => x"000033a8",
+3310 => x"000033b0",
+3311 => x"000033b0",
+3312 => x"000033b8",
+3313 => x"000033b8",
+3314 => x"000033c0",
+3315 => x"000033c0",
+3316 => x"000033c8",
+3317 => x"000033c8",
+3318 => x"000033d0",
+3319 => x"000033d0",
+3320 => x"000033d8",
+3321 => x"000033d8",
+3322 => x"000033e0",
+3323 => x"000033e0",
+3324 => x"000033e8",
+3325 => x"000033e8",
+3326 => x"000033f0",
+3327 => x"000033f0",
+3328 => x"000033f8",
+3329 => x"000033f8",
+3330 => x"00003400",
+3331 => x"00003400",
+3332 => x"00003408",
+3333 => x"00003408",
+3334 => x"00003410",
+3335 => x"00003410",
+3336 => x"00003418",
+3337 => x"00003418",
+3338 => x"00003420",
+3339 => x"00003420",
+3340 => x"00003428",
+3341 => x"00003428",
+3342 => x"00003430",
+3343 => x"00003430",
+3344 => x"00003438",
+3345 => x"00003438",
+3346 => x"00003440",
+3347 => x"00003440",
+3348 => x"00003448",
+3349 => x"00003448",
+3350 => x"00003450",
+3351 => x"00003450",
+3352 => x"00003458",
+3353 => x"00003458",
+3354 => x"00003460",
+3355 => x"00003460",
+3356 => x"00003468",
+3357 => x"00003468",
+3358 => x"00003470",
+3359 => x"00003470",
+3360 => x"00003478",
+3361 => x"00003478",
+3362 => x"00003480",
+3363 => x"00003480",
+3364 => x"00003488",
+3365 => x"00003488",
+3366 => x"00003490",
+3367 => x"00003490",
+3368 => x"00003498",
+3369 => x"00003498",
+3370 => x"000034a0",
+3371 => x"000034a0",
+3372 => x"000034a8",
+3373 => x"000034a8",
+3374 => x"000034b0",
+3375 => x"000034b0",
+3376 => x"000034b8",
+3377 => x"000034b8",
+3378 => x"000034c0",
+3379 => x"000034c0",
+3380 => x"000034c8",
+3381 => x"000034c8",
+3382 => x"000034d0",
+3383 => x"000034d0",
+3384 => x"000034d8",
+3385 => x"000034d8",
+3386 => x"000034e0",
+3387 => x"000034e0",
+3388 => x"000034e8",
+3389 => x"000034e8",
+3390 => x"000034f0",
+3391 => x"000034f0",
+3392 => x"000034f8",
+3393 => x"000034f8",
+3394 => x"00003500",
+3395 => x"00003500",
+3396 => x"00003508",
+3397 => x"00003508",
+3398 => x"00003510",
+3399 => x"00003510",
+3400 => x"00003518",
+3401 => x"00003518",
+3402 => x"00003520",
+3403 => x"00003520",
+3404 => x"00003528",
+3405 => x"00003528",
+3406 => x"00003530",
+3407 => x"00003530",
+3408 => x"00003538",
+3409 => x"00003538",
+3410 => x"00003540",
+3411 => x"00003540",
+3412 => x"00003548",
+3413 => x"00003548",
+3414 => x"00003550",
+3415 => x"00003550",
+3416 => x"00003558",
+3417 => x"00003558",
+3418 => x"00003560",
+3419 => x"00003560",
+3420 => x"00003568",
+3421 => x"00003568",
+3422 => x"00003570",
+3423 => x"00003570",
+3424 => x"00003578",
+3425 => x"00003578",
+3426 => x"00003580",
+3427 => x"00003580",
+3428 => x"00003588",
+3429 => x"00003588",
+3430 => x"00003590",
+3431 => x"00003590",
+3432 => x"00003598",
+3433 => x"00003598",
+3434 => x"000035a0",
+3435 => x"000035a0",
+3436 => x"000035a8",
+3437 => x"000035a8",
+3438 => x"000035b0",
+3439 => x"000035b0",
+3440 => x"000035b8",
+3441 => x"000035b8",
+3442 => x"000035c0",
+3443 => x"000035c0",
+3444 => x"000035c8",
+3445 => x"000035c8",
+3446 => x"000035d0",
+3447 => x"000035d0",
+3448 => x"000035d8",
+3449 => x"000035d8",
+3450 => x"000035e0",
+3451 => x"000035e0",
+3452 => x"000035e8",
+3453 => x"000035e8",
+3454 => x"000035f0",
+3455 => x"000035f0",
+3456 => x"000035f8",
+3457 => x"000035f8",
+3458 => x"00003600",
+3459 => x"00003600",
+3460 => x"00003608",
+3461 => x"00003608",
+3462 => x"00003610",
+3463 => x"00003610",
+3464 => x"00003618",
+3465 => x"00003618",
+3466 => x"00003620",
+3467 => x"00003620",
+3468 => x"00003628",
+3469 => x"00003628",
+3470 => x"00003630",
+3471 => x"00003630",
+3472 => x"00003638",
+3473 => x"00003638",
+3474 => x"00003640",
+3475 => x"00003640",
+3476 => x"00003648",
+3477 => x"00003648",
+3478 => x"00003650",
+3479 => x"00003650",
+3480 => x"00003658",
+3481 => x"00003658",
+3482 => x"00003660",
+3483 => x"00003660",
+3484 => x"00003668",
+3485 => x"00003668",
+3486 => x"00003670",
+3487 => x"00003670",
+3488 => x"00003678",
+3489 => x"00003678",
+3490 => x"00003680",
+3491 => x"00003680",
+3492 => x"00003688",
+3493 => x"00003688",
+3494 => x"00003690",
+3495 => x"00003690",
+3496 => x"00003698",
+3497 => x"00003698",
+3498 => x"000036a0",
+3499 => x"000036a0",
+3500 => x"000036a8",
+3501 => x"000036a8",
+3502 => x"000036b0",
+3503 => x"000036b0",
+3504 => x"000036b8",
+3505 => x"000036b8",
+3506 => x"000036c0",
+3507 => x"000036c0",
+3508 => x"000036c8",
+3509 => x"000036c8",
+3510 => x"000036d0",
+3511 => x"000036d0",
+3512 => x"000036d8",
+3513 => x"000036d8",
+3514 => x"000036e0",
+3515 => x"000036e0",
+3516 => x"000036e8",
+3517 => x"000036e8",
+3518 => x"000036f0",
+3519 => x"000036f0",
+3520 => x"000036f8",
+3521 => x"000036f8",
+3522 => x"00003700",
+3523 => x"00003700",
+3524 => x"00003708",
+3525 => x"00003708",
+3526 => x"00003710",
+3527 => x"00003710",
+3528 => x"00003718",
+3529 => x"00003718",
+3530 => x"0000372c",
+3531 => x"00000000",
+3532 => x"00003994",
+3533 => x"000039f0",
+3534 => x"00003a4c",
+3535 => x"00000000",
+3536 => x"00000000",
+3537 => x"00000000",
+3538 => x"00000000",
+3539 => x"00000000",
+3540 => x"00000000",
+3541 => x"00000000",
+3542 => x"00000000",
+3543 => x"00000000",
+3544 => x"000031ac",
+3545 => x"00000000",
+3546 => x"00000000",
+3547 => x"00000000",
+3548 => x"00000000",
+3549 => x"00000000",
+3550 => x"00000000",
+3551 => x"00000000",
+3552 => x"00000000",
+3553 => x"00000000",
+3554 => x"00000000",
+3555 => x"00000000",
+3556 => x"00000000",
+3557 => x"00000000",
+3558 => x"00000000",
+3559 => x"00000000",
+3560 => x"00000000",
+3561 => x"00000000",
+3562 => x"00000000",
+3563 => x"00000000",
+3564 => x"00000000",
+3565 => x"00000000",
+3566 => x"00000000",
+3567 => x"00000000",
+3568 => x"00000000",
+3569 => x"00000000",
+3570 => x"00000000",
+3571 => x"00000000",
+3572 => x"00000000",
+3573 => x"00000001",
+3574 => x"330eabcd",
+3575 => x"1234e66d",
+3576 => x"deec0005",
+3577 => x"000b0000",
+3578 => x"00000000",
+3579 => x"00000000",
+3580 => x"00000000",
+3581 => x"00000000",
+3582 => x"00000000",
+3583 => x"00000000",
+3584 => x"00000000",
+3585 => x"00000000",
+3586 => x"00000000",
+3587 => x"00000000",
+3588 => x"00000000",
+3589 => x"00000000",
+3590 => x"00000000",
+3591 => x"00000000",
+3592 => x"00000000",
+3593 => x"00000000",
+3594 => x"00000000",
+3595 => x"00000000",
+3596 => x"00000000",
+3597 => x"00000000",
+3598 => x"00000000",
+3599 => x"00000000",
+3600 => x"00000000",
+3601 => x"00000000",
+3602 => x"00000000",
+3603 => x"00000000",
+3604 => x"00000000",
+3605 => x"00000000",
+3606 => x"00000000",
+3607 => x"00000000",
+3608 => x"00000000",
+3609 => x"00000000",
+3610 => x"00000000",
+3611 => x"00000000",
+3612 => x"00000000",
+3613 => x"00000000",
+3614 => x"00000000",
+3615 => x"00000000",
+3616 => x"00000000",
+3617 => x"00000000",
+3618 => x"00000000",
+3619 => x"00000000",
+3620 => x"00000000",
+3621 => x"00000000",
+3622 => x"00000000",
+3623 => x"00000000",
+3624 => x"00000000",
+3625 => x"00000000",
+3626 => x"00000000",
+3627 => x"00000000",
+3628 => x"00000000",
+3629 => x"00000000",
+3630 => x"00000000",
+3631 => x"00000000",
+3632 => x"00000000",
+3633 => x"00000000",
+3634 => x"00000000",
+3635 => x"00000000",
+3636 => x"00000000",
+3637 => x"00000000",
+3638 => x"00000000",
+3639 => x"00000000",
+3640 => x"00000000",
+3641 => x"00000000",
+3642 => x"00000000",
+3643 => x"00000000",
+3644 => x"00000000",
+3645 => x"00000000",
+3646 => x"00000000",
+3647 => x"00000000",
+3648 => x"00000000",
+3649 => x"00000000",
+3650 => x"00000000",
+3651 => x"00000000",
+3652 => x"00000000",
+3653 => x"00000000",
+3654 => x"00000000",
+3655 => x"00000000",
+3656 => x"00000000",
+3657 => x"00000000",
+3658 => x"00000000",
+3659 => x"00000000",
+3660 => x"00000000",
+3661 => x"00000000",
+3662 => x"00000000",
+3663 => x"00000000",
+3664 => x"00000000",
+3665 => x"00000000",
+3666 => x"00000000",
+3667 => x"00000000",
+3668 => x"00000000",
+3669 => x"00000000",
+3670 => x"00000000",
+3671 => x"00000000",
+3672 => x"00000000",
+3673 => x"00000000",
+3674 => x"00000000",
+3675 => x"00000000",
+3676 => x"00000000",
+3677 => x"00000000",
+3678 => x"00000000",
+3679 => x"00000000",
+3680 => x"00000000",
+3681 => x"00000000",
+3682 => x"00000000",
+3683 => x"00000000",
+3684 => x"00000000",
+3685 => x"00000000",
+3686 => x"00000000",
+3687 => x"00000000",
+3688 => x"00000000",
+3689 => x"00000000",
+3690 => x"00000000",
+3691 => x"00000000",
+3692 => x"00000000",
+3693 => x"00000000",
+3694 => x"00000000",
+3695 => x"00000000",
+3696 => x"00000000",
+3697 => x"00000000",
+3698 => x"00000000",
+3699 => x"00000000",
+3700 => x"00000000",
+3701 => x"00000000",
+3702 => x"00000000",
+3703 => x"00000000",
+3704 => x"00000000",
+3705 => x"00000000",
+3706 => x"00000000",
+3707 => x"00000000",
+3708 => x"00000000",
+3709 => x"00000000",
+3710 => x"00000000",
+3711 => x"00000000",
+3712 => x"00000000",
+3713 => x"00000000",
+3714 => x"00000000",
+3715 => x"00000000",
+3716 => x"00000000",
+3717 => x"00000000",
+3718 => x"00000000",
+3719 => x"00000000",
+3720 => x"00000000",
+3721 => x"00000000",
+3722 => x"00000000",
+3723 => x"00000000",
+3724 => x"00000000",
+3725 => x"00000000",
+3726 => x"00000000",
+3727 => x"00000000",
+3728 => x"00000000",
+3729 => x"00000000",
+3730 => x"00000000",
+3731 => x"00000000",
+3732 => x"00000000",
+3733 => x"00000000",
+3734 => x"00000000",
+3735 => x"00000000",
+3736 => x"00000000",
+3737 => x"00000000",
+3738 => x"00000000",
+3739 => x"00000000",
+3740 => x"00000000",
+3741 => x"00000000",
+3742 => x"00000000",
+3743 => x"00000000",
+3744 => x"00000000",
+3745 => x"00000000",
+3746 => x"00000000",
+3747 => x"00000000",
+3748 => x"00000000",
+3749 => x"00000000",
+3750 => x"00000000",
+3751 => x"00000000",
+3752 => x"00000000",
+3753 => x"00000000",
+3754 => x"000031b0",
+3755 => x"ffffffff",
+3756 => x"00000000",
+3757 => x"ffffffff",
+3758 => x"00000000",
+ others => x"00000000"
+);
+
+begin
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memAWriteEnable = '1') and (memBWriteEnable = '1') and (memAAddr=memBAddr) and (memAWrite/=memBWrite) then
+ report "write collision" severity failure;
+ end if;
+
+ if (memAWriteEnable = '1') then
+ ram(conv_integer(memAAddr)) := memAWrite;
+ memARead <= memAWrite;
+ else
+ memARead <= ram(conv_integer(memAAddr));
+ end if;
+ end if;
+end process;
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memBWriteEnable = '1') then
+ ram(conv_integer(memBAddr)) := memBWrite;
+ memBRead <= memBWrite;
+ else
+ memBRead <= ram(conv_integer(memBAddr));
+ end if;
+ end if;
+end process;
+
+
+
+
+end dualport_ram_arch;
diff --git a/zpu/hdl/zpu3/src/dualport_ram.vhd b/zpu/hdl/zpu3/src/dualport_ram.vhd
new file mode 100644
index 0000000..54380ce
--- /dev/null
+++ b/zpu/hdl/zpu3/src/dualport_ram.vhd
@@ -0,0 +1,4996 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+entity dualport_ram is
+port (clk : in std_logic;
+ memAWriteEnable : in std_logic;
+ memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memAWrite : in std_logic_vector(wordSize-1 downto 0);
+ memARead : out std_logic_vector(wordSize-1 downto 0);
+ memBWriteEnable : in std_logic;
+ memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memBWrite : in std_logic_vector(wordSize-1 downto 0);
+ memBRead : out std_logic_vector(wordSize-1 downto 0));
+end dualport_ram;
+
+architecture dualport_ram_arch of dualport_ram is
+
+
+type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
+
+shared variable ram : ram_type :=
+(
+0 => x"800b0b0b",
+1 => x"0b0b8070",
+2 => x"0b0b818a",
+3 => x"880c3a0b",
+4 => x"0b80fae8",
+5 => x"04000000",
+6 => x"00000000",
+7 => x"00000000",
+8 => x"80088408",
+9 => x"88080b0b",
+10 => x"80fbba2d",
+11 => x"880c840c",
+12 => x"800c0400",
+13 => x"00000000",
+14 => x"00000000",
+15 => x"00000000",
+16 => x"71fd0608",
+17 => x"72830609",
+18 => x"81058205",
+19 => x"832b2a83",
+20 => x"ffff0652",
+21 => x"04000000",
+22 => x"00000000",
+23 => x"00000000",
+24 => x"71fd0608",
+25 => x"83ffff73",
+26 => x"83060981",
+27 => x"05820583",
+28 => x"2b2b0906",
+29 => x"7383ffff",
+30 => x"0b0b0b0b",
+31 => x"83a70400",
+32 => x"72098105",
+33 => x"72057373",
+34 => x"09060906",
+35 => x"73097306",
+36 => x"070a8106",
+37 => x"530b0b51",
+38 => x"04000000",
+39 => x"00000000",
+40 => x"72722473",
+41 => x"732e0753",
+42 => x"0b0b5104",
+43 => x"00000000",
+44 => x"00000000",
+45 => x"00000000",
+46 => x"00000000",
+47 => x"00000000",
+48 => x"71737109",
+49 => x"71068106",
+50 => x"30720a10",
+51 => x"0a720a10",
+52 => x"0a31050a",
+53 => x"81065151",
+54 => x"530b0b51",
+55 => x"04000000",
+56 => x"72722673",
+57 => x"732e0753",
+58 => x"0b0b5104",
+59 => x"00000000",
+60 => x"00000000",
+61 => x"00000000",
+62 => x"00000000",
+63 => x"00000000",
+64 => x"00000000",
+65 => x"00000000",
+66 => x"00000000",
+67 => x"00000000",
+68 => x"00000000",
+69 => x"00000000",
+70 => x"00000000",
+71 => x"00000000",
+72 => x"72728072",
+73 => x"8106ff05",
+74 => x"09720605",
+75 => x"71105272",
+76 => x"0a100a53",
+77 => x"0b0b72eb",
+78 => x"38515153",
+79 => x"0b0b5104",
+80 => x"720a722b",
+81 => x"0a530b0b",
+82 => x"51040000",
+83 => x"00000000",
+84 => x"00000000",
+85 => x"00000000",
+86 => x"00000000",
+87 => x"00000000",
+88 => x"72729f06",
+89 => x"0981050b",
+90 => x"0b0b88a7",
+91 => x"05040000",
+92 => x"00000000",
+93 => x"00000000",
+94 => x"00000000",
+95 => x"00000000",
+96 => x"72722aff",
+97 => x"739f062a",
+98 => x"0974090a",
+99 => x"8106ff05",
+100 => x"0607530b",
+101 => x"0b510400",
+102 => x"00000000",
+103 => x"00000000",
+104 => x"7171530b",
+105 => x"0b510406",
+106 => x"73830609",
+107 => x"81058205",
+108 => x"832b0b2b",
+109 => x"0772fc06",
+110 => x"0c515104",
+111 => x"00000000",
+112 => x"72098105",
+113 => x"72050970",
+114 => x"81050906",
+115 => x"0a810653",
+116 => x"0b0b5104",
+117 => x"00000000",
+118 => x"00000000",
+119 => x"00000000",
+120 => x"72098105",
+121 => x"72050970",
+122 => x"81050906",
+123 => x"0a098106",
+124 => x"530b0b51",
+125 => x"04000000",
+126 => x"00000000",
+127 => x"00000000",
+128 => x"71098105",
+129 => x"52040000",
+130 => x"00000000",
+131 => x"00000000",
+132 => x"00000000",
+133 => x"00000000",
+134 => x"00000000",
+135 => x"00000000",
+136 => x"72720981",
+137 => x"0505530b",
+138 => x"0b510400",
+139 => x"00000000",
+140 => x"00000000",
+141 => x"00000000",
+142 => x"00000000",
+143 => x"00000000",
+144 => x"72097206",
+145 => x"73730906",
+146 => x"07530b0b",
+147 => x"51040000",
+148 => x"00000000",
+149 => x"00000000",
+150 => x"00000000",
+151 => x"00000000",
+152 => x"71fc0608",
+153 => x"72830609",
+154 => x"81058305",
+155 => x"1010102a",
+156 => x"81ff0652",
+157 => x"04000000",
+158 => x"00000000",
+159 => x"00000000",
+160 => x"71fc0608",
+161 => x"0b0b8189",
+162 => x"f4738306",
+163 => x"10100508",
+164 => x"060b0b0b",
+165 => x"88ac0400",
+166 => x"00000000",
+167 => x"00000000",
+168 => x"80088408",
+169 => x"88087575",
+170 => x"0b0b0b8f",
+171 => x"e42d5050",
+172 => x"80085688",
+173 => x"0c840c80",
+174 => x"0c510400",
+175 => x"00000000",
+176 => x"80088408",
+177 => x"88087575",
+178 => x"0b0b0b91",
+179 => x"9c2d5050",
+180 => x"80085688",
+181 => x"0c840c80",
+182 => x"0c510400",
+183 => x"00000000",
+184 => x"72097081",
+185 => x"0509060a",
+186 => x"8106ff05",
+187 => x"70540b0b",
+188 => x"71067309",
+189 => x"727405ff",
+190 => x"05060751",
+191 => x"51510400",
+192 => x"72097081",
+193 => x"0509060a",
+194 => x"098106ff",
+195 => x"0570540b",
+196 => x"0b710673",
+197 => x"09727405",
+198 => x"ff050607",
+199 => x"51515104",
+200 => x"05ff0504",
+201 => x"00000000",
+202 => x"00000000",
+203 => x"00000000",
+204 => x"00000000",
+205 => x"00000000",
+206 => x"00000000",
+207 => x"00000000",
+208 => x"810b0b0b",
+209 => x"818a840c",
+210 => x"51040000",
+211 => x"00000000",
+212 => x"00000000",
+213 => x"00000000",
+214 => x"00000000",
+215 => x"00000000",
+216 => x"71810552",
+217 => x"04000000",
+218 => x"00000000",
+219 => x"00000000",
+220 => x"00000000",
+221 => x"00000000",
+222 => x"00000000",
+223 => x"00000000",
+224 => x"00000000",
+225 => x"00000000",
+226 => x"00000000",
+227 => x"00000000",
+228 => x"00000000",
+229 => x"00000000",
+230 => x"00000000",
+231 => x"00000000",
+232 => x"02840572",
+233 => x"10100552",
+234 => x"04000000",
+235 => x"00000000",
+236 => x"00000000",
+237 => x"00000000",
+238 => x"00000000",
+239 => x"00000000",
+240 => x"00000000",
+241 => x"00000000",
+242 => x"00000000",
+243 => x"00000000",
+244 => x"00000000",
+245 => x"00000000",
+246 => x"00000000",
+247 => x"00000000",
+248 => x"717105ff",
+249 => x"0571530b",
+250 => x"0b510400",
+251 => x"00000000",
+252 => x"00000000",
+253 => x"00000000",
+254 => x"00000000",
+255 => x"00000000",
+256 => x"83cd3f80",
+257 => x"fd803f04",
+258 => x"10101010",
+259 => x"10101010",
+260 => x"10101010",
+261 => x"10101010",
+262 => x"10101010",
+263 => x"10101010",
+264 => x"10101010",
+265 => x"10101053",
+266 => x"0b0b5104",
+267 => x"7381ff06",
+268 => x"73830609",
+269 => x"81058305",
+270 => x"1010102b",
+271 => x"0772fc06",
+272 => x"0c515104",
+273 => x"3c047070",
+274 => x"0b0b819a",
+275 => x"90085284",
+276 => x"0b720508",
+277 => x"70810651",
+278 => x"510b0b70",
+279 => x"f2387108",
+280 => x"81ff0680",
+281 => x"0c505004",
+282 => x"70700b0b",
+283 => x"819a9008",
+284 => x"52840b72",
+285 => x"0508700a",
+286 => x"100a7081",
+287 => x"06515151",
+288 => x"0b0b70ed",
+289 => x"3873720c",
+290 => x"50500481",
+291 => x"8a840880",
+292 => x"2ea83883",
+293 => x"80800b0b",
+294 => x"0b819a90",
+295 => x"0c82a080",
+296 => x"0b0b0b81",
+297 => x"9a940c82",
+298 => x"90800b81",
+299 => x"9aa40c0b",
+300 => x"0b819a98",
+301 => x"0b819aa8",
+302 => x"0c04f880",
+303 => x"8080a40b",
+304 => x"0b0b819a",
+305 => x"900cf880",
+306 => x"8082800b",
+307 => x"0b0b819a",
+308 => x"940cf880",
+309 => x"8084800b",
+310 => x"819aa40c",
+311 => x"f8808080",
+312 => x"940b819a",
+313 => x"a80cf880",
+314 => x"80809c0b",
+315 => x"819aa00c",
+316 => x"f8808080",
+317 => x"a00b819a",
+318 => x"ac0c04f2",
+319 => x"3d0d600b",
+320 => x"0b819a94",
+321 => x"08565d82",
+322 => x"750c8059",
+323 => x"805a800b",
+324 => x"8f3d7110",
+325 => x"10177008",
+326 => x"5a575d5b",
+327 => x"807781ff",
+328 => x"067c832b",
+329 => x"5658520b",
+330 => x"76530b0b",
+331 => x"7b5183ae",
+332 => x"3f7d7f7a",
+333 => x"72077c72",
+334 => x"07717160",
+335 => x"8105415f",
+336 => x"5d5b5957",
+337 => x"557a8724",
+338 => x"bf380b0b",
+339 => x"819a9408",
+340 => x"7b101071",
+341 => x"05700859",
+342 => x"51558077",
+343 => x"81ff067c",
+344 => x"832b5658",
+345 => x"520b7653",
+346 => x"0b0b7b51",
+347 => x"82f03f7d",
+348 => x"7f7a7207",
+349 => x"7c720771",
+350 => x"71608105",
+351 => x"415f5d5b",
+352 => x"59575587",
+353 => x"7b25c338",
+354 => x"767d0c77",
+355 => x"841e0c7c",
+356 => x"800c903d",
+357 => x"0d047070",
+358 => x"819a9c33",
+359 => x"510b0b70",
+360 => x"aa38818a",
+361 => x"90087008",
+362 => x"52520b70",
+363 => x"802e9638",
+364 => x"84720581",
+365 => x"8a900c70",
+366 => x"2d818a90",
+367 => x"08700852",
+368 => x"520b70ec",
+369 => x"38810b81",
+370 => x"9a9c3450",
+371 => x"50040470",
+372 => x"0b0b819a",
+373 => x"8c08802e",
+374 => x"8e380b0b",
+375 => x"0b0b800b",
+376 => x"802e0981",
+377 => x"06833850",
+378 => x"040b0b81",
+379 => x"9a8c510b",
+380 => x"0b0bf48c",
+381 => x"3f500404",
+382 => x"8c08028c",
+383 => x"0cfa3d0d",
+384 => x"800b8c08",
+385 => x"fc050c8c",
+386 => x"08fc0508",
+387 => x"892481b9",
+388 => x"388c08f0",
+389 => x"05705253",
+390 => x"0b0bfddf",
+391 => x"3f8c08f4",
+392 => x"05088c08",
+393 => x"f8050c8c",
+394 => x"08f80508",
+395 => x"520b0b81",
+396 => x"85b45187",
+397 => x"c53f0b0b",
+398 => x"8185c051",
+399 => x"8a8b3f0b",
+400 => x"0b8185d0",
+401 => x"518a823f",
+402 => x"fc0b819a",
+403 => x"b00c819a",
+404 => x"b008812c",
+405 => x"530b0b72",
+406 => x"fe2e8438",
+407 => x"87903f8a",
+408 => x"0b819ab4",
+409 => x"0c819ab4",
+410 => x"08819ab0",
+411 => x"0829530b",
+412 => x"0b72d82e",
+413 => x"843886f6",
+414 => x"3f8a0b81",
+415 => x"9ab00c84",
+416 => x"e2ad800b",
+417 => x"819ab40c",
+418 => x"819ab408",
+419 => x"819ab008",
+420 => x"29530b0b",
+421 => x"72afd7c2",
+422 => x"802e8438",
+423 => x"86d03f81",
+424 => x"0a0b819a",
+425 => x"b00cff0b",
+426 => x"819ab40c",
+427 => x"819ab408",
+428 => x"819ab008",
+429 => x"25843886",
+430 => x"b53f8c08",
+431 => x"fc050881",
+432 => x"058c08fc",
+433 => x"050cfebf",
+434 => x"398c08fc",
+435 => x"05088a2e",
+436 => x"8438869a",
+437 => x"3f72800c",
+438 => x"883d0d8c",
+439 => x"0c048c08",
+440 => x"028c0cf5",
+441 => x"3d0d8c08",
+442 => x"9405089f",
+443 => x"388c088c",
+444 => x"05088c08",
+445 => x"9005088c",
+446 => x"08880508",
+447 => x"5856540b",
+448 => x"0b73760c",
+449 => x"7484170c",
+450 => x"81cd3980",
+451 => x"0b8c08f0",
+452 => x"050c800b",
+453 => x"8c08f405",
+454 => x"0c8c088c",
+455 => x"05088c08",
+456 => x"90050856",
+457 => x"540b0b73",
+458 => x"8c08f005",
+459 => x"0c748c08",
+460 => x"f4050c8c",
+461 => x"08f8058c",
+462 => x"08f00556",
+463 => x"56887054",
+464 => x"0b0b7553",
+465 => x"0b0b7652",
+466 => x"540b0b85",
+467 => x"ef3fa00b",
+468 => x"8c089405",
+469 => x"08318c08",
+470 => x"ec050c8c",
+471 => x"08ec0508",
+472 => x"80249f38",
+473 => x"800b8c08",
+474 => x"f4050c8c",
+475 => x"08ec0508",
+476 => x"308c08fc",
+477 => x"0508712b",
+478 => x"8c08f005",
+479 => x"0c540b0b",
+480 => x"bb398c08",
+481 => x"fc05088c",
+482 => x"08ec0508",
+483 => x"2a8c08e8",
+484 => x"050c8c08",
+485 => x"fc05088c",
+486 => x"08940508",
+487 => x"2b8c08f4",
+488 => x"050c8c08",
+489 => x"f805088c",
+490 => x"08940508",
+491 => x"2b708c08",
+492 => x"e8050807",
+493 => x"8c08f005",
+494 => x"0c540b0b",
+495 => x"8c08f005",
+496 => x"088c08f4",
+497 => x"05088c08",
+498 => x"88050858",
+499 => x"56540b0b",
+500 => x"73760c74",
+501 => x"84170c8c",
+502 => x"08880508",
+503 => x"800c8d3d",
+504 => x"0d8c0c04",
+505 => x"8c08028c",
+506 => x"0cf93d0d",
+507 => x"800b8c08",
+508 => x"fc050c8c",
+509 => x"08880508",
+510 => x"8025ab38",
+511 => x"8c088805",
+512 => x"08308c08",
+513 => x"88050c80",
+514 => x"0b8c08f4",
+515 => x"050c8c08",
+516 => x"fc050888",
+517 => x"38810b8c",
+518 => x"08f4050c",
+519 => x"8c08f405",
+520 => x"088c08fc",
+521 => x"050c8c08",
+522 => x"8c050880",
+523 => x"25ab388c",
+524 => x"088c0508",
+525 => x"308c088c",
+526 => x"050c800b",
+527 => x"8c08f005",
+528 => x"0c8c08fc",
+529 => x"05088838",
+530 => x"810b8c08",
+531 => x"f0050c8c",
+532 => x"08f00508",
+533 => x"8c08fc05",
+534 => x"0c80530b",
+535 => x"0b8c088c",
+536 => x"0508528c",
+537 => x"08880508",
+538 => x"5181b13f",
+539 => x"8008708c",
+540 => x"08f8050c",
+541 => x"540b0b8c",
+542 => x"08fc0508",
+543 => x"802e8c38",
+544 => x"8c08f805",
+545 => x"08308c08",
+546 => x"f8050c8c",
+547 => x"08f80508",
+548 => x"70800c54",
+549 => x"0b0b893d",
+550 => x"0d8c0c04",
+551 => x"8c08028c",
+552 => x"0cfb3d0d",
+553 => x"800b8c08",
+554 => x"fc050c8c",
+555 => x"08880508",
+556 => x"80259338",
+557 => x"8c088805",
+558 => x"08308c08",
+559 => x"88050c81",
+560 => x"0b8c08fc",
+561 => x"050c8c08",
+562 => x"8c050880",
+563 => x"258c388c",
+564 => x"088c0508",
+565 => x"308c088c",
+566 => x"050c8153",
+567 => x"0b0b8c08",
+568 => x"8c050852",
+569 => x"8c088805",
+570 => x"0851b13f",
+571 => x"8008708c",
+572 => x"08f8050c",
+573 => x"540b0b8c",
+574 => x"08fc0508",
+575 => x"802e8c38",
+576 => x"8c08f805",
+577 => x"08308c08",
+578 => x"f8050c8c",
+579 => x"08f80508",
+580 => x"70800c54",
+581 => x"0b0b873d",
+582 => x"0d8c0c04",
+583 => x"8c08028c",
+584 => x"0c707070",
+585 => x"70810b8c",
+586 => x"08fc050c",
+587 => x"800b8c08",
+588 => x"f8050c8c",
+589 => x"088c0508",
+590 => x"8c088805",
+591 => x"0827ac38",
+592 => x"8c08fc05",
+593 => x"08802ea3",
+594 => x"38800b8c",
+595 => x"088c0508",
+596 => x"2499388c",
+597 => x"088c0508",
+598 => x"108c088c",
+599 => x"050c8c08",
+600 => x"fc050810",
+601 => x"8c08fc05",
+602 => x"0cc9398c",
+603 => x"08fc0508",
+604 => x"802e80c9",
+605 => x"388c088c",
+606 => x"05088c08",
+607 => x"88050826",
+608 => x"a1388c08",
+609 => x"8805088c",
+610 => x"088c0508",
+611 => x"318c0888",
+612 => x"050c8c08",
+613 => x"f805088c",
+614 => x"08fc0508",
+615 => x"078c08f8",
+616 => x"050c8c08",
+617 => x"fc050881",
+618 => x"2a8c08fc",
+619 => x"050c8c08",
+620 => x"8c050881",
+621 => x"2a8c088c",
+622 => x"050cffaf",
+623 => x"398c0890",
+624 => x"0508802e",
+625 => x"8f388c08",
+626 => x"88050870",
+627 => x"8c08f405",
+628 => x"0c518d39",
+629 => x"8c08f805",
+630 => x"08708c08",
+631 => x"f4050c51",
+632 => x"8c08f405",
+633 => x"08800c50",
+634 => x"5050508c",
+635 => x"0c047086",
+636 => x"5186a03f",
+637 => x"815180e7",
+638 => x"be3ffc3d",
+639 => x"0d873d70",
+640 => x"70840552",
+641 => x"0856530b",
+642 => x"0b745281",
+643 => x"8a940888",
+644 => x"71050852",
+645 => x"540b0b9f",
+646 => x"e73f863d",
+647 => x"0d047070",
+648 => x"7070863d",
+649 => x"8805530b",
+650 => x"0b765275",
+651 => x"88710508",
+652 => x"52540b0b",
+653 => x"9fca3f50",
+654 => x"50505004",
+655 => x"fc3d0d76",
+656 => x"70797b55",
+657 => x"5555558f",
+658 => x"72278e38",
+659 => x"72750783",
+660 => x"06510b0b",
+661 => x"70802eaf",
+662 => x"38ff7205",
+663 => x"520b0b71",
+664 => x"ff2e9d38",
+665 => x"72708105",
+666 => x"540b0b33",
+667 => x"74708105",
+668 => x"5634ff72",
+669 => x"05520b0b",
+670 => x"71ff2e09",
+671 => x"8106e538",
+672 => x"74800c86",
+673 => x"3d0d0474",
+674 => x"51727084",
+675 => x"05540b0b",
+676 => x"08717084",
+677 => x"05530b0b",
+678 => x"0c727084",
+679 => x"05540b0b",
+680 => x"08717084",
+681 => x"05530b0b",
+682 => x"0c727084",
+683 => x"05540b0b",
+684 => x"08717084",
+685 => x"05530b0b",
+686 => x"0c727084",
+687 => x"05540b0b",
+688 => x"08717084",
+689 => x"05530b0b",
+690 => x"0cf07205",
+691 => x"520b0b71",
+692 => x"8f26ffb5",
+693 => x"38837227",
+694 => x"9c387270",
+695 => x"8405540b",
+696 => x"0b087170",
+697 => x"8405530b",
+698 => x"0b0cfc72",
+699 => x"05520b0b",
+700 => x"718326e6",
+701 => x"3870540b",
+702 => x"0bfede39",
+703 => x"f73d0d7c",
+704 => x"7052530b",
+705 => x"0b858c3f",
+706 => x"72540b0b",
+707 => x"80085581",
+708 => x"85e05681",
+709 => x"57800881",
+710 => x"055a8b3d",
+711 => x"e4710559",
+712 => x"530b0b82",
+713 => x"59f47305",
+714 => x"527b8871",
+715 => x"05085253",
+716 => x"0b0bb7ce",
+717 => x"3f800830",
+718 => x"70800807",
+719 => x"9f2c8a07",
+720 => x"800c530b",
+721 => x"0b8b3d0d",
+722 => x"04707073",
+723 => x"52818a94",
+724 => x"0851ffa8",
+725 => x"3f505004",
+726 => x"70707070",
+727 => x"75530b0b",
+728 => x"84d87305",
+729 => x"08802e8d",
+730 => x"3880530b",
+731 => x"0b72800c",
+732 => x"50505050",
+733 => x"04818052",
+734 => x"725180c1",
+735 => x"cc3f8008",
+736 => x"84d8140c",
+737 => x"ff530b0b",
+738 => x"8008802e",
+739 => x"e0388008",
+740 => x"540b0b9f",
+741 => x"530b0b80",
+742 => x"74708405",
+743 => x"560cff73",
+744 => x"05530b0b",
+745 => x"807324c1",
+746 => x"38807470",
+747 => x"8405560c",
+748 => x"ff730553",
+749 => x"0b0b7280",
+750 => x"25dd38ff",
+751 => x"ac397070",
+752 => x"70707577",
+753 => x"55530b0b",
+754 => x"9f742790",
+755 => x"3896730c",
+756 => x"ff520b0b",
+757 => x"71800c50",
+758 => x"50505004",
+759 => x"84d87305",
+760 => x"08520b0b",
+761 => x"71802e97",
+762 => x"38731010",
+763 => x"72057008",
+764 => x"79720c51",
+765 => x"520b0b71",
+766 => x"800c5050",
+767 => x"50500472",
+768 => x"51fed53f",
+769 => x"ff528008",
+770 => x"c93884d8",
+771 => x"73050874",
+772 => x"10107105",
+773 => x"70087a72",
+774 => x"0c515152",
+775 => x"d839f93d",
+776 => x"0d797b58",
+777 => x"560b769f",
+778 => x"2680f138",
+779 => x"84d81608",
+780 => x"540b0b73",
+781 => x"802ead38",
+782 => x"76101014",
+783 => x"70085555",
+784 => x"0b73802e",
+785 => x"be388058",
+786 => x"73812e8f",
+787 => x"3873ff2e",
+788 => x"a7388075",
+789 => x"0c765173",
+790 => x"2d80580b",
+791 => x"0b77800c",
+792 => x"893d0d04",
+793 => x"7551fdf0",
+794 => x"3fff5880",
+795 => x"08ed3884",
+796 => x"d8160854",
+797 => x"0b0bc139",
+798 => x"96760c81",
+799 => x"0b800c89",
+800 => x"3d0d0475",
+801 => x"5182873f",
+802 => x"76530b0b",
+803 => x"80085275",
+804 => x"5181be3f",
+805 => x"8008800c",
+806 => x"893d0d04",
+807 => x"96760cff",
+808 => x"0b800c89",
+809 => x"3d0d04fc",
+810 => x"3d0d7678",
+811 => x"56530b0b",
+812 => x"ff540b0b",
+813 => x"749f2680",
+814 => x"c13884d8",
+815 => x"73050852",
+816 => x"0b0b7180",
+817 => x"2ebb3874",
+818 => x"10107205",
+819 => x"7008530b",
+820 => x"0b530b0b",
+821 => x"81540b0b",
+822 => x"71802e9e",
+823 => x"3882540b",
+824 => x"0b71ff2e",
+825 => x"95388354",
+826 => x"0b0b7181",
+827 => x"2e8c3880",
+828 => x"730c7451",
+829 => x"712d8054",
+830 => x"0b0b7380",
+831 => x"0c863d0d",
+832 => x"047251fc",
+833 => x"d33f8008",
+834 => x"f13884d8",
+835 => x"73050852",
+836 => x"ffb53970",
+837 => x"70735281",
+838 => x"8a940851",
+839 => x"fe803f50",
+840 => x"50047070",
+841 => x"7075530b",
+842 => x"0b745281",
+843 => x"8a940851",
+844 => x"fd8c3f50",
+845 => x"50500470",
+846 => x"818a9408",
+847 => x"51fc993f",
+848 => x"50047070",
+849 => x"7352818a",
+850 => x"940851fe",
+851 => x"da3f5050",
+852 => x"04fc3d0d",
+853 => x"800b819a",
+854 => x"b80c7852",
+855 => x"775180df",
+856 => x"bc3f8008",
+857 => x"540b0b80",
+858 => x"08ff2e88",
+859 => x"3873800c",
+860 => x"863d0d04",
+861 => x"819ab808",
+862 => x"550b0b74",
+863 => x"802eee38",
+864 => x"7675710c",
+865 => x"530b0b73",
+866 => x"800c863d",
+867 => x"0d0480df",
+868 => x"873f0470",
+869 => x"70707075",
+870 => x"70718306",
+871 => x"530b0b55",
+872 => x"5270bf38",
+873 => x"71700870",
+874 => x"09f7fbfd",
+875 => x"ff720506",
+876 => x"70f88482",
+877 => x"81800651",
+878 => x"5152530b",
+879 => x"0b70a138",
+880 => x"84730570",
+881 => x"087009f7",
+882 => x"fbfdff72",
+883 => x"050670f8",
+884 => x"84828180",
+885 => x"06515152",
+886 => x"530b0b70",
+887 => x"802ee138",
+888 => x"72520b0b",
+889 => x"7133510b",
+890 => x"0b70802e",
+891 => x"8c388172",
+892 => x"05703352",
+893 => x"520b70f6",
+894 => x"38717431",
+895 => x"800c5050",
+896 => x"50500470",
+897 => x"70707076",
+898 => x"88710508",
+899 => x"540b0b54",
+900 => x"0b0b728d",
+901 => x"38728415",
+902 => x"0c72800c",
+903 => x"50505050",
+904 => x"04735275",
+905 => x"51b1db3f",
+906 => x"800b8815",
+907 => x"0c800b84",
+908 => x"150c8008",
+909 => x"800c5050",
+910 => x"505004fd",
+911 => x"ad3d0d82",
+912 => x"d63d0882",
+913 => x"d83d0882",
+914 => x"da3d0882",
+915 => x"dc3d0844",
+916 => x"5b454980",
+917 => x"70658c05",
+918 => x"2270832a",
+919 => x"81327081",
+920 => x"06515959",
+921 => x"4947750b",
+922 => x"672e0981",
+923 => x"068c3863",
+924 => x"90050867",
+925 => x"2e098106",
+926 => x"92386351",
+927 => x"a2e03fff",
+928 => x"56800881",
+929 => x"ec38638c",
+930 => x"0522570b",
+931 => x"0b769a06",
+932 => x"560b0b75",
+933 => x"8a2ebf38",
+934 => x"82c13d70",
+935 => x"7182d43d",
+936 => x"0c5b4380",
+937 => x"0b82d43d",
+938 => x"0c800b82",
+939 => x"d33d0c80",
+940 => x"46785b80",
+941 => x"79337081",
+942 => x"ff065959",
+943 => x"56760b76",
+944 => x"2e833881",
+945 => x"5676a52e",
+946 => x"81b13875",
+947 => x"802e81ab",
+948 => x"38811959",
+949 => x"de39638e",
+950 => x"05227090",
+951 => x"2b575880",
+952 => x"7624ffb4",
+953 => x"3876fd06",
+954 => x"560b0b75",
+955 => x"82a33d23",
+956 => x"77028405",
+957 => x"89860523",
+958 => x"639c0508",
+959 => x"82a73d0c",
+960 => x"63a40508",
+961 => x"82a93d0c",
+962 => x"9f3d7082",
+963 => x"a13d0c82",
+964 => x"a43d0c88",
+965 => x"800b82a2",
+966 => x"3d0c8880",
+967 => x"0b82a53d",
+968 => x"0c800b82",
+969 => x"a63d0c60",
+970 => x"530b0b78",
+971 => x"52829f3d",
+972 => x"70525695",
+973 => x"cb3f8008",
+974 => x"57800b80",
+975 => x"08248e38",
+976 => x"7551a39b",
+977 => x"3f800880",
+978 => x"2e8338ff",
+979 => x"5782a23d",
+980 => x"2270862a",
+981 => x"70810651",
+982 => x"57580b75",
+983 => x"802e9038",
+984 => x"638c0522",
+985 => x"80c00756",
+986 => x"0b0b7564",
+987 => x"8c052376",
+988 => x"560b0b75",
+989 => x"800c82d5",
+990 => x"3d0d0478",
+991 => x"7b31570b",
+992 => x"0b76802e",
+993 => x"b1387a7a",
+994 => x"0c76841b",
+995 => x"0c82d33d",
+996 => x"081782d4",
+997 => x"3d0c881a",
+998 => x"82d33d08",
+999 => x"81710582",
+1000 => x"d53d0c81",
+1001 => x"71055157",
+1002 => x"5a0b7587",
+1003 => x"2480cb38",
+1004 => x"65177933",
+1005 => x"59460b77",
+1006 => x"81ff0656",
+1007 => x"0b0b7580",
+1008 => x"2e93fe38",
+1009 => x"81195980",
+1010 => x"70714743",
+1011 => x"5fff5e7e",
+1012 => x"82d53d34",
+1013 => x"7833580b",
+1014 => x"0b7781ff",
+1015 => x"06811a5a",
+1016 => x"5de01d56",
+1017 => x"0b0b7580",
+1018 => x"d82687a1",
+1019 => x"38751010",
+1020 => x"81868405",
+1021 => x"560b0b75",
+1022 => x"080482d5",
+1023 => x"3df00552",
+1024 => x"6351fbff",
+1025 => x"3f80088a",
+1026 => x"a5386266",
+1027 => x"187a335a",
+1028 => x"475affa2",
+1029 => x"397e9007",
+1030 => x"5f0b0b7e",
+1031 => x"842a7081",
+1032 => x"0651560b",
+1033 => x"0b7592ba",
+1034 => x"387e862a",
+1035 => x"70810651",
+1036 => x"560b0b75",
+1037 => x"802e92aa",
+1038 => x"38606184",
+1039 => x"05827205",
+1040 => x"225a4256",
+1041 => x"815c800b",
+1042 => x"82d53d34",
+1043 => x"7d42807e",
+1044 => x"2486387e",
+1045 => x"feff065f",
+1046 => x"62783070",
+1047 => x"7a079f2a",
+1048 => x"64307066",
+1049 => x"079f2a72",
+1050 => x"07525951",
+1051 => x"585b0b76",
+1052 => x"802e918d",
+1053 => x"387b812e",
+1054 => x"8b9d3881",
+1055 => x"7c259281",
+1056 => x"387b822e",
+1057 => x"8bd63881",
+1058 => x"88e85b0b",
+1059 => x"0b7a51fa",
+1060 => x"823f8008",
+1061 => x"5c0b0b7b",
+1062 => x"5e7b6225",
+1063 => x"8338615e",
+1064 => x"82d43d33",
+1065 => x"7081ff06",
+1066 => x"57580b75",
+1067 => x"802e90ba",
+1068 => x"38811e5e",
+1069 => x"7e818406",
+1070 => x"400b0b7f",
+1071 => x"80fa3864",
+1072 => x"7e315780",
+1073 => x"0b772580",
+1074 => x"ef389077",
+1075 => x"25b93881",
+1076 => x"85e47a0c",
+1077 => x"900b841b",
+1078 => x"0c82d33d",
+1079 => x"08900582",
+1080 => x"d43d0c88",
+1081 => x"1a82d33d",
+1082 => x"08817105",
+1083 => x"82d53d0c",
+1084 => x"81710551",
+1085 => x"575a0b75",
+1086 => x"872485aa",
+1087 => x"38f01757",
+1088 => x"0b0b7690",
+1089 => x"24c93881",
+1090 => x"85e47a0c",
+1091 => x"76841b0c",
+1092 => x"82d33d08",
+1093 => x"1782d43d",
+1094 => x"0c881a82",
+1095 => x"d33d0881",
+1096 => x"710582d5",
+1097 => x"3d0c8171",
+1098 => x"0551575a",
+1099 => x"0b758724",
+1100 => x"8ff63882",
+1101 => x"d43d3358",
+1102 => x"0b0b7781",
+1103 => x"ff06560b",
+1104 => x"0b75802e",
+1105 => x"86e83882",
+1106 => x"d53dfc71",
+1107 => x"057b0c58",
+1108 => x"810b841b",
+1109 => x"0c82d33d",
+1110 => x"08810582",
+1111 => x"d43d0c88",
+1112 => x"1a82d33d",
+1113 => x"08817105",
+1114 => x"82d53d0c",
+1115 => x"81710551",
+1116 => x"575a0b75",
+1117 => x"87248789",
+1118 => x"387f8180",
+1119 => x"2e84d738",
+1120 => x"617c3157",
+1121 => x"800b7725",
+1122 => x"80fa3890",
+1123 => x"7725b938",
+1124 => x"8185f47a",
+1125 => x"0c900b84",
+1126 => x"1b0c82d3",
+1127 => x"3d089005",
+1128 => x"82d43d0c",
+1129 => x"881a82d3",
+1130 => x"3d088171",
+1131 => x"0582d53d",
+1132 => x"0c817105",
+1133 => x"51575a0b",
+1134 => x"75872484",
+1135 => x"8138f017",
+1136 => x"570b0b76",
+1137 => x"9024c938",
+1138 => x"8185f47a",
+1139 => x"0c76841b",
+1140 => x"0c82d33d",
+1141 => x"081782d4",
+1142 => x"3d0c881a",
+1143 => x"82d33d08",
+1144 => x"81710582",
+1145 => x"d53d0c81",
+1146 => x"71055157",
+1147 => x"5a877625",
+1148 => x"933882d5",
+1149 => x"3df00552",
+1150 => x"6351f887",
+1151 => x"3f800886",
+1152 => x"ad38625a",
+1153 => x"7a0b7a0c",
+1154 => x"7b841b0c",
+1155 => x"82d33d08",
+1156 => x"1c82d43d",
+1157 => x"0c881a82",
+1158 => x"d33d0881",
+1159 => x"710582d5",
+1160 => x"3d0c8171",
+1161 => x"0551575a",
+1162 => x"0b758724",
+1163 => x"84eb387e",
+1164 => x"822a7081",
+1165 => x"0651560b",
+1166 => x"0b75802e",
+1167 => x"81813864",
+1168 => x"7e315780",
+1169 => x"0b772580",
+1170 => x"f6389077",
+1171 => x"25b93881",
+1172 => x"85e47a0c",
+1173 => x"900b841b",
+1174 => x"0c82d33d",
+1175 => x"08900582",
+1176 => x"d43d0c88",
+1177 => x"1a82d33d",
+1178 => x"08817105",
+1179 => x"82d53d0c",
+1180 => x"81710551",
+1181 => x"575a0b75",
+1182 => x"87248485",
+1183 => x"38f01757",
+1184 => x"0b0b7690",
+1185 => x"24c93881",
+1186 => x"85e47a0c",
+1187 => x"76841b0c",
+1188 => x"82d33d08",
+1189 => x"1782d43d",
+1190 => x"0c82d23d",
+1191 => x"08817105",
+1192 => x"82d43d0c",
+1193 => x"81710551",
+1194 => x"56870b76",
+1195 => x"25913882",
+1196 => x"d53df005",
+1197 => x"526351f6",
+1198 => x"ca3f8008",
+1199 => x"84f0387d",
+1200 => x"567d6525",
+1201 => x"83386456",
+1202 => x"65164682",
+1203 => x"d33d0884",
+1204 => x"cb38800b",
+1205 => x"82d33d0c",
+1206 => x"625a6680",
+1207 => x"2ef7d238",
+1208 => x"6651b2d6",
+1209 => x"3f80795c",
+1210 => x"47f7c839",
+1211 => x"7e90075f",
+1212 => x"0b0b7e84",
+1213 => x"2a708106",
+1214 => x"51560b0b",
+1215 => x"758cd538",
+1216 => x"7e862a70",
+1217 => x"81065156",
+1218 => x"0b0b7580",
+1219 => x"2e8cc538",
+1220 => x"60618405",
+1221 => x"82720522",
+1222 => x"5a425680",
+1223 => x"5c800b82",
+1224 => x"d53d34fa",
+1225 => x"a7397e90",
+1226 => x"075f0b0b",
+1227 => x"7e842a70",
+1228 => x"81065156",
+1229 => x"0b0b758c",
+1230 => x"89387e86",
+1231 => x"2a708106",
+1232 => x"51560b0b",
+1233 => x"75802e8b",
+1234 => x"f9386061",
+1235 => x"84057108",
+1236 => x"902b7090",
+1237 => x"2c515a42",
+1238 => x"56807824",
+1239 => x"89ac3881",
+1240 => x"5cf9e939",
+1241 => x"60618405",
+1242 => x"71084742",
+1243 => x"56648025",
+1244 => x"f8e23864",
+1245 => x"30457e84",
+1246 => x"07793359",
+1247 => x"5ff8d839",
+1248 => x"8119597e",
+1249 => x"90077933",
+1250 => x"595ff8cb",
+1251 => x"397c802e",
+1252 => x"8caf3882",
+1253 => x"b73d5b7c",
+1254 => x"0b7b3481",
+1255 => x"5c800b82",
+1256 => x"d53d34f9",
+1257 => x"f03982d5",
+1258 => x"3df00552",
+1259 => x"6351f4d3",
+1260 => x"3f800882",
+1261 => x"f93862f0",
+1262 => x"18585afa",
+1263 => x"c33982d5",
+1264 => x"3df00552",
+1265 => x"6351f4bb",
+1266 => x"3f800882",
+1267 => x"e13862f0",
+1268 => x"18585afb",
+1269 => x"ec39647e",
+1270 => x"3157800b",
+1271 => x"7725fba0",
+1272 => x"38907725",
+1273 => x"b9388185",
+1274 => x"f47a0c90",
+1275 => x"0b841b0c",
+1276 => x"82d33d08",
+1277 => x"900582d4",
+1278 => x"3d0c881a",
+1279 => x"82d33d08",
+1280 => x"81710582",
+1281 => x"d53d0c81",
+1282 => x"71055157",
+1283 => x"5a0b7587",
+1284 => x"2480d638",
+1285 => x"f017570b",
+1286 => x"0b769024",
+1287 => x"c9388185",
+1288 => x"f47a0c76",
+1289 => x"841b0c82",
+1290 => x"d33d0817",
+1291 => x"82d43d0c",
+1292 => x"881a82d3",
+1293 => x"3d088171",
+1294 => x"0582d53d",
+1295 => x"0c817105",
+1296 => x"51575a87",
+1297 => x"7625fab8",
+1298 => x"3882d53d",
+1299 => x"f0055263",
+1300 => x"51f3b03f",
+1301 => x"800881d6",
+1302 => x"3862627d",
+1303 => x"31585a0b",
+1304 => x"768024fa",
+1305 => x"a638fb9c",
+1306 => x"3982d53d",
+1307 => x"f0055263",
+1308 => x"51f3903f",
+1309 => x"800881b6",
+1310 => x"3862f018",
+1311 => x"585aff97",
+1312 => x"3982d53d",
+1313 => x"f0055263",
+1314 => x"51f2f83f",
+1315 => x"8008819e",
+1316 => x"3862f018",
+1317 => x"585afbe8",
+1318 => x"3982d53d",
+1319 => x"f0055263",
+1320 => x"51f2e03f",
+1321 => x"80088186",
+1322 => x"38625afb",
+1323 => x"82397e0a",
+1324 => x"100a7081",
+1325 => x"0651560b",
+1326 => x"0b75802e",
+1327 => x"f9bb38b0",
+1328 => x"0b82b73d",
+1329 => x"347c0284",
+1330 => x"0589d505",
+1331 => x"3482d53d",
+1332 => x"ff84057a",
+1333 => x"0c820b84",
+1334 => x"1b0c82d3",
+1335 => x"3d088205",
+1336 => x"82d43d0c",
+1337 => x"881a82d3",
+1338 => x"3d088171",
+1339 => x"0582d53d",
+1340 => x"0c817105",
+1341 => x"51575a87",
+1342 => x"7625f8fd",
+1343 => x"3882d53d",
+1344 => x"58f01852",
+1345 => x"6351f1fb",
+1346 => x"3f8008a2",
+1347 => x"38625a7f",
+1348 => x"81802e09",
+1349 => x"8106f8e8",
+1350 => x"38fdbb39",
+1351 => x"82d53df0",
+1352 => x"05526351",
+1353 => x"f1dd3f80",
+1354 => x"08802efb",
+1355 => x"a5386680",
+1356 => x"2e863866",
+1357 => x"51ae833f",
+1358 => x"638c0522",
+1359 => x"70862a70",
+1360 => x"8106685a",
+1361 => x"5157440b",
+1362 => x"75802ef4",
+1363 => x"a238ff56",
+1364 => x"f49f3980",
+1365 => x"0b82d53d",
+1366 => x"34606184",
+1367 => x"0571085d",
+1368 => x"42567a80",
+1369 => x"2e88d138",
+1370 => x"7c80d32e",
+1371 => x"85aa387e",
+1372 => x"842a7081",
+1373 => x"0651560b",
+1374 => x"0b75859c",
+1375 => x"38807e24",
+1376 => x"f689387d",
+1377 => x"530b0b75",
+1378 => x"527a51ba",
+1379 => x"d03f7d5c",
+1380 => x"8008802e",
+1381 => x"f5ff3880",
+1382 => x"087b315c",
+1383 => x"7d0b7c25",
+1384 => x"f5f3387d",
+1385 => x"5cf5ee39",
+1386 => x"7e842a70",
+1387 => x"81065156",
+1388 => x"0b0b7587",
+1389 => x"bb387e86",
+1390 => x"2a708106",
+1391 => x"51560b0b",
+1392 => x"75802e87",
+1393 => x"ab386061",
+1394 => x"84057108",
+1395 => x"52425665",
+1396 => x"0b762378",
+1397 => x"5bf1dc39",
+1398 => x"78337081",
+1399 => x"ff065758",
+1400 => x"0b7580ec",
+1401 => x"2efb9938",
+1402 => x"7e900778",
+1403 => x"81ff0681",
+1404 => x"1b5b5e5f",
+1405 => x"f3eb3960",
+1406 => x"61840571",
+1407 => x"085a4256",
+1408 => x"820b8189",
+1409 => x"84607207",
+1410 => x"41495c80",
+1411 => x"f85d800b",
+1412 => x"82d53d34",
+1413 => x"f4b63989",
+1414 => x"7827a838",
+1415 => x"ff1b5b8a",
+1416 => x"52775180",
+1417 => x"d8b43f80",
+1418 => x"08b00556",
+1419 => x"0b0b757b",
+1420 => x"348a5277",
+1421 => x"5180d7f6",
+1422 => x"3f800858",
+1423 => x"0b0b7789",
+1424 => x"26da38ff",
+1425 => x"1bb01957",
+1426 => x"5b0b750b",
+1427 => x"7b3482d5",
+1428 => x"3d707c31",
+1429 => x"ffb0055d",
+1430 => x"56f4ba39",
+1431 => x"ff1b788f",
+1432 => x"06690557",
+1433 => x"5b0b7533",
+1434 => x"7b347784",
+1435 => x"2a580b0b",
+1436 => x"77802eda",
+1437 => x"38ff1b78",
+1438 => x"8f066905",
+1439 => x"575b0b75",
+1440 => x"337b3477",
+1441 => x"842a580b",
+1442 => x"0b77d138",
+1443 => x"c1397e80",
+1444 => x"c0077933",
+1445 => x"595ff2bf",
+1446 => x"3982b73d",
+1447 => x"5b7c80c3",
+1448 => x"2e91387e",
+1449 => x"842a7081",
+1450 => x"0651560b",
+1451 => x"0b75802e",
+1452 => x"82c83888",
+1453 => x"530b0b80",
+1454 => x"529d3d70",
+1455 => x"5256bbcf",
+1456 => x"3f75540b",
+1457 => x"0b606184",
+1458 => x"05710855",
+1459 => x"7c540b0b",
+1460 => x"6a530b0b",
+1461 => x"425686e8",
+1462 => x"3f80085c",
+1463 => x"8008ff2e",
+1464 => x"fccc3880",
+1465 => x"0b82d53d",
+1466 => x"34f3aa39",
+1467 => x"78708105",
+1468 => x"5a335d0b",
+1469 => x"0b7caa2e",
+1470 => x"85ef3880",
+1471 => x"0bd01e71",
+1472 => x"4057570b",
+1473 => x"758926f1",
+1474 => x"d8387610",
+1475 => x"10107710",
+1476 => x"057d05d0",
+1477 => x"05797081",
+1478 => x"055b33d0",
+1479 => x"7105585e",
+1480 => x"57897627",
+1481 => x"e538765e",
+1482 => x"76ff25f1",
+1483 => x"b438ff5e",
+1484 => x"f1af3981",
+1485 => x"89987f84",
+1486 => x"2a708106",
+1487 => x"5157480b",
+1488 => x"75818a38",
+1489 => x"7e862a70",
+1490 => x"81065156",
+1491 => x"0b0b7580",
+1492 => x"2e80fa38",
+1493 => x"60618405",
+1494 => x"82720522",
+1495 => x"5a425682",
+1496 => x"7f810657",
+1497 => x"5c77802e",
+1498 => x"f1dc3875",
+1499 => x"802ef1d6",
+1500 => x"387e7c07",
+1501 => x"5f800b82",
+1502 => x"d53d34f1",
+1503 => x"cf39ab0b",
+1504 => x"82d53d34",
+1505 => x"783358f0",
+1506 => x"ce398057",
+1507 => x"0b0b7610",
+1508 => x"10107710",
+1509 => x"057d05d0",
+1510 => x"05797081",
+1511 => x"055b33d0",
+1512 => x"7105585e",
+1513 => x"57897627",
+1514 => x"e3387645",
+1515 => x"f0b3397e",
+1516 => x"81800779",
+1517 => x"33595ff0",
+1518 => x"9e398189",
+1519 => x"847f842a",
+1520 => x"70810651",
+1521 => x"57480b75",
+1522 => x"802efef8",
+1523 => x"38606184",
+1524 => x"0571085a",
+1525 => x"4256ff87",
+1526 => x"397e8107",
+1527 => x"7933595f",
+1528 => x"eff53982",
+1529 => x"d43d3356",
+1530 => x"0b0b75ef",
+1531 => x"e738a00b",
+1532 => x"82d53d34",
+1533 => x"783358ef",
+1534 => x"de396061",
+1535 => x"84054256",
+1536 => x"8316337b",
+1537 => x"34815cf7",
+1538 => x"94397730",
+1539 => x"58ad0b82",
+1540 => x"d53d3481",
+1541 => x"5cf0b539",
+1542 => x"7a4a8070",
+1543 => x"585c8853",
+1544 => x"0b0b7b52",
+1545 => x"9b3d7052",
+1546 => x"58b8e43f",
+1547 => x"7b7e2481",
+1548 => x"94387610",
+1549 => x"106a0556",
+1550 => x"0b0b7508",
+1551 => x"802eb638",
+1552 => x"77540b0b",
+1553 => x"7508530b",
+1554 => x"0b82d53d",
+1555 => x"ff880552",
+1556 => x"685183ec",
+1557 => x"3f8008ff",
+1558 => x"2ef9d338",
+1559 => x"80081c56",
+1560 => x"0b0b757e",
+1561 => x"248f3881",
+1562 => x"17765d57",
+1563 => x"757e2e09",
+1564 => x"8106ffbe",
+1565 => x"387b802e",
+1566 => x"f09b3881",
+1567 => x"1c526851",
+1568 => x"a7c73f80",
+1569 => x"08478008",
+1570 => x"802ef9ac",
+1571 => x"3888530b",
+1572 => x"0b805277",
+1573 => x"51b7f83f",
+1574 => x"77557b54",
+1575 => x"0b0b82d5",
+1576 => x"3df69405",
+1577 => x"530b0b66",
+1578 => x"52685184",
+1579 => x"8a3f8008",
+1580 => x"7c2e0981",
+1581 => x"06f8f738",
+1582 => x"66678008",
+1583 => x"05575b80",
+1584 => x"7634efd1",
+1585 => x"3977557b",
+1586 => x"540b0b82",
+1587 => x"d53df694",
+1588 => x"05530b0b",
+1589 => x"7b526851",
+1590 => x"83dd3f80",
+1591 => x"085c8008",
+1592 => x"ff2ef8ca",
+1593 => x"387a4aff",
+1594 => x"8c397e0a",
+1595 => x"100a7081",
+1596 => x"0651560b",
+1597 => x"0b75802e",
+1598 => x"efba3882",
+1599 => x"1e5eefb4",
+1600 => x"397bfaca",
+1601 => x"387e8106",
+1602 => x"560b0b75",
+1603 => x"802efabe",
+1604 => x"380289ff",
+1605 => x"055bb00b",
+1606 => x"7b3482d5",
+1607 => x"3d707c31",
+1608 => x"ffb0055d",
+1609 => x"56eeee39",
+1610 => x"82d53df0",
+1611 => x"05526351",
+1612 => x"e9d13f80",
+1613 => x"08f7f738",
+1614 => x"6282d53d",
+1615 => x"33595aef",
+1616 => x"f7396061",
+1617 => x"84057108",
+1618 => x"5a425677",
+1619 => x"8025f48f",
+1620 => x"38fdb739",
+1621 => x"60618405",
+1622 => x"71085a42",
+1623 => x"56805cf3",
+1624 => x"bc396061",
+1625 => x"84057108",
+1626 => x"5a425681",
+1627 => x"5cedd739",
+1628 => x"60618405",
+1629 => x"71086871",
+1630 => x"0c527a5d",
+1631 => x"4256eab3",
+1632 => x"397bee83",
+1633 => x"38ff1b78",
+1634 => x"b706b007",
+1635 => x"585b0b76",
+1636 => x"0b7b3477",
+1637 => x"832a580b",
+1638 => x"0b77ea38",
+1639 => x"7e810656",
+1640 => x"0b0b7580",
+1641 => x"2ef9a738",
+1642 => x"76b02ef9",
+1643 => x"a138ff1b",
+1644 => x"5bb00b7b",
+1645 => x"34fee339",
+1646 => x"8189ac5b",
+1647 => x"865cedd5",
+1648 => x"3982d33d",
+1649 => x"088a3880",
+1650 => x"0b82d33d",
+1651 => x"0cf6df39",
+1652 => x"82d53df0",
+1653 => x"05526351",
+1654 => x"e8a93f80",
+1655 => x"08f6cf38",
+1656 => x"800b82d3",
+1657 => x"3d0cf6c6",
+1658 => x"39606184",
+1659 => x"05710840",
+1660 => x"42567d80",
+1661 => x"25ebdd38",
+1662 => x"ff793359",
+1663 => x"5eebd839",
+1664 => x"fc3d0d81",
+1665 => x"8a940855",
+1666 => x"b8150880",
+1667 => x"2e973878",
+1668 => x"540b0b77",
+1669 => x"530b0b76",
+1670 => x"52818a94",
+1671 => x"0851e89b",
+1672 => x"3f863d0d",
+1673 => x"04745190",
+1674 => x"c13f7854",
+1675 => x"0b0b7753",
+1676 => x"0b0b7652",
+1677 => x"818a9408",
+1678 => x"51e8803f",
+1679 => x"863d0d04",
+1680 => x"f63d0d7c",
+1681 => x"7e615956",
+1682 => x"58805674",
+1683 => x"0b762ea0",
+1684 => x"3876540b",
+1685 => x"0b7e530b",
+1686 => x"0b745277",
+1687 => x"5182d53f",
+1688 => x"80085580",
+1689 => x"08ff2ea6",
+1690 => x"3874800c",
+1691 => x"8c3d0d04",
+1692 => x"76540b0b",
+1693 => x"75530b0b",
+1694 => x"8c3df405",
+1695 => x"52775182",
+1696 => x"b33f8008",
+1697 => x"558008ff",
+1698 => x"2e098106",
+1699 => x"dc388077",
+1700 => x"0c818a78",
+1701 => x"0c74800c",
+1702 => x"8c3d0d04",
+1703 => x"70707070",
+1704 => x"77540b0b",
+1705 => x"76530b0b",
+1706 => x"7552818a",
+1707 => x"940851ff",
+1708 => x"8f3f5050",
+1709 => x"505004ec",
+1710 => x"3d0d6668",
+1711 => x"6a6c6e73",
+1712 => x"5c405d42",
+1713 => x"42420b60",
+1714 => x"802e819b",
+1715 => x"38806008",
+1716 => x"5a5d0b0b",
+1717 => x"7c7a2781",
+1718 => x"8338933d",
+1719 => x"5b7b0884",
+1720 => x"1d087d56",
+1721 => x"7a08557c",
+1722 => x"540b0b63",
+1723 => x"530b0b40",
+1724 => x"5efecd3f",
+1725 => x"80085880",
+1726 => x"08ff2e80",
+1727 => x"fa38807a",
+1728 => x"80083156",
+1729 => x"567c7526",
+1730 => x"83388156",
+1731 => x"80087a27",
+1732 => x"80da3875",
+1733 => x"802e80d4",
+1734 => x"3880081d",
+1735 => x"5d60802e",
+1736 => x"a7388056",
+1737 => x"0b0b7580",
+1738 => x"08259738",
+1739 => x"751b550b",
+1740 => x"0b743377",
+1741 => x"70810559",
+1742 => x"34811656",
+1743 => x"770b7624",
+1744 => x"eb387f08",
+1745 => x"8405600c",
+1746 => x"78708405",
+1747 => x"5a08550b",
+1748 => x"0b74802e",
+1749 => x"b138797d",
+1750 => x"26ff8238",
+1751 => x"7c550b0b",
+1752 => x"74800c96",
+1753 => x"3d0d04ff",
+1754 => x"5afee239",
+1755 => x"7d7c0c7e",
+1756 => x"841d0c7c",
+1757 => x"55e83981",
+1758 => x"8a620c80",
+1759 => x"7c0c8008",
+1760 => x"800c963d",
+1761 => x"0d046080",
+1762 => x"2e843874",
+1763 => x"600c747c",
+1764 => x"0cff1d80",
+1765 => x"0c963d0d",
+1766 => x"04fc3d0d",
+1767 => x"79557854",
+1768 => x"0b0b7753",
+1769 => x"0b0b7652",
+1770 => x"818a9408",
+1771 => x"51fe883f",
+1772 => x"863d0d04",
+1773 => x"f83d0d7b",
+1774 => x"7d7f8191",
+1775 => x"94540b0b",
+1776 => x"595755e3",
+1777 => x"ce3f8008",
+1778 => x"81269838",
+1779 => x"74540b0b",
+1780 => x"74802e88",
+1781 => x"38757534",
+1782 => x"81540b0b",
+1783 => x"73800c8a",
+1784 => x"3d0d0481",
+1785 => x"89b45281",
+1786 => x"919451be",
+1787 => x"c93f8008",
+1788 => x"81d93880",
+1789 => x"08540b0b",
+1790 => x"74802ee0",
+1791 => x"3880ff76",
+1792 => x"25d338ff",
+1793 => x"8016530b",
+1794 => x"0b8eff73",
+1795 => x"2785b838",
+1796 => x"f0801653",
+1797 => x"0b0b83ef",
+1798 => x"ff732782",
+1799 => x"d038fc80",
+1800 => x"8016530b",
+1801 => x"0b80fbff",
+1802 => x"ff732785",
+1803 => x"c2388fff",
+1804 => x"0a16530b",
+1805 => x"0bf7c00a",
+1806 => x"73278689",
+1807 => x"38ff540b",
+1808 => x"0bc00a76",
+1809 => x"25ff9538",
+1810 => x"75820a06",
+1811 => x"709e2c70",
+1812 => x"fc075151",
+1813 => x"530b0b72",
+1814 => x"75708105",
+1815 => x"57347581",
+1816 => x"fc0a0670",
+1817 => x"982aff80",
+1818 => x"0751530b",
+1819 => x"0b727570",
+1820 => x"81055734",
+1821 => x"7587f080",
+1822 => x"80067092",
+1823 => x"2aff8007",
+1824 => x"51530b0b",
+1825 => x"72757081",
+1826 => x"05573475",
+1827 => x"8fe08006",
+1828 => x"708c2aff",
+1829 => x"80075153",
+1830 => x"0b0b7275",
+1831 => x"70810557",
+1832 => x"34759fc0",
+1833 => x"0670862a",
+1834 => x"ff800751",
+1835 => x"530b0b72",
+1836 => x"75708105",
+1837 => x"573475ff",
+1838 => x"bf06ff80",
+1839 => x"07530b0b",
+1840 => x"72753486",
+1841 => x"0b800c8a",
+1842 => x"3d0d0481",
+1843 => x"89bc5281",
+1844 => x"919451bc",
+1845 => x"e13f8008",
+1846 => x"81f93875",
+1847 => x"81ff0676",
+1848 => x"882c7081",
+1849 => x"ff068008",
+1850 => x"5759540b",
+1851 => x"0b587480",
+1852 => x"2efde938",
+1853 => x"76802efd",
+1854 => x"d3388008",
+1855 => x"80ff1870",
+1856 => x"81ff0651",
+1857 => x"540b0b56",
+1858 => x"729e2683",
+1859 => x"38815680",
+1860 => x"08a01870",
+1861 => x"81ff0651",
+1862 => x"540b0b54",
+1863 => x"0b0b728f",
+1864 => x"26853881",
+1865 => x"540b0b75",
+1866 => x"7407530b",
+1867 => x"0b72802e",
+1868 => x"b4388008",
+1869 => x"c019540b",
+1870 => x"0b5672be",
+1871 => x"26833881",
+1872 => x"568008ff",
+1873 => x"80197081",
+1874 => x"ff065154",
+1875 => x"0b0b540b",
+1876 => x"0b7280fc",
+1877 => x"26853881",
+1878 => x"540b0b75",
+1879 => x"7407530b",
+1880 => x"0b7280da",
+1881 => x"38ff0b80",
+1882 => x"0c8a3d0d",
+1883 => x"04fcd080",
+1884 => x"16530b0b",
+1885 => x"ff540b0b",
+1886 => x"8fff7327",
+1887 => x"fcde3875",
+1888 => x"83e08006",
+1889 => x"708c2ae0",
+1890 => x"0751530b",
+1891 => x"0b727570",
+1892 => x"81055734",
+1893 => x"759fc006",
+1894 => x"70862aff",
+1895 => x"80075153",
+1896 => x"0b0b7275",
+1897 => x"70810557",
+1898 => x"3475ffbf",
+1899 => x"06ff8007",
+1900 => x"530b0b72",
+1901 => x"7534830b",
+1902 => x"800c8a3d",
+1903 => x"0d047675",
+1904 => x"70810557",
+1905 => x"34777534",
+1906 => x"82540b0b",
+1907 => x"73800c8a",
+1908 => x"3d0d0481",
+1909 => x"89c45281",
+1910 => x"919451ba",
+1911 => x"d93f8008",
+1912 => x"80eb3875",
+1913 => x"81ff0676",
+1914 => x"882c7081",
+1915 => x"ff068008",
+1916 => x"5759540b",
+1917 => x"0b587480",
+1918 => x"2efbe138",
+1919 => x"76802efb",
+1920 => x"cb388008",
+1921 => x"530b0b81",
+1922 => x"a0772785",
+1923 => x"3881530b",
+1924 => x"0b7681ff",
+1925 => x"2efece38",
+1926 => x"81707406",
+1927 => x"540b0b54",
+1928 => x"0b0b7280",
+1929 => x"2efebe38",
+1930 => x"8008530b",
+1931 => x"0b81a078",
+1932 => x"27853873",
+1933 => x"530b0b77",
+1934 => x"81ff2efe",
+1935 => x"a8387274",
+1936 => x"06530b0b",
+1937 => x"72802efe",
+1938 => x"9c38fef2",
+1939 => x"398189cc",
+1940 => x"52819194",
+1941 => x"51b9df3f",
+1942 => x"8008faf0",
+1943 => x"38800876",
+1944 => x"81ff0677",
+1945 => x"882c7081",
+1946 => x"ff065955",
+1947 => x"59598154",
+1948 => x"0b0b7480",
+1949 => x"2efae538",
+1950 => x"75802e82",
+1951 => x"b438df16",
+1952 => x"530b0b72",
+1953 => x"80dd26fd",
+1954 => x"dc38df18",
+1955 => x"530b0b72",
+1956 => x"80dd26fd",
+1957 => x"d0387608",
+1958 => x"9c387377",
+1959 => x"0c9b7570",
+1960 => x"81055734",
+1961 => x"a4757081",
+1962 => x"05573480",
+1963 => x"c2757081",
+1964 => x"05573483",
+1965 => x"59757570",
+1966 => x"81055734",
+1967 => x"77753482",
+1968 => x"19800c8a",
+1969 => x"3d0d0475",
+1970 => x"8fc00670",
+1971 => x"862ac007",
+1972 => x"51530b0b",
+1973 => x"72757081",
+1974 => x"05573475",
+1975 => x"ffbf06ff",
+1976 => x"8007530b",
+1977 => x"0b727534",
+1978 => x"82540b0b",
+1979 => x"fdde3975",
+1980 => x"80f08080",
+1981 => x"0670922a",
+1982 => x"f0075153",
+1983 => x"0b0b7275",
+1984 => x"70810557",
+1985 => x"34758fe0",
+1986 => x"8006708c",
+1987 => x"2aff8007",
+1988 => x"51530b0b",
+1989 => x"72757081",
+1990 => x"05573475",
+1991 => x"9fc00670",
+1992 => x"862aff80",
+1993 => x"0751530b",
+1994 => x"0b727570",
+1995 => x"81055734",
+1996 => x"75ffbf06",
+1997 => x"ff800753",
+1998 => x"0b0b7275",
+1999 => x"34840b80",
+2000 => x"0c8a3d0d",
+2001 => x"047581c0",
+2002 => x"0a067098",
+2003 => x"2af80751",
+2004 => x"530b0b72",
+2005 => x"75708105",
+2006 => x"57347587",
+2007 => x"f0808006",
+2008 => x"70922aff",
+2009 => x"80075153",
+2010 => x"0b0b7275",
+2011 => x"70810557",
+2012 => x"34758fe0",
+2013 => x"8006708c",
+2014 => x"2aff8007",
+2015 => x"51530b0b",
+2016 => x"72757081",
+2017 => x"05573475",
+2018 => x"9fc00670",
+2019 => x"862aff80",
+2020 => x"0751530b",
+2021 => x"0b727570",
+2022 => x"81055734",
+2023 => x"75ffbf06",
+2024 => x"ff800753",
+2025 => x"0b0b7275",
+2026 => x"34850b80",
+2027 => x"0c8a3d0d",
+2028 => x"04760880",
+2029 => x"2e9d3880",
+2030 => x"08770c9b",
+2031 => x"75708105",
+2032 => x"5734a875",
+2033 => x"70810557",
+2034 => x"3480c275",
+2035 => x"70810557",
+2036 => x"34835977",
+2037 => x"75348119",
+2038 => x"800c8a3d",
+2039 => x"0d04fa3d",
+2040 => x"0d78818a",
+2041 => x"9408540b",
+2042 => x"0b55b873",
+2043 => x"0508802e",
+2044 => x"81ce388c",
+2045 => x"15227083",
+2046 => x"ffff0670",
+2047 => x"832a8132",
+2048 => x"70810651",
+2049 => x"55555672",
+2050 => x"802e80ea",
+2051 => x"3873842a",
+2052 => x"81328106",
+2053 => x"57ff530b",
+2054 => x"0b76818b",
+2055 => x"3873822a",
+2056 => x"70810651",
+2057 => x"530b0b72",
+2058 => x"802ebf38",
+2059 => x"b0150854",
+2060 => x"0b0b7380",
+2061 => x"2e9e3880",
+2062 => x"c015530b",
+2063 => x"0b73732e",
+2064 => x"8f387352",
+2065 => x"818a9408",
+2066 => x"5188a53f",
+2067 => x"8c152256",
+2068 => x"76b0160c",
+2069 => x"75db0653",
+2070 => x"0b0b728c",
+2071 => x"1623800b",
+2072 => x"84160c90",
+2073 => x"1508750c",
+2074 => x"72560b0b",
+2075 => x"75880753",
+2076 => x"0b0b728c",
+2077 => x"16239015",
+2078 => x"08802e80",
+2079 => x"cb388c15",
+2080 => x"22708106",
+2081 => x"55530b0b",
+2082 => x"73a43872",
+2083 => x"0a100a70",
+2084 => x"81065153",
+2085 => x"0b0b7287",
+2086 => x"38941508",
+2087 => x"540b0b73",
+2088 => x"88160c80",
+2089 => x"530b0b72",
+2090 => x"800c883d",
+2091 => x"0d04800b",
+2092 => x"88160c94",
+2093 => x"15083098",
+2094 => x"160c8053",
+2095 => x"0b0be839",
+2096 => x"725183a6",
+2097 => x"3ffeac39",
+2098 => x"745194c6",
+2099 => x"3f8c1522",
+2100 => x"70810655",
+2101 => x"530b0b73",
+2102 => x"802effaf",
+2103 => x"38d039f8",
+2104 => x"3d0d7a58",
+2105 => x"0b0b7780",
+2106 => x"2e81a938",
+2107 => x"818a9408",
+2108 => x"540b0bb8",
+2109 => x"1408802e",
+2110 => x"80f9388c",
+2111 => x"18227090",
+2112 => x"2b70902c",
+2113 => x"70832a81",
+2114 => x"3281065c",
+2115 => x"5157540b",
+2116 => x"0b7880d7",
+2117 => x"38901808",
+2118 => x"570b0b76",
+2119 => x"802e80cb",
+2120 => x"38770877",
+2121 => x"3177790c",
+2122 => x"7683067a",
+2123 => x"5855550b",
+2124 => x"73853894",
+2125 => x"1808560b",
+2126 => x"0b758819",
+2127 => x"0c807525",
+2128 => x"aa387453",
+2129 => x"0b0b7652",
+2130 => x"9c180851",
+2131 => x"a4180854",
+2132 => x"0b0b732d",
+2133 => x"800b8008",
+2134 => x"2580cd38",
+2135 => x"80081775",
+2136 => x"80083156",
+2137 => x"570b7480",
+2138 => x"24d83880",
+2139 => x"0b800c8a",
+2140 => x"3d0d0473",
+2141 => x"5181f33f",
+2142 => x"8c182270",
+2143 => x"902b7090",
+2144 => x"2c70832a",
+2145 => x"81328106",
+2146 => x"5c515754",
+2147 => x"0b0b78db",
+2148 => x"38ff8239",
+2149 => x"80c1df52",
+2150 => x"818a9408",
+2151 => x"5191973f",
+2152 => x"8008800c",
+2153 => x"8a3d0d04",
+2154 => x"8c182280",
+2155 => x"c007540b",
+2156 => x"0b738c19",
+2157 => x"23ff0b80",
+2158 => x"0c8a3d0d",
+2159 => x"04707251",
+2160 => x"800b710c",
+2161 => x"800b8472",
+2162 => x"050c800b",
+2163 => x"8872050c",
+2164 => x"028e0522",
+2165 => x"8c720523",
+2166 => x"02920522",
+2167 => x"8e720523",
+2168 => x"800b9072",
+2169 => x"050c800b",
+2170 => x"9472050c",
+2171 => x"800b9872",
+2172 => x"050c709c",
+2173 => x"72050c80",
+2174 => x"f3d60ba0",
+2175 => x"72050c80",
+2176 => x"f4a90ba4",
+2177 => x"72050c80",
+2178 => x"f5bc0ba8",
+2179 => x"72050c80",
+2180 => x"f6960bac",
+2181 => x"72050c50",
+2182 => x"04fa3d0d",
+2183 => x"797080dc",
+2184 => x"298c7105",
+2185 => x"540b0b7a",
+2186 => x"530b0b56",
+2187 => x"57949a3f",
+2188 => x"80088008",
+2189 => x"55568008",
+2190 => x"802ea838",
+2191 => x"80088c05",
+2192 => x"540b0b80",
+2193 => x"0b80080c",
+2194 => x"76800884",
+2195 => x"050c7380",
+2196 => x"0888050c",
+2197 => x"74530b0b",
+2198 => x"80527351",
+2199 => x"a4b13f75",
+2200 => x"540b0b73",
+2201 => x"800c883d",
+2202 => x"0d04fc3d",
+2203 => x"0d7680c7",
+2204 => x"940bbc72",
+2205 => x"050c5581",
+2206 => x"0bb8160c",
+2207 => x"800b84dc",
+2208 => x"160c830b",
+2209 => x"84e0160c",
+2210 => x"84e81584",
+2211 => x"e4160c74",
+2212 => x"540b0b80",
+2213 => x"530b0b84",
+2214 => x"52841508",
+2215 => x"51fe9e3f",
+2216 => x"74540b0b",
+2217 => x"81530b0b",
+2218 => x"89528815",
+2219 => x"0851fe8d",
+2220 => x"3f74540b",
+2221 => x"0b82530b",
+2222 => x"0b8a528c",
+2223 => x"150851fd",
+2224 => x"fc3f863d",
+2225 => x"0d04f93d",
+2226 => x"0d79818a",
+2227 => x"9408540b",
+2228 => x"0b57b873",
+2229 => x"0508802e",
+2230 => x"80ce3884",
+2231 => x"dc730556",
+2232 => x"88160884",
+2233 => x"1708ff05",
+2234 => x"55558074",
+2235 => x"24a2388c",
+2236 => x"15227090",
+2237 => x"2b70902c",
+2238 => x"51540b0b",
+2239 => x"5872802e",
+2240 => x"80cd3880",
+2241 => x"dc15ff15",
+2242 => x"55550b73",
+2243 => x"8025e038",
+2244 => x"7508530b",
+2245 => x"0b72802e",
+2246 => x"9f387256",
+2247 => x"88160884",
+2248 => x"1708ff05",
+2249 => x"5555c339",
+2250 => x"7251febe",
+2251 => x"3f818a94",
+2252 => x"0884dc05",
+2253 => x"56ffa939",
+2254 => x"84527651",
+2255 => x"fddb3f80",
+2256 => x"08760c80",
+2257 => x"08802e80",
+2258 => x"c0388008",
+2259 => x"56ce3981",
+2260 => x"0b8c1623",
+2261 => x"72750c72",
+2262 => x"88160c72",
+2263 => x"84160c72",
+2264 => x"90160c72",
+2265 => x"94160c72",
+2266 => x"98160cff",
+2267 => x"0b8e1623",
+2268 => x"72b0160c",
+2269 => x"72b4160c",
+2270 => x"7280c416",
+2271 => x"0c7280c8",
+2272 => x"160c7480",
+2273 => x"0c893d0d",
+2274 => x"048c770c",
+2275 => x"800b800c",
+2276 => x"893d0d04",
+2277 => x"707080c1",
+2278 => x"df527351",
+2279 => x"8d983f50",
+2280 => x"50047081",
+2281 => x"8a940851",
+2282 => x"eb3f5004",
+2283 => x"fb3d0d77",
+2284 => x"705256a3",
+2285 => x"873f8191",
+2286 => x"f00b8805",
+2287 => x"08847105",
+2288 => x"08fc0670",
+2289 => x"7b319fef",
+2290 => x"05e08006",
+2291 => x"e0800556",
+2292 => x"56530b0b",
+2293 => x"a0807424",
+2294 => x"96388052",
+2295 => x"7551abbb",
+2296 => x"3f8191f8",
+2297 => x"0815530b",
+2298 => x"0b728008",
+2299 => x"2e913875",
+2300 => x"51a2ca3f",
+2301 => x"80530b0b",
+2302 => x"72800c87",
+2303 => x"3d0d0473",
+2304 => x"30527551",
+2305 => x"ab953f80",
+2306 => x"08ff2eab",
+2307 => x"388191f0",
+2308 => x"0b880508",
+2309 => x"75753181",
+2310 => x"07847205",
+2311 => x"0c530b0b",
+2312 => x"8191b408",
+2313 => x"74318191",
+2314 => x"b40c7551",
+2315 => x"a28f3f81",
+2316 => x"0b800c87",
+2317 => x"3d0d0480",
+2318 => x"527551aa",
+2319 => x"de3f8191",
+2320 => x"f00b8805",
+2321 => x"08800871",
+2322 => x"3156530b",
+2323 => x"0b8f7525",
+2324 => x"ff9d3880",
+2325 => x"088191e4",
+2326 => x"08318191",
+2327 => x"b40c7481",
+2328 => x"0784140c",
+2329 => x"7551a1d5",
+2330 => x"3f80530b",
+2331 => x"0bff8939",
+2332 => x"f63d0d7c",
+2333 => x"7e540b0b",
+2334 => x"5b72802e",
+2335 => x"82a2387a",
+2336 => x"51a1b93f",
+2337 => x"f8730584",
+2338 => x"71050870",
+2339 => x"fe067073",
+2340 => x"05847105",
+2341 => x"08fc065d",
+2342 => x"5859540b",
+2343 => x"0b588191",
+2344 => x"f808752e",
+2345 => x"83833878",
+2346 => x"84160c80",
+2347 => x"73810654",
+2348 => x"0b0b5a72",
+2349 => x"0b7a2e81",
+2350 => x"eb387815",
+2351 => x"84710508",
+2352 => x"81065153",
+2353 => x"0b0b72a3",
+2354 => x"38781757",
+2355 => x"7981fc38",
+2356 => x"88150853",
+2357 => x"0b0b7281",
+2358 => x"91f82e83",
+2359 => x"9c388c15",
+2360 => x"08708c15",
+2361 => x"0c738872",
+2362 => x"050c5676",
+2363 => x"81078419",
+2364 => x"0c761877",
+2365 => x"710c530b",
+2366 => x"0b79819f",
+2367 => x"3883ff77",
+2368 => x"2781da38",
+2369 => x"76892a77",
+2370 => x"832a5653",
+2371 => x"0b0b7280",
+2372 => x"2e80c038",
+2373 => x"76862ab8",
+2374 => x"05558473",
+2375 => x"27b53880",
+2376 => x"db730555",
+2377 => x"947327ab",
+2378 => x"38768c2a",
+2379 => x"80ee0555",
+2380 => x"80d47327",
+2381 => x"9e38768f",
+2382 => x"2a80f705",
+2383 => x"5582d473",
+2384 => x"27913876",
+2385 => x"922a80fc",
+2386 => x"05558ad4",
+2387 => x"73278438",
+2388 => x"80fe550b",
+2389 => x"0b741010",
+2390 => x"108191f0",
+2391 => x"05887105",
+2392 => x"0855560b",
+2393 => x"730b762e",
+2394 => x"82cd3884",
+2395 => x"1408fc06",
+2396 => x"530b0b76",
+2397 => x"73278f38",
+2398 => x"88140854",
+2399 => x"0b0b7376",
+2400 => x"2e098106",
+2401 => x"e6388c14",
+2402 => x"08708c1a",
+2403 => x"0c74881a",
+2404 => x"0c788872",
+2405 => x"050c5677",
+2406 => x"8c150c7a",
+2407 => x"519f9e3f",
+2408 => x"8c3d0d04",
+2409 => x"77087871",
+2410 => x"31597705",
+2411 => x"88190854",
+2412 => x"0b0b5772",
+2413 => x"8191f82e",
+2414 => x"80ea388c",
+2415 => x"1808708c",
+2416 => x"150c7388",
+2417 => x"72050c56",
+2418 => x"fdf03988",
+2419 => x"15088c16",
+2420 => x"08708c73",
+2421 => x"050c5788",
+2422 => x"170cfe8f",
+2423 => x"3976832a",
+2424 => x"70540b0b",
+2425 => x"55800b75",
+2426 => x"2481a338",
+2427 => x"72822c81",
+2428 => x"712b8191",
+2429 => x"f4080781",
+2430 => x"91f00b84",
+2431 => x"050c530b",
+2432 => x"0b741010",
+2433 => x"108191f0",
+2434 => x"05887105",
+2435 => x"0855560b",
+2436 => x"0b758c19",
+2437 => x"0c738819",
+2438 => x"0c778817",
+2439 => x"0c778c15",
+2440 => x"0cfef839",
+2441 => x"815afd92",
+2442 => x"39781773",
+2443 => x"8106540b",
+2444 => x"0b57729a",
+2445 => x"38770878",
+2446 => x"71315977",
+2447 => x"058c1908",
+2448 => x"881a0871",
+2449 => x"8c72050c",
+2450 => x"8872050c",
+2451 => x"57570b0b",
+2452 => x"76810784",
+2453 => x"190c7781",
+2454 => x"91f00b88",
+2455 => x"050c8191",
+2456 => x"ec087726",
+2457 => x"feb53881",
+2458 => x"91e80852",
+2459 => x"7a51fabc",
+2460 => x"3f7a519d",
+2461 => x"c83ffea8",
+2462 => x"3981788c",
+2463 => x"150c7888",
+2464 => x"150c738c",
+2465 => x"1a0c7388",
+2466 => x"1a0c5afc",
+2467 => x"de398315",
+2468 => x"70822c81",
+2469 => x"712b8191",
+2470 => x"f4080781",
+2471 => x"91f00b84",
+2472 => x"050c5153",
+2473 => x"0b0b7410",
+2474 => x"10108191",
+2475 => x"f0058871",
+2476 => x"05085556",
+2477 => x"fed93974",
+2478 => x"530b0b80",
+2479 => x"7524a938",
+2480 => x"72822c81",
+2481 => x"712b8191",
+2482 => x"f4080781",
+2483 => x"91f00b84",
+2484 => x"050c530b",
+2485 => x"0b758c19",
+2486 => x"0c738819",
+2487 => x"0c778817",
+2488 => x"0c778c15",
+2489 => x"0cfdb439",
+2490 => x"83157082",
+2491 => x"2c81712b",
+2492 => x"8191f408",
+2493 => x"078191f0",
+2494 => x"0b84050c",
+2495 => x"51530b0b",
+2496 => x"d439f23d",
+2497 => x"0d606288",
+2498 => x"71050870",
+2499 => x"57575f5a",
+2500 => x"74802e81",
+2501 => x"9f388c1a",
+2502 => x"2270832a",
+2503 => x"81327081",
+2504 => x"06515558",
+2505 => x"0b738638",
+2506 => x"901a0893",
+2507 => x"387951f1",
+2508 => x"ad3fff54",
+2509 => x"0b0b8008",
+2510 => x"80fa388c",
+2511 => x"1a22587d",
+2512 => x"08578078",
+2513 => x"83ffff06",
+2514 => x"700a100a",
+2515 => x"70810651",
+2516 => x"56575573",
+2517 => x"0b752e80",
+2518 => x"e2387491",
+2519 => x"38760884",
+2520 => x"18088819",
+2521 => x"5956590b",
+2522 => x"74802ef1",
+2523 => x"3874540b",
+2524 => x"0b888075",
+2525 => x"27863888",
+2526 => x"80540b0b",
+2527 => x"73530b0b",
+2528 => x"78529c1a",
+2529 => x"0851a41a",
+2530 => x"08540b0b",
+2531 => x"732d800b",
+2532 => x"80082583",
+2533 => x"86388008",
+2534 => x"19758008",
+2535 => x"317f8805",
+2536 => x"08800831",
+2537 => x"70618805",
+2538 => x"0c565659",
+2539 => x"73ffab38",
+2540 => x"80540b0b",
+2541 => x"73800c90",
+2542 => x"3d0d0475",
+2543 => x"81327081",
+2544 => x"06764151",
+2545 => x"540b0b73",
+2546 => x"802e81d0",
+2547 => x"38749138",
+2548 => x"76088418",
+2549 => x"08881959",
+2550 => x"56590b74",
+2551 => x"802ef138",
+2552 => x"881a0878",
+2553 => x"83ffff06",
+2554 => x"70892a70",
+2555 => x"81065156",
+2556 => x"59567380",
+2557 => x"2e839e38",
+2558 => x"7575278f",
+2559 => x"3877872a",
+2560 => x"70810651",
+2561 => x"540b0b73",
+2562 => x"82d63874",
+2563 => x"76278338",
+2564 => x"74560b0b",
+2565 => x"75530b0b",
+2566 => x"78527908",
+2567 => x"5196f93f",
+2568 => x"881a0876",
+2569 => x"31881b0c",
+2570 => x"7908167a",
+2571 => x"0c74560b",
+2572 => x"0b751975",
+2573 => x"77317f88",
+2574 => x"05087831",
+2575 => x"70618805",
+2576 => x"0c565659",
+2577 => x"73802efe",
+2578 => x"e7388c1a",
+2579 => x"2258fefd",
+2580 => x"39777854",
+2581 => x"0b0b7953",
+2582 => x"0b0b7b52",
+2583 => x"5696b93f",
+2584 => x"881a0878",
+2585 => x"31881b0c",
+2586 => x"7908187a",
+2587 => x"0c7c7631",
+2588 => x"5d0b0b7c",
+2589 => x"8e387951",
+2590 => x"f0e53f80",
+2591 => x"08819c38",
+2592 => x"80085f75",
+2593 => x"19757731",
+2594 => x"7f880508",
+2595 => x"78317061",
+2596 => x"88050c56",
+2597 => x"56597380",
+2598 => x"2efe9538",
+2599 => x"74819438",
+2600 => x"76088418",
+2601 => x"08881959",
+2602 => x"56590b74",
+2603 => x"802ef138",
+2604 => x"74530b0b",
+2605 => x"8a527851",
+2606 => x"94a33f80",
+2607 => x"08793181",
+2608 => x"055d8008",
+2609 => x"84388115",
+2610 => x"5d815f7c",
+2611 => x"58747d27",
+2612 => x"83387458",
+2613 => x"941a0888",
+2614 => x"1b087105",
+2615 => x"575c807a",
+2616 => x"085c540b",
+2617 => x"0b901a08",
+2618 => x"7b278538",
+2619 => x"81540b0b",
+2620 => x"75782585",
+2621 => x"387380c2",
+2622 => x"387b7824",
+2623 => x"fed3387b",
+2624 => x"530b0b78",
+2625 => x"529c1a08",
+2626 => x"51a41a08",
+2627 => x"540b0b73",
+2628 => x"2d800856",
+2629 => x"80088024",
+2630 => x"fed3388c",
+2631 => x"1a2280c0",
+2632 => x"07540b0b",
+2633 => x"738c1b23",
+2634 => x"ff540b0b",
+2635 => x"73800c90",
+2636 => x"3d0d047e",
+2637 => x"ff9538fe",
+2638 => x"f7397553",
+2639 => x"0b0b7852",
+2640 => x"7a5194d4",
+2641 => x"3f790816",
+2642 => x"7a0c7951",
+2643 => x"ef913f80",
+2644 => x"08c9387c",
+2645 => x"76315d0b",
+2646 => x"0b7cfea7",
+2647 => x"38fe9739",
+2648 => x"901a087a",
+2649 => x"08713176",
+2650 => x"71057056",
+2651 => x"5a575281",
+2652 => x"8a940851",
+2653 => x"97c83f80",
+2654 => x"08802eff",
+2655 => x"9e388008",
+2656 => x"901b0c80",
+2657 => x"08167a0c",
+2658 => x"77941b0c",
+2659 => x"74881b0c",
+2660 => x"7456fcf7",
+2661 => x"39790858",
+2662 => x"901a0878",
+2663 => x"27853881",
+2664 => x"540b0b75",
+2665 => x"75278438",
+2666 => x"73bd3894",
+2667 => x"1a08560b",
+2668 => x"0b757526",
+2669 => x"80e13875",
+2670 => x"530b0b78",
+2671 => x"529c1a08",
+2672 => x"51a41a08",
+2673 => x"540b0b73",
+2674 => x"2d800856",
+2675 => x"80088024",
+2676 => x"fcdd388c",
+2677 => x"1a2280c0",
+2678 => x"07540b0b",
+2679 => x"738c1b23",
+2680 => x"ff540b0b",
+2681 => x"fec63975",
+2682 => x"530b0b78",
+2683 => x"52775193",
+2684 => x"a73f7908",
+2685 => x"167a0c79",
+2686 => x"51ede43f",
+2687 => x"8008802e",
+2688 => x"fcad388c",
+2689 => x"1a2280c0",
+2690 => x"07540b0b",
+2691 => x"738c1b23",
+2692 => x"ff540b0b",
+2693 => x"fe963974",
+2694 => x"75540b0b",
+2695 => x"79530b0b",
+2696 => x"78525692",
+2697 => x"f33f881a",
+2698 => x"08753188",
+2699 => x"1b0c7908",
+2700 => x"157a0cfb",
+2701 => x"fa39f93d",
+2702 => x"0d797b58",
+2703 => x"530b0b80",
+2704 => x"0b818a94",
+2705 => x"08530b0b",
+2706 => x"5672722e",
+2707 => x"80d03884",
+2708 => x"dc730555",
+2709 => x"0b0b7476",
+2710 => x"2e80c338",
+2711 => x"88150884",
+2712 => x"1608ff05",
+2713 => x"540b0b54",
+2714 => x"0b0b8073",
+2715 => x"24a3388c",
+2716 => x"14227090",
+2717 => x"2b70902c",
+2718 => x"51530b0b",
+2719 => x"587180ed",
+2720 => x"3880dc14",
+2721 => x"ff14540b",
+2722 => x"0b540b0b",
+2723 => x"728025df",
+2724 => x"38740855",
+2725 => x"0b0b74c4",
+2726 => x"38818a94",
+2727 => x"085284dc",
+2728 => x"7205550b",
+2729 => x"0b74802e",
+2730 => x"bd388815",
+2731 => x"08841608",
+2732 => x"ff05540b",
+2733 => x"0b540b0b",
+2734 => x"807324a2",
+2735 => x"388c1422",
+2736 => x"70902b70",
+2737 => x"902c5153",
+2738 => x"0b0b5871",
+2739 => x"b33880dc",
+2740 => x"14ff1454",
+2741 => x"0b0b540b",
+2742 => x"0b728025",
+2743 => x"e0387408",
+2744 => x"550b0b74",
+2745 => x"c5387580",
+2746 => x"0c893d0d",
+2747 => x"04735176",
+2748 => x"2d758008",
+2749 => x"0780dc15",
+2750 => x"ff155555",
+2751 => x"56ff8d39",
+2752 => x"7351762d",
+2753 => x"75800807",
+2754 => x"80dc15ff",
+2755 => x"15555556",
+2756 => x"c839ea3d",
+2757 => x"0d688c71",
+2758 => x"0522700a",
+2759 => x"100a8106",
+2760 => x"57585674",
+2761 => x"80ee388e",
+2762 => x"16227090",
+2763 => x"2b70902c",
+2764 => x"51555880",
+2765 => x"7424b538",
+2766 => x"983dc405",
+2767 => x"530b0b73",
+2768 => x"52818a94",
+2769 => x"0851a298",
+2770 => x"3f800b80",
+2771 => x"08249938",
+2772 => x"7983e080",
+2773 => x"06540b0b",
+2774 => x"7380c080",
+2775 => x"2e819f38",
+2776 => x"73828080",
+2777 => x"2e81a138",
+2778 => x"8c162257",
+2779 => x"0b0b7690",
+2780 => x"8007540b",
+2781 => x"0b738c17",
+2782 => x"23888052",
+2783 => x"818a9408",
+2784 => x"5181c63f",
+2785 => x"80089f38",
+2786 => x"8c162282",
+2787 => x"07540b0b",
+2788 => x"738c1723",
+2789 => x"80c31670",
+2790 => x"770c9017",
+2791 => x"0c810b94",
+2792 => x"170c983d",
+2793 => x"0d04818a",
+2794 => x"940880c7",
+2795 => x"940bbc72",
+2796 => x"050c540b",
+2797 => x"0b8c1622",
+2798 => x"81800754",
+2799 => x"0b0b738c",
+2800 => x"17238008",
+2801 => x"760c8008",
+2802 => x"90170c88",
+2803 => x"800b9417",
+2804 => x"0c74802e",
+2805 => x"cd388e16",
+2806 => x"2270902b",
+2807 => x"70902c53",
+2808 => x"0b0b5558",
+2809 => x"aacb3f80",
+2810 => x"08802eff",
+2811 => x"b5388c16",
+2812 => x"22810754",
+2813 => x"0b0b738c",
+2814 => x"1723983d",
+2815 => x"0d04810b",
+2816 => x"8c172258",
+2817 => x"55fee539",
+2818 => x"a8160880",
+2819 => x"f5bc2e09",
+2820 => x"8106fed4",
+2821 => x"388c1622",
+2822 => x"88800754",
+2823 => x"0b0b738c",
+2824 => x"17238880",
+2825 => x"0b80cc17",
+2826 => x"0cfece39",
+2827 => x"70707352",
+2828 => x"818a9408",
+2829 => x"51933f50",
+2830 => x"50047070",
+2831 => x"7352818a",
+2832 => x"940851f0",
+2833 => x"ab3f5050",
+2834 => x"04f33d0d",
+2835 => x"7f618b71",
+2836 => x"0570f806",
+2837 => x"5c55555e",
+2838 => x"72962683",
+2839 => x"38905980",
+2840 => x"0b792474",
+2841 => x"7a260753",
+2842 => x"0b0b8054",
+2843 => x"0b0b7274",
+2844 => x"2e098106",
+2845 => x"80d4387d",
+2846 => x"5191c13f",
+2847 => x"7883f726",
+2848 => x"80cf3878",
+2849 => x"832a7010",
+2850 => x"10108191",
+2851 => x"f0058c71",
+2852 => x"05085959",
+2853 => x"5a76782e",
+2854 => x"83e73884",
+2855 => x"1708fc06",
+2856 => x"568c1708",
+2857 => x"88180871",
+2858 => x"8c72050c",
+2859 => x"8872050c",
+2860 => x"58751784",
+2861 => x"71050881",
+2862 => x"07847205",
+2863 => x"0c530b0b",
+2864 => x"7d5190f9",
+2865 => x"3f881754",
+2866 => x"0b0b7380",
+2867 => x"0c8f3d0d",
+2868 => x"0478892a",
+2869 => x"79832a5b",
+2870 => x"530b0b72",
+2871 => x"802e80c0",
+2872 => x"3878862a",
+2873 => x"b8055a84",
+2874 => x"7327b538",
+2875 => x"80db7305",
+2876 => x"5a947327",
+2877 => x"ab38788c",
+2878 => x"2a80ee05",
+2879 => x"5a80d473",
+2880 => x"279e3878",
+2881 => x"8f2a80f7",
+2882 => x"055a82d4",
+2883 => x"73279138",
+2884 => x"78922a80",
+2885 => x"fc055a8a",
+2886 => x"d4732784",
+2887 => x"3880fe5a",
+2888 => x"0b0b7910",
+2889 => x"10108191",
+2890 => x"f0058c71",
+2891 => x"05085855",
+2892 => x"0b760b75",
+2893 => x"2ea63884",
+2894 => x"1708fc06",
+2895 => x"707a3155",
+2896 => x"560b738f",
+2897 => x"2489c638",
+2898 => x"738025fe",
+2899 => x"d4388c17",
+2900 => x"08570b0b",
+2901 => x"76752e09",
+2902 => x"8106dc38",
+2903 => x"811a5a81",
+2904 => x"92800857",
+2905 => x"0b0b7681",
+2906 => x"91f82e82",
+2907 => x"ed388417",
+2908 => x"08fc0670",
+2909 => x"7a315556",
+2910 => x"0b738f24",
+2911 => x"829c3881",
+2912 => x"91f80b81",
+2913 => x"92840c81",
+2914 => x"91f80b81",
+2915 => x"92800c73",
+2916 => x"8025fe9d",
+2917 => x"3883ff76",
+2918 => x"27849d38",
+2919 => x"75892a76",
+2920 => x"832a5553",
+2921 => x"0b0b7280",
+2922 => x"2e80cc38",
+2923 => x"75862ab8",
+2924 => x"05540b0b",
+2925 => x"847327bf",
+2926 => x"3880db73",
+2927 => x"05540b0b",
+2928 => x"947327b3",
+2929 => x"38758c2a",
+2930 => x"80ee0554",
+2931 => x"0b0b80d4",
+2932 => x"7327a438",
+2933 => x"758f2a80",
+2934 => x"f705540b",
+2935 => x"0b82d473",
+2936 => x"27953875",
+2937 => x"922a80fc",
+2938 => x"05540b0b",
+2939 => x"8ad47327",
+2940 => x"863880fe",
+2941 => x"540b0b73",
+2942 => x"10101081",
+2943 => x"91f00588",
+2944 => x"71050856",
+2945 => x"580b740b",
+2946 => x"782e87a0",
+2947 => x"38841508",
+2948 => x"fc06530b",
+2949 => x"0b757327",
+2950 => x"8f388815",
+2951 => x"08550b0b",
+2952 => x"74782e09",
+2953 => x"8106e638",
+2954 => x"8c150881",
+2955 => x"91f00b84",
+2956 => x"0508718c",
+2957 => x"1a0c7688",
+2958 => x"1a0c7888",
+2959 => x"73050c78",
+2960 => x"8c180c5d",
+2961 => x"5879530b",
+2962 => x"0b807a24",
+2963 => x"84983872",
+2964 => x"822c8171",
+2965 => x"2b5c530b",
+2966 => x"0b7a7c26",
+2967 => x"81ac387b",
+2968 => x"7b06530b",
+2969 => x"0b728398",
+2970 => x"3879fc06",
+2971 => x"84055a7a",
+2972 => x"10707d06",
+2973 => x"540b0b5b",
+2974 => x"72838538",
+2975 => x"841a5aef",
+2976 => x"3988178c",
+2977 => x"71050858",
+2978 => x"580b760b",
+2979 => x"782e0981",
+2980 => x"06fc8838",
+2981 => x"821a5afd",
+2982 => x"c6397817",
+2983 => x"79810784",
+2984 => x"190c7081",
+2985 => x"92840c70",
+2986 => x"8192800c",
+2987 => x"8191f80b",
+2988 => x"8c72050c",
+2989 => x"8c710508",
+2990 => x"8872050c",
+2991 => x"74810784",
+2992 => x"72050c74",
+2993 => x"71057571",
+2994 => x"0c51530b",
+2995 => x"0b7d518c",
+2996 => x"ec3f8817",
+2997 => x"540b0bfb",
+2998 => x"f1398191",
+2999 => x"f00b8405",
+3000 => x"087a540b",
+3001 => x"0b5c7980",
+3002 => x"25fee438",
+3003 => x"82f8397a",
+3004 => x"097c0670",
+3005 => x"8191f00b",
+3006 => x"84050c5c",
+3007 => x"7a105b0b",
+3008 => x"0b7a7c26",
+3009 => x"85387a85",
+3010 => x"f2388191",
+3011 => x"f00b8805",
+3012 => x"08708472",
+3013 => x"0508fc06",
+3014 => x"707c317c",
+3015 => x"72268f72",
+3016 => x"25075757",
+3017 => x"5c5d5572",
+3018 => x"802e80e3",
+3019 => x"38797a16",
+3020 => x"8191e808",
+3021 => x"1b907105",
+3022 => x"5a55575b",
+3023 => x"8191e408",
+3024 => x"ff2e8938",
+3025 => x"a08f7305",
+3026 => x"e0800657",
+3027 => x"0b0b7652",
+3028 => x"7d5194c7",
+3029 => x"3f800854",
+3030 => x"0b0b8008",
+3031 => x"ff2e9038",
+3032 => x"80087627",
+3033 => x"82b33874",
+3034 => x"8191f02e",
+3035 => x"82ab3881",
+3036 => x"91f00b88",
+3037 => x"05085584",
+3038 => x"1508fc06",
+3039 => x"707a317a",
+3040 => x"72268f72",
+3041 => x"25075255",
+3042 => x"530b0b72",
+3043 => x"84913874",
+3044 => x"79810784",
+3045 => x"170c7916",
+3046 => x"708191f0",
+3047 => x"0b88050c",
+3048 => x"75810784",
+3049 => x"72050c54",
+3050 => x"0b0b7e52",
+3051 => x"578b8e3f",
+3052 => x"8817540b",
+3053 => x"0bfa9339",
+3054 => x"75832a70",
+3055 => x"540b0b54",
+3056 => x"0b0b8074",
+3057 => x"2481a738",
+3058 => x"72822c81",
+3059 => x"712b8191",
+3060 => x"f4080770",
+3061 => x"8191f00b",
+3062 => x"84050c75",
+3063 => x"10101081",
+3064 => x"91f00588",
+3065 => x"71050858",
+3066 => x"5a5d530b",
+3067 => x"0b778c18",
+3068 => x"0c748818",
+3069 => x"0c768819",
+3070 => x"0c768c16",
+3071 => x"0cfcc639",
+3072 => x"797a1010",
+3073 => x"108191f0",
+3074 => x"05705759",
+3075 => x"5d8c1508",
+3076 => x"570b0b76",
+3077 => x"752ea638",
+3078 => x"841708fc",
+3079 => x"06707a31",
+3080 => x"55560b73",
+3081 => x"8f2483ef",
+3082 => x"38738025",
+3083 => x"84af388c",
+3084 => x"1708570b",
+3085 => x"0b76752e",
+3086 => x"098106dc",
+3087 => x"38881581",
+3088 => x"1b708306",
+3089 => x"555b5572",
+3090 => x"c4387c83",
+3091 => x"06530b0b",
+3092 => x"72802efd",
+3093 => x"9a38ff1d",
+3094 => x"f819595d",
+3095 => x"88180878",
+3096 => x"2ee838fd",
+3097 => x"9739831a",
+3098 => x"530b0bfb",
+3099 => x"e2398314",
+3100 => x"70822c81",
+3101 => x"712b8191",
+3102 => x"f4080770",
+3103 => x"8191f00b",
+3104 => x"84050c76",
+3105 => x"10101081",
+3106 => x"91f00588",
+3107 => x"71050859",
+3108 => x"5b5e5153",
+3109 => x"0b0bfed5",
+3110 => x"398191b4",
+3111 => x"08175880",
+3112 => x"08762e81",
+3113 => x"99388191",
+3114 => x"e408ff2e",
+3115 => x"849b3873",
+3116 => x"76311881",
+3117 => x"91b40c73",
+3118 => x"87067057",
+3119 => x"530b0b72",
+3120 => x"802e8838",
+3121 => x"88733170",
+3122 => x"15555676",
+3123 => x"149fff06",
+3124 => x"a0807131",
+3125 => x"1770540b",
+3126 => x"0b7f530b",
+3127 => x"0b57530b",
+3128 => x"0b91b83f",
+3129 => x"8008530b",
+3130 => x"0b8008ff",
+3131 => x"2e81a738",
+3132 => x"8191b408",
+3133 => x"16708191",
+3134 => x"b40c7475",
+3135 => x"8191f00b",
+3136 => x"88050c74",
+3137 => x"76311870",
+3138 => x"81075155",
+3139 => x"56587b81",
+3140 => x"91f02e83",
+3141 => x"c138798f",
+3142 => x"2682ee38",
+3143 => x"810b8415",
+3144 => x"0c841508",
+3145 => x"fc06707a",
+3146 => x"317a7226",
+3147 => x"8f722507",
+3148 => x"5255530b",
+3149 => x"0b72802e",
+3150 => x"fcd53880",
+3151 => x"e2398008",
+3152 => x"9fff0653",
+3153 => x"0b0b72fe",
+3154 => x"dd387781",
+3155 => x"91b40c81",
+3156 => x"91f00b88",
+3157 => x"05087b18",
+3158 => x"81078472",
+3159 => x"050c5581",
+3160 => x"91e00878",
+3161 => x"27863877",
+3162 => x"8191e00c",
+3163 => x"8191dc08",
+3164 => x"7827fc83",
+3165 => x"38778191",
+3166 => x"dc0c8415",
+3167 => x"08fc0670",
+3168 => x"7a317a72",
+3169 => x"268f7225",
+3170 => x"07525553",
+3171 => x"0b0b7280",
+3172 => x"2efbfc38",
+3173 => x"8a398074",
+3174 => x"540b0b56",
+3175 => x"fed2397d",
+3176 => x"51879a3f",
+3177 => x"800b800c",
+3178 => x"8f3d0d04",
+3179 => x"73530b0b",
+3180 => x"807424ab",
+3181 => x"3872822c",
+3182 => x"81712b81",
+3183 => x"91f40807",
+3184 => x"708191f0",
+3185 => x"0b84050c",
+3186 => x"5d530b0b",
+3187 => x"778c180c",
+3188 => x"7488180c",
+3189 => x"7688190c",
+3190 => x"768c160c",
+3191 => x"f8e73983",
+3192 => x"1470822c",
+3193 => x"81712b81",
+3194 => x"91f40807",
+3195 => x"708191f0",
+3196 => x"0b84050c",
+3197 => x"5e51530b",
+3198 => x"0bd2397b",
+3199 => x"7b06530b",
+3200 => x"0b72fbfc",
+3201 => x"38841a7b",
+3202 => x"105c5aef",
+3203 => x"39ff1a81",
+3204 => x"7105515a",
+3205 => x"f6c93978",
+3206 => x"17798107",
+3207 => x"84190c8c",
+3208 => x"18088819",
+3209 => x"08718c72",
+3210 => x"050c8872",
+3211 => x"050c5970",
+3212 => x"8192840c",
+3213 => x"70819280",
+3214 => x"0c8191f8",
+3215 => x"0b8c7205",
+3216 => x"0c8c7105",
+3217 => x"08887205",
+3218 => x"0c748107",
+3219 => x"8472050c",
+3220 => x"74710575",
+3221 => x"710c5153",
+3222 => x"0b0bf8f1",
+3223 => x"39751784",
+3224 => x"71050881",
+3225 => x"07847205",
+3226 => x"0c530b0b",
+3227 => x"8c170888",
+3228 => x"1808718c",
+3229 => x"72050c88",
+3230 => x"72050c58",
+3231 => x"7d5185bd",
+3232 => x"3f881754",
+3233 => x"0b0bf4c2",
+3234 => x"39728415",
+3235 => x"0cf41af8",
+3236 => x"0670841e",
+3237 => x"08810607",
+3238 => x"841e0c70",
+3239 => x"1d540b0b",
+3240 => x"5b850b84",
+3241 => x"140c850b",
+3242 => x"88140c8f",
+3243 => x"7b27fdaf",
+3244 => x"38881c52",
+3245 => x"7d51e3b8",
+3246 => x"3f8191f0",
+3247 => x"0b880508",
+3248 => x"8191b408",
+3249 => x"5955fd97",
+3250 => x"39778191",
+3251 => x"b40c7381",
+3252 => x"91e40cfb",
+3253 => x"e2397284",
+3254 => x"150cfd83",
+3255 => x"39fa3d0d",
+3256 => x"7a790288",
+3257 => x"05a70533",
+3258 => x"5652530b",
+3259 => x"0b837327",
+3260 => x"8c387083",
+3261 => x"06520b0b",
+3262 => x"71802eb1",
+3263 => x"38ff7305",
+3264 => x"530b0b72",
+3265 => x"ff2e9b38",
+3266 => x"70335273",
+3267 => x"0b722e94",
+3268 => x"38817105",
+3269 => x"ff14540b",
+3270 => x"0b5172ff",
+3271 => x"2e098106",
+3272 => x"e7388051",
+3273 => x"0b0b7080",
+3274 => x"0c883d0d",
+3275 => x"04707257",
+3276 => x"55835175",
+3277 => x"82802914",
+3278 => x"ff720552",
+3279 => x"560b7080",
+3280 => x"25f13883",
+3281 => x"732780cb",
+3282 => x"38740876",
+3283 => x"327009f7",
+3284 => x"fbfdff72",
+3285 => x"050670f8",
+3286 => x"84828180",
+3287 => x"06515151",
+3288 => x"0b0b7080",
+3289 => x"2e9e3874",
+3290 => x"51805270",
+3291 => x"3357730b",
+3292 => x"772effb0",
+3293 => x"38817105",
+3294 => x"81730553",
+3295 => x"0b0b5183",
+3296 => x"7227e838",
+3297 => x"fc730584",
+3298 => x"1656530b",
+3299 => x"0b728326",
+3300 => x"ffb73874",
+3301 => x"51fee639",
+3302 => x"fa3d0d78",
+3303 => x"7a7c7272",
+3304 => x"72575757",
+3305 => x"5956560b",
+3306 => x"740b7627",
+3307 => x"be387615",
+3308 => x"51750b71",
+3309 => x"27b53870",
+3310 => x"7717ff14",
+3311 => x"540b0b55",
+3312 => x"530b0b71",
+3313 => x"ff2e9d38",
+3314 => x"ff14ff14",
+3315 => x"540b0b54",
+3316 => x"0b0b7233",
+3317 => x"7434ff72",
+3318 => x"05520b0b",
+3319 => x"71ff2e09",
+3320 => x"8106e538",
+3321 => x"75800c88",
+3322 => x"3d0d0476",
+3323 => x"8f269c38",
+3324 => x"ff720552",
+3325 => x"0b0b71ff",
+3326 => x"2eea3872",
+3327 => x"70810554",
+3328 => x"0b0b3374",
+3329 => x"70810556",
+3330 => x"34e63974",
+3331 => x"76078306",
+3332 => x"510b0b70",
+3333 => x"db387575",
+3334 => x"540b0b51",
+3335 => x"72708405",
+3336 => x"540b0b08",
+3337 => x"71708405",
+3338 => x"530b0b0c",
+3339 => x"72708405",
+3340 => x"540b0b08",
+3341 => x"71708405",
+3342 => x"530b0b0c",
+3343 => x"72708405",
+3344 => x"540b0b08",
+3345 => x"71708405",
+3346 => x"530b0b0c",
+3347 => x"72708405",
+3348 => x"540b0b08",
+3349 => x"71708405",
+3350 => x"530b0b0c",
+3351 => x"f0720552",
+3352 => x"0b0b718f",
+3353 => x"26ffb538",
+3354 => x"8372279c",
+3355 => x"38727084",
+3356 => x"05540b0b",
+3357 => x"08717084",
+3358 => x"05530b0b",
+3359 => x"0cfc7205",
+3360 => x"520b0b71",
+3361 => x"8326e638",
+3362 => x"70540b0b",
+3363 => x"fee239fc",
+3364 => x"3d0d7679",
+3365 => x"71028c05",
+3366 => x"9f053357",
+3367 => x"55530b0b",
+3368 => x"55837227",
+3369 => x"8c387483",
+3370 => x"06510b0b",
+3371 => x"70802ea8",
+3372 => x"38ff7205",
+3373 => x"520b0b71",
+3374 => x"ff2e9638",
+3375 => x"73737081",
+3376 => x"055534ff",
+3377 => x"7205520b",
+3378 => x"0b71ff2e",
+3379 => x"098106ec",
+3380 => x"3874800c",
+3381 => x"863d0d04",
+3382 => x"7474882b",
+3383 => x"75077071",
+3384 => x"902b0751",
+3385 => x"540b0b51",
+3386 => x"8f7227b0",
+3387 => x"38727170",
+3388 => x"8405530b",
+3389 => x"0b0c7271",
+3390 => x"70840553",
+3391 => x"0b0b0c72",
+3392 => x"71708405",
+3393 => x"530b0b0c",
+3394 => x"72717084",
+3395 => x"05530b0b",
+3396 => x"0cf07205",
+3397 => x"520b0b71",
+3398 => x"8f26d238",
+3399 => x"83722795",
+3400 => x"38727170",
+3401 => x"8405530b",
+3402 => x"0b0cfc72",
+3403 => x"05520b0b",
+3404 => x"718326ed",
+3405 => x"3870530b",
+3406 => x"0bfef639",
+3407 => x"0404ef3d",
+3408 => x"0d636567",
+3409 => x"405d420b",
+3410 => x"7b802e85",
+3411 => x"ab386151",
+3412 => x"eb3ff81c",
+3413 => x"70847205",
+3414 => x"0870fc06",
+3415 => x"70628b05",
+3416 => x"70f80641",
+3417 => x"59455b5c",
+3418 => x"41579674",
+3419 => x"2782e238",
+3420 => x"807b247e",
+3421 => x"7c260759",
+3422 => x"80540b0b",
+3423 => x"78742e09",
+3424 => x"810682c6",
+3425 => x"38777b25",
+3426 => x"82913877",
+3427 => x"178191f0",
+3428 => x"0b880508",
+3429 => x"5e560b7c",
+3430 => x"0b762e84",
+3431 => x"ea388416",
+3432 => x"0870fe06",
+3433 => x"17847105",
+3434 => x"08810651",
+3435 => x"55550b73",
+3436 => x"82a43874",
+3437 => x"fc06597c",
+3438 => x"762e858f",
+3439 => x"3877195f",
+3440 => x"0b0b7e7b",
+3441 => x"25829438",
+3442 => x"79810654",
+3443 => x"0b0b7382",
+3444 => x"dc387677",
+3445 => x"08318471",
+3446 => x"0508fc06",
+3447 => x"565a7580",
+3448 => x"2e93387c",
+3449 => x"762e859c",
+3450 => x"38741918",
+3451 => x"590b0b78",
+3452 => x"7b2584b0",
+3453 => x"3879802e",
+3454 => x"82b33877",
+3455 => x"15567a0b",
+3456 => x"762482a9",
+3457 => x"388c1a08",
+3458 => x"881b0871",
+3459 => x"8c72050c",
+3460 => x"8872050c",
+3461 => x"55797659",
+3462 => x"57881761",
+3463 => x"fc055759",
+3464 => x"0b75a426",
+3465 => x"86ab387b",
+3466 => x"79555593",
+3467 => x"762780cf",
+3468 => x"387b7084",
+3469 => x"055d087c",
+3470 => x"56790c74",
+3471 => x"70840556",
+3472 => x"088c180c",
+3473 => x"9017540b",
+3474 => x"0b9b7627",
+3475 => x"b2387470",
+3476 => x"84055608",
+3477 => x"740c7470",
+3478 => x"84055608",
+3479 => x"94180c98",
+3480 => x"17540b0b",
+3481 => x"a3762797",
+3482 => x"38747084",
+3483 => x"05560874",
+3484 => x"0c747084",
+3485 => x"0556089c",
+3486 => x"180ca017",
+3487 => x"540b0b74",
+3488 => x"70840556",
+3489 => x"08747084",
+3490 => x"05560c74",
+3491 => x"70840556",
+3492 => x"08747084",
+3493 => x"05560c74",
+3494 => x"08740c77",
+3495 => x"7b31560b",
+3496 => x"0b758f26",
+3497 => x"80d13884",
+3498 => x"17088106",
+3499 => x"78078418",
+3500 => x"0c771784",
+3501 => x"71050881",
+3502 => x"07847205",
+3503 => x"0c540b0b",
+3504 => x"6151fcf9",
+3505 => x"3f881754",
+3506 => x"0b0b7380",
+3507 => x"0c933d0d",
+3508 => x"04905bfd",
+3509 => x"9b397856",
+3510 => x"fdee398c",
+3511 => x"16088817",
+3512 => x"08718c72",
+3513 => x"050c8872",
+3514 => x"050c557e",
+3515 => x"707c3157",
+3516 => x"588f7627",
+3517 => x"ffb1387a",
+3518 => x"17841808",
+3519 => x"81067c07",
+3520 => x"84190c76",
+3521 => x"81078472",
+3522 => x"050c7671",
+3523 => x"05847105",
+3524 => x"08810784",
+3525 => x"72050c55",
+3526 => x"88055261",
+3527 => x"51dad13f",
+3528 => x"6151fc99",
+3529 => x"3f881754",
+3530 => x"0b0bff9e",
+3531 => x"397d5261",
+3532 => x"51ea963f",
+3533 => x"80085980",
+3534 => x"08802e81",
+3535 => x"ab388008",
+3536 => x"f8056084",
+3537 => x"0508fe06",
+3538 => x"61055557",
+3539 => x"0b0b7674",
+3540 => x"2e848d38",
+3541 => x"fc18560b",
+3542 => x"0b75a426",
+3543 => x"81b0387b",
+3544 => x"80085555",
+3545 => x"93762780",
+3546 => x"dc387470",
+3547 => x"84055608",
+3548 => x"80087084",
+3549 => x"05800c0c",
+3550 => x"80087570",
+3551 => x"84055708",
+3552 => x"71708405",
+3553 => x"530b0b0c",
+3554 => x"540b0b9b",
+3555 => x"7627b638",
+3556 => x"74708405",
+3557 => x"56087470",
+3558 => x"8405560c",
+3559 => x"74708405",
+3560 => x"56087470",
+3561 => x"8405560c",
+3562 => x"a3762799",
+3563 => x"38747084",
+3564 => x"05560874",
+3565 => x"70840556",
+3566 => x"0c747084",
+3567 => x"05560874",
+3568 => x"70840556",
+3569 => x"0c747084",
+3570 => x"05560874",
+3571 => x"70840556",
+3572 => x"0c747084",
+3573 => x"05560874",
+3574 => x"70840556",
+3575 => x"0c740874",
+3576 => x"0c7b5261",
+3577 => x"51d9893f",
+3578 => x"6151fad1",
+3579 => x"3f78540b",
+3580 => x"0b73800c",
+3581 => x"933d0d04",
+3582 => x"7d526151",
+3583 => x"e8cb3f80",
+3584 => x"08800c93",
+3585 => x"3d0d0484",
+3586 => x"160855fb",
+3587 => x"a6397553",
+3588 => x"0b0b7b52",
+3589 => x"800851ff",
+3590 => x"a4a23f7b",
+3591 => x"526151d8",
+3592 => x"cf3fc539",
+3593 => x"8c160888",
+3594 => x"1708718c",
+3595 => x"72050c88",
+3596 => x"72050c55",
+3597 => x"8c1a0888",
+3598 => x"1b08718c",
+3599 => x"72050c88",
+3600 => x"72050c55",
+3601 => x"79795957",
+3602 => x"fbcf3977",
+3603 => x"19901c55",
+3604 => x"550b730b",
+3605 => x"7524faf0",
+3606 => x"387a1770",
+3607 => x"8191f00b",
+3608 => x"88050c75",
+3609 => x"7c318107",
+3610 => x"8472050c",
+3611 => x"5d841708",
+3612 => x"81067b07",
+3613 => x"84180c61",
+3614 => x"51f9c23f",
+3615 => x"8817540b",
+3616 => x"0bfcc739",
+3617 => x"74191890",
+3618 => x"1c555d0b",
+3619 => x"730b7d24",
+3620 => x"fae3388c",
+3621 => x"1a08881b",
+3622 => x"08718c72",
+3623 => x"050c8872",
+3624 => x"050c5588",
+3625 => x"1a61fc05",
+3626 => x"57590b75",
+3627 => x"a42681bc",
+3628 => x"387b7955",
+3629 => x"55937627",
+3630 => x"80cf387b",
+3631 => x"7084055d",
+3632 => x"087c5679",
+3633 => x"0c747084",
+3634 => x"0556088c",
+3635 => x"1b0c901a",
+3636 => x"540b0b9b",
+3637 => x"7627b238",
+3638 => x"74708405",
+3639 => x"5608740c",
+3640 => x"74708405",
+3641 => x"5608941b",
+3642 => x"0c981a54",
+3643 => x"0b0ba376",
+3644 => x"27973874",
+3645 => x"70840556",
+3646 => x"08740c74",
+3647 => x"70840556",
+3648 => x"089c1b0c",
+3649 => x"a01a540b",
+3650 => x"0b747084",
+3651 => x"05560874",
+3652 => x"70840556",
+3653 => x"0c747084",
+3654 => x"05560874",
+3655 => x"70840556",
+3656 => x"0c740874",
+3657 => x"0c7a1a70",
+3658 => x"8191f00b",
+3659 => x"88050c7d",
+3660 => x"7c318107",
+3661 => x"8472050c",
+3662 => x"540b0b84",
+3663 => x"1a088106",
+3664 => x"7b07841b",
+3665 => x"0c6151f7",
+3666 => x"f43f7854",
+3667 => x"0b0bfda1",
+3668 => x"3975530b",
+3669 => x"0b7b5278",
+3670 => x"51ffa1e0",
+3671 => x"3ffabc39",
+3672 => x"841708fc",
+3673 => x"06186058",
+3674 => x"58fab039",
+3675 => x"75530b0b",
+3676 => x"7b527851",
+3677 => x"ffa1c53f",
+3678 => x"7a1a7081",
+3679 => x"91f00b88",
+3680 => x"050c7d7c",
+3681 => x"31810784",
+3682 => x"72050c54",
+3683 => x"0b0b841a",
+3684 => x"0881067b",
+3685 => x"07841b0c",
+3686 => x"ffab3970",
+3687 => x"70707080",
+3688 => x"0b819ab8",
+3689 => x"0c765187",
+3690 => x"853f8008",
+3691 => x"530b0b80",
+3692 => x"08ff2e89",
+3693 => x"3872800c",
+3694 => x"50505050",
+3695 => x"04819ab8",
+3696 => x"08540b0b",
+3697 => x"73802eed",
+3698 => x"38757471",
+3699 => x"0c527280",
+3700 => x"0c505050",
+3701 => x"5004f93d",
+3702 => x"0d797c55",
+3703 => x"7b540b0b",
+3704 => x"8e710522",
+3705 => x"70902b70",
+3706 => x"902c5557",
+3707 => x"818a9408",
+3708 => x"530b0b58",
+3709 => x"5685e33f",
+3710 => x"80085780",
+3711 => x"0b800824",
+3712 => x"933880d0",
+3713 => x"16088008",
+3714 => x"0580d017",
+3715 => x"0c76800c",
+3716 => x"893d0d04",
+3717 => x"8c162283",
+3718 => x"dfff0655",
+3719 => x"0b0b748c",
+3720 => x"17237680",
+3721 => x"0c893d0d",
+3722 => x"04fa3d0d",
+3723 => x"788c7105",
+3724 => x"2270882a",
+3725 => x"70810651",
+3726 => x"57585674",
+3727 => x"b1388c16",
+3728 => x"2283dfff",
+3729 => x"06550b0b",
+3730 => x"748c1723",
+3731 => x"7a540b0b",
+3732 => x"79530b0b",
+3733 => x"8e162270",
+3734 => x"902b7090",
+3735 => x"2c540b0b",
+3736 => x"56818a94",
+3737 => x"08525682",
+3738 => x"fe3f883d",
+3739 => x"0d048254",
+3740 => x"0b0b8053",
+3741 => x"0b0b8e16",
+3742 => x"2270902b",
+3743 => x"70902c54",
+3744 => x"0b0b5681",
+3745 => x"8a940852",
+3746 => x"5784913f",
+3747 => x"8c162283",
+3748 => x"dfff0655",
+3749 => x"0b0b748c",
+3750 => x"17237a54",
+3751 => x"0b0b7953",
+3752 => x"0b0b8e16",
+3753 => x"2270902b",
+3754 => x"70902c54",
+3755 => x"0b0b5681",
+3756 => x"8a940852",
+3757 => x"5682b03f",
+3758 => x"883d0d04",
+3759 => x"f93d0d79",
+3760 => x"7c557b54",
+3761 => x"0b0b8e71",
+3762 => x"05227090",
+3763 => x"2b70902c",
+3764 => x"5557818a",
+3765 => x"9408530b",
+3766 => x"0b585683",
+3767 => x"bf3f8008",
+3768 => x"578008ff",
+3769 => x"2e9b388c",
+3770 => x"1622a080",
+3771 => x"07550b0b",
+3772 => x"748c1723",
+3773 => x"800880d0",
+3774 => x"170c7680",
+3775 => x"0c893d0d",
+3776 => x"048c1622",
+3777 => x"83dfff06",
+3778 => x"550b0b74",
+3779 => x"8c172376",
+3780 => x"800c893d",
+3781 => x"0d047070",
+3782 => x"70748e71",
+3783 => x"05227090",
+3784 => x"2b70902c",
+3785 => x"55515153",
+3786 => x"0b0b818a",
+3787 => x"94085181",
+3788 => x"f43f5050",
+3789 => x"5004fb3d",
+3790 => x"0d777970",
+3791 => x"72078306",
+3792 => x"530b0b54",
+3793 => x"0b0b5270",
+3794 => x"99387173",
+3795 => x"7308540b",
+3796 => x"0b56540b",
+3797 => x"0b717308",
+3798 => x"2e80d038",
+3799 => x"7375540b",
+3800 => x"0b520b0b",
+3801 => x"71337081",
+3802 => x"ff065254",
+3803 => x"0b0b7080",
+3804 => x"2ea33872",
+3805 => x"3355700b",
+3806 => x"752e0981",
+3807 => x"069a3881",
+3808 => x"72058114",
+3809 => x"71337081",
+3810 => x"ff06540b",
+3811 => x"0b56540b",
+3812 => x"0b5270df",
+3813 => x"38723355",
+3814 => x"7381ff06",
+3815 => x"7581ff06",
+3816 => x"71713180",
+3817 => x"0c525287",
+3818 => x"3d0d0471",
+3819 => x"0970f7fb",
+3820 => x"fdff1406",
+3821 => x"70f88482",
+3822 => x"81800651",
+3823 => x"51510b0b",
+3824 => x"709d3884",
+3825 => x"14841671",
+3826 => x"08540b0b",
+3827 => x"56540b0b",
+3828 => x"7175082e",
+3829 => x"d6387375",
+3830 => x"540b0b52",
+3831 => x"ff843980",
+3832 => x"0b800c87",
+3833 => x"3d0d04fb",
+3834 => x"3d0d800b",
+3835 => x"819ab80c",
+3836 => x"7a530b0b",
+3837 => x"79527851",
+3838 => x"83c33f80",
+3839 => x"08558008",
+3840 => x"ff2e8838",
+3841 => x"74800c87",
+3842 => x"3d0d0481",
+3843 => x"9ab80856",
+3844 => x"0b0b7580",
+3845 => x"2eee3877",
+3846 => x"76710c54",
+3847 => x"0b0b7480",
+3848 => x"0c873d0d",
+3849 => x"04707070",
+3850 => x"70800b81",
+3851 => x"9ab80c76",
+3852 => x"5185db3f",
+3853 => x"8008530b",
+3854 => x"0b8008ff",
+3855 => x"2e893872",
+3856 => x"800c5050",
+3857 => x"50500481",
+3858 => x"9ab80854",
+3859 => x"0b0b7380",
+3860 => x"2eed3875",
+3861 => x"74710c52",
+3862 => x"72800c50",
+3863 => x"50505004",
+3864 => x"fc3d0d80",
+3865 => x"0b819ab8",
+3866 => x"0c785277",
+3867 => x"51889c3f",
+3868 => x"8008540b",
+3869 => x"0b8008ff",
+3870 => x"2e883873",
+3871 => x"800c863d",
+3872 => x"0d04819a",
+3873 => x"b808550b",
+3874 => x"0b74802e",
+3875 => x"ee387675",
+3876 => x"710c530b",
+3877 => x"0b73800c",
+3878 => x"863d0d04",
+3879 => x"fb3d0d80",
+3880 => x"0b819ab8",
+3881 => x"0c7a530b",
+3882 => x"0b795278",
+3883 => x"5185e63f",
+3884 => x"80085580",
+3885 => x"08ff2e88",
+3886 => x"3874800c",
+3887 => x"873d0d04",
+3888 => x"819ab808",
+3889 => x"560b0b75",
+3890 => x"802eee38",
+3891 => x"7776710c",
+3892 => x"540b0b74",
+3893 => x"800c873d",
+3894 => x"0d04fb3d",
+3895 => x"0d800b81",
+3896 => x"9ab80c7a",
+3897 => x"530b0b79",
+3898 => x"52785182",
+3899 => x"cd3f8008",
+3900 => x"558008ff",
+3901 => x"2e883874",
+3902 => x"800c873d",
+3903 => x"0d04819a",
+3904 => x"b808560b",
+3905 => x"0b75802e",
+3906 => x"ee387776",
+3907 => x"710c540b",
+3908 => x"0b74800c",
+3909 => x"873d0d04",
+3910 => x"810b800c",
+3911 => x"04707281",
+3912 => x"2e873880",
+3913 => x"0b800c50",
+3914 => x"04735181",
+3915 => x"8a3f7070",
+3916 => x"70819abc",
+3917 => x"08510b0b",
+3918 => x"708a3881",
+3919 => x"9ac47081",
+3920 => x"9abc0c51",
+3921 => x"0b0b7075",
+3922 => x"72055252",
+3923 => x"ff530b0b",
+3924 => x"7087fb80",
+3925 => x"80268a38",
+3926 => x"70819abc",
+3927 => x"0c71530b",
+3928 => x"0b72800c",
+3929 => x"50505004",
+3930 => x"70707070",
+3931 => x"800b818a",
+3932 => x"8808540b",
+3933 => x"0b540b0b",
+3934 => x"72812e9e",
+3935 => x"3873819a",
+3936 => x"c00cff8e",
+3937 => x"863fff8c",
+3938 => x"f73f8199",
+3939 => x"f8528151",
+3940 => x"ff90e53f",
+3941 => x"80085187",
+3942 => x"d53f7281",
+3943 => x"9ac00cff",
+3944 => x"8de93fff",
+3945 => x"8cda3f81",
+3946 => x"99f85281",
+3947 => x"51ff90c8",
+3948 => x"3f800851",
+3949 => x"87b83f00",
+3950 => x"ff3900ff",
+3951 => x"39f53d0d",
+3952 => x"7e60819a",
+3953 => x"c008705b",
+3954 => x"585b5b75",
+3955 => x"80c63877",
+3956 => x"7a25a338",
+3957 => x"771b7033",
+3958 => x"7081ff06",
+3959 => x"58585975",
+3960 => x"8a2e9a38",
+3961 => x"7681ff06",
+3962 => x"51ff8cfc",
+3963 => x"3f811858",
+3964 => x"790b7824",
+3965 => x"df387980",
+3966 => x"0c8d3d0d",
+3967 => x"048d51ff",
+3968 => x"8ce63f78",
+3969 => x"337081ff",
+3970 => x"065257ff",
+3971 => x"8cda3f81",
+3972 => x"1858dd39",
+3973 => x"79557a54",
+3974 => x"0b0b7d53",
+3975 => x"0b0b8552",
+3976 => x"8d3dfc05",
+3977 => x"51ff8c9c",
+3978 => x"3f800856",
+3979 => x"86b93f7b",
+3980 => x"80080c75",
+3981 => x"800c8d3d",
+3982 => x"0d04f63d",
+3983 => x"0d7d7f81",
+3984 => x"9ac00870",
+3985 => x"5a585a5a",
+3986 => x"7580ca38",
+3987 => x"767925b6",
+3988 => x"38761a56",
+3989 => x"ff8bef3f",
+3990 => x"80087634",
+3991 => x"800b8008",
+3992 => x"81ff0657",
+3993 => x"580b758a",
+3994 => x"2ea73875",
+3995 => x"8d327030",
+3996 => x"7080257a",
+3997 => x"07515156",
+3998 => x"0b0b75bf",
+3999 => x"38811757",
+4000 => x"780b7724",
+4001 => x"cc387656",
+4002 => x"0b0b7580",
+4003 => x"0c8c3d0d",
+4004 => x"048158d7",
+4005 => x"39785579",
+4006 => x"540b0b7c",
+4007 => x"530b0b84",
+4008 => x"528c3dfc",
+4009 => x"0551ff8b",
+4010 => x"9b3f8008",
+4011 => x"5685b83f",
+4012 => x"7a80080c",
+4013 => x"75800c8c",
+4014 => x"3d0d0481",
+4015 => x"1756c939",
+4016 => x"f93d0d79",
+4017 => x"57819ac0",
+4018 => x"08802eb2",
+4019 => x"387651ff",
+4020 => x"9dc13f7b",
+4021 => x"567a5580",
+4022 => x"08810554",
+4023 => x"0b0b7653",
+4024 => x"0b0b8252",
+4025 => x"893dfc05",
+4026 => x"51ff8ad8",
+4027 => x"3f800857",
+4028 => x"84f53f77",
+4029 => x"80080c76",
+4030 => x"800c893d",
+4031 => x"0d0484e7",
+4032 => x"3f850b80",
+4033 => x"080cff0b",
+4034 => x"800c893d",
+4035 => x"0d04fb3d",
+4036 => x"0d819ac0",
+4037 => x"08705654",
+4038 => x"0b0b7388",
+4039 => x"3874800c",
+4040 => x"873d0d04",
+4041 => x"77530b0b",
+4042 => x"8352873d",
+4043 => x"fc0551ff",
+4044 => x"8a923f80",
+4045 => x"08540b0b",
+4046 => x"84ad3f75",
+4047 => x"80080c73",
+4048 => x"800c873d",
+4049 => x"0d04ff0b",
+4050 => x"800c04fb",
+4051 => x"3d0d7755",
+4052 => x"819ac008",
+4053 => x"802eae38",
+4054 => x"7451ff9c",
+4055 => x"b63f8008",
+4056 => x"8105540b",
+4057 => x"0b74530b",
+4058 => x"0b875287",
+4059 => x"3dfc0551",
+4060 => x"ff89d13f",
+4061 => x"80085583",
+4062 => x"ee3f7580",
+4063 => x"080c7480",
+4064 => x"0c873d0d",
+4065 => x"0483e03f",
+4066 => x"850b8008",
+4067 => x"0cff0b80",
+4068 => x"0c873d0d",
+4069 => x"04fa3d0d",
+4070 => x"819ac008",
+4071 => x"802ea738",
+4072 => x"7a557954",
+4073 => x"0b0b7853",
+4074 => x"0b0b8652",
+4075 => x"883dfc05",
+4076 => x"51ff8990",
+4077 => x"3f800856",
+4078 => x"83ad3f76",
+4079 => x"80080c75",
+4080 => x"800c883d",
+4081 => x"0d04839f",
+4082 => x"3f9d0b80",
+4083 => x"080cff0b",
+4084 => x"800c883d",
+4085 => x"0d04fb3d",
+4086 => x"0d777956",
+4087 => x"56807054",
+4088 => x"0b0b540b",
+4089 => x"0b737525",
+4090 => x"9f387410",
+4091 => x"1010f805",
+4092 => x"52721670",
+4093 => x"3370742b",
+4094 => x"76078116",
+4095 => x"f8165656",
+4096 => x"56515174",
+4097 => x"7324ea38",
+4098 => x"73800c87",
+4099 => x"3d0d04fc",
+4100 => x"3d0d7678",
+4101 => x"5555bc53",
+4102 => x"0b0b8052",
+4103 => x"7351e8ef",
+4104 => x"3f845274",
+4105 => x"51ffaf3f",
+4106 => x"80087423",
+4107 => x"84528415",
+4108 => x"51ffa33f",
+4109 => x"80088215",
+4110 => x"23845288",
+4111 => x"1551ff96",
+4112 => x"3f800884",
+4113 => x"150c8452",
+4114 => x"8c1551ff",
+4115 => x"893f8008",
+4116 => x"88152384",
+4117 => x"52901551",
+4118 => x"fefc3f80",
+4119 => x"088a1523",
+4120 => x"84529415",
+4121 => x"51feef3f",
+4122 => x"80088c15",
+4123 => x"23845298",
+4124 => x"1551fee2",
+4125 => x"3f80088e",
+4126 => x"15238852",
+4127 => x"9c1551fe",
+4128 => x"d53f8008",
+4129 => x"90150c86",
+4130 => x"3d0d04e9",
+4131 => x"3d0d6a81",
+4132 => x"9ac00857",
+4133 => x"570b7593",
+4134 => x"3880c080",
+4135 => x"0b84180c",
+4136 => x"75ac180c",
+4137 => x"75800c99",
+4138 => x"3d0d0489",
+4139 => x"3d70556a",
+4140 => x"540b0b55",
+4141 => x"8a52993d",
+4142 => x"ffbc0551",
+4143 => x"ff87853f",
+4144 => x"80087753",
+4145 => x"0b0b7552",
+4146 => x"56fec43f",
+4147 => x"81993f77",
+4148 => x"80080c75",
+4149 => x"800c993d",
+4150 => x"0d04e93d",
+4151 => x"0d695781",
+4152 => x"9ac00880",
+4153 => x"2ebb3876",
+4154 => x"51ff99a7",
+4155 => x"3f893d70",
+4156 => x"56800881",
+4157 => x"05557754",
+4158 => x"0b0b568f",
+4159 => x"52993dff",
+4160 => x"bc0551ff",
+4161 => x"86be3f80",
+4162 => x"086b530b",
+4163 => x"0b765257",
+4164 => x"fdfd3f80",
+4165 => x"d23f7780",
+4166 => x"080c7680",
+4167 => x"0c993d0d",
+4168 => x"0480c43f",
+4169 => x"850b8008",
+4170 => x"0cff0b80",
+4171 => x"0c993d0d",
+4172 => x"04fc3d0d",
+4173 => x"81540b0b",
+4174 => x"819ac008",
+4175 => x"88387380",
+4176 => x"0c863d0d",
+4177 => x"0476530b",
+4178 => x"0b97b952",
+4179 => x"863dfc05",
+4180 => x"51ff85f0",
+4181 => x"3f800854",
+4182 => x"0b0b8c3f",
+4183 => x"7480080c",
+4184 => x"73800c86",
+4185 => x"3d0d0481",
+4186 => x"8a940880",
+4187 => x"0c04f73d",
+4188 => x"0d7b818a",
+4189 => x"940882c8",
+4190 => x"7105085a",
+4191 => x"540b0b5a",
+4192 => x"77802e80",
+4193 => x"eb388188",
+4194 => x"18841908",
+4195 => x"ff058171",
+4196 => x"2b595559",
+4197 => x"80742481",
+4198 => x"80388074",
+4199 => x"2480c138",
+4200 => x"73822b78",
+4201 => x"71058805",
+4202 => x"56568180",
+4203 => x"19087706",
+4204 => x"530b0b72",
+4205 => x"802e80c3",
+4206 => x"38781670",
+4207 => x"08530b0b",
+4208 => x"530b0b79",
+4209 => x"51740853",
+4210 => x"0b0b722d",
+4211 => x"ff14fc17",
+4212 => x"fc177981",
+4213 => x"2c5a5757",
+4214 => x"540b0b73",
+4215 => x"8025cb38",
+4216 => x"7708580b",
+4217 => x"0b77ff9e",
+4218 => x"38818a94",
+4219 => x"08530b0b",
+4220 => x"bc730508",
+4221 => x"a9387951",
+4222 => x"f7bd3f74",
+4223 => x"08530b0b",
+4224 => x"722dff14",
+4225 => x"fc17fc17",
+4226 => x"79812c5a",
+4227 => x"5757540b",
+4228 => x"0b738025",
+4229 => x"ff9438c8",
+4230 => x"398057fe",
+4231 => x"fd397251",
+4232 => x"bc730508",
+4233 => x"530b0b72",
+4234 => x"2d7951f7",
+4235 => x"8a3f8c08",
+4236 => x"028c0c70",
+4237 => x"70707080",
+4238 => x"530b0b8c",
+4239 => x"088c0508",
+4240 => x"528c0888",
+4241 => x"050851ff",
+4242 => x"8dd23f80",
+4243 => x"0870800c",
+4244 => x"540b0b50",
+4245 => x"5050508c",
+4246 => x"0c048c08",
+4247 => x"028c0c70",
+4248 => x"70707081",
+4249 => x"530b0b8c",
+4250 => x"088c0508",
+4251 => x"528c0888",
+4252 => x"050851ff",
+4253 => x"8da63f80",
+4254 => x"0870800c",
+4255 => x"540b0b50",
+4256 => x"5050508c",
+4257 => x"0c047070",
+4258 => x"819a800b",
+4259 => x"fc057008",
+4260 => x"52520b70",
+4261 => x"ff2e9338",
+4262 => x"702dfc72",
+4263 => x"05700852",
+4264 => x"520b70ff",
+4265 => x"2e098106",
+4266 => x"ef385050",
+4267 => x"0404ff85",
+4268 => x"e53f0400",
+4269 => x"4379636c",
+4270 => x"65732025",
+4271 => x"640a0000",
+4272 => x"48656c6c",
+4273 => x"6f20776f",
+4274 => x"726c6420",
+4275 => x"310a0000",
+4276 => x"48656c6c",
+4277 => x"6f20776f",
+4278 => x"726c6420",
+4279 => x"320a0000",
+4280 => x"0a000000",
+4281 => x"20202020",
+4282 => x"20202020",
+4283 => x"20202020",
+4284 => x"20202020",
+4285 => x"30303030",
+4286 => x"30303030",
+4287 => x"30303030",
+4288 => x"30303030",
+4289 => x"000017e3",
+4290 => x"0000138d",
+4291 => x"0000138d",
+4292 => x"000017d9",
+4293 => x"0000138d",
+4294 => x"0000138d",
+4295 => x"0000138d",
+4296 => x"0000138d",
+4297 => x"0000138d",
+4298 => x"0000138d",
+4299 => x"00001364",
+4300 => x"0000177e",
+4301 => x"0000138d",
+4302 => x"00001376",
+4303 => x"000016ec",
+4304 => x"0000138d",
+4305 => x"000017af",
+4306 => x"0000178a",
+4307 => x"0000178a",
+4308 => x"0000178a",
+4309 => x"0000178a",
+4310 => x"0000178a",
+4311 => x"0000178a",
+4312 => x"0000178a",
+4313 => x"0000178a",
+4314 => x"0000178a",
+4315 => x"0000138d",
+4316 => x"0000138d",
+4317 => x"0000138d",
+4318 => x"0000138d",
+4319 => x"0000138d",
+4320 => x"0000138d",
+4321 => x"0000138d",
+4322 => x"0000138d",
+4323 => x"0000138d",
+4324 => x"00001699",
+4325 => x"00001326",
+4326 => x"0000138d",
+4327 => x"0000138d",
+4328 => x"0000138d",
+4329 => x"0000138d",
+4330 => x"0000138d",
+4331 => x"0000138d",
+4332 => x"0000138d",
+4333 => x"0000138d",
+4334 => x"0000138d",
+4335 => x"0000138d",
+4336 => x"000012ec",
+4337 => x"0000138d",
+4338 => x"0000138d",
+4339 => x"0000138d",
+4340 => x"00001553",
+4341 => x"0000138d",
+4342 => x"00001015",
+4343 => x"0000138d",
+4344 => x"0000138d",
+4345 => x"00001733",
+4346 => x"0000138d",
+4347 => x"0000138d",
+4348 => x"0000138d",
+4349 => x"0000138d",
+4350 => x"0000138d",
+4351 => x"0000138d",
+4352 => x"0000138d",
+4353 => x"0000138d",
+4354 => x"0000138d",
+4355 => x"0000138d",
+4356 => x"00001699",
+4357 => x"0000132a",
+4358 => x"0000138d",
+4359 => x"0000138d",
+4360 => x"0000138d",
+4361 => x"0000168e",
+4362 => x"0000132a",
+4363 => x"0000138d",
+4364 => x"0000138d",
+4365 => x"000015d8",
+4366 => x"0000138d",
+4367 => x"000015a8",
+4368 => x"000012f0",
+4369 => x"000015f7",
+4370 => x"00001383",
+4371 => x"0000138d",
+4372 => x"00001553",
+4373 => x"0000138d",
+4374 => x"00001019",
+4375 => x"0000138d",
+4376 => x"0000138d",
+4377 => x"000017ba",
+4378 => x"62756720",
+4379 => x"696e2076",
+4380 => x"66707269",
+4381 => x"6e74663a",
+4382 => x"20626164",
+4383 => x"20626173",
+4384 => x"65000000",
+4385 => x"30313233",
+4386 => x"34353637",
+4387 => x"38396162",
+4388 => x"63646566",
+4389 => x"00000000",
+4390 => x"30313233",
+4391 => x"34353637",
+4392 => x"38394142",
+4393 => x"43444546",
+4394 => x"00000000",
+4395 => x"286e756c",
+4396 => x"6c290000",
+4397 => x"432d5554",
+4398 => x"462d3800",
+4399 => x"432d534a",
+4400 => x"49530000",
+4401 => x"432d4555",
+4402 => x"434a5000",
+4403 => x"432d4a49",
+4404 => x"53000000",
+4405 => x"43000000",
+4406 => x"2e000000",
+4407 => x"49534f2d",
+4408 => x"38383539",
+4409 => x"2d310000",
+4410 => x"64756d6d",
+4411 => x"792e6578",
+4412 => x"65000000",
+4413 => x"00ffffff",
+4414 => x"ff00ffff",
+4415 => x"ffff00ff",
+4416 => x"ffffff00",
+4417 => x"00000000",
+4418 => x"00000000",
+4419 => x"00000000",
+4420 => x"00004d08",
+4421 => x"00004518",
+4422 => x"00000000",
+4423 => x"00004780",
+4424 => x"000047dc",
+4425 => x"00004838",
+4426 => x"00000000",
+4427 => x"00000000",
+4428 => x"00000000",
+4429 => x"00000000",
+4430 => x"00000000",
+4431 => x"00000000",
+4432 => x"00000000",
+4433 => x"00000000",
+4434 => x"00000000",
+4435 => x"000044d4",
+4436 => x"00000000",
+4437 => x"00000000",
+4438 => x"00000000",
+4439 => x"00000000",
+4440 => x"00000000",
+4441 => x"00000000",
+4442 => x"00000000",
+4443 => x"00000000",
+4444 => x"00000000",
+4445 => x"00000000",
+4446 => x"00000000",
+4447 => x"00000000",
+4448 => x"00000000",
+4449 => x"00000000",
+4450 => x"00000000",
+4451 => x"00000000",
+4452 => x"00000000",
+4453 => x"00000000",
+4454 => x"00000000",
+4455 => x"00000000",
+4456 => x"00000000",
+4457 => x"00000000",
+4458 => x"00000000",
+4459 => x"00000000",
+4460 => x"00000000",
+4461 => x"00000000",
+4462 => x"00000000",
+4463 => x"00000000",
+4464 => x"00000001",
+4465 => x"330eabcd",
+4466 => x"1234e66d",
+4467 => x"deec0005",
+4468 => x"000b0000",
+4469 => x"00000000",
+4470 => x"00000000",
+4471 => x"00000000",
+4472 => x"00000000",
+4473 => x"00000000",
+4474 => x"00000000",
+4475 => x"00000000",
+4476 => x"00000000",
+4477 => x"00000000",
+4478 => x"00000000",
+4479 => x"00000000",
+4480 => x"00000000",
+4481 => x"00000000",
+4482 => x"00000000",
+4483 => x"00000000",
+4484 => x"00000000",
+4485 => x"00000000",
+4486 => x"00000000",
+4487 => x"00000000",
+4488 => x"00000000",
+4489 => x"00000000",
+4490 => x"00000000",
+4491 => x"00000000",
+4492 => x"00000000",
+4493 => x"00000000",
+4494 => x"00000000",
+4495 => x"00000000",
+4496 => x"00000000",
+4497 => x"00000000",
+4498 => x"00000000",
+4499 => x"00000000",
+4500 => x"00000000",
+4501 => x"00000000",
+4502 => x"00000000",
+4503 => x"00000000",
+4504 => x"00000000",
+4505 => x"00000000",
+4506 => x"00000000",
+4507 => x"00000000",
+4508 => x"00000000",
+4509 => x"00000000",
+4510 => x"00000000",
+4511 => x"00000000",
+4512 => x"00000000",
+4513 => x"00000000",
+4514 => x"00000000",
+4515 => x"00000000",
+4516 => x"00000000",
+4517 => x"00000000",
+4518 => x"00000000",
+4519 => x"00000000",
+4520 => x"00000000",
+4521 => x"00000000",
+4522 => x"00000000",
+4523 => x"00000000",
+4524 => x"00000000",
+4525 => x"00000000",
+4526 => x"00000000",
+4527 => x"00000000",
+4528 => x"00000000",
+4529 => x"00000000",
+4530 => x"00000000",
+4531 => x"00000000",
+4532 => x"00000000",
+4533 => x"00000000",
+4534 => x"00000000",
+4535 => x"00000000",
+4536 => x"00000000",
+4537 => x"00000000",
+4538 => x"00000000",
+4539 => x"00000000",
+4540 => x"00000000",
+4541 => x"00000000",
+4542 => x"00000000",
+4543 => x"00000000",
+4544 => x"00000000",
+4545 => x"00000000",
+4546 => x"00000000",
+4547 => x"00000000",
+4548 => x"00000000",
+4549 => x"00000000",
+4550 => x"00000000",
+4551 => x"00000000",
+4552 => x"00000000",
+4553 => x"00000000",
+4554 => x"00000000",
+4555 => x"00000000",
+4556 => x"00000000",
+4557 => x"00000000",
+4558 => x"00000000",
+4559 => x"00000000",
+4560 => x"00000000",
+4561 => x"00000000",
+4562 => x"00000000",
+4563 => x"00000000",
+4564 => x"00000000",
+4565 => x"00000000",
+4566 => x"00000000",
+4567 => x"00000000",
+4568 => x"00000000",
+4569 => x"00000000",
+4570 => x"00000000",
+4571 => x"00000000",
+4572 => x"00000000",
+4573 => x"00000000",
+4574 => x"00000000",
+4575 => x"00000000",
+4576 => x"00000000",
+4577 => x"00000000",
+4578 => x"00000000",
+4579 => x"00000000",
+4580 => x"00000000",
+4581 => x"00000000",
+4582 => x"00000000",
+4583 => x"00000000",
+4584 => x"00000000",
+4585 => x"00000000",
+4586 => x"00000000",
+4587 => x"00000000",
+4588 => x"00000000",
+4589 => x"00000000",
+4590 => x"00000000",
+4591 => x"00000000",
+4592 => x"00000000",
+4593 => x"00000000",
+4594 => x"00000000",
+4595 => x"00000000",
+4596 => x"00000000",
+4597 => x"00000000",
+4598 => x"00000000",
+4599 => x"00000000",
+4600 => x"00000000",
+4601 => x"00000000",
+4602 => x"00000000",
+4603 => x"00000000",
+4604 => x"00000000",
+4605 => x"00000000",
+4606 => x"00000000",
+4607 => x"00000000",
+4608 => x"00000000",
+4609 => x"00000000",
+4610 => x"00000000",
+4611 => x"00000000",
+4612 => x"00000000",
+4613 => x"00000000",
+4614 => x"00000000",
+4615 => x"00000000",
+4616 => x"00000000",
+4617 => x"00000000",
+4618 => x"00000000",
+4619 => x"00000000",
+4620 => x"00000000",
+4621 => x"00000000",
+4622 => x"00000000",
+4623 => x"00000000",
+4624 => x"00000000",
+4625 => x"00000000",
+4626 => x"00000000",
+4627 => x"00000000",
+4628 => x"00000000",
+4629 => x"00000000",
+4630 => x"00000000",
+4631 => x"00000000",
+4632 => x"00000000",
+4633 => x"00000000",
+4634 => x"00000000",
+4635 => x"00000000",
+4636 => x"00000000",
+4637 => x"00000000",
+4638 => x"00000000",
+4639 => x"00000000",
+4640 => x"00000000",
+4641 => x"00000000",
+4642 => x"00000000",
+4643 => x"00000000",
+4644 => x"00000000",
+4645 => x"43000000",
+4646 => x"00000000",
+4647 => x"00000000",
+4648 => x"00000000",
+4649 => x"00000000",
+4650 => x"00000000",
+4651 => x"00000001",
+4652 => x"000044dc",
+4653 => x"00000000",
+4654 => x"00000000",
+4655 => x"00000000",
+4656 => x"00000000",
+4657 => x"00000000",
+4658 => x"00000000",
+4659 => x"00000000",
+4660 => x"00000000",
+4661 => x"00000000",
+4662 => x"00000000",
+4663 => x"00000000",
+4664 => x"00000000",
+4665 => x"ffffffff",
+4666 => x"00000000",
+4667 => x"00020000",
+4668 => x"00000000",
+4669 => x"00000000",
+4670 => x"000048f0",
+4671 => x"000048f0",
+4672 => x"000048f8",
+4673 => x"000048f8",
+4674 => x"00004900",
+4675 => x"00004900",
+4676 => x"00004908",
+4677 => x"00004908",
+4678 => x"00004910",
+4679 => x"00004910",
+4680 => x"00004918",
+4681 => x"00004918",
+4682 => x"00004920",
+4683 => x"00004920",
+4684 => x"00004928",
+4685 => x"00004928",
+4686 => x"00004930",
+4687 => x"00004930",
+4688 => x"00004938",
+4689 => x"00004938",
+4690 => x"00004940",
+4691 => x"00004940",
+4692 => x"00004948",
+4693 => x"00004948",
+4694 => x"00004950",
+4695 => x"00004950",
+4696 => x"00004958",
+4697 => x"00004958",
+4698 => x"00004960",
+4699 => x"00004960",
+4700 => x"00004968",
+4701 => x"00004968",
+4702 => x"00004970",
+4703 => x"00004970",
+4704 => x"00004978",
+4705 => x"00004978",
+4706 => x"00004980",
+4707 => x"00004980",
+4708 => x"00004988",
+4709 => x"00004988",
+4710 => x"00004990",
+4711 => x"00004990",
+4712 => x"00004998",
+4713 => x"00004998",
+4714 => x"000049a0",
+4715 => x"000049a0",
+4716 => x"000049a8",
+4717 => x"000049a8",
+4718 => x"000049b0",
+4719 => x"000049b0",
+4720 => x"000049b8",
+4721 => x"000049b8",
+4722 => x"000049c0",
+4723 => x"000049c0",
+4724 => x"000049c8",
+4725 => x"000049c8",
+4726 => x"000049d0",
+4727 => x"000049d0",
+4728 => x"000049d8",
+4729 => x"000049d8",
+4730 => x"000049e0",
+4731 => x"000049e0",
+4732 => x"000049e8",
+4733 => x"000049e8",
+4734 => x"000049f0",
+4735 => x"000049f0",
+4736 => x"000049f8",
+4737 => x"000049f8",
+4738 => x"00004a00",
+4739 => x"00004a00",
+4740 => x"00004a08",
+4741 => x"00004a08",
+4742 => x"00004a10",
+4743 => x"00004a10",
+4744 => x"00004a18",
+4745 => x"00004a18",
+4746 => x"00004a20",
+4747 => x"00004a20",
+4748 => x"00004a28",
+4749 => x"00004a28",
+4750 => x"00004a30",
+4751 => x"00004a30",
+4752 => x"00004a38",
+4753 => x"00004a38",
+4754 => x"00004a40",
+4755 => x"00004a40",
+4756 => x"00004a48",
+4757 => x"00004a48",
+4758 => x"00004a50",
+4759 => x"00004a50",
+4760 => x"00004a58",
+4761 => x"00004a58",
+4762 => x"00004a60",
+4763 => x"00004a60",
+4764 => x"00004a68",
+4765 => x"00004a68",
+4766 => x"00004a70",
+4767 => x"00004a70",
+4768 => x"00004a78",
+4769 => x"00004a78",
+4770 => x"00004a80",
+4771 => x"00004a80",
+4772 => x"00004a88",
+4773 => x"00004a88",
+4774 => x"00004a90",
+4775 => x"00004a90",
+4776 => x"00004a98",
+4777 => x"00004a98",
+4778 => x"00004aa0",
+4779 => x"00004aa0",
+4780 => x"00004aa8",
+4781 => x"00004aa8",
+4782 => x"00004ab0",
+4783 => x"00004ab0",
+4784 => x"00004ab8",
+4785 => x"00004ab8",
+4786 => x"00004ac0",
+4787 => x"00004ac0",
+4788 => x"00004ac8",
+4789 => x"00004ac8",
+4790 => x"00004ad0",
+4791 => x"00004ad0",
+4792 => x"00004ad8",
+4793 => x"00004ad8",
+4794 => x"00004ae0",
+4795 => x"00004ae0",
+4796 => x"00004ae8",
+4797 => x"00004ae8",
+4798 => x"00004af0",
+4799 => x"00004af0",
+4800 => x"00004af8",
+4801 => x"00004af8",
+4802 => x"00004b00",
+4803 => x"00004b00",
+4804 => x"00004b08",
+4805 => x"00004b08",
+4806 => x"00004b10",
+4807 => x"00004b10",
+4808 => x"00004b18",
+4809 => x"00004b18",
+4810 => x"00004b20",
+4811 => x"00004b20",
+4812 => x"00004b28",
+4813 => x"00004b28",
+4814 => x"00004b30",
+4815 => x"00004b30",
+4816 => x"00004b38",
+4817 => x"00004b38",
+4818 => x"00004b40",
+4819 => x"00004b40",
+4820 => x"00004b48",
+4821 => x"00004b48",
+4822 => x"00004b50",
+4823 => x"00004b50",
+4824 => x"00004b58",
+4825 => x"00004b58",
+4826 => x"00004b60",
+4827 => x"00004b60",
+4828 => x"00004b68",
+4829 => x"00004b68",
+4830 => x"00004b70",
+4831 => x"00004b70",
+4832 => x"00004b78",
+4833 => x"00004b78",
+4834 => x"00004b80",
+4835 => x"00004b80",
+4836 => x"00004b88",
+4837 => x"00004b88",
+4838 => x"00004b90",
+4839 => x"00004b90",
+4840 => x"00004b98",
+4841 => x"00004b98",
+4842 => x"00004ba0",
+4843 => x"00004ba0",
+4844 => x"00004ba8",
+4845 => x"00004ba8",
+4846 => x"00004bb0",
+4847 => x"00004bb0",
+4848 => x"00004bb8",
+4849 => x"00004bb8",
+4850 => x"00004bc0",
+4851 => x"00004bc0",
+4852 => x"00004bc8",
+4853 => x"00004bc8",
+4854 => x"00004bd0",
+4855 => x"00004bd0",
+4856 => x"00004bd8",
+4857 => x"00004bd8",
+4858 => x"00004be0",
+4859 => x"00004be0",
+4860 => x"00004be8",
+4861 => x"00004be8",
+4862 => x"00004bf0",
+4863 => x"00004bf0",
+4864 => x"00004bf8",
+4865 => x"00004bf8",
+4866 => x"00004c00",
+4867 => x"00004c00",
+4868 => x"00004c08",
+4869 => x"00004c08",
+4870 => x"00004c10",
+4871 => x"00004c10",
+4872 => x"00004c18",
+4873 => x"00004c18",
+4874 => x"00004c20",
+4875 => x"00004c20",
+4876 => x"00004c28",
+4877 => x"00004c28",
+4878 => x"00004c30",
+4879 => x"00004c30",
+4880 => x"00004c38",
+4881 => x"00004c38",
+4882 => x"00004c40",
+4883 => x"00004c40",
+4884 => x"00004c48",
+4885 => x"00004c48",
+4886 => x"00004c50",
+4887 => x"00004c50",
+4888 => x"00004c58",
+4889 => x"00004c58",
+4890 => x"00004c60",
+4891 => x"00004c60",
+4892 => x"00004c68",
+4893 => x"00004c68",
+4894 => x"00004c70",
+4895 => x"00004c70",
+4896 => x"00004c78",
+4897 => x"00004c78",
+4898 => x"00004c80",
+4899 => x"00004c80",
+4900 => x"00004c88",
+4901 => x"00004c88",
+4902 => x"00004c90",
+4903 => x"00004c90",
+4904 => x"00004c98",
+4905 => x"00004c98",
+4906 => x"00004ca0",
+4907 => x"00004ca0",
+4908 => x"00004ca8",
+4909 => x"00004ca8",
+4910 => x"00004cb0",
+4911 => x"00004cb0",
+4912 => x"00004cb8",
+4913 => x"00004cb8",
+4914 => x"00004cc0",
+4915 => x"00004cc0",
+4916 => x"00004cc8",
+4917 => x"00004cc8",
+4918 => x"00004cd0",
+4919 => x"00004cd0",
+4920 => x"00004cd8",
+4921 => x"00004cd8",
+4922 => x"00004ce0",
+4923 => x"00004ce0",
+4924 => x"00004ce8",
+4925 => x"00004ce8",
+4926 => x"000044e8",
+4927 => x"ffffffff",
+4928 => x"00000000",
+4929 => x"ffffffff",
+4930 => x"00000000",
+ others => x"00000000"
+);
+
+begin
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memAWriteEnable = '1') and (memBWriteEnable = '1') and (memAAddr=memBAddr) and (memAWrite/=memBWrite) then
+ report "write collision" severity failure;
+ end if;
+
+ if (memAWriteEnable = '1') then
+ ram(conv_integer(memAAddr)) := memAWrite;
+ memARead <= memAWrite;
+ else
+ memARead <= ram(conv_integer(memAAddr));
+ end if;
+ end if;
+end process;
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memBWriteEnable = '1') then
+ ram(conv_integer(memBAddr)) := memBWrite;
+ memBRead <= memBWrite;
+ else
+ memBRead <= ram(conv_integer(memBAddr));
+ end if;
+ end if;
+end process;
+
+
+
+
+end dualport_ram_arch;
diff --git a/zpu/hdl/zpu3/src/dualport_ram_synplicity.vhd b/zpu/hdl/zpu3/src/dualport_ram_synplicity.vhd
new file mode 100644
index 0000000..83a7de2
--- /dev/null
+++ b/zpu/hdl/zpu3/src/dualport_ram_synplicity.vhd
@@ -0,0 +1,5012 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+entity dualport_ram is
+port (clk : in std_logic;
+ memAWriteEnable : in std_logic;
+ memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memAWrite : in std_logic_vector(wordSize-1 downto 0);
+ memARead : out std_logic_vector(wordSize-1 downto 0);
+ memBWriteEnable : in std_logic;
+ memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memBWrite : in std_logic_vector(wordSize-1 downto 0);
+ memBRead : out std_logic_vector(wordSize-1 downto 0));
+end dualport_ram;
+
+architecture dualport_ram_arch of dualport_ram is
+
+
+type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
+
+
+--shared variable ram : ram_type :=
+signal ram : ram_type :=
+(
+0 => x"800b0b0b",
+1 => x"0b0b8070",
+2 => x"0b0b818a",
+3 => x"dc0c3a0b",
+4 => x"0b80dab4",
+5 => x"04000000",
+6 => x"00000000",
+7 => x"00000000",
+8 => x"80088408",
+9 => x"88080b0b",
+10 => x"80db972d",
+11 => x"880c840c",
+12 => x"800c0400",
+13 => x"00000000",
+14 => x"00000000",
+15 => x"00000000",
+16 => x"71fd0608",
+17 => x"72830609",
+18 => x"81058205",
+19 => x"832b0b2a",
+20 => x"83ffff06",
+21 => x"52810504",
+22 => x"00000000",
+23 => x"00000000",
+24 => x"71fd0608",
+25 => x"83ffff73",
+26 => x"83060981",
+27 => x"05820583",
+28 => x"2b0b2b09",
+29 => x"067383ff",
+30 => x"ff0b0b0b",
+31 => x"0b83a704",
+32 => x"72098105",
+33 => x"72057373",
+34 => x"09060906",
+35 => x"73097306",
+36 => x"070a8106",
+37 => x"53518105",
+38 => x"04000000",
+39 => x"00000000",
+40 => x"72722473",
+41 => x"732e0753",
+42 => x"51810504",
+43 => x"00000000",
+44 => x"00000000",
+45 => x"00000000",
+46 => x"00000000",
+47 => x"00000000",
+48 => x"71737109",
+49 => x"71068106",
+50 => x"30720a10",
+51 => x"0a720a10",
+52 => x"0a31050a",
+53 => x"81065151",
+54 => x"53518105",
+55 => x"04000000",
+56 => x"72722673",
+57 => x"732e0753",
+58 => x"51810504",
+59 => x"00000000",
+60 => x"00000000",
+61 => x"00000000",
+62 => x"00000000",
+63 => x"00000000",
+64 => x"72ff0571",
+65 => x"81050673",
+66 => x"ff050972",
+67 => x"74058005",
+68 => x"06075350",
+69 => x"50040000",
+70 => x"00000000",
+71 => x"00000000",
+72 => x"0b0b0b8c",
+73 => x"f8040000",
+74 => x"00000000",
+75 => x"00000000",
+76 => x"00000000",
+77 => x"00000000",
+78 => x"00000000",
+79 => x"00000000",
+80 => x"720a722b",
+81 => x"0a535181",
+82 => x"05040000",
+83 => x"00000000",
+84 => x"00000000",
+85 => x"00000000",
+86 => x"00000000",
+87 => x"00000000",
+88 => x"72729f06",
+89 => x"0981050b",
+90 => x"0b0b88a7",
+91 => x"05040000",
+92 => x"00000000",
+93 => x"00000000",
+94 => x"00000000",
+95 => x"00000000",
+96 => x"72722aff",
+97 => x"739f062a",
+98 => x"0974090a",
+99 => x"8106ff05",
+100 => x"06075351",
+101 => x"81050400",
+102 => x"00000000",
+103 => x"00000000",
+104 => x"71718105",
+105 => x"53510406",
+106 => x"73830609",
+107 => x"81058205",
+108 => x"832b0b2b",
+109 => x"0772fc06",
+110 => x"0c515181",
+111 => x"05040000",
+112 => x"72098105",
+113 => x"72050970",
+114 => x"81050906",
+115 => x"0a810653",
+116 => x"51810504",
+117 => x"00000000",
+118 => x"00000000",
+119 => x"00000000",
+120 => x"72098105",
+121 => x"72050970",
+122 => x"81050906",
+123 => x"0a098106",
+124 => x"53518105",
+125 => x"04000000",
+126 => x"00000000",
+127 => x"00000000",
+128 => x"71098105",
+129 => x"52810504",
+130 => x"00000000",
+131 => x"00000000",
+132 => x"00000000",
+133 => x"00000000",
+134 => x"00000000",
+135 => x"00000000",
+136 => x"72720981",
+137 => x"05055351",
+138 => x"81050409",
+139 => x"81058305",
+140 => x"1010102b",
+141 => x"0772fc06",
+142 => x"0c515181",
+143 => x"05040000",
+144 => x"72097206",
+145 => x"73730906",
+146 => x"07535181",
+147 => x"05040000",
+148 => x"00000000",
+149 => x"00000000",
+150 => x"00000000",
+151 => x"00000000",
+152 => x"71fc0608",
+153 => x"72830609",
+154 => x"81058305",
+155 => x"1010102a",
+156 => x"81ff0652",
+157 => x"81050400",
+158 => x"00000000",
+159 => x"00000000",
+160 => x"71fc0608",
+161 => x"0b0b818a",
+162 => x"88738306",
+163 => x"10100508",
+164 => x"067381ff",
+165 => x"06738306",
+166 => x"0b0b0b84",
+167 => x"ab040000",
+168 => x"80088408",
+169 => x"88087575",
+170 => x"0b0b0bb3",
+171 => x"912d5050",
+172 => x"80085688",
+173 => x"0c840c80",
+174 => x"0c810551",
+175 => x"04000000",
+176 => x"80088408",
+177 => x"88087575",
+178 => x"0b0b0bb4",
+179 => x"8a2d5050",
+180 => x"80085688",
+181 => x"0c840c80",
+182 => x"0c810551",
+183 => x"04000000",
+184 => x"72097081",
+185 => x"0509060a",
+186 => x"8106ff05",
+187 => x"70547181",
+188 => x"05067309",
+189 => x"72740580",
+190 => x"05060753",
+191 => x"50500400",
+192 => x"72097081",
+193 => x"0509060a",
+194 => x"098106ff",
+195 => x"05705471",
+196 => x"81050673",
+197 => x"09727405",
+198 => x"80050607",
+199 => x"53505004",
+200 => x"05800504",
+201 => x"00000000",
+202 => x"00000000",
+203 => x"00000000",
+204 => x"00000000",
+205 => x"00000000",
+206 => x"00000000",
+207 => x"00000000",
+208 => x"810b0b0b",
+209 => x"818ad80c",
+210 => x"51810504",
+211 => x"00000000",
+212 => x"00000000",
+213 => x"00000000",
+214 => x"00000000",
+215 => x"00000000",
+216 => x"72830610",
+217 => x"10728306",
+218 => x"0710100b",
+219 => x"0b818a98",
+220 => x"05080400",
+221 => x"00000000",
+222 => x"00000000",
+223 => x"00000000",
+224 => x"00000000",
+225 => x"00000000",
+226 => x"00000000",
+227 => x"00000000",
+228 => x"00000000",
+229 => x"00000000",
+230 => x"00000000",
+231 => x"00000000",
+232 => x"02840572",
+233 => x"10100552",
+234 => x"81050400",
+235 => x"00000000",
+236 => x"00000000",
+237 => x"00000000",
+238 => x"00000000",
+239 => x"00000000",
+240 => x"00000000",
+241 => x"00000000",
+242 => x"00000000",
+243 => x"00000000",
+244 => x"00000000",
+245 => x"00000000",
+246 => x"00000000",
+247 => x"00000000",
+248 => x"71710571",
+249 => x"81055351",
+250 => x"04000000",
+251 => x"00000000",
+252 => x"00000000",
+253 => x"00000000",
+254 => x"00000000",
+255 => x"00000000",
+256 => x"8db33f80",
+257 => x"f39e3f04",
+258 => x"10101010",
+259 => x"10101010",
+260 => x"10101010",
+261 => x"10101010",
+262 => x"10101010",
+263 => x"10101010",
+264 => x"10101010",
+265 => x"10101053",
+266 => x"51810504",
+267 => x"72fc0608",
+268 => x"81ff0a06",
+269 => x"72fc0670",
+270 => x"5408fe80",
+271 => x"0a060772",
+272 => x"0c515181",
+273 => x"050472fc",
+274 => x"06080a10",
+275 => x"10101010",
+276 => x"1010100a",
+277 => x"87fc8080",
+278 => x"0672fc06",
+279 => x"08f883ff",
+280 => x"ff060772",
+281 => x"fc060c51",
+282 => x"51810504",
+283 => x"72fc0608",
+284 => x"0a101010",
+285 => x"10101010",
+286 => x"10101010",
+287 => x"10101010",
+288 => x"100a83fe",
+289 => x"800672fc",
+290 => x"0608fc81",
+291 => x"ff060772",
+292 => x"fc060c51",
+293 => x"51810504",
+294 => x"72fc0608",
+295 => x"0a101010",
+296 => x"10101010",
+297 => x"10101010",
+298 => x"10101010",
+299 => x"10101010",
+300 => x"10101010",
+301 => x"100a81ff",
+302 => x"0672fc06",
+303 => x"08fe8006",
+304 => x"0772fc06",
+305 => x"0c515181",
+306 => x"050472fc",
+307 => x"06081010",
+308 => x"10101010",
+309 => x"101081ff",
+310 => x"0a0672fc",
+311 => x"0608fe80",
+312 => x"0a060772",
+313 => x"fc060c51",
+314 => x"51810504",
+315 => x"72fc0608",
+316 => x"87fc8080",
+317 => x"0672fc06",
+318 => x"705408f8",
+319 => x"83ffff06",
+320 => x"07720c51",
+321 => x"51810504",
+322 => x"72fc0608",
+323 => x"0a101010",
+324 => x"10101010",
+325 => x"100a83fe",
+326 => x"800672fc",
+327 => x"0608fc81",
+328 => x"ff060772",
+329 => x"fc060c51",
+330 => x"51810504",
+331 => x"72fc0608",
+332 => x"0a101010",
+333 => x"10101010",
+334 => x"10101010",
+335 => x"10101010",
+336 => x"100a81ff",
+337 => x"0672fc06",
+338 => x"08fe8006",
+339 => x"0772fc06",
+340 => x"0c515181",
+341 => x"050472fc",
+342 => x"06081010",
+343 => x"10101010",
+344 => x"10101010",
+345 => x"10101010",
+346 => x"101081ff",
+347 => x"0a0672fc",
+348 => x"0608fe80",
+349 => x"0a060772",
+350 => x"fc060c51",
+351 => x"51810504",
+352 => x"72fc0608",
+353 => x"10101010",
+354 => x"10101010",
+355 => x"87fc8080",
+356 => x"0672fc06",
+357 => x"08f883ff",
+358 => x"ff060772",
+359 => x"fc060c51",
+360 => x"51810504",
+361 => x"72fc0608",
+362 => x"83fe8006",
+363 => x"72fc0670",
+364 => x"5408fc81",
+365 => x"ff060772",
+366 => x"0c515181",
+367 => x"050472fc",
+368 => x"06080a10",
+369 => x"10101010",
+370 => x"1010100a",
+371 => x"81ff0672",
+372 => x"fc0608fe",
+373 => x"80060772",
+374 => x"fc060c51",
+375 => x"51810504",
+376 => x"72fc0608",
+377 => x"10101010",
+378 => x"10101010",
+379 => x"10101010",
+380 => x"10101010",
+381 => x"10101010",
+382 => x"10101010",
+383 => x"81ff0a06",
+384 => x"72fc0608",
+385 => x"fe800a06",
+386 => x"0772fc06",
+387 => x"0c515181",
+388 => x"050472fc",
+389 => x"06081010",
+390 => x"10101010",
+391 => x"10101010",
+392 => x"10101010",
+393 => x"101087fc",
+394 => x"80800672",
+395 => x"fc0608f8",
+396 => x"83ffff06",
+397 => x"0772fc06",
+398 => x"0c515181",
+399 => x"050472fc",
+400 => x"06081010",
+401 => x"10101010",
+402 => x"101083fe",
+403 => x"800672fc",
+404 => x"0608fc81",
+405 => x"ff060772",
+406 => x"fc060c51",
+407 => x"51810504",
+408 => x"72fc0608",
+409 => x"81ff0672",
+410 => x"fc067054",
+411 => x"08fe8006",
+412 => x"07720c51",
+413 => x"51810504",
+414 => x"72728072",
+415 => x"8106ff05",
+416 => x"09720605",
+417 => x"71105272",
+418 => x"0a100a53",
+419 => x"728106ff",
+420 => x"05097206",
+421 => x"05711052",
+422 => x"720a100a",
+423 => x"53728106",
+424 => x"ff050972",
+425 => x"06057110",
+426 => x"52720a10",
+427 => x"0a537281",
+428 => x"06ff0509",
+429 => x"72060571",
+430 => x"1052720a",
+431 => x"100a5372",
+432 => x"8106ff05",
+433 => x"09720605",
+434 => x"71105272",
+435 => x"0a100a53",
+436 => x"728106ff",
+437 => x"05097206",
+438 => x"05711052",
+439 => x"720a100a",
+440 => x"53728106",
+441 => x"ff050972",
+442 => x"06057110",
+443 => x"52720a10",
+444 => x"0a537281",
+445 => x"06ff0509",
+446 => x"72060571",
+447 => x"1052720a",
+448 => x"100a5372",
+449 => x"83a13772",
+450 => x"8106ff05",
+451 => x"09720605",
+452 => x"71105272",
+453 => x"0a100a53",
+454 => x"728106ff",
+455 => x"05097206",
+456 => x"05711052",
+457 => x"720a100a",
+458 => x"53728106",
+459 => x"ff050972",
+460 => x"06057110",
+461 => x"52720a10",
+462 => x"0a537281",
+463 => x"06ff0509",
+464 => x"72060571",
+465 => x"1052720a",
+466 => x"100a5372",
+467 => x"8106ff05",
+468 => x"09720605",
+469 => x"71105272",
+470 => x"0a100a53",
+471 => x"728106ff",
+472 => x"05097206",
+473 => x"05711052",
+474 => x"720a100a",
+475 => x"53728106",
+476 => x"ff050972",
+477 => x"06057110",
+478 => x"52720a10",
+479 => x"0a537281",
+480 => x"06ff0509",
+481 => x"72060571",
+482 => x"1052720a",
+483 => x"100a5372",
+484 => x"82953772",
+485 => x"8106ff05",
+486 => x"09720605",
+487 => x"71105272",
+488 => x"0a100a53",
+489 => x"728106ff",
+490 => x"05097206",
+491 => x"05711052",
+492 => x"720a100a",
+493 => x"53728106",
+494 => x"ff050972",
+495 => x"06057110",
+496 => x"52720a10",
+497 => x"0a537281",
+498 => x"06ff0509",
+499 => x"72060571",
+500 => x"1052720a",
+501 => x"100a5372",
+502 => x"8106ff05",
+503 => x"09720605",
+504 => x"71105272",
+505 => x"0a100a53",
+506 => x"728106ff",
+507 => x"05097206",
+508 => x"05711052",
+509 => x"720a100a",
+510 => x"53728106",
+511 => x"ff050972",
+512 => x"06057110",
+513 => x"52720a10",
+514 => x"0a537281",
+515 => x"06ff0509",
+516 => x"72060571",
+517 => x"1052720a",
+518 => x"100a5372",
+519 => x"81893772",
+520 => x"8106ff05",
+521 => x"09720605",
+522 => x"71105272",
+523 => x"0a100a53",
+524 => x"728106ff",
+525 => x"05097206",
+526 => x"05711052",
+527 => x"720a100a",
+528 => x"53728106",
+529 => x"ff050972",
+530 => x"06057110",
+531 => x"52720a10",
+532 => x"0a537281",
+533 => x"06ff0509",
+534 => x"72060571",
+535 => x"1052720a",
+536 => x"100a5372",
+537 => x"8106ff05",
+538 => x"09720605",
+539 => x"71105272",
+540 => x"0a100a53",
+541 => x"728106ff",
+542 => x"05097206",
+543 => x"05711052",
+544 => x"720a100a",
+545 => x"53728106",
+546 => x"ff050972",
+547 => x"06057110",
+548 => x"52720a10",
+549 => x"0a537281",
+550 => x"06ff0509",
+551 => x"72060571",
+552 => x"1052720a",
+553 => x"100a5351",
+554 => x"51535181",
+555 => x"05043c04",
+556 => x"70700b0b",
+557 => x"819acc08",
+558 => x"52841208",
+559 => x"70810651",
+560 => x"51700970",
+561 => x"81050906",
+562 => x"0a098106",
+563 => x"ff0509e9",
+564 => x"0bf70506",
+565 => x"84010505",
+566 => x"04710881",
+567 => x"ff06800c",
+568 => x"50500470",
+569 => x"700b0b81",
+570 => x"9acc0852",
+571 => x"84120870",
+572 => x"0a100a70",
+573 => x"81065151",
+574 => x"51700970",
+575 => x"81050906",
+576 => x"0a098106",
+577 => x"ff0509e4",
+578 => x"0bf70506",
+579 => x"84010505",
+580 => x"0473720c",
+581 => x"50500481",
+582 => x"8ad80809",
+583 => x"70810509",
+584 => x"060a8106",
+585 => x"ff0509b0",
+586 => x"0bf70506",
+587 => x"84010505",
+588 => x"04838080",
+589 => x"0b0b0b81",
+590 => x"9acc0c82",
+591 => x"a0800b0b",
+592 => x"0b819ad0",
+593 => x"0c829080",
+594 => x"0b819ae0",
+595 => x"0c0b0b81",
+596 => x"9ad40b81",
+597 => x"9ae40c04",
+598 => x"f8808080",
+599 => x"a40b0b0b",
+600 => x"819acc0c",
+601 => x"f8808082",
+602 => x"800b0b0b",
+603 => x"819ad00c",
+604 => x"f8808084",
+605 => x"800b819a",
+606 => x"e00cf880",
+607 => x"8080940b",
+608 => x"819ae40c",
+609 => x"f8808080",
+610 => x"9c0b819a",
+611 => x"dc0cf880",
+612 => x"8080a00b",
+613 => x"819ae80c",
+614 => x"04f23d0d",
+615 => x"600b0b81",
+616 => x"9ad00856",
+617 => x"5d82750c",
+618 => x"8059805a",
+619 => x"800b8f3d",
+620 => x"71101017",
+621 => x"70085957",
+622 => x"5d5b8076",
+623 => x"81ff067c",
+624 => x"832b5658",
+625 => x"5276537b",
+626 => x"519ede3f",
+627 => x"7d7f7a72",
+628 => x"077c7207",
+629 => x"71716081",
+630 => x"05415f5d",
+631 => x"5b595755",
+632 => x"7a8724ff",
+633 => x"050980ce",
+634 => x"0bf70506",
+635 => x"84010505",
+636 => x"040b0b81",
+637 => x"9ad0087b",
+638 => x"10101170",
+639 => x"08585155",
+640 => x"807681ff",
+641 => x"067c832b",
+642 => x"56585276",
+643 => x"537b519e",
+644 => x"983f7d7f",
+645 => x"7a72077c",
+646 => x"72077171",
+647 => x"60810541",
+648 => x"5f5d5b59",
+649 => x"5755877b",
+650 => x"25ff0509",
+651 => x"c40bf705",
+652 => x"06840105",
+653 => x"0504767d",
+654 => x"0c77841e",
+655 => x"0c7c800c",
+656 => x"903d0d04",
+657 => x"7070819a",
+658 => x"d8335170",
+659 => x"09708105",
+660 => x"09060a09",
+661 => x"8106ff05",
+662 => x"0980d60b",
+663 => x"f7050684",
+664 => x"01050504",
+665 => x"818ae408",
+666 => x"70085252",
+667 => x"70097081",
+668 => x"0509060a",
+669 => x"8106ff05",
+670 => x"09b10bf7",
+671 => x"05068401",
+672 => x"05050484",
+673 => x"12818ae4",
+674 => x"0c702d81",
+675 => x"8ae40870",
+676 => x"08525270",
+677 => x"09708105",
+678 => x"09060a09",
+679 => x"8106ff05",
+680 => x"09e10bf7",
+681 => x"05068401",
+682 => x"05050481",
+683 => x"0b819ad8",
+684 => x"34505004",
+685 => x"04700b0b",
+686 => x"819ac808",
+687 => x"09708105",
+688 => x"09060a81",
+689 => x"06ff0509",
+690 => x"a50bf705",
+691 => x"06840105",
+692 => x"05040b0b",
+693 => x"0b0b8009",
+694 => x"70810509",
+695 => x"060a0981",
+696 => x"06ff0509",
+697 => x"8b0bf705",
+698 => x"06840105",
+699 => x"05045004",
+700 => x"0b0b819a",
+701 => x"c8510b0b",
+702 => x"0bea853f",
+703 => x"50040470",
+704 => x"70028f05",
+705 => x"33527109",
+706 => x"81058a05",
+707 => x"09708105",
+708 => x"09060a81",
+709 => x"06ff0509",
+710 => x"910bf705",
+711 => x"06840105",
+712 => x"05047151",
+713 => x"fbbd3f50",
+714 => x"50048d51",
+715 => x"fbb53f71",
+716 => x"51fbb03f",
+717 => x"505004cd",
+718 => x"3d0db63d",
+719 => x"70708405",
+720 => x"520895ff",
+721 => x"5d56a63d",
+722 => x"5f5d8075",
+723 => x"70810557",
+724 => x"33765c55",
+725 => x"59730981",
+726 => x"05790509",
+727 => x"70810509",
+728 => x"060a8106",
+729 => x"ff050981",
+730 => x"ad0bf705",
+731 => x"06840105",
+732 => x"05048f3d",
+733 => x"5c730981",
+734 => x"05a50509",
+735 => x"70810509",
+736 => x"060a0981",
+737 => x"06ff0509",
+738 => x"819c0bf7",
+739 => x"05068401",
+740 => x"05050479",
+741 => x"7081055b",
+742 => x"33547309",
+743 => x"810580e4",
+744 => x"05097081",
+745 => x"0509060a",
+746 => x"8106ff05",
+747 => x"0982ee0b",
+748 => x"f7050684",
+749 => x"01050504",
+750 => x"7380e424",
+751 => x"ff050981",
+752 => x"900bf705",
+753 => x"06840105",
+754 => x"05047309",
+755 => x"810580e3",
+756 => x"05097081",
+757 => x"0509060a",
+758 => x"8106ff05",
+759 => x"09bf0bf7",
+760 => x"05068401",
+761 => x"05050480",
+762 => x"52a5517a",
+763 => x"2d805273",
+764 => x"517a2d82",
+765 => x"19597970",
+766 => x"81055b33",
+767 => x"54730970",
+768 => x"81050906",
+769 => x"0a098106",
+770 => x"ff0509fe",
+771 => x"e80bf705",
+772 => x"06840105",
+773 => x"05047880",
+774 => x"0cb53d0d",
+775 => x"047c841e",
+776 => x"83123356",
+777 => x"5e578052",
+778 => x"73517a2d",
+779 => x"81197a70",
+780 => x"81055c33",
+781 => x"55597309",
+782 => x"70810509",
+783 => x"060a0981",
+784 => x"06ff0509",
+785 => x"feaf0bf7",
+786 => x"05068401",
+787 => x"050504c6",
+788 => x"39730981",
+789 => x"0580f305",
+790 => x"09708105",
+791 => x"09060a09",
+792 => x"8106ff05",
+793 => x"09ff800b",
+794 => x"f7050684",
+795 => x"01050504",
+796 => x"7c841e71",
+797 => x"08595e56",
+798 => x"80773356",
+799 => x"56740981",
+800 => x"05760509",
+801 => x"70810509",
+802 => x"060a8106",
+803 => x"ff0509aa",
+804 => x"0bf70506",
+805 => x"84010505",
+806 => x"04811670",
+807 => x"1870335a",
+808 => x"55567709",
+809 => x"70810509",
+810 => x"060a0981",
+811 => x"06ff0509",
+812 => x"e80bf705",
+813 => x"06840105",
+814 => x"0504ff16",
+815 => x"55807625",
+816 => x"ff0509fe",
+817 => x"b10bf705",
+818 => x"06840105",
+819 => x"05047670",
+820 => x"81055833",
+821 => x"58805277",
+822 => x"517a2d81",
+823 => x"1975ff17",
+824 => x"57575980",
+825 => x"7625ff05",
+826 => x"09fe8b0b",
+827 => x"f7050684",
+828 => x"01050504",
+829 => x"76708105",
+830 => x"58335880",
+831 => x"5277517a",
+832 => x"2d811975",
+833 => x"ff175757",
+834 => x"59758024",
+835 => x"ff0509ff",
+836 => x"bd0bf705",
+837 => x"06840105",
+838 => x"0504fdda",
+839 => x"397c841e",
+840 => x"71087071",
+841 => x"9f2c5953",
+842 => x"595e5680",
+843 => x"7524ff05",
+844 => x"0981f80b",
+845 => x"f7050684",
+846 => x"01050504",
+847 => x"757e7d58",
+848 => x"59558057",
+849 => x"74098105",
+850 => x"77050970",
+851 => x"81050906",
+852 => x"0a098106",
+853 => x"ff050980",
+854 => x"f40bf705",
+855 => x"06840105",
+856 => x"0504b07c",
+857 => x"3402b905",
+858 => x"567b0981",
+859 => x"05760509",
+860 => x"70810509",
+861 => x"060a8106",
+862 => x"ff0509b3",
+863 => x"0bf70506",
+864 => x"84010505",
+865 => x"04ff1656",
+866 => x"75787081",
+867 => x"055a3b81",
+868 => x"17577b09",
+869 => x"81057605",
+870 => x"09708105",
+871 => x"09060a09",
+872 => x"8106ff05",
+873 => x"09df0bf7",
+874 => x"05068401",
+875 => x"05050480",
+876 => x"7834767e",
+877 => x"ff125758",
+878 => x"56758024",
+879 => x"ff0509fe",
+880 => x"8d0bf705",
+881 => x"06840105",
+882 => x"0504fcaa",
+883 => x"398a7536",
+884 => x"0b0b80fb",
+885 => x"fc055473",
+886 => x"76708105",
+887 => x"583b8a75",
+888 => x"35557409",
+889 => x"70810509",
+890 => x"060a8106",
+891 => x"ff0509fe",
+892 => x"f80bf705",
+893 => x"06840105",
+894 => x"05048a75",
+895 => x"360b0b80",
+896 => x"fbfc0554",
+897 => x"73767081",
+898 => x"05583b8a",
+899 => x"75355574",
+900 => x"09708105",
+901 => x"09060a09",
+902 => x"8106ff05",
+903 => x"09ffae0b",
+904 => x"f7050684",
+905 => x"01050504",
+906 => x"febf3974",
+907 => x"527653b5",
+908 => x"3dffb805",
+909 => x"5195c73f",
+910 => x"a43d0856",
+911 => x"fdfe3970",
+912 => x"80c10b81",
+913 => x"e9983480",
+914 => x"0b81eaf0",
+915 => x"0c70800c",
+916 => x"50047070",
+917 => x"800b81e9",
+918 => x"98335252",
+919 => x"70098105",
+920 => x"80c10509",
+921 => x"70810509",
+922 => x"060a8106",
+923 => x"ff0509a0",
+924 => x"0bf70506",
+925 => x"84010505",
+926 => x"047181ea",
+927 => x"f0080781",
+928 => x"eaf00c80",
+929 => x"c20b81e9",
+930 => x"9c347080",
+931 => x"0c505004",
+932 => x"810b81ea",
+933 => x"f0080781",
+934 => x"eaf00c80",
+935 => x"c20b81e9",
+936 => x"9c347080",
+937 => x"0c505004",
+938 => x"70707070",
+939 => x"7570088a",
+940 => x"05535381",
+941 => x"e9983351",
+942 => x"70098105",
+943 => x"80c10509",
+944 => x"70810509",
+945 => x"060a8106",
+946 => x"ff0509a9",
+947 => x"0bf70506",
+948 => x"84010505",
+949 => x"04730970",
+950 => x"81050906",
+951 => x"0a098106",
+952 => x"ff0509cf",
+953 => x"0bf70506",
+954 => x"84010505",
+955 => x"0470800c",
+956 => x"50505050",
+957 => x"04ff1270",
+958 => x"81e99408",
+959 => x"31740c80",
+960 => x"0c505050",
+961 => x"5004fc3d",
+962 => x"0d81e9a0",
+963 => x"08557409",
+964 => x"70810509",
+965 => x"060a8106",
+966 => x"ff050994",
+967 => x"0bf70506",
+968 => x"84010505",
+969 => x"04767508",
+970 => x"710c81e9",
+971 => x"a0085654",
+972 => x"8c155381",
+973 => x"e9940852",
+974 => x"8a5190ac",
+975 => x"3f73800c",
+976 => x"863d0d04",
+977 => x"fb3d0d77",
+978 => x"70085656",
+979 => x"b05381e9",
+980 => x"a0085274",
+981 => x"51acb53f",
+982 => x"850b8c17",
+983 => x"0c850b8c",
+984 => x"160c7508",
+985 => x"750c81e9",
+986 => x"a0085473",
+987 => x"09708105",
+988 => x"09060a81",
+989 => x"06ff0509",
+990 => x"920bf705",
+991 => x"06840105",
+992 => x"05047308",
+993 => x"750c81e9",
+994 => x"a008548c",
+995 => x"145381e9",
+996 => x"9408528a",
+997 => x"518fd13f",
+998 => x"84150809",
+999 => x"70810509",
+1000 => x"060a0981",
+1001 => x"06ff0509",
+1002 => x"b50bf705",
+1003 => x"06840105",
+1004 => x"0504860b",
+1005 => x"8c160c88",
+1006 => x"15528816",
+1007 => x"08518dd3",
+1008 => x"3f81e9a0",
+1009 => x"08700876",
+1010 => x"0c548c15",
+1011 => x"7054548a",
+1012 => x"52730851",
+1013 => x"8f923f73",
+1014 => x"800c873d",
+1015 => x"0d047508",
+1016 => x"54b05373",
+1017 => x"527551ab",
+1018 => x"a33f7380",
+1019 => x"0c873d0d",
+1020 => x"04e13d0d",
+1021 => x"b05196c2",
+1022 => x"3f800881",
+1023 => x"e9900cb0",
+1024 => x"5196b73f",
+1025 => x"800881e9",
+1026 => x"a00c81e9",
+1027 => x"90088008",
+1028 => x"0c800b80",
+1029 => x"0884050c",
+1030 => x"820b8008",
+1031 => x"88050ca8",
+1032 => x"0b80088c",
+1033 => x"050c9f53",
+1034 => x"0b0b80fc",
+1035 => x"88528008",
+1036 => x"900551aa",
+1037 => x"d73f993d",
+1038 => x"5c9f530b",
+1039 => x"0b80fca8",
+1040 => x"527b51aa",
+1041 => x"c73f8a0b",
+1042 => x"81a7d80c",
+1043 => x"0b0b8186",
+1044 => x"cc51f5e3",
+1045 => x"3f0b0b80",
+1046 => x"fcc851f5",
+1047 => x"da3f0b0b",
+1048 => x"8186cc51",
+1049 => x"f5d13f81",
+1050 => x"8aec0809",
+1051 => x"70810509",
+1052 => x"060a8106",
+1053 => x"ff05098a",
+1054 => x"ef0bf705",
+1055 => x"06840105",
+1056 => x"05040b0b",
+1057 => x"80fcf851",
+1058 => x"f5ad3f0b",
+1059 => x"0b8186cc",
+1060 => x"51f5a43f",
+1061 => x"818ae808",
+1062 => x"520b0b80",
+1063 => x"fda451f5",
+1064 => x"963f8051",
+1065 => x"80c5a13f",
+1066 => x"8008819a",
+1067 => x"f80c810b",
+1068 => x"923d5c58",
+1069 => x"800b818a",
+1070 => x"e80825ff",
+1071 => x"05098492",
+1072 => x"0bf70506",
+1073 => x"84010505",
+1074 => x"048e3d5d",
+1075 => x"80c10b81",
+1076 => x"e9983481",
+1077 => x"0b81eaf0",
+1078 => x"0c80c20b",
+1079 => x"81e99c34",
+1080 => x"825e835a",
+1081 => x"9f530b0b",
+1082 => x"80fdd452",
+1083 => x"7a51a99c",
+1084 => x"3f815f80",
+1085 => x"7b537c52",
+1086 => x"558eba3f",
+1087 => x"80080981",
+1088 => x"05750509",
+1089 => x"70810509",
+1090 => x"060a0981",
+1091 => x"06ff0509",
+1092 => x"8b0bf705",
+1093 => x"06840105",
+1094 => x"05048155",
+1095 => x"7481eaf0",
+1096 => x"0c7d7057",
+1097 => x"55748325",
+1098 => x"ff0509b4",
+1099 => x"0bf70506",
+1100 => x"84010505",
+1101 => x"04741010",
+1102 => x"15fd0540",
+1103 => x"a13dffbc",
+1104 => x"05538352",
+1105 => x"75518ca0",
+1106 => x"3f811e70",
+1107 => x"5f705755",
+1108 => x"837524ff",
+1109 => x"0509de0b",
+1110 => x"f7050684",
+1111 => x"01050504",
+1112 => x"7f547453",
+1113 => x"819afc52",
+1114 => x"81e9a851",
+1115 => x"8c863f81",
+1116 => x"e9a00870",
+1117 => x"085757b0",
+1118 => x"53765275",
+1119 => x"51a88d3f",
+1120 => x"850b8c18",
+1121 => x"0c850b8c",
+1122 => x"170c7608",
+1123 => x"760c81e9",
+1124 => x"a0085574",
+1125 => x"09708105",
+1126 => x"09060a81",
+1127 => x"06ff0509",
+1128 => x"920bf705",
+1129 => x"06840105",
+1130 => x"05047408",
+1131 => x"760c81e9",
+1132 => x"a008558c",
+1133 => x"155381e9",
+1134 => x"9408528a",
+1135 => x"518ba93f",
+1136 => x"84160809",
+1137 => x"70810509",
+1138 => x"060a0981",
+1139 => x"06ff0509",
+1140 => x"889f0bf7",
+1141 => x"05068401",
+1142 => x"05050486",
+1143 => x"0b8c170c",
+1144 => x"88165288",
+1145 => x"17085189",
+1146 => x"aa3f81e9",
+1147 => x"a0087008",
+1148 => x"770c578c",
+1149 => x"16705455",
+1150 => x"8a527408",
+1151 => x"518ae93f",
+1152 => x"80c10b81",
+1153 => x"e99c3356",
+1154 => x"56757526",
+1155 => x"ff050980",
+1156 => x"cc0bf705",
+1157 => x"06840105",
+1158 => x"050480c3",
+1159 => x"5275518b",
+1160 => x"d33f8008",
+1161 => x"0981057f",
+1162 => x"05097081",
+1163 => x"0509060a",
+1164 => x"8106ff05",
+1165 => x"0987f50b",
+1166 => x"f7050684",
+1167 => x"01050504",
+1168 => x"81167081",
+1169 => x"ff0681e9",
+1170 => x"9c335257",
+1171 => x"55747627",
+1172 => x"ff0509c6",
+1173 => x"0bf70506",
+1174 => x"84010505",
+1175 => x"04797e29",
+1176 => x"60707235",
+1177 => x"70417272",
+1178 => x"31707011",
+1179 => x"11111111",
+1180 => x"11517231",
+1181 => x"5e538a05",
+1182 => x"81e99833",
+1183 => x"81e99408",
+1184 => x"5a525258",
+1185 => x"55760981",
+1186 => x"0580c105",
+1187 => x"09708105",
+1188 => x"09060a81",
+1189 => x"06ff0509",
+1190 => x"87c10bf7",
+1191 => x"05068401",
+1192 => x"05050478",
+1193 => x"09708105",
+1194 => x"09060a09",
+1195 => x"8106ff05",
+1196 => x"09d30bf7",
+1197 => x"05068401",
+1198 => x"05050481",
+1199 => x"1858818a",
+1200 => x"e8087825",
+1201 => x"ff0509fc",
+1202 => x"830bf705",
+1203 => x"06840105",
+1204 => x"05048051",
+1205 => x"80c0f13f",
+1206 => x"800881e9",
+1207 => x"8c0c0b0b",
+1208 => x"80fdf451",
+1209 => x"f0d13f0b",
+1210 => x"0b8186cc",
+1211 => x"51f0c83f",
+1212 => x"0b0b80fe",
+1213 => x"8451f0bf",
+1214 => x"3f0b0b81",
+1215 => x"86cc51f0",
+1216 => x"b63f81e9",
+1217 => x"9408520b",
+1218 => x"0b80febc",
+1219 => x"51f0a83f",
+1220 => x"85520b0b",
+1221 => x"80fed851",
+1222 => x"f09d3f81",
+1223 => x"eaf00852",
+1224 => x"0b0b80fe",
+1225 => x"f451f08f",
+1226 => x"3f81520b",
+1227 => x"0b80fed8",
+1228 => x"51f0843f",
+1229 => x"81e99833",
+1230 => x"520b0b80",
+1231 => x"ff9051ef",
+1232 => x"f63f80c1",
+1233 => x"520b0b80",
+1234 => x"ffac51ef",
+1235 => x"ea3f81e9",
+1236 => x"9c33520b",
+1237 => x"0b80ffc8",
+1238 => x"51efdc3f",
+1239 => x"80c2520b",
+1240 => x"0b80ffac",
+1241 => x"51efd03f",
+1242 => x"81e9c808",
+1243 => x"520b0b80",
+1244 => x"ffe451ef",
+1245 => x"c23f8752",
+1246 => x"0b0b80fe",
+1247 => x"d851efb7",
+1248 => x"3f81a7d8",
+1249 => x"08520b0b",
+1250 => x"81808051",
+1251 => x"efa93f0b",
+1252 => x"0b81809c",
+1253 => x"51efa03f",
+1254 => x"0b0b8180",
+1255 => x"c851ef97",
+1256 => x"3f81e9a0",
+1257 => x"08700853",
+1258 => x"560b0b81",
+1259 => x"80d451ef",
+1260 => x"863f0b0b",
+1261 => x"8180f051",
+1262 => x"eefd3f81",
+1263 => x"e9a00884",
+1264 => x"1108535d",
+1265 => x"0b0b8181",
+1266 => x"a451eeeb",
+1267 => x"3f80520b",
+1268 => x"0b80fed8",
+1269 => x"51eee03f",
+1270 => x"81e9a008",
+1271 => x"88110853",
+1272 => x"580b0b81",
+1273 => x"81c051ee",
+1274 => x"ce3f8252",
+1275 => x"0b0b80fe",
+1276 => x"d851eec3",
+1277 => x"3f81e9a0",
+1278 => x"088c1108",
+1279 => x"53590b0b",
+1280 => x"8181dc51",
+1281 => x"eeb13f91",
+1282 => x"520b0b80",
+1283 => x"fed851ee",
+1284 => x"a63f81e9",
+1285 => x"a0089005",
+1286 => x"520b0b81",
+1287 => x"81f851ee",
+1288 => x"963f0b0b",
+1289 => x"81829451",
+1290 => x"ee8d3f0b",
+1291 => x"0b8182cc",
+1292 => x"51ee843f",
+1293 => x"81e99008",
+1294 => x"70085357",
+1295 => x"0b0b8180",
+1296 => x"d451edf3",
+1297 => x"3f0b0b81",
+1298 => x"82e051ed",
+1299 => x"ea3f81e9",
+1300 => x"90088411",
+1301 => x"0853550b",
+1302 => x"0b8181a4",
+1303 => x"51edd83f",
+1304 => x"80520b0b",
+1305 => x"80fed851",
+1306 => x"edcd3f81",
+1307 => x"e9900888",
+1308 => x"11085356",
+1309 => x"0b0b8181",
+1310 => x"c051edbb",
+1311 => x"3f81520b",
+1312 => x"0b80fed8",
+1313 => x"51edb03f",
+1314 => x"81e99008",
+1315 => x"8c110853",
+1316 => x"5d0b0b81",
+1317 => x"81dc51ed",
+1318 => x"9e3f9252",
+1319 => x"0b0b80fe",
+1320 => x"d851ed93",
+1321 => x"3f81e990",
+1322 => x"08900552",
+1323 => x"0b0b8181",
+1324 => x"f851ed83",
+1325 => x"3f0b0b81",
+1326 => x"829451ec",
+1327 => x"fa3f7d52",
+1328 => x"0b0b8183",
+1329 => x"a051ecef",
+1330 => x"3f85520b",
+1331 => x"0b80fed8",
+1332 => x"51ece43f",
+1333 => x"79520b0b",
+1334 => x"8183bc51",
+1335 => x"ecd93f8d",
+1336 => x"520b0b80",
+1337 => x"fed851ec",
+1338 => x"ce3f7f52",
+1339 => x"0b0b8183",
+1340 => x"d851ecc3",
+1341 => x"3f87520b",
+1342 => x"0b80fed8",
+1343 => x"51ecb83f",
+1344 => x"7e520b0b",
+1345 => x"8183f451",
+1346 => x"ecad3f81",
+1347 => x"520b0b80",
+1348 => x"fed851ec",
+1349 => x"a23f7b52",
+1350 => x"0b0b8184",
+1351 => x"9051ec97",
+1352 => x"3f0b0b81",
+1353 => x"84ac51ec",
+1354 => x"8e3f7a52",
+1355 => x"0b0b8184",
+1356 => x"e451ec83",
+1357 => x"3f0b0b81",
+1358 => x"858051eb",
+1359 => x"fa3f0b0b",
+1360 => x"8186cc51",
+1361 => x"ebf13f81",
+1362 => x"e98c0881",
+1363 => x"9af80831",
+1364 => x"70819af4",
+1365 => x"0c520b0b",
+1366 => x"8185b851",
+1367 => x"ebd93f81",
+1368 => x"9af40856",
+1369 => x"817625ff",
+1370 => x"0509819d",
+1371 => x"0bf70506",
+1372 => x"84010505",
+1373 => x"04818ae8",
+1374 => x"087077bd",
+1375 => x"84c0290b",
+1376 => x"35819aec",
+1377 => x"0c767135",
+1378 => x"819af00c",
+1379 => x"768ddd29",
+1380 => x"7187e829",
+1381 => x"0b3581e9",
+1382 => x"a40c5b0b",
+1383 => x"0b8185c8",
+1384 => x"51eb943f",
+1385 => x"819aec08",
+1386 => x"520b0b81",
+1387 => x"85f851eb",
+1388 => x"863f0b0b",
+1389 => x"81868051",
+1390 => x"eafd3f81",
+1391 => x"9af00852",
+1392 => x"0b0b8185",
+1393 => x"f851eaef",
+1394 => x"3f81e9a4",
+1395 => x"08520b0b",
+1396 => x"8186b051",
+1397 => x"eae13f0b",
+1398 => x"0b8186cc",
+1399 => x"51ead83f",
+1400 => x"800b800c",
+1401 => x"a13d0d04",
+1402 => x"0b0b8186",
+1403 => x"d051f598",
+1404 => x"39760856",
+1405 => x"b0537552",
+1406 => x"76519f90",
+1407 => x"3f80c10b",
+1408 => x"81e99c33",
+1409 => x"5656f881",
+1410 => x"390b0b81",
+1411 => x"878051ea",
+1412 => x"a63f0b0b",
+1413 => x"8187b851",
+1414 => x"ea9d3f0b",
+1415 => x"0b8186cc",
+1416 => x"51ea943f",
+1417 => x"800b800c",
+1418 => x"a13d0d04",
+1419 => x"a13dffb8",
+1420 => x"05528051",
+1421 => x"80dd3f9f",
+1422 => x"530b0b81",
+1423 => x"87d8527a",
+1424 => x"519ec93f",
+1425 => x"777881e9",
+1426 => x"940c8117",
+1427 => x"7081ff06",
+1428 => x"81e99c33",
+1429 => x"5258565a",
+1430 => x"f7f339ff",
+1431 => x"15707731",
+1432 => x"7e0c5980",
+1433 => x"0b811959",
+1434 => x"59818ae8",
+1435 => x"087825ff",
+1436 => x"0509f4d8",
+1437 => x"0bf70506",
+1438 => x"84010505",
+1439 => x"04f8d339",
+1440 => x"70707382",
+1441 => x"32703070",
+1442 => x"72078025",
+1443 => x"800c5252",
+1444 => x"50500470",
+1445 => x"70707476",
+1446 => x"71535452",
+1447 => x"71098105",
+1448 => x"82050970",
+1449 => x"81050906",
+1450 => x"0a8106ff",
+1451 => x"05098b0b",
+1452 => x"f7050684",
+1453 => x"01050504",
+1454 => x"83517109",
+1455 => x"81058105",
+1456 => x"09708105",
+1457 => x"09060a81",
+1458 => x"06ff0509",
+1459 => x"80dd0bf7",
+1460 => x"05068401",
+1461 => x"05050481",
+1462 => x"7226ff05",
+1463 => x"0980e10b",
+1464 => x"f7050684",
+1465 => x"01050504",
+1466 => x"71098105",
+1467 => x"82050970",
+1468 => x"81050906",
+1469 => x"0a8106ff",
+1470 => x"050980e2",
+1471 => x"0bf70506",
+1472 => x"84010505",
+1473 => x"04710981",
+1474 => x"05840509",
+1475 => x"70810509",
+1476 => x"060a8106",
+1477 => x"ff0509bc",
+1478 => x"0bf70506",
+1479 => x"84010505",
+1480 => x"0470730c",
+1481 => x"70800c50",
+1482 => x"50500480",
+1483 => x"e40b81e9",
+1484 => x"940825ff",
+1485 => x"0509930b",
+1486 => x"f7050684",
+1487 => x"01050504",
+1488 => x"80730c70",
+1489 => x"800c5050",
+1490 => x"50048373",
+1491 => x"0c70800c",
+1492 => x"50505004",
+1493 => x"82730c70",
+1494 => x"800c5050",
+1495 => x"50048173",
+1496 => x"0c70800c",
+1497 => x"50505004",
+1498 => x"70747414",
+1499 => x"8205710c",
+1500 => x"800c5004",
+1501 => x"f73d0d7b",
+1502 => x"7d7f6185",
+1503 => x"1270822b",
+1504 => x"75117074",
+1505 => x"71708405",
+1506 => x"530c5a5a",
+1507 => x"5d5b760c",
+1508 => x"7980f818",
+1509 => x"0c798612",
+1510 => x"5257585a",
+1511 => x"5a767624",
+1512 => x"ff0509ac",
+1513 => x"0bf70506",
+1514 => x"84010505",
+1515 => x"0476b329",
+1516 => x"822b7911",
+1517 => x"51537673",
+1518 => x"70840555",
+1519 => x"0c811454",
+1520 => x"757425ff",
+1521 => x"0509ef0b",
+1522 => x"f7050684",
+1523 => x"01050504",
+1524 => x"7681cc29",
+1525 => x"19fc1108",
+1526 => x"8105fc12",
+1527 => x"0c7a1970",
+1528 => x"089fa013",
+1529 => x"0c585685",
+1530 => x"0b81e994",
+1531 => x"0c75800c",
+1532 => x"8b3d0d04",
+1533 => x"70707002",
+1534 => x"93053351",
+1535 => x"80028405",
+1536 => x"97053354",
+1537 => x"52700981",
+1538 => x"05730509",
+1539 => x"70810509",
+1540 => x"060a8106",
+1541 => x"ff050990",
+1542 => x"0bf70506",
+1543 => x"84010505",
+1544 => x"0471800c",
+1545 => x"50505004",
+1546 => x"7081e998",
+1547 => x"34810b80",
+1548 => x"0c505050",
+1549 => x"04f83d0d",
+1550 => x"7a7c5956",
+1551 => x"820b8319",
+1552 => x"55557416",
+1553 => x"70337533",
+1554 => x"5b515372",
+1555 => x"09810579",
+1556 => x"05097081",
+1557 => x"0509060a",
+1558 => x"8106ff05",
+1559 => x"0981860b",
+1560 => x"f7050684",
+1561 => x"01050504",
+1562 => x"80c10b81",
+1563 => x"16811656",
+1564 => x"56578275",
+1565 => x"25ff0509",
+1566 => x"c90bf705",
+1567 => x"06840105",
+1568 => x"0504ffa9",
+1569 => x"177081ff",
+1570 => x"06555973",
+1571 => x"8226ff05",
+1572 => x"098b0bf7",
+1573 => x"05068401",
+1574 => x"05050487",
+1575 => x"55815376",
+1576 => x"09810580",
+1577 => x"d2050970",
+1578 => x"81050906",
+1579 => x"0a8106ff",
+1580 => x"0509ab0b",
+1581 => x"f7050684",
+1582 => x"01050504",
+1583 => x"77527551",
+1584 => x"9cb43f80",
+1585 => x"53728008",
+1586 => x"25ff0509",
+1587 => x"910bf705",
+1588 => x"06840105",
+1589 => x"05048715",
+1590 => x"81e9940c",
+1591 => x"81537280",
+1592 => x"0c8a3d0d",
+1593 => x"047281e9",
+1594 => x"98348275",
+1595 => x"25ff0509",
+1596 => x"fed00bf7",
+1597 => x"05068401",
+1598 => x"050504ff",
+1599 => x"8539f93d",
+1600 => x"0d797b7d",
+1601 => x"54587259",
+1602 => x"77307970",
+1603 => x"30707207",
+1604 => x"9f2a7371",
+1605 => x"315a5259",
+1606 => x"77795673",
+1607 => x"0c537384",
+1608 => x"130c5480",
+1609 => x"0c893d0d",
+1610 => x"04f93d0d",
+1611 => x"797b7d7f",
+1612 => x"56545254",
+1613 => x"72097081",
+1614 => x"0509060a",
+1615 => x"8106ff05",
+1616 => x"09b30bf7",
+1617 => x"05068401",
+1618 => x"05050470",
+1619 => x"577158a0",
+1620 => x"73315280",
+1621 => x"7225ff05",
+1622 => x"09a90bf7",
+1623 => x"05068401",
+1624 => x"05050477",
+1625 => x"70742b57",
+1626 => x"70732a78",
+1627 => x"752b0756",
+1628 => x"51747653",
+1629 => x"5170740c",
+1630 => x"7184150c",
+1631 => x"73800c89",
+1632 => x"3d0d0480",
+1633 => x"56777230",
+1634 => x"0b2b5574",
+1635 => x"765351e5",
+1636 => x"39fb3d0d",
+1637 => x"77795555",
+1638 => x"80567575",
+1639 => x"24ff0509",
+1640 => x"80d00bf7",
+1641 => x"05068401",
+1642 => x"05050480",
+1643 => x"7424ff05",
+1644 => x"09b70bf7",
+1645 => x"05068401",
+1646 => x"05050480",
+1647 => x"53735274",
+1648 => x"51819c3f",
+1649 => x"80085475",
+1650 => x"09708105",
+1651 => x"09060a81",
+1652 => x"06ff0509",
+1653 => x"8d0bf705",
+1654 => x"06840105",
+1655 => x"05048008",
+1656 => x"30547380",
+1657 => x"0c873d0d",
+1658 => x"04733076",
+1659 => x"81325754",
+1660 => x"ca397430",
+1661 => x"55815673",
+1662 => x"8025ff05",
+1663 => x"09ffbc0b",
+1664 => x"f7050684",
+1665 => x"01050504",
+1666 => x"e039fa3d",
+1667 => x"0d787a57",
+1668 => x"55805776",
+1669 => x"7524ff05",
+1670 => x"09be0bf7",
+1671 => x"05068401",
+1672 => x"05050475",
+1673 => x"9f2c5481",
+1674 => x"53757432",
+1675 => x"74315274",
+1676 => x"51ad3f80",
+1677 => x"08547609",
+1678 => x"70810509",
+1679 => x"060a8106",
+1680 => x"ff05098d",
+1681 => x"0bf70506",
+1682 => x"84010505",
+1683 => x"04800830",
+1684 => x"5473800c",
+1685 => x"883d0d04",
+1686 => x"74305581",
+1687 => x"57c539fc",
+1688 => x"3d0d7678",
+1689 => x"53548153",
+1690 => x"80747326",
+1691 => x"52557209",
+1692 => x"70810509",
+1693 => x"060a8106",
+1694 => x"ff050980",
+1695 => x"d50bf705",
+1696 => x"06840105",
+1697 => x"05047009",
+1698 => x"70810509",
+1699 => x"060a8106",
+1700 => x"ff050980",
+1701 => x"ea0bf705",
+1702 => x"06840105",
+1703 => x"05048072",
+1704 => x"24ff0509",
+1705 => x"80d90bf7",
+1706 => x"05068401",
+1707 => x"05050471",
+1708 => x"10731075",
+1709 => x"72265354",
+1710 => x"52720970",
+1711 => x"81050906",
+1712 => x"0a098106",
+1713 => x"ff0509ff",
+1714 => x"bd0bf705",
+1715 => x"06840105",
+1716 => x"05047351",
+1717 => x"78097081",
+1718 => x"0509060a",
+1719 => x"098106ff",
+1720 => x"05098b0b",
+1721 => x"f7050684",
+1722 => x"01050504",
+1723 => x"74517080",
+1724 => x"0c863d0d",
+1725 => x"04720a10",
+1726 => x"0a720a10",
+1727 => x"0a535372",
+1728 => x"09708105",
+1729 => x"09060a81",
+1730 => x"06ff0509",
+1731 => x"c50bf705",
+1732 => x"06840105",
+1733 => x"05047174",
+1734 => x"26ff0509",
+1735 => x"d80bf705",
+1736 => x"06840105",
+1737 => x"05047372",
+1738 => x"31757407",
+1739 => x"740a100a",
+1740 => x"740a100a",
+1741 => x"55555654",
+1742 => x"c6397070",
+1743 => x"73528193",
+1744 => x"b4085193",
+1745 => x"3f505004",
+1746 => x"70707352",
+1747 => x"8193b408",
+1748 => x"519bc43f",
+1749 => x"505004f4",
+1750 => x"3d0d7e60",
+1751 => x"8b1170f8",
+1752 => x"065b5555",
+1753 => x"5d729626",
+1754 => x"ff05098b",
+1755 => x"0bf70506",
+1756 => x"84010505",
+1757 => x"04905880",
+1758 => x"78247479",
+1759 => x"26075580",
+1760 => x"54740981",
+1761 => x"05740509",
+1762 => x"70810509",
+1763 => x"060a0981",
+1764 => x"06ff0509",
+1765 => x"80f40bf7",
+1766 => x"05068401",
+1767 => x"0505047c",
+1768 => x"5195f13f",
+1769 => x"7783f726",
+1770 => x"ff050980",
+1771 => x"e40bf705",
+1772 => x"06840105",
+1773 => x"05047783",
+1774 => x"2a701010",
+1775 => x"10818bac",
+1776 => x"058c1108",
+1777 => x"58585475",
+1778 => x"09810577",
+1779 => x"05097081",
+1780 => x"0509060a",
+1781 => x"8106ff05",
+1782 => x"0983b60b",
+1783 => x"f7050684",
+1784 => x"01050504",
+1785 => x"841608fc",
+1786 => x"068c1708",
+1787 => x"88180871",
+1788 => x"8c120c88",
+1789 => x"120c5b76",
+1790 => x"05841108",
+1791 => x"81078412",
+1792 => x"0c537c51",
+1793 => x"958f3f88",
+1794 => x"16547380",
+1795 => x"0c8e3d0d",
+1796 => x"0477892a",
+1797 => x"78832a58",
+1798 => x"54730970",
+1799 => x"81050906",
+1800 => x"0a8106ff",
+1801 => x"05098180",
+1802 => x"0bf70506",
+1803 => x"84010505",
+1804 => x"0477862a",
+1805 => x"b8055784",
+1806 => x"7427ff05",
+1807 => x"0980e90b",
+1808 => x"f7050684",
+1809 => x"01050504",
+1810 => x"80db1457",
+1811 => x"947427ff",
+1812 => x"050980d4",
+1813 => x"0bf70506",
+1814 => x"84010505",
+1815 => x"04778c2a",
+1816 => x"80ee0557",
+1817 => x"80d47427",
+1818 => x"ff0509bc",
+1819 => x"0bf70506",
+1820 => x"84010505",
+1821 => x"04778f2a",
+1822 => x"80f70557",
+1823 => x"82d47427",
+1824 => x"ff0509a4",
+1825 => x"0bf70506",
+1826 => x"84010505",
+1827 => x"0477922a",
+1828 => x"80fc0557",
+1829 => x"8ad47427",
+1830 => x"ff05098c",
+1831 => x"0bf70506",
+1832 => x"84010505",
+1833 => x"0480fe57",
+1834 => x"76101010",
+1835 => x"818bac05",
+1836 => x"8c110856",
+1837 => x"53740981",
+1838 => x"05730509",
+1839 => x"70810509",
+1840 => x"060a8106",
+1841 => x"ff050980",
+1842 => x"d70bf705",
+1843 => x"06840105",
+1844 => x"05048415",
+1845 => x"08fc0670",
+1846 => x"79315556",
+1847 => x"738f24ff",
+1848 => x"05098fb7",
+1849 => x"0bf70506",
+1850 => x"84010505",
+1851 => x"04738025",
+1852 => x"ff05098f",
+1853 => x"ae0bf705",
+1854 => x"06840105",
+1855 => x"05048c15",
+1856 => x"08557409",
+1857 => x"81057305",
+1858 => x"09708105",
+1859 => x"09060a09",
+1860 => x"8106ff05",
+1861 => x"09ffbb0b",
+1862 => x"f7050684",
+1863 => x"01050504",
+1864 => x"81175981",
+1865 => x"8bbc0856",
+1866 => x"75098105",
+1867 => x"818bb405",
+1868 => x"09708105",
+1869 => x"09060a81",
+1870 => x"06ff0509",
+1871 => x"84ce0bf7",
+1872 => x"05068401",
+1873 => x"05050484",
+1874 => x"1608fc06",
+1875 => x"70793155",
+1876 => x"55738f24",
+1877 => x"ff050980",
+1878 => x"e30bf705",
+1879 => x"06840105",
+1880 => x"0504818b",
+1881 => x"b40b818b",
+1882 => x"c00c818b",
+1883 => x"b40b818b",
+1884 => x"bc0c8074",
+1885 => x"24ff0509",
+1886 => x"80f80bf7",
+1887 => x"05068401",
+1888 => x"05050474",
+1889 => x"16841108",
+1890 => x"81078412",
+1891 => x"0c53fcf2",
+1892 => x"3988168c",
+1893 => x"11085759",
+1894 => x"75098105",
+1895 => x"79050970",
+1896 => x"81050906",
+1897 => x"0a098106",
+1898 => x"ff0509fc",
+1899 => x"b70bf705",
+1900 => x"06840105",
+1901 => x"05048214",
+1902 => x"59fee839",
+1903 => x"77167881",
+1904 => x"0784180c",
+1905 => x"70818bc0",
+1906 => x"0c70818b",
+1907 => x"bc0c818b",
+1908 => x"b40b8c12",
+1909 => x"0c8c1108",
+1910 => x"88120c74",
+1911 => x"81078412",
+1912 => x"0c740574",
+1913 => x"710c5b7c",
+1914 => x"5191aa3f",
+1915 => x"881654fc",
+1916 => x"993983ff",
+1917 => x"7527ff05",
+1918 => x"0985ff0b",
+1919 => x"f7050684",
+1920 => x"01050504",
+1921 => x"74892a75",
+1922 => x"832a5454",
+1923 => x"73097081",
+1924 => x"0509060a",
+1925 => x"8106ff05",
+1926 => x"0981800b",
+1927 => x"f7050684",
+1928 => x"01050504",
+1929 => x"74862ab8",
+1930 => x"05538474",
+1931 => x"27ff0509",
+1932 => x"80e90bf7",
+1933 => x"05068401",
+1934 => x"05050480",
+1935 => x"db145394",
+1936 => x"7427ff05",
+1937 => x"0980d40b",
+1938 => x"f7050684",
+1939 => x"01050504",
+1940 => x"748c2a80",
+1941 => x"ee055380",
+1942 => x"d47427ff",
+1943 => x"0509bc0b",
+1944 => x"f7050684",
+1945 => x"01050504",
+1946 => x"748f2a80",
+1947 => x"f7055382",
+1948 => x"d47427ff",
+1949 => x"0509a40b",
+1950 => x"f7050684",
+1951 => x"01050504",
+1952 => x"74922a80",
+1953 => x"fc05538a",
+1954 => x"d47427ff",
+1955 => x"05098c0b",
+1956 => x"f7050684",
+1957 => x"01050504",
+1958 => x"80fe5372",
+1959 => x"10101081",
+1960 => x"8bac0588",
+1961 => x"11085557",
+1962 => x"73098105",
+1963 => x"77050970",
+1964 => x"81050906",
+1965 => x"0a8106ff",
+1966 => x"05098aec",
+1967 => x"0bf70506",
+1968 => x"84010505",
+1969 => x"04841408",
+1970 => x"fc065b74",
+1971 => x"7b27ff05",
+1972 => x"09aa0bf7",
+1973 => x"05068401",
+1974 => x"05050488",
+1975 => x"14085473",
+1976 => x"09810577",
+1977 => x"05097081",
+1978 => x"0509060a",
+1979 => x"098106ff",
+1980 => x"0509d20b",
+1981 => x"f7050684",
+1982 => x"01050504",
+1983 => x"8c140881",
+1984 => x"8bac0b84",
+1985 => x"0508718c",
+1986 => x"190c7588",
+1987 => x"190c7788",
+1988 => x"130c5c57",
+1989 => x"758c150c",
+1990 => x"78538079",
+1991 => x"24ff0509",
+1992 => x"86860bf7",
+1993 => x"05068401",
+1994 => x"05050472",
+1995 => x"822c8171",
+1996 => x"2b565674",
+1997 => x"7b26ff05",
+1998 => x"0981a80b",
+1999 => x"f7050684",
+2000 => x"01050504",
+2001 => x"7a750657",
+2002 => x"76097081",
+2003 => x"0509060a",
+2004 => x"098106ff",
+2005 => x"050983ee",
+2006 => x"0bf70506",
+2007 => x"84010505",
+2008 => x"0478fc06",
+2009 => x"84055974",
+2010 => x"10707c06",
+2011 => x"55557309",
+2012 => x"70810509",
+2013 => x"060a0981",
+2014 => x"06ff0509",
+2015 => x"83c80bf7",
+2016 => x"05068401",
+2017 => x"05050484",
+2018 => x"1959dc39",
+2019 => x"818bac0b",
+2020 => x"84050879",
+2021 => x"545b7880",
+2022 => x"25ff0509",
+2023 => x"ff8d0bf7",
+2024 => x"05068401",
+2025 => x"05050484",
+2026 => x"ff397409",
+2027 => x"7b067081",
+2028 => x"8bac0b84",
+2029 => x"050c5b74",
+2030 => x"1055747b",
+2031 => x"26ff0509",
+2032 => x"a20bf705",
+2033 => x"06840105",
+2034 => x"05047409",
+2035 => x"70810509",
+2036 => x"060a0981",
+2037 => x"06ff0509",
+2038 => x"899c0bf7",
+2039 => x"05068401",
+2040 => x"05050481",
+2041 => x"8bac0b88",
+2042 => x"05087084",
+2043 => x"1208fc06",
+2044 => x"707b317b",
+2045 => x"72268f72",
+2046 => x"25075d57",
+2047 => x"5c5c5578",
+2048 => x"09708105",
+2049 => x"09060a81",
+2050 => x"06ff0509",
+2051 => x"81c60bf7",
+2052 => x"05068401",
+2053 => x"05050479",
+2054 => x"15818ba4",
+2055 => x"08199011",
+2056 => x"59545681",
+2057 => x"8ba00809",
+2058 => x"8105ff05",
+2059 => x"09708105",
+2060 => x"09060a81",
+2061 => x"06ff0509",
+2062 => x"900bf705",
+2063 => x"06840105",
+2064 => x"0504a08f",
+2065 => x"13e08006",
+2066 => x"5776527c",
+2067 => x"518cc73f",
+2068 => x"80085480",
+2069 => x"08098105",
+2070 => x"ff050970",
+2071 => x"81050906",
+2072 => x"0a8106ff",
+2073 => x"0509ba0b",
+2074 => x"f7050684",
+2075 => x"01050504",
+2076 => x"80087627",
+2077 => x"ff050983",
+2078 => x"e90bf705",
+2079 => x"06840105",
+2080 => x"05047409",
+2081 => x"8105818b",
+2082 => x"ac050970",
+2083 => x"81050906",
+2084 => x"0a8106ff",
+2085 => x"050983ca",
+2086 => x"0bf70506",
+2087 => x"84010505",
+2088 => x"04818bac",
+2089 => x"0b880508",
+2090 => x"55841508",
+2091 => x"fc067079",
+2092 => x"31797226",
+2093 => x"8f722507",
+2094 => x"5d555a7a",
+2095 => x"09708105",
+2096 => x"09060a09",
+2097 => x"8106ff05",
+2098 => x"0986d00b",
+2099 => x"f7050684",
+2100 => x"01050504",
+2101 => x"77810784",
+2102 => x"160c7715",
+2103 => x"70818bac",
+2104 => x"0b88050c",
+2105 => x"74810784",
+2106 => x"120c567c",
+2107 => x"518ba63f",
+2108 => x"88155473",
+2109 => x"800c8e3d",
+2110 => x"0d047483",
+2111 => x"2a705454",
+2112 => x"807424ff",
+2113 => x"050982a6",
+2114 => x"0bf70506",
+2115 => x"84010505",
+2116 => x"0472822c",
+2117 => x"81712b81",
+2118 => x"8bb00807",
+2119 => x"70818bac",
+2120 => x"0b84050c",
+2121 => x"75101010",
+2122 => x"818bac05",
+2123 => x"88110871",
+2124 => x"8c1b0c70",
+2125 => x"881b0c79",
+2126 => x"88130c57",
+2127 => x"555c5575",
+2128 => x"8c150cfb",
+2129 => x"d3397879",
+2130 => x"10101081",
+2131 => x"8bac0570",
+2132 => x"565b5c8c",
+2133 => x"14085675",
+2134 => x"09810574",
+2135 => x"05097081",
+2136 => x"0509060a",
+2137 => x"8106ff05",
+2138 => x"0980d70b",
+2139 => x"f7050684",
+2140 => x"01050504",
+2141 => x"841608fc",
+2142 => x"06707931",
+2143 => x"5853768f",
+2144 => x"24ff0509",
+2145 => x"86c10bf7",
+2146 => x"05068401",
+2147 => x"05050476",
+2148 => x"8025ff05",
+2149 => x"0986f40b",
+2150 => x"f7050684",
+2151 => x"01050504",
+2152 => x"8c160856",
+2153 => x"75098105",
+2154 => x"74050970",
+2155 => x"81050906",
+2156 => x"0a098106",
+2157 => x"ff0509ff",
+2158 => x"bb0bf705",
+2159 => x"06840105",
+2160 => x"05048814",
+2161 => x"811a7083",
+2162 => x"06555a54",
+2163 => x"72097081",
+2164 => x"0509060a",
+2165 => x"098106ff",
+2166 => x"0509fef7",
+2167 => x"0bf70506",
+2168 => x"84010505",
+2169 => x"047b8306",
+2170 => x"56750970",
+2171 => x"81050906",
+2172 => x"0a8106ff",
+2173 => x"0509fbb2",
+2174 => x"0bf70506",
+2175 => x"84010505",
+2176 => x"04ff1cf8",
+2177 => x"1b5b5c88",
+2178 => x"1a080981",
+2179 => x"057a0509",
+2180 => x"70810509",
+2181 => x"060a8106",
+2182 => x"ff0509c9",
+2183 => x"0bf70506",
+2184 => x"84010505",
+2185 => x"04fb9039",
+2186 => x"831953f9",
+2187 => x"fe398314",
+2188 => x"70822c81",
+2189 => x"712b818b",
+2190 => x"b0080770",
+2191 => x"818bac0b",
+2192 => x"84050c76",
+2193 => x"10101081",
+2194 => x"8bac0588",
+2195 => x"1108718c",
+2196 => x"1c0c7088",
+2197 => x"1c0c7a88",
+2198 => x"130c5853",
+2199 => x"5d5653fd",
+2200 => x"de39818a",
+2201 => x"f0081759",
+2202 => x"80080981",
+2203 => x"05760509",
+2204 => x"70810509",
+2205 => x"060a8106",
+2206 => x"ff050982",
+2207 => x"870bf705",
+2208 => x"06840105",
+2209 => x"0504818b",
+2210 => x"a0080981",
+2211 => x"05ff0509",
+2212 => x"70810509",
+2213 => x"060a8106",
+2214 => x"ff050985",
+2215 => x"db0bf705",
+2216 => x"06840105",
+2217 => x"05047376",
+2218 => x"3119818a",
+2219 => x"f00c7387",
+2220 => x"06705653",
+2221 => x"72097081",
+2222 => x"0509060a",
+2223 => x"8106ff05",
+2224 => x"09900bf7",
+2225 => x"05068401",
+2226 => x"05050488",
+2227 => x"73317015",
+2228 => x"55557614",
+2229 => x"9fff06a0",
+2230 => x"80713116",
+2231 => x"70547e53",
+2232 => x"515387b2",
+2233 => x"3f800856",
+2234 => x"80080981",
+2235 => x"05ff0509",
+2236 => x"70810509",
+2237 => x"060a8106",
+2238 => x"ff050982",
+2239 => x"970bf705",
+2240 => x"06840105",
+2241 => x"0504818a",
+2242 => x"f0081370",
+2243 => x"818af00c",
+2244 => x"7475818b",
+2245 => x"ac0b8805",
+2246 => x"0c777631",
+2247 => x"15810755",
+2248 => x"56597a09",
+2249 => x"8105818b",
+2250 => x"ac050970",
+2251 => x"81050906",
+2252 => x"0a8106ff",
+2253 => x"050984cd",
+2254 => x"0bf70506",
+2255 => x"84010505",
+2256 => x"04798f26",
+2257 => x"ff050983",
+2258 => x"e60bf705",
+2259 => x"06840105",
+2260 => x"0504810b",
+2261 => x"84150c84",
+2262 => x"1508fc06",
+2263 => x"70793179",
+2264 => x"72268f72",
+2265 => x"25075d55",
+2266 => x"5a7a0970",
+2267 => x"81050906",
+2268 => x"0a8106ff",
+2269 => x"0509fadc",
+2270 => x"0bf70506",
+2271 => x"84010505",
+2272 => x"04819839",
+2273 => x"80089fff",
+2274 => x"06557409",
+2275 => x"70810509",
+2276 => x"060a0981",
+2277 => x"06ff0509",
+2278 => x"fdec0bf7",
+2279 => x"05068401",
+2280 => x"05050478",
+2281 => x"818af00c",
+2282 => x"818bac0b",
+2283 => x"8805087a",
+2284 => x"18810784",
+2285 => x"120c5581",
+2286 => x"8b9c0879",
+2287 => x"27ff0509",
+2288 => x"8e0bf705",
+2289 => x"06840105",
+2290 => x"05047881",
+2291 => x"8b9c0c81",
+2292 => x"8b980879",
+2293 => x"27ff0509",
+2294 => x"f9cf0bf7",
+2295 => x"05068401",
+2296 => x"05050478",
+2297 => x"818b980c",
+2298 => x"841508fc",
+2299 => x"06707931",
+2300 => x"7972268f",
+2301 => x"7225075d",
+2302 => x"555a7a09",
+2303 => x"70810509",
+2304 => x"060a8106",
+2305 => x"ff0509f9",
+2306 => x"cb0bf705",
+2307 => x"06840105",
+2308 => x"05048839",
+2309 => x"80745753",
+2310 => x"fdec397c",
+2311 => x"5184f63f",
+2312 => x"800b800c",
+2313 => x"8e3d0d04",
+2314 => x"807324ff",
+2315 => x"0509ad0b",
+2316 => x"f7050684",
+2317 => x"01050504",
+2318 => x"72822c81",
+2319 => x"712b818b",
+2320 => x"b0080770",
+2321 => x"818bac0b",
+2322 => x"84050c5c",
+2323 => x"5a768c17",
+2324 => x"0c738817",
+2325 => x"0c758818",
+2326 => x"0cf5b939",
+2327 => x"83137082",
+2328 => x"2c81712b",
+2329 => x"818bb008",
+2330 => x"0770818b",
+2331 => x"ac0b8405",
+2332 => x"0c5d5b53",
+2333 => x"d8397a75",
+2334 => x"065c7b09",
+2335 => x"70810509",
+2336 => x"060a0981",
+2337 => x"06ff0509",
+2338 => x"f9bc0bf7",
+2339 => x"05068401",
+2340 => x"05050484",
+2341 => x"19751056",
+2342 => x"59dc39ff",
+2343 => x"17810559",
+2344 => x"f181398c",
+2345 => x"15088816",
+2346 => x"08718c12",
+2347 => x"0c88120c",
+2348 => x"59751584",
+2349 => x"11088107",
+2350 => x"84120c58",
+2351 => x"7c5183d5",
+2352 => x"3f881554",
+2353 => x"f8ad3977",
+2354 => x"16788107",
+2355 => x"84180c8c",
+2356 => x"17088818",
+2357 => x"08718c12",
+2358 => x"0c88120c",
+2359 => x"5c70818b",
+2360 => x"c00c7081",
+2361 => x"8bbc0c81",
+2362 => x"8bb40b8c",
+2363 => x"120c8c11",
+2364 => x"0888120c",
+2365 => x"77810784",
+2366 => x"120c7705",
+2367 => x"77710c55",
+2368 => x"7c518391",
+2369 => x"3f881654",
+2370 => x"ee803972",
+2371 => x"16841108",
+2372 => x"81078412",
+2373 => x"0c588c16",
+2374 => x"08881708",
+2375 => x"718c120c",
+2376 => x"88120c57",
+2377 => x"7c5182ed",
+2378 => x"3f881654",
+2379 => x"eddc3972",
+2380 => x"84150cf4",
+2381 => x"1af80670",
+2382 => x"841d0881",
+2383 => x"0607841d",
+2384 => x"0c701c55",
+2385 => x"56850b84",
+2386 => x"150c850b",
+2387 => x"88150c8f",
+2388 => x"7627ff05",
+2389 => x"09fce00b",
+2390 => x"f7050684",
+2391 => x"01050504",
+2392 => x"881b527c",
+2393 => x"5187b03f",
+2394 => x"818bac0b",
+2395 => x"88050881",
+2396 => x"8af0085a",
+2397 => x"55fcc039",
+2398 => x"78818af0",
+2399 => x"0c73818b",
+2400 => x"a00cfaaa",
+2401 => x"39728415",
+2402 => x"0cfcac39",
+2403 => x"fb3d0d77",
+2404 => x"707a7c58",
+2405 => x"5553568f",
+2406 => x"7527ff05",
+2407 => x"0981a40b",
+2408 => x"f7050684",
+2409 => x"01050504",
+2410 => x"72760783",
+2411 => x"06517009",
+2412 => x"70810509",
+2413 => x"060a0981",
+2414 => x"06ff0509",
+2415 => x"81850bf7",
+2416 => x"05068401",
+2417 => x"05050475",
+2418 => x"73525470",
+2419 => x"70840552",
+2420 => x"08747084",
+2421 => x"05560c73",
+2422 => x"71708405",
+2423 => x"53087170",
+2424 => x"8405530c",
+2425 => x"71708405",
+2426 => x"53087170",
+2427 => x"8405530c",
+2428 => x"71708405",
+2429 => x"53087170",
+2430 => x"8405530c",
+2431 => x"f0165654",
+2432 => x"748f26ff",
+2433 => x"0509c40b",
+2434 => x"f7050684",
+2435 => x"01050504",
+2436 => x"837527ff",
+2437 => x"0509a80b",
+2438 => x"f7050684",
+2439 => x"01050504",
+2440 => x"70708405",
+2441 => x"52087470",
+2442 => x"8405560c",
+2443 => x"fc155574",
+2444 => x"8326ff05",
+2445 => x"09ea0bf7",
+2446 => x"05068401",
+2447 => x"05050473",
+2448 => x"715452ff",
+2449 => x"15517009",
+2450 => x"8105ff05",
+2451 => x"09708105",
+2452 => x"09060a81",
+2453 => x"06ff0509",
+2454 => x"b40bf705",
+2455 => x"06840105",
+2456 => x"05047270",
+2457 => x"81055472",
+2458 => x"70810554",
+2459 => x"3bff1151",
+2460 => x"70098105",
+2461 => x"ff050970",
+2462 => x"81050906",
+2463 => x"0a098106",
+2464 => x"ff0509de",
+2465 => x"0bf70506",
+2466 => x"84010505",
+2467 => x"0475800c",
+2468 => x"873d0d04",
+2469 => x"04047070",
+2470 => x"7070800b",
+2471 => x"81eaf40c",
+2472 => x"76518cc1",
+2473 => x"3f800853",
+2474 => x"80080981",
+2475 => x"05ff0509",
+2476 => x"70810509",
+2477 => x"060a8106",
+2478 => x"ff050991",
+2479 => x"0bf70506",
+2480 => x"84010505",
+2481 => x"0472800c",
+2482 => x"50505050",
+2483 => x"0481eaf4",
+2484 => x"08547309",
+2485 => x"70810509",
+2486 => x"060a8106",
+2487 => x"ff0509e5",
+2488 => x"0bf70506",
+2489 => x"84010505",
+2490 => x"04757471",
+2491 => x"0c527280",
+2492 => x"0c505050",
+2493 => x"5004fb3d",
+2494 => x"0d777970",
+2495 => x"72078306",
+2496 => x"53545270",
+2497 => x"09708105",
+2498 => x"09060a09",
+2499 => x"8106ff05",
+2500 => x"09b20bf7",
+2501 => x"05068401",
+2502 => x"05050471",
+2503 => x"73730854",
+2504 => x"56547109",
+2505 => x"81057308",
+2506 => x"05097081",
+2507 => x"0509060a",
+2508 => x"8106ff05",
+2509 => x"0981890b",
+2510 => x"f7050684",
+2511 => x"01050504",
+2512 => x"73755452",
+2513 => x"71337081",
+2514 => x"ff065254",
+2515 => x"70097081",
+2516 => x"0509060a",
+2517 => x"8106ff05",
+2518 => x"0980cf0b",
+2519 => x"f7050684",
+2520 => x"01050504",
+2521 => x"72335570",
+2522 => x"09810575",
+2523 => x"05097081",
+2524 => x"0509060a",
+2525 => x"098106ff",
+2526 => x"0509b20b",
+2527 => x"f7050684",
+2528 => x"01050504",
+2529 => x"81128114",
+2530 => x"71337081",
+2531 => x"ff065456",
+2532 => x"54527009",
+2533 => x"70810509",
+2534 => x"060a0981",
+2535 => x"06ff0509",
+2536 => x"c30bf705",
+2537 => x"06840105",
+2538 => x"05047233",
+2539 => x"557381ff",
+2540 => x"067581ff",
+2541 => x"06717131",
+2542 => x"800c5552",
+2543 => x"873d0d04",
+2544 => x"7109f7fb",
+2545 => x"fdff1306",
+2546 => x"f8848281",
+2547 => x"80065271",
+2548 => x"09708105",
+2549 => x"09060a09",
+2550 => x"8106ff05",
+2551 => x"09b70bf7",
+2552 => x"05068401",
+2553 => x"05050484",
+2554 => x"14841671",
+2555 => x"08545654",
+2556 => x"71098105",
+2557 => x"75080509",
+2558 => x"70810509",
+2559 => x"060a8106",
+2560 => x"ff0509ff",
+2561 => x"bb0bf705",
+2562 => x"06840105",
+2563 => x"05047375",
+2564 => x"5452feb0",
+2565 => x"39800b80",
+2566 => x"0c873d0d",
+2567 => x"04fb3d0d",
+2568 => x"77705256",
+2569 => x"fcee3f81",
+2570 => x"8bac0b88",
+2571 => x"05088411",
+2572 => x"08fc0670",
+2573 => x"7b319fef",
+2574 => x"05e08006",
+2575 => x"e0800552",
+2576 => x"5555a080",
+2577 => x"7524ff05",
+2578 => x"09b30bf7",
+2579 => x"05068401",
+2580 => x"05050480",
+2581 => x"527551fc",
+2582 => x"bd3f818b",
+2583 => x"b4081453",
+2584 => x"72098105",
+2585 => x"80080509",
+2586 => x"70810509",
+2587 => x"060a8106",
+2588 => x"ff050997",
+2589 => x"0bf70506",
+2590 => x"84010505",
+2591 => x"047551fc",
+2592 => x"943f8053",
+2593 => x"72800c87",
+2594 => x"3d0d0474",
+2595 => x"30527551",
+2596 => x"fc843f80",
+2597 => x"08098105",
+2598 => x"ff050970",
+2599 => x"81050906",
+2600 => x"0a8106ff",
+2601 => x"0509b00b",
+2602 => x"f7050684",
+2603 => x"01050504",
+2604 => x"818bac0b",
+2605 => x"88050874",
+2606 => x"76318107",
+2607 => x"84120c53",
+2608 => x"818af008",
+2609 => x"7531818a",
+2610 => x"f00c7551",
+2611 => x"fbc73f81",
+2612 => x"0b800c87",
+2613 => x"3d0d0480",
+2614 => x"527551fb",
+2615 => x"b93f818b",
+2616 => x"ac0b8805",
+2617 => x"08800871",
+2618 => x"3154548f",
+2619 => x"7325ff05",
+2620 => x"09ff8a0b",
+2621 => x"f7050684",
+2622 => x"01050504",
+2623 => x"8008818b",
+2624 => x"a0083181",
+2625 => x"8af00c72",
+2626 => x"81078415",
+2627 => x"0c7551fb",
+2628 => x"843f8053",
+2629 => x"feee39f7",
+2630 => x"3d0d7b7d",
+2631 => x"545a7209",
+2632 => x"70810509",
+2633 => x"060a8106",
+2634 => x"ff050984",
+2635 => x"9e0bf705",
+2636 => x"06840105",
+2637 => x"05047951",
+2638 => x"fada3ff8",
+2639 => x"13841108",
+2640 => x"70fe0670",
+2641 => x"13841108",
+2642 => x"fc065c57",
+2643 => x"58545781",
+2644 => x"8bb40809",
+2645 => x"81057405",
+2646 => x"09708105",
+2647 => x"09060a81",
+2648 => x"06ff0509",
+2649 => x"85840bf7",
+2650 => x"05068401",
+2651 => x"05050477",
+2652 => x"84150c80",
+2653 => x"73810656",
+2654 => x"59740981",
+2655 => x"05790509",
+2656 => x"70810509",
+2657 => x"060a8106",
+2658 => x"ff050983",
+2659 => x"c20bf705",
+2660 => x"06840105",
+2661 => x"05047714",
+2662 => x"84110881",
+2663 => x"06565374",
+2664 => x"09708105",
+2665 => x"09060a09",
+2666 => x"8106ff05",
+2667 => x"0980d40b",
+2668 => x"f7050684",
+2669 => x"01050504",
+2670 => x"77165678",
+2671 => x"09708105",
+2672 => x"09060a09",
+2673 => x"8106ff05",
+2674 => x"0983bf0b",
+2675 => x"f7050684",
+2676 => x"01050504",
+2677 => x"88140855",
+2678 => x"74098105",
+2679 => x"818bb405",
+2680 => x"09708105",
+2681 => x"09060a81",
+2682 => x"06ff0509",
+2683 => x"84e60bf7",
+2684 => x"05068401",
+2685 => x"0505048c",
+2686 => x"1408708c",
+2687 => x"170c7588",
+2688 => x"120c5875",
+2689 => x"81078418",
+2690 => x"0c751776",
+2691 => x"710c5478",
+2692 => x"09708105",
+2693 => x"09060a09",
+2694 => x"8106ff05",
+2695 => x"0982a70b",
+2696 => x"f7050684",
+2697 => x"01050504",
+2698 => x"83ff7627",
+2699 => x"ff050982",
+2700 => x"ea0bf705",
+2701 => x"06840105",
+2702 => x"05047589",
+2703 => x"2a76832a",
+2704 => x"54547309",
+2705 => x"70810509",
+2706 => x"060a8106",
+2707 => x"ff050981",
+2708 => x"800bf705",
+2709 => x"06840105",
+2710 => x"05047586",
+2711 => x"2ab80553",
+2712 => x"847427ff",
+2713 => x"050980e9",
+2714 => x"0bf70506",
+2715 => x"84010505",
+2716 => x"0480db14",
+2717 => x"53947427",
+2718 => x"ff050980",
+2719 => x"d40bf705",
+2720 => x"06840105",
+2721 => x"0504758c",
+2722 => x"2a80ee05",
+2723 => x"5380d474",
+2724 => x"27ff0509",
+2725 => x"bc0bf705",
+2726 => x"06840105",
+2727 => x"0504758f",
+2728 => x"2a80f705",
+2729 => x"5382d474",
+2730 => x"27ff0509",
+2731 => x"a40bf705",
+2732 => x"06840105",
+2733 => x"05047592",
+2734 => x"2a80fc05",
+2735 => x"538ad474",
+2736 => x"27ff0509",
+2737 => x"8c0bf705",
+2738 => x"06840105",
+2739 => x"050480fe",
+2740 => x"53721010",
+2741 => x"10818bac",
+2742 => x"05881108",
+2743 => x"55557309",
+2744 => x"81057505",
+2745 => x"09708105",
+2746 => x"09060a81",
+2747 => x"06ff0509",
+2748 => x"83a90bf7",
+2749 => x"05068401",
+2750 => x"05050484",
+2751 => x"1408fc06",
+2752 => x"59757927",
+2753 => x"ff0509aa",
+2754 => x"0bf70506",
+2755 => x"84010505",
+2756 => x"04881408",
+2757 => x"54730981",
+2758 => x"05750509",
+2759 => x"70810509",
+2760 => x"060a0981",
+2761 => x"06ff0509",
+2762 => x"d20bf705",
+2763 => x"06840105",
+2764 => x"05048c14",
+2765 => x"08708c19",
+2766 => x"0c748819",
+2767 => x"0c778812",
+2768 => x"0c55768c",
+2769 => x"150c7951",
+2770 => x"f6cb3f8b",
+2771 => x"3d0d0476",
+2772 => x"08777131",
+2773 => x"58760588",
+2774 => x"18085656",
+2775 => x"74098105",
+2776 => x"818bb405",
+2777 => x"09708105",
+2778 => x"09060a81",
+2779 => x"06ff0509",
+2780 => x"80f30bf7",
+2781 => x"05068401",
+2782 => x"0505048c",
+2783 => x"1708708c",
+2784 => x"170c7588",
+2785 => x"120c53fc",
+2786 => x"8d398814",
+2787 => x"088c1508",
+2788 => x"708c130c",
+2789 => x"5988190c",
+2790 => x"fce93975",
+2791 => x"832a7054",
+2792 => x"54807424",
+2793 => x"ff050981",
+2794 => x"c00bf705",
+2795 => x"06840105",
+2796 => x"05047282",
+2797 => x"2c81712b",
+2798 => x"818bb008",
+2799 => x"07818bac",
+2800 => x"0b84050c",
+2801 => x"74101010",
+2802 => x"818bac05",
+2803 => x"88110871",
+2804 => x"8c1b0c70",
+2805 => x"881b0c79",
+2806 => x"88130c56",
+2807 => x"5a55768c",
+2808 => x"150cfee2",
+2809 => x"398159fb",
+2810 => x"ad397716",
+2811 => x"73810654",
+2812 => x"55720970",
+2813 => x"81050906",
+2814 => x"0a098106",
+2815 => x"ff0509a0",
+2816 => x"0bf70506",
+2817 => x"84010505",
+2818 => x"04760877",
+2819 => x"71315875",
+2820 => x"058c1808",
+2821 => x"88190871",
+2822 => x"8c120c88",
+2823 => x"120c5555",
+2824 => x"74810784",
+2825 => x"180c7681",
+2826 => x"8bac0b88",
+2827 => x"050c818b",
+2828 => x"a8087526",
+2829 => x"ff0509fe",
+2830 => x"8d0bf705",
+2831 => x"06840105",
+2832 => x"0504818b",
+2833 => x"a4085279",
+2834 => x"51f7d23f",
+2835 => x"7951f4c5",
+2836 => x"3ffdf839",
+2837 => x"81778c17",
+2838 => x"0c778817",
+2839 => x"0c758c19",
+2840 => x"0c758819",
+2841 => x"0c59fb9b",
+2842 => x"39831470",
+2843 => x"822c8171",
+2844 => x"2b818bb0",
+2845 => x"0807818b",
+2846 => x"ac0b8405",
+2847 => x"0c751010",
+2848 => x"10818bac",
+2849 => x"05881108",
+2850 => x"718c1c0c",
+2851 => x"70881c0c",
+2852 => x"7a88130c",
+2853 => x"575b5653",
+2854 => x"fec43980",
+2855 => x"7324ff05",
+2856 => x"09ab0bf7",
+2857 => x"05068401",
+2858 => x"05050472",
+2859 => x"822c8171",
+2860 => x"2b818bb0",
+2861 => x"0807818b",
+2862 => x"ac0b8405",
+2863 => x"0c58748c",
+2864 => x"180c7388",
+2865 => x"180c7688",
+2866 => x"160cfcf6",
+2867 => x"39831370",
+2868 => x"822c8171",
+2869 => x"2b818bb0",
+2870 => x"0807818b",
+2871 => x"ac0b8405",
+2872 => x"0c5953da",
+2873 => x"39707070",
+2874 => x"81eaf808",
+2875 => x"51700970",
+2876 => x"81050906",
+2877 => x"0a098106",
+2878 => x"ff050992",
+2879 => x"0bf70506",
+2880 => x"84010505",
+2881 => x"0481eb80",
+2882 => x"7081eaf8",
+2883 => x"0c517411",
+2884 => x"52ff5371",
+2885 => x"87fb8080",
+2886 => x"26ff0509",
+2887 => x"900bf705",
+2888 => x"06840105",
+2889 => x"05047181",
+2890 => x"eaf80c70",
+2891 => x"5372800c",
+2892 => x"50505004",
+2893 => x"70707070",
+2894 => x"800b818a",
+2895 => x"dc085454",
+2896 => x"72098105",
+2897 => x"81050970",
+2898 => x"81050906",
+2899 => x"0a8106ff",
+2900 => x"0509a50b",
+2901 => x"f7050684",
+2902 => x"01050504",
+2903 => x"7381eafc",
+2904 => x"0cffb7b3",
+2905 => x"3fffad98",
+2906 => x"3f819ab4",
+2907 => x"528151c5",
+2908 => x"803f8008",
+2909 => x"518cbe3f",
+2910 => x"7281eafc",
+2911 => x"0cffb797",
+2912 => x"3fffacfc",
+2913 => x"3f819ab4",
+2914 => x"528151c4",
+2915 => x"e43f8008",
+2916 => x"518ca23f",
+2917 => x"00ff3900",
+2918 => x"ff39f53d",
+2919 => x"0d7e6081",
+2920 => x"eafc0870",
+2921 => x"5b585b5b",
+2922 => x"75097081",
+2923 => x"0509060a",
+2924 => x"098106ff",
+2925 => x"050980fb",
+2926 => x"0bf70506",
+2927 => x"84010505",
+2928 => x"04777a25",
+2929 => x"ff050980",
+2930 => x"cc0bf705",
+2931 => x"06840105",
+2932 => x"0504771b",
+2933 => x"70337081",
+2934 => x"ff065858",
+2935 => x"59750981",
+2936 => x"058a0509",
+2937 => x"70810509",
+2938 => x"060a8106",
+2939 => x"ff0509ac",
+2940 => x"0bf70506",
+2941 => x"84010505",
+2942 => x"047681ff",
+2943 => x"0651ffb5",
+2944 => x"e23f8118",
+2945 => x"58797824",
+2946 => x"ff0509c6",
+2947 => x"0bf70506",
+2948 => x"84010505",
+2949 => x"0479800c",
+2950 => x"8d3d0d04",
+2951 => x"8d51ffb5",
+2952 => x"c23f7833",
+2953 => x"7081ff06",
+2954 => x"5257ffb5",
+2955 => x"b63f8118",
+2956 => x"58d33979",
+2957 => x"557a547d",
+2958 => x"5385528d",
+2959 => x"3dfc0551",
+2960 => x"ffb4eb3f",
+2961 => x"8008568a",
+2962 => x"e53f7b80",
+2963 => x"080c7580",
+2964 => x"0c8d3d0d",
+2965 => x"04f63d0d",
+2966 => x"7d7f81ea",
+2967 => x"fc08705a",
+2968 => x"585a5a75",
+2969 => x"09708105",
+2970 => x"09060a09",
+2971 => x"8106ff05",
+2972 => x"0981930b",
+2973 => x"f7050684",
+2974 => x"01050504",
+2975 => x"767925ff",
+2976 => x"050980f4",
+2977 => x"0bf70506",
+2978 => x"84010505",
+2979 => x"04761a58",
+2980 => x"ffb49d3f",
+2981 => x"80087834",
+2982 => x"800b8008",
+2983 => x"81ff0657",
+2984 => x"58750981",
+2985 => x"058a0509",
+2986 => x"70810509",
+2987 => x"060a8106",
+2988 => x"ff050980",
+2989 => x"cc0bf705",
+2990 => x"06840105",
+2991 => x"0504758d",
+2992 => x"32703070",
+2993 => x"80257a07",
+2994 => x"51515675",
+2995 => x"09708105",
+2996 => x"09060a09",
+2997 => x"8106ff05",
+2998 => x"0980cd0b",
+2999 => x"f7050684",
+3000 => x"01050504",
+3001 => x"81175778",
+3002 => x"7724ff05",
+3003 => x"09ff9e0b",
+3004 => x"f7050684",
+3005 => x"01050504",
+3006 => x"76567580",
+3007 => x"0c8c3d0d",
+3008 => x"048158ff",
+3009 => x"b9397855",
+3010 => x"79547c53",
+3011 => x"84528c3d",
+3012 => x"fc0551ff",
+3013 => x"b3983f80",
+3014 => x"08568992",
+3015 => x"3f7a8008",
+3016 => x"0c75800c",
+3017 => x"8c3d0d04",
+3018 => x"811756ce",
+3019 => x"39f93d0d",
+3020 => x"795781ea",
+3021 => x"fc080970",
+3022 => x"81050906",
+3023 => x"0a8106ff",
+3024 => x"0509b50b",
+3025 => x"f7050684",
+3026 => x"01050504",
+3027 => x"76518d88",
+3028 => x"3f7b567a",
+3029 => x"55800881",
+3030 => x"05547653",
+3031 => x"8252893d",
+3032 => x"fc0551ff",
+3033 => x"b2c83f80",
+3034 => x"085788c2",
+3035 => x"3f778008",
+3036 => x"0c76800c",
+3037 => x"893d0d04",
+3038 => x"88b43f85",
+3039 => x"0b80080c",
+3040 => x"ff0b800c",
+3041 => x"893d0d04",
+3042 => x"fb3d0d81",
+3043 => x"eafc0870",
+3044 => x"56547309",
+3045 => x"70810509",
+3046 => x"060a0981",
+3047 => x"06ff0509",
+3048 => x"900bf705",
+3049 => x"06840105",
+3050 => x"05047480",
+3051 => x"0c873d0d",
+3052 => x"04775383",
+3053 => x"52873dfc",
+3054 => x"0551ffb1",
+3055 => x"f13f8008",
+3056 => x"5487eb3f",
+3057 => x"7580080c",
+3058 => x"73800c87",
+3059 => x"3d0d04ff",
+3060 => x"0b800c04",
+3061 => x"fb3d0d77",
+3062 => x"5581eafc",
+3063 => x"08097081",
+3064 => x"0509060a",
+3065 => x"8106ff05",
+3066 => x"09b10bf7",
+3067 => x"05068401",
+3068 => x"05050474",
+3069 => x"518be13f",
+3070 => x"80088105",
+3071 => x"54745387",
+3072 => x"52873dfc",
+3073 => x"0551ffb1",
+3074 => x"a53f8008",
+3075 => x"55879f3f",
+3076 => x"7580080c",
+3077 => x"74800c87",
+3078 => x"3d0d0487",
+3079 => x"913f850b",
+3080 => x"80080cff",
+3081 => x"0b800c87",
+3082 => x"3d0d04fa",
+3083 => x"3d0d81ea",
+3084 => x"fc080970",
+3085 => x"81050906",
+3086 => x"0a8106ff",
+3087 => x"0509ab0b",
+3088 => x"f7050684",
+3089 => x"01050504",
+3090 => x"7a557954",
+3091 => x"78538652",
+3092 => x"883dfc05",
+3093 => x"51ffb0d6",
+3094 => x"3f800856",
+3095 => x"86d03f76",
+3096 => x"80080c75",
+3097 => x"800c883d",
+3098 => x"0d0486c2",
+3099 => x"3f9d0b80",
+3100 => x"080cff0b",
+3101 => x"800c883d",
+3102 => x"0d04f73d",
+3103 => x"0d7b7d5b",
+3104 => x"59bc5380",
+3105 => x"52795188",
+3106 => x"cd3f8070",
+3107 => x"56579856",
+3108 => x"74197033",
+3109 => x"70782b79",
+3110 => x"078118f8",
+3111 => x"1a5a5859",
+3112 => x"55588475",
+3113 => x"24ff0509",
+3114 => x"e70bf705",
+3115 => x"06840105",
+3116 => x"0504767a",
+3117 => x"23841958",
+3118 => x"80705657",
+3119 => x"98567418",
+3120 => x"70337078",
+3121 => x"2b790781",
+3122 => x"18f81a5a",
+3123 => x"58595154",
+3124 => x"847524ff",
+3125 => x"0509e70b",
+3126 => x"f7050684",
+3127 => x"01050504",
+3128 => x"76821b23",
+3129 => x"88195880",
+3130 => x"70565798",
+3131 => x"56741870",
+3132 => x"3370782b",
+3133 => x"79078118",
+3134 => x"f81a5a58",
+3135 => x"59515484",
+3136 => x"7524ff05",
+3137 => x"09e70bf7",
+3138 => x"05068401",
+3139 => x"05050476",
+3140 => x"841b0c8c",
+3141 => x"19588070",
+3142 => x"56579856",
+3143 => x"74187033",
+3144 => x"70782b79",
+3145 => x"078118f8",
+3146 => x"1a5a5859",
+3147 => x"51548475",
+3148 => x"24ff0509",
+3149 => x"e70bf705",
+3150 => x"06840105",
+3151 => x"05047688",
+3152 => x"1b239019",
+3153 => x"58807056",
+3154 => x"57985674",
+3155 => x"18703370",
+3156 => x"782b7907",
+3157 => x"8118f81a",
+3158 => x"5a585951",
+3159 => x"54847524",
+3160 => x"ff0509e7",
+3161 => x"0bf70506",
+3162 => x"84010505",
+3163 => x"04768a1b",
+3164 => x"23941958",
+3165 => x"80705657",
+3166 => x"98567418",
+3167 => x"70337078",
+3168 => x"2b790781",
+3169 => x"18f81a5a",
+3170 => x"58595154",
+3171 => x"847524ff",
+3172 => x"0509e70b",
+3173 => x"f7050684",
+3174 => x"01050504",
+3175 => x"768c1b23",
+3176 => x"98195880",
+3177 => x"70565798",
+3178 => x"56741870",
+3179 => x"3370782b",
+3180 => x"79078118",
+3181 => x"f81a5a58",
+3182 => x"59515484",
+3183 => x"7524ff05",
+3184 => x"09e70bf7",
+3185 => x"05068401",
+3186 => x"05050476",
+3187 => x"8e1b239c",
+3188 => x"19588070",
+3189 => x"5657b856",
+3190 => x"74187033",
+3191 => x"70782b79",
+3192 => x"078118f8",
+3193 => x"1a5a5859",
+3194 => x"5a548875",
+3195 => x"24ff0509",
+3196 => x"e70bf705",
+3197 => x"06840105",
+3198 => x"05047690",
+3199 => x"1b0c8b3d",
+3200 => x"0d04e93d",
+3201 => x"0d6a81ea",
+3202 => x"fc085757",
+3203 => x"75097081",
+3204 => x"0509060a",
+3205 => x"098106ff",
+3206 => x"05099b0b",
+3207 => x"f7050684",
+3208 => x"01050504",
+3209 => x"80c0800b",
+3210 => x"84180c75",
+3211 => x"ac180c75",
+3212 => x"800c993d",
+3213 => x"0d04893d",
+3214 => x"70556a54",
+3215 => x"558a5299",
+3216 => x"3dffbc05",
+3217 => x"51fface6",
+3218 => x"3f800877",
+3219 => x"53755256",
+3220 => x"fca83f82",
+3221 => x"d93f7780",
+3222 => x"080c7580",
+3223 => x"0c993d0d",
+3224 => x"04e93d0d",
+3225 => x"695781ea",
+3226 => x"fc080970",
+3227 => x"81050906",
+3228 => x"0a8106ff",
+3229 => x"0509be0b",
+3230 => x"f7050684",
+3231 => x"01050504",
+3232 => x"765186d4",
+3233 => x"3f893d70",
+3234 => x"56800881",
+3235 => x"05557754",
+3236 => x"568f5299",
+3237 => x"3dffbc05",
+3238 => x"51ffac92",
+3239 => x"3f80086b",
+3240 => x"53765257",
+3241 => x"fbd43f82",
+3242 => x"853f7780",
+3243 => x"080c7680",
+3244 => x"0c993d0d",
+3245 => x"0481f73f",
+3246 => x"850b8008",
+3247 => x"0cff0b80",
+3248 => x"0c993d0d",
+3249 => x"04fc3d0d",
+3250 => x"815481ea",
+3251 => x"fc080970",
+3252 => x"81050906",
+3253 => x"0a098106",
+3254 => x"ff050990",
+3255 => x"0bf70506",
+3256 => x"84010505",
+3257 => x"0473800c",
+3258 => x"863d0d04",
+3259 => x"765397b9",
+3260 => x"52863dfc",
+3261 => x"0551ffab",
+3262 => x"b53f8008",
+3263 => x"5481af3f",
+3264 => x"7480080c",
+3265 => x"73800c86",
+3266 => x"3d0d04f4",
+3267 => x"3d0d7e81",
+3268 => x"9ae00870",
+3269 => x"0881ff06",
+3270 => x"913df805",
+3271 => x"54515959",
+3272 => x"ffacf63f",
+3273 => x"77578054",
+3274 => x"76557b7d",
+3275 => x"58527653",
+3276 => x"8e3df005",
+3277 => x"5186e23f",
+3278 => x"797b5879",
+3279 => x"0c76841a",
+3280 => x"0c78800c",
+3281 => x"8e3d0d04",
+3282 => x"f43d0d7e",
+3283 => x"819ae008",
+3284 => x"70087081",
+3285 => x"ff06923d",
+3286 => x"f8055551",
+3287 => x"5a5759ff",
+3288 => x"acb73f77",
+3289 => x"57800b8b",
+3290 => x"3d595476",
+3291 => x"557b7d58",
+3292 => x"52765377",
+3293 => x"5186a23f",
+3294 => x"8056bd84",
+3295 => x"c0765555",
+3296 => x"797b5852",
+3297 => x"76537751",
+3298 => x"868f3f7a",
+3299 => x"57780970",
+3300 => x"81050906",
+3301 => x"0a8106ff",
+3302 => x"05098c0b",
+3303 => x"f7050684",
+3304 => x"01050504",
+3305 => x"76790c76",
+3306 => x"800c8e3d",
+3307 => x"0d048193",
+3308 => x"b408800c",
+3309 => x"04f73d0d",
+3310 => x"7b8193b4",
+3311 => x"0882c811",
+3312 => x"085a545a",
+3313 => x"77097081",
+3314 => x"0509060a",
+3315 => x"8106ff05",
+3316 => x"0981ac0b",
+3317 => x"f7050684",
+3318 => x"01050504",
+3319 => x"81881884",
+3320 => x"1908ff05",
+3321 => x"81712b59",
+3322 => x"55598074",
+3323 => x"24ff0509",
+3324 => x"81d20bf7",
+3325 => x"05068401",
+3326 => x"05050480",
+3327 => x"7424ff05",
+3328 => x"0980db0b",
+3329 => x"f7050684",
+3330 => x"01050504",
+3331 => x"73822b78",
+3332 => x"11880556",
+3333 => x"56818019",
+3334 => x"08770653",
+3335 => x"72097081",
+3336 => x"0509060a",
+3337 => x"8106ff05",
+3338 => x"0980f30b",
+3339 => x"f7050684",
+3340 => x"01050504",
+3341 => x"78167008",
+3342 => x"53537951",
+3343 => x"74085372",
+3344 => x"2dff14fc",
+3345 => x"17fc1779",
+3346 => x"812c5a57",
+3347 => x"57547380",
+3348 => x"25ff0509",
+3349 => x"c00bf705",
+3350 => x"06840105",
+3351 => x"05047708",
+3352 => x"58770970",
+3353 => x"81050906",
+3354 => x"0a098106",
+3355 => x"ff0509fe",
+3356 => x"eb0bf705",
+3357 => x"06840105",
+3358 => x"05048193",
+3359 => x"b40853bc",
+3360 => x"13080970",
+3361 => x"81050906",
+3362 => x"0a098106",
+3363 => x"ff0509b9",
+3364 => x"0bf70506",
+3365 => x"84010505",
+3366 => x"047951f1",
+3367 => x"f73f7408",
+3368 => x"53722dff",
+3369 => x"14fc17fc",
+3370 => x"1779812c",
+3371 => x"5a575754",
+3372 => x"738025ff",
+3373 => x"0509fedd",
+3374 => x"0bf70506",
+3375 => x"84010505",
+3376 => x"04ff9b39",
+3377 => x"8057feb3",
+3378 => x"397251bc",
+3379 => x"13085473",
+3380 => x"2d7951f1",
+3381 => x"bf3ffb3d",
+3382 => x"0d777a71",
+3383 => x"028c05a3",
+3384 => x"05335854",
+3385 => x"54568373",
+3386 => x"27ff0509",
+3387 => x"819d0bf7",
+3388 => x"05068401",
+3389 => x"05050475",
+3390 => x"83065170",
+3391 => x"09708105",
+3392 => x"09060a09",
+3393 => x"8106ff05",
+3394 => x"0981800b",
+3395 => x"f7050684",
+3396 => x"01050504",
+3397 => x"74882b75",
+3398 => x"07707190",
+3399 => x"2b075551",
+3400 => x"8f7327ff",
+3401 => x"0509ba0b",
+3402 => x"f7050684",
+3403 => x"01050504",
+3404 => x"73727084",
+3405 => x"05540c71",
+3406 => x"74717084",
+3407 => x"05530c74",
+3408 => x"71708405",
+3409 => x"530c7471",
+3410 => x"70840553",
+3411 => x"0cf01454",
+3412 => x"52728f26",
+3413 => x"ff0509d8",
+3414 => x"0bf70506",
+3415 => x"84010505",
+3416 => x"04837327",
+3417 => x"ff0509a3",
+3418 => x"0bf70506",
+3419 => x"84010505",
+3420 => x"04737270",
+3421 => x"8405540c",
+3422 => x"fc135372",
+3423 => x"8326ff05",
+3424 => x"09ef0bf7",
+3425 => x"05068401",
+3426 => x"050504ff",
+3427 => x"13517009",
+3428 => x"8105ff05",
+3429 => x"09708105",
+3430 => x"09060a81",
+3431 => x"06ff0509",
+3432 => x"b00bf705",
+3433 => x"06840105",
+3434 => x"05047472",
+3435 => x"70810554",
+3436 => x"34ff1151",
+3437 => x"70098105",
+3438 => x"ff050970",
+3439 => x"81050906",
+3440 => x"0a098106",
+3441 => x"ff0509e2",
+3442 => x"0bf70506",
+3443 => x"84010505",
+3444 => x"0475800c",
+3445 => x"873d0d04",
+3446 => x"70707070",
+3447 => x"75707183",
+3448 => x"06535552",
+3449 => x"70097081",
+3450 => x"0509060a",
+3451 => x"098106ff",
+3452 => x"050980e3",
+3453 => x"0bf70506",
+3454 => x"84010505",
+3455 => x"04717008",
+3456 => x"7009f7fb",
+3457 => x"fdff1206",
+3458 => x"f8848281",
+3459 => x"80065452",
+3460 => x"53710970",
+3461 => x"81050906",
+3462 => x"0a098106",
+3463 => x"ff0509b5",
+3464 => x"0bf70506",
+3465 => x"84010505",
+3466 => x"04841370",
+3467 => x"087009f7",
+3468 => x"fbfdff12",
+3469 => x"06f88482",
+3470 => x"81800654",
+3471 => x"52537109",
+3472 => x"70810509",
+3473 => x"060a8106",
+3474 => x"ff0509dd",
+3475 => x"0bf70506",
+3476 => x"84010505",
+3477 => x"04725271",
+3478 => x"33537209",
+3479 => x"70810509",
+3480 => x"060a8106",
+3481 => x"ff0509a7",
+3482 => x"0bf70506",
+3483 => x"84010505",
+3484 => x"04811270",
+3485 => x"33545272",
+3486 => x"09708105",
+3487 => x"09060a09",
+3488 => x"8106ff05",
+3489 => x"09eb0bf7",
+3490 => x"05068401",
+3491 => x"05050471",
+3492 => x"7431800c",
+3493 => x"50505050",
+3494 => x"04e43d0d",
+3495 => x"6ea13d08",
+3496 => x"a33d0859",
+3497 => x"575f8076",
+3498 => x"4d774ea3",
+3499 => x"3d08a53d",
+3500 => x"08574b75",
+3501 => x"4c5e7d6c",
+3502 => x"24ff0509",
+3503 => x"8b860bf7",
+3504 => x"05068401",
+3505 => x"05050480",
+3506 => x"6a24ff05",
+3507 => x"098b9b0b",
+3508 => x"f7050684",
+3509 => x"01050504",
+3510 => x"696b5856",
+3511 => x"6b6d5d46",
+3512 => x"7b477544",
+3513 => x"76456464",
+3514 => x"68685c5c",
+3515 => x"56567409",
+3516 => x"70810509",
+3517 => x"060a0981",
+3518 => x"06ff0509",
+3519 => x"82ee0bf7",
+3520 => x"05068401",
+3521 => x"05050478",
+3522 => x"7627ff05",
+3523 => x"09848f0b",
+3524 => x"f7050684",
+3525 => x"01050504",
+3526 => x"7581ff26",
+3527 => x"832b5583",
+3528 => x"ffff7627",
+3529 => x"ff05099f",
+3530 => x"0bf70506",
+3531 => x"84010505",
+3532 => x"049055fe",
+3533 => x"800a7627",
+3534 => x"ff05098b",
+3535 => x"0bf70506",
+3536 => x"84010505",
+3537 => x"04985575",
+3538 => x"752a8188",
+3539 => x"88057033",
+3540 => x"a0773171",
+3541 => x"31575557",
+3542 => x"74097081",
+3543 => x"0509060a",
+3544 => x"8106ff05",
+3545 => x"099d0bf7",
+3546 => x"05068401",
+3547 => x"05050475",
+3548 => x"752ba076",
+3549 => x"317a772b",
+3550 => x"7c722a07",
+3551 => x"7c782b5d",
+3552 => x"5b595675",
+3553 => x"902a7683",
+3554 => x"ffff0671",
+3555 => x"547a5359",
+3556 => x"578c803f",
+3557 => x"80085b8b",
+3558 => x"e93f8008",
+3559 => x"80087929",
+3560 => x"7c902b7c",
+3561 => x"902a0756",
+3562 => x"56597375",
+3563 => x"27ff0509",
+3564 => x"b20bf705",
+3565 => x"06840105",
+3566 => x"05048008",
+3567 => x"ff057615",
+3568 => x"55597574",
+3569 => x"26ff0509",
+3570 => x"9a0bf705",
+3571 => x"06840105",
+3572 => x"05047474",
+3573 => x"26ff0509",
+3574 => x"8b9f0bf7",
+3575 => x"05068401",
+3576 => x"05050476",
+3577 => x"52737531",
+3578 => x"518ba83f",
+3579 => x"8008558b",
+3580 => x"913f8008",
+3581 => x"80087929",
+3582 => x"7b83ffff",
+3583 => x"0677902b",
+3584 => x"07565957",
+3585 => x"737827ff",
+3586 => x"0509a90b",
+3587 => x"f7050684",
+3588 => x"01050504",
+3589 => x"8008ff05",
+3590 => x"76155557",
+3591 => x"757426ff",
+3592 => x"0509910b",
+3593 => x"f7050684",
+3594 => x"01050504",
+3595 => x"77742677",
+3596 => x"71315856",
+3597 => x"78902b77",
+3598 => x"0758805b",
+3599 => x"7a407741",
+3600 => x"7f615654",
+3601 => x"7d097081",
+3602 => x"0509060a",
+3603 => x"098106ff",
+3604 => x"050981ac",
+3605 => x"0bf70506",
+3606 => x"84010505",
+3607 => x"04737f0c",
+3608 => x"747f8405",
+3609 => x"0c7e800c",
+3610 => x"9e3d0d04",
+3611 => x"80705c58",
+3612 => x"747926ff",
+3613 => x"0509c50b",
+3614 => x"f7050684",
+3615 => x"01050504",
+3616 => x"7481ff26",
+3617 => x"832b5774",
+3618 => x"83ffff26",
+3619 => x"ff050983",
+3620 => x"e90bf705",
+3621 => x"06840105",
+3622 => x"05047477",
+3623 => x"2a818888",
+3624 => x"057033a0",
+3625 => x"79317131",
+3626 => x"595c5d76",
+3627 => x"09708105",
+3628 => x"09060a09",
+3629 => x"8106ff05",
+3630 => x"0983ff0b",
+3631 => x"f7050684",
+3632 => x"01050504",
+3633 => x"76547479",
+3634 => x"27ff0509",
+3635 => x"8b0bf705",
+3636 => x"06840105",
+3637 => x"05048154",
+3638 => x"79762774",
+3639 => x"07598158",
+3640 => x"78097081",
+3641 => x"0509060a",
+3642 => x"098106ff",
+3643 => x"0509feca",
+3644 => x"0bf70506",
+3645 => x"84010505",
+3646 => x"04765880",
+3647 => x"5bfebd39",
+3648 => x"73527453",
+3649 => x"9e3de805",
+3650 => x"51ffbff2",
+3651 => x"3f676956",
+3652 => x"7f0c747f",
+3653 => x"84050c7e",
+3654 => x"800c9e3d",
+3655 => x"0d047509",
+3656 => x"70810509",
+3657 => x"060a8106",
+3658 => x"ff050982",
+3659 => x"c00bf705",
+3660 => x"06840105",
+3661 => x"05047581",
+3662 => x"ff26832b",
+3663 => x"5583ffff",
+3664 => x"7627ff05",
+3665 => x"099f0bf7",
+3666 => x"05068401",
+3667 => x"05050490",
+3668 => x"55fe800a",
+3669 => x"7627ff05",
+3670 => x"098b0bf7",
+3671 => x"05068401",
+3672 => x"05050498",
+3673 => x"5575752a",
+3674 => x"81888805",
+3675 => x"7033a077",
+3676 => x"31713157",
+3677 => x"5e547409",
+3678 => x"70810509",
+3679 => x"060a0981",
+3680 => x"06ff0509",
+3681 => x"86810bf7",
+3682 => x"05068401",
+3683 => x"05050478",
+3684 => x"76315481",
+3685 => x"76902a77",
+3686 => x"83ffff06",
+3687 => x"5f5d5b7b",
+3688 => x"52735187",
+3689 => x"ee3f8008",
+3690 => x"5787d73f",
+3691 => x"80088008",
+3692 => x"7e297890",
+3693 => x"2b7c902a",
+3694 => x"07565659",
+3695 => x"737527ff",
+3696 => x"0509b20b",
+3697 => x"f7050684",
+3698 => x"01050504",
+3699 => x"8008ff05",
+3700 => x"76155559",
+3701 => x"757426ff",
+3702 => x"05099a0b",
+3703 => x"f7050684",
+3704 => x"01050504",
+3705 => x"747426ff",
+3706 => x"05098784",
+3707 => x"0bf70506",
+3708 => x"84010505",
+3709 => x"047b5273",
+3710 => x"75315187",
+3711 => x"963f8008",
+3712 => x"5586ff3f",
+3713 => x"80088008",
+3714 => x"7e297b83",
+3715 => x"ffff0677",
+3716 => x"902b0756",
+3717 => x"59577378",
+3718 => x"27ff0509",
+3719 => x"a90bf705",
+3720 => x"06840105",
+3721 => x"05048008",
+3722 => x"ff057615",
+3723 => x"55577574",
+3724 => x"26ff0509",
+3725 => x"910bf705",
+3726 => x"06840105",
+3727 => x"05047774",
+3728 => x"26777131",
+3729 => x"585a7890",
+3730 => x"2b77077b",
+3731 => x"41417f61",
+3732 => x"56547d09",
+3733 => x"70810509",
+3734 => x"060a8106",
+3735 => x"ff0509fb",
+3736 => x"fc0bf705",
+3737 => x"06840105",
+3738 => x"0504fd94",
+3739 => x"39755281",
+3740 => x"51868f3f",
+3741 => x"800856fd",
+3742 => x"bd399057",
+3743 => x"fe800a75",
+3744 => x"27ff0509",
+3745 => x"fc940bf7",
+3746 => x"05068401",
+3747 => x"05050498",
+3748 => x"75712a81",
+3749 => x"88880570",
+3750 => x"33a07331",
+3751 => x"7131535d",
+3752 => x"5e577609",
+3753 => x"70810509",
+3754 => x"060a8106",
+3755 => x"ff0509fc",
+3756 => x"930bf705",
+3757 => x"06840105",
+3758 => x"0504a077",
+3759 => x"3175782b",
+3760 => x"77722a07",
+3761 => x"77792b7b",
+3762 => x"7a2b7d74",
+3763 => x"2a077d7b",
+3764 => x"2b73902a",
+3765 => x"7483ffff",
+3766 => x"0671597f",
+3767 => x"772a585e",
+3768 => x"5c415f58",
+3769 => x"5c5485ab",
+3770 => x"3f800854",
+3771 => x"85943f80",
+3772 => x"08800879",
+3773 => x"2975902b",
+3774 => x"7e902a07",
+3775 => x"56565973",
+3776 => x"7527ff05",
+3777 => x"09b70bf7",
+3778 => x"05068401",
+3779 => x"05050480",
+3780 => x"08ff057b",
+3781 => x"1555597a",
+3782 => x"7426ff05",
+3783 => x"099f0bf7",
+3784 => x"05068401",
+3785 => x"05050473",
+3786 => x"7527ff05",
+3787 => x"098f0bf7",
+3788 => x"05068401",
+3789 => x"050504ff",
+3790 => x"197b1555",
+3791 => x"59765273",
+3792 => x"75315184",
+3793 => x"ce3f8008",
+3794 => x"5584b73f",
+3795 => x"80088008",
+3796 => x"79297d83",
+3797 => x"ffff0677",
+3798 => x"902b0756",
+3799 => x"59577378",
+3800 => x"27ff0509",
+3801 => x"b70bf705",
+3802 => x"06840105",
+3803 => x"05048008",
+3804 => x"ff057b15",
+3805 => x"55577a74",
+3806 => x"26ff0509",
+3807 => x"9f0bf705",
+3808 => x"06840105",
+3809 => x"05047378",
+3810 => x"27ff0509",
+3811 => x"8f0bf705",
+3812 => x"06840105",
+3813 => x"0504ff17",
+3814 => x"7b155557",
+3815 => x"73783179",
+3816 => x"902b7807",
+3817 => x"7083ffff",
+3818 => x"0671902a",
+3819 => x"7983ffff",
+3820 => x"067a902a",
+3821 => x"73722973",
+3822 => x"73297473",
+3823 => x"29767429",
+3824 => x"73902a05",
+3825 => x"72055755",
+3826 => x"435f5b58",
+3827 => x"5a57595a",
+3828 => x"747c27ff",
+3829 => x"05098e0b",
+3830 => x"f7050684",
+3831 => x"01050504",
+3832 => x"84808017",
+3833 => x"5774902a",
+3834 => x"177983ff",
+3835 => x"ff067684",
+3836 => x"80802905",
+3837 => x"5757767a",
+3838 => x"26ff0509",
+3839 => x"bf0bf705",
+3840 => x"06840105",
+3841 => x"0504767a",
+3842 => x"32703070",
+3843 => x"72078025",
+3844 => x"565a5b7c",
+3845 => x"7627ff05",
+3846 => x"09f89f0b",
+3847 => x"f7050684",
+3848 => x"01050504",
+3849 => x"73097081",
+3850 => x"0509060a",
+3851 => x"8106ff05",
+3852 => x"09f8870b",
+3853 => x"f7050684",
+3854 => x"01050504",
+3855 => x"ff185880",
+3856 => x"5bf7f939",
+3857 => x"ff765377",
+3858 => x"549f3de8",
+3859 => x"05525eff",
+3860 => x"b9ac3f67",
+3861 => x"69574c75",
+3862 => x"4d698025",
+3863 => x"ff0509f4",
+3864 => x"f70bf705",
+3865 => x"06840105",
+3866 => x"05047d09",
+3867 => x"6a6c5c53",
+3868 => x"7a549f3d",
+3869 => x"e805525e",
+3870 => x"ffb9833f",
+3871 => x"6769714c",
+3872 => x"704d5856",
+3873 => x"f4d639a0",
+3874 => x"75317676",
+3875 => x"2b7a772b",
+3876 => x"7c732a07",
+3877 => x"7c782b72",
+3878 => x"902a7383",
+3879 => x"ffff0671",
+3880 => x"587e762a",
+3881 => x"5742405d",
+3882 => x"5d575881",
+3883 => x"e63f8008",
+3884 => x"5781cf3f",
+3885 => x"80088008",
+3886 => x"7e297890",
+3887 => x"2b7d902a",
+3888 => x"07565659",
+3889 => x"737527ff",
+3890 => x"0509b70b",
+3891 => x"f7050684",
+3892 => x"01050504",
+3893 => x"8008ff05",
+3894 => x"76155559",
+3895 => x"757426ff",
+3896 => x"05099f0b",
+3897 => x"f7050684",
+3898 => x"01050504",
+3899 => x"737527ff",
+3900 => x"05098f0b",
+3901 => x"f7050684",
+3902 => x"01050504",
+3903 => x"ff197615",
+3904 => x"55597b52",
+3905 => x"73753151",
+3906 => x"81893f80",
+3907 => x"085580f2",
+3908 => x"3f800880",
+3909 => x"087e297c",
+3910 => x"83ffff06",
+3911 => x"7078902b",
+3912 => x"07515658",
+3913 => x"58737727",
+3914 => x"ff0509b7",
+3915 => x"0bf70506",
+3916 => x"84010505",
+3917 => x"048008ff",
+3918 => x"05761555",
+3919 => x"58757426",
+3920 => x"ff05099f",
+3921 => x"0bf70506",
+3922 => x"84010505",
+3923 => x"04737727",
+3924 => x"ff05098f",
+3925 => x"0bf70506",
+3926 => x"84010505",
+3927 => x"04ff1876",
+3928 => x"15555878",
+3929 => x"902b7807",
+3930 => x"74783155",
+3931 => x"5bf8b039",
+3932 => x"ff197615",
+3933 => x"5559f8fd",
+3934 => x"39ff1976",
+3935 => x"155559f4",
+3936 => x"e2397070",
+3937 => x"70805375",
+3938 => x"527451ff",
+3939 => x"b9d13f50",
+3940 => x"50500470",
+3941 => x"70708153",
+3942 => x"75527451",
+3943 => x"ffb9c03f",
+3944 => x"50505004",
+3945 => x"7070819a",
+3946 => x"bc0bfc05",
+3947 => x"70085252",
+3948 => x"70098105",
+3949 => x"ff050970",
+3950 => x"81050906",
+3951 => x"0a8106ff",
+3952 => x"0509ae0b",
+3953 => x"f7050684",
+3954 => x"01050504",
+3955 => x"702dfc12",
+3956 => x"70085252",
+3957 => x"70098105",
+3958 => x"ff050970",
+3959 => x"81050906",
+3960 => x"0a098106",
+3961 => x"ff0509e4",
+3962 => x"0bf70506",
+3963 => x"84010505",
+3964 => x"04505004",
+3965 => x"04ff98cc",
+3966 => x"3f040000",
+3967 => x"30313233",
+3968 => x"34353637",
+3969 => x"38390000",
+3970 => x"44485259",
+3971 => x"53544f4e",
+3972 => x"45205052",
+3973 => x"4f475241",
+3974 => x"4d2c2053",
+3975 => x"4f4d4520",
+3976 => x"53545249",
+3977 => x"4e470000",
+3978 => x"44485259",
+3979 => x"53544f4e",
+3980 => x"45205052",
+3981 => x"4f475241",
+3982 => x"4d2c2031",
+3983 => x"27535420",
+3984 => x"53545249",
+3985 => x"4e470000",
+3986 => x"44687279",
+3987 => x"73746f6e",
+3988 => x"65204265",
+3989 => x"6e63686d",
+3990 => x"61726b2c",
+3991 => x"20566572",
+3992 => x"73696f6e",
+3993 => x"20322e31",
+3994 => x"20284c61",
+3995 => x"6e677561",
+3996 => x"67653a20",
+3997 => x"43290a00",
+3998 => x"50726f67",
+3999 => x"72616d20",
+4000 => x"636f6d70",
+4001 => x"696c6564",
+4002 => x"20776974",
+4003 => x"68202772",
+4004 => x"65676973",
+4005 => x"74657227",
+4006 => x"20617474",
+4007 => x"72696275",
+4008 => x"74650a00",
+4009 => x"45786563",
+4010 => x"7574696f",
+4011 => x"6e207374",
+4012 => x"61727473",
+4013 => x"2c202564",
+4014 => x"2072756e",
+4015 => x"73207468",
+4016 => x"726f7567",
+4017 => x"68204468",
+4018 => x"72797374",
+4019 => x"6f6e650a",
+4020 => x"00000000",
+4021 => x"44485259",
+4022 => x"53544f4e",
+4023 => x"45205052",
+4024 => x"4f475241",
+4025 => x"4d2c2032",
+4026 => x"274e4420",
+4027 => x"53545249",
+4028 => x"4e470000",
+4029 => x"45786563",
+4030 => x"7574696f",
+4031 => x"6e20656e",
+4032 => x"64730a00",
+4033 => x"46696e61",
+4034 => x"6c207661",
+4035 => x"6c756573",
+4036 => x"206f6620",
+4037 => x"74686520",
+4038 => x"76617269",
+4039 => x"61626c65",
+4040 => x"73207573",
+4041 => x"65642069",
+4042 => x"6e207468",
+4043 => x"65206265",
+4044 => x"6e63686d",
+4045 => x"61726b3a",
+4046 => x"0a000000",
+4047 => x"496e745f",
+4048 => x"476c6f62",
+4049 => x"3a202020",
+4050 => x"20202020",
+4051 => x"20202020",
+4052 => x"2025640a",
+4053 => x"00000000",
+4054 => x"20202020",
+4055 => x"20202020",
+4056 => x"73686f75",
+4057 => x"6c642062",
+4058 => x"653a2020",
+4059 => x"2025640a",
+4060 => x"00000000",
+4061 => x"426f6f6c",
+4062 => x"5f476c6f",
+4063 => x"623a2020",
+4064 => x"20202020",
+4065 => x"20202020",
+4066 => x"2025640a",
+4067 => x"00000000",
+4068 => x"43685f31",
+4069 => x"5f476c6f",
+4070 => x"623a2020",
+4071 => x"20202020",
+4072 => x"20202020",
+4073 => x"2025630a",
+4074 => x"00000000",
+4075 => x"20202020",
+4076 => x"20202020",
+4077 => x"73686f75",
+4078 => x"6c642062",
+4079 => x"653a2020",
+4080 => x"2025630a",
+4081 => x"00000000",
+4082 => x"43685f32",
+4083 => x"5f476c6f",
+4084 => x"623a2020",
+4085 => x"20202020",
+4086 => x"20202020",
+4087 => x"2025630a",
+4088 => x"00000000",
+4089 => x"4172725f",
+4090 => x"315f476c",
+4091 => x"6f625b38",
+4092 => x"5d3a2020",
+4093 => x"20202020",
+4094 => x"2025640a",
+4095 => x"00000000",
+4096 => x"4172725f",
+4097 => x"325f476c",
+4098 => x"6f625b38",
+4099 => x"5d5b375d",
+4100 => x"3a202020",
+4101 => x"2025640a",
+4102 => x"00000000",
+4103 => x"20202020",
+4104 => x"20202020",
+4105 => x"73686f75",
+4106 => x"6c642062",
+4107 => x"653a2020",
+4108 => x"204e756d",
+4109 => x"6265725f",
+4110 => x"4f665f52",
+4111 => x"756e7320",
+4112 => x"2b203130",
+4113 => x"0a000000",
+4114 => x"5074725f",
+4115 => x"476c6f62",
+4116 => x"2d3e0a00",
+4117 => x"20205074",
+4118 => x"725f436f",
+4119 => x"6d703a20",
+4120 => x"20202020",
+4121 => x"20202020",
+4122 => x"2025640a",
+4123 => x"00000000",
+4124 => x"20202020",
+4125 => x"20202020",
+4126 => x"73686f75",
+4127 => x"6c642062",
+4128 => x"653a2020",
+4129 => x"2028696d",
+4130 => x"706c656d",
+4131 => x"656e7461",
+4132 => x"74696f6e",
+4133 => x"2d646570",
+4134 => x"656e6465",
+4135 => x"6e74290a",
+4136 => x"00000000",
+4137 => x"20204469",
+4138 => x"7363723a",
+4139 => x"20202020",
+4140 => x"20202020",
+4141 => x"20202020",
+4142 => x"2025640a",
+4143 => x"00000000",
+4144 => x"2020456e",
+4145 => x"756d5f43",
+4146 => x"6f6d703a",
+4147 => x"20202020",
+4148 => x"20202020",
+4149 => x"2025640a",
+4150 => x"00000000",
+4151 => x"2020496e",
+4152 => x"745f436f",
+4153 => x"6d703a20",
+4154 => x"20202020",
+4155 => x"20202020",
+4156 => x"2025640a",
+4157 => x"00000000",
+4158 => x"20205374",
+4159 => x"725f436f",
+4160 => x"6d703a20",
+4161 => x"20202020",
+4162 => x"20202020",
+4163 => x"2025730a",
+4164 => x"00000000",
+4165 => x"20202020",
+4166 => x"20202020",
+4167 => x"73686f75",
+4168 => x"6c642062",
+4169 => x"653a2020",
+4170 => x"20444852",
+4171 => x"5953544f",
+4172 => x"4e452050",
+4173 => x"524f4752",
+4174 => x"414d2c20",
+4175 => x"534f4d45",
+4176 => x"20535452",
+4177 => x"494e470a",
+4178 => x"00000000",
+4179 => x"4e657874",
+4180 => x"5f507472",
+4181 => x"5f476c6f",
+4182 => x"622d3e0a",
+4183 => x"00000000",
+4184 => x"20202020",
+4185 => x"20202020",
+4186 => x"73686f75",
+4187 => x"6c642062",
+4188 => x"653a2020",
+4189 => x"2028696d",
+4190 => x"706c656d",
+4191 => x"656e7461",
+4192 => x"74696f6e",
+4193 => x"2d646570",
+4194 => x"656e6465",
+4195 => x"6e74292c",
+4196 => x"2073616d",
+4197 => x"65206173",
+4198 => x"2061626f",
+4199 => x"76650a00",
+4200 => x"496e745f",
+4201 => x"315f4c6f",
+4202 => x"633a2020",
+4203 => x"20202020",
+4204 => x"20202020",
+4205 => x"2025640a",
+4206 => x"00000000",
+4207 => x"496e745f",
+4208 => x"325f4c6f",
+4209 => x"633a2020",
+4210 => x"20202020",
+4211 => x"20202020",
+4212 => x"2025640a",
+4213 => x"00000000",
+4214 => x"496e745f",
+4215 => x"335f4c6f",
+4216 => x"633a2020",
+4217 => x"20202020",
+4218 => x"20202020",
+4219 => x"2025640a",
+4220 => x"00000000",
+4221 => x"456e756d",
+4222 => x"5f4c6f63",
+4223 => x"3a202020",
+4224 => x"20202020",
+4225 => x"20202020",
+4226 => x"2025640a",
+4227 => x"00000000",
+4228 => x"5374725f",
+4229 => x"315f4c6f",
+4230 => x"633a2020",
+4231 => x"20202020",
+4232 => x"20202020",
+4233 => x"2025730a",
+4234 => x"00000000",
+4235 => x"20202020",
+4236 => x"20202020",
+4237 => x"73686f75",
+4238 => x"6c642062",
+4239 => x"653a2020",
+4240 => x"20444852",
+4241 => x"5953544f",
+4242 => x"4e452050",
+4243 => x"524f4752",
+4244 => x"414d2c20",
+4245 => x"31275354",
+4246 => x"20535452",
+4247 => x"494e470a",
+4248 => x"00000000",
+4249 => x"5374725f",
+4250 => x"325f4c6f",
+4251 => x"633a2020",
+4252 => x"20202020",
+4253 => x"20202020",
+4254 => x"2025730a",
+4255 => x"00000000",
+4256 => x"20202020",
+4257 => x"20202020",
+4258 => x"73686f75",
+4259 => x"6c642062",
+4260 => x"653a2020",
+4261 => x"20444852",
+4262 => x"5953544f",
+4263 => x"4e452050",
+4264 => x"524f4752",
+4265 => x"414d2c20",
+4266 => x"32274e44",
+4267 => x"20535452",
+4268 => x"494e470a",
+4269 => x"00000000",
+4270 => x"55736572",
+4271 => x"2074696d",
+4272 => x"653a2025",
+4273 => x"640a0000",
+4274 => x"4d696372",
+4275 => x"6f736563",
+4276 => x"6f6e6473",
+4277 => x"20666f72",
+4278 => x"206f6e65",
+4279 => x"2072756e",
+4280 => x"20746872",
+4281 => x"6f756768",
+4282 => x"20446872",
+4283 => x"7973746f",
+4284 => x"6e653a20",
+4285 => x"00000000",
+4286 => x"2564200a",
+4287 => x"00000000",
+4288 => x"44687279",
+4289 => x"73746f6e",
+4290 => x"65732070",
+4291 => x"65722053",
+4292 => x"65636f6e",
+4293 => x"643a2020",
+4294 => x"20202020",
+4295 => x"20202020",
+4296 => x"20202020",
+4297 => x"20202020",
+4298 => x"20202020",
+4299 => x"00000000",
+4300 => x"56415820",
+4301 => x"4d495053",
+4302 => x"20726174",
+4303 => x"696e6720",
+4304 => x"2a203130",
+4305 => x"3030203d",
+4306 => x"20256420",
+4307 => x"0a000000",
+4308 => x"50726f67",
+4309 => x"72616d20",
+4310 => x"636f6d70",
+4311 => x"696c6564",
+4312 => x"20776974",
+4313 => x"686f7574",
+4314 => x"20277265",
+4315 => x"67697374",
+4316 => x"65722720",
+4317 => x"61747472",
+4318 => x"69627574",
+4319 => x"650a0000",
+4320 => x"4d656173",
+4321 => x"75726564",
+4322 => x"2074696d",
+4323 => x"6520746f",
+4324 => x"6f20736d",
+4325 => x"616c6c20",
+4326 => x"746f206f",
+4327 => x"62746169",
+4328 => x"6e206d65",
+4329 => x"616e696e",
+4330 => x"6766756c",
+4331 => x"20726573",
+4332 => x"756c7473",
+4333 => x"0a000000",
+4334 => x"506c6561",
+4335 => x"73652069",
+4336 => x"6e637265",
+4337 => x"61736520",
+4338 => x"6e756d62",
+4339 => x"6572206f",
+4340 => x"66207275",
+4341 => x"6e730a00",
+4342 => x"44485259",
+4343 => x"53544f4e",
+4344 => x"45205052",
+4345 => x"4f475241",
+4346 => x"4d2c2033",
+4347 => x"27524420",
+4348 => x"53545249",
+4349 => x"4e470000",
+4350 => x"43000000",
+4351 => x"64756d6d",
+4352 => x"792e6578",
+4353 => x"65000000",
+4354 => x"00010202",
+4355 => x"03030303",
+4356 => x"04040404",
+4357 => x"04040404",
+4358 => x"05050505",
+4359 => x"05050505",
+4360 => x"05050505",
+4361 => x"05050505",
+4362 => x"06060606",
+4363 => x"06060606",
+4364 => x"06060606",
+4365 => x"06060606",
+4366 => x"06060606",
+4367 => x"06060606",
+4368 => x"06060606",
+4369 => x"06060606",
+4370 => x"07070707",
+4371 => x"07070707",
+4372 => x"07070707",
+4373 => x"07070707",
+4374 => x"07070707",
+4375 => x"07070707",
+4376 => x"07070707",
+4377 => x"07070707",
+4378 => x"07070707",
+4379 => x"07070707",
+4380 => x"07070707",
+4381 => x"07070707",
+4382 => x"07070707",
+4383 => x"07070707",
+4384 => x"07070707",
+4385 => x"07070707",
+4386 => x"08080808",
+4387 => x"08080808",
+4388 => x"08080808",
+4389 => x"08080808",
+4390 => x"08080808",
+4391 => x"08080808",
+4392 => x"08080808",
+4393 => x"08080808",
+4394 => x"08080808",
+4395 => x"08080808",
+4396 => x"08080808",
+4397 => x"08080808",
+4398 => x"08080808",
+4399 => x"08080808",
+4400 => x"08080808",
+4401 => x"08080808",
+4402 => x"08080808",
+4403 => x"08080808",
+4404 => x"08080808",
+4405 => x"08080808",
+4406 => x"08080808",
+4407 => x"08080808",
+4408 => x"08080808",
+4409 => x"08080808",
+4410 => x"08080808",
+4411 => x"08080808",
+4412 => x"08080808",
+4413 => x"08080808",
+4414 => x"08080808",
+4415 => x"08080808",
+4416 => x"08080808",
+4417 => x"08080808",
+4418 => x"00ffffff",
+4419 => x"ff00ffff",
+4420 => x"ffff00ff",
+4421 => x"ffffff00",
+4422 => x"0000042c",
+4423 => x"00000446",
+4424 => x"0000046c",
+4425 => x"00000498",
+4426 => x"000004ca",
+4427 => x"000004ec",
+4428 => x"00000508",
+4429 => x"0000052c",
+4430 => x"00000556",
+4431 => x"00000580",
+4432 => x"000005a4",
+4433 => x"000005be",
+4434 => x"000005e0",
+4435 => x"00000612",
+4436 => x"0000063e",
+4437 => x"00000660",
+4438 => x"00000000",
+4439 => x"00000000",
+4440 => x"00000000",
+4441 => x"00004d44",
+4442 => x"0000c350",
+4443 => x"00000000",
+4444 => x"00000000",
+4445 => x"00000000",
+4446 => x"00000000",
+4447 => x"00000000",
+4448 => x"00000000",
+4449 => x"00000000",
+4450 => x"00000000",
+4451 => x"00000000",
+4452 => x"00000000",
+4453 => x"00000000",
+4454 => x"00000000",
+4455 => x"00000000",
+4456 => x"ffffffff",
+4457 => x"00000000",
+4458 => x"00020000",
+4459 => x"00000000",
+4460 => x"00000000",
+4461 => x"000045ac",
+4462 => x"000045ac",
+4463 => x"000045b4",
+4464 => x"000045b4",
+4465 => x"000045bc",
+4466 => x"000045bc",
+4467 => x"000045c4",
+4468 => x"000045c4",
+4469 => x"000045cc",
+4470 => x"000045cc",
+4471 => x"000045d4",
+4472 => x"000045d4",
+4473 => x"000045dc",
+4474 => x"000045dc",
+4475 => x"000045e4",
+4476 => x"000045e4",
+4477 => x"000045ec",
+4478 => x"000045ec",
+4479 => x"000045f4",
+4480 => x"000045f4",
+4481 => x"000045fc",
+4482 => x"000045fc",
+4483 => x"00004604",
+4484 => x"00004604",
+4485 => x"0000460c",
+4486 => x"0000460c",
+4487 => x"00004614",
+4488 => x"00004614",
+4489 => x"0000461c",
+4490 => x"0000461c",
+4491 => x"00004624",
+4492 => x"00004624",
+4493 => x"0000462c",
+4494 => x"0000462c",
+4495 => x"00004634",
+4496 => x"00004634",
+4497 => x"0000463c",
+4498 => x"0000463c",
+4499 => x"00004644",
+4500 => x"00004644",
+4501 => x"0000464c",
+4502 => x"0000464c",
+4503 => x"00004654",
+4504 => x"00004654",
+4505 => x"0000465c",
+4506 => x"0000465c",
+4507 => x"00004664",
+4508 => x"00004664",
+4509 => x"0000466c",
+4510 => x"0000466c",
+4511 => x"00004674",
+4512 => x"00004674",
+4513 => x"0000467c",
+4514 => x"0000467c",
+4515 => x"00004684",
+4516 => x"00004684",
+4517 => x"0000468c",
+4518 => x"0000468c",
+4519 => x"00004694",
+4520 => x"00004694",
+4521 => x"0000469c",
+4522 => x"0000469c",
+4523 => x"000046a4",
+4524 => x"000046a4",
+4525 => x"000046ac",
+4526 => x"000046ac",
+4527 => x"000046b4",
+4528 => x"000046b4",
+4529 => x"000046bc",
+4530 => x"000046bc",
+4531 => x"000046c4",
+4532 => x"000046c4",
+4533 => x"000046cc",
+4534 => x"000046cc",
+4535 => x"000046d4",
+4536 => x"000046d4",
+4537 => x"000046dc",
+4538 => x"000046dc",
+4539 => x"000046e4",
+4540 => x"000046e4",
+4541 => x"000046ec",
+4542 => x"000046ec",
+4543 => x"000046f4",
+4544 => x"000046f4",
+4545 => x"000046fc",
+4546 => x"000046fc",
+4547 => x"00004704",
+4548 => x"00004704",
+4549 => x"0000470c",
+4550 => x"0000470c",
+4551 => x"00004714",
+4552 => x"00004714",
+4553 => x"0000471c",
+4554 => x"0000471c",
+4555 => x"00004724",
+4556 => x"00004724",
+4557 => x"0000472c",
+4558 => x"0000472c",
+4559 => x"00004734",
+4560 => x"00004734",
+4561 => x"0000473c",
+4562 => x"0000473c",
+4563 => x"00004744",
+4564 => x"00004744",
+4565 => x"0000474c",
+4566 => x"0000474c",
+4567 => x"00004754",
+4568 => x"00004754",
+4569 => x"0000475c",
+4570 => x"0000475c",
+4571 => x"00004764",
+4572 => x"00004764",
+4573 => x"0000476c",
+4574 => x"0000476c",
+4575 => x"00004774",
+4576 => x"00004774",
+4577 => x"0000477c",
+4578 => x"0000477c",
+4579 => x"00004784",
+4580 => x"00004784",
+4581 => x"0000478c",
+4582 => x"0000478c",
+4583 => x"00004794",
+4584 => x"00004794",
+4585 => x"0000479c",
+4586 => x"0000479c",
+4587 => x"000047a4",
+4588 => x"000047a4",
+4589 => x"000047ac",
+4590 => x"000047ac",
+4591 => x"000047b4",
+4592 => x"000047b4",
+4593 => x"000047bc",
+4594 => x"000047bc",
+4595 => x"000047c4",
+4596 => x"000047c4",
+4597 => x"000047cc",
+4598 => x"000047cc",
+4599 => x"000047d4",
+4600 => x"000047d4",
+4601 => x"000047dc",
+4602 => x"000047dc",
+4603 => x"000047e4",
+4604 => x"000047e4",
+4605 => x"000047ec",
+4606 => x"000047ec",
+4607 => x"000047f4",
+4608 => x"000047f4",
+4609 => x"000047fc",
+4610 => x"000047fc",
+4611 => x"00004804",
+4612 => x"00004804",
+4613 => x"0000480c",
+4614 => x"0000480c",
+4615 => x"00004814",
+4616 => x"00004814",
+4617 => x"0000481c",
+4618 => x"0000481c",
+4619 => x"00004824",
+4620 => x"00004824",
+4621 => x"0000482c",
+4622 => x"0000482c",
+4623 => x"00004834",
+4624 => x"00004834",
+4625 => x"0000483c",
+4626 => x"0000483c",
+4627 => x"00004844",
+4628 => x"00004844",
+4629 => x"0000484c",
+4630 => x"0000484c",
+4631 => x"00004854",
+4632 => x"00004854",
+4633 => x"0000485c",
+4634 => x"0000485c",
+4635 => x"00004864",
+4636 => x"00004864",
+4637 => x"0000486c",
+4638 => x"0000486c",
+4639 => x"00004874",
+4640 => x"00004874",
+4641 => x"0000487c",
+4642 => x"0000487c",
+4643 => x"00004884",
+4644 => x"00004884",
+4645 => x"0000488c",
+4646 => x"0000488c",
+4647 => x"00004894",
+4648 => x"00004894",
+4649 => x"0000489c",
+4650 => x"0000489c",
+4651 => x"000048a4",
+4652 => x"000048a4",
+4653 => x"000048ac",
+4654 => x"000048ac",
+4655 => x"000048b4",
+4656 => x"000048b4",
+4657 => x"000048bc",
+4658 => x"000048bc",
+4659 => x"000048c4",
+4660 => x"000048c4",
+4661 => x"000048cc",
+4662 => x"000048cc",
+4663 => x"000048d4",
+4664 => x"000048d4",
+4665 => x"000048dc",
+4666 => x"000048dc",
+4667 => x"000048e4",
+4668 => x"000048e4",
+4669 => x"000048ec",
+4670 => x"000048ec",
+4671 => x"000048f4",
+4672 => x"000048f4",
+4673 => x"000048fc",
+4674 => x"000048fc",
+4675 => x"00004904",
+4676 => x"00004904",
+4677 => x"0000490c",
+4678 => x"0000490c",
+4679 => x"00004914",
+4680 => x"00004914",
+4681 => x"0000491c",
+4682 => x"0000491c",
+4683 => x"00004924",
+4684 => x"00004924",
+4685 => x"0000492c",
+4686 => x"0000492c",
+4687 => x"00004934",
+4688 => x"00004934",
+4689 => x"0000493c",
+4690 => x"0000493c",
+4691 => x"00004944",
+4692 => x"00004944",
+4693 => x"0000494c",
+4694 => x"0000494c",
+4695 => x"00004954",
+4696 => x"00004954",
+4697 => x"0000495c",
+4698 => x"0000495c",
+4699 => x"00004964",
+4700 => x"00004964",
+4701 => x"0000496c",
+4702 => x"0000496c",
+4703 => x"00004974",
+4704 => x"00004974",
+4705 => x"0000497c",
+4706 => x"0000497c",
+4707 => x"00004984",
+4708 => x"00004984",
+4709 => x"0000498c",
+4710 => x"0000498c",
+4711 => x"00004994",
+4712 => x"00004994",
+4713 => x"0000499c",
+4714 => x"0000499c",
+4715 => x"000049a4",
+4716 => x"000049a4",
+4717 => x"000049b8",
+4718 => x"00000000",
+4719 => x"00004c20",
+4720 => x"00004c7c",
+4721 => x"00004cd8",
+4722 => x"00000000",
+4723 => x"00000000",
+4724 => x"00000000",
+4725 => x"00000000",
+4726 => x"00000000",
+4727 => x"00000000",
+4728 => x"00000000",
+4729 => x"00000000",
+4730 => x"00000000",
+4731 => x"000043f8",
+4732 => x"00000000",
+4733 => x"00000000",
+4734 => x"00000000",
+4735 => x"00000000",
+4736 => x"00000000",
+4737 => x"00000000",
+4738 => x"00000000",
+4739 => x"00000000",
+4740 => x"00000000",
+4741 => x"00000000",
+4742 => x"00000000",
+4743 => x"00000000",
+4744 => x"00000000",
+4745 => x"00000000",
+4746 => x"00000000",
+4747 => x"00000000",
+4748 => x"00000000",
+4749 => x"00000000",
+4750 => x"00000000",
+4751 => x"00000000",
+4752 => x"00000000",
+4753 => x"00000000",
+4754 => x"00000000",
+4755 => x"00000000",
+4756 => x"00000000",
+4757 => x"00000000",
+4758 => x"00000000",
+4759 => x"00000000",
+4760 => x"00000001",
+4761 => x"330eabcd",
+4762 => x"1234e66d",
+4763 => x"deec0005",
+4764 => x"000b0000",
+4765 => x"00000000",
+4766 => x"00000000",
+4767 => x"00000000",
+4768 => x"00000000",
+4769 => x"00000000",
+4770 => x"00000000",
+4771 => x"00000000",
+4772 => x"00000000",
+4773 => x"00000000",
+4774 => x"00000000",
+4775 => x"00000000",
+4776 => x"00000000",
+4777 => x"00000000",
+4778 => x"00000000",
+4779 => x"00000000",
+4780 => x"00000000",
+4781 => x"00000000",
+4782 => x"00000000",
+4783 => x"00000000",
+4784 => x"00000000",
+4785 => x"00000000",
+4786 => x"00000000",
+4787 => x"00000000",
+4788 => x"00000000",
+4789 => x"00000000",
+4790 => x"00000000",
+4791 => x"00000000",
+4792 => x"00000000",
+4793 => x"00000000",
+4794 => x"00000000",
+4795 => x"00000000",
+4796 => x"00000000",
+4797 => x"00000000",
+4798 => x"00000000",
+4799 => x"00000000",
+4800 => x"00000000",
+4801 => x"00000000",
+4802 => x"00000000",
+4803 => x"00000000",
+4804 => x"00000000",
+4805 => x"00000000",
+4806 => x"00000000",
+4807 => x"00000000",
+4808 => x"00000000",
+4809 => x"00000000",
+4810 => x"00000000",
+4811 => x"00000000",
+4812 => x"00000000",
+4813 => x"00000000",
+4814 => x"00000000",
+4815 => x"00000000",
+4816 => x"00000000",
+4817 => x"00000000",
+4818 => x"00000000",
+4819 => x"00000000",
+4820 => x"00000000",
+4821 => x"00000000",
+4822 => x"00000000",
+4823 => x"00000000",
+4824 => x"00000000",
+4825 => x"00000000",
+4826 => x"00000000",
+4827 => x"00000000",
+4828 => x"00000000",
+4829 => x"00000000",
+4830 => x"00000000",
+4831 => x"00000000",
+4832 => x"00000000",
+4833 => x"00000000",
+4834 => x"00000000",
+4835 => x"00000000",
+4836 => x"00000000",
+4837 => x"00000000",
+4838 => x"00000000",
+4839 => x"00000000",
+4840 => x"00000000",
+4841 => x"00000000",
+4842 => x"00000000",
+4843 => x"00000000",
+4844 => x"00000000",
+4845 => x"00000000",
+4846 => x"00000000",
+4847 => x"00000000",
+4848 => x"00000000",
+4849 => x"00000000",
+4850 => x"00000000",
+4851 => x"00000000",
+4852 => x"00000000",
+4853 => x"00000000",
+4854 => x"00000000",
+4855 => x"00000000",
+4856 => x"00000000",
+4857 => x"00000000",
+4858 => x"00000000",
+4859 => x"00000000",
+4860 => x"00000000",
+4861 => x"00000000",
+4862 => x"00000000",
+4863 => x"00000000",
+4864 => x"00000000",
+4865 => x"00000000",
+4866 => x"00000000",
+4867 => x"00000000",
+4868 => x"00000000",
+4869 => x"00000000",
+4870 => x"00000000",
+4871 => x"00000000",
+4872 => x"00000000",
+4873 => x"00000000",
+4874 => x"00000000",
+4875 => x"00000000",
+4876 => x"00000000",
+4877 => x"00000000",
+4878 => x"00000000",
+4879 => x"00000000",
+4880 => x"00000000",
+4881 => x"00000000",
+4882 => x"00000000",
+4883 => x"00000000",
+4884 => x"00000000",
+4885 => x"00000000",
+4886 => x"00000000",
+4887 => x"00000000",
+4888 => x"00000000",
+4889 => x"00000000",
+4890 => x"00000000",
+4891 => x"00000000",
+4892 => x"00000000",
+4893 => x"00000000",
+4894 => x"00000000",
+4895 => x"00000000",
+4896 => x"00000000",
+4897 => x"00000000",
+4898 => x"00000000",
+4899 => x"00000000",
+4900 => x"00000000",
+4901 => x"00000000",
+4902 => x"00000000",
+4903 => x"00000000",
+4904 => x"00000000",
+4905 => x"00000000",
+4906 => x"00000000",
+4907 => x"00000000",
+4908 => x"00000000",
+4909 => x"00000000",
+4910 => x"00000000",
+4911 => x"00000000",
+4912 => x"00000000",
+4913 => x"00000000",
+4914 => x"00000000",
+4915 => x"00000000",
+4916 => x"00000000",
+4917 => x"00000000",
+4918 => x"00000000",
+4919 => x"00000000",
+4920 => x"00000000",
+4921 => x"00000000",
+4922 => x"00000000",
+4923 => x"00000000",
+4924 => x"00000000",
+4925 => x"00000000",
+4926 => x"00000000",
+4927 => x"00000000",
+4928 => x"00000000",
+4929 => x"00000000",
+4930 => x"00000000",
+4931 => x"00000000",
+4932 => x"00000000",
+4933 => x"00000000",
+4934 => x"00000000",
+4935 => x"00000000",
+4936 => x"00000000",
+4937 => x"00000000",
+4938 => x"00000000",
+4939 => x"00000000",
+4940 => x"00000000",
+4941 => x"000043fc",
+4942 => x"ffffffff",
+4943 => x"00000000",
+4944 => x"ffffffff",
+4945 => x"00000000",
+ others => x"00000000"
+);
+
+attribute syn_ramstyle : string;
+attribute syn_ramstyle of ram : signal is "no_rw_check" ;
+
+begin
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memAWriteEnable = '1') then
+ ram(conv_integer(memAAddr)) <= memAWrite;
+ memARead <= memAWrite;
+ else
+ memARead <= ram(conv_integer(memAAddr));
+ end if;
+ end if;
+end process;
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memBWriteEnable = '1') then
+ ram(conv_integer(memBAddr)) <= memBWrite;
+ memBRead <= memBWrite;
+ else
+ memBRead <= ram(conv_integer(memBAddr));
+ end if;
+ end if;
+end process;
+
+
+
+
+end dualport_ram_arch;
diff --git a/zpu/hdl/zpu3/src/helloworld_ram.vhd b/zpu/hdl/zpu3/src/helloworld_ram.vhd
new file mode 100644
index 0000000..2e1d35d
--- /dev/null
+++ b/zpu/hdl/zpu3/src/helloworld_ram.vhd
@@ -0,0 +1,3345 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+entity dualport_ram is
+port (clk : in std_logic;
+ memAWriteEnable : in std_logic;
+ memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memAWrite : in std_logic_vector(wordSize-1 downto 0);
+ memARead : out std_logic_vector(wordSize-1 downto 0);
+ memBWriteEnable : in std_logic;
+ memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memBWrite : in std_logic_vector(wordSize-1 downto 0);
+ memBRead : out std_logic_vector(wordSize-1 downto 0));
+end dualport_ram;
+
+architecture dualport_ram_arch of dualport_ram is
+
+
+type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
+
+shared variable ram : ram_type :=
+(
+0 => x"800b0b0b",
+1 => x"0b0b8070",
+2 => x"0b0b80d6",
+3 => x"f00c3a0b",
+4 => x"0b80cd92",
+5 => x"04000000",
+6 => x"00000000",
+7 => x"00000000",
+8 => x"80088408",
+9 => x"88080b0b",
+10 => x"80cde02d",
+11 => x"880c840c",
+12 => x"800c0400",
+13 => x"00000000",
+14 => x"00000000",
+15 => x"00000000",
+16 => x"71fd0608",
+17 => x"72830609",
+18 => x"81058205",
+19 => x"832b0b2a",
+20 => x"83ffff06",
+21 => x"52040000",
+22 => x"00000000",
+23 => x"00000000",
+24 => x"71fd0608",
+25 => x"83ffff73",
+26 => x"83060981",
+27 => x"05820583",
+28 => x"2b0b2b09",
+29 => x"067383ff",
+30 => x"ff0b0b0b",
+31 => x"0b83a504",
+32 => x"72098105",
+33 => x"72057373",
+34 => x"09060906",
+35 => x"73097306",
+36 => x"070a8106",
+37 => x"53510400",
+38 => x"00000000",
+39 => x"00000000",
+40 => x"72722473",
+41 => x"732e0753",
+42 => x"51040000",
+43 => x"00000000",
+44 => x"00000000",
+45 => x"00000000",
+46 => x"00000000",
+47 => x"00000000",
+48 => x"71737109",
+49 => x"71068106",
+50 => x"30720a10",
+51 => x"0a720a10",
+52 => x"0a31050a",
+53 => x"81065151",
+54 => x"53510400",
+55 => x"00000000",
+56 => x"72722673",
+57 => x"732e0753",
+58 => x"51040000",
+59 => x"00000000",
+60 => x"00000000",
+61 => x"00000000",
+62 => x"00000000",
+63 => x"00000000",
+64 => x"00000000",
+65 => x"00000000",
+66 => x"00000000",
+67 => x"00000000",
+68 => x"00000000",
+69 => x"00000000",
+70 => x"00000000",
+71 => x"00000000",
+72 => x"72728072",
+73 => x"8106ff05",
+74 => x"09720605",
+75 => x"71105272",
+76 => x"0a100a53",
+77 => x"72ed3851",
+78 => x"51535104",
+79 => x"00000000",
+80 => x"720a722b",
+81 => x"0a535104",
+82 => x"00000000",
+83 => x"00000000",
+84 => x"00000000",
+85 => x"00000000",
+86 => x"00000000",
+87 => x"00000000",
+88 => x"72729f06",
+89 => x"0981050b",
+90 => x"0b0b88a7",
+91 => x"05040000",
+92 => x"00000000",
+93 => x"00000000",
+94 => x"00000000",
+95 => x"00000000",
+96 => x"72722aff",
+97 => x"739f062a",
+98 => x"0974090a",
+99 => x"8106ff05",
+100 => x"06075351",
+101 => x"04000000",
+102 => x"00000000",
+103 => x"00000000",
+104 => x"71715351",
+105 => x"04067383",
+106 => x"06098105",
+107 => x"8205832b",
+108 => x"0b2b0772",
+109 => x"fc060c51",
+110 => x"51040000",
+111 => x"00000000",
+112 => x"72098105",
+113 => x"72050970",
+114 => x"81050906",
+115 => x"0a810653",
+116 => x"51040000",
+117 => x"00000000",
+118 => x"00000000",
+119 => x"00000000",
+120 => x"72098105",
+121 => x"72050970",
+122 => x"81050906",
+123 => x"0a098106",
+124 => x"53510400",
+125 => x"00000000",
+126 => x"00000000",
+127 => x"00000000",
+128 => x"71098105",
+129 => x"52040000",
+130 => x"00000000",
+131 => x"00000000",
+132 => x"00000000",
+133 => x"00000000",
+134 => x"00000000",
+135 => x"00000000",
+136 => x"72720981",
+137 => x"05055351",
+138 => x"04098105",
+139 => x"83051010",
+140 => x"102b0772",
+141 => x"fc060c51",
+142 => x"51040000",
+143 => x"00000000",
+144 => x"72097206",
+145 => x"73730906",
+146 => x"07535104",
+147 => x"00000000",
+148 => x"00000000",
+149 => x"00000000",
+150 => x"00000000",
+151 => x"00000000",
+152 => x"71fc0608",
+153 => x"72830609",
+154 => x"81058305",
+155 => x"1010102a",
+156 => x"81ff0652",
+157 => x"04000000",
+158 => x"00000000",
+159 => x"00000000",
+160 => x"71fc0608",
+161 => x"0b0b80d6",
+162 => x"dc738306",
+163 => x"10100508",
+164 => x"067381ff",
+165 => x"06738306",
+166 => x"0b0b0b84",
+167 => x"a9040000",
+168 => x"80088408",
+169 => x"88087575",
+170 => x"0b0b0b8e",
+171 => x"fd2d5050",
+172 => x"80085688",
+173 => x"0c840c80",
+174 => x"0c510400",
+175 => x"00000000",
+176 => x"80088408",
+177 => x"88087575",
+178 => x"0b0b0b90",
+179 => x"af2d5050",
+180 => x"80085688",
+181 => x"0c840c80",
+182 => x"0c510400",
+183 => x"00000000",
+184 => x"72097081",
+185 => x"0509060a",
+186 => x"8106ff05",
+187 => x"70547106",
+188 => x"73097274",
+189 => x"05ff0506",
+190 => x"07535050",
+191 => x"04000000",
+192 => x"72097081",
+193 => x"0509060a",
+194 => x"098106ff",
+195 => x"05705471",
+196 => x"06730972",
+197 => x"7405ff05",
+198 => x"06075350",
+199 => x"50040000",
+200 => x"05ff0504",
+201 => x"00000000",
+202 => x"00000000",
+203 => x"00000000",
+204 => x"00000000",
+205 => x"00000000",
+206 => x"00000000",
+207 => x"00000000",
+208 => x"810b0b0b",
+209 => x"80d6ec0c",
+210 => x"51040000",
+211 => x"00000000",
+212 => x"00000000",
+213 => x"00000000",
+214 => x"00000000",
+215 => x"00000000",
+216 => x"71810552",
+217 => x"04000000",
+218 => x"00000000",
+219 => x"00000000",
+220 => x"00000000",
+221 => x"00000000",
+222 => x"00000000",
+223 => x"00000000",
+224 => x"00000000",
+225 => x"00000000",
+226 => x"00000000",
+227 => x"00000000",
+228 => x"00000000",
+229 => x"00000000",
+230 => x"00000000",
+231 => x"00000000",
+232 => x"02840572",
+233 => x"10100552",
+234 => x"04000000",
+235 => x"00000000",
+236 => x"00000000",
+237 => x"00000000",
+238 => x"00000000",
+239 => x"00000000",
+240 => x"00000000",
+241 => x"00000000",
+242 => x"00000000",
+243 => x"00000000",
+244 => x"00000000",
+245 => x"00000000",
+246 => x"00000000",
+247 => x"00000000",
+248 => x"717105ff",
+249 => x"05715351",
+250 => x"04000000",
+251 => x"00000000",
+252 => x"00000000",
+253 => x"00000000",
+254 => x"00000000",
+255 => x"00000000",
+256 => x"839f3f80",
+257 => x"cdf83f04",
+258 => x"10101010",
+259 => x"10101010",
+260 => x"10101010",
+261 => x"10101010",
+262 => x"10101010",
+263 => x"10101010",
+264 => x"10101010",
+265 => x"10101053",
+266 => x"51043c04",
+267 => x"70700b0b",
+268 => x"80e6d808",
+269 => x"52841208",
+270 => x"70810651",
+271 => x"5170f638",
+272 => x"710881ff",
+273 => x"06800c50",
+274 => x"50047070",
+275 => x"0b0b80e6",
+276 => x"d8085284",
+277 => x"1208700a",
+278 => x"100a7081",
+279 => x"06515151",
+280 => x"70f13873",
+281 => x"720c5050",
+282 => x"0480d6ec",
+283 => x"08802ea8",
+284 => x"38838080",
+285 => x"0b0b0b80",
+286 => x"e6d80c82",
+287 => x"a0800b0b",
+288 => x"0b80e6dc",
+289 => x"0c829080",
+290 => x"0b80e6ec",
+291 => x"0c0b0b80",
+292 => x"e6e00b80",
+293 => x"e6f00c04",
+294 => x"f8808080",
+295 => x"a40b0b0b",
+296 => x"80e6d80c",
+297 => x"f8808082",
+298 => x"800b0b0b",
+299 => x"80e6dc0c",
+300 => x"f8808084",
+301 => x"800b80e6",
+302 => x"ec0cf880",
+303 => x"8080940b",
+304 => x"80e6f00c",
+305 => x"f8808080",
+306 => x"9c0b80e6",
+307 => x"e80cf880",
+308 => x"8080a00b",
+309 => x"80e6f40c",
+310 => x"04f23d0d",
+311 => x"600b0b80",
+312 => x"e6dc0856",
+313 => x"5d82750c",
+314 => x"8059805a",
+315 => x"800b8f3d",
+316 => x"71101017",
+317 => x"70085a57",
+318 => x"5d5b8077",
+319 => x"81ff067c",
+320 => x"832b5658",
+321 => x"5276537b",
+322 => x"5182fc3f",
+323 => x"7d7f7a72",
+324 => x"077c7207",
+325 => x"71716081",
+326 => x"05415f5d",
+327 => x"5b595755",
+328 => x"7a8724bb",
+329 => x"380b0b80",
+330 => x"e6dc087b",
+331 => x"10101170",
+332 => x"08595155",
+333 => x"807781ff",
+334 => x"067c832b",
+335 => x"56585276",
+336 => x"537b5182",
+337 => x"c23f7d7f",
+338 => x"7a72077c",
+339 => x"72077171",
+340 => x"60810541",
+341 => x"5f5d5b59",
+342 => x"5755877b",
+343 => x"25c73876",
+344 => x"7d0c7784",
+345 => x"1e0c7c80",
+346 => x"0c903d0d",
+347 => x"04707080",
+348 => x"e6e43351",
+349 => x"70a73880",
+350 => x"d6f80870",
+351 => x"08525270",
+352 => x"802e9438",
+353 => x"841280d6",
+354 => x"f80c702d",
+355 => x"80d6f808",
+356 => x"70085252",
+357 => x"70ee3881",
+358 => x"0b80e6e4",
+359 => x"34505004",
+360 => x"04700b0b",
+361 => x"80e6d408",
+362 => x"802e8e38",
+363 => x"0b0b0b0b",
+364 => x"800b802e",
+365 => x"09810683",
+366 => x"3850040b",
+367 => x"0b80e6d4",
+368 => x"510b0b0b",
+369 => x"f4ba3f50",
+370 => x"04048c08",
+371 => x"028c0c70",
+372 => x"70707080",
+373 => x"0b8c08fc",
+374 => x"050c8c08",
+375 => x"fc050889",
+376 => x"24818e38",
+377 => x"0b0b80d6",
+378 => x"a85188f3",
+379 => x"3f0b0b80",
+380 => x"d6b85188",
+381 => x"ea3ffc0b",
+382 => x"80e6f80c",
+383 => x"80e6f808",
+384 => x"812c5372",
+385 => x"fe2e8438",
+386 => x"86f13f8a",
+387 => x"0b80e6fc",
+388 => x"0c80e6fc",
+389 => x"0880e6f8",
+390 => x"08295372",
+391 => x"d82e8438",
+392 => x"86d93f8a",
+393 => x"0b80e6f8",
+394 => x"0c84e2ad",
+395 => x"800b80e6",
+396 => x"fc0c80e6",
+397 => x"fc0880e6",
+398 => x"f8082953",
+399 => x"72afd7c2",
+400 => x"802e8438",
+401 => x"86b53f81",
+402 => x"0a0b80e6",
+403 => x"f80cff0b",
+404 => x"80e6fc0c",
+405 => x"80e6fc08",
+406 => x"80e6f808",
+407 => x"25843886",
+408 => x"9a3f8c08",
+409 => x"fc050881",
+410 => x"058c08fc",
+411 => x"050cfeea",
+412 => x"398c08fc",
+413 => x"05088a2e",
+414 => x"843885ff",
+415 => x"3f72800c",
+416 => x"50505050",
+417 => x"8c0c048c",
+418 => x"08028c0c",
+419 => x"f53d0d8c",
+420 => x"08940508",
+421 => x"9d388c08",
+422 => x"8c05088c",
+423 => x"08900508",
+424 => x"8c088805",
+425 => x"08585654",
+426 => x"73760c74",
+427 => x"84170c81",
+428 => x"bf39800b",
+429 => x"8c08f005",
+430 => x"0c800b8c",
+431 => x"08f4050c",
+432 => x"8c088c05",
+433 => x"088c0890",
+434 => x"05085654",
+435 => x"738c08f0",
+436 => x"050c748c",
+437 => x"08f4050c",
+438 => x"8c08f805",
+439 => x"8c08f005",
+440 => x"56568870",
+441 => x"54755376",
+442 => x"5254859a",
+443 => x"3fa00b8c",
+444 => x"08940508",
+445 => x"318c08ec",
+446 => x"050c8c08",
+447 => x"ec050880",
+448 => x"249d3880",
+449 => x"0b8c08f4",
+450 => x"050c8c08",
+451 => x"ec050830",
+452 => x"8c08fc05",
+453 => x"08712b8c",
+454 => x"08f0050c",
+455 => x"54b9398c",
+456 => x"08fc0508",
+457 => x"8c08ec05",
+458 => x"082a8c08",
+459 => x"e8050c8c",
+460 => x"08fc0508",
+461 => x"8c089405",
+462 => x"082b8c08",
+463 => x"f4050c8c",
+464 => x"08f80508",
+465 => x"8c089405",
+466 => x"082b708c",
+467 => x"08e80508",
+468 => x"078c08f0",
+469 => x"050c548c",
+470 => x"08f00508",
+471 => x"8c08f405",
+472 => x"088c0888",
+473 => x"05085856",
+474 => x"5473760c",
+475 => x"7484170c",
+476 => x"8c088805",
+477 => x"08800c8d",
+478 => x"3d0d8c0c",
+479 => x"048c0802",
+480 => x"8c0cf93d",
+481 => x"0d800b8c",
+482 => x"08fc050c",
+483 => x"8c088805",
+484 => x"088025ab",
+485 => x"388c0888",
+486 => x"0508308c",
+487 => x"0888050c",
+488 => x"800b8c08",
+489 => x"f4050c8c",
+490 => x"08fc0508",
+491 => x"8838810b",
+492 => x"8c08f405",
+493 => x"0c8c08f4",
+494 => x"05088c08",
+495 => x"fc050c8c",
+496 => x"088c0508",
+497 => x"8025ab38",
+498 => x"8c088c05",
+499 => x"08308c08",
+500 => x"8c050c80",
+501 => x"0b8c08f0",
+502 => x"050c8c08",
+503 => x"fc050888",
+504 => x"38810b8c",
+505 => x"08f0050c",
+506 => x"8c08f005",
+507 => x"088c08fc",
+508 => x"050c8053",
+509 => x"8c088c05",
+510 => x"08528c08",
+511 => x"88050851",
+512 => x"81a73f80",
+513 => x"08708c08",
+514 => x"f8050c54",
+515 => x"8c08fc05",
+516 => x"08802e8c",
+517 => x"388c08f8",
+518 => x"0508308c",
+519 => x"08f8050c",
+520 => x"8c08f805",
+521 => x"0870800c",
+522 => x"54893d0d",
+523 => x"8c0c048c",
+524 => x"08028c0c",
+525 => x"fb3d0d80",
+526 => x"0b8c08fc",
+527 => x"050c8c08",
+528 => x"88050880",
+529 => x"2593388c",
+530 => x"08880508",
+531 => x"308c0888",
+532 => x"050c810b",
+533 => x"8c08fc05",
+534 => x"0c8c088c",
+535 => x"05088025",
+536 => x"8c388c08",
+537 => x"8c050830",
+538 => x"8c088c05",
+539 => x"0c81538c",
+540 => x"088c0508",
+541 => x"528c0888",
+542 => x"050851ad",
+543 => x"3f800870",
+544 => x"8c08f805",
+545 => x"0c548c08",
+546 => x"fc050880",
+547 => x"2e8c388c",
+548 => x"08f80508",
+549 => x"308c08f8",
+550 => x"050c8c08",
+551 => x"f8050870",
+552 => x"800c5487",
+553 => x"3d0d8c0c",
+554 => x"048c0802",
+555 => x"8c0c7070",
+556 => x"7070810b",
+557 => x"8c08fc05",
+558 => x"0c800b8c",
+559 => x"08f8050c",
+560 => x"8c088c05",
+561 => x"088c0888",
+562 => x"050827ac",
+563 => x"388c08fc",
+564 => x"0508802e",
+565 => x"a338800b",
+566 => x"8c088c05",
+567 => x"08249938",
+568 => x"8c088c05",
+569 => x"08108c08",
+570 => x"8c050c8c",
+571 => x"08fc0508",
+572 => x"108c08fc",
+573 => x"050cc939",
+574 => x"8c08fc05",
+575 => x"08802e80",
+576 => x"c9388c08",
+577 => x"8c05088c",
+578 => x"08880508",
+579 => x"26a1388c",
+580 => x"08880508",
+581 => x"8c088c05",
+582 => x"08318c08",
+583 => x"88050c8c",
+584 => x"08f80508",
+585 => x"8c08fc05",
+586 => x"08078c08",
+587 => x"f8050c8c",
+588 => x"08fc0508",
+589 => x"812a8c08",
+590 => x"fc050c8c",
+591 => x"088c0508",
+592 => x"812a8c08",
+593 => x"8c050cff",
+594 => x"af398c08",
+595 => x"90050880",
+596 => x"2e8f388c",
+597 => x"08880508",
+598 => x"708c08f4",
+599 => x"050c518d",
+600 => x"398c08f8",
+601 => x"0508708c",
+602 => x"08f4050c",
+603 => x"518c08f4",
+604 => x"0508800c",
+605 => x"50505050",
+606 => x"8c0c0470",
+607 => x"865184ea",
+608 => x"3f8151ba",
+609 => x"d83ffc3d",
+610 => x"0d767079",
+611 => x"7b555555",
+612 => x"558f7227",
+613 => x"8c387275",
+614 => x"07830651",
+615 => x"70802ea7",
+616 => x"38ff1252",
+617 => x"71ff2e98",
+618 => x"38727081",
+619 => x"05543374",
+620 => x"70810556",
+621 => x"34ff1252",
+622 => x"71ff2e09",
+623 => x"8106ea38",
+624 => x"74800c86",
+625 => x"3d0d0474",
+626 => x"51727084",
+627 => x"05540871",
+628 => x"70840553",
+629 => x"0c727084",
+630 => x"05540871",
+631 => x"70840553",
+632 => x"0c727084",
+633 => x"05540871",
+634 => x"70840553",
+635 => x"0c727084",
+636 => x"05540871",
+637 => x"70840553",
+638 => x"0cf01252",
+639 => x"718f26c9",
+640 => x"38837227",
+641 => x"95387270",
+642 => x"84055408",
+643 => x"71708405",
+644 => x"530cfc12",
+645 => x"52718326",
+646 => x"ed387054",
+647 => x"ff8339f7",
+648 => x"3d0d7c70",
+649 => x"525384b8",
+650 => x"3f725480",
+651 => x"085580d6",
+652 => x"c8568157",
+653 => x"80088105",
+654 => x"5a8b3de4",
+655 => x"11595382",
+656 => x"59f41352",
+657 => x"7b881108",
+658 => x"525384f5",
+659 => x"3f800830",
+660 => x"70800807",
+661 => x"9f2c8a07",
+662 => x"800c538b",
+663 => x"3d0d0470",
+664 => x"70735280",
+665 => x"d6fc0851",
+666 => x"ffb53f50",
+667 => x"50047070",
+668 => x"70707553",
+669 => x"84d81308",
+670 => x"802e8b38",
+671 => x"80537280",
+672 => x"0c505050",
+673 => x"50048180",
+674 => x"5272518a",
+675 => x"9b3f8008",
+676 => x"84d8140c",
+677 => x"ff538008",
+678 => x"802ee338",
+679 => x"8008549f",
+680 => x"53807470",
+681 => x"8405560c",
+682 => x"ff135380",
+683 => x"7324cd38",
+684 => x"80747084",
+685 => x"05560cff",
+686 => x"13537280",
+687 => x"25e338ff",
+688 => x"bb397070",
+689 => x"70707577",
+690 => x"55539f74",
+691 => x"278e3896",
+692 => x"730cff52",
+693 => x"71800c50",
+694 => x"50505004",
+695 => x"84d81308",
+696 => x"5271802e",
+697 => x"94387310",
+698 => x"10127008",
+699 => x"79720c51",
+700 => x"5271800c",
+701 => x"50505050",
+702 => x"047251fe",
+703 => x"f13fff52",
+704 => x"8008d138",
+705 => x"84d81308",
+706 => x"74101011",
+707 => x"70087a72",
+708 => x"0c515152",
+709 => x"dc39f93d",
+710 => x"0d797b58",
+711 => x"56769f26",
+712 => x"80e83884",
+713 => x"d8160854",
+714 => x"73802eaa",
+715 => x"38761010",
+716 => x"14700855",
+717 => x"5573802e",
+718 => x"ba388058",
+719 => x"73812e8f",
+720 => x"3873ff2e",
+721 => x"a3388075",
+722 => x"0c765173",
+723 => x"2d805877",
+724 => x"800c893d",
+725 => x"0d047551",
+726 => x"fe943fff",
+727 => x"588008ef",
+728 => x"3884d816",
+729 => x"0854c639",
+730 => x"96760c81",
+731 => x"0b800c89",
+732 => x"3d0d0475",
+733 => x"5181e53f",
+734 => x"76538008",
+735 => x"52755181",
+736 => x"a53f8008",
+737 => x"800c893d",
+738 => x"0d049676",
+739 => x"0cff0b80",
+740 => x"0c893d0d",
+741 => x"04fc3d0d",
+742 => x"76785653",
+743 => x"ff54749f",
+744 => x"26b13884",
+745 => x"d8130852",
+746 => x"71802eae",
+747 => x"38741010",
+748 => x"12700853",
+749 => x"53815471",
+750 => x"802e9838",
+751 => x"825471ff",
+752 => x"2e913883",
+753 => x"5471812e",
+754 => x"8a388073",
+755 => x"0c745171",
+756 => x"2d805473",
+757 => x"800c863d",
+758 => x"0d047251",
+759 => x"fd903f80",
+760 => x"08f13884",
+761 => x"d8130852",
+762 => x"c4397070",
+763 => x"735280d6",
+764 => x"fc0851fe",
+765 => x"a13f5050",
+766 => x"04707070",
+767 => x"75537452",
+768 => x"80d6fc08",
+769 => x"51fdbb3f",
+770 => x"50505004",
+771 => x"7080d6fc",
+772 => x"0851fcda",
+773 => x"3f500470",
+774 => x"70735280",
+775 => x"d6fc0851",
+776 => x"fef33f50",
+777 => x"5004fc3d",
+778 => x"0d800b80",
+779 => x"e7800c78",
+780 => x"527751b4",
+781 => x"9b3f8008",
+782 => x"548008ff",
+783 => x"2e883873",
+784 => x"800c863d",
+785 => x"0d0480e7",
+786 => x"80085574",
+787 => x"802ef038",
+788 => x"7675710c",
+789 => x"5373800c",
+790 => x"863d0d04",
+791 => x"b3ed3f04",
+792 => x"70707070",
+793 => x"75707183",
+794 => x"06535552",
+795 => x"70b83871",
+796 => x"70087009",
+797 => x"f7fbfdff",
+798 => x"120670f8",
+799 => x"84828180",
+800 => x"06515152",
+801 => x"53709d38",
+802 => x"84137008",
+803 => x"7009f7fb",
+804 => x"fdff1206",
+805 => x"70f88482",
+806 => x"81800651",
+807 => x"51525370",
+808 => x"802ee538",
+809 => x"72527133",
+810 => x"5170802e",
+811 => x"8a388112",
+812 => x"70335252",
+813 => x"70f83871",
+814 => x"7431800c",
+815 => x"50505050",
+816 => x"04f23d0d",
+817 => x"60628811",
+818 => x"08705757",
+819 => x"5f5a7480",
+820 => x"2e819038",
+821 => x"8c1a2270",
+822 => x"832a8132",
+823 => x"70810651",
+824 => x"55587386",
+825 => x"38901a08",
+826 => x"91387951",
+827 => x"9cd03fff",
+828 => x"54800880",
+829 => x"ee388c1a",
+830 => x"22587d08",
+831 => x"57807883",
+832 => x"ffff0670",
+833 => x"0a100a70",
+834 => x"81065156",
+835 => x"57557375",
+836 => x"2e80d738",
+837 => x"74903876",
+838 => x"08841808",
+839 => x"88195956",
+840 => x"5974802e",
+841 => x"f2387454",
+842 => x"88807527",
+843 => x"84388880",
+844 => x"54735378",
+845 => x"529c1a08",
+846 => x"51a41a08",
+847 => x"54732d80",
+848 => x"0b800825",
+849 => x"82e63880",
+850 => x"08197580",
+851 => x"08317f88",
+852 => x"05088008",
+853 => x"31706188",
+854 => x"050c5656",
+855 => x"5973ffb4",
+856 => x"38805473",
+857 => x"800c903d",
+858 => x"0d047581",
+859 => x"32708106",
+860 => x"76415154",
+861 => x"73802e81",
+862 => x"c1387490",
+863 => x"38760884",
+864 => x"18088819",
+865 => x"59565974",
+866 => x"802ef238",
+867 => x"881a0878",
+868 => x"83ffff06",
+869 => x"70892a70",
+870 => x"81065156",
+871 => x"59567380",
+872 => x"2e82fa38",
+873 => x"7575278d",
+874 => x"3877872a",
+875 => x"70810651",
+876 => x"547382b5",
+877 => x"38747627",
+878 => x"83387456",
+879 => x"75537852",
+880 => x"79085190",
+881 => x"f83f881a",
+882 => x"08763188",
+883 => x"1b0c7908",
+884 => x"167a0c74",
+885 => x"56751975",
+886 => x"77317f88",
+887 => x"05087831",
+888 => x"70618805",
+889 => x"0c565659",
+890 => x"73802efe",
+891 => x"f4388c1a",
+892 => x"2258ff86",
+893 => x"39777854",
+894 => x"79537b52",
+895 => x"5690be3f",
+896 => x"881a0878",
+897 => x"31881b0c",
+898 => x"7908187a",
+899 => x"0c7c7631",
+900 => x"5d7c8e38",
+901 => x"79519c8a",
+902 => x"3f800881",
+903 => x"8f388008",
+904 => x"5f751975",
+905 => x"77317f88",
+906 => x"05087831",
+907 => x"70618805",
+908 => x"0c565659",
+909 => x"73802efe",
+910 => x"a8387481",
+911 => x"83387608",
+912 => x"84180888",
+913 => x"19595659",
+914 => x"74802ef2",
+915 => x"3874538a",
+916 => x"5278518e",
+917 => x"c93f8008",
+918 => x"79318105",
+919 => x"5d800884",
+920 => x"3881155d",
+921 => x"815f7c58",
+922 => x"747d2783",
+923 => x"38745894",
+924 => x"1a08881b",
+925 => x"0811575c",
+926 => x"807a085c",
+927 => x"54901a08",
+928 => x"7b278338",
+929 => x"81547578",
+930 => x"25843873",
+931 => x"ba387b78",
+932 => x"24fee238",
+933 => x"7b537852",
+934 => x"9c1a0851",
+935 => x"a41a0854",
+936 => x"732d8008",
+937 => x"56800880",
+938 => x"24fee238",
+939 => x"8c1a2280",
+940 => x"c0075473",
+941 => x"8c1b23ff",
+942 => x"5473800c",
+943 => x"903d0d04",
+944 => x"7effa338",
+945 => x"ff873975",
+946 => x"5378527a",
+947 => x"518eee3f",
+948 => x"7908167a",
+949 => x"0c79519a",
+950 => x"c93f8008",
+951 => x"cf387c76",
+952 => x"315d7cfe",
+953 => x"bc38feac",
+954 => x"39901a08",
+955 => x"7a087131",
+956 => x"76117056",
+957 => x"5a575280",
+958 => x"d6fc0851",
+959 => x"90843f80",
+960 => x"08802eff",
+961 => x"a7388008",
+962 => x"901b0c80",
+963 => x"08167a0c",
+964 => x"77941b0c",
+965 => x"74881b0c",
+966 => x"7456fd99",
+967 => x"39790858",
+968 => x"901a0878",
+969 => x"27833881",
+970 => x"54757527",
+971 => x"843873b3",
+972 => x"38941a08",
+973 => x"56757526",
+974 => x"80d33875",
+975 => x"5378529c",
+976 => x"1a0851a4",
+977 => x"1a085473",
+978 => x"2d800856",
+979 => x"80088024",
+980 => x"fd83388c",
+981 => x"1a2280c0",
+982 => x"0754738c",
+983 => x"1b23ff54",
+984 => x"fed73975",
+985 => x"53785277",
+986 => x"518dd23f",
+987 => x"7908167a",
+988 => x"0c795199",
+989 => x"ad3f8008",
+990 => x"802efcd9",
+991 => x"388c1a22",
+992 => x"80c00754",
+993 => x"738c1b23",
+994 => x"ff54fead",
+995 => x"39747554",
+996 => x"79537852",
+997 => x"568da63f",
+998 => x"881a0875",
+999 => x"31881b0c",
+1000 => x"7908157a",
+1001 => x"0cfcae39",
+1002 => x"f33d0d7f",
+1003 => x"618b1170",
+1004 => x"f8065c55",
+1005 => x"555e7296",
+1006 => x"26833890",
+1007 => x"59807924",
+1008 => x"747a2607",
+1009 => x"53805472",
+1010 => x"742e0981",
+1011 => x"0680cb38",
+1012 => x"7d518eac",
+1013 => x"3f7883f7",
+1014 => x"2680c638",
+1015 => x"78832a70",
+1016 => x"10101080",
+1017 => x"deb8058c",
+1018 => x"11085959",
+1019 => x"5a76782e",
+1020 => x"83b03884",
+1021 => x"1708fc06",
+1022 => x"568c1708",
+1023 => x"88180871",
+1024 => x"8c120c88",
+1025 => x"120c5875",
+1026 => x"17841108",
+1027 => x"81078412",
+1028 => x"0c537d51",
+1029 => x"8deb3f88",
+1030 => x"17547380",
+1031 => x"0c8f3d0d",
+1032 => x"0478892a",
+1033 => x"79832a5b",
+1034 => x"5372802e",
+1035 => x"bf387886",
+1036 => x"2ab8055a",
+1037 => x"847327b4",
+1038 => x"3880db13",
+1039 => x"5a947327",
+1040 => x"ab38788c",
+1041 => x"2a80ee05",
+1042 => x"5a80d473",
+1043 => x"279e3878",
+1044 => x"8f2a80f7",
+1045 => x"055a82d4",
+1046 => x"73279138",
+1047 => x"78922a80",
+1048 => x"fc055a8a",
+1049 => x"d4732784",
+1050 => x"3880fe5a",
+1051 => x"79101010",
+1052 => x"80deb805",
+1053 => x"8c110858",
+1054 => x"5576752e",
+1055 => x"a3388417",
+1056 => x"08fc0670",
+1057 => x"7a315556",
+1058 => x"738f2488",
+1059 => x"d5387380",
+1060 => x"25fee638",
+1061 => x"8c170857",
+1062 => x"76752e09",
+1063 => x"8106df38",
+1064 => x"811a5a80",
+1065 => x"dec80857",
+1066 => x"7680dec0",
+1067 => x"2e82c038",
+1068 => x"841708fc",
+1069 => x"06707a31",
+1070 => x"5556738f",
+1071 => x"2481f938",
+1072 => x"80dec00b",
+1073 => x"80decc0c",
+1074 => x"80dec00b",
+1075 => x"80dec80c",
+1076 => x"738025fe",
+1077 => x"b23883ff",
+1078 => x"762783df",
+1079 => x"3875892a",
+1080 => x"76832a55",
+1081 => x"5372802e",
+1082 => x"bf387586",
+1083 => x"2ab80554",
+1084 => x"847327b4",
+1085 => x"3880db13",
+1086 => x"54947327",
+1087 => x"ab38758c",
+1088 => x"2a80ee05",
+1089 => x"5480d473",
+1090 => x"279e3875",
+1091 => x"8f2a80f7",
+1092 => x"055482d4",
+1093 => x"73279138",
+1094 => x"75922a80",
+1095 => x"fc05548a",
+1096 => x"d4732784",
+1097 => x"3880fe54",
+1098 => x"73101010",
+1099 => x"80deb805",
+1100 => x"88110856",
+1101 => x"5874782e",
+1102 => x"86cf3884",
+1103 => x"1508fc06",
+1104 => x"53757327",
+1105 => x"8d388815",
+1106 => x"08557478",
+1107 => x"2e098106",
+1108 => x"ea388c15",
+1109 => x"0880deb8",
+1110 => x"0b840508",
+1111 => x"718c1a0c",
+1112 => x"76881a0c",
+1113 => x"7888130c",
+1114 => x"788c180c",
+1115 => x"5d587953",
+1116 => x"807a2483",
+1117 => x"e6387282",
+1118 => x"2c81712b",
+1119 => x"5c537a7c",
+1120 => x"26819838",
+1121 => x"7b7b0653",
+1122 => x"7282f138",
+1123 => x"79fc0684",
+1124 => x"055a7a10",
+1125 => x"707d0654",
+1126 => x"5b7282e0",
+1127 => x"38841a5a",
+1128 => x"f1398817",
+1129 => x"8c110858",
+1130 => x"5876782e",
+1131 => x"098106fc",
+1132 => x"c238821a",
+1133 => x"5afdec39",
+1134 => x"78177981",
+1135 => x"0784190c",
+1136 => x"7080decc",
+1137 => x"0c7080de",
+1138 => x"c80c80de",
+1139 => x"c00b8c12",
+1140 => x"0c8c1108",
+1141 => x"88120c74",
+1142 => x"81078412",
+1143 => x"0c741175",
+1144 => x"710c5153",
+1145 => x"7d518a99",
+1146 => x"3f881754",
+1147 => x"fcac3980",
+1148 => x"deb80b84",
+1149 => x"05087a54",
+1150 => x"5c798025",
+1151 => x"fef83882",
+1152 => x"da397a09",
+1153 => x"7c067080",
+1154 => x"deb80b84",
+1155 => x"050c5c7a",
+1156 => x"105b7a7c",
+1157 => x"2685387a",
+1158 => x"85b83880",
+1159 => x"deb80b88",
+1160 => x"05087084",
+1161 => x"1208fc06",
+1162 => x"707c317c",
+1163 => x"72268f72",
+1164 => x"25075757",
+1165 => x"5c5d5572",
+1166 => x"802e80db",
+1167 => x"38797a16",
+1168 => x"80deb008",
+1169 => x"1b90115a",
+1170 => x"55575b80",
+1171 => x"deac08ff",
+1172 => x"2e8838a0",
+1173 => x"8f13e080",
+1174 => x"06577652",
+1175 => x"7d5191a7",
+1176 => x"3f800854",
+1177 => x"8008ff2e",
+1178 => x"90388008",
+1179 => x"76278299",
+1180 => x"387480de",
+1181 => x"b82e8291",
+1182 => x"3880deb8",
+1183 => x"0b880508",
+1184 => x"55841508",
+1185 => x"fc06707a",
+1186 => x"317a7226",
+1187 => x"8f722507",
+1188 => x"52555372",
+1189 => x"83e63874",
+1190 => x"79810784",
+1191 => x"170c7916",
+1192 => x"7080deb8",
+1193 => x"0b88050c",
+1194 => x"75810784",
+1195 => x"120c547e",
+1196 => x"525788cd",
+1197 => x"3f881754",
+1198 => x"fae03975",
+1199 => x"832a7054",
+1200 => x"54807424",
+1201 => x"819b3872",
+1202 => x"822c8171",
+1203 => x"2b80debc",
+1204 => x"08077080",
+1205 => x"deb80b84",
+1206 => x"050c7510",
+1207 => x"101080de",
+1208 => x"b8058811",
+1209 => x"08585a5d",
+1210 => x"53778c18",
+1211 => x"0c748818",
+1212 => x"0c768819",
+1213 => x"0c768c16",
+1214 => x"0cfcf339",
+1215 => x"797a1010",
+1216 => x"1080deb8",
+1217 => x"05705759",
+1218 => x"5d8c1508",
+1219 => x"5776752e",
+1220 => x"a3388417",
+1221 => x"08fc0670",
+1222 => x"7a315556",
+1223 => x"738f2483",
+1224 => x"ca387380",
+1225 => x"25848138",
+1226 => x"8c170857",
+1227 => x"76752e09",
+1228 => x"8106df38",
+1229 => x"8815811b",
+1230 => x"70830655",
+1231 => x"5b5572c9",
+1232 => x"387c8306",
+1233 => x"5372802e",
+1234 => x"fdb838ff",
+1235 => x"1df81959",
+1236 => x"5d881808",
+1237 => x"782eea38",
+1238 => x"fdb53983",
+1239 => x"1a53fc96",
+1240 => x"39831470",
+1241 => x"822c8171",
+1242 => x"2b80debc",
+1243 => x"08077080",
+1244 => x"deb80b84",
+1245 => x"050c7610",
+1246 => x"101080de",
+1247 => x"b8058811",
+1248 => x"08595b5e",
+1249 => x"5153fee1",
+1250 => x"3980ddfc",
+1251 => x"08175880",
+1252 => x"08762e81",
+1253 => x"8d3880de",
+1254 => x"ac08ff2e",
+1255 => x"83ec3873",
+1256 => x"76311880",
+1257 => x"ddfc0c73",
+1258 => x"87067057",
+1259 => x"5372802e",
+1260 => x"88388873",
+1261 => x"31701555",
+1262 => x"5676149f",
+1263 => x"ff06a080",
+1264 => x"71311770",
+1265 => x"547f5357",
+1266 => x"538ebc3f",
+1267 => x"80085380",
+1268 => x"08ff2e81",
+1269 => x"a03880dd",
+1270 => x"fc081670",
+1271 => x"80ddfc0c",
+1272 => x"747580de",
+1273 => x"b80b8805",
+1274 => x"0c747631",
+1275 => x"18708107",
+1276 => x"51555658",
+1277 => x"7b80deb8",
+1278 => x"2e839c38",
+1279 => x"798f2682",
+1280 => x"cb38810b",
+1281 => x"84150c84",
+1282 => x"1508fc06",
+1283 => x"707a317a",
+1284 => x"72268f72",
+1285 => x"25075255",
+1286 => x"5372802e",
+1287 => x"fcf93880",
+1288 => x"db398008",
+1289 => x"9fff0653",
+1290 => x"72feeb38",
+1291 => x"7780ddfc",
+1292 => x"0c80deb8",
+1293 => x"0b880508",
+1294 => x"7b188107",
+1295 => x"84120c55",
+1296 => x"80dea808",
+1297 => x"78278638",
+1298 => x"7780dea8",
+1299 => x"0c80dea4",
+1300 => x"087827fc",
+1301 => x"ac387780",
+1302 => x"dea40c84",
+1303 => x"1508fc06",
+1304 => x"707a317a",
+1305 => x"72268f72",
+1306 => x"25075255",
+1307 => x"5372802e",
+1308 => x"fca53888",
+1309 => x"39807454",
+1310 => x"56fedb39",
+1311 => x"7d518581",
+1312 => x"3f800b80",
+1313 => x"0c8f3d0d",
+1314 => x"04735380",
+1315 => x"7424a938",
+1316 => x"72822c81",
+1317 => x"712b80de",
+1318 => x"bc080770",
+1319 => x"80deb80b",
+1320 => x"84050c5d",
+1321 => x"53778c18",
+1322 => x"0c748818",
+1323 => x"0c768819",
+1324 => x"0c768c16",
+1325 => x"0cf9b739",
+1326 => x"83147082",
+1327 => x"2c81712b",
+1328 => x"80debc08",
+1329 => x"077080de",
+1330 => x"b80b8405",
+1331 => x"0c5e5153",
+1332 => x"d4397b7b",
+1333 => x"065372fc",
+1334 => x"a338841a",
+1335 => x"7b105c5a",
+1336 => x"f139ff1a",
+1337 => x"8111515a",
+1338 => x"f7b93978",
+1339 => x"17798107",
+1340 => x"84190c8c",
+1341 => x"18088819",
+1342 => x"08718c12",
+1343 => x"0c88120c",
+1344 => x"597080de",
+1345 => x"cc0c7080",
+1346 => x"dec80c80",
+1347 => x"dec00b8c",
+1348 => x"120c8c11",
+1349 => x"0888120c",
+1350 => x"74810784",
+1351 => x"120c7411",
+1352 => x"75710c51",
+1353 => x"53f9bd39",
+1354 => x"75178411",
+1355 => x"08810784",
+1356 => x"120c538c",
+1357 => x"17088818",
+1358 => x"08718c12",
+1359 => x"0c88120c",
+1360 => x"587d5183",
+1361 => x"bc3f8817",
+1362 => x"54f5cf39",
+1363 => x"7284150c",
+1364 => x"f41af806",
+1365 => x"70841e08",
+1366 => x"81060784",
+1367 => x"1e0c701d",
+1368 => x"545b850b",
+1369 => x"84140c85",
+1370 => x"0b88140c",
+1371 => x"8f7b27fd",
+1372 => x"cf38881c",
+1373 => x"527d5193",
+1374 => x"e73f80de",
+1375 => x"b80b8805",
+1376 => x"0880ddfc",
+1377 => x"085955fd",
+1378 => x"b7397780",
+1379 => x"ddfc0c73",
+1380 => x"80deac0c",
+1381 => x"fc913972",
+1382 => x"84150cfd",
+1383 => x"a339fa3d",
+1384 => x"0d7a7902",
+1385 => x"8805a705",
+1386 => x"33565253",
+1387 => x"8373278a",
+1388 => x"38708306",
+1389 => x"5271802e",
+1390 => x"a838ff13",
+1391 => x"5372ff2e",
+1392 => x"97387033",
+1393 => x"5273722e",
+1394 => x"91388111",
+1395 => x"ff145451",
+1396 => x"72ff2e09",
+1397 => x"8106eb38",
+1398 => x"80517080",
+1399 => x"0c883d0d",
+1400 => x"04707257",
+1401 => x"55835175",
+1402 => x"82802914",
+1403 => x"ff125256",
+1404 => x"708025f3",
+1405 => x"38837327",
+1406 => x"bf387408",
+1407 => x"76327009",
+1408 => x"f7fbfdff",
+1409 => x"120670f8",
+1410 => x"84828180",
+1411 => x"06515151",
+1412 => x"70802e99",
+1413 => x"38745180",
+1414 => x"52703357",
+1415 => x"73772eff",
+1416 => x"b9388111",
+1417 => x"81135351",
+1418 => x"837227ed",
+1419 => x"38fc1384",
+1420 => x"16565372",
+1421 => x"8326c338",
+1422 => x"7451fefe",
+1423 => x"39fa3d0d",
+1424 => x"787a7c72",
+1425 => x"72725757",
+1426 => x"57595656",
+1427 => x"747627b2",
+1428 => x"38761551",
+1429 => x"757127aa",
+1430 => x"38707717",
+1431 => x"ff145455",
+1432 => x"5371ff2e",
+1433 => x"9638ff14",
+1434 => x"ff145454",
+1435 => x"72337434",
+1436 => x"ff125271",
+1437 => x"ff2e0981",
+1438 => x"06ec3875",
+1439 => x"800c883d",
+1440 => x"0d04768f",
+1441 => x"269738ff",
+1442 => x"125271ff",
+1443 => x"2eed3872",
+1444 => x"70810554",
+1445 => x"33747081",
+1446 => x"055634eb",
+1447 => x"39747607",
+1448 => x"83065170",
+1449 => x"e2387575",
+1450 => x"54517270",
+1451 => x"84055408",
+1452 => x"71708405",
+1453 => x"530c7270",
+1454 => x"84055408",
+1455 => x"71708405",
+1456 => x"530c7270",
+1457 => x"84055408",
+1458 => x"71708405",
+1459 => x"530c7270",
+1460 => x"84055408",
+1461 => x"71708405",
+1462 => x"530cf012",
+1463 => x"52718f26",
+1464 => x"c9388372",
+1465 => x"27953872",
+1466 => x"70840554",
+1467 => x"08717084",
+1468 => x"05530cfc",
+1469 => x"12527183",
+1470 => x"26ed3870",
+1471 => x"54ff8839",
+1472 => x"0404ef3d",
+1473 => x"0d636567",
+1474 => x"405d427b",
+1475 => x"802e84f9",
+1476 => x"386151ec",
+1477 => x"3ff81c70",
+1478 => x"84120870",
+1479 => x"fc067062",
+1480 => x"8b0570f8",
+1481 => x"06415945",
+1482 => x"5b5c4157",
+1483 => x"96742782",
+1484 => x"c338807b",
+1485 => x"247e7c26",
+1486 => x"07598054",
+1487 => x"78742e09",
+1488 => x"810682a9",
+1489 => x"38777b25",
+1490 => x"81fc3877",
+1491 => x"1780deb8",
+1492 => x"0b880508",
+1493 => x"5e567c76",
+1494 => x"2e84bd38",
+1495 => x"84160870",
+1496 => x"fe061784",
+1497 => x"11088106",
+1498 => x"51555573",
+1499 => x"828b3874",
+1500 => x"fc06597c",
+1501 => x"762e84dd",
+1502 => x"3877195f",
+1503 => x"7e7b2581",
+1504 => x"fd387981",
+1505 => x"06547382",
+1506 => x"bf387677",
+1507 => x"08318411",
+1508 => x"08fc0656",
+1509 => x"5a75802e",
+1510 => x"91387c76",
+1511 => x"2e84ea38",
+1512 => x"74191859",
+1513 => x"787b2584",
+1514 => x"89387980",
+1515 => x"2e829938",
+1516 => x"7715567a",
+1517 => x"76248290",
+1518 => x"388c1a08",
+1519 => x"881b0871",
+1520 => x"8c120c88",
+1521 => x"120c5579",
+1522 => x"76595788",
+1523 => x"1761fc05",
+1524 => x"575975a4",
+1525 => x"2685ef38",
+1526 => x"7b795555",
+1527 => x"93762780",
+1528 => x"c9387b70",
+1529 => x"84055d08",
+1530 => x"7c56790c",
+1531 => x"74708405",
+1532 => x"56088c18",
+1533 => x"0c901754",
+1534 => x"9b7627ae",
+1535 => x"38747084",
+1536 => x"05560874",
+1537 => x"0c747084",
+1538 => x"05560894",
+1539 => x"180c9817",
+1540 => x"54a37627",
+1541 => x"95387470",
+1542 => x"84055608",
+1543 => x"740c7470",
+1544 => x"84055608",
+1545 => x"9c180ca0",
+1546 => x"17547470",
+1547 => x"84055608",
+1548 => x"74708405",
+1549 => x"560c7470",
+1550 => x"84055608",
+1551 => x"74708405",
+1552 => x"560c7408",
+1553 => x"740c777b",
+1554 => x"3156758f",
+1555 => x"2680c938",
+1556 => x"84170881",
+1557 => x"06780784",
+1558 => x"180c7717",
+1559 => x"84110881",
+1560 => x"0784120c",
+1561 => x"546151fd",
+1562 => x"983f8817",
+1563 => x"5473800c",
+1564 => x"933d0d04",
+1565 => x"905bfdba",
+1566 => x"397856fe",
+1567 => x"85398c16",
+1568 => x"08881708",
+1569 => x"718c120c",
+1570 => x"88120c55",
+1571 => x"7e707c31",
+1572 => x"57588f76",
+1573 => x"27ffb938",
+1574 => x"7a178418",
+1575 => x"0881067c",
+1576 => x"0784190c",
+1577 => x"76810784",
+1578 => x"120c7611",
+1579 => x"84110881",
+1580 => x"0784120c",
+1581 => x"55880552",
+1582 => x"61518da4",
+1583 => x"3f6151fc",
+1584 => x"c03f8817",
+1585 => x"54ffa639",
+1586 => x"7d526151",
+1587 => x"edda3f80",
+1588 => x"08598008",
+1589 => x"802e81a3",
+1590 => x"388008f8",
+1591 => x"05608405",
+1592 => x"08fe0661",
+1593 => x"05555776",
+1594 => x"742e83e6",
+1595 => x"38fc1856",
+1596 => x"75a42681",
+1597 => x"aa387b80",
+1598 => x"08555593",
+1599 => x"762780d8",
+1600 => x"38747084",
+1601 => x"05560880",
+1602 => x"08708405",
+1603 => x"800c0c80",
+1604 => x"08757084",
+1605 => x"05570871",
+1606 => x"70840553",
+1607 => x"0c549b76",
+1608 => x"27b63874",
+1609 => x"70840556",
+1610 => x"08747084",
+1611 => x"05560c74",
+1612 => x"70840556",
+1613 => x"08747084",
+1614 => x"05560ca3",
+1615 => x"76279938",
+1616 => x"74708405",
+1617 => x"56087470",
+1618 => x"8405560c",
+1619 => x"74708405",
+1620 => x"56087470",
+1621 => x"8405560c",
+1622 => x"74708405",
+1623 => x"56087470",
+1624 => x"8405560c",
+1625 => x"74708405",
+1626 => x"56087470",
+1627 => x"8405560c",
+1628 => x"7408740c",
+1629 => x"7b526151",
+1630 => x"8be63f61",
+1631 => x"51fb823f",
+1632 => x"78547380",
+1633 => x"0c933d0d",
+1634 => x"047d5261",
+1635 => x"51ec993f",
+1636 => x"8008800c",
+1637 => x"933d0d04",
+1638 => x"84160855",
+1639 => x"fbd13975",
+1640 => x"537b5280",
+1641 => x"0851dfde",
+1642 => x"3f7b5261",
+1643 => x"518bb13f",
+1644 => x"ca398c16",
+1645 => x"08881708",
+1646 => x"718c120c",
+1647 => x"88120c55",
+1648 => x"8c1a0888",
+1649 => x"1b08718c",
+1650 => x"120c8812",
+1651 => x"0c557979",
+1652 => x"5957fbf7",
+1653 => x"39771990",
+1654 => x"1c555573",
+1655 => x"7524fba2",
+1656 => x"387a1770",
+1657 => x"80deb80b",
+1658 => x"88050c75",
+1659 => x"7c318107",
+1660 => x"84120c5d",
+1661 => x"84170881",
+1662 => x"067b0784",
+1663 => x"180c6151",
+1664 => x"f9ff3f88",
+1665 => x"1754fce5",
+1666 => x"39741918",
+1667 => x"901c555d",
+1668 => x"737d24fb",
+1669 => x"95388c1a",
+1670 => x"08881b08",
+1671 => x"718c120c",
+1672 => x"88120c55",
+1673 => x"881a61fc",
+1674 => x"05575975",
+1675 => x"a42681ae",
+1676 => x"387b7955",
+1677 => x"55937627",
+1678 => x"80c9387b",
+1679 => x"7084055d",
+1680 => x"087c5679",
+1681 => x"0c747084",
+1682 => x"0556088c",
+1683 => x"1b0c901a",
+1684 => x"549b7627",
+1685 => x"ae387470",
+1686 => x"84055608",
+1687 => x"740c7470",
+1688 => x"84055608",
+1689 => x"941b0c98",
+1690 => x"1a54a376",
+1691 => x"27953874",
+1692 => x"70840556",
+1693 => x"08740c74",
+1694 => x"70840556",
+1695 => x"089c1b0c",
+1696 => x"a01a5474",
+1697 => x"70840556",
+1698 => x"08747084",
+1699 => x"05560c74",
+1700 => x"70840556",
+1701 => x"08747084",
+1702 => x"05560c74",
+1703 => x"08740c7a",
+1704 => x"1a7080de",
+1705 => x"b80b8805",
+1706 => x"0c7d7c31",
+1707 => x"81078412",
+1708 => x"0c54841a",
+1709 => x"0881067b",
+1710 => x"07841b0c",
+1711 => x"6151f8c1",
+1712 => x"3f7854fd",
+1713 => x"bd397553",
+1714 => x"7b527851",
+1715 => x"ddb83ffa",
+1716 => x"f5398417",
+1717 => x"08fc0618",
+1718 => x"605858fa",
+1719 => x"e9397553",
+1720 => x"7b527851",
+1721 => x"dda03f7a",
+1722 => x"1a7080de",
+1723 => x"b80b8805",
+1724 => x"0c7d7c31",
+1725 => x"81078412",
+1726 => x"0c54841a",
+1727 => x"0881067b",
+1728 => x"07841b0c",
+1729 => x"ffb63970",
+1730 => x"70707080",
+1731 => x"0b80e780",
+1732 => x"0c765196",
+1733 => x"cc3f8008",
+1734 => x"538008ff",
+1735 => x"2e893872",
+1736 => x"800c5050",
+1737 => x"50500480",
+1738 => x"e7800854",
+1739 => x"73802eef",
+1740 => x"38757471",
+1741 => x"0c527280",
+1742 => x"0c505050",
+1743 => x"5004fa3d",
+1744 => x"0d7880d6",
+1745 => x"fc085455",
+1746 => x"b8130880",
+1747 => x"2e81b638",
+1748 => x"8c152270",
+1749 => x"83ffff06",
+1750 => x"70832a81",
+1751 => x"32708106",
+1752 => x"51555556",
+1753 => x"72802e80",
+1754 => x"dc387384",
+1755 => x"2a813281",
+1756 => x"0657ff53",
+1757 => x"7680f738",
+1758 => x"73822a70",
+1759 => x"81065153",
+1760 => x"72802eb9",
+1761 => x"38b01508",
+1762 => x"5473802e",
+1763 => x"9c3880c0",
+1764 => x"15537373",
+1765 => x"2e8f3873",
+1766 => x"5280d6fc",
+1767 => x"085187c0",
+1768 => x"3f8c1522",
+1769 => x"5676b016",
+1770 => x"0c75db06",
+1771 => x"53728c16",
+1772 => x"23800b84",
+1773 => x"160c9015",
+1774 => x"08750c72",
+1775 => x"56758807",
+1776 => x"53728c16",
+1777 => x"23901508",
+1778 => x"802e80c1",
+1779 => x"388c1522",
+1780 => x"70810655",
+1781 => x"53739e38",
+1782 => x"720a100a",
+1783 => x"70810651",
+1784 => x"53728538",
+1785 => x"94150854",
+1786 => x"7388160c",
+1787 => x"80537280",
+1788 => x"0c883d0d",
+1789 => x"04800b88",
+1790 => x"160c9415",
+1791 => x"08309816",
+1792 => x"0c8053ea",
+1793 => x"39725182",
+1794 => x"f73ffec4",
+1795 => x"3974518c",
+1796 => x"de3f8c15",
+1797 => x"22708106",
+1798 => x"55537380",
+1799 => x"2effb938",
+1800 => x"d439f83d",
+1801 => x"0d7a5877",
+1802 => x"802e8199",
+1803 => x"3880d6fc",
+1804 => x"0854b814",
+1805 => x"08802e80",
+1806 => x"ed388c18",
+1807 => x"2270902b",
+1808 => x"70902c70",
+1809 => x"832a8132",
+1810 => x"81065c51",
+1811 => x"57547880",
+1812 => x"cd389018",
+1813 => x"08577680",
+1814 => x"2e80c338",
+1815 => x"77087731",
+1816 => x"77790c76",
+1817 => x"83067a58",
+1818 => x"55557385",
+1819 => x"38941808",
+1820 => x"56758819",
+1821 => x"0c807525",
+1822 => x"a5387453",
+1823 => x"76529c18",
+1824 => x"0851a418",
+1825 => x"0854732d",
+1826 => x"800b8008",
+1827 => x"2580c938",
+1828 => x"80081775",
+1829 => x"80083156",
+1830 => x"57748024",
+1831 => x"dd38800b",
+1832 => x"800c8a3d",
+1833 => x"0d047351",
+1834 => x"81d63f8c",
+1835 => x"18227090",
+1836 => x"2b70902c",
+1837 => x"70832a81",
+1838 => x"3281065c",
+1839 => x"51575478",
+1840 => x"dd38ff8e",
+1841 => x"39b8a252",
+1842 => x"80d6fc08",
+1843 => x"5189e73f",
+1844 => x"8008800c",
+1845 => x"8a3d0d04",
+1846 => x"8c182280",
+1847 => x"c0075473",
+1848 => x"8c1923ff",
+1849 => x"0b800c8a",
+1850 => x"3d0d0470",
+1851 => x"72518071",
+1852 => x"0c800b84",
+1853 => x"120c800b",
+1854 => x"88120c02",
+1855 => x"8e05228c",
+1856 => x"12230292",
+1857 => x"05228e12",
+1858 => x"23800b90",
+1859 => x"120c800b",
+1860 => x"94120c80",
+1861 => x"0b98120c",
+1862 => x"709c120c",
+1863 => x"80c8810b",
+1864 => x"a0120c80",
+1865 => x"c8cd0ba4",
+1866 => x"120c80c9",
+1867 => x"c90ba812",
+1868 => x"0c80ca9a",
+1869 => x"0bac120c",
+1870 => x"5004fa3d",
+1871 => x"0d797080",
+1872 => x"dc298c11",
+1873 => x"547a5356",
+1874 => x"57e4dd3f",
+1875 => x"80088008",
+1876 => x"55568008",
+1877 => x"802ea238",
+1878 => x"80088c05",
+1879 => x"54800b80",
+1880 => x"080c7680",
+1881 => x"0884050c",
+1882 => x"73800888",
+1883 => x"050c7453",
+1884 => x"80527351",
+1885 => x"8bfc3f75",
+1886 => x"5473800c",
+1887 => x"883d0d04",
+1888 => x"fc3d0d76",
+1889 => x"bd930bbc",
+1890 => x"120c5581",
+1891 => x"0bb8160c",
+1892 => x"800b84dc",
+1893 => x"160c830b",
+1894 => x"84e0160c",
+1895 => x"84e81584",
+1896 => x"e4160c74",
+1897 => x"54805384",
+1898 => x"52841508",
+1899 => x"51febc3f",
+1900 => x"74548153",
+1901 => x"89528815",
+1902 => x"0851feaf",
+1903 => x"3f745482",
+1904 => x"538a528c",
+1905 => x"150851fe",
+1906 => x"a23f863d",
+1907 => x"0d04f93d",
+1908 => x"0d7980d6",
+1909 => x"fc085457",
+1910 => x"b8130880",
+1911 => x"2e80c838",
+1912 => x"84dc1356",
+1913 => x"88160884",
+1914 => x"1708ff05",
+1915 => x"55558074",
+1916 => x"249f388c",
+1917 => x"15227090",
+1918 => x"2b70902c",
+1919 => x"51545872",
+1920 => x"802e80ca",
+1921 => x"3880dc15",
+1922 => x"ff155555",
+1923 => x"738025e3",
+1924 => x"38750853",
+1925 => x"72802e9f",
+1926 => x"38725688",
+1927 => x"16088417",
+1928 => x"08ff0555",
+1929 => x"55c83972",
+1930 => x"51fed53f",
+1931 => x"80d6fc08",
+1932 => x"84dc0556",
+1933 => x"ffae3984",
+1934 => x"527651fd",
+1935 => x"fd3f8008",
+1936 => x"760c8008",
+1937 => x"802e80c0",
+1938 => x"38800856",
+1939 => x"ce39810b",
+1940 => x"8c162372",
+1941 => x"750c7288",
+1942 => x"160c7284",
+1943 => x"160c7290",
+1944 => x"160c7294",
+1945 => x"160c7298",
+1946 => x"160cff0b",
+1947 => x"8e162372",
+1948 => x"b0160c72",
+1949 => x"b4160c72",
+1950 => x"80c4160c",
+1951 => x"7280c816",
+1952 => x"0c74800c",
+1953 => x"893d0d04",
+1954 => x"8c770c80",
+1955 => x"0b800c89",
+1956 => x"3d0d0470",
+1957 => x"70b8a252",
+1958 => x"7351869a",
+1959 => x"3f505004",
+1960 => x"7080d6fc",
+1961 => x"0851ec3f",
+1962 => x"5004fb3d",
+1963 => x"0d777052",
+1964 => x"56f0cd3f",
+1965 => x"80deb80b",
+1966 => x"88050884",
+1967 => x"1108fc06",
+1968 => x"707b319f",
+1969 => x"ef05e080",
+1970 => x"06e08005",
+1971 => x"565653a0",
+1972 => x"80742494",
+1973 => x"38805275",
+1974 => x"51f8ac3f",
+1975 => x"80dec008",
+1976 => x"15537280",
+1977 => x"082e8f38",
+1978 => x"7551f095",
+1979 => x"3f805372",
+1980 => x"800c873d",
+1981 => x"0d047330",
+1982 => x"527551f8",
+1983 => x"8a3f8008",
+1984 => x"ff2ea838",
+1985 => x"80deb80b",
+1986 => x"88050875",
+1987 => x"75318107",
+1988 => x"84120c53",
+1989 => x"80ddfc08",
+1990 => x"743180dd",
+1991 => x"fc0c7551",
+1992 => x"efdf3f81",
+1993 => x"0b800c87",
+1994 => x"3d0d0480",
+1995 => x"527551f7",
+1996 => x"d63f80de",
+1997 => x"b80b8805",
+1998 => x"08800871",
+1999 => x"3156538f",
+2000 => x"7525ffa4",
+2001 => x"38800880",
+2002 => x"deac0831",
+2003 => x"80ddfc0c",
+2004 => x"74810784",
+2005 => x"140c7551",
+2006 => x"efa73f80",
+2007 => x"53ff9039",
+2008 => x"f63d0d7c",
+2009 => x"7e545b72",
+2010 => x"802e8283",
+2011 => x"387a51ef",
+2012 => x"8f3ff813",
+2013 => x"84110870",
+2014 => x"fe067013",
+2015 => x"841108fc",
+2016 => x"065d5859",
+2017 => x"545880de",
+2018 => x"c008752e",
+2019 => x"82de3878",
+2020 => x"84160c80",
+2021 => x"73810654",
+2022 => x"5a727a2e",
+2023 => x"81d53878",
+2024 => x"15841108",
+2025 => x"81065153",
+2026 => x"72a03878",
+2027 => x"17577981",
+2028 => x"e6388815",
+2029 => x"08537280",
+2030 => x"dec02e82",
+2031 => x"f9388c15",
+2032 => x"08708c15",
+2033 => x"0c738812",
+2034 => x"0c567681",
+2035 => x"0784190c",
+2036 => x"76187771",
+2037 => x"0c537981",
+2038 => x"913883ff",
+2039 => x"772781c8",
+2040 => x"3876892a",
+2041 => x"77832a56",
+2042 => x"5372802e",
+2043 => x"bf387686",
+2044 => x"2ab80555",
+2045 => x"847327b4",
+2046 => x"3880db13",
+2047 => x"55947327",
+2048 => x"ab38768c",
+2049 => x"2a80ee05",
+2050 => x"5580d473",
+2051 => x"279e3876",
+2052 => x"8f2a80f7",
+2053 => x"055582d4",
+2054 => x"73279138",
+2055 => x"76922a80",
+2056 => x"fc05558a",
+2057 => x"d4732784",
+2058 => x"3880fe55",
+2059 => x"74101010",
+2060 => x"80deb805",
+2061 => x"88110855",
+2062 => x"5673762e",
+2063 => x"82b33884",
+2064 => x"1408fc06",
+2065 => x"53767327",
+2066 => x"8d388814",
+2067 => x"08547376",
+2068 => x"2e098106",
+2069 => x"ea388c14",
+2070 => x"08708c1a",
+2071 => x"0c74881a",
+2072 => x"0c788812",
+2073 => x"0c56778c",
+2074 => x"150c7a51",
+2075 => x"ed933f8c",
+2076 => x"3d0d0477",
+2077 => x"08787131",
+2078 => x"59770588",
+2079 => x"19085457",
+2080 => x"7280dec0",
+2081 => x"2e80e038",
+2082 => x"8c180870",
+2083 => x"8c150c73",
+2084 => x"88120c56",
+2085 => x"fe893988",
+2086 => x"15088c16",
+2087 => x"08708c13",
+2088 => x"0c578817",
+2089 => x"0cfea339",
+2090 => x"76832a70",
+2091 => x"54558075",
+2092 => x"24819838",
+2093 => x"72822c81",
+2094 => x"712b80de",
+2095 => x"bc080780",
+2096 => x"deb80b84",
+2097 => x"050c5374",
+2098 => x"10101080",
+2099 => x"deb80588",
+2100 => x"11085556",
+2101 => x"758c190c",
+2102 => x"7388190c",
+2103 => x"7788170c",
+2104 => x"778c150c",
+2105 => x"ff843981",
+2106 => x"5afdb439",
+2107 => x"78177381",
+2108 => x"06545772",
+2109 => x"98387708",
+2110 => x"78713159",
+2111 => x"77058c19",
+2112 => x"08881a08",
+2113 => x"718c120c",
+2114 => x"88120c57",
+2115 => x"57768107",
+2116 => x"84190c77",
+2117 => x"80deb80b",
+2118 => x"88050c80",
+2119 => x"deb40877",
+2120 => x"26fec738",
+2121 => x"80deb008",
+2122 => x"527a51fa",
+2123 => x"fd3f7a51",
+2124 => x"ebcf3ffe",
+2125 => x"ba398178",
+2126 => x"8c150c78",
+2127 => x"88150c73",
+2128 => x"8c1a0c73",
+2129 => x"881a0c5a",
+2130 => x"fd803983",
+2131 => x"1570822c",
+2132 => x"81712b80",
+2133 => x"debc0807",
+2134 => x"80deb80b",
+2135 => x"84050c51",
+2136 => x"53741010",
+2137 => x"1080deb8",
+2138 => x"05881108",
+2139 => x"5556fee4",
+2140 => x"39745380",
+2141 => x"7524a738",
+2142 => x"72822c81",
+2143 => x"712b80de",
+2144 => x"bc080780",
+2145 => x"deb80b84",
+2146 => x"050c5375",
+2147 => x"8c190c73",
+2148 => x"88190c77",
+2149 => x"88170c77",
+2150 => x"8c150cfd",
+2151 => x"cd398315",
+2152 => x"70822c81",
+2153 => x"712b80de",
+2154 => x"bc080780",
+2155 => x"deb80b84",
+2156 => x"050c5153",
+2157 => x"d639f93d",
+2158 => x"0d797b58",
+2159 => x"53800b80",
+2160 => x"d6fc0853",
+2161 => x"5672722e",
+2162 => x"80c03884",
+2163 => x"dc135574",
+2164 => x"762eb738",
+2165 => x"88150884",
+2166 => x"1608ff05",
+2167 => x"54548073",
+2168 => x"249d388c",
+2169 => x"14227090",
+2170 => x"2b70902c",
+2171 => x"51535871",
+2172 => x"80d83880",
+2173 => x"dc14ff14",
+2174 => x"54547280",
+2175 => x"25e53874",
+2176 => x"085574d0",
+2177 => x"3880d6fc",
+2178 => x"085284dc",
+2179 => x"12557480",
+2180 => x"2eb13888",
+2181 => x"15088416",
+2182 => x"08ff0554",
+2183 => x"54807324",
+2184 => x"9c388c14",
+2185 => x"2270902b",
+2186 => x"70902c51",
+2187 => x"535871ad",
+2188 => x"3880dc14",
+2189 => x"ff145454",
+2190 => x"728025e6",
+2191 => x"38740855",
+2192 => x"74d13875",
+2193 => x"800c893d",
+2194 => x"0d047351",
+2195 => x"762d7580",
+2196 => x"080780dc",
+2197 => x"15ff1555",
+2198 => x"5556ff9e",
+2199 => x"39735176",
+2200 => x"2d758008",
+2201 => x"0780dc15",
+2202 => x"ff155555",
+2203 => x"56ca39ea",
+2204 => x"3d0d688c",
+2205 => x"1122700a",
+2206 => x"100a8106",
+2207 => x"57585674",
+2208 => x"80e4388e",
+2209 => x"16227090",
+2210 => x"2b70902c",
+2211 => x"51555880",
+2212 => x"7424b138",
+2213 => x"983dc405",
+2214 => x"53735280",
+2215 => x"d6fc0851",
+2216 => x"86833f80",
+2217 => x"0b800824",
+2218 => x"97387983",
+2219 => x"e0800654",
+2220 => x"7380c080",
+2221 => x"2e818f38",
+2222 => x"73828080",
+2223 => x"2e819138",
+2224 => x"8c162257",
+2225 => x"76908007",
+2226 => x"54738c17",
+2227 => x"23888052",
+2228 => x"80d6fc08",
+2229 => x"51d9d13f",
+2230 => x"80089d38",
+2231 => x"8c162282",
+2232 => x"0754738c",
+2233 => x"172380c3",
+2234 => x"1670770c",
+2235 => x"90170c81",
+2236 => x"0b94170c",
+2237 => x"983d0d04",
+2238 => x"80d6fc08",
+2239 => x"bd930bbc",
+2240 => x"120c548c",
+2241 => x"16228180",
+2242 => x"0754738c",
+2243 => x"17238008",
+2244 => x"760c8008",
+2245 => x"90170c88",
+2246 => x"800b9417",
+2247 => x"0c74802e",
+2248 => x"d3388e16",
+2249 => x"2270902b",
+2250 => x"70902c53",
+2251 => x"55588df3",
+2252 => x"3f800880",
+2253 => x"2effbd38",
+2254 => x"8c162281",
+2255 => x"0754738c",
+2256 => x"1723983d",
+2257 => x"0d04810b",
+2258 => x"8c172258",
+2259 => x"55fef539",
+2260 => x"a8160880",
+2261 => x"c9c92e09",
+2262 => x"8106fee4",
+2263 => x"388c1622",
+2264 => x"88800754",
+2265 => x"738c1723",
+2266 => x"88800b80",
+2267 => x"cc170cfe",
+2268 => x"dc39fc3d",
+2269 => x"0d767971",
+2270 => x"028c059f",
+2271 => x"05335755",
+2272 => x"53558372",
+2273 => x"278a3874",
+2274 => x"83065170",
+2275 => x"802ea238",
+2276 => x"ff125271",
+2277 => x"ff2e9338",
+2278 => x"73737081",
+2279 => x"055534ff",
+2280 => x"125271ff",
+2281 => x"2e098106",
+2282 => x"ef387480",
+2283 => x"0c863d0d",
+2284 => x"04747488",
+2285 => x"2b750770",
+2286 => x"71902b07",
+2287 => x"5154518f",
+2288 => x"7227a538",
+2289 => x"72717084",
+2290 => x"05530c72",
+2291 => x"71708405",
+2292 => x"530c7271",
+2293 => x"70840553",
+2294 => x"0c727170",
+2295 => x"8405530c",
+2296 => x"f0125271",
+2297 => x"8f26dd38",
+2298 => x"83722790",
+2299 => x"38727170",
+2300 => x"8405530c",
+2301 => x"fc125271",
+2302 => x"8326f238",
+2303 => x"7053ff90",
+2304 => x"39f93d0d",
+2305 => x"797c557b",
+2306 => x"548e1122",
+2307 => x"70902b70",
+2308 => x"902c5557",
+2309 => x"80d6fc08",
+2310 => x"53585683",
+2311 => x"f63f8008",
+2312 => x"57800b80",
+2313 => x"08249338",
+2314 => x"80d01608",
+2315 => x"80080580",
+2316 => x"d0170c76",
+2317 => x"800c893d",
+2318 => x"0d048c16",
+2319 => x"2283dfff",
+2320 => x"0655748c",
+2321 => x"17237680",
+2322 => x"0c893d0d",
+2323 => x"04fa3d0d",
+2324 => x"788c1122",
+2325 => x"70882a70",
+2326 => x"81065157",
+2327 => x"585674a9",
+2328 => x"388c1622",
+2329 => x"83dfff06",
+2330 => x"55748c17",
+2331 => x"237a5479",
+2332 => x"538e1622",
+2333 => x"70902b70",
+2334 => x"902c5456",
+2335 => x"80d6fc08",
+2336 => x"525681b2",
+2337 => x"3f883d0d",
+2338 => x"04825480",
+2339 => x"538e1622",
+2340 => x"70902b70",
+2341 => x"902c5456",
+2342 => x"80d6fc08",
+2343 => x"525782bb",
+2344 => x"3f8c1622",
+2345 => x"83dfff06",
+2346 => x"55748c17",
+2347 => x"237a5479",
+2348 => x"538e1622",
+2349 => x"70902b70",
+2350 => x"902c5456",
+2351 => x"80d6fc08",
+2352 => x"525680f2",
+2353 => x"3f883d0d",
+2354 => x"04f93d0d",
+2355 => x"797c557b",
+2356 => x"548e1122",
+2357 => x"70902b70",
+2358 => x"902c5557",
+2359 => x"80d6fc08",
+2360 => x"53585681",
+2361 => x"f63f8008",
+2362 => x"578008ff",
+2363 => x"2e99388c",
+2364 => x"1622a080",
+2365 => x"0755748c",
+2366 => x"17238008",
+2367 => x"80d0170c",
+2368 => x"76800c89",
+2369 => x"3d0d048c",
+2370 => x"162283df",
+2371 => x"ff065574",
+2372 => x"8c172376",
+2373 => x"800c893d",
+2374 => x"0d047070",
+2375 => x"70748e11",
+2376 => x"2270902b",
+2377 => x"70902c55",
+2378 => x"51515380",
+2379 => x"d6fc0851",
+2380 => x"bd3f5050",
+2381 => x"5004fb3d",
+2382 => x"0d800b80",
+2383 => x"e7800c7a",
+2384 => x"53795278",
+2385 => x"51839c3f",
+2386 => x"80085580",
+2387 => x"08ff2e88",
+2388 => x"3874800c",
+2389 => x"873d0d04",
+2390 => x"80e78008",
+2391 => x"5675802e",
+2392 => x"f0387776",
+2393 => x"710c5474",
+2394 => x"800c873d",
+2395 => x"0d047070",
+2396 => x"7070800b",
+2397 => x"80e7800c",
+2398 => x"765185a4",
+2399 => x"3f800853",
+2400 => x"8008ff2e",
+2401 => x"89387280",
+2402 => x"0c505050",
+2403 => x"500480e7",
+2404 => x"80085473",
+2405 => x"802eef38",
+2406 => x"7574710c",
+2407 => x"5272800c",
+2408 => x"50505050",
+2409 => x"04fc3d0d",
+2410 => x"800b80e7",
+2411 => x"800c7852",
+2412 => x"775187d4",
+2413 => x"3f800854",
+2414 => x"8008ff2e",
+2415 => x"88387380",
+2416 => x"0c863d0d",
+2417 => x"0480e780",
+2418 => x"08557480",
+2419 => x"2ef03876",
+2420 => x"75710c53",
+2421 => x"73800c86",
+2422 => x"3d0d04fb",
+2423 => x"3d0d800b",
+2424 => x"80e7800c",
+2425 => x"7a537952",
+2426 => x"785185b0",
+2427 => x"3f800855",
+2428 => x"8008ff2e",
+2429 => x"88387480",
+2430 => x"0c873d0d",
+2431 => x"0480e780",
+2432 => x"08567580",
+2433 => x"2ef03877",
+2434 => x"76710c54",
+2435 => x"74800c87",
+2436 => x"3d0d04fb",
+2437 => x"3d0d800b",
+2438 => x"80e7800c",
+2439 => x"7a537952",
+2440 => x"785182b7",
+2441 => x"3f800855",
+2442 => x"8008ff2e",
+2443 => x"88387480",
+2444 => x"0c873d0d",
+2445 => x"0480e780",
+2446 => x"08567580",
+2447 => x"2ef03877",
+2448 => x"76710c54",
+2449 => x"74800c87",
+2450 => x"3d0d0481",
+2451 => x"0b800c04",
+2452 => x"7072812e",
+2453 => x"8738800b",
+2454 => x"800c5004",
+2455 => x"735180fd",
+2456 => x"3f707070",
+2457 => x"80e78408",
+2458 => x"51708a38",
+2459 => x"80e78c70",
+2460 => x"80e7840c",
+2461 => x"51707512",
+2462 => x"5252ff53",
+2463 => x"7087fb80",
+2464 => x"80268838",
+2465 => x"7080e784",
+2466 => x"0c715372",
+2467 => x"800c5050",
+2468 => x"50047070",
+2469 => x"7070800b",
+2470 => x"80d6f008",
+2471 => x"54547281",
+2472 => x"2e9e3873",
+2473 => x"80e7880c",
+2474 => x"ffbbbe3f",
+2475 => x"ffbad13f",
+2476 => x"80e6c052",
+2477 => x"8151ffbe",
+2478 => x"913f8008",
+2479 => x"51879b3f",
+2480 => x"7280e788",
+2481 => x"0cffbba1",
+2482 => x"3fffbab4",
+2483 => x"3f80e6c0",
+2484 => x"528151ff",
+2485 => x"bdf43f80",
+2486 => x"085186fe",
+2487 => x"3f00ff39",
+2488 => x"00ff39f5",
+2489 => x"3d0d7e60",
+2490 => x"80e78808",
+2491 => x"705b585b",
+2492 => x"5b7580c5",
+2493 => x"38777a25",
+2494 => x"a238771b",
+2495 => x"70337081",
+2496 => x"ff065858",
+2497 => x"59758a2e",
+2498 => x"99387681",
+2499 => x"ff0651ff",
+2500 => x"bab83f81",
+2501 => x"18587978",
+2502 => x"24e03879",
+2503 => x"800c8d3d",
+2504 => x"0d048d51",
+2505 => x"ffbaa33f",
+2506 => x"78337081",
+2507 => x"ff065257",
+2508 => x"ffba973f",
+2509 => x"811858de",
+2510 => x"3979557a",
+2511 => x"547d5385",
+2512 => x"528d3dfc",
+2513 => x"0551ffb9",
+2514 => x"e13f8008",
+2515 => x"5686843f",
+2516 => x"7b80080c",
+2517 => x"75800c8d",
+2518 => x"3d0d04f6",
+2519 => x"3d0d7d7f",
+2520 => x"80e78808",
+2521 => x"705a585a",
+2522 => x"5a7580c4",
+2523 => x"38767925",
+2524 => x"b238761a",
+2525 => x"56ffb9b4",
+2526 => x"3f800876",
+2527 => x"34800b80",
+2528 => x"0881ff06",
+2529 => x"5758758a",
+2530 => x"2ea23875",
+2531 => x"8d327030",
+2532 => x"7080257a",
+2533 => x"07515156",
+2534 => x"75b83881",
+2535 => x"17577877",
+2536 => x"24d03876",
+2537 => x"5675800c",
+2538 => x"8c3d0d04",
+2539 => x"8158dc39",
+2540 => x"78557954",
+2541 => x"7c538452",
+2542 => x"8c3dfc05",
+2543 => x"51ffb8ea",
+2544 => x"3f800856",
+2545 => x"858d3f7a",
+2546 => x"80080c75",
+2547 => x"800c8c3d",
+2548 => x"0d048117",
+2549 => x"56cf39f9",
+2550 => x"3d0d7957",
+2551 => x"80e78808",
+2552 => x"802ead38",
+2553 => x"7651c8f8",
+2554 => x"3f7b567a",
+2555 => x"55800881",
+2556 => x"05547653",
+2557 => x"8252893d",
+2558 => x"fc0551ff",
+2559 => x"b8ac3f80",
+2560 => x"085784cf",
+2561 => x"3f778008",
+2562 => x"0c76800c",
+2563 => x"893d0d04",
+2564 => x"84c13f85",
+2565 => x"0b80080c",
+2566 => x"ff0b800c",
+2567 => x"893d0d04",
+2568 => x"fb3d0d80",
+2569 => x"e7880870",
+2570 => x"56547388",
+2571 => x"3874800c",
+2572 => x"873d0d04",
+2573 => x"77538352",
+2574 => x"873dfc05",
+2575 => x"51ffb7ea",
+2576 => x"3f800854",
+2577 => x"848d3f75",
+2578 => x"80080c73",
+2579 => x"800c873d",
+2580 => x"0d04ff0b",
+2581 => x"800c04fb",
+2582 => x"3d0d7755",
+2583 => x"80e78808",
+2584 => x"802ea938",
+2585 => x"7451c7f8",
+2586 => x"3f800881",
+2587 => x"05547453",
+2588 => x"8752873d",
+2589 => x"fc0551ff",
+2590 => x"b7b03f80",
+2591 => x"085583d3",
+2592 => x"3f758008",
+2593 => x"0c74800c",
+2594 => x"873d0d04",
+2595 => x"83c53f85",
+2596 => x"0b80080c",
+2597 => x"ff0b800c",
+2598 => x"873d0d04",
+2599 => x"fa3d0d80",
+2600 => x"e7880880",
+2601 => x"2ea3387a",
+2602 => x"55795478",
+2603 => x"53865288",
+2604 => x"3dfc0551",
+2605 => x"ffb6f33f",
+2606 => x"80085683",
+2607 => x"963f7680",
+2608 => x"080c7580",
+2609 => x"0c883d0d",
+2610 => x"0483883f",
+2611 => x"9d0b8008",
+2612 => x"0cff0b80",
+2613 => x"0c883d0d",
+2614 => x"04fb3d0d",
+2615 => x"77795656",
+2616 => x"80705454",
+2617 => x"7375259f",
+2618 => x"38741010",
+2619 => x"10f80552",
+2620 => x"72167033",
+2621 => x"70742b76",
+2622 => x"078116f8",
+2623 => x"16565656",
+2624 => x"51517473",
+2625 => x"24ea3873",
+2626 => x"800c873d",
+2627 => x"0d04fc3d",
+2628 => x"0d767855",
+2629 => x"55bc5380",
+2630 => x"527351f4",
+2631 => x"d53f8452",
+2632 => x"7451ffb5",
+2633 => x"3f800874",
+2634 => x"23845284",
+2635 => x"1551ffa9",
+2636 => x"3f800882",
+2637 => x"15238452",
+2638 => x"881551ff",
+2639 => x"9c3f8008",
+2640 => x"84150c84",
+2641 => x"528c1551",
+2642 => x"ff8f3f80",
+2643 => x"08881523",
+2644 => x"84529015",
+2645 => x"51ff823f",
+2646 => x"80088a15",
+2647 => x"23845294",
+2648 => x"1551fef5",
+2649 => x"3f80088c",
+2650 => x"15238452",
+2651 => x"981551fe",
+2652 => x"e83f8008",
+2653 => x"8e152388",
+2654 => x"529c1551",
+2655 => x"fedb3f80",
+2656 => x"0890150c",
+2657 => x"863d0d04",
+2658 => x"e93d0d6a",
+2659 => x"80e78808",
+2660 => x"57577593",
+2661 => x"3880c080",
+2662 => x"0b84180c",
+2663 => x"75ac180c",
+2664 => x"75800c99",
+2665 => x"3d0d0489",
+2666 => x"3d70556a",
+2667 => x"54558a52",
+2668 => x"993dffbc",
+2669 => x"0551ffb4",
+2670 => x"f13f8008",
+2671 => x"77537552",
+2672 => x"56fecb3f",
+2673 => x"818d3f77",
+2674 => x"80080c75",
+2675 => x"800c993d",
+2676 => x"0d04e93d",
+2677 => x"0d695780",
+2678 => x"e7880880",
+2679 => x"2eb63876",
+2680 => x"51c4fd3f",
+2681 => x"893d7056",
+2682 => x"80088105",
+2683 => x"55775456",
+2684 => x"8f52993d",
+2685 => x"ffbc0551",
+2686 => x"ffb4af3f",
+2687 => x"80086b53",
+2688 => x"765257fe",
+2689 => x"893f80cb",
+2690 => x"3f778008",
+2691 => x"0c76800c",
+2692 => x"993d0d04",
+2693 => x"be3f850b",
+2694 => x"80080cff",
+2695 => x"0b800c99",
+2696 => x"3d0d04fc",
+2697 => x"3d0d8154",
+2698 => x"80e78808",
+2699 => x"88387380",
+2700 => x"0c863d0d",
+2701 => x"04765397",
+2702 => x"b952863d",
+2703 => x"fc0551ff",
+2704 => x"b3e83f80",
+2705 => x"08548c3f",
+2706 => x"7480080c",
+2707 => x"73800c86",
+2708 => x"3d0d0480",
+2709 => x"d6fc0880",
+2710 => x"0c04f73d",
+2711 => x"0d7b80d6",
+2712 => x"fc0882c8",
+2713 => x"11085a54",
+2714 => x"5a77802e",
+2715 => x"80da3881",
+2716 => x"88188419",
+2717 => x"08ff0581",
+2718 => x"712b5955",
+2719 => x"59807424",
+2720 => x"80ea3880",
+2721 => x"7424b538",
+2722 => x"73822b78",
+2723 => x"11880556",
+2724 => x"56818019",
+2725 => x"08770653",
+2726 => x"72802eb6",
+2727 => x"38781670",
+2728 => x"08535379",
+2729 => x"51740853",
+2730 => x"722dff14",
+2731 => x"fc17fc17",
+2732 => x"79812c5a",
+2733 => x"57575473",
+2734 => x"8025d638",
+2735 => x"77085877",
+2736 => x"ffad3880",
+2737 => x"d6fc0853",
+2738 => x"bc1308a5",
+2739 => x"387951f8",
+2740 => x"8c3f7408",
+2741 => x"53722dff",
+2742 => x"14fc17fc",
+2743 => x"1779812c",
+2744 => x"5a575754",
+2745 => x"738025ff",
+2746 => x"a838d139",
+2747 => x"8057ff93",
+2748 => x"397251bc",
+2749 => x"13085372",
+2750 => x"2d7951f7",
+2751 => x"e03f7070",
+2752 => x"80e6c80b",
+2753 => x"fc057008",
+2754 => x"525270ff",
+2755 => x"2e913870",
+2756 => x"2dfc1270",
+2757 => x"08525270",
+2758 => x"ff2e0981",
+2759 => x"06f13850",
+2760 => x"500404ff",
+2761 => x"b4c73f04",
+2762 => x"48656c6c",
+2763 => x"6f20776f",
+2764 => x"726c6420",
+2765 => x"310a0000",
+2766 => x"48656c6c",
+2767 => x"6f20776f",
+2768 => x"726c6420",
+2769 => x"320a0000",
+2770 => x"0a000000",
+2771 => x"43000000",
+2772 => x"64756d6d",
+2773 => x"792e6578",
+2774 => x"65000000",
+2775 => x"00ffffff",
+2776 => x"ff00ffff",
+2777 => x"ffff00ff",
+2778 => x"ffffff00",
+2779 => x"00000000",
+2780 => x"00000000",
+2781 => x"00000000",
+2782 => x"00003350",
+2783 => x"00002b80",
+2784 => x"00000000",
+2785 => x"00002de8",
+2786 => x"00002e44",
+2787 => x"00002ea0",
+2788 => x"00000000",
+2789 => x"00000000",
+2790 => x"00000000",
+2791 => x"00000000",
+2792 => x"00000000",
+2793 => x"00000000",
+2794 => x"00000000",
+2795 => x"00000000",
+2796 => x"00000000",
+2797 => x"00002b4c",
+2798 => x"00000000",
+2799 => x"00000000",
+2800 => x"00000000",
+2801 => x"00000000",
+2802 => x"00000000",
+2803 => x"00000000",
+2804 => x"00000000",
+2805 => x"00000000",
+2806 => x"00000000",
+2807 => x"00000000",
+2808 => x"00000000",
+2809 => x"00000000",
+2810 => x"00000000",
+2811 => x"00000000",
+2812 => x"00000000",
+2813 => x"00000000",
+2814 => x"00000000",
+2815 => x"00000000",
+2816 => x"00000000",
+2817 => x"00000000",
+2818 => x"00000000",
+2819 => x"00000000",
+2820 => x"00000000",
+2821 => x"00000000",
+2822 => x"00000000",
+2823 => x"00000000",
+2824 => x"00000000",
+2825 => x"00000000",
+2826 => x"00000001",
+2827 => x"330eabcd",
+2828 => x"1234e66d",
+2829 => x"deec0005",
+2830 => x"000b0000",
+2831 => x"00000000",
+2832 => x"00000000",
+2833 => x"00000000",
+2834 => x"00000000",
+2835 => x"00000000",
+2836 => x"00000000",
+2837 => x"00000000",
+2838 => x"00000000",
+2839 => x"00000000",
+2840 => x"00000000",
+2841 => x"00000000",
+2842 => x"00000000",
+2843 => x"00000000",
+2844 => x"00000000",
+2845 => x"00000000",
+2846 => x"00000000",
+2847 => x"00000000",
+2848 => x"00000000",
+2849 => x"00000000",
+2850 => x"00000000",
+2851 => x"00000000",
+2852 => x"00000000",
+2853 => x"00000000",
+2854 => x"00000000",
+2855 => x"00000000",
+2856 => x"00000000",
+2857 => x"00000000",
+2858 => x"00000000",
+2859 => x"00000000",
+2860 => x"00000000",
+2861 => x"00000000",
+2862 => x"00000000",
+2863 => x"00000000",
+2864 => x"00000000",
+2865 => x"00000000",
+2866 => x"00000000",
+2867 => x"00000000",
+2868 => x"00000000",
+2869 => x"00000000",
+2870 => x"00000000",
+2871 => x"00000000",
+2872 => x"00000000",
+2873 => x"00000000",
+2874 => x"00000000",
+2875 => x"00000000",
+2876 => x"00000000",
+2877 => x"00000000",
+2878 => x"00000000",
+2879 => x"00000000",
+2880 => x"00000000",
+2881 => x"00000000",
+2882 => x"00000000",
+2883 => x"00000000",
+2884 => x"00000000",
+2885 => x"00000000",
+2886 => x"00000000",
+2887 => x"00000000",
+2888 => x"00000000",
+2889 => x"00000000",
+2890 => x"00000000",
+2891 => x"00000000",
+2892 => x"00000000",
+2893 => x"00000000",
+2894 => x"00000000",
+2895 => x"00000000",
+2896 => x"00000000",
+2897 => x"00000000",
+2898 => x"00000000",
+2899 => x"00000000",
+2900 => x"00000000",
+2901 => x"00000000",
+2902 => x"00000000",
+2903 => x"00000000",
+2904 => x"00000000",
+2905 => x"00000000",
+2906 => x"00000000",
+2907 => x"00000000",
+2908 => x"00000000",
+2909 => x"00000000",
+2910 => x"00000000",
+2911 => x"00000000",
+2912 => x"00000000",
+2913 => x"00000000",
+2914 => x"00000000",
+2915 => x"00000000",
+2916 => x"00000000",
+2917 => x"00000000",
+2918 => x"00000000",
+2919 => x"00000000",
+2920 => x"00000000",
+2921 => x"00000000",
+2922 => x"00000000",
+2923 => x"00000000",
+2924 => x"00000000",
+2925 => x"00000000",
+2926 => x"00000000",
+2927 => x"00000000",
+2928 => x"00000000",
+2929 => x"00000000",
+2930 => x"00000000",
+2931 => x"00000000",
+2932 => x"00000000",
+2933 => x"00000000",
+2934 => x"00000000",
+2935 => x"00000000",
+2936 => x"00000000",
+2937 => x"00000000",
+2938 => x"00000000",
+2939 => x"00000000",
+2940 => x"00000000",
+2941 => x"00000000",
+2942 => x"00000000",
+2943 => x"00000000",
+2944 => x"00000000",
+2945 => x"00000000",
+2946 => x"00000000",
+2947 => x"00000000",
+2948 => x"00000000",
+2949 => x"00000000",
+2950 => x"00000000",
+2951 => x"00000000",
+2952 => x"00000000",
+2953 => x"00000000",
+2954 => x"00000000",
+2955 => x"00000000",
+2956 => x"00000000",
+2957 => x"00000000",
+2958 => x"00000000",
+2959 => x"00000000",
+2960 => x"00000000",
+2961 => x"00000000",
+2962 => x"00000000",
+2963 => x"00000000",
+2964 => x"00000000",
+2965 => x"00000000",
+2966 => x"00000000",
+2967 => x"00000000",
+2968 => x"00000000",
+2969 => x"00000000",
+2970 => x"00000000",
+2971 => x"00000000",
+2972 => x"00000000",
+2973 => x"00000000",
+2974 => x"00000000",
+2975 => x"00000000",
+2976 => x"00000000",
+2977 => x"00000000",
+2978 => x"00000000",
+2979 => x"00000000",
+2980 => x"00000000",
+2981 => x"00000000",
+2982 => x"00000000",
+2983 => x"00000000",
+2984 => x"00000000",
+2985 => x"00000000",
+2986 => x"00000000",
+2987 => x"00000000",
+2988 => x"00000000",
+2989 => x"00000000",
+2990 => x"00000000",
+2991 => x"00000000",
+2992 => x"00000000",
+2993 => x"00000000",
+2994 => x"00000000",
+2995 => x"00000000",
+2996 => x"00000000",
+2997 => x"00000000",
+2998 => x"00000000",
+2999 => x"00000000",
+3000 => x"00000000",
+3001 => x"00000000",
+3002 => x"00000000",
+3003 => x"00000000",
+3004 => x"00000000",
+3005 => x"00000000",
+3006 => x"00000000",
+3007 => x"00000000",
+3008 => x"00000000",
+3009 => x"00000000",
+3010 => x"00000000",
+3011 => x"00000000",
+3012 => x"00000000",
+3013 => x"00000000",
+3014 => x"00000000",
+3015 => x"00000000",
+3016 => x"00000000",
+3017 => x"00000000",
+3018 => x"00000000",
+3019 => x"ffffffff",
+3020 => x"00000000",
+3021 => x"00020000",
+3022 => x"00000000",
+3023 => x"00000000",
+3024 => x"00002f38",
+3025 => x"00002f38",
+3026 => x"00002f40",
+3027 => x"00002f40",
+3028 => x"00002f48",
+3029 => x"00002f48",
+3030 => x"00002f50",
+3031 => x"00002f50",
+3032 => x"00002f58",
+3033 => x"00002f58",
+3034 => x"00002f60",
+3035 => x"00002f60",
+3036 => x"00002f68",
+3037 => x"00002f68",
+3038 => x"00002f70",
+3039 => x"00002f70",
+3040 => x"00002f78",
+3041 => x"00002f78",
+3042 => x"00002f80",
+3043 => x"00002f80",
+3044 => x"00002f88",
+3045 => x"00002f88",
+3046 => x"00002f90",
+3047 => x"00002f90",
+3048 => x"00002f98",
+3049 => x"00002f98",
+3050 => x"00002fa0",
+3051 => x"00002fa0",
+3052 => x"00002fa8",
+3053 => x"00002fa8",
+3054 => x"00002fb0",
+3055 => x"00002fb0",
+3056 => x"00002fb8",
+3057 => x"00002fb8",
+3058 => x"00002fc0",
+3059 => x"00002fc0",
+3060 => x"00002fc8",
+3061 => x"00002fc8",
+3062 => x"00002fd0",
+3063 => x"00002fd0",
+3064 => x"00002fd8",
+3065 => x"00002fd8",
+3066 => x"00002fe0",
+3067 => x"00002fe0",
+3068 => x"00002fe8",
+3069 => x"00002fe8",
+3070 => x"00002ff0",
+3071 => x"00002ff0",
+3072 => x"00002ff8",
+3073 => x"00002ff8",
+3074 => x"00003000",
+3075 => x"00003000",
+3076 => x"00003008",
+3077 => x"00003008",
+3078 => x"00003010",
+3079 => x"00003010",
+3080 => x"00003018",
+3081 => x"00003018",
+3082 => x"00003020",
+3083 => x"00003020",
+3084 => x"00003028",
+3085 => x"00003028",
+3086 => x"00003030",
+3087 => x"00003030",
+3088 => x"00003038",
+3089 => x"00003038",
+3090 => x"00003040",
+3091 => x"00003040",
+3092 => x"00003048",
+3093 => x"00003048",
+3094 => x"00003050",
+3095 => x"00003050",
+3096 => x"00003058",
+3097 => x"00003058",
+3098 => x"00003060",
+3099 => x"00003060",
+3100 => x"00003068",
+3101 => x"00003068",
+3102 => x"00003070",
+3103 => x"00003070",
+3104 => x"00003078",
+3105 => x"00003078",
+3106 => x"00003080",
+3107 => x"00003080",
+3108 => x"00003088",
+3109 => x"00003088",
+3110 => x"00003090",
+3111 => x"00003090",
+3112 => x"00003098",
+3113 => x"00003098",
+3114 => x"000030a0",
+3115 => x"000030a0",
+3116 => x"000030a8",
+3117 => x"000030a8",
+3118 => x"000030b0",
+3119 => x"000030b0",
+3120 => x"000030b8",
+3121 => x"000030b8",
+3122 => x"000030c0",
+3123 => x"000030c0",
+3124 => x"000030c8",
+3125 => x"000030c8",
+3126 => x"000030d0",
+3127 => x"000030d0",
+3128 => x"000030d8",
+3129 => x"000030d8",
+3130 => x"000030e0",
+3131 => x"000030e0",
+3132 => x"000030e8",
+3133 => x"000030e8",
+3134 => x"000030f0",
+3135 => x"000030f0",
+3136 => x"000030f8",
+3137 => x"000030f8",
+3138 => x"00003100",
+3139 => x"00003100",
+3140 => x"00003108",
+3141 => x"00003108",
+3142 => x"00003110",
+3143 => x"00003110",
+3144 => x"00003118",
+3145 => x"00003118",
+3146 => x"00003120",
+3147 => x"00003120",
+3148 => x"00003128",
+3149 => x"00003128",
+3150 => x"00003130",
+3151 => x"00003130",
+3152 => x"00003138",
+3153 => x"00003138",
+3154 => x"00003140",
+3155 => x"00003140",
+3156 => x"00003148",
+3157 => x"00003148",
+3158 => x"00003150",
+3159 => x"00003150",
+3160 => x"00003158",
+3161 => x"00003158",
+3162 => x"00003160",
+3163 => x"00003160",
+3164 => x"00003168",
+3165 => x"00003168",
+3166 => x"00003170",
+3167 => x"00003170",
+3168 => x"00003178",
+3169 => x"00003178",
+3170 => x"00003180",
+3171 => x"00003180",
+3172 => x"00003188",
+3173 => x"00003188",
+3174 => x"00003190",
+3175 => x"00003190",
+3176 => x"00003198",
+3177 => x"00003198",
+3178 => x"000031a0",
+3179 => x"000031a0",
+3180 => x"000031a8",
+3181 => x"000031a8",
+3182 => x"000031b0",
+3183 => x"000031b0",
+3184 => x"000031b8",
+3185 => x"000031b8",
+3186 => x"000031c0",
+3187 => x"000031c0",
+3188 => x"000031c8",
+3189 => x"000031c8",
+3190 => x"000031d0",
+3191 => x"000031d0",
+3192 => x"000031d8",
+3193 => x"000031d8",
+3194 => x"000031e0",
+3195 => x"000031e0",
+3196 => x"000031e8",
+3197 => x"000031e8",
+3198 => x"000031f0",
+3199 => x"000031f0",
+3200 => x"000031f8",
+3201 => x"000031f8",
+3202 => x"00003200",
+3203 => x"00003200",
+3204 => x"00003208",
+3205 => x"00003208",
+3206 => x"00003210",
+3207 => x"00003210",
+3208 => x"00003218",
+3209 => x"00003218",
+3210 => x"00003220",
+3211 => x"00003220",
+3212 => x"00003228",
+3213 => x"00003228",
+3214 => x"00003230",
+3215 => x"00003230",
+3216 => x"00003238",
+3217 => x"00003238",
+3218 => x"00003240",
+3219 => x"00003240",
+3220 => x"00003248",
+3221 => x"00003248",
+3222 => x"00003250",
+3223 => x"00003250",
+3224 => x"00003258",
+3225 => x"00003258",
+3226 => x"00003260",
+3227 => x"00003260",
+3228 => x"00003268",
+3229 => x"00003268",
+3230 => x"00003270",
+3231 => x"00003270",
+3232 => x"00003278",
+3233 => x"00003278",
+3234 => x"00003280",
+3235 => x"00003280",
+3236 => x"00003288",
+3237 => x"00003288",
+3238 => x"00003290",
+3239 => x"00003290",
+3240 => x"00003298",
+3241 => x"00003298",
+3242 => x"000032a0",
+3243 => x"000032a0",
+3244 => x"000032a8",
+3245 => x"000032a8",
+3246 => x"000032b0",
+3247 => x"000032b0",
+3248 => x"000032b8",
+3249 => x"000032b8",
+3250 => x"000032c0",
+3251 => x"000032c0",
+3252 => x"000032c8",
+3253 => x"000032c8",
+3254 => x"000032d0",
+3255 => x"000032d0",
+3256 => x"000032d8",
+3257 => x"000032d8",
+3258 => x"000032e0",
+3259 => x"000032e0",
+3260 => x"000032e8",
+3261 => x"000032e8",
+3262 => x"000032f0",
+3263 => x"000032f0",
+3264 => x"000032f8",
+3265 => x"000032f8",
+3266 => x"00003300",
+3267 => x"00003300",
+3268 => x"00003308",
+3269 => x"00003308",
+3270 => x"00003310",
+3271 => x"00003310",
+3272 => x"00003318",
+3273 => x"00003318",
+3274 => x"00003320",
+3275 => x"00003320",
+3276 => x"00003328",
+3277 => x"00003328",
+3278 => x"00003330",
+3279 => x"00003330",
+3280 => x"00002b50",
+3281 => x"ffffffff",
+3282 => x"00000000",
+3283 => x"ffffffff",
+3284 => x"00000000",
+ others => x"00000000"
+);
+
+begin
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memAWriteEnable = '1') then
+ ram(conv_integer(memAAddr)) := memAWrite;
+ memARead <= memAWrite;
+ else
+ memARead <= ram(conv_integer(memAAddr));
+ end if;
+ end if;
+end process;
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memBWriteEnable = '1') then
+ ram(conv_integer(memBAddr)) := memBWrite;
+ memBRead <= memBWrite;
+ else
+ memBRead <= ram(conv_integer(memBAddr));
+ end if;
+ end if;
+end process;
+
+
+
+
+end dualport_ram_arch;
diff --git a/zpu/hdl/zpu3/src/ic300.bitgen b/zpu/hdl/zpu3/src/ic300.bitgen
new file mode 100644
index 0000000..1095099
--- /dev/null
+++ b/zpu/hdl/zpu3/src/ic300.bitgen
@@ -0,0 +1,27 @@
+-g DebugBitstream:No
+-g Binary:yes
+-g CRC:Enable
+-g ConfigRate:50
+-g CclkPin:Pullnone
+-g M0Pin:Pullnone
+-g M1Pin:Pullnone
+-g M2Pin:Pullnone
+-g ProgPin:PullUp
+-g DonePin:Pullnone
+-g TckPin:Pullnone
+-g TdiPin:Pullnone
+-g TdoPin:Pullnone
+-g TmsPin:Pullnone
+-g UnusedPin:Pullnone
+-g UserID:0xFFFFFFFF
+-g DCMShutDown:Disable
+-g DCIUpdateMode:AsRequired
+-g StartUpClk:CClk
+-g DONE_cycle:4
+-g GTS_cycle:5
+-g GWE_cycle:6
+-g LCK_cycle:NoWait
+-g Security:Level1
+-g DonePipe:No
+-g DriveDone:Yes
+
diff --git a/zpu/hdl/zpu3/src/ic300.lso b/zpu/hdl/zpu3/src/ic300.lso
new file mode 100644
index 0000000..22de730
--- /dev/null
+++ b/zpu/hdl/zpu3/src/ic300.lso
@@ -0,0 +1 @@
+work
diff --git a/zpu/hdl/zpu3/src/ic300.ucf b/zpu/hdl/zpu3/src/ic300.ucf
new file mode 100644
index 0000000..e11357f
--- /dev/null
+++ b/zpu/hdl/zpu3/src/ic300.ucf
@@ -0,0 +1,146 @@
+# clock inputs
+net "cpu_clk_p" loc = "R9" | iostandard=LVTTL;
+
+# input pins
+net "cpu_a_p(0)" loc = "N15" | iostandard=LVTTL;
+net "cpu_a_p(1)" loc = "P16" | iostandard=LVTTL;
+net "cpu_a_p(2)" loc = "P13" | iostandard=LVTTL;
+net "cpu_a_p(3)" loc = "N16" | iostandard=LVTTL;
+net "cpu_a_p(4)" loc = "P15" | iostandard=LVTTL;
+net "cpu_a_p(5)" loc = "R11" | iostandard=LVTTL;
+net "cpu_a_p(6)" loc = "T14" | iostandard=LVTTL;
+net "cpu_a_p(7)" loc = "R16" | iostandard=LVTTL;
+net "cpu_a_p(8)" loc = "P14" | iostandard=LVTTL;
+net "cpu_a_p(9)" loc = "T13" | iostandard=LVTTL;
+net "cpu_a_p(10)" loc = "R13" | iostandard=LVTTL;
+net "cpu_a_p(11)" loc = "P7" | iostandard=LVTTL;
+net "cpu_a_p(12)" loc = "N12" | iostandard=LVTTL;
+net "cpu_a_p(13)" loc = "R12" | iostandard=LVTTL;
+net "cpu_a_p(14)" loc = "L13" | iostandard=LVTTL;
+net "cpu_a_p(15)" loc = "K12" | iostandard=LVTTL;
+net "cpu_a_p(16)" loc = "K15" | iostandard=LVTTL;
+net "cpu_a_p(17)" loc = "T10" | iostandard=LVTTL;
+net "cpu_a_p(18)" loc = "T9" | iostandard=LVTTL;
+net "cpu_a_p(19)" loc = "N10" | iostandard=LVTTL;
+net "cpu_a_p(20)" loc = "T8" | iostandard=LVTTL;
+net "cpu_wr_n_p(0)" loc = "L15" | iostandard=LVTTL;
+net "cpu_wr_n_p(1)" loc = "N14" | iostandard=LVTTL;
+net "cpu_oe_n_p" loc = "T12" | iostandard=LVTTL;
+net "cpu_cs_n_p(1)" loc = "R3" | iostandard=LVTTL;
+net "cpu_cs_n_p(2)" loc = "M16" | iostandard=LVTTL;
+net "cpu_cs_n_p(3)" loc = "P11" | iostandard=LVTTL;
+
+#net "sdr_clk_fb_p" loc = "B8" | iostandard=SSTL2_I;
+
+# output pins
+net "cpu_fiq_p" loc = "K16" | iostandard=LVTTL;
+net "cpu_irq_p(0)" loc = "M14" | iostandard=LVTTL;
+net "cpu_irq_p(1)" loc = "J16" | iostandard=LVTTL;
+net "cpu_wait_n_p" loc = "M15" | iostandard=LVTTL;
+
+#net "sdr_clk_p" loc = "D8" | iostandard=SSTL2_I | FAST;
+#net "sdr_clk_n_p" loc = "F5" | iostandard=SSTL2_I | FAST;
+#net "cke_q_p" loc = "F4" | iostandard=SSTL2_I | FAST;
+#net "cs_qn_p" loc = "M2" | iostandard=SSTL2_I | FAST | PULLUP;
+#net "ras_qn_p" loc = "J2" | iostandard=SSTL2_I | FAST | PULLUP | NODELAY;
+#net "cas_qn_p" loc = "M3" | iostandard=SSTL2_I | FAST | PULLUP | NODELAY;
+#net "we_qn_p" loc = "K4" | iostandard=SSTL2_I | FAST | PULLUP | NODELAY;
+#net "dm_q_p(0)" loc = "L4" | iostandard=SSTL2_I | FAST;
+#net "dm_q_p(1)" loc = "E4" | iostandard=SSTL2_I | FAST;
+#net "dqs_q_p(0)" loc = "L3" | iostandard=SSTL2_I | FAST;
+#net "dqs_q_p(1)" loc = "D3" | iostandard=SSTL2_I | FAST;
+#net "ba_q_p(0)" loc = "M1" | iostandard=SSTL2_I | FAST;
+#net "ba_q_p(1)" loc = "J3" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(0)" loc = "J4" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(1)" loc = "N2" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(2)" loc = "H4" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(3)" loc = "P2" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(4)" loc = "E7" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(5)" loc = "G4" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(6)" loc = "D7" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(7)" loc = "G5" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(8)" loc = "C7" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(9)" loc = "F3" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(10)" loc = "N3" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(11)" loc = "E6" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(12)" loc = "D6" | iostandard=SSTL2_I | FAST;
+
+# bidirectional pins
+net "cpu_d_p(0)" loc = "M11" | iostandard=LVTTL;
+net "cpu_d_p(1)" loc = "N11" | iostandard=LVTTL;
+net "cpu_d_p(2)" loc = "P10" | iostandard=LVTTL;
+net "cpu_d_p(3)" loc = "R10" | iostandard=LVTTL;
+net "cpu_d_p(4)" loc = "T7" | iostandard=LVTTL;
+net "cpu_d_p(5)" loc = "R7" | iostandard=LVTTL;
+net "cpu_d_p(6)" loc = "N6" | iostandard=LVTTL;
+net "cpu_d_p(7)" loc = "M6" | iostandard=LVTTL;
+net "cpu_d_p(8)" loc = "K13" | iostandard=LVTTL;
+net "cpu_d_p(9)" loc = "M10" | iostandard=LVTTL;
+net "cpu_d_p(10)" loc = "L12" | iostandard=LVTTL;
+net "cpu_d_p(11)" loc = "M13" | iostandard=LVTTL;
+net "cpu_d_p(12)" loc = "K14" | iostandard=LVTTL;
+net "cpu_d_p(13)" loc = "L14" | iostandard=LVTTL;
+net "cpu_d_p(14)" loc = "J13" | iostandard=LVTTL;
+net "cpu_d_p(15)" loc = "J14" | iostandard=LVTTL;
+
+#net "sdr_d_p(0)" loc = "G1" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(1)" loc = "H3" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(2)" loc = "G3" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(3)" loc = "K2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(4)" loc = "F2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(5)" loc = "L2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(6)" loc = "E1" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(7)" loc = "M4" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(8)" loc = "C6" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(9)" loc = "E2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(10)" loc = "C2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(11)" loc = "D1" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(12)" loc = "B7" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(13)" loc = "D2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(14)" loc = "B6" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(15)" loc = "B5" | iostandard=SSTL2_I | NODELAY | FAST;
+
+# TIMING
+# Create timing names
+NET "cpu_clk_p" TNM_NET = "cpu_clk_p";
+NET "sdr_clk_fb_p" TNM_NET = "sdr_clk_fb_p";
+#NET "cpu_clk" TNM_NET = "cpu_clk";
+#NET "cpu_clk_2x" TNM_NET = "cpu_clk_2x";
+#NET "cpu_clk_4x" TNM_NET = "cpu_clk_4x";
+#NET "ddr_in_clk" TNM_NET = "ddr_in_clk";
+#NET "ddr_in_clk_2x" TNM_NET = "ddr_in_clk_2x";
+
+## Create timing
+
+# Periode timing
+TIMESPEC "TS_cpu_clk" = PERIOD "cpu_clk_p" 15.6 ns HIGH 50 %;
+#TIMESPEC "TS_sdr_clk_fb_p" = PERIOD "sdr_clk_fb_p" 7.8 ns HIGH 50 %;
+
+# Clock domain crossing timing
+#TIMESPEC "TS_cpu1_to_cpu2" = FROM "cpu_clk" TO "cpu_clk_2x" 7.8 ns;
+#TIMESPEC "TS_cpu1_to_cpu4" = FROM "cpu_clk" TO "cpu_clk_4x" 3.9 ns;
+#TIMESPEC "TS_cpu1_to_ddr2" = FROM "cpu_clk" TO "ddr_in_clk" 7.8 ns;
+#TIMESPEC "TS_cpu1_to_ddr2_2x" = FROM "cpu_clk" TO "ddr_in_clk_2x" 3.9 ns;
+
+#TIMESPEC "TS_cpu2_to_cpu1" = FROM "cpu_clk_2x" TO "cpu_clk" 7.8 ns;
+#TIMESPEC "TS_cpu2_to_cpu4" = FROM "cpu_clk_2x" TO "cpu_clk_4x" 3.9 ns;
+#TIMESPEC "TS_cpu2_to_ddr2" = FROM "cpu_clk_2x" TO "ddr_in_clk" 7.8 ns;
+#TIMESPEC "TS_cpu2_to_ddr_2x" = FROM "cpu_clk_2x" TO "ddr_in_clk_2x" 3.9 ns;
+
+#TIMESPEC "TS_cpu4_to_cpu1" = FROM "cpu_clk_4x" TO "cpu_clk" 3.9 ns;
+#TIMESPEC "TS_cpu4_to_cpu2" = FROM "cpu_clk_4x" TO "cpu_clk_2x" 3.9 ns;
+#TIMESPEC "TS_cpu4_to_ddr2" = FROM "cpu_clk_4x" TO "ddr_in_clk" 3.9 ns;
+#TIMESPEC "TS_cpu4_to_ddr2_2x" = FROM "cpu_clk_4x" TO "ddr_in_clk_2x" 3.9 ns;
+
+#TIMESPEC "TS_ddr2_to_cpu1" = FROM "ddr_in_clk" TO "cpu_clk" 7.8 ns;
+#TIMESPEC "TS_ddr2_to_cpu2" = FROM "ddr_in_clk" TO "cpu_clk_2x" 7.8 ns;
+#TIMESPEC "TS_ddr2_to_cpu4" = FROM "ddr_in_clk" TO "cpu_clk_4x" 3.9 ns;
+#TIMESPEC "TS_ddr2_to_ddr2_2x" = FROM "ddr_in_clk" TO "ddr_in_clk_2x" 3.9 ns;
+
+#TIMESPEC "TS_ddr2_2x_to_cpu1" = FROM "ddr_in_clk_2x" TO "cpu_clk" 3.9 ns;
+#TIMESPEC "TS_ddr2_2x_to_cpu2" = FROM "ddr_in_clk_2x" TO "cpu_clk_2x" 3.9 ns;
+#TIMESPEC "TS_ddr2_2x_to_cpu4" = FROM "ddr_in_clk_2x" TO "cpu_clk_4x" 3.9 ns;
+#TIMESPEC "TS_ddr2_2x_to_ddr2" = FROM "ddr_in_clk_2x" TO "ddr_in_clk" 3.9 ns;
+
+
+
diff --git a/zpu/hdl/zpu3/src/ic300.vhd b/zpu/hdl/zpu3/src/ic300.vhd
new file mode 100644
index 0000000..a1b4f41
--- /dev/null
+++ b/zpu/hdl/zpu3/src/ic300.vhd
@@ -0,0 +1,144 @@
+--------------------------------------------------------------------------------
+-- Company: Zylin AS
+-- Engineer: Tore Ramsland
+--
+-- Create Date: 21:47:41 07/03/05
+-- Design Name: ic300
+-- Module Name: ic300 - behave
+-- Project Name: eCosBoard
+-- Target Device: XC3S400400-FG256
+-- Tool versions: 7.1i
+-- Description: Top level
+--
+-- Dependencies:
+--
+-- Revision:
+-- 2005-07-11 Updated to test FPGA
+--
+--------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library UNISIM;
+use UNISIM.VComponents.all;
+
+library zylin;
+use zylin.arm7.all;
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+library work;
+use work.phi_config.all;
+use work.ic300pkg.all;
+
+entity ic300 is
+ generic(
+ simulate_io_time : boolean := false);
+ port ( -- Clock inputs
+ cpu_clk_p : in std_logic;
+
+ -- CPU interface signals
+ cpu_a_p : in std_logic_vector(20 downto 0);
+ cpu_wr_n_p : in std_logic_vector(1 downto 0);
+ cpu_cs_n_p : in std_logic_vector(3 downto 1);
+ cpu_oe_n_p : in std_logic;
+ cpu_d_p : inout std_logic_vector(15 downto 0);
+ cpu_irq_p : out std_logic_vector(1 downto 0);
+ cpu_fiq_p : out std_logic;
+ cpu_wait_n_p : out std_logic;
+
+ -- DDR SDRAM Signals
+ sdr_clk_p : out std_logic; -- ddr_sdram_clock
+ sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
+ cke_q_p : out std_logic; -- clock enable
+ cs_qn_p : out std_logic; -- /chip select
+ ras_qn_p : inout std_logic; -- /ras
+ cas_qn_p : inout std_logic; -- /cas
+ we_qn_p : inout std_logic; -- /write enable
+ dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
+ dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
+ ba_q_p : out std_logic_vector(1 downto 0); -- bank select
+ sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
+ sdr_d_p : inout std_logic_vector(15 downto 0); -- bidir data bus
+ sdr_clk_fb_p : in std_logic -- DDR clock feedback
+ );
+end ic300;
+
+architecture behave of ic300 is
+
+signal cpu_we : std_logic_vector(1 downto 0); -- Write signal for lower(0) and upper(1) 8 data bits
+signal cpu_re : std_logic; -- Read enable signal for all 16 bits
+signal areset : std_logic; -- Asyncronous active high reset (for initialization)
+signal areset_dummy : std_logic;
+
+-- Clock module signals
+signal clk_status : std_logic_vector(2 downto 0); -- DLL lock status (from 3 DLL's)
+signal cpu_clk : std_logic; -- 64 MHz CPU clk
+signal cpu_clk_2x : std_logic; -- 128 MHz CPU clk (in phase with 64 MHz)
+signal cpu_clk_4x : std_logic; -- 256 MHz CPU clk (in phase with 64 MHz)
+signal ddr_in_clk : std_logic; -- 128 MHz clock from DDR SDRAM
+signal ddr_in_clk_2x : std_logic; -- 256 MHz clock from DDR SDRAM
+ -- NOTE! Phase relation to 64 MHz clock unknown
+
+-- Internal CPU interface signals
+signal cpu_din : std_logic_vector(15 downto 0); -- 16-bit data from CPU
+signal cpu_dout : std_logic_vector(15 downto 0); -- 16-bit data to CPU
+signal cpu_a : std_logic_vector(20 downto 0); -- 21-bit address from CPU
+
+begin
+
+-- areset <= '0';
+ areset_dummy <= '0';
+
+ global_init_reset:
+ rocbuf port map(I=>areset_dummy,O=>areset);
+
+ allclocks:
+ clocks port map(
+ areset => areset,
+ cpu_clk_p => cpu_clk_p,
+ cpu_clk => cpu_clk,
+ cpu_clk_2x => cpu_clk_2x,
+ cpu_clk_4x => cpu_clk_4x,
+ sdr_clk_fb_p => sdr_clk_fb_p,
+ ddr_in_clk => ddr_in_clk,
+ ddr_in_clk_2x => ddr_in_clk_2x,
+ locked => clk_status);
+
+ arm7cpu:
+ arm7wb generic map (simulate_io_time => simulate_io_time)
+ port map(
+ areset => areset,
+ cpu_clk => cpu_clk,
+ cpu_clk_2x => cpu_clk_2x,
+ cpu_a_p => cpu_a_p,
+ cpu_wr_n_p => cpu_wr_n_p,
+ cpu_cs_n_p => cpu_cs_n_p,
+ cpu_oe_n_p => cpu_oe_n_p,
+ cpu_d_p => cpu_d_p,
+ cpu_irq_p => cpu_irq_p,
+ cpu_fiq_p => cpu_fiq_p,
+ cpu_wait_n_p => cpu_wait_n_p,
+ cpu_din => cpu_din,
+ cpu_a => cpu_a,
+ cpu_we => cpu_we,
+ cpu_re => cpu_re,
+ cpu_dout => cpu_dout);
+
+
+ cpu_fpga_regs:
+ zpuio port map(
+ areset => areset,
+ cpu_clk => cpu_clk,
+ clk_status => clk_status,
+ cpu_din => cpu_din,
+ cpu_a => cpu_a,
+ cpu_we => cpu_we,
+ cpu_re => cpu_re,
+ cpu_dout => cpu_dout);
+
+
+end behave;
diff --git a/zpu/hdl/zpu3/src/ic300_config.vhd b/zpu/hdl/zpu3/src/ic300_config.vhd
new file mode 100644
index 0000000..9d3f939
--- /dev/null
+++ b/zpu/hdl/zpu3/src/ic300_config.vhd
@@ -0,0 +1,20 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+
+package phi_config is
+
+ constant Fpga_Global_Base : std_logic_vector(19 downto 17) := "000"; -- 0x0280....
+ constant Clock_Stat_Reg_Addr : std_logic_vector(3 downto 1) := "000"; -- 0x....0000
+ constant Testreg32_Lower_Addr : std_logic_vector(3 downto 1) := "110"; -- 0x....000C
+ constant Testreg32_Upper_Addr : std_logic_vector(3 downto 1) := "111"; -- 0x....000E
+
+ constant Fpga_DDR_Ctrl_Base : std_logic_vector(19 downto 17) := "111"; -- 0x028E....
+ constant DDR_Ctrl_Reg_Addr : std_logic_vector(3 downto 1) := "000"; -- 0x....0000
+ constant DDR_Mode_Reg_Addr : std_logic_vector(3 downto 1) := "001"; -- 0x....0002
+
+ -- These are temporary test registers only!
+ constant DDR_Data_Reg_Addr : std_logic_vector(3 downto 1) := "100"; -- 0x....0008
+ constant DDR_Addr_Reg_Addr : std_logic_vector(3 downto 1) := "101"; -- 0x....000A
+ constant DDR_Req_Reg_Addr : std_logic_vector(3 downto 1) := "110"; -- 0x....000C
+
+end phi_config;
diff --git a/zpu/hdl/zpu3/src/ic300pkg.vhd b/zpu/hdl/zpu3/src/ic300pkg.vhd
new file mode 100644
index 0000000..13da306
--- /dev/null
+++ b/zpu/hdl/zpu3/src/ic300pkg.vhd
@@ -0,0 +1,88 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+
+package ic300pkg is
+
+ component ic300 is
+ port ( -- Clock inputs
+ cpu_clk_p : in std_logic;
+
+ -- CPU interface signals
+ cpu_a_p : in std_logic_vector(20 downto 0);
+ cpu_wr_n_p : in std_logic_vector(1 downto 0);
+ cpu_cs_n_p : in std_logic_vector(3 downto 1);
+ cpu_oe_n_p : in std_logic;
+ cpu_d_p : inout std_logic_vector(15 downto 0);
+ cpu_irq_p : out std_logic_vector(1 downto 0);
+ cpu_fiq_p : out std_logic;
+ cpu_wait_n_p : out std_logic;
+
+ -- DDR SDRAM Signals
+ sdr_clk_p : out std_logic; -- ddr_sdram_clock
+ sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
+ cke_q_p : out std_logic; -- clock enable
+ cs_qn_p : out std_logic; -- /chip select
+ ras_qn_p : inout std_logic; -- /ras
+ cas_qn_p : inout std_logic; -- /cas
+ we_qn_p : inout std_logic; -- /write enable
+ dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
+ dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
+ ba_q_p : out std_logic_vector(1 downto 0); -- bank select
+ sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
+ sdr_d_p : inout std_logic_vector(15 downto 0); -- bidir data bus
+ sdr_clk_fb_p : in std_logic -- DDR clock feedback
+ );
+ end component;
+
+ component clocks is
+ port ( areset : in std_logic;
+ cpu_clk_p : in std_logic;
+ sdr_clk_fb_p : in std_logic;
+ cpu_clk : out std_logic;
+ cpu_clk_2x : out std_logic;
+ cpu_clk_4x : out std_logic;
+ ddr_in_clk : out std_logic;
+ ddr_in_clk_2x : out std_logic;
+ locked : out std_logic_vector(2 downto 0));
+ end component;
+
+ component cpu_regs is
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ clk_status : in std_logic_vector(2 downto 0);
+ cpu_din : in std_logic_vector(15 downto 0);
+ cpu_a : in std_logic_vector(20 downto 0);
+ cpu_we : in std_logic_vector(1 downto 0);
+ cpu_re : in std_logic;
+ cpu_dout : inout std_logic_vector(15 downto 0));
+ end component;
+
+ component ddr_bridge is
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ cpu_clk_2x : in std_logic;
+ cpu_clk_4x : in std_logic;
+ ddr_in_clk : in std_logic;
+ ddr_in_clk_2x : in std_logic;
+
+ cpu_we : in std_logic_vector(1 downto 0);
+ cpu_re : in std_logic;
+ cpu_din : in std_logic_vector(15 downto 0);
+ cpu_a : in std_logic_vector(20 downto 0);
+ cpu_dout : inout std_logic_vector(15 downto 0);
+
+ sdr_clk_p : out std_logic; -- ddr_sdram_clock
+ sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
+ cke_q_p : out std_logic; -- clock enable
+ cs_qn_p : out std_logic; -- /chip select
+ ras_qn_p : inout std_logic; -- /ras
+ cas_qn_p : inout std_logic; -- /cas
+ we_qn_p : inout std_logic; -- /write enable
+ dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
+ dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
+ ba_q_p : out std_logic_vector(1 downto 0); -- bank select
+ sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
+ sdr_d_p : inout std_logic_vector(15 downto 0)); -- bidir data bus
+ end component;
+
+end ic300pkg;
diff --git a/zpu/hdl/zpu3/src/io.vhd b/zpu/hdl/zpu3/src/io.vhd
new file mode 100644
index 0000000..6b50ca1
--- /dev/null
+++ b/zpu/hdl/zpu3/src/io.vhd
@@ -0,0 +1,95 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+use std.textio.all;
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+use zylin.txt_util.all;
+
+entity zpu_io is
+ generic (
+ log_file: string := "log.txt"
+ );
+ port(
+ clk : in std_logic;
+ areset : in std_logic;
+ busy : out std_logic;
+ writeEnable : in std_logic;
+ readEnable : in std_logic;
+ write : in std_logic_vector(7 downto 0);
+ read : out std_logic_vector(7 downto 0);
+ addr : in std_logic_vector(maxAddrBit downto minAddrBit)
+ );
+end zpu_io;
+
+
+architecture behave of zpu_io is
+
+
+
+signal timer_read : std_logic_vector(7 downto 0);
+--signal timer_write : std_logic_vector(7 downto 0);
+signal timer_we : std_logic;
+
+file l_file : TEXT open write_mode is log_file;
+
+begin
+
+
+ timerinst: timer port map (
+ clk => clk,
+ areset => areset,
+ we => timer_we,
+ din => write,
+ adr => addr(4 downto 2),
+ dout => timer_read);
+
+
+ process(areset, clk)
+ begin
+ if (areset = '1') then
+ timer_we <= '0';
+ busy <= '1';
+ elsif (clk'event and clk = '1') then
+ busy <= '1';
+ timer_we <= '0';
+ if writeEnable = '1' then
+ -- external interface
+ if addr=x"1000" then
+ -- Write to UART
+ -- report "" & character'image(conv_integer(memBint)) severity note;
+ print(l_file, character'val(conv_integer(write)));
+ busy <= '0';
+ elsif addr(12)='1' then
+ timer_we <= '1';
+ busy <= '0';
+ else
+ report "Illegal IO write" severity failure;
+ end if;
+
+ end if;
+ if (readEnable = '1') then
+ if addr=x"1001" then
+ read <= (0=>'1', others => '0'); -- recieve empty
+ busy <= '0';
+ elsif addr(12)='1' then
+ read <= timer_read;
+ busy <= '0';
+ elsif addr(11)='1' then
+ read <= ZPU_Frequency;
+ busy <= '0';
+ else
+ report "Illegal IO read" severity failure;
+ end if;
+ else
+ read <= (others => '1');
+ end if;
+ end if;
+ end process;
+
+
+end behave;
+
diff --git a/zpu/hdl/zpu3/src/log.txt b/zpu/hdl/zpu3/src/log.txt
new file mode 100644
index 0000000..5557b06
--- /dev/null
+++ b/zpu/hdl/zpu3/src/log.txt
@@ -0,0 +1,156 @@
+
+
+
+D
+h
+r
+y
+s
+t
+o
+n
+e
+
+B
+e
+n
+c
+h
+m
+a
+r
+k
+,
+
+V
+e
+r
+s
+i
+o
+n
+
+2
+.
+1
+
+(
+L
+a
+n
+g
+u
+a
+g
+e
+:
+
+C
+)
+
+
+
+
+
+
+P
+r
+o
+g
+r
+a
+m
+
+c
+o
+m
+p
+i
+l
+e
+d
+
+w
+i
+t
+h
+o
+u
+t
+
+'
+r
+e
+g
+i
+s
+t
+e
+r
+'
+
+a
+t
+t
+r
+i
+b
+u
+t
+e
+
+
+
+
+
+
+E
+x
+e
+c
+u
+t
+i
+o
+n
+
+s
+t
+a
+r
+t
+s
+,
+
+2
+0
+0
+0
+0
+0
+
+r
+u
+n
+s
+
+t
+h
+r
+o
+u
+g
+h
+
+D
+h
+r
+y
+s
+t
+o
+n
+e
+
+
+
diff --git a/zpu/hdl/zpu3/src/niltrace.vhd b/zpu/hdl/zpu3/src/niltrace.vhd
new file mode 100644
index 0000000..40fc1ca
--- /dev/null
+++ b/zpu/hdl/zpu3/src/niltrace.vhd
@@ -0,0 +1,26 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+use std.textio.all;
+use work.zpu_config.all;
+
+
+entity trace is
+ port(
+ clk : in std_logic;
+ begin_inst : in std_logic;
+ pc : in std_logic_vector(maxAddrBit downto 0);
+ opcode : in std_logic_vector(7 downto 0);
+ sp : in std_logic_vector(maxAddrBit downto 2);
+ memA : in std_logic_vector(wordSize-1 downto 0);
+ busy : in std_logic);
+end trace;
+
+
+architecture behave of trace is
+
+begin
+
+end behave;
+
diff --git a/zpu/hdl/zpu3/src/sim_fpga_top.vhd b/zpu/hdl/zpu3/src/sim_fpga_top.vhd
new file mode 100644
index 0000000..3044606
--- /dev/null
+++ b/zpu/hdl/zpu3/src/sim_fpga_top.vhd
@@ -0,0 +1,127 @@
+--------------------------------------------------------------------------------
+-- Company:
+-- Engineer:
+--
+-- Create Date: 20:15:31 04/14/05
+-- Design Name:
+-- Module Name: fpga_top - behave
+-- Project Name:
+-- Target Device:
+-- Tool versions:
+-- Description:
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+--------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+library UNISIM;
+use UNISIM.VComponents.all;
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+entity fpga_top is
+end fpga_top;
+
+architecture behave of fpga_top is
+
+
+signal clk : std_logic;
+
+signal areset : std_logic;
+
+
+component zpu_top is
+ Port ( clk : in std_logic;
+ areset : in std_logic;
+ io_busy : in std_logic;
+ io_read : in std_logic_vector(7 downto 0);
+ io_write : out std_logic_vector(7 downto 0);
+ io_addr : out std_logic_vector(maxAddrBit downto minAddrBit);
+ io_writeEnable : out std_logic;
+ io_readEnable : out std_logic;
+ interrupt : in std_logic;
+ break : out std_logic);
+end component;
+
+
+component zpu_io is
+ generic (
+ log_file: string := "log.txt"
+ );
+ port(
+ clk : in std_logic;
+ areset : in std_logic;
+ busy : out std_logic;
+ writeEnable : in std_logic;
+ readEnable : in std_logic;
+ write : in std_logic_vector(7 downto 0);
+ read : out std_logic_vector(7 downto 0);
+ addr : in std_logic_vector(maxAddrBit downto minAddrBit)
+ );
+end component;
+
+
+
+signal io_busy : std_logic;
+signal io_read : std_logic_vector(7 downto 0);
+signal io_write : std_logic_vector(7 downto 0);
+signal io_addr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal io_writeEnable : std_logic;
+signal io_readEnable : std_logic;
+
+signal break : std_logic;
+
+begin
+ poweronreset: roc port map (O => areset);
+
+
+
+ zpu: zpu_top port map (
+ clk => clk ,
+ areset => areset,
+ io_busy => io_busy,
+ io_read => io_read,
+ io_write => io_write,
+ io_addr => io_addr,
+ io_writeEnable => io_writeEnable,
+ io_readEnable => io_readEnable,
+ interrupt => '0',
+ break => break);
+
+
+ ioMap: zpu_io port map (
+ clk => clk,
+ areset => areset,
+ busy => io_busy,
+ writeEnable => io_writeEnable,
+ readEnable => io_readEnable,
+ write => io_write,
+ read => io_read,
+ addr => io_addr
+ );
+
+
+
+ -- wiggle the clock @ 100MHz
+ clock : PROCESS
+ begin
+ clk <= '0';
+ wait for 5 ns;
+ clk <= '1';
+ wait for 5 ns;
+ end PROCESS clock;
+
+
+end behave;
diff --git a/zpu/hdl/zpu3/src/status.txt b/zpu/hdl/zpu3/src/status.txt
new file mode 100644
index 0000000..df8773a
--- /dev/null
+++ b/zpu/hdl/zpu3/src/status.txt
@@ -0,0 +1,67 @@
+- Make LOADSP/STORESP/ADDSP/PUSHPC & OR emulated => From 444 => 428 LUT.
+ A pitiful saving in return for destroying performance.
+- If I reduce datapath to 8(which is useless) => 197 LUT.
+
+Bare bones version of ZPU3:
+
+- remove NOP, PUSHPC, STORESP, LOADSP, ADDSP and OR instructions. This requires
+ modification to the GCC toolchain and will result in a fairly significant
+ code increase. We should still do better than ARM though.
+- reduce datapath to 16 bits. This will reduce stack usage, which is good.
+- 4kBytes of RAM.
+
+ [exec] =========================================================================
+ [exec] Device utilization summary:
+ [exec] ---------------------------
+ [exec] Selected Device : 3s400ft256-4
+ [exec] Number of Slices: 167 out of 3584 4%
+ [exec] Number of Slice Flip Flops: 126 out of 7168 1%
+ [exec] Number of 4 input LUTs: 288 out of 7168 4%
+ [exec] Number of bonded IOBs: 49 out of 173 28%
+ [exec] Number of BRAMs: 1 out of 16 6%
+ [exec] Number of GCLKs: 1 out of 8 12%
+ [exec] =========================================================================
+
+
+
+
+Measurements:
+
+- Removing PUSHPC(which is possible) reduces usage by 2 LUT's.
+- I tried to introduce the instructions as seperate states at the top level,
+ but did not succeed in reducing LUT count. This might be an avenue to
+ pursue if asynchronous(?) ROM's could replace logic.
+- 550 LUT @ 76MHz. 32 bit datapath & 8 bit instructions. Added seperate decode
+ stage.
+- Tried to move memAControl into decoded opcode. Usage went up to 594 from 550.
+
+- using 16 bit opcodes to encode signals directly. 466 LUT's.
+- w/2kBytes 32 RAM & 32 bit opcodes. 415 LUT's.
+- 16 bit opcode, 16 bit datapath and 1kbyte RAM. 292 LUT's.
+
+- 725 LUT's @ 63MHz
+ Minimum period: 15.909ns{1} (Maximum frequency: 62.858MHz)
+- removed addsp, loadsp & storesp. => 670 LUT's.
+- removed all pushes & pops to sp. => 638 LUT's.
+- removed OR instruction. => 672 LUT's.
+- on the second cycle an ADD is done regardless => 713 LUT's.
+- using others => 'x' for e.g. pushsp. 713 => 703.
+- switching from lots of prioritized if() for decoding instruction to a case
+ statement. 713 => 631.
+- Using ZPU1's memory scheme instead of inferred memory. 713 => 715, i.e. no
+ difference.
+- Removing AddSP. 715 => 704 LUT's.
+- Add COMPARE. 715 => 743 LUT's.
+- Slight reorganization of binary operand & NOP 715 => 704.
+- STORE only pops 1 (which can be fixed in the assembler). 704 => 701.
+- Remove NOP. NOP is only used to clear idim_flag. Use NOT instead.
+- Removing FLIP. 681 => 646. Using a different way to generate the FLIP,
+ 681 => 679.
+- Add a seperate memory system for code?
+- Use IDIM_FLAG to cache value before IM and make add single cycle.
+
+- by expanding the opcode to 32 bits, encoding everything in the opcode &
+ using case statements. 713 => 433 LUT.
+- 32 bit opcode w/encoded state & 16 bit datapath. => 325 LUT
+- by using 512 byte RAM, 16 bit datapath and 32 bit instructions => 285.
+
diff --git a/zpu/hdl/zpu3/src/testlut.vhd b/zpu/hdl/zpu3/src/testlut.vhd
new file mode 100644
index 0000000..fcc8fde
--- /dev/null
+++ b/zpu/hdl/zpu3/src/testlut.vhd
@@ -0,0 +1,106 @@
+-- Company: Zylin AS
+--
+-- Hooks up the ZPU to physical pads to ensure that it is not optimized to
+-- oblivion. This is purely to have something to measure LUT usage against.
+--
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+entity ic300 is
+ port ( -- Clock inputs
+ cpu_clk_p : in std_logic;
+
+ -- CPU interface signals
+ cpu_a_p : in std_logic_vector(20 downto 0);
+ cpu_wr_n_p : in std_logic_vector(1 downto 0);
+ cpu_cs_n_p : in std_logic_vector(3 downto 1);
+ cpu_oe_n_p : in std_logic;
+ cpu_d_p : out std_logic_vector(15 downto 0);
+ cpu_irq_p : out std_logic_vector(1 downto 0);
+ cpu_fiq_p : out std_logic;
+ cpu_wait_n_p : out std_logic;
+
+ sdr_clk_fb_p : in std_logic -- DDR clock feedback
+ );
+end ic300;
+
+architecture behave of ic300 is
+
+
+signal io_busy : std_logic;
+signal io_read : std_logic_vector(7 downto 0);
+signal io_write : std_logic_vector(7 downto 0);
+signal io_addr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal io_writeEnable : std_logic;
+signal io_readEnable : std_logic;
+
+
+signal cpu_we : std_logic_vector(1 downto 0);
+signal cpu_re : std_logic;
+signal areset : std_logic;
+
+-- Clock module signals
+signal clk_status : std_logic_vector(2 downto 0);
+signal cpu_clk : std_logic;
+signal cpu_clk_2x : std_logic;
+signal cpu_clk_4x : std_logic;
+signal ddr_in_clk : std_logic;
+
+
+-- Internal CPU interface signals
+signal cpu_din : std_logic_vector(15 downto 0);
+signal cpu_dout : std_logic_vector(15 downto 0);
+signal cpu_a : std_logic_vector(20 downto 0);
+
+signal dummy : std_logic_vector(maxAddrBit downto minAddrBit+5);
+
+begin
+
+ areset <= '0'; -- MUST BE CHANGED TO SOMETHING CORRECT
+
+-- cpu_d_p <= (others => '0');
+ cpu_irq_p <= (others => '0');
+ cpu_fiq_p <= '0';
+ cpu_wait_n_p <= '0';
+
+ cpu_d_p(15 downto 15) <= (others => '0');
+
+ -- delay signals going out/in w/1 clk so the
+ -- ZPU does not have to drive those pins.
+ --
+ -- these registers can be placed close to the ZPU and these
+ -- registers then have a full clock to drive the pins.
+ process(cpu_clk_p, areset)
+ begin
+ if (cpu_clk_p'event and cpu_clk_p = '1') then
+ cpu_d_p(0) <= io_writeEnable;
+ cpu_d_p(1) <= io_readEnable;
+ cpu_d_p(9 downto 2) <= io_write;
+ io_read <= cpu_a_p(7 downto 0);
+ -- 32 read/write registers is plenty realisitic for a minimal size
+ -- soft-CPU
+ cpu_d_p(14 downto 10) <= io_addr(minAddrBit+4 downto minAddrBit);
+ end if;
+ end process;
+
+
+ zpu: zpu_top port map (
+ clk => cpu_clk_p ,
+ areset => areset,
+ io_busy => '0',
+ io_writeEnable => io_writeEnable,
+ io_readEnable => io_readEnable,
+ io_write => io_write,
+ io_read => io_read,
+ io_addr => io_addr,
+ interrupt => '0'
+ );
+
+
+
+end behave;
diff --git a/zpu/hdl/zpu3/src/timer.vhd b/zpu/hdl/zpu3/src/timer.vhd
new file mode 100644
index 0000000..65836f0
--- /dev/null
+++ b/zpu/hdl/zpu3/src/timer.vhd
@@ -0,0 +1,157 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+entity timer is
+ port(
+ clk : in std_logic;
+ areset : in std_logic;
+ we : in std_logic;
+ din : in std_logic_vector(7 downto 0);
+ adr : in std_logic_vector(2 downto 0);
+ dout : out std_logic_vector(7 downto 0));
+end timer;
+
+
+architecture behave of timer is
+
+signal sample : std_logic;
+signal reset : std_logic;
+
+signal c : std_logic_vector(1 to 7);
+
+signal cnt : std_logic_vector(63 downto 0);
+signal cnt_smp : std_logic_vector(63 downto 0);
+
+begin
+
+ reset <= '1' when (we = '1' and din(0) = '1') else '0';
+ sample <= '1' when (we = '1' and din(1) = '1') else '0';
+
+ process(clk, areset) -- Carry generation
+ begin
+ if areset = '1' then
+ c <= "0000000";
+ elsif (clk'event and clk = '1') then
+ if reset = '1' then
+ c <= "0000000";
+ else
+ if cnt(7 downto 0) = "11111110" then
+ c(1) <= '1';
+ else
+ c(1) <= '0';
+ end if;
+ if cnt(15 downto 8) = "11111111" then
+ c(2) <= '1';
+ else
+ c(2) <= '0';
+ end if;
+ if cnt(23 downto 16) = "11111111" and c(2) = '1' then
+ c(3) <= '1';
+ else
+ c(3) <= '0';
+ end if;
+ if cnt(31 downto 24) = "11111111" and c(3) = '1' then
+ c(4) <= '1';
+ else
+ c(4) <= '0';
+ end if;
+ if cnt(39 downto 32) = "11111111" and c(4) = '1' then
+ c(5) <= '1';
+ else
+ c(5) <= '0';
+ end if;
+ if cnt(47 downto 40) = "11111111" and c(5) = '1' then
+ c(6) <= '1';
+ else
+ c(6) <= '0';
+ end if;
+ if cnt(55 downto 48) = "11111111" and c(6) = '1' then
+ c(7) <= '1';
+ else
+ c(7) <= '0';
+ end if;
+ end if;
+ end if;
+ end process;
+
+ process(clk, areset)
+ begin
+ if areset = '1' then
+ cnt <= (others=>'0');
+ elsif (clk'event and clk = '1') then
+ if reset = '1' then
+ cnt <= (others=>'0');
+ else
+ cnt(7 downto 0) <= cnt(7 downto 0) + '1';
+ if c(1) = '1' then
+ cnt(15 downto 8) <= cnt(15 downto 8) + '1';
+ else
+ cnt(15 downto 8) <= cnt(15 downto 8);
+ end if;
+ if c(2) = '1' and c(1) = '1' then
+ cnt(23 downto 16) <= cnt(23 downto 16) + '1';
+ else
+ cnt(23 downto 16) <= cnt(23 downto 16);
+ end if;
+ if c(3) = '1' and c(1) = '1' then
+ cnt(31 downto 24) <= cnt(31 downto 24) + '1';
+ else
+ cnt(31 downto 24) <= cnt(31 downto 24);
+ end if;
+ if c(4) = '1' and c(1) = '1' then
+ cnt(39 downto 32) <= cnt(39 downto 32) + '1';
+ else
+ cnt(39 downto 32) <= cnt(39 downto 32);
+ end if;
+ if c(5) = '1' and c(1) = '1' then
+ cnt(47 downto 40) <= cnt(47 downto 40) + '1';
+ else
+ cnt(47 downto 40) <= cnt(47 downto 40);
+ end if;
+ if c(6) = '1' and c(1) = '1' then
+ cnt(55 downto 48) <= cnt(55 downto 48) + '1';
+ else
+ cnt(55 downto 48) <= cnt(55 downto 48);
+ end if;
+ if c(7) = '1' and c(1) = '1' then
+ cnt(63 downto 56) <= cnt(63 downto 56) + '1';
+ else
+ cnt(63 downto 56) <= cnt(63 downto 56);
+ end if;
+ end if;
+ end if;
+ end process;
+
+ process(clk, areset)
+ begin
+ if areset = '1' then
+ cnt_smp <= (others=>'0');
+ elsif (clk'event and clk = '1') then
+ if reset = '1' then
+ cnt_smp <= (others=>'0');
+ elsif sample = '1' then
+ cnt_smp <= cnt;
+ else
+ cnt_smp <= cnt_smp;
+ end if;
+ end if;
+ end process;
+
+ process(cnt_smp, adr)
+ begin
+ case adr is
+ when "000" => dout <= cnt_smp(7 downto 0);
+ when "001" => dout <= cnt_smp(15 downto 8);
+ when "010" => dout <= cnt_smp(23 downto 16);
+ when "011" => dout <= cnt_smp(31 downto 24);
+ when "100" => dout <= cnt_smp(39 downto 32);
+ when "101" => dout <= cnt_smp(47 downto 40);
+ when "110" => dout <= cnt_smp(55 downto 48);
+ when others => dout <= cnt_smp(63 downto 56);
+ end case;
+ end process;
+
+
+end behave;
+
diff --git a/zpu/hdl/zpu3/src/trace.vhd b/zpu/hdl/zpu3/src/trace.vhd
new file mode 100644
index 0000000..81eb448
--- /dev/null
+++ b/zpu/hdl/zpu3/src/trace.vhd
@@ -0,0 +1,80 @@
+library ieee;
+use ieee.std_logic_1164.all;
+--use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+use std.textio.all;
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+use zylin.txt_util.all;
+
+
+entity trace is
+ generic (
+ log_file: string := "trace.txt"
+ );
+ port(
+ clk : in std_logic;
+ begin_inst : in std_logic;
+ pc : in std_logic_vector(maxAddrBit downto 0);
+ opcode : in std_logic_vector(7 downto 0);
+ sp : in std_logic_vector(maxAddrBit downto 2);
+ memA : in std_logic_vector(wordSize-1 downto 0);
+ memB : in std_logic_vector(wordSize-1 downto 0);
+ busy : in std_logic
+ );
+end trace;
+
+
+architecture behave of trace is
+
+
+file l_file : TEXT open write_mode is log_file;
+
+
+begin
+
+
+-- write data and control information to a file
+
+receive_data: process
+
+variable l: line;
+variable t : std_logic_vector(wordSize-1 downto 0);
+variable t2 : std_logic_vector(maxAddrBit downto 0);
+
+
+
+begin
+
+ t:= (others => '0');
+ t2:= (others => '0');
+
+ -- print header for the logfile
+ print(l_file, "#pc,opcode,sp,top_of_stack ");
+ print(l_file, "#----------");
+ print(l_file, " ");
+
+ wait until clk = '1';
+ wait until clk = '0';
+
+ while true loop
+
+ if begin_inst = '1' then
+ t(maxAddrBit downto 2):=sp;
+ t2:=pc;
+ print(l_file, "0x" & hstr(t2) & " 0x" & hstr(opcode) & " 0x" & hstr(t) & " 0x" & hstr(memA) & " 0x" & hstr(memB));
+ end if;
+
+ wait until clk = '0';
+
+ end loop;
+
+ end process receive_data;
+
+
+
+end behave;
+
diff --git a/zpu/hdl/zpu3/src/txt_util.vhd b/zpu/hdl/zpu3/src/txt_util.vhd
new file mode 100644
index 0000000..d42303b
--- /dev/null
+++ b/zpu/hdl/zpu3/src/txt_util.vhd
@@ -0,0 +1,586 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use std.textio.all;
+
+
+package txt_util is
+
+ -- prints a message to the screen
+ procedure print(text: string);
+
+ -- prints the message when active
+ -- useful for debug switches
+ procedure print(active: boolean; text: string);
+
+ -- converts std_logic into a character
+ function chr(sl: std_logic) return character;
+
+ -- converts std_logic into a string (1 to 1)
+ function str(sl: std_logic) return string;
+
+ -- converts std_logic_vector into a string (binary base)
+ function str(slv: std_logic_vector) return string;
+
+ -- converts boolean into a string
+ function str(b: boolean) return string;
+
+ -- converts an integer into a single character
+ -- (can also be used for hex conversion and other bases)
+ function chr(int: integer) return character;
+
+ -- converts integer into string using specified base
+ function str(int: integer; base: integer) return string;
+
+ -- converts integer to string, using base 10
+ function str(int: integer) return string;
+
+ -- convert std_logic_vector into a string in hex format
+ function hstr(slv: std_logic_vector) return string;
+
+
+ -- functions to manipulate strings
+ -----------------------------------
+
+ -- convert a character to upper case
+ function to_upper(c: character) return character;
+
+ -- convert a character to lower case
+ function to_lower(c: character) return character;
+
+ -- convert a string to upper case
+ function to_upper(s: string) return string;
+
+ -- convert a string to lower case
+ function to_lower(s: string) return string;
+
+
+
+ -- functions to convert strings into other formats
+ --------------------------------------------------
+
+ -- converts a character into std_logic
+ function to_std_logic(c: character) return std_logic;
+
+ -- converts a string into std_logic_vector
+ function to_std_logic_vector(s: string) return std_logic_vector;
+
+
+
+ -- file I/O
+ -----------
+
+ -- read variable length string from input file
+ procedure str_read(file in_file: TEXT;
+ res_string: out string);
+
+ -- print string to a file and start new line
+ procedure print(file out_file: TEXT;
+ new_string: in string);
+
+ -- print character to a file and start new line
+ procedure print(file out_file: TEXT;
+ char: in character);
+
+end txt_util;
+
+
+
+
+package body txt_util is
+
+
+
+
+ -- prints text to the screen
+
+ procedure print(text: string) is
+ variable msg_line: line;
+ begin
+ write(msg_line, text);
+ writeline(output, msg_line);
+ end print;
+
+
+
+
+ -- prints text to the screen when active
+
+ procedure print(active: boolean; text: string) is
+ begin
+ if active then
+ print(text);
+ end if;
+ end print;
+
+
+ -- converts std_logic into a character
+
+ function chr(sl: std_logic) return character is
+ variable c: character;
+ begin
+ case sl is
+ when 'U' => c:= 'U';
+ when 'X' => c:= 'X';
+ when '0' => c:= '0';
+ when '1' => c:= '1';
+ when 'Z' => c:= 'Z';
+ when 'W' => c:= 'W';
+ when 'L' => c:= 'L';
+ when 'H' => c:= 'H';
+ when '-' => c:= '-';
+ end case;
+ return c;
+ end chr;
+
+
+
+ -- converts std_logic into a string (1 to 1)
+
+ function str(sl: std_logic) return string is
+ variable s: string(1 to 1);
+ begin
+ s(1) := chr(sl);
+ return s;
+ end str;
+
+
+
+ -- converts std_logic_vector into a string (binary base)
+ -- (this also takes care of the fact that the range of
+ -- a string is natural while a std_logic_vector may
+ -- have an integer range)
+
+ function str(slv: std_logic_vector) return string is
+ variable result : string (1 to slv'length);
+ variable r : integer;
+ begin
+ r := 1;
+ for i in slv'range loop
+ result(r) := chr(slv(i));
+ r := r + 1;
+ end loop;
+ return result;
+ end str;
+
+
+ function str(b: boolean) return string is
+
+ begin
+ if b then
+ return "true";
+ else
+ return "false";
+ end if;
+ end str;
+
+
+ -- converts an integer into a character
+ -- for 0 to 9 the obvious mapping is used, higher
+ -- values are mapped to the characters A-Z
+ -- (this is usefull for systems with base > 10)
+ -- (adapted from Steve Vogwell's posting in comp.lang.vhdl)
+
+ function chr(int: integer) return character is
+ variable c: character;
+ begin
+ case int is
+ when 0 => c := '0';
+ when 1 => c := '1';
+ when 2 => c := '2';
+ when 3 => c := '3';
+ when 4 => c := '4';
+ when 5 => c := '5';
+ when 6 => c := '6';
+ when 7 => c := '7';
+ when 8 => c := '8';
+ when 9 => c := '9';
+ when 10 => c := 'A';
+ when 11 => c := 'B';
+ when 12 => c := 'C';
+ when 13 => c := 'D';
+ when 14 => c := 'E';
+ when 15 => c := 'F';
+ when 16 => c := 'G';
+ when 17 => c := 'H';
+ when 18 => c := 'I';
+ when 19 => c := 'J';
+ when 20 => c := 'K';
+ when 21 => c := 'L';
+ when 22 => c := 'M';
+ when 23 => c := 'N';
+ when 24 => c := 'O';
+ when 25 => c := 'P';
+ when 26 => c := 'Q';
+ when 27 => c := 'R';
+ when 28 => c := 'S';
+ when 29 => c := 'T';
+ when 30 => c := 'U';
+ when 31 => c := 'V';
+ when 32 => c := 'W';
+ when 33 => c := 'X';
+ when 34 => c := 'Y';
+ when 35 => c := 'Z';
+ when others => c := '?';
+ end case;
+ return c;
+ end chr;
+
+
+
+ -- convert integer to string using specified base
+ -- (adapted from Steve Vogwell's posting in comp.lang.vhdl)
+
+ function str(int: integer; base: integer) return string is
+
+ variable temp: string(1 to 10);
+ variable num: integer;
+ variable abs_int: integer;
+ variable len: integer := 1;
+ variable power: integer := 1;
+
+ begin
+
+ -- bug fix for negative numbers
+ abs_int := abs(int);
+
+ num := abs_int;
+
+ while num >= base loop -- Determine how many
+ len := len + 1; -- characters required
+ num := num / base; -- to represent the
+ end loop ; -- number.
+
+ for i in len downto 1 loop -- Convert the number to
+ temp(i) := chr(abs_int/power mod base); -- a string starting
+ power := power * base; -- with the right hand
+ end loop ; -- side.
+
+ -- return result and add sign if required
+ if int < 0 then
+ return '-'& temp(1 to len);
+ else
+ return temp(1 to len);
+ end if;
+
+ end str;
+
+
+ -- convert integer to string, using base 10
+ function str(int: integer) return string is
+
+ begin
+
+ return str(int, 10) ;
+
+ end str;
+
+
+
+ -- converts a std_logic_vector into a hex string.
+ function hstr(slv: std_logic_vector) return string is
+ variable hexlen: integer;
+ variable longslv : std_logic_vector(67 downto 0) := (others => '0');
+ variable hex : string(1 to 16);
+ variable fourbit : std_logic_vector(3 downto 0);
+ begin
+ hexlen := (slv'left+1)/4;
+ if (slv'left+1) mod 4 /= 0 then
+ hexlen := hexlen + 1;
+ end if;
+ longslv(slv'left downto 0) := slv;
+ for i in (hexlen -1) downto 0 loop
+ fourbit := longslv(((i*4)+3) downto (i*4));
+ case fourbit is
+ when "0000" => hex(hexlen -I) := '0';
+ when "0001" => hex(hexlen -I) := '1';
+ when "0010" => hex(hexlen -I) := '2';
+ when "0011" => hex(hexlen -I) := '3';
+ when "0100" => hex(hexlen -I) := '4';
+ when "0101" => hex(hexlen -I) := '5';
+ when "0110" => hex(hexlen -I) := '6';
+ when "0111" => hex(hexlen -I) := '7';
+ when "1000" => hex(hexlen -I) := '8';
+ when "1001" => hex(hexlen -I) := '9';
+ when "1010" => hex(hexlen -I) := 'A';
+ when "1011" => hex(hexlen -I) := 'B';
+ when "1100" => hex(hexlen -I) := 'C';
+ when "1101" => hex(hexlen -I) := 'D';
+ when "1110" => hex(hexlen -I) := 'E';
+ when "1111" => hex(hexlen -I) := 'F';
+ when "ZZZZ" => hex(hexlen -I) := 'z';
+ when "UUUU" => hex(hexlen -I) := 'u';
+ when "XXXX" => hex(hexlen -I) := 'x';
+ when others => hex(hexlen -I) := '?';
+ end case;
+ end loop;
+ return hex(1 to hexlen);
+ end hstr;
+
+
+
+ -- functions to manipulate strings
+ -----------------------------------
+
+
+ -- convert a character to upper case
+
+ function to_upper(c: character) return character is
+
+ variable u: character;
+
+ begin
+
+ case c is
+ when 'a' => u := 'A';
+ when 'b' => u := 'B';
+ when 'c' => u := 'C';
+ when 'd' => u := 'D';
+ when 'e' => u := 'E';
+ when 'f' => u := 'F';
+ when 'g' => u := 'G';
+ when 'h' => u := 'H';
+ when 'i' => u := 'I';
+ when 'j' => u := 'J';
+ when 'k' => u := 'K';
+ when 'l' => u := 'L';
+ when 'm' => u := 'M';
+ when 'n' => u := 'N';
+ when 'o' => u := 'O';
+ when 'p' => u := 'P';
+ when 'q' => u := 'Q';
+ when 'r' => u := 'R';
+ when 's' => u := 'S';
+ when 't' => u := 'T';
+ when 'u' => u := 'U';
+ when 'v' => u := 'V';
+ when 'w' => u := 'W';
+ when 'x' => u := 'X';
+ when 'y' => u := 'Y';
+ when 'z' => u := 'Z';
+ when others => u := c;
+ end case;
+
+ return u;
+
+ end to_upper;
+
+
+ -- convert a character to lower case
+
+ function to_lower(c: character) return character is
+
+ variable l: character;
+
+ begin
+
+ case c is
+ when 'A' => l := 'a';
+ when 'B' => l := 'b';
+ when 'C' => l := 'c';
+ when 'D' => l := 'd';
+ when 'E' => l := 'e';
+ when 'F' => l := 'f';
+ when 'G' => l := 'g';
+ when 'H' => l := 'h';
+ when 'I' => l := 'i';
+ when 'J' => l := 'j';
+ when 'K' => l := 'k';
+ when 'L' => l := 'l';
+ when 'M' => l := 'm';
+ when 'N' => l := 'n';
+ when 'O' => l := 'o';
+ when 'P' => l := 'p';
+ when 'Q' => l := 'q';
+ when 'R' => l := 'r';
+ when 'S' => l := 's';
+ when 'T' => l := 't';
+ when 'U' => l := 'u';
+ when 'V' => l := 'v';
+ when 'W' => l := 'w';
+ when 'X' => l := 'x';
+ when 'Y' => l := 'y';
+ when 'Z' => l := 'z';
+ when others => l := c;
+ end case;
+
+ return l;
+
+ end to_lower;
+
+
+
+ -- convert a string to upper case
+
+ function to_upper(s: string) return string is
+
+ variable uppercase: string (s'range);
+
+ begin
+
+ for i in s'range loop
+ uppercase(i):= to_upper(s(i));
+ end loop;
+ return uppercase;
+
+ end to_upper;
+
+
+
+ -- convert a string to lower case
+
+ function to_lower(s: string) return string is
+
+ variable lowercase: string (s'range);
+
+ begin
+
+ for i in s'range loop
+ lowercase(i):= to_lower(s(i));
+ end loop;
+ return lowercase;
+
+ end to_lower;
+
+
+
+-- functions to convert strings into other types
+
+
+-- converts a character into a std_logic
+
+function to_std_logic(c: character) return std_logic is
+ variable sl: std_logic;
+ begin
+ case c is
+ when 'U' =>
+ sl := 'U';
+ when 'X' =>
+ sl := 'X';
+ when '0' =>
+ sl := '0';
+ when '1' =>
+ sl := '1';
+ when 'Z' =>
+ sl := 'Z';
+ when 'W' =>
+ sl := 'W';
+ when 'L' =>
+ sl := 'L';
+ when 'H' =>
+ sl := 'H';
+ when '-' =>
+ sl := '-';
+ when others =>
+ sl := 'X';
+ end case;
+ return sl;
+ end to_std_logic;
+
+
+-- converts a string into std_logic_vector
+
+function to_std_logic_vector(s: string) return std_logic_vector is
+ variable slv: std_logic_vector(s'high-s'low downto 0);
+ variable k: integer;
+begin
+ k := s'high-s'low;
+ for i in s'range loop
+ slv(k) := to_std_logic(s(i));
+ k := k - 1;
+ end loop;
+ return slv;
+end to_std_logic_vector;
+
+
+
+
+
+
+----------------
+-- file I/O --
+----------------
+
+
+
+-- read variable length string from input file
+
+procedure str_read(file in_file: TEXT;
+ res_string: out string) is
+
+ variable l: line;
+ variable c: character;
+ variable is_string: boolean;
+
+ begin
+
+ readline(in_file, l);
+ -- clear the contents of the result string
+ for i in res_string'range loop
+ res_string(i) := ' ';
+ end loop;
+ -- read all characters of the line, up to the length
+ -- of the results string
+ for i in res_string'range loop
+ read(l, c, is_string);
+ res_string(i) := c;
+ if not is_string then -- found end of line
+ exit;
+ end if;
+ end loop;
+
+end str_read;
+
+
+-- print string to a file
+procedure print(file out_file: TEXT;
+ new_string: in string) is
+
+ variable l: line;
+
+ begin
+
+ write(l, new_string);
+ writeline(out_file, l);
+
+end print;
+
+
+-- print character to a file and start new line
+procedure print(file out_file: TEXT;
+ char: in character) is
+
+ variable l: line;
+
+ begin
+
+ write(l, char);
+ writeline(out_file, l);
+
+end print;
+
+
+
+-- appends contents of a string to a file until line feed occurs
+-- (LF is considered to be the end of the string)
+
+procedure str_write(file out_file: TEXT;
+ new_string: in string) is
+ begin
+
+ for i in new_string'range loop
+ print(out_file, new_string(i));
+ if new_string(i) = LF then -- end of string
+ exit;
+ end if;
+ end loop;
+
+end str_write;
+
+
+
+
+end txt_util;
+
+
+
+
diff --git a/zpu/hdl/zpu3/src/xilinx_dualport.vhd b/zpu/hdl/zpu3/src/xilinx_dualport.vhd
new file mode 100644
index 0000000..0e6edc9
--- /dev/null
+++ b/zpu/hdl/zpu3/src/xilinx_dualport.vhd
@@ -0,0 +1,1482 @@
+--------------------------------------------------------------------------------
+-- Company:
+-- Engineer:
+--
+-- Create Date: 11:47:36 03/22/05
+-- Design Name:
+-- Module Name: mem_sys - behave
+-- Project Name:
+-- Target Device:
+-- Tool versions:
+-- Description:
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+--------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+library UNISIM;
+use UNISIM.VComponents.all;
+library zylin;
+use zylin.zpu_config.all;
+
+entity dualport_ram is
+port (clk : in std_logic;
+ memAWriteEnable : in std_logic;
+ memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memAWrite : in std_logic_vector(wordSize-1 downto 0);
+ memARead : out std_logic_vector(wordSize-1 downto 0);
+ memBWriteEnable : in std_logic;
+ memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memBWrite : in std_logic_vector(wordSize-1 downto 0);
+ memBRead : out std_logic_vector(wordSize-1 downto 0));
+end dualport_ram;
+
+architecture dualport_ram_arch of dualport_ram is
+
+
+signal low : std_logic;
+signal high : std_logic;
+signal re : std_logic;
+
+begin
+
+ high <= '1';
+ low <= '0';
+ re <= '1';
+
+
+ ZPU_RAM0 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"01A100E100010001003600770002006D000F0000000F06AD000302940008003C",
+ INIT_01 => X"7D4000000741F68100C800030000377935990003000300030003002A00150001",
+ INIT_02 => X"0007584101010C3D55555555370000000092800000001490000000066A594EBB",
+ INIT_03 => X"0009015555932D564C093A4024055555564CB555593C1569EA90C00000007000",
+ INIT_04 => X"BF8AA55961BE2A956586C40A4CB00932C00024A80000024C9569C893C0024E90",
+ INIT_05 => X"18A1251E2A956586F8AA55961BF8AA55961BE2A956586FE2A956586F8AA55961",
+ INIT_06 => X"51349D53764E258A2043E21BE5645DE5C4FC00E0100430C140E4665595558750",
+ INIT_07 => X"47B1656A855555D435575A815D077558E475559E755715A1C364945042425555",
+ INIT_08 => X"5555F123348C17657C405070D5E745A518B58DD5555F55551D5506F00D707B15",
+ INIT_09 => X"C141C74DD5137120D51C0715094CC4F01006A8131DD91531B913118944815155",
+ INIT_0A => X"5E559655003D3549550D458C5994A04D476568D05B0F45451D143E53D0F2CD6B",
+ INIT_0B => X"4D1E1C5D3474C5C5A1E1C5D34787171C44DC7844D3451D37974D164DD55DD555",
+ INIT_0C => X"2074532E4C3A5074DE129D074D1137134477D546C01D374DD348774DE15D3717",
+ INIT_0D => X"875650117671948CB05545A5A2615074889149341D04D4956F843575543E1A19",
+ INIT_0E => X"F804036D9753106651D5140E6905C158D8979404C7459123540DD9955A43F563",
+ INIT_0F => X"7958D037C3557056405549520F96E88622775767141BA3755D1418E1BE234480",
+ INIT_10 => X"294A1C405ACCC3705D5599D55037776149584D8F98F98F98FDD00D904D205421",
+ INIT_11 => X"74710D5C26798346751441DD555BE179544D8F98F98F98FDD00D910DC3D357C3",
+ INIT_12 => X"605D5570051840119D04C0DC3755B61D7951D9A9522D995D51D5BB106B90F7C0",
+ INIT_13 => X"D81BC3646611D695A02D1A9419695D695422C40110C0F85D6F899E4D0D555BC3",
+ INIT_14 => X"28531104D5F01EDD204141807555735D38346423303676407555545F6B945696",
+ INIT_15 => X"5212D7645155503146685C599546660676E81041C85D570DCE1B07116F116021",
+ INIT_16 => X"5F9D03530F840406A5725910604E420D910DD521D6170F9AF0F940D91836445D",
+ INIT_17 => X"83E03E03C03414D5D5F5D9BE7550DD55775514A145E5405657024C3664F3059C",
+ INIT_18 => X"444C7584143756C431049D594DC444FD19CE181427555124440155503F58E14D",
+ INIT_19 => X"D54521B201810644D895159C568F40C6C85503E135203FCF555151102C7343CC",
+ INIT_1A => X"5A95904431351D93820C4D1AA2C7FD0CD95555311185802971639A1755607515",
+ INIT_1B => X"E7D41815C826057201815C826057201815C806057209815C82741C75D1BF4336",
+ INIT_1C => X"41BD443664E14155000C4191440445305B46A8D40443A3E115495503116861C3",
+ INIT_1D => X"A1520F9C10F850FC18DB80D4777F1D5757195241D35F9754D755DD35F40D9D99",
+ INIT_1E => X"65E6A10F206870F0557411545536F0D5FA1765C8D5443E658956E52727558D14",
+ INIT_1F => X"DDD2151D31A956A0400F03FC754175510FD4A34252E0DC4076A5EC66A10FB312",
+ INIT_20 => X"77C1676610FBD310C3C3CC76F05C9FF20755DC17ECE5451D3472D9D215D34C40",
+ INIT_21 => X"55556189C508B6C3F0F0FF1D9F4561676610F207A5EF52D7957CC0F8800F7726",
+ INIT_22 => X"8890203480C224080B251D4352F126920C8CF13E00C15A16445A44DA4F105554",
+ INIT_23 => X"0F203CF4495240B82923890203080E20B8809249524080C2C0B490210C803203",
+ INIT_24 => X"854F25C74C20400C1030000B24838A6F858A08E24080F2823890203C80D203C8",
+ INIT_25 => X"00000C000000001F75D5D74FC0000000000000003FFFFFFFEAAA95438104DA47",
+ INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_28 => X"0000000000000000000000000000000000000000000154000000000000000000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(1 downto 0), -- Port A 2-bit Data Output
+ DOB => memBRead(1 downto 0), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(1 downto 0), -- Port A 2-bit Data Input
+ DIB => memBWrite(1 downto 0), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => low, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM1 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"01510111000100020061006B0000004000100002001005510001059A00360064",
+ INIT_01 => X"40300000064005640380001E0001543802180002000200010002000500110005",
+ INIT_02 => X"000653709D19C24E555555552400000000920000000024000000000162843876",
+ INIT_03 => X"0000CC55555DC1557EC5DC00033155555577055555D315607655000000007000",
+ INIT_04 => X"74818211417206084505C705770000F940000398000001765560745D30017700",
+ INIT_05 => X"165081C206084505C8182114174818211417206084505D206084505C81821141",
+ INIT_06 => X"51200592163801450816D095E0044564ADB5C58C82606080118051A1162881C8",
+ INIT_07 => X"550175554516163566505D44014118AA4818516C185014519662131830201616",
+ INIT_08 => X"96140906D01981608AF43685992015DA5245D45628675859062835B511755017",
+ INIT_09 => X"6000B8F861B22CE39C0EC602ED202FC596B59458405845C55118595694001162",
+ INIT_0A => X"55A58300016D31668D5941040556516111611710005B4D4545716E190280595B",
+ INIT_0B => X"C968C00BA5BE80B2C68C00B65A3002C1BC8BA32CBE70C3EA02C9CAC89C59458A",
+ INIT_0C => X"0B1A0D6164EC408F8A047008D9CB622E2D19546CB32362C8BE8312FACC4BA202",
+ INIT_0D => X"4455CCCC1601143B2E45916976DC147401104104059F14685B456418596D1171",
+ INIT_0E => X"B4B55655D7453C5DA01654441070416015693378C475DC495A0458256156D15F",
+ INIT_0F => X"468751645665865943F040105B8164446641416011165018A11454D15D007415",
+ INIT_10 => X"8175134656FB96434615446289641B554684057595597595D066598611165695",
+ INIT_11 => X"18A6599B55F856501AD764059656556684017495497495C066598559C91D555D",
+ INIT_12 => X"5346166005EB404406411356518A35554684656685DD4686446112185F85B684",
+ INIT_13 => X"D555D6601585546854151468D5568546895EB4044115B4595F454E12599655D6",
+ INIT_14 => X"335D511B5557C55D467C504218A4E119C7135101456604AE1A05A1555F861668",
+ INIT_15 => X"91101161116169E0F5D448156855955595171C7110462859E41D55815FD556C1",
+ INIT_16 => X"153011465B440F059A495550560474598A50591544045B8105B8459841662905",
+ INIT_17 => X"16E16C16C16514546104654E051C0615418A9450651A1155A1B165662D1D417D",
+ INIT_18 => X"700111F690095D6159A445904D270024D7D3C3B711855915976D62896C56D165",
+ INIT_19 => X"62A10F7C5B0C0557D468857E5149D00170C316D15CCD6EC558AD0441D72116D2",
+ INIT_1A => X"97681F4400824581000023D4516DE3E2517161920D8D38057557861185921514",
+ INIT_1B => X"E152154484F551212D544846551210954484D551212154484515A45C3B78F895",
+ INIT_1C => X"457E256626804961925697473A0E2C44D0F51470F47849C431468400D048CD56",
+ INIT_1D => X"51105B8C05B445B315555C05417946285153C440619C2166018A4619C8598151",
+ INIT_1E => X"4595955BA2EA0761584405655975B59920519556E9056E0566859A4581645C14",
+ INIT_1F => X"9055965A909455530D5B16F1185118A55B15520D55159076C55AF455155B50B6",
+ INIT_20 => X"8085515155B6E90616D6E0146830806841851156724A0EC620DD04559653A415",
+ INIT_21 => X"75858C001F40514145B5B40507C305515155BA2D93E496D5695545B4605B9418",
+ INIT_22 => X"0810203080F20408032DA18003C200E266D1C15050400CF788038803844E58A1",
+ INIT_23 => X"0F203CCF4CF040B12103010203480F208C80A24CF04080D0C03C1023BC82F203",
+ INIT_24 => X"0600F6CFD04155043040000C38832340070840C04080F2103010203C803203C8",
+ INIT_25 => X"0A000C00000020061C7185CFEAAAAAAAAAAAAAAA95555555555555540B080387",
+ INIT_26 => X"0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A",
+ INIT_27 => X"313A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A",
+ INIT_28 => X"00000000000000000000000000000000000000000001F0000000000000030000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(3 downto 2), -- Port A 2-bit Data Output
+ DOB => memBRead(3 downto 2), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(3 downto 2), -- Port A 2-bit Data Input
+ DIB => memBWrite(3 downto 2), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM2 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"0008000800000000000000010001002A000200000002000800000080000800C6",
+ INIT_01 => X"023AAAAAA028A040002A0000000002B000000000000000000000000000080000",
+ INIT_02 => X"AAA00B000020000C0000000002AAAAAAAA082AAAAAAA828AAAAAAAA008223032",
+ INIT_03 => X"AAA8CC000000E0000CC00E2AA33000000003800000030008300C2AAAAAAA3AAA",
+ INIT_04 => X"3C2828002830A0A000A0C020038AA8F02AAAA302AAAAA8000008300032A8038A",
+ INIT_05 => X"820800C0A0A000A0C282800283C2828002830A0A000A0F0A0A000A0C28280028",
+ INIT_06 => X"00000C00303000208600C841C0008C028AB00806C170000010000C0080002A30",
+ INIT_07 => X"8AB83808200000C000020C2000023002A830001E300380080002A00230100000",
+ INIT_08 => X"0000C00C00322300330800E0008020C088C0E280000B0003CC0020F08038AB83",
+ INIT_09 => X"40001DA0C0200401080400000CD880A23C00C23008C00A3B20303010102C8000",
+ INIT_0A => X"0000002AEC0C70000A0093220A8008C0230028EE00032A008CA00C230004F00B",
+ INIT_0B => X"9030420240C820130704202C1C108041C900C10A2CD04E0C00B34C80380E4000",
+ INIT_0C => X"8E32028C080030DA0244070DA342C0BC26AA40880A36C0A020D1008304020040",
+ INIT_0D => X"20A0303230280000AC0020A828028A20220000000C2080000B200030000C82C2",
+ INIT_0E => X"323200204380C300000080880B80A80B83008D037820E3A00008C0400000C203",
+ INIT_0F => X"00004800400008012C2000000300820808A323008D800A30008083C81C801000",
+ INIT_10 => X"8030808000C0002F8C0008C0000230000002200882883881C8CB0002FA000000",
+ INIT_11 => X"3080000A8030002A3220A08C0002800002200882883881C8CB000200C1200170",
+ INIT_12 => X"2F8C000AB0282A0A8CAFA006230000040008C8300080100408C08A820B003028",
+ INIT_13 => X"0002C0020208400002C8C1020800040002C282A0A800320003203C02000000C0",
+ INIT_14 => X"28002208005C2A840002A08A3009090828820E0900000A823200200507004300",
+ INIT_15 => X"0880A3000000020F00420E030000A080A0208208828C00000821810007080322",
+ INIT_16 => X"85002D080320300040088382000800000008C080E0AA0300E030A0000000008C",
+ INIT_17 => X"80C00C00C0010088C088C83C00028C002300800820000200013834000010B03C",
+ INIT_18 => X"0A20108A00290E4080038C088C00A20081C12810A30000E0A0A000000C02C804",
+ INIT_19 => X"C000020C0223C020C300000C002300C20882C0C813280FEF0008C0A8280900C0",
+ INIT_1A => X"8200000030428C0E008C100108E0CC084020000ABA882800380702E300026028",
+ INIT_1B => X"C0CE4280A240A02890280A240A02890280A200A02880280A2230228824330210",
+ INIT_1C => X"081C8000008000008C00C204DC280368800042CE0002C1C0A0000383A00E0280",
+ INIT_1D => X"0880030E803200308281822223088C00020082C0C08C630003008C08CA000000",
+ INIT_1E => X"00206003248C882E00238008023030008EB33021D0D00C002020400323020E80",
+ INIT_1F => X"08CA008A00888008AE0300F230223002030008AE02A00808A040812060030823",
+ INIT_20 => X"88B0060A0032E00880C0C8322821A22AA3020D83B00D808C182E28CA00878020",
+ INIT_21 => X"20000C003280A28E2030320C8B8220060A003248C6EA80C3003820302403026A",
+ INIT_22 => X"C2BA0AAC2AA0AE82A93AAEABA2A0B110EAAFA3EFEE8ABBAAC2C442444F300000",
+ INIT_23 => X"A90AA4BABAAAE82F04946BA0AAC2AA0AC82AE0BAAAE82AB24E5ABA09E42B90AA",
+ INIT_24 => X"AA8FAAAAACFBBEE8BED8AAA9EC0AEEBECAC1251AE82A905946BA0AA42AA0AA42",
+ INIT_25 => X"FAA00C000000700562A2FC8FC00000000000000000000000000000000E02C44E",
+ INIT_26 => X"FAA5500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500F",
+ INIT_27 => X"0D25500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500FFAA5500F",
+ INIT_28 => X"0000000000000000000000000000000000000000000080000000000000020000",
+ INIT_29 => X"00000000000000000CF000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(5 downto 4), -- Port A 2-bit Data Output
+ DOB => memBRead(5 downto 4), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(5 downto 4), -- Port A 2-bit Data Input
+ DIB => memBWrite(5 downto 4), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM3 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"00040044000000020008000200020115000500020005000400020000000C0089",
+ INIT_01 => X"2975555550165082031500000000017218820002000200020002002000040000",
+ INIT_02 => X"5550070B0150281C000000008155555555849555555561555555555404117230",
+ INIT_03 => X"5555EE000000D8000CE00D9557B8000000036000000B80053000555555553555",
+ INIT_04 => X"31141484143450521050E090036555F0955557015555540000053200B9540365",
+ INIT_05 => X"4305181450521050D1414841431141484143450521050C450521050D14148414",
+ INIT_06 => X"088A0C0830B088305988C583C9824C914136660AEABA8A2AAA2A08084081160A",
+ INIT_07 => X"1544300C14808010800A0C1694A932055632082D3208420448095991A8684080",
+ INIT_08 => X"008210800A02130B030A8092006990C04620C540821702028C8290F568315443",
+ INIT_09 => X"9AB92A20C8084AAB01A820AB082640D53AA081A164C265B750A1702032124808",
+ INIT_0A => X"08016955148DF82021207E5595420685930996D9952351204C588C926A2FC00B",
+ INIT_0B => X"20E9A590C3A2192A9E9A590C3A6964A7A312A6830CEBA08A6433AA21310CA020",
+ INIT_0C => X"6E31A15036890AA312FD78AA33A084ACBE61820106E8843108A6A4229A90C4A4",
+ INIT_0D => X"11510AC9309402005C20185021614512190A28A28CF042020F108232008C45C4",
+ INIT_0E => X"31214814832100080940422454855404420142448520CC9E00A4C2C40808D90B",
+ INIT_0F => X"20268482C800150257062188232541244453130942420532044203C43C593612",
+ INIT_10 => X"7830466802C008134C8064C8208132082025942102102103D4C6202525980008",
+ INIT_11 => X"3241200540B2481531105A4C0002082025942102102103D4C6202520FB5002B0",
+ INIT_12 => X"134C801D711635AD4C525809932060882024C4202648202924C855430F223516",
+ INIT_13 => X"8282C80B91A8820265040201042028202691635AD44231040B103C99200003C8",
+ INIT_14 => X"9600999400AC154C98015A653207468C14C808871080914131A01A0A0F24C301",
+ INIT_15 => X"044853098808030C00C111820210C16080C44104654C8220949E86A80B240B19",
+ INIT_16 => X"4B46A224231280A0801E421B0AA401202064C048D1552324123252026480814C",
+ INIT_17 => X"48E88E88E8828204C864C42C90814C8053204205108099080A743C809070883D",
+ INIT_18 => X"0596A8858AA60CAA58004C066C60594203DB16B053201012505808208D03C468",
+ INIT_19 => X"C818807D4458A0C2C202603D081702E6862888C460988FDF02089AD4164688C6",
+ INIT_1A => X"420200A2B99B4C29286E640205F1CC088844081F49601684300F25132009D084",
+ INIT_1B => X"C9C2831215A0C4856831215A0C4856831215A0C485683121593251515C730222",
+ INIT_1C => X"203D4080904A20086864E4682C918096010081C30A0292C6442020EBD9160148",
+ INIT_1D => X"0548232D623112344203115113204C82084015E8C94D930063204C94D5202448",
+ INIT_1E => X"1080842348196501021064050170B2005553108554208C902010C06313012D42",
+ INIT_1F => X"04C500542A464205692388F93219320523420569084206041080560084234606",
+ INIT_20 => X"660408084234C2A548C8D63106851905632142433C9D654C965D54C5005B0A92",
+ INIT_21 => X"00201E21706259615232358C576854080842348195C541C3003112361A235591",
+ INIT_22 => X"005000100050140005055541515105505555514554414515441544554002020A",
+ INIT_23 => X"0500145455514015051545000140050014001055514000514054500114005001",
+ INIT_24 => X"4545554554515544005000055401555541414551400050515450001400500140",
+ INIT_25 => X"FFF00C000000501394E93A4FC000000000000000000000000000000005041545",
+ INIT_26 => X"FFFFFFFAAAAAAAA5555555500000000FFFFFFFFAAAAAAAA5555555500000000F",
+ INIT_27 => X"093FFFFAAAAAAAA5555555500000000FFFFFFFFAAAAAAAA5555555500000000F",
+ INIT_28 => X"0000000000000000000000000000000000000000000070000000000000000000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(7 downto 6), -- Port A 2-bit Data Output
+ DOB => memBRead(7 downto 6), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(7 downto 6), -- Port A 2-bit Data Input
+ DIB => memBWrite(7 downto 6), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM4 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"02550195000200030077007600030359001E0003001C09DD000307EA00000064",
+ INIT_01 => X"706555555755A365027600130001222837780003000300030003001600120005",
+ INIT_02 => X"555709831042087800000000D355555554DA5555555536355555554D5AA46DF7",
+ INIT_03 => X"5541AA00002A2800AC82A25506A8000000A8A00002A200018329555555559555",
+ INIT_04 => X"A6956586F8AA55961BE2AAACA89541B85555060D555554AAC001822A2154A895",
+ INIT_05 => X"15564C3A55961BE2A956586F8A6956586F8AA55961BE29A55961BE2A956586F8",
+ INIT_06 => X"C4DD0F9C3E254D554C5A94D4A3500F07C1D00B5C330CF3C3F3CC5544DD52494A",
+ INIT_07 => X"E1B5D755571D97818E76755CE71835646436755036461D5558E13248A5555D99",
+ INIT_08 => X"DD953042010B03E0024CD486B931E7579D27491D5550765A0D55154409D21B5D",
+ INIT_09 => X"4424F150D91D3714CDB070020425D4601515551100F8018994D19555114041D5",
+ INIT_0A => X"75543554959F55D556679190489D554403E0072C4060DE140F41BA11D6E44451",
+ INIT_0B => X"6845704D611544DC545704D5111C1371144C1DC79E5C71E113697174D0747754",
+ INIT_0C => X"38344823553107174E413471697193C477905D84C7455344DE19D378574D9313",
+ INIT_0D => X"55DD48483E1B310505675CCD58860351454104100F441D5552558C3655B95098",
+ INIT_0E => X"65111AF8DD1AD055541D1D54F08F41D115509285CE0754B47450F82DDB5B6556",
+ INIT_0F => X"D550499F18E4B076DA4214846A8499649843C3E382555435685D9495496C3106",
+ INIT_10 => X"4DD55C3555001BD40D9110D5558C3701D5515951951D5114D0D2678221658145",
+ INIT_11 => X"340D6B9445289AC434711C0F9F15CDD5515951951D5114D0D2678267C4950175",
+ INIT_12 => X"F40D912D604235CD0D221D444356E005D550D1555381555500D97D875686A420",
+ INIT_13 => X"80549BE357DF5D553D7DD55A1DD555D557D4336CD746A5475E5D6A216391175A",
+ INIT_14 => X"010501F5405D40C8D5940C1435580D3849CE5740B18E1910340745C556881D5B",
+ INIT_15 => X"9B4603E049D9C0084555521555D5710555774D34040D536B8421F9D453441141",
+ INIT_16 => X"041175106E554455555F9551036500638510F943D169668356285678818E340F",
+ INIT_17 => X"D8F98F98F98FDD00D920DD6A08440D9103545D563755637555C621AE0505C164",
+ INIT_18 => X"1157D3918169757BC8590F9710611503950440C103644653210DD555BE179544",
+ INIT_19 => X"D54C433594B0854455550145755140154527D89514BD8B95754C1CD64F0D1906",
+ INIT_1A => X"5551405045830F8D75D16D155464110C4D99D918486C8049DD528503667CD750",
+ INIT_1B => X"A3429553102554C409553102554C409553102554C4095531003C972139044313",
+ INIT_1C => X"D151519E005111D94414170D204D0484CA4555500503216C59D5301C3526441B",
+ INIT_1D => X"57046685066556A495D5DD4103D10D51773591C0DE4C83E503570DE4CD6B889D",
+ INIT_1E => X"1775776F4CCF97A4766261D877D536396DC347407021AA255525558D03E7055D",
+ INIT_1F => X"30F31DBD15BBDD56706F9BF83648357C6F5D547377B6FD0855545F35776F3A33",
+ INIT_20 => X"8837575776B0C15859D9843C816FE39A4366411D28401C0D41F3E0FB1D9F4566",
+ INIT_21 => X"07670D146590C32F1676610FF31267545776B40CCCCFC89D59D5A6E8DC6F2CDF",
+ INIT_22 => X"CC30300C00300C000C320499A95208E1C4535A2755E92DCB882389238A427556",
+ INIT_23 => X"000002951C50C080313003030BC02D003400811C50C002CB87E43003F803E300",
+ INIT_24 => X"5841550C544F955C0740000C380831B1C14C8C00C0C023330030300800D00000",
+ INIT_25 => X"FFF00C000000F01400FFEAB3C0000000000000003FFFFFFFEAAA9543850823A8",
+ INIT_26 => X"555555555555555555555555555555500000000000000000000000000000000F",
+ INIT_27 => X"3A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5",
+ INIT_28 => X"00000000000000000000000000000000000000000000B0000000000000020000",
+ INIT_29 => X"00000000000000000CE000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(9 downto 8), -- Port A 2-bit Data Output
+ DOB => memBRead(9 downto 8), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(9 downto 8), -- Port A 2-bit Data Input
+ DIB => memBWrite(9 downto 8), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM5 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"0028016800040002006B00A40002002500150002001500200002078500620060",
+ INIT_01 => X"090555555A16501F0555001E00011554543400020002000200020008001C0004",
+ INIT_02 => X"555A082282D08E55000000009355555555841555555561455555555058510938",
+ INIT_03 => X"5564320000C598030D3C595590C80000031660000C58C0246FC1555555550555",
+ INIT_04 => X"12084505C8182114172040DF165564345555903D55555715C0246FC58D571655",
+ INIT_05 => X"96296A48211417206084505C81A084505C8182114172058211417206084505C8",
+ INIT_06 => X"E18B5B896D1CD962A7546A5450CF5B71580861C4E138618E91B8586205916041",
+ INIT_07 => X"17146758A54584656E0B18A04CF16646C1660945661A862854D183703F0F0588",
+ INIT_08 => X"0582C0F063C156D030459915F861A18480718705961516185996751FBC617146",
+ INIT_09 => X"378E9CA59823E272012C64BB400C144101558A49B5B4BD50710945615F380059",
+ INIT_0A => X"1852855419554461645F509EE3462926D6D2F546F1595CCC5B756511B2343155",
+ INIT_0B => X"B7702AFAD5CB6C8B1702AFAD9C0AB629CBD9C4BA28082E8CBEA02C8E801A1166",
+ INIT_0C => X"0166AC531C4502C8D941902C80263E735D40066BA5723A8DA8CCBEA322DAFEBE",
+ INIT_0D => X"A01240416D1107E5A19151016694527B3730C30C5B44061651A15D6601668510",
+ INIT_0E => X"DA01D4D9861C12585D05065D2811A8519615D0104661940514C5B41453955451",
+ INIT_0F => X"6168095D15E114149C58BE2F5542950D5956D6D080162966440614694692E3C5",
+ INIT_10 => X"40628441544996DA5988A599654D643461695D65165D65D45596534A07012D74",
+ INIT_11 => X"668D5784B55457D16459CA5B8496B061695D65165D65D4559653465304D4BC14",
+ INIT_12 => X"CA5985D59F72958459207121566453606155996169016161A5985D5559451715",
+ INIT_13 => X"4D5555D195940616913116116061606165B7295844555A2759A175215B85D555",
+ INIT_14 => X"70B417352F056B6A715694656668C4C6756858D0D14D121D66E164A05D440611",
+ INIT_15 => X"80ACD6D20058E080458A141616C58D8595B41041C55991577DC058B25D774D57",
+ INIT_16 => X"A01F145855A314C58515165132DC89574495B80B0855514715545534054D025B",
+ INIT_17 => X"17495497495C066598559D45356659889666462941859D185867416D14046975",
+ INIT_18 => X"99524CDD7720192513505B84634995CA1454710996622409D9C0596565546840",
+ INIT_19 => X"996DF895A74805A21616894518A86430CC0D5568440545001645484671C4D444",
+ INIT_1A => X"561B22C94D195B472D1345162807D10000A4582043DF16F464514116627A61A5",
+ INIT_1B => X"5100966998A59A662966998A59A662966998A59A66296699896E9892E1FC400C",
+ INIT_1C => X"6545195D1AC85458697806A50148143DF1458A102C00D046646190140D247717",
+ INIT_1D => X"280F5144451A15D51616D05456C1599118412815927256E196655927215B4460",
+ INIT_1E => X"11858751486456951621685817855578511641A9DF0165016105845C16E02E06",
+ INIT_1F => X"35B8051B0CB846294559D7456619664659462A441B75B441C587E5058759A619",
+ INIT_20 => X"641759587598E0C15454556E8BAA56A5566140865C12B2596B3255B40507C305",
+ INIT_21 => X"C1632BBD073618665515155B50B647595875948676CA8846106405D4D05DA420",
+ INIT_22 => X"C030003C40F10C040D284715799040C1155498499FE9FDA30103010304C41658",
+ INIT_23 => X"0D1036025D60C0F617D18300080422103440125D60C0420B00C4301190424003",
+ INIT_24 => X"D0456C31905419FC4108000C300999F50245F460C000C14D1830003040D10344",
+ INIT_25 => X"AAA00C000000002AAA555573EAAAAAAAAAAAAAAA955555555555555407010320",
+ INIT_26 => X"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA",
+ INIT_27 => X"003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
+ INIT_28 => X"0000000000000000000000000000000000000000000060000000000000020000",
+ INIT_29 => X"00000000000000000CE000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(11 downto 10), -- Port A 2-bit Data Output
+ DOB => memBRead(11 downto 10), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(11 downto 10), -- Port A 2-bit Data Input
+ DIB => memBWrite(11 downto 10), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM6 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"00000000000000000001000200000000000200000002008800000300000000B0",
+ INIT_01 => X"202000000800080A010000000000080202B20000000000000000000200000000",
+ INIT_02 => X"0008A20300A00C02AAAAAAAA0B00000000020000000000000000000002002830",
+ INIT_03 => X"0000B8AAAAC002AB2CBC000002E2AAAAAB000AAAAC0EEA800FC8000000000000",
+ INIT_04 => X"84A000A0C2828002830A22CF000000B00000023C00000300EA800FC0EC030000",
+ INIT_05 => X"000003028002830A0A000A0C284A000A0C2828002830A328002830A0A000A0C2",
+ INIT_06 => X"3C0003000CA33000040300400B38030004028238020082002600000C8C080000",
+ INIT_07 => X"8A08CB00028C0A803C31300EA08000208000200800208C0003C8380232828C02",
+ INIT_08 => X"8C000B04881380C8800F0400B03803020093020C000A30280000202224C0A08C",
+ INIT_09 => X"003914C000B6C0E02C000003000820C882A00080003200900D800800B802D8C0",
+ INIT_0A => X"30003002B808C8C004033000800C020000C802409E0608CE03080080A00C0302",
+ INIT_0B => X"C0D00083034C08010D100830340028034CB3403C3000030420C004DA00322302",
+ INIT_0C => X"E0002A07384C004DB0C22004D00B6894C2820CAE22D364D8304820C120932820",
+ INIT_0D => X"00E002C00C811C0028A3282C08228A2400CB2CB203C08C0000002C0008000200",
+ INIT_0E => X"000E80CACC0B80002A0C0C80280088C20008800A22B32C0E30803220CB808800",
+ INIT_0F => X"C002283E00C289320830C830042028000200C0C8200000002A8C80000022BC30",
+ INIT_10 => X"88C0020880BB82C800080000003C02F8C0000C08408008008002032202088038",
+ INIT_11 => X"022C0B02300202C0000020030A00B8C0000C0840800800800203220B08800010",
+ INIT_12 => X"C8000A04800A12240020200280022F80C000000001080000200000010020A080",
+ INIT_13 => X"BE8081C90A260C0010BA8008A8C000C00100A122401000030C0030880F0A0080",
+ INIT_14 => X"0A00822000040020688002080028208008480200401C8A80002302800C200C08",
+ INIT_15 => X"00A000C8D8C0C0800000028000E00C20200082082000080B202050200E020802",
+ INIT_16 => X"000218020C02208000050088F8834C0F2A20300FB400002380C20072201CA803",
+ INIT_17 => X"00882883881C8CB000200C008880000800028C00230002300003203C81004038",
+ INIT_18 => X"000008428210320A080A03020820002200880A80000202B92028C00028000022",
+ INIT_19 => X"00890210803420210000280A30001020B8C8C200000C1800302F82430A2083B2",
+ INIT_1A => X"0000D0B68823032CC0A208000200000C20A8C0E000830008C800228000B06320",
+ INIT_1B => X"0820808E8CA023A12808E84A023A12808E84A023A12808E8480C0B8AE0040304",
+ INIT_1C => X"C808003C8233A0C00C30080800009008320000000B83A00828C0082808800001",
+ INIT_1D => X"00B00820E0C000A08080022200C6000A322860C0083880C000020083800F2028",
+ INIT_1E => X"E320230E188022AA300E24C13380203035000332ED0C20800080020E80C03C8C",
+ INIT_1F => X"70320C8A08388C003602C18800000022028C00363330F3888002A2E0230A2220",
+ INIT_20 => X"2263020230E1E0880182800C92308AAA0000384C8C202300C23220320C8B8220",
+ INIT_21 => X"E303800A0100820A0060A003082303020230E18800DAB48C08C8B0E0C80202AA",
+ INIT_22 => X"4AAA2AA4AAA2AA8AAB2AEEEAE2A12512CFEFA2FAAA8F2AA2C59444944F803000",
+ INIT_23 => X"A32A8CAAABAAA8EF04892AA3AC4AB02AD0AAC2ABAAA8AB12CF7EAA2B4CA932AA",
+ INIT_24 => X"AE8EEAAFA8FBFAA8AE94AAAAAC8FABAA8A81224AA8EA305892AA3A8CAAB2A8CA",
+ INIT_25 => X"00000C000000100000000033C00000000000000000000000000000000A04944E",
+ INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_27 => X"1500000000000000000000000000000000000000000000000000000000000000",
+ INIT_28 => X"00000000000000000000000000000000000000000000A0000000000000000000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(13 downto 12), -- Port A 2-bit Data Output
+ DOB => memBRead(13 downto 12), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(13 downto 12), -- Port A 2-bit Data Input
+ DIB => memBWrite(13 downto 12), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM7 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"028200020002000000020081000001800000000000000A4600000320002A00CA",
+ INIT_01 => X"905000000C800680020000080000444101710000000000000000001100000002",
+ INIT_02 => X"000C51A6981A9A015555555587000000002140000000081000000006010850B2",
+ INIT_03 => X"0001745555E001579D7E000005D15555578005555E0DD5410FE400000000A000",
+ INIT_04 => X"4C521050D1414841434519CF80000172000005BC00000380D5410FE0DC038000",
+ INIT_05 => X"00800311484143450521050D148521050D1414841434521484143450521050D1",
+ INIT_06 => X"B21023208C60000808020082040823582DA15A0A0A828A202A0202024C040620",
+ INIT_07 => X"5454C702054C25583CB23201564080111480B02080B14C8202C4451530504C29",
+ INIT_08 => X"4C2CD70F843F88C6782C0E40B2442321A663258C008530942000508418C9454C",
+ INIT_09 => X"90332AA202A8C4867C420A02E68152956550205C02310276425C64087C4124C0",
+ INIT_0A => X"320900014031E4C8090F7980048C817008C409D4390C4DAD23442049465EBE08",
+ INIT_0B => X"A6EA40229BAA42128EA40229BA900843AA22A93A69924E9A08A64AA22E319301",
+ INIT_0C => X"1080551FB198A8AA21E92A8AA64A88A82A6D8C6B22EA88A329A508A694328808",
+ INIT_0D => X"091921E08C46AC38145316580551649C4024924923E24C8008083C80A4202506",
+ INIT_0E => X"809103D78C9C4802118C8C50462554C94085486515E31E1D32123198C7831708",
+ INIT_0F => X"C805903D82C942314421C0700C1514904108C8C518408080114C42002005E000",
+ INIT_10 => X"64C82514423FC3D4202E1200002C8134C8000C048048048202080B1484546834",
+ INIT_11 => X"81380F25708102D882181023258074C8000C048048048202080B140BA642AAA2",
+ INIT_12 => X"D42025987905A11A208844A948010368C80200080368080812025822081080C0",
+ INIT_13 => X"0D4202C615198C803475408494C808C802D05A11A220C0A30C0830540B258202",
+ INIT_14 => X"45A24450AAA8001ED44005148016322E0482011A9C2C554C8013056A0C128C84",
+ INIT_15 => X"267108C424C2CAA22020854080D02C10102165961120040B501AB6060C09A404",
+ INIT_16 => X"2A80668308085210208B405C3410A90B1512326F49010C17408110F1542C5423",
+ INIT_17 => X"42102102103D4C6202520C204660202E08014C80932001320243982C52A28031",
+ INIT_18 => X"800422C160763185560523251E58003082160568080B914B1814C00020820259",
+ INIT_19 => X"00470222620A101A808054213206208A2193C202621C225A301FD1A305320225",
+ INIT_1A => X"408028096013231C01580480818028AE6674C292201F5104C60814480A709312",
+ INIT_1B => X"05A8405D4A5017529405D4A5017529405D4A5017529405D4A48D445D900A2B99",
+ INIT_1C => X"C421882C5F0098C24E6697488A6D6201F520208A80EBD91434C81A9690E40082",
+ INIT_1D => X"81700C11108080C14040851988D92005316491C20534C8C808012053440F1254",
+ INIT_1E => X"1310130866891415309108C2332080B255482315568030580850212D48C9BC4C",
+ INIT_1F => X"B2358C41A1714C810908C22080848011084C81093370B4E690215110130841A2",
+ INIT_20 => X"119301013086DA150202108D206544150809068C5E980520407852358C576850",
+ INIT_21 => X"D30B40018241451440808423460613010130866895E50E4C84C54086C6085545",
+ INIT_22 => X"4410101440510404051545555151455155455154554145554515451540283001",
+ INIT_23 => X"0510145455504015151141010144051054405055504040514154101054415101",
+ INIT_24 => X"5445551554515554415400041401555541454450404051511410101440510144",
+ INIT_25 => X"55500C000000D00000000033C000000000000000000000000000000005051544",
+ INIT_26 => X"5555555555555555555555555555555555555555555555555555555555555555",
+ INIT_27 => X"1515555555555555555555555555555555555555555555555555555555555555",
+ INIT_28 => X"00000000000000000000000000000000000000000000E0000000000000010000",
+ INIT_29 => X"00000000000000000CD000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(15 downto 14), -- Port A 2-bit Data Output
+ DOB => memBRead(15 downto 14), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(15 downto 14), -- Port A 2-bit Data Input
+ DIB => memBWrite(15 downto 14), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM8 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"015502550005000300F6005200030357002A0003002A066500030BDD001C000F",
+ INIT_01 => X"793000000D4EC7C70123002F0001191522250003000300030003003D00060009",
+ INIT_02 => X"000D601010C040A555555554DA00000001DCC000000077600000001645953DFD",
+ INIT_03 => X"0024C9555693855A7CB92A00932555555A4E15556932D564899E00000000A000",
+ INIT_04 => X"5D961BE2A956586F8AA567064E0024F0000093A4000002405564CB932C024A80",
+ INIT_05 => X"5D510E56586F8AA55961BE2A955961BE2A956586F8AA566586F8AA55961BE2A9",
+ INIT_06 => X"A2CD6E8D995445D50415505D54486DAC86F2014401004100D90F76420F951317",
+ INIT_07 => X"1510D0756C0F85016A08356D69D1AE7545BE09D1BE090D551595211564540F86",
+ INIT_08 => X"0F805644C511DB9595044165E874C364C783450F96543E146F9B074370D9510D",
+ INIT_09 => X"D0059716B8C5137DC0372001534D13641227546416A51443126409D9590120F9",
+ INIT_0A => X"36560854A95A40D9CF52944C950D51909A94912C5C5517E569C5555639E4D274",
+ INIT_0B => X"1C5D34787171C74DC5D34787174D1531714974D1874D34571E113716083403E4",
+ INIT_0C => X"11BC45059E74587172579D87113C5A54D9100D71F15C56148574D215D3785A1E",
+ INIT_0D => X"57101951A951691C0443C079D85206791520820865500D917555498E15555D43",
+ INIT_0E => X"5643D4020DC94C76460F0D54FD2FB0F89D9E0713B48365143E566570FDD56475",
+ INIT_0F => X"D9515D4955A1203DB50398E455555344471A9996A41D51BE6B0D1D51D5B6B105",
+ INIT_10 => X"10D5514C5D3FD4116B8D1639C1459E40D9C401D0DD3DD2DD36BE5659440CD400",
+ INIT_11 => X"9F7C5E85475555A1AF08416284DD00D9F401D01D31D21D36BE56595B07104410",
+ INIT_12 => X"016B86C4001110346B344830DAE76470D916F1D9C089D9C816783811755571F1",
+ INIT_13 => X"905DD595B4040D9C0A341D9FD0D9C0D98D1111034FC55553757DD5545E865D17",
+ INIT_14 => X"11907484261415500C0179A5BE6373A31C467445C5596D8D8C03C3F0755C0D9D",
+ INIT_15 => X"83E4589420F845D51755749D9C37408777410410826F9657E7434002771C0034",
+ INIT_16 => X"354053475556521764441D2BC0A4815E5456A851083F555955557525B559536A",
+ INIT_17 => X"951951D5114D0D2678263DD55BD1678D58E60D5903659436431C1549535241DD",
+ INIT_18 => X"44003B04E4403403010B6681900440719D0110345BE343C85440F9715CDD5515",
+ INIT_19 => X"7986431374C5975D9D99B9D835502D49FC805555310551403E56034C107395E0",
+ INIT_1A => X"9D9120C85C8066553413241D5C5014B168B0F8D350CD1D40D275549BE1100366",
+ INIT_1B => X"54B49D071CE741C739D071CE741C739D071C2741C739D071CD815C8654051858",
+ INIT_1C => X"D1D145596B4080F8C1518D8456E6310CD53754060C2C353430D91D85BC110115",
+ INIT_1D => X"5264555525557571DDDD84001BD76B9437189636B0241BA01AE46B024D525D40",
+ INIT_1E => X"0377485474C5E3903E3400F03FC755E86D59C3478B415575D96767055BA26C0D",
+ INIT_1F => X"E6A10F207A310D5D0455154D8E21AE7F540D550437D5EC0C6767EA6748574D31",
+ INIT_20 => X"EF2D7675C576C499D515DDAD233DBA2F18E0360D814C1E67410C66A10FB31265",
+ INIT_21 => X"03E10116505841CC7565776BFB332B767485444C49EF430D90DD1554E856A57E",
+ INIT_22 => X"060010B042F18004022C024D1C0C8C024C88055CCD9726B03330313015D43E70",
+ INIT_23 => X"2E10B94C860800712F77200103040C105040C086080040C8029A0013B84AE10B",
+ INIT_24 => X"7D02A0C02689FCD84294002EC00712EB68CBDDC80042C2F7720010B040210B84",
+ INIT_25 => X"00008C00000000000000003CC0000000000000003FFFFFFFEAAA954349323032",
+ INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_28 => X"0000000000000000000000000000000000000000000C20000000000000000000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(17 downto 16), -- Port A 2-bit Data Output
+ DOB => memBRead(17 downto 16), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(17 downto 16), -- Port A 2-bit Data Input
+ DIB => memBWrite(17 downto 16), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM9 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"009600160000000600E4009200060557000C0006000C02960006039300FA003A",
+ INIT_01 => X"B5D000000581E4BC081000060000110A155A0006000600060006004200740002",
+ INIT_02 => X"000959D19C274612555555558600000001AD000000006B60000000120541D009",
+ INIT_03 => X"00176555560F45581050E6005D955555583D155560F955579000000000002000",
+ INIT_04 => X"811417206084505C818201B03D00174C00005DC0000000331557D00F94003980",
+ INIT_05 => X"05904844505C8182114172060811417206084505C818204505C8182114172060",
+ INIT_06 => X"00B95D4956847059025610062B41597E299E04403812086A800816305B801AB3",
+ INIT_07 => X"16159116405B452D7501664AC09D5E01854D00657D01599654685565C7F75B44",
+ INIT_08 => X"5B405444511054691C433355D45496618696555B86456D155784919B25916159",
+ INIT_09 => X"970A02C57472B208C4E68B5073F10827B8D166E7551A574890E7B45841D905B8",
+ INIT_0A => X"6608B8000D640598E4514E75D5599B9D54695D15555904C55955628C08C3901A",
+ INIT_0B => X"C00B65A3002C1BE880B25A3002E96FA02CB02E9C30CB670268CB22CAE16696E1",
+ INIT_0C => X"356F85644232302C85304B02CBE7201284D6591C100B20C8302FA0CCBEB32C68",
+ INIT_0D => X"5A1BF03D468501103796DC24564AC421C50C30C3550C59841859454D1161632D",
+ INIT_0E => X"85D4D448590820161C5B595667C5A5B00581FCE8121643C16C95DA45B0D65418",
+ INIT_0F => X"985951471451596F6CB8120458A153154515546A2F45996E0059061061011525",
+ INIT_10 => X"659969F546555451534615B81D455DA5981400574554574665B551AAF5F542E5",
+ INIT_11 => X"6E55514D618A545D4CF26151450565984400574554574665B151AA555CD50306",
+ INIT_12 => X"615B4500879C03135F4F516357E04A6598053058E04058E495F4D4C818A5A16D",
+ INIT_13 => X"2B06D5689712598E0D3485815598E5986439C031312585AA184862965D454615",
+ INIT_14 => X"5C56557980C2D511356D69554E245A019110147CD1668D555F16CD6E18AD5981",
+ INIT_15 => X"4547156A05B44C709165B5058C4155014151861854578151255C0A1E1890E155",
+ INIT_16 => X"2C2148055859485162900507A804095DA5159403033C58A4458A051A45469451",
+ INIT_17 => X"D65165D65D4559653465B062850D534657E159901662056619D03156BAC41061",
+ INIT_18 => X"B40CA027558966CDB0B5594581EB405406459A4355D1A9405265B84963061695",
+ INIT_19 => X"B88C400052E3616445894869665813035A621616A3C160716E0031309D5A160E",
+ INIT_1A => X"85810003DF1055A137F7C24592C0B0534655B4753E2568459918A017D1809655",
+ INIT_1B => X"2ABF45A916115A458456916115A458456916D15A4584569161554844B32CD4D2",
+ INIT_1C => X"90665146A34835B4405B2243F45997E25841667C00140D3415982F3F5F100D16",
+ INIT_1D => X"914458A14585B58D0505057316525381649A743537DD175394E25B7DD251A445",
+ INIT_1E => X"564156596A42E5216D10D5B16F1195145157D6798BF562805801602E55501859",
+ INIT_1F => X"55955BA2D8F159910159565D4D217E105A5995016785D8328160E61156594E90",
+ INIT_20 => X"ED891416A5952D91D6561D652197FA6617D2065983117557579455155B50B645",
+ INIT_21 => X"96D1C15CCF5965D07595875966192514156597A438065D59859925A5D55A7182",
+ INIT_22 => X"86601098427198040F00102D2065F4638C0066147C25890194D197D1A48D6E32",
+ INIT_23 => X"2F10BD01DBE980D133F4660103040C10F04001DBE98040CF435E60123048C109",
+ INIT_24 => X"41CC71F0461277C043200020184454DCA90C7D198042D31F466010B440F10BC4",
+ INIT_25 => X"00000C00000000000000003CEAAAAAAAAAAAAAAA95555555555555540D14D180",
+ INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_28 => X"0000000000000000000000000000000000000000000B70000000000000000000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(19 downto 18), -- Port A 2-bit Data Output
+ DOB => memBRead(19 downto 18), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(19 downto 18), -- Port A 2-bit Data Input
+ DIB => memBWrite(19 downto 18), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM10 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"00000000000200000042000800000003000A0000000A00000000038300200000",
+ INIT_01 => X"300AAAAAA020C232008800040000088008000000000000000000000800020000",
+ INIT_02 => X"AAA00002000008000000000000AAAAAAA8042AAAAAAA010AAAAAAA8020080088",
+ INIT_03 => X"AA800000008F00020208C0AA00000000023C000008F00000088CAAAAAAAA0AAA",
+ INIT_04 => X"0002830A0A000A0C282820323C2A800CAAAA00E2AAAAAA330000C88F02AA302A",
+ INIT_05 => X"8C0800000A0C2828002830A0A0002830A0A000A0C2828000A0C2828002830A0A",
+ INIT_06 => X"00300020200000C0A1000A0C000002088CA200005C130CB400003000030080C3",
+ INIT_07 => X"020002302E0320083088002282802C00880C88C83C880000C000083000800320",
+ INIT_08 => X"0322C80CE030C20033203A80C2CB0000E00022030A800C830F0A2321A0082000",
+ INIT_09 => X"020C00407253203845C00010EF0EF6002003008C60406000008C08C000200030",
+ INIT_0A => X"000003AAA80820008C020809000002318101802138028CC00E20000838403030",
+ INIT_0B => X"4202C0C108040C8010241C108090720804C0093413A20D00B042004C0C0000C0",
+ INIT_0C => X"802D008C8E130004D020800042893401283000252C01344D1008344020C13030",
+ INIT_0D => X"008A4000100000328380C228C82C20A028000000063200023000082C800000C0",
+ INIT_0E => X"02A8408800BCD830040300828028A0328C009022AA0000000EA0800030C08030",
+ INIT_0F => X"00A0000A0008280C031A0E8000000B8020C18000808C083C0A000C08C0A20800",
+ INIT_10 => X"000000808C9540880F24C0F0A0183C8000A2A0C78C78C68C90B000080080A800",
+ INIT_11 => X"0C100020230080883C080804208C8000A2A0C78C78C68C90B00008020822A882",
+ INIT_12 => X"880720A2880288820F00008800C0A800008070C0C0A8C0C140320BE030002868",
+ INIT_13 => X"A00C000080A0000C0A120C004000C000880028882000002E3028C0000C208C00",
+ INIT_14 => X"02A03008AA200022008010800C001222002A3008243000041C40D082300C0002",
+ INIT_15 => X"20808202003208CF6300308C0EA32823032C208220030202210210BA32028B30",
+ INIT_16 => X"08D080B10000B62300200C028200260C0080C20B80FF0000000030003800020C",
+ INIT_17 => X"C084080080080020322030C02A200B2401C0000880028000200AA000258210C8",
+ INIT_18 => X"82A22200A08000200A0A0820C2282A1A8CA0000800C90280080030A00B8C0000",
+ INIT_19 => X"7038030C21E023288C0238C80023663238A100000C2002080C000822021200A2",
+ INIT_1A => X"8C0C088083000C003020CD8C08382EA2083032C0008420000A3000C0C8000020",
+ INIT_1B => X"00F08C08A0A3022828C08A0A3022828C08A023022828C08A08280A2C0D0B6882",
+ INIT_1C => X"00C800000108003200820121208428084F63002088280880B000FC0A230B8800",
+ INIT_1D => X"088000002000300C8C0CB208838A0300000AA21072EA030B82C00F2EA2000820",
+ INIT_1E => X"802328022802E2A80C8AE0300F2320023A02C0294F080038C023003C03080E00",
+ INIT_1F => X"206003248E340008E002008C3C903C08020008E00380E000E30008A328021E00",
+ INIT_20 => X"ECAA3232802208C0C0808C386200BAA2C3C8E20012002B0B0281206003082300",
+ INIT_21 => X"00C82C04338C00893020230E2220EA32328022800A22AC00000AA020E00200AA",
+ INIT_22 => X"8BAA2AC8AB22EA8AAA3AAAABAEF12242EAEEFAAAEAEAB9EB858904893FB00C38",
+ INIT_23 => X"B62ADAAFAAAEA88604013AA2AD8AB62AA8AAA3AAAEA8AB6ECAA3AA299CAE72AC",
+ INIT_24 => X"FA8BABAAF8BEAEACBAC0AABBF88B3FAB8FC1804EA8AB706013AA2ADCAA22AD8A",
+ INIT_25 => X"00000C00000000000000003CC00000000000000000000000000000000B05893B",
+ INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_28 => X"00000000000000000000000000000000000000000002C0000000000000000000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(21 downto 20), -- Port A 2-bit Data Output
+ DOB => memBRead(21 downto 20), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(21 downto 20), -- Port A 2-bit Data Input
+ DIB => memBWrite(21 downto 20), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM11 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"010002800005000000C1008400000003002100000021040000000B0B00000080",
+ INIT_01 => X"300555555818C13E024600280002446044400000000000000000001400210008",
+ INIT_02 => X"5558001502C05488000000002055555554085555555502055555554490240A60",
+ INIT_03 => X"55400000005F20014925C05500000000017C800005F080001652555555554555",
+ INIT_04 => X"284143450521050D141494397C95402E555500D95555557B8000D65F09557015",
+ INIT_05 => X"4C06A011050D1414841434505284143450521050D1414A1050D1414841434505",
+ INIT_06 => X"08300810202228C05A80858C82220C544955A62AAEABAEBA2AA230A8232640C7",
+ INIT_07 => X"81820930112311843064801515403C98683C64CC3C642000820254B002222311",
+ INIT_08 => X"2319C42EE8BAC200709BF860C11608091088112325648C440F25531652041820",
+ INIT_09 => X"0AAA64A0B1AA88B6AE80A0F9CB0D89600123002ED080D0A1082E04C2601C8232",
+ INIT_0A => X"80B1F855540592024B086067802000BB42034297B9016AC008640821B6A83830",
+ INIT_0B => X"A590C3A6964A7A3129083A696430E8864AA6423AE830CEA4A9A084AA0C8048C8",
+ INIT_0C => X"402E609E6DA6824AA1855024A08AA99B160820AA6292A9AA6A4229A908A6A9E9",
+ INIT_0D => X"0155C680202440B64308D144C55D125014820820088920293200203C44080420",
+ INIT_0E => X"21158224204A263099232052441402364C257115550828288DD0801236C05232",
+ INIT_0F => X"025008204204448D20BD0F420204075350030300404C042C95208C84C8591480",
+ INIT_10 => X"120000824C6A82140F18C0B258202D42025358CF4CF4CF4C70F6080202425682",
+ INIT_11 => X"2D2E0814132042102D960C0C114C42025358CF4CF4CF4C70F608020811195469",
+ INIT_12 => X"140F1159658164C80B60264402C9144202E0B8C2CA74C2C6C0F140DA32001498",
+ INIT_13 => X"508C820240D8202CA5A58C268202C2024698164C8BB0201D3214C8120C114C82",
+ INIT_14 => X"41582246551A8099826834902C91209986B53201DC3018282FC8F041320C2024",
+ INIT_15 => X"14404302823121C09300314C2D531653231C1041590B25085301B0E5318547A2",
+ INIT_16 => X"812A614202024993081A8C9343921D0C01408167603C02062020808004200508",
+ INIT_17 => X"C048048048202080B140B8C815580B1803C9200648096080914544201F19B8C4",
+ INIT_18 => X"635309A05A60803045A50814A916352D4C51801602C6196216023258074C8000",
+ INIT_19 => X"B2642B997AD453154C2904C48011F864F8BA80800C1809048C988C8B81208071",
+ INIT_1A => X"4C2886A01F5A0808B007D24C040A0258047231C180889E2205320603C46A4810",
+ INIT_1B => X"80704C945513251544C945513251544C945513251544C9455031215D42809601",
+ INIT_1C => X"08C528201A2E02316950461B05582C08889300706A9690E6B2029C005E94E8C0",
+ INIT_1D => X"044202085020302C4C8C718442140B248247C1B0F4D18206C3C90B4D15080612",
+ INIT_1E => X"4813140150A9C5588C5692388F9310815542C81567040804C25309BC02058D20",
+ INIT_1F => X"80842348197820041901405C3C782C95012004188320C6849309555314016C2A",
+ INIT_20 => X"CC55313140158184C0404C219A25715003C510202846A50F6A46008423460610",
+ INIT_21 => X"08C41C890A4D24963010130841A215313140150A91905D2022045012D6015414",
+ INIT_22 => X"4050001400501400051411551455445144445554554505515511551140808CB4",
+ INIT_23 => X"0500154555414015155545000500140050004155414001414154500154015001",
+ INIT_24 => X"5545515054551554015400055445555541451551400051455450001400500140",
+ INIT_25 => X"00000C00000000000000003CC000000000000000000000000000000001151151",
+ INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_28 => X"0000000000000000000000000000000000000000000300000000000000000000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(23 downto 22), -- Port A 2-bit Data Output
+ DOB => memBRead(23 downto 22), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(23 downto 22), -- Port A 2-bit Data Input
+ DIB => memBWrite(23 downto 22), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM12 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"039A019A000D000B001200DA0007023A001E000F001E0FDA000F0BD9003C00CC",
+ INIT_01 => X"B69555554C5750DF077600150001D65619160003000B0003000B007E00620009",
+ INIT_02 => X"554C39042084105A00000001DD55555555D955555555769555555565615EB5BE",
+ INIT_03 => X"554AAC0000192000620183552AB000000064800001B8800A0819555555549555",
+ INIT_04 => X"686F8AA55961BE2A9565862064954A8855552A255555506A800A481B855060D5",
+ INIT_05 => X"0F947491BE2A956586F8AA559686F8AA55961BE2A9565A1BE2A956586F8AA559",
+ INIT_06 => X"55E4555D553130F9471D940D531356044986430CC330E31F333C3E346A848391",
+ INIT_07 => X"35D6B03E5162555DD551BE454D416A32594950D1695D6F969D55D0B050106257",
+ INIT_08 => X"6A55650674135555948D2557551899E1D319DC6686C599575286C34146735D6B",
+ INIT_09 => X"0B511375E55C5CCB20300054564209022543E5E74557415004E410F8141746E8",
+ INIT_0A => X"AE0A5E5545D396F84475FC1100639791155105719777D7445735D550CB8C5434",
+ INIT_0B => X"704D5111C1371164C4DA119C13584551371134971C79E5D3C571D371018C5BA1",
+ INIT_0C => X"994753E402D391371FF80D1371A5C46D51346795104DC671DD378774DE15C546",
+ INIT_0D => X"5B5A9011555CD497541A5760FB60D8541C4D34D354C86B843665D9495DD99522",
+ INIT_0E => X"64695D546782203E03646F924107E6D50F86A6360919C905A7E55556E49D9436",
+ INIT_0F => X"B8440DDE1D5511B9048D4B53755C343160951559A40F957A056F0D90D94114C7",
+ INIT_10 => X"D679D4140D155DD85255D5E851D14116B87360F80F80F00D0537757F43D40796",
+ INIT_11 => X"7410755803559DF9600C1C55540FD6387360F80F80F00D0534757C75D144000D",
+ INIT_12 => X"D8525415078455CE5804350557A1910638D530F845D0F840E5651B0C35474055",
+ INIT_13 => X"450D5D5551C06F8451150F8B46F8467840C8455CEC0766083640D5A775540D9D",
+ INIT_14 => X"C435C39600054001D41427915A29110183343D0001D5B8055FDAF500354C6B86",
+ INIT_15 => X"5E50155F46A5765083E7050F8583D043C3C4D34D43568A75400001C83704D943",
+ INIT_16 => X"092310E176738BC3E0850F1317C143755645556B5856754057556754DDD55B55",
+ INIT_17 => X"1D05D35D25D36BE56595F0D52318565417A1679C5AE171AE108065D5B81070DC",
+ INIT_18 => X"137710413751AC75D19455584241371D0D284586159535150C16284DD40D9740",
+ INIT_19 => X"68B51C594F5503C60F85C0DDBE728B201C6CDD960905D341AA04DCE847119D04",
+ INIT_1A => X"0F8C5FD0CDD555441033720F9048321F20C6655390C4D1167C355C5495C159F5",
+ INIT_1B => X"54650F25F943C97E50F25F943C97E50F25F943C97E50F25F99553100D20C86C8",
+ INIT_1C => X"B0D3CDD5C10D16651A0001CA4C27190C4C83E467FD85FC2686B8D90E8F841C1D",
+ INIT_1D => X"9B517557476727680F0FB03495F05689BECE30C59D995556D6A05DD991756036",
+ INIT_1E => X"9AC3CC76F058CBDDA96706F9BF837755E8D719DE3645D500F8C3E26C15549C6B",
+ INIT_1F => X"75776F40CEB46F9098761DF5694D6A1D776B9C198FF7418483E18F83EC767C15",
+ INIT_20 => X"CF6C3C3EC76E0CC7DD9D71515318703B9794416707741951E1AF35776F3A3327",
+ INIT_21 => X"1995184149CDC7DFA76748564D310C3C3CC76F45BAFA416F86F01755E5775604",
+ INIT_22 => X"C13000BC02E04C002D999D80225BDDC38B0652041E3E0C672F772F7700859A10",
+ INIT_23 => X"3900D6125104C0BE1369130006001000D000C25104C001872DE13009E407500B",
+ INIT_24 => X"9B24DA1D155701E2091800057049300F44449A44C003B116913000DC02D00F40",
+ INIT_25 => X"00000C00000000000000003F00000000000000003FFFFFFFEAAA954314EF7729",
+ INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_28 => X"00000000000000000000000000000000000000000002B0000000000000000000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(25 downto 24), -- Port A 2-bit Data Output
+ DOB => memBRead(25 downto 24), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(25 downto 24), -- Port A 2-bit Data Input
+ DIB => memBWrite(25 downto 24), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM13 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"048000800000000200D00184000A017000000002000011200002000000180188",
+ INIT_01 => X"7C5555555854138606440000000108641104000E0006000A0002005000C00000",
+ INIT_02 => X"5558042D08A0B41A00000001AD555555549155555555E41555555541A0206648",
+ INIT_03 => X"55715C000240F00919240F55C57000000903C000243480300640555555555555",
+ INIT_04 => X"405C8182114172060845114903D571635555C5955555590C80300643455903D5",
+ INIT_05 => X"5B801D017206084505C818211405C8182114172060845017206084505C818211",
+ INIT_06 => X"CF9158A961AC95B82D05825991BD5A818146BA784E178E05EE196D1F5140921C",
+ INIT_07 => X"B005756E115DA14862955E25811175003146959146905384061691264ACA55A0",
+ INIT_08 => X"59A42C80120D1614043907018A5255D15255DD5D458556865145564855BB005F",
+ INIT_09 => X"01CCB2259A0B2392C28EB25C2C44439D7556E1C065846DC42FC145B4B017F5D4",
+ INIT_0A => X"5D045055085455F440192D596B5B87059615B7094314F0445810596FD2990D67",
+ INIT_0B => X"2AFAD9C0AB629CBFAFADDC0ABEB572DBE2CBEB0208A280BA712A3A2C017F5451",
+ INIT_0C => X"11556380E4B31F22CC8459F22A00B2C9AD2F53440AC8B22C8BAA332CA8CCB170",
+ INIT_0D => X"20521D116161320750D75445BA63043113F3CF3C5A8353456600614680580100",
+ INIT_0E => X"61C0465D5B55056D2C59536A410615565B4484160756D1354445850590451166",
+ INIT_0F => X"34540464C6282165840F2FC01644185361165611845B8175155F598598574301",
+ INIT_10 => X"95B81610590006D555A145D454614515B44D55B85B05B059451518414910F155",
+ INIT_11 => X"754218A4566586A15676D758A25B95745945B85B05B05945151841195403B8C5",
+ INIT_12 => X"D551A2D57526556851549CC515512185746555B44C55B454651AD2896651552D",
+ INIT_13 => X"8559861581715344E5155B4405F4557449226556808162B96615991018A25946",
+ INIT_14 => X"26810900EE302D971042C7156514441D7E116C47006114D165575485665C5744",
+ INIT_15 => X"A0C05611F51A011016E3015B4416DC56D6D50410605144194847857167575649",
+ INIT_16 => X"8501D75816390056D02C5B13154B001851558A06B000164401658184C0614458",
+ INIT_17 => X"0574554574665B151AA515999DD755A194515B8256D1855D195248612057559C",
+ INIT_18 => X"294541ADD1C95F545C0658A6DD729444592D35B5D46841BCF6D5145056598440",
+ INIT_19 => X"149C18D3853DD6ED5B46C5954E2306988017058001305075452D168064440507",
+ INIT_1A => X"5B45DE3E255C5866C889405B844000F7C4859A19500318D5F56654D4686755D5",
+ INIT_1B => X"94C55B661556D98555B661556D98555B661556D98555B6615966998090003DF1",
+ INIT_1C => X"3592E46160BFE5DAB10482E8425701001416E005E33F6F15057471E127141505",
+ INIT_1D => X"80C9165B516301415B5B0701161251457D340D55D4531628D7525D4509184AA5",
+ INIT_1E => X"16D6E0146835CA997694559D7456518A815556F59C405905B416D01856291657",
+ INIT_1F => X"8587514864C4538C5A1605E146B57504145784994C01A31416D14956D0141E0C",
+ INIT_20 => X"CD516D6D0145C6464505A965E90EB3E9566B0C5F1536A2596A25058759A61921",
+ INIT_21 => X"5468563D4019C7D5514156594E90616D6E0146C37529415345B4115925148658",
+ INIT_22 => X"01C0003000C07000268DD053D75C7D13203354162007003471F473F46485451C",
+ INIT_23 => X"020009137507003F200E1C000C003400D00003750700030D29C1C00BC00F0003",
+ INIT_24 => X"CC244C4D1D8522020A340015444E300FD448038700000200E1C0000002D00080",
+ INIT_25 => X"00000C00000000000000003F2AAAAAAAAAAAAAAA95555555555555541931F475",
+ INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_28 => X"0000000000000000000000000000000000000000000300000000000000000000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(27 downto 26), -- Port A 2-bit Data Output
+ DOB => memBRead(27 downto 26), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(27 downto 26), -- Port A 2-bit Data Input
+ DIB => memBWrite(27 downto 26), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM14 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"000A000A00020008000A0002000400B2000A0008000A008A000C000A00100010",
+ INIT_01 => X"3C00000002000B2100020000000000020882000C000800000004000A00060002",
+ INIT_02 => X"0002800A00C02800AAAAAAA80400000003080000000042000000000008082020",
+ INIT_03 => X"00300EAAA808FAA00C008F00C03AAAAAA023EAAA80B02AB22008000000000000",
+ INIT_04 => X"2A0C2828002830A0A000802023C0303B0000C0000000002E2AB2200B000023C0",
+ INIT_05 => X"0302A00830A0A000A0C2828002A0C2828002830A0A000A830A0A000A0C282800",
+ INIT_06 => X"322C0000000F2030098C00000AC20218800000408020003A00A00C9008220000",
+ INIT_07 => X"3000B00C08080028C0002C008CC030B82000000000000B0A0C00001031310403",
+ INIT_08 => X"080003203C800000000302230088C3CB2C00CF0420E030020020000200F3000F",
+ INIT_09 => X"0284200000013410000200FB000402024000C082C002C087A08260320D0F0002",
+ INIT_0A => X"1C88F20068CB00320032CA23C00F020B000B0203C230201A00B0C00610320001",
+ INIT_0B => X"00830340024034CA0830340020C0D302C0420C0001C30028D0036C04002D0108",
+ INIT_0C => X"CC390F8224230200473B002007401083A38D0B0080801204828C120B304810D1",
+ INIT_0D => X"2B020380000CCE810202820030002ACC0B082082000003200008C80000C02802",
+ INIT_0E => X"004C8C800F22000C8E0E072BB02AA0A003228022B000F80018400000228C0000",
+ INIT_0F => X"7202A8CC8C002008E004CD363022A22F0A808008200300308807000000200D83",
+ INIT_10 => X"4070A00200000C00000240C208C0188072012030030030004022302201020A80",
+ INIT_11 => X"3802300200028CA00A8A040000030032012030030030004022302232C0A80B28",
+ INIT_12 => X"000000000880004802201A200008A820F24020320800321260002A2000232800",
+ INIT_13 => X"A0008C000C4A0B208080032230B210720008000488830208000000823000008C",
+ INIT_14 => X"0008812A02CA808202280340308C0A8280900FC200C08BE03940902800240B22",
+ INIT_15 => X"0234800B00400A0000C3A0032000C200C0C820820A0022322904885000800281",
+ INIT_16 => X"2209082030310040C888038181680230000000030082302223002302E8C00200",
+ INIT_17 => X"0C78C78C68C90B0000802000A02800020008070001C8203C880808C0A0281003",
+ INIT_18 => X"A121A82029842D1002A00002420A1204002880CA000088080A004208C8000A2A",
+ INIT_19 => X"0233E882882000C80320E0080C0E0A284C208C024008C0AC10800488800A8C00",
+ INIT_1A => X"032E0CC0840800023421000303022020C080C00080C20BA070002200000E03C0",
+ INIT_1B => X"0B000302E000C0B800302E000C0B800302E000C0B800302E0808E84000880830",
+ INIT_1C => X"B002E8C088442000220300C83023800C1400C300CC0A33000032C00B0700280C",
+ INIT_1D => X"003630032303A32803032088808800201CC82C30E08A000243080E0882302220",
+ INIT_1E => X"82C0C8322820D2881003602C1880230035C081C88008C0A032C0C80E00000C0B",
+ INIT_1F => X"20230E18800B030389304CE000303088320703880C23280000C88880C8322E08",
+ INIT_20 => X"DE080C0C8320883A8C8CA008A00036AA8300AE0F0221300E1312E0230A2220E3",
+ INIT_21 => X"03000BCE003CC3C2A32328021E00880C0C83228208AAA00720B0E32A223212A9",
+ INIT_22 => X"0ABA2A90AA42AE8AB02AAEFA8AC18042EFAACFBAAB4AAEAB060104013F402082",
+ INIT_23 => X"AC2AB3AAAEEAE8940911ABA2AB8AAE2AB8AAE2AEEAE8AAE84B2ABA2DB0A6C2A9",
+ INIT_24 => X"AB4EAAEAB2AAAAB4BA84AAAAB08BAAAA2A42C46AE8AAD0B11ABA2AB4AB42AB0A",
+ INIT_25 => X"00000C00000000000000003F000000000000000000000000000000002E06012A",
+ INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_28 => X"0000000000000000000000000000000000000000000170000000000000000000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(29 downto 28), -- Port A 2-bit Data Output
+ DOB => memBRead(29 downto 28), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(29 downto 28), -- Port A 2-bit Data Input
+ DIB => memBWrite(29 downto 28), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+ ZPU_RAM15 : RAMB16_S2_S2
+ generic map (
+ INIT_A => X"0", -- Value of output RAM registers on Port A at startup
+ INIT_B => X"0", -- Value of output RAM registers on Port B at startup
+ SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
+ SRVAL_B => X"0", -- Port B ouput value upon SSR assertion
+ WRITE_MODE_A => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ WRITE_MODE_B => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL"
+ INIT_00 => X"012501250005000C00850021000C04790015000800150445000C06A500A20022",
+ INIT_01 => X"3E0000000102861A0021001A000062014461000800080008000C000500090005",
+ INIT_02 => X"00016181A9A606405555555408000000020400000000C1800000002406860012",
+ INIT_03 => X"00380D555416F5504C816F00E0355555505BD555417215799015000000000000",
+ INIT_04 => X"150D141484143450521044505BC038370000E0000000005D1579901720005BC0",
+ INIT_05 => X"232560943450521050D141484150D1414841434505210543450521050D141484",
+ INIT_06 => X"00220200080CA232424C242006C10156652140C2A0A8208A00A08C600C152802",
+ INIT_07 => X"7960B48C94080954C8002C90603830464420020820060B290C804A2B0A8A0808",
+ INIT_08 => X"0801A099B260808262038663204603C45802DC0C111020210811482500B7960F",
+ INIT_09 => X"B21A08408092A834489A08F2B02D6019E008C8D9C021C81E70D9D231028F00C1",
+ INIT_0A => X"3C65F50054C400B126310D53AA0B236700872053A93255150278C00D7442A482",
+ INIT_0B => X"40229BA900843AA20229BA9008A6EA90C4A08A6493A69908EA4E884AE83E0304",
+ INIT_0C => X"083213991D0B0084AC3620084E992813008A0B666021294A508A694329A528EA",
+ INIT_0D => X"941900480802026609C30522351855428704104100200F1080A4C42028C29489",
+ INIT_0E => X"09924C500B55848C49080F5E48945081231541904403C48021D020A0854C8880",
+ INIT_0F => X"F11354CE4C829821D2282A093015515E4540408412232430540F202202542263",
+ INIT_10 => X"C0B252C920AA8C820809A0C114C82140F11A123A23A23A20A08132192B490540",
+ INIT_11 => X"31A9320188014C4821458A02082340F11A123A23A23A20A08132193189540F14",
+ INIT_12 => X"82080840056000820852B53082055430F180823121423135908045108013168C",
+ INIT_13 => X"50204C8060860B121484231580B130B12056000826630914809200493208204C",
+ INIT_14 => X"60147B5503C56A444956B3C8304DAD4164688CA9A8C840D832822238801B0B15",
+ INIT_15 => X"050A408700809D8A08CB58231148D108C8D65965050811315FBC68B48264017B",
+ INIT_16 => X"3987081A30B361C8C641238A42DC6932092020630669301593001321D4C82502",
+ INIT_17 => X"8CF4CF4CF4C70F60802082005016080982040F2403C4582C4D2424C852942208",
+ INIT_18 => X"5A12D4581F1C3F2241500201C105A1AA20896085820254018580C114C4202535",
+ INIT_19 => X"81709601658808D02311D2042C992E2EAE684C29A084C9682040482661AD4CA0",
+ INIT_1A => X"231F1CC0888102070A2228232621A807D66080894AE65C90B4801182024003D0",
+ INIT_1B => X"060023511408D445023511408D445023511408D4450235114405D4AA486A01F5",
+ INIT_1C => X"F208D4C846C8108005EA29C4245760AE6A08CA81CC005E9120F1C00A4B12968C",
+ INIT_1D => X"26093003130B531623235855404608102D249870C644408183040C6451321180",
+ INIT_1E => X"42C8D6310685E5402010908C22081320554202D55024C0523108C58D80818C0F",
+ INIT_1F => X"1013086689640B2442308CC820343062310B24402E93142648C56148D6315DA1",
+ INIT_20 => X"ED148C8D631068854C4C500542A579414301690F86B5240C527110130841A213",
+ INIT_21 => X"82028B29217CE3C1531314016C2A548C8D6310685441680F10F6131181315052",
+ INIT_22 => X"4150005401505400051555515555155155055515155504555455555540A03041",
+ INIT_23 => X"1100451145454055115515000500140050004145454001414151500144051005",
+ INIT_24 => X"5544555515551154011400155405100554441545400111055150004400500440",
+ INIT_25 => X"00000C00000000000000003F0000000000000000000000000000000015545555",
+ INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_28 => X"0000000000000000000000000000000000000000000300000000000000000000",
+ INIT_29 => X"00000000000000000CC000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DOA => memARead(31 downto 30), -- Port A 2-bit Data Output
+ DOB => memBRead(31 downto 30), -- Port B 2-bit Data Output
+ ADDRA => memAAddr(14 downto 2), -- Port A 13-bit Address Input
+ ADDRB => memBAddr(14 downto 2), -- Port B 13-bit Address Input
+ CLKA => clk, -- Port A Clock
+ CLKB => clk, -- Port B Clock
+ DIA => memAWrite(31 downto 30), -- Port A 2-bit Data Input
+ DIB => memBWrite(31 downto 30), -- Port B 2-bit Data Input
+ ENA => re, -- Port A RAM Enable Input
+ ENB => high, -- PortB RAM Enable Input
+ SSRA => low, -- Port A Synchronous Set/Reset Input
+ SSRB => low, -- Port B Synchronous Set/Reset Input
+ WEA => memAWriteEnable, -- Port A Write Enable Input
+ WEB => memBWriteEnable -- Port B Write Enable Input
+ );
+end dualport_ram_arch;
diff --git a/zpu/hdl/zpu3/src/xmake.filelist b/zpu/hdl/zpu3/src/xmake.filelist
new file mode 100644
index 0000000..3d0a779
--- /dev/null
+++ b/zpu/hdl/zpu3/src/xmake.filelist
@@ -0,0 +1,5 @@
+vhdl zylin "zpu_config.vhd"
+vhdl zylin "zpupkg.vhd"
+vhdl work "dmips_ram.vhd"
+vhdl zylin "zpu_top_bram_intstack.vhd"
+vhdl work "testlut.vhd"
diff --git a/zpu/hdl/zpu3/src/xmake.xst b/zpu/hdl/zpu3/src/xmake.xst
new file mode 100644
index 0000000..bfdb23f
--- /dev/null
+++ b/zpu/hdl/zpu3/src/xmake.xst
@@ -0,0 +1,53 @@
+set -tmpdir ../tmp
+set -xsthdpdir ../xst
+run
+-ifn xmake.filelist
+-ifmt mixed
+-ofn ../syn/ic300
+-ofmt NGC
+-p xc3s400-4-ft256
+-top ic300
+-opt_mode Area
+-opt_level 2
+-iuc NO
+-lso ic300.lso
+-keep_hierarchy NO
+-glob_opt AllClockNets
+-rtlview Yes
+-read_cores YES
+-write_timing_constraints NO
+-cross_clock_analysis NO
+-hierarchy_separator /
+-bus_delimiter <>
+-case maintain
+-slice_utilization_ratio 100
+-verilog2001 YES
+-fsm_extract YES -fsm_encoding Auto
+-safe_implementation No
+-fsm_style lut
+-ram_extract Yes
+-ram_style Auto
+-rom_extract Yes
+-rom_style Auto
+-mux_extract YES
+-mux_style Auto
+-decoder_extract YES
+-priority_extract YES
+-shreg_extract YES
+-shift_extract YES
+-xor_collapse YES
+-resource_sharing YES
+-mult_style auto
+-iobuf YES
+-max_fanout 500
+-bufg 8
+-register_duplication YES
+-equivalent_register_removal NO
+-register_balancing No
+-slice_packing YES
+-optimize_primitives NO
+-use_clock_enable Yes
+-use_sync_set No
+-use_sync_reset No
+-iob true
+-slice_utilization_ratio_maxmargin 5
diff --git a/zpu/hdl/zpu3/src/zpu_config.vhd b/zpu/hdl/zpu3/src/zpu_config.vhd
new file mode 100644
index 0000000..506121c
--- /dev/null
+++ b/zpu/hdl/zpu3/src/zpu_config.vhd
@@ -0,0 +1,25 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+package zpu_config is
+
+ constant Generate_Trace : boolean := false;
+ -- during simulation, set this to '0' to get matching trace.txt
+ constant DontCareValue : std_logic := '0';
+ -- Clock frequency in MHz.
+ constant ZPU_Frequency : std_logic_vector(7 downto 0) := x"64";
+ -- maximum address includes upper bit for IO registers
+ -- the rest is RAM
+ constant maxAddrBit : integer := 14;
+ constant minAddrBit : integer := 2;
+ -- This bit is set for read/writes to IO
+ -- FIX!!! eventually this should be set to wordSize-1 so as to
+ -- to make the address of IO independent of amount of memory
+ -- reserved for CPU. Requires trivial tweaks in toolchain/runtime
+ -- libraries.
+ constant ioBit : integer := maxAddrBit+1;
+ constant wordPower : integer := 5;
+ constant wordSize : integer := 2**wordPower;
+
+end zpu_config;
diff --git a/zpu/hdl/zpu3/src/zpu_pipelined.vhd b/zpu/hdl/zpu3/src/zpu_pipelined.vhd
new file mode 100644
index 0000000..207939d
--- /dev/null
+++ b/zpu/hdl/zpu3/src/zpu_pipelined.vhd
@@ -0,0 +1,852 @@
+-- Company: ZPU3
+-- Engineer: Øyvind Harboe
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+use IEEE.STD_LOGIC_arith.ALL;
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+
+entity zpu_top is
+ Port ( clk : in std_logic;
+ areset : in std_logic;
+ io_busy : in std_logic;
+ io_read : in std_logic_vector(7 downto 0);
+ io_write : out std_logic_vector(7 downto 0);
+ io_addr : out std_logic_vector(maxAddrBit downto minAddrBit);
+ io_writeEnable : out std_logic;
+ io_readEnable : out std_logic;
+ interrupt : in std_logic;
+ break : out std_logic);
+end zpu_top;
+
+architecture behave of zpu_top is
+
+signal readIO : std_logic;
+
+
+
+signal memAWriteEnable : std_logic;
+signal memAAddr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal memAWrite : std_logic_vector(wordSize-1 downto 0);
+signal memARead : std_logic_vector(wordSize-1 downto 0);
+signal memBWriteEnable : std_logic;
+signal memBAddr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal memBWrite : std_logic_vector(wordSize-1 downto 0);
+signal memBRead : std_logic_vector(wordSize-1 downto 0);
+
+
+signal busy : std_logic;
+
+signal begin_inst : std_logic;
+
+
+
+signal trace_opcode : std_logic_vector(7 downto 0);
+signal trace_pc : std_logic_vector(maxAddrBit downto 0);
+signal trace_sp : std_logic_vector(maxAddrBit downto minAddrBit);
+signal trace_topOfStack : std_logic_vector(wordSize-1 downto 0);
+signal trace_topOfStackB : std_logic_vector(wordSize-1 downto 0);
+
+type DecodedOpcodeType is
+(
+Decoded_Stall ,
+Decoded_Nop ,
+Decoded_Im ,
+Decoded_ImShift ,
+Decoded_LoadSP ,
+Decoded_StoreSP ,
+Decoded_AddSP ,
+Decoded_Emulate ,
+Decoded_Break ,
+Decoded_PushPC ,
+Decoded_PushSP ,
+Decoded_PopPC ,
+Decoded_Add ,
+Decoded_Or ,
+Decoded_And ,
+Decoded_Load ,
+Decoded_Not ,
+Decoded_Flip ,
+Decoded_Store ,
+Decoded_Storeb ,
+Decoded_PopSP ,
+Decoded_Ashiftleft ,
+Decoded_Ashiftright ,
+Decoded_Lshiftright ,
+Decoded_Eqbranch ,
+Decoded_Neqbranch ,
+Decoded_Eq ,
+Decoded_Neq ,
+Decoded_Loadb ,
+Decoded_Lessthan ,
+Decoded_Lessthanorequal ,
+Decoded_Ulessthan ,
+Decoded_Ulessthanorequal ,
+Decoded_Duplicate ,
+Decoded_Duplicate2 ,
+Decoded_Duplicate3 ,
+Decoded_MoveDown,
+Decoded_MoveDown2,
+Decoded_MoveDown3,
+Decoded_Pushspadd,
+Decoded_Callpcrel,
+Decoded_Sub
+);
+
+
+signal decode_pc : std_logic_vector(maxAddrBit downto 0);
+signal decode_fetchedPC : std_logic_vector(maxAddrBit downto 0);
+signal decode_fetched : std_logic;
+signal decode_opcode : std_logic_vector(OpCode_Size-1 downto 0);
+signal decode_opcodeWord : std_logic_vector(wordSize-1 downto 0);
+signal decode_starved : std_logic;
+signal decode_wordStarved : std_logic;
+signal decode_willBeStarved : std_logic;
+signal decode_idim_flag : std_logic;
+
+signal execute1_stall : std_logic;
+signal execute1_fetched : std_logic;
+signal execute1_decodedOpcode : DecodedOpcodeType;
+signal execute1_fetchedPC : std_logic_vector(maxAddrBit downto 0);
+signal execute1_sp : std_logic_vector(maxAddrBit downto minAddrBit);
+signal execute1_opcode : std_logic_vector(opCode_Size-1 downto 0);
+signal execute1_spOffset : std_logic_vector(4 downto 0);
+signal execute1_fetchPC : std_logic_vector(maxAddrBit downto 0);
+signal execute1_push1 : std_logic;
+signal execute1_push2 : std_logic;
+signal execute1_pop1 : std_logic;
+signal execute1_pop2 : std_logic;
+signal execute1_antialias : std_logic;
+signal execute1_savedTopOfStack : std_logic_vector(wordSize-1 downto 0);
+
+
+signal load_decodedOpcode : DecodedOpcodeType;
+signal load_opcode : std_logic_vector(opCode_Size-1 downto 0);
+signal load_spOffset : std_logic_vector(4 downto 0);
+signal load_stall : std_logic;
+signal load_willBeStalled : std_logic;
+
+signal execute2_opcode : std_logic_vector(opCode_Size-1 downto 0);
+signal execute2_topOfStack : std_logic_vector(wordSize-1 downto 0);
+signal execute2_addResult : std_logic_vector(wordSize-1 downto 0);
+signal execute2_topOfStackB : std_logic_vector(wordSize-1 downto 0);
+signal execute2_pc : std_logic_vector(maxAddrBit downto 0);
+signal execute2_sp : std_logic_vector(maxAddrBit downto minAddrBit);
+signal execute2_loading : std_logic;
+signal execute2_loadByte : std_logic;
+signal execute2_storeByte : std_logic;
+signal execute2_loadingDone : std_logic;
+signal execute2_decodedOpcode : DecodedOpcodeType;
+signal execute2_spOffset : std_logic_vector(4 downto 0);
+signal execute2_persistTopOfStack : std_logic;
+signal execute2_persistTopOfStackB : std_logic;
+signal execute2_resync : std_logic;
+signal execute2_resync2 : std_logic;
+signal execute2_resync3 : std_logic;
+signal execute2_resync4 : std_logic;
+signal execute2_resync5 : std_logic;
+signal execute2_resync6 : std_logic;
+signal execute2_resync7 : std_logic;
+signal execute2_resync8 : std_logic;
+signal execute2_resync9 : std_logic;
+signal execute2_resync10 : std_logic;
+
+
+begin
+ traceFileGenerate:
+ if Generate_Trace generate
+ trace_file: trace port map (
+ clk => clk,
+ begin_inst => begin_inst,
+ pc => trace_pc,
+ opcode => trace_opcode,
+ sp => trace_sp,
+ memA => trace_topOfStack,
+ memB => trace_topOfStackB,
+ busy => busy
+ );
+ end generate;
+
+
+ memory: dualport_ram port map (
+ clk => clk,
+ memAWriteEnable => memAWriteEnable,
+ memAAddr => memAAddr,
+ memAWrite => memAWrite,
+ memARead => memARead,
+ memBWriteEnable => memBWriteEnable,
+ memBAddr => memBAddr,
+ memBWrite => memBWrite,
+ memBRead => memBRead
+ );
+
+ opcodeControl:
+ process(clk, areset)
+ variable compareA : signed(wordSize-1 downto 0);
+ variable compareB : signed(wordSize-1 downto 0);
+ variable execute1_doFetch : boolean;
+ begin
+ if areset = '1' then
+ break <= '0';
+ begin_inst <= '0';
+ memAAddr <= (others => '0');
+ memBAddr <= (others => '0');
+ memAWriteEnable <= '0';
+ memBWriteEnable <= '0';
+ memAWrite <= (others => '0');
+ memBWrite <= (others => '0');
+
+ memBAddr <= (others => '0');
+ memBWrite <= (others => '0');
+
+
+ io_writeEnable <= '0';
+ io_readEnable <= '0';
+ io_addr <= (others => '0');
+ io_write <= (others => '0');
+
+ -- stage 1. Don't care since this is driven by stage2
+ decode_pc <= (others => '0');
+ decode_fetched <= '0';
+ decode_starved <= '0';
+ decode_opcode <= (others => '0');
+ decode_opcodeWord <= (others => '0');
+
+ -- stage 2.
+ execute1_antialias <= '0';
+ execute1_fetchPC <= (others => '0');
+ execute1_fetched <= '0';
+ execute1_decodedOpcode <= Decoded_Stall;
+ execute1_sp <= (2 => '0', others => '1');
+ execute1_push1 <= '0';
+ execute1_push2 <= '0';
+ execute1_pop1 <= '0';
+ execute1_pop2 <= '0';
+ execute1_stall <= '1';
+
+ -- stage 3
+ load_decodedOpcode <= Decoded_Stall;
+ load_stall <= '1';
+ load_willBeStalled <= '1';
+
+ -- stage 4
+ decode_idim_flag <= '0';
+ execute2_pc <= (others => '0');
+ execute2_sp <= (2 => '0', others => '1');
+ execute2_loading <= '0';
+ execute2_loadByte <= '0';
+ execute2_storeByte <= '0';
+ execute2_loadingDone <= '0';
+ execute2_decodedOpcode <= Decoded_Stall;
+ execute2_resync <= '1';
+ execute2_resync2 <= '0';
+ execute2_resync3 <= '0';
+ execute2_resync4 <= '0';
+ execute2_resync5 <= '0';
+ execute2_resync6 <= '0';
+ execute2_resync7 <= '0';
+ execute2_resync8 <= '0';
+ execute2_resync9 <= '0';
+ execute2_resync10 <= '0';
+ execute2_persistTopOfStack <= '0';
+ execute2_persistTopOfStackB <= '0';
+
+ -- stage 5
+ memBWriteEnable <= '0';
+
+
+ elsif (clk'event and clk = '1') then
+ memAWriteEnable <= '0';
+ memBWriteEnable <= '0';
+ io_writeEnable <= '0';
+ io_readEnable <= '0';
+ begin_inst <= '0';
+
+ -- stage0: fetch
+ decode_willBeStarved <= '0';
+ if (decode_fetched='1') then
+ -- resync #4
+ decode_opcodeWord <= memARead;
+ decode_pc <= decode_fetchedPC;
+ elsif (decode_pc(minAddrBit-1 downto 0)=b"11") then
+ decode_willBeStarved <= '1';
+ else
+ -- we can continue decoding.
+ decode_pc <= decode_pc + 1;
+ end if;
+
+ -- stage 0b: move to byte..
+ -- resync #5
+ decode_starved <= decode_willBeStarved;
+ case decode_pc(minAddrBit-1 downto 0) is
+ when "00" => decode_opcode <= decode_opcodeWord(31 downto 24);
+ when "01" => decode_opcode <= decode_opcodeWord(23 downto 16);
+ when "10" => decode_opcode <= decode_opcodeWord(15 downto 8);
+ when others => decode_opcode <= decode_opcodeWord(7 downto 0);
+ end case;
+
+ -- stage1: decode 1
+ execute1_opcode <= decode_opcode;
+
+ execute1_spOffset(4)<=not decode_opcode(4);
+ execute1_spOffset(3 downto 0)<=decode_opcode(3 downto 0);
+
+ execute1_decodedOpcode<=Decoded_Break;
+
+ decode_idim_flag <= '0';
+
+ -- resync #6
+ -- resync #1
+ if (decode_starved = '1') then
+ execute1_decodedOpcode<=Decoded_Stall;
+ decode_idim_flag <= decode_idim_flag;
+ elsif (decode_opcode(7 downto 7)=OpCode_Im) then
+ decode_idim_flag <= '1';
+ if (decode_idim_flag = '0') then
+ execute1_decodedOpcode<=Decoded_Im;
+ else
+ execute1_decodedOpcode<=Decoded_ImShift;
+ end if;
+ elsif (decode_opcode(7 downto 5)=OpCode_StoreSP) then
+ if (decode_opcode(4 downto 0)=b"10001") then
+ execute1_decodedOpcode<=Decoded_MoveDown;
+ elsif (decode_opcode(4 downto 0)=b"10010") then
+ execute1_decodedOpcode<=Decoded_MoveDown2;
+-- elsif (decode_opcode(4 downto 0)=b"10011") then
+-- execute1_decodedOpcode<=Decoded_MoveDown3;
+ else
+ execute1_decodedOpcode<=Decoded_StoreSP;
+ end if;
+ elsif (decode_opcode(7 downto 5)=OpCode_LoadSP) then
+ if (decode_opcode(4 downto 0)=b"10000") then
+ execute1_decodedOpcode<=Decoded_Duplicate;
+ elsif (decode_opcode(4 downto 0)=b"10001") then
+ execute1_decodedOpcode<=Decoded_Duplicate2;
+ elsif (decode_opcode(4 downto 0)=b"10010") then
+ execute1_decodedOpcode<=Decoded_Duplicate3;
+ else
+ execute1_decodedOpcode<=Decoded_LoadSP;
+ end if;
+ elsif (decode_opcode(7 downto 5)=OpCode_Emulate) then
+ execute1_decodedOpcode<=Decoded_Emulate;
+ if decode_opcode(5 downto 0)=OpCode_Neqbranch then
+ execute1_decodedOpcode <= Decoded_Neqbranch;
+ elsif decode_opcode(5 downto 0)=OpCode_Eq then
+ execute1_decodedOpcode <= Decoded_Eq;
+ elsif decode_opcode(5 downto 0)=OpCode_Lessthan then
+ execute1_decodedOpcode <= Decoded_Lessthan;
+ elsif decode_opcode(5 downto 0)=OpCode_Ulessthan then
+ execute1_decodedOpcode <= Decoded_Ulessthan;
+ elsif decode_opcode(5 downto 0)=OpCode_Loadb then
+ execute1_decodedOpcode <= Decoded_Loadb;
+ elsif decode_opcode(5 downto 0)=OpCode_Storeb then
+ execute1_decodedOpcode <= Decoded_Storeb;
+ elsif decode_opcode(5 downto 0)=OpCode_Pushspadd then
+ execute1_decodedOpcode <= Decoded_Pushspadd;
+ elsif decode_opcode(5 downto 0)=OpCode_Callpcrel then
+ execute1_decodedOpcode <= Decoded_Callpcrel;
+ elsif decode_opcode(5 downto 0)=OpCode_Sub then
+ execute1_decodedOpcode <= Decoded_Sub;
+ end if;
+ elsif (decode_opcode(7 downto 4)=OpCode_AddSP) then
+ if (decode_opcode(3 downto 0) = 0) then
+ execute1_decodedOpcode<=Decoded_Ashiftleft;
+ elsif (decode_opcode(3 downto 0) = 1) then
+-- execute1_decodedOpcode<=Decoded_AddSP;
+ elsif (decode_opcode(3 downto 0) = 2) then
+-- execute1_decodedOpcode<=Decoded_AddSP;
+ else
+ execute1_decodedOpcode<=Decoded_AddSP;
+ end if;
+ else
+ case decode_opcode(3 downto 0) is
+ when OpCode_Nop =>
+ execute1_decodedOpcode<=Decoded_Nop;
+ when OpCode_PushSP =>
+ execute1_decodedOpcode<=Decoded_PushSP;
+ when OpCode_PopPC =>
+ execute1_decodedOpcode<=Decoded_PopPC;
+ when OpCode_Add =>
+ execute1_decodedOpcode<=Decoded_Add;
+ when OpCode_Or =>
+ execute1_decodedOpcode<=Decoded_Or;
+ when OpCode_And =>
+ execute1_decodedOpcode<=Decoded_And;
+ when OpCode_Load =>
+ execute1_decodedOpcode<=Decoded_Load;
+ when OpCode_Not =>
+ execute1_decodedOpcode<=Decoded_Not;
+ when OpCode_Flip =>
+ execute1_decodedOpcode<=Decoded_Flip;
+ when OpCode_Store =>
+ execute1_decodedOpcode<=Decoded_Store;
+ when OpCode_PopSP =>
+ execute1_decodedOpcode<=Decoded_PopSP;
+ when others =>
+ execute1_decodedOpcode<=Decoded_Break;
+ end case;
+ end if;
+
+
+ -- stage 2: execute 1 - load stage.
+ --
+ -- the address must be known without using the value on top of the stack...
+ -- resync #3
+ execute1_fetched <= '0';
+ decode_fetched <= execute1_fetched; -- the value in memAAddr will be valid for 1 cycle only
+ decode_fetchedPC <= execute1_fetchedPC;
+
+ if (execute1_fetchPC(1 downto 0)/=b"00") then
+ execute1_fetchPC <= execute1_fetchPC+1;
+ end if;
+
+ execute1_push1 <= '0';
+ execute1_push2 <= execute1_push1;
+ execute1_pop1 <= '0';
+ execute1_pop2 <= execute1_pop1;
+
+ if ((execute1_push1 and execute1_push2)='1') then
+ memAWrite <= execute2_topOfStack;
+ else
+ memAWrite <= execute2_topOfStackB;
+ end if;
+
+ -- resync #7
+ case execute1_decodedOpcode is
+ when Decoded_Neqbranch | Decoded_MoveDown3 | Decoded_Load | Decoded_Loadb | Decoded_Store | Decoded_Storeb | Decoded_Emulate | Decoded_PopSP | Decoded_PopPC| Decoded_Callpcrel =>
+ execute1_stall <= '1';
+ when others =>
+ -- nothing...
+ end case;
+
+ execute1_antialias <= load_stall;
+ execute1_doFetch := false;
+ case execute1_decodedOpcode is
+ when Decoded_PushSP | Decoded_Emulate =>
+ execute1_sp <= execute1_sp - 1;
+ execute1_push1 <= '1';
+ execute1_doFetch := true;
+ when Decoded_Duplicate3 =>
+ memAWriteEnable <= ((execute1_push1 and execute1_push2) or
+ (execute1_push1 and not execute1_pop2) or
+ (execute1_push2 and not execute1_pop1)) and
+ (not execute1_antialias and not execute1_stall);
+ memAAddr <= execute1_sp + 2;
+ execute1_sp <= execute1_sp - 1;
+ execute1_push1 <= '1';
+ when Decoded_Im | Decoded_Duplicate | Decoded_Duplicate2 =>
+ execute1_sp <= execute1_sp - 1;
+ execute1_push1 <= '1';
+ execute1_doFetch := true;
+ when Decoded_LoadSP =>
+ memAAddr <= execute1_sp+execute1_spOffset;
+ execute1_sp <= execute1_sp - 1;
+ execute1_push1 <= '1';
+ when Decoded_AddSP =>
+ memAAddr <= execute1_sp+execute1_spOffset;
+ when Decoded_MoveDown2 =>
+ execute1_sp <= execute1_sp + 1;
+ execute1_pop1 <= '1';
+ execute1_doFetch := true;
+ when Decoded_Ulessthan | Decoded_Lessthan | Decoded_Eq | Decoded_Neqbranch | Decoded_MoveDown3 | Decoded_MoveDown | Decoded_Add | Decoded_Sub | Decoded_Or | Decoded_And | Decoded_PopPC | Decoded_StoreSP =>
+ -- be afraid :-)
+ memAWriteEnable <= ((execute1_push1 and execute1_push2) or
+ (execute1_push1 and not execute1_pop2) or
+ (execute1_push2 and not execute1_pop1)) and
+ (not execute1_antialias and not execute1_stall);
+ memAAddr <= execute1_sp + 2;
+ execute1_sp <= execute1_sp + 1;
+ execute1_pop1 <= '1';
+ when others =>
+ execute1_doFetch := true;
+ end case;
+
+ if execute1_doFetch then
+ -- resync #2
+ -- some instruction that does not change the stack pointer
+ -- and does not need use a memory operand.
+ -- We can fetch the next word to be decoded to avoid stalls
+ execute1_fetchPC <= execute1_fetchPC+1;
+ memAAddr <= execute1_fetchPC(maxAddrBit downto minAddrBit);
+ execute1_fetchedPC <= execute1_fetchPC;
+ execute1_fetched <= '1';
+ end if;
+
+
+ -- stage 3: fetching memory takes 1 cycle
+ -- here we also verify that we've fetched & decoded the right
+ -- opcode.
+ -- resync #8
+ load_decodedOpcode <= execute1_decodedOpcode;
+ load_opcode <= execute1_opcode;
+ load_spOffset <= execute1_spOffset;
+ load_stall <= execute1_stall;
+ -- resync #9
+ if (load_stall = '1') then
+ execute2_decodedOpcode <= Decoded_Stall;
+ else
+ execute2_decodedOpcode <= load_decodedOpcode;
+ end if;
+ execute2_opcode <= load_opcode;
+ execute2_spOffset <= load_spOffset;
+
+ -- stage 4: execute 2 - we now have both operands. This is the
+ -- main execute stage...
+ begin_inst <= '1';
+ trace_pc <= execute2_pc;
+ trace_opcode <= execute2_opcode;
+ trace_sp <= execute2_sp;
+ trace_topOfStack <= execute2_topOfStack;
+ trace_topOfStackB <= execute2_topOfStackB;
+
+ execute2_pc <= execute2_pc + 1;
+ execute2_loading <= '0';
+ memBWriteEnable <= '0';
+
+ case execute2_decodedOpcode is
+ when Decoded_PopSP =>
+ execute2_sp <= execute2_topOfStack(maxAddrBit downto minAddrBit);
+
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp + 1;
+ memBWrite <= execute2_topOfStackB;
+ execute2_resync <= '1';
+ when Decoded_Callpcrel =>
+ execute2_topOfStack <= (others => DontCareValue);
+ execute2_topOfStack(maxAddrBit downto 0) <= execute2_pc + 1;
+ execute2_pc <= execute2_pc + execute2_topOfStack(maxAddrBit downto 0);
+ execute2_persistTopOfStack <= '1';
+ when Decoded_PopPC =>
+ execute2_pc <= execute2_topOfStack(maxAddrBit downto 0);
+ execute2_sp <= execute2_sp + 1;
+
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp + 1;
+ memBWrite <= execute2_topOfStackB;
+ execute2_resync <= '1';
+ when Decoded_Emulate =>
+ execute2_sp <= execute2_sp - 1;
+
+ execute2_topOfStack <= (others => DontCareValue);
+ execute2_topOfStack(maxAddrBit downto 0) <= execute2_pc + 1;
+ execute2_topOfStackB <= execute2_topOfStack;
+
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp+1;
+ memBWrite <= execute2_topOfStackB;
+ -- The emulate address is:
+ -- 98 7654 3210
+ -- 0000 00aa aaa0 0000
+ execute2_pc <= (others => '0');
+ execute2_pc(9 downto 5) <= execute2_opcode(4 downto 0);
+ execute2_persistTopOfStack <= '1';
+ when Decoded_Im =>
+ execute2_sp <= execute2_sp - 1;
+ for i in wordSize-1 downto 7 loop
+ execute2_topOfStack(i) <= execute2_opcode(6);
+ end loop;
+ execute2_topOfStack(6 downto 0) <= execute2_opcode(6 downto 0);
+
+ execute2_topOfStackB <= execute2_topOfStack;
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp + 1;
+ memBWrite <= execute2_topOfStackB;
+ when Decoded_ImShift =>
+ execute2_topOfStack(wordSize-1 downto 7) <= execute2_topOfStack(wordSize-8 downto 0);
+ execute2_topOfStack(6 downto 0) <= execute2_opcode(6 downto 0);
+ when Decoded_LoadSP =>
+ execute2_sp <= execute2_sp - 1;
+ execute2_topOfStack <= memARead;
+ execute2_topOfStackB <= execute2_topOfStack;
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp + 1;
+ memBWrite <= execute2_topOfStackB;
+ when Decoded_Break =>
+ report "Break instruction encountered" severity failure;
+ break <= '1';
+ when Decoded_PushSP =>
+ execute2_topOfStack <= (others => DontCareValue);
+ execute2_topOfStack(maxAddrBit downto minAddrBit) <= execute2_sp;
+
+ execute2_sp <= execute2_sp - 1;
+ execute2_topOfStackB <= execute2_topOfStack;
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp + 1;
+ memBWrite <= execute2_topOfStackB;
+ when Decoded_Add =>
+ execute2_sp <= execute2_sp + 1;
+ execute2_topOfStack <= execute2_topOfStackB + execute2_topOfStack;
+ execute2_topOfStackB <= memARead;
+ when Decoded_Sub =>
+ execute2_sp <= execute2_sp + 1;
+ execute2_topOfStack <= execute2_topOfStackB - execute2_topOfStack;
+ execute2_topOfStackB <= memARead;
+ when Decoded_AddSP =>
+ execute2_topOfStack <= execute2_topOfStack + memARead;
+ when Decoded_Or =>
+ execute2_sp <= execute2_sp + 1;
+ execute2_topOfStack <= execute2_topOfStackB or execute2_topOfStack;
+ execute2_topOfStackB <= memARead;
+ when Decoded_And =>
+ execute2_sp <= execute2_sp + 1;
+ execute2_topOfStack <= execute2_topOfStackB and execute2_topOfStack;
+ execute2_topOfStackB <= memARead;
+ when Decoded_Load | Decoded_Loadb | Decoded_Storeb =>
+ if (execute2_topOfStack(ioBit)='1') then
+ io_addr <= execute2_topOfStack(maxAddrBit downto minAddrBit);
+ io_readEnable <= '1';
+ else
+ memAAddr <= execute2_topOfStack(maxAddrBit downto minAddrBit);
+ execute1_fetched <= '0';
+ end if;
+ if (execute2_decodedOpcode = Decoded_Loadb) then
+ execute2_loadByte <= '1';
+ else
+ execute2_loadByte <= '0';
+ end if;
+ if (execute2_decodedOpcode = Decoded_Storeb) then
+ execute2_storeByte <= '1';
+ else
+ execute2_storebyte <= '0';
+ end if;
+ execute2_loading <= '1';
+ when Decoded_Ashiftleft =>
+ execute2_topOfStack(wordSize-1 downto 1) <= execute2_topOfStack(wordSize-2 downto 0);
+ execute2_topOfStack(0) <= '0';
+ when Decoded_MoveDown =>
+ execute2_sp <= execute2_sp + 1;
+ execute2_topOfStackB <= memARead;
+ when Decoded_MoveDown2 =>
+ execute2_sp <= execute2_sp + 1;
+ execute2_topOfStack <= execute2_topOfStackB;
+ execute2_topOfStackB <= execute2_topOfStack;
+ when Decoded_MoveDown3 =>
+ execute2_sp <= execute2_sp + 1;
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp+execute2_spOffset;
+ memBWrite <= execute2_topOfStack;
+
+ execute2_topOfStack <= execute2_topOfStackB;
+ execute2_topOfStackB <= memARead;
+ execute2_persistTopOfStack <= '1';
+ when Decoded_Duplicate =>
+ execute2_topOfStackB <= execute2_topOfStack;
+ execute2_sp <= execute2_sp - 1;
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp + 1;
+ memBWrite <= execute2_topOfStackB;
+ when Decoded_Duplicate2 =>
+ execute2_topOfStack <= execute2_topOfStackB;
+ execute2_topOfStackB <= execute2_topOfStack;
+ execute2_sp <= execute2_sp - 1;
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp + 1;
+ memBWrite <= execute2_topOfStackB;
+ when Decoded_Duplicate3 =>
+ execute2_topOfStack <= memARead;
+ execute2_topOfStackB <= execute2_topOfStack;
+ execute2_sp <= execute2_sp - 1;
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp + 1;
+ memBWrite <= execute2_topOfStackB;
+ when Decoded_Pushspadd =>
+ execute2_topOfStack <= (others => DontCareValue);
+ execute2_topOfStack(maxAddrBit downto minAddrBit) <= execute2_sp + execute2_topOfStack(maxAddrBit-minAddrBit downto 0);
+ when Decoded_Not =>
+ execute2_topOfStack <= not execute2_topOfStack;
+ when Decoded_Flip =>
+ for i in 0 to wordSize-1 loop
+ execute2_topOfStack(i) <= execute2_topOfStack(wordSize-1-i);
+ end loop;
+ when Decoded_Store =>
+ execute2_sp <= execute2_sp + 2;
+ if (execute2_topOfStack(ioBit)='0') then
+ memBAddr <= execute2_topOfStack(maxAddrBit downto minAddrBit);
+ memBWrite <= execute2_topOfStackB;
+ memBWriteEnable <= '1';
+ else
+ io_addr <= execute2_topOfStack(maxAddrBit downto minAddrBit);
+ io_write <= execute2_topOfStackB(7 downto 0);
+ io_writeEnable <= '1';
+ end if;
+ execute2_resync <= '1';
+ when Decoded_StoreSP =>
+ execute2_sp <= execute2_sp + 1;
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp+execute2_spOffset;
+ memBWrite <= execute2_topOfStack;
+
+ execute2_topOfStack <= execute2_topOfStackB;
+ execute2_topOfStackB <= memARead;
+ when Decoded_Neqbranch =>
+ execute2_sp <= execute2_sp + 2;
+ if (execute2_topOfStackB/=0) then
+ execute2_pc <= execute2_topOfStack(maxAddrBit downto 0) + execute2_pc;
+ end if;
+ execute2_resync <= '1';
+ when Decoded_Eq =>
+ execute2_sp <= execute2_sp + 1;
+ execute2_topOfStack <= (others => '0');
+ if (execute2_topOfStack=execute2_topOfStackB) then
+ execute2_topOfStack(0) <= '1';
+ end if;
+ execute2_topOfStackB <= memARead;
+ when Decoded_Ulessthan =>
+ execute2_sp <= execute2_sp + 1;
+ execute2_topOfStack <= (others => '0');
+ if (execute2_topOfStack<execute2_topOfStackB) then
+ execute2_topOfStack(0) <= '1';
+ end if;
+ execute2_topOfStackB <= memARead;
+ when Decoded_Lessthan =>
+ execute2_sp <= execute2_sp + 1;
+ execute2_topOfStack <= (others => '0');
+ compareA := signed(execute2_topOfStack);
+ compareB := signed(execute2_topOfStackB);
+ if (compareA<compareB) then
+ execute2_topOfStack(0) <= '1';
+ end if;
+ execute2_topOfStackB <= memARead;
+ when Decoded_Stall =>
+ begin_inst <= '0';
+ execute2_pc <= execute2_pc;
+ when others =>
+ -- nop
+ end case;
+
+ -- load cycle...
+ execute2_loadingDone <= execute2_loading;
+ if (execute2_loadingDone ='1') then
+ if (execute2_topOfStack(ioBit)='1') then
+ if (io_busy = '0') then
+ execute2_topOfStack <= (others => '0');
+ execute2_topOfStack(7 downto 0) <= io_read;
+ execute2_persistTopOfStack <= '1';
+ else
+ execute2_loadingDone <= '1';
+ end if;
+ else
+ if (execute2_storeByte = '1') then
+ execute2_sp <= execute2_sp + 2;
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_topOfStack(maxAddrBit downto minAddrBit);
+ memBWrite <= memARead;
+ case execute2_topOfStack(minAddrBit-1 downto 0) is
+ when "00" => memBWrite(31 downto 24) <= execute2_topOfStackB(7 downto 0);
+ when "01" => memBWrite(23 downto 16) <= execute2_topOfStackB(7 downto 0);
+ when "10" => memBWrite(15 downto 8) <= execute2_topOfStackB(7 downto 0);
+ when others => memBWrite(7 downto 0) <= execute2_topOfStackB(7 downto 0);
+ end case;
+-- case execute2_topOfStack(0 downto 0) is
+-- when "1" => memBWrite(15 downto 8) <= execute2_topOfStackB(7 downto 0);
+-- when others => memBWrite(7 downto 0) <= execute2_topOfStackB(7 downto 0);
+-- end case;
+ execute2_resync <= '1';
+ elsif (execute2_loadByte = '1') then
+ execute2_topOfStack <= (others => '0');
+ case execute2_topOfStack(minAddrBit-1 downto 0) is
+ when "00" => execute2_topOfStack(7 downto 0) <= memARead(31 downto 24);
+ when "01" => execute2_topOfStack(7 downto 0) <= memARead(23 downto 16);
+ when "10" => execute2_topOfStack(7 downto 0) <= memARead(15 downto 8);
+ when others => execute2_topOfStack(7 downto 0) <= memARead(7 downto 0);
+ end case;
+-- case execute2_topOfStack(0 downto 0) is
+-- when "1" => execute2_topOfStack(7 downto 0) <= memARead(15 downto 8);
+-- when others => execute2_topOfStack(7 downto 0) <= memARead(7 downto 0);
+-- end case;
+ execute2_persistTopOfStack <= '1';
+ else
+ execute2_topOfStack <= memARead;
+ execute2_persistTopOfStack <= '1';
+ end if;
+ end if;
+ end if;
+
+ -- write top of stack...
+ execute2_persistTopOfStackB <= execute2_persistTopOfStack;
+ if (execute2_persistTopOfStack = '1') then
+ execute2_persistTopOfStack <= '0';
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp;
+ memBWrite <= execute2_topOfStack;
+ end if;
+ if (execute2_persistTopOfStackB = '1') then
+ memBWriteEnable <= '1';
+ memBAddr <= execute2_sp+1;
+ memBWrite <= execute2_topOfStackB;
+
+ execute2_resync <= '1';
+ end if;
+
+ -- here we resync the pipeline.
+ -- a number of things have to happen on certain cycles
+ execute2_resync2 <= execute2_resync;
+ execute2_resync3 <= execute2_resync2;
+ execute2_resync4 <= execute2_resync3;
+ execute2_resync5 <= execute2_resync4;
+ execute2_resync6 <= execute2_resync5;
+ execute2_resync7 <= execute2_resync6;
+ execute2_resync8 <= execute2_resync7;
+ execute2_resync9 <= execute2_resync8;
+ execute2_resync10 <= execute2_resync9;
+
+ if (execute2_resync = '1' ) then
+ -- resync #1
+ execute2_resync <= '0';
+ decode_starved <= '1';
+ memAAddr <= execute2_sp;
+ end if;
+ if (execute2_resync2 = '1') then
+ -- resync #2
+ execute1_fetchPC <= execute2_pc;
+ memAAddr <= execute2_sp + 1;
+ end if;
+ if (execute2_resync3 = '1') then
+ -- resync #3
+ execute2_topOfStack <= memARead;
+ end if;
+ if (execute2_resync4 = '1') then
+ -- resync #4
+ -- during this cycle the address is set to the opcode
+ execute2_topOfStackB <= memARead;
+ end if;
+ if (execute2_resync5 = '1') then
+ -- resync #5
+ execute1_pop1 <= '0';
+ execute1_push1 <= '0';
+ end if;
+ if (execute2_resync6 = '1') then
+ -- resync #6
+ decode_idim_flag <= '0';
+ execute1_pop1 <= '0';
+ execute1_push1 <= '0';
+ end if;
+ if (execute2_resync7 = '1') then
+ -- resync #7
+ execute1_sp <= execute2_sp;
+ execute1_stall <= '0';
+ end if;
+ if (execute2_resync8 = '1') then
+ -- resync #8
+-- load_stall <= '0';
+ end if;
+ if (execute2_resync9 = '1') then
+ -- resync #9
+ end if;
+ if (execute2_resync10 = '1') then
+ end if;
+
+
+
+
+ end if;
+ end process;
+
+
+
+end behave;
diff --git a/zpu/hdl/zpu3/src/zpu_top.vhd b/zpu/hdl/zpu3/src/zpu_top.vhd
new file mode 100644
index 0000000..0ac6df4
--- /dev/null
+++ b/zpu/hdl/zpu3/src/zpu_top.vhd
@@ -0,0 +1,421 @@
+-- Company: ZPU3
+-- Engineer: Øyvind Harboe
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+
+entity zpu_top is
+ Port ( clk : in std_logic;
+ areset : in std_logic;
+ io_busy : in std_logic;
+ io_read : in std_logic_vector(7 downto 0);
+ io_write : out std_logic_vector(7 downto 0);
+ io_addr : out std_logic_vector(maxAddrBit downto minAddrBit);
+ io_writeEnable : out std_logic;
+ io_readEnable : out std_logic;
+ interrupt : in std_logic;
+ break : out std_logic);
+end zpu_top;
+
+architecture behave of zpu_top is
+
+signal readIO : std_logic;
+
+
+
+signal memAWriteEnable : std_logic;
+signal memAAddr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal memAWrite : std_logic_vector(wordSize-1 downto 0);
+signal memARead : std_logic_vector(wordSize-1 downto 0);
+signal memBWriteEnable : std_logic;
+signal memBAddr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal memBWrite : std_logic_vector(wordSize-1 downto 0);
+signal memBRead : std_logic_vector(wordSize-1 downto 0);
+
+
+
+signal pc : std_logic_vector(maxAddrBit downto 0);
+signal sp : std_logic_vector(maxAddrBit downto minAddrBit);
+
+signal idim_flag : std_logic;
+
+--signal storeToStack : std_logic;
+--signal fetchNextInstruction : std_logic;
+--signal extraCycle : std_logic;
+signal busy : std_logic;
+--signal fetching : std_logic;
+
+signal begin_inst : std_logic;
+
+
+
+signal trace_opcode : std_logic_vector(7 downto 0);
+signal trace_pc : std_logic_vector(maxAddrBit downto 0);
+signal trace_sp : std_logic_vector(maxAddrBit downto minAddrBit);
+signal trace_topOfStack : std_logic_vector(wordSize-1 downto 0);
+signal trace_topOfStackB : std_logic_vector(wordSize-1 downto 0);
+
+-- state machine.
+
+subtype State_Type is std_logic_vector(3 downto 0);
+constant State_Fetch : State_Type := b"0000";
+constant State_WriteIODone : State_Type := b"0001";
+constant State_Execute : State_Type := b"0010";
+constant State_StoreToStack : State_Type := b"0011";
+constant State_Add : State_Type := b"0100";
+constant State_Or : State_Type := b"0101";
+constant State_And : State_Type := b"0110";
+constant State_Store : State_Type := b"0111";
+constant State_ReadIO : State_Type := b"1000";
+constant State_WriteIO : State_Type := b"1001";
+constant State_Load : State_Type := b"1010";
+constant State_FetchNext : State_Type := b"1011";
+constant State_AddSP : State_Type := b"1100";
+constant State_ReadIODone : State_Type := b"1101";
+constant State_Decode : State_Type := b"1110";
+constant State_Resync : State_Type := b"1111";
+
+
+subtype DecodedOpcodeType is std_logic_vector(4 downto 0);
+constant Decoded_Nop : DecodedOpcodeType := b"00000";
+constant Decoded_Im : DecodedOpcodeType := b"00001";
+constant Decoded_ImShift : DecodedOpcodeType := b"00010";
+constant Decoded_LoadSP : DecodedOpcodeType := b"00011";
+constant Decoded_StoreSP : DecodedOpcodeType := b"00100";
+constant Decoded_AddSP : DecodedOpcodeType := b"00101";
+constant Decoded_Emulate : DecodedOpcodeType := b"00110";
+constant Decoded_Break : DecodedOpcodeType := b"00111";
+constant Decoded_PushPC : DecodedOpcodeType := b"01000";
+constant Decoded_PushSP : DecodedOpcodeType := b"01001";
+constant Decoded_PopPC : DecodedOpcodeType := b"01010";
+constant Decoded_Add : DecodedOpcodeType := b"01011";
+constant Decoded_Or : DecodedOpcodeType := b"01100";
+constant Decoded_And : DecodedOpcodeType := b"01101";
+constant Decoded_Load : DecodedOpcodeType := b"01110";
+constant Decoded_Not : DecodedOpcodeType := b"01111";
+constant Decoded_Flip : DecodedOpcodeType := b"10000";
+constant Decoded_Store : DecodedOpcodeType := b"10001";
+constant Decoded_PopSP : DecodedOpcodeType := b"10010";
+
+signal opcode : std_logic_vector(OpCode_Size-1 downto 0);
+
+signal decodedOpcode : DecodedOpcodeType;
+
+signal state : State_Type;
+
+begin
+ traceFileGenerate:
+ if Generate_Trace generate
+ trace_file: trace port map (
+ clk => clk,
+ begin_inst => begin_inst,
+ pc => trace_pc,
+ opcode => trace_opcode,
+ sp => trace_sp,
+ memA => trace_topOfStack,
+ memB => trace_topOfStackB,
+ busy => busy
+ );
+ end generate;
+
+
+ memory: dualport_ram port map (
+ clk => clk,
+ memAWriteEnable => memAWriteEnable,
+ memAAddr => memAAddr,
+ memAWrite => memAWrite,
+ memARead => memARead,
+ memBWriteEnable => memBWriteEnable,
+ memBAddr => memBAddr,
+ memBWrite => memBWrite,
+ memBRead => memBRead
+ );
+
+
+
+
+ opcodeControl:
+ process(clk, areset)
+ variable tOpcode : std_logic_vector(OpCode_Size-1 downto 0);
+ variable spOffset : std_logic_vector(4 downto 0);
+ begin
+ if areset = '1' then
+ state <= State_Resync;
+ break <= '0';
+ sp <= (2 => '0', others => '1');
+ pc <= (others => '0');
+ idim_flag <= '0';
+ begin_inst <= '0';
+ memAAddr <= (others => '0');
+ memBAddr <= (others => '0');
+ memAWriteEnable <= '0';
+ memBWriteEnable <= '0';
+ io_writeEnable <= '0';
+ io_readEnable <= '0';
+ decodedOpcode <= (others => '0');
+ memAWrite <= (others => '0');
+ memBWrite <= (others => '0');
+ opcode <= (others => '0');
+ io_addr <= (others => '0');
+ io_write <= (others => '0');
+ elsif (clk'event and clk = '1') then
+ memAWriteEnable <= '0';
+ memBWriteEnable <= '0';
+ -- This saves ca. 100 LUT's, by explicitly declaring that the
+ -- memAWrite can be left at whatever value if memAWriteEnable is
+ -- not set.
+ memAWrite <= (others => DontCareValue);
+ memBWrite <= (others => DontCareValue);
+ opcode <= (others => DontCareValue);
+-- io_addr <= (others => DontCareValue);
+-- io_write <= (others => DontCareValue);
+ spOffset := (others => DontCareValue);
+ memAAddr <= (others => DontCareValue);
+ memBAddr <= (others => DontCareValue);
+
+ io_writeEnable <= '0';
+ io_readEnable <= '0';
+ begin_inst <= '0';
+
+ case state is
+ when State_Execute =>
+ state <= State_Fetch;
+ -- at this point:
+ -- memBRead contains opcode word
+ -- memARead contains top of stack
+ pc <= pc + 1;
+
+ -- trace
+ begin_inst <= '1';
+ trace_pc <= pc;
+ trace_opcode <= opcode;
+ trace_sp <= sp;
+ trace_topOfStack <= memARead;
+ trace_topOfStackB <= memBRead;
+
+ -- during the next cycle we'll be reading the next opcode
+ spOffset(4):=not opcode(4);
+ spOffset(3 downto 0):=opcode(3 downto 0);
+
+ case decodedOpcode is
+ when Decoded_Im =>
+ memAWriteEnable <= '1';
+ sp <= sp - 1;
+ memAAddr <= sp-1;
+ for i in wordSize-1 downto 7 loop
+ memAWrite(i) <= opcode(6);
+ end loop;
+ memAWrite(6 downto 0) <= opcode(6 downto 0);
+ when Decoded_ImShift =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite(wordSize-1 downto 7) <= memARead(wordSize-8 downto 0);
+ memAWrite(6 downto 0) <= opcode(6 downto 0);
+ when Decoded_StoreSP =>
+ memBWriteEnable <= '1';
+ memBAddr <= sp+spOffset;
+ memBWrite <= memARead;
+ sp <= sp + 1;
+ state <= State_Resync;
+ when Decoded_LoadSP =>
+ sp <= sp - 1;
+ memAAddr <= sp+spOffset;
+ when Decoded_Emulate =>
+ sp <= sp - 1;
+ memAWriteEnable <= '1';
+ memAAddr <= sp - 1;
+ memAWrite <= (others => DontCareValue);
+ memAWrite(maxAddrBit downto 0) <= pc + 1;
+ -- The emulate address is:
+ -- 98 7654 3210
+ -- 0000 00aa aaa0 0000
+ pc <= (others => '0');
+ pc(9 downto 5) <= opcode(4 downto 0);
+ when Decoded_AddSP =>
+ memAAddr <= sp;
+ memBAddr <= sp+spOffset;
+ state <= State_AddSP;
+ when Decoded_Break =>
+ report "Break instruction encountered" severity failure;
+ break <= '1';
+ when Decoded_PushSP =>
+ memAWriteEnable <= '1';
+ memAAddr <= sp - 1;
+ sp <= sp - 1;
+ memAWrite <= (others => DontCareValue);
+ memAWrite(maxAddrBit downto minAddrBit) <= sp;
+ when Decoded_PopPC =>
+ pc <= memARead(maxAddrBit downto 0);
+ sp <= sp + 1;
+ state <= State_Resync;
+ when Decoded_Add =>
+ sp <= sp + 1;
+ state <= State_Add;
+ when Decoded_Or =>
+ sp <= sp + 1;
+ state <= State_Or;
+ when Decoded_And =>
+ sp <= sp + 1;
+ state <= State_And;
+ when Decoded_Load =>
+ if (memARead(ioBit)='1') then
+ io_addr <= memARead(maxAddrBit downto minAddrBit);
+ io_readEnable <= '1';
+ state <= State_ReadIO;
+ else
+ memAAddr <= memARead(maxAddrBit downto minAddrBit);
+ end if;
+ when Decoded_Not =>
+ memAAddr <= sp(maxAddrBit downto minAddrBit);
+ memAWriteEnable <= '1';
+ memAWrite <= not memARead;
+ when Decoded_Flip =>
+ memAAddr <= sp(maxAddrBit downto minAddrBit);
+ memAWriteEnable <= '1';
+ for i in 0 to wordSize-1 loop
+ memAWrite(i) <= memARead(wordSize-1-i);
+ end loop;
+ when Decoded_Store =>
+ memBAddr <= sp + 1;
+ sp <= sp + 1;
+ if (memARead(ioBit)='1') then
+ state <= State_WriteIO;
+ else
+ state <= State_Store;
+ end if;
+ when Decoded_PopSP =>
+ sp <= memARead(maxAddrBit downto minAddrBit);
+ state <= State_Resync;
+ when Decoded_Nop =>
+ memAAddr <= sp;
+ when others =>
+ null;
+ end case;
+ when State_ReadIO =>
+ if (io_busy = '0') then
+ state <= State_Fetch;
+ memAWriteEnable <= '1';
+ memAWrite <= (others => '0');
+ memAWrite(7 downto 0) <= io_read;
+ end if;
+ when State_WriteIO =>
+ sp <= sp + 1;
+ io_writeEnable <= '1';
+ io_addr <= memARead(maxAddrBit downto minAddrBit);
+ io_write <= memBRead(7 downto 0);
+ state <= State_WriteIODone;
+ when State_WriteIODone =>
+ if (io_busy = '0') then
+ state <= State_Resync;
+ end if;
+ when State_Fetch =>
+ -- We need to resync. During the *next* cycle
+ -- we'll fetch the opcode @ pc and thus it will
+ -- be available for State_Execute the cycle after
+ -- next
+ memBAddr <= pc(maxAddrBit downto minAddrBit);
+ state <= State_FetchNext;
+ when State_FetchNext =>
+ -- at this point memARead contains the value that is either
+ -- from the top of stack or should be copied to the top of the stack
+ memAWriteEnable <= '1';
+ memAWrite <= memARead;
+ memAAddr <= sp;
+ memBAddr <= sp + 1;
+ state <= State_Decode;
+ when State_Decode =>
+ case pc(1 downto 0) is
+ when "00" => tOpcode := memBRead(31 downto 24);
+ when "01" => tOpcode := memBRead(23 downto 16);
+ when "10" => tOpcode := memBRead(15 downto 8);
+ when others => tOpcode := memBRead(7 downto 0);
+ end case;
+ idim_flag <= tOpcode(7);
+ opcode <= tOpcode;
+ if (tOpcode(7 downto 7)=OpCode_Im) then
+ if (idim_flag='1') then
+ decodedOpcode<=Decoded_ImShift;
+ else
+ decodedOpcode<=Decoded_Im;
+ end if;
+ elsif (tOpcode(7 downto 5)=OpCode_StoreSP) then
+ decodedOpcode<=Decoded_StoreSP;
+ elsif (tOpcode(7 downto 5)=OpCode_LoadSP) then
+ decodedOpcode<=Decoded_LoadSP;
+ elsif (tOpcode(7 downto 5)=OpCode_Emulate) then
+ decodedOpcode<=Decoded_Emulate;
+ elsif (tOpcode(7 downto 4)=OpCode_AddSP) then
+ decodedOpcode<=Decoded_AddSP;
+ else
+ case tOpcode(3 downto 0) is
+ when OpCode_Break =>
+ decodedOpcode<=Decoded_Break;
+ when OpCode_PushSP =>
+ decodedOpcode<=Decoded_PushSP;
+ when OpCode_PopPC =>
+ decodedOpcode<=Decoded_PopPC;
+ when OpCode_Add =>
+ decodedOpcode<=Decoded_Add;
+ when OpCode_Or =>
+ decodedOpcode<=Decoded_Or;
+ when OpCode_And =>
+ decodedOpcode<=Decoded_And;
+ when OpCode_Load =>
+ decodedOpcode<=Decoded_Load;
+ when OpCode_Not =>
+ decodedOpcode<=Decoded_Not;
+ when OpCode_Flip =>
+ decodedOpcode<=Decoded_Flip;
+ when OpCode_Store =>
+ decodedOpcode<=Decoded_Store;
+ when OpCode_PopSP =>
+ decodedOpcode<=Decoded_PopSP;
+ when others =>
+ decodedOpcode<=Decoded_Nop;
+ end case;
+ end if;
+ -- during the State_Execute cycle we'll be fetching SP+1
+ memAAddr <= sp;
+ memBAddr <= sp + 1;
+ state <= State_Execute;
+ when State_Store =>
+ sp <= sp + 1;
+ memAWriteEnable <= '1';
+ memAAddr <= memARead(maxAddrBit downto minAddrBit);
+ memAWrite <= memBRead;
+ state <= State_Resync;
+ when State_AddSP =>
+ state <= State_Add;
+ when State_Add =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite <= memARead + memBRead;
+ state <= State_Fetch;
+ when State_Or =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite <= memARead or memBRead;
+ state <= State_Fetch;
+ when State_Resync =>
+ memAAddr <= sp;
+ state <= State_Fetch;
+ when State_And =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite <= memARead and memBRead;
+ state <= State_Fetch;
+ when others =>
+ null;
+ end case;
+ end if;
+ end process;
+
+
+
+end behave;
diff --git a/zpu/hdl/zpu3/src/zpu_top_medium.vhd b/zpu/hdl/zpu3/src/zpu_top_medium.vhd
new file mode 100644
index 0000000..4896b30
--- /dev/null
+++ b/zpu/hdl/zpu3/src/zpu_top_medium.vhd
@@ -0,0 +1,768 @@
+-- Company: ZPU3
+-- Engineer: Øyvind Harboe
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+use IEEE.STD_LOGIC_arith.ALL;
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+
+entity zpu_top is
+ Port ( clk : in std_logic;
+ areset : in std_logic;
+ io_busy : in std_logic;
+ io_read : in std_logic_vector(7 downto 0);
+ io_write : out std_logic_vector(7 downto 0);
+ io_addr : out std_logic_vector(maxAddrBit downto minAddrBit);
+ io_writeEnable : out std_logic;
+ io_readEnable : out std_logic;
+ interrupt : in std_logic;
+ break : out std_logic);
+end zpu_top;
+
+architecture behave of zpu_top is
+
+signal readIO : std_logic;
+
+
+
+signal memAWriteEnable : std_logic;
+signal memAAddr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal memAWrite : std_logic_vector(wordSize-1 downto 0);
+signal memARead : std_logic_vector(wordSize-1 downto 0);
+signal memBWriteEnable : std_logic;
+signal memBAddr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal memBWrite : std_logic_vector(wordSize-1 downto 0);
+signal memBRead : std_logic_vector(wordSize-1 downto 0);
+
+
+
+signal pc : std_logic_vector(maxAddrBit downto 0);
+signal sp : std_logic_vector(maxAddrBit downto minAddrBit);
+
+signal idim_flag : std_logic;
+
+--signal storeToStack : std_logic;
+--signal fetchNextInstruction : std_logic;
+--signal extraCycle : std_logic;
+signal busy : std_logic;
+--signal fetching : std_logic;
+
+signal begin_inst : std_logic;
+
+
+
+signal trace_opcode : std_logic_vector(7 downto 0);
+signal trace_pc : std_logic_vector(maxAddrBit downto 0);
+signal trace_sp : std_logic_vector(maxAddrBit downto minAddrBit);
+signal trace_topOfStack : std_logic_vector(wordSize-1 downto 0);
+
+-- state machine.
+
+subtype State_Type is std_logic_vector(4 downto 0);
+constant State_ResyncDecode : State_Type := b"00000";
+constant State_WriteIODone : State_Type := b"00001";
+constant State_Execute : State_Type := b"00010";
+constant State_StoreToStack : State_Type := b"00011";
+constant State_Add : State_Type := b"00100";
+constant State_Or : State_Type := b"00101";
+constant State_And : State_Type := b"00110";
+constant State_Store : State_Type := b"00111";
+constant State_ReadIO : State_Type := b"01000";
+constant State_WriteIO : State_Type := b"01001";
+constant State_Load : State_Type := b"01010";
+constant State_ResyncStack : State_Type := b"01011";
+constant State_AddSP : State_Type := b"01100";
+constant State_ReadIODone : State_Type := b"01101";
+constant State_Decode : State_Type := b"01110";
+constant State_LoadByte1 : State_Type := b"01111";
+constant State_LoadByte2 : State_Type := b"10000";
+constant State_StoreByte1 : State_Type := b"10001";
+constant State_StoreByte2 : State_Type := b"10010";
+constant State_Mult1 : State_Type := b"10011";
+constant State_Mult2 : State_Type := b"10100";
+constant State_Mult3 : State_Type := b"10101";
+
+
+subtype DecodedOpcodeType is std_logic_vector(5 downto 0);
+constant Decoded_Nop : DecodedOpcodeType := b"000000";
+constant Decoded_Im : DecodedOpcodeType := b"000001";
+constant Decoded_ImShift : DecodedOpcodeType := b"000010";
+constant Decoded_LoadSP : DecodedOpcodeType := b"000011";
+constant Decoded_StoreSP : DecodedOpcodeType := b"000100";
+constant Decoded_AddSP : DecodedOpcodeType := b"000101";
+constant Decoded_Emulate : DecodedOpcodeType := b"000110";
+constant Decoded_Break : DecodedOpcodeType := b"000111";
+constant Decoded_PushPC : DecodedOpcodeType := b"001000";
+constant Decoded_PushSP : DecodedOpcodeType := b"001001";
+constant Decoded_PopPC : DecodedOpcodeType := b"001010";
+constant Decoded_Add : DecodedOpcodeType := b"001011";
+constant Decoded_Or : DecodedOpcodeType := b"001100";
+constant Decoded_And : DecodedOpcodeType := b"001101";
+constant Decoded_Load : DecodedOpcodeType := b"001110";
+constant Decoded_Not : DecodedOpcodeType := b"001111";
+constant Decoded_Flip : DecodedOpcodeType := b"010000";
+constant Decoded_Store : DecodedOpcodeType := b"010001";
+constant Decoded_PopSP : DecodedOpcodeType := b"010010";
+constant Decoded_Ashiftleft : DecodedOpcodeType := b"010011";
+constant Decoded_Ashiftright : DecodedOpcodeType := b"010100";
+constant Decoded_Lshiftright : DecodedOpcodeType := b"010101";
+constant Decoded_Eqbranch : DecodedOpcodeType := b"010110";
+constant Decoded_Neqbranch : DecodedOpcodeType := b"010111";
+constant Decoded_Eq : DecodedOpcodeType := b"011000";
+constant Decoded_Neq : DecodedOpcodeType := b"011001";
+constant Decoded_Loadb : DecodedOpcodeType := b"011010";
+constant Decoded_Lessthan : DecodedOpcodeType := b"011011";
+constant Decoded_Lessthanorequal : DecodedOpcodeType := b"011100";
+constant Decoded_Ulessthan : DecodedOpcodeType := b"011101";
+constant Decoded_Ulessthanorequal : DecodedOpcodeType := b"011110";
+constant Decoded_Storeb : DecodedOpcodeType := b"011111";
+constant Decoded_Lshift2 : DecodedOpcodeType := b"100000";
+constant Decoded_DoubleIm : DecodedOpcodeType := b"100001";
+constant Decoded_AddIm : DecodedOpcodeType := b"100011";
+constant Decoded_Mult16x16 : DecodedOpcodeType := b"100100";
+constant Decoded_Swap : DecodedOpcodeType := b"100101";
+constant Decoded_Callpcrel : DecodedOpcodeType := b"100110";
+constant Decoded_Pushspadd : DecodedOpcodeType := b"100111";
+
+
+signal mult1 : std_logic_vector(wordSize/2-1 downto 0);
+signal mult2 : std_logic_vector(wordSize/2-1 downto 0);
+signal multResult : std_logic_vector(wordSize-1 downto 0);
+
+signal storeByte : std_logic_vector(7 downto 0);
+signal byteSelect : std_logic_vector(minAddrBit-1 downto 0);
+
+signal opcode : std_logic_vector(OpCode_Size-1 downto 0);
+signal opcode2 : std_logic_vector(OpCode_Size-1 downto 0);
+
+signal decodedOpcode : DecodedOpcodeType;
+
+signal state : State_Type;
+
+begin
+ traceFileGenerate:
+ if Generate_Trace generate
+ trace_file: trace port map (
+ clk => clk,
+ begin_inst => begin_inst,
+ pc => trace_pc,
+ opcode => trace_opcode,
+ sp => trace_sp,
+ memA => trace_topOfStack,
+ busy => busy
+ );
+ end generate;
+
+
+ memory: dualport_ram port map (
+ clk => clk,
+ memAWriteEnable => memAWriteEnable,
+ memAAddr => memAAddr,
+ memAWrite => memAWrite,
+ memARead => memARead,
+ memBWriteEnable => memBWriteEnable,
+ memBAddr => memBAddr,
+ memBWrite => memBWrite,
+ memBRead => memBRead
+ );
+
+
+ process(clk, areset)
+ begin
+ if (clk'event and clk = '1') then
+ multResult <= mult1 * mult2;
+ end if;
+ end process;
+
+
+
+ opcodeControl:
+ process(clk, areset)
+ variable tOpcode : std_logic_vector(OpCode_Size-1 downto 0);
+ variable tOpcode2 : std_logic_vector(OpCode_Size-1 downto 0);
+ variable spOffset : std_logic_vector(4 downto 0);
+ variable spOffset2 : std_logic_vector(4 downto 0);
+ variable nextPC : std_logic_vector(maxAddrBit downto 0);
+ variable pushspaddTemp : std_logic_vector(maxAddrBit downto minAddrBit);
+ variable tempVal : std_logic_vector(wordSize-1 downto 0);
+ variable compareA : signed(wordSize-1 downto 0);
+ variable compareB : signed(wordSize-1 downto 0);
+ begin
+ if areset = '1' then
+ mult1 <= (others => '0');
+ mult2 <= (others => '0');
+ state <= State_ResyncDecode;
+ break <= '0';
+ sp <= (2 => '0', others => '1');
+ pc <= (others => '0');
+ idim_flag <= '0';
+ begin_inst <= '0';
+ memAAddr <= (others => '0');
+ memBAddr <= (others => '0');
+ memAWriteEnable <= '0';
+ memBWriteEnable <= '0';
+ io_writeEnable <= '0';
+ io_readEnable <= '0';
+ decodedOpcode <= (others => '0');
+ memAWrite <= (others => '0');
+ memBWrite <= (others => '0');
+ opcode <= (others => '0');
+ io_addr <= (others => '0');
+ io_write <= (others => '0');
+ elsif (clk'event and clk = '1') then
+ memAWriteEnable <= '0';
+ memBWriteEnable <= '0';
+
+ io_writeEnable <= '0';
+ io_readEnable <= '0';
+ begin_inst <= '0';
+
+ case state is
+ when State_Decode =>
+ nextPC:=pc+1;
+ case pc(1 downto 0) is
+ when "00" => tOpcode := memARead(31 downto 24);
+ when "01" => tOpcode := memARead(23 downto 16);
+ when "10" => tOpcode := memARead(15 downto 8);
+ when others => tOpcode := memARead(7 downto 0);
+ end case;
+ case nextPC(1 downto 0) is
+ when "00" => tOpcode2 := memBRead(31 downto 24);
+ when "01" => tOpcode2 := memBRead(23 downto 16);
+ when "10" => tOpcode2 := memBRead(15 downto 8);
+ when others => tOpcode2 := memBRead(7 downto 0);
+ end case;
+ idim_flag <= tOpcode(7);
+ opcode <= tOpcode;
+ opcode2 <= tOpcode2;
+ if (tOpcode(7 downto 7)=OpCode_Im and tOpcode2(7 downto 4)=0 and tOpcode2(3 downto 0)=Opcode_Add and idim_flag='0') then
+ idim_flag <= '0';
+ decodedOpcode <= Decoded_AddIm;
+ nextPC := pc + 2;
+ elsif (tOpcode(7 downto 7)=OpCode_Im and tOpcode2(7 downto 7)=OpCode_Im and idim_flag='0') then
+ decodedOpcode <= Decoded_DoubleIm;
+ nextPC := pc + 2;
+ elsif (tOpcode(7 downto 4)=OpCode_AddSP and tOpcode(3 downto 0)=0 and
+ tOpcode2(7 downto 4)=OpCode_AddSP and tOpcode2(3 downto 0)=0) then
+ decodedOpcode <= Decoded_Lshift2;
+ nextPC := pc + 2;
+ elsif (tOpcode(7 downto 7)=OpCode_Im) then
+ if (idim_flag='1') then
+ decodedOpcode<=Decoded_ImShift;
+ else
+ decodedOpcode<=Decoded_Im;
+ end if;
+ elsif (tOpcode(7 downto 5)=OpCode_StoreSP) then
+ decodedOpcode<=Decoded_StoreSP;
+ elsif (tOpcode(7 downto 5)=OpCode_LoadSP) then
+ decodedOpcode<=Decoded_LoadSP;
+ elsif (tOpcode(7 downto 5)=OpCode_Emulate) then
+ if tOpcode(5 downto 0)=OpCode_Eqbranch then
+ decodedOpcode <= Decoded_Eqbranch;
+ elsif tOpcode(5 downto 0)=OpCode_Neqbranch then
+ decodedOpcode <= Decoded_Neqbranch;
+ elsif tOpcode(5 downto 0)=OpCode_Eq then
+ decodedOpcode <= Decoded_Eq;
+ elsif tOpcode(5 downto 0)=OpCode_Neq then
+ decodedOpcode <= Decoded_Neq;
+ elsif tOpcode(5 downto 0)=OpCode_Lessthan then
+ decodedOpcode <= Decoded_Lessthan;
+ elsif tOpcode(5 downto 0)=OpCode_Lessthanorequal then
+ decodedOpcode <= Decoded_Lessthanorequal;
+ elsif tOpcode(5 downto 0)=OpCode_Ulessthan then
+ decodedOpcode <= Decoded_Ulessthan;
+ elsif tOpcode(5 downto 0)=OpCode_Ulessthanorequal then
+ decodedOpcode <= Decoded_Ulessthanorequal;
+ elsif tOpcode(5 downto 0)=OpCode_Loadb then
+ decodedOpcode <= Decoded_Loadb;
+ elsif tOpcode(5 downto 0)=OpCode_Storeb then
+ decodedOpcode <= Decoded_Storeb;
+ elsif tOpcode(5 downto 0)=OpCode_Mult16x16 then
+ decodedOpcode <= Decoded_Mult16x16;
+ elsif tOpcode(5 downto 0)=OpCode_Swap then
+ decodedOpcode <= Decoded_Swap;
+ elsif tOpcode(5 downto 0)=OpCode_Callpcrel then
+ decodedOpcode <= Decoded_Callpcrel;
+ elsif tOpcode(5 downto 0)=OpCode_Pushspadd then
+ decodedOpcode <= Decoded_Pushspadd;
+-- elsif tOpcode(5 downto 0)=OpCode_Lshiftright then
+-- decodedOpcode <= Decoded_Lshiftright;
+-- elsif tOpcode(5 downto 0)=OpCode_Ashiftleft then
+-- decodedOpcode <= Decoded_Ashiftleft;
+-- elsif tOpcode(5 downto 0)=OpCode_Ashiftright then
+-- decodedOpcode <= Decoded_Ashiftright;
+ else
+ decodedOpcode<=Decoded_Emulate;
+ end if;
+ elsif (tOpcode(7 downto 4)=OpCode_AddSP) then
+ decodedOpcode<=Decoded_AddSP;
+ else
+ case tOpcode(3 downto 0) is
+ when OpCode_Break =>
+ decodedOpcode<=Decoded_Break;
+ when OpCode_PushPC =>
+ decodedOpcode<=Decoded_PushPC;
+ when OpCode_PushSP =>
+ decodedOpcode<=Decoded_PushSP;
+ when OpCode_PopPC =>
+ decodedOpcode<=Decoded_PopPC;
+ when OpCode_Add =>
+ decodedOpcode<=Decoded_Add;
+ when OpCode_Or =>
+ decodedOpcode<=Decoded_Or;
+ when OpCode_And =>
+ decodedOpcode<=Decoded_And;
+ when OpCode_Load =>
+ decodedOpcode<=Decoded_Load;
+ when OpCode_Not =>
+ decodedOpcode<=Decoded_Not;
+ when OpCode_Flip =>
+ decodedOpcode<=Decoded_Flip;
+ when OpCode_Store =>
+ decodedOpcode<=Decoded_Store;
+ when OpCode_PopSP =>
+ decodedOpcode<=Decoded_PopSP;
+ when others =>
+ decodedOpcode<=Decoded_Nop;
+ end case;
+ end if;
+ -- Fetch the two next opcodes... :-)
+ memAAddr <= nextPC(maxAddrBit downto minAddrBit);
+ nextPC:=nextPC+1;
+ memBAddr <= nextPC(maxAddrBit downto minAddrBit);
+ state <= State_Execute;
+ when State_Execute =>
+ state <= State_Decode;
+ -- at this point:
+ -- memBRead contains opcode word
+ -- memARead contains top of stack
+ pc <= pc + 1;
+
+ -- trace
+ begin_inst <= '1';
+ trace_pc <= pc;
+ trace_opcode <= opcode;
+ trace_sp <= sp;
+ trace_topOfStack <= memARead;
+
+ -- during the next cycle we'll be reading the next opcode
+ spOffset(4):=not opcode(4);
+ spOffset(3 downto 0):=opcode(3 downto 0);
+ spOffset2(4):=not opcode2(4);
+ spOffset2(3 downto 0):=opcode2(3 downto 0);
+
+ case decodedOpcode is
+
+ when Decoded_DoubleIm =>
+ memAWriteEnable <= '1';
+ sp <= sp - 1;
+ memAAddr <= sp-1;
+ for i in wordSize-1 downto 14 loop
+ memAWrite(i) <= opcode(6);
+ end loop;
+ memAWrite(13 downto 7) <= opcode(6 downto 0);
+ memAWrite(6 downto 0) <= opcode2(6 downto 0);
+ memBAddr <= sp;
+ memBWrite <= memARead;
+ memBWriteEnable <= '1';
+ pc <= pc + 2;
+ when Decoded_Im =>
+ memAWriteEnable <= '1';
+ sp <= sp - 1;
+ memAAddr <= sp-1;
+ for i in wordSize-1 downto 7 loop
+ memAWrite(i) <= opcode(6);
+ end loop;
+ memAWrite(6 downto 0) <= opcode(6 downto 0);
+ memBAddr <= sp;
+ memBWrite <= memARead;
+ memBWriteEnable <= '1';
+ when Decoded_ImShift =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite(wordSize-1 downto 7) <= memARead(wordSize-8 downto 0);
+ memAWrite(6 downto 0) <= opcode(6 downto 0);
+ memBAddr <= sp + 1;
+ when Decoded_StoreSP =>
+ memAWriteEnable <= '1';
+ memAAddr <= sp+spOffset;
+ memAWrite <= memARead;
+ -- avoid address crashes.
+ memBAddr <= sp - 1;
+ sp <= sp + 1;
+ state <= State_ResyncDecode;
+ when Decoded_LoadSP =>
+ sp <= sp - 1;
+ if (spOffset = 0) then
+ -- This is a duplicate instruction.
+ memAAddr <= sp-1;
+ memAWriteEnable <= '1';
+ memAWrite <= memARead;
+ else
+ memAAddr <= sp+spOffset;
+ end if;
+ memBAddr <= sp;
+ memBWrite <= memARead;
+ memBWriteEnable <= '1';
+ when Decoded_Callpcrel =>
+ memAWriteEnable <= '1';
+ memAAddr <= sp;
+ memAWrite <= (others => DontCareValue);
+ memAWrite(maxAddrBit downto 0) <= pc + 1;
+ memBAddr <= sp+1;
+ pc <= pc + memARead(maxAddrBit downto 0);
+ state <= State_ResyncDecode;
+ when Decoded_Emulate =>
+ sp <= sp - 1;
+ memAWriteEnable <= '1';
+ memAAddr <= sp - 1;
+ memAWrite <= (others => DontCareValue);
+ memAWrite(maxAddrBit downto 0) <= pc;
+ memBAddr <= sp;
+ memBWrite <= memARead;
+ memBWriteEnable <= '1';
+ -- The emulate address is:
+ -- 98 7654 3210
+ -- 0000 00aa aaa0 0000
+ pc <= (others => '0');
+ pc(9 downto 5) <= opcode(4 downto 0);
+ state <= State_ResyncDecode;
+ when Decoded_AddSP =>
+ if spOffset=0 then
+ -- avoid address line crashes...
+ -- FIX!!! is this an issue?
+ -- oh-well. While we are at it, we've got a faster
+ -- shift operation without updating the toolchain.
+ memAWriteEnable <= '1';
+ memAAddr <= sp;
+ memAWrite <= memARead + memARead;
+ memBAddr <= sp+1;
+ else
+ memAWriteEnable <= '1';
+ memAAddr <= sp;
+ memAWrite <= memARead;
+ memBAddr <= sp+spOffset;
+ state <= State_AddSP;
+ end if;
+ when Decoded_Break =>
+ report "Break instruction encountered" severity failure;
+ break <= '1';
+ when Decoded_PushPC =>
+ memAWriteEnable <= '1';
+ memAAddr <= sp - 1;
+ sp <= sp - 1;
+ memAWrite <= (others => DontCareValue);
+ memAWrite(maxAddrBit downto 0) <= pc;
+ memBAddr <= sp;
+ memBWrite <= memARead;
+ memBWriteEnable <= '1';
+ when Decoded_PushSP =>
+ memAWriteEnable <= '1';
+ memAAddr <= sp - 1;
+ sp <= sp - 1;
+ memAWrite <= (others => DontCareValue);
+ memAWrite(maxAddrBit downto minAddrBit) <= sp;
+ memBAddr <= sp;
+ memBWrite <= memARead;
+ memBWriteEnable <= '1';
+ when Decoded_Pushspadd =>
+ memAWriteEnable <= '1';
+ memAAddr <= sp;
+ memAWrite <= (others => DontCareValue);
+ pushspaddTemp := memARead(maxAddrBit-minAddrBit downto 0);
+ memAWrite(maxAddrBit downto minAddrBit) <= sp+pushspaddTemp;
+ memBAddr <= sp+1;
+ when Decoded_PopPC =>
+ memAAddr <= sp;
+ pc <= memARead(maxAddrBit downto 0);
+ sp <= sp + 1;
+ state <= State_ResyncDecode;
+ when Decoded_AddIm =>
+ memAWriteEnable <= '1';
+ memAAddr <= sp;
+ tempVal(wordSize-1 downto 7) := (others => tOpcode(6));
+ tempVal(6 downto 0) := tOpcode(6 downto 0);
+ memAWrite <= memARead + tempVal;
+ memBAddr <= sp + 1;
+ pc <= pc + 2;
+ when Decoded_Add =>
+ memAWriteEnable <= '1';
+ memAWrite <= memARead + memBRead;
+ memAAddr <= sp + 1;
+ memBAddr <= sp + 2;
+ sp <= sp + 1;
+ when Decoded_Or =>
+ sp <= sp + 1;
+ memAWriteEnable <= '1';
+ memAWrite <= memARead or memBRead;
+ memAWriteEnable <= '1';
+ memAAddr <= sp + 1;
+ memBAddr <= sp + 2;
+ when Decoded_And =>
+ sp <= sp + 1;
+ memAWriteEnable <= '1';
+ memAWrite <= memARead and memBRead;
+ memAWriteEnable <= '1';
+ memAAddr <= sp + 1;
+ memBAddr <= sp + 2;
+ when Decoded_Load =>
+ if (memARead(ioBit)='1') then
+ io_addr <= memARead(maxAddrBit downto minAddrBit);
+ io_readEnable <= '1';
+ state <= State_ReadIO;
+ else
+ memAAddr <= memARead(maxAddrBit downto minAddrBit);
+ memBAddr <= sp + 1;
+ end if;
+ when Decoded_Swap =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite(wordSize/2-1 downto 0) <= memARead(wordSize-1 downto wordSize/2);
+ memAWrite(wordSize-1 downto wordSize/2) <= memARead(wordSize/2-1 downto 0);
+ memBAddr <= sp + 1;
+ when Decoded_Not =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite <= not memARead;
+ memBAddr <= sp + 1;
+ when Decoded_Flip =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ for i in 0 to wordSize-1 loop
+ memAWrite(i) <= memARead(wordSize-1-i);
+ end loop;
+ memBAddr <= sp + 1;
+ when Decoded_Lshift2 =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite(1 downto 0) <= (others => '0');
+ memAWrite(wordSize-1 downto 2) <= memARead(wordSize-1-2 downto 0);
+ memBAddr <= sp + 1;
+ pc <= pc + 2;
+ when Decoded_Store =>
+ sp <= sp + 2;
+ if (memARead(ioBit)='1') then
+ io_writeEnable <= '1';
+ io_addr <= memARead(maxAddrBit downto minAddrBit);
+ io_write <= memBRead(7 downto 0);
+ state <= State_WriteIO;
+ else
+ memAWriteEnable <= '1';
+ memAAddr <= memARead(maxAddrBit downto minAddrBit);
+ memAWrite <= memBRead;
+ state <= State_ResyncDecode;
+ end if;
+ when Decoded_PopSP =>
+ sp <= memARead(maxAddrBit downto minAddrBit);
+ state <= State_ResyncDecode;
+ when Decoded_Ashiftleft =>
+ memAWrite(wordSize-1 downto conv_integer(memARead(wordPower-1 downto 0))) <=
+ memBRead(wordSize-conv_integer(memARead(wordPower-1 downto 0))-1 downto 0);
+ if memARead(wordPower-1 downto 0)/=0 then
+ memAWrite(conv_integer(memARead(wordPower-1 downto 0))-1 downto 0) <= (others => '0');
+ end if;
+ memAWriteEnable <= '1';
+ memAAddr <= sp + 1;
+ memBAddr <= sp + 2;
+ sp <= sp + 1;
+ when Decoded_Ashiftright | Decoded_Lshiftright =>
+ memAWrite(wordSize-1-conv_integer(memARead(wordPower-1 downto 0)) downto 0) <=
+ memBRead(wordSize-1 downto conv_integer(memARead(wordPower-1 downto 0)));
+ if memARead(wordPower-1 downto 0)/=0 then
+ if decodedOpcode=Decoded_Ashiftright and memBRead(wordSize-1)='1' then
+ memAWrite(wordSize-1 downto wordSize-conv_integer(memARead(wordPower-1 downto 0))-1) <= (others => '1');
+ else
+ memAWrite(wordSize-1 downto wordSize-conv_integer(memARead(wordPower-1 downto 0))-1) <= (others => '0');
+ end if;
+ end if;
+ memAWriteEnable <= '1';
+ memAAddr <= sp + 1;
+ memBAddr <= sp + 2;
+ sp <= sp + 1;
+ when Decoded_Eqbranch =>
+ sp <= sp + 2;
+ if (memBRead=0) then
+ pc <= memARead(maxAddrBit downto 0) + pc;
+ end if;
+ state <= State_ResyncDecode;
+ when Decoded_Neqbranch =>
+ sp <= sp + 2;
+ if (memBRead/=0) then
+ pc <= memARead(maxAddrBit downto 0) + pc;
+ end if;
+ state <= State_ResyncDecode;
+ when Decoded_Eq =>
+ sp <= sp + 1;
+ memAWrite <= (others => '0');
+ if (memARead=memBRead) then
+ memAWrite(0) <= '1';
+ end if;
+ memAAddr <= sp + 1;
+ memAWriteEnable <= '1';
+ memBAddr <= sp + 2;
+ when Decoded_Neq =>
+ sp <= sp + 1;
+ memAWrite <= (others => '0');
+ if (memARead/=memBRead) then
+ memAWrite(0) <= '1';
+ end if;
+ memAAddr <= sp + 1;
+ memAWriteEnable <= '1';
+ memBAddr <= sp + 2;
+ when Decoded_Ulessthan =>
+ sp <= sp + 1;
+ memAWrite <= (others => '0');
+ if (memARead<memBRead) then
+ memAWrite(0) <= '1';
+ end if;
+ memAAddr <= sp + 1;
+ memAWriteEnable <= '1';
+ memBAddr <= sp + 2;
+ when Decoded_Ulessthanorequal =>
+ sp <= sp + 1;
+ memAWrite <= (others => '0');
+ if (memARead<=memBRead) then
+ memAWrite(0) <= '1';
+ end if;
+ memAAddr <= sp + 1;
+ memAWriteEnable <= '1';
+ memBAddr <= sp + 2;
+ when Decoded_Lessthan =>
+ sp <= sp + 1;
+ memAWrite <= (others => '0');
+ compareA := signed(memARead);
+ compareB := signed(memBRead);
+ if (compareA<compareB) then
+ memAWrite(0) <= '1';
+ end if;
+ memAAddr <= sp + 1;
+ memAWriteEnable <= '1';
+ memBAddr <= sp + 2;
+ when Decoded_Lessthanorequal =>
+ sp <= sp + 1;
+ memAWrite <= (others => '0');
+ compareA := signed(memARead);
+ compareB := signed(memBRead);
+ if (compareA<=compareB) then
+ memAWrite(0) <= '1';
+ end if;
+ memAAddr <= sp + 1;
+ memAWriteEnable <= '1';
+ memBAddr <= sp + 2;
+ when Decoded_Loadb =>
+ byteSelect <= memARead(minAddrBit-1 downto 0);
+ memAAddr <= memARead(maxAddrBit downto minAddrBit);
+ state <= State_LoadByte1;
+ when Decoded_Storeb =>
+ sp <= sp + 2;
+ byteSelect <= memARead(minAddrBit-1 downto 0);
+ storeByte <= memBRead(7 downto 0);
+ memAAddr <= memARead(maxAddrBit downto minAddrBit);
+ memBAddr <= sp;
+ state <= State_StoreByte1;
+ when Decoded_Mult16x16 =>
+ mult1 <= memARead(wordSize/2-1 downto 0);
+ mult2 <= memBRead(wordSize/2-1 downto 0);
+ sp <= sp + 1;
+ state <= State_Mult1;
+ when others =>
+ -- nop. Here we persist whatever was loaded into
+ -- memARead
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite <= memARead;
+ memBAddr <= sp + 1;
+
+ end case;
+ when State_ReadIO =>
+ state <= State_ReadIODone;
+ when State_ReadIODone =>
+ if (io_busy = '0') then
+ state <= State_ResyncDecode;
+ memAWriteEnable <= '1';
+ memAWrite <= (others => '0');
+ memAWrite(7 downto 0) <= io_read;
+ memAAddr <= sp;
+ end if;
+ when State_WriteIO =>
+ state <= State_WriteIODone;
+ when State_WriteIODone =>
+ if (io_busy = '0') then
+ state <= State_ResyncDecode;
+ end if;
+ when State_ResyncDecode =>
+ memAAddr <= pc(maxAddrBit downto minAddrBit);
+ nextPC:=pc+1;
+ memBAddr <= nextPC(maxAddrBit downto minAddrBit);
+ state <= State_ResyncStack;
+ when State_ResyncStack =>
+ memAAddr <= sp;
+ memBAddr <= sp+1;
+ state <= State_Decode;
+ when State_AddSP =>
+ memAAddr <= pc(maxAddrBit downto minAddrBit);
+ nextPC:=pc+1;
+ memBAddr <= nextPC(maxAddrBit downto minAddrBit);
+ state <= State_Add;
+ when State_Add =>
+ memAWriteEnable <= '1';
+ memAWrite <= memARead + memBRead;
+ memAAddr <= sp;
+ memBAddr <= sp + 1;
+ state <= State_Decode;
+ when State_LoadByte1 =>
+ memAAddr <= pc(maxAddrBit downto minAddrBit);
+ nextPC:=pc+1;
+ memBAddr <= nextPC(maxAddrBit downto minAddrBit);
+ state <= State_LoadByte2;
+ when State_LoadByte2 =>
+ memAWriteEnable <= '1';
+ memAAddr <= sp;
+ memAWrite <= (others => '0');
+ case byteSelect is
+ when "00" => memAWrite(7 downto 0) <= memARead(31 downto 24);
+ when "01" => memAWrite(7 downto 0) <= memARead(23 downto 16);
+ when "10" => memAWrite(7 downto 0) <= memARead(15 downto 8);
+ when others => memAWrite(7 downto 0) <= memARead(7 downto 0);
+ end case;
+ memBAddr <= sp + 1;
+ state <= State_Decode;
+ when State_StoreByte1 =>
+ state <= State_StoreByte2;
+ when State_StoreByte2 =>
+ memAWriteEnable <= '1';
+ memAAddr <= memBRead(maxAddrBit downto minAddrBit);
+ memAWrite <= memARead;
+ case byteSelect is
+ when "00" => memAWrite(31 downto 24) <= storeByte;
+ when "01" => memAWrite(23 downto 16) <= storeByte;
+ when "10" => memAWrite(15 downto 8) <= storeByte;
+ when others => memAWrite(7 downto 0) <= storeByte;
+ end case;
+ state <= State_ResyncDecode;
+ when State_Mult1 =>
+ memAAddr <= pc(maxAddrBit downto minAddrBit);
+ nextPC:=pc+1;
+ memBAddr <= nextPC(maxAddrBit downto minAddrBit);
+ state <= State_Mult2;
+ when State_Mult2 =>
+ memAWriteEnable <= '1';
+ memAWrite <= multResult;
+ memAAddr <= sp;
+ memBAddr <= sp + 1;
+ state <= State_Decode;
+
+ when others =>
+ null;
+ end case;
+ end if;
+ end process;
+
+
+
+end behave;
diff --git a/zpu/hdl/zpu3/src/zpuio.vhd b/zpu/hdl/zpu3/src/zpuio.vhd
new file mode 100644
index 0000000..96e9aea
--- /dev/null
+++ b/zpu/hdl/zpu3/src/zpuio.vhd
@@ -0,0 +1,180 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library zylin;
+use zylin.arm7.all;
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+entity zpuio is
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ clk_status : in std_logic_vector(2 downto 0);
+ cpu_din : in std_logic_vector(15 downto 0);
+ cpu_a : in std_logic_vector(20 downto 0);
+ cpu_we : in std_logic_vector(1 downto 0);
+ cpu_re : in std_logic;
+ cpu_dout : inout std_logic_vector(15 downto 0));
+end zpuio;
+
+architecture behave of zpuio is
+
+signal timer_read : std_logic_vector(7 downto 0);
+--signal timer_write : std_logic_vector(7 downto 0);
+signal timer_we : std_logic;
+
+
+signal io_busy : std_logic;
+signal io_read : std_logic_vector(7 downto 0);
+signal io_write : std_logic_vector(7 downto 0);
+signal io_addr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal io_writeEnable : std_logic;
+signal io_readEnable : std_logic;
+
+signal din : std_logic_vector(7 downto 0);
+signal dout : std_logic_vector(7 downto 0);
+signal adr : std_logic_vector(15 downto 0);
+signal break : std_logic;
+signal we : std_logic;
+signal re : std_logic;
+
+
+-- uart forwarding...
+
+signal uartTXPending : std_logic;
+signal uartTXCleared : std_logic;
+signal uartData : std_logic_vector(7 downto 0);
+
+signal readingTimer : std_logic;
+begin
+
+ timerinst: timer port map (
+ clk => cpu_clk,
+ areset => areset,
+ we => timer_we,
+ din => io_write,
+ adr => io_addr(4 downto 2),
+ dout => timer_read);
+
+ zpu: zpu_top port map (
+ clk => cpu_clk ,
+ areset => areset,
+ io_busy => io_busy,
+ io_writeEnable => io_writeEnable,
+ io_readEnable => io_readEnable,
+ io_write => io_write,
+ io_read => io_read,
+ io_addr => io_addr,
+ interrupt => '0'
+ --,
+-- break => cpu_fiq_p
+);
+
+
+ -- Read/write are on different addresses
+ -- The registers are 8 bits and mapped to bit[7:0]
+ --
+ -- 0xC000 Write: Writes to UART TX FIFO (4 byte FIFO)
+ -- Read : Reads from UART RX FIFO (4 byte FIFO)
+ -- 0xC004 Read : UART status register
+ -- Bit 0 = RX FIFO empty
+ -- Bit 1 = TX FIFO full
+ -- 0xA000 Skrive: LED's (8 stk.)
+
+ -- 0x9000 Write: bit 0: 1= reset counter
+ -- 0= counter running
+ -- bit 1: 1= sample counter (when set to 1)
+ -- 0=not used
+ -- Read : counter bit[7:0]
+ -- 0x9004 Read: counter bit [15:8]
+ -- 0x9008 Read: counter bit [23:16]
+ -- 0x900C Read: counter bit [31:24]
+ -- 0x9010 Read: counter bit [39:32]
+ -- 0x9014 Read: counter bit [47:40]
+ -- 0x9018 Read: counter bit [55:48]
+ -- 0x901C Read: counter bit [63:56]
+ --
+ -- 0x8800 Read: unsigned 8-bit integer with FPGA frequency (in MHz)
+
+ fauxUart:
+ process(cpu_clk, areset)
+ begin
+ if areset = '1' then
+ io_busy <= '0';
+ uartTXPending <= '0';
+ timer_we <= '0';
+ io_busy <= '1';
+ uartData <= x"58"; -- 'X'
+ readingTimer <= '0';
+ elsif (cpu_clk'event and cpu_clk = '1') then
+ timer_we <= '0';
+ io_busy <= '1';
+ if uartTXCleared = '1' then
+ uartTXPending <= '0';
+ end if;
+
+ if io_writeEnable = '1' then
+ if io_addr=x"1000" then
+ -- Write to UART
+ uartData <= io_write;
+ uartTXPending <= '1';
+ io_busy <= '0';
+ elsif io_addr(12)='1' then
+ timer_we <= '1';
+ io_busy <= '0';
+ else
+ report "Illegal IO write" severity failure;
+ end if;
+ end if;
+ if (io_readEnable = '1') then
+ if io_addr=x"1001" then
+ io_read <= (0=>'1', -- recieve empty
+ 1 => uartTXPending, -- tx full
+ others => '0');
+ io_busy <= '0';
+ elsif io_addr(12)='1' then
+ readingTimer <= '1';
+ io_busy <= '1';
+ elsif io_addr(11)='1' then
+ io_read <= ZPU_Frequency;
+ io_busy <= '0';
+ else
+ report "Illegal IO read" severity failure;
+ end if;
+
+ else
+ if (readingTimer = '1') then
+ readingTimer <= '0';
+ io_read <= timer_read;
+ io_busy <= '0';
+ else
+ io_read <= (others => '1');
+ end if;
+ end if;
+ end if;
+ end process;
+
+
+ forwardUARTOutputToARM:
+ process(cpu_clk, areset)
+ begin
+ if areset = '1' then
+ uartTXCleared <= '0';
+ elsif (cpu_clk = '1' and cpu_clk'event) then
+ if cpu_we(0) = '1' and cpu_a(3 downto 1) = "000" then
+ uartTXCleared <= cpu_din(0);
+ else
+ uartTXCleared <= uartTXCleared;
+ end if;
+ end if;
+ end process;
+
+ cpu_dout(7 downto 0) <= uartData when (cpu_re = '1' and cpu_a(3 downto 1) = "001") else (others => 'Z');
+ cpu_dout <= (0 => uartTXPending, others => '0') when (cpu_re = '1' and cpu_a(3 downto 1) = "000") else (others => 'Z');
+
+
+
+end behave;
diff --git a/zpu/hdl/zpu3/src/zpupkg.vhd b/zpu/hdl/zpu3/src/zpupkg.vhd
new file mode 100644
index 0000000..a904b11
--- /dev/null
+++ b/zpu/hdl/zpu3/src/zpupkg.vhd
@@ -0,0 +1,130 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_ARITH.all;
+
+library zylin;
+use zylin.zpu_config.all;
+
+package zpupkg is
+
+ component dualport_ram is
+ port (clk : in std_logic;
+ memAWriteEnable : in std_logic;
+ memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memAWrite : in std_logic_vector(wordSize-1 downto 0);
+ memARead : out std_logic_vector(wordSize-1 downto 0);
+ memBWriteEnable : in std_logic;
+ memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memBWrite : in std_logic_vector(wordSize-1 downto 0);
+ memBRead : out std_logic_vector(wordSize-1 downto 0));
+ end component;
+
+
+ component trace is
+ port(
+ clk : in std_logic;
+ begin_inst : in std_logic;
+ pc : in std_logic_vector(maxAddrBit downto 0);
+ opcode : in std_logic_vector(7 downto 0);
+ sp : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memA : in std_logic_vector(wordSize-1 downto 0);
+ memB : in std_logic_vector(wordSize-1 downto 0);
+ busy : in std_logic
+ );
+ end component;
+
+ component zpu_top is
+ Port ( clk : in std_logic;
+ areset : in std_logic;
+ io_busy : in std_logic;
+ io_read : in std_logic_vector(7 downto 0);
+ io_write : out std_logic_vector(7 downto 0);
+ io_addr : out std_logic_vector(maxAddrBit downto minAddrBit);
+ io_writeEnable : out std_logic;
+ io_readEnable : out std_logic;
+ interrupt : in std_logic;
+ break : out std_logic);
+ end component;
+
+
+ component timer is
+ port(
+ clk : in std_logic;
+ areset : in std_logic;
+ we : in std_logic;
+ din : in std_logic_vector(7 downto 0);
+ adr : in std_logic_vector(2 downto 0);
+ dout : out std_logic_vector(7 downto 0));
+ end component;
+
+
+ component zpuio is
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ clk_status : in std_logic_vector(2 downto 0);
+ cpu_din : in std_logic_vector(15 downto 0);
+ cpu_a : in std_logic_vector(20 downto 0);
+ cpu_we : in std_logic_vector(1 downto 0);
+ cpu_re : in std_logic;
+ cpu_dout : inout std_logic_vector(15 downto 0));
+ end component;
+
+
+ -- opcode decode constants
+ constant OpCode_Im : std_logic_vector(7 downto 7) := "1";
+ constant OpCode_StoreSP : std_logic_vector(7 downto 5) := "010";
+ constant OpCode_LoadSP : std_logic_vector(7 downto 5) := "011";
+ constant OpCode_Emulate : std_logic_vector(7 downto 5) := "001";
+ constant OpCode_AddSP : std_logic_vector(7 downto 4) := "0001";
+ constant OpCode_Short : std_logic_vector(7 downto 4) := "0000";
+
+ constant OpCode_Break : std_logic_vector(3 downto 0) := "0000";
+ constant OpCode_Shiftleft: std_logic_vector(3 downto 0) := "0001";
+ constant OpCode_PushSP : std_logic_vector(3 downto 0) := "0010";
+ constant OpCode_PushInt : std_logic_vector(3 downto 0) := "0011";
+
+ constant OpCode_PopPC : std_logic_vector(3 downto 0) := "0100";
+ constant OpCode_Add : std_logic_vector(3 downto 0) := "0101";
+ constant OpCode_And : std_logic_vector(3 downto 0) := "0110";
+ constant OpCode_Or : std_logic_vector(3 downto 0) := "0111";
+
+ constant OpCode_Load : std_logic_vector(3 downto 0) := "1000";
+ constant OpCode_Not : std_logic_vector(3 downto 0) := "1001";
+ constant OpCode_Flip : std_logic_vector(3 downto 0) := "1010";
+ constant OpCode_Nop : std_logic_vector(3 downto 0) := "1011";
+
+ constant OpCode_Store : std_logic_vector(3 downto 0) := "1100";
+ constant OpCode_PopSP : std_logic_vector(3 downto 0) := "1101";
+ constant OpCode_Compare : std_logic_vector(3 downto 0) := "1110";
+ constant OpCode_PopInt : std_logic_vector(3 downto 0) := "1111";
+
+ constant OpCode_Lessthan : std_logic_vector(5 downto 0) := conv_std_logic_vector(36, 6);
+ constant OpCode_Lessthanorequal : std_logic_vector(5 downto 0) := conv_std_logic_vector(37, 6);
+ constant OpCode_Ulessthan : std_logic_vector(5 downto 0) := conv_std_logic_vector(38, 6);
+ constant OpCode_Ulessthanorequal : std_logic_vector(5 downto 0) := conv_std_logic_vector(39, 6);
+
+ constant OpCode_Swap : std_logic_vector(5 downto 0) := conv_std_logic_vector(40, 6);
+
+ constant OpCode_Lshiftright : std_logic_vector(5 downto 0) := conv_std_logic_vector(42, 6);
+ constant OpCode_Ashiftleft : std_logic_vector(5 downto 0) := conv_std_logic_vector(43, 6);
+ constant OpCode_Ashiftright : std_logic_vector(5 downto 0) := conv_std_logic_vector(44, 6);
+
+ constant OpCode_Eq : std_logic_vector(5 downto 0) := conv_std_logic_vector(46, 6);
+ constant OpCode_Neq : std_logic_vector(5 downto 0) := conv_std_logic_vector(47, 6);
+
+ constant OpCode_Sub : std_logic_vector(5 downto 0) := conv_std_logic_vector(49, 6);
+ constant OpCode_Loadb : std_logic_vector(5 downto 0) := conv_std_logic_vector(51, 6);
+ constant OpCode_Storeb : std_logic_vector(5 downto 0) := conv_std_logic_vector(52, 6);
+
+ constant OpCode_Eqbranch : std_logic_vector(5 downto 0) := conv_std_logic_vector(55, 6);
+ constant OpCode_Neqbranch : std_logic_vector(5 downto 0) := conv_std_logic_vector(56, 6);
+
+ constant OpCode_Pushspadd : std_logic_vector(5 downto 0) := conv_std_logic_vector(61, 6);
+ constant OpCode_Mult16x16 : std_logic_vector(5 downto 0) := conv_std_logic_vector(62, 6);
+ constant OpCode_Callpcrel : std_logic_vector(5 downto 0) := conv_std_logic_vector(63, 6);
+
+
+
+ constant OpCode_Size : integer := 8;
+
+end zpupkg;
diff --git a/zpu/hdl/zpu4/dummyfpgalib/arm7/src/arm7pkg.vhd b/zpu/hdl/zpu4/dummyfpgalib/arm7/src/arm7pkg.vhd
new file mode 100644
index 0000000..95fbc18
--- /dev/null
+++ b/zpu/hdl/zpu4/dummyfpgalib/arm7/src/arm7pkg.vhd
@@ -0,0 +1,31 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+package arm7 is
+
+ component arm7wb
+ generic(
+ simulate_io_time : boolean := false);
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ cpu_clk_2x : in std_logic;
+ cpu_a_p : in std_logic_vector(20 downto 0);
+ cpu_wr_n_p : in std_logic_vector(1 downto 0);
+ cpu_cs_n_p : in std_logic_vector(3 downto 1);
+ cpu_oe_n_p : in std_logic;
+ cpu_d_p : inout std_logic_vector(15 downto 0);
+ cpu_irq_p : out std_logic_vector(1 downto 0);
+ cpu_fiq_p : out std_logic;
+ cpu_wait_n_p : out std_logic;
+
+ cpu_din : out std_logic_vector(15 downto 0);
+ cpu_a : out std_logic_vector(20 downto 0);
+ cpu_we : out std_logic_vector(1 downto 0);
+ cpu_re : out std_logic;
+ cpu_dout : in std_logic_vector(15 downto 0));
+ end component;
+
+end arm7;
+
+ \ No newline at end of file
diff --git a/zpu/hdl/zpu4/dummyfpgalib/arm7/src/arm7wb.vhd b/zpu/hdl/zpu4/dummyfpgalib/arm7/src/arm7wb.vhd
new file mode 100644
index 0000000..55b8125
--- /dev/null
+++ b/zpu/hdl/zpu4/dummyfpgalib/arm7/src/arm7wb.vhd
@@ -0,0 +1,213 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+entity arm7wb is
+ generic(
+ simulate_io_time : boolean := false);
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ cpu_clk_2x : in std_logic;
+ cpu_a_p : in std_logic_vector(20 downto 0);
+ cpu_wr_n_p : in std_logic_vector(1 downto 0);
+ cpu_cs_n_p : in std_logic_vector(3 downto 1);
+ cpu_oe_n_p : in std_logic;
+ cpu_d_p : inout std_logic_vector(15 downto 0);
+ cpu_irq_p : out std_logic_vector(1 downto 0);
+ cpu_fiq_p : out std_logic;
+ cpu_wait_n_p : out std_logic;
+
+ cpu_din : out std_logic_vector(15 downto 0);
+ cpu_a : out std_logic_vector(20 downto 0);
+ cpu_we : out std_logic_vector(1 downto 0);
+ cpu_re : out std_logic;
+ cpu_dout : in std_logic_vector(15 downto 0));
+end arm7wb;
+
+architecture behave of arm7wb is
+
+attribute keep : string;
+
+signal cpu_oe_n : std_logic;
+signal cpu_fiq : std_logic;
+signal cpu_wait_n : std_logic;
+signal cpu_clk_toggle : std_logic;
+signal cpu_clk_smp1 : std_logic;
+signal cpu_clk_smp2 : std_logic;
+signal cpu_clk_phase : std_logic;
+signal cpu_oe_n_del : std_logic;
+signal cpu_a_smp : std_logic_vector(20 downto 0);
+signal cpu_d_smp : std_logic_vector(15 downto 0);
+
+signal int_oe_n : std_logic_vector(15 downto 0);
+attribute keep of int_oe_n:signal is "true";
+
+signal cpu_irq : std_logic_vector(1 downto 0);
+signal cpu_wr_n : std_logic_vector(1 downto 0);
+signal cpu_cs_n : std_logic_vector(3 downto 1);
+
+signal dout : std_logic_vector(15 downto 0);
+signal cpu_d_p_out : std_logic_vector(15 downto 0);
+signal read_cnt : std_logic_vector(1 downto 0);
+
+signal cpu_wr_n_p_del : std_logic_vector(1 downto 0);
+signal cpu_a_p_del : std_logic_vector(20 downto 0);
+signal cpu_d_p_del : std_logic_vector(15 downto 0);
+signal cpu_cs_n_p_del : std_logic_vector(3 downto 1);
+signal cpu_oe_n_p_del : std_logic;
+
+constant Sim_Delay : time := 0.5 ns;
+constant Clock_2_Out : time := 5.5 ns;
+constant Input_Setup : time := 2.5 ns;
+
+begin
+
+ cpu_wait_n <= '1';
+ cpu_fiq <= '1';
+ cpu_irq <= "11";
+
+ iotimingon:
+ if simulate_io_time generate
+ begin
+ cpu_wr_n_p_del <= "XX" after 0 ns, cpu_wr_n_p after Input_Setup;
+ cpu_a_p_del <= "XXXXXXXXXXXXXXXXXXXXX" after 0 ns, cpu_a_p after Input_Setup;
+ cpu_d_p_del <= "XXXXXXXXXXXXXXXX" after 0 ns, cpu_d_p after Input_Setup;
+ cpu_cs_n_p_del <= "XXX" after 0 ns, cpu_cs_n_p after Input_Setup;
+ cpu_oe_n_p_del <= 'X' after 0 ns, cpu_oe_n_p after Input_Setup;
+ end generate;
+
+ iotimingoff:
+ if not simulate_io_time generate
+ begin
+ cpu_wr_n_p_del <= cpu_wr_n_p;
+ cpu_a_p_del <= cpu_a_p;
+ cpu_d_p_del <= cpu_d_p;
+ cpu_cs_n_p_del <= cpu_cs_n_p;
+ cpu_oe_n_p_del <= cpu_oe_n_p;
+ end generate;
+
+ process(cpu_clk, areset) -- Toggle FF with 1x clock to find phase
+ begin
+ if areset = '1' then
+ cpu_clk_toggle <= '0';
+ elsif (cpu_clk'event and cpu_clk = '1') then
+ cpu_clk_toggle <= not(cpu_clk_toggle);
+ end if;
+ end process;
+
+ process(cpu_clk_2x, areset) -- Find phase relationsship between 1x and 2x clock
+ begin
+ if areset = '1' then
+ cpu_clk_smp1 <= '0';
+ cpu_clk_smp2 <= '1';
+ cpu_clk_phase <= '0';
+ elsif (cpu_clk_2x'event and cpu_clk_2x = '1') then
+ cpu_clk_smp1 <= cpu_clk_toggle;
+ cpu_clk_smp2 <= cpu_clk_smp1;
+ if cpu_clk_smp1 = '1' and cpu_clk_smp2 = '0' then
+ cpu_clk_phase <= '0' after Sim_Delay;
+ else
+ cpu_clk_phase <= not(cpu_clk_phase) after Sim_Delay;
+ end if;
+ end if;
+ end process;
+
+ process(cpu_clk_2x, areset) -- Sample input signals
+ begin
+ if areset = '1' then
+ cpu_oe_n <= '1';
+ cpu_a_smp <= "000000000000000000000";
+ cpu_d_smp <= "0000000000000000";
+ cpu_wr_n <= "11";
+ cpu_cs_n <= "111";
+ elsif (cpu_clk_2x = '1' and cpu_clk_2x'event) then
+ cpu_oe_n <= cpu_oe_n_p_del after Sim_Delay;
+ cpu_a_smp <= cpu_a_p_del after Sim_Delay;
+ cpu_d_smp <= cpu_d_p_del after Sim_Delay;
+ cpu_wr_n <= cpu_wr_n_p_del after Sim_Delay;
+ cpu_cs_n <= cpu_cs_n_p_del after Sim_Delay;
+ end if;
+ end process;
+
+ cpu_d_out:
+ for i in 0 to 15 generate
+ begin
+ process(cpu_clk_2x, areset)
+ begin
+ if areset = '1' then
+ cpu_d_p(i) <= 'Z';
+ elsif (cpu_clk_2x'event and cpu_clk_2x = '1') then
+ if int_oe_n(i) = '0' then
+ cpu_d_p(i) <= cpu_d_p_out(i) after Clock_2_Out;
+ else
+ cpu_d_p(i) <= 'Z' after Clock_2_Out;
+ end if;
+ end if;
+ end process;
+ end generate;
+
+ process(cpu_clk, areset) -- Clocked output pins
+ begin
+ if areset = '1' then
+ cpu_d_p_out <= "1111111111111111";
+ cpu_wait_n_p <= '1';
+ cpu_irq_p <= "11";
+ cpu_fiq_p <= '1';
+ elsif (cpu_clk = '1' and cpu_clk'event) then
+ cpu_d_p_out <= cpu_dout;
+ cpu_wait_n_p <= '1';
+ cpu_irq_p <= "11";
+ cpu_fiq_p <= '1';
+ end if;
+ end process;
+
+ process(cpu_clk, areset) -- Generate control signals
+ begin
+ if areset = '1' then
+ int_oe_n <= "1111111111111111";
+ read_cnt <= "00";
+ cpu_we <= "00";
+ cpu_re <= '0';
+ cpu_a <= "000000000000000000000";
+ cpu_din <= "0000000000000000";
+ elsif (cpu_clk = '1' and cpu_clk'event) then
+
+ cpu_a <= cpu_a_smp;
+ cpu_din <= cpu_d_smp;
+
+ cpu_oe_n_del <= cpu_oe_n;
+
+ if cpu_cs_n(1) = '1' then
+ read_cnt <= "00";
+ else
+ read_cnt <= read_cnt + '1';
+ end if;
+
+ if read_cnt = "01" and cpu_cs_n(1) = '0' and cpu_wr_n(0) = '0' then
+ cpu_we(0) <= '1';
+ else
+ cpu_we(0) <= '0';
+ end if;
+
+ if read_cnt = "01" and cpu_cs_n(1) = '0' and cpu_wr_n(1) = '0' then
+ cpu_we(1) <= '1';
+ else
+ cpu_we(1) <= '0';
+ end if;
+
+ if read_cnt = "00" and cpu_cs_n(1) = '0' and cpu_oe_n = '0' then
+ cpu_re <= '1';
+ else
+ cpu_re <= '0';
+ end if;
+
+ if read_cnt = "01" and cpu_cs_n(1) = '0' and cpu_oe_n = '0' then
+ int_oe_n <= "0000000000000000";
+ else
+ int_oe_n <= "1111111111111111";
+ end if;
+
+ end if;
+ end process;
+
+end behave;
diff --git a/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/simscripts/ddr_tb.do b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/simscripts/ddr_tb.do
new file mode 100644
index 0000000..d2c22cf
--- /dev/null
+++ b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/simscripts/ddr_tb.do
@@ -0,0 +1,17 @@
+vlib zylin
+vcom -93 -explicit -work zylin ../ddrsdram/src/ddr_pkg.vhd
+vcom -93 -explicit -work zylin ../ddrsdram/src/ddr_top.vhd
+vcom -93 -explicit -work zylin ../ddrsdram/src/mt46v16m16.vhd
+vcom -93 -explicit -work zylin ../ddrsdram/src/ddr_tb.vhd
+vlib work
+vsim -t 1ps zylin.ddr_tb
+view wave
+view signals
+radix hex
+add wave *
+add wave sim:/ddr_tb/ddr_ctrl/*
+force -freeze sim:/ddr_tb/areset 1 0
+run 10 ns
+force -freeze sim:/ddr_tb/areset 0 0
+when sim:/ddr_tb/break_out stop
+run 10 ms \ No newline at end of file
diff --git a/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/simscripts/ddr_top.do b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/simscripts/ddr_top.do
new file mode 100644
index 0000000..31dd294
--- /dev/null
+++ b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/simscripts/ddr_top.do
@@ -0,0 +1,111 @@
+vlib zylin
+vcom -93 -explicit -work zylin ../ddrsdram/src/ddr_pkg.vhd
+vcom -93 -explicit -work zylin ../ddrsdram/src/ddr_top.vhd
+vlib work
+vsim -t 1ps zylin.ddr_top
+view wave
+view signals
+radix hex
+# Add wave signals
+
+add wave -divider "System"
+add wave sim:/ddr_top/areset
+add wave sim:/ddr_top/cpu_clk
+add wave sim:/ddr_top/cpu_clk_2x
+add wave sim:/ddr_top/cpu_clk_4x
+add wave sim:/ddr_top/ddr_in_clk
+add wave sim:/ddr_top/ddr_in_clk_2x
+
+add wave -divider "Ctrl interface"
+add wave sim:/ddr_top/cpu_clk
+add wave sim:/ddr_top/ddr_data_read
+add wave sim:/ddr_top/ddr_data_write
+add wave sim:/ddr_top/ddr_req
+add wave sim:/ddr_top/ddr_rd_wr_n
+add wave sim:/ddr_top/ddr_req_len
+add wave sim:/ddr_top/ddr_wr_mask
+add wave sim:/ddr_top/ddr_read_en
+add wave sim:/ddr_top/ddr_write_en
+add wave sim:/ddr_top/ddr_command
+add wave sim:/ddr_top/ddr_command_we
+
+add wave -divider "DDR interface"
+add wave sim:/ddr_top/sdr_clk_p
+add wave sim:/ddr_top/sdr_clk_n_p
+add wave sim:/ddr_top/cke_q_p
+add wave sim:/ddr_top/cs_qn_p
+add wave sim:/ddr_top/ras_qn_p
+add wave sim:/ddr_top/cas_qn_p
+add wave sim:/ddr_top/we_qn_p
+add wave sim:/ddr_top/dm_q_p
+add wave sim:/ddr_top/dqs_q_p
+add wave sim:/ddr_top/ba_q_p
+add wave sim:/ddr_top/sdr_a_p
+add wave sim:/ddr_top/sdr_d_p
+
+add wave -divider "Internal signals"
+add wave sim:/ddr_top/clk2_phase
+add wave sim:/ddr_top/clk4_phase
+add wave sim:/ddr_top/ddr_state
+add wave sim:/ddr_top/sdr_oe_n
+add wave sim:/ddr_top/sdr_smp
+add wave sim:/ddr_top/sdr_d
+
+
+# Add input signals
+force -freeze sim:/ddr_top/cpu_clk_4x 1 0, 0 {1.875 ns} -r 3.75
+run 100 ps
+force -freeze sim:/ddr_top/cpu_clk_2x 1 0, 0 {3.75 ns} -r 7.5
+run 100 ps
+force -freeze sim:/ddr_top/cpu_clk 1 0, 0 {7.5 ns} -r 15
+force -freeze sim:/ddr_top/ddr_in_clk 1 2ns, 0 {5.75 ns} -r 7.5
+force -freeze sim:/ddr_top/ddr_in_clk_2x 0 0.125ns, 1 {2 ns} -r 3.75
+
+force -freeze sim:/ddr_top/areset 1 0
+force -freeze sim:/ddr_top/ddr_command 0000 0
+force -freeze sim:/ddr_top/ddr_command_we 0 0
+force -freeze sim:/ddr_top/ddr_data_write 1234abcd 0
+force -freeze sim:/ddr_top/ddr_req 0 0
+force -freeze sim:/ddr_top/ddr_req_adr 000000 0
+force -freeze sim:/ddr_top/ddr_rd_wr_n 0 0
+force -freeze sim:/ddr_top/ddr_req_len 000 0
+force -freeze sim:/ddr_top/ddr_wr_mask 0 0
+
+# Start simulation
+run 45
+force -freeze sim:/ddr_top/areset 0 0
+run 92
+# DDR Command
+force -freeze sim:/ddr_top/ddr_command 000A 0
+force -freeze sim:/ddr_top/ddr_command_we 1 0
+run 15
+force -freeze sim:/ddr_top/ddr_command 0000 0
+force -freeze sim:/ddr_top/ddr_command_we 0 0
+run 90
+# DDR Read
+force -freeze sim:/ddr_top/ddr_req 1 0
+force -freeze sim:/ddr_top/ddr_req_adr 00ABCD 0
+force -freeze sim:/ddr_top/ddr_rd_wr_n 1 0
+force -freeze sim:/ddr_top/ddr_req_len 000 0
+force -freeze sim:/ddr_top/ddr_wr_mask 0 0
+run 15
+force -freeze sim:/ddr_top/ddr_req 0 0
+force -freeze sim:/ddr_top/ddr_req_adr 000000 0
+force -freeze sim:/ddr_top/ddr_rd_wr_n 0 0
+force -freeze sim:/ddr_top/ddr_req_len 000 0
+force -freeze sim:/ddr_top/ddr_wr_mask 0 0
+run 150
+# DDR Write
+force -freeze sim:/ddr_top/ddr_req 1 0
+force -freeze sim:/ddr_top/ddr_req_adr 00ABCD 0
+force -freeze sim:/ddr_top/ddr_rd_wr_n 0 0
+force -freeze sim:/ddr_top/ddr_req_len 000 0
+force -freeze sim:/ddr_top/ddr_wr_mask 0 0
+run 15
+force -freeze sim:/ddr_top/ddr_req 0 0
+force -freeze sim:/ddr_top/ddr_req_adr 000000 0
+force -freeze sim:/ddr_top/ddr_rd_wr_n 0 0
+force -freeze sim:/ddr_top/ddr_req_len 000 0
+force -freeze sim:/ddr_top/ddr_wr_mask 0 0
+run 180
+
diff --git a/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_pkg.vhd b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_pkg.vhd
new file mode 100644
index 0000000..95f4b8a
--- /dev/null
+++ b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_pkg.vhd
@@ -0,0 +1,90 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+package ddr is
+
+ component ddr_top
+ generic(
+ simulate_io_time : boolean := false);
+ port ( -- Asyncronous reset and clocks
+ areset : in std_logic;
+ cpu_clk : in std_logic;
+ cpu_clk_2x : in std_logic;
+ cpu_clk_4x : in std_logic;
+ ddr_in_clk : in std_logic;
+ ddr_in_clk_2x : in std_logic;
+
+ -- Command interface
+ ddr_command : in std_logic_vector(15 downto 0);
+ ddr_command_we : in std_logic;
+ refresh_en : in std_logic;
+
+
+ -- Data interface signals
+ ddr_data_read : out std_logic_vector(31 downto 0); -- Data read from DDR SDRAM
+ ddr_data_write : in std_logic_vector(35 downto 0); -- Data to be written to DDR SDRAM
+ ddr_req_adr : in std_logic_vector(23 downto 1); -- Request address
+ ddr_req : in std_logic; -- Request DDR SDRAM access
+ ddr_req_ack : out std_logic; -- Request acknowledge
+ ddr_busy : out std_logic; -- Request acknowledge
+ ddr_rd_wr_n : in std_logic; -- Access type 1=READ, 0=WRITE
+ ddr_req_len : in std_logic; -- Number of 16-bits words to transfer (0=2, 1=8)
+ ddr_read_en : out std_logic; -- Enable signal for read data
+ ddr_write_en : out std_logic; -- Enable (read) signal for data write
+
+ -- DDR SDRAM Signals
+ sdr_clk_p : out std_logic; -- ddr_sdram_clock
+ sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
+ cke_q_p : out std_logic; -- clock enable
+ cs_qn_p : out std_logic; -- /chip select
+ ras_qn_p : inout std_logic; -- /ras
+ cas_qn_p : inout std_logic; -- /cas
+ we_qn_p : inout std_logic; -- /write enable
+ dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
+ dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
+ ba_q_p : out std_logic_vector(1 downto 0); -- bank select
+ sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
+ sdr_d_p : inout std_logic_vector(15 downto 0)); -- bidir data bus
+ end component;
+
+ component MT46V16M16
+ GENERIC ( -- Timing for -75Z CL2
+ tCK : TIME := 7.500 ns;
+ tCH : TIME := 3.375 ns; -- 0.45*tCK
+ tCL : TIME := 3.375 ns; -- 0.45*tCK
+ tDH : TIME := 0.500 ns;
+ tDS : TIME := 0.500 ns;
+ tIH : TIME := 0.900 ns;
+ tIS : TIME := 0.900 ns;
+ tMRD : TIME := 15.000 ns;
+ tRAS : TIME := 40.000 ns;
+ tRAP : TIME := 20.000 ns;
+ tRC : TIME := 65.000 ns;
+ tRFC : TIME := 75.000 ns;
+ tRCD : TIME := 20.000 ns;
+ tRP : TIME := 20.000 ns;
+ tRRD : TIME := 15.000 ns;
+ tWR : TIME := 15.000 ns;
+ addr_bits : INTEGER := 13;
+ data_bits : INTEGER := 16;
+ cols_bits : INTEGER := 9
+ );
+ PORT (
+ Dq : INOUT STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0) := (OTHERS => 'Z');
+ Dqs : INOUT STD_LOGIC_VECTOR (1 DOWNTO 0) := "ZZ";
+ Addr : IN STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0);
+ Ba : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
+ Clk : IN STD_LOGIC;
+ Clk_n : IN STD_LOGIC;
+ Cke : IN STD_LOGIC;
+ Cs_n : IN STD_LOGIC;
+ Ras_n : IN STD_LOGIC;
+ Cas_n : IN STD_LOGIC;
+ We_n : IN STD_LOGIC;
+ Dm : IN STD_LOGIC_VECTOR (1 DOWNTO 0)
+ );
+ end component;
+
+end ddr;
+ \ No newline at end of file
diff --git a/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_tb.vhd b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_tb.vhd
new file mode 100644
index 0000000..5666532
--- /dev/null
+++ b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_tb.vhd
@@ -0,0 +1,301 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+library zylin;
+use zylin.ddr.all;
+
+entity ddr_tb is
+ port ( areset : in std_logic;
+ break_out : out std_logic);
+end ddr_tb;
+
+architecture behave of ddr_tb is
+
+signal cpu_clk : std_logic;
+signal cpu_clk_2x : std_logic;
+signal cpu_clk_4x : std_logic;
+signal ddr_in_clk : std_logic;
+signal ddr_in_clk_2x : std_logic;
+
+signal ddr_command : std_logic_vector(15 downto 0);
+signal ddr_command_we : std_logic;
+
+signal ddr_data_read : std_logic_vector(31 downto 0); -- Data read from DDR SDRAM
+signal ddr_data_write : std_logic_vector(35 downto 0); -- Data to be written to DDR SDRAM
+signal ddr_req_adr : std_logic_vector(23 downto 1); -- Request address
+signal ddr_req : std_logic; -- Request DDR SDRAM access
+signal ddr_req_ack : std_logic; -- Request acknowledge
+signal ddr_busy : std_logic; -- Request acknowledge
+signal ddr_rd_wr_n : std_logic; -- Access type 1=READ, 0=WRITE
+signal ddr_req_len : std_logic; -- Number of 16-bits words to transfer
+signal ddr_read_en : std_logic; -- Enable signal for read data
+signal ddr_write_en : std_logic; -- Enable (read) signal for data write
+signal refresh_en : std_logic;
+
+signal sdr_clk_p : std_logic; -- ddr_sdram_clock
+signal sdr_clk_n_p : std_logic; -- /ddr_sdram_clock
+signal cke_q_p : std_logic; -- clock enable
+signal cs_qn_p : std_logic; -- /chip select
+signal ras_qn_p : std_logic; -- /ras
+signal cas_qn_p : std_logic; -- /cas
+signal we_qn_p : std_logic; -- /write enable
+signal dm_q_p : std_logic_vector(1 downto 0); -- data mask bits, set to "00"
+signal dqs_q_p : std_logic_vector(1 downto 0); -- data strobe, only for write
+signal ba_q_p : std_logic_vector(1 downto 0); -- bank select
+signal sdr_a_p : std_logic_vector(12 downto 0); -- address bus
+signal sdr_d_p : std_logic_vector(15 downto 0); -- bidir data bus
+
+constant min_time : time := 1.875 ns;
+
+begin
+
+ clock1:
+ process
+ begin
+ loop
+ cpu_clk_4x <= '1';
+ wait for min_time;
+ cpu_clk_4x <= '0';
+ wait for min_time;
+ end loop;
+ end process;
+
+ clock2:
+ process
+ begin
+ loop
+ cpu_clk_2x <= '1' after 100 ps;
+ wait until rising_edge(cpu_clk_4x);
+ cpu_clk_2x <= '0' after 100 ps;
+ wait until rising_edge(cpu_clk_4x);
+ end loop;
+ end process;
+
+ clock3:
+ process
+ begin
+ loop
+ cpu_clk <= '1' after 100 ps;
+ wait until rising_edge(cpu_clk_2x);
+ cpu_clk <= '0' after 100 ps;
+ wait until rising_edge(cpu_clk_2x);
+ end loop;
+ end process;
+
+ ddr_in_clk_2x <= cpu_clk_4x after 1 ns;
+
+ clock4:
+ process
+ begin
+ loop
+ ddr_in_clk <= '0' after 100 ps;
+ wait until rising_edge(ddr_in_clk_2x);
+ ddr_in_clk <= '1' after 100 ps;
+ wait until rising_edge(ddr_in_clk_2x);
+ end loop;
+ end process;
+
+ inputdata:
+ process
+ begin
+ -- Wait until global reset released
+ loop
+ ddr_command <= x"0000";
+ ddr_command_we <= '0';
+ ddr_data_write <= x"000000000";
+ ddr_req <= '0';
+ ddr_req_adr <= "00000000000000000000000";
+ ddr_rd_wr_n <= '0';
+ ddr_req_len <= '0';
+ break_out <= '0';
+ refresh_en <= '0';
+
+ wait until falling_edge(areset);
+
+ -- DDR initialization sequence
+ -- Wait more than 200 us
+ wait for 201000 ns;
+
+ -- Send precharge command
+ wait until rising_edge(cpu_clk);
+ ddr_command <= x"8000";
+ ddr_command_we <= '1';
+ wait until rising_edge(cpu_clk);
+ ddr_command <= x"0000";
+ ddr_command_we <= '0';
+
+ -- Wait for 1 us
+ wait for 1000 ns;
+
+ -- Load extended mode register
+ -- Enable DLL
+ -- Normal drive strength
+ wait until rising_edge(cpu_clk);
+ ddr_command <= x"2000";
+ ddr_command_we <= '1';
+ wait until rising_edge(cpu_clk);
+ ddr_command <= x"0000";
+ ddr_command_we <= '0';
+
+ -- Wait for 1 us
+ wait for 1000 ns;
+
+ -- Load mode register
+ -- Burst length: 2
+ -- Burst type: Sequential
+ -- Cas latency: 2
+ -- Reset DLL
+ wait until rising_edge(cpu_clk);
+ ddr_command <= x"0121";
+ ddr_command_we <= '1';
+ wait until rising_edge(cpu_clk);
+ ddr_command <= x"0000";
+ ddr_command_we <= '0';
+
+ -- Wait for 1 us
+ wait for 1000 ns;
+
+ -- Send precharge command
+ wait until rising_edge(cpu_clk);
+ ddr_command <= x"8000";
+ ddr_command_we <= '1';
+ wait until rising_edge(cpu_clk);
+ ddr_command <= x"0000";
+ ddr_command_we <= '0';
+
+ -- Enable refresh
+ refresh_en <= '1';
+
+ -- Wait 30 us (minimum 2 autorefresh cycles)
+ wait for 30000 ns;
+
+ -- Load mode register
+ -- Burst length: 2
+ -- Burst type: Sequential
+ -- Cas latency: 2
+ -- Deactivate Reset DLL
+ wait until rising_edge(cpu_clk);
+ ddr_command <= x"0021";
+ ddr_command_we <= '1';
+ wait until rising_edge(cpu_clk);
+ ddr_command <= x"0000";
+ ddr_command_we <= '0';
+
+ -- Wait for 2 us (DLL stable)
+ wait for 2000 ns;
+
+ -- Write data to DDR
+ wait until rising_edge(cpu_clk_2x);
+ ddr_data_write <= x"312345678";
+ ddr_req <= '1';
+ ddr_req_adr <= "00000000000000000000000";
+ ddr_rd_wr_n <= '0';
+ ddr_req_len <= '0';
+ wait until rising_edge(ddr_write_en);
+ wait until rising_edge(cpu_clk_2x);
+ ddr_req <= '0';
+ ddr_req_adr <= "00000000000000000000000";
+ ddr_rd_wr_n <= '0';
+ ddr_req_len <= '0';
+ ddr_data_write <= x"000000000";
+ wait for 100 ns;
+
+ -- Read data from DDR
+ wait until rising_edge(cpu_clk_2x);
+ ddr_req <= '1';
+ ddr_req_adr <= "00000000000000000000000";
+ ddr_rd_wr_n <= '1';
+ ddr_req_len <= '0';
+ wait until rising_edge(ddr_req_ack);
+ wait until rising_edge(cpu_clk_2x);
+ ddr_req <= '0';
+ ddr_req_adr <= "00000000000000000000000";
+ ddr_rd_wr_n <= '0';
+ ddr_req_len <= '0';
+ ddr_data_write <= x"000000000";
+
+
+
+ wait for 100 ns;
+ break_out <= '1';
+ wait for 100 ns;
+
+ end loop;
+
+ end process;
+
+ ddr_ctrl:
+ ddr_top port map(
+ areset => areset,
+ cpu_clk => cpu_clk,
+ cpu_clk_2x => cpu_clk_2x,
+ cpu_clk_4x => cpu_clk_4x,
+ ddr_in_clk => ddr_in_clk,
+ ddr_in_clk_2x => ddr_in_clk_2x,
+
+ -- Command interface
+ ddr_command => ddr_command,
+ ddr_command_we => ddr_command_we,
+ refresh_en => refresh_en,
+
+ -- Data interface signals
+ ddr_data_read => ddr_data_read,
+ ddr_data_write => ddr_data_write,
+ ddr_req_adr => ddr_req_adr,
+ ddr_req => ddr_req,
+ ddr_req_ack => ddr_req_ack,
+ ddr_busy => ddr_busy,
+ ddr_rd_wr_n => ddr_rd_wr_n,
+ ddr_req_len => ddr_req_len,
+ ddr_read_en => ddr_read_en,
+ ddr_write_en => ddr_write_en,
+ -- DDR SDRAM Signals
+ sdr_clk_p => sdr_clk_p,
+ sdr_clk_n_p => sdr_clk_n_p,
+ cke_q_p => cke_q_p,
+ cs_qn_p => cs_qn_p,
+ ras_qn_p => ras_qn_p,
+ cas_qn_p => cas_qn_p,
+ we_qn_p => we_qn_p,
+ dm_q_p => dm_q_p,
+ dqs_q_p => dqs_q_p,
+ ba_q_p => ba_q_p,
+ sdr_a_p => sdr_a_p,
+ sdr_d_p => sdr_d_p);
+
+ myram:
+ MT46V16M16 generic map(
+ tCK => 7.500 ns,
+ tCH => 3.375 ns, -- 0.45*tCK
+ tCL => 3.375 ns, -- 0.45*tCK
+ tDH => 0.500 ns,
+ tDS => 0.500 ns,
+ tIH => 0.900 ns,
+ tIS => 0.900 ns,
+ tMRD => 15.000 ns,
+ tRAS => 40.000 ns,
+ tRAP => 20.000 ns,
+ tRC => 65.000 ns,
+ tRFC => 75.000 ns,
+ tRCD => 20.000 ns,
+ tRP => 20.000 ns,
+ tRRD => 15.000 ns,
+ tWR => 15.000 ns,
+ addr_bits => 13,
+ data_bits => 16,
+ cols_bits => 9)
+ port map(
+ Dq => sdr_d_p,
+ Dqs => dqs_q_p,
+ Addr => sdr_a_p,
+ Ba => ba_q_p,
+ Clk => sdr_clk_p,
+ Clk_n => sdr_clk_n_p,
+ Cke => cke_q_p,
+ Cs_n => cs_qn_p,
+ Ras_n => ras_qn_p,
+ Cas_n => cas_qn_p,
+ We_n => we_qn_p,
+ Dm => dm_q_p);
+
+end behave;
diff --git a/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_top.vhd b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_top.vhd
new file mode 100644
index 0000000..d5e98e1
--- /dev/null
+++ b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/ddr_top.vhd
@@ -0,0 +1,660 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+entity ddr_top is
+ generic(
+ simulate_io_time : boolean := false);
+ port ( -- Asyncronous reset and clocks
+ areset : in std_logic;
+ cpu_clk : in std_logic;
+ cpu_clk_2x : in std_logic;
+ cpu_clk_4x : in std_logic;
+ ddr_in_clk : in std_logic;
+ ddr_in_clk_2x : in std_logic;
+
+ -- Command interface
+ ddr_command : in std_logic_vector(15 downto 0);
+ ddr_command_we : in std_logic;
+ refresh_en : in std_logic;
+
+ -- Data interface signals
+ ddr_data_read : out std_logic_vector(31 downto 0); -- Data read from DDR SDRAM
+ ddr_data_write : in std_logic_vector(35 downto 0); -- Data to be written to DDR SDRAM
+ ddr_req_adr : in std_logic_vector(23 downto 1); -- Request address
+ ddr_req : in std_logic; -- Request DDR SDRAM access
+ ddr_req_ack : out std_logic; -- Request acknowledge
+ ddr_busy : out std_logic; -- Request acknowledge
+ ddr_rd_wr_n : in std_logic; -- Access type 1=READ, 0=WRITE
+ ddr_req_len : in std_logic; -- Number of 16-bits words to transfer (0=2, 1=8)
+ ddr_read_en : out std_logic; -- Enable signal for read data
+ ddr_write_en : out std_logic; -- Enable (read) signal for data write
+
+ -- DDR SDRAM Signals
+ sdr_clk_p : out std_logic; -- ddr_sdram_clock
+ sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
+ cke_q_p : out std_logic; -- clock enable
+ cs_qn_p : out std_logic; -- /chip select
+ ras_qn_p : inout std_logic; -- /ras
+ cas_qn_p : inout std_logic; -- /cas
+ we_qn_p : inout std_logic; -- /write enable
+ dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
+ dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
+ ba_q_p : out std_logic_vector(1 downto 0); -- bank select
+ sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
+ sdr_d_p : inout std_logic_vector(15 downto 0)); -- bidir data bus
+end ddr_top;
+
+architecture behave of ddr_top is
+
+attribute keep : string;
+
+signal cpu_clk_tog : std_logic;
+signal ddr_cmd : std_logic_vector(15 downto 0);
+signal ddr_cmd_we_smp : std_logic;
+signal new_command : std_logic;
+
+signal cpu_clk_2x_smp1 : std_logic;
+signal cpu_clk_2x_smp2 : std_logic;
+signal cpu_clk_4x_smp1 : std_logic;
+signal cpu_clk_4x_smp2 : std_logic;
+
+signal clk2_phase : std_logic;
+signal clk4_phase : std_logic_vector(3 downto 0);
+signal clk4_phase_short : std_logic_vector(1 downto 0);
+
+signal ddr_clk_tog : std_logic;
+signal ddr_clk_smp1 : std_logic;
+signal ddr_clk_smp2 : std_logic;
+signal ddr_clk_phase : std_logic;
+
+signal smp_req_adr : std_logic_vector(23 downto 1);
+signal smp_req_type : std_logic;
+signal smp_req_len : std_logic;
+signal ddr_write_en_int : std_logic;
+signal ddr_read_en_int : std_logic;
+
+signal dqs_q : std_logic_vector(1 downto 0);
+signal dqs_oe_n : std_logic_vector(1 downto 0);
+attribute keep of dqs_oe_n:signal is "true";
+signal cas_qn : std_logic;
+signal ras_qn : std_logic;
+signal we_qn : std_logic;
+signal ba_q : std_logic_vector(1 downto 0);
+signal sdr_clk : std_logic;
+signal sdr_clk_n : std_logic;
+signal sdr_a : std_logic_vector(12 downto 0);
+signal sdr_d : std_logic_vector(15 downto 0);
+signal sdr_smp : std_logic_vector(35 downto 0);
+signal sdr_oe_n : std_logic_vector(15 downto 0);
+attribute keep of sdr_oe_n:signal is "true";
+signal sdr_oe_ctrl : std_logic;
+signal sdr_wr_msw : std_logic_vector(17 downto 0);
+attribute keep of sdr_wr_msw:signal is "true";
+signal dm_q : std_logic_vector(1 downto 0);
+
+signal cas_n_smp : std_logic;
+signal ras_n_smp : std_logic;
+signal we_n_smp : std_logic;
+signal read_start_sig : std_logic;
+signal sdr_d_in : std_logic_vector(15 downto 0);
+signal read_time_cnt : std_logic_vector(1 downto 0);
+signal read_input_en : std_logic;
+signal ddr_data_read_int : std_logic_vector(31 downto 0);
+
+signal refresh_pend : std_logic;
+signal refresh_end : std_logic;
+signal refresh_cnt : std_logic_vector(9 downto 0);
+signal refresh_wait_cnt : std_logic_vector(2 downto 0);
+signal refresh_wait_end : std_logic;
+
+signal cas_qn_p_del : std_logic;
+signal ras_qn_p_del : std_logic;
+signal we_qn_p_del : std_logic;
+signal sdr_d_p_del : std_logic_vector(15 downto 0);
+
+type state_type is (idle, act, act_nop1, act_nop2, rd_wr, rd_nop1,
+ rd_nop2, pre, pre_nop1, pre_nop2, wr_nop1, wr_nop2,
+ wr_nop3, cmd, cpu_pre, refresh, refresh_wait);
+signal ddr_state : state_type;
+
+constant Clk_to_Output : time := 2.2 ns;
+constant Sim_Delay : time := 0.5 ns;
+constant Input_Setup : time := 2.5 ns;
+
+constant Refresh_Interval : std_logic_vector(9 downto 0) := "1111100110";
+
+begin
+
+ iotimingon:
+ if simulate_io_time generate
+ begin
+ cas_qn_p_del <= 'X' after 0 ns, cas_qn_p after Input_Setup;
+ ras_qn_p_del <= 'X' after 0 ns, ras_qn_p after Input_Setup;
+ we_qn_p_del <= 'X' after 0 ns, we_qn_p after Input_Setup;
+ sdr_d_p_del <= "XXXXXXXXXXXXXXXX" after 0 ns, sdr_d_p after Input_Setup;
+ end generate;
+
+ iotimingoff:
+ if not simulate_io_time generate
+ begin
+ cas_qn_p_del <= cas_qn_p;
+ ras_qn_p_del <= ras_qn_p;
+ we_qn_p_del <= we_qn_p;
+ sdr_d_p_del <= sdr_d_p;
+ end generate;
+
+ ddr_write_en <= ddr_write_en_int;
+ ddr_read_en <= ddr_read_en_int;
+ ddr_data_read <= ddr_data_read_int;
+
+ process(cpu_clk, areset) -- Toggle a flip-flop with cpu_clk, in order
+ begin -- to find phase relation with 2x and 4x clocks
+ if areset = '1' then
+ cpu_clk_tog <= '0';
+ elsif (cpu_clk'event and cpu_clk = '1') then
+ cpu_clk_tog <= not(cpu_clk_tog) after Sim_Delay;
+ end if;
+ end process;
+
+ process(cpu_clk_2x, areset) -- Find phase relation between cpu_clk and cpu_clk_2x
+ begin
+ if areset = '1' then
+ cpu_clk_2x_smp1 <= '0';
+ cpu_clk_2x_smp2 <= '0';
+ clk2_phase <= '0';
+ elsif (cpu_clk_2x'event and cpu_clk_2x = '1') then
+ cpu_clk_2x_smp1 <= cpu_clk_tog after Sim_Delay;
+ cpu_clk_2x_smp2 <= cpu_clk_2x_smp1 after Sim_Delay;
+ if (cpu_clk_2x_smp1 = '1' and cpu_clk_2x_smp2 = '0') then
+ clk2_phase <= '0' after Sim_Delay;
+ else
+ clk2_phase <= not(clk2_phase) after Sim_Delay;
+ end if;
+ end if;
+ end process;
+
+ process(cpu_clk_4x, areset) -- Find phase relation between cpu_clk and cpu_clk_4x
+ begin
+ if areset = '1' then
+ cpu_clk_4x_smp1 <= '0';
+ cpu_clk_4x_smp2 <= '0';
+ clk4_phase <= "0000";
+ clk4_phase_short <= "00";
+ elsif (cpu_clk_4x'event and cpu_clk_4x = '1') then
+ cpu_clk_4x_smp1 <= cpu_clk_tog after Sim_Delay;
+ cpu_clk_4x_smp2 <= cpu_clk_4x_smp1 after Sim_Delay;
+ if (cpu_clk_4x_smp1 = '1' and cpu_clk_4x_smp2 = '0') then
+ clk4_phase <= "0100" after Sim_Delay;
+ clk4_phase_short <= "01" after Sim_Delay;
+ else
+ clk4_phase <= (clk4_phase(2 downto 0) & clk4_phase(3)) after Sim_Delay;
+ clk4_phase_short <= clk4_phase_short(0) & clk4_phase_short(1);
+ end if;
+ end if;
+ end process;
+
+ process(cpu_clk_4x, areset) --
+ begin
+ if areset = '1' then
+ sdr_clk <= '0';
+ sdr_clk_n <= '0';
+ elsif (cpu_clk_4x'event and cpu_clk_4x = '1') then
+ if clk4_phase_short(0) = '1' then
+ sdr_clk <= '1' after Sim_Delay;
+ else
+ sdr_clk <= '0' after Sim_Delay;
+ end if;
+ if clk4_phase_short(1) = '1' then
+ sdr_clk_n <= '1' after Sim_Delay;
+ else
+ sdr_clk_n <= '0' after Sim_Delay;
+ end if;
+ end if;
+ end process;
+
+ cke_q_p <= '1' after Clk_to_Output;
+ cs_qn_p <= '0' after Clk_to_Output;
+
+ process(cpu_clk_4x, areset) --
+ begin
+ if areset = '1' then
+ ras_qn_p <= '1';
+ cas_qn_p <= '1';
+ we_qn_p <= '1';
+ dqs_q_p <= "ZZ";
+ sdr_a_p <= "0000000000000";
+ ba_q_p <= "00";
+ sdr_clk_p <= '0';
+ sdr_clk_n_p <= '1';
+ elsif (cpu_clk_4x'event and cpu_clk_4x = '1') then
+ ras_qn_p <= transport ras_qn after Clk_to_Output;
+ cas_qn_p <= transport cas_qn after Clk_to_Output;
+ we_qn_p <= transport we_qn after Clk_to_Output;
+ if dqs_oe_n(0) = '0' then
+ dqs_q_p(0) <= transport dqs_q(0) after Clk_to_Output;
+ else
+ dqs_q_p(0) <= transport 'Z' after Clk_to_Output;
+ end if;
+ if dqs_oe_n(1) = '0' then
+ dqs_q_p(1) <= transport dqs_q(1) after Clk_to_Output;
+ else
+ dqs_q_p(1) <= transport 'Z' after Clk_to_Output;
+ end if;
+ sdr_a_p <= transport sdr_a after Clk_to_Output;
+ ba_q_p <= transport ba_q after Clk_to_Output;
+ sdr_clk_p <= transport sdr_clk after Clk_to_Output;
+ sdr_clk_n_p <= transport sdr_clk_n after Clk_to_Output;
+ end if;
+ end process;
+
+ process(cpu_clk_2x, areset) --
+ begin
+ if areset = '1' then
+ ddr_state <= idle;
+ ras_qn <= '1';
+ cas_qn <= '1';
+ we_qn <= '1';
+ smp_req_adr <= (others => '0');
+ smp_req_type <= '0';
+ smp_req_len <= '0';
+ sdr_a <= "XXXXXXXXXXXXX";
+ ba_q <= "00";
+ ddr_req_ack <= '0';
+ ddr_busy <= '1';
+ ddr_write_en_int <= '0';
+ ddr_read_en_int <= '0';
+ elsif (cpu_clk_2x'event and cpu_clk_2x = '1') then
+
+ -- Default values
+ ras_qn <= '1' after Sim_Delay;
+ cas_qn <= '1' after Sim_Delay;
+ we_qn <= '1' after Sim_Delay;
+ sdr_a <= "XXXXXXXXXXXXX" after Sim_Delay;
+ ba_q <= "00" after Sim_Delay;
+ ddr_req_ack <= '0' after Sim_Delay;
+ ddr_busy <= '1' after Sim_Delay;
+ ddr_write_en_int <= '0' after Sim_Delay;
+ ddr_read_en_int <= '0' after Sim_Delay;
+
+ case ddr_state is
+ when idle =>
+ smp_req_adr <= ddr_req_adr after Sim_Delay;
+ smp_req_type <= ddr_rd_wr_n after Sim_Delay;
+ smp_req_len <= ddr_req_len after Sim_Delay;
+ ddr_busy <= '0' after Sim_Delay;
+ if refresh_pend = '1' then
+ ddr_state <= refresh after Sim_Delay;
+ elsif new_command = '1' then
+ if ddr_cmd(15) = '1' then
+ ddr_state <= cpu_pre after Sim_Delay;
+ else
+ ddr_state <= cmd after Sim_Delay;
+ end if;
+ elsif ddr_req = '1' then
+ ddr_state <= act after Sim_Delay;
+ else
+ ddr_state <= idle after Sim_Delay;
+ end if;
+ when act =>
+ sdr_a <= smp_req_adr(23 downto 11) after Sim_Delay;
+ ras_qn <= '0' after Sim_Delay;
+ ddr_state <= act_nop1 after Sim_Delay;
+ ddr_req_ack <= '1' after Sim_Delay;
+ ddr_write_en_int <= not(smp_req_type) after Sim_Delay;
+ when act_nop1 =>
+ ddr_state <= act_nop2 after Sim_Delay;
+ when act_nop2 =>
+ ddr_state <= rd_wr after Sim_Delay;
+ when rd_wr =>
+ sdr_a(10) <= '0' after Sim_Delay; -- Disable auto precharge
+ sdr_a(9 downto 0) <= smp_req_adr(10 downto 1) after Sim_Delay;
+ cas_qn <= '0' after Sim_Delay;
+ we_qn <= smp_req_type after Sim_Delay;
+ if smp_req_type = '1' then
+ ddr_state <= rd_nop1 after Sim_Delay;
+ else
+ ddr_state <= wr_nop1 after Sim_Delay;
+ end if;
+ when wr_nop1 =>
+ ddr_state <= wr_nop2 after Sim_Delay;
+ when wr_nop2 =>
+ ddr_state <= wr_nop3 after Sim_Delay;
+ when wr_nop3 =>
+ ddr_state <= pre after Sim_Delay;
+ when rd_nop1 =>
+ ddr_state <= rd_nop2 after Sim_Delay;
+ when rd_nop2 =>
+ ddr_state <= pre after Sim_Delay;
+ when pre =>
+ ras_qn <= '0' after Sim_Delay;
+ we_qn <= '0' after Sim_Delay;
+ sdr_a(10) <= '1' after Sim_Delay; -- Precharge all banks
+ ddr_state <= pre_nop1 after Sim_Delay;
+ ddr_read_en_int <= smp_req_type after Sim_Delay;
+ when pre_nop1 =>
+ ddr_state <= pre_nop2 after Sim_Delay;
+ when cmd =>
+ cas_qn <= '0' after Sim_Delay;
+ ras_qn <= '0' after Sim_Delay;
+ we_qn <= '0' after Sim_Delay;
+ ba_q <= ddr_cmd(14 downto 13) after Sim_Delay;
+ sdr_a <= ddr_cmd(12 downto 0) after Sim_Delay;
+ ddr_state <= idle after Sim_Delay;
+ when cpu_pre =>
+ ddr_state <= pre after Sim_Delay;
+ when refresh =>
+ cas_qn <= '0' after Sim_Delay;
+ ras_qn <= '0' after Sim_Delay;
+ ddr_state <= refresh_wait after Sim_Delay;
+ when refresh_wait =>
+ if refresh_wait_end = '1' then
+ ddr_state <= pre after Sim_Delay;
+ end if;
+ when pre_nop2 =>
+ ddr_state <= idle after Sim_Delay;
+ when others =>
+ ddr_state <= idle after Sim_Delay;
+ end case;
+ end if;
+ end process;
+
+ process(cpu_clk, areset) --
+ begin
+ if areset = '1' then
+ ddr_cmd <= "0000000000000000";
+ elsif (cpu_clk'event and cpu_clk = '1') then
+ if ddr_command_we = '1' then
+ ddr_cmd <= ddr_command after Sim_Delay;
+ else
+ ddr_cmd <= ddr_cmd after Sim_Delay;
+ end if;
+ end if;
+ end process;
+
+ process(cpu_clk_2x, areset) --
+ begin
+ if areset = '1' then
+ ddr_cmd_we_smp <= '0';
+ new_command <= '0';
+ sdr_smp <= "000000000000000000000000000000000000";
+ elsif (cpu_clk_2x'event and cpu_clk_2x = '1') then
+ ddr_cmd_we_smp <= ddr_command_we after Sim_Delay;
+ if ddr_command_we = '0' and ddr_cmd_we_smp = '1' then
+ new_command <= '1' after Sim_Delay;
+ elsif ddr_state = cmd or ddr_state = cpu_pre then
+ new_command <= '0' after Sim_Delay;
+ else
+ new_command <= new_command after Sim_Delay;
+ end if;
+
+ if ddr_write_en_int = '1' then
+ sdr_smp <= ddr_data_write after Sim_Delay;
+ else
+ sdr_smp <= sdr_smp after Sim_Delay;
+ end if;
+
+ end if;
+ end process;
+
+ process(cpu_clk_4x, areset) --
+ begin
+ if areset = '1' then
+ dqs_q <= "00";
+ dqs_oe_n <= "11";
+ sdr_oe_ctrl <= '1';
+ sdr_wr_msw <= "000000000000000000";
+ elsif (cpu_clk_4x'event and cpu_clk_4x = '1') then
+
+ if ddr_state = wr_nop1 and clk4_phase_short(0) = '1' then
+ sdr_oe_ctrl <= '0' after Sim_Delay;
+ elsif ddr_state = wr_nop3 and clk4_phase_short(0) = '1' then
+ sdr_oe_ctrl <= '1' after Sim_Delay;
+ else
+ sdr_oe_ctrl <= sdr_oe_ctrl after Sim_Delay;
+ end if;
+
+ if ddr_state = idle or ddr_state = wr_nop3 then
+ dqs_oe_n <= "11" after Sim_Delay;
+ elsif ddr_state = wr_nop1 then
+ dqs_oe_n <= "00" after Sim_Delay;
+ else
+ dqs_oe_n <= dqs_oe_n after Sim_Delay;
+ end if;
+
+ if (ddr_state = wr_nop2 and clk4_phase_short(0) = '1') then
+ dqs_q <= "11" after Sim_Delay;
+ else
+ dqs_q <= "00" after Sim_Delay;
+ end if;
+
+ if ddr_state = wr_nop1 and clk4_phase_short(1) = '1' then
+ sdr_wr_msw <= "111111111111111111" after Sim_Delay;
+ else
+ sdr_wr_msw <= "000000000000000000" after Sim_Delay;
+ end if;
+
+ end if;
+ end process;
+
+ -- NOTE! DATA OUTPUT PATH. CLOCKED ON FALLING 4X CLOCK
+ process(cpu_clk_4x, areset) --
+ begin
+ if areset = '1' then
+ sdr_d_p <= "ZZZZZZZZZZZZZZZZ";
+ dm_q_p <= "11";
+ sdr_oe_n <= "1111111111111111";
+ sdr_d <= "0000000000000000";
+ dm_q <= "11";
+ elsif (cpu_clk_4x'event and cpu_clk_4x = '0') then
+
+ for i in 0 to 15 loop
+ if sdr_oe_n(i) = '0' then
+ sdr_d_p(i) <= transport sdr_d(i) after Clk_to_Output;
+ else
+ sdr_d_p(i) <= transport 'Z' after Clk_to_Output;
+ end if;
+ end loop;
+
+ dm_q_p <= transport dm_q after Clk_to_Output;
+
+ if sdr_oe_ctrl = '0' then
+ sdr_oe_n <= "0000000000000000" after Sim_Delay;
+ else
+ sdr_oe_n <= "1111111111111111" after Sim_Delay;
+ end if;
+
+ for i in 0 to 15 loop
+ if sdr_wr_msw(i) = '0' then
+ sdr_d(i) <= sdr_smp(i) after Sim_Delay;
+ else
+ sdr_d(i) <= sdr_smp(i+16) after Sim_Delay;
+ end if;
+ end loop;
+
+ for i in 0 to 1 loop
+ if sdr_wr_msw(i+16) = '0' then
+ dm_q(i) <= sdr_smp(i+32) after Sim_Delay;
+ else
+ dm_q(i) <= sdr_smp(i+34) after Sim_Delay;
+ end if;
+ end loop;
+
+ end if;
+ end process;
+
+ process(cpu_clk_2x, areset) --
+ begin
+ if areset = '1' then
+ refresh_cnt <= "0000000000";
+ refresh_pend <= '0';
+ refresh_end <= '0';
+ refresh_wait_cnt <= "000";
+ refresh_wait_end <= '0';
+ elsif (cpu_clk_2x'event and cpu_clk_2x = '1') then
+
+ if refresh_cnt = Refresh_Interval then
+ refresh_end <= '1';
+ else
+ refresh_end <= '0';
+ end if;
+
+ if refresh_end = '1' then
+ refresh_cnt <= "0000000000";
+ else
+ refresh_cnt <= refresh_cnt + '1';
+ end if;
+
+ if refresh_end = '1' and refresh_en = '1' then
+ refresh_pend <= '1' after Sim_Delay;
+ elsif ddr_state = refresh then
+ refresh_pend <= '0' after Sim_Delay;
+ else
+ refresh_pend <= refresh_pend after Sim_Delay;
+ end if;
+
+ if ddr_state = refresh_wait then
+ refresh_wait_cnt <= refresh_wait_cnt + '1';
+ else
+ refresh_wait_cnt <= "000";
+ end if;
+
+ if refresh_wait_cnt = "111" then
+ refresh_wait_end <= '1' after Sim_Delay;
+ else
+ refresh_wait_end <= '0' after Sim_Delay;
+ end if;
+
+ end if;
+ end process;
+
+ -- 911. THIS IS A DUMMY FOR FGPA IMPEMENTATION TESTING
+
+ process(ddr_in_clk, areset)
+ begin
+ if areset = '1' then
+ ddr_clk_tog <= '0';
+ elsif (ddr_in_clk'event and ddr_in_clk = '1') then
+ ddr_clk_tog <= not(ddr_clk_tog) after Sim_Delay;
+ end if;
+ end process;
+
+ process(ddr_in_clk_2x, areset)
+ begin
+ if areset = '1' then
+ ddr_clk_smp1 <= '0';
+ ddr_clk_smp2 <= '0';
+ ddr_clk_phase <= '0';
+ elsif (ddr_in_clk_2x'event and ddr_in_clk_2x = '1') then
+ ddr_clk_smp1 <= ddr_clk_tog after Sim_Delay;
+ ddr_clk_smp2 <= ddr_clk_smp1 after Sim_Delay;
+ if ddr_clk_smp1 = '1' and ddr_clk_smp2 = '0' then
+ ddr_clk_phase <= '0';
+ else
+ ddr_clk_phase <= not(ddr_clk_phase);
+ end if;
+ end if;
+ end process;
+
+ process(ddr_in_clk_2x, areset)
+ begin
+ if areset = '1' then
+ cas_n_smp <= '0';
+ ras_n_smp <= '0';
+ we_n_smp <= '0';
+ read_start_sig <= '0';
+ elsif (ddr_in_clk_2x'event and ddr_in_clk_2x = '1') then
+ cas_n_smp <= cas_qn_p_del after Sim_Delay;
+ ras_n_smp <= ras_qn_p_del after Sim_Delay;
+ we_n_smp <= we_qn_p_del after Sim_Delay;
+ if ras_n_smp = '1' and cas_n_smp = '0' and we_n_smp = '1' and ddr_clk_phase = '1' then
+ read_start_sig <= '1' after Sim_Delay;
+ else
+ read_start_sig <= '0' after Sim_Delay;
+ end if;
+ end if;
+ end process;
+
+ process(ddr_in_clk_2x, areset)
+ begin
+ if areset = '1' then
+ sdr_d_in <= "0000000000000000";
+ elsif (ddr_in_clk_2x'event and ddr_in_clk_2x = '1') then
+ sdr_d_in <= sdr_d_p_del after Sim_Delay;
+ end if;
+ end process;
+
+ process(ddr_in_clk_2x, areset)
+ begin
+ if areset = '1' then
+ read_time_cnt <= "00";
+ read_input_en <= '0';
+ elsif (ddr_in_clk_2x'event and ddr_in_clk_2x = '1') then
+
+ if read_start_sig = '1' then
+ read_time_cnt <= "01" after Sim_Delay;
+ elsif read_time_cnt = "00" then
+ read_time_cnt <= read_time_cnt after Sim_Delay;
+ else
+ read_time_cnt <= read_time_cnt + '1' after Sim_Delay;
+ end if;
+
+ if read_time_cnt = "11" then
+ read_input_en <= '1' after Sim_Delay;
+ else
+ read_input_en <= '0' after Sim_Delay;
+ end if;
+
+ end if;
+ end process;
+
+ process(ddr_in_clk_2x, areset)
+ begin
+ if areset = '1' then
+ ddr_data_read_int <= "00000000000000000000000000000000";
+ elsif (ddr_in_clk_2x'event and ddr_in_clk_2x = '1') then
+ ddr_data_read_int(31 downto 16) <= "0000000000000000" after Sim_Delay;
+ if read_input_en = '1' then
+ ddr_data_read_int(15 downto 0) <= sdr_d_in after Sim_Delay;
+ else
+ ddr_data_read_int(15 downto 0) <= ddr_data_read_int(15 downto 0) after Sim_Delay;
+ end if;
+ end if;
+ end process;
+
+
+
+
+
+
+
+
+ -- ###############
+
+ process(cpu_clk, areset) --
+ begin
+ if areset = '1' then
+ elsif (cpu_clk'event and cpu_clk = '1') then
+ end if;
+ end process;
+
+
+ process(cpu_clk_2x, areset) --
+ begin
+ if areset = '1' then
+ elsif (cpu_clk_2x'event and cpu_clk_2x = '1') then
+ end if;
+ end process;
+
+
+ process(cpu_clk_4x, areset) --
+ begin
+ if areset = '1' then
+ elsif (cpu_clk_4x'event and cpu_clk_4x = '1') then
+ end if;
+ end process;
+
+
+end behave;
+
+
diff --git a/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/mt46v16m16.vhd b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/mt46v16m16.vhd
new file mode 100644
index 0000000..6b89345
--- /dev/null
+++ b/zpu/hdl/zpu4/dummyfpgalib/ddrsdram/src/mt46v16m16.vhd
@@ -0,0 +1,1320 @@
+-----------------------------------------------------------------------------------------
+--
+-- File Name: MT46V16M16.VHD
+-- Version: 2.1
+-- Date: January 14th, 2002
+-- Model: Behavioral
+-- Simulator: NCDesktop - http://www.cadence.com
+-- ModelSim PE - http://www.model.com
+--
+-- Dependencies: None
+--
+-- Author: Son P. Huynh
+-- Email: sphuynh@micron.com
+-- Phone: (208) 368-3825
+-- Company: Micron Technology, Inc.
+-- Part Number: MT46V16M16 (4 Mb x 16 x 4 Banks)
+--
+-- Description: Micron 256 Mb SDRAM DDR (Double Data Rate)
+--
+-- Limitation: Doesn't model internal refresh counter
+--
+-- Note:
+--
+-- Disclaimer: THESE DESIGNS ARE PROVIDED "AS IS" WITH NO WARRANTY
+-- WHATSOEVER AND MICRON SPECIFICALLY DISCLAIMS ANY
+-- IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
+-- A PARTICULAR PURPOSE, OR AGAINST INFRINGEMENT.
+--
+-- Copyright (c) 1998 Micron Semiconductor Products, Inc.
+-- All rights researved
+--
+-- Rev Author Date Changes
+-- --- ---------------------------- ---------- -------------------------------------
+-- 2.1 Son P. Huynh 01/14/2002 - Fix Burst_counter
+-- Micron Technology, Inc.
+--
+-- 2.0 Son P. Huynh 11/08/2001 - Second release
+-- Micron Technology, Inc. - Rewrote and remove SHARED VARIABLE
+--
+-----------------------------------------------------------------------------------------
+
+LIBRARY IEEE;
+ USE IEEE.STD_LOGIC_1164.ALL;
+ USE IEEE.STD_LOGIC_UNSIGNED.ALL;
+ USE IEEE.STD_LOGIC_ARITH.ALL;
+
+ENTITY MT46V16M16 IS
+ GENERIC ( -- Timing for -75Z CL2
+ tCK : TIME := 7.500 ns;
+ tCH : TIME := 3.375 ns; -- 0.45*tCK
+ tCL : TIME := 3.375 ns; -- 0.45*tCK
+ tDH : TIME := 0.500 ns;
+ tDS : TIME := 0.500 ns;
+ tIH : TIME := 0.900 ns;
+ tIS : TIME := 0.900 ns;
+ tMRD : TIME := 15.000 ns;
+ tRAS : TIME := 40.000 ns;
+ tRAP : TIME := 20.000 ns;
+ tRC : TIME := 65.000 ns;
+ tRFC : TIME := 75.000 ns;
+ tRCD : TIME := 20.000 ns;
+ tRP : TIME := 20.000 ns;
+ tRRD : TIME := 15.000 ns;
+ tWR : TIME := 15.000 ns;
+ addr_bits : INTEGER := 13;
+ data_bits : INTEGER := 16;
+ cols_bits : INTEGER := 9
+ );
+ PORT (
+ Dq : INOUT STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0) := (OTHERS => 'Z');
+ Dqs : INOUT STD_LOGIC_VECTOR (1 DOWNTO 0) := "ZZ";
+ Addr : IN STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0);
+ Ba : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
+ Clk : IN STD_LOGIC;
+ Clk_n : IN STD_LOGIC;
+ Cke : IN STD_LOGIC;
+ Cs_n : IN STD_LOGIC;
+ Ras_n : IN STD_LOGIC;
+ Cas_n : IN STD_LOGIC;
+ We_n : IN STD_LOGIC;
+ Dm : IN STD_LOGIC_VECTOR (1 DOWNTO 0)
+ );
+END MT46V16M16;
+
+ARCHITECTURE behave OF MT46V16M16 IS
+ -- Array for Read pipeline
+ TYPE Array_Read_cmnd IS ARRAY (8 DOWNTO 0) OF STD_LOGIC;
+ TYPE Array_Read_bank IS ARRAY (8 DOWNTO 0) OF STD_LOGIC_VECTOR (1 DOWNTO 0);
+ TYPE Array_Read_cols IS ARRAY (8 DOWNTO 0) OF STD_LOGIC_VECTOR (cols_bits - 1 DOWNTO 0);
+
+ -- Array for Write pipeline
+ TYPE Array_Write_cmnd IS ARRAY (2 DOWNTO 0) OF STD_LOGIC;
+ TYPE Array_Write_bank IS ARRAY (2 DOWNTO 0) OF STD_LOGIC_VECTOR (1 DOWNTO 0);
+ TYPE Array_Write_cols IS ARRAY (2 DOWNTO 0) OF STD_LOGIC_VECTOR (cols_bits - 1 DOWNTO 0);
+
+ -- Array for Auto Precharge
+ TYPE Array_Read_precharge IS ARRAY (3 DOWNTO 0) OF STD_LOGIC;
+ TYPE Array_Write_precharge IS ARRAY (3 DOWNTO 0) OF STD_LOGIC;
+ TYPE Array_Count_precharge IS ARRAY (3 DOWNTO 0) OF INTEGER;
+
+ -- Array for Manual Precharge
+ TYPE Array_A10_precharge IS ARRAY (8 DOWNTO 0) OF STD_LOGIC;
+ TYPE Array_Bank_precharge IS ARRAY (8 DOWNTO 0) OF STD_LOGIC_VECTOR (1 DOWNTO 0);
+ TYPE Array_Cmnd_precharge IS ARRAY (8 DOWNTO 0) OF STD_LOGIC;
+
+ -- Array for Burst Terminate
+ TYPE Array_Cmnd_bst IS ARRAY (8 DOWNTO 0) OF STD_LOGIC;
+
+ -- Array for Memory Access
+ TYPE Array_ram_type IS ARRAY (2**cols_bits - 1 DOWNTO 0) OF STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0);
+ TYPE Array_ram_pntr IS ACCESS Array_ram_type;
+ TYPE Array_ram_stor IS ARRAY (2**addr_bits - 1 DOWNTO 0) OF Array_ram_pntr;
+
+ -- Data pair
+ SIGNAL Dq_pair : STD_LOGIC_VECTOR (2 * data_bits - 1 DOWNTO 0);
+ SIGNAL Dm_pair : STD_LOGIC_VECTOR (3 DOWNTO 0);
+
+ -- Mode Register
+ SIGNAL Mode_reg : STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0) := (OTHERS => '0');
+
+ -- Command Decode Variables
+ SIGNAL Active_enable, Aref_enable, Burst_term, Ext_mode_enable : STD_LOGIC := '0';
+ SIGNAL Mode_reg_enable, Prech_enable, Read_enable, Write_enable : STD_LOGIC := '0';
+
+ -- Burst Length Decode Variables
+ SIGNAL Burst_length_2, Burst_length_4, Burst_length_8, Burst_length_f : STD_LOGIC := '0';
+
+ -- Cas Latency Decode Variables
+ SIGNAL Cas_latency_15, Cas_latency_2, Cas_latency_25, Cas_latency_3, Cas_latency_4 : STD_LOGIC := '0';
+
+ -- Internal Control Signals
+ SIGNAL Cs_in, Ras_in, Cas_in, We_in : STD_LOGIC := '0';
+
+ -- System Clock
+ SIGNAL Sys_clk : STD_LOGIC := '0';
+
+ -- Dqs buffer
+ SIGNAL Dqs_out : STD_LOGIC_VECTOR (1 DOWNTO 0) := "ZZ";
+
+BEGIN
+ -- Strip the strength
+ Cs_in <= To_X01 (Cs_n);
+ Ras_in <= To_X01 (Ras_n);
+ Cas_in <= To_X01 (Cas_n);
+ We_in <= To_X01 (We_n);
+
+ -- Commands Decode
+ Active_enable <= NOT(Cs_in) AND NOT(Ras_in) AND Cas_in AND We_in;
+ Aref_enable <= NOT(Cs_in) AND NOT(Ras_in) AND NOT(Cas_in) AND We_in;
+ Burst_term <= NOT(Cs_in) AND Ras_in AND Cas_in AND NOT(We_in);
+ Ext_mode_enable <= NOT(Cs_in) AND NOT(Ras_in) AND NOT(Cas_in) AND NOT(We_in) AND Ba(0) AND NOT(Ba(1));
+ Mode_reg_enable <= NOT(Cs_in) AND NOT(Ras_in) AND NOT(Cas_in) AND NOT(We_in) AND NOT(Ba(0)) AND NOT(Ba(1));
+ Prech_enable <= NOT(Cs_in) AND NOT(Ras_in) AND Cas_in AND NOT(We_in);
+ Read_enable <= NOT(Cs_in) AND Ras_in AND NOT(Cas_in) AND We_in;
+ Write_enable <= NOT(Cs_in) AND Ras_in AND NOT(Cas_in) AND NOT(We_in);
+
+ -- Burst Length Decode
+ Burst_length_2 <= NOT(Mode_reg(2)) AND NOT(Mode_reg(1)) AND Mode_reg(0);
+ Burst_length_4 <= NOT(Mode_reg(2)) AND Mode_reg(1) AND NOT(Mode_reg(0));
+ Burst_length_8 <= NOT(Mode_reg(2)) AND Mode_reg(1) AND Mode_reg(0);
+ Burst_length_f <= (Mode_reg(2)) AND Mode_reg(1) AND Mode_reg(0);
+
+ -- CAS Latency Decode
+ Cas_latency_15 <= Mode_reg(6) AND NOT(Mode_reg(5)) AND (Mode_reg(4));
+ Cas_latency_2 <= NOT(Mode_reg(6)) AND Mode_reg(5) AND NOT(Mode_reg(4));
+ Cas_latency_25 <= Mode_reg(6) AND Mode_reg(5) AND NOT(Mode_reg(4));
+ Cas_latency_3 <= NOT(Mode_reg(6)) AND Mode_reg(5) AND Mode_reg(4);
+ Cas_latency_4 <= (Mode_reg(6)) AND NOT(Mode_reg(5)) AND NOT(Mode_reg(4));
+
+ -- Dqs buffer
+ Dqs <= Dqs_out;
+
+ --
+ -- System Clock
+ --
+ int_clk : PROCESS (Clk, Clk_n)
+ VARIABLE ClkZ, CkeZ : STD_LOGIC := '0';
+ begin
+ IF Clk = '1' AND Clk_n = '0' THEN
+ ClkZ := '1';
+ CkeZ := Cke;
+ ELSIF Clk = '0' AND Clk_n = '1' THEN
+ ClkZ := '0';
+ END IF;
+ Sys_clk <= CkeZ AND ClkZ;
+ END PROCESS;
+
+ --
+ -- Main Process
+ --
+ state_register : PROCESS
+ -- Precharge Variables
+ VARIABLE Pc_b0, Pc_b1, Pc_b2, Pc_b3 : STD_LOGIC := '0';
+
+ -- Activate Variables
+ VARIABLE Act_b0, Act_b1, Act_b2, Act_b3 : STD_LOGIC := '1';
+
+ -- Data IO variables
+ VARIABLE Data_in_enable, Data_out_enable : STD_LOGIC := '0';
+
+ -- Internal address mux variables
+ VARIABLE Cols_brst : STD_LOGIC_VECTOR (2 DOWNTO 0);
+ VARIABLE Prev_bank : STD_LOGIC_VECTOR (1 DOWNTO 0) := "00";
+ VARIABLE Bank_addr : STD_LOGIC_VECTOR (1 DOWNTO 0) := "00";
+ VARIABLE Cols_addr : STD_LOGIC_VECTOR (cols_bits - 1 DOWNTO 0);
+ VARIABLE Rows_addr : STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0);
+ VARIABLE B0_row_addr : STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0);
+ VARIABLE B1_row_addr : STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0);
+ VARIABLE B2_row_addr : STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0);
+ VARIABLE B3_row_addr : STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0);
+
+ -- DLL Reset variables
+ VARIABLE DLL_enable : STD_LOGIC := '0';
+ VARIABLE DLL_reset : STD_LOGIC := '0';
+ VARIABLE DLL_done : STD_LOGIC := '0';
+ VARIABLE DLL_count : INTEGER := 0;
+
+ -- Timing Check
+ VARIABLE MRD_chk : TIME := 0 ns;
+ VARIABLE RFC_chk : TIME := 0 ns;
+ VARIABLE RRD_chk : TIME := 0 ns;
+ VARIABLE RAS_chk0, RAS_chk1, RAS_chk2, RAS_chk3 : TIME := 0 ns;
+ VARIABLE RAP_chk0, RAP_chk1, RAP_chk2, RAP_chk3 : TIME := 0 ns;
+ VARIABLE RC_chk0, RC_chk1, RC_chk2, RC_chk3 : TIME := 0 ns;
+ VARIABLE RCD_chk0, RCD_chk1, RCD_chk2, RCD_chk3 : TIME := 0 ns;
+ VARIABLE RP_chk0, RP_chk1, RP_chk2, RP_chk3 : TIME := 0 ns;
+ VARIABLE WR_chk0, WR_chk1, WR_chk2, WR_chk3 : TIME := 0 ns;
+
+ -- Read pipeline variables
+ VARIABLE Read_cmnd : Array_Read_cmnd;
+ VARIABLE Read_bank : Array_Read_bank;
+ VARIABLE Read_cols : Array_Read_cols;
+
+ -- Write pipeline variables
+ VARIABLE Write_cmnd : Array_Write_cmnd;
+ VARIABLE Write_bank : Array_Write_bank;
+ VARIABLE Write_cols : Array_Write_cols;
+
+ -- Auto Precharge variables
+ VARIABLE Read_precharge : Array_Read_precharge := ('0' & '0' & '0' & '0');
+ VARIABLE Write_precharge : Array_Write_precharge := ('0' & '0' & '0' & '0');
+ VARIABLE Count_precharge : Array_Count_precharge := ( 0 & 0 & 0 & 0 );
+
+ -- Manual Precharge variables
+ VARIABLE A10_precharge : Array_A10_precharge;
+ VARIABLE Bank_precharge : Array_Bank_precharge;
+ VARIABLE Cmnd_precharge : Array_Cmnd_precharge;
+
+ -- Burst Terminate variable
+ VARIABLE Cmnd_bst : Array_Cmnd_bst;
+
+ -- Memory Banks
+ VARIABLE Bank0 : Array_ram_stor;
+ VARIABLE Bank1 : Array_ram_stor;
+ VARIABLE Bank2 : Array_ram_stor;
+ VARIABLE Bank3 : Array_ram_stor;
+
+ -- Burst Counter
+ VARIABLE Burst_counter : STD_LOGIC_VECTOR (cols_bits - 1 DOWNTO 0);
+
+ -- Internal Dqs initialize
+ VARIABLE Dqs_int : STD_LOGIC := '0';
+
+ -- Data buffer for DM Mask
+ VARIABLE Data_buf : STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0) := (OTHERS => 'Z');
+
+ --
+ -- Initialize empty rows
+ --
+ PROCEDURE Init_mem (Bank : STD_LOGIC_VECTOR; Row_index : INTEGER) IS
+ VARIABLE i, j : INTEGER := 0;
+ BEGIN
+ IF Bank = "00" THEN
+ IF Bank0 (Row_index) = NULL THEN -- Check to see if row empty
+ Bank0 (Row_index) := NEW Array_ram_type; -- Open new row for access
+ FOR i IN (2**cols_bits - 1) DOWNTO 0 LOOP -- Filled row with zeros
+ FOR j IN (data_bits - 1) DOWNTO 0 LOOP
+ Bank0 (Row_index) (i) (j) := '0';
+ END LOOP;
+ END LOOP;
+ END IF;
+ ELSIF Bank = "01" THEN
+ IF Bank1 (Row_index) = NULL THEN
+ Bank1 (Row_index) := NEW Array_ram_type;
+ FOR i IN (2**cols_bits - 1) DOWNTO 0 LOOP
+ FOR j IN (data_bits - 1) DOWNTO 0 LOOP
+ Bank1 (Row_index) (i) (j) := '0';
+ END LOOP;
+ END LOOP;
+ END IF;
+ ELSIF Bank = "10" THEN
+ IF Bank2 (Row_index) = NULL THEN
+ Bank2 (Row_index) := NEW Array_ram_type;
+ FOR i IN (2**cols_bits - 1) DOWNTO 0 LOOP
+ FOR j IN (data_bits - 1) DOWNTO 0 LOOP
+ Bank2 (Row_index) (i) (j) := '0';
+ END LOOP;
+ END LOOP;
+ END IF;
+ ELSIF Bank = "11" THEN
+ IF Bank3 (Row_index) = NULL THEN
+ Bank3 (Row_index) := NEW Array_ram_type;
+ FOR i IN (2**cols_bits - 1) DOWNTO 0 LOOP
+ FOR j IN (data_bits - 1) DOWNTO 0 LOOP
+ Bank3 (Row_index) (i) (j) := '0';
+ END LOOP;
+ END LOOP;
+ END IF;
+ END IF;
+ END;
+
+ --
+ -- Burst Counter
+ --
+ PROCEDURE Burst_decode IS
+ VARIABLE Cols_temp : STD_LOGIC_VECTOR (cols_bits - 1 DOWNTO 0) := (OTHERS => '0');
+ BEGIN
+ -- Advance burst counter
+ Burst_counter := Burst_counter + 1;
+
+ -- Burst Type
+ IF Mode_reg (3) = '0' THEN
+ Cols_temp := Cols_addr + 1;
+ ELSIF Mode_reg (3) = '1' THEN
+ Cols_temp (2) := Burst_counter (2) XOR Cols_brst (2);
+ Cols_temp (1) := Burst_counter (1) XOR Cols_brst (1);
+ Cols_temp (0) := Burst_counter (0) XOR Cols_brst (0);
+ END IF;
+
+ -- Burst Length
+ IF Burst_length_2 = '1' THEN
+ Cols_addr (0) := Cols_temp (0);
+ ELSIF Burst_length_4 = '1' THEN
+ Cols_addr (1 DOWNTO 0) := Cols_temp (1 DOWNTO 0);
+ ELSIF Burst_length_8 = '1' THEN
+ Cols_addr (2 DOWNTO 0) := Cols_temp (2 DOWNTO 0);
+ ELSE
+ Cols_addr := Cols_temp;
+ END IF;
+
+ -- Data counter
+ IF Burst_length_2 = '1' THEN
+ IF Burst_counter >= 2 THEN
+ IF Data_in_enable = '1' THEN
+ Data_in_enable := '0';
+ ELSIF Data_out_enable = '1' THEN
+ Data_out_enable := '0';
+ END IF;
+ END IF;
+ ELSIF Burst_length_4 = '1' THEN
+ IF Burst_counter >= 4 THEN
+ IF Data_in_enable = '1' THEN
+ Data_in_enable := '0';
+ ELSIF Data_out_enable = '1' THEN
+ Data_out_enable := '0';
+ END IF;
+ END IF;
+ ELSIF Burst_length_8 = '1' THEN
+ IF Burst_counter >= 8 THEN
+ IF Data_in_enable = '1' THEN
+ Data_in_enable := '0';
+ ELSIF Data_out_enable = '1' THEN
+ Data_out_enable := '0';
+ END IF;
+ END IF;
+ END IF;
+ END;
+
+ BEGIN
+ WAIT ON Sys_clk;
+
+ --
+ -- Manual Precharge Pipeline
+ --
+ IF ((Sys_clk'EVENT AND Sys_clk = '0') OR (Sys_clk'EVENT AND Sys_clk = '1')) THEN
+ -- A10 Precharge Pipeline
+ A10_precharge(0) := A10_precharge(1);
+ A10_precharge(1) := A10_precharge(2);
+ A10_precharge(2) := A10_precharge(3);
+ A10_precharge(3) := A10_precharge(4);
+ A10_precharge(4) := A10_precharge(5);
+ A10_precharge(5) := A10_precharge(6);
+ A10_precharge(6) := A10_precharge(7);
+ A10_precharge(7) := A10_precharge(8);
+ A10_precharge(8) := '0';
+
+ -- Bank Precharge Pipeline
+ Bank_precharge(0) := Bank_precharge(1);
+ Bank_precharge(1) := Bank_precharge(2);
+ Bank_precharge(2) := Bank_precharge(3);
+ Bank_precharge(3) := Bank_precharge(4);
+ Bank_precharge(4) := Bank_precharge(5);
+ Bank_precharge(5) := Bank_precharge(6);
+ Bank_precharge(6) := Bank_precharge(7);
+ Bank_precharge(7) := Bank_precharge(8);
+ Bank_precharge(8) := "00";
+
+ -- Command Precharge Pipeline
+ Cmnd_precharge(0) := Cmnd_precharge(1);
+ Cmnd_precharge(1) := Cmnd_precharge(2);
+ Cmnd_precharge(2) := Cmnd_precharge(3);
+ Cmnd_precharge(3) := Cmnd_precharge(4);
+ Cmnd_precharge(4) := Cmnd_precharge(5);
+ Cmnd_precharge(5) := Cmnd_precharge(6);
+ Cmnd_precharge(6) := Cmnd_precharge(7);
+ Cmnd_precharge(7) := Cmnd_precharge(8);
+ Cmnd_precharge(8) := '0';
+
+ -- Terminate Read if same bank or all banks
+ IF ((Cmnd_precharge (0) = '1') AND
+ (Bank_precharge (0) = Bank_addr OR A10_precharge (0) = '1') AND
+ (Data_out_enable = '1')) THEN
+ Data_out_enable := '0';
+ END IF;
+ END IF;
+
+ --
+ -- Burst Terminate Pipeline
+ --
+ IF ((Sys_clk'EVENT AND Sys_clk = '0') OR (Sys_clk'EVENT AND Sys_clk = '1')) THEN
+ -- Burst Terminate pipeline
+ Cmnd_bst (0) := Cmnd_bst (1);
+ Cmnd_bst (1) := Cmnd_bst (2);
+ Cmnd_bst (2) := Cmnd_bst (3);
+ Cmnd_bst (3) := Cmnd_bst (4);
+ Cmnd_bst (4) := Cmnd_bst (5);
+ Cmnd_bst (5) := Cmnd_bst (6);
+ Cmnd_bst (6) := Cmnd_bst (7);
+ Cmnd_bst (7) := Cmnd_bst (8);
+ Cmnd_bst (8) := '0';
+
+ -- Terminate current Read
+ IF ((Cmnd_bst (0) = '1') AND (Data_out_enable = '1')) THEN
+ Data_out_enable := '0';
+ END IF;
+ END IF;
+
+ --
+ -- Dq and Dqs Drivers
+ --
+ IF ((Sys_clk'EVENT AND Sys_clk = '0') OR (Sys_clk'EVENT AND Sys_clk = '1')) THEN
+ -- Read Command Pipeline
+ Read_cmnd (0) := Read_cmnd (1);
+ Read_cmnd (1) := Read_cmnd (2);
+ Read_cmnd (2) := Read_cmnd (3);
+ Read_cmnd (3) := Read_cmnd (4);
+ Read_cmnd (4) := Read_cmnd (5);
+ Read_cmnd (5) := Read_cmnd (6);
+ Read_cmnd (6) := Read_cmnd (7);
+ Read_cmnd (7) := Read_cmnd (8);
+ Read_cmnd (8) := '0';
+
+ -- Read Bank Pipeline
+ Read_bank (0) := Read_bank (1);
+ Read_bank (1) := Read_bank (2);
+ Read_bank (2) := Read_bank (3);
+ Read_bank (3) := Read_bank (4);
+ Read_bank (4) := Read_bank (5);
+ Read_bank (5) := Read_bank (6);
+ Read_bank (6) := Read_bank (7);
+ Read_bank (7) := Read_bank (8);
+ Read_bank (8) := "00";
+
+ -- Read Column Pipeline
+ Read_cols (0) := Read_cols (1);
+ Read_cols (1) := Read_cols (2);
+ Read_cols (2) := Read_cols (3);
+ Read_cols (3) := Read_cols (4);
+ Read_cols (4) := Read_cols (5);
+ Read_cols (5) := Read_cols (6);
+ Read_cols (6) := Read_cols (7);
+ Read_cols (7) := Read_cols (8);
+ Read_cols (8) := (OTHERS => '0');
+
+ -- Initialize Read command
+ IF Read_cmnd (0) = '1' THEN
+ Data_out_enable := '1';
+ Bank_addr := Read_bank (0);
+ Cols_addr := Read_cols (0);
+ Cols_brst := Cols_addr (2 DOWNTO 0);
+ Burst_counter := (OTHERS => '0');
+
+ -- Row address mux
+ CASE Bank_addr IS
+ WHEN "00" => Rows_addr := B0_row_addr;
+ WHEN "01" => Rows_addr := B1_row_addr;
+ WHEN "10" => Rows_addr := B2_row_addr;
+ WHEN OTHERS => Rows_addr := B3_row_addr;
+ END CASE;
+ END IF;
+
+ -- Toggle Dqs during Read command
+ IF Data_out_enable = '1' THEN
+ Dqs_int := '0';
+ IF Dqs_out = "00" THEN
+ Dqs_out <= "11";
+ ELSIF Dqs_out = "11" THEN
+ Dqs_out <= "00";
+ ELSE
+ Dqs_out <= "00";
+ END IF;
+ ELSIF Data_out_enable = '0' AND Dqs_int = '0' THEN
+ Dqs_out <= "ZZ";
+ END IF;
+
+ -- Initialize Dqs for Read command
+ IF Read_cmnd (2) = '1' THEN
+ IF Data_out_enable = '0' THEN
+ Dqs_int := '1';
+ Dqs_out <= "00";
+ END IF;
+ END IF;
+
+ -- Read Latch
+ IF Data_out_enable = '1' THEN
+ -- Initialize Memory
+ Init_mem (Bank_addr, CONV_INTEGER(Rows_addr));
+
+ -- Output Data
+ CASE Bank_addr IS
+ WHEN "00" => Dq <= Bank0 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ WHEN "01" => Dq <= Bank1 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ WHEN "10" => Dq <= Bank2 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ WHEN OTHERS => Dq <= Bank3 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ END CASE;
+
+ -- Increase Burst Counter
+ Burst_decode;
+ ELSE
+ Dq <= (OTHERS => 'Z');
+ END IF;
+ END IF;
+
+ --
+ -- Write FIFO and DM Mask Logic
+ --
+ IF Sys_clk'EVENT AND Sys_clk = '1' THEN
+ -- Write command pipeline
+ Write_cmnd (0) := Write_cmnd (1);
+ Write_cmnd (1) := Write_cmnd (2);
+ Write_cmnd (2) := '0';
+
+ -- Write command pipeline
+ Write_bank (0) := Write_bank (1);
+ Write_bank (1) := Write_bank (2);
+ Write_bank (2) := "00";
+
+ -- Write column pipeline
+ Write_cols (0) := Write_cols (1);
+ Write_cols (1) := Write_cols (2);
+ Write_cols (2) := (OTHERS => '0');
+
+ -- Initialize Write command
+ IF Write_cmnd (0) = '1' THEN
+ Data_in_enable := '1';
+ Bank_addr := Write_bank (0);
+ Cols_addr := Write_cols (0);
+ Cols_brst := Cols_addr (2 DOWNTO 0);
+ Burst_counter := (OTHERS => '0');
+
+ -- Row address mux
+ CASE Bank_addr IS
+ WHEN "00" => Rows_addr := B0_row_addr;
+ WHEN "01" => Rows_addr := B1_row_addr;
+ WHEN "10" => Rows_addr := B2_row_addr;
+ WHEN OTHERS => Rows_addr := B3_row_addr;
+ END CASE;
+ END IF;
+
+ -- Write data
+ IF Data_in_enable = '1' THEN
+ -- Initialize memory
+ Init_mem (Bank_addr, CONV_INTEGER(Rows_addr));
+
+ -- Write first data
+ IF Dm_pair (1) = '0' OR Dm_pair (0) = '0' THEN
+ -- Data Buffer
+ CASE Bank_addr IS
+ WHEN "00" => Data_buf := Bank0 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ WHEN "01" => Data_buf := Bank1 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ WHEN "10" => Data_buf := Bank2 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ WHEN OTHERS => Data_buf := Bank3 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ END CASE;
+
+ -- Perform DM Mask
+ IF Dm_pair (0) = '0' THEN
+ Data_buf ( 7 DOWNTO 0) := Dq_pair ( 7 DOWNTO 0);
+ END IF;
+ IF Dm_pair (1) = '0' THEN
+ Data_buf (15 DOWNTO 8) := Dq_pair (15 DOWNTO 8);
+ END IF;
+
+ -- Write Data
+ CASE Bank_addr IS
+ WHEN "00" => Bank0 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
+ WHEN "01" => Bank1 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
+ WHEN "10" => Bank2 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
+ WHEN OTHERS => Bank3 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
+ END CASE;
+ END IF;
+
+ -- Increase Burst Counter
+ Burst_decode;
+
+ -- Write second data
+ IF Dm_pair (3) = '0' OR Dm_pair (2) = '0' THEN
+ -- Data Buffer
+ CASE Bank_addr IS
+ WHEN "00" => Data_buf := Bank0 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ WHEN "01" => Data_buf := Bank1 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ WHEN "10" => Data_buf := Bank2 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ WHEN OTHERS => Data_buf := Bank3 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
+ END CASE;
+
+ -- Perform DM Mask
+ IF Dm_pair (2) = '0' THEN
+ Data_buf ( 7 DOWNTO 0) := Dq_pair (23 DOWNTO 16);
+ END IF;
+ IF Dm_pair (3) = '0' THEN
+ Data_buf (15 DOWNTO 8) := Dq_pair (31 DOWNTO 24);
+ END IF;
+
+ -- Write Data
+ CASE Bank_addr IS
+ WHEN "00" => Bank0 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
+ WHEN "01" => Bank1 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
+ WHEN "10" => Bank2 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
+ WHEN OTHERS => Bank3 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
+ END CASE;
+ END IF;
+
+ -- Increase Burst Counter
+ Burst_decode;
+
+ -- tWR start and tWTR check
+ IF Dm_pair (3 DOWNTO 2) = "00" OR Dm_pair (1 DOWNTO 0) = "00" THEN
+ CASE Bank_addr IS
+ WHEN "00" => WR_chk0 := NOW;
+ WHEN "01" => WR_chk1 := NOW;
+ WHEN "10" => WR_chk2 := NOW;
+ WHEN OTHERS => WR_chk3 := NOW;
+ END CASE;
+
+ -- tWTR check
+ ASSERT (Read_enable = '0')
+ REPORT "tWTR violation during Read"
+ SEVERITY WARNING;
+ END IF;
+ END IF;
+ END IF;
+
+ --
+ -- Auto Precharge Calculation
+ --
+ IF Sys_clk'EVENT AND Sys_clk = '1' THEN
+ -- Precharge counter
+ IF Read_precharge (0) = '1' OR Write_precharge (0) = '1' THEN
+ Count_precharge (0) := Count_precharge (0) + 1;
+ END IF;
+ IF Read_precharge (1) = '1' OR Write_precharge (1) = '1' THEN
+ Count_precharge (1) := Count_precharge (1) + 1;
+ END IF;
+ IF Read_precharge (2) = '1' OR Write_precharge (2) = '1' THEN
+ Count_precharge (2) := Count_precharge (2) + 1;
+ END IF;
+ IF Read_precharge (3) = '1' OR Write_precharge (3) = '1' THEN
+ Count_precharge (3) := Count_precharge (3) + 1;
+ END IF;
+
+ -- Read with AutoPrecharge Calculation
+ -- The device start internal precharge when:
+ -- 1. Meet tRAS requirement
+ -- 2. BL/2 cycles after command
+ IF ((Read_precharge(0) = '1') AND (NOW - RAS_chk0 >= tRAS)) THEN
+ IF ((Burst_length_2 = '1' AND Count_precharge(0) >= 1) OR
+ (Burst_length_4 = '1' AND Count_precharge(0) >= 2) OR
+ (Burst_length_8 = '1' AND Count_precharge(0) >= 4)) THEN
+ Pc_b0 := '1';
+ Act_b0 := '0';
+ RP_chk0 := NOW;
+ Read_precharge(0) := '0';
+ END IF;
+ END IF;
+ IF ((Read_precharge(1) = '1') AND (NOW - RAS_chk1 >= tRAS)) THEN
+ IF ((Burst_length_2 = '1' AND Count_precharge(1) >= 1) OR
+ (Burst_length_4 = '1' AND Count_precharge(1) >= 2) OR
+ (Burst_length_8 = '1' AND Count_precharge(1) >= 4)) THEN
+ Pc_b1 := '1';
+ Act_b1 := '0';
+ RP_chk1 := NOW;
+ Read_precharge(1) := '0';
+ END IF;
+ END IF;
+ IF ((Read_precharge(2) = '1') AND (NOW - RAS_chk2 >= tRAS)) THEN
+ IF ((Burst_length_2 = '1' AND Count_precharge(2) >= 1) OR
+ (Burst_length_4 = '1' AND Count_precharge(2) >= 2) OR
+ (Burst_length_8 = '1' AND Count_precharge(2) >= 4)) THEN
+ Pc_b2 := '1';
+ Act_b2 := '0';
+ RP_chk2 := NOW;
+ Read_precharge(2) := '0';
+ END IF;
+ END IF;
+ IF ((Read_precharge(3) = '1') AND (NOW - RAS_chk3 >= tRAS)) THEN
+ IF ((Burst_length_2 = '1' AND Count_precharge(3) >= 1) OR
+ (Burst_length_4 = '1' AND Count_precharge(3) >= 2) OR
+ (Burst_length_8 = '1' AND Count_precharge(3) >= 4)) THEN
+ Pc_b3 := '1';
+ Act_b3 := '0';
+ RP_chk3 := NOW;
+ Read_precharge(3) := '0';
+ END IF;
+ END IF;
+
+ -- Write with AutoPrecharge Calculation
+ -- The device start internal precharge when:
+ -- 1. Meet tRAS requirement
+ -- 2. Two clock after last burst
+ -- Since tWR is time base, the model will compensate tRP
+ IF ((Write_precharge(0) = '1') AND (NOW - RAS_chk0 >= tRAS)) THEN
+ IF ((Burst_length_2 = '1' AND Count_precharge (0) >= 4) OR
+ (Burst_length_4 = '1' AND Count_precharge (0) >= 5) OR
+ (Burst_length_8 = '1' AND Count_precharge (0) >= 7)) THEN
+ Pc_b0 := '1';
+ Act_b0 := '0';
+ RP_chk0 := NOW - ((2 * tCK) - tWR);
+ Write_precharge(0) := '0';
+ END IF;
+ END IF;
+ IF ((Write_precharge(1) = '1') AND (NOW - RAS_chk1 >= tRAS)) THEN
+ IF ((Burst_length_2 = '1' AND Count_precharge (1) >= 4) OR
+ (Burst_length_4 = '1' AND Count_precharge (1) >= 5) OR
+ (Burst_length_8 = '1' AND Count_precharge (1) >= 7)) THEN
+ Pc_b1 := '1';
+ Act_b1 := '0';
+ RP_chk1 := NOW - ((2 * tCK) - tWR);
+ Write_precharge(1) := '0';
+ END IF;
+ END IF;
+ IF ((Write_precharge(2) = '1') AND (NOW - RAS_chk2 >= tRAS)) THEN
+ IF ((Burst_length_2 = '1' AND Count_precharge (2) >= 4) OR
+ (Burst_length_4 = '1' AND Count_precharge (2) >= 5) OR
+ (Burst_length_8 = '1' AND Count_precharge (2) >= 7)) THEN
+ Pc_b2 := '1';
+ Act_b2 := '0';
+ RP_chk2 := NOW - ((2 * tCK) - tWR);
+ Write_precharge(2) := '0';
+ END IF;
+ END IF;
+ IF ((Write_precharge(3) = '1') AND (NOW - RAS_chk3 >= tRAS)) THEN
+ IF ((Burst_length_2 = '1' AND Count_precharge (3) >= 4) OR
+ (Burst_length_4 = '1' AND Count_precharge (3) >= 5) OR
+ (Burst_length_8 = '1' AND Count_precharge (3) >= 7)) THEN
+ Pc_b3 := '1';
+ Act_b3 := '0';
+ RP_chk3 := NOW - ((2 * tCK) - tWR);
+ Write_precharge(3) := '0';
+ END IF;
+ END IF;
+ END IF;
+
+ --
+ -- DLL Counter
+ --
+ IF Sys_clk'EVENT AND Sys_clk = '1' THEN
+ IF (DLL_Reset = '1' AND DLL_done = '0') THEN
+ DLL_count := DLL_count + 1;
+ IF (DLL_count >= 200) THEN
+ DLL_done := '1';
+ END IF;
+ END IF;
+ END IF;
+
+ --
+ -- Control Logic
+ --
+ IF Sys_clk'EVENT AND Sys_clk = '1' THEN
+ -- Auto Refresh
+ IF Aref_enable = '1' THEN
+ -- Auto Refresh to Auto Refresh
+ ASSERT (NOW - RFC_chk >= tRFC)
+ REPORT "tRFC violation during Auto Refresh"
+ SEVERITY WARNING;
+
+ -- Precharge to Auto Refresh
+ ASSERT ((NOW - RP_chk0 >= tRP) AND (NOW - RP_chk1 >= tRP) AND
+ (NOW - RP_chk2 >= tRP) AND (NOW - RP_chk3 >= tRP))
+ REPORT "tRP violation during Auto Refresh"
+ SEVERITY WARNING;
+
+ -- Precharge to Auto Refresh
+ ASSERT (Pc_b0 = '1' AND Pc_b1 = '1' AND Pc_b2 = '1' AND Pc_b3 = '1')
+ REPORT "All banks must be Precharge before Auto Refresh"
+ SEVERITY WARNING;
+
+ -- Record current tRFC time
+ RFC_chk := NOW;
+ END IF;
+
+ -- Extended Load Mode Register
+ IF Ext_mode_enable = '1' THEN
+ IF (Pc_b0 = '1' AND Pc_b1 = '1' AND Pc_b2 = '1' AND Pc_b3 = '1') THEN
+ IF (Addr (0) = '0') THEN
+ DLL_enable := '1';
+ ELSE
+ DLL_enable := '0';
+ END IF;
+ END IF;
+
+ -- Precharge to EMR
+ ASSERT (Pc_b0 = '1' AND Pc_b1 = '1' AND Pc_b2 = '1' AND Pc_b3 = '1')
+ REPORT "All bank must be Precharged before Extended Mode Register"
+ SEVERITY WARNING;
+
+ -- Precharge to EMR
+ ASSERT ((NOW - RP_chk0 >= tRP) AND (NOW - RP_chk1 >= tRP) AND
+ (NOW - RP_chk2 >= tRP) AND (NOW - RP_chk3 >= tRP))
+ REPORT "tRP violation during Extended Load Register"
+ SEVERITY WARNING;
+
+ -- LMR/EMR to EMR
+ ASSERT (NOW - MRD_chk >= tMRD)
+ REPORT "tMRD violation during Extended Mode Register"
+ SEVERITY WARNING;
+
+ -- Record current tMRD time
+ MRD_chk := NOW;
+ END IF;
+
+ -- Load Mode Register
+ IF Mode_reg_enable = '1' THEN
+ -- Register mode
+ Mode_reg <= Addr;
+
+ -- DLL Reset
+ IF (DLL_enable = '1' AND Addr (8) = '1') THEN
+ DLL_reset := '1';
+ DLL_done := '0';
+ DLL_count := 0;
+ ELSIF (DLL_enable = '1' AND DLL_reset = '0' AND Addr (8) = '0') THEN
+ ASSERT (FALSE)
+ REPORT "DLL is ENABLE: DLL RESET is require"
+ SEVERITY WARNING;
+ ELSIF (DLL_enable = '0' AND Addr (8) = '1') THEN
+ ASSERT (FALSE)
+ REPORT "DLL is DISABLE: DLL RESET will be ignored"
+ SEVERITY WARNING;
+ END IF;
+
+ -- Precharge to LMR
+ ASSERT (Pc_b0 = '1' AND Pc_b1 = '1' AND Pc_b2 = '1' AND Pc_b3 = '1')
+ REPORT "All bank must be Precharged before Load Mode Register"
+ SEVERITY WARNING;
+
+ -- Precharge to EMR
+ ASSERT ((NOW - RP_chk0 >= tRP) AND (NOW - RP_chk1 >= tRP) AND
+ (NOW - RP_chk2 >= tRP) AND (NOW - RP_chk3 >= tRP))
+ REPORT "tRP violation during Load Mode Register"
+ SEVERITY WARNING;
+
+ -- LMR/ELMR to LMR
+ ASSERT (NOW - MRD_chk >= tMRD)
+ REPORT "tMRD violation during Load Mode Register"
+ SEVERITY WARNING;
+
+ -- Check for invalid Burst Length
+ ASSERT ((Addr (2 DOWNTO 0) = "001") OR -- BL = 2
+ (Addr (2 DOWNTO 0) = "010") OR -- BL = 4
+ (Addr (2 DOWNTO 0) = "011")) -- BL = 8
+ REPORT "Invalid Burst Length during Load Mode Register"
+ SEVERITY WARNING;
+
+ -- Check for invalid CAS Latency
+ ASSERT ((Addr (6 DOWNTO 4) = "010") OR -- CL = 2.0
+ (Addr (6 DOWNTO 4) = "110")) -- CL = 2.5
+ REPORT "Invalid CAS Latency during Load Mode Register"
+ SEVERITY WARNING;
+
+ -- Record current tMRD time
+ MRD_chk := NOW;
+ END IF;
+
+ -- Active Block (latch Bank and Row Address)
+ IF Active_enable = '1' THEN
+ -- Activate an OPEN bank can corrupt data
+ ASSERT ((Ba = "00" AND Act_b0 = '0') OR
+ (Ba = "01" AND Act_b1 = '0') OR
+ (Ba = "10" AND Act_b2 = '0') OR
+ (Ba = "11" AND Act_b3 = '0'))
+ REPORT "Bank is already activated - data can be corrupted"
+ SEVERITY WARNING;
+
+ -- Activate Bank 0
+ IF Ba = "00" AND Pc_b0 = '1' THEN
+ -- Activate to Activate (same bank)
+ ASSERT (NOW - RC_chk0 >= tRC)
+ REPORT "tRC violation during Activate Bank 0"
+ SEVERITY WARNING;
+
+ -- Precharge to Active
+ ASSERT (NOW - RP_chk0 >= tRP)
+ REPORT "tRP violation during Activate Bank 0"
+ SEVERITY WARNING;
+
+ -- Record Variables for checking violation
+ Act_b0 := '1';
+ Pc_b0 := '0';
+ B0_row_addr := Addr;
+ RC_chk0 := NOW;
+ RCD_chk0 := NOW;
+ RAS_chk0 := NOW;
+ RAP_chk0 := NOW;
+ END IF;
+
+ -- Activate Bank 1
+ IF Ba = "01" AND Pc_b1 = '1' THEN
+ -- Activate to Activate (same bank)
+ ASSERT (NOW - RC_chk1 >= tRC)
+ REPORT "tRC violation during Activate Bank 1"
+ SEVERITY WARNING;
+
+ -- Precharge to Active
+ ASSERT (NOW - RP_chk1 >= tRP)
+ REPORT "tRP violation during Activate Bank 1"
+ SEVERITY WARNING;
+
+ -- Record Variables for checking violation
+ Act_b1 := '1';
+ Pc_b1 := '0';
+ B1_row_addr := Addr;
+ RC_chk1 := NOW;
+ RCD_chk1 := NOW;
+ RAS_chk1 := NOW;
+ RAP_chk1 := NOW;
+ END IF;
+
+ -- Activate Bank 2
+ IF Ba = "10" AND Pc_b2 = '1' THEN
+ -- Activate to Activate (same bank)
+ ASSERT (NOW - RC_chk2 >= tRC)
+ REPORT "tRC violation during Activate Bank 2"
+ SEVERITY WARNING;
+
+ -- Precharge to Active
+ ASSERT (NOW - RP_chk2 >= tRP)
+ REPORT "tRP violation during Activate Bank 2"
+ SEVERITY WARNING;
+
+ -- Record Variables for checking violation
+ Act_b2 := '1';
+ Pc_b2 := '0';
+ B2_row_addr := Addr;
+ RC_chk2 := NOW;
+ RCD_chk2 := NOW;
+ RAS_chk2 := NOW;
+ RAP_chk2 := NOW;
+ END IF;
+
+ -- Activate Bank 3
+ IF Ba = "11" AND Pc_b3 = '1' THEN
+ -- Activate to Activate (same bank)
+ ASSERT (NOW - RC_chk3 >= tRC)
+ REPORT "tRC violation during Activate Bank 3"
+ SEVERITY WARNING;
+
+ -- Precharge to Active
+ ASSERT (NOW - RP_chk3 >= tRP)
+ REPORT "tRP violation during Activate Bank 3"
+ SEVERITY WARNING;
+
+ -- Record Variables for checking violation
+ Act_b3 := '1';
+ Pc_b3 := '0';
+ B3_row_addr := Addr;
+ RC_chk3 := NOW;
+ RCD_chk3 := NOW;
+ RAS_chk3 := NOW;
+ RAP_chk3 := NOW;
+ END IF;
+
+ -- Activate Bank A to Activate Bank B
+ IF (Prev_bank /= Ba) THEN
+ ASSERT (NOW - RRD_chk >= tRRD)
+ REPORT "tRRD violation during Activate"
+ SEVERITY WARNING;
+ END IF;
+
+ -- AutoRefresh to Activate
+ ASSERT (NOW - RFC_chk >= tRFC)
+ REPORT "tRFC violation during Activate"
+ SEVERITY WARNING;
+
+ -- Record Variables for Checking Violation
+ RRD_chk := NOW;
+ Prev_bank := Ba;
+ END IF;
+
+ -- Precharge Block - Consider NOP if bank already precharged or in process of precharging
+ IF Prech_enable = '1' THEN
+ -- EMR or LMR to Precharge
+ ASSERT (NOW - MRD_chk >= tMRD)
+ REPORT "tMRD violation during Precharge"
+ SEVERITY WARNING;
+
+ -- Precharge Bank 0
+ IF ((Addr (10) = '1' OR (Addr (10) = '0' AND Ba = "00")) AND Act_b0 = '1') THEN
+ Act_b0 := '0';
+ Pc_b0 := '1';
+ RP_chk0 := NOW;
+
+ -- Activate to Precharge bank 0
+ ASSERT (NOW - RAS_chk0 >= tRAS)
+ REPORT "tRAS violation during Precharge"
+ SEVERITY WARNING;
+
+ -- tWR violation check for Write
+ ASSERT (NOW - WR_chk0 >= tWR)
+ REPORT "tWR violation during Precharge"
+ SEVERITY WARNING;
+ END IF;
+
+ -- Precharge Bank 1
+ IF ((Addr (10) = '1' OR (Addr (10) = '0' AND Ba = "01")) AND Act_b1 = '1') THEN
+ Act_b1 := '0';
+ Pc_b1 := '1';
+ RP_chk1 := NOW;
+
+ -- Activate to Precharge
+ ASSERT (NOW - RAS_chk1 >= tRAS)
+ REPORT "tRAS violation during Precharge"
+ SEVERITY WARNING;
+
+ -- tWR violation check for Write
+ ASSERT (NOW - WR_chk1 >= tWR)
+ REPORT "tWR violation during Precharge"
+ SEVERITY WARNING;
+ END IF;
+
+ -- Precharge Bank 2
+ IF ((Addr (10) = '1' OR (Addr (10) = '0' AND Ba = "10")) AND Act_b2 = '1') THEN
+ Act_b2 := '0';
+ Pc_b2 := '1';
+ RP_chk2 := NOW;
+
+ -- Activate to Precharge
+ ASSERT (NOW - RAS_chk2 >= tRAS)
+ REPORT "tRAS violation during Precharge"
+ SEVERITY WARNING;
+
+ -- tWR violation check for Write
+ ASSERT (NOW - WR_chk2 >= tWR)
+ REPORT "tWR violation during Precharge"
+ SEVERITY WARNING;
+ END IF;
+
+ -- Precharge Bank 3
+ IF ((Addr (10) = '1' OR (Addr (10) = '0' AND Ba = "11")) AND Act_b3 = '1') THEN
+ Act_b3 := '0';
+ Pc_b3 := '1';
+ RP_chk3 := NOW;
+
+ -- Activate to Precharge
+ ASSERT (NOW - RAS_chk3 >= tRAS)
+ REPORT "tRAS violation during Precharge"
+ SEVERITY WARNING;
+
+ -- tWR violation check for Write
+ ASSERT (NOW - WR_chk3 >= tWR)
+ REPORT "tWR violation during Precharge"
+ SEVERITY WARNING;
+ END IF;
+
+ -- Pipeline for READ
+ IF CAS_latency_15 = '1' THEN
+ A10_precharge (3) := Addr(10);
+ Bank_precharge (3) := Ba;
+ Cmnd_precharge (3) := '1';
+ ELSIF CAS_latency_2 = '1' THEN
+ A10_precharge (4) := Addr(10);
+ Bank_precharge (4) := Ba;
+ Cmnd_precharge (4) := '1';
+ ELSIF CAS_latency_25 = '1' THEN
+ A10_precharge (5) := Addr(10);
+ Bank_precharge (5) := Ba;
+ Cmnd_precharge (5) := '1';
+ ELSIF CAS_latency_3 = '1' THEN
+ A10_precharge (6) := Addr(10);
+ Bank_precharge (6) := Ba;
+ Cmnd_precharge (6) := '1';
+ ELSIF CAS_latency_4 = '1' THEN
+ A10_precharge (8) := Addr(10);
+ Bank_precharge (8) := Ba;
+ Cmnd_precharge (8) := '1';
+ END IF;
+ END IF;
+
+ -- Burst Terminate
+ IF Burst_term = '1' THEN
+ -- Pipeline for Read
+ IF CAS_latency_15 = '1' THEN
+ Cmnd_bst (3) := '1';
+ ELSIF CAS_latency_2 = '1' THEN
+ Cmnd_bst (4) := '1';
+ ELSIF CAS_latency_25 = '1' THEN
+ Cmnd_bst (5) := '1';
+ ELSIF CAS_latency_3 = '1' THEN
+ Cmnd_bst (6) := '1';
+ ELSIF CAS_latency_4 = '1' THEN
+ Cmnd_bst (8) := '1';
+ END IF;
+
+ -- Terminate Write
+ ASSERT (Data_in_enable = '0')
+ REPORT "It's illegal to Burst Terminate a Write"
+ SEVERITY WARNING;
+
+ -- Terminate Read with Auto Precharge
+ ASSERT (Read_precharge (0) = '0' AND Read_precharge (1) = '0' AND
+ Read_precharge (2) = '0' AND Read_precharge (3) = '0')
+ REPORT "It's illegal to Burst Terminate a Read with Auto Precharge"
+ SEVERITY WARNING;
+ END IF;
+
+ -- Read Command
+ IF Read_enable = '1' THEN
+ -- CAS Latency Pipeline
+ IF Cas_latency_15 = '1' THEN
+ Read_cmnd (3) := '1';
+ Read_bank (3) := Ba;
+ Read_cols (3) := Addr (8 DOWNTO 0);
+ ELSIF Cas_latency_2 = '1' THEN
+ Read_cmnd (4) := '1';
+ Read_bank (4) := Ba;
+ Read_cols (4) := Addr (8 DOWNTO 0);
+ ELSIF Cas_latency_25 = '1' THEN
+ Read_cmnd (5) := '1';
+ Read_bank (5) := Ba;
+ Read_cols (5) := Addr (8 DOWNTO 0);
+ ELSIF Cas_latency_3 = '1' THEN
+ Read_cmnd (6) := '1';
+ Read_bank (6) := Ba;
+ Read_cols (6) := Addr (8 DOWNTO 0);
+ ELSIF Cas_latency_4 = '1' THEN
+ Read_cmnd (8) := '1';
+ Read_bank (8) := Ba;
+ Read_cols (8) := Addr (8 DOWNTO 0);
+ END IF;
+
+ -- Write to Read: Terminate Write Immediately
+ IF Data_in_enable = '1' THEN
+ Data_in_enable := '0';
+ END IF;
+
+ -- Interrupting a Read with Auto Precharge (same bank only)
+ ASSERT (Read_precharge(CONV_INTEGER(Ba)) = '0')
+ REPORT "It's illegal to interrupt a Read with Auto Precharge"
+ SEVERITY WARNING;
+
+ -- Activate to Read
+ ASSERT ((Ba = "00" AND Act_b0 = '1') OR
+ (Ba = "01" AND Act_b1 = '1') OR
+ (Ba = "10" AND Act_b2 = '1') OR
+ (Ba = "11" AND Act_b3 = '1'))
+ REPORT "Bank is not Activated for Read"
+ SEVERITY WARNING;
+
+ -- Activate to Read without Auto Precharge
+ IF Addr (10) = '0' THEN
+ ASSERT ((Ba = "00" AND NOW - RCD_chk0 >= tRCD) OR
+ (Ba = "01" AND NOW - RCD_chk1 >= tRCD) OR
+ (Ba = "10" AND NOW - RCD_chk2 >= tRCD) OR
+ (Ba = "11" AND NOW - RCD_chk3 >= tRCD))
+ REPORT "tRCD violation during Read"
+ SEVERITY WARNING;
+ END IF;
+
+ -- Activate to Read with Auto Precharge
+ IF Addr (10) = '1' THEN
+ ASSERT ((Ba = "00" AND NOW - RAP_chk0 >= tRAP) OR
+ (Ba = "01" AND NOW - RAP_chk1 >= tRAP) OR
+ (Ba = "10" AND NOW - RAP_chk2 >= tRAP) OR
+ (Ba = "11" AND NOW - RAP_chk3 >= tRAP))
+ REPORT "tRAP violation during Read"
+ SEVERITY WARNING;
+ END IF;
+
+ -- Auto precharge
+ IF Addr (10) = '1' THEN
+ Read_precharge (Conv_INTEGER(Ba)) := '1';
+ Count_precharge (Conv_INTEGER(Ba)) := 0;
+ END IF;
+
+ -- DLL Check
+ IF (DLL_reset = '1') THEN
+ ASSERT (DLL_done = '1')
+ REPORT "DLL RESET not complete"
+ SEVERITY WARNING;
+ END IF;
+ END IF;
+
+ -- Write Command
+ IF Write_enable = '1' THEN
+ -- Pipeline for Write
+ Write_cmnd (2) := '1';
+ Write_bank (2) := Ba;
+ Write_cols (2) := Addr (8 DOWNTO 0);
+
+ -- Interrupting a Write with Auto Precharge (same bank only)
+ ASSERT (Write_precharge(CONV_INTEGER(Ba)) = '0')
+ REPORT "It's illegal to interrupt a Write with Auto Precharge"
+ SEVERITY WARNING;
+
+ -- Activate to Write
+ ASSERT ((Ba = "00" AND Act_b0 = '1') OR
+ (Ba = "01" AND Act_b1 = '1') OR
+ (Ba = "10" AND Act_b2 = '1') OR
+ (Ba = "11" AND Act_b3 = '1'))
+ REPORT "Bank is not Activated for Write"
+ SEVERITY WARNING;
+
+ -- Activate to Write
+ ASSERT ((Ba = "00" AND NOW - RCD_chk0 >= tRCD) OR
+ (Ba = "01" AND NOW - RCD_chk1 >= tRCD) OR
+ (Ba = "10" AND NOW - RCD_chk2 >= tRCD) OR
+ (Ba = "11" AND NOW - RCD_chk3 >= tRCD))
+ REPORT "tRCD violation during Write"
+ SEVERITY WARNING;
+
+ -- Auto precharge
+ IF Addr (10) = '1' THEN
+ Write_precharge (Conv_INTEGER(Ba)) := '1';
+ Count_precharge (Conv_INTEGER(Ba)) := 0;
+ END IF;
+ END IF;
+ END IF;
+ END PROCESS;
+
+ --
+ -- Dqs Receiver
+ --
+ dqs_rcvrs : PROCESS
+ VARIABLE Dm_temp : STD_LOGIC_VECTOR (1 DOWNTO 0);
+ VARIABLE Dq_temp : STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0);
+ BEGIN
+ WAIT ON Dqs;
+ -- Latch data at posedge Dqs
+ IF Dqs'EVENT AND Dqs (1) = '1' AND Dqs (0) = '1' THEN
+ Dq_temp := Dq;
+ Dm_temp := Dm;
+ END IF;
+ -- Latch data at negedge Dqs
+ IF Dqs'EVENT AND Dqs (1) = '0' AND Dqs (0) = '0' THEN
+ Dq_pair <= (Dq & Dq_temp);
+ Dm_pair <= (Dm & Dm_temp);
+ END IF;
+ END PROCESS;
+
+ --
+ -- Setup timing checks
+ --
+ Setup_check : PROCESS
+ BEGIN
+ WAIT ON Sys_clk;
+ IF Sys_clk'EVENT AND Sys_clk = '1' THEN
+ ASSERT(Cke'LAST_EVENT >= tIS)
+ REPORT "CKE Setup time violation -- tIS"
+ SEVERITY WARNING;
+ ASSERT(Cs_n'LAST_EVENT >= tIS)
+ REPORT "CS# Setup time violation -- tIS"
+ SEVERITY WARNING;
+ ASSERT(Cas_n'LAST_EVENT >= tIS)
+ REPORT "CAS# Setup time violation -- tIS"
+ SEVERITY WARNING;
+ ASSERT(Ras_n'LAST_EVENT >= tIS)
+ REPORT "RAS# Setup time violation -- tIS"
+ SEVERITY WARNING;
+ ASSERT(We_n'LAST_EVENT >= tIS)
+ REPORT "WE# Setup time violation -- tIS"
+ SEVERITY WARNING;
+ ASSERT(Addr'LAST_EVENT >= tIS)
+ REPORT "ADDR Setup time violation -- tIS"
+ SEVERITY WARNING;
+ ASSERT(Ba'LAST_EVENT >= tIS)
+ REPORT "BA Setup time violation -- tIS"
+ SEVERITY WARNING;
+ END IF;
+ END PROCESS;
+
+ --
+ -- Hold timing checks
+ --
+ Hold_check : PROCESS
+ BEGIN
+ WAIT ON Sys_clk'DELAYED (tIH);
+ IF Sys_clk'DELAYED (tIH) = '1' THEN
+ ASSERT(Cke'LAST_EVENT >= tIH)
+ REPORT "CKE Hold time violation -- tIH"
+ SEVERITY WARNING;
+ ASSERT(Cs_n'LAST_EVENT >= tIH)
+ REPORT "CS# Hold time violation -- tIH"
+ SEVERITY WARNING;
+ ASSERT(Cas_n'LAST_EVENT >= tIH)
+ REPORT "CAS# Hold time violation -- tIH"
+ SEVERITY WARNING;
+ ASSERT(Ras_n'LAST_EVENT >= tIH)
+ REPORT "RAS# Hold time violation -- tIH"
+ SEVERITY WARNING;
+ ASSERT(We_n'LAST_EVENT >= tIH)
+ REPORT "WE# Hold time violation -- tIH"
+ SEVERITY WARNING;
+ ASSERT(Addr'LAST_EVENT >= tIH)
+ REPORT "ADDR Hold time violation -- tIH"
+ SEVERITY WARNING;
+ ASSERT(Ba'LAST_EVENT >= tIH)
+ REPORT "BA Hold time violation -- tIH"
+ SEVERITY WARNING;
+ END IF;
+ END PROCESS;
+
+END behave;
diff --git a/zpu/hdl/zpu4/src/.cvsignore b/zpu/hdl/zpu4/src/.cvsignore
new file mode 100644
index 0000000..41c40a0
--- /dev/null
+++ b/zpu/hdl/zpu4/src/.cvsignore
@@ -0,0 +1,5 @@
+work
+vsim.wlf
+xilinx_device_details.xml
+tcl_stacktrace.txt
+vish_stacktrace.vstf
diff --git a/zpu/hdl/zpu4/src/bram.vhd b/zpu/hdl/zpu4/src/bram.vhd
new file mode 100644
index 0000000..435f3f4
--- /dev/null
+++ b/zpu/hdl/zpu4/src/bram.vhd
@@ -0,0 +1,3807 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+entity dram is
+port (clk : in std_logic;
+ areset : in std_logic;
+ mem_writeEnable : in std_logic;
+ mem_readEnable : in std_logic;
+ mem_addr : in std_logic_vector(maxAddrBit downto 0);
+ mem_write : in std_logic_vector(wordSize-1 downto 0);
+ mem_read : out std_logic_vector(wordSize-1 downto 0);
+ mem_busy : out std_logic;
+ mem_writeMask : in std_logic_vector(wordBytes-1 downto 0));
+end dram;
+
+architecture dram_arch of dram is
+
+type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
+
+shared variable ram : ram_type :=
+(
+0 => x"800b0b0b",
+1 => x"0b0b8070",
+2 => x"0b0b80e5",
+3 => x"d00c3a0b",
+4 => x"0b0bbed7",
+5 => x"04000000",
+6 => x"00000000",
+7 => x"00000000",
+8 => x"80088408",
+9 => x"88080b0b",
+10 => x"0bbfa72d",
+11 => x"880c840c",
+12 => x"800c0400",
+13 => x"00000000",
+14 => x"00000000",
+15 => x"00000000",
+16 => x"71fd0608",
+17 => x"72830609",
+18 => x"81058205",
+19 => x"832b2a83",
+20 => x"ffff0652",
+21 => x"0b0b0400",
+22 => x"00000000",
+23 => x"00000000",
+24 => x"71fd0608",
+25 => x"83ffff73",
+26 => x"83060981",
+27 => x"05820583",
+28 => x"2b2b0906",
+29 => x"7383ffff",
+30 => x"0b0b0b0b",
+31 => x"83a70400",
+32 => x"72098105",
+33 => x"72057373",
+34 => x"09060906",
+35 => x"73097306",
+36 => x"070a8106",
+37 => x"530b0b51",
+38 => x"04000000",
+39 => x"00000000",
+40 => x"72722473",
+41 => x"732e0753",
+42 => x"0b0b5104",
+43 => x"00000000",
+44 => x"00000000",
+45 => x"00000000",
+46 => x"00000000",
+47 => x"00000000",
+48 => x"71737109",
+49 => x"71068106",
+50 => x"30720a10",
+51 => x"0a720a10",
+52 => x"0a31050a",
+53 => x"81065151",
+54 => x"530b0b51",
+55 => x"04000000",
+56 => x"72722673",
+57 => x"732e0753",
+58 => x"0b0b5104",
+59 => x"00000000",
+60 => x"00000000",
+61 => x"00000000",
+62 => x"00000000",
+63 => x"00000000",
+64 => x"00000000",
+65 => x"00000000",
+66 => x"00000000",
+67 => x"00000000",
+68 => x"00000000",
+69 => x"00000000",
+70 => x"00000000",
+71 => x"00000000",
+72 => x"0b0b0b88",
+73 => x"c6040000",
+74 => x"00000000",
+75 => x"00000000",
+76 => x"00000000",
+77 => x"00000000",
+78 => x"00000000",
+79 => x"00000000",
+80 => x"720a722b",
+81 => x"0a530b0b",
+82 => x"51040000",
+83 => x"00000000",
+84 => x"00000000",
+85 => x"00000000",
+86 => x"00000000",
+87 => x"00000000",
+88 => x"72729f06",
+89 => x"0981050b",
+90 => x"0b0b88a7",
+91 => x"05040000",
+92 => x"00000000",
+93 => x"00000000",
+94 => x"00000000",
+95 => x"00000000",
+96 => x"72722aff",
+97 => x"739f062a",
+98 => x"0974090a",
+99 => x"8106ff05",
+100 => x"0607530b",
+101 => x"0b510400",
+102 => x"00000000",
+103 => x"00000000",
+104 => x"7171530b",
+105 => x"0b510406",
+106 => x"73830609",
+107 => x"81058205",
+108 => x"832b0b2b",
+109 => x"0772fc06",
+110 => x"0c515104",
+111 => x"00000000",
+112 => x"72098105",
+113 => x"72050970",
+114 => x"81050906",
+115 => x"0a810653",
+116 => x"0b0b5104",
+117 => x"00000000",
+118 => x"00000000",
+119 => x"00000000",
+120 => x"72098105",
+121 => x"72050970",
+122 => x"81050906",
+123 => x"0a098106",
+124 => x"530b0b51",
+125 => x"04000000",
+126 => x"00000000",
+127 => x"00000000",
+128 => x"71098105",
+129 => x"520b0b04",
+130 => x"00000000",
+131 => x"00000000",
+132 => x"00000000",
+133 => x"00000000",
+134 => x"00000000",
+135 => x"00000000",
+136 => x"72720981",
+137 => x"0505530b",
+138 => x"0b510400",
+139 => x"00000000",
+140 => x"00000000",
+141 => x"00000000",
+142 => x"00000000",
+143 => x"00000000",
+144 => x"72097206",
+145 => x"73730906",
+146 => x"07530b0b",
+147 => x"51040000",
+148 => x"00000000",
+149 => x"00000000",
+150 => x"00000000",
+151 => x"00000000",
+152 => x"71fc0608",
+153 => x"72830609",
+154 => x"81058305",
+155 => x"1010102a",
+156 => x"81ff0652",
+157 => x"0b0b0400",
+158 => x"00000000",
+159 => x"00000000",
+160 => x"71fc0608",
+161 => x"0b0b80e5",
+162 => x"bc738306",
+163 => x"10100508",
+164 => x"060b0b0b",
+165 => x"88ac0400",
+166 => x"00000000",
+167 => x"00000000",
+168 => x"80088408",
+169 => x"88087575",
+170 => x"0b0b0ba3",
+171 => x"fa2d5050",
+172 => x"80085688",
+173 => x"0c840c80",
+174 => x"0c510400",
+175 => x"00000000",
+176 => x"80088408",
+177 => x"88087575",
+178 => x"0b0b0ba4",
+179 => x"ca2d5050",
+180 => x"80085688",
+181 => x"0c840c80",
+182 => x"0c510400",
+183 => x"00000000",
+184 => x"72097081",
+185 => x"0509060a",
+186 => x"8106ff05",
+187 => x"70540b0b",
+188 => x"71067309",
+189 => x"727405ff",
+190 => x"05060751",
+191 => x"51510400",
+192 => x"72097081",
+193 => x"0509060a",
+194 => x"098106ff",
+195 => x"0570540b",
+196 => x"0b710673",
+197 => x"09727405",
+198 => x"ff050607",
+199 => x"51515104",
+200 => x"05ff0504",
+201 => x"00000000",
+202 => x"00000000",
+203 => x"00000000",
+204 => x"00000000",
+205 => x"00000000",
+206 => x"00000000",
+207 => x"00000000",
+208 => x"810b0b0b",
+209 => x"80e5cc0c",
+210 => x"51040000",
+211 => x"00000000",
+212 => x"00000000",
+213 => x"00000000",
+214 => x"00000000",
+215 => x"00000000",
+216 => x"71810552",
+217 => x"0b0b0400",
+218 => x"00000000",
+219 => x"00000000",
+220 => x"00000000",
+221 => x"00000000",
+222 => x"00000000",
+223 => x"00000000",
+224 => x"00000000",
+225 => x"00000000",
+226 => x"00000000",
+227 => x"00000000",
+228 => x"00000000",
+229 => x"00000000",
+230 => x"00000000",
+231 => x"00000000",
+232 => x"02840572",
+233 => x"10100552",
+234 => x"0b0b0400",
+235 => x"00000000",
+236 => x"00000000",
+237 => x"00000000",
+238 => x"00000000",
+239 => x"00000000",
+240 => x"00000000",
+241 => x"00000000",
+242 => x"00000000",
+243 => x"00000000",
+244 => x"00000000",
+245 => x"00000000",
+246 => x"00000000",
+247 => x"00000000",
+248 => x"717105ff",
+249 => x"0571530b",
+250 => x"0b510400",
+251 => x"00000000",
+252 => x"00000000",
+253 => x"00000000",
+254 => x"00000000",
+255 => x"00000000",
+256 => x"84803f80",
+257 => x"cef23f04",
+258 => x"10101010",
+259 => x"10101010",
+260 => x"10101010",
+261 => x"10101010",
+262 => x"10101010",
+263 => x"10101010",
+264 => x"10101010",
+265 => x"10101053",
+266 => x"0b0b5104",
+267 => x"7381ff06",
+268 => x"73830609",
+269 => x"81058305",
+270 => x"1010102b",
+271 => x"0772fc06",
+272 => x"0c515104",
+273 => x"3c047272",
+274 => x"80728106",
+275 => x"ff050972",
+276 => x"06057110",
+277 => x"520b0b72",
+278 => x"0a100a53",
+279 => x"0b0b72e9",
+280 => x"38515153",
+281 => x"0b0b5104",
+282 => x"70700b0b",
+283 => x"80f5c008",
+284 => x"520b0b84",
+285 => x"0b720508",
+286 => x"70810651",
+287 => x"510b0b70",
+288 => x"f2387108",
+289 => x"81ff0680",
+290 => x"0c505004",
+291 => x"70700b0b",
+292 => x"80f5c008",
+293 => x"520b0b84",
+294 => x"0b720508",
+295 => x"700a100a",
+296 => x"70810651",
+297 => x"51510b0b",
+298 => x"70ed3873",
+299 => x"720c5050",
+300 => x"0480e5cc",
+301 => x"08802ea8",
+302 => x"38838080",
+303 => x"0b0b0b80",
+304 => x"f5c00c82",
+305 => x"a0800b0b",
+306 => x"0b80f5c4",
+307 => x"0c829080",
+308 => x"0b80f5d4",
+309 => x"0c0b0b80",
+310 => x"f5c80b80",
+311 => x"f5d80c04",
+312 => x"f8808080",
+313 => x"a40b0b0b",
+314 => x"80f5c00c",
+315 => x"f8808082",
+316 => x"800b0b0b",
+317 => x"80f5c40c",
+318 => x"f8808084",
+319 => x"800b80f5",
+320 => x"d40cf880",
+321 => x"8080940b",
+322 => x"80f5d80c",
+323 => x"f8808080",
+324 => x"9c0b80f5",
+325 => x"d00cf880",
+326 => x"8080a00b",
+327 => x"80f5dc0c",
+328 => x"04f23d0d",
+329 => x"600b0b80",
+330 => x"f5c40856",
+331 => x"5d82750c",
+332 => x"8059805a",
+333 => x"800b8f3d",
+334 => x"71101017",
+335 => x"70085957",
+336 => x"5d5b8076",
+337 => x"81ff067c",
+338 => x"832b5658",
+339 => x"520b0b0b",
+340 => x"76530b0b",
+341 => x"7b5198c6",
+342 => x"3f7d7f7a",
+343 => x"72077c72",
+344 => x"07717160",
+345 => x"8105415f",
+346 => x"5d5b5957",
+347 => x"557a8724",
+348 => x"80c1380b",
+349 => x"0b80f5c4",
+350 => x"087b1010",
+351 => x"71057008",
+352 => x"58515580",
+353 => x"7681ff06",
+354 => x"7c832b56",
+355 => x"58520b0b",
+356 => x"0b76530b",
+357 => x"0b7b5198",
+358 => x"853f7d7f",
+359 => x"7a72077c",
+360 => x"72077171",
+361 => x"60810541",
+362 => x"5f5d5b59",
+363 => x"5755877b",
+364 => x"25c13876",
+365 => x"7d0c7784",
+366 => x"1e0c7c80",
+367 => x"0c903d0d",
+368 => x"04707080",
+369 => x"f5cc3351",
+370 => x"0b0b70b2",
+371 => x"3880e5d8",
+372 => x"08700852",
+373 => x"0b0b520b",
+374 => x"0b0b7080",
+375 => x"2e9a3884",
+376 => x"720580e5",
+377 => x"d80c702d",
+378 => x"80e5d808",
+379 => x"7008520b",
+380 => x"0b520b0b",
+381 => x"0b70e838",
+382 => x"810b80f5",
+383 => x"cc345050",
+384 => x"0404700b",
+385 => x"0b80f5bc",
+386 => x"08802e8e",
+387 => x"380b0b0b",
+388 => x"0b800b80",
+389 => x"2e098106",
+390 => x"83385004",
+391 => x"0b0b80f5",
+392 => x"bc510b0b",
+393 => x"0bf3d93f",
+394 => x"50040470",
+395 => x"70028f05",
+396 => x"33520b0b",
+397 => x"0b0b718a",
+398 => x"2e893871",
+399 => x"51fccd3f",
+400 => x"5050048d",
+401 => x"51fcc53f",
+402 => x"7151fcc0",
+403 => x"3f505004",
+404 => x"cd3d0db6",
+405 => x"3d707084",
+406 => x"05520b0b",
+407 => x"088cab5d",
+408 => x"56a63d5f",
+409 => x"5d807570",
+410 => x"81055733",
+411 => x"765c5559",
+412 => x"0b730b79",
+413 => x"2e80ca38",
+414 => x"8f3d5c73",
+415 => x"a52e0981",
+416 => x"0680cf38",
+417 => x"79708105",
+418 => x"5b33540b",
+419 => x"0b7380e4",
+420 => x"2e81c838",
+421 => x"7380e424",
+422 => x"80d13873",
+423 => x"80e32ea8",
+424 => x"3880520b",
+425 => x"0ba5517a",
+426 => x"2d80520b",
+427 => x"0b73517a",
+428 => x"2d821959",
+429 => x"79708105",
+430 => x"5b33540b",
+431 => x"0b73ffbb",
+432 => x"3878800c",
+433 => x"b53d0d04",
+434 => x"7c841e83",
+435 => x"72053356",
+436 => x"5e578052",
+437 => x"0b0b7351",
+438 => x"7a2d8119",
+439 => x"7a708105",
+440 => x"5c335559",
+441 => x"0b73ff93",
+442 => x"38d73973",
+443 => x"80f32e09",
+444 => x"8106ffad",
+445 => x"387c841e",
+446 => x"7108595e",
+447 => x"56807733",
+448 => x"56560b74",
+449 => x"0b762e8d",
+450 => x"38811670",
+451 => x"1870335a",
+452 => x"555677f5",
+453 => x"38ff1655",
+454 => x"807625ff",
+455 => x"97387670",
+456 => x"81055833",
+457 => x"5880520b",
+458 => x"0b77517a",
+459 => x"2d811975",
+460 => x"ff175757",
+461 => x"59807625",
+462 => x"fefa3876",
+463 => x"70810558",
+464 => x"33588052",
+465 => x"0b0b7751",
+466 => x"7a2d8119",
+467 => x"75ff1757",
+468 => x"57590b75",
+469 => x"8024c738",
+470 => x"feda397c",
+471 => x"841e7108",
+472 => x"70719f2c",
+473 => x"59530b0b",
+474 => x"595e5680",
+475 => x"7524818d",
+476 => x"38757e7d",
+477 => x"58595580",
+478 => x"57740b77",
+479 => x"2e098106",
+480 => x"bc38b07c",
+481 => x"3402b905",
+482 => x"567b0b76",
+483 => x"2e9938ff",
+484 => x"16560b0b",
+485 => x"75337870",
+486 => x"81055a34",
+487 => x"8117577b",
+488 => x"762e0981",
+489 => x"06e93880",
+490 => x"7834767e",
+491 => x"ff720557",
+492 => x"58560b0b",
+493 => x"758024fe",
+494 => x"e538fdf8",
+495 => x"398a7536",
+496 => x"0b0b80d7",
+497 => x"b005540b",
+498 => x"0b733376",
+499 => x"70810558",
+500 => x"348a7535",
+501 => x"550b0b74",
+502 => x"802effad",
+503 => x"388a7536",
+504 => x"0b0b80d7",
+505 => x"b005540b",
+506 => x"0b733376",
+507 => x"70810558",
+508 => x"348a7535",
+509 => x"550b0b74",
+510 => x"c438ff8d",
+511 => x"3974520b",
+512 => x"0b76530b",
+513 => x"0bb53dff",
+514 => x"b8055192",
+515 => x"dc3fa43d",
+516 => x"0856fedd",
+517 => x"397080c1",
+518 => x"0b81c48c",
+519 => x"34800b81",
+520 => x"c5e40c70",
+521 => x"800c5004",
+522 => x"7070800b",
+523 => x"81c48c33",
+524 => x"520b0b52",
+525 => x"0b0b0b70",
+526 => x"80c12e98",
+527 => x"387181c5",
+528 => x"e4080781",
+529 => x"c5e40c80",
+530 => x"c20b81c4",
+531 => x"90347080",
+532 => x"0c505004",
+533 => x"810b81c5",
+534 => x"e4080781",
+535 => x"c5e40c80",
+536 => x"c20b81c4",
+537 => x"90347080",
+538 => x"0c505004",
+539 => x"70707070",
+540 => x"7570088a",
+541 => x"05530b0b",
+542 => x"530b0b81",
+543 => x"c48c3351",
+544 => x"0b0b7080",
+545 => x"c12e8c38",
+546 => x"73f13870",
+547 => x"800c5050",
+548 => x"505004ff",
+549 => x"72057081",
+550 => x"c4880831",
+551 => x"740c800c",
+552 => x"50505050",
+553 => x"04fc3d0d",
+554 => x"81c49408",
+555 => x"550b0b74",
+556 => x"802e8e38",
+557 => x"76750871",
+558 => x"0c81c494",
+559 => x"0856540b",
+560 => x"0b8c1553",
+561 => x"0b0b81c4",
+562 => x"8808520b",
+563 => x"0b8a518e",
+564 => x"e93f7380",
+565 => x"0c863d0d",
+566 => x"04fb3d0d",
+567 => x"77700856",
+568 => x"56b0530b",
+569 => x"0b81c494",
+570 => x"08520b0b",
+571 => x"7451a1ff",
+572 => x"3f850b8c",
+573 => x"170c850b",
+574 => x"8c160c75",
+575 => x"08750c81",
+576 => x"c4940854",
+577 => x"0b0b7380",
+578 => x"2e8c3873",
+579 => x"08750c81",
+580 => x"c4940854",
+581 => x"0b0b8c14",
+582 => x"530b0b81",
+583 => x"c4880852",
+584 => x"0b0b8a51",
+585 => x"8e943f84",
+586 => x"1508b738",
+587 => x"860b8c16",
+588 => x"0c881552",
+589 => x"0b0b8816",
+590 => x"08518d96",
+591 => x"3f81c494",
+592 => x"08700876",
+593 => x"0c540b0b",
+594 => x"8c157054",
+595 => x"0b0b540b",
+596 => x"0b8a520b",
+597 => x"0b730851",
+598 => x"8de03f73",
+599 => x"800c873d",
+600 => x"0d047508",
+601 => x"540b0bb0",
+602 => x"530b0b73",
+603 => x"520b0b75",
+604 => x"51a0fc3f",
+605 => x"73800c87",
+606 => x"3d0d04e1",
+607 => x"3d0db051",
+608 => x"93833f80",
+609 => x"0881c484",
+610 => x"0cb05192",
+611 => x"f83f8008",
+612 => x"81c4940c",
+613 => x"81c48408",
+614 => x"80080c80",
+615 => x"0b800884",
+616 => x"050c820b",
+617 => x"80088805",
+618 => x"0ca80b80",
+619 => x"088c050c",
+620 => x"9f530b0b",
+621 => x"0b0b80d7",
+622 => x"bc520b0b",
+623 => x"80089005",
+624 => x"51a0ac3f",
+625 => x"993d5c9f",
+626 => x"530b0b0b",
+627 => x"0b80d7dc",
+628 => x"520b0b7b",
+629 => x"51a0983f",
+630 => x"8a0b8182",
+631 => x"cc0c0b0b",
+632 => x"80e28051",
+633 => x"f8ea3f0b",
+634 => x"0b80d7fc",
+635 => x"51f8e13f",
+636 => x"0b0b80e2",
+637 => x"8051f8d8",
+638 => x"3f80e5e0",
+639 => x"08802e8a",
+640 => x"a1380b0b",
+641 => x"80d8ac51",
+642 => x"f8c63f0b",
+643 => x"0b80e280",
+644 => x"51f8bd3f",
+645 => x"80e5dc08",
+646 => x"520b0b0b",
+647 => x"0b80d8d8",
+648 => x"51f8ad3f",
+649 => x"8051b488",
+650 => x"3f800880",
+651 => x"f5ec0c81",
+652 => x"0b923d5c",
+653 => x"58800b80",
+654 => x"e5dc0825",
+655 => x"8383388e",
+656 => x"3d5d80c1",
+657 => x"0b81c48c",
+658 => x"34810b81",
+659 => x"c5e40c80",
+660 => x"c20b81c4",
+661 => x"9034825e",
+662 => x"835a9f53",
+663 => x"0b0b0b0b",
+664 => x"80d98852",
+665 => x"0b0b7a51",
+666 => x"9f853f81",
+667 => x"5f807b53",
+668 => x"0b0b7c52",
+669 => x"0b0b558c",
+670 => x"f43f8008",
+671 => x"752e0981",
+672 => x"06833881",
+673 => x"550b0b74",
+674 => x"81c5e40c",
+675 => x"7d705755",
+676 => x"0b0b7483",
+677 => x"25a63874",
+678 => x"101015fd",
+679 => x"0540a13d",
+680 => x"ffbc0553",
+681 => x"0b0b8352",
+682 => x"0b0b7551",
+683 => x"8b8c3f81",
+684 => x"1e705f70",
+685 => x"5755830b",
+686 => x"7524dc38",
+687 => x"7f540b0b",
+688 => x"74530b0b",
+689 => x"80f5f052",
+690 => x"0b0b81c4",
+691 => x"9c518af6",
+692 => x"3f81c494",
+693 => x"08700857",
+694 => x"57b0530b",
+695 => x"0b76520b",
+696 => x"0b75519e",
+697 => x"8a3f850b",
+698 => x"8c180c85",
+699 => x"0b8c170c",
+700 => x"7608760c",
+701 => x"81c49408",
+702 => x"550b0b74",
+703 => x"802e8a38",
+704 => x"7408760c",
+705 => x"81c49408",
+706 => x"558c1553",
+707 => x"0b0b81c4",
+708 => x"8808520b",
+709 => x"0b8a518a",
+710 => x"a13f8416",
+711 => x"08888c38",
+712 => x"860b8c17",
+713 => x"0c881652",
+714 => x"0b0b8817",
+715 => x"085189a2",
+716 => x"3f81c494",
+717 => x"08700877",
+718 => x"0c578c16",
+719 => x"70540b0b",
+720 => x"558a520b",
+721 => x"0b740851",
+722 => x"89f03f80",
+723 => x"c10b81c4",
+724 => x"90335656",
+725 => x"0b0b7575",
+726 => x"26a83880",
+727 => x"c3520b0b",
+728 => x"75518adb",
+729 => x"3f80087f",
+730 => x"2e87ff38",
+731 => x"81167081",
+732 => x"ff0681c4",
+733 => x"9033520b",
+734 => x"0b57550b",
+735 => x"0b747627",
+736 => x"da38797e",
+737 => x"29607072",
+738 => x"35704172",
+739 => x"72317087",
+740 => x"2972315e",
+741 => x"530b0b8a",
+742 => x"0581c48c",
+743 => x"3381c488",
+744 => x"085a520b",
+745 => x"0b520b0b",
+746 => x"58550b76",
+747 => x"80c12e87",
+748 => x"f03878f6",
+749 => x"38811858",
+750 => x"80e5dc08",
+751 => x"7825fd82",
+752 => x"388051b0",
+753 => x"eb3f8008",
+754 => x"81c4800c",
+755 => x"0b0b80d9",
+756 => x"a851f4fc",
+757 => x"3f0b0b80",
+758 => x"e28051f4",
+759 => x"f33f0b0b",
+760 => x"80d9b851",
+761 => x"f4ea3f0b",
+762 => x"0b80e280",
+763 => x"51f4e13f",
+764 => x"81c48808",
+765 => x"520b0b0b",
+766 => x"0b80d9f0",
+767 => x"51f4d13f",
+768 => x"85520b0b",
+769 => x"0b0b80da",
+770 => x"8c51f4c4",
+771 => x"3f81c5e4",
+772 => x"08520b0b",
+773 => x"0b0b80da",
+774 => x"a851f4b4",
+775 => x"3f81520b",
+776 => x"0b0b0b80",
+777 => x"da8c51f4",
+778 => x"a73f81c4",
+779 => x"8c33520b",
+780 => x"0b0b0b80",
+781 => x"dac451f4",
+782 => x"973f80c1",
+783 => x"520b0b0b",
+784 => x"0b80dae0",
+785 => x"51f4893f",
+786 => x"81c49033",
+787 => x"520b0b0b",
+788 => x"0b80dafc",
+789 => x"51f3f93f",
+790 => x"80c2520b",
+791 => x"0b0b0b80",
+792 => x"dae051f3",
+793 => x"eb3f81c4",
+794 => x"bc08520b",
+795 => x"0b0b0b80",
+796 => x"db9851f3",
+797 => x"db3f8752",
+798 => x"0b0b0b0b",
+799 => x"80da8c51",
+800 => x"f3ce3f81",
+801 => x"82cc0852",
+802 => x"0b0b0b0b",
+803 => x"80dbb451",
+804 => x"f3be3f0b",
+805 => x"0b80dbd0",
+806 => x"51f3b53f",
+807 => x"0b0b80db",
+808 => x"fc51f3ac",
+809 => x"3f81c494",
+810 => x"08700853",
+811 => x"0b0b560b",
+812 => x"0b80dc88",
+813 => x"51f3993f",
+814 => x"0b0b80dc",
+815 => x"a451f390",
+816 => x"3f81c494",
+817 => x"08847105",
+818 => x"08530b0b",
+819 => x"5d0b0b80",
+820 => x"dcd851f2",
+821 => x"fb3f8052",
+822 => x"0b0b0b0b",
+823 => x"80da8c51",
+824 => x"f2ee3f81",
+825 => x"c4940888",
+826 => x"71050853",
+827 => x"0b0b580b",
+828 => x"0b80dcf4",
+829 => x"51f2d93f",
+830 => x"82520b0b",
+831 => x"0b0b80da",
+832 => x"8c51f2cc",
+833 => x"3f81c494",
+834 => x"088c7105",
+835 => x"08530b0b",
+836 => x"590b0b80",
+837 => x"dd9051f2",
+838 => x"b73f9152",
+839 => x"0b0b0b0b",
+840 => x"80da8c51",
+841 => x"f2aa3f81",
+842 => x"c4940890",
+843 => x"05520b0b",
+844 => x"0b0b80dd",
+845 => x"ac51f298",
+846 => x"3f0b0b80",
+847 => x"ddc851f2",
+848 => x"8f3f0b0b",
+849 => x"80de8051",
+850 => x"f2863f81",
+851 => x"c4840870",
+852 => x"08530b0b",
+853 => x"570b0b80",
+854 => x"dc8851f1",
+855 => x"f33f0b0b",
+856 => x"80de9451",
+857 => x"f1ea3f81",
+858 => x"c4840884",
+859 => x"71050853",
+860 => x"0b0b550b",
+861 => x"0b80dcd8",
+862 => x"51f1d53f",
+863 => x"80520b0b",
+864 => x"0b0b80da",
+865 => x"8c51f1c8",
+866 => x"3f81c484",
+867 => x"08887105",
+868 => x"08530b0b",
+869 => x"560b0b80",
+870 => x"dcf451f1",
+871 => x"b33f8152",
+872 => x"0b0b0b0b",
+873 => x"80da8c51",
+874 => x"f1a63f81",
+875 => x"c484088c",
+876 => x"71050853",
+877 => x"0b0b5d0b",
+878 => x"0b80dd90",
+879 => x"51f1913f",
+880 => x"92520b0b",
+881 => x"0b0b80da",
+882 => x"8c51f184",
+883 => x"3f81c484",
+884 => x"08900552",
+885 => x"0b0b0b0b",
+886 => x"80ddac51",
+887 => x"f0f23f0b",
+888 => x"0b80ddc8",
+889 => x"51f0e93f",
+890 => x"7d520b0b",
+891 => x"0b0b80de",
+892 => x"d451f0dc",
+893 => x"3f85520b",
+894 => x"0b0b0b80",
+895 => x"da8c51f0",
+896 => x"cf3f7952",
+897 => x"0b0b0b0b",
+898 => x"80def051",
+899 => x"f0c23f8d",
+900 => x"520b0b0b",
+901 => x"0b80da8c",
+902 => x"51f0b53f",
+903 => x"7f520b0b",
+904 => x"0b0b80df",
+905 => x"8c51f0a8",
+906 => x"3f87520b",
+907 => x"0b0b0b80",
+908 => x"da8c51f0",
+909 => x"9b3f7e52",
+910 => x"0b0b0b0b",
+911 => x"80dfa851",
+912 => x"f08e3f81",
+913 => x"520b0b0b",
+914 => x"0b80da8c",
+915 => x"51f0813f",
+916 => x"7b520b0b",
+917 => x"0b0b80df",
+918 => x"c451eff4",
+919 => x"3f0b0b80",
+920 => x"dfe051ef",
+921 => x"eb3f7a52",
+922 => x"0b0b0b0b",
+923 => x"80e09851",
+924 => x"efde3f0b",
+925 => x"0b80e0b4",
+926 => x"51efd53f",
+927 => x"0b0b80e2",
+928 => x"8051efcc",
+929 => x"3f81c480",
+930 => x"0880f5ec",
+931 => x"08317080",
+932 => x"f5e80c52",
+933 => x"0b0b0b0b",
+934 => x"80e0ec51",
+935 => x"efb23f80",
+936 => x"f5e80856",
+937 => x"810b7625",
+938 => x"819d3880",
+939 => x"e5dc0870",
+940 => x"77bd84c0",
+941 => x"293580f5",
+942 => x"e00c7671",
+943 => x"3580f5e4",
+944 => x"0c768ddd",
+945 => x"297187e8",
+946 => x"293581c4",
+947 => x"980c5b0b",
+948 => x"0b80e0fc",
+949 => x"51eef93f",
+950 => x"80f5e008",
+951 => x"520b0b0b",
+952 => x"0b80e1ac",
+953 => x"51eee93f",
+954 => x"0b0b80e1",
+955 => x"b451eee0",
+956 => x"3f80f5e4",
+957 => x"08520b0b",
+958 => x"0b0b80e1",
+959 => x"ac51eed0",
+960 => x"3f81c498",
+961 => x"08520b0b",
+962 => x"0b0b80e1",
+963 => x"e451eec0",
+964 => x"3f0b0b80",
+965 => x"e28051ee",
+966 => x"b73f800b",
+967 => x"800ca13d",
+968 => x"0d040b0b",
+969 => x"80e28451",
+970 => x"f5de3976",
+971 => x"0856b053",
+972 => x"0b0b7552",
+973 => x"0b0b7651",
+974 => x"95b53f80",
+975 => x"c10b81c4",
+976 => x"90335656",
+977 => x"f88e390b",
+978 => x"0b80e2b4",
+979 => x"51ee813f",
+980 => x"0b0b80e2",
+981 => x"ec51edf8",
+982 => x"3f0b0b80",
+983 => x"e28051ed",
+984 => x"ef3f800b",
+985 => x"800ca13d",
+986 => x"0d04a13d",
+987 => x"ffb80552",
+988 => x"0b0b8051",
+989 => x"80dc3f9f",
+990 => x"530b0b0b",
+991 => x"0b80e38c",
+992 => x"520b0b7a",
+993 => x"5194e83f",
+994 => x"777881c4",
+995 => x"880c8117",
+996 => x"7081ff06",
+997 => x"81c49033",
+998 => x"520b0b58",
+999 => x"565af7db",
+1000 => x"39ff1570",
+1001 => x"77317e0c",
+1002 => x"59800b81",
+1003 => x"19595980",
+1004 => x"e5dc0878",
+1005 => x"25f58b38",
+1006 => x"f8873970",
+1007 => x"70738232",
+1008 => x"70307072",
+1009 => x"07802580",
+1010 => x"0c520b0b",
+1011 => x"520b0b50",
+1012 => x"50047070",
+1013 => x"70747671",
+1014 => x"530b0b54",
+1015 => x"0b0b520b",
+1016 => x"0b0b0b71",
+1017 => x"822e8338",
+1018 => x"83517181",
+1019 => x"2e9a3881",
+1020 => x"72269f38",
+1021 => x"71822eb8",
+1022 => x"3871842e",
+1023 => x"a9387073",
+1024 => x"0c70800c",
+1025 => x"50505004",
+1026 => x"80e40b81",
+1027 => x"c4880825",
+1028 => x"8b388073",
+1029 => x"0c70800c",
+1030 => x"50505004",
+1031 => x"83730c70",
+1032 => x"800c5050",
+1033 => x"50048273",
+1034 => x"0c70800c",
+1035 => x"50505004",
+1036 => x"81730c70",
+1037 => x"800c5050",
+1038 => x"50047074",
+1039 => x"74148205",
+1040 => x"710c800c",
+1041 => x"5004f73d",
+1042 => x"0d7b7d7f",
+1043 => x"61857205",
+1044 => x"70822b75",
+1045 => x"71057074",
+1046 => x"71708405",
+1047 => x"530b0b0c",
+1048 => x"5a5a5d5b",
+1049 => x"760c7980",
+1050 => x"f8180c79",
+1051 => x"86720552",
+1052 => x"0b0b5758",
+1053 => x"5a5a7676",
+1054 => x"249e3876",
+1055 => x"b329822b",
+1056 => x"79710551",
+1057 => x"530b0b76",
+1058 => x"73708405",
+1059 => x"550c8114",
+1060 => x"540b0b75",
+1061 => x"7425f038",
+1062 => x"7681cc29",
+1063 => x"19fc7105",
+1064 => x"088105fc",
+1065 => x"72050c7a",
+1066 => x"1970089f",
+1067 => x"a073050c",
+1068 => x"5856850b",
+1069 => x"81c4880c",
+1070 => x"75800c8b",
+1071 => x"3d0d0470",
+1072 => x"70700293",
+1073 => x"05335180",
+1074 => x"02840597",
+1075 => x"0533540b",
+1076 => x"0b520b0b",
+1077 => x"70732e88",
+1078 => x"3871800c",
+1079 => x"50505004",
+1080 => x"7081c48c",
+1081 => x"34810b80",
+1082 => x"0c505050",
+1083 => x"04f83d0d",
+1084 => x"7a7c5956",
+1085 => x"820b8319",
+1086 => x"55550b0b",
+1087 => x"74167033",
+1088 => x"75335b51",
+1089 => x"530b0b72",
+1090 => x"792e80cf",
+1091 => x"3880c10b",
+1092 => x"81168116",
+1093 => x"56565782",
+1094 => x"7525df38",
+1095 => x"ffa91770",
+1096 => x"81ff0655",
+1097 => x"590b7382",
+1098 => x"26833887",
+1099 => x"5581530b",
+1100 => x"0b7680d2",
+1101 => x"2e9e3877",
+1102 => x"520b0b75",
+1103 => x"5193b53f",
+1104 => x"80530b0b",
+1105 => x"72800825",
+1106 => x"8b388715",
+1107 => x"81c4880c",
+1108 => x"81530b0b",
+1109 => x"72800c8a",
+1110 => x"3d0d0472",
+1111 => x"81c48c34",
+1112 => x"827525ff",
+1113 => x"9538ffb4",
+1114 => x"39f93d0d",
+1115 => x"797b7d54",
+1116 => x"0b0b5872",
+1117 => x"59773079",
+1118 => x"70307072",
+1119 => x"079f2a73",
+1120 => x"71315a52",
+1121 => x"0b0b5977",
+1122 => x"0b795673",
+1123 => x"0c530b0b",
+1124 => x"73847305",
+1125 => x"0c540b0b",
+1126 => x"800c893d",
+1127 => x"0d04f93d",
+1128 => x"0d797b7d",
+1129 => x"7f56540b",
+1130 => x"0b520b0b",
+1131 => x"540b0b72",
+1132 => x"802ea638",
+1133 => x"70577158",
+1134 => x"a0733152",
+1135 => x"0b0b800b",
+1136 => x"7225a638",
+1137 => x"7770742b",
+1138 => x"5770732a",
+1139 => x"78752b07",
+1140 => x"56510b74",
+1141 => x"76530b0b",
+1142 => x"510b0b70",
+1143 => x"740c7184",
+1144 => x"150c7380",
+1145 => x"0c893d0d",
+1146 => x"04805677",
+1147 => x"72302b55",
+1148 => x"0b0b7476",
+1149 => x"530b0b51",
+1150 => x"e039fb3d",
+1151 => x"0d777955",
+1152 => x"5580560b",
+1153 => x"0b757524",
+1154 => x"b5388074",
+1155 => x"24a53880",
+1156 => x"530b0b73",
+1157 => x"520b0b74",
+1158 => x"5180f33f",
+1159 => x"8008540b",
+1160 => x"0b75802e",
+1161 => x"87388008",
+1162 => x"30540b0b",
+1163 => x"73800c87",
+1164 => x"3d0d0473",
+1165 => x"30768132",
+1166 => x"57540b0b",
+1167 => x"d2397430",
+1168 => x"55815673",
+1169 => x"8025c838",
+1170 => x"ea39fa3d",
+1171 => x"0d787a57",
+1172 => x"5580570b",
+1173 => x"0b767524",
+1174 => x"ae38759f",
+1175 => x"2c540b0b",
+1176 => x"81530b0b",
+1177 => x"75743274",
+1178 => x"31520b0b",
+1179 => x"74519f3f",
+1180 => x"8008540b",
+1181 => x"0b76802e",
+1182 => x"87388008",
+1183 => x"30540b0b",
+1184 => x"73800c88",
+1185 => x"3d0d0474",
+1186 => x"30558157",
+1187 => x"cd39fc3d",
+1188 => x"0d767853",
+1189 => x"0b0b540b",
+1190 => x"0b81530b",
+1191 => x"0b807473",
+1192 => x"26520b0b",
+1193 => x"5572802e",
+1194 => x"9e387080",
+1195 => x"2eb73880",
+1196 => x"7224b238",
+1197 => x"71107310",
+1198 => x"75722653",
+1199 => x"0b0b540b",
+1200 => x"0b520b0b",
+1201 => x"72e43873",
+1202 => x"51788338",
+1203 => x"74510b0b",
+1204 => x"70800c86",
+1205 => x"3d0d0472",
+1206 => x"0a100a72",
+1207 => x"0a100a53",
+1208 => x"0b0b530b",
+1209 => x"0b72802e",
+1210 => x"de387174",
+1211 => x"26e93873",
+1212 => x"72317574",
+1213 => x"07740a10",
+1214 => x"0a740a10",
+1215 => x"0a555556",
+1216 => x"540b0be1",
+1217 => x"39707073",
+1218 => x"520b0b80",
+1219 => x"eea80851",
+1220 => x"953f5050",
+1221 => x"04707073",
+1222 => x"520b0b80",
+1223 => x"eea80851",
+1224 => x"92dc3f50",
+1225 => x"5004f43d",
+1226 => x"0d7e608b",
+1227 => x"710570f8",
+1228 => x"065b5555",
+1229 => x"5d729626",
+1230 => x"83389058",
+1231 => x"800b7824",
+1232 => x"74792607",
+1233 => x"5580540b",
+1234 => x"0b74742e",
+1235 => x"09810680",
+1236 => x"d5387c51",
+1237 => x"8edf3f77",
+1238 => x"83f72680",
+1239 => x"d0387783",
+1240 => x"2a701010",
+1241 => x"1080e6a0",
+1242 => x"058c7105",
+1243 => x"08585854",
+1244 => x"0b0b7577",
+1245 => x"2e828a38",
+1246 => x"841608fc",
+1247 => x"068c1708",
+1248 => x"88180871",
+1249 => x"8c72050c",
+1250 => x"8872050c",
+1251 => x"5b760584",
+1252 => x"71050881",
+1253 => x"07847205",
+1254 => x"0c530b0b",
+1255 => x"7c518e96",
+1256 => x"3f881654",
+1257 => x"0b0b7380",
+1258 => x"0c8e3d0d",
+1259 => x"0477892a",
+1260 => x"78832a58",
+1261 => x"540b0b73",
+1262 => x"802ebf38",
+1263 => x"77862ab8",
+1264 => x"05578474",
+1265 => x"27b43880",
+1266 => x"db145794",
+1267 => x"7427ab38",
+1268 => x"778c2a80",
+1269 => x"ee055780",
+1270 => x"d474279e",
+1271 => x"38778f2a",
+1272 => x"80f70557",
+1273 => x"82d47427",
+1274 => x"91387792",
+1275 => x"2a80fc05",
+1276 => x"578ad474",
+1277 => x"27843880",
+1278 => x"fe570b0b",
+1279 => x"76101010",
+1280 => x"80e6a005",
+1281 => x"8c710508",
+1282 => x"56530b0b",
+1283 => x"74732ea6",
+1284 => x"38841508",
+1285 => x"fc067079",
+1286 => x"3155560b",
+1287 => x"738f2489",
+1288 => x"d2387380",
+1289 => x"2589d438",
+1290 => x"8c150855",
+1291 => x"0b0b7473",
+1292 => x"2e098106",
+1293 => x"dc388117",
+1294 => x"5980e6b0",
+1295 => x"08560b0b",
+1296 => x"7580e6a8",
+1297 => x"2e82f938",
+1298 => x"841608fc",
+1299 => x"06707931",
+1300 => x"55550b73",
+1301 => x"8f2480c2",
+1302 => x"3880e6a8",
+1303 => x"0b80e6b4",
+1304 => x"0c80e6a8",
+1305 => x"0b80e6b0",
+1306 => x"0c807424",
+1307 => x"80e83874",
+1308 => x"16847105",
+1309 => x"08810784",
+1310 => x"72050c53",
+1311 => x"0b0bfe9c",
+1312 => x"3988168c",
+1313 => x"71050857",
+1314 => x"590b750b",
+1315 => x"792e0981",
+1316 => x"06fde538",
+1317 => x"821459ff",
+1318 => x"a0397716",
+1319 => x"78810784",
+1320 => x"180c7080",
+1321 => x"e6b40c70",
+1322 => x"80e6b00c",
+1323 => x"80e6a80b",
+1324 => x"8c72050c",
+1325 => x"8c710508",
+1326 => x"8872050c",
+1327 => x"74810784",
+1328 => x"72050c74",
+1329 => x"0574710c",
+1330 => x"5b7c518b",
+1331 => x"e93f8816",
+1332 => x"540b0bfd",
+1333 => x"d13983ff",
+1334 => x"752783c1",
+1335 => x"3874892a",
+1336 => x"75832a54",
+1337 => x"0b0b540b",
+1338 => x"0b73802e",
+1339 => x"80cb3874",
+1340 => x"862ab805",
+1341 => x"530b0b84",
+1342 => x"7427be38",
+1343 => x"80db1453",
+1344 => x"0b0b9474",
+1345 => x"27b33874",
+1346 => x"8c2a80ee",
+1347 => x"05530b0b",
+1348 => x"80d47427",
+1349 => x"a438748f",
+1350 => x"2a80f705",
+1351 => x"530b0b82",
+1352 => x"d4742795",
+1353 => x"3874922a",
+1354 => x"80fc0553",
+1355 => x"0b0b8ad4",
+1356 => x"74278638",
+1357 => x"80fe530b",
+1358 => x"0b721010",
+1359 => x"1080e6a0",
+1360 => x"05887105",
+1361 => x"0855570b",
+1362 => x"730b772e",
+1363 => x"86cd3884",
+1364 => x"1408fc06",
+1365 => x"5b740b7b",
+1366 => x"278f3888",
+1367 => x"1408540b",
+1368 => x"0b73772e",
+1369 => x"098106e7",
+1370 => x"388c1408",
+1371 => x"80e6a00b",
+1372 => x"84050871",
+1373 => x"8c190c75",
+1374 => x"88190c77",
+1375 => x"8873050c",
+1376 => x"5c57758c",
+1377 => x"150c7853",
+1378 => x"0b0b8079",
+1379 => x"2483be38",
+1380 => x"72822c81",
+1381 => x"712b5656",
+1382 => x"0b747b26",
+1383 => x"80d1387a",
+1384 => x"7506570b",
+1385 => x"0b7682bc",
+1386 => x"3878fc06",
+1387 => x"84055974",
+1388 => x"10707c06",
+1389 => x"55550b73",
+1390 => x"82aa3884",
+1391 => x"1959f039",
+1392 => x"80e6a00b",
+1393 => x"84050879",
+1394 => x"540b0b5b",
+1395 => x"788025c0",
+1396 => x"3882fa39",
+1397 => x"74097b06",
+1398 => x"7080e6a0",
+1399 => x"0b84050c",
+1400 => x"5b741055",
+1401 => x"0b0b747b",
+1402 => x"26853874",
+1403 => x"85f33880",
+1404 => x"e6a00b88",
+1405 => x"05087084",
+1406 => x"720508fc",
+1407 => x"06707b31",
+1408 => x"7b72268f",
+1409 => x"7225075d",
+1410 => x"575c5c55",
+1411 => x"78802e80",
+1412 => x"e3387915",
+1413 => x"80e69808",
+1414 => x"19907105",
+1415 => x"59540b0b",
+1416 => x"5680e694",
+1417 => x"08ff2e89",
+1418 => x"38a08f73",
+1419 => x"05e08006",
+1420 => x"570b0b76",
+1421 => x"520b0b7c",
+1422 => x"5188fc3f",
+1423 => x"8008540b",
+1424 => x"0b8008ff",
+1425 => x"2e903880",
+1426 => x"08762782",
+1427 => x"c2387480",
+1428 => x"e6a02e82",
+1429 => x"ba3880e6",
+1430 => x"a00b8805",
+1431 => x"08558415",
+1432 => x"08fc0670",
+1433 => x"79317972",
+1434 => x"268f7225",
+1435 => x"075d555a",
+1436 => x"7a849b38",
+1437 => x"77810784",
+1438 => x"160c7715",
+1439 => x"7080e6a0",
+1440 => x"0b88050c",
+1441 => x"74810784",
+1442 => x"72050c56",
+1443 => x"7c5188a6",
+1444 => x"3f881554",
+1445 => x"0b0b7380",
+1446 => x"0c8e3d0d",
+1447 => x"0474832a",
+1448 => x"70540b0b",
+1449 => x"540b0b80",
+1450 => x"742481a9",
+1451 => x"3872822c",
+1452 => x"81712b80",
+1453 => x"e6a40807",
+1454 => x"7080e6a0",
+1455 => x"0b84050c",
+1456 => x"75101010",
+1457 => x"80e6a005",
+1458 => x"88710508",
+1459 => x"718c1b0c",
+1460 => x"70881b0c",
+1461 => x"79887305",
+1462 => x"0c57555c",
+1463 => x"55758c15",
+1464 => x"0cfda339",
+1465 => x"78791010",
+1466 => x"1080e6a0",
+1467 => x"0570565b",
+1468 => x"5c8c1408",
+1469 => x"560b0b75",
+1470 => x"742ea738",
+1471 => x"841608fc",
+1472 => x"06707931",
+1473 => x"58530b0b",
+1474 => x"768f2484",
+1475 => x"98387680",
+1476 => x"2584de38",
+1477 => x"8c160856",
+1478 => x"0b0b7574",
+1479 => x"2e098106",
+1480 => x"db388814",
+1481 => x"811a7083",
+1482 => x"06555a54",
+1483 => x"0b0b72c1",
+1484 => x"387b8306",
+1485 => x"560b0b75",
+1486 => x"802efd98",
+1487 => x"38ff1cf8",
+1488 => x"1b5b5c88",
+1489 => x"1a087a2e",
+1490 => x"e838fd95",
+1491 => x"39831953",
+1492 => x"0b0bfcbc",
+1493 => x"39831470",
+1494 => x"822c8171",
+1495 => x"2b80e6a4",
+1496 => x"08077080",
+1497 => x"e6a00b84",
+1498 => x"050c7610",
+1499 => x"101080e6",
+1500 => x"a0058871",
+1501 => x"0508718c",
+1502 => x"1c0c7088",
+1503 => x"1c0c7a88",
+1504 => x"73050c58",
+1505 => x"530b0b5d",
+1506 => x"56530b0b",
+1507 => x"fecf3980",
+1508 => x"e5e40817",
+1509 => x"59800876",
+1510 => x"2e819438",
+1511 => x"80e69408",
+1512 => x"ff2e84b7",
+1513 => x"38737631",
+1514 => x"1980e5e4",
+1515 => x"0c738706",
+1516 => x"7056530b",
+1517 => x"0b72802e",
+1518 => x"88388873",
+1519 => x"31701555",
+1520 => x"5576149f",
+1521 => x"ff06a080",
+1522 => x"71311670",
+1523 => x"540b0b7e",
+1524 => x"530b0b51",
+1525 => x"530b0b85",
+1526 => x"de3f8008",
+1527 => x"568008ff",
+1528 => x"2e81a238",
+1529 => x"80e5e408",
+1530 => x"73057080",
+1531 => x"e5e40c74",
+1532 => x"7580e6a0",
+1533 => x"0b88050c",
+1534 => x"77763115",
+1535 => x"81075556",
+1536 => x"597a80e6",
+1537 => x"a02e83e0",
+1538 => x"38798f26",
+1539 => x"838d3881",
+1540 => x"0b84150c",
+1541 => x"841508fc",
+1542 => x"06707931",
+1543 => x"7972268f",
+1544 => x"7225075d",
+1545 => x"555a7a80",
+1546 => x"2efcc938",
+1547 => x"80e03980",
+1548 => x"089fff06",
+1549 => x"550b0b74",
+1550 => x"fee23878",
+1551 => x"80e5e40c",
+1552 => x"80e6a00b",
+1553 => x"8805087a",
+1554 => x"18810784",
+1555 => x"72050c55",
+1556 => x"80e69008",
+1557 => x"79278638",
+1558 => x"7880e690",
+1559 => x"0c80e68c",
+1560 => x"087927fb",
+1561 => x"f9387880",
+1562 => x"e68c0c84",
+1563 => x"1508fc06",
+1564 => x"70793179",
+1565 => x"72268f72",
+1566 => x"25075d55",
+1567 => x"5a7a802e",
+1568 => x"fbf2388a",
+1569 => x"39807457",
+1570 => x"530b0bfe",
+1571 => x"d7397c51",
+1572 => x"84a43f80",
+1573 => x"0b800c8e",
+1574 => x"3d0d0480",
+1575 => x"7324a538",
+1576 => x"72822c81",
+1577 => x"712b80e6",
+1578 => x"a4080770",
+1579 => x"80e6a00b",
+1580 => x"84050c5c",
+1581 => x"5a768c17",
+1582 => x"0c738817",
+1583 => x"0c758818",
+1584 => x"0cf9bf39",
+1585 => x"83730570",
+1586 => x"822c8171",
+1587 => x"2b80e6a4",
+1588 => x"08077080",
+1589 => x"e6a00b84",
+1590 => x"050c5d5b",
+1591 => x"530b0bd5",
+1592 => x"397a7506",
+1593 => x"5c0b0b7b",
+1594 => x"fbfa3884",
+1595 => x"19751056",
+1596 => x"59ef39ff",
+1597 => x"17810559",
+1598 => x"f6bf398c",
+1599 => x"15088816",
+1600 => x"08718c72",
+1601 => x"050c8872",
+1602 => x"050c5975",
+1603 => x"15847105",
+1604 => x"08810784",
+1605 => x"72050c58",
+1606 => x"7c51839a",
+1607 => x"3f881554",
+1608 => x"0b0bfaf2",
+1609 => x"39771678",
+1610 => x"81078418",
+1611 => x"0c8c1708",
+1612 => x"88180871",
+1613 => x"8c72050c",
+1614 => x"8872050c",
+1615 => x"5c7080e6",
+1616 => x"b40c7080",
+1617 => x"e6b00c80",
+1618 => x"e6a80b8c",
+1619 => x"72050c8c",
+1620 => x"71050888",
+1621 => x"72050c77",
+1622 => x"81078472",
+1623 => x"050c7705",
+1624 => x"77710c55",
+1625 => x"7c5182ce",
+1626 => x"3f881654",
+1627 => x"0b0bf4b6",
+1628 => x"39721684",
+1629 => x"71050881",
+1630 => x"07847205",
+1631 => x"0c588c16",
+1632 => x"08881708",
+1633 => x"718c7205",
+1634 => x"0c887205",
+1635 => x"0c577c51",
+1636 => x"82a43f88",
+1637 => x"16540b0b",
+1638 => x"f48c3972",
+1639 => x"84150cf4",
+1640 => x"1af80670",
+1641 => x"841d0881",
+1642 => x"0607841d",
+1643 => x"0c701c55",
+1644 => x"56850b84",
+1645 => x"150c850b",
+1646 => x"88150c8f",
+1647 => x"7627fd90",
+1648 => x"38881b52",
+1649 => x"0b0b7c51",
+1650 => x"85b43f80",
+1651 => x"e6a00b88",
+1652 => x"050880e5",
+1653 => x"e4085a55",
+1654 => x"fcf63978",
+1655 => x"80e5e40c",
+1656 => x"7380e694",
+1657 => x"0cfbc639",
+1658 => x"7284150c",
+1659 => x"fce239fb",
+1660 => x"3d0d7770",
+1661 => x"7a7c5855",
+1662 => x"530b0b56",
+1663 => x"8f752781",
+1664 => x"85387276",
+1665 => x"07830651",
+1666 => x"0b0b7080",
+1667 => x"f9387573",
+1668 => x"520b0b54",
+1669 => x"0b0b7070",
+1670 => x"8405520b",
+1671 => x"0b087470",
+1672 => x"8405560c",
+1673 => x"73717084",
+1674 => x"05530b0b",
+1675 => x"08717084",
+1676 => x"05530b0b",
+1677 => x"0c717084",
+1678 => x"05530b0b",
+1679 => x"08717084",
+1680 => x"05530b0b",
+1681 => x"0c717084",
+1682 => x"05530b0b",
+1683 => x"08717084",
+1684 => x"05530b0b",
+1685 => x"0cf01656",
+1686 => x"540b0b74",
+1687 => x"8f26ffb6",
+1688 => x"38837527",
+1689 => x"99387070",
+1690 => x"8405520b",
+1691 => x"0b087470",
+1692 => x"8405560c",
+1693 => x"fc15550b",
+1694 => x"0b748326",
+1695 => x"e9387371",
+1696 => x"540b0b52",
+1697 => x"0b0bff15",
+1698 => x"510b0b70",
+1699 => x"ff2e9f38",
+1700 => x"72708105",
+1701 => x"540b0b33",
+1702 => x"72708105",
+1703 => x"540b0b34",
+1704 => x"ff710551",
+1705 => x"0b0b70ff",
+1706 => x"2e098106",
+1707 => x"e3387580",
+1708 => x"0c873d0d",
+1709 => x"04040470",
+1710 => x"70707080",
+1711 => x"0b81c5e8",
+1712 => x"0c765188",
+1713 => x"d93f8008",
+1714 => x"530b0b80",
+1715 => x"08ff2e89",
+1716 => x"3872800c",
+1717 => x"50505050",
+1718 => x"0481c5e8",
+1719 => x"08540b0b",
+1720 => x"73802eed",
+1721 => x"38757471",
+1722 => x"0c520b0b",
+1723 => x"72800c50",
+1724 => x"50505004",
+1725 => x"fb3d0d77",
+1726 => x"79707207",
+1727 => x"8306530b",
+1728 => x"0b540b0b",
+1729 => x"520b0b70",
+1730 => x"9b387173",
+1731 => x"7308540b",
+1732 => x"0b56540b",
+1733 => x"0b717308",
+1734 => x"2e80d838",
+1735 => x"7375540b",
+1736 => x"0b520b0b",
+1737 => x"0b0b7133",
+1738 => x"7081ff06",
+1739 => x"520b0b54",
+1740 => x"0b0b7080",
+1741 => x"2ea53872",
+1742 => x"3355700b",
+1743 => x"752e0981",
+1744 => x"069c3881",
+1745 => x"72058114",
+1746 => x"71337081",
+1747 => x"ff06540b",
+1748 => x"0b56540b",
+1749 => x"0b520b0b",
+1750 => x"70dd3872",
+1751 => x"33557381",
+1752 => x"ff067581",
+1753 => x"ff067171",
+1754 => x"31800c55",
+1755 => x"520b0b87",
+1756 => x"3d0d0471",
+1757 => x"09f7fbfd",
+1758 => x"ff730506",
+1759 => x"f8848281",
+1760 => x"8006520b",
+1761 => x"0b0b0b71",
+1762 => x"9f388414",
+1763 => x"84167108",
+1764 => x"540b0b56",
+1765 => x"540b0b71",
+1766 => x"75082ed7",
+1767 => x"38737554",
+1768 => x"0b0b520b",
+1769 => x"0bfefd39",
+1770 => x"800b800c",
+1771 => x"873d0d04",
+1772 => x"fb3d0d77",
+1773 => x"70520b0b",
+1774 => x"56fdfa3f",
+1775 => x"80e6a00b",
+1776 => x"88050884",
+1777 => x"710508fc",
+1778 => x"06707b31",
+1779 => x"9fef05e0",
+1780 => x"8006e080",
+1781 => x"05520b0b",
+1782 => x"5555a080",
+1783 => x"75249838",
+1784 => x"80520b0b",
+1785 => x"7551fdcf",
+1786 => x"3f80e6a8",
+1787 => x"0814530b",
+1788 => x"0b728008",
+1789 => x"2e913875",
+1790 => x"51fdbb3f",
+1791 => x"80530b0b",
+1792 => x"72800c87",
+1793 => x"3d0d0474",
+1794 => x"30520b0b",
+1795 => x"7551fda7",
+1796 => x"3f8008ff",
+1797 => x"2eab3880",
+1798 => x"e6a00b88",
+1799 => x"05087476",
+1800 => x"31810784",
+1801 => x"72050c53",
+1802 => x"0b0b80e5",
+1803 => x"e4087531",
+1804 => x"80e5e40c",
+1805 => x"7551fcfe",
+1806 => x"3f810b80",
+1807 => x"0c873d0d",
+1808 => x"0480520b",
+1809 => x"0b7551fc",
+1810 => x"ee3f80e6",
+1811 => x"a00b8805",
+1812 => x"08800871",
+1813 => x"31540b0b",
+1814 => x"540b0b8f",
+1815 => x"7325ff97",
+1816 => x"38800880",
+1817 => x"e6940831",
+1818 => x"80e5e40c",
+1819 => x"72810784",
+1820 => x"150c7551",
+1821 => x"fcc03f80",
+1822 => x"530b0bff",
+1823 => x"8339f73d",
+1824 => x"0d7b7d54",
+1825 => x"0b0b5a72",
+1826 => x"802e82ab",
+1827 => x"387951fc",
+1828 => x"a43ff873",
+1829 => x"05847105",
+1830 => x"0870fe06",
+1831 => x"70730584",
+1832 => x"710508fc",
+1833 => x"065c5758",
+1834 => x"540b0b57",
+1835 => x"80e6a808",
+1836 => x"742e838b",
+1837 => x"38778415",
+1838 => x"0c807381",
+1839 => x"0656590b",
+1840 => x"740b792e",
+1841 => x"81f53877",
+1842 => x"14847105",
+1843 => x"08810656",
+1844 => x"530b0b74",
+1845 => x"a3387716",
+1846 => x"56788287",
+1847 => x"38881408",
+1848 => x"550b0b74",
+1849 => x"80e6a82e",
+1850 => x"83a7388c",
+1851 => x"1408708c",
+1852 => x"170c7588",
+1853 => x"72050c58",
+1854 => x"75810784",
+1855 => x"180c7517",
+1856 => x"76710c54",
+1857 => x"0b0b7881",
+1858 => x"a93883ff",
+1859 => x"762781e5",
+1860 => x"3875892a",
+1861 => x"76832a54",
+1862 => x"0b0b540b",
+1863 => x"0b73802e",
+1864 => x"80cb3875",
+1865 => x"862ab805",
+1866 => x"530b0b84",
+1867 => x"7427be38",
+1868 => x"80db1453",
+1869 => x"0b0b9474",
+1870 => x"27b33875",
+1871 => x"8c2a80ee",
+1872 => x"05530b0b",
+1873 => x"80d47427",
+1874 => x"a438758f",
+1875 => x"2a80f705",
+1876 => x"530b0b82",
+1877 => x"d4742795",
+1878 => x"3875922a",
+1879 => x"80fc0553",
+1880 => x"0b0b8ad4",
+1881 => x"74278638",
+1882 => x"80fe530b",
+1883 => x"0b721010",
+1884 => x"1080e6a0",
+1885 => x"05887105",
+1886 => x"0855550b",
+1887 => x"730b752e",
+1888 => x"82da3884",
+1889 => x"1408fc06",
+1890 => x"59750b79",
+1891 => x"278f3888",
+1892 => x"1408540b",
+1893 => x"0b73752e",
+1894 => x"098106e7",
+1895 => x"388c1408",
+1896 => x"708c190c",
+1897 => x"7488190c",
+1898 => x"77887205",
+1899 => x"0c55768c",
+1900 => x"150c7951",
+1901 => x"fa803f8b",
+1902 => x"3d0d0476",
+1903 => x"08777131",
+1904 => x"58760588",
+1905 => x"18085656",
+1906 => x"0b7480e6",
+1907 => x"a82e80ea",
+1908 => x"388c1708",
+1909 => x"708c170c",
+1910 => x"75887205",
+1911 => x"0c530b0b",
+1912 => x"fde53988",
+1913 => x"14088c15",
+1914 => x"08708c73",
+1915 => x"050c5988",
+1916 => x"190cfe84",
+1917 => x"3975832a",
+1918 => x"70540b0b",
+1919 => x"540b0b80",
+1920 => x"742481a2",
+1921 => x"3872822c",
+1922 => x"81712b80",
+1923 => x"e6a40807",
+1924 => x"80e6a00b",
+1925 => x"84050c74",
+1926 => x"10101080",
+1927 => x"e6a00588",
+1928 => x"71050871",
+1929 => x"8c1b0c70",
+1930 => x"881b0c79",
+1931 => x"8873050c",
+1932 => x"565a5576",
+1933 => x"8c150cfe",
+1934 => x"f9398159",
+1935 => x"fd893977",
+1936 => x"16738106",
+1937 => x"540b0b55",
+1938 => x"729a3876",
+1939 => x"08777131",
+1940 => x"5875058c",
+1941 => x"18088819",
+1942 => x"08718c72",
+1943 => x"050c8872",
+1944 => x"050c5555",
+1945 => x"0b0b7481",
+1946 => x"0784180c",
+1947 => x"7680e6a0",
+1948 => x"0b88050c",
+1949 => x"80e69c08",
+1950 => x"7526feb6",
+1951 => x"3880e698",
+1952 => x"08520b0b",
+1953 => x"7951faa8",
+1954 => x"3f7951f8",
+1955 => x"a93ffea7",
+1956 => x"3981778c",
+1957 => x"170c7788",
+1958 => x"170c758c",
+1959 => x"190c7588",
+1960 => x"190c59fc",
+1961 => x"d3398314",
+1962 => x"70822c81",
+1963 => x"712b80e6",
+1964 => x"a4080780",
+1965 => x"e6a00b84",
+1966 => x"050c7510",
+1967 => x"101080e6",
+1968 => x"a0058871",
+1969 => x"0508718c",
+1970 => x"1c0c7088",
+1971 => x"1c0c7a88",
+1972 => x"73050c57",
+1973 => x"5b56530b",
+1974 => x"0bfed839",
+1975 => x"807324a3",
+1976 => x"3872822c",
+1977 => x"81712b80",
+1978 => x"e6a40807",
+1979 => x"80e6a00b",
+1980 => x"84050c58",
+1981 => x"748c180c",
+1982 => x"7388180c",
+1983 => x"7688160c",
+1984 => x"fdac3983",
+1985 => x"73057082",
+1986 => x"2c81712b",
+1987 => x"80e6a408",
+1988 => x"0780e6a0",
+1989 => x"0b84050c",
+1990 => x"59530b0b",
+1991 => x"d7397070",
+1992 => x"7081c5ec",
+1993 => x"08510b0b",
+1994 => x"708a3881",
+1995 => x"c5f47081",
+1996 => x"c5ec0c51",
+1997 => x"740b7105",
+1998 => x"520b0bff",
+1999 => x"530b0b71",
+2000 => x"87fb8080",
+2001 => x"268a3871",
+2002 => x"81c5ec0c",
+2003 => x"70530b0b",
+2004 => x"72800c50",
+2005 => x"50500470",
+2006 => x"70707080",
+2007 => x"0b80e5d0",
+2008 => x"08540b0b",
+2009 => x"540b0b72",
+2010 => x"812e9d38",
+2011 => x"7381c5f0",
+2012 => x"0ccabe3f",
+2013 => x"c98a3f80",
+2014 => x"f5a8520b",
+2015 => x"0b8151d3",
+2016 => x"fa3f8008",
+2017 => x"518a8f3f",
+2018 => x"7281c5f0",
+2019 => x"0ccaa23f",
+2020 => x"c8ee3f80",
+2021 => x"f5a8520b",
+2022 => x"0b8151d3",
+2023 => x"de3f8008",
+2024 => x"5189f33f",
+2025 => x"00ff3900",
+2026 => x"ff39f53d",
+2027 => x"0d7e6081",
+2028 => x"c5f00870",
+2029 => x"5b585b5b",
+2030 => x"7580c538",
+2031 => x"777a25a2",
+2032 => x"38771b70",
+2033 => x"337081ff",
+2034 => x"06585859",
+2035 => x"758a2e99",
+2036 => x"387681ff",
+2037 => x"0651c9b4",
+2038 => x"3f811858",
+2039 => x"790b7824",
+2040 => x"e0387980",
+2041 => x"0c8d3d0d",
+2042 => x"048d51c9",
+2043 => x"9f3f7833",
+2044 => x"7081ff06",
+2045 => x"520b0b57",
+2046 => x"c9923f81",
+2047 => x"1858dd39",
+2048 => x"79557a54",
+2049 => x"0b0b7d53",
+2050 => x"0b0b8552",
+2051 => x"0b0b8d3d",
+2052 => x"fc0551c8",
+2053 => x"af3f8008",
+2054 => x"5688f43f",
+2055 => x"7b80080c",
+2056 => x"75800c8d",
+2057 => x"3d0d04f6",
+2058 => x"3d0d7d7f",
+2059 => x"81c5f008",
+2060 => x"705a585a",
+2061 => x"5a7580ca",
+2062 => x"38767925",
+2063 => x"b638761a",
+2064 => x"58c8a53f",
+2065 => x"80087834",
+2066 => x"800b8008",
+2067 => x"81ff0657",
+2068 => x"580b758a",
+2069 => x"2ea83875",
+2070 => x"8d327030",
+2071 => x"7080257a",
+2072 => x"07515156",
+2073 => x"0b0b7580",
+2074 => x"c0388117",
+2075 => x"57780b77",
+2076 => x"24cc3876",
+2077 => x"560b0b75",
+2078 => x"800c8c3d",
+2079 => x"0d048158",
+2080 => x"d6397855",
+2081 => x"79540b0b",
+2082 => x"7c530b0b",
+2083 => x"84520b0b",
+2084 => x"8c3dfc05",
+2085 => x"51c7ad3f",
+2086 => x"80085687",
+2087 => x"f23f7a80",
+2088 => x"080c7580",
+2089 => x"0c8c3d0d",
+2090 => x"04811756",
+2091 => x"c839f93d",
+2092 => x"0d795781",
+2093 => x"c5f00880",
+2094 => x"2eb23876",
+2095 => x"518ac03f",
+2096 => x"7b567a55",
+2097 => x"80088105",
+2098 => x"540b0b76",
+2099 => x"530b0b82",
+2100 => x"520b0b89",
+2101 => x"3dfc0551",
+2102 => x"c6ea3f80",
+2103 => x"085787af",
+2104 => x"3f778008",
+2105 => x"0c76800c",
+2106 => x"893d0d04",
+2107 => x"87a13f85",
+2108 => x"0b80080c",
+2109 => x"ff0b800c",
+2110 => x"893d0d04",
+2111 => x"fb3d0d81",
+2112 => x"c5f00870",
+2113 => x"56540b0b",
+2114 => x"73883874",
+2115 => x"800c873d",
+2116 => x"0d047753",
+2117 => x"0b0b8352",
+2118 => x"0b0b873d",
+2119 => x"fc0551c6",
+2120 => x"a33f8008",
+2121 => x"540b0b86",
+2122 => x"e63f7580",
+2123 => x"080c7380",
+2124 => x"0c873d0d",
+2125 => x"04ff0b80",
+2126 => x"0c04fb3d",
+2127 => x"0d775581",
+2128 => x"c5f00880",
+2129 => x"2eae3874",
+2130 => x"5189b43f",
+2131 => x"80088105",
+2132 => x"540b0b74",
+2133 => x"530b0b87",
+2134 => x"520b0b87",
+2135 => x"3dfc0551",
+2136 => x"c5e23f80",
+2137 => x"085586a7",
+2138 => x"3f758008",
+2139 => x"0c74800c",
+2140 => x"873d0d04",
+2141 => x"86993f85",
+2142 => x"0b80080c",
+2143 => x"ff0b800c",
+2144 => x"873d0d04",
+2145 => x"fa3d0d81",
+2146 => x"c5f00880",
+2147 => x"2ea8387a",
+2148 => x"5579540b",
+2149 => x"0b78530b",
+2150 => x"0b86520b",
+2151 => x"0b883dfc",
+2152 => x"0551c5a0",
+2153 => x"3f800856",
+2154 => x"85e53f76",
+2155 => x"80080c75",
+2156 => x"800c883d",
+2157 => x"0d0485d7",
+2158 => x"3f9d0b80",
+2159 => x"080cff0b",
+2160 => x"800c883d",
+2161 => x"0d04f73d",
+2162 => x"0d7b7d5b",
+2163 => x"59bc530b",
+2164 => x"0b80520b",
+2165 => x"0b795186",
+2166 => x"fd3f8070",
+2167 => x"56579856",
+2168 => x"74197033",
+2169 => x"70782b79",
+2170 => x"078118f8",
+2171 => x"1a5a5859",
+2172 => x"55588475",
+2173 => x"24ea3876",
+2174 => x"7a238419",
+2175 => x"58807056",
+2176 => x"57985674",
+2177 => x"18703370",
+2178 => x"782b7907",
+2179 => x"8118f81a",
+2180 => x"5a585951",
+2181 => x"540b0b84",
+2182 => x"7524e838",
+2183 => x"76821b23",
+2184 => x"88195880",
+2185 => x"70565798",
+2186 => x"56741870",
+2187 => x"3370782b",
+2188 => x"79078118",
+2189 => x"f81a5a58",
+2190 => x"5951540b",
+2191 => x"0b847524",
+2192 => x"e8387684",
+2193 => x"1b0c8c19",
+2194 => x"58807056",
+2195 => x"57985674",
+2196 => x"18703370",
+2197 => x"782b7907",
+2198 => x"8118f81a",
+2199 => x"5a585951",
+2200 => x"540b0b84",
+2201 => x"7524e838",
+2202 => x"76881b23",
+2203 => x"90195880",
+2204 => x"70565798",
+2205 => x"56741870",
+2206 => x"3370782b",
+2207 => x"79078118",
+2208 => x"f81a5a58",
+2209 => x"5951540b",
+2210 => x"0b847524",
+2211 => x"e838768a",
+2212 => x"1b239419",
+2213 => x"58807056",
+2214 => x"57985674",
+2215 => x"18703370",
+2216 => x"782b7907",
+2217 => x"8118f81a",
+2218 => x"5a585951",
+2219 => x"540b0b84",
+2220 => x"7524e838",
+2221 => x"768c1b23",
+2222 => x"98195880",
+2223 => x"70565798",
+2224 => x"56741870",
+2225 => x"3370782b",
+2226 => x"79078118",
+2227 => x"f81a5a58",
+2228 => x"5951540b",
+2229 => x"0b847524",
+2230 => x"e838768e",
+2231 => x"1b239c19",
+2232 => x"58807056",
+2233 => x"57b85674",
+2234 => x"18703370",
+2235 => x"782b7907",
+2236 => x"8118f81a",
+2237 => x"5a58595a",
+2238 => x"540b0b88",
+2239 => x"7524e838",
+2240 => x"76901b0c",
+2241 => x"8b3d0d04",
+2242 => x"e93d0d6a",
+2243 => x"81c5f008",
+2244 => x"57570b75",
+2245 => x"933880c0",
+2246 => x"800b8418",
+2247 => x"0c75ac18",
+2248 => x"0c75800c",
+2249 => x"993d0d04",
+2250 => x"893d7055",
+2251 => x"6a540b0b",
+2252 => x"558a520b",
+2253 => x"0b993dff",
+2254 => x"bc0551c2",
+2255 => x"873f8008",
+2256 => x"77530b0b",
+2257 => x"75520b0b",
+2258 => x"56fcfb3f",
+2259 => x"82c13f77",
+2260 => x"80080c75",
+2261 => x"800c993d",
+2262 => x"0d04e93d",
+2263 => x"0d695781",
+2264 => x"c5f00880",
+2265 => x"2ebd3876",
+2266 => x"5185943f",
+2267 => x"893d7056",
+2268 => x"80088105",
+2269 => x"5577540b",
+2270 => x"0b568f52",
+2271 => x"0b0b993d",
+2272 => x"ffbc0551",
+2273 => x"c1be3f80",
+2274 => x"086b530b",
+2275 => x"0b76520b",
+2276 => x"0b57fcb2",
+2277 => x"3f81f83f",
+2278 => x"7780080c",
+2279 => x"76800c99",
+2280 => x"3d0d0481",
+2281 => x"ea3f850b",
+2282 => x"80080cff",
+2283 => x"0b800c99",
+2284 => x"3d0d04fc",
+2285 => x"3d0d8154",
+2286 => x"0b0b81c5",
+2287 => x"f0088838",
+2288 => x"73800c86",
+2289 => x"3d0d0476",
+2290 => x"530b0b97",
+2291 => x"b9520b0b",
+2292 => x"863dfc05",
+2293 => x"51c0ed3f",
+2294 => x"8008540b",
+2295 => x"0b81b03f",
+2296 => x"7480080c",
+2297 => x"73800c86",
+2298 => x"3d0d04f4",
+2299 => x"3d0d7e80",
+2300 => x"f5d40870",
+2301 => x"0881ff06",
+2302 => x"913df805",
+2303 => x"540b0b51",
+2304 => x"5959c29d",
+2305 => x"3f775780",
+2306 => x"540b0b76",
+2307 => x"557b7d58",
+2308 => x"520b0b0b",
+2309 => x"76530b0b",
+2310 => x"8e3df005",
+2311 => x"5184dc3f",
+2312 => x"797b5879",
+2313 => x"0c76841a",
+2314 => x"0c78800c",
+2315 => x"8e3d0d04",
+2316 => x"f43d0d7e",
+2317 => x"80f5d408",
+2318 => x"70087081",
+2319 => x"ff06923d",
+2320 => x"f8055551",
+2321 => x"5a5759c1",
+2322 => x"d83f7757",
+2323 => x"800b8b3d",
+2324 => x"59540b0b",
+2325 => x"76557b7d",
+2326 => x"58520b0b",
+2327 => x"0b76530b",
+2328 => x"0b775184",
+2329 => x"963f8056",
+2330 => x"bd84c076",
+2331 => x"5555797b",
+2332 => x"58520b0b",
+2333 => x"0b76530b",
+2334 => x"0b775183",
+2335 => x"fe3f7a57",
+2336 => x"78802e84",
+2337 => x"3876790c",
+2338 => x"76800c8e",
+2339 => x"3d0d0480",
+2340 => x"eea80880",
+2341 => x"0c04f73d",
+2342 => x"0d7b80ee",
+2343 => x"a80882c8",
+2344 => x"7105085a",
+2345 => x"540b0b5a",
+2346 => x"77802e80",
+2347 => x"eb388188",
+2348 => x"18841908",
+2349 => x"ff058171",
+2350 => x"2b595559",
+2351 => x"80742481",
+2352 => x"80388074",
+2353 => x"2480c138",
+2354 => x"73822b78",
+2355 => x"71058805",
+2356 => x"56568180",
+2357 => x"19087706",
+2358 => x"530b0b72",
+2359 => x"802e80c3",
+2360 => x"38781670",
+2361 => x"08530b0b",
+2362 => x"530b0b79",
+2363 => x"51740853",
+2364 => x"0b0b722d",
+2365 => x"ff14fc17",
+2366 => x"fc177981",
+2367 => x"2c5a5757",
+2368 => x"540b0b73",
+2369 => x"8025cb38",
+2370 => x"7708580b",
+2371 => x"0b77ff9e",
+2372 => x"3880eea8",
+2373 => x"08530b0b",
+2374 => x"bc730508",
+2375 => x"a9387951",
+2376 => x"f5823f74",
+2377 => x"08530b0b",
+2378 => x"722dff14",
+2379 => x"fc17fc17",
+2380 => x"79812c5a",
+2381 => x"5757540b",
+2382 => x"0b738025",
+2383 => x"ff9438c8",
+2384 => x"398057fe",
+2385 => x"fd397251",
+2386 => x"bc730508",
+2387 => x"540b0b73",
+2388 => x"2d7951f4",
+2389 => x"cf3ffb3d",
+2390 => x"0d777a71",
+2391 => x"028c05a3",
+2392 => x"05335854",
+2393 => x"0b0b540b",
+2394 => x"0b568373",
+2395 => x"2780e738",
+2396 => x"75830651",
+2397 => x"0b0b7080",
+2398 => x"dd387488",
+2399 => x"2b750770",
+2400 => x"71902b07",
+2401 => x"55518f73",
+2402 => x"27b33873",
+2403 => x"72708405",
+2404 => x"540b0b0c",
+2405 => x"71747170",
+2406 => x"8405530b",
+2407 => x"0b0c7471",
+2408 => x"70840553",
+2409 => x"0b0b0c74",
+2410 => x"71708405",
+2411 => x"530b0b0c",
+2412 => x"f014540b",
+2413 => x"0b520b0b",
+2414 => x"728f26cf",
+2415 => x"38837327",
+2416 => x"95387372",
+2417 => x"70840554",
+2418 => x"0b0b0cfc",
+2419 => x"7305530b",
+2420 => x"0b728326",
+2421 => x"ed38ff73",
+2422 => x"05510b0b",
+2423 => x"70ff2e98",
+2424 => x"38747270",
+2425 => x"8105540b",
+2426 => x"0b34ff71",
+2427 => x"05510b0b",
+2428 => x"70ff2e09",
+2429 => x"8106ea38",
+2430 => x"75800c87",
+2431 => x"3d0d0470",
+2432 => x"70707075",
+2433 => x"70718306",
+2434 => x"530b0b55",
+2435 => x"520b0b70",
+2436 => x"80c53871",
+2437 => x"70087009",
+2438 => x"f7fbfdff",
+2439 => x"720506f8",
+2440 => x"84828180",
+2441 => x"06540b0b",
+2442 => x"520b0b53",
+2443 => x"0b0b71a3",
+2444 => x"38847305",
+2445 => x"70087009",
+2446 => x"f7fbfdff",
+2447 => x"720506f8",
+2448 => x"84828180",
+2449 => x"06540b0b",
+2450 => x"520b0b53",
+2451 => x"0b0b7180",
+2452 => x"2edf3872",
+2453 => x"520b0b0b",
+2454 => x"0b713353",
+2455 => x"0b0b7280",
+2456 => x"2e8f3881",
+2457 => x"72057033",
+2458 => x"540b0b52",
+2459 => x"0b0b72f3",
+2460 => x"38717431",
+2461 => x"800c5050",
+2462 => x"505004e4",
+2463 => x"3d0d6ea1",
+2464 => x"3d08a33d",
+2465 => x"0859575f",
+2466 => x"80764d77",
+2467 => x"4ea33d08",
+2468 => x"a53d0857",
+2469 => x"4b0b754c",
+2470 => x"5e0b0b7d",
+2471 => x"6c2487b2",
+2472 => x"38806a24",
+2473 => x"87cd3869",
+2474 => x"6b58566b",
+2475 => x"6d5d460b",
+2476 => x"7b477544",
+2477 => x"76450b0b",
+2478 => x"64646868",
+2479 => x"5c5c5656",
+2480 => x"0b7481f5",
+2481 => x"38787627",
+2482 => x"82dd3875",
+2483 => x"81ff2683",
+2484 => x"2b5583ff",
+2485 => x"ff76278c",
+2486 => x"389055fe",
+2487 => x"800a7627",
+2488 => x"83389855",
+2489 => x"750b752a",
+2490 => x"80e3bc05",
+2491 => x"7033a077",
+2492 => x"31713157",
+2493 => x"55577480",
+2494 => x"2e953875",
+2495 => x"752ba076",
+2496 => x"317a772b",
+2497 => x"7c722a07",
+2498 => x"7c782b5d",
+2499 => x"5b59560b",
+2500 => x"0b75902a",
+2501 => x"7683ffff",
+2502 => x"0671540b",
+2503 => x"0b7a530b",
+2504 => x"0b595788",
+2505 => x"bf3f8008",
+2506 => x"5b88a53f",
+2507 => x"80088008",
+2508 => x"79297c90",
+2509 => x"2b7c902a",
+2510 => x"07565659",
+2511 => x"73752794",
+2512 => x"388008ff",
+2513 => x"05761555",
+2514 => x"59757426",
+2515 => x"87387474",
+2516 => x"2687f438",
+2517 => x"76520b0b",
+2518 => x"73753151",
+2519 => x"88863f80",
+2520 => x"085587ec",
+2521 => x"3f800880",
+2522 => x"0879297b",
+2523 => x"83ffff06",
+2524 => x"77902b07",
+2525 => x"56595773",
+2526 => x"78279638",
+2527 => x"8008ff05",
+2528 => x"76155557",
+2529 => x"75742689",
+2530 => x"38777426",
+2531 => x"77713158",
+2532 => x"5678902b",
+2533 => x"77075880",
+2534 => x"5b0b0b7a",
+2535 => x"4077417f",
+2536 => x"0b615654",
+2537 => x"0b0b7d80",
+2538 => x"dd38737f",
+2539 => x"0c747f84",
+2540 => x"050c7e80",
+2541 => x"0c9e3d0d",
+2542 => x"0480705c",
+2543 => x"58747926",
+2544 => x"d8387481",
+2545 => x"ff26832b",
+2546 => x"577483ff",
+2547 => x"ff2682bd",
+2548 => x"3874772a",
+2549 => x"80e3bc05",
+2550 => x"7033a079",
+2551 => x"31713159",
+2552 => x"5c5d7682",
+2553 => x"cf387654",
+2554 => x"0b0b7479",
+2555 => x"27853881",
+2556 => x"540b0b79",
+2557 => x"76277407",
+2558 => x"59815878",
+2559 => x"ff993876",
+2560 => x"58805bff",
+2561 => x"94397352",
+2562 => x"0b0b7453",
+2563 => x"0b0b9e3d",
+2564 => x"e80551d2",
+2565 => x"d43f6769",
+2566 => x"567f0c74",
+2567 => x"7f84050c",
+2568 => x"7e800c9e",
+2569 => x"3d0d0475",
+2570 => x"802e81d2",
+2571 => x"387581ff",
+2572 => x"26832b55",
+2573 => x"83ffff76",
+2574 => x"278c3890",
+2575 => x"55fe800a",
+2576 => x"76278338",
+2577 => x"9855750b",
+2578 => x"752a80e3",
+2579 => x"bc057033",
+2580 => x"a0773171",
+2581 => x"31575e54",
+2582 => x"0b0b7484",
+2583 => x"b8387876",
+2584 => x"31540b0b",
+2585 => x"8176902a",
+2586 => x"7783ffff",
+2587 => x"065f5d5b",
+2588 => x"0b7b520b",
+2589 => x"0b735185",
+2590 => x"eb3f8008",
+2591 => x"5785d13f",
+2592 => x"80088008",
+2593 => x"7e297890",
+2594 => x"2b7c902a",
+2595 => x"07565659",
+2596 => x"73752794",
+2597 => x"388008ff",
+2598 => x"05761555",
+2599 => x"59757426",
+2600 => x"87387474",
+2601 => x"26859738",
+2602 => x"7b520b0b",
+2603 => x"73753151",
+2604 => x"85b23f80",
+2605 => x"08558598",
+2606 => x"3f800880",
+2607 => x"087e297b",
+2608 => x"83ffff06",
+2609 => x"77902b07",
+2610 => x"56595773",
+2611 => x"78279638",
+2612 => x"8008ff05",
+2613 => x"76155557",
+2614 => x"75742689",
+2615 => x"38777426",
+2616 => x"77713158",
+2617 => x"5a78902b",
+2618 => x"77077b41",
+2619 => x"410b7f0b",
+2620 => x"6156540b",
+2621 => x"0b7d802e",
+2622 => x"fdb038fe",
+2623 => x"89397552",
+2624 => x"0b0b8151",
+2625 => x"84ca3f80",
+2626 => x"0856fea1",
+2627 => x"399057fe",
+2628 => x"800a7527",
+2629 => x"fdbb3898",
+2630 => x"75712a80",
+2631 => x"e3bc0570",
+2632 => x"33a07331",
+2633 => x"7131530b",
+2634 => x"0b5d5e57",
+2635 => x"0b0b7680",
+2636 => x"2efdb338",
+2637 => x"a0773175",
+2638 => x"782b7772",
+2639 => x"2a077779",
+2640 => x"2b7b7a2b",
+2641 => x"7d742a07",
+2642 => x"7d7b2b73",
+2643 => x"902a7483",
+2644 => x"ffff0671",
+2645 => x"597f772a",
+2646 => x"585e5c41",
+2647 => x"5f585c54",
+2648 => x"0b0b8480",
+2649 => x"3f800854",
+2650 => x"0b0b83e4",
+2651 => x"3f800880",
+2652 => x"08792975",
+2653 => x"902b7e90",
+2654 => x"2a075656",
+2655 => x"59737527",
+2656 => x"99388008",
+2657 => x"ff057b15",
+2658 => x"55597a74",
+2659 => x"268c3873",
+2660 => x"75278738",
+2661 => x"ff197b15",
+2662 => x"55597652",
+2663 => x"0b0b7375",
+2664 => x"315183c0",
+2665 => x"3f800855",
+2666 => x"83a63f80",
+2667 => x"08800879",
+2668 => x"297d83ff",
+2669 => x"ff067790",
+2670 => x"2b075659",
+2671 => x"57737827",
+2672 => x"99388008",
+2673 => x"ff057b15",
+2674 => x"55577a74",
+2675 => x"268c3873",
+2676 => x"78278738",
+2677 => x"ff177b15",
+2678 => x"55570b73",
+2679 => x"78317990",
+2680 => x"2b780770",
+2681 => x"83ffff06",
+2682 => x"71902a79",
+2683 => x"83ffff06",
+2684 => x"7a902a73",
+2685 => x"72297373",
+2686 => x"29747329",
+2687 => x"76742973",
+2688 => x"902a0572",
+2689 => x"05575543",
+2690 => x"5f5b585a",
+2691 => x"57595a74",
+2692 => x"7c278638",
+2693 => x"84808017",
+2694 => x"5774902a",
+2695 => x"177983ff",
+2696 => x"ff067684",
+2697 => x"80802905",
+2698 => x"57570b0b",
+2699 => x"767a269a",
+2700 => x"38767a32",
+2701 => x"70307072",
+2702 => x"07802556",
+2703 => x"5a5b7c76",
+2704 => x"27fad438",
+2705 => x"73802efa",
+2706 => x"ce38ff18",
+2707 => x"58805bfa",
+2708 => x"c839ff76",
+2709 => x"530b0b77",
+2710 => x"540b0b9f",
+2711 => x"3de80552",
+2712 => x"0b0b5ece",
+2713 => x"843f6769",
+2714 => x"574c0b75",
+2715 => x"4d698025",
+2716 => x"f8b5387d",
+2717 => x"096a6c5c",
+2718 => x"530b0b7a",
+2719 => x"540b0b9f",
+2720 => x"3de80552",
+2721 => x"0b0b5ecd",
+2722 => x"e03f6769",
+2723 => x"714c704d",
+2724 => x"5856f897",
+2725 => x"39a07531",
+2726 => x"76762b7a",
+2727 => x"772b7c73",
+2728 => x"2a077c78",
+2729 => x"2b72902a",
+2730 => x"7383ffff",
+2731 => x"0671587e",
+2732 => x"762a5742",
+2733 => x"405d5d57",
+2734 => x"5881a93f",
+2735 => x"80085781",
+2736 => x"8f3f8008",
+2737 => x"80087e29",
+2738 => x"78902b7d",
+2739 => x"902a0756",
+2740 => x"56597375",
+2741 => x"27993880",
+2742 => x"08ff0576",
+2743 => x"15555975",
+2744 => x"74268c38",
+2745 => x"73752787",
+2746 => x"38ff1976",
+2747 => x"1555597b",
+2748 => x"520b0b73",
+2749 => x"75315180",
+2750 => x"eb3f8008",
+2751 => x"5580d13f",
+2752 => x"80088008",
+2753 => x"7e297c83",
+2754 => x"ffff0670",
+2755 => x"78902b07",
+2756 => x"51565858",
+2757 => x"73772799",
+2758 => x"388008ff",
+2759 => x"05761555",
+2760 => x"58757426",
+2761 => x"8c387377",
+2762 => x"278738ff",
+2763 => x"18761555",
+2764 => x"5878902b",
+2765 => x"78077478",
+2766 => x"31555bfa",
+2767 => x"b339ff19",
+2768 => x"76155559",
+2769 => x"fae239ff",
+2770 => x"19761555",
+2771 => x"59f88539",
+2772 => x"70707080",
+2773 => x"530b0b75",
+2774 => x"520b0b74",
+2775 => x"51ceaf3f",
+2776 => x"50505004",
+2777 => x"70707081",
+2778 => x"530b0b75",
+2779 => x"520b0b74",
+2780 => x"51ce9b3f",
+2781 => x"50505004",
+2782 => x"707080f5",
+2783 => x"b00bfc05",
+2784 => x"7008520b",
+2785 => x"0b520b0b",
+2786 => x"0b70ff2e",
+2787 => x"9738702d",
+2788 => x"fc720570",
+2789 => x"08520b0b",
+2790 => x"520b0b0b",
+2791 => x"70ff2e09",
+2792 => x"8106eb38",
+2793 => x"50500404",
+2794 => x"ffb4963f",
+2795 => x"04000000",
+2796 => x"30313233",
+2797 => x"34353637",
+2798 => x"38390000",
+2799 => x"44485259",
+2800 => x"53544f4e",
+2801 => x"45205052",
+2802 => x"4f475241",
+2803 => x"4d2c2053",
+2804 => x"4f4d4520",
+2805 => x"53545249",
+2806 => x"4e470000",
+2807 => x"44485259",
+2808 => x"53544f4e",
+2809 => x"45205052",
+2810 => x"4f475241",
+2811 => x"4d2c2031",
+2812 => x"27535420",
+2813 => x"53545249",
+2814 => x"4e470000",
+2815 => x"44687279",
+2816 => x"73746f6e",
+2817 => x"65204265",
+2818 => x"6e63686d",
+2819 => x"61726b2c",
+2820 => x"20566572",
+2821 => x"73696f6e",
+2822 => x"20322e31",
+2823 => x"20284c61",
+2824 => x"6e677561",
+2825 => x"67653a20",
+2826 => x"43290a00",
+2827 => x"50726f67",
+2828 => x"72616d20",
+2829 => x"636f6d70",
+2830 => x"696c6564",
+2831 => x"20776974",
+2832 => x"68202772",
+2833 => x"65676973",
+2834 => x"74657227",
+2835 => x"20617474",
+2836 => x"72696275",
+2837 => x"74650a00",
+2838 => x"45786563",
+2839 => x"7574696f",
+2840 => x"6e207374",
+2841 => x"61727473",
+2842 => x"2c202564",
+2843 => x"2072756e",
+2844 => x"73207468",
+2845 => x"726f7567",
+2846 => x"68204468",
+2847 => x"72797374",
+2848 => x"6f6e650a",
+2849 => x"00000000",
+2850 => x"44485259",
+2851 => x"53544f4e",
+2852 => x"45205052",
+2853 => x"4f475241",
+2854 => x"4d2c2032",
+2855 => x"274e4420",
+2856 => x"53545249",
+2857 => x"4e470000",
+2858 => x"45786563",
+2859 => x"7574696f",
+2860 => x"6e20656e",
+2861 => x"64730a00",
+2862 => x"46696e61",
+2863 => x"6c207661",
+2864 => x"6c756573",
+2865 => x"206f6620",
+2866 => x"74686520",
+2867 => x"76617269",
+2868 => x"61626c65",
+2869 => x"73207573",
+2870 => x"65642069",
+2871 => x"6e207468",
+2872 => x"65206265",
+2873 => x"6e63686d",
+2874 => x"61726b3a",
+2875 => x"0a000000",
+2876 => x"496e745f",
+2877 => x"476c6f62",
+2878 => x"3a202020",
+2879 => x"20202020",
+2880 => x"20202020",
+2881 => x"2025640a",
+2882 => x"00000000",
+2883 => x"20202020",
+2884 => x"20202020",
+2885 => x"73686f75",
+2886 => x"6c642062",
+2887 => x"653a2020",
+2888 => x"2025640a",
+2889 => x"00000000",
+2890 => x"426f6f6c",
+2891 => x"5f476c6f",
+2892 => x"623a2020",
+2893 => x"20202020",
+2894 => x"20202020",
+2895 => x"2025640a",
+2896 => x"00000000",
+2897 => x"43685f31",
+2898 => x"5f476c6f",
+2899 => x"623a2020",
+2900 => x"20202020",
+2901 => x"20202020",
+2902 => x"2025630a",
+2903 => x"00000000",
+2904 => x"20202020",
+2905 => x"20202020",
+2906 => x"73686f75",
+2907 => x"6c642062",
+2908 => x"653a2020",
+2909 => x"2025630a",
+2910 => x"00000000",
+2911 => x"43685f32",
+2912 => x"5f476c6f",
+2913 => x"623a2020",
+2914 => x"20202020",
+2915 => x"20202020",
+2916 => x"2025630a",
+2917 => x"00000000",
+2918 => x"4172725f",
+2919 => x"315f476c",
+2920 => x"6f625b38",
+2921 => x"5d3a2020",
+2922 => x"20202020",
+2923 => x"2025640a",
+2924 => x"00000000",
+2925 => x"4172725f",
+2926 => x"325f476c",
+2927 => x"6f625b38",
+2928 => x"5d5b375d",
+2929 => x"3a202020",
+2930 => x"2025640a",
+2931 => x"00000000",
+2932 => x"20202020",
+2933 => x"20202020",
+2934 => x"73686f75",
+2935 => x"6c642062",
+2936 => x"653a2020",
+2937 => x"204e756d",
+2938 => x"6265725f",
+2939 => x"4f665f52",
+2940 => x"756e7320",
+2941 => x"2b203130",
+2942 => x"0a000000",
+2943 => x"5074725f",
+2944 => x"476c6f62",
+2945 => x"2d3e0a00",
+2946 => x"20205074",
+2947 => x"725f436f",
+2948 => x"6d703a20",
+2949 => x"20202020",
+2950 => x"20202020",
+2951 => x"2025640a",
+2952 => x"00000000",
+2953 => x"20202020",
+2954 => x"20202020",
+2955 => x"73686f75",
+2956 => x"6c642062",
+2957 => x"653a2020",
+2958 => x"2028696d",
+2959 => x"706c656d",
+2960 => x"656e7461",
+2961 => x"74696f6e",
+2962 => x"2d646570",
+2963 => x"656e6465",
+2964 => x"6e74290a",
+2965 => x"00000000",
+2966 => x"20204469",
+2967 => x"7363723a",
+2968 => x"20202020",
+2969 => x"20202020",
+2970 => x"20202020",
+2971 => x"2025640a",
+2972 => x"00000000",
+2973 => x"2020456e",
+2974 => x"756d5f43",
+2975 => x"6f6d703a",
+2976 => x"20202020",
+2977 => x"20202020",
+2978 => x"2025640a",
+2979 => x"00000000",
+2980 => x"2020496e",
+2981 => x"745f436f",
+2982 => x"6d703a20",
+2983 => x"20202020",
+2984 => x"20202020",
+2985 => x"2025640a",
+2986 => x"00000000",
+2987 => x"20205374",
+2988 => x"725f436f",
+2989 => x"6d703a20",
+2990 => x"20202020",
+2991 => x"20202020",
+2992 => x"2025730a",
+2993 => x"00000000",
+2994 => x"20202020",
+2995 => x"20202020",
+2996 => x"73686f75",
+2997 => x"6c642062",
+2998 => x"653a2020",
+2999 => x"20444852",
+3000 => x"5953544f",
+3001 => x"4e452050",
+3002 => x"524f4752",
+3003 => x"414d2c20",
+3004 => x"534f4d45",
+3005 => x"20535452",
+3006 => x"494e470a",
+3007 => x"00000000",
+3008 => x"4e657874",
+3009 => x"5f507472",
+3010 => x"5f476c6f",
+3011 => x"622d3e0a",
+3012 => x"00000000",
+3013 => x"20202020",
+3014 => x"20202020",
+3015 => x"73686f75",
+3016 => x"6c642062",
+3017 => x"653a2020",
+3018 => x"2028696d",
+3019 => x"706c656d",
+3020 => x"656e7461",
+3021 => x"74696f6e",
+3022 => x"2d646570",
+3023 => x"656e6465",
+3024 => x"6e74292c",
+3025 => x"2073616d",
+3026 => x"65206173",
+3027 => x"2061626f",
+3028 => x"76650a00",
+3029 => x"496e745f",
+3030 => x"315f4c6f",
+3031 => x"633a2020",
+3032 => x"20202020",
+3033 => x"20202020",
+3034 => x"2025640a",
+3035 => x"00000000",
+3036 => x"496e745f",
+3037 => x"325f4c6f",
+3038 => x"633a2020",
+3039 => x"20202020",
+3040 => x"20202020",
+3041 => x"2025640a",
+3042 => x"00000000",
+3043 => x"496e745f",
+3044 => x"335f4c6f",
+3045 => x"633a2020",
+3046 => x"20202020",
+3047 => x"20202020",
+3048 => x"2025640a",
+3049 => x"00000000",
+3050 => x"456e756d",
+3051 => x"5f4c6f63",
+3052 => x"3a202020",
+3053 => x"20202020",
+3054 => x"20202020",
+3055 => x"2025640a",
+3056 => x"00000000",
+3057 => x"5374725f",
+3058 => x"315f4c6f",
+3059 => x"633a2020",
+3060 => x"20202020",
+3061 => x"20202020",
+3062 => x"2025730a",
+3063 => x"00000000",
+3064 => x"20202020",
+3065 => x"20202020",
+3066 => x"73686f75",
+3067 => x"6c642062",
+3068 => x"653a2020",
+3069 => x"20444852",
+3070 => x"5953544f",
+3071 => x"4e452050",
+3072 => x"524f4752",
+3073 => x"414d2c20",
+3074 => x"31275354",
+3075 => x"20535452",
+3076 => x"494e470a",
+3077 => x"00000000",
+3078 => x"5374725f",
+3079 => x"325f4c6f",
+3080 => x"633a2020",
+3081 => x"20202020",
+3082 => x"20202020",
+3083 => x"2025730a",
+3084 => x"00000000",
+3085 => x"20202020",
+3086 => x"20202020",
+3087 => x"73686f75",
+3088 => x"6c642062",
+3089 => x"653a2020",
+3090 => x"20444852",
+3091 => x"5953544f",
+3092 => x"4e452050",
+3093 => x"524f4752",
+3094 => x"414d2c20",
+3095 => x"32274e44",
+3096 => x"20535452",
+3097 => x"494e470a",
+3098 => x"00000000",
+3099 => x"55736572",
+3100 => x"2074696d",
+3101 => x"653a2025",
+3102 => x"640a0000",
+3103 => x"4d696372",
+3104 => x"6f736563",
+3105 => x"6f6e6473",
+3106 => x"20666f72",
+3107 => x"206f6e65",
+3108 => x"2072756e",
+3109 => x"20746872",
+3110 => x"6f756768",
+3111 => x"20446872",
+3112 => x"7973746f",
+3113 => x"6e653a20",
+3114 => x"00000000",
+3115 => x"2564200a",
+3116 => x"00000000",
+3117 => x"44687279",
+3118 => x"73746f6e",
+3119 => x"65732070",
+3120 => x"65722053",
+3121 => x"65636f6e",
+3122 => x"643a2020",
+3123 => x"20202020",
+3124 => x"20202020",
+3125 => x"20202020",
+3126 => x"20202020",
+3127 => x"20202020",
+3128 => x"00000000",
+3129 => x"56415820",
+3130 => x"4d495053",
+3131 => x"20726174",
+3132 => x"696e6720",
+3133 => x"2a203130",
+3134 => x"3030203d",
+3135 => x"20256420",
+3136 => x"0a000000",
+3137 => x"50726f67",
+3138 => x"72616d20",
+3139 => x"636f6d70",
+3140 => x"696c6564",
+3141 => x"20776974",
+3142 => x"686f7574",
+3143 => x"20277265",
+3144 => x"67697374",
+3145 => x"65722720",
+3146 => x"61747472",
+3147 => x"69627574",
+3148 => x"650a0000",
+3149 => x"4d656173",
+3150 => x"75726564",
+3151 => x"2074696d",
+3152 => x"6520746f",
+3153 => x"6f20736d",
+3154 => x"616c6c20",
+3155 => x"746f206f",
+3156 => x"62746169",
+3157 => x"6e206d65",
+3158 => x"616e696e",
+3159 => x"6766756c",
+3160 => x"20726573",
+3161 => x"756c7473",
+3162 => x"0a000000",
+3163 => x"506c6561",
+3164 => x"73652069",
+3165 => x"6e637265",
+3166 => x"61736520",
+3167 => x"6e756d62",
+3168 => x"6572206f",
+3169 => x"66207275",
+3170 => x"6e730a00",
+3171 => x"44485259",
+3172 => x"53544f4e",
+3173 => x"45205052",
+3174 => x"4f475241",
+3175 => x"4d2c2033",
+3176 => x"27524420",
+3177 => x"53545249",
+3178 => x"4e470000",
+3179 => x"43000000",
+3180 => x"64756d6d",
+3181 => x"792e6578",
+3182 => x"65000000",
+3183 => x"00010202",
+3184 => x"03030303",
+3185 => x"04040404",
+3186 => x"04040404",
+3187 => x"05050505",
+3188 => x"05050505",
+3189 => x"05050505",
+3190 => x"05050505",
+3191 => x"06060606",
+3192 => x"06060606",
+3193 => x"06060606",
+3194 => x"06060606",
+3195 => x"06060606",
+3196 => x"06060606",
+3197 => x"06060606",
+3198 => x"06060606",
+3199 => x"07070707",
+3200 => x"07070707",
+3201 => x"07070707",
+3202 => x"07070707",
+3203 => x"07070707",
+3204 => x"07070707",
+3205 => x"07070707",
+3206 => x"07070707",
+3207 => x"07070707",
+3208 => x"07070707",
+3209 => x"07070707",
+3210 => x"07070707",
+3211 => x"07070707",
+3212 => x"07070707",
+3213 => x"07070707",
+3214 => x"07070707",
+3215 => x"08080808",
+3216 => x"08080808",
+3217 => x"08080808",
+3218 => x"08080808",
+3219 => x"08080808",
+3220 => x"08080808",
+3221 => x"08080808",
+3222 => x"08080808",
+3223 => x"08080808",
+3224 => x"08080808",
+3225 => x"08080808",
+3226 => x"08080808",
+3227 => x"08080808",
+3228 => x"08080808",
+3229 => x"08080808",
+3230 => x"08080808",
+3231 => x"08080808",
+3232 => x"08080808",
+3233 => x"08080808",
+3234 => x"08080808",
+3235 => x"08080808",
+3236 => x"08080808",
+3237 => x"08080808",
+3238 => x"08080808",
+3239 => x"08080808",
+3240 => x"08080808",
+3241 => x"08080808",
+3242 => x"08080808",
+3243 => x"08080808",
+3244 => x"08080808",
+3245 => x"08080808",
+3246 => x"08080808",
+3247 => x"00ffffff",
+3248 => x"ff00ffff",
+3249 => x"ffff00ff",
+3250 => x"ffffff00",
+3251 => x"00000000",
+3252 => x"00000000",
+3253 => x"00000000",
+3254 => x"00003ab8",
+3255 => x"000186a0", -- iterations
+3256 => x"00000000",
+3257 => x"00000000",
+3258 => x"00000000",
+3259 => x"00000000",
+3260 => x"00000000",
+3261 => x"00000000",
+3262 => x"00000000",
+3263 => x"00000000",
+3264 => x"00000000",
+3265 => x"00000000",
+3266 => x"00000000",
+3267 => x"00000000",
+3268 => x"00000000",
+3269 => x"ffffffff",
+3270 => x"00000000",
+3271 => x"00020000",
+3272 => x"00000000",
+3273 => x"00000000",
+3274 => x"00003320",
+3275 => x"00003320",
+3276 => x"00003328",
+3277 => x"00003328",
+3278 => x"00003330",
+3279 => x"00003330",
+3280 => x"00003338",
+3281 => x"00003338",
+3282 => x"00003340",
+3283 => x"00003340",
+3284 => x"00003348",
+3285 => x"00003348",
+3286 => x"00003350",
+3287 => x"00003350",
+3288 => x"00003358",
+3289 => x"00003358",
+3290 => x"00003360",
+3291 => x"00003360",
+3292 => x"00003368",
+3293 => x"00003368",
+3294 => x"00003370",
+3295 => x"00003370",
+3296 => x"00003378",
+3297 => x"00003378",
+3298 => x"00003380",
+3299 => x"00003380",
+3300 => x"00003388",
+3301 => x"00003388",
+3302 => x"00003390",
+3303 => x"00003390",
+3304 => x"00003398",
+3305 => x"00003398",
+3306 => x"000033a0",
+3307 => x"000033a0",
+3308 => x"000033a8",
+3309 => x"000033a8",
+3310 => x"000033b0",
+3311 => x"000033b0",
+3312 => x"000033b8",
+3313 => x"000033b8",
+3314 => x"000033c0",
+3315 => x"000033c0",
+3316 => x"000033c8",
+3317 => x"000033c8",
+3318 => x"000033d0",
+3319 => x"000033d0",
+3320 => x"000033d8",
+3321 => x"000033d8",
+3322 => x"000033e0",
+3323 => x"000033e0",
+3324 => x"000033e8",
+3325 => x"000033e8",
+3326 => x"000033f0",
+3327 => x"000033f0",
+3328 => x"000033f8",
+3329 => x"000033f8",
+3330 => x"00003400",
+3331 => x"00003400",
+3332 => x"00003408",
+3333 => x"00003408",
+3334 => x"00003410",
+3335 => x"00003410",
+3336 => x"00003418",
+3337 => x"00003418",
+3338 => x"00003420",
+3339 => x"00003420",
+3340 => x"00003428",
+3341 => x"00003428",
+3342 => x"00003430",
+3343 => x"00003430",
+3344 => x"00003438",
+3345 => x"00003438",
+3346 => x"00003440",
+3347 => x"00003440",
+3348 => x"00003448",
+3349 => x"00003448",
+3350 => x"00003450",
+3351 => x"00003450",
+3352 => x"00003458",
+3353 => x"00003458",
+3354 => x"00003460",
+3355 => x"00003460",
+3356 => x"00003468",
+3357 => x"00003468",
+3358 => x"00003470",
+3359 => x"00003470",
+3360 => x"00003478",
+3361 => x"00003478",
+3362 => x"00003480",
+3363 => x"00003480",
+3364 => x"00003488",
+3365 => x"00003488",
+3366 => x"00003490",
+3367 => x"00003490",
+3368 => x"00003498",
+3369 => x"00003498",
+3370 => x"000034a0",
+3371 => x"000034a0",
+3372 => x"000034a8",
+3373 => x"000034a8",
+3374 => x"000034b0",
+3375 => x"000034b0",
+3376 => x"000034b8",
+3377 => x"000034b8",
+3378 => x"000034c0",
+3379 => x"000034c0",
+3380 => x"000034c8",
+3381 => x"000034c8",
+3382 => x"000034d0",
+3383 => x"000034d0",
+3384 => x"000034d8",
+3385 => x"000034d8",
+3386 => x"000034e0",
+3387 => x"000034e0",
+3388 => x"000034e8",
+3389 => x"000034e8",
+3390 => x"000034f0",
+3391 => x"000034f0",
+3392 => x"000034f8",
+3393 => x"000034f8",
+3394 => x"00003500",
+3395 => x"00003500",
+3396 => x"00003508",
+3397 => x"00003508",
+3398 => x"00003510",
+3399 => x"00003510",
+3400 => x"00003518",
+3401 => x"00003518",
+3402 => x"00003520",
+3403 => x"00003520",
+3404 => x"00003528",
+3405 => x"00003528",
+3406 => x"00003530",
+3407 => x"00003530",
+3408 => x"00003538",
+3409 => x"00003538",
+3410 => x"00003540",
+3411 => x"00003540",
+3412 => x"00003548",
+3413 => x"00003548",
+3414 => x"00003550",
+3415 => x"00003550",
+3416 => x"00003558",
+3417 => x"00003558",
+3418 => x"00003560",
+3419 => x"00003560",
+3420 => x"00003568",
+3421 => x"00003568",
+3422 => x"00003570",
+3423 => x"00003570",
+3424 => x"00003578",
+3425 => x"00003578",
+3426 => x"00003580",
+3427 => x"00003580",
+3428 => x"00003588",
+3429 => x"00003588",
+3430 => x"00003590",
+3431 => x"00003590",
+3432 => x"00003598",
+3433 => x"00003598",
+3434 => x"000035a0",
+3435 => x"000035a0",
+3436 => x"000035a8",
+3437 => x"000035a8",
+3438 => x"000035b0",
+3439 => x"000035b0",
+3440 => x"000035b8",
+3441 => x"000035b8",
+3442 => x"000035c0",
+3443 => x"000035c0",
+3444 => x"000035c8",
+3445 => x"000035c8",
+3446 => x"000035d0",
+3447 => x"000035d0",
+3448 => x"000035d8",
+3449 => x"000035d8",
+3450 => x"000035e0",
+3451 => x"000035e0",
+3452 => x"000035e8",
+3453 => x"000035e8",
+3454 => x"000035f0",
+3455 => x"000035f0",
+3456 => x"000035f8",
+3457 => x"000035f8",
+3458 => x"00003600",
+3459 => x"00003600",
+3460 => x"00003608",
+3461 => x"00003608",
+3462 => x"00003610",
+3463 => x"00003610",
+3464 => x"00003618",
+3465 => x"00003618",
+3466 => x"00003620",
+3467 => x"00003620",
+3468 => x"00003628",
+3469 => x"00003628",
+3470 => x"00003630",
+3471 => x"00003630",
+3472 => x"00003638",
+3473 => x"00003638",
+3474 => x"00003640",
+3475 => x"00003640",
+3476 => x"00003648",
+3477 => x"00003648",
+3478 => x"00003650",
+3479 => x"00003650",
+3480 => x"00003658",
+3481 => x"00003658",
+3482 => x"00003660",
+3483 => x"00003660",
+3484 => x"00003668",
+3485 => x"00003668",
+3486 => x"00003670",
+3487 => x"00003670",
+3488 => x"00003678",
+3489 => x"00003678",
+3490 => x"00003680",
+3491 => x"00003680",
+3492 => x"00003688",
+3493 => x"00003688",
+3494 => x"00003690",
+3495 => x"00003690",
+3496 => x"00003698",
+3497 => x"00003698",
+3498 => x"000036a0",
+3499 => x"000036a0",
+3500 => x"000036a8",
+3501 => x"000036a8",
+3502 => x"000036b0",
+3503 => x"000036b0",
+3504 => x"000036b8",
+3505 => x"000036b8",
+3506 => x"000036c0",
+3507 => x"000036c0",
+3508 => x"000036c8",
+3509 => x"000036c8",
+3510 => x"000036d0",
+3511 => x"000036d0",
+3512 => x"000036d8",
+3513 => x"000036d8",
+3514 => x"000036e0",
+3515 => x"000036e0",
+3516 => x"000036e8",
+3517 => x"000036e8",
+3518 => x"000036f0",
+3519 => x"000036f0",
+3520 => x"000036f8",
+3521 => x"000036f8",
+3522 => x"00003700",
+3523 => x"00003700",
+3524 => x"00003708",
+3525 => x"00003708",
+3526 => x"00003710",
+3527 => x"00003710",
+3528 => x"00003718",
+3529 => x"00003718",
+3530 => x"0000372c",
+3531 => x"00000000",
+3532 => x"00003994",
+3533 => x"000039f0",
+3534 => x"00003a4c",
+3535 => x"00000000",
+3536 => x"00000000",
+3537 => x"00000000",
+3538 => x"00000000",
+3539 => x"00000000",
+3540 => x"00000000",
+3541 => x"00000000",
+3542 => x"00000000",
+3543 => x"00000000",
+3544 => x"000031ac",
+3545 => x"00000000",
+3546 => x"00000000",
+3547 => x"00000000",
+3548 => x"00000000",
+3549 => x"00000000",
+3550 => x"00000000",
+3551 => x"00000000",
+3552 => x"00000000",
+3553 => x"00000000",
+3554 => x"00000000",
+3555 => x"00000000",
+3556 => x"00000000",
+3557 => x"00000000",
+3558 => x"00000000",
+3559 => x"00000000",
+3560 => x"00000000",
+3561 => x"00000000",
+3562 => x"00000000",
+3563 => x"00000000",
+3564 => x"00000000",
+3565 => x"00000000",
+3566 => x"00000000",
+3567 => x"00000000",
+3568 => x"00000000",
+3569 => x"00000000",
+3570 => x"00000000",
+3571 => x"00000000",
+3572 => x"00000000",
+3573 => x"00000001",
+3574 => x"330eabcd",
+3575 => x"1234e66d",
+3576 => x"deec0005",
+3577 => x"000b0000",
+3578 => x"00000000",
+3579 => x"00000000",
+3580 => x"00000000",
+3581 => x"00000000",
+3582 => x"00000000",
+3583 => x"00000000",
+3584 => x"00000000",
+3585 => x"00000000",
+3586 => x"00000000",
+3587 => x"00000000",
+3588 => x"00000000",
+3589 => x"00000000",
+3590 => x"00000000",
+3591 => x"00000000",
+3592 => x"00000000",
+3593 => x"00000000",
+3594 => x"00000000",
+3595 => x"00000000",
+3596 => x"00000000",
+3597 => x"00000000",
+3598 => x"00000000",
+3599 => x"00000000",
+3600 => x"00000000",
+3601 => x"00000000",
+3602 => x"00000000",
+3603 => x"00000000",
+3604 => x"00000000",
+3605 => x"00000000",
+3606 => x"00000000",
+3607 => x"00000000",
+3608 => x"00000000",
+3609 => x"00000000",
+3610 => x"00000000",
+3611 => x"00000000",
+3612 => x"00000000",
+3613 => x"00000000",
+3614 => x"00000000",
+3615 => x"00000000",
+3616 => x"00000000",
+3617 => x"00000000",
+3618 => x"00000000",
+3619 => x"00000000",
+3620 => x"00000000",
+3621 => x"00000000",
+3622 => x"00000000",
+3623 => x"00000000",
+3624 => x"00000000",
+3625 => x"00000000",
+3626 => x"00000000",
+3627 => x"00000000",
+3628 => x"00000000",
+3629 => x"00000000",
+3630 => x"00000000",
+3631 => x"00000000",
+3632 => x"00000000",
+3633 => x"00000000",
+3634 => x"00000000",
+3635 => x"00000000",
+3636 => x"00000000",
+3637 => x"00000000",
+3638 => x"00000000",
+3639 => x"00000000",
+3640 => x"00000000",
+3641 => x"00000000",
+3642 => x"00000000",
+3643 => x"00000000",
+3644 => x"00000000",
+3645 => x"00000000",
+3646 => x"00000000",
+3647 => x"00000000",
+3648 => x"00000000",
+3649 => x"00000000",
+3650 => x"00000000",
+3651 => x"00000000",
+3652 => x"00000000",
+3653 => x"00000000",
+3654 => x"00000000",
+3655 => x"00000000",
+3656 => x"00000000",
+3657 => x"00000000",
+3658 => x"00000000",
+3659 => x"00000000",
+3660 => x"00000000",
+3661 => x"00000000",
+3662 => x"00000000",
+3663 => x"00000000",
+3664 => x"00000000",
+3665 => x"00000000",
+3666 => x"00000000",
+3667 => x"00000000",
+3668 => x"00000000",
+3669 => x"00000000",
+3670 => x"00000000",
+3671 => x"00000000",
+3672 => x"00000000",
+3673 => x"00000000",
+3674 => x"00000000",
+3675 => x"00000000",
+3676 => x"00000000",
+3677 => x"00000000",
+3678 => x"00000000",
+3679 => x"00000000",
+3680 => x"00000000",
+3681 => x"00000000",
+3682 => x"00000000",
+3683 => x"00000000",
+3684 => x"00000000",
+3685 => x"00000000",
+3686 => x"00000000",
+3687 => x"00000000",
+3688 => x"00000000",
+3689 => x"00000000",
+3690 => x"00000000",
+3691 => x"00000000",
+3692 => x"00000000",
+3693 => x"00000000",
+3694 => x"00000000",
+3695 => x"00000000",
+3696 => x"00000000",
+3697 => x"00000000",
+3698 => x"00000000",
+3699 => x"00000000",
+3700 => x"00000000",
+3701 => x"00000000",
+3702 => x"00000000",
+3703 => x"00000000",
+3704 => x"00000000",
+3705 => x"00000000",
+3706 => x"00000000",
+3707 => x"00000000",
+3708 => x"00000000",
+3709 => x"00000000",
+3710 => x"00000000",
+3711 => x"00000000",
+3712 => x"00000000",
+3713 => x"00000000",
+3714 => x"00000000",
+3715 => x"00000000",
+3716 => x"00000000",
+3717 => x"00000000",
+3718 => x"00000000",
+3719 => x"00000000",
+3720 => x"00000000",
+3721 => x"00000000",
+3722 => x"00000000",
+3723 => x"00000000",
+3724 => x"00000000",
+3725 => x"00000000",
+3726 => x"00000000",
+3727 => x"00000000",
+3728 => x"00000000",
+3729 => x"00000000",
+3730 => x"00000000",
+3731 => x"00000000",
+3732 => x"00000000",
+3733 => x"00000000",
+3734 => x"00000000",
+3735 => x"00000000",
+3736 => x"00000000",
+3737 => x"00000000",
+3738 => x"00000000",
+3739 => x"00000000",
+3740 => x"00000000",
+3741 => x"00000000",
+3742 => x"00000000",
+3743 => x"00000000",
+3744 => x"00000000",
+3745 => x"00000000",
+3746 => x"00000000",
+3747 => x"00000000",
+3748 => x"00000000",
+3749 => x"00000000",
+3750 => x"00000000",
+3751 => x"00000000",
+3752 => x"00000000",
+3753 => x"00000000",
+3754 => x"000031b0",
+3755 => x"ffffffff",
+3756 => x"00000000",
+3757 => x"ffffffff",
+3758 => x"00000000",
+ others => x"00000000"
+);
+
+begin
+
+mem_busy <= '0';
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (mem_writeEnable = '1') then
+ ram(conv_integer(mem_addr)) := mem_write;
+ end if;
+ mem_read <= ram(conv_integer(mem_addr));
+ end if;
+end process;
+
+
+
+
+end dram_arch;
diff --git a/zpu/hdl/zpu4/src/bram_dmips.vhd b/zpu/hdl/zpu4/src/bram_dmips.vhd
new file mode 100644
index 0000000..1c85e0d
--- /dev/null
+++ b/zpu/hdl/zpu4/src/bram_dmips.vhd
@@ -0,0 +1,3717 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+
+entity dualport_ram is
+port (clk : in std_logic;
+ memAWriteEnable : in std_logic;
+ memAAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memAWrite : in std_logic_vector(wordSize-1 downto 0);
+ memARead : out std_logic_vector(wordSize-1 downto 0);
+ memBWriteEnable : in std_logic;
+ memBAddr : in std_logic_vector(maxAddrBit downto minAddrBit);
+ memBWrite : in std_logic_vector(wordSize-1 downto 0);
+ memBRead : out std_logic_vector(wordSize-1 downto 0));
+end dualport_ram;
+
+architecture dualport_ram_arch of dualport_ram is
+
+
+type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
+
+shared variable ram : ram_type :=
+(
+0 => x"0b0b0b0b",
+1 => x"80700b0b",
+2 => x"80e2a40c",
+3 => x"3a0b0b80",
+4 => x"c6fc0400",
+5 => x"00000000",
+6 => x"00000000",
+7 => x"00000000",
+8 => x"80088408",
+9 => x"88080b0b",
+10 => x"80c7c32d",
+11 => x"880c840c",
+12 => x"800c0400",
+13 => x"00000000",
+14 => x"00000000",
+15 => x"00000000",
+16 => x"71fd0608",
+17 => x"72830609",
+18 => x"81058205",
+19 => x"832b2a83",
+20 => x"ffff0652",
+21 => x"04000000",
+22 => x"00000000",
+23 => x"00000000",
+24 => x"71fd0608",
+25 => x"83ffff73",
+26 => x"83060981",
+27 => x"05820583",
+28 => x"2b2b0906",
+29 => x"7383ffff",
+30 => x"0b0b0b0b",
+31 => x"83a70400",
+32 => x"72098105",
+33 => x"72057373",
+34 => x"09060906",
+35 => x"73097306",
+36 => x"070a8106",
+37 => x"53510400",
+38 => x"00000000",
+39 => x"00000000",
+40 => x"72722473",
+41 => x"732e0753",
+42 => x"51040000",
+43 => x"00000000",
+44 => x"00000000",
+45 => x"00000000",
+46 => x"00000000",
+47 => x"00000000",
+48 => x"71737109",
+49 => x"71068106",
+50 => x"30720a10",
+51 => x"0a720a10",
+52 => x"0a31050a",
+53 => x"81065151",
+54 => x"53510400",
+55 => x"00000000",
+56 => x"72722673",
+57 => x"732e0753",
+58 => x"51040000",
+59 => x"00000000",
+60 => x"00000000",
+61 => x"00000000",
+62 => x"00000000",
+63 => x"00000000",
+64 => x"00000000",
+65 => x"00000000",
+66 => x"00000000",
+67 => x"00000000",
+68 => x"00000000",
+69 => x"00000000",
+70 => x"00000000",
+71 => x"00000000",
+72 => x"0b0b0b88",
+73 => x"c4040000",
+74 => x"00000000",
+75 => x"00000000",
+76 => x"00000000",
+77 => x"00000000",
+78 => x"00000000",
+79 => x"00000000",
+80 => x"720a722b",
+81 => x"0a535104",
+82 => x"00000000",
+83 => x"00000000",
+84 => x"00000000",
+85 => x"00000000",
+86 => x"00000000",
+87 => x"00000000",
+88 => x"72729f06",
+89 => x"0981050b",
+90 => x"0b0b88a7",
+91 => x"05040000",
+92 => x"00000000",
+93 => x"00000000",
+94 => x"00000000",
+95 => x"00000000",
+96 => x"72722aff",
+97 => x"739f062a",
+98 => x"0974090a",
+99 => x"8106ff05",
+100 => x"06075351",
+101 => x"04000000",
+102 => x"00000000",
+103 => x"00000000",
+104 => x"71715351",
+105 => x"020d0406",
+106 => x"73830609",
+107 => x"81058205",
+108 => x"832b0b2b",
+109 => x"0772fc06",
+110 => x"0c515104",
+111 => x"00000000",
+112 => x"72098105",
+113 => x"72050970",
+114 => x"81050906",
+115 => x"0a810653",
+116 => x"51040000",
+117 => x"00000000",
+118 => x"00000000",
+119 => x"00000000",
+120 => x"72098105",
+121 => x"72050970",
+122 => x"81050906",
+123 => x"0a098106",
+124 => x"53510400",
+125 => x"00000000",
+126 => x"00000000",
+127 => x"00000000",
+128 => x"71098105",
+129 => x"52040000",
+130 => x"00000000",
+131 => x"00000000",
+132 => x"00000000",
+133 => x"00000000",
+134 => x"00000000",
+135 => x"00000000",
+136 => x"72720981",
+137 => x"05055351",
+138 => x"04000000",
+139 => x"00000000",
+140 => x"00000000",
+141 => x"00000000",
+142 => x"00000000",
+143 => x"00000000",
+144 => x"72097206",
+145 => x"73730906",
+146 => x"07535104",
+147 => x"00000000",
+148 => x"00000000",
+149 => x"00000000",
+150 => x"00000000",
+151 => x"00000000",
+152 => x"71fc0608",
+153 => x"72830609",
+154 => x"81058305",
+155 => x"1010102a",
+156 => x"81ff0652",
+157 => x"04000000",
+158 => x"00000000",
+159 => x"00000000",
+160 => x"71fc0608",
+161 => x"0b0b80e2",
+162 => x"90738306",
+163 => x"10100508",
+164 => x"060b0b0b",
+165 => x"88aa0400",
+166 => x"00000000",
+167 => x"00000000",
+168 => x"80088408",
+169 => x"88087575",
+170 => x"0b0b0baf",
+171 => x"ac2d5050",
+172 => x"80085688",
+173 => x"0c840c80",
+174 => x"0c510400",
+175 => x"00000000",
+176 => x"80088408",
+177 => x"88087575",
+178 => x"0b0b0baf",
+179 => x"f02d5050",
+180 => x"80085688",
+181 => x"0c840c80",
+182 => x"0c510400",
+183 => x"00000000",
+184 => x"72097081",
+185 => x"0509060a",
+186 => x"8106ff05",
+187 => x"70547106",
+188 => x"73097274",
+189 => x"05ff0506",
+190 => x"07515151",
+191 => x"04000000",
+192 => x"72097081",
+193 => x"0509060a",
+194 => x"098106ff",
+195 => x"05705471",
+196 => x"06730972",
+197 => x"7405ff05",
+198 => x"06075151",
+199 => x"51040000",
+200 => x"05ff0504",
+201 => x"00000000",
+202 => x"00000000",
+203 => x"00000000",
+204 => x"00000000",
+205 => x"00000000",
+206 => x"00000000",
+207 => x"00000000",
+208 => x"810b0b0b",
+209 => x"80e2a00c",
+210 => x"51040000",
+211 => x"00000000",
+212 => x"00000000",
+213 => x"00000000",
+214 => x"00000000",
+215 => x"00000000",
+216 => x"71810552",
+217 => x"04000000",
+218 => x"00000000",
+219 => x"00000000",
+220 => x"00000000",
+221 => x"00000000",
+222 => x"00000000",
+223 => x"00000000",
+224 => x"00000000",
+225 => x"00000000",
+226 => x"00000000",
+227 => x"00000000",
+228 => x"00000000",
+229 => x"00000000",
+230 => x"00000000",
+231 => x"00000000",
+232 => x"02840572",
+233 => x"10100552",
+234 => x"04000000",
+235 => x"00000000",
+236 => x"00000000",
+237 => x"00000000",
+238 => x"00000000",
+239 => x"00000000",
+240 => x"00000000",
+241 => x"00000000",
+242 => x"00000000",
+243 => x"00000000",
+244 => x"00000000",
+245 => x"00000000",
+246 => x"00000000",
+247 => x"00000000",
+248 => x"717105ff",
+249 => x"05715351",
+250 => x"020d0400",
+251 => x"00000000",
+252 => x"00000000",
+253 => x"00000000",
+254 => x"00000000",
+255 => x"00000000",
+256 => x"83d93f80",
+257 => x"cbcf3f04",
+258 => x"10101010",
+259 => x"10101010",
+260 => x"10101010",
+261 => x"10101010",
+262 => x"10101010",
+263 => x"10101010",
+264 => x"10101010",
+265 => x"10101053",
+266 => x"51047381",
+267 => x"ff067383",
+268 => x"06098105",
+269 => x"83051010",
+270 => x"102b0772",
+271 => x"fc060c51",
+272 => x"51043c04",
+273 => x"72728072",
+274 => x"8106ff05",
+275 => x"09720605",
+276 => x"71105272",
+277 => x"0a100a53",
+278 => x"72ed3851",
+279 => x"51535104",
+280 => x"ff3d0d0b",
+281 => x"0b80f294",
+282 => x"08528412",
+283 => x"08708106",
+284 => x"515170f6",
+285 => x"38710881",
+286 => x"ff06800c",
+287 => x"833d0d04",
+288 => x"ff3d0d0b",
+289 => x"0b80f294",
+290 => x"08528412",
+291 => x"08700a10",
+292 => x"0a708106",
+293 => x"51515170",
+294 => x"f1387372",
+295 => x"0c833d0d",
+296 => x"0480e2a0",
+297 => x"08802ea8",
+298 => x"38838080",
+299 => x"0b0b0b80",
+300 => x"f2940c82",
+301 => x"a0800b0b",
+302 => x"0b80f298",
+303 => x"0c829080",
+304 => x"0b80f2a8",
+305 => x"0c0b0b80",
+306 => x"f29c0b80",
+307 => x"f2ac0c04",
+308 => x"f8808080",
+309 => x"a40b0b0b",
+310 => x"80f2940c",
+311 => x"f8808082",
+312 => x"800b0b0b",
+313 => x"80f2980c",
+314 => x"f8808084",
+315 => x"800b80f2",
+316 => x"a80cf880",
+317 => x"8080940b",
+318 => x"80f2ac0c",
+319 => x"f8808080",
+320 => x"9c0b80f2",
+321 => x"a40cf880",
+322 => x"8080a00b",
+323 => x"80f2b00c",
+324 => x"04f23d0d",
+325 => x"600b0b80",
+326 => x"f2980856",
+327 => x"5d82750c",
+328 => x"8059805a",
+329 => x"800b8f3d",
+330 => x"71101017",
+331 => x"70085957",
+332 => x"5d5b8076",
+333 => x"81ff067c",
+334 => x"832b5658",
+335 => x"5276537b",
+336 => x"519af33f",
+337 => x"7d7f7a72",
+338 => x"077c7207",
+339 => x"71716081",
+340 => x"05415f5d",
+341 => x"5b595755",
+342 => x"7a8724bb",
+343 => x"380b0b80",
+344 => x"f298087b",
+345 => x"10101170",
+346 => x"08585155",
+347 => x"807681ff",
+348 => x"067c832b",
+349 => x"56585276",
+350 => x"537b519a",
+351 => x"b93f7d7f",
+352 => x"7a72077c",
+353 => x"72077171",
+354 => x"60810541",
+355 => x"5f5d5b59",
+356 => x"5755877b",
+357 => x"25c73876",
+358 => x"7d0c7784",
+359 => x"1e0c7c80",
+360 => x"0c903d0d",
+361 => x"04ff3d0d",
+362 => x"80f2a033",
+363 => x"5170a738",
+364 => x"80e2ac08",
+365 => x"70085252",
+366 => x"70802e94",
+367 => x"38841280",
+368 => x"e2ac0c70",
+369 => x"2d80e2ac",
+370 => x"08700852",
+371 => x"5270ee38",
+372 => x"810b80f2",
+373 => x"a034833d",
+374 => x"0d040480",
+375 => x"3d0d0b0b",
+376 => x"80f29008",
+377 => x"802e8e38",
+378 => x"0b0b0b0b",
+379 => x"800b802e",
+380 => x"09810685",
+381 => x"38823d0d",
+382 => x"040b0b80",
+383 => x"f290510b",
+384 => x"0b0bf3fc",
+385 => x"3f823d0d",
+386 => x"0404ff3d",
+387 => x"0d028f05",
+388 => x"3352718a",
+389 => x"2e8a3871",
+390 => x"51fce53f",
+391 => x"833d0d04",
+392 => x"8d51fcdc",
+393 => x"3f7151fc",
+394 => x"d73f833d",
+395 => x"0d04ce3d",
+396 => x"0db53d70",
+397 => x"70840552",
+398 => x"088c8a5c",
+399 => x"56a53d5e",
+400 => x"5c807570",
+401 => x"81055733",
+402 => x"765b5558",
+403 => x"73782e80",
+404 => x"c1388e3d",
+405 => x"5b73a52e",
+406 => x"09810680",
+407 => x"c5387870",
+408 => x"81055a33",
+409 => x"547380e4",
+410 => x"2e81b638",
+411 => x"7380e424",
+412 => x"80c63873",
+413 => x"80e32ea1",
+414 => x"388052a5",
+415 => x"51792d80",
+416 => x"52735179",
+417 => x"2d821858",
+418 => x"78708105",
+419 => x"5a335473",
+420 => x"c4387780",
+421 => x"0cb43d0d",
+422 => x"047b841d",
+423 => x"83123356",
+424 => x"5d578052",
+425 => x"7351792d",
+426 => x"81187970",
+427 => x"81055b33",
+428 => x"555873ff",
+429 => x"a038db39",
+430 => x"7380f32e",
+431 => x"098106ff",
+432 => x"b8387b84",
+433 => x"1d710859",
+434 => x"5d568077",
+435 => x"33555673",
+436 => x"762e8d38",
+437 => x"81167018",
+438 => x"70335755",
+439 => x"5674f538",
+440 => x"ff165580",
+441 => x"7625ffa0",
+442 => x"38767081",
+443 => x"05583354",
+444 => x"80527351",
+445 => x"792d8118",
+446 => x"75ff1757",
+447 => x"57588076",
+448 => x"25ff8538",
+449 => x"76708105",
+450 => x"58335480",
+451 => x"52735179",
+452 => x"2d811875",
+453 => x"ff175757",
+454 => x"58758024",
+455 => x"cc38fee8",
+456 => x"397b841d",
+457 => x"71087071",
+458 => x"9f2c5953",
+459 => x"595d5680",
+460 => x"75248195",
+461 => x"38757d7c",
+462 => x"58565480",
+463 => x"5773772e",
+464 => x"098106b6",
+465 => x"38b07b34",
+466 => x"02b50556",
+467 => x"7a762e97",
+468 => x"38ff1656",
+469 => x"75337570",
+470 => x"81055734",
+471 => x"8117577a",
+472 => x"762e0981",
+473 => x"06eb3880",
+474 => x"7534767d",
+475 => x"ff125758",
+476 => x"56758024",
+477 => x"fef338fe",
+478 => x"8f398a52",
+479 => x"7351a0f0",
+480 => x"3f80080b",
+481 => x"0b80d484",
+482 => x"05337670",
+483 => x"81055834",
+484 => x"8a527351",
+485 => x"a0963f80",
+486 => x"08548008",
+487 => x"802effac",
+488 => x"388a5273",
+489 => x"51a0c93f",
+490 => x"80080b0b",
+491 => x"80d48405",
+492 => x"33767081",
+493 => x"0558348a",
+494 => x"5273519f",
+495 => x"ef3f8008",
+496 => x"548008ff",
+497 => x"b538ff84",
+498 => x"39745276",
+499 => x"53b43dff",
+500 => x"b8055195",
+501 => x"b63fa33d",
+502 => x"0856fed9",
+503 => x"39803d0d",
+504 => x"80c10b81",
+505 => x"c0f43480",
+506 => x"0b81c2d0",
+507 => x"0c70800c",
+508 => x"823d0d04",
+509 => x"ff3d0d80",
+510 => x"0b81c0f4",
+511 => x"33525270",
+512 => x"80c12e99",
+513 => x"387181c2",
+514 => x"d0080781",
+515 => x"c2d00c80",
+516 => x"c20b81c0",
+517 => x"f8347080",
+518 => x"0c833d0d",
+519 => x"04810b81",
+520 => x"c2d00807",
+521 => x"81c2d00c",
+522 => x"80c20b81",
+523 => x"c0f83470",
+524 => x"800c833d",
+525 => x"0d04fd3d",
+526 => x"0d757008",
+527 => x"8a055353",
+528 => x"81c0f433",
+529 => x"517080c1",
+530 => x"2e8b3873",
+531 => x"f3387080",
+532 => x"0c853d0d",
+533 => x"04ff1270",
+534 => x"81c0f008",
+535 => x"31740c80",
+536 => x"0c853d0d",
+537 => x"04fc3d0d",
+538 => x"81c0fc08",
+539 => x"5574802e",
+540 => x"8c387675",
+541 => x"08710c81",
+542 => x"c0fc0856",
+543 => x"548c1553",
+544 => x"81c0f008",
+545 => x"528a5190",
+546 => x"f03f7380",
+547 => x"0c863d0d",
+548 => x"04fb3d0d",
+549 => x"77700856",
+550 => x"56b05381",
+551 => x"c0fc0852",
+552 => x"7451acb4",
+553 => x"3f850b8c",
+554 => x"170c850b",
+555 => x"8c160c75",
+556 => x"08750c81",
+557 => x"c0fc0854",
+558 => x"73802e8a",
+559 => x"38730875",
+560 => x"0c81c0fc",
+561 => x"08548c14",
+562 => x"5381c0f0",
+563 => x"08528a51",
+564 => x"90a73f84",
+565 => x"1508ad38",
+566 => x"860b8c16",
+567 => x"0c881552",
+568 => x"88160851",
+569 => x"8fb33f81",
+570 => x"c0fc0870",
+571 => x"08760c54",
+572 => x"8c157054",
+573 => x"548a5273",
+574 => x"08518ffd",
+575 => x"3f73800c",
+576 => x"873d0d04",
+577 => x"750854b0",
+578 => x"53735275",
+579 => x"51abc93f",
+580 => x"73800c87",
+581 => x"3d0d04d9",
+582 => x"3d0db051",
+583 => x"9eeb3f80",
+584 => x"0881c0ec",
+585 => x"0cb0519e",
+586 => x"e03f8008",
+587 => x"81c0fc0c",
+588 => x"81c0ec08",
+589 => x"80080c80",
+590 => x"0b800884",
+591 => x"050c820b",
+592 => x"80088805",
+593 => x"0ca80b80",
+594 => x"088c050c",
+595 => x"9f530b0b",
+596 => x"80d49052",
+597 => x"80089005",
+598 => x"51aafd3f",
+599 => x"a13d5e9f",
+600 => x"530b0b80",
+601 => x"d4b0527d",
+602 => x"51aaed3f",
+603 => x"8a0b80ff",
+604 => x"b00c0b0b",
+605 => x"80ded451",
+606 => x"f9b43f0b",
+607 => x"0b80d4d0",
+608 => x"51f9ab3f",
+609 => x"0b0b80de",
+610 => x"d451f9a2",
+611 => x"3f80e2b4",
+612 => x"08802e8a",
+613 => x"cf380b0b",
+614 => x"80d58051",
+615 => x"f9903f0b",
+616 => x"0b80ded4",
+617 => x"51f9873f",
+618 => x"80e2b008",
+619 => x"520b0b80",
+620 => x"d5ac51f8",
+621 => x"f93f80f2",
+622 => x"cc51bbf8",
+623 => x"3f810b9a",
+624 => x"3d5e5b80",
+625 => x"0b80e2b0",
+626 => x"082582d6",
+627 => x"38903d5f",
+628 => x"80c10b81",
+629 => x"c0f43481",
+630 => x"0b81c2d0",
+631 => x"0c80c20b",
+632 => x"81c0f834",
+633 => x"8240835a",
+634 => x"9f530b0b",
+635 => x"80d5dc52",
+636 => x"7c51a9e4",
+637 => x"3f814180",
+638 => x"7d537e52",
+639 => x"568f9e3f",
+640 => x"8008762e",
+641 => x"09810683",
+642 => x"38815675",
+643 => x"81c2d00c",
+644 => x"7f705856",
+645 => x"758325a2",
+646 => x"38751010",
+647 => x"16fd0542",
+648 => x"a93dffa4",
+649 => x"05538352",
+650 => x"76518dcd",
+651 => x"3f7f8105",
+652 => x"70417058",
+653 => x"56837624",
+654 => x"e0386154",
+655 => x"755380f2",
+656 => x"d45281c1",
+657 => x"88518dc1",
+658 => x"3f81c0fc",
+659 => x"08700858",
+660 => x"58b05377",
+661 => x"527651a8",
+662 => x"ff3f850b",
+663 => x"8c190c85",
+664 => x"0b8c180c",
+665 => x"7708770c",
+666 => x"81c0fc08",
+667 => x"5675802e",
+668 => x"8a387508",
+669 => x"770c81c0",
+670 => x"fc08568c",
+671 => x"165381c0",
+672 => x"f008528a",
+673 => x"518cf23f",
+674 => x"84170888",
+675 => x"e038860b",
+676 => x"8c180c88",
+677 => x"17528818",
+678 => x"08518bfd",
+679 => x"3f81c0fc",
+680 => x"08700878",
+681 => x"0c568c17",
+682 => x"7054598a",
+683 => x"52780851",
+684 => x"8cc73f80",
+685 => x"c10b81c0",
+686 => x"f8335757",
+687 => x"767626a2",
+688 => x"3880c352",
+689 => x"76518dab",
+690 => x"3f800861",
+691 => x"2e8aec38",
+692 => x"81177081",
+693 => x"ff0681c0",
+694 => x"f8335858",
+695 => x"58757727",
+696 => x"e0387960",
+697 => x"29627054",
+698 => x"71535b59",
+699 => x"99be3f80",
+700 => x"0840787a",
+701 => x"31708729",
+702 => x"80083180",
+703 => x"088a0581",
+704 => x"c0f43381",
+705 => x"c0f0085e",
+706 => x"5b525a56",
+707 => x"7780c12e",
+708 => x"8ad8387b",
+709 => x"f738811b",
+710 => x"5b80e2b0",
+711 => x"087b25fd",
+712 => x"af3881c0",
+713 => x"e451b98c",
+714 => x"3f0b0b80",
+715 => x"d5fc51f5",
+716 => x"fd3f0b0b",
+717 => x"80ded451",
+718 => x"f5f43f0b",
+719 => x"0b80d68c",
+720 => x"51f5eb3f",
+721 => x"0b0b80de",
+722 => x"d451f5e2",
+723 => x"3f81c0f0",
+724 => x"08520b0b",
+725 => x"80d6c451",
+726 => x"f5d43f85",
+727 => x"520b0b80",
+728 => x"d6e051f5",
+729 => x"c93f81c2",
+730 => x"d008520b",
+731 => x"0b80d6fc",
+732 => x"51f5bb3f",
+733 => x"81520b0b",
+734 => x"80d6e051",
+735 => x"f5b03f81",
+736 => x"c0f43352",
+737 => x"0b0b80d7",
+738 => x"9851f5a2",
+739 => x"3f80c152",
+740 => x"0b0b80d7",
+741 => x"b451f596",
+742 => x"3f81c0f8",
+743 => x"33520b0b",
+744 => x"80d7d051",
+745 => x"f5883f80",
+746 => x"c2520b0b",
+747 => x"80d7b451",
+748 => x"f4fc3f81",
+749 => x"c1a80852",
+750 => x"0b0b80d7",
+751 => x"ec51f4ee",
+752 => x"3f87520b",
+753 => x"0b80d6e0",
+754 => x"51f4e33f",
+755 => x"80ffb008",
+756 => x"520b0b80",
+757 => x"d88851f4",
+758 => x"d53f0b0b",
+759 => x"80d8a451",
+760 => x"f4cc3f0b",
+761 => x"0b80d8d0",
+762 => x"51f4c33f",
+763 => x"81c0fc08",
+764 => x"7008535a",
+765 => x"0b0b80d8",
+766 => x"dc51f4b2",
+767 => x"3f0b0b80",
+768 => x"d8f851f4",
+769 => x"a93f81c0",
+770 => x"fc088411",
+771 => x"0853560b",
+772 => x"0b80d9ac",
+773 => x"51f4973f",
+774 => x"80520b0b",
+775 => x"80d6e051",
+776 => x"f48c3f81",
+777 => x"c0fc0888",
+778 => x"11085358",
+779 => x"0b0b80d9",
+780 => x"c851f3fa",
+781 => x"3f82520b",
+782 => x"0b80d6e0",
+783 => x"51f3ef3f",
+784 => x"81c0fc08",
+785 => x"8c110853",
+786 => x"570b0b80",
+787 => x"d9e451f3",
+788 => x"dd3f9152",
+789 => x"0b0b80d6",
+790 => x"e051f3d2",
+791 => x"3f81c0fc",
+792 => x"08900552",
+793 => x"0b0b80da",
+794 => x"8051f3c2",
+795 => x"3f0b0b80",
+796 => x"da9c51f3",
+797 => x"b93f0b0b",
+798 => x"80dad451",
+799 => x"f3b03f81",
+800 => x"c0ec0870",
+801 => x"08535f0b",
+802 => x"0b80d8dc",
+803 => x"51f39f3f",
+804 => x"0b0b80da",
+805 => x"e851f396",
+806 => x"3f81c0ec",
+807 => x"08841108",
+808 => x"535b0b0b",
+809 => x"80d9ac51",
+810 => x"f3843f80",
+811 => x"520b0b80",
+812 => x"d6e051f2",
+813 => x"f93f81c0",
+814 => x"ec088811",
+815 => x"08535c0b",
+816 => x"0b80d9c8",
+817 => x"51f2e73f",
+818 => x"81520b0b",
+819 => x"80d6e051",
+820 => x"f2dc3f81",
+821 => x"c0ec088c",
+822 => x"1108535a",
+823 => x"0b0b80d9",
+824 => x"e451f2ca",
+825 => x"3f92520b",
+826 => x"0b80d6e0",
+827 => x"51f2bf3f",
+828 => x"81c0ec08",
+829 => x"9005520b",
+830 => x"0b80da80",
+831 => x"51f2af3f",
+832 => x"0b0b80da",
+833 => x"9c51f2a6",
+834 => x"3f7f520b",
+835 => x"0b80dba8",
+836 => x"51f29b3f",
+837 => x"85520b0b",
+838 => x"80d6e051",
+839 => x"f2903f78",
+840 => x"520b0b80",
+841 => x"dbc451f2",
+842 => x"853f8d52",
+843 => x"0b0b80d6",
+844 => x"e051f1fa",
+845 => x"3f61520b",
+846 => x"0b80dbe0",
+847 => x"51f1ef3f",
+848 => x"87520b0b",
+849 => x"80d6e051",
+850 => x"f1e43f60",
+851 => x"520b0b80",
+852 => x"dbfc51f1",
+853 => x"d93f8152",
+854 => x"0b0b80d6",
+855 => x"e051f1ce",
+856 => x"3f7d520b",
+857 => x"0b80dc98",
+858 => x"51f1c33f",
+859 => x"0b0b80dc",
+860 => x"b451f1ba",
+861 => x"3f7c520b",
+862 => x"0b80dcec",
+863 => x"51f1af3f",
+864 => x"0b0b80dd",
+865 => x"8851f1a6",
+866 => x"3f0b0b80",
+867 => x"ded451f1",
+868 => x"9d3f81c0",
+869 => x"e40881c0",
+870 => x"e80880f2",
+871 => x"cc0880f2",
+872 => x"d0087271",
+873 => x"31707426",
+874 => x"75743170",
+875 => x"723180f2",
+876 => x"c40c4444",
+877 => x"80f2c80c",
+878 => x"80f2c808",
+879 => x"560b0b80",
+880 => x"ddc0555c",
+881 => x"595758f0",
+882 => x"e53f80f2",
+883 => x"c4085680",
+884 => x"762582b1",
+885 => x"3880e2b0",
+886 => x"0870719f",
+887 => x"2c9a3d53",
+888 => x"565680f2",
+889 => x"c40880f2",
+890 => x"c8084153",
+891 => x"7f547052",
+892 => x"5a8a8d3f",
+893 => x"66685f80",
+894 => x"f2b40c7d",
+895 => x"80f2b80c",
+896 => x"80e2b008",
+897 => x"709f2c58",
+898 => x"568058bd",
+899 => x"84c07855",
+900 => x"55765275",
+901 => x"53795187",
+902 => x"f33f953d",
+903 => x"80f2c408",
+904 => x"80f2c808",
+905 => x"41557f56",
+906 => x"67694053",
+907 => x"7e547052",
+908 => x"5c89cd3f",
+909 => x"64665e80",
+910 => x"f2bc0c7c",
+911 => x"80f2c00c",
+912 => x"80e2b008",
+913 => x"709f2c40",
+914 => x"58805783",
+915 => x"dceb9480",
+916 => x"7755557e",
+917 => x"5277537b",
+918 => x"5187b13f",
+919 => x"64665d5b",
+920 => x"805e8ddd",
+921 => x"7e555580",
+922 => x"f2c40880",
+923 => x"f2c80859",
+924 => x"52775379",
+925 => x"5187953f",
+926 => x"66684054",
+927 => x"7e557a52",
+928 => x"7b53a93d",
+929 => x"ffa80551",
+930 => x"88f63f62",
+931 => x"645e81c1",
+932 => x"800c7c81",
+933 => x"c1840c0b",
+934 => x"0b80ddd0",
+935 => x"51ef8f3f",
+936 => x"80f2b808",
+937 => x"520b0b80",
+938 => x"de8051ef",
+939 => x"813f0b0b",
+940 => x"80de8851",
+941 => x"eef83f80",
+942 => x"f2c00852",
+943 => x"0b0b80de",
+944 => x"8051eeea",
+945 => x"3f81c184",
+946 => x"08520b0b",
+947 => x"80deb851",
+948 => x"eedc3f0b",
+949 => x"0b80ded4",
+950 => x"51eed33f",
+951 => x"800b800c",
+952 => x"a93d0d04",
+953 => x"0b0b80de",
+954 => x"d851f5b0",
+955 => x"39770857",
+956 => x"b0537652",
+957 => x"77519fe0",
+958 => x"3f80c10b",
+959 => x"81c0f833",
+960 => x"5757f7b8",
+961 => x"39758a38",
+962 => x"80f2c808",
+963 => x"8126fdc5",
+964 => x"380b0b80",
+965 => x"df8851ee",
+966 => x"953f0b0b",
+967 => x"80dfc051",
+968 => x"ee8c3f0b",
+969 => x"0b80ded4",
+970 => x"51ee833f",
+971 => x"80e2b008",
+972 => x"70719f2c",
+973 => x"9a3d5356",
+974 => x"5680f2c4",
+975 => x"0880f2c8",
+976 => x"0841537f",
+977 => x"5470525a",
+978 => x"87b63f66",
+979 => x"685f80f2",
+980 => x"b40c7d80",
+981 => x"f2b80c80",
+982 => x"e2b00870",
+983 => x"9f2c5856",
+984 => x"8058bd84",
+985 => x"c0785555",
+986 => x"76527553",
+987 => x"7951859c",
+988 => x"3f953d80",
+989 => x"f2c40880",
+990 => x"f2c80841",
+991 => x"557f5667",
+992 => x"6940537e",
+993 => x"5470525c",
+994 => x"86f63f64",
+995 => x"665e80f2",
+996 => x"bc0c7c80",
+997 => x"f2c00c80",
+998 => x"e2b00870",
+999 => x"9f2c4058",
+1000 => x"805783dc",
+1001 => x"eb948077",
+1002 => x"55557e52",
+1003 => x"77537b51",
+1004 => x"84da3f64",
+1005 => x"665d5b80",
+1006 => x"5e8ddd7e",
+1007 => x"555580f2",
+1008 => x"c40880f2",
+1009 => x"c8085952",
+1010 => x"77537951",
+1011 => x"84be3f66",
+1012 => x"6840547e",
+1013 => x"557a527b",
+1014 => x"53a93dff",
+1015 => x"a8055186",
+1016 => x"9f3f6264",
+1017 => x"5e81c180",
+1018 => x"0c7c81c1",
+1019 => x"840c0b0b",
+1020 => x"80ddd051",
+1021 => x"ecb83f80",
+1022 => x"f2b80852",
+1023 => x"0b0b80de",
+1024 => x"8051ecaa",
+1025 => x"3f0b0b80",
+1026 => x"de8851ec",
+1027 => x"a13f80f2",
+1028 => x"c008520b",
+1029 => x"0b80de80",
+1030 => x"51ec933f",
+1031 => x"81c18408",
+1032 => x"520b0b80",
+1033 => x"deb851ec",
+1034 => x"853f0b0b",
+1035 => x"80ded451",
+1036 => x"ebfc3f80",
+1037 => x"0b800ca9",
+1038 => x"3d0d04a9",
+1039 => x"3dffa005",
+1040 => x"52805180",
+1041 => x"d43f9f53",
+1042 => x"0b0b80df",
+1043 => x"e0527c51",
+1044 => x"9d863f7a",
+1045 => x"7b81c0f0",
+1046 => x"0c811870",
+1047 => x"81ff0681",
+1048 => x"c0f83359",
+1049 => x"59595af4",
+1050 => x"f439ff16",
+1051 => x"707b3160",
+1052 => x"0c5c800b",
+1053 => x"811c5c5c",
+1054 => x"80e2b008",
+1055 => x"7b25f2d0",
+1056 => x"38f59f39",
+1057 => x"ff3d0d73",
+1058 => x"82327030",
+1059 => x"70720780",
+1060 => x"25800c52",
+1061 => x"52833d0d",
+1062 => x"04fe3d0d",
+1063 => x"74767153",
+1064 => x"54527182",
+1065 => x"2e833883",
+1066 => x"5171812e",
+1067 => x"9a388172",
+1068 => x"269f3871",
+1069 => x"822eb838",
+1070 => x"71842ea9",
+1071 => x"3870730c",
+1072 => x"70800c84",
+1073 => x"3d0d0480",
+1074 => x"e40b81c0",
+1075 => x"f008258b",
+1076 => x"3880730c",
+1077 => x"70800c84",
+1078 => x"3d0d0483",
+1079 => x"730c7080",
+1080 => x"0c843d0d",
+1081 => x"0482730c",
+1082 => x"70800c84",
+1083 => x"3d0d0481",
+1084 => x"730c7080",
+1085 => x"0c843d0d",
+1086 => x"04803d0d",
+1087 => x"74741482",
+1088 => x"05710c80",
+1089 => x"0c823d0d",
+1090 => x"04f73d0d",
+1091 => x"7b7d7f61",
+1092 => x"85127082",
+1093 => x"2b751170",
+1094 => x"74717084",
+1095 => x"05530c5a",
+1096 => x"5a5d5b76",
+1097 => x"0c7980f8",
+1098 => x"180c7986",
+1099 => x"12525758",
+1100 => x"5a5a7676",
+1101 => x"24993876",
+1102 => x"b329822b",
+1103 => x"79115153",
+1104 => x"76737084",
+1105 => x"05550c81",
+1106 => x"14547574",
+1107 => x"25f23876",
+1108 => x"81cc2919",
+1109 => x"fc110881",
+1110 => x"05fc120c",
+1111 => x"7a197008",
+1112 => x"9fa0130c",
+1113 => x"5856850b",
+1114 => x"81c0f00c",
+1115 => x"75800c8b",
+1116 => x"3d0d04fe",
+1117 => x"3d0d0293",
+1118 => x"05335180",
+1119 => x"02840597",
+1120 => x"05335452",
+1121 => x"70732e88",
+1122 => x"3871800c",
+1123 => x"843d0d04",
+1124 => x"7081c0f4",
+1125 => x"34810b80",
+1126 => x"0c843d0d",
+1127 => x"04f83d0d",
+1128 => x"7a7c5956",
+1129 => x"820b8319",
+1130 => x"55557416",
+1131 => x"70337533",
+1132 => x"5b515372",
+1133 => x"792e80c6",
+1134 => x"3880c10b",
+1135 => x"81168116",
+1136 => x"56565782",
+1137 => x"7525e338",
+1138 => x"ffa91770",
+1139 => x"81ff0655",
+1140 => x"59738226",
+1141 => x"83388755",
+1142 => x"81537680",
+1143 => x"d22e9838",
+1144 => x"77527551",
+1145 => x"9bc43f80",
+1146 => x"53728008",
+1147 => x"25893887",
+1148 => x"1581c0f0",
+1149 => x"0c815372",
+1150 => x"800c8a3d",
+1151 => x"0d047281",
+1152 => x"c0f43482",
+1153 => x"7525ffa2",
+1154 => x"38ffbd39",
+1155 => x"ef3d0d63",
+1156 => x"65675b42",
+1157 => x"79436769",
+1158 => x"59407741",
+1159 => x"5a805d80",
+1160 => x"5e617083",
+1161 => x"ffff0671",
+1162 => x"902a6270",
+1163 => x"83ffff06",
+1164 => x"71902a74",
+1165 => x"72297473",
+1166 => x"29757329",
+1167 => x"77742973",
+1168 => x"902a0572",
+1169 => x"11515856",
+1170 => x"535f5a57",
+1171 => x"5a585558",
+1172 => x"73732786",
+1173 => x"38848080",
+1174 => x"16567390",
+1175 => x"2a165b78",
+1176 => x"83ffff06",
+1177 => x"74848080",
+1178 => x"29055c7a",
+1179 => x"7c5a5d78",
+1180 => x"5e777f29",
+1181 => x"61782905",
+1182 => x"7d055d7c",
+1183 => x"7e567a0c",
+1184 => x"74841b0c",
+1185 => x"79800c93",
+1186 => x"3d0d04f9",
+1187 => x"3d0d797b",
+1188 => x"7d545872",
+1189 => x"59773079",
+1190 => x"70307072",
+1191 => x"079f2a73",
+1192 => x"71315a52",
+1193 => x"59777956",
+1194 => x"730c5373",
+1195 => x"84130c54",
+1196 => x"800c893d",
+1197 => x"0d04f93d",
+1198 => x"0d797b7d",
+1199 => x"7f565452",
+1200 => x"5472802e",
+1201 => x"a0387057",
+1202 => x"7158a073",
+1203 => x"31528072",
+1204 => x"25a13877",
+1205 => x"70742b57",
+1206 => x"70732a78",
+1207 => x"752b0756",
+1208 => x"51747653",
+1209 => x"5170740c",
+1210 => x"7184150c",
+1211 => x"73800c89",
+1212 => x"3d0d0480",
+1213 => x"56777230",
+1214 => x"2b557476",
+1215 => x"5351e639",
+1216 => x"e43d0d6e",
+1217 => x"a13d08a3",
+1218 => x"3d085957",
+1219 => x"5f80764d",
+1220 => x"774ea33d",
+1221 => x"08a53d08",
+1222 => x"574b754c",
+1223 => x"5e7d6c24",
+1224 => x"86fb3880",
+1225 => x"6a24878f",
+1226 => x"38696b58",
+1227 => x"566b6d5d",
+1228 => x"467b4775",
+1229 => x"44764564",
+1230 => x"6468685c",
+1231 => x"5c565674",
+1232 => x"81e73878",
+1233 => x"762782c7",
+1234 => x"387581ff",
+1235 => x"26832b55",
+1236 => x"83ffff76",
+1237 => x"278c3890",
+1238 => x"55fe800a",
+1239 => x"76278338",
+1240 => x"98557575",
+1241 => x"2a80e080",
+1242 => x"057033a0",
+1243 => x"77317131",
+1244 => x"57555774",
+1245 => x"802e9538",
+1246 => x"75752ba0",
+1247 => x"76317a77",
+1248 => x"2b7c722a",
+1249 => x"077c782b",
+1250 => x"5d5b5956",
+1251 => x"75902a76",
+1252 => x"83ffff06",
+1253 => x"71547a53",
+1254 => x"59578880",
+1255 => x"3f80085b",
+1256 => x"87ea3f80",
+1257 => x"08800879",
+1258 => x"297c902b",
+1259 => x"7c902a07",
+1260 => x"56565973",
+1261 => x"75279438",
+1262 => x"8008ff05",
+1263 => x"76155559",
+1264 => x"75742687",
+1265 => x"38747426",
+1266 => x"87b93876",
+1267 => x"52737531",
+1268 => x"5187c93f",
+1269 => x"80085587",
+1270 => x"b33f8008",
+1271 => x"80087929",
+1272 => x"7b83ffff",
+1273 => x"0677902b",
+1274 => x"07565957",
+1275 => x"73782796",
+1276 => x"388008ff",
+1277 => x"05761555",
+1278 => x"57757426",
+1279 => x"89387774",
+1280 => x"26777131",
+1281 => x"58567890",
+1282 => x"2b770758",
+1283 => x"805b7a40",
+1284 => x"77417f61",
+1285 => x"56547d80",
+1286 => x"d938737f",
+1287 => x"0c747f84",
+1288 => x"050c7e80",
+1289 => x"0c9e3d0d",
+1290 => x"0480705c",
+1291 => x"58747926",
+1292 => x"dd387481",
+1293 => x"ff26832b",
+1294 => x"577483ff",
+1295 => x"ff2682a5",
+1296 => x"3874772a",
+1297 => x"80e08005",
+1298 => x"7033a079",
+1299 => x"31713159",
+1300 => x"5c5d7682",
+1301 => x"b3387654",
+1302 => x"74792783",
+1303 => x"38815479",
+1304 => x"76277407",
+1305 => x"59815878",
+1306 => x"ffa23876",
+1307 => x"58805bff",
+1308 => x"9d397352",
+1309 => x"74539e3d",
+1310 => x"e80551fc",
+1311 => x"8e3f6769",
+1312 => x"567f0c74",
+1313 => x"7f84050c",
+1314 => x"7e800c9e",
+1315 => x"3d0d0475",
+1316 => x"802e81c4",
+1317 => x"387581ff",
+1318 => x"26832b55",
+1319 => x"83ffff76",
+1320 => x"278c3890",
+1321 => x"55fe800a",
+1322 => x"76278338",
+1323 => x"98557575",
+1324 => x"2a80e080",
+1325 => x"057033a0",
+1326 => x"77317131",
+1327 => x"575e5474",
+1328 => x"84913878",
+1329 => x"76315481",
+1330 => x"76902a77",
+1331 => x"83ffff06",
+1332 => x"5f5d5b7b",
+1333 => x"52735185",
+1334 => x"c33f8008",
+1335 => x"5785ad3f",
+1336 => x"80088008",
+1337 => x"7e297890",
+1338 => x"2b7c902a",
+1339 => x"07565659",
+1340 => x"73752794",
+1341 => x"388008ff",
+1342 => x"05761555",
+1343 => x"59757426",
+1344 => x"87387474",
+1345 => x"2684f338",
+1346 => x"7b527375",
+1347 => x"3151858c",
+1348 => x"3f800855",
+1349 => x"84f63f80",
+1350 => x"0880087e",
+1351 => x"297b83ff",
+1352 => x"ff067790",
+1353 => x"2b075659",
+1354 => x"57737827",
+1355 => x"96388008",
+1356 => x"ff057615",
+1357 => x"55577574",
+1358 => x"26893877",
+1359 => x"74267771",
+1360 => x"31585a78",
+1361 => x"902b7707",
+1362 => x"7b41417f",
+1363 => x"6156547d",
+1364 => x"802efdc6",
+1365 => x"38fe9b39",
+1366 => x"75528151",
+1367 => x"84ae3f80",
+1368 => x"0856feb1",
+1369 => x"399057fe",
+1370 => x"800a7527",
+1371 => x"fdd33898",
+1372 => x"75712a80",
+1373 => x"e0800570",
+1374 => x"33a07331",
+1375 => x"7131535d",
+1376 => x"5e577680",
+1377 => x"2efdcf38",
+1378 => x"a0773175",
+1379 => x"782b7772",
+1380 => x"2a077779",
+1381 => x"2b7b7a2b",
+1382 => x"7d742a07",
+1383 => x"7d7b2b73",
+1384 => x"902a7483",
+1385 => x"ffff0671",
+1386 => x"597f772a",
+1387 => x"585e5c41",
+1388 => x"5f585c54",
+1389 => x"83e63f80",
+1390 => x"085483d0",
+1391 => x"3f800880",
+1392 => x"08792975",
+1393 => x"902b7e90",
+1394 => x"2a075656",
+1395 => x"59737527",
+1396 => x"99388008",
+1397 => x"ff057b15",
+1398 => x"55597a74",
+1399 => x"268c3873",
+1400 => x"75278738",
+1401 => x"ff197b15",
+1402 => x"55597652",
+1403 => x"73753151",
+1404 => x"83aa3f80",
+1405 => x"08558394",
+1406 => x"3f800880",
+1407 => x"0879297d",
+1408 => x"83ffff06",
+1409 => x"77902b07",
+1410 => x"56595773",
+1411 => x"78279938",
+1412 => x"8008ff05",
+1413 => x"7b155557",
+1414 => x"7a74268c",
+1415 => x"38737827",
+1416 => x"8738ff17",
+1417 => x"7b155557",
+1418 => x"73783179",
+1419 => x"902b7807",
+1420 => x"7083ffff",
+1421 => x"0671902a",
+1422 => x"7983ffff",
+1423 => x"067a902a",
+1424 => x"73722973",
+1425 => x"73297473",
+1426 => x"29767429",
+1427 => x"73902a05",
+1428 => x"72055755",
+1429 => x"435f5b58",
+1430 => x"5a57595a",
+1431 => x"747c2786",
+1432 => x"38848080",
+1433 => x"17577490",
+1434 => x"2a177983",
+1435 => x"ffff0676",
+1436 => x"84808029",
+1437 => x"05575776",
+1438 => x"7a269a38",
+1439 => x"767a3270",
+1440 => x"30707207",
+1441 => x"8025565a",
+1442 => x"5b7c7627",
+1443 => x"fafe3873",
+1444 => x"802efaf8",
+1445 => x"38ff1858",
+1446 => x"805bfaf2",
+1447 => x"39ff7653",
+1448 => x"77549f3d",
+1449 => x"e805525e",
+1450 => x"f7e13f67",
+1451 => x"69574c75",
+1452 => x"4d698025",
+1453 => x"f8f3387d",
+1454 => x"096a6c5c",
+1455 => x"537a549f",
+1456 => x"3de80552",
+1457 => x"5ef7c43f",
+1458 => x"6769714c",
+1459 => x"704d5856",
+1460 => x"f8db39a0",
+1461 => x"75317676",
+1462 => x"2b7a772b",
+1463 => x"7c732a07",
+1464 => x"7c782b72",
+1465 => x"902a7383",
+1466 => x"ffff0671",
+1467 => x"587e762a",
+1468 => x"5742405d",
+1469 => x"5d575881",
+1470 => x"a33f8008",
+1471 => x"57818d3f",
+1472 => x"80088008",
+1473 => x"7e297890",
+1474 => x"2b7d902a",
+1475 => x"07565659",
+1476 => x"73752799",
+1477 => x"388008ff",
+1478 => x"05761555",
+1479 => x"59757426",
+1480 => x"8c387375",
+1481 => x"278738ff",
+1482 => x"19761555",
+1483 => x"597b5273",
+1484 => x"75315180",
+1485 => x"e73f8008",
+1486 => x"5580d13f",
+1487 => x"80088008",
+1488 => x"7e297c83",
+1489 => x"ffff0670",
+1490 => x"78902b07",
+1491 => x"51565858",
+1492 => x"73772799",
+1493 => x"388008ff",
+1494 => x"05761555",
+1495 => x"58757426",
+1496 => x"8c387377",
+1497 => x"278738ff",
+1498 => x"18761555",
+1499 => x"5878902b",
+1500 => x"78077478",
+1501 => x"31555bfa",
+1502 => x"da39ff19",
+1503 => x"76155559",
+1504 => x"fb8639ff",
+1505 => x"19761555",
+1506 => x"59f8c039",
+1507 => x"fe3d0d80",
+1508 => x"53755274",
+1509 => x"5181913f",
+1510 => x"843d0d04",
+1511 => x"fe3d0d81",
+1512 => x"53755274",
+1513 => x"5181813f",
+1514 => x"843d0d04",
+1515 => x"fb3d0d77",
+1516 => x"79555580",
+1517 => x"56757524",
+1518 => x"ab388074",
+1519 => x"249d3880",
+1520 => x"53735274",
+1521 => x"5180e13f",
+1522 => x"80085475",
+1523 => x"802e8538",
+1524 => x"80083054",
+1525 => x"73800c87",
+1526 => x"3d0d0473",
+1527 => x"30768132",
+1528 => x"5754dc39",
+1529 => x"74305581",
+1530 => x"56738025",
+1531 => x"d238ec39",
+1532 => x"fa3d0d78",
+1533 => x"7a575580",
+1534 => x"57767524",
+1535 => x"a438759f",
+1536 => x"2c548153",
+1537 => x"75743274",
+1538 => x"31527451",
+1539 => x"9b3f8008",
+1540 => x"5476802e",
+1541 => x"85388008",
+1542 => x"30547380",
+1543 => x"0c883d0d",
+1544 => x"04743055",
+1545 => x"8157d739",
+1546 => x"fc3d0d76",
+1547 => x"78535481",
+1548 => x"53807473",
+1549 => x"26525572",
+1550 => x"802e9838",
+1551 => x"70802eab",
+1552 => x"38807224",
+1553 => x"a6387110",
+1554 => x"73107572",
+1555 => x"26535452",
+1556 => x"72ea3873",
+1557 => x"51788338",
+1558 => x"74517080",
+1559 => x"0c863d0d",
+1560 => x"04720a10",
+1561 => x"0a720a10",
+1562 => x"0a535372",
+1563 => x"802ee438",
+1564 => x"717426ed",
+1565 => x"38737231",
+1566 => x"75740774",
+1567 => x"0a100a74",
+1568 => x"0a100a55",
+1569 => x"555654e3",
+1570 => x"39ff3d0d",
+1571 => x"735280ea",
+1572 => x"fc085196",
+1573 => x"3f833d0d",
+1574 => x"04ff3d0d",
+1575 => x"735280ea",
+1576 => x"fc085190",
+1577 => x"cc3f833d",
+1578 => x"0d04f43d",
+1579 => x"0d7e608b",
+1580 => x"1170f806",
+1581 => x"5b55555d",
+1582 => x"72962683",
+1583 => x"38905880",
+1584 => x"78247479",
+1585 => x"26075580",
+1586 => x"5474742e",
+1587 => x"09810680",
+1588 => x"ca387c51",
+1589 => x"8d9e3f77",
+1590 => x"83f72680",
+1591 => x"c5387783",
+1592 => x"2a701010",
+1593 => x"1080e2f4",
+1594 => x"058c1108",
+1595 => x"58585475",
+1596 => x"772e81f0",
+1597 => x"38841608",
+1598 => x"fc068c17",
+1599 => x"08881808",
+1600 => x"718c120c",
+1601 => x"88120c5b",
+1602 => x"76058411",
+1603 => x"08810784",
+1604 => x"120c537c",
+1605 => x"518cde3f",
+1606 => x"88165473",
+1607 => x"800c8e3d",
+1608 => x"0d047789",
+1609 => x"2a78832a",
+1610 => x"58547380",
+1611 => x"2ebf3877",
+1612 => x"862ab805",
+1613 => x"57847427",
+1614 => x"b43880db",
+1615 => x"14579474",
+1616 => x"27ab3877",
+1617 => x"8c2a80ee",
+1618 => x"055780d4",
+1619 => x"74279e38",
+1620 => x"778f2a80",
+1621 => x"f7055782",
+1622 => x"d4742791",
+1623 => x"3877922a",
+1624 => x"80fc0557",
+1625 => x"8ad47427",
+1626 => x"843880fe",
+1627 => x"57761010",
+1628 => x"1080e2f4",
+1629 => x"058c1108",
+1630 => x"56537473",
+1631 => x"2ea33884",
+1632 => x"1508fc06",
+1633 => x"70793155",
+1634 => x"56738f24",
+1635 => x"88e43873",
+1636 => x"802588e6",
+1637 => x"388c1508",
+1638 => x"5574732e",
+1639 => x"098106df",
+1640 => x"38811759",
+1641 => x"80e38408",
+1642 => x"567580e2",
+1643 => x"fc2e82cc",
+1644 => x"38841608",
+1645 => x"fc067079",
+1646 => x"31555573",
+1647 => x"8f24bb38",
+1648 => x"80e2fc0b",
+1649 => x"80e3880c",
+1650 => x"80e2fc0b",
+1651 => x"80e3840c",
+1652 => x"80742480",
+1653 => x"db387416",
+1654 => x"84110881",
+1655 => x"0784120c",
+1656 => x"53feb039",
+1657 => x"88168c11",
+1658 => x"08575975",
+1659 => x"792e0981",
+1660 => x"06fe8238",
+1661 => x"821459ff",
+1662 => x"ab397716",
+1663 => x"78810784",
+1664 => x"180c7080",
+1665 => x"e3880c70",
+1666 => x"80e3840c",
+1667 => x"80e2fc0b",
+1668 => x"8c120c8c",
+1669 => x"11088812",
+1670 => x"0c748107",
+1671 => x"84120c74",
+1672 => x"0574710c",
+1673 => x"5b7c518a",
+1674 => x"cc3f8816",
+1675 => x"54fdec39",
+1676 => x"83ff7527",
+1677 => x"83913874",
+1678 => x"892a7583",
+1679 => x"2a545473",
+1680 => x"802ebf38",
+1681 => x"74862ab8",
+1682 => x"05538474",
+1683 => x"27b43880",
+1684 => x"db145394",
+1685 => x"7427ab38",
+1686 => x"748c2a80",
+1687 => x"ee055380",
+1688 => x"d474279e",
+1689 => x"38748f2a",
+1690 => x"80f70553",
+1691 => x"82d47427",
+1692 => x"91387492",
+1693 => x"2a80fc05",
+1694 => x"538ad474",
+1695 => x"27843880",
+1696 => x"fe537210",
+1697 => x"101080e2",
+1698 => x"f4058811",
+1699 => x"08555773",
+1700 => x"772e868b",
+1701 => x"38841408",
+1702 => x"fc065b74",
+1703 => x"7b278d38",
+1704 => x"88140854",
+1705 => x"73772e09",
+1706 => x"8106ea38",
+1707 => x"8c140880",
+1708 => x"e2f40b84",
+1709 => x"0508718c",
+1710 => x"190c7588",
+1711 => x"190c7788",
+1712 => x"130c5c57",
+1713 => x"758c150c",
+1714 => x"78538079",
+1715 => x"24839838",
+1716 => x"72822c81",
+1717 => x"712b5656",
+1718 => x"747b2680",
+1719 => x"ca387a75",
+1720 => x"06577682",
+1721 => x"a33878fc",
+1722 => x"06840559",
+1723 => x"7410707c",
+1724 => x"06555573",
+1725 => x"82923884",
+1726 => x"1959f139",
+1727 => x"80e2f40b",
+1728 => x"84050879",
+1729 => x"545b7880",
+1730 => x"25c63882",
+1731 => x"da397409",
+1732 => x"7b067080",
+1733 => x"e2f40b84",
+1734 => x"050c5b74",
+1735 => x"1055747b",
+1736 => x"26853874",
+1737 => x"85bc3880",
+1738 => x"e2f40b88",
+1739 => x"05087084",
+1740 => x"1208fc06",
+1741 => x"707b317b",
+1742 => x"72268f72",
+1743 => x"25075d57",
+1744 => x"5c5c5578",
+1745 => x"802e80d9",
+1746 => x"38791580",
+1747 => x"e2ec0819",
+1748 => x"90115954",
+1749 => x"5680e2e8",
+1750 => x"08ff2e88",
+1751 => x"38a08f13",
+1752 => x"e0800657",
+1753 => x"76527c51",
+1754 => x"888c3f80",
+1755 => x"08548008",
+1756 => x"ff2e9038",
+1757 => x"80087627",
+1758 => x"82a73874",
+1759 => x"80e2f42e",
+1760 => x"829f3880",
+1761 => x"e2f40b88",
+1762 => x"05085584",
+1763 => x"1508fc06",
+1764 => x"70793179",
+1765 => x"72268f72",
+1766 => x"25075d55",
+1767 => x"5a7a83f2",
+1768 => x"38778107",
+1769 => x"84160c77",
+1770 => x"157080e2",
+1771 => x"f40b8805",
+1772 => x"0c748107",
+1773 => x"84120c56",
+1774 => x"7c5187b9",
+1775 => x"3f881554",
+1776 => x"73800c8e",
+1777 => x"3d0d0474",
+1778 => x"832a7054",
+1779 => x"54807424",
+1780 => x"819b3872",
+1781 => x"822c8171",
+1782 => x"2b80e2f8",
+1783 => x"08077080",
+1784 => x"e2f40b84",
+1785 => x"050c7510",
+1786 => x"101080e2",
+1787 => x"f4058811",
+1788 => x"08718c1b",
+1789 => x"0c70881b",
+1790 => x"0c798813",
+1791 => x"0c57555c",
+1792 => x"55758c15",
+1793 => x"0cfdc139",
+1794 => x"78791010",
+1795 => x"1080e2f4",
+1796 => x"0570565b",
+1797 => x"5c8c1408",
+1798 => x"5675742e",
+1799 => x"a3388416",
+1800 => x"08fc0670",
+1801 => x"79315853",
+1802 => x"768f2483",
+1803 => x"f1387680",
+1804 => x"2584af38",
+1805 => x"8c160856",
+1806 => x"75742e09",
+1807 => x"8106df38",
+1808 => x"8814811a",
+1809 => x"70830655",
+1810 => x"5a5472c9",
+1811 => x"387b8306",
+1812 => x"5675802e",
+1813 => x"fdb838ff",
+1814 => x"1cf81b5b",
+1815 => x"5c881a08",
+1816 => x"7a2eea38",
+1817 => x"fdb53983",
+1818 => x"1953fce4",
+1819 => x"39831470",
+1820 => x"822c8171",
+1821 => x"2b80e2f8",
+1822 => x"08077080",
+1823 => x"e2f40b84",
+1824 => x"050c7610",
+1825 => x"101080e2",
+1826 => x"f4058811",
+1827 => x"08718c1c",
+1828 => x"0c70881c",
+1829 => x"0c7a8813",
+1830 => x"0c58535d",
+1831 => x"5653fee1",
+1832 => x"3980e2b8",
+1833 => x"08175980",
+1834 => x"08762e81",
+1835 => x"8b3880e2",
+1836 => x"e808ff2e",
+1837 => x"848e3873",
+1838 => x"76311980",
+1839 => x"e2b80c73",
+1840 => x"87067056",
+1841 => x"5372802e",
+1842 => x"88388873",
+1843 => x"31701555",
+1844 => x"5576149f",
+1845 => x"ff06a080",
+1846 => x"71311670",
+1847 => x"547e5351",
+1848 => x"5385933f",
+1849 => x"80085680",
+1850 => x"08ff2e81",
+1851 => x"9e3880e2",
+1852 => x"b8081370",
+1853 => x"80e2b80c",
+1854 => x"747580e2",
+1855 => x"f40b8805",
+1856 => x"0c777631",
+1857 => x"15810755",
+1858 => x"56597a80",
+1859 => x"e2f42e83",
+1860 => x"c038798f",
+1861 => x"2682ef38",
+1862 => x"810b8415",
+1863 => x"0c841508",
+1864 => x"fc067079",
+1865 => x"31797226",
+1866 => x"8f722507",
+1867 => x"5d555a7a",
+1868 => x"802efced",
+1869 => x"3880db39",
+1870 => x"80089fff",
+1871 => x"065574fe",
+1872 => x"ed387880",
+1873 => x"e2b80c80",
+1874 => x"e2f40b88",
+1875 => x"05087a18",
+1876 => x"81078412",
+1877 => x"0c5580e2",
+1878 => x"e4087927",
+1879 => x"86387880",
+1880 => x"e2e40c80",
+1881 => x"e2e00879",
+1882 => x"27fca038",
+1883 => x"7880e2e0",
+1884 => x"0c841508",
+1885 => x"fc067079",
+1886 => x"31797226",
+1887 => x"8f722507",
+1888 => x"5d555a7a",
+1889 => x"802efc99",
+1890 => x"38883980",
+1891 => x"745753fe",
+1892 => x"dd397c51",
+1893 => x"83df3f80",
+1894 => x"0b800c8e",
+1895 => x"3d0d0480",
+1896 => x"7324a538",
+1897 => x"72822c81",
+1898 => x"712b80e2",
+1899 => x"f8080770",
+1900 => x"80e2f40b",
+1901 => x"84050c5c",
+1902 => x"5a768c17",
+1903 => x"0c738817",
+1904 => x"0c758818",
+1905 => x"0cf9fd39",
+1906 => x"83137082",
+1907 => x"2c81712b",
+1908 => x"80e2f808",
+1909 => x"077080e2",
+1910 => x"f40b8405",
+1911 => x"0c5d5b53",
+1912 => x"d8397a75",
+1913 => x"065c7bfc",
+1914 => x"9f388419",
+1915 => x"75105659",
+1916 => x"f139ff17",
+1917 => x"810559f7",
+1918 => x"ab398c15",
+1919 => x"08881608",
+1920 => x"718c120c",
+1921 => x"88120c59",
+1922 => x"75158411",
+1923 => x"08810784",
+1924 => x"120c587c",
+1925 => x"5182de3f",
+1926 => x"881554fb",
+1927 => x"a3397716",
+1928 => x"78810784",
+1929 => x"180c8c17",
+1930 => x"08881808",
+1931 => x"718c120c",
+1932 => x"88120c5c",
+1933 => x"7080e388",
+1934 => x"0c7080e3",
+1935 => x"840c80e2",
+1936 => x"fc0b8c12",
+1937 => x"0c8c1108",
+1938 => x"88120c77",
+1939 => x"81078412",
+1940 => x"0c770577",
+1941 => x"710c557c",
+1942 => x"51829a3f",
+1943 => x"881654f5",
+1944 => x"ba397216",
+1945 => x"84110881",
+1946 => x"0784120c",
+1947 => x"588c1608",
+1948 => x"88170871",
+1949 => x"8c120c88",
+1950 => x"120c577c",
+1951 => x"5181f63f",
+1952 => x"881654f5",
+1953 => x"96397284",
+1954 => x"150cf41a",
+1955 => x"f8067084",
+1956 => x"1d088106",
+1957 => x"07841d0c",
+1958 => x"701c5556",
+1959 => x"850b8415",
+1960 => x"0c850b88",
+1961 => x"150c8f76",
+1962 => x"27fdab38",
+1963 => x"881b527c",
+1964 => x"5184be3f",
+1965 => x"80e2f40b",
+1966 => x"88050880",
+1967 => x"e2b8085a",
+1968 => x"55fd9339",
+1969 => x"7880e2b8",
+1970 => x"0c7380e2",
+1971 => x"e80cfbef",
+1972 => x"39728415",
+1973 => x"0cfcff39",
+1974 => x"fb3d0d77",
+1975 => x"707a7c58",
+1976 => x"5553568f",
+1977 => x"752780e6",
+1978 => x"38727607",
+1979 => x"83065170",
+1980 => x"80dc3875",
+1981 => x"73525470",
+1982 => x"70840552",
+1983 => x"08747084",
+1984 => x"05560c73",
+1985 => x"71708405",
+1986 => x"53087170",
+1987 => x"8405530c",
+1988 => x"71708405",
+1989 => x"53087170",
+1990 => x"8405530c",
+1991 => x"71708405",
+1992 => x"53087170",
+1993 => x"8405530c",
+1994 => x"f0165654",
+1995 => x"748f26c7",
+1996 => x"38837527",
+1997 => x"95387070",
+1998 => x"84055208",
+1999 => x"74708405",
+2000 => x"560cfc15",
+2001 => x"55748326",
+2002 => x"ed387371",
+2003 => x"5452ff15",
+2004 => x"5170ff2e",
+2005 => x"98387270",
+2006 => x"81055433",
+2007 => x"72708105",
+2008 => x"5434ff11",
+2009 => x"5170ff2e",
+2010 => x"098106ea",
+2011 => x"3875800c",
+2012 => x"873d0d04",
+2013 => x"0404fd3d",
+2014 => x"0d800b81",
+2015 => x"c2d40c76",
+2016 => x"5187ca3f",
+2017 => x"80085380",
+2018 => x"08ff2e88",
+2019 => x"3872800c",
+2020 => x"853d0d04",
+2021 => x"81c2d408",
+2022 => x"5473802e",
+2023 => x"f0387574",
+2024 => x"710c5272",
+2025 => x"800c853d",
+2026 => x"0d04fb3d",
+2027 => x"0d777970",
+2028 => x"72078306",
+2029 => x"53545270",
+2030 => x"93387173",
+2031 => x"73085456",
+2032 => x"54717308",
+2033 => x"2e80c438",
+2034 => x"73755452",
+2035 => x"71337081",
+2036 => x"ff065254",
+2037 => x"70802e9d",
+2038 => x"38723355",
+2039 => x"70752e09",
+2040 => x"81069538",
+2041 => x"81128114",
+2042 => x"71337081",
+2043 => x"ff065456",
+2044 => x"545270e5",
+2045 => x"38723355",
+2046 => x"7381ff06",
+2047 => x"7581ff06",
+2048 => x"71713180",
+2049 => x"0c555287",
+2050 => x"3d0d0471",
+2051 => x"09f7fbfd",
+2052 => x"ff1306f8",
+2053 => x"84828180",
+2054 => x"06527197",
+2055 => x"38841484",
+2056 => x"16710854",
+2057 => x"56547175",
+2058 => x"082ee038",
+2059 => x"73755452",
+2060 => x"ff9a3980",
+2061 => x"0b800c87",
+2062 => x"3d0d04fb",
+2063 => x"3d0d7770",
+2064 => x"5256feb0",
+2065 => x"3f80e2f4",
+2066 => x"0b880508",
+2067 => x"841108fc",
+2068 => x"06707b31",
+2069 => x"9fef05e0",
+2070 => x"8006e080",
+2071 => x"05525555",
+2072 => x"a0807524",
+2073 => x"94388052",
+2074 => x"7551fe8a",
+2075 => x"3f80e2fc",
+2076 => x"08145372",
+2077 => x"80082e8f",
+2078 => x"387551fd",
+2079 => x"f83f8053",
+2080 => x"72800c87",
+2081 => x"3d0d0474",
+2082 => x"30527551",
+2083 => x"fde83f80",
+2084 => x"08ff2ea8",
+2085 => x"3880e2f4",
+2086 => x"0b880508",
+2087 => x"74763181",
+2088 => x"0784120c",
+2089 => x"5380e2b8",
+2090 => x"08753180",
+2091 => x"e2b80c75",
+2092 => x"51fdc23f",
+2093 => x"810b800c",
+2094 => x"873d0d04",
+2095 => x"80527551",
+2096 => x"fdb43f80",
+2097 => x"e2f40b88",
+2098 => x"05088008",
+2099 => x"71315454",
+2100 => x"8f7325ff",
+2101 => x"a4388008",
+2102 => x"80e2e808",
+2103 => x"3180e2b8",
+2104 => x"0c728107",
+2105 => x"84150c75",
+2106 => x"51fd8a3f",
+2107 => x"8053ff90",
+2108 => x"39f73d0d",
+2109 => x"7b7d545a",
+2110 => x"72802e82",
+2111 => x"83387951",
+2112 => x"fcf23ff8",
+2113 => x"13841108",
+2114 => x"70fe0670",
+2115 => x"13841108",
+2116 => x"fc065c57",
+2117 => x"58545780",
+2118 => x"e2fc0874",
+2119 => x"2e82de38",
+2120 => x"7784150c",
+2121 => x"80738106",
+2122 => x"56597479",
+2123 => x"2e81d538",
+2124 => x"77148411",
+2125 => x"08810656",
+2126 => x"5374a038",
+2127 => x"77165678",
+2128 => x"81e63888",
+2129 => x"14085574",
+2130 => x"80e2fc2e",
+2131 => x"82f9388c",
+2132 => x"1408708c",
+2133 => x"170c7588",
+2134 => x"120c5875",
+2135 => x"81078418",
+2136 => x"0c751776",
+2137 => x"710c5478",
+2138 => x"81913883",
+2139 => x"ff762781",
+2140 => x"c8387589",
+2141 => x"2a76832a",
+2142 => x"54547380",
+2143 => x"2ebf3875",
+2144 => x"862ab805",
+2145 => x"53847427",
+2146 => x"b43880db",
+2147 => x"14539474",
+2148 => x"27ab3875",
+2149 => x"8c2a80ee",
+2150 => x"055380d4",
+2151 => x"74279e38",
+2152 => x"758f2a80",
+2153 => x"f7055382",
+2154 => x"d4742791",
+2155 => x"3875922a",
+2156 => x"80fc0553",
+2157 => x"8ad47427",
+2158 => x"843880fe",
+2159 => x"53721010",
+2160 => x"1080e2f4",
+2161 => x"05881108",
+2162 => x"55557375",
+2163 => x"2e82bf38",
+2164 => x"841408fc",
+2165 => x"06597579",
+2166 => x"278d3888",
+2167 => x"14085473",
+2168 => x"752e0981",
+2169 => x"06ea388c",
+2170 => x"1408708c",
+2171 => x"190c7488",
+2172 => x"190c7788",
+2173 => x"120c5576",
+2174 => x"8c150c79",
+2175 => x"51faf63f",
+2176 => x"8b3d0d04",
+2177 => x"76087771",
+2178 => x"31587605",
+2179 => x"88180856",
+2180 => x"567480e2",
+2181 => x"fc2e80e0",
+2182 => x"388c1708",
+2183 => x"708c170c",
+2184 => x"7588120c",
+2185 => x"53fe8939",
+2186 => x"8814088c",
+2187 => x"1508708c",
+2188 => x"130c5988",
+2189 => x"190cfea3",
+2190 => x"3975832a",
+2191 => x"70545480",
+2192 => x"74248198",
+2193 => x"3872822c",
+2194 => x"81712b80",
+2195 => x"e2f80807",
+2196 => x"80e2f40b",
+2197 => x"84050c74",
+2198 => x"10101080",
+2199 => x"e2f40588",
+2200 => x"1108718c",
+2201 => x"1b0c7088",
+2202 => x"1b0c7988",
+2203 => x"130c565a",
+2204 => x"55768c15",
+2205 => x"0cff8439",
+2206 => x"8159fdb4",
+2207 => x"39771673",
+2208 => x"81065455",
+2209 => x"72983876",
+2210 => x"08777131",
+2211 => x"5875058c",
+2212 => x"18088819",
+2213 => x"08718c12",
+2214 => x"0c88120c",
+2215 => x"55557481",
+2216 => x"0784180c",
+2217 => x"7680e2f4",
+2218 => x"0b88050c",
+2219 => x"80e2f008",
+2220 => x"7526fec7",
+2221 => x"3880e2ec",
+2222 => x"08527951",
+2223 => x"fafd3f79",
+2224 => x"51f9b23f",
+2225 => x"feba3981",
+2226 => x"778c170c",
+2227 => x"7788170c",
+2228 => x"758c190c",
+2229 => x"7588190c",
+2230 => x"59fd8039",
+2231 => x"83147082",
+2232 => x"2c81712b",
+2233 => x"80e2f808",
+2234 => x"0780e2f4",
+2235 => x"0b84050c",
+2236 => x"75101010",
+2237 => x"80e2f405",
+2238 => x"88110871",
+2239 => x"8c1c0c70",
+2240 => x"881c0c7a",
+2241 => x"88130c57",
+2242 => x"5b5653fe",
+2243 => x"e4398073",
+2244 => x"24a33872",
+2245 => x"822c8171",
+2246 => x"2b80e2f8",
+2247 => x"080780e2",
+2248 => x"f40b8405",
+2249 => x"0c58748c",
+2250 => x"180c7388",
+2251 => x"180c7688",
+2252 => x"160cfdc3",
+2253 => x"39831370",
+2254 => x"822c8171",
+2255 => x"2b80e2f8",
+2256 => x"080780e2",
+2257 => x"f40b8405",
+2258 => x"0c5953da",
+2259 => x"39fe3d0d",
+2260 => x"81c2d808",
+2261 => x"51708a38",
+2262 => x"81c2e070",
+2263 => x"81c2d80c",
+2264 => x"51741152",
+2265 => x"ff537187",
+2266 => x"fb808026",
+2267 => x"88387181",
+2268 => x"c2d80c70",
+2269 => x"5372800c",
+2270 => x"843d0d04",
+2271 => x"fd3d0d80",
+2272 => x"0b80e2a4",
+2273 => x"08545472",
+2274 => x"812e9b38",
+2275 => x"7381c2dc",
+2276 => x"0cc28e3f",
+2277 => x"c0ea3f80",
+2278 => x"f1fc5281",
+2279 => x"51caf83f",
+2280 => x"80085189",
+2281 => x"a73f7281",
+2282 => x"c2dc0cc1",
+2283 => x"f43fc0d0",
+2284 => x"3f80f1fc",
+2285 => x"528151ca",
+2286 => x"de3f8008",
+2287 => x"51898d3f",
+2288 => x"00ff3900",
+2289 => x"ff39f53d",
+2290 => x"0d7e6081",
+2291 => x"c2dc0870",
+2292 => x"5b585b5b",
+2293 => x"7580c238",
+2294 => x"777a25a1",
+2295 => x"38771b70",
+2296 => x"337081ff",
+2297 => x"06585859",
+2298 => x"758a2e98",
+2299 => x"387681ff",
+2300 => x"0651c18c",
+2301 => x"3f811858",
+2302 => x"797824e1",
+2303 => x"3879800c",
+2304 => x"8d3d0d04",
+2305 => x"8d51c0f8",
+2306 => x"3f783370",
+2307 => x"81ff0652",
+2308 => x"57c0ed3f",
+2309 => x"811858e0",
+2310 => x"3979557a",
+2311 => x"547d5385",
+2312 => x"528d3dfc",
+2313 => x"0551c09a",
+2314 => x"3f800856",
+2315 => x"88973f7b",
+2316 => x"80080c75",
+2317 => x"800c8d3d",
+2318 => x"0d04f63d",
+2319 => x"0d7d7f81",
+2320 => x"c2dc0870",
+2321 => x"5a585a5a",
+2322 => x"7580c338",
+2323 => x"767925b1",
+2324 => x"38761a58",
+2325 => x"c08a3f80",
+2326 => x"08783480",
+2327 => x"0b800881",
+2328 => x"ff065758",
+2329 => x"758a2ea2",
+2330 => x"38758d32",
+2331 => x"70307080",
+2332 => x"257a0751",
+2333 => x"515675b8",
+2334 => x"38811757",
+2335 => x"787724d1",
+2336 => x"38765675",
+2337 => x"800c8c3d",
+2338 => x"0d048158",
+2339 => x"dc397855",
+2340 => x"79547c53",
+2341 => x"84528c3d",
+2342 => x"fc0551ff",
+2343 => x"bfa43f80",
+2344 => x"085687a1",
+2345 => x"3f7a8008",
+2346 => x"0c75800c",
+2347 => x"8c3d0d04",
+2348 => x"811756cf",
+2349 => x"39f93d0d",
+2350 => x"795781c2",
+2351 => x"dc08802e",
+2352 => x"ad387651",
+2353 => x"89b43f7b",
+2354 => x"567a5580",
+2355 => x"08810554",
+2356 => x"76538252",
+2357 => x"893dfc05",
+2358 => x"51ffbee6",
+2359 => x"3f800857",
+2360 => x"86e33f77",
+2361 => x"80080c76",
+2362 => x"800c893d",
+2363 => x"0d0486d5",
+2364 => x"3f850b80",
+2365 => x"080cff0b",
+2366 => x"800c893d",
+2367 => x"0d04fb3d",
+2368 => x"0d81c2dc",
+2369 => x"08705654",
+2370 => x"73883874",
+2371 => x"800c873d",
+2372 => x"0d047753",
+2373 => x"8352873d",
+2374 => x"fc0551ff",
+2375 => x"bea43f80",
+2376 => x"085486a1",
+2377 => x"3f758008",
+2378 => x"0c73800c",
+2379 => x"873d0d04",
+2380 => x"ff0b800c",
+2381 => x"04fb3d0d",
+2382 => x"775581c2",
+2383 => x"dc08802e",
+2384 => x"a9387451",
+2385 => x"88b43f80",
+2386 => x"08810554",
+2387 => x"74538752",
+2388 => x"873dfc05",
+2389 => x"51ffbdea",
+2390 => x"3f800855",
+2391 => x"85e73f75",
+2392 => x"80080c74",
+2393 => x"800c873d",
+2394 => x"0d0485d9",
+2395 => x"3f850b80",
+2396 => x"080cff0b",
+2397 => x"800c873d",
+2398 => x"0d04fa3d",
+2399 => x"0d81c2dc",
+2400 => x"08802ea3",
+2401 => x"387a5579",
+2402 => x"54785386",
+2403 => x"52883dfc",
+2404 => x"0551ffbd",
+2405 => x"ad3f8008",
+2406 => x"5685aa3f",
+2407 => x"7680080c",
+2408 => x"75800c88",
+2409 => x"3d0d0485",
+2410 => x"9c3f9d0b",
+2411 => x"80080cff",
+2412 => x"0b800c88",
+2413 => x"3d0d04f7",
+2414 => x"3d0d7b7d",
+2415 => x"5b59bc53",
+2416 => x"80527951",
+2417 => x"86aa3f80",
+2418 => x"70565798",
+2419 => x"56741970",
+2420 => x"3370782b",
+2421 => x"79078118",
+2422 => x"f81a5a58",
+2423 => x"59555884",
+2424 => x"7524ea38",
+2425 => x"767a2384",
+2426 => x"19588070",
+2427 => x"56579856",
+2428 => x"74187033",
+2429 => x"70782b79",
+2430 => x"078118f8",
+2431 => x"1a5a5859",
+2432 => x"51548475",
+2433 => x"24ea3876",
+2434 => x"821b2388",
+2435 => x"19588070",
+2436 => x"56579856",
+2437 => x"74187033",
+2438 => x"70782b79",
+2439 => x"078118f8",
+2440 => x"1a5a5859",
+2441 => x"51548475",
+2442 => x"24ea3876",
+2443 => x"841b0c8c",
+2444 => x"19588070",
+2445 => x"56579856",
+2446 => x"74187033",
+2447 => x"70782b79",
+2448 => x"078118f8",
+2449 => x"1a5a5859",
+2450 => x"51548475",
+2451 => x"24ea3876",
+2452 => x"881b2390",
+2453 => x"19588070",
+2454 => x"56579856",
+2455 => x"74187033",
+2456 => x"70782b79",
+2457 => x"078118f8",
+2458 => x"1a5a5859",
+2459 => x"51548475",
+2460 => x"24ea3876",
+2461 => x"8a1b2394",
+2462 => x"19588070",
+2463 => x"56579856",
+2464 => x"74187033",
+2465 => x"70782b79",
+2466 => x"078118f8",
+2467 => x"1a5a5859",
+2468 => x"51548475",
+2469 => x"24ea3876",
+2470 => x"8c1b2398",
+2471 => x"19588070",
+2472 => x"56579856",
+2473 => x"74187033",
+2474 => x"70782b79",
+2475 => x"078118f8",
+2476 => x"1a5a5859",
+2477 => x"51548475",
+2478 => x"24ea3876",
+2479 => x"8e1b239c",
+2480 => x"19588070",
+2481 => x"5657b856",
+2482 => x"74187033",
+2483 => x"70782b79",
+2484 => x"078118f8",
+2485 => x"1a5a5859",
+2486 => x"5a548875",
+2487 => x"24ea3876",
+2488 => x"901b0c8b",
+2489 => x"3d0d04e9",
+2490 => x"3d0d6a81",
+2491 => x"c2dc0857",
+2492 => x"57759338",
+2493 => x"80c0800b",
+2494 => x"84180c75",
+2495 => x"ac180c75",
+2496 => x"800c993d",
+2497 => x"0d04893d",
+2498 => x"70556a54",
+2499 => x"558a5299",
+2500 => x"3dffbc05",
+2501 => x"51ffbaaa",
+2502 => x"3f800877",
+2503 => x"53755256",
+2504 => x"fd953f82",
+2505 => x"a03f7780",
+2506 => x"080c7580",
+2507 => x"0c993d0d",
+2508 => x"04e93d0d",
+2509 => x"695781c2",
+2510 => x"dc08802e",
+2511 => x"b6387651",
+2512 => x"84b83f89",
+2513 => x"3d705680",
+2514 => x"08810555",
+2515 => x"7754568f",
+2516 => x"52993dff",
+2517 => x"bc0551ff",
+2518 => x"b9e83f80",
+2519 => x"086b5376",
+2520 => x"5257fcd3",
+2521 => x"3f81de3f",
+2522 => x"7780080c",
+2523 => x"76800c99",
+2524 => x"3d0d0481",
+2525 => x"d03f850b",
+2526 => x"80080cff",
+2527 => x"0b800c99",
+2528 => x"3d0d04fc",
+2529 => x"3d0d8154",
+2530 => x"81c2dc08",
+2531 => x"88387380",
+2532 => x"0c863d0d",
+2533 => x"04765397",
+2534 => x"b952863d",
+2535 => x"fc0551ff",
+2536 => x"b9a03f80",
+2537 => x"0854819d",
+2538 => x"3f748008",
+2539 => x"0c73800c",
+2540 => x"863d0d04",
+2541 => x"f43d0d7e",
+2542 => x"80f2a808",
+2543 => x"700881ff",
+2544 => x"06913df8",
+2545 => x"05545159",
+2546 => x"59ffbac5",
+2547 => x"3f775780",
+2548 => x"5476557b",
+2549 => x"7d585276",
+2550 => x"538e3df0",
+2551 => x"0551d6a0",
+2552 => x"3f797b58",
+2553 => x"790c7684",
+2554 => x"1a0c7880",
+2555 => x"0c8e3d0d",
+2556 => x"04f43d0d",
+2557 => x"7e80f2a8",
+2558 => x"08700870",
+2559 => x"81ff0692",
+2560 => x"3df80555",
+2561 => x"515a5759",
+2562 => x"ffba863f",
+2563 => x"7757800b",
+2564 => x"8b3d5954",
+2565 => x"76557b7d",
+2566 => x"58527653",
+2567 => x"7751d5e0",
+2568 => x"3f8056bd",
+2569 => x"84c07655",
+2570 => x"55797b58",
+2571 => x"52765377",
+2572 => x"51d5cd3f",
+2573 => x"7a577880",
+2574 => x"2e843876",
+2575 => x"790c7680",
+2576 => x"0c8e3d0d",
+2577 => x"0480eafc",
+2578 => x"08800c04",
+2579 => x"f73d0d7b",
+2580 => x"80eafc08",
+2581 => x"82c81108",
+2582 => x"5a545a77",
+2583 => x"802e80da",
+2584 => x"38818818",
+2585 => x"841908ff",
+2586 => x"0581712b",
+2587 => x"59555980",
+2588 => x"742480ea",
+2589 => x"38807424",
+2590 => x"b5387382",
+2591 => x"2b781188",
+2592 => x"05565681",
+2593 => x"80190877",
+2594 => x"06537280",
+2595 => x"2eb63878",
+2596 => x"16700853",
+2597 => x"53795174",
+2598 => x"0853722d",
+2599 => x"ff14fc17",
+2600 => x"fc177981",
+2601 => x"2c5a5757",
+2602 => x"54738025",
+2603 => x"d6387708",
+2604 => x"5877ffad",
+2605 => x"3880eafc",
+2606 => x"0853bc13",
+2607 => x"08a53879",
+2608 => x"51f5fd3f",
+2609 => x"74085372",
+2610 => x"2dff14fc",
+2611 => x"17fc1779",
+2612 => x"812c5a57",
+2613 => x"57547380",
+2614 => x"25ffa838",
+2615 => x"d1398057",
+2616 => x"ff933972",
+2617 => x"51bc1308",
+2618 => x"54732d79",
+2619 => x"51f5d13f",
+2620 => x"fb3d0d77",
+2621 => x"7a71028c",
+2622 => x"05a30533",
+2623 => x"58545456",
+2624 => x"83732780",
+2625 => x"d4387583",
+2626 => x"06517080",
+2627 => x"cc387488",
+2628 => x"2b750770",
+2629 => x"71902b07",
+2630 => x"55518f73",
+2631 => x"27a73873",
+2632 => x"72708405",
+2633 => x"540c7174",
+2634 => x"71708405",
+2635 => x"530c7471",
+2636 => x"70840553",
+2637 => x"0c747170",
+2638 => x"8405530c",
+2639 => x"f0145452",
+2640 => x"728f26db",
+2641 => x"38837327",
+2642 => x"90387372",
+2643 => x"70840554",
+2644 => x"0cfc1353",
+2645 => x"728326f2",
+2646 => x"38ff1351",
+2647 => x"70ff2e93",
+2648 => x"38747270",
+2649 => x"81055434",
+2650 => x"ff115170",
+2651 => x"ff2e0981",
+2652 => x"06ef3875",
+2653 => x"800c873d",
+2654 => x"0d04fd3d",
+2655 => x"0d757071",
+2656 => x"83065355",
+2657 => x"5270b438",
+2658 => x"71700870",
+2659 => x"09f7fbfd",
+2660 => x"ff1206f8",
+2661 => x"84828180",
+2662 => x"06545253",
+2663 => x"719b3884",
+2664 => x"13700870",
+2665 => x"09f7fbfd",
+2666 => x"ff1206f8",
+2667 => x"84828180",
+2668 => x"06545253",
+2669 => x"71802ee7",
+2670 => x"38725271",
+2671 => x"33537280",
+2672 => x"2e8a3881",
+2673 => x"12703354",
+2674 => x"5272f838",
+2675 => x"71743180",
+2676 => x"0c853d0d",
+2677 => x"04ff3d0d",
+2678 => x"80f2840b",
+2679 => x"fc057008",
+2680 => x"525270ff",
+2681 => x"2e913870",
+2682 => x"2dfc1270",
+2683 => x"08525270",
+2684 => x"ff2e0981",
+2685 => x"06f13883",
+2686 => x"3d0d0404",
+2687 => x"ffb7a63f",
+2688 => x"04000000",
+2689 => x"30313233",
+2690 => x"34353637",
+2691 => x"38390000",
+2692 => x"44485259",
+2693 => x"53544f4e",
+2694 => x"45205052",
+2695 => x"4f475241",
+2696 => x"4d2c2053",
+2697 => x"4f4d4520",
+2698 => x"53545249",
+2699 => x"4e470000",
+2700 => x"44485259",
+2701 => x"53544f4e",
+2702 => x"45205052",
+2703 => x"4f475241",
+2704 => x"4d2c2031",
+2705 => x"27535420",
+2706 => x"53545249",
+2707 => x"4e470000",
+2708 => x"44687279",
+2709 => x"73746f6e",
+2710 => x"65204265",
+2711 => x"6e63686d",
+2712 => x"61726b2c",
+2713 => x"20566572",
+2714 => x"73696f6e",
+2715 => x"20322e31",
+2716 => x"20284c61",
+2717 => x"6e677561",
+2718 => x"67653a20",
+2719 => x"43290a00",
+2720 => x"50726f67",
+2721 => x"72616d20",
+2722 => x"636f6d70",
+2723 => x"696c6564",
+2724 => x"20776974",
+2725 => x"68202772",
+2726 => x"65676973",
+2727 => x"74657227",
+2728 => x"20617474",
+2729 => x"72696275",
+2730 => x"74650a00",
+2731 => x"45786563",
+2732 => x"7574696f",
+2733 => x"6e207374",
+2734 => x"61727473",
+2735 => x"2c202564",
+2736 => x"2072756e",
+2737 => x"73207468",
+2738 => x"726f7567",
+2739 => x"68204468",
+2740 => x"72797374",
+2741 => x"6f6e650a",
+2742 => x"00000000",
+2743 => x"44485259",
+2744 => x"53544f4e",
+2745 => x"45205052",
+2746 => x"4f475241",
+2747 => x"4d2c2032",
+2748 => x"274e4420",
+2749 => x"53545249",
+2750 => x"4e470000",
+2751 => x"45786563",
+2752 => x"7574696f",
+2753 => x"6e20656e",
+2754 => x"64730a00",
+2755 => x"46696e61",
+2756 => x"6c207661",
+2757 => x"6c756573",
+2758 => x"206f6620",
+2759 => x"74686520",
+2760 => x"76617269",
+2761 => x"61626c65",
+2762 => x"73207573",
+2763 => x"65642069",
+2764 => x"6e207468",
+2765 => x"65206265",
+2766 => x"6e63686d",
+2767 => x"61726b3a",
+2768 => x"0a000000",
+2769 => x"496e745f",
+2770 => x"476c6f62",
+2771 => x"3a202020",
+2772 => x"20202020",
+2773 => x"20202020",
+2774 => x"2025640a",
+2775 => x"00000000",
+2776 => x"20202020",
+2777 => x"20202020",
+2778 => x"73686f75",
+2779 => x"6c642062",
+2780 => x"653a2020",
+2781 => x"2025640a",
+2782 => x"00000000",
+2783 => x"426f6f6c",
+2784 => x"5f476c6f",
+2785 => x"623a2020",
+2786 => x"20202020",
+2787 => x"20202020",
+2788 => x"2025640a",
+2789 => x"00000000",
+2790 => x"43685f31",
+2791 => x"5f476c6f",
+2792 => x"623a2020",
+2793 => x"20202020",
+2794 => x"20202020",
+2795 => x"2025630a",
+2796 => x"00000000",
+2797 => x"20202020",
+2798 => x"20202020",
+2799 => x"73686f75",
+2800 => x"6c642062",
+2801 => x"653a2020",
+2802 => x"2025630a",
+2803 => x"00000000",
+2804 => x"43685f32",
+2805 => x"5f476c6f",
+2806 => x"623a2020",
+2807 => x"20202020",
+2808 => x"20202020",
+2809 => x"2025630a",
+2810 => x"00000000",
+2811 => x"4172725f",
+2812 => x"315f476c",
+2813 => x"6f625b38",
+2814 => x"5d3a2020",
+2815 => x"20202020",
+2816 => x"2025640a",
+2817 => x"00000000",
+2818 => x"4172725f",
+2819 => x"325f476c",
+2820 => x"6f625b38",
+2821 => x"5d5b375d",
+2822 => x"3a202020",
+2823 => x"2025640a",
+2824 => x"00000000",
+2825 => x"20202020",
+2826 => x"20202020",
+2827 => x"73686f75",
+2828 => x"6c642062",
+2829 => x"653a2020",
+2830 => x"204e756d",
+2831 => x"6265725f",
+2832 => x"4f665f52",
+2833 => x"756e7320",
+2834 => x"2b203130",
+2835 => x"0a000000",
+2836 => x"5074725f",
+2837 => x"476c6f62",
+2838 => x"2d3e0a00",
+2839 => x"20205074",
+2840 => x"725f436f",
+2841 => x"6d703a20",
+2842 => x"20202020",
+2843 => x"20202020",
+2844 => x"2025640a",
+2845 => x"00000000",
+2846 => x"20202020",
+2847 => x"20202020",
+2848 => x"73686f75",
+2849 => x"6c642062",
+2850 => x"653a2020",
+2851 => x"2028696d",
+2852 => x"706c656d",
+2853 => x"656e7461",
+2854 => x"74696f6e",
+2855 => x"2d646570",
+2856 => x"656e6465",
+2857 => x"6e74290a",
+2858 => x"00000000",
+2859 => x"20204469",
+2860 => x"7363723a",
+2861 => x"20202020",
+2862 => x"20202020",
+2863 => x"20202020",
+2864 => x"2025640a",
+2865 => x"00000000",
+2866 => x"2020456e",
+2867 => x"756d5f43",
+2868 => x"6f6d703a",
+2869 => x"20202020",
+2870 => x"20202020",
+2871 => x"2025640a",
+2872 => x"00000000",
+2873 => x"2020496e",
+2874 => x"745f436f",
+2875 => x"6d703a20",
+2876 => x"20202020",
+2877 => x"20202020",
+2878 => x"2025640a",
+2879 => x"00000000",
+2880 => x"20205374",
+2881 => x"725f436f",
+2882 => x"6d703a20",
+2883 => x"20202020",
+2884 => x"20202020",
+2885 => x"2025730a",
+2886 => x"00000000",
+2887 => x"20202020",
+2888 => x"20202020",
+2889 => x"73686f75",
+2890 => x"6c642062",
+2891 => x"653a2020",
+2892 => x"20444852",
+2893 => x"5953544f",
+2894 => x"4e452050",
+2895 => x"524f4752",
+2896 => x"414d2c20",
+2897 => x"534f4d45",
+2898 => x"20535452",
+2899 => x"494e470a",
+2900 => x"00000000",
+2901 => x"4e657874",
+2902 => x"5f507472",
+2903 => x"5f476c6f",
+2904 => x"622d3e0a",
+2905 => x"00000000",
+2906 => x"20202020",
+2907 => x"20202020",
+2908 => x"73686f75",
+2909 => x"6c642062",
+2910 => x"653a2020",
+2911 => x"2028696d",
+2912 => x"706c656d",
+2913 => x"656e7461",
+2914 => x"74696f6e",
+2915 => x"2d646570",
+2916 => x"656e6465",
+2917 => x"6e74292c",
+2918 => x"2073616d",
+2919 => x"65206173",
+2920 => x"2061626f",
+2921 => x"76650a00",
+2922 => x"496e745f",
+2923 => x"315f4c6f",
+2924 => x"633a2020",
+2925 => x"20202020",
+2926 => x"20202020",
+2927 => x"2025640a",
+2928 => x"00000000",
+2929 => x"496e745f",
+2930 => x"325f4c6f",
+2931 => x"633a2020",
+2932 => x"20202020",
+2933 => x"20202020",
+2934 => x"2025640a",
+2935 => x"00000000",
+2936 => x"496e745f",
+2937 => x"335f4c6f",
+2938 => x"633a2020",
+2939 => x"20202020",
+2940 => x"20202020",
+2941 => x"2025640a",
+2942 => x"00000000",
+2943 => x"456e756d",
+2944 => x"5f4c6f63",
+2945 => x"3a202020",
+2946 => x"20202020",
+2947 => x"20202020",
+2948 => x"2025640a",
+2949 => x"00000000",
+2950 => x"5374725f",
+2951 => x"315f4c6f",
+2952 => x"633a2020",
+2953 => x"20202020",
+2954 => x"20202020",
+2955 => x"2025730a",
+2956 => x"00000000",
+2957 => x"20202020",
+2958 => x"20202020",
+2959 => x"73686f75",
+2960 => x"6c642062",
+2961 => x"653a2020",
+2962 => x"20444852",
+2963 => x"5953544f",
+2964 => x"4e452050",
+2965 => x"524f4752",
+2966 => x"414d2c20",
+2967 => x"31275354",
+2968 => x"20535452",
+2969 => x"494e470a",
+2970 => x"00000000",
+2971 => x"5374725f",
+2972 => x"325f4c6f",
+2973 => x"633a2020",
+2974 => x"20202020",
+2975 => x"20202020",
+2976 => x"2025730a",
+2977 => x"00000000",
+2978 => x"20202020",
+2979 => x"20202020",
+2980 => x"73686f75",
+2981 => x"6c642062",
+2982 => x"653a2020",
+2983 => x"20444852",
+2984 => x"5953544f",
+2985 => x"4e452050",
+2986 => x"524f4752",
+2987 => x"414d2c20",
+2988 => x"32274e44",
+2989 => x"20535452",
+2990 => x"494e470a",
+2991 => x"00000000",
+2992 => x"55736572",
+2993 => x"2074696d",
+2994 => x"653a2025",
+2995 => x"640a0000",
+2996 => x"4d696372",
+2997 => x"6f736563",
+2998 => x"6f6e6473",
+2999 => x"20666f72",
+3000 => x"206f6e65",
+3001 => x"2072756e",
+3002 => x"20746872",
+3003 => x"6f756768",
+3004 => x"20446872",
+3005 => x"7973746f",
+3006 => x"6e653a20",
+3007 => x"00000000",
+3008 => x"2564200a",
+3009 => x"00000000",
+3010 => x"44687279",
+3011 => x"73746f6e",
+3012 => x"65732070",
+3013 => x"65722053",
+3014 => x"65636f6e",
+3015 => x"643a2020",
+3016 => x"20202020",
+3017 => x"20202020",
+3018 => x"20202020",
+3019 => x"20202020",
+3020 => x"20202020",
+3021 => x"00000000",
+3022 => x"56415820",
+3023 => x"4d495053",
+3024 => x"20726174",
+3025 => x"696e6720",
+3026 => x"2a203130",
+3027 => x"3030203d",
+3028 => x"20256420",
+3029 => x"0a000000",
+3030 => x"50726f67",
+3031 => x"72616d20",
+3032 => x"636f6d70",
+3033 => x"696c6564",
+3034 => x"20776974",
+3035 => x"686f7574",
+3036 => x"20277265",
+3037 => x"67697374",
+3038 => x"65722720",
+3039 => x"61747472",
+3040 => x"69627574",
+3041 => x"650a0000",
+3042 => x"4d656173",
+3043 => x"75726564",
+3044 => x"2074696d",
+3045 => x"6520746f",
+3046 => x"6f20736d",
+3047 => x"616c6c20",
+3048 => x"746f206f",
+3049 => x"62746169",
+3050 => x"6e206d65",
+3051 => x"616e696e",
+3052 => x"6766756c",
+3053 => x"20726573",
+3054 => x"756c7473",
+3055 => x"0a000000",
+3056 => x"506c6561",
+3057 => x"73652069",
+3058 => x"6e637265",
+3059 => x"61736520",
+3060 => x"6e756d62",
+3061 => x"6572206f",
+3062 => x"66207275",
+3063 => x"6e730a00",
+3064 => x"44485259",
+3065 => x"53544f4e",
+3066 => x"45205052",
+3067 => x"4f475241",
+3068 => x"4d2c2033",
+3069 => x"27524420",
+3070 => x"53545249",
+3071 => x"4e470000",
+3072 => x"00010202",
+3073 => x"03030303",
+3074 => x"04040404",
+3075 => x"04040404",
+3076 => x"05050505",
+3077 => x"05050505",
+3078 => x"05050505",
+3079 => x"05050505",
+3080 => x"06060606",
+3081 => x"06060606",
+3082 => x"06060606",
+3083 => x"06060606",
+3084 => x"06060606",
+3085 => x"06060606",
+3086 => x"06060606",
+3087 => x"06060606",
+3088 => x"07070707",
+3089 => x"07070707",
+3090 => x"07070707",
+3091 => x"07070707",
+3092 => x"07070707",
+3093 => x"07070707",
+3094 => x"07070707",
+3095 => x"07070707",
+3096 => x"07070707",
+3097 => x"07070707",
+3098 => x"07070707",
+3099 => x"07070707",
+3100 => x"07070707",
+3101 => x"07070707",
+3102 => x"07070707",
+3103 => x"07070707",
+3104 => x"08080808",
+3105 => x"08080808",
+3106 => x"08080808",
+3107 => x"08080808",
+3108 => x"08080808",
+3109 => x"08080808",
+3110 => x"08080808",
+3111 => x"08080808",
+3112 => x"08080808",
+3113 => x"08080808",
+3114 => x"08080808",
+3115 => x"08080808",
+3116 => x"08080808",
+3117 => x"08080808",
+3118 => x"08080808",
+3119 => x"08080808",
+3120 => x"08080808",
+3121 => x"08080808",
+3122 => x"08080808",
+3123 => x"08080808",
+3124 => x"08080808",
+3125 => x"08080808",
+3126 => x"08080808",
+3127 => x"08080808",
+3128 => x"08080808",
+3129 => x"08080808",
+3130 => x"08080808",
+3131 => x"08080808",
+3132 => x"08080808",
+3133 => x"08080808",
+3134 => x"08080808",
+3135 => x"08080808",
+3136 => x"43000000",
+3137 => x"64756d6d",
+3138 => x"792e6578",
+3139 => x"65000000",
+3140 => x"00ffffff",
+3141 => x"ff00ffff",
+3142 => x"ffff00ff",
+3143 => x"ffffff00",
+3144 => x"00000000",
+3145 => x"00000000",
+3146 => x"00000000",
+3147 => x"0000390c",
+3148 => x"000004d2", -- iterations 0x4d2=1234
+3149 => x"00000000",
+3150 => x"00000000",
+3151 => x"00000000",
+3152 => x"00000000",
+3153 => x"00000000",
+3154 => x"00000000",
+3155 => x"00000000",
+3156 => x"00000000",
+3157 => x"00000000",
+3158 => x"00000000",
+3159 => x"00000000",
+3160 => x"00000000",
+3161 => x"00000000",
+3162 => x"ffffffff",
+3163 => x"00000000",
+3164 => x"00020000",
+3165 => x"00000000",
+3166 => x"00000000",
+3167 => x"00003174",
+3168 => x"00003174",
+3169 => x"0000317c",
+3170 => x"0000317c",
+3171 => x"00003184",
+3172 => x"00003184",
+3173 => x"0000318c",
+3174 => x"0000318c",
+3175 => x"00003194",
+3176 => x"00003194",
+3177 => x"0000319c",
+3178 => x"0000319c",
+3179 => x"000031a4",
+3180 => x"000031a4",
+3181 => x"000031ac",
+3182 => x"000031ac",
+3183 => x"000031b4",
+3184 => x"000031b4",
+3185 => x"000031bc",
+3186 => x"000031bc",
+3187 => x"000031c4",
+3188 => x"000031c4",
+3189 => x"000031cc",
+3190 => x"000031cc",
+3191 => x"000031d4",
+3192 => x"000031d4",
+3193 => x"000031dc",
+3194 => x"000031dc",
+3195 => x"000031e4",
+3196 => x"000031e4",
+3197 => x"000031ec",
+3198 => x"000031ec",
+3199 => x"000031f4",
+3200 => x"000031f4",
+3201 => x"000031fc",
+3202 => x"000031fc",
+3203 => x"00003204",
+3204 => x"00003204",
+3205 => x"0000320c",
+3206 => x"0000320c",
+3207 => x"00003214",
+3208 => x"00003214",
+3209 => x"0000321c",
+3210 => x"0000321c",
+3211 => x"00003224",
+3212 => x"00003224",
+3213 => x"0000322c",
+3214 => x"0000322c",
+3215 => x"00003234",
+3216 => x"00003234",
+3217 => x"0000323c",
+3218 => x"0000323c",
+3219 => x"00003244",
+3220 => x"00003244",
+3221 => x"0000324c",
+3222 => x"0000324c",
+3223 => x"00003254",
+3224 => x"00003254",
+3225 => x"0000325c",
+3226 => x"0000325c",
+3227 => x"00003264",
+3228 => x"00003264",
+3229 => x"0000326c",
+3230 => x"0000326c",
+3231 => x"00003274",
+3232 => x"00003274",
+3233 => x"0000327c",
+3234 => x"0000327c",
+3235 => x"00003284",
+3236 => x"00003284",
+3237 => x"0000328c",
+3238 => x"0000328c",
+3239 => x"00003294",
+3240 => x"00003294",
+3241 => x"0000329c",
+3242 => x"0000329c",
+3243 => x"000032a4",
+3244 => x"000032a4",
+3245 => x"000032ac",
+3246 => x"000032ac",
+3247 => x"000032b4",
+3248 => x"000032b4",
+3249 => x"000032bc",
+3250 => x"000032bc",
+3251 => x"000032c4",
+3252 => x"000032c4",
+3253 => x"000032cc",
+3254 => x"000032cc",
+3255 => x"000032d4",
+3256 => x"000032d4",
+3257 => x"000032dc",
+3258 => x"000032dc",
+3259 => x"000032e4",
+3260 => x"000032e4",
+3261 => x"000032ec",
+3262 => x"000032ec",
+3263 => x"000032f4",
+3264 => x"000032f4",
+3265 => x"000032fc",
+3266 => x"000032fc",
+3267 => x"00003304",
+3268 => x"00003304",
+3269 => x"0000330c",
+3270 => x"0000330c",
+3271 => x"00003314",
+3272 => x"00003314",
+3273 => x"0000331c",
+3274 => x"0000331c",
+3275 => x"00003324",
+3276 => x"00003324",
+3277 => x"0000332c",
+3278 => x"0000332c",
+3279 => x"00003334",
+3280 => x"00003334",
+3281 => x"0000333c",
+3282 => x"0000333c",
+3283 => x"00003344",
+3284 => x"00003344",
+3285 => x"0000334c",
+3286 => x"0000334c",
+3287 => x"00003354",
+3288 => x"00003354",
+3289 => x"0000335c",
+3290 => x"0000335c",
+3291 => x"00003364",
+3292 => x"00003364",
+3293 => x"0000336c",
+3294 => x"0000336c",
+3295 => x"00003374",
+3296 => x"00003374",
+3297 => x"0000337c",
+3298 => x"0000337c",
+3299 => x"00003384",
+3300 => x"00003384",
+3301 => x"0000338c",
+3302 => x"0000338c",
+3303 => x"00003394",
+3304 => x"00003394",
+3305 => x"0000339c",
+3306 => x"0000339c",
+3307 => x"000033a4",
+3308 => x"000033a4",
+3309 => x"000033ac",
+3310 => x"000033ac",
+3311 => x"000033b4",
+3312 => x"000033b4",
+3313 => x"000033bc",
+3314 => x"000033bc",
+3315 => x"000033c4",
+3316 => x"000033c4",
+3317 => x"000033cc",
+3318 => x"000033cc",
+3319 => x"000033d4",
+3320 => x"000033d4",
+3321 => x"000033dc",
+3322 => x"000033dc",
+3323 => x"000033e4",
+3324 => x"000033e4",
+3325 => x"000033ec",
+3326 => x"000033ec",
+3327 => x"000033f4",
+3328 => x"000033f4",
+3329 => x"000033fc",
+3330 => x"000033fc",
+3331 => x"00003404",
+3332 => x"00003404",
+3333 => x"0000340c",
+3334 => x"0000340c",
+3335 => x"00003414",
+3336 => x"00003414",
+3337 => x"0000341c",
+3338 => x"0000341c",
+3339 => x"00003424",
+3340 => x"00003424",
+3341 => x"0000342c",
+3342 => x"0000342c",
+3343 => x"00003434",
+3344 => x"00003434",
+3345 => x"0000343c",
+3346 => x"0000343c",
+3347 => x"00003444",
+3348 => x"00003444",
+3349 => x"0000344c",
+3350 => x"0000344c",
+3351 => x"00003454",
+3352 => x"00003454",
+3353 => x"0000345c",
+3354 => x"0000345c",
+3355 => x"00003464",
+3356 => x"00003464",
+3357 => x"0000346c",
+3358 => x"0000346c",
+3359 => x"00003474",
+3360 => x"00003474",
+3361 => x"0000347c",
+3362 => x"0000347c",
+3363 => x"00003484",
+3364 => x"00003484",
+3365 => x"0000348c",
+3366 => x"0000348c",
+3367 => x"00003494",
+3368 => x"00003494",
+3369 => x"0000349c",
+3370 => x"0000349c",
+3371 => x"000034a4",
+3372 => x"000034a4",
+3373 => x"000034ac",
+3374 => x"000034ac",
+3375 => x"000034b4",
+3376 => x"000034b4",
+3377 => x"000034bc",
+3378 => x"000034bc",
+3379 => x"000034c4",
+3380 => x"000034c4",
+3381 => x"000034cc",
+3382 => x"000034cc",
+3383 => x"000034d4",
+3384 => x"000034d4",
+3385 => x"000034dc",
+3386 => x"000034dc",
+3387 => x"000034e4",
+3388 => x"000034e4",
+3389 => x"000034ec",
+3390 => x"000034ec",
+3391 => x"000034f4",
+3392 => x"000034f4",
+3393 => x"000034fc",
+3394 => x"000034fc",
+3395 => x"00003504",
+3396 => x"00003504",
+3397 => x"0000350c",
+3398 => x"0000350c",
+3399 => x"00003514",
+3400 => x"00003514",
+3401 => x"0000351c",
+3402 => x"0000351c",
+3403 => x"00003524",
+3404 => x"00003524",
+3405 => x"0000352c",
+3406 => x"0000352c",
+3407 => x"00003534",
+3408 => x"00003534",
+3409 => x"0000353c",
+3410 => x"0000353c",
+3411 => x"00003544",
+3412 => x"00003544",
+3413 => x"0000354c",
+3414 => x"0000354c",
+3415 => x"00003554",
+3416 => x"00003554",
+3417 => x"0000355c",
+3418 => x"0000355c",
+3419 => x"00003564",
+3420 => x"00003564",
+3421 => x"0000356c",
+3422 => x"0000356c",
+3423 => x"00003580",
+3424 => x"00000000",
+3425 => x"000037e8",
+3426 => x"00003844",
+3427 => x"000038a0",
+3428 => x"00000000",
+3429 => x"00000000",
+3430 => x"00000000",
+3431 => x"00000000",
+3432 => x"00000000",
+3433 => x"00000000",
+3434 => x"00000000",
+3435 => x"00000000",
+3436 => x"00000000",
+3437 => x"00003100",
+3438 => x"00000000",
+3439 => x"00000000",
+3440 => x"00000000",
+3441 => x"00000000",
+3442 => x"00000000",
+3443 => x"00000000",
+3444 => x"00000000",
+3445 => x"00000000",
+3446 => x"00000000",
+3447 => x"00000000",
+3448 => x"00000000",
+3449 => x"00000000",
+3450 => x"00000000",
+3451 => x"00000000",
+3452 => x"00000000",
+3453 => x"00000000",
+3454 => x"00000000",
+3455 => x"00000000",
+3456 => x"00000000",
+3457 => x"00000000",
+3458 => x"00000000",
+3459 => x"00000000",
+3460 => x"00000000",
+3461 => x"00000000",
+3462 => x"00000000",
+3463 => x"00000000",
+3464 => x"00000000",
+3465 => x"00000000",
+3466 => x"00000001",
+3467 => x"330eabcd",
+3468 => x"1234e66d",
+3469 => x"deec0005",
+3470 => x"000b0000",
+3471 => x"00000000",
+3472 => x"00000000",
+3473 => x"00000000",
+3474 => x"00000000",
+3475 => x"00000000",
+3476 => x"00000000",
+3477 => x"00000000",
+3478 => x"00000000",
+3479 => x"00000000",
+3480 => x"00000000",
+3481 => x"00000000",
+3482 => x"00000000",
+3483 => x"00000000",
+3484 => x"00000000",
+3485 => x"00000000",
+3486 => x"00000000",
+3487 => x"00000000",
+3488 => x"00000000",
+3489 => x"00000000",
+3490 => x"00000000",
+3491 => x"00000000",
+3492 => x"00000000",
+3493 => x"00000000",
+3494 => x"00000000",
+3495 => x"00000000",
+3496 => x"00000000",
+3497 => x"00000000",
+3498 => x"00000000",
+3499 => x"00000000",
+3500 => x"00000000",
+3501 => x"00000000",
+3502 => x"00000000",
+3503 => x"00000000",
+3504 => x"00000000",
+3505 => x"00000000",
+3506 => x"00000000",
+3507 => x"00000000",
+3508 => x"00000000",
+3509 => x"00000000",
+3510 => x"00000000",
+3511 => x"00000000",
+3512 => x"00000000",
+3513 => x"00000000",
+3514 => x"00000000",
+3515 => x"00000000",
+3516 => x"00000000",
+3517 => x"00000000",
+3518 => x"00000000",
+3519 => x"00000000",
+3520 => x"00000000",
+3521 => x"00000000",
+3522 => x"00000000",
+3523 => x"00000000",
+3524 => x"00000000",
+3525 => x"00000000",
+3526 => x"00000000",
+3527 => x"00000000",
+3528 => x"00000000",
+3529 => x"00000000",
+3530 => x"00000000",
+3531 => x"00000000",
+3532 => x"00000000",
+3533 => x"00000000",
+3534 => x"00000000",
+3535 => x"00000000",
+3536 => x"00000000",
+3537 => x"00000000",
+3538 => x"00000000",
+3539 => x"00000000",
+3540 => x"00000000",
+3541 => x"00000000",
+3542 => x"00000000",
+3543 => x"00000000",
+3544 => x"00000000",
+3545 => x"00000000",
+3546 => x"00000000",
+3547 => x"00000000",
+3548 => x"00000000",
+3549 => x"00000000",
+3550 => x"00000000",
+3551 => x"00000000",
+3552 => x"00000000",
+3553 => x"00000000",
+3554 => x"00000000",
+3555 => x"00000000",
+3556 => x"00000000",
+3557 => x"00000000",
+3558 => x"00000000",
+3559 => x"00000000",
+3560 => x"00000000",
+3561 => x"00000000",
+3562 => x"00000000",
+3563 => x"00000000",
+3564 => x"00000000",
+3565 => x"00000000",
+3566 => x"00000000",
+3567 => x"00000000",
+3568 => x"00000000",
+3569 => x"00000000",
+3570 => x"00000000",
+3571 => x"00000000",
+3572 => x"00000000",
+3573 => x"00000000",
+3574 => x"00000000",
+3575 => x"00000000",
+3576 => x"00000000",
+3577 => x"00000000",
+3578 => x"00000000",
+3579 => x"00000000",
+3580 => x"00000000",
+3581 => x"00000000",
+3582 => x"00000000",
+3583 => x"00000000",
+3584 => x"00000000",
+3585 => x"00000000",
+3586 => x"00000000",
+3587 => x"00000000",
+3588 => x"00000000",
+3589 => x"00000000",
+3590 => x"00000000",
+3591 => x"00000000",
+3592 => x"00000000",
+3593 => x"00000000",
+3594 => x"00000000",
+3595 => x"00000000",
+3596 => x"00000000",
+3597 => x"00000000",
+3598 => x"00000000",
+3599 => x"00000000",
+3600 => x"00000000",
+3601 => x"00000000",
+3602 => x"00000000",
+3603 => x"00000000",
+3604 => x"00000000",
+3605 => x"00000000",
+3606 => x"00000000",
+3607 => x"00000000",
+3608 => x"00000000",
+3609 => x"00000000",
+3610 => x"00000000",
+3611 => x"00000000",
+3612 => x"00000000",
+3613 => x"00000000",
+3614 => x"00000000",
+3615 => x"00000000",
+3616 => x"00000000",
+3617 => x"00000000",
+3618 => x"00000000",
+3619 => x"00000000",
+3620 => x"00000000",
+3621 => x"00000000",
+3622 => x"00000000",
+3623 => x"00000000",
+3624 => x"00000000",
+3625 => x"00000000",
+3626 => x"00000000",
+3627 => x"00000000",
+3628 => x"00000000",
+3629 => x"00000000",
+3630 => x"00000000",
+3631 => x"00000000",
+3632 => x"00000000",
+3633 => x"00000000",
+3634 => x"00000000",
+3635 => x"00000000",
+3636 => x"00000000",
+3637 => x"00000000",
+3638 => x"00000000",
+3639 => x"00000000",
+3640 => x"00000000",
+3641 => x"00000000",
+3642 => x"00000000",
+3643 => x"00000000",
+3644 => x"00000000",
+3645 => x"00000000",
+3646 => x"00000000",
+3647 => x"00003104",
+3648 => x"ffffffff",
+3649 => x"00000000",
+3650 => x"ffffffff",
+3651 => x"00000000",
+ others => x"00000000"
+);
+
+begin
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memAWriteEnable = '1') and (memBWriteEnable = '1') and (memAAddr=memBAddr) and (memAWrite/=memBWrite) then
+ report "write collision" severity failure;
+ end if;
+
+ if (memAWriteEnable = '1') then
+ ram(conv_integer(memAAddr)) := memAWrite;
+ memARead <= memAWrite;
+ else
+ memARead <= ram(conv_integer(memAAddr));
+ end if;
+ end if;
+end process;
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ if (memBWriteEnable = '1') then
+ ram(conv_integer(memBAddr)) := memBWrite;
+ memBRead <= memBWrite;
+ else
+ memBRead <= ram(conv_integer(memBAddr));
+ end if;
+ end if;
+end process;
+
+
+
+
+end dualport_ram_arch;
diff --git a/zpu/hdl/zpu4/src/build.xml b/zpu/hdl/zpu4/src/build.xml
new file mode 100644
index 0000000..e1b268a
--- /dev/null
+++ b/zpu/hdl/zpu4/src/build.xml
@@ -0,0 +1,114 @@
+<!--
+
+FIX!!! start /b /wait /belownormal does not propagate return code..
+-->
+<project name="ZPU3" default="all" basedir=".">
+ <property name="chipname" value="ic300"/>
+ <property name="packagetype" value="xc3s400-ft256-4"/>
+
+
+ <description>eCosBoard firmware build file</description>
+
+ <target name="setuplibs">
+ <!-- N/A yet
+ <copy todir="../src">
+ <fileset dir="..\fpgalib\" includes="foo_top.ngc" />
+ </copy>
+ -->
+ </target>
+
+ <target name="setup">
+ <mkdir dir="..\reports"/>
+ <mkdir dir="..\syn"/>
+ <mkdir dir="..\ngo"/>
+ <mkdir dir="..\output"/>
+ <mkdir dir="..\tmp"/>
+ <mkdir dir="..\xst"/>
+ </target>
+
+ <target name="clean">
+ <delete dir="..\reports"/>
+ <delete dir="..\syn"/>
+ <delete dir="..\ngo"/>
+ <delete dir="..\output"/>
+ <delete dir="..\tmp"/>
+ <delete dir="..\xst"/>
+ </target>
+
+ <target name="synthesis" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c xst -intstyle ise -ifn xmake.xst -ofn ..\reports\1_synthesis.txt"/>
+ </exec>
+ </target>
+
+
+ <target name="translate" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c ngdbuild -intstyle ise -dd ..\ngo -uc ${chipname}.ucf -a -p ${packagetype} ..\syn\${chipname}.ngc ..\ngo\${chipname}.ngd"/>
+ </exec>
+ <move tofile="..\reports\2_translate.txt">
+ <fileset dir="..\ngo" includes="${chipname}.bld"/>
+ </move>
+ </target>
+
+ <target name="mapping" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c map -intstyle ise -p ${packagetype} -ol high -timing -detail -cm area -ignore_keep_hierarchy -pr b -k 6 -r -c 100 -tx off -o ..\ngo\${chipname}_map.ncd ..\ngo\${chipname}.ngd ..\ngo\${chipname}.pcf"/>
+ </exec>
+ <move tofile="..\reports\3_mapping.txt">
+ <fileset dir="..\ngo" includes="${chipname}_map.mrp"/>
+ </move>
+ </target>
+
+
+ <target name="placeandroute" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c par -w -intstyle ise -ol high -t 1 ..\ngo\${chipname}_map.ncd ..\ngo\${chipname}.ncd ..\ngo\${chipname}.pcf"/>
+ </exec>
+ <move tofile="..\reports\4_placeandroute.txt">
+ <fileset dir="..\ngo" includes="${chipname}.par"/>
+ </move>
+ <move tofile="..\reports\5_pads.txt">
+ <fileset dir="..\ngo" includes="${chipname}_pad.txt"/>
+ </move>
+ </target>
+
+
+ <target name="gentime" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c trce -intstyle ise -v 3 -l 3 -a -u 100 ..\ngo\${chipname}.ncd -o ..\reports\timing.twr ..\ngo\${chipname}.pcf"/>
+ </exec>
+ <delete file="..\reports\6_timing.txt"/>
+ <move tofile="..\reports\6_timing.txt">
+ <fileset dir="..\reports" includes="timing.twr"/>
+ </move>
+ </target>
+
+
+ <target name="genbit" depends="setup">
+ <exec executable="cmd" failonerror="true">
+ <arg line="/c bitgen -intstyle ise -w -f ${chipname}.bitgen ..\ngo\${chipname}.ncd"/>
+ </exec>
+ <move tofile="..\reports\7_bitgen.txt">
+ <fileset dir="..\ngo" includes="${chipname}.bgn"/>
+ </move>
+ </target>
+
+ <target name="copyfiles" depends="setup">
+ <copy todir="../output">
+ <fileset dir="..\ngo" includes="${chipname}.bin"/>
+ </copy>
+ <!--
+ <copy tofile="${workspace_loc}\firmware\board\xeddvifpgadata.rawdata">
+ <fileset dir="..\ngo" includes="${chipname}.bin"/>
+ </copy>
+ -->
+ </target>
+
+
+ <target name="all" depends="setuplibs,synthesis,translate,mapping,placeandroute,gentime,genbit,copyfiles">
+
+ </target>
+
+
+</project> \ No newline at end of file
diff --git a/zpu/hdl/zpu4/src/clocks.vhd b/zpu/hdl/zpu4/src/clocks.vhd
new file mode 100644
index 0000000..a352b3c
--- /dev/null
+++ b/zpu/hdl/zpu4/src/clocks.vhd
@@ -0,0 +1,246 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library UNISIM;
+use UNISIM.vcomponents.all;
+
+entity clocks is
+ port ( areset : in std_logic;
+ cpu_clk_p : in std_logic;
+ sdr_clk_fb_p : in std_logic;
+ cpu_clk : out std_logic;
+ cpu_clk_2x : out std_logic;
+ cpu_clk_4x : out std_logic;
+ ddr_in_clk : out std_logic;
+ ddr_in_clk_2x : out std_logic;
+ locked : out std_logic_vector(2 downto 0));
+end clocks;
+
+architecture behave of clocks is
+
+signal low : std_logic;
+
+signal cpu_clk_in : std_logic;
+signal sdr_clk_fb_in : std_logic;
+
+signal dcm_cpu1 : std_logic;
+signal dcm_cpu2 : std_logic;
+signal dcm_cpu2_dum : std_logic;
+signal dcm_cpu4 : std_logic;
+signal dcm_ddr2 : std_logic;
+signal dcm_ddr2_2x : std_logic;
+
+signal cpu_clk_int : std_logic;
+signal cpu_clk_2x_int : std_logic;
+signal cpu_clk_2x_dum_int : std_logic;
+signal cpu_clk_4x_int : std_logic;
+signal ddr_in_clk_int : std_logic;
+signal ddr_in_clk_2x_int : std_logic;
+
+signal dcm1_locked_del : std_logic;
+signal dcm2_locked_del : std_logic;
+signal dcm2_reset : std_logic;
+signal dcm3_reset : std_logic;
+
+signal locked_int : std_logic_vector(2 downto 0);
+signal del_addr : std_logic_vector(3 downto 0);
+
+begin
+
+ low <= '0';
+ del_addr <= "1111";
+
+ cpu_clk <= cpu_clk_int;
+ cpu_clk_2x <= cpu_clk_2x_int;
+ cpu_clk_4x <= cpu_clk_4x_int;
+ ddr_in_clk <= ddr_in_clk_int;
+ ddr_in_clk_2x <= ddr_in_clk_2x_int;
+ locked <= locked_int;
+
+
+ CPU_IBUFG:
+ IBUFG port map (
+ O => cpu_clk_in,
+ I => cpu_clk_p);
+
+ SDR_FB_IBUFG:
+ IBUFG port map (
+ O => sdr_clk_fb_in,
+ I => sdr_clk_fb_p);
+
+ dcm2_rst:
+ SRL16 generic map (
+ INIT => X"0000")
+ port map (
+ Q => dcm1_locked_del,
+ A0 => del_addr(0),
+ A1 => del_addr(1),
+ A2 => del_addr(2),
+ A3 => del_addr(3),
+ CLK => cpu_clk_int,
+ D => locked_int(0));
+
+ dcm2_reset <= not(dcm1_locked_del);
+
+ dcm3_rst:
+ SRL16 generic map (
+ INIT => X"0000")
+ port map (
+ Q => dcm2_locked_del,
+ A0 => del_addr(0),
+ A1 => del_addr(1),
+ A2 => del_addr(2),
+ A3 => del_addr(3),
+ CLK => cpu_clk_int,
+ D => locked_int(1));
+
+ dcm3_reset <= not(dcm2_locked_del);
+
+ cpu1_dcm:
+ DCM generic map (
+ CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
+ -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
+ CLKFX_DIVIDE => 1, -- Can be any interger from 1 to 32
+ CLKFX_MULTIPLY => 4, -- Can be any integer from 1 to 32
+ CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
+ CLKIN_PERIOD => 15.625, -- Specify period of input clock
+ CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift of NONE, FIXED or VARIABLE
+ CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE, 1X or 2X
+ DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
+ -- an integer from 0 to 15
+ DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency synthesis
+ DLL_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for DLL
+ DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
+ FACTORY_JF => X"8080", -- FACTORY JF Values
+ PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 255
+ STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
+ port map (
+ CLK0 => dcm_cpu1, -- 0 degree DCM CLK ouptput
+ CLK180 => open, -- 180 degree DCM CLK output
+ CLK270 => open, -- 270 degree DCM CLK output
+ CLK2X => dcm_cpu2, -- 2X DCM CLK output
+ CLK2X180 => open, -- 2X, 180 degree DCM CLK out
+ CLK90 => open, -- 90 degree DCM CLK output
+ CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE)
+ CLKFX => open, -- DCM CLK synthesis out (M/D)
+ CLKFX180 => open, -- 180 degree CLK synthesis out
+ LOCKED => locked_int(0), -- DCM LOCK status output
+ PSDONE => open, -- Dynamic phase adjust done output
+ STATUS => open, -- 8-bit DCM status bits output
+ CLKFB => cpu_clk_int, -- DCM clock feedback
+ CLKIN => cpu_clk_in, -- Clock input (from IBUFG, BUFG or DCM)
+ PSCLK => low, -- Dynamic phase adjust clock input
+ PSEN => low, -- Dynamic phase adjust enable input
+ PSINCDEC => low, -- Dynamic phase adjust increment/decrement
+ RST => areset); -- DCM asynchronous reset input
+
+ cpu2_dcm:
+ DCM generic map (
+ CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
+ -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
+ CLKFX_DIVIDE => 1, -- Can be any interger from 1 to 32
+ CLKFX_MULTIPLY => 4, -- Can be any integer from 1 to 32
+ CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
+ CLKIN_PERIOD => 7.8125, -- Specify period of input clock
+ CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift of NONE, FIXED or VARIABLE
+ CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE, 1X or 2X
+ DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
+ -- an integer from 0 to 15
+ DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency synthesis
+ DLL_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for DLL
+ DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
+ FACTORY_JF => X"8080", -- FACTORY JF Values
+ PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 255
+ STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
+ port map (
+ CLK0 => dcm_cpu2_dum, -- 0 degree DCM CLK ouptput
+ CLK180 => open, -- 180 degree DCM CLK output
+ CLK270 => open, -- 270 degree DCM CLK output
+ CLK2X => dcm_cpu4, -- 2X DCM CLK output
+ CLK2X180 => open, -- 2X, 180 degree DCM CLK out
+ CLK90 => open, -- 90 degree DCM CLK output
+ CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE)
+ CLKFX => open, -- DCM CLK synthesis out (M/D)
+ CLKFX180 => open, -- 180 degree CLK synthesis out
+ LOCKED => locked_int(1), -- DCM LOCK status output
+ PSDONE => open, -- Dynamic phase adjust done output
+ STATUS => open, -- 8-bit DCM status bits output
+ CLKFB => cpu_clk_2x_dum_int, -- DCM clock feedback
+ CLKIN => cpu_clk_2x_int, -- Clock input (from IBUFG, BUFG or DCM)
+ PSCLK => low, -- Dynamic phase adjust clock input
+ PSEN => low, -- Dynamic phase adjust enable input
+ PSINCDEC => low, -- Dynamic phase adjust increment/decrement
+ RST => dcm2_reset); -- DCM asynchronous reset input
+
+ ddr_read_dcm:
+ DCM generic map (
+ CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
+ -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
+ CLKFX_DIVIDE => 1, -- Can be any interger from 1 to 32
+ CLKFX_MULTIPLY => 4, -- Can be any integer from 1 to 32
+ CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
+ CLKIN_PERIOD => 7.8125, -- Specify period of input clock
+ CLKOUT_PHASE_SHIFT => "FIXED", -- Specify phase shift of NONE, FIXED or VARIABLE
+-- CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift of NONE, FIXED or VARIABLE
+ CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE, 1X or 2X
+ DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
+ -- an integer from 0 to 15
+ DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency synthesis
+ DLL_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for DLL
+ DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
+ FACTORY_JF => X"8080", -- FACTORY JF Values
+ PHASE_SHIFT => 103, -- Amount of fixed phase shift from -255 to 255
+-- PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 255
+ STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
+ port map (
+ CLK0 => dcm_ddr2, -- 0 degree DCM CLK ouptput
+ CLK180 => open, -- 180 degree DCM CLK output
+ CLK270 => open, -- 270 degree DCM CLK output
+ CLK2X => dcm_ddr2_2x, -- 2X DCM CLK output
+ CLK2X180 => open, -- 2X, 180 degree DCM CLK out
+ CLK90 => open, -- 90 degree DCM CLK output
+ CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE)
+ CLKFX => open, -- DCM CLK synthesis out (M/D)
+ CLKFX180 => open, -- 180 degree CLK synthesis out
+ LOCKED => locked_int(2), -- DCM LOCK status output
+ PSDONE => open, -- Dynamic phase adjust done output
+ STATUS => open, -- 8-bit DCM status bits output
+ CLKFB => ddr_in_clk_int, -- DCM clock feedback
+ CLKIN => sdr_clk_fb_in, -- Clock input (from IBUFG, BUFG or DCM)
+ PSCLK => low, -- Dynamic phase adjust clock input
+ PSEN => low, -- Dynamic phase adjust enable input
+ PSINCDEC => low, -- Dynamic phase adjust increment/decrement
+ RST => dcm3_reset); -- DCM asynchronous reset input
+
+ cpu1:
+ BUFG port map (
+ I => dcm_cpu1,
+ O => cpu_clk_int);
+
+ cpu2:
+ BUFG port map (
+ I => dcm_cpu2,
+ O => cpu_clk_2x_int);
+
+ cpu2_dum:
+ BUFG port map (
+ I => dcm_cpu2_dum,
+ O => cpu_clk_2x_dum_int);
+
+ cpu4:
+ BUFG port map (
+ I => dcm_cpu4,
+ O => cpu_clk_4x_int);
+
+ ddr_clk:
+ BUFG port map (
+ I => dcm_ddr2,
+ O => ddr_in_clk_int);
+
+ ddr_clk_2x:
+ BUFG port map (
+ I => dcm_ddr2_2x,
+ O => ddr_in_clk_2x_int);
+
+end behave; \ No newline at end of file
diff --git a/zpu/hdl/zpu4/src/dmipssmalltrace.do b/zpu/hdl/zpu4/src/dmipssmalltrace.do
new file mode 100644
index 0000000..eb4c6fe
--- /dev/null
+++ b/zpu/hdl/zpu4/src/dmipssmalltrace.do
@@ -0,0 +1,26 @@
+set BreakOnAssertion 1
+vlib work
+
+vcom -93 -explicit zpu_config_trace.vhd
+vcom -93 -explicit zpupkg.vhd
+vcom -93 -explicit txt_util.vhd
+vcom -93 -explicit sim_fpga_top.vhd
+vcom -93 -explicit zpu_core_small.vhd
+vcom -93 -explicit bram_dmips.vhd
+vcom -93 -explicit dram_dmips.vhd
+vcom -93 -explicit timer.vhd
+vcom -93 -explicit io.vhd
+vcom -93 -explicit trace.vhd
+
+
+vsim fpga_top
+view wave
+
+add wave -recursive fpga_top/zpu/*
+#--add wave -recursive fpga_top/ioMap/*
+#add wave -recursive fpga_top/*
+view structure
+
+
+# run ZPU
+run 5 ms
diff --git a/zpu/hdl/zpu4/src/dmipstrace.do b/zpu/hdl/zpu4/src/dmipstrace.do
new file mode 100644
index 0000000..8d5f430
--- /dev/null
+++ b/zpu/hdl/zpu4/src/dmipstrace.do
@@ -0,0 +1,25 @@
+set BreakOnAssertion 1
+vlib work
+
+vcom -93 -explicit zpu_config_trace.vhd
+vcom -93 -explicit zpupkg.vhd
+vcom -93 -explicit txt_util.vhd
+vcom -93 -explicit sim_fpga_top.vhd
+vcom -93 -explicit zpu_core.vhd
+vcom -93 -explicit dram_dmips.vhd
+vcom -93 -explicit timer.vhd
+vcom -93 -explicit io.vhd
+vcom -93 -explicit trace.vhd
+
+
+vsim fpga_top
+view wave
+
+add wave -recursive fpga_top/zpu/*
+#--add wave -recursive fpga_top/ioMap/*
+#add wave -recursive fpga_top/*
+view structure
+
+
+# run ZPU
+run 5 ms
diff --git a/zpu/hdl/zpu4/src/dmipstraceintstack.do b/zpu/hdl/zpu4/src/dmipstraceintstack.do
new file mode 100644
index 0000000..b2addb4
--- /dev/null
+++ b/zpu/hdl/zpu4/src/dmipstraceintstack.do
@@ -0,0 +1,25 @@
+set BreakOnAssertion 1
+vlib work
+
+vcom -93 -explicit zpu_config_trace.vhd
+vcom -93 -explicit zpupkg.vhd
+vcom -93 -explicit txt_util.vhd
+vcom -93 -explicit sim_fpga_top.vhd
+vcom -93 -explicit zpu_core_intstack.vhd
+vcom -93 -explicit dram_dmips.vhd
+vcom -93 -explicit timer.vhd
+vcom -93 -explicit io.vhd
+vcom -93 -explicit trace.vhd
+
+
+vsim fpga_top
+view wave
+
+add wave -recursive fpga_top/zpu/*
+#--add wave -recursive fpga_top/ioMap/*
+#add wave -recursive fpga_top/*
+view structure
+
+
+# run ZPU
+run 5 ms
diff --git a/zpu/hdl/zpu4/src/dram_dmips.vhd b/zpu/hdl/zpu4/src/dram_dmips.vhd
new file mode 100644
index 0000000..e63a27a
--- /dev/null
+++ b/zpu/hdl/zpu4/src/dram_dmips.vhd
@@ -0,0 +1,3702 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+
+entity dram is
+port (clk : in std_logic;
+areset : std_logic;
+ mem_writeEnable : in std_logic;
+ mem_readEnable : in std_logic;
+ mem_addr : in std_logic_vector(maxAddrBit downto 0);
+ mem_write : in std_logic_vector(wordSize-1 downto 0);
+ mem_read : out std_logic_vector(wordSize-1 downto 0);
+ mem_busy : out std_logic;
+ mem_writeMask : in std_logic_vector(wordBytes-1 downto 0));
+end dram;
+
+architecture dram_arch of dram is
+
+
+type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
+
+shared variable ram : ram_type :=
+(
+0 => x"0b0b0b0b",
+1 => x"80700b0b",
+2 => x"80e2a40c",
+3 => x"3a0b0b80",
+4 => x"c6fc0400",
+5 => x"00000000",
+6 => x"00000000",
+7 => x"00000000",
+8 => x"80088408",
+9 => x"88080b0b",
+10 => x"80c7c32d",
+11 => x"880c840c",
+12 => x"800c0400",
+13 => x"00000000",
+14 => x"00000000",
+15 => x"00000000",
+16 => x"71fd0608",
+17 => x"72830609",
+18 => x"81058205",
+19 => x"832b2a83",
+20 => x"ffff0652",
+21 => x"04000000",
+22 => x"00000000",
+23 => x"00000000",
+24 => x"71fd0608",
+25 => x"83ffff73",
+26 => x"83060981",
+27 => x"05820583",
+28 => x"2b2b0906",
+29 => x"7383ffff",
+30 => x"0b0b0b0b",
+31 => x"83a70400",
+32 => x"72098105",
+33 => x"72057373",
+34 => x"09060906",
+35 => x"73097306",
+36 => x"070a8106",
+37 => x"53510400",
+38 => x"00000000",
+39 => x"00000000",
+40 => x"72722473",
+41 => x"732e0753",
+42 => x"51040000",
+43 => x"00000000",
+44 => x"00000000",
+45 => x"00000000",
+46 => x"00000000",
+47 => x"00000000",
+48 => x"71737109",
+49 => x"71068106",
+50 => x"30720a10",
+51 => x"0a720a10",
+52 => x"0a31050a",
+53 => x"81065151",
+54 => x"53510400",
+55 => x"00000000",
+56 => x"72722673",
+57 => x"732e0753",
+58 => x"51040000",
+59 => x"00000000",
+60 => x"00000000",
+61 => x"00000000",
+62 => x"00000000",
+63 => x"00000000",
+64 => x"00000000",
+65 => x"00000000",
+66 => x"00000000",
+67 => x"00000000",
+68 => x"00000000",
+69 => x"00000000",
+70 => x"00000000",
+71 => x"00000000",
+72 => x"0b0b0b88",
+73 => x"c4040000",
+74 => x"00000000",
+75 => x"00000000",
+76 => x"00000000",
+77 => x"00000000",
+78 => x"00000000",
+79 => x"00000000",
+80 => x"720a722b",
+81 => x"0a535104",
+82 => x"00000000",
+83 => x"00000000",
+84 => x"00000000",
+85 => x"00000000",
+86 => x"00000000",
+87 => x"00000000",
+88 => x"72729f06",
+89 => x"0981050b",
+90 => x"0b0b88a7",
+91 => x"05040000",
+92 => x"00000000",
+93 => x"00000000",
+94 => x"00000000",
+95 => x"00000000",
+96 => x"72722aff",
+97 => x"739f062a",
+98 => x"0974090a",
+99 => x"8106ff05",
+100 => x"06075351",
+101 => x"04000000",
+102 => x"00000000",
+103 => x"00000000",
+104 => x"71715351",
+105 => x"020d0406",
+106 => x"73830609",
+107 => x"81058205",
+108 => x"832b0b2b",
+109 => x"0772fc06",
+110 => x"0c515104",
+111 => x"00000000",
+112 => x"72098105",
+113 => x"72050970",
+114 => x"81050906",
+115 => x"0a810653",
+116 => x"51040000",
+117 => x"00000000",
+118 => x"00000000",
+119 => x"00000000",
+120 => x"72098105",
+121 => x"72050970",
+122 => x"81050906",
+123 => x"0a098106",
+124 => x"53510400",
+125 => x"00000000",
+126 => x"00000000",
+127 => x"00000000",
+128 => x"71098105",
+129 => x"52040000",
+130 => x"00000000",
+131 => x"00000000",
+132 => x"00000000",
+133 => x"00000000",
+134 => x"00000000",
+135 => x"00000000",
+136 => x"72720981",
+137 => x"05055351",
+138 => x"04000000",
+139 => x"00000000",
+140 => x"00000000",
+141 => x"00000000",
+142 => x"00000000",
+143 => x"00000000",
+144 => x"72097206",
+145 => x"73730906",
+146 => x"07535104",
+147 => x"00000000",
+148 => x"00000000",
+149 => x"00000000",
+150 => x"00000000",
+151 => x"00000000",
+152 => x"71fc0608",
+153 => x"72830609",
+154 => x"81058305",
+155 => x"1010102a",
+156 => x"81ff0652",
+157 => x"04000000",
+158 => x"00000000",
+159 => x"00000000",
+160 => x"71fc0608",
+161 => x"0b0b80e2",
+162 => x"90738306",
+163 => x"10100508",
+164 => x"060b0b0b",
+165 => x"88aa0400",
+166 => x"00000000",
+167 => x"00000000",
+168 => x"80088408",
+169 => x"88087575",
+170 => x"0b0b0baf",
+171 => x"ac2d5050",
+172 => x"80085688",
+173 => x"0c840c80",
+174 => x"0c510400",
+175 => x"00000000",
+176 => x"80088408",
+177 => x"88087575",
+178 => x"0b0b0baf",
+179 => x"f02d5050",
+180 => x"80085688",
+181 => x"0c840c80",
+182 => x"0c510400",
+183 => x"00000000",
+184 => x"72097081",
+185 => x"0509060a",
+186 => x"8106ff05",
+187 => x"70547106",
+188 => x"73097274",
+189 => x"05ff0506",
+190 => x"07515151",
+191 => x"04000000",
+192 => x"72097081",
+193 => x"0509060a",
+194 => x"098106ff",
+195 => x"05705471",
+196 => x"06730972",
+197 => x"7405ff05",
+198 => x"06075151",
+199 => x"51040000",
+200 => x"05ff0504",
+201 => x"00000000",
+202 => x"00000000",
+203 => x"00000000",
+204 => x"00000000",
+205 => x"00000000",
+206 => x"00000000",
+207 => x"00000000",
+208 => x"810b0b0b",
+209 => x"80e2a00c",
+210 => x"51040000",
+211 => x"00000000",
+212 => x"00000000",
+213 => x"00000000",
+214 => x"00000000",
+215 => x"00000000",
+216 => x"71810552",
+217 => x"04000000",
+218 => x"00000000",
+219 => x"00000000",
+220 => x"00000000",
+221 => x"00000000",
+222 => x"00000000",
+223 => x"00000000",
+224 => x"00000000",
+225 => x"00000000",
+226 => x"00000000",
+227 => x"00000000",
+228 => x"00000000",
+229 => x"00000000",
+230 => x"00000000",
+231 => x"00000000",
+232 => x"02840572",
+233 => x"10100552",
+234 => x"04000000",
+235 => x"00000000",
+236 => x"00000000",
+237 => x"00000000",
+238 => x"00000000",
+239 => x"00000000",
+240 => x"00000000",
+241 => x"00000000",
+242 => x"00000000",
+243 => x"00000000",
+244 => x"00000000",
+245 => x"00000000",
+246 => x"00000000",
+247 => x"00000000",
+248 => x"717105ff",
+249 => x"05715351",
+250 => x"020d0400",
+251 => x"00000000",
+252 => x"00000000",
+253 => x"00000000",
+254 => x"00000000",
+255 => x"00000000",
+256 => x"83d93f80",
+257 => x"cbcf3f04",
+258 => x"10101010",
+259 => x"10101010",
+260 => x"10101010",
+261 => x"10101010",
+262 => x"10101010",
+263 => x"10101010",
+264 => x"10101010",
+265 => x"10101053",
+266 => x"51047381",
+267 => x"ff067383",
+268 => x"06098105",
+269 => x"83051010",
+270 => x"102b0772",
+271 => x"fc060c51",
+272 => x"51043c04",
+273 => x"72728072",
+274 => x"8106ff05",
+275 => x"09720605",
+276 => x"71105272",
+277 => x"0a100a53",
+278 => x"72ed3851",
+279 => x"51535104",
+280 => x"ff3d0d0b",
+281 => x"0b80f294",
+282 => x"08528412",
+283 => x"08708106",
+284 => x"515170f6",
+285 => x"38710881",
+286 => x"ff06800c",
+287 => x"833d0d04",
+288 => x"ff3d0d0b",
+289 => x"0b80f294",
+290 => x"08528412",
+291 => x"08700a10",
+292 => x"0a708106",
+293 => x"51515170",
+294 => x"f1387372",
+295 => x"0c833d0d",
+296 => x"0480e2a0",
+297 => x"08802ea8",
+298 => x"38838080",
+299 => x"0b0b0b80",
+300 => x"f2940c82",
+301 => x"a0800b0b",
+302 => x"0b80f298",
+303 => x"0c829080",
+304 => x"0b80f2a8",
+305 => x"0c0b0b80",
+306 => x"f29c0b80",
+307 => x"f2ac0c04",
+308 => x"f8808080",
+309 => x"a40b0b0b",
+310 => x"80f2940c",
+311 => x"f8808082",
+312 => x"800b0b0b",
+313 => x"80f2980c",
+314 => x"f8808084",
+315 => x"800b80f2",
+316 => x"a80cf880",
+317 => x"8080940b",
+318 => x"80f2ac0c",
+319 => x"f8808080",
+320 => x"9c0b80f2",
+321 => x"a40cf880",
+322 => x"8080a00b",
+323 => x"80f2b00c",
+324 => x"04f23d0d",
+325 => x"600b0b80",
+326 => x"f2980856",
+327 => x"5d82750c",
+328 => x"8059805a",
+329 => x"800b8f3d",
+330 => x"71101017",
+331 => x"70085957",
+332 => x"5d5b8076",
+333 => x"81ff067c",
+334 => x"832b5658",
+335 => x"5276537b",
+336 => x"519af33f",
+337 => x"7d7f7a72",
+338 => x"077c7207",
+339 => x"71716081",
+340 => x"05415f5d",
+341 => x"5b595755",
+342 => x"7a8724bb",
+343 => x"380b0b80",
+344 => x"f298087b",
+345 => x"10101170",
+346 => x"08585155",
+347 => x"807681ff",
+348 => x"067c832b",
+349 => x"56585276",
+350 => x"537b519a",
+351 => x"b93f7d7f",
+352 => x"7a72077c",
+353 => x"72077171",
+354 => x"60810541",
+355 => x"5f5d5b59",
+356 => x"5755877b",
+357 => x"25c73876",
+358 => x"7d0c7784",
+359 => x"1e0c7c80",
+360 => x"0c903d0d",
+361 => x"04ff3d0d",
+362 => x"80f2a033",
+363 => x"5170a738",
+364 => x"80e2ac08",
+365 => x"70085252",
+366 => x"70802e94",
+367 => x"38841280",
+368 => x"e2ac0c70",
+369 => x"2d80e2ac",
+370 => x"08700852",
+371 => x"5270ee38",
+372 => x"810b80f2",
+373 => x"a034833d",
+374 => x"0d040480",
+375 => x"3d0d0b0b",
+376 => x"80f29008",
+377 => x"802e8e38",
+378 => x"0b0b0b0b",
+379 => x"800b802e",
+380 => x"09810685",
+381 => x"38823d0d",
+382 => x"040b0b80",
+383 => x"f290510b",
+384 => x"0b0bf3fc",
+385 => x"3f823d0d",
+386 => x"0404ff3d",
+387 => x"0d028f05",
+388 => x"3352718a",
+389 => x"2e8a3871",
+390 => x"51fce53f",
+391 => x"833d0d04",
+392 => x"8d51fcdc",
+393 => x"3f7151fc",
+394 => x"d73f833d",
+395 => x"0d04ce3d",
+396 => x"0db53d70",
+397 => x"70840552",
+398 => x"088c8a5c",
+399 => x"56a53d5e",
+400 => x"5c807570",
+401 => x"81055733",
+402 => x"765b5558",
+403 => x"73782e80",
+404 => x"c1388e3d",
+405 => x"5b73a52e",
+406 => x"09810680",
+407 => x"c5387870",
+408 => x"81055a33",
+409 => x"547380e4",
+410 => x"2e81b638",
+411 => x"7380e424",
+412 => x"80c63873",
+413 => x"80e32ea1",
+414 => x"388052a5",
+415 => x"51792d80",
+416 => x"52735179",
+417 => x"2d821858",
+418 => x"78708105",
+419 => x"5a335473",
+420 => x"c4387780",
+421 => x"0cb43d0d",
+422 => x"047b841d",
+423 => x"83123356",
+424 => x"5d578052",
+425 => x"7351792d",
+426 => x"81187970",
+427 => x"81055b33",
+428 => x"555873ff",
+429 => x"a038db39",
+430 => x"7380f32e",
+431 => x"098106ff",
+432 => x"b8387b84",
+433 => x"1d710859",
+434 => x"5d568077",
+435 => x"33555673",
+436 => x"762e8d38",
+437 => x"81167018",
+438 => x"70335755",
+439 => x"5674f538",
+440 => x"ff165580",
+441 => x"7625ffa0",
+442 => x"38767081",
+443 => x"05583354",
+444 => x"80527351",
+445 => x"792d8118",
+446 => x"75ff1757",
+447 => x"57588076",
+448 => x"25ff8538",
+449 => x"76708105",
+450 => x"58335480",
+451 => x"52735179",
+452 => x"2d811875",
+453 => x"ff175757",
+454 => x"58758024",
+455 => x"cc38fee8",
+456 => x"397b841d",
+457 => x"71087071",
+458 => x"9f2c5953",
+459 => x"595d5680",
+460 => x"75248195",
+461 => x"38757d7c",
+462 => x"58565480",
+463 => x"5773772e",
+464 => x"098106b6",
+465 => x"38b07b34",
+466 => x"02b50556",
+467 => x"7a762e97",
+468 => x"38ff1656",
+469 => x"75337570",
+470 => x"81055734",
+471 => x"8117577a",
+472 => x"762e0981",
+473 => x"06eb3880",
+474 => x"7534767d",
+475 => x"ff125758",
+476 => x"56758024",
+477 => x"fef338fe",
+478 => x"8f398a52",
+479 => x"7351a0f0",
+480 => x"3f80080b",
+481 => x"0b80d484",
+482 => x"05337670",
+483 => x"81055834",
+484 => x"8a527351",
+485 => x"a0963f80",
+486 => x"08548008",
+487 => x"802effac",
+488 => x"388a5273",
+489 => x"51a0c93f",
+490 => x"80080b0b",
+491 => x"80d48405",
+492 => x"33767081",
+493 => x"0558348a",
+494 => x"5273519f",
+495 => x"ef3f8008",
+496 => x"548008ff",
+497 => x"b538ff84",
+498 => x"39745276",
+499 => x"53b43dff",
+500 => x"b8055195",
+501 => x"b63fa33d",
+502 => x"0856fed9",
+503 => x"39803d0d",
+504 => x"80c10b81",
+505 => x"c0f43480",
+506 => x"0b81c2d0",
+507 => x"0c70800c",
+508 => x"823d0d04",
+509 => x"ff3d0d80",
+510 => x"0b81c0f4",
+511 => x"33525270",
+512 => x"80c12e99",
+513 => x"387181c2",
+514 => x"d0080781",
+515 => x"c2d00c80",
+516 => x"c20b81c0",
+517 => x"f8347080",
+518 => x"0c833d0d",
+519 => x"04810b81",
+520 => x"c2d00807",
+521 => x"81c2d00c",
+522 => x"80c20b81",
+523 => x"c0f83470",
+524 => x"800c833d",
+525 => x"0d04fd3d",
+526 => x"0d757008",
+527 => x"8a055353",
+528 => x"81c0f433",
+529 => x"517080c1",
+530 => x"2e8b3873",
+531 => x"f3387080",
+532 => x"0c853d0d",
+533 => x"04ff1270",
+534 => x"81c0f008",
+535 => x"31740c80",
+536 => x"0c853d0d",
+537 => x"04fc3d0d",
+538 => x"81c0fc08",
+539 => x"5574802e",
+540 => x"8c387675",
+541 => x"08710c81",
+542 => x"c0fc0856",
+543 => x"548c1553",
+544 => x"81c0f008",
+545 => x"528a5190",
+546 => x"f03f7380",
+547 => x"0c863d0d",
+548 => x"04fb3d0d",
+549 => x"77700856",
+550 => x"56b05381",
+551 => x"c0fc0852",
+552 => x"7451acb4",
+553 => x"3f850b8c",
+554 => x"170c850b",
+555 => x"8c160c75",
+556 => x"08750c81",
+557 => x"c0fc0854",
+558 => x"73802e8a",
+559 => x"38730875",
+560 => x"0c81c0fc",
+561 => x"08548c14",
+562 => x"5381c0f0",
+563 => x"08528a51",
+564 => x"90a73f84",
+565 => x"1508ad38",
+566 => x"860b8c16",
+567 => x"0c881552",
+568 => x"88160851",
+569 => x"8fb33f81",
+570 => x"c0fc0870",
+571 => x"08760c54",
+572 => x"8c157054",
+573 => x"548a5273",
+574 => x"08518ffd",
+575 => x"3f73800c",
+576 => x"873d0d04",
+577 => x"750854b0",
+578 => x"53735275",
+579 => x"51abc93f",
+580 => x"73800c87",
+581 => x"3d0d04d9",
+582 => x"3d0db051",
+583 => x"9eeb3f80",
+584 => x"0881c0ec",
+585 => x"0cb0519e",
+586 => x"e03f8008",
+587 => x"81c0fc0c",
+588 => x"81c0ec08",
+589 => x"80080c80",
+590 => x"0b800884",
+591 => x"050c820b",
+592 => x"80088805",
+593 => x"0ca80b80",
+594 => x"088c050c",
+595 => x"9f530b0b",
+596 => x"80d49052",
+597 => x"80089005",
+598 => x"51aafd3f",
+599 => x"a13d5e9f",
+600 => x"530b0b80",
+601 => x"d4b0527d",
+602 => x"51aaed3f",
+603 => x"8a0b80ff",
+604 => x"b00c0b0b",
+605 => x"80ded451",
+606 => x"f9b43f0b",
+607 => x"0b80d4d0",
+608 => x"51f9ab3f",
+609 => x"0b0b80de",
+610 => x"d451f9a2",
+611 => x"3f80e2b4",
+612 => x"08802e8a",
+613 => x"cf380b0b",
+614 => x"80d58051",
+615 => x"f9903f0b",
+616 => x"0b80ded4",
+617 => x"51f9873f",
+618 => x"80e2b008",
+619 => x"520b0b80",
+620 => x"d5ac51f8",
+621 => x"f93f80f2",
+622 => x"cc51bbf8",
+623 => x"3f810b9a",
+624 => x"3d5e5b80",
+625 => x"0b80e2b0",
+626 => x"082582d6",
+627 => x"38903d5f",
+628 => x"80c10b81",
+629 => x"c0f43481",
+630 => x"0b81c2d0",
+631 => x"0c80c20b",
+632 => x"81c0f834",
+633 => x"8240835a",
+634 => x"9f530b0b",
+635 => x"80d5dc52",
+636 => x"7c51a9e4",
+637 => x"3f814180",
+638 => x"7d537e52",
+639 => x"568f9e3f",
+640 => x"8008762e",
+641 => x"09810683",
+642 => x"38815675",
+643 => x"81c2d00c",
+644 => x"7f705856",
+645 => x"758325a2",
+646 => x"38751010",
+647 => x"16fd0542",
+648 => x"a93dffa4",
+649 => x"05538352",
+650 => x"76518dcd",
+651 => x"3f7f8105",
+652 => x"70417058",
+653 => x"56837624",
+654 => x"e0386154",
+655 => x"755380f2",
+656 => x"d45281c1",
+657 => x"88518dc1",
+658 => x"3f81c0fc",
+659 => x"08700858",
+660 => x"58b05377",
+661 => x"527651a8",
+662 => x"ff3f850b",
+663 => x"8c190c85",
+664 => x"0b8c180c",
+665 => x"7708770c",
+666 => x"81c0fc08",
+667 => x"5675802e",
+668 => x"8a387508",
+669 => x"770c81c0",
+670 => x"fc08568c",
+671 => x"165381c0",
+672 => x"f008528a",
+673 => x"518cf23f",
+674 => x"84170888",
+675 => x"e038860b",
+676 => x"8c180c88",
+677 => x"17528818",
+678 => x"08518bfd",
+679 => x"3f81c0fc",
+680 => x"08700878",
+681 => x"0c568c17",
+682 => x"7054598a",
+683 => x"52780851",
+684 => x"8cc73f80",
+685 => x"c10b81c0",
+686 => x"f8335757",
+687 => x"767626a2",
+688 => x"3880c352",
+689 => x"76518dab",
+690 => x"3f800861",
+691 => x"2e8aec38",
+692 => x"81177081",
+693 => x"ff0681c0",
+694 => x"f8335858",
+695 => x"58757727",
+696 => x"e0387960",
+697 => x"29627054",
+698 => x"71535b59",
+699 => x"99be3f80",
+700 => x"0840787a",
+701 => x"31708729",
+702 => x"80083180",
+703 => x"088a0581",
+704 => x"c0f43381",
+705 => x"c0f0085e",
+706 => x"5b525a56",
+707 => x"7780c12e",
+708 => x"8ad8387b",
+709 => x"f738811b",
+710 => x"5b80e2b0",
+711 => x"087b25fd",
+712 => x"af3881c0",
+713 => x"e451b98c",
+714 => x"3f0b0b80",
+715 => x"d5fc51f5",
+716 => x"fd3f0b0b",
+717 => x"80ded451",
+718 => x"f5f43f0b",
+719 => x"0b80d68c",
+720 => x"51f5eb3f",
+721 => x"0b0b80de",
+722 => x"d451f5e2",
+723 => x"3f81c0f0",
+724 => x"08520b0b",
+725 => x"80d6c451",
+726 => x"f5d43f85",
+727 => x"520b0b80",
+728 => x"d6e051f5",
+729 => x"c93f81c2",
+730 => x"d008520b",
+731 => x"0b80d6fc",
+732 => x"51f5bb3f",
+733 => x"81520b0b",
+734 => x"80d6e051",
+735 => x"f5b03f81",
+736 => x"c0f43352",
+737 => x"0b0b80d7",
+738 => x"9851f5a2",
+739 => x"3f80c152",
+740 => x"0b0b80d7",
+741 => x"b451f596",
+742 => x"3f81c0f8",
+743 => x"33520b0b",
+744 => x"80d7d051",
+745 => x"f5883f80",
+746 => x"c2520b0b",
+747 => x"80d7b451",
+748 => x"f4fc3f81",
+749 => x"c1a80852",
+750 => x"0b0b80d7",
+751 => x"ec51f4ee",
+752 => x"3f87520b",
+753 => x"0b80d6e0",
+754 => x"51f4e33f",
+755 => x"80ffb008",
+756 => x"520b0b80",
+757 => x"d88851f4",
+758 => x"d53f0b0b",
+759 => x"80d8a451",
+760 => x"f4cc3f0b",
+761 => x"0b80d8d0",
+762 => x"51f4c33f",
+763 => x"81c0fc08",
+764 => x"7008535a",
+765 => x"0b0b80d8",
+766 => x"dc51f4b2",
+767 => x"3f0b0b80",
+768 => x"d8f851f4",
+769 => x"a93f81c0",
+770 => x"fc088411",
+771 => x"0853560b",
+772 => x"0b80d9ac",
+773 => x"51f4973f",
+774 => x"80520b0b",
+775 => x"80d6e051",
+776 => x"f48c3f81",
+777 => x"c0fc0888",
+778 => x"11085358",
+779 => x"0b0b80d9",
+780 => x"c851f3fa",
+781 => x"3f82520b",
+782 => x"0b80d6e0",
+783 => x"51f3ef3f",
+784 => x"81c0fc08",
+785 => x"8c110853",
+786 => x"570b0b80",
+787 => x"d9e451f3",
+788 => x"dd3f9152",
+789 => x"0b0b80d6",
+790 => x"e051f3d2",
+791 => x"3f81c0fc",
+792 => x"08900552",
+793 => x"0b0b80da",
+794 => x"8051f3c2",
+795 => x"3f0b0b80",
+796 => x"da9c51f3",
+797 => x"b93f0b0b",
+798 => x"80dad451",
+799 => x"f3b03f81",
+800 => x"c0ec0870",
+801 => x"08535f0b",
+802 => x"0b80d8dc",
+803 => x"51f39f3f",
+804 => x"0b0b80da",
+805 => x"e851f396",
+806 => x"3f81c0ec",
+807 => x"08841108",
+808 => x"535b0b0b",
+809 => x"80d9ac51",
+810 => x"f3843f80",
+811 => x"520b0b80",
+812 => x"d6e051f2",
+813 => x"f93f81c0",
+814 => x"ec088811",
+815 => x"08535c0b",
+816 => x"0b80d9c8",
+817 => x"51f2e73f",
+818 => x"81520b0b",
+819 => x"80d6e051",
+820 => x"f2dc3f81",
+821 => x"c0ec088c",
+822 => x"1108535a",
+823 => x"0b0b80d9",
+824 => x"e451f2ca",
+825 => x"3f92520b",
+826 => x"0b80d6e0",
+827 => x"51f2bf3f",
+828 => x"81c0ec08",
+829 => x"9005520b",
+830 => x"0b80da80",
+831 => x"51f2af3f",
+832 => x"0b0b80da",
+833 => x"9c51f2a6",
+834 => x"3f7f520b",
+835 => x"0b80dba8",
+836 => x"51f29b3f",
+837 => x"85520b0b",
+838 => x"80d6e051",
+839 => x"f2903f78",
+840 => x"520b0b80",
+841 => x"dbc451f2",
+842 => x"853f8d52",
+843 => x"0b0b80d6",
+844 => x"e051f1fa",
+845 => x"3f61520b",
+846 => x"0b80dbe0",
+847 => x"51f1ef3f",
+848 => x"87520b0b",
+849 => x"80d6e051",
+850 => x"f1e43f60",
+851 => x"520b0b80",
+852 => x"dbfc51f1",
+853 => x"d93f8152",
+854 => x"0b0b80d6",
+855 => x"e051f1ce",
+856 => x"3f7d520b",
+857 => x"0b80dc98",
+858 => x"51f1c33f",
+859 => x"0b0b80dc",
+860 => x"b451f1ba",
+861 => x"3f7c520b",
+862 => x"0b80dcec",
+863 => x"51f1af3f",
+864 => x"0b0b80dd",
+865 => x"8851f1a6",
+866 => x"3f0b0b80",
+867 => x"ded451f1",
+868 => x"9d3f81c0",
+869 => x"e40881c0",
+870 => x"e80880f2",
+871 => x"cc0880f2",
+872 => x"d0087271",
+873 => x"31707426",
+874 => x"75743170",
+875 => x"723180f2",
+876 => x"c40c4444",
+877 => x"80f2c80c",
+878 => x"80f2c808",
+879 => x"560b0b80",
+880 => x"ddc0555c",
+881 => x"595758f0",
+882 => x"e53f80f2",
+883 => x"c4085680",
+884 => x"762582b1",
+885 => x"3880e2b0",
+886 => x"0870719f",
+887 => x"2c9a3d53",
+888 => x"565680f2",
+889 => x"c40880f2",
+890 => x"c8084153",
+891 => x"7f547052",
+892 => x"5a8a8d3f",
+893 => x"66685f80",
+894 => x"f2b40c7d",
+895 => x"80f2b80c",
+896 => x"80e2b008",
+897 => x"709f2c58",
+898 => x"568058bd",
+899 => x"84c07855",
+900 => x"55765275",
+901 => x"53795187",
+902 => x"f33f953d",
+903 => x"80f2c408",
+904 => x"80f2c808",
+905 => x"41557f56",
+906 => x"67694053",
+907 => x"7e547052",
+908 => x"5c89cd3f",
+909 => x"64665e80",
+910 => x"f2bc0c7c",
+911 => x"80f2c00c",
+912 => x"80e2b008",
+913 => x"709f2c40",
+914 => x"58805783",
+915 => x"dceb9480",
+916 => x"7755557e",
+917 => x"5277537b",
+918 => x"5187b13f",
+919 => x"64665d5b",
+920 => x"805e8ddd",
+921 => x"7e555580",
+922 => x"f2c40880",
+923 => x"f2c80859",
+924 => x"52775379",
+925 => x"5187953f",
+926 => x"66684054",
+927 => x"7e557a52",
+928 => x"7b53a93d",
+929 => x"ffa80551",
+930 => x"88f63f62",
+931 => x"645e81c1",
+932 => x"800c7c81",
+933 => x"c1840c0b",
+934 => x"0b80ddd0",
+935 => x"51ef8f3f",
+936 => x"80f2b808",
+937 => x"520b0b80",
+938 => x"de8051ef",
+939 => x"813f0b0b",
+940 => x"80de8851",
+941 => x"eef83f80",
+942 => x"f2c00852",
+943 => x"0b0b80de",
+944 => x"8051eeea",
+945 => x"3f81c184",
+946 => x"08520b0b",
+947 => x"80deb851",
+948 => x"eedc3f0b",
+949 => x"0b80ded4",
+950 => x"51eed33f",
+951 => x"800b800c",
+952 => x"a93d0d04",
+953 => x"0b0b80de",
+954 => x"d851f5b0",
+955 => x"39770857",
+956 => x"b0537652",
+957 => x"77519fe0",
+958 => x"3f80c10b",
+959 => x"81c0f833",
+960 => x"5757f7b8",
+961 => x"39758a38",
+962 => x"80f2c808",
+963 => x"8126fdc5",
+964 => x"380b0b80",
+965 => x"df8851ee",
+966 => x"953f0b0b",
+967 => x"80dfc051",
+968 => x"ee8c3f0b",
+969 => x"0b80ded4",
+970 => x"51ee833f",
+971 => x"80e2b008",
+972 => x"70719f2c",
+973 => x"9a3d5356",
+974 => x"5680f2c4",
+975 => x"0880f2c8",
+976 => x"0841537f",
+977 => x"5470525a",
+978 => x"87b63f66",
+979 => x"685f80f2",
+980 => x"b40c7d80",
+981 => x"f2b80c80",
+982 => x"e2b00870",
+983 => x"9f2c5856",
+984 => x"8058bd84",
+985 => x"c0785555",
+986 => x"76527553",
+987 => x"7951859c",
+988 => x"3f953d80",
+989 => x"f2c40880",
+990 => x"f2c80841",
+991 => x"557f5667",
+992 => x"6940537e",
+993 => x"5470525c",
+994 => x"86f63f64",
+995 => x"665e80f2",
+996 => x"bc0c7c80",
+997 => x"f2c00c80",
+998 => x"e2b00870",
+999 => x"9f2c4058",
+1000 => x"805783dc",
+1001 => x"eb948077",
+1002 => x"55557e52",
+1003 => x"77537b51",
+1004 => x"84da3f64",
+1005 => x"665d5b80",
+1006 => x"5e8ddd7e",
+1007 => x"555580f2",
+1008 => x"c40880f2",
+1009 => x"c8085952",
+1010 => x"77537951",
+1011 => x"84be3f66",
+1012 => x"6840547e",
+1013 => x"557a527b",
+1014 => x"53a93dff",
+1015 => x"a8055186",
+1016 => x"9f3f6264",
+1017 => x"5e81c180",
+1018 => x"0c7c81c1",
+1019 => x"840c0b0b",
+1020 => x"80ddd051",
+1021 => x"ecb83f80",
+1022 => x"f2b80852",
+1023 => x"0b0b80de",
+1024 => x"8051ecaa",
+1025 => x"3f0b0b80",
+1026 => x"de8851ec",
+1027 => x"a13f80f2",
+1028 => x"c008520b",
+1029 => x"0b80de80",
+1030 => x"51ec933f",
+1031 => x"81c18408",
+1032 => x"520b0b80",
+1033 => x"deb851ec",
+1034 => x"853f0b0b",
+1035 => x"80ded451",
+1036 => x"ebfc3f80",
+1037 => x"0b800ca9",
+1038 => x"3d0d04a9",
+1039 => x"3dffa005",
+1040 => x"52805180",
+1041 => x"d43f9f53",
+1042 => x"0b0b80df",
+1043 => x"e0527c51",
+1044 => x"9d863f7a",
+1045 => x"7b81c0f0",
+1046 => x"0c811870",
+1047 => x"81ff0681",
+1048 => x"c0f83359",
+1049 => x"59595af4",
+1050 => x"f439ff16",
+1051 => x"707b3160",
+1052 => x"0c5c800b",
+1053 => x"811c5c5c",
+1054 => x"80e2b008",
+1055 => x"7b25f2d0",
+1056 => x"38f59f39",
+1057 => x"ff3d0d73",
+1058 => x"82327030",
+1059 => x"70720780",
+1060 => x"25800c52",
+1061 => x"52833d0d",
+1062 => x"04fe3d0d",
+1063 => x"74767153",
+1064 => x"54527182",
+1065 => x"2e833883",
+1066 => x"5171812e",
+1067 => x"9a388172",
+1068 => x"269f3871",
+1069 => x"822eb838",
+1070 => x"71842ea9",
+1071 => x"3870730c",
+1072 => x"70800c84",
+1073 => x"3d0d0480",
+1074 => x"e40b81c0",
+1075 => x"f008258b",
+1076 => x"3880730c",
+1077 => x"70800c84",
+1078 => x"3d0d0483",
+1079 => x"730c7080",
+1080 => x"0c843d0d",
+1081 => x"0482730c",
+1082 => x"70800c84",
+1083 => x"3d0d0481",
+1084 => x"730c7080",
+1085 => x"0c843d0d",
+1086 => x"04803d0d",
+1087 => x"74741482",
+1088 => x"05710c80",
+1089 => x"0c823d0d",
+1090 => x"04f73d0d",
+1091 => x"7b7d7f61",
+1092 => x"85127082",
+1093 => x"2b751170",
+1094 => x"74717084",
+1095 => x"05530c5a",
+1096 => x"5a5d5b76",
+1097 => x"0c7980f8",
+1098 => x"180c7986",
+1099 => x"12525758",
+1100 => x"5a5a7676",
+1101 => x"24993876",
+1102 => x"b329822b",
+1103 => x"79115153",
+1104 => x"76737084",
+1105 => x"05550c81",
+1106 => x"14547574",
+1107 => x"25f23876",
+1108 => x"81cc2919",
+1109 => x"fc110881",
+1110 => x"05fc120c",
+1111 => x"7a197008",
+1112 => x"9fa0130c",
+1113 => x"5856850b",
+1114 => x"81c0f00c",
+1115 => x"75800c8b",
+1116 => x"3d0d04fe",
+1117 => x"3d0d0293",
+1118 => x"05335180",
+1119 => x"02840597",
+1120 => x"05335452",
+1121 => x"70732e88",
+1122 => x"3871800c",
+1123 => x"843d0d04",
+1124 => x"7081c0f4",
+1125 => x"34810b80",
+1126 => x"0c843d0d",
+1127 => x"04f83d0d",
+1128 => x"7a7c5956",
+1129 => x"820b8319",
+1130 => x"55557416",
+1131 => x"70337533",
+1132 => x"5b515372",
+1133 => x"792e80c6",
+1134 => x"3880c10b",
+1135 => x"81168116",
+1136 => x"56565782",
+1137 => x"7525e338",
+1138 => x"ffa91770",
+1139 => x"81ff0655",
+1140 => x"59738226",
+1141 => x"83388755",
+1142 => x"81537680",
+1143 => x"d22e9838",
+1144 => x"77527551",
+1145 => x"9bc43f80",
+1146 => x"53728008",
+1147 => x"25893887",
+1148 => x"1581c0f0",
+1149 => x"0c815372",
+1150 => x"800c8a3d",
+1151 => x"0d047281",
+1152 => x"c0f43482",
+1153 => x"7525ffa2",
+1154 => x"38ffbd39",
+1155 => x"ef3d0d63",
+1156 => x"65675b42",
+1157 => x"79436769",
+1158 => x"59407741",
+1159 => x"5a805d80",
+1160 => x"5e617083",
+1161 => x"ffff0671",
+1162 => x"902a6270",
+1163 => x"83ffff06",
+1164 => x"71902a74",
+1165 => x"72297473",
+1166 => x"29757329",
+1167 => x"77742973",
+1168 => x"902a0572",
+1169 => x"11515856",
+1170 => x"535f5a57",
+1171 => x"5a585558",
+1172 => x"73732786",
+1173 => x"38848080",
+1174 => x"16567390",
+1175 => x"2a165b78",
+1176 => x"83ffff06",
+1177 => x"74848080",
+1178 => x"29055c7a",
+1179 => x"7c5a5d78",
+1180 => x"5e777f29",
+1181 => x"61782905",
+1182 => x"7d055d7c",
+1183 => x"7e567a0c",
+1184 => x"74841b0c",
+1185 => x"79800c93",
+1186 => x"3d0d04f9",
+1187 => x"3d0d797b",
+1188 => x"7d545872",
+1189 => x"59773079",
+1190 => x"70307072",
+1191 => x"079f2a73",
+1192 => x"71315a52",
+1193 => x"59777956",
+1194 => x"730c5373",
+1195 => x"84130c54",
+1196 => x"800c893d",
+1197 => x"0d04f93d",
+1198 => x"0d797b7d",
+1199 => x"7f565452",
+1200 => x"5472802e",
+1201 => x"a0387057",
+1202 => x"7158a073",
+1203 => x"31528072",
+1204 => x"25a13877",
+1205 => x"70742b57",
+1206 => x"70732a78",
+1207 => x"752b0756",
+1208 => x"51747653",
+1209 => x"5170740c",
+1210 => x"7184150c",
+1211 => x"73800c89",
+1212 => x"3d0d0480",
+1213 => x"56777230",
+1214 => x"2b557476",
+1215 => x"5351e639",
+1216 => x"e43d0d6e",
+1217 => x"a13d08a3",
+1218 => x"3d085957",
+1219 => x"5f80764d",
+1220 => x"774ea33d",
+1221 => x"08a53d08",
+1222 => x"574b754c",
+1223 => x"5e7d6c24",
+1224 => x"86fb3880",
+1225 => x"6a24878f",
+1226 => x"38696b58",
+1227 => x"566b6d5d",
+1228 => x"467b4775",
+1229 => x"44764564",
+1230 => x"6468685c",
+1231 => x"5c565674",
+1232 => x"81e73878",
+1233 => x"762782c7",
+1234 => x"387581ff",
+1235 => x"26832b55",
+1236 => x"83ffff76",
+1237 => x"278c3890",
+1238 => x"55fe800a",
+1239 => x"76278338",
+1240 => x"98557575",
+1241 => x"2a80e080",
+1242 => x"057033a0",
+1243 => x"77317131",
+1244 => x"57555774",
+1245 => x"802e9538",
+1246 => x"75752ba0",
+1247 => x"76317a77",
+1248 => x"2b7c722a",
+1249 => x"077c782b",
+1250 => x"5d5b5956",
+1251 => x"75902a76",
+1252 => x"83ffff06",
+1253 => x"71547a53",
+1254 => x"59578880",
+1255 => x"3f80085b",
+1256 => x"87ea3f80",
+1257 => x"08800879",
+1258 => x"297c902b",
+1259 => x"7c902a07",
+1260 => x"56565973",
+1261 => x"75279438",
+1262 => x"8008ff05",
+1263 => x"76155559",
+1264 => x"75742687",
+1265 => x"38747426",
+1266 => x"87b93876",
+1267 => x"52737531",
+1268 => x"5187c93f",
+1269 => x"80085587",
+1270 => x"b33f8008",
+1271 => x"80087929",
+1272 => x"7b83ffff",
+1273 => x"0677902b",
+1274 => x"07565957",
+1275 => x"73782796",
+1276 => x"388008ff",
+1277 => x"05761555",
+1278 => x"57757426",
+1279 => x"89387774",
+1280 => x"26777131",
+1281 => x"58567890",
+1282 => x"2b770758",
+1283 => x"805b7a40",
+1284 => x"77417f61",
+1285 => x"56547d80",
+1286 => x"d938737f",
+1287 => x"0c747f84",
+1288 => x"050c7e80",
+1289 => x"0c9e3d0d",
+1290 => x"0480705c",
+1291 => x"58747926",
+1292 => x"dd387481",
+1293 => x"ff26832b",
+1294 => x"577483ff",
+1295 => x"ff2682a5",
+1296 => x"3874772a",
+1297 => x"80e08005",
+1298 => x"7033a079",
+1299 => x"31713159",
+1300 => x"5c5d7682",
+1301 => x"b3387654",
+1302 => x"74792783",
+1303 => x"38815479",
+1304 => x"76277407",
+1305 => x"59815878",
+1306 => x"ffa23876",
+1307 => x"58805bff",
+1308 => x"9d397352",
+1309 => x"74539e3d",
+1310 => x"e80551fc",
+1311 => x"8e3f6769",
+1312 => x"567f0c74",
+1313 => x"7f84050c",
+1314 => x"7e800c9e",
+1315 => x"3d0d0475",
+1316 => x"802e81c4",
+1317 => x"387581ff",
+1318 => x"26832b55",
+1319 => x"83ffff76",
+1320 => x"278c3890",
+1321 => x"55fe800a",
+1322 => x"76278338",
+1323 => x"98557575",
+1324 => x"2a80e080",
+1325 => x"057033a0",
+1326 => x"77317131",
+1327 => x"575e5474",
+1328 => x"84913878",
+1329 => x"76315481",
+1330 => x"76902a77",
+1331 => x"83ffff06",
+1332 => x"5f5d5b7b",
+1333 => x"52735185",
+1334 => x"c33f8008",
+1335 => x"5785ad3f",
+1336 => x"80088008",
+1337 => x"7e297890",
+1338 => x"2b7c902a",
+1339 => x"07565659",
+1340 => x"73752794",
+1341 => x"388008ff",
+1342 => x"05761555",
+1343 => x"59757426",
+1344 => x"87387474",
+1345 => x"2684f338",
+1346 => x"7b527375",
+1347 => x"3151858c",
+1348 => x"3f800855",
+1349 => x"84f63f80",
+1350 => x"0880087e",
+1351 => x"297b83ff",
+1352 => x"ff067790",
+1353 => x"2b075659",
+1354 => x"57737827",
+1355 => x"96388008",
+1356 => x"ff057615",
+1357 => x"55577574",
+1358 => x"26893877",
+1359 => x"74267771",
+1360 => x"31585a78",
+1361 => x"902b7707",
+1362 => x"7b41417f",
+1363 => x"6156547d",
+1364 => x"802efdc6",
+1365 => x"38fe9b39",
+1366 => x"75528151",
+1367 => x"84ae3f80",
+1368 => x"0856feb1",
+1369 => x"399057fe",
+1370 => x"800a7527",
+1371 => x"fdd33898",
+1372 => x"75712a80",
+1373 => x"e0800570",
+1374 => x"33a07331",
+1375 => x"7131535d",
+1376 => x"5e577680",
+1377 => x"2efdcf38",
+1378 => x"a0773175",
+1379 => x"782b7772",
+1380 => x"2a077779",
+1381 => x"2b7b7a2b",
+1382 => x"7d742a07",
+1383 => x"7d7b2b73",
+1384 => x"902a7483",
+1385 => x"ffff0671",
+1386 => x"597f772a",
+1387 => x"585e5c41",
+1388 => x"5f585c54",
+1389 => x"83e63f80",
+1390 => x"085483d0",
+1391 => x"3f800880",
+1392 => x"08792975",
+1393 => x"902b7e90",
+1394 => x"2a075656",
+1395 => x"59737527",
+1396 => x"99388008",
+1397 => x"ff057b15",
+1398 => x"55597a74",
+1399 => x"268c3873",
+1400 => x"75278738",
+1401 => x"ff197b15",
+1402 => x"55597652",
+1403 => x"73753151",
+1404 => x"83aa3f80",
+1405 => x"08558394",
+1406 => x"3f800880",
+1407 => x"0879297d",
+1408 => x"83ffff06",
+1409 => x"77902b07",
+1410 => x"56595773",
+1411 => x"78279938",
+1412 => x"8008ff05",
+1413 => x"7b155557",
+1414 => x"7a74268c",
+1415 => x"38737827",
+1416 => x"8738ff17",
+1417 => x"7b155557",
+1418 => x"73783179",
+1419 => x"902b7807",
+1420 => x"7083ffff",
+1421 => x"0671902a",
+1422 => x"7983ffff",
+1423 => x"067a902a",
+1424 => x"73722973",
+1425 => x"73297473",
+1426 => x"29767429",
+1427 => x"73902a05",
+1428 => x"72055755",
+1429 => x"435f5b58",
+1430 => x"5a57595a",
+1431 => x"747c2786",
+1432 => x"38848080",
+1433 => x"17577490",
+1434 => x"2a177983",
+1435 => x"ffff0676",
+1436 => x"84808029",
+1437 => x"05575776",
+1438 => x"7a269a38",
+1439 => x"767a3270",
+1440 => x"30707207",
+1441 => x"8025565a",
+1442 => x"5b7c7627",
+1443 => x"fafe3873",
+1444 => x"802efaf8",
+1445 => x"38ff1858",
+1446 => x"805bfaf2",
+1447 => x"39ff7653",
+1448 => x"77549f3d",
+1449 => x"e805525e",
+1450 => x"f7e13f67",
+1451 => x"69574c75",
+1452 => x"4d698025",
+1453 => x"f8f3387d",
+1454 => x"096a6c5c",
+1455 => x"537a549f",
+1456 => x"3de80552",
+1457 => x"5ef7c43f",
+1458 => x"6769714c",
+1459 => x"704d5856",
+1460 => x"f8db39a0",
+1461 => x"75317676",
+1462 => x"2b7a772b",
+1463 => x"7c732a07",
+1464 => x"7c782b72",
+1465 => x"902a7383",
+1466 => x"ffff0671",
+1467 => x"587e762a",
+1468 => x"5742405d",
+1469 => x"5d575881",
+1470 => x"a33f8008",
+1471 => x"57818d3f",
+1472 => x"80088008",
+1473 => x"7e297890",
+1474 => x"2b7d902a",
+1475 => x"07565659",
+1476 => x"73752799",
+1477 => x"388008ff",
+1478 => x"05761555",
+1479 => x"59757426",
+1480 => x"8c387375",
+1481 => x"278738ff",
+1482 => x"19761555",
+1483 => x"597b5273",
+1484 => x"75315180",
+1485 => x"e73f8008",
+1486 => x"5580d13f",
+1487 => x"80088008",
+1488 => x"7e297c83",
+1489 => x"ffff0670",
+1490 => x"78902b07",
+1491 => x"51565858",
+1492 => x"73772799",
+1493 => x"388008ff",
+1494 => x"05761555",
+1495 => x"58757426",
+1496 => x"8c387377",
+1497 => x"278738ff",
+1498 => x"18761555",
+1499 => x"5878902b",
+1500 => x"78077478",
+1501 => x"31555bfa",
+1502 => x"da39ff19",
+1503 => x"76155559",
+1504 => x"fb8639ff",
+1505 => x"19761555",
+1506 => x"59f8c039",
+1507 => x"fe3d0d80",
+1508 => x"53755274",
+1509 => x"5181913f",
+1510 => x"843d0d04",
+1511 => x"fe3d0d81",
+1512 => x"53755274",
+1513 => x"5181813f",
+1514 => x"843d0d04",
+1515 => x"fb3d0d77",
+1516 => x"79555580",
+1517 => x"56757524",
+1518 => x"ab388074",
+1519 => x"249d3880",
+1520 => x"53735274",
+1521 => x"5180e13f",
+1522 => x"80085475",
+1523 => x"802e8538",
+1524 => x"80083054",
+1525 => x"73800c87",
+1526 => x"3d0d0473",
+1527 => x"30768132",
+1528 => x"5754dc39",
+1529 => x"74305581",
+1530 => x"56738025",
+1531 => x"d238ec39",
+1532 => x"fa3d0d78",
+1533 => x"7a575580",
+1534 => x"57767524",
+1535 => x"a438759f",
+1536 => x"2c548153",
+1537 => x"75743274",
+1538 => x"31527451",
+1539 => x"9b3f8008",
+1540 => x"5476802e",
+1541 => x"85388008",
+1542 => x"30547380",
+1543 => x"0c883d0d",
+1544 => x"04743055",
+1545 => x"8157d739",
+1546 => x"fc3d0d76",
+1547 => x"78535481",
+1548 => x"53807473",
+1549 => x"26525572",
+1550 => x"802e9838",
+1551 => x"70802eab",
+1552 => x"38807224",
+1553 => x"a6387110",
+1554 => x"73107572",
+1555 => x"26535452",
+1556 => x"72ea3873",
+1557 => x"51788338",
+1558 => x"74517080",
+1559 => x"0c863d0d",
+1560 => x"04720a10",
+1561 => x"0a720a10",
+1562 => x"0a535372",
+1563 => x"802ee438",
+1564 => x"717426ed",
+1565 => x"38737231",
+1566 => x"75740774",
+1567 => x"0a100a74",
+1568 => x"0a100a55",
+1569 => x"555654e3",
+1570 => x"39ff3d0d",
+1571 => x"735280ea",
+1572 => x"fc085196",
+1573 => x"3f833d0d",
+1574 => x"04ff3d0d",
+1575 => x"735280ea",
+1576 => x"fc085190",
+1577 => x"cc3f833d",
+1578 => x"0d04f43d",
+1579 => x"0d7e608b",
+1580 => x"1170f806",
+1581 => x"5b55555d",
+1582 => x"72962683",
+1583 => x"38905880",
+1584 => x"78247479",
+1585 => x"26075580",
+1586 => x"5474742e",
+1587 => x"09810680",
+1588 => x"ca387c51",
+1589 => x"8d9e3f77",
+1590 => x"83f72680",
+1591 => x"c5387783",
+1592 => x"2a701010",
+1593 => x"1080e2f4",
+1594 => x"058c1108",
+1595 => x"58585475",
+1596 => x"772e81f0",
+1597 => x"38841608",
+1598 => x"fc068c17",
+1599 => x"08881808",
+1600 => x"718c120c",
+1601 => x"88120c5b",
+1602 => x"76058411",
+1603 => x"08810784",
+1604 => x"120c537c",
+1605 => x"518cde3f",
+1606 => x"88165473",
+1607 => x"800c8e3d",
+1608 => x"0d047789",
+1609 => x"2a78832a",
+1610 => x"58547380",
+1611 => x"2ebf3877",
+1612 => x"862ab805",
+1613 => x"57847427",
+1614 => x"b43880db",
+1615 => x"14579474",
+1616 => x"27ab3877",
+1617 => x"8c2a80ee",
+1618 => x"055780d4",
+1619 => x"74279e38",
+1620 => x"778f2a80",
+1621 => x"f7055782",
+1622 => x"d4742791",
+1623 => x"3877922a",
+1624 => x"80fc0557",
+1625 => x"8ad47427",
+1626 => x"843880fe",
+1627 => x"57761010",
+1628 => x"1080e2f4",
+1629 => x"058c1108",
+1630 => x"56537473",
+1631 => x"2ea33884",
+1632 => x"1508fc06",
+1633 => x"70793155",
+1634 => x"56738f24",
+1635 => x"88e43873",
+1636 => x"802588e6",
+1637 => x"388c1508",
+1638 => x"5574732e",
+1639 => x"098106df",
+1640 => x"38811759",
+1641 => x"80e38408",
+1642 => x"567580e2",
+1643 => x"fc2e82cc",
+1644 => x"38841608",
+1645 => x"fc067079",
+1646 => x"31555573",
+1647 => x"8f24bb38",
+1648 => x"80e2fc0b",
+1649 => x"80e3880c",
+1650 => x"80e2fc0b",
+1651 => x"80e3840c",
+1652 => x"80742480",
+1653 => x"db387416",
+1654 => x"84110881",
+1655 => x"0784120c",
+1656 => x"53feb039",
+1657 => x"88168c11",
+1658 => x"08575975",
+1659 => x"792e0981",
+1660 => x"06fe8238",
+1661 => x"821459ff",
+1662 => x"ab397716",
+1663 => x"78810784",
+1664 => x"180c7080",
+1665 => x"e3880c70",
+1666 => x"80e3840c",
+1667 => x"80e2fc0b",
+1668 => x"8c120c8c",
+1669 => x"11088812",
+1670 => x"0c748107",
+1671 => x"84120c74",
+1672 => x"0574710c",
+1673 => x"5b7c518a",
+1674 => x"cc3f8816",
+1675 => x"54fdec39",
+1676 => x"83ff7527",
+1677 => x"83913874",
+1678 => x"892a7583",
+1679 => x"2a545473",
+1680 => x"802ebf38",
+1681 => x"74862ab8",
+1682 => x"05538474",
+1683 => x"27b43880",
+1684 => x"db145394",
+1685 => x"7427ab38",
+1686 => x"748c2a80",
+1687 => x"ee055380",
+1688 => x"d474279e",
+1689 => x"38748f2a",
+1690 => x"80f70553",
+1691 => x"82d47427",
+1692 => x"91387492",
+1693 => x"2a80fc05",
+1694 => x"538ad474",
+1695 => x"27843880",
+1696 => x"fe537210",
+1697 => x"101080e2",
+1698 => x"f4058811",
+1699 => x"08555773",
+1700 => x"772e868b",
+1701 => x"38841408",
+1702 => x"fc065b74",
+1703 => x"7b278d38",
+1704 => x"88140854",
+1705 => x"73772e09",
+1706 => x"8106ea38",
+1707 => x"8c140880",
+1708 => x"e2f40b84",
+1709 => x"0508718c",
+1710 => x"190c7588",
+1711 => x"190c7788",
+1712 => x"130c5c57",
+1713 => x"758c150c",
+1714 => x"78538079",
+1715 => x"24839838",
+1716 => x"72822c81",
+1717 => x"712b5656",
+1718 => x"747b2680",
+1719 => x"ca387a75",
+1720 => x"06577682",
+1721 => x"a33878fc",
+1722 => x"06840559",
+1723 => x"7410707c",
+1724 => x"06555573",
+1725 => x"82923884",
+1726 => x"1959f139",
+1727 => x"80e2f40b",
+1728 => x"84050879",
+1729 => x"545b7880",
+1730 => x"25c63882",
+1731 => x"da397409",
+1732 => x"7b067080",
+1733 => x"e2f40b84",
+1734 => x"050c5b74",
+1735 => x"1055747b",
+1736 => x"26853874",
+1737 => x"85bc3880",
+1738 => x"e2f40b88",
+1739 => x"05087084",
+1740 => x"1208fc06",
+1741 => x"707b317b",
+1742 => x"72268f72",
+1743 => x"25075d57",
+1744 => x"5c5c5578",
+1745 => x"802e80d9",
+1746 => x"38791580",
+1747 => x"e2ec0819",
+1748 => x"90115954",
+1749 => x"5680e2e8",
+1750 => x"08ff2e88",
+1751 => x"38a08f13",
+1752 => x"e0800657",
+1753 => x"76527c51",
+1754 => x"888c3f80",
+1755 => x"08548008",
+1756 => x"ff2e9038",
+1757 => x"80087627",
+1758 => x"82a73874",
+1759 => x"80e2f42e",
+1760 => x"829f3880",
+1761 => x"e2f40b88",
+1762 => x"05085584",
+1763 => x"1508fc06",
+1764 => x"70793179",
+1765 => x"72268f72",
+1766 => x"25075d55",
+1767 => x"5a7a83f2",
+1768 => x"38778107",
+1769 => x"84160c77",
+1770 => x"157080e2",
+1771 => x"f40b8805",
+1772 => x"0c748107",
+1773 => x"84120c56",
+1774 => x"7c5187b9",
+1775 => x"3f881554",
+1776 => x"73800c8e",
+1777 => x"3d0d0474",
+1778 => x"832a7054",
+1779 => x"54807424",
+1780 => x"819b3872",
+1781 => x"822c8171",
+1782 => x"2b80e2f8",
+1783 => x"08077080",
+1784 => x"e2f40b84",
+1785 => x"050c7510",
+1786 => x"101080e2",
+1787 => x"f4058811",
+1788 => x"08718c1b",
+1789 => x"0c70881b",
+1790 => x"0c798813",
+1791 => x"0c57555c",
+1792 => x"55758c15",
+1793 => x"0cfdc139",
+1794 => x"78791010",
+1795 => x"1080e2f4",
+1796 => x"0570565b",
+1797 => x"5c8c1408",
+1798 => x"5675742e",
+1799 => x"a3388416",
+1800 => x"08fc0670",
+1801 => x"79315853",
+1802 => x"768f2483",
+1803 => x"f1387680",
+1804 => x"2584af38",
+1805 => x"8c160856",
+1806 => x"75742e09",
+1807 => x"8106df38",
+1808 => x"8814811a",
+1809 => x"70830655",
+1810 => x"5a5472c9",
+1811 => x"387b8306",
+1812 => x"5675802e",
+1813 => x"fdb838ff",
+1814 => x"1cf81b5b",
+1815 => x"5c881a08",
+1816 => x"7a2eea38",
+1817 => x"fdb53983",
+1818 => x"1953fce4",
+1819 => x"39831470",
+1820 => x"822c8171",
+1821 => x"2b80e2f8",
+1822 => x"08077080",
+1823 => x"e2f40b84",
+1824 => x"050c7610",
+1825 => x"101080e2",
+1826 => x"f4058811",
+1827 => x"08718c1c",
+1828 => x"0c70881c",
+1829 => x"0c7a8813",
+1830 => x"0c58535d",
+1831 => x"5653fee1",
+1832 => x"3980e2b8",
+1833 => x"08175980",
+1834 => x"08762e81",
+1835 => x"8b3880e2",
+1836 => x"e808ff2e",
+1837 => x"848e3873",
+1838 => x"76311980",
+1839 => x"e2b80c73",
+1840 => x"87067056",
+1841 => x"5372802e",
+1842 => x"88388873",
+1843 => x"31701555",
+1844 => x"5576149f",
+1845 => x"ff06a080",
+1846 => x"71311670",
+1847 => x"547e5351",
+1848 => x"5385933f",
+1849 => x"80085680",
+1850 => x"08ff2e81",
+1851 => x"9e3880e2",
+1852 => x"b8081370",
+1853 => x"80e2b80c",
+1854 => x"747580e2",
+1855 => x"f40b8805",
+1856 => x"0c777631",
+1857 => x"15810755",
+1858 => x"56597a80",
+1859 => x"e2f42e83",
+1860 => x"c038798f",
+1861 => x"2682ef38",
+1862 => x"810b8415",
+1863 => x"0c841508",
+1864 => x"fc067079",
+1865 => x"31797226",
+1866 => x"8f722507",
+1867 => x"5d555a7a",
+1868 => x"802efced",
+1869 => x"3880db39",
+1870 => x"80089fff",
+1871 => x"065574fe",
+1872 => x"ed387880",
+1873 => x"e2b80c80",
+1874 => x"e2f40b88",
+1875 => x"05087a18",
+1876 => x"81078412",
+1877 => x"0c5580e2",
+1878 => x"e4087927",
+1879 => x"86387880",
+1880 => x"e2e40c80",
+1881 => x"e2e00879",
+1882 => x"27fca038",
+1883 => x"7880e2e0",
+1884 => x"0c841508",
+1885 => x"fc067079",
+1886 => x"31797226",
+1887 => x"8f722507",
+1888 => x"5d555a7a",
+1889 => x"802efc99",
+1890 => x"38883980",
+1891 => x"745753fe",
+1892 => x"dd397c51",
+1893 => x"83df3f80",
+1894 => x"0b800c8e",
+1895 => x"3d0d0480",
+1896 => x"7324a538",
+1897 => x"72822c81",
+1898 => x"712b80e2",
+1899 => x"f8080770",
+1900 => x"80e2f40b",
+1901 => x"84050c5c",
+1902 => x"5a768c17",
+1903 => x"0c738817",
+1904 => x"0c758818",
+1905 => x"0cf9fd39",
+1906 => x"83137082",
+1907 => x"2c81712b",
+1908 => x"80e2f808",
+1909 => x"077080e2",
+1910 => x"f40b8405",
+1911 => x"0c5d5b53",
+1912 => x"d8397a75",
+1913 => x"065c7bfc",
+1914 => x"9f388419",
+1915 => x"75105659",
+1916 => x"f139ff17",
+1917 => x"810559f7",
+1918 => x"ab398c15",
+1919 => x"08881608",
+1920 => x"718c120c",
+1921 => x"88120c59",
+1922 => x"75158411",
+1923 => x"08810784",
+1924 => x"120c587c",
+1925 => x"5182de3f",
+1926 => x"881554fb",
+1927 => x"a3397716",
+1928 => x"78810784",
+1929 => x"180c8c17",
+1930 => x"08881808",
+1931 => x"718c120c",
+1932 => x"88120c5c",
+1933 => x"7080e388",
+1934 => x"0c7080e3",
+1935 => x"840c80e2",
+1936 => x"fc0b8c12",
+1937 => x"0c8c1108",
+1938 => x"88120c77",
+1939 => x"81078412",
+1940 => x"0c770577",
+1941 => x"710c557c",
+1942 => x"51829a3f",
+1943 => x"881654f5",
+1944 => x"ba397216",
+1945 => x"84110881",
+1946 => x"0784120c",
+1947 => x"588c1608",
+1948 => x"88170871",
+1949 => x"8c120c88",
+1950 => x"120c577c",
+1951 => x"5181f63f",
+1952 => x"881654f5",
+1953 => x"96397284",
+1954 => x"150cf41a",
+1955 => x"f8067084",
+1956 => x"1d088106",
+1957 => x"07841d0c",
+1958 => x"701c5556",
+1959 => x"850b8415",
+1960 => x"0c850b88",
+1961 => x"150c8f76",
+1962 => x"27fdab38",
+1963 => x"881b527c",
+1964 => x"5184be3f",
+1965 => x"80e2f40b",
+1966 => x"88050880",
+1967 => x"e2b8085a",
+1968 => x"55fd9339",
+1969 => x"7880e2b8",
+1970 => x"0c7380e2",
+1971 => x"e80cfbef",
+1972 => x"39728415",
+1973 => x"0cfcff39",
+1974 => x"fb3d0d77",
+1975 => x"707a7c58",
+1976 => x"5553568f",
+1977 => x"752780e6",
+1978 => x"38727607",
+1979 => x"83065170",
+1980 => x"80dc3875",
+1981 => x"73525470",
+1982 => x"70840552",
+1983 => x"08747084",
+1984 => x"05560c73",
+1985 => x"71708405",
+1986 => x"53087170",
+1987 => x"8405530c",
+1988 => x"71708405",
+1989 => x"53087170",
+1990 => x"8405530c",
+1991 => x"71708405",
+1992 => x"53087170",
+1993 => x"8405530c",
+1994 => x"f0165654",
+1995 => x"748f26c7",
+1996 => x"38837527",
+1997 => x"95387070",
+1998 => x"84055208",
+1999 => x"74708405",
+2000 => x"560cfc15",
+2001 => x"55748326",
+2002 => x"ed387371",
+2003 => x"5452ff15",
+2004 => x"5170ff2e",
+2005 => x"98387270",
+2006 => x"81055433",
+2007 => x"72708105",
+2008 => x"5434ff11",
+2009 => x"5170ff2e",
+2010 => x"098106ea",
+2011 => x"3875800c",
+2012 => x"873d0d04",
+2013 => x"0404fd3d",
+2014 => x"0d800b81",
+2015 => x"c2d40c76",
+2016 => x"5187ca3f",
+2017 => x"80085380",
+2018 => x"08ff2e88",
+2019 => x"3872800c",
+2020 => x"853d0d04",
+2021 => x"81c2d408",
+2022 => x"5473802e",
+2023 => x"f0387574",
+2024 => x"710c5272",
+2025 => x"800c853d",
+2026 => x"0d04fb3d",
+2027 => x"0d777970",
+2028 => x"72078306",
+2029 => x"53545270",
+2030 => x"93387173",
+2031 => x"73085456",
+2032 => x"54717308",
+2033 => x"2e80c438",
+2034 => x"73755452",
+2035 => x"71337081",
+2036 => x"ff065254",
+2037 => x"70802e9d",
+2038 => x"38723355",
+2039 => x"70752e09",
+2040 => x"81069538",
+2041 => x"81128114",
+2042 => x"71337081",
+2043 => x"ff065456",
+2044 => x"545270e5",
+2045 => x"38723355",
+2046 => x"7381ff06",
+2047 => x"7581ff06",
+2048 => x"71713180",
+2049 => x"0c555287",
+2050 => x"3d0d0471",
+2051 => x"09f7fbfd",
+2052 => x"ff1306f8",
+2053 => x"84828180",
+2054 => x"06527197",
+2055 => x"38841484",
+2056 => x"16710854",
+2057 => x"56547175",
+2058 => x"082ee038",
+2059 => x"73755452",
+2060 => x"ff9a3980",
+2061 => x"0b800c87",
+2062 => x"3d0d04fb",
+2063 => x"3d0d7770",
+2064 => x"5256feb0",
+2065 => x"3f80e2f4",
+2066 => x"0b880508",
+2067 => x"841108fc",
+2068 => x"06707b31",
+2069 => x"9fef05e0",
+2070 => x"8006e080",
+2071 => x"05525555",
+2072 => x"a0807524",
+2073 => x"94388052",
+2074 => x"7551fe8a",
+2075 => x"3f80e2fc",
+2076 => x"08145372",
+2077 => x"80082e8f",
+2078 => x"387551fd",
+2079 => x"f83f8053",
+2080 => x"72800c87",
+2081 => x"3d0d0474",
+2082 => x"30527551",
+2083 => x"fde83f80",
+2084 => x"08ff2ea8",
+2085 => x"3880e2f4",
+2086 => x"0b880508",
+2087 => x"74763181",
+2088 => x"0784120c",
+2089 => x"5380e2b8",
+2090 => x"08753180",
+2091 => x"e2b80c75",
+2092 => x"51fdc23f",
+2093 => x"810b800c",
+2094 => x"873d0d04",
+2095 => x"80527551",
+2096 => x"fdb43f80",
+2097 => x"e2f40b88",
+2098 => x"05088008",
+2099 => x"71315454",
+2100 => x"8f7325ff",
+2101 => x"a4388008",
+2102 => x"80e2e808",
+2103 => x"3180e2b8",
+2104 => x"0c728107",
+2105 => x"84150c75",
+2106 => x"51fd8a3f",
+2107 => x"8053ff90",
+2108 => x"39f73d0d",
+2109 => x"7b7d545a",
+2110 => x"72802e82",
+2111 => x"83387951",
+2112 => x"fcf23ff8",
+2113 => x"13841108",
+2114 => x"70fe0670",
+2115 => x"13841108",
+2116 => x"fc065c57",
+2117 => x"58545780",
+2118 => x"e2fc0874",
+2119 => x"2e82de38",
+2120 => x"7784150c",
+2121 => x"80738106",
+2122 => x"56597479",
+2123 => x"2e81d538",
+2124 => x"77148411",
+2125 => x"08810656",
+2126 => x"5374a038",
+2127 => x"77165678",
+2128 => x"81e63888",
+2129 => x"14085574",
+2130 => x"80e2fc2e",
+2131 => x"82f9388c",
+2132 => x"1408708c",
+2133 => x"170c7588",
+2134 => x"120c5875",
+2135 => x"81078418",
+2136 => x"0c751776",
+2137 => x"710c5478",
+2138 => x"81913883",
+2139 => x"ff762781",
+2140 => x"c8387589",
+2141 => x"2a76832a",
+2142 => x"54547380",
+2143 => x"2ebf3875",
+2144 => x"862ab805",
+2145 => x"53847427",
+2146 => x"b43880db",
+2147 => x"14539474",
+2148 => x"27ab3875",
+2149 => x"8c2a80ee",
+2150 => x"055380d4",
+2151 => x"74279e38",
+2152 => x"758f2a80",
+2153 => x"f7055382",
+2154 => x"d4742791",
+2155 => x"3875922a",
+2156 => x"80fc0553",
+2157 => x"8ad47427",
+2158 => x"843880fe",
+2159 => x"53721010",
+2160 => x"1080e2f4",
+2161 => x"05881108",
+2162 => x"55557375",
+2163 => x"2e82bf38",
+2164 => x"841408fc",
+2165 => x"06597579",
+2166 => x"278d3888",
+2167 => x"14085473",
+2168 => x"752e0981",
+2169 => x"06ea388c",
+2170 => x"1408708c",
+2171 => x"190c7488",
+2172 => x"190c7788",
+2173 => x"120c5576",
+2174 => x"8c150c79",
+2175 => x"51faf63f",
+2176 => x"8b3d0d04",
+2177 => x"76087771",
+2178 => x"31587605",
+2179 => x"88180856",
+2180 => x"567480e2",
+2181 => x"fc2e80e0",
+2182 => x"388c1708",
+2183 => x"708c170c",
+2184 => x"7588120c",
+2185 => x"53fe8939",
+2186 => x"8814088c",
+2187 => x"1508708c",
+2188 => x"130c5988",
+2189 => x"190cfea3",
+2190 => x"3975832a",
+2191 => x"70545480",
+2192 => x"74248198",
+2193 => x"3872822c",
+2194 => x"81712b80",
+2195 => x"e2f80807",
+2196 => x"80e2f40b",
+2197 => x"84050c74",
+2198 => x"10101080",
+2199 => x"e2f40588",
+2200 => x"1108718c",
+2201 => x"1b0c7088",
+2202 => x"1b0c7988",
+2203 => x"130c565a",
+2204 => x"55768c15",
+2205 => x"0cff8439",
+2206 => x"8159fdb4",
+2207 => x"39771673",
+2208 => x"81065455",
+2209 => x"72983876",
+2210 => x"08777131",
+2211 => x"5875058c",
+2212 => x"18088819",
+2213 => x"08718c12",
+2214 => x"0c88120c",
+2215 => x"55557481",
+2216 => x"0784180c",
+2217 => x"7680e2f4",
+2218 => x"0b88050c",
+2219 => x"80e2f008",
+2220 => x"7526fec7",
+2221 => x"3880e2ec",
+2222 => x"08527951",
+2223 => x"fafd3f79",
+2224 => x"51f9b23f",
+2225 => x"feba3981",
+2226 => x"778c170c",
+2227 => x"7788170c",
+2228 => x"758c190c",
+2229 => x"7588190c",
+2230 => x"59fd8039",
+2231 => x"83147082",
+2232 => x"2c81712b",
+2233 => x"80e2f808",
+2234 => x"0780e2f4",
+2235 => x"0b84050c",
+2236 => x"75101010",
+2237 => x"80e2f405",
+2238 => x"88110871",
+2239 => x"8c1c0c70",
+2240 => x"881c0c7a",
+2241 => x"88130c57",
+2242 => x"5b5653fe",
+2243 => x"e4398073",
+2244 => x"24a33872",
+2245 => x"822c8171",
+2246 => x"2b80e2f8",
+2247 => x"080780e2",
+2248 => x"f40b8405",
+2249 => x"0c58748c",
+2250 => x"180c7388",
+2251 => x"180c7688",
+2252 => x"160cfdc3",
+2253 => x"39831370",
+2254 => x"822c8171",
+2255 => x"2b80e2f8",
+2256 => x"080780e2",
+2257 => x"f40b8405",
+2258 => x"0c5953da",
+2259 => x"39fe3d0d",
+2260 => x"81c2d808",
+2261 => x"51708a38",
+2262 => x"81c2e070",
+2263 => x"81c2d80c",
+2264 => x"51741152",
+2265 => x"ff537187",
+2266 => x"fb808026",
+2267 => x"88387181",
+2268 => x"c2d80c70",
+2269 => x"5372800c",
+2270 => x"843d0d04",
+2271 => x"fd3d0d80",
+2272 => x"0b80e2a4",
+2273 => x"08545472",
+2274 => x"812e9b38",
+2275 => x"7381c2dc",
+2276 => x"0cc28e3f",
+2277 => x"c0ea3f80",
+2278 => x"f1fc5281",
+2279 => x"51caf83f",
+2280 => x"80085189",
+2281 => x"a73f7281",
+2282 => x"c2dc0cc1",
+2283 => x"f43fc0d0",
+2284 => x"3f80f1fc",
+2285 => x"528151ca",
+2286 => x"de3f8008",
+2287 => x"51898d3f",
+2288 => x"00ff3900",
+2289 => x"ff39f53d",
+2290 => x"0d7e6081",
+2291 => x"c2dc0870",
+2292 => x"5b585b5b",
+2293 => x"7580c238",
+2294 => x"777a25a1",
+2295 => x"38771b70",
+2296 => x"337081ff",
+2297 => x"06585859",
+2298 => x"758a2e98",
+2299 => x"387681ff",
+2300 => x"0651c18c",
+2301 => x"3f811858",
+2302 => x"797824e1",
+2303 => x"3879800c",
+2304 => x"8d3d0d04",
+2305 => x"8d51c0f8",
+2306 => x"3f783370",
+2307 => x"81ff0652",
+2308 => x"57c0ed3f",
+2309 => x"811858e0",
+2310 => x"3979557a",
+2311 => x"547d5385",
+2312 => x"528d3dfc",
+2313 => x"0551c09a",
+2314 => x"3f800856",
+2315 => x"88973f7b",
+2316 => x"80080c75",
+2317 => x"800c8d3d",
+2318 => x"0d04f63d",
+2319 => x"0d7d7f81",
+2320 => x"c2dc0870",
+2321 => x"5a585a5a",
+2322 => x"7580c338",
+2323 => x"767925b1",
+2324 => x"38761a58",
+2325 => x"c08a3f80",
+2326 => x"08783480",
+2327 => x"0b800881",
+2328 => x"ff065758",
+2329 => x"758a2ea2",
+2330 => x"38758d32",
+2331 => x"70307080",
+2332 => x"257a0751",
+2333 => x"515675b8",
+2334 => x"38811757",
+2335 => x"787724d1",
+2336 => x"38765675",
+2337 => x"800c8c3d",
+2338 => x"0d048158",
+2339 => x"dc397855",
+2340 => x"79547c53",
+2341 => x"84528c3d",
+2342 => x"fc0551ff",
+2343 => x"bfa43f80",
+2344 => x"085687a1",
+2345 => x"3f7a8008",
+2346 => x"0c75800c",
+2347 => x"8c3d0d04",
+2348 => x"811756cf",
+2349 => x"39f93d0d",
+2350 => x"795781c2",
+2351 => x"dc08802e",
+2352 => x"ad387651",
+2353 => x"89b43f7b",
+2354 => x"567a5580",
+2355 => x"08810554",
+2356 => x"76538252",
+2357 => x"893dfc05",
+2358 => x"51ffbee6",
+2359 => x"3f800857",
+2360 => x"86e33f77",
+2361 => x"80080c76",
+2362 => x"800c893d",
+2363 => x"0d0486d5",
+2364 => x"3f850b80",
+2365 => x"080cff0b",
+2366 => x"800c893d",
+2367 => x"0d04fb3d",
+2368 => x"0d81c2dc",
+2369 => x"08705654",
+2370 => x"73883874",
+2371 => x"800c873d",
+2372 => x"0d047753",
+2373 => x"8352873d",
+2374 => x"fc0551ff",
+2375 => x"bea43f80",
+2376 => x"085486a1",
+2377 => x"3f758008",
+2378 => x"0c73800c",
+2379 => x"873d0d04",
+2380 => x"ff0b800c",
+2381 => x"04fb3d0d",
+2382 => x"775581c2",
+2383 => x"dc08802e",
+2384 => x"a9387451",
+2385 => x"88b43f80",
+2386 => x"08810554",
+2387 => x"74538752",
+2388 => x"873dfc05",
+2389 => x"51ffbdea",
+2390 => x"3f800855",
+2391 => x"85e73f75",
+2392 => x"80080c74",
+2393 => x"800c873d",
+2394 => x"0d0485d9",
+2395 => x"3f850b80",
+2396 => x"080cff0b",
+2397 => x"800c873d",
+2398 => x"0d04fa3d",
+2399 => x"0d81c2dc",
+2400 => x"08802ea3",
+2401 => x"387a5579",
+2402 => x"54785386",
+2403 => x"52883dfc",
+2404 => x"0551ffbd",
+2405 => x"ad3f8008",
+2406 => x"5685aa3f",
+2407 => x"7680080c",
+2408 => x"75800c88",
+2409 => x"3d0d0485",
+2410 => x"9c3f9d0b",
+2411 => x"80080cff",
+2412 => x"0b800c88",
+2413 => x"3d0d04f7",
+2414 => x"3d0d7b7d",
+2415 => x"5b59bc53",
+2416 => x"80527951",
+2417 => x"86aa3f80",
+2418 => x"70565798",
+2419 => x"56741970",
+2420 => x"3370782b",
+2421 => x"79078118",
+2422 => x"f81a5a58",
+2423 => x"59555884",
+2424 => x"7524ea38",
+2425 => x"767a2384",
+2426 => x"19588070",
+2427 => x"56579856",
+2428 => x"74187033",
+2429 => x"70782b79",
+2430 => x"078118f8",
+2431 => x"1a5a5859",
+2432 => x"51548475",
+2433 => x"24ea3876",
+2434 => x"821b2388",
+2435 => x"19588070",
+2436 => x"56579856",
+2437 => x"74187033",
+2438 => x"70782b79",
+2439 => x"078118f8",
+2440 => x"1a5a5859",
+2441 => x"51548475",
+2442 => x"24ea3876",
+2443 => x"841b0c8c",
+2444 => x"19588070",
+2445 => x"56579856",
+2446 => x"74187033",
+2447 => x"70782b79",
+2448 => x"078118f8",
+2449 => x"1a5a5859",
+2450 => x"51548475",
+2451 => x"24ea3876",
+2452 => x"881b2390",
+2453 => x"19588070",
+2454 => x"56579856",
+2455 => x"74187033",
+2456 => x"70782b79",
+2457 => x"078118f8",
+2458 => x"1a5a5859",
+2459 => x"51548475",
+2460 => x"24ea3876",
+2461 => x"8a1b2394",
+2462 => x"19588070",
+2463 => x"56579856",
+2464 => x"74187033",
+2465 => x"70782b79",
+2466 => x"078118f8",
+2467 => x"1a5a5859",
+2468 => x"51548475",
+2469 => x"24ea3876",
+2470 => x"8c1b2398",
+2471 => x"19588070",
+2472 => x"56579856",
+2473 => x"74187033",
+2474 => x"70782b79",
+2475 => x"078118f8",
+2476 => x"1a5a5859",
+2477 => x"51548475",
+2478 => x"24ea3876",
+2479 => x"8e1b239c",
+2480 => x"19588070",
+2481 => x"5657b856",
+2482 => x"74187033",
+2483 => x"70782b79",
+2484 => x"078118f8",
+2485 => x"1a5a5859",
+2486 => x"5a548875",
+2487 => x"24ea3876",
+2488 => x"901b0c8b",
+2489 => x"3d0d04e9",
+2490 => x"3d0d6a81",
+2491 => x"c2dc0857",
+2492 => x"57759338",
+2493 => x"80c0800b",
+2494 => x"84180c75",
+2495 => x"ac180c75",
+2496 => x"800c993d",
+2497 => x"0d04893d",
+2498 => x"70556a54",
+2499 => x"558a5299",
+2500 => x"3dffbc05",
+2501 => x"51ffbaaa",
+2502 => x"3f800877",
+2503 => x"53755256",
+2504 => x"fd953f82",
+2505 => x"a03f7780",
+2506 => x"080c7580",
+2507 => x"0c993d0d",
+2508 => x"04e93d0d",
+2509 => x"695781c2",
+2510 => x"dc08802e",
+2511 => x"b6387651",
+2512 => x"84b83f89",
+2513 => x"3d705680",
+2514 => x"08810555",
+2515 => x"7754568f",
+2516 => x"52993dff",
+2517 => x"bc0551ff",
+2518 => x"b9e83f80",
+2519 => x"086b5376",
+2520 => x"5257fcd3",
+2521 => x"3f81de3f",
+2522 => x"7780080c",
+2523 => x"76800c99",
+2524 => x"3d0d0481",
+2525 => x"d03f850b",
+2526 => x"80080cff",
+2527 => x"0b800c99",
+2528 => x"3d0d04fc",
+2529 => x"3d0d8154",
+2530 => x"81c2dc08",
+2531 => x"88387380",
+2532 => x"0c863d0d",
+2533 => x"04765397",
+2534 => x"b952863d",
+2535 => x"fc0551ff",
+2536 => x"b9a03f80",
+2537 => x"0854819d",
+2538 => x"3f748008",
+2539 => x"0c73800c",
+2540 => x"863d0d04",
+2541 => x"f43d0d7e",
+2542 => x"80f2a808",
+2543 => x"700881ff",
+2544 => x"06913df8",
+2545 => x"05545159",
+2546 => x"59ffbac5",
+2547 => x"3f775780",
+2548 => x"5476557b",
+2549 => x"7d585276",
+2550 => x"538e3df0",
+2551 => x"0551d6a0",
+2552 => x"3f797b58",
+2553 => x"790c7684",
+2554 => x"1a0c7880",
+2555 => x"0c8e3d0d",
+2556 => x"04f43d0d",
+2557 => x"7e80f2a8",
+2558 => x"08700870",
+2559 => x"81ff0692",
+2560 => x"3df80555",
+2561 => x"515a5759",
+2562 => x"ffba863f",
+2563 => x"7757800b",
+2564 => x"8b3d5954",
+2565 => x"76557b7d",
+2566 => x"58527653",
+2567 => x"7751d5e0",
+2568 => x"3f8056bd",
+2569 => x"84c07655",
+2570 => x"55797b58",
+2571 => x"52765377",
+2572 => x"51d5cd3f",
+2573 => x"7a577880",
+2574 => x"2e843876",
+2575 => x"790c7680",
+2576 => x"0c8e3d0d",
+2577 => x"0480eafc",
+2578 => x"08800c04",
+2579 => x"f73d0d7b",
+2580 => x"80eafc08",
+2581 => x"82c81108",
+2582 => x"5a545a77",
+2583 => x"802e80da",
+2584 => x"38818818",
+2585 => x"841908ff",
+2586 => x"0581712b",
+2587 => x"59555980",
+2588 => x"742480ea",
+2589 => x"38807424",
+2590 => x"b5387382",
+2591 => x"2b781188",
+2592 => x"05565681",
+2593 => x"80190877",
+2594 => x"06537280",
+2595 => x"2eb63878",
+2596 => x"16700853",
+2597 => x"53795174",
+2598 => x"0853722d",
+2599 => x"ff14fc17",
+2600 => x"fc177981",
+2601 => x"2c5a5757",
+2602 => x"54738025",
+2603 => x"d6387708",
+2604 => x"5877ffad",
+2605 => x"3880eafc",
+2606 => x"0853bc13",
+2607 => x"08a53879",
+2608 => x"51f5fd3f",
+2609 => x"74085372",
+2610 => x"2dff14fc",
+2611 => x"17fc1779",
+2612 => x"812c5a57",
+2613 => x"57547380",
+2614 => x"25ffa838",
+2615 => x"d1398057",
+2616 => x"ff933972",
+2617 => x"51bc1308",
+2618 => x"54732d79",
+2619 => x"51f5d13f",
+2620 => x"fb3d0d77",
+2621 => x"7a71028c",
+2622 => x"05a30533",
+2623 => x"58545456",
+2624 => x"83732780",
+2625 => x"d4387583",
+2626 => x"06517080",
+2627 => x"cc387488",
+2628 => x"2b750770",
+2629 => x"71902b07",
+2630 => x"55518f73",
+2631 => x"27a73873",
+2632 => x"72708405",
+2633 => x"540c7174",
+2634 => x"71708405",
+2635 => x"530c7471",
+2636 => x"70840553",
+2637 => x"0c747170",
+2638 => x"8405530c",
+2639 => x"f0145452",
+2640 => x"728f26db",
+2641 => x"38837327",
+2642 => x"90387372",
+2643 => x"70840554",
+2644 => x"0cfc1353",
+2645 => x"728326f2",
+2646 => x"38ff1351",
+2647 => x"70ff2e93",
+2648 => x"38747270",
+2649 => x"81055434",
+2650 => x"ff115170",
+2651 => x"ff2e0981",
+2652 => x"06ef3875",
+2653 => x"800c873d",
+2654 => x"0d04fd3d",
+2655 => x"0d757071",
+2656 => x"83065355",
+2657 => x"5270b438",
+2658 => x"71700870",
+2659 => x"09f7fbfd",
+2660 => x"ff1206f8",
+2661 => x"84828180",
+2662 => x"06545253",
+2663 => x"719b3884",
+2664 => x"13700870",
+2665 => x"09f7fbfd",
+2666 => x"ff1206f8",
+2667 => x"84828180",
+2668 => x"06545253",
+2669 => x"71802ee7",
+2670 => x"38725271",
+2671 => x"33537280",
+2672 => x"2e8a3881",
+2673 => x"12703354",
+2674 => x"5272f838",
+2675 => x"71743180",
+2676 => x"0c853d0d",
+2677 => x"04ff3d0d",
+2678 => x"80f2840b",
+2679 => x"fc057008",
+2680 => x"525270ff",
+2681 => x"2e913870",
+2682 => x"2dfc1270",
+2683 => x"08525270",
+2684 => x"ff2e0981",
+2685 => x"06f13883",
+2686 => x"3d0d0404",
+2687 => x"ffb7a63f",
+2688 => x"04000000",
+2689 => x"30313233",
+2690 => x"34353637",
+2691 => x"38390000",
+2692 => x"44485259",
+2693 => x"53544f4e",
+2694 => x"45205052",
+2695 => x"4f475241",
+2696 => x"4d2c2053",
+2697 => x"4f4d4520",
+2698 => x"53545249",
+2699 => x"4e470000",
+2700 => x"44485259",
+2701 => x"53544f4e",
+2702 => x"45205052",
+2703 => x"4f475241",
+2704 => x"4d2c2031",
+2705 => x"27535420",
+2706 => x"53545249",
+2707 => x"4e470000",
+2708 => x"44687279",
+2709 => x"73746f6e",
+2710 => x"65204265",
+2711 => x"6e63686d",
+2712 => x"61726b2c",
+2713 => x"20566572",
+2714 => x"73696f6e",
+2715 => x"20322e31",
+2716 => x"20284c61",
+2717 => x"6e677561",
+2718 => x"67653a20",
+2719 => x"43290a00",
+2720 => x"50726f67",
+2721 => x"72616d20",
+2722 => x"636f6d70",
+2723 => x"696c6564",
+2724 => x"20776974",
+2725 => x"68202772",
+2726 => x"65676973",
+2727 => x"74657227",
+2728 => x"20617474",
+2729 => x"72696275",
+2730 => x"74650a00",
+2731 => x"45786563",
+2732 => x"7574696f",
+2733 => x"6e207374",
+2734 => x"61727473",
+2735 => x"2c202564",
+2736 => x"2072756e",
+2737 => x"73207468",
+2738 => x"726f7567",
+2739 => x"68204468",
+2740 => x"72797374",
+2741 => x"6f6e650a",
+2742 => x"00000000",
+2743 => x"44485259",
+2744 => x"53544f4e",
+2745 => x"45205052",
+2746 => x"4f475241",
+2747 => x"4d2c2032",
+2748 => x"274e4420",
+2749 => x"53545249",
+2750 => x"4e470000",
+2751 => x"45786563",
+2752 => x"7574696f",
+2753 => x"6e20656e",
+2754 => x"64730a00",
+2755 => x"46696e61",
+2756 => x"6c207661",
+2757 => x"6c756573",
+2758 => x"206f6620",
+2759 => x"74686520",
+2760 => x"76617269",
+2761 => x"61626c65",
+2762 => x"73207573",
+2763 => x"65642069",
+2764 => x"6e207468",
+2765 => x"65206265",
+2766 => x"6e63686d",
+2767 => x"61726b3a",
+2768 => x"0a000000",
+2769 => x"496e745f",
+2770 => x"476c6f62",
+2771 => x"3a202020",
+2772 => x"20202020",
+2773 => x"20202020",
+2774 => x"2025640a",
+2775 => x"00000000",
+2776 => x"20202020",
+2777 => x"20202020",
+2778 => x"73686f75",
+2779 => x"6c642062",
+2780 => x"653a2020",
+2781 => x"2025640a",
+2782 => x"00000000",
+2783 => x"426f6f6c",
+2784 => x"5f476c6f",
+2785 => x"623a2020",
+2786 => x"20202020",
+2787 => x"20202020",
+2788 => x"2025640a",
+2789 => x"00000000",
+2790 => x"43685f31",
+2791 => x"5f476c6f",
+2792 => x"623a2020",
+2793 => x"20202020",
+2794 => x"20202020",
+2795 => x"2025630a",
+2796 => x"00000000",
+2797 => x"20202020",
+2798 => x"20202020",
+2799 => x"73686f75",
+2800 => x"6c642062",
+2801 => x"653a2020",
+2802 => x"2025630a",
+2803 => x"00000000",
+2804 => x"43685f32",
+2805 => x"5f476c6f",
+2806 => x"623a2020",
+2807 => x"20202020",
+2808 => x"20202020",
+2809 => x"2025630a",
+2810 => x"00000000",
+2811 => x"4172725f",
+2812 => x"315f476c",
+2813 => x"6f625b38",
+2814 => x"5d3a2020",
+2815 => x"20202020",
+2816 => x"2025640a",
+2817 => x"00000000",
+2818 => x"4172725f",
+2819 => x"325f476c",
+2820 => x"6f625b38",
+2821 => x"5d5b375d",
+2822 => x"3a202020",
+2823 => x"2025640a",
+2824 => x"00000000",
+2825 => x"20202020",
+2826 => x"20202020",
+2827 => x"73686f75",
+2828 => x"6c642062",
+2829 => x"653a2020",
+2830 => x"204e756d",
+2831 => x"6265725f",
+2832 => x"4f665f52",
+2833 => x"756e7320",
+2834 => x"2b203130",
+2835 => x"0a000000",
+2836 => x"5074725f",
+2837 => x"476c6f62",
+2838 => x"2d3e0a00",
+2839 => x"20205074",
+2840 => x"725f436f",
+2841 => x"6d703a20",
+2842 => x"20202020",
+2843 => x"20202020",
+2844 => x"2025640a",
+2845 => x"00000000",
+2846 => x"20202020",
+2847 => x"20202020",
+2848 => x"73686f75",
+2849 => x"6c642062",
+2850 => x"653a2020",
+2851 => x"2028696d",
+2852 => x"706c656d",
+2853 => x"656e7461",
+2854 => x"74696f6e",
+2855 => x"2d646570",
+2856 => x"656e6465",
+2857 => x"6e74290a",
+2858 => x"00000000",
+2859 => x"20204469",
+2860 => x"7363723a",
+2861 => x"20202020",
+2862 => x"20202020",
+2863 => x"20202020",
+2864 => x"2025640a",
+2865 => x"00000000",
+2866 => x"2020456e",
+2867 => x"756d5f43",
+2868 => x"6f6d703a",
+2869 => x"20202020",
+2870 => x"20202020",
+2871 => x"2025640a",
+2872 => x"00000000",
+2873 => x"2020496e",
+2874 => x"745f436f",
+2875 => x"6d703a20",
+2876 => x"20202020",
+2877 => x"20202020",
+2878 => x"2025640a",
+2879 => x"00000000",
+2880 => x"20205374",
+2881 => x"725f436f",
+2882 => x"6d703a20",
+2883 => x"20202020",
+2884 => x"20202020",
+2885 => x"2025730a",
+2886 => x"00000000",
+2887 => x"20202020",
+2888 => x"20202020",
+2889 => x"73686f75",
+2890 => x"6c642062",
+2891 => x"653a2020",
+2892 => x"20444852",
+2893 => x"5953544f",
+2894 => x"4e452050",
+2895 => x"524f4752",
+2896 => x"414d2c20",
+2897 => x"534f4d45",
+2898 => x"20535452",
+2899 => x"494e470a",
+2900 => x"00000000",
+2901 => x"4e657874",
+2902 => x"5f507472",
+2903 => x"5f476c6f",
+2904 => x"622d3e0a",
+2905 => x"00000000",
+2906 => x"20202020",
+2907 => x"20202020",
+2908 => x"73686f75",
+2909 => x"6c642062",
+2910 => x"653a2020",
+2911 => x"2028696d",
+2912 => x"706c656d",
+2913 => x"656e7461",
+2914 => x"74696f6e",
+2915 => x"2d646570",
+2916 => x"656e6465",
+2917 => x"6e74292c",
+2918 => x"2073616d",
+2919 => x"65206173",
+2920 => x"2061626f",
+2921 => x"76650a00",
+2922 => x"496e745f",
+2923 => x"315f4c6f",
+2924 => x"633a2020",
+2925 => x"20202020",
+2926 => x"20202020",
+2927 => x"2025640a",
+2928 => x"00000000",
+2929 => x"496e745f",
+2930 => x"325f4c6f",
+2931 => x"633a2020",
+2932 => x"20202020",
+2933 => x"20202020",
+2934 => x"2025640a",
+2935 => x"00000000",
+2936 => x"496e745f",
+2937 => x"335f4c6f",
+2938 => x"633a2020",
+2939 => x"20202020",
+2940 => x"20202020",
+2941 => x"2025640a",
+2942 => x"00000000",
+2943 => x"456e756d",
+2944 => x"5f4c6f63",
+2945 => x"3a202020",
+2946 => x"20202020",
+2947 => x"20202020",
+2948 => x"2025640a",
+2949 => x"00000000",
+2950 => x"5374725f",
+2951 => x"315f4c6f",
+2952 => x"633a2020",
+2953 => x"20202020",
+2954 => x"20202020",
+2955 => x"2025730a",
+2956 => x"00000000",
+2957 => x"20202020",
+2958 => x"20202020",
+2959 => x"73686f75",
+2960 => x"6c642062",
+2961 => x"653a2020",
+2962 => x"20444852",
+2963 => x"5953544f",
+2964 => x"4e452050",
+2965 => x"524f4752",
+2966 => x"414d2c20",
+2967 => x"31275354",
+2968 => x"20535452",
+2969 => x"494e470a",
+2970 => x"00000000",
+2971 => x"5374725f",
+2972 => x"325f4c6f",
+2973 => x"633a2020",
+2974 => x"20202020",
+2975 => x"20202020",
+2976 => x"2025730a",
+2977 => x"00000000",
+2978 => x"20202020",
+2979 => x"20202020",
+2980 => x"73686f75",
+2981 => x"6c642062",
+2982 => x"653a2020",
+2983 => x"20444852",
+2984 => x"5953544f",
+2985 => x"4e452050",
+2986 => x"524f4752",
+2987 => x"414d2c20",
+2988 => x"32274e44",
+2989 => x"20535452",
+2990 => x"494e470a",
+2991 => x"00000000",
+2992 => x"55736572",
+2993 => x"2074696d",
+2994 => x"653a2025",
+2995 => x"640a0000",
+2996 => x"4d696372",
+2997 => x"6f736563",
+2998 => x"6f6e6473",
+2999 => x"20666f72",
+3000 => x"206f6e65",
+3001 => x"2072756e",
+3002 => x"20746872",
+3003 => x"6f756768",
+3004 => x"20446872",
+3005 => x"7973746f",
+3006 => x"6e653a20",
+3007 => x"00000000",
+3008 => x"2564200a",
+3009 => x"00000000",
+3010 => x"44687279",
+3011 => x"73746f6e",
+3012 => x"65732070",
+3013 => x"65722053",
+3014 => x"65636f6e",
+3015 => x"643a2020",
+3016 => x"20202020",
+3017 => x"20202020",
+3018 => x"20202020",
+3019 => x"20202020",
+3020 => x"20202020",
+3021 => x"00000000",
+3022 => x"56415820",
+3023 => x"4d495053",
+3024 => x"20726174",
+3025 => x"696e6720",
+3026 => x"2a203130",
+3027 => x"3030203d",
+3028 => x"20256420",
+3029 => x"0a000000",
+3030 => x"50726f67",
+3031 => x"72616d20",
+3032 => x"636f6d70",
+3033 => x"696c6564",
+3034 => x"20776974",
+3035 => x"686f7574",
+3036 => x"20277265",
+3037 => x"67697374",
+3038 => x"65722720",
+3039 => x"61747472",
+3040 => x"69627574",
+3041 => x"650a0000",
+3042 => x"4d656173",
+3043 => x"75726564",
+3044 => x"2074696d",
+3045 => x"6520746f",
+3046 => x"6f20736d",
+3047 => x"616c6c20",
+3048 => x"746f206f",
+3049 => x"62746169",
+3050 => x"6e206d65",
+3051 => x"616e696e",
+3052 => x"6766756c",
+3053 => x"20726573",
+3054 => x"756c7473",
+3055 => x"0a000000",
+3056 => x"506c6561",
+3057 => x"73652069",
+3058 => x"6e637265",
+3059 => x"61736520",
+3060 => x"6e756d62",
+3061 => x"6572206f",
+3062 => x"66207275",
+3063 => x"6e730a00",
+3064 => x"44485259",
+3065 => x"53544f4e",
+3066 => x"45205052",
+3067 => x"4f475241",
+3068 => x"4d2c2033",
+3069 => x"27524420",
+3070 => x"53545249",
+3071 => x"4e470000",
+3072 => x"00010202",
+3073 => x"03030303",
+3074 => x"04040404",
+3075 => x"04040404",
+3076 => x"05050505",
+3077 => x"05050505",
+3078 => x"05050505",
+3079 => x"05050505",
+3080 => x"06060606",
+3081 => x"06060606",
+3082 => x"06060606",
+3083 => x"06060606",
+3084 => x"06060606",
+3085 => x"06060606",
+3086 => x"06060606",
+3087 => x"06060606",
+3088 => x"07070707",
+3089 => x"07070707",
+3090 => x"07070707",
+3091 => x"07070707",
+3092 => x"07070707",
+3093 => x"07070707",
+3094 => x"07070707",
+3095 => x"07070707",
+3096 => x"07070707",
+3097 => x"07070707",
+3098 => x"07070707",
+3099 => x"07070707",
+3100 => x"07070707",
+3101 => x"07070707",
+3102 => x"07070707",
+3103 => x"07070707",
+3104 => x"08080808",
+3105 => x"08080808",
+3106 => x"08080808",
+3107 => x"08080808",
+3108 => x"08080808",
+3109 => x"08080808",
+3110 => x"08080808",
+3111 => x"08080808",
+3112 => x"08080808",
+3113 => x"08080808",
+3114 => x"08080808",
+3115 => x"08080808",
+3116 => x"08080808",
+3117 => x"08080808",
+3118 => x"08080808",
+3119 => x"08080808",
+3120 => x"08080808",
+3121 => x"08080808",
+3122 => x"08080808",
+3123 => x"08080808",
+3124 => x"08080808",
+3125 => x"08080808",
+3126 => x"08080808",
+3127 => x"08080808",
+3128 => x"08080808",
+3129 => x"08080808",
+3130 => x"08080808",
+3131 => x"08080808",
+3132 => x"08080808",
+3133 => x"08080808",
+3134 => x"08080808",
+3135 => x"08080808",
+3136 => x"43000000",
+3137 => x"64756d6d",
+3138 => x"792e6578",
+3139 => x"65000000",
+3140 => x"00ffffff",
+3141 => x"ff00ffff",
+3142 => x"ffff00ff",
+3143 => x"ffffff00",
+3144 => x"00000000",
+3145 => x"00000000",
+3146 => x"00000000",
+3147 => x"0000390c",
+3148 => x"000004d2", -- iterations 0x4d2=1234
+3149 => x"00000000",
+3150 => x"00000000",
+3151 => x"00000000",
+3152 => x"00000000",
+3153 => x"00000000",
+3154 => x"00000000",
+3155 => x"00000000",
+3156 => x"00000000",
+3157 => x"00000000",
+3158 => x"00000000",
+3159 => x"00000000",
+3160 => x"00000000",
+3161 => x"00000000",
+3162 => x"ffffffff",
+3163 => x"00000000",
+3164 => x"00020000",
+3165 => x"00000000",
+3166 => x"00000000",
+3167 => x"00003174",
+3168 => x"00003174",
+3169 => x"0000317c",
+3170 => x"0000317c",
+3171 => x"00003184",
+3172 => x"00003184",
+3173 => x"0000318c",
+3174 => x"0000318c",
+3175 => x"00003194",
+3176 => x"00003194",
+3177 => x"0000319c",
+3178 => x"0000319c",
+3179 => x"000031a4",
+3180 => x"000031a4",
+3181 => x"000031ac",
+3182 => x"000031ac",
+3183 => x"000031b4",
+3184 => x"000031b4",
+3185 => x"000031bc",
+3186 => x"000031bc",
+3187 => x"000031c4",
+3188 => x"000031c4",
+3189 => x"000031cc",
+3190 => x"000031cc",
+3191 => x"000031d4",
+3192 => x"000031d4",
+3193 => x"000031dc",
+3194 => x"000031dc",
+3195 => x"000031e4",
+3196 => x"000031e4",
+3197 => x"000031ec",
+3198 => x"000031ec",
+3199 => x"000031f4",
+3200 => x"000031f4",
+3201 => x"000031fc",
+3202 => x"000031fc",
+3203 => x"00003204",
+3204 => x"00003204",
+3205 => x"0000320c",
+3206 => x"0000320c",
+3207 => x"00003214",
+3208 => x"00003214",
+3209 => x"0000321c",
+3210 => x"0000321c",
+3211 => x"00003224",
+3212 => x"00003224",
+3213 => x"0000322c",
+3214 => x"0000322c",
+3215 => x"00003234",
+3216 => x"00003234",
+3217 => x"0000323c",
+3218 => x"0000323c",
+3219 => x"00003244",
+3220 => x"00003244",
+3221 => x"0000324c",
+3222 => x"0000324c",
+3223 => x"00003254",
+3224 => x"00003254",
+3225 => x"0000325c",
+3226 => x"0000325c",
+3227 => x"00003264",
+3228 => x"00003264",
+3229 => x"0000326c",
+3230 => x"0000326c",
+3231 => x"00003274",
+3232 => x"00003274",
+3233 => x"0000327c",
+3234 => x"0000327c",
+3235 => x"00003284",
+3236 => x"00003284",
+3237 => x"0000328c",
+3238 => x"0000328c",
+3239 => x"00003294",
+3240 => x"00003294",
+3241 => x"0000329c",
+3242 => x"0000329c",
+3243 => x"000032a4",
+3244 => x"000032a4",
+3245 => x"000032ac",
+3246 => x"000032ac",
+3247 => x"000032b4",
+3248 => x"000032b4",
+3249 => x"000032bc",
+3250 => x"000032bc",
+3251 => x"000032c4",
+3252 => x"000032c4",
+3253 => x"000032cc",
+3254 => x"000032cc",
+3255 => x"000032d4",
+3256 => x"000032d4",
+3257 => x"000032dc",
+3258 => x"000032dc",
+3259 => x"000032e4",
+3260 => x"000032e4",
+3261 => x"000032ec",
+3262 => x"000032ec",
+3263 => x"000032f4",
+3264 => x"000032f4",
+3265 => x"000032fc",
+3266 => x"000032fc",
+3267 => x"00003304",
+3268 => x"00003304",
+3269 => x"0000330c",
+3270 => x"0000330c",
+3271 => x"00003314",
+3272 => x"00003314",
+3273 => x"0000331c",
+3274 => x"0000331c",
+3275 => x"00003324",
+3276 => x"00003324",
+3277 => x"0000332c",
+3278 => x"0000332c",
+3279 => x"00003334",
+3280 => x"00003334",
+3281 => x"0000333c",
+3282 => x"0000333c",
+3283 => x"00003344",
+3284 => x"00003344",
+3285 => x"0000334c",
+3286 => x"0000334c",
+3287 => x"00003354",
+3288 => x"00003354",
+3289 => x"0000335c",
+3290 => x"0000335c",
+3291 => x"00003364",
+3292 => x"00003364",
+3293 => x"0000336c",
+3294 => x"0000336c",
+3295 => x"00003374",
+3296 => x"00003374",
+3297 => x"0000337c",
+3298 => x"0000337c",
+3299 => x"00003384",
+3300 => x"00003384",
+3301 => x"0000338c",
+3302 => x"0000338c",
+3303 => x"00003394",
+3304 => x"00003394",
+3305 => x"0000339c",
+3306 => x"0000339c",
+3307 => x"000033a4",
+3308 => x"000033a4",
+3309 => x"000033ac",
+3310 => x"000033ac",
+3311 => x"000033b4",
+3312 => x"000033b4",
+3313 => x"000033bc",
+3314 => x"000033bc",
+3315 => x"000033c4",
+3316 => x"000033c4",
+3317 => x"000033cc",
+3318 => x"000033cc",
+3319 => x"000033d4",
+3320 => x"000033d4",
+3321 => x"000033dc",
+3322 => x"000033dc",
+3323 => x"000033e4",
+3324 => x"000033e4",
+3325 => x"000033ec",
+3326 => x"000033ec",
+3327 => x"000033f4",
+3328 => x"000033f4",
+3329 => x"000033fc",
+3330 => x"000033fc",
+3331 => x"00003404",
+3332 => x"00003404",
+3333 => x"0000340c",
+3334 => x"0000340c",
+3335 => x"00003414",
+3336 => x"00003414",
+3337 => x"0000341c",
+3338 => x"0000341c",
+3339 => x"00003424",
+3340 => x"00003424",
+3341 => x"0000342c",
+3342 => x"0000342c",
+3343 => x"00003434",
+3344 => x"00003434",
+3345 => x"0000343c",
+3346 => x"0000343c",
+3347 => x"00003444",
+3348 => x"00003444",
+3349 => x"0000344c",
+3350 => x"0000344c",
+3351 => x"00003454",
+3352 => x"00003454",
+3353 => x"0000345c",
+3354 => x"0000345c",
+3355 => x"00003464",
+3356 => x"00003464",
+3357 => x"0000346c",
+3358 => x"0000346c",
+3359 => x"00003474",
+3360 => x"00003474",
+3361 => x"0000347c",
+3362 => x"0000347c",
+3363 => x"00003484",
+3364 => x"00003484",
+3365 => x"0000348c",
+3366 => x"0000348c",
+3367 => x"00003494",
+3368 => x"00003494",
+3369 => x"0000349c",
+3370 => x"0000349c",
+3371 => x"000034a4",
+3372 => x"000034a4",
+3373 => x"000034ac",
+3374 => x"000034ac",
+3375 => x"000034b4",
+3376 => x"000034b4",
+3377 => x"000034bc",
+3378 => x"000034bc",
+3379 => x"000034c4",
+3380 => x"000034c4",
+3381 => x"000034cc",
+3382 => x"000034cc",
+3383 => x"000034d4",
+3384 => x"000034d4",
+3385 => x"000034dc",
+3386 => x"000034dc",
+3387 => x"000034e4",
+3388 => x"000034e4",
+3389 => x"000034ec",
+3390 => x"000034ec",
+3391 => x"000034f4",
+3392 => x"000034f4",
+3393 => x"000034fc",
+3394 => x"000034fc",
+3395 => x"00003504",
+3396 => x"00003504",
+3397 => x"0000350c",
+3398 => x"0000350c",
+3399 => x"00003514",
+3400 => x"00003514",
+3401 => x"0000351c",
+3402 => x"0000351c",
+3403 => x"00003524",
+3404 => x"00003524",
+3405 => x"0000352c",
+3406 => x"0000352c",
+3407 => x"00003534",
+3408 => x"00003534",
+3409 => x"0000353c",
+3410 => x"0000353c",
+3411 => x"00003544",
+3412 => x"00003544",
+3413 => x"0000354c",
+3414 => x"0000354c",
+3415 => x"00003554",
+3416 => x"00003554",
+3417 => x"0000355c",
+3418 => x"0000355c",
+3419 => x"00003564",
+3420 => x"00003564",
+3421 => x"0000356c",
+3422 => x"0000356c",
+3423 => x"00003580",
+3424 => x"00000000",
+3425 => x"000037e8",
+3426 => x"00003844",
+3427 => x"000038a0",
+3428 => x"00000000",
+3429 => x"00000000",
+3430 => x"00000000",
+3431 => x"00000000",
+3432 => x"00000000",
+3433 => x"00000000",
+3434 => x"00000000",
+3435 => x"00000000",
+3436 => x"00000000",
+3437 => x"00003100",
+3438 => x"00000000",
+3439 => x"00000000",
+3440 => x"00000000",
+3441 => x"00000000",
+3442 => x"00000000",
+3443 => x"00000000",
+3444 => x"00000000",
+3445 => x"00000000",
+3446 => x"00000000",
+3447 => x"00000000",
+3448 => x"00000000",
+3449 => x"00000000",
+3450 => x"00000000",
+3451 => x"00000000",
+3452 => x"00000000",
+3453 => x"00000000",
+3454 => x"00000000",
+3455 => x"00000000",
+3456 => x"00000000",
+3457 => x"00000000",
+3458 => x"00000000",
+3459 => x"00000000",
+3460 => x"00000000",
+3461 => x"00000000",
+3462 => x"00000000",
+3463 => x"00000000",
+3464 => x"00000000",
+3465 => x"00000000",
+3466 => x"00000001",
+3467 => x"330eabcd",
+3468 => x"1234e66d",
+3469 => x"deec0005",
+3470 => x"000b0000",
+3471 => x"00000000",
+3472 => x"00000000",
+3473 => x"00000000",
+3474 => x"00000000",
+3475 => x"00000000",
+3476 => x"00000000",
+3477 => x"00000000",
+3478 => x"00000000",
+3479 => x"00000000",
+3480 => x"00000000",
+3481 => x"00000000",
+3482 => x"00000000",
+3483 => x"00000000",
+3484 => x"00000000",
+3485 => x"00000000",
+3486 => x"00000000",
+3487 => x"00000000",
+3488 => x"00000000",
+3489 => x"00000000",
+3490 => x"00000000",
+3491 => x"00000000",
+3492 => x"00000000",
+3493 => x"00000000",
+3494 => x"00000000",
+3495 => x"00000000",
+3496 => x"00000000",
+3497 => x"00000000",
+3498 => x"00000000",
+3499 => x"00000000",
+3500 => x"00000000",
+3501 => x"00000000",
+3502 => x"00000000",
+3503 => x"00000000",
+3504 => x"00000000",
+3505 => x"00000000",
+3506 => x"00000000",
+3507 => x"00000000",
+3508 => x"00000000",
+3509 => x"00000000",
+3510 => x"00000000",
+3511 => x"00000000",
+3512 => x"00000000",
+3513 => x"00000000",
+3514 => x"00000000",
+3515 => x"00000000",
+3516 => x"00000000",
+3517 => x"00000000",
+3518 => x"00000000",
+3519 => x"00000000",
+3520 => x"00000000",
+3521 => x"00000000",
+3522 => x"00000000",
+3523 => x"00000000",
+3524 => x"00000000",
+3525 => x"00000000",
+3526 => x"00000000",
+3527 => x"00000000",
+3528 => x"00000000",
+3529 => x"00000000",
+3530 => x"00000000",
+3531 => x"00000000",
+3532 => x"00000000",
+3533 => x"00000000",
+3534 => x"00000000",
+3535 => x"00000000",
+3536 => x"00000000",
+3537 => x"00000000",
+3538 => x"00000000",
+3539 => x"00000000",
+3540 => x"00000000",
+3541 => x"00000000",
+3542 => x"00000000",
+3543 => x"00000000",
+3544 => x"00000000",
+3545 => x"00000000",
+3546 => x"00000000",
+3547 => x"00000000",
+3548 => x"00000000",
+3549 => x"00000000",
+3550 => x"00000000",
+3551 => x"00000000",
+3552 => x"00000000",
+3553 => x"00000000",
+3554 => x"00000000",
+3555 => x"00000000",
+3556 => x"00000000",
+3557 => x"00000000",
+3558 => x"00000000",
+3559 => x"00000000",
+3560 => x"00000000",
+3561 => x"00000000",
+3562 => x"00000000",
+3563 => x"00000000",
+3564 => x"00000000",
+3565 => x"00000000",
+3566 => x"00000000",
+3567 => x"00000000",
+3568 => x"00000000",
+3569 => x"00000000",
+3570 => x"00000000",
+3571 => x"00000000",
+3572 => x"00000000",
+3573 => x"00000000",
+3574 => x"00000000",
+3575 => x"00000000",
+3576 => x"00000000",
+3577 => x"00000000",
+3578 => x"00000000",
+3579 => x"00000000",
+3580 => x"00000000",
+3581 => x"00000000",
+3582 => x"00000000",
+3583 => x"00000000",
+3584 => x"00000000",
+3585 => x"00000000",
+3586 => x"00000000",
+3587 => x"00000000",
+3588 => x"00000000",
+3589 => x"00000000",
+3590 => x"00000000",
+3591 => x"00000000",
+3592 => x"00000000",
+3593 => x"00000000",
+3594 => x"00000000",
+3595 => x"00000000",
+3596 => x"00000000",
+3597 => x"00000000",
+3598 => x"00000000",
+3599 => x"00000000",
+3600 => x"00000000",
+3601 => x"00000000",
+3602 => x"00000000",
+3603 => x"00000000",
+3604 => x"00000000",
+3605 => x"00000000",
+3606 => x"00000000",
+3607 => x"00000000",
+3608 => x"00000000",
+3609 => x"00000000",
+3610 => x"00000000",
+3611 => x"00000000",
+3612 => x"00000000",
+3613 => x"00000000",
+3614 => x"00000000",
+3615 => x"00000000",
+3616 => x"00000000",
+3617 => x"00000000",
+3618 => x"00000000",
+3619 => x"00000000",
+3620 => x"00000000",
+3621 => x"00000000",
+3622 => x"00000000",
+3623 => x"00000000",
+3624 => x"00000000",
+3625 => x"00000000",
+3626 => x"00000000",
+3627 => x"00000000",
+3628 => x"00000000",
+3629 => x"00000000",
+3630 => x"00000000",
+3631 => x"00000000",
+3632 => x"00000000",
+3633 => x"00000000",
+3634 => x"00000000",
+3635 => x"00000000",
+3636 => x"00000000",
+3637 => x"00000000",
+3638 => x"00000000",
+3639 => x"00000000",
+3640 => x"00000000",
+3641 => x"00000000",
+3642 => x"00000000",
+3643 => x"00000000",
+3644 => x"00000000",
+3645 => x"00000000",
+3646 => x"00000000",
+3647 => x"00003104",
+3648 => x"ffffffff",
+3649 => x"00000000",
+3650 => x"ffffffff",
+3651 => x"00000000",
+ others => x"00000000"
+);
+
+begin
+
+mem_busy<=mem_readEnable; -- we're done on the cycle after we serve the read request
+
+process (clk, areset)
+begin
+ if areset = '1' then
+ elsif (clk'event and clk = '1') then
+ if (mem_writeEnable = '1') then
+ ram(conv_integer(mem_addr(maxAddrBit downto minAddrBit))) := mem_write;
+ end if;
+ mem_read <= ram(conv_integer(mem_addr(maxAddrBit downto minAddrBit)));
+ end if;
+end process;
+
+
+
+
+end dram_arch;
diff --git a/zpu/hdl/zpu4/src/dram_hello.vhd b/zpu/hdl/zpu4/src/dram_hello.vhd
new file mode 100644
index 0000000..dc46dbb
--- /dev/null
+++ b/zpu/hdl/zpu4/src/dram_hello.vhd
@@ -0,0 +1,3214 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+
+entity dram is
+port (clk : in std_logic;
+ mem_writeEnable : in std_logic;
+ mem_readEnable : in std_logic;
+ mem_addr : in std_logic_vector(maxAddrBit downto 0);
+ mem_write : in std_logic_vector(wordSize-1 downto 0);
+ mem_read : out std_logic_vector(wordSize-1 downto 0);
+ mem_busy : out std_logic;
+ mem_writeMask : in std_logic_vector(wordBytes-1 downto 0));
+end dram;
+
+architecture dram_arch of dram is
+
+
+type ram_type is array(0 to ((2**(maxAddrBit+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);
+
+shared variable ram : ram_type :=
+(
+0 => x"0b0b0b0b",
+1 => x"80700b0b",
+2 => x"80d3900c",
+3 => x"3a0b0b80",
+4 => x"c8b20400",
+5 => x"00000000",
+6 => x"00000000",
+7 => x"00000000",
+8 => x"80088408",
+9 => x"88080b0b",
+10 => x"80c8fb2d",
+11 => x"880c840c",
+12 => x"800c0400",
+13 => x"00000000",
+14 => x"00000000",
+15 => x"00000000",
+16 => x"71fd0608",
+17 => x"72830609",
+18 => x"81058205",
+19 => x"832b2a83",
+20 => x"ffff0652",
+21 => x"04000000",
+22 => x"00000000",
+23 => x"00000000",
+24 => x"71fd0608",
+25 => x"83ffff73",
+26 => x"83060981",
+27 => x"05820583",
+28 => x"2b2b0906",
+29 => x"7383ffff",
+30 => x"0b0b0b0b",
+31 => x"83a70400",
+32 => x"72098105",
+33 => x"72057373",
+34 => x"09060906",
+35 => x"73097306",
+36 => x"070a8106",
+37 => x"53510400",
+38 => x"00000000",
+39 => x"00000000",
+40 => x"72722473",
+41 => x"732e0753",
+42 => x"51040000",
+43 => x"00000000",
+44 => x"00000000",
+45 => x"00000000",
+46 => x"00000000",
+47 => x"00000000",
+48 => x"71737109",
+49 => x"71068106",
+50 => x"30720a10",
+51 => x"0a720a10",
+52 => x"0a31050a",
+53 => x"81065151",
+54 => x"53510400",
+55 => x"00000000",
+56 => x"72722673",
+57 => x"732e0753",
+58 => x"51040000",
+59 => x"00000000",
+60 => x"00000000",
+61 => x"00000000",
+62 => x"00000000",
+63 => x"00000000",
+64 => x"00000000",
+65 => x"00000000",
+66 => x"00000000",
+67 => x"00000000",
+68 => x"00000000",
+69 => x"00000000",
+70 => x"00000000",
+71 => x"00000000",
+72 => x"0b0b0b88",
+73 => x"c4040000",
+74 => x"00000000",
+75 => x"00000000",
+76 => x"00000000",
+77 => x"00000000",
+78 => x"00000000",
+79 => x"00000000",
+80 => x"720a722b",
+81 => x"0a535104",
+82 => x"00000000",
+83 => x"00000000",
+84 => x"00000000",
+85 => x"00000000",
+86 => x"00000000",
+87 => x"00000000",
+88 => x"72729f06",
+89 => x"0981050b",
+90 => x"0b0b88a7",
+91 => x"05040000",
+92 => x"00000000",
+93 => x"00000000",
+94 => x"00000000",
+95 => x"00000000",
+96 => x"72722aff",
+97 => x"739f062a",
+98 => x"0974090a",
+99 => x"8106ff05",
+100 => x"06075351",
+101 => x"04000000",
+102 => x"00000000",
+103 => x"00000000",
+104 => x"71715351",
+105 => x"020d0406",
+106 => x"73830609",
+107 => x"81058205",
+108 => x"832b0b2b",
+109 => x"0772fc06",
+110 => x"0c515104",
+111 => x"00000000",
+112 => x"72098105",
+113 => x"72050970",
+114 => x"81050906",
+115 => x"0a810653",
+116 => x"51040000",
+117 => x"00000000",
+118 => x"00000000",
+119 => x"00000000",
+120 => x"72098105",
+121 => x"72050970",
+122 => x"81050906",
+123 => x"0a098106",
+124 => x"53510400",
+125 => x"00000000",
+126 => x"00000000",
+127 => x"00000000",
+128 => x"71098105",
+129 => x"52040000",
+130 => x"00000000",
+131 => x"00000000",
+132 => x"00000000",
+133 => x"00000000",
+134 => x"00000000",
+135 => x"00000000",
+136 => x"72720981",
+137 => x"05055351",
+138 => x"04000000",
+139 => x"00000000",
+140 => x"00000000",
+141 => x"00000000",
+142 => x"00000000",
+143 => x"00000000",
+144 => x"72097206",
+145 => x"73730906",
+146 => x"07535104",
+147 => x"00000000",
+148 => x"00000000",
+149 => x"00000000",
+150 => x"00000000",
+151 => x"00000000",
+152 => x"71fc0608",
+153 => x"72830609",
+154 => x"81058305",
+155 => x"1010102a",
+156 => x"81ff0652",
+157 => x"04000000",
+158 => x"00000000",
+159 => x"00000000",
+160 => x"71fc0608",
+161 => x"0b0b80d2",
+162 => x"fc738306",
+163 => x"10100508",
+164 => x"060b0b0b",
+165 => x"88aa0400",
+166 => x"00000000",
+167 => x"00000000",
+168 => x"80088408",
+169 => x"88087575",
+170 => x"0b0b0b8d",
+171 => x"872d5050",
+172 => x"80085688",
+173 => x"0c840c80",
+174 => x"0c510400",
+175 => x"00000000",
+176 => x"80088408",
+177 => x"88087575",
+178 => x"0b0b0b8d",
+179 => x"cb2d5050",
+180 => x"80085688",
+181 => x"0c840c80",
+182 => x"0c510400",
+183 => x"00000000",
+184 => x"72097081",
+185 => x"0509060a",
+186 => x"8106ff05",
+187 => x"70547106",
+188 => x"73097274",
+189 => x"05ff0506",
+190 => x"07515151",
+191 => x"04000000",
+192 => x"72097081",
+193 => x"0509060a",
+194 => x"098106ff",
+195 => x"05705471",
+196 => x"06730972",
+197 => x"7405ff05",
+198 => x"06075151",
+199 => x"51040000",
+200 => x"05ff0504",
+201 => x"00000000",
+202 => x"00000000",
+203 => x"00000000",
+204 => x"00000000",
+205 => x"00000000",
+206 => x"00000000",
+207 => x"00000000",
+208 => x"810b0b0b",
+209 => x"80d38c0c",
+210 => x"51040000",
+211 => x"00000000",
+212 => x"00000000",
+213 => x"00000000",
+214 => x"00000000",
+215 => x"00000000",
+216 => x"71810552",
+217 => x"04000000",
+218 => x"00000000",
+219 => x"00000000",
+220 => x"00000000",
+221 => x"00000000",
+222 => x"00000000",
+223 => x"00000000",
+224 => x"00000000",
+225 => x"00000000",
+226 => x"00000000",
+227 => x"00000000",
+228 => x"00000000",
+229 => x"00000000",
+230 => x"00000000",
+231 => x"00000000",
+232 => x"02840572",
+233 => x"10100552",
+234 => x"04000000",
+235 => x"00000000",
+236 => x"00000000",
+237 => x"00000000",
+238 => x"00000000",
+239 => x"00000000",
+240 => x"00000000",
+241 => x"00000000",
+242 => x"00000000",
+243 => x"00000000",
+244 => x"00000000",
+245 => x"00000000",
+246 => x"00000000",
+247 => x"00000000",
+248 => x"717105ff",
+249 => x"05715351",
+250 => x"020d0400",
+251 => x"00000000",
+252 => x"00000000",
+253 => x"00000000",
+254 => x"00000000",
+255 => x"00000000",
+256 => x"83d93f80",
+257 => x"ca953f04",
+258 => x"10101010",
+259 => x"10101010",
+260 => x"10101010",
+261 => x"10101010",
+262 => x"10101010",
+263 => x"10101010",
+264 => x"10101010",
+265 => x"10101053",
+266 => x"51047381",
+267 => x"ff067383",
+268 => x"06098105",
+269 => x"83051010",
+270 => x"102b0772",
+271 => x"fc060c51",
+272 => x"51043c04",
+273 => x"72728072",
+274 => x"8106ff05",
+275 => x"09720605",
+276 => x"71105272",
+277 => x"0a100a53",
+278 => x"72ed3851",
+279 => x"51535104",
+280 => x"ff3d0d0b",
+281 => x"0b80e2f8",
+282 => x"08528412",
+283 => x"08708106",
+284 => x"515170f6",
+285 => x"38710881",
+286 => x"ff06800c",
+287 => x"833d0d04",
+288 => x"ff3d0d0b",
+289 => x"0b80e2f8",
+290 => x"08528412",
+291 => x"08700a10",
+292 => x"0a708106",
+293 => x"51515170",
+294 => x"f1387372",
+295 => x"0c833d0d",
+296 => x"0480d38c",
+297 => x"08802ea8",
+298 => x"38838080",
+299 => x"0b0b0b80",
+300 => x"e2f80c82",
+301 => x"a0800b0b",
+302 => x"0b80e2fc",
+303 => x"0c829080",
+304 => x"0b80e38c",
+305 => x"0c0b0b80",
+306 => x"e3800b80",
+307 => x"e3900c04",
+308 => x"f8808080",
+309 => x"a40b0b0b",
+310 => x"80e2f80c",
+311 => x"f8808082",
+312 => x"800b0b0b",
+313 => x"80e2fc0c",
+314 => x"f8808084",
+315 => x"800b80e3",
+316 => x"8c0cf880",
+317 => x"8080940b",
+318 => x"80e3900c",
+319 => x"f8808080",
+320 => x"9c0b80e3",
+321 => x"880cf880",
+322 => x"8080a00b",
+323 => x"80e3940c",
+324 => x"04f23d0d",
+325 => x"600b0b80",
+326 => x"e2fc0856",
+327 => x"5d82750c",
+328 => x"8059805a",
+329 => x"800b8f3d",
+330 => x"71101017",
+331 => x"70085957",
+332 => x"5d5b8076",
+333 => x"81ff067c",
+334 => x"832b5658",
+335 => x"5276537b",
+336 => x"5181fa3f",
+337 => x"7d7f7a72",
+338 => x"077c7207",
+339 => x"71716081",
+340 => x"05415f5d",
+341 => x"5b595755",
+342 => x"7a8724bb",
+343 => x"380b0b80",
+344 => x"e2fc087b",
+345 => x"10101170",
+346 => x"08585155",
+347 => x"807681ff",
+348 => x"067c832b",
+349 => x"56585276",
+350 => x"537b5181",
+351 => x"c03f7d7f",
+352 => x"7a72077c",
+353 => x"72077171",
+354 => x"60810541",
+355 => x"5f5d5b59",
+356 => x"5755877b",
+357 => x"25c73876",
+358 => x"7d0c7784",
+359 => x"1e0c7c80",
+360 => x"0c903d0d",
+361 => x"04ff3d0d",
+362 => x"80e38433",
+363 => x"5170a738",
+364 => x"80d39808",
+365 => x"70085252",
+366 => x"70802e94",
+367 => x"38841280",
+368 => x"d3980c70",
+369 => x"2d80d398",
+370 => x"08700852",
+371 => x"5270ee38",
+372 => x"810b80e3",
+373 => x"8434833d",
+374 => x"0d040480",
+375 => x"3d0d0b0b",
+376 => x"80e2f408",
+377 => x"802e8e38",
+378 => x"0b0b0b0b",
+379 => x"800b802e",
+380 => x"09810685",
+381 => x"38823d0d",
+382 => x"040b0b80",
+383 => x"e2f4510b",
+384 => x"0b0bf3fc",
+385 => x"3f823d0d",
+386 => x"0404fe3d",
+387 => x"0d89530b",
+388 => x"0b80d2c8",
+389 => x"51838d3f",
+390 => x"0b0b80d2",
+391 => x"d8518384",
+392 => x"3f810a0b",
+393 => x"80e3980c",
+394 => x"ff0b80e3",
+395 => x"9c0cff13",
+396 => x"53728025",
+397 => x"da387280",
+398 => x"0c843d0d",
+399 => x"04f93d0d",
+400 => x"797b7d7f",
+401 => x"56545254",
+402 => x"72802ea0",
+403 => x"38705771",
+404 => x"58a07331",
+405 => x"52807225",
+406 => x"a1387770",
+407 => x"742b5770",
+408 => x"732a7875",
+409 => x"2b075651",
+410 => x"74765351",
+411 => x"70740c71",
+412 => x"84150c73",
+413 => x"800c893d",
+414 => x"0d048056",
+415 => x"7772302b",
+416 => x"55747653",
+417 => x"51e639fb",
+418 => x"3d0d7779",
+419 => x"55558056",
+420 => x"757524ab",
+421 => x"38807424",
+422 => x"9d388053",
+423 => x"73527451",
+424 => x"80e13f80",
+425 => x"08547580",
+426 => x"2e853880",
+427 => x"08305473",
+428 => x"800c873d",
+429 => x"0d047330",
+430 => x"76813257",
+431 => x"54dc3974",
+432 => x"30558156",
+433 => x"738025d2",
+434 => x"38ec39fa",
+435 => x"3d0d787a",
+436 => x"57558057",
+437 => x"767524a4",
+438 => x"38759f2c",
+439 => x"54815375",
+440 => x"74327431",
+441 => x"5274519b",
+442 => x"3f800854",
+443 => x"76802e85",
+444 => x"38800830",
+445 => x"5473800c",
+446 => x"883d0d04",
+447 => x"74305581",
+448 => x"57d739fc",
+449 => x"3d0d7678",
+450 => x"53548153",
+451 => x"80747326",
+452 => x"52557280",
+453 => x"2e983870",
+454 => x"802eab38",
+455 => x"807224a6",
+456 => x"38711073",
+457 => x"10757226",
+458 => x"53545272",
+459 => x"ea387351",
+460 => x"78833874",
+461 => x"5170800c",
+462 => x"863d0d04",
+463 => x"720a100a",
+464 => x"720a100a",
+465 => x"53537280",
+466 => x"2ee43871",
+467 => x"7426ed38",
+468 => x"73723175",
+469 => x"7407740a",
+470 => x"100a740a",
+471 => x"100a5555",
+472 => x"5654e339",
+473 => x"f73d0d7c",
+474 => x"70525380",
+475 => x"f93f7254",
+476 => x"80085580",
+477 => x"d2e85681",
+478 => x"57800881",
+479 => x"055a8b3d",
+480 => x"e4115953",
+481 => x"8259f413",
+482 => x"527b8811",
+483 => x"08525381",
+484 => x"b03f8008",
+485 => x"30708008",
+486 => x"079f2c8a",
+487 => x"07800c53",
+488 => x"8b3d0d04",
+489 => x"f63d0d7c",
+490 => x"80d39c08",
+491 => x"71535553",
+492 => x"b53f7255",
+493 => x"80085680",
+494 => x"d2e85781",
+495 => x"58800881",
+496 => x"055b8c3d",
+497 => x"e4115a53",
+498 => x"825af413",
+499 => x"52881408",
+500 => x"5180ee3f",
+501 => x"80083070",
+502 => x"8008079f",
+503 => x"2c8a0780",
+504 => x"0c548c3d",
+505 => x"0d04fd3d",
+506 => x"0d757071",
+507 => x"83065355",
+508 => x"5270b438",
+509 => x"71700870",
+510 => x"09f7fbfd",
+511 => x"ff1206f8",
+512 => x"84828180",
+513 => x"06545253",
+514 => x"719b3884",
+515 => x"13700870",
+516 => x"09f7fbfd",
+517 => x"ff1206f8",
+518 => x"84828180",
+519 => x"06545253",
+520 => x"71802ee7",
+521 => x"38725271",
+522 => x"33537280",
+523 => x"2e8a3881",
+524 => x"12703354",
+525 => x"5272f838",
+526 => x"71743180",
+527 => x"0c853d0d",
+528 => x"04f23d0d",
+529 => x"60628811",
+530 => x"08705856",
+531 => x"5f5a7380",
+532 => x"2e818c38",
+533 => x"8c1a2270",
+534 => x"832a8132",
+535 => x"81065658",
+536 => x"74863890",
+537 => x"1a089138",
+538 => x"795190b7",
+539 => x"3fff5580",
+540 => x"0880ec38",
+541 => x"8c1a2258",
+542 => x"7d085580",
+543 => x"7883ffff",
+544 => x"06700a10",
+545 => x"0a810641",
+546 => x"5c577e77",
+547 => x"2e80d738",
+548 => x"76903874",
+549 => x"08841608",
+550 => x"88175758",
+551 => x"5676802e",
+552 => x"f2387654",
+553 => x"88807727",
+554 => x"84388880",
+555 => x"54735375",
+556 => x"529c1a08",
+557 => x"51a41a08",
+558 => x"58772d80",
+559 => x"0b800825",
+560 => x"82e03880",
+561 => x"08167780",
+562 => x"08317f88",
+563 => x"05088008",
+564 => x"31706188",
+565 => x"050c5b58",
+566 => x"5678ffb4",
+567 => x"38805574",
+568 => x"800c903d",
+569 => x"0d047a81",
+570 => x"32810677",
+571 => x"40567580",
+572 => x"2e81bd38",
+573 => x"76903874",
+574 => x"08841608",
+575 => x"88175758",
+576 => x"5976802e",
+577 => x"f238881a",
+578 => x"087883ff",
+579 => x"ff067089",
+580 => x"2a810656",
+581 => x"59567380",
+582 => x"2e82f838",
+583 => x"7577278b",
+584 => x"3877872a",
+585 => x"81065c7b",
+586 => x"82b53876",
+587 => x"76278338",
+588 => x"76567553",
+589 => x"78527908",
+590 => x"5185833f",
+591 => x"881a0876",
+592 => x"31881b0c",
+593 => x"7908167a",
+594 => x"0c765675",
+595 => x"19777731",
+596 => x"7f880508",
+597 => x"78317061",
+598 => x"88050c41",
+599 => x"58597e80",
+600 => x"2efefa38",
+601 => x"8c1a2258",
+602 => x"ff8a3978",
+603 => x"79547c53",
+604 => x"7b525684",
+605 => x"c93f881a",
+606 => x"08793188",
+607 => x"1b0c7908",
+608 => x"197a0c7c",
+609 => x"76315d7c",
+610 => x"8e387951",
+611 => x"8ff23f80",
+612 => x"08818f38",
+613 => x"80085f75",
+614 => x"1c777731",
+615 => x"7f880508",
+616 => x"78317061",
+617 => x"88050c5d",
+618 => x"585c7a80",
+619 => x"2efeae38",
+620 => x"76818338",
+621 => x"74088416",
+622 => x"08881757",
+623 => x"585c7680",
+624 => x"2ef23876",
+625 => x"538a527b",
+626 => x"5182d33f",
+627 => x"80087c31",
+628 => x"81055d80",
+629 => x"08843881",
+630 => x"175d815f",
+631 => x"7c59767d",
+632 => x"27833876",
+633 => x"59941a08",
+634 => x"881b0811",
+635 => x"5758807a",
+636 => x"085c5490",
+637 => x"1a087b27",
+638 => x"83388154",
+639 => x"75792584",
+640 => x"3873ba38",
+641 => x"777924fe",
+642 => x"e2387753",
+643 => x"7b529c1a",
+644 => x"0851a41a",
+645 => x"0859782d",
+646 => x"80085680",
+647 => x"088024fe",
+648 => x"e2388c1a",
+649 => x"2280c007",
+650 => x"5e7d8c1b",
+651 => x"23ff5574",
+652 => x"800c903d",
+653 => x"0d047eff",
+654 => x"a338ff87",
+655 => x"3975537b",
+656 => x"527a5182",
+657 => x"f93f7908",
+658 => x"167a0c79",
+659 => x"518eb13f",
+660 => x"8008cf38",
+661 => x"7c76315d",
+662 => x"7cfebc38",
+663 => x"feac3990",
+664 => x"1a087a08",
+665 => x"71317811",
+666 => x"70565a57",
+667 => x"5280d39c",
+668 => x"08518494",
+669 => x"3f800880",
+670 => x"2effa738",
+671 => x"8008901b",
+672 => x"0c800816",
+673 => x"7a0c7794",
+674 => x"1b0c7688",
+675 => x"1b0c7656",
+676 => x"fd993979",
+677 => x"0858901a",
+678 => x"08782783",
+679 => x"38815475",
+680 => x"77278438",
+681 => x"73b33894",
+682 => x"1a085473",
+683 => x"772680d3",
+684 => x"38735378",
+685 => x"529c1a08",
+686 => x"51a41a08",
+687 => x"58772d80",
+688 => x"08568008",
+689 => x"8024fd83",
+690 => x"388c1a22",
+691 => x"80c0075e",
+692 => x"7d8c1b23",
+693 => x"ff55fed7",
+694 => x"39755378",
+695 => x"52775181",
+696 => x"dd3f7908",
+697 => x"167a0c79",
+698 => x"518d953f",
+699 => x"8008802e",
+700 => x"fcd9388c",
+701 => x"1a2280c0",
+702 => x"075e7d8c",
+703 => x"1b23ff55",
+704 => x"fead3976",
+705 => x"77547953",
+706 => x"78525681",
+707 => x"b13f881a",
+708 => x"08773188",
+709 => x"1b0c7908",
+710 => x"177a0cfc",
+711 => x"ae39fa3d",
+712 => x"0d7a7902",
+713 => x"8805a705",
+714 => x"33555354",
+715 => x"83742780",
+716 => x"df387183",
+717 => x"06517080",
+718 => x"d7387171",
+719 => x"57558351",
+720 => x"75828029",
+721 => x"13ff1252",
+722 => x"56708025",
+723 => x"f3388374",
+724 => x"27bc3874",
+725 => x"08763270",
+726 => x"09f7fbfd",
+727 => x"ff1206f8",
+728 => x"84828180",
+729 => x"06515170",
+730 => x"802e9838",
+731 => x"74518052",
+732 => x"70335772",
+733 => x"772eb938",
+734 => x"81118113",
+735 => x"53518372",
+736 => x"27ee38fc",
+737 => x"14841656",
+738 => x"54738326",
+739 => x"c6387452",
+740 => x"ff145170",
+741 => x"ff2e9738",
+742 => x"71335472",
+743 => x"742e9838",
+744 => x"8112ff12",
+745 => x"525270ff",
+746 => x"2e098106",
+747 => x"eb388051",
+748 => x"70800c88",
+749 => x"3d0d0471",
+750 => x"800c883d",
+751 => x"0d04fa3d",
+752 => x"0d787a7c",
+753 => x"72727259",
+754 => x"57555856",
+755 => x"57747727",
+756 => x"b2387515",
+757 => x"51767127",
+758 => x"aa387076",
+759 => x"18ff1853",
+760 => x"535370ff",
+761 => x"2e9638ff",
+762 => x"12ff1454",
+763 => x"52723372",
+764 => x"34ff1151",
+765 => x"70ff2e09",
+766 => x"8106ec38",
+767 => x"76800c88",
+768 => x"3d0d048f",
+769 => x"762780e6",
+770 => x"38747707",
+771 => x"83065170",
+772 => x"80dc3876",
+773 => x"75525370",
+774 => x"70840552",
+775 => x"08737084",
+776 => x"05550c72",
+777 => x"71708405",
+778 => x"53087170",
+779 => x"8405530c",
+780 => x"71708405",
+781 => x"53087170",
+782 => x"8405530c",
+783 => x"71708405",
+784 => x"53087170",
+785 => x"8405530c",
+786 => x"f0155553",
+787 => x"738f26c7",
+788 => x"38837427",
+789 => x"95387070",
+790 => x"84055208",
+791 => x"73708405",
+792 => x"550cfc14",
+793 => x"54738326",
+794 => x"ed387271",
+795 => x"5452ff14",
+796 => x"5170ff2e",
+797 => x"ff863872",
+798 => x"70810554",
+799 => x"33727081",
+800 => x"055434ff",
+801 => x"1151ea39",
+802 => x"ef3d0d63",
+803 => x"6567405d",
+804 => x"427b802e",
+805 => x"85823861",
+806 => x"51a9eb3f",
+807 => x"f81c7084",
+808 => x"120870fc",
+809 => x"0670628b",
+810 => x"0570f806",
+811 => x"4159455c",
+812 => x"5f415796",
+813 => x"742782c5",
+814 => x"38807b24",
+815 => x"7e7c2607",
+816 => x"58805477",
+817 => x"742e0981",
+818 => x"0682ab38",
+819 => x"787b2581",
+820 => x"fe387817",
+821 => x"80dad80b",
+822 => x"8805085b",
+823 => x"5679762e",
+824 => x"84c53884",
+825 => x"160870fe",
+826 => x"06178411",
+827 => x"08810641",
+828 => x"55557e82",
+829 => x"8d3874fc",
+830 => x"06587976",
+831 => x"2e84e338",
+832 => x"78185f7e",
+833 => x"7b2581ff",
+834 => x"387c8106",
+835 => x"547382c1",
+836 => x"38767708",
+837 => x"31841108",
+838 => x"fc065657",
+839 => x"75802e91",
+840 => x"3879762e",
+841 => x"84f03874",
+842 => x"18195877",
+843 => x"7b258491",
+844 => x"3876802e",
+845 => x"829b3878",
+846 => x"15567a76",
+847 => x"24829238",
+848 => x"8c170888",
+849 => x"1808718c",
+850 => x"120c8812",
+851 => x"0c5e7559",
+852 => x"881761fc",
+853 => x"055b5679",
+854 => x"a42685ff",
+855 => x"387b7659",
+856 => x"55937a27",
+857 => x"80c9387b",
+858 => x"7084055d",
+859 => x"087c5676",
+860 => x"0c747084",
+861 => x"0556088c",
+862 => x"180c9017",
+863 => x"589b7a27",
+864 => x"ae387470",
+865 => x"84055608",
+866 => x"780c7470",
+867 => x"84055608",
+868 => x"94180c98",
+869 => x"1758a37a",
+870 => x"27953874",
+871 => x"70840556",
+872 => x"08780c74",
+873 => x"70840556",
+874 => x"089c180c",
+875 => x"a0175874",
+876 => x"70840556",
+877 => x"08755f78",
+878 => x"7084055a",
+879 => x"0c777e70",
+880 => x"84054008",
+881 => x"71708405",
+882 => x"530c7e08",
+883 => x"710c5d78",
+884 => x"7b315675",
+885 => x"8f2680c9",
+886 => x"38841708",
+887 => x"81067907",
+888 => x"84180c78",
+889 => x"17841108",
+890 => x"81078412",
+891 => x"0c5b6151",
+892 => x"a7953f88",
+893 => x"17547380",
+894 => x"0c933d0d",
+895 => x"04905bfd",
+896 => x"b8397756",
+897 => x"fe83398c",
+898 => x"16088817",
+899 => x"08718c12",
+900 => x"0c88120c",
+901 => x"587e707c",
+902 => x"3157598f",
+903 => x"7627ffb9",
+904 => x"387a1784",
+905 => x"18088106",
+906 => x"7c078419",
+907 => x"0c768107",
+908 => x"84120c76",
+909 => x"11841108",
+910 => x"81078412",
+911 => x"0c5b8805",
+912 => x"5261518f",
+913 => x"de3f6151",
+914 => x"a6bd3f88",
+915 => x"1754ffa6",
+916 => x"397d5261",
+917 => x"5197db3f",
+918 => x"80085a80",
+919 => x"08802e81",
+920 => x"ab388008",
+921 => x"f8056084",
+922 => x"0508fe06",
+923 => x"61055855",
+924 => x"74772e83",
+925 => x"f238fc19",
+926 => x"5877a426",
+927 => x"81b0387b",
+928 => x"80085657",
+929 => x"93782780",
+930 => x"dc387b70",
+931 => x"70840552",
+932 => x"08800870",
+933 => x"8405800c",
+934 => x"0c800871",
+935 => x"70840553",
+936 => x"085d567b",
+937 => x"76708405",
+938 => x"580c579b",
+939 => x"7827b638",
+940 => x"76708405",
+941 => x"58087570",
+942 => x"8405570c",
+943 => x"76708405",
+944 => x"58087570",
+945 => x"8405570c",
+946 => x"a3782799",
+947 => x"38767084",
+948 => x"05580875",
+949 => x"70840557",
+950 => x"0c767084",
+951 => x"05580875",
+952 => x"70840557",
+953 => x"0c767084",
+954 => x"05580877",
+955 => x"5e757084",
+956 => x"05570c74",
+957 => x"7d708405",
+958 => x"5f087170",
+959 => x"8405530c",
+960 => x"7d08710c",
+961 => x"5f7b5261",
+962 => x"518e983f",
+963 => x"6151a4f7",
+964 => x"3f79800c",
+965 => x"933d0d04",
+966 => x"7d526151",
+967 => x"96943f80",
+968 => x"08800c93",
+969 => x"3d0d0484",
+970 => x"160855fb",
+971 => x"c9397753",
+972 => x"7b528008",
+973 => x"51a2a93f",
+974 => x"7b526151",
+975 => x"8de53fcc",
+976 => x"398c1608",
+977 => x"88170871",
+978 => x"8c120c88",
+979 => x"120c5d8c",
+980 => x"17088818",
+981 => x"08718c12",
+982 => x"0c88120c",
+983 => x"597759fb",
+984 => x"ef397818",
+985 => x"901c4055",
+986 => x"7e7524fb",
+987 => x"9c387a17",
+988 => x"7080dad8",
+989 => x"0b88050c",
+990 => x"757c3181",
+991 => x"0784120c",
+992 => x"56841708",
+993 => x"81067b07",
+994 => x"84180c61",
+995 => x"51a3f83f",
+996 => x"881754fc",
+997 => x"e1397418",
+998 => x"19901c5e",
+999 => x"5a7c7a24",
+1000 => x"fb8f388c",
+1001 => x"17088818",
+1002 => x"08718c12",
+1003 => x"0c88120c",
+1004 => x"5e881761",
+1005 => x"fc055759",
+1006 => x"75a42681",
+1007 => x"b6387b79",
+1008 => x"59559376",
+1009 => x"2780c938",
+1010 => x"7b708405",
+1011 => x"5d087c56",
+1012 => x"790c7470",
+1013 => x"84055608",
+1014 => x"8c180c90",
+1015 => x"17589b76",
+1016 => x"27ae3874",
+1017 => x"70840556",
+1018 => x"08780c74",
+1019 => x"70840556",
+1020 => x"0894180c",
+1021 => x"981758a3",
+1022 => x"76279538",
+1023 => x"74708405",
+1024 => x"5608780c",
+1025 => x"74708405",
+1026 => x"56089c18",
+1027 => x"0ca01758",
+1028 => x"74708405",
+1029 => x"56087541",
+1030 => x"78708405",
+1031 => x"5a0c7760",
+1032 => x"70840542",
+1033 => x"08717084",
+1034 => x"05530c60",
+1035 => x"08710c5e",
+1036 => x"7a177080",
+1037 => x"dad80b88",
+1038 => x"050c7a7c",
+1039 => x"31810784",
+1040 => x"120c5884",
+1041 => x"17088106",
+1042 => x"7b078418",
+1043 => x"0c6151a2",
+1044 => x"b63f7854",
+1045 => x"73800c93",
+1046 => x"3d0d0479",
+1047 => x"537b5275",
+1048 => x"519ffd3f",
+1049 => x"fae93984",
+1050 => x"1508fc06",
+1051 => x"19605859",
+1052 => x"fadd3975",
+1053 => x"537b5278",
+1054 => x"519fe53f",
+1055 => x"7a177080",
+1056 => x"dad80b88",
+1057 => x"050c7a7c",
+1058 => x"31810784",
+1059 => x"120c5884",
+1060 => x"17088106",
+1061 => x"7b078418",
+1062 => x"0c6151a1",
+1063 => x"ea3f7854",
+1064 => x"ffb239fa",
+1065 => x"3d0d7880",
+1066 => x"d39c0854",
+1067 => x"55b81308",
+1068 => x"802e81af",
+1069 => x"388c1522",
+1070 => x"7083ffff",
+1071 => x"0670832a",
+1072 => x"81328106",
+1073 => x"55555672",
+1074 => x"802e80da",
+1075 => x"3873842a",
+1076 => x"81328106",
+1077 => x"57ff5376",
+1078 => x"80f23873",
+1079 => x"822a8106",
+1080 => x"5473802e",
+1081 => x"b938b015",
+1082 => x"08547380",
+1083 => x"2e9c3880",
+1084 => x"c0155373",
+1085 => x"732e8f38",
+1086 => x"735280d3",
+1087 => x"9c08518a",
+1088 => x"a23f8c15",
+1089 => x"225676b0",
+1090 => x"160c75db",
+1091 => x"0657768c",
+1092 => x"1623800b",
+1093 => x"84160c90",
+1094 => x"1508750c",
+1095 => x"76567588",
+1096 => x"0754738c",
+1097 => x"16239015",
+1098 => x"08802ebf",
+1099 => x"388c1522",
+1100 => x"70810655",
+1101 => x"53739c38",
+1102 => x"720a100a",
+1103 => x"81065675",
+1104 => x"85389415",
+1105 => x"08547388",
+1106 => x"160c8053",
+1107 => x"72800c88",
+1108 => x"3d0d0480",
+1109 => x"0b88160c",
+1110 => x"94150830",
+1111 => x"98160c80",
+1112 => x"53ea3972",
+1113 => x"5182a63f",
+1114 => x"fecb3974",
+1115 => x"518fc03f",
+1116 => x"8c152270",
+1117 => x"81065553",
+1118 => x"73802eff",
+1119 => x"bb38d439",
+1120 => x"f83d0d7a",
+1121 => x"5776802e",
+1122 => x"81973880",
+1123 => x"d39c0854",
+1124 => x"b8140880",
+1125 => x"2e80eb38",
+1126 => x"8c172270",
+1127 => x"902b7090",
+1128 => x"2c70832a",
+1129 => x"81328106",
+1130 => x"5b5b5755",
+1131 => x"7780cb38",
+1132 => x"90170856",
+1133 => x"75802e80",
+1134 => x"c1387608",
+1135 => x"76317678",
+1136 => x"0c798306",
+1137 => x"55557385",
+1138 => x"38941708",
+1139 => x"58778818",
+1140 => x"0c807525",
+1141 => x"a5387453",
+1142 => x"75529c17",
+1143 => x"0851a417",
+1144 => x"0854732d",
+1145 => x"800b8008",
+1146 => x"2580c938",
+1147 => x"80081675",
+1148 => x"80083156",
+1149 => x"56748024",
+1150 => x"dd38800b",
+1151 => x"800c8a3d",
+1152 => x"0d047351",
+1153 => x"81873f8c",
+1154 => x"17227090",
+1155 => x"2b70902c",
+1156 => x"70832a81",
+1157 => x"3281065b",
+1158 => x"5b575577",
+1159 => x"dd38ff90",
+1160 => x"39a38052",
+1161 => x"80d39c08",
+1162 => x"518cd43f",
+1163 => x"8008800c",
+1164 => x"8a3d0d04",
+1165 => x"8c172280",
+1166 => x"c0075877",
+1167 => x"8c1823ff",
+1168 => x"0b800c8a",
+1169 => x"3d0d04fa",
+1170 => x"3d0d7970",
+1171 => x"80dc298c",
+1172 => x"11547a53",
+1173 => x"56578fda",
+1174 => x"3f800880",
+1175 => x"08555680",
+1176 => x"08802ea2",
+1177 => x"3880088c",
+1178 => x"0554800b",
+1179 => x"80080c76",
+1180 => x"80088405",
+1181 => x"0c738008",
+1182 => x"88050c74",
+1183 => x"53805273",
+1184 => x"519cf93f",
+1185 => x"75547380",
+1186 => x"0c883d0d",
+1187 => x"04fe3d0d",
+1188 => x"74aacc0b",
+1189 => x"bc120c53",
+1190 => x"810bb814",
+1191 => x"0c800b84",
+1192 => x"dc140c83",
+1193 => x"0b84e014",
+1194 => x"0c84e813",
+1195 => x"84e4140c",
+1196 => x"84130851",
+1197 => x"8070720c",
+1198 => x"7084130c",
+1199 => x"7088130c",
+1200 => x"52840b8c",
+1201 => x"1223718e",
+1202 => x"12237190",
+1203 => x"120c7194",
+1204 => x"120c7198",
+1205 => x"120c709c",
+1206 => x"120c80c3",
+1207 => x"bc0ba012",
+1208 => x"0c80c488",
+1209 => x"0ba4120c",
+1210 => x"80c5840b",
+1211 => x"a8120c80",
+1212 => x"c5d50bac",
+1213 => x"120c8813",
+1214 => x"0872710c",
+1215 => x"7284120c",
+1216 => x"7288120c",
+1217 => x"51890b8c",
+1218 => x"1223810b",
+1219 => x"8e122371",
+1220 => x"90120c71",
+1221 => x"94120c71",
+1222 => x"98120c70",
+1223 => x"9c120c80",
+1224 => x"c3bc0ba0",
+1225 => x"120c80c4",
+1226 => x"880ba412",
+1227 => x"0c80c584",
+1228 => x"0ba8120c",
+1229 => x"80c5d50b",
+1230 => x"ac120c8c",
+1231 => x"13087271",
+1232 => x"0c728412",
+1233 => x"0c728812",
+1234 => x"0c518a0b",
+1235 => x"8c122382",
+1236 => x"0b8e1223",
+1237 => x"7190120c",
+1238 => x"7194120c",
+1239 => x"7198120c",
+1240 => x"709c120c",
+1241 => x"80c3bc0b",
+1242 => x"a0120c80",
+1243 => x"c4880ba4",
+1244 => x"120c80c5",
+1245 => x"840ba812",
+1246 => x"0c80c5d5",
+1247 => x"0bac120c",
+1248 => x"843d0d04",
+1249 => x"f83d0d7a",
+1250 => x"80d39c08",
+1251 => x"b8110857",
+1252 => x"57587481",
+1253 => x"ec38aacc",
+1254 => x"0bbc170c",
+1255 => x"810bb817",
+1256 => x"0c7484dc",
+1257 => x"170c830b",
+1258 => x"84e0170c",
+1259 => x"84e81684",
+1260 => x"e4170c84",
+1261 => x"16087571",
+1262 => x"0c758412",
+1263 => x"0c758812",
+1264 => x"0c59840b",
+1265 => x"8c1a2374",
+1266 => x"8e1a2374",
+1267 => x"901a0c74",
+1268 => x"941a0c74",
+1269 => x"981a0c78",
+1270 => x"9c1a0c80",
+1271 => x"c3bc0ba0",
+1272 => x"1a0c80c4",
+1273 => x"880ba41a",
+1274 => x"0c80c584",
+1275 => x"0ba81a0c",
+1276 => x"80c5d50b",
+1277 => x"ac1a0c88",
+1278 => x"16087571",
+1279 => x"0c758412",
+1280 => x"0c758812",
+1281 => x"0c57890b",
+1282 => x"8c182381",
+1283 => x"0b8e1823",
+1284 => x"7490180c",
+1285 => x"7494180c",
+1286 => x"7498180c",
+1287 => x"769c180c",
+1288 => x"80c3bc0b",
+1289 => x"a0180c80",
+1290 => x"c4880ba4",
+1291 => x"180c80c5",
+1292 => x"840ba818",
+1293 => x"0c80c5d5",
+1294 => x"0bac180c",
+1295 => x"8c160875",
+1296 => x"710c7584",
+1297 => x"120c7588",
+1298 => x"120c548a",
+1299 => x"0b8c1523",
+1300 => x"820b8e15",
+1301 => x"23749015",
+1302 => x"0c749415",
+1303 => x"0c749815",
+1304 => x"0c739c15",
+1305 => x"0c80c3bc",
+1306 => x"0ba0150c",
+1307 => x"80c4880b",
+1308 => x"a4150c80",
+1309 => x"c5840ba8",
+1310 => x"150c80c5",
+1311 => x"d50bac15",
+1312 => x"0c84dc16",
+1313 => x"88110884",
+1314 => x"1208ff05",
+1315 => x"57575780",
+1316 => x"75249f38",
+1317 => x"8c162270",
+1318 => x"902b7090",
+1319 => x"2c515559",
+1320 => x"73802e80",
+1321 => x"ed3880dc",
+1322 => x"16ff1656",
+1323 => x"56748025",
+1324 => x"e3387608",
+1325 => x"5574802e",
+1326 => x"8f387488",
+1327 => x"11088412",
+1328 => x"08ff0557",
+1329 => x"5757c839",
+1330 => x"82fc5277",
+1331 => x"518ae33f",
+1332 => x"80088008",
+1333 => x"55568008",
+1334 => x"802ea338",
+1335 => x"80088c05",
+1336 => x"7580080c",
+1337 => x"54840b80",
+1338 => x"0884050c",
+1339 => x"73800888",
+1340 => x"050c82f0",
+1341 => x"53745273",
+1342 => x"5198813f",
+1343 => x"75547374",
+1344 => x"780c5573",
+1345 => x"ffb4388c",
+1346 => x"780c800b",
+1347 => x"800c8a3d",
+1348 => x"0d04810b",
+1349 => x"8c172373",
+1350 => x"760c7388",
+1351 => x"170c7384",
+1352 => x"170c7390",
+1353 => x"170c7394",
+1354 => x"170c7398",
+1355 => x"170cff0b",
+1356 => x"8e172373",
+1357 => x"b0170c73",
+1358 => x"b4170c73",
+1359 => x"80c4170c",
+1360 => x"7380c817",
+1361 => x"0c75800c",
+1362 => x"8a3d0d04",
+1363 => x"ff3d0da3",
+1364 => x"80527351",
+1365 => x"86a93f83",
+1366 => x"3d0d04ff",
+1367 => x"3d0da380",
+1368 => x"5280d39c",
+1369 => x"08518697",
+1370 => x"3f833d0d",
+1371 => x"04fb3d0d",
+1372 => x"77705256",
+1373 => x"98903f80",
+1374 => x"dad80b88",
+1375 => x"05088411",
+1376 => x"08fc0670",
+1377 => x"7b319fef",
+1378 => x"05e08006",
+1379 => x"e0800552",
+1380 => x"5555a080",
+1381 => x"75249438",
+1382 => x"80527551",
+1383 => x"97ea3f80",
+1384 => x"dae00814",
+1385 => x"53728008",
+1386 => x"2e8f3875",
+1387 => x"5197d83f",
+1388 => x"80537280",
+1389 => x"0c873d0d",
+1390 => x"04743052",
+1391 => x"755197c8",
+1392 => x"3f8008ff",
+1393 => x"2ea83880",
+1394 => x"dad80b88",
+1395 => x"05087476",
+1396 => x"31810784",
+1397 => x"120c5380",
+1398 => x"da9c0875",
+1399 => x"3180da9c",
+1400 => x"0c755197",
+1401 => x"a23f810b",
+1402 => x"800c873d",
+1403 => x"0d048052",
+1404 => x"75519794",
+1405 => x"3f80dad8",
+1406 => x"0b880508",
+1407 => x"80087131",
+1408 => x"54548f73",
+1409 => x"25ffa438",
+1410 => x"800880da",
+1411 => x"cc083180",
+1412 => x"da9c0c72",
+1413 => x"81078415",
+1414 => x"0c755196",
+1415 => x"ea3f8053",
+1416 => x"ff9039f7",
+1417 => x"3d0d7b7d",
+1418 => x"545a7280",
+1419 => x"2e828338",
+1420 => x"795196d2",
+1421 => x"3ff81384",
+1422 => x"110870fe",
+1423 => x"06701384",
+1424 => x"1108fc06",
+1425 => x"5c575854",
+1426 => x"5780dae0",
+1427 => x"08742e82",
+1428 => x"de387784",
+1429 => x"150c8073",
+1430 => x"81065659",
+1431 => x"74792e81",
+1432 => x"d5387714",
+1433 => x"84110881",
+1434 => x"06565374",
+1435 => x"a0387716",
+1436 => x"567881e6",
+1437 => x"38881408",
+1438 => x"557480da",
+1439 => x"e02e82f9",
+1440 => x"388c1408",
+1441 => x"708c170c",
+1442 => x"7588120c",
+1443 => x"58758107",
+1444 => x"84180c75",
+1445 => x"1776710c",
+1446 => x"54788191",
+1447 => x"3883ff76",
+1448 => x"2781c838",
+1449 => x"75892a76",
+1450 => x"832a5454",
+1451 => x"73802ebf",
+1452 => x"3875862a",
+1453 => x"b8055384",
+1454 => x"7427b438",
+1455 => x"80db1453",
+1456 => x"947427ab",
+1457 => x"38758c2a",
+1458 => x"80ee0553",
+1459 => x"80d47427",
+1460 => x"9e38758f",
+1461 => x"2a80f705",
+1462 => x"5382d474",
+1463 => x"27913875",
+1464 => x"922a80fc",
+1465 => x"05538ad4",
+1466 => x"74278438",
+1467 => x"80fe5372",
+1468 => x"10101080",
+1469 => x"dad80588",
+1470 => x"11085555",
+1471 => x"73752e82",
+1472 => x"bf388414",
+1473 => x"08fc0659",
+1474 => x"7579278d",
+1475 => x"38881408",
+1476 => x"5473752e",
+1477 => x"098106ea",
+1478 => x"388c1408",
+1479 => x"708c190c",
+1480 => x"7488190c",
+1481 => x"7788120c",
+1482 => x"55768c15",
+1483 => x"0c795194",
+1484 => x"d63f8b3d",
+1485 => x"0d047608",
+1486 => x"77713158",
+1487 => x"76058818",
+1488 => x"08565674",
+1489 => x"80dae02e",
+1490 => x"80e0388c",
+1491 => x"1708708c",
+1492 => x"170c7588",
+1493 => x"120c53fe",
+1494 => x"89398814",
+1495 => x"088c1508",
+1496 => x"708c130c",
+1497 => x"5988190c",
+1498 => x"fea33975",
+1499 => x"832a7054",
+1500 => x"54807424",
+1501 => x"81983872",
+1502 => x"822c8171",
+1503 => x"2b80dadc",
+1504 => x"080780da",
+1505 => x"d80b8405",
+1506 => x"0c741010",
+1507 => x"1080dad8",
+1508 => x"05881108",
+1509 => x"718c1b0c",
+1510 => x"70881b0c",
+1511 => x"7988130c",
+1512 => x"565a5576",
+1513 => x"8c150cff",
+1514 => x"84398159",
+1515 => x"fdb43977",
+1516 => x"16738106",
+1517 => x"54557298",
+1518 => x"38760877",
+1519 => x"71315875",
+1520 => x"058c1808",
+1521 => x"88190871",
+1522 => x"8c120c88",
+1523 => x"120c5555",
+1524 => x"74810784",
+1525 => x"180c7680",
+1526 => x"dad80b88",
+1527 => x"050c80da",
+1528 => x"d4087526",
+1529 => x"fec73880",
+1530 => x"dad00852",
+1531 => x"7951fafd",
+1532 => x"3f795193",
+1533 => x"923ffeba",
+1534 => x"3981778c",
+1535 => x"170c7788",
+1536 => x"170c758c",
+1537 => x"190c7588",
+1538 => x"190c59fd",
+1539 => x"80398314",
+1540 => x"70822c81",
+1541 => x"712b80da",
+1542 => x"dc080780",
+1543 => x"dad80b84",
+1544 => x"050c7510",
+1545 => x"101080da",
+1546 => x"d8058811",
+1547 => x"08718c1c",
+1548 => x"0c70881c",
+1549 => x"0c7a8813",
+1550 => x"0c575b56",
+1551 => x"53fee439",
+1552 => x"807324a3",
+1553 => x"3872822c",
+1554 => x"81712b80",
+1555 => x"dadc0807",
+1556 => x"80dad80b",
+1557 => x"84050c58",
+1558 => x"748c180c",
+1559 => x"7388180c",
+1560 => x"7688160c",
+1561 => x"fdc33983",
+1562 => x"1370822c",
+1563 => x"81712b80",
+1564 => x"dadc0807",
+1565 => x"80dad80b",
+1566 => x"84050c59",
+1567 => x"53da39f9",
+1568 => x"3d0d797b",
+1569 => x"5853800b",
+1570 => x"80d39c08",
+1571 => x"53567272",
+1572 => x"2ebc3884",
+1573 => x"dc135574",
+1574 => x"762eb338",
+1575 => x"88150884",
+1576 => x"1608ff05",
+1577 => x"54548073",
+1578 => x"2499388c",
+1579 => x"14227090",
+1580 => x"2b535871",
+1581 => x"80d43880",
+1582 => x"dc14ff14",
+1583 => x"54547280",
+1584 => x"25e93874",
+1585 => x"085574d4",
+1586 => x"3880d39c",
+1587 => x"085284dc",
+1588 => x"12557480",
+1589 => x"2ead3888",
+1590 => x"15088416",
+1591 => x"08ff0554",
+1592 => x"54807324",
+1593 => x"98388c14",
+1594 => x"2270902b",
+1595 => x"535871ad",
+1596 => x"3880dc14",
+1597 => x"ff145454",
+1598 => x"728025ea",
+1599 => x"38740855",
+1600 => x"74d53875",
+1601 => x"800c893d",
+1602 => x"0d047351",
+1603 => x"762d7580",
+1604 => x"080780dc",
+1605 => x"15ff1555",
+1606 => x"5556ffa2",
+1607 => x"39735176",
+1608 => x"2d758008",
+1609 => x"0780dc15",
+1610 => x"ff155555",
+1611 => x"56ca39ea",
+1612 => x"3d0d688c",
+1613 => x"1122700a",
+1614 => x"100a8106",
+1615 => x"57585674",
+1616 => x"80e4388e",
+1617 => x"16227090",
+1618 => x"2b70902c",
+1619 => x"51555880",
+1620 => x"7424b138",
+1621 => x"983dc405",
+1622 => x"53735280",
+1623 => x"d39c0851",
+1624 => x"93fb3f80",
+1625 => x"0b800824",
+1626 => x"97387983",
+1627 => x"e0800654",
+1628 => x"7380c080",
+1629 => x"2e818f38",
+1630 => x"73828080",
+1631 => x"2e819138",
+1632 => x"8c162257",
+1633 => x"76908007",
+1634 => x"54738c17",
+1635 => x"23888052",
+1636 => x"80d39c08",
+1637 => x"51819b3f",
+1638 => x"80089d38",
+1639 => x"8c162282",
+1640 => x"0755748c",
+1641 => x"172380c3",
+1642 => x"1670770c",
+1643 => x"90170c81",
+1644 => x"0b94170c",
+1645 => x"983d0d04",
+1646 => x"80d39c08",
+1647 => x"aacc0bbc",
+1648 => x"120c588c",
+1649 => x"16228180",
+1650 => x"0754738c",
+1651 => x"17238008",
+1652 => x"760c8008",
+1653 => x"90170c88",
+1654 => x"800b9417",
+1655 => x"0c74802e",
+1656 => x"d3388e16",
+1657 => x"2270902b",
+1658 => x"70902c53",
+1659 => x"56549cd0",
+1660 => x"3f800880",
+1661 => x"2effbd38",
+1662 => x"8c162281",
+1663 => x"0757768c",
+1664 => x"1723983d",
+1665 => x"0d04810b",
+1666 => x"8c172258",
+1667 => x"55fef539",
+1668 => x"a8160880",
+1669 => x"c5842e09",
+1670 => x"8106fee4",
+1671 => x"388c1622",
+1672 => x"88800754",
+1673 => x"738c1723",
+1674 => x"88800b80",
+1675 => x"cc170cfe",
+1676 => x"dc39f43d",
+1677 => x"0d7e608b",
+1678 => x"1170f806",
+1679 => x"5b55555d",
+1680 => x"72962683",
+1681 => x"38905880",
+1682 => x"78247479",
+1683 => x"26075580",
+1684 => x"5474742e",
+1685 => x"09810680",
+1686 => x"ca387c51",
+1687 => x"8ea83f77",
+1688 => x"83f72680",
+1689 => x"c5387783",
+1690 => x"2a701010",
+1691 => x"1080dad8",
+1692 => x"058c1108",
+1693 => x"58585475",
+1694 => x"772e81f0",
+1695 => x"38841608",
+1696 => x"fc068c17",
+1697 => x"08881808",
+1698 => x"718c120c",
+1699 => x"88120c5b",
+1700 => x"76058411",
+1701 => x"08810784",
+1702 => x"120c537c",
+1703 => x"518de83f",
+1704 => x"88165473",
+1705 => x"800c8e3d",
+1706 => x"0d047789",
+1707 => x"2a78832a",
+1708 => x"58547380",
+1709 => x"2ebf3877",
+1710 => x"862ab805",
+1711 => x"57847427",
+1712 => x"b43880db",
+1713 => x"14579474",
+1714 => x"27ab3877",
+1715 => x"8c2a80ee",
+1716 => x"055780d4",
+1717 => x"74279e38",
+1718 => x"778f2a80",
+1719 => x"f7055782",
+1720 => x"d4742791",
+1721 => x"3877922a",
+1722 => x"80fc0557",
+1723 => x"8ad47427",
+1724 => x"843880fe",
+1725 => x"57761010",
+1726 => x"1080dad8",
+1727 => x"058c1108",
+1728 => x"56537473",
+1729 => x"2ea33884",
+1730 => x"1508fc06",
+1731 => x"70793155",
+1732 => x"56738f24",
+1733 => x"88e43873",
+1734 => x"802588e6",
+1735 => x"388c1508",
+1736 => x"5574732e",
+1737 => x"098106df",
+1738 => x"38811759",
+1739 => x"80dae808",
+1740 => x"567580da",
+1741 => x"e02e82cc",
+1742 => x"38841608",
+1743 => x"fc067079",
+1744 => x"31555573",
+1745 => x"8f24bb38",
+1746 => x"80dae00b",
+1747 => x"80daec0c",
+1748 => x"80dae00b",
+1749 => x"80dae80c",
+1750 => x"80742480",
+1751 => x"db387416",
+1752 => x"84110881",
+1753 => x"0784120c",
+1754 => x"53feb039",
+1755 => x"88168c11",
+1756 => x"08575975",
+1757 => x"792e0981",
+1758 => x"06fe8238",
+1759 => x"821459ff",
+1760 => x"ab397716",
+1761 => x"78810784",
+1762 => x"180c7080",
+1763 => x"daec0c70",
+1764 => x"80dae80c",
+1765 => x"80dae00b",
+1766 => x"8c120c8c",
+1767 => x"11088812",
+1768 => x"0c748107",
+1769 => x"84120c74",
+1770 => x"0574710c",
+1771 => x"5b7c518b",
+1772 => x"d63f8816",
+1773 => x"54fdec39",
+1774 => x"83ff7527",
+1775 => x"83913874",
+1776 => x"892a7583",
+1777 => x"2a545473",
+1778 => x"802ebf38",
+1779 => x"74862ab8",
+1780 => x"05538474",
+1781 => x"27b43880",
+1782 => x"db145394",
+1783 => x"7427ab38",
+1784 => x"748c2a80",
+1785 => x"ee055380",
+1786 => x"d474279e",
+1787 => x"38748f2a",
+1788 => x"80f70553",
+1789 => x"82d47427",
+1790 => x"91387492",
+1791 => x"2a80fc05",
+1792 => x"538ad474",
+1793 => x"27843880",
+1794 => x"fe537210",
+1795 => x"101080da",
+1796 => x"d8058811",
+1797 => x"08555773",
+1798 => x"772e868b",
+1799 => x"38841408",
+1800 => x"fc065b74",
+1801 => x"7b278d38",
+1802 => x"88140854",
+1803 => x"73772e09",
+1804 => x"8106ea38",
+1805 => x"8c140880",
+1806 => x"dad80b84",
+1807 => x"0508718c",
+1808 => x"190c7588",
+1809 => x"190c7788",
+1810 => x"130c5c57",
+1811 => x"758c150c",
+1812 => x"78538079",
+1813 => x"24839838",
+1814 => x"72822c81",
+1815 => x"712b5656",
+1816 => x"747b2680",
+1817 => x"ca387a75",
+1818 => x"06577682",
+1819 => x"a33878fc",
+1820 => x"06840559",
+1821 => x"7410707c",
+1822 => x"06555573",
+1823 => x"82923884",
+1824 => x"1959f139",
+1825 => x"80dad80b",
+1826 => x"84050879",
+1827 => x"545b7880",
+1828 => x"25c63882",
+1829 => x"da397409",
+1830 => x"7b067080",
+1831 => x"dad80b84",
+1832 => x"050c5b74",
+1833 => x"1055747b",
+1834 => x"26853874",
+1835 => x"85bc3880",
+1836 => x"dad80b88",
+1837 => x"05087084",
+1838 => x"1208fc06",
+1839 => x"707b317b",
+1840 => x"72268f72",
+1841 => x"25075d57",
+1842 => x"5c5c5578",
+1843 => x"802e80d9",
+1844 => x"38791580",
+1845 => x"dad00819",
+1846 => x"90115954",
+1847 => x"5680dacc",
+1848 => x"08ff2e88",
+1849 => x"38a08f13",
+1850 => x"e0800657",
+1851 => x"76527c51",
+1852 => x"89963f80",
+1853 => x"08548008",
+1854 => x"ff2e9038",
+1855 => x"80087627",
+1856 => x"82a73874",
+1857 => x"80dad82e",
+1858 => x"829f3880",
+1859 => x"dad80b88",
+1860 => x"05085584",
+1861 => x"1508fc06",
+1862 => x"70793179",
+1863 => x"72268f72",
+1864 => x"25075d55",
+1865 => x"5a7a83f2",
+1866 => x"38778107",
+1867 => x"84160c77",
+1868 => x"157080da",
+1869 => x"d80b8805",
+1870 => x"0c748107",
+1871 => x"84120c56",
+1872 => x"7c5188c3",
+1873 => x"3f881554",
+1874 => x"73800c8e",
+1875 => x"3d0d0474",
+1876 => x"832a7054",
+1877 => x"54807424",
+1878 => x"819b3872",
+1879 => x"822c8171",
+1880 => x"2b80dadc",
+1881 => x"08077080",
+1882 => x"dad80b84",
+1883 => x"050c7510",
+1884 => x"101080da",
+1885 => x"d8058811",
+1886 => x"08718c1b",
+1887 => x"0c70881b",
+1888 => x"0c798813",
+1889 => x"0c57555c",
+1890 => x"55758c15",
+1891 => x"0cfdc139",
+1892 => x"78791010",
+1893 => x"1080dad8",
+1894 => x"0570565b",
+1895 => x"5c8c1408",
+1896 => x"5675742e",
+1897 => x"a3388416",
+1898 => x"08fc0670",
+1899 => x"79315853",
+1900 => x"768f2483",
+1901 => x"f1387680",
+1902 => x"2584af38",
+1903 => x"8c160856",
+1904 => x"75742e09",
+1905 => x"8106df38",
+1906 => x"8814811a",
+1907 => x"70830655",
+1908 => x"5a5472c9",
+1909 => x"387b8306",
+1910 => x"5675802e",
+1911 => x"fdb838ff",
+1912 => x"1cf81b5b",
+1913 => x"5c881a08",
+1914 => x"7a2eea38",
+1915 => x"fdb53983",
+1916 => x"1953fce4",
+1917 => x"39831470",
+1918 => x"822c8171",
+1919 => x"2b80dadc",
+1920 => x"08077080",
+1921 => x"dad80b84",
+1922 => x"050c7610",
+1923 => x"101080da",
+1924 => x"d8058811",
+1925 => x"08718c1c",
+1926 => x"0c70881c",
+1927 => x"0c7a8813",
+1928 => x"0c58535d",
+1929 => x"5653fee1",
+1930 => x"3980da9c",
+1931 => x"08175980",
+1932 => x"08762e81",
+1933 => x"8b3880da",
+1934 => x"cc08ff2e",
+1935 => x"848e3873",
+1936 => x"76311980",
+1937 => x"da9c0c73",
+1938 => x"87067056",
+1939 => x"5372802e",
+1940 => x"88388873",
+1941 => x"31701555",
+1942 => x"5576149f",
+1943 => x"ff06a080",
+1944 => x"71311670",
+1945 => x"547e5351",
+1946 => x"53869d3f",
+1947 => x"80085680",
+1948 => x"08ff2e81",
+1949 => x"9e3880da",
+1950 => x"9c081370",
+1951 => x"80da9c0c",
+1952 => x"747580da",
+1953 => x"d80b8805",
+1954 => x"0c777631",
+1955 => x"15810755",
+1956 => x"56597a80",
+1957 => x"dad82e83",
+1958 => x"c038798f",
+1959 => x"2682ef38",
+1960 => x"810b8415",
+1961 => x"0c841508",
+1962 => x"fc067079",
+1963 => x"31797226",
+1964 => x"8f722507",
+1965 => x"5d555a7a",
+1966 => x"802efced",
+1967 => x"3880db39",
+1968 => x"80089fff",
+1969 => x"065574fe",
+1970 => x"ed387880",
+1971 => x"da9c0c80",
+1972 => x"dad80b88",
+1973 => x"05087a18",
+1974 => x"81078412",
+1975 => x"0c5580da",
+1976 => x"c8087927",
+1977 => x"86387880",
+1978 => x"dac80c80",
+1979 => x"dac40879",
+1980 => x"27fca038",
+1981 => x"7880dac4",
+1982 => x"0c841508",
+1983 => x"fc067079",
+1984 => x"31797226",
+1985 => x"8f722507",
+1986 => x"5d555a7a",
+1987 => x"802efc99",
+1988 => x"38883980",
+1989 => x"745753fe",
+1990 => x"dd397c51",
+1991 => x"84e93f80",
+1992 => x"0b800c8e",
+1993 => x"3d0d0480",
+1994 => x"7324a538",
+1995 => x"72822c81",
+1996 => x"712b80da",
+1997 => x"dc080770",
+1998 => x"80dad80b",
+1999 => x"84050c5c",
+2000 => x"5a768c17",
+2001 => x"0c738817",
+2002 => x"0c758818",
+2003 => x"0cf9fd39",
+2004 => x"83137082",
+2005 => x"2c81712b",
+2006 => x"80dadc08",
+2007 => x"077080da",
+2008 => x"d80b8405",
+2009 => x"0c5d5b53",
+2010 => x"d8397a75",
+2011 => x"065c7bfc",
+2012 => x"9f388419",
+2013 => x"75105659",
+2014 => x"f139ff17",
+2015 => x"810559f7",
+2016 => x"ab398c15",
+2017 => x"08881608",
+2018 => x"718c120c",
+2019 => x"88120c59",
+2020 => x"75158411",
+2021 => x"08810784",
+2022 => x"120c587c",
+2023 => x"5183e83f",
+2024 => x"881554fb",
+2025 => x"a3397716",
+2026 => x"78810784",
+2027 => x"180c8c17",
+2028 => x"08881808",
+2029 => x"718c120c",
+2030 => x"88120c5c",
+2031 => x"7080daec",
+2032 => x"0c7080da",
+2033 => x"e80c80da",
+2034 => x"e00b8c12",
+2035 => x"0c8c1108",
+2036 => x"88120c77",
+2037 => x"81078412",
+2038 => x"0c770577",
+2039 => x"710c557c",
+2040 => x"5183a43f",
+2041 => x"881654f5",
+2042 => x"ba397216",
+2043 => x"84110881",
+2044 => x"0784120c",
+2045 => x"588c1608",
+2046 => x"88170871",
+2047 => x"8c120c88",
+2048 => x"120c577c",
+2049 => x"5183803f",
+2050 => x"881654f5",
+2051 => x"96397284",
+2052 => x"150cf41a",
+2053 => x"f8067084",
+2054 => x"1d088106",
+2055 => x"07841d0c",
+2056 => x"701c5556",
+2057 => x"850b8415",
+2058 => x"0c850b88",
+2059 => x"150c8f76",
+2060 => x"27fdab38",
+2061 => x"881b527c",
+2062 => x"51ebe83f",
+2063 => x"80dad80b",
+2064 => x"88050880",
+2065 => x"da9c085a",
+2066 => x"55fd9339",
+2067 => x"7880da9c",
+2068 => x"0c7380da",
+2069 => x"cc0cfbef",
+2070 => x"39728415",
+2071 => x"0cfcff39",
+2072 => x"fb3d0d77",
+2073 => x"707a7c58",
+2074 => x"5553568f",
+2075 => x"752780e6",
+2076 => x"38727607",
+2077 => x"83065170",
+2078 => x"80dc3875",
+2079 => x"73525470",
+2080 => x"70840552",
+2081 => x"08747084",
+2082 => x"05560c73",
+2083 => x"71708405",
+2084 => x"53087170",
+2085 => x"8405530c",
+2086 => x"71708405",
+2087 => x"53087170",
+2088 => x"8405530c",
+2089 => x"71708405",
+2090 => x"53087170",
+2091 => x"8405530c",
+2092 => x"f0165654",
+2093 => x"748f26c7",
+2094 => x"38837527",
+2095 => x"95387070",
+2096 => x"84055208",
+2097 => x"74708405",
+2098 => x"560cfc15",
+2099 => x"55748326",
+2100 => x"ed387371",
+2101 => x"5452ff15",
+2102 => x"5170ff2e",
+2103 => x"98387270",
+2104 => x"81055433",
+2105 => x"72708105",
+2106 => x"5434ff11",
+2107 => x"5170ff2e",
+2108 => x"098106ea",
+2109 => x"3875800c",
+2110 => x"873d0d04",
+2111 => x"fb3d0d77",
+2112 => x"7a71028c",
+2113 => x"05a30533",
+2114 => x"58545456",
+2115 => x"83732780",
+2116 => x"d4387583",
+2117 => x"06517080",
+2118 => x"cc387488",
+2119 => x"2b750770",
+2120 => x"71902b07",
+2121 => x"55518f73",
+2122 => x"27a73873",
+2123 => x"72708405",
+2124 => x"540c7174",
+2125 => x"71708405",
+2126 => x"530c7471",
+2127 => x"70840553",
+2128 => x"0c747170",
+2129 => x"8405530c",
+2130 => x"f0145452",
+2131 => x"728f26db",
+2132 => x"38837327",
+2133 => x"90387372",
+2134 => x"70840554",
+2135 => x"0cfc1353",
+2136 => x"728326f2",
+2137 => x"38ff1351",
+2138 => x"70ff2e93",
+2139 => x"38747270",
+2140 => x"81055434",
+2141 => x"ff115170",
+2142 => x"ff2e0981",
+2143 => x"06ef3875",
+2144 => x"800c873d",
+2145 => x"0d040404",
+2146 => x"fd3d0d80",
+2147 => x"0b80e3a0",
+2148 => x"0c765184",
+2149 => x"ee3f8008",
+2150 => x"538008ff",
+2151 => x"2e883872",
+2152 => x"800c853d",
+2153 => x"0d0480e3",
+2154 => x"a0085473",
+2155 => x"802ef038",
+2156 => x"7574710c",
+2157 => x"5272800c",
+2158 => x"853d0d04",
+2159 => x"f93d0d79",
+2160 => x"7c557b54",
+2161 => x"8e112270",
+2162 => x"902b7090",
+2163 => x"2c555780",
+2164 => x"d39c0853",
+2165 => x"585683f3",
+2166 => x"3f800857",
+2167 => x"800b8008",
+2168 => x"24933880",
+2169 => x"d0160880",
+2170 => x"080580d0",
+2171 => x"170c7680",
+2172 => x"0c893d0d",
+2173 => x"048c1622",
+2174 => x"83dfff06",
+2175 => x"55748c17",
+2176 => x"2376800c",
+2177 => x"893d0d04",
+2178 => x"fa3d0d78",
+2179 => x"8c112270",
+2180 => x"882a7081",
+2181 => x"06515758",
+2182 => x"5674a938",
+2183 => x"8c162283",
+2184 => x"dfff0655",
+2185 => x"748c1723",
+2186 => x"7a547953",
+2187 => x"8e162270",
+2188 => x"902b7090",
+2189 => x"2c545680",
+2190 => x"d39c0852",
+2191 => x"5681b23f",
+2192 => x"883d0d04",
+2193 => x"82548053",
+2194 => x"8e162270",
+2195 => x"902b7090",
+2196 => x"2c545680",
+2197 => x"d39c0852",
+2198 => x"5782b83f",
+2199 => x"8c162283",
+2200 => x"dfff0655",
+2201 => x"748c1723",
+2202 => x"7a547953",
+2203 => x"8e162270",
+2204 => x"902b7090",
+2205 => x"2c545680",
+2206 => x"d39c0852",
+2207 => x"5680f23f",
+2208 => x"883d0d04",
+2209 => x"f93d0d79",
+2210 => x"7c557b54",
+2211 => x"8e112270",
+2212 => x"902b7090",
+2213 => x"2c555780",
+2214 => x"d39c0853",
+2215 => x"585681f3",
+2216 => x"3f800857",
+2217 => x"8008ff2e",
+2218 => x"99388c16",
+2219 => x"22a08007",
+2220 => x"55748c17",
+2221 => x"23800880",
+2222 => x"d0170c76",
+2223 => x"800c893d",
+2224 => x"0d048c16",
+2225 => x"2283dfff",
+2226 => x"0655748c",
+2227 => x"17237680",
+2228 => x"0c893d0d",
+2229 => x"04fe3d0d",
+2230 => x"748e1122",
+2231 => x"70902b70",
+2232 => x"902c5551",
+2233 => x"515380d3",
+2234 => x"9c0851bd",
+2235 => x"3f843d0d",
+2236 => x"04fb3d0d",
+2237 => x"800b80e3",
+2238 => x"a00c7a53",
+2239 => x"79527851",
+2240 => x"82fc3f80",
+2241 => x"08558008",
+2242 => x"ff2e8838",
+2243 => x"74800c87",
+2244 => x"3d0d0480",
+2245 => x"e3a00856",
+2246 => x"75802ef0",
+2247 => x"38777671",
+2248 => x"0c547480",
+2249 => x"0c873d0d",
+2250 => x"04fd3d0d",
+2251 => x"800b80e3",
+2252 => x"a00c7651",
+2253 => x"85853f80",
+2254 => x"08538008",
+2255 => x"ff2e8838",
+2256 => x"72800c85",
+2257 => x"3d0d0480",
+2258 => x"e3a00854",
+2259 => x"73802ef0",
+2260 => x"38757471",
+2261 => x"0c527280",
+2262 => x"0c853d0d",
+2263 => x"04fc3d0d",
+2264 => x"800b80e3",
+2265 => x"a00c7852",
+2266 => x"775188b8",
+2267 => x"3f800854",
+2268 => x"8008ff2e",
+2269 => x"88387380",
+2270 => x"0c863d0d",
+2271 => x"0480e3a0",
+2272 => x"08557480",
+2273 => x"2ef03876",
+2274 => x"75710c53",
+2275 => x"73800c86",
+2276 => x"3d0d04fb",
+2277 => x"3d0d800b",
+2278 => x"80e3a00c",
+2279 => x"7a537952",
+2280 => x"78518593",
+2281 => x"3f800855",
+2282 => x"8008ff2e",
+2283 => x"88387480",
+2284 => x"0c873d0d",
+2285 => x"0480e3a0",
+2286 => x"08567580",
+2287 => x"2ef03877",
+2288 => x"76710c54",
+2289 => x"74800c87",
+2290 => x"3d0d04fb",
+2291 => x"3d0d800b",
+2292 => x"80e3a00c",
+2293 => x"7a537952",
+2294 => x"7851829a",
+2295 => x"3f800855",
+2296 => x"8008ff2e",
+2297 => x"88387480",
+2298 => x"0c873d0d",
+2299 => x"0480e3a0",
+2300 => x"08567580",
+2301 => x"2ef03877",
+2302 => x"76710c54",
+2303 => x"74800c87",
+2304 => x"3d0d04fe",
+2305 => x"3d0d80e3",
+2306 => x"a4085170",
+2307 => x"8a3880e3",
+2308 => x"ac7080e3",
+2309 => x"a40c5174",
+2310 => x"1152ff53",
+2311 => x"7187fb80",
+2312 => x"80268838",
+2313 => x"7180e3a4",
+2314 => x"0c705372",
+2315 => x"800c843d",
+2316 => x"0d04fd3d",
+2317 => x"0d800b80",
+2318 => x"d3900854",
+2319 => x"5472812e",
+2320 => x"9c387380",
+2321 => x"e3a80cc0",
+2322 => x"d83fffbf",
+2323 => x"b33f80e2",
+2324 => x"e0528151",
+2325 => x"c3b43f80",
+2326 => x"0851889b",
+2327 => x"3f7280e3",
+2328 => x"a80cc0bd",
+2329 => x"3fffbf98",
+2330 => x"3f80e2e0",
+2331 => x"528151c3",
+2332 => x"993f8008",
+2333 => x"5188803f",
+2334 => x"00ff3900",
+2335 => x"ff39f53d",
+2336 => x"0d7e6080",
+2337 => x"e3a80870",
+2338 => x"5b585b5b",
+2339 => x"7580c538",
+2340 => x"777a25a2",
+2341 => x"38771b70",
+2342 => x"337081ff",
+2343 => x"06585859",
+2344 => x"758a2e99",
+2345 => x"387681ff",
+2346 => x"0651ffbf",
+2347 => x"d33f8118",
+2348 => x"58797824",
+2349 => x"e0387980",
+2350 => x"0c8d3d0d",
+2351 => x"048d51ff",
+2352 => x"bfbe3f78",
+2353 => x"337081ff",
+2354 => x"065257ff",
+2355 => x"bfb23f81",
+2356 => x"1858de39",
+2357 => x"79557a54",
+2358 => x"7d538552",
+2359 => x"8d3dfc05",
+2360 => x"51ffbede",
+2361 => x"3f800856",
+2362 => x"87863f7b",
+2363 => x"80080c75",
+2364 => x"800c8d3d",
+2365 => x"0d04f63d",
+2366 => x"0d7d7f80",
+2367 => x"e3a80870",
+2368 => x"5a585a5a",
+2369 => x"7580c438",
+2370 => x"767925b2",
+2371 => x"38761a58",
+2372 => x"ffbecd3f",
+2373 => x"80087834",
+2374 => x"800b8008",
+2375 => x"81ff0657",
+2376 => x"58758a2e",
+2377 => x"a238758d",
+2378 => x"32703070",
+2379 => x"80257a07",
+2380 => x"51515675",
+2381 => x"b8388117",
+2382 => x"57787724",
+2383 => x"d0387656",
+2384 => x"75800c8c",
+2385 => x"3d0d0481",
+2386 => x"58dc3978",
+2387 => x"5579547c",
+2388 => x"5384528c",
+2389 => x"3dfc0551",
+2390 => x"ffbde73f",
+2391 => x"80085686",
+2392 => x"8f3f7a80",
+2393 => x"080c7580",
+2394 => x"0c8c3d0d",
+2395 => x"04811756",
+2396 => x"cf39f93d",
+2397 => x"0d795780",
+2398 => x"e3a80880",
+2399 => x"2ead3876",
+2400 => x"51c4e33f",
+2401 => x"7b567a55",
+2402 => x"80088105",
+2403 => x"54765382",
+2404 => x"52893dfc",
+2405 => x"0551ffbd",
+2406 => x"a93f8008",
+2407 => x"5785d13f",
+2408 => x"7780080c",
+2409 => x"76800c89",
+2410 => x"3d0d0485",
+2411 => x"c33f850b",
+2412 => x"80080cff",
+2413 => x"0b800c89",
+2414 => x"3d0d04fb",
+2415 => x"3d0d80e3",
+2416 => x"a8087056",
+2417 => x"54738838",
+2418 => x"74800c87",
+2419 => x"3d0d0477",
+2420 => x"53835287",
+2421 => x"3dfc0551",
+2422 => x"ffbce73f",
+2423 => x"80085485",
+2424 => x"8f3f7580",
+2425 => x"080c7380",
+2426 => x"0c873d0d",
+2427 => x"04ff0b80",
+2428 => x"0c04fb3d",
+2429 => x"0d775580",
+2430 => x"e3a80880",
+2431 => x"2ea93874",
+2432 => x"51c3e33f",
+2433 => x"80088105",
+2434 => x"54745387",
+2435 => x"52873dfc",
+2436 => x"0551ffbc",
+2437 => x"ad3f8008",
+2438 => x"5584d53f",
+2439 => x"7580080c",
+2440 => x"74800c87",
+2441 => x"3d0d0484",
+2442 => x"c73f850b",
+2443 => x"80080cff",
+2444 => x"0b800c87",
+2445 => x"3d0d04fa",
+2446 => x"3d0d80e3",
+2447 => x"a808802e",
+2448 => x"a3387a55",
+2449 => x"79547853",
+2450 => x"8652883d",
+2451 => x"fc0551ff",
+2452 => x"bbf03f80",
+2453 => x"08568498",
+2454 => x"3f768008",
+2455 => x"0c75800c",
+2456 => x"883d0d04",
+2457 => x"848a3f9d",
+2458 => x"0b80080c",
+2459 => x"ff0b800c",
+2460 => x"883d0d04",
+2461 => x"f73d0d7b",
+2462 => x"7d5b59bc",
+2463 => x"53805279",
+2464 => x"51f4f93f",
+2465 => x"80705657",
+2466 => x"98567419",
+2467 => x"70337078",
+2468 => x"2b790781",
+2469 => x"18f81a5a",
+2470 => x"58595558",
+2471 => x"847524ea",
+2472 => x"38767a23",
+2473 => x"84195880",
+2474 => x"70565798",
+2475 => x"56741870",
+2476 => x"3370782b",
+2477 => x"79078118",
+2478 => x"f81a5a58",
+2479 => x"59515484",
+2480 => x"7524ea38",
+2481 => x"76821b23",
+2482 => x"88195880",
+2483 => x"70565798",
+2484 => x"56741870",
+2485 => x"3370782b",
+2486 => x"79078118",
+2487 => x"f81a5a58",
+2488 => x"59515484",
+2489 => x"7524ea38",
+2490 => x"76841b0c",
+2491 => x"8c195880",
+2492 => x"70565798",
+2493 => x"56741870",
+2494 => x"3370782b",
+2495 => x"79078118",
+2496 => x"f81a5a58",
+2497 => x"59515484",
+2498 => x"7524ea38",
+2499 => x"76881b23",
+2500 => x"90195880",
+2501 => x"70565798",
+2502 => x"56741870",
+2503 => x"3370782b",
+2504 => x"79078118",
+2505 => x"f81a5a58",
+2506 => x"59515484",
+2507 => x"7524ea38",
+2508 => x"768a1b23",
+2509 => x"94195880",
+2510 => x"70565798",
+2511 => x"56741870",
+2512 => x"3370782b",
+2513 => x"79078118",
+2514 => x"f81a5a58",
+2515 => x"59515484",
+2516 => x"7524ea38",
+2517 => x"768c1b23",
+2518 => x"98195880",
+2519 => x"70565798",
+2520 => x"56741870",
+2521 => x"3370782b",
+2522 => x"79078118",
+2523 => x"f81a5a58",
+2524 => x"59515484",
+2525 => x"7524ea38",
+2526 => x"768e1b23",
+2527 => x"9c195880",
+2528 => x"705657b8",
+2529 => x"56741870",
+2530 => x"3370782b",
+2531 => x"79078118",
+2532 => x"f81a5a58",
+2533 => x"595a5488",
+2534 => x"7524ea38",
+2535 => x"76901b0c",
+2536 => x"8b3d0d04",
+2537 => x"e93d0d6a",
+2538 => x"80e3a808",
+2539 => x"57577593",
+2540 => x"3880c080",
+2541 => x"0b84180c",
+2542 => x"75ac180c",
+2543 => x"75800c99",
+2544 => x"3d0d0489",
+2545 => x"3d70556a",
+2546 => x"54558a52",
+2547 => x"993dffbc",
+2548 => x"0551ffb8",
+2549 => x"ed3f8008",
+2550 => x"77537552",
+2551 => x"56fd953f",
+2552 => x"818e3f77",
+2553 => x"80080c75",
+2554 => x"800c993d",
+2555 => x"0d04e93d",
+2556 => x"0d695780",
+2557 => x"e3a80880",
+2558 => x"2eb73876",
+2559 => x"51ffbfe6",
+2560 => x"3f893d70",
+2561 => x"56800881",
+2562 => x"05557754",
+2563 => x"568f5299",
+2564 => x"3dffbc05",
+2565 => x"51ffb8aa",
+2566 => x"3f80086b",
+2567 => x"53765257",
+2568 => x"fcd23f80",
+2569 => x"cb3f7780",
+2570 => x"080c7680",
+2571 => x"0c993d0d",
+2572 => x"04be3f85",
+2573 => x"0b80080c",
+2574 => x"ff0b800c",
+2575 => x"993d0d04",
+2576 => x"fc3d0d81",
+2577 => x"5480e3a8",
+2578 => x"08883873",
+2579 => x"800c863d",
+2580 => x"0d047653",
+2581 => x"97b95286",
+2582 => x"3dfc0551",
+2583 => x"ffb7e33f",
+2584 => x"8008548c",
+2585 => x"3f748008",
+2586 => x"0c73800c",
+2587 => x"863d0d04",
+2588 => x"80d39c08",
+2589 => x"800c04f7",
+2590 => x"3d0d7b80",
+2591 => x"d39c0882",
+2592 => x"c811085a",
+2593 => x"545a7780",
+2594 => x"2e80da38",
+2595 => x"81881884",
+2596 => x"1908ff05",
+2597 => x"81712b59",
+2598 => x"55598074",
+2599 => x"2480ea38",
+2600 => x"807424b5",
+2601 => x"3873822b",
+2602 => x"78118805",
+2603 => x"56568180",
+2604 => x"19087706",
+2605 => x"5372802e",
+2606 => x"b6387816",
+2607 => x"70085353",
+2608 => x"79517408",
+2609 => x"53722dff",
+2610 => x"14fc17fc",
+2611 => x"1779812c",
+2612 => x"5a575754",
+2613 => x"738025d6",
+2614 => x"38770858",
+2615 => x"77ffad38",
+2616 => x"80d39c08",
+2617 => x"53bc1308",
+2618 => x"a5387951",
+2619 => x"f78a3f74",
+2620 => x"0853722d",
+2621 => x"ff14fc17",
+2622 => x"fc177981",
+2623 => x"2c5a5757",
+2624 => x"54738025",
+2625 => x"ffa838d1",
+2626 => x"398057ff",
+2627 => x"93397251",
+2628 => x"bc130854",
+2629 => x"732d7951",
+2630 => x"f6de3fff",
+2631 => x"3d0d80e2",
+2632 => x"e80bfc05",
+2633 => x"70085252",
+2634 => x"70ff2e91",
+2635 => x"38702dfc",
+2636 => x"12700852",
+2637 => x"5270ff2e",
+2638 => x"098106f1",
+2639 => x"38833d0d",
+2640 => x"0404ffb8",
+2641 => x"e03f0400",
+2642 => x"48656c6c",
+2643 => x"6f20776f",
+2644 => x"726c6420",
+2645 => x"310a0000",
+2646 => x"48656c6c",
+2647 => x"6f20776f",
+2648 => x"726c6420",
+2649 => x"320a0000",
+2650 => x"0a000000",
+2651 => x"43000000",
+2652 => x"64756d6d",
+2653 => x"792e6578",
+2654 => x"65000000",
+2655 => x"00ffffff",
+2656 => x"ff00ffff",
+2657 => x"ffff00ff",
+2658 => x"ffffff00",
+2659 => x"00000000",
+2660 => x"00000000",
+2661 => x"00000000",
+2662 => x"00003170",
+2663 => x"000029a0",
+2664 => x"00000000",
+2665 => x"00002c08",
+2666 => x"00002c64",
+2667 => x"00002cc0",
+2668 => x"00000000",
+2669 => x"00000000",
+2670 => x"00000000",
+2671 => x"00000000",
+2672 => x"00000000",
+2673 => x"00000000",
+2674 => x"00000000",
+2675 => x"00000000",
+2676 => x"00000000",
+2677 => x"0000296c",
+2678 => x"00000000",
+2679 => x"00000000",
+2680 => x"00000000",
+2681 => x"00000000",
+2682 => x"00000000",
+2683 => x"00000000",
+2684 => x"00000000",
+2685 => x"00000000",
+2686 => x"00000000",
+2687 => x"00000000",
+2688 => x"00000000",
+2689 => x"00000000",
+2690 => x"00000000",
+2691 => x"00000000",
+2692 => x"00000000",
+2693 => x"00000000",
+2694 => x"00000000",
+2695 => x"00000000",
+2696 => x"00000000",
+2697 => x"00000000",
+2698 => x"00000000",
+2699 => x"00000000",
+2700 => x"00000000",
+2701 => x"00000000",
+2702 => x"00000000",
+2703 => x"00000000",
+2704 => x"00000000",
+2705 => x"00000000",
+2706 => x"00000001",
+2707 => x"330eabcd",
+2708 => x"1234e66d",
+2709 => x"deec0005",
+2710 => x"000b0000",
+2711 => x"00000000",
+2712 => x"00000000",
+2713 => x"00000000",
+2714 => x"00000000",
+2715 => x"00000000",
+2716 => x"00000000",
+2717 => x"00000000",
+2718 => x"00000000",
+2719 => x"00000000",
+2720 => x"00000000",
+2721 => x"00000000",
+2722 => x"00000000",
+2723 => x"00000000",
+2724 => x"00000000",
+2725 => x"00000000",
+2726 => x"00000000",
+2727 => x"00000000",
+2728 => x"00000000",
+2729 => x"00000000",
+2730 => x"00000000",
+2731 => x"00000000",
+2732 => x"00000000",
+2733 => x"00000000",
+2734 => x"00000000",
+2735 => x"00000000",
+2736 => x"00000000",
+2737 => x"00000000",
+2738 => x"00000000",
+2739 => x"00000000",
+2740 => x"00000000",
+2741 => x"00000000",
+2742 => x"00000000",
+2743 => x"00000000",
+2744 => x"00000000",
+2745 => x"00000000",
+2746 => x"00000000",
+2747 => x"00000000",
+2748 => x"00000000",
+2749 => x"00000000",
+2750 => x"00000000",
+2751 => x"00000000",
+2752 => x"00000000",
+2753 => x"00000000",
+2754 => x"00000000",
+2755 => x"00000000",
+2756 => x"00000000",
+2757 => x"00000000",
+2758 => x"00000000",
+2759 => x"00000000",
+2760 => x"00000000",
+2761 => x"00000000",
+2762 => x"00000000",
+2763 => x"00000000",
+2764 => x"00000000",
+2765 => x"00000000",
+2766 => x"00000000",
+2767 => x"00000000",
+2768 => x"00000000",
+2769 => x"00000000",
+2770 => x"00000000",
+2771 => x"00000000",
+2772 => x"00000000",
+2773 => x"00000000",
+2774 => x"00000000",
+2775 => x"00000000",
+2776 => x"00000000",
+2777 => x"00000000",
+2778 => x"00000000",
+2779 => x"00000000",
+2780 => x"00000000",
+2781 => x"00000000",
+2782 => x"00000000",
+2783 => x"00000000",
+2784 => x"00000000",
+2785 => x"00000000",
+2786 => x"00000000",
+2787 => x"00000000",
+2788 => x"00000000",
+2789 => x"00000000",
+2790 => x"00000000",
+2791 => x"00000000",
+2792 => x"00000000",
+2793 => x"00000000",
+2794 => x"00000000",
+2795 => x"00000000",
+2796 => x"00000000",
+2797 => x"00000000",
+2798 => x"00000000",
+2799 => x"00000000",
+2800 => x"00000000",
+2801 => x"00000000",
+2802 => x"00000000",
+2803 => x"00000000",
+2804 => x"00000000",
+2805 => x"00000000",
+2806 => x"00000000",
+2807 => x"00000000",
+2808 => x"00000000",
+2809 => x"00000000",
+2810 => x"00000000",
+2811 => x"00000000",
+2812 => x"00000000",
+2813 => x"00000000",
+2814 => x"00000000",
+2815 => x"00000000",
+2816 => x"00000000",
+2817 => x"00000000",
+2818 => x"00000000",
+2819 => x"00000000",
+2820 => x"00000000",
+2821 => x"00000000",
+2822 => x"00000000",
+2823 => x"00000000",
+2824 => x"00000000",
+2825 => x"00000000",
+2826 => x"00000000",
+2827 => x"00000000",
+2828 => x"00000000",
+2829 => x"00000000",
+2830 => x"00000000",
+2831 => x"00000000",
+2832 => x"00000000",
+2833 => x"00000000",
+2834 => x"00000000",
+2835 => x"00000000",
+2836 => x"00000000",
+2837 => x"00000000",
+2838 => x"00000000",
+2839 => x"00000000",
+2840 => x"00000000",
+2841 => x"00000000",
+2842 => x"00000000",
+2843 => x"00000000",
+2844 => x"00000000",
+2845 => x"00000000",
+2846 => x"00000000",
+2847 => x"00000000",
+2848 => x"00000000",
+2849 => x"00000000",
+2850 => x"00000000",
+2851 => x"00000000",
+2852 => x"00000000",
+2853 => x"00000000",
+2854 => x"00000000",
+2855 => x"00000000",
+2856 => x"00000000",
+2857 => x"00000000",
+2858 => x"00000000",
+2859 => x"00000000",
+2860 => x"00000000",
+2861 => x"00000000",
+2862 => x"00000000",
+2863 => x"00000000",
+2864 => x"00000000",
+2865 => x"00000000",
+2866 => x"00000000",
+2867 => x"00000000",
+2868 => x"00000000",
+2869 => x"00000000",
+2870 => x"00000000",
+2871 => x"00000000",
+2872 => x"00000000",
+2873 => x"00000000",
+2874 => x"00000000",
+2875 => x"00000000",
+2876 => x"00000000",
+2877 => x"00000000",
+2878 => x"00000000",
+2879 => x"00000000",
+2880 => x"00000000",
+2881 => x"00000000",
+2882 => x"00000000",
+2883 => x"00000000",
+2884 => x"00000000",
+2885 => x"00000000",
+2886 => x"00000000",
+2887 => x"00000000",
+2888 => x"00000000",
+2889 => x"00000000",
+2890 => x"00000000",
+2891 => x"00000000",
+2892 => x"00000000",
+2893 => x"00000000",
+2894 => x"00000000",
+2895 => x"00000000",
+2896 => x"00000000",
+2897 => x"00000000",
+2898 => x"00000000",
+2899 => x"ffffffff",
+2900 => x"00000000",
+2901 => x"00020000",
+2902 => x"00000000",
+2903 => x"00000000",
+2904 => x"00002d58",
+2905 => x"00002d58",
+2906 => x"00002d60",
+2907 => x"00002d60",
+2908 => x"00002d68",
+2909 => x"00002d68",
+2910 => x"00002d70",
+2911 => x"00002d70",
+2912 => x"00002d78",
+2913 => x"00002d78",
+2914 => x"00002d80",
+2915 => x"00002d80",
+2916 => x"00002d88",
+2917 => x"00002d88",
+2918 => x"00002d90",
+2919 => x"00002d90",
+2920 => x"00002d98",
+2921 => x"00002d98",
+2922 => x"00002da0",
+2923 => x"00002da0",
+2924 => x"00002da8",
+2925 => x"00002da8",
+2926 => x"00002db0",
+2927 => x"00002db0",
+2928 => x"00002db8",
+2929 => x"00002db8",
+2930 => x"00002dc0",
+2931 => x"00002dc0",
+2932 => x"00002dc8",
+2933 => x"00002dc8",
+2934 => x"00002dd0",
+2935 => x"00002dd0",
+2936 => x"00002dd8",
+2937 => x"00002dd8",
+2938 => x"00002de0",
+2939 => x"00002de0",
+2940 => x"00002de8",
+2941 => x"00002de8",
+2942 => x"00002df0",
+2943 => x"00002df0",
+2944 => x"00002df8",
+2945 => x"00002df8",
+2946 => x"00002e00",
+2947 => x"00002e00",
+2948 => x"00002e08",
+2949 => x"00002e08",
+2950 => x"00002e10",
+2951 => x"00002e10",
+2952 => x"00002e18",
+2953 => x"00002e18",
+2954 => x"00002e20",
+2955 => x"00002e20",
+2956 => x"00002e28",
+2957 => x"00002e28",
+2958 => x"00002e30",
+2959 => x"00002e30",
+2960 => x"00002e38",
+2961 => x"00002e38",
+2962 => x"00002e40",
+2963 => x"00002e40",
+2964 => x"00002e48",
+2965 => x"00002e48",
+2966 => x"00002e50",
+2967 => x"00002e50",
+2968 => x"00002e58",
+2969 => x"00002e58",
+2970 => x"00002e60",
+2971 => x"00002e60",
+2972 => x"00002e68",
+2973 => x"00002e68",
+2974 => x"00002e70",
+2975 => x"00002e70",
+2976 => x"00002e78",
+2977 => x"00002e78",
+2978 => x"00002e80",
+2979 => x"00002e80",
+2980 => x"00002e88",
+2981 => x"00002e88",
+2982 => x"00002e90",
+2983 => x"00002e90",
+2984 => x"00002e98",
+2985 => x"00002e98",
+2986 => x"00002ea0",
+2987 => x"00002ea0",
+2988 => x"00002ea8",
+2989 => x"00002ea8",
+2990 => x"00002eb0",
+2991 => x"00002eb0",
+2992 => x"00002eb8",
+2993 => x"00002eb8",
+2994 => x"00002ec0",
+2995 => x"00002ec0",
+2996 => x"00002ec8",
+2997 => x"00002ec8",
+2998 => x"00002ed0",
+2999 => x"00002ed0",
+3000 => x"00002ed8",
+3001 => x"00002ed8",
+3002 => x"00002ee0",
+3003 => x"00002ee0",
+3004 => x"00002ee8",
+3005 => x"00002ee8",
+3006 => x"00002ef0",
+3007 => x"00002ef0",
+3008 => x"00002ef8",
+3009 => x"00002ef8",
+3010 => x"00002f00",
+3011 => x"00002f00",
+3012 => x"00002f08",
+3013 => x"00002f08",
+3014 => x"00002f10",
+3015 => x"00002f10",
+3016 => x"00002f18",
+3017 => x"00002f18",
+3018 => x"00002f20",
+3019 => x"00002f20",
+3020 => x"00002f28",
+3021 => x"00002f28",
+3022 => x"00002f30",
+3023 => x"00002f30",
+3024 => x"00002f38",
+3025 => x"00002f38",
+3026 => x"00002f40",
+3027 => x"00002f40",
+3028 => x"00002f48",
+3029 => x"00002f48",
+3030 => x"00002f50",
+3031 => x"00002f50",
+3032 => x"00002f58",
+3033 => x"00002f58",
+3034 => x"00002f60",
+3035 => x"00002f60",
+3036 => x"00002f68",
+3037 => x"00002f68",
+3038 => x"00002f70",
+3039 => x"00002f70",
+3040 => x"00002f78",
+3041 => x"00002f78",
+3042 => x"00002f80",
+3043 => x"00002f80",
+3044 => x"00002f88",
+3045 => x"00002f88",
+3046 => x"00002f90",
+3047 => x"00002f90",
+3048 => x"00002f98",
+3049 => x"00002f98",
+3050 => x"00002fa0",
+3051 => x"00002fa0",
+3052 => x"00002fa8",
+3053 => x"00002fa8",
+3054 => x"00002fb0",
+3055 => x"00002fb0",
+3056 => x"00002fb8",
+3057 => x"00002fb8",
+3058 => x"00002fc0",
+3059 => x"00002fc0",
+3060 => x"00002fc8",
+3061 => x"00002fc8",
+3062 => x"00002fd0",
+3063 => x"00002fd0",
+3064 => x"00002fd8",
+3065 => x"00002fd8",
+3066 => x"00002fe0",
+3067 => x"00002fe0",
+3068 => x"00002fe8",
+3069 => x"00002fe8",
+3070 => x"00002ff0",
+3071 => x"00002ff0",
+3072 => x"00002ff8",
+3073 => x"00002ff8",
+3074 => x"00003000",
+3075 => x"00003000",
+3076 => x"00003008",
+3077 => x"00003008",
+3078 => x"00003010",
+3079 => x"00003010",
+3080 => x"00003018",
+3081 => x"00003018",
+3082 => x"00003020",
+3083 => x"00003020",
+3084 => x"00003028",
+3085 => x"00003028",
+3086 => x"00003030",
+3087 => x"00003030",
+3088 => x"00003038",
+3089 => x"00003038",
+3090 => x"00003040",
+3091 => x"00003040",
+3092 => x"00003048",
+3093 => x"00003048",
+3094 => x"00003050",
+3095 => x"00003050",
+3096 => x"00003058",
+3097 => x"00003058",
+3098 => x"00003060",
+3099 => x"00003060",
+3100 => x"00003068",
+3101 => x"00003068",
+3102 => x"00003070",
+3103 => x"00003070",
+3104 => x"00003078",
+3105 => x"00003078",
+3106 => x"00003080",
+3107 => x"00003080",
+3108 => x"00003088",
+3109 => x"00003088",
+3110 => x"00003090",
+3111 => x"00003090",
+3112 => x"00003098",
+3113 => x"00003098",
+3114 => x"000030a0",
+3115 => x"000030a0",
+3116 => x"000030a8",
+3117 => x"000030a8",
+3118 => x"000030b0",
+3119 => x"000030b0",
+3120 => x"000030b8",
+3121 => x"000030b8",
+3122 => x"000030c0",
+3123 => x"000030c0",
+3124 => x"000030c8",
+3125 => x"000030c8",
+3126 => x"000030d0",
+3127 => x"000030d0",
+3128 => x"000030d8",
+3129 => x"000030d8",
+3130 => x"000030e0",
+3131 => x"000030e0",
+3132 => x"000030e8",
+3133 => x"000030e8",
+3134 => x"000030f0",
+3135 => x"000030f0",
+3136 => x"000030f8",
+3137 => x"000030f8",
+3138 => x"00003100",
+3139 => x"00003100",
+3140 => x"00003108",
+3141 => x"00003108",
+3142 => x"00003110",
+3143 => x"00003110",
+3144 => x"00003118",
+3145 => x"00003118",
+3146 => x"00003120",
+3147 => x"00003120",
+3148 => x"00003128",
+3149 => x"00003128",
+3150 => x"00003130",
+3151 => x"00003130",
+3152 => x"00003138",
+3153 => x"00003138",
+3154 => x"00003140",
+3155 => x"00003140",
+3156 => x"00003148",
+3157 => x"00003148",
+3158 => x"00003150",
+3159 => x"00003150",
+3160 => x"00002970",
+3161 => x"ffffffff",
+3162 => x"00000000",
+3163 => x"ffffffff",
+3164 => x"00000000",
+ others => x"00000000"
+);
+
+begin
+
+process (clk)
+begin
+ if (clk'event and clk = '1') then
+ mem_busy<=mem_writeEnable or mem_readEnable;
+ if (mem_writeEnable = '1') then
+ ram(conv_integer(mem_addr(maxAddrBit downto minAddrBit))) := mem_write;
+ end if;
+ if (mem_readEnable = '1') then
+ mem_read <= ram(conv_integer(mem_addr(maxAddrBit downto minAddrBit)));
+ end if;
+ end if;
+end process;
+
+
+
+
+end dram_arch;
diff --git a/zpu/hdl/zpu4/src/fastdmips.do b/zpu/hdl/zpu4/src/fastdmips.do
new file mode 100644
index 0000000..504bf60
--- /dev/null
+++ b/zpu/hdl/zpu4/src/fastdmips.do
@@ -0,0 +1,19 @@
+set BreakOnAssertion 1
+vlib work
+
+vcom -93 -explicit zpu_config_fastsim.vhd
+vcom -93 -explicit zpupkg.vhd
+vcom -93 -explicit txt_util.vhd
+vcom -93 -explicit sim_fpga_top.vhd
+vcom -93 -explicit zpu_core.vhd
+vcom -93 -explicit dram_dmips.vhd
+vcom -93 -explicit timer.vhd
+vcom -93 -explicit io.vhd
+vcom -93 -explicit trace.vhd
+
+
+vsim fpga_top
+view wave
+
+# run ZPU
+run 60000 ms
diff --git a/zpu/hdl/zpu4/src/fastdmipsintstack.do b/zpu/hdl/zpu4/src/fastdmipsintstack.do
new file mode 100644
index 0000000..ee9571e
--- /dev/null
+++ b/zpu/hdl/zpu4/src/fastdmipsintstack.do
@@ -0,0 +1,19 @@
+set BreakOnAssertion 1
+vlib work
+
+vcom -93 -explicit zpu_config_fastsim.vhd
+vcom -93 -explicit zpupkg.vhd
+vcom -93 -explicit txt_util.vhd
+vcom -93 -explicit sim_fpga_top.vhd
+vcom -93 -explicit zpu_core_intstack.vhd
+vcom -93 -explicit dram_dmips.vhd
+vcom -93 -explicit timer.vhd
+vcom -93 -explicit io.vhd
+vcom -93 -explicit trace.vhd
+
+
+vsim fpga_top
+view wave
+
+# run ZPU
+run 60000 ms
diff --git a/zpu/hdl/zpu4/src/fastdmipssmall.do b/zpu/hdl/zpu4/src/fastdmipssmall.do
new file mode 100644
index 0000000..3eaa083
--- /dev/null
+++ b/zpu/hdl/zpu4/src/fastdmipssmall.do
@@ -0,0 +1,21 @@
+set BreakOnAssertion 1
+vlib work
+
+
+vcom -93 -explicit zpu_config_trace.vhd
+vcom -93 -explicit zpupkg.vhd
+vcom -93 -explicit txt_util.vhd
+vcom -93 -explicit sim_fpga_top.vhd
+vcom -93 -explicit zpu_core_small.vhd
+vcom -93 -explicit bram_dmips.vhd
+vcom -93 -explicit dram_dmips.vhd
+vcom -93 -explicit timer.vhd
+vcom -93 -explicit io.vhd
+vcom -93 -explicit trace.vhd
+
+
+vsim fpga_top
+view wave
+
+# run ZPU
+run 60000 ms
diff --git a/zpu/hdl/zpu4/src/fastsimzpu.do b/zpu/hdl/zpu4/src/fastsimzpu.do
new file mode 100644
index 0000000..504bf60
--- /dev/null
+++ b/zpu/hdl/zpu4/src/fastsimzpu.do
@@ -0,0 +1,19 @@
+set BreakOnAssertion 1
+vlib work
+
+vcom -93 -explicit zpu_config_fastsim.vhd
+vcom -93 -explicit zpupkg.vhd
+vcom -93 -explicit txt_util.vhd
+vcom -93 -explicit sim_fpga_top.vhd
+vcom -93 -explicit zpu_core.vhd
+vcom -93 -explicit dram_dmips.vhd
+vcom -93 -explicit timer.vhd
+vcom -93 -explicit io.vhd
+vcom -93 -explicit trace.vhd
+
+
+vsim fpga_top
+view wave
+
+# run ZPU
+run 60000 ms
diff --git a/zpu/hdl/zpu4/src/ic300.bitgen b/zpu/hdl/zpu4/src/ic300.bitgen
new file mode 100644
index 0000000..1095099
--- /dev/null
+++ b/zpu/hdl/zpu4/src/ic300.bitgen
@@ -0,0 +1,27 @@
+-g DebugBitstream:No
+-g Binary:yes
+-g CRC:Enable
+-g ConfigRate:50
+-g CclkPin:Pullnone
+-g M0Pin:Pullnone
+-g M1Pin:Pullnone
+-g M2Pin:Pullnone
+-g ProgPin:PullUp
+-g DonePin:Pullnone
+-g TckPin:Pullnone
+-g TdiPin:Pullnone
+-g TdoPin:Pullnone
+-g TmsPin:Pullnone
+-g UnusedPin:Pullnone
+-g UserID:0xFFFFFFFF
+-g DCMShutDown:Disable
+-g DCIUpdateMode:AsRequired
+-g StartUpClk:CClk
+-g DONE_cycle:4
+-g GTS_cycle:5
+-g GWE_cycle:6
+-g LCK_cycle:NoWait
+-g Security:Level1
+-g DonePipe:No
+-g DriveDone:Yes
+
diff --git a/zpu/hdl/zpu4/src/ic300.lso b/zpu/hdl/zpu4/src/ic300.lso
new file mode 100644
index 0000000..22de730
--- /dev/null
+++ b/zpu/hdl/zpu4/src/ic300.lso
@@ -0,0 +1 @@
+work
diff --git a/zpu/hdl/zpu4/src/ic300.ucf b/zpu/hdl/zpu4/src/ic300.ucf
new file mode 100644
index 0000000..4a141b9
--- /dev/null
+++ b/zpu/hdl/zpu4/src/ic300.ucf
@@ -0,0 +1,146 @@
+# clock inputs
+net "cpu_clk_p" loc = "R9" | iostandard=LVTTL;
+
+# input pins
+net "cpu_a_p(0)" loc = "N15" | iostandard=LVTTL;
+net "cpu_a_p(1)" loc = "P16" | iostandard=LVTTL;
+net "cpu_a_p(2)" loc = "P13" | iostandard=LVTTL;
+net "cpu_a_p(3)" loc = "N16" | iostandard=LVTTL;
+net "cpu_a_p(4)" loc = "P15" | iostandard=LVTTL;
+net "cpu_a_p(5)" loc = "R11" | iostandard=LVTTL;
+net "cpu_a_p(6)" loc = "T14" | iostandard=LVTTL;
+net "cpu_a_p(7)" loc = "R16" | iostandard=LVTTL;
+net "cpu_a_p(8)" loc = "P14" | iostandard=LVTTL;
+net "cpu_a_p(9)" loc = "T13" | iostandard=LVTTL;
+net "cpu_a_p(10)" loc = "R13" | iostandard=LVTTL;
+net "cpu_a_p(11)" loc = "P7" | iostandard=LVTTL;
+net "cpu_a_p(12)" loc = "N12" | iostandard=LVTTL;
+net "cpu_a_p(13)" loc = "R12" | iostandard=LVTTL;
+net "cpu_a_p(14)" loc = "L13" | iostandard=LVTTL;
+net "cpu_a_p(15)" loc = "K12" | iostandard=LVTTL;
+net "cpu_a_p(16)" loc = "K15" | iostandard=LVTTL;
+net "cpu_a_p(17)" loc = "T10" | iostandard=LVTTL;
+net "cpu_a_p(18)" loc = "T9" | iostandard=LVTTL;
+net "cpu_a_p(19)" loc = "N10" | iostandard=LVTTL;
+net "cpu_a_p(20)" loc = "T8" | iostandard=LVTTL;
+net "cpu_wr_n_p(0)" loc = "L15" | iostandard=LVTTL;
+net "cpu_wr_n_p(1)" loc = "N14" | iostandard=LVTTL;
+net "cpu_oe_n_p" loc = "T12" | iostandard=LVTTL;
+net "cpu_cs_n_p(1)" loc = "R3" | iostandard=LVTTL;
+net "cpu_cs_n_p(2)" loc = "M16" | iostandard=LVTTL;
+net "cpu_cs_n_p(3)" loc = "P11" | iostandard=LVTTL;
+
+#net "sdr_clk_fb_p" loc = "B8" | iostandard=SSTL2_I;
+
+# output pins
+net "cpu_fiq_p" loc = "K16" | iostandard=LVTTL;
+net "cpu_irq_p(0)" loc = "M14" | iostandard=LVTTL;
+net "cpu_irq_p(1)" loc = "J16" | iostandard=LVTTL;
+net "cpu_wait_n_p" loc = "M15" | iostandard=LVTTL;
+
+#net "sdr_clk_p" loc = "D8" | iostandard=SSTL2_I | FAST;
+#net "sdr_clk_n_p" loc = "F5" | iostandard=SSTL2_I | FAST;
+#net "cke_q_p" loc = "F4" | iostandard=SSTL2_I | FAST;
+#net "cs_qn_p" loc = "M2" | iostandard=SSTL2_I | FAST | PULLUP;
+#net "ras_qn_p" loc = "J2" | iostandard=SSTL2_I | FAST | PULLUP | NODELAY;
+#net "cas_qn_p" loc = "M3" | iostandard=SSTL2_I | FAST | PULLUP | NODELAY;
+#net "we_qn_p" loc = "K4" | iostandard=SSTL2_I | FAST | PULLUP | NODELAY;
+#net "dm_q_p(0)" loc = "L4" | iostandard=SSTL2_I | FAST;
+#net "dm_q_p(1)" loc = "E4" | iostandard=SSTL2_I | FAST;
+#net "dqs_q_p(0)" loc = "L3" | iostandard=SSTL2_I | FAST;
+#net "dqs_q_p(1)" loc = "D3" | iostandard=SSTL2_I | FAST;
+#net "ba_q_p(0)" loc = "M1" | iostandard=SSTL2_I | FAST;
+#net "ba_q_p(1)" loc = "J3" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(0)" loc = "J4" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(1)" loc = "N2" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(2)" loc = "H4" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(3)" loc = "P2" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(4)" loc = "E7" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(5)" loc = "G4" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(6)" loc = "D7" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(7)" loc = "G5" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(8)" loc = "C7" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(9)" loc = "F3" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(10)" loc = "N3" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(11)" loc = "E6" | iostandard=SSTL2_I | FAST;
+#net "sdr_a_p(12)" loc = "D6" | iostandard=SSTL2_I | FAST;
+
+# bidirectional pins
+net "cpu_d_p(0)" loc = "M11" | iostandard=LVTTL;
+net "cpu_d_p(1)" loc = "N11" | iostandard=LVTTL;
+net "cpu_d_p(2)" loc = "P10" | iostandard=LVTTL;
+net "cpu_d_p(3)" loc = "R10" | iostandard=LVTTL;
+net "cpu_d_p(4)" loc = "T7" | iostandard=LVTTL;
+net "cpu_d_p(5)" loc = "R7" | iostandard=LVTTL;
+net "cpu_d_p(6)" loc = "N6" | iostandard=LVTTL;
+net "cpu_d_p(7)" loc = "M6" | iostandard=LVTTL;
+net "cpu_d_p(8)" loc = "K13" | iostandard=LVTTL;
+net "cpu_d_p(9)" loc = "M10" | iostandard=LVTTL;
+net "cpu_d_p(10)" loc = "L12" | iostandard=LVTTL;
+net "cpu_d_p(11)" loc = "M13" | iostandard=LVTTL;
+net "cpu_d_p(12)" loc = "K14" | iostandard=LVTTL;
+net "cpu_d_p(13)" loc = "L14" | iostandard=LVTTL;
+net "cpu_d_p(14)" loc = "J13" | iostandard=LVTTL;
+net "cpu_d_p(15)" loc = "J14" | iostandard=LVTTL;
+
+#net "sdr_d_p(0)" loc = "G1" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(1)" loc = "H3" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(2)" loc = "G3" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(3)" loc = "K2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(4)" loc = "F2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(5)" loc = "L2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(6)" loc = "E1" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(7)" loc = "M4" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(8)" loc = "C6" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(9)" loc = "E2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(10)" loc = "C2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(11)" loc = "D1" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(12)" loc = "B7" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(13)" loc = "D2" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(14)" loc = "B6" | iostandard=SSTL2_I | NODELAY | FAST;
+#net "sdr_d_p(15)" loc = "B5" | iostandard=SSTL2_I | NODELAY | FAST;
+
+# TIMING
+# Create timing names
+NET "cpu_clk_p" TNM_NET = "cpu_clk_p";
+NET "sdr_clk_fb_p" TNM_NET = "sdr_clk_fb_p";
+#NET "cpu_clk" TNM_NET = "cpu_clk";
+#NET "cpu_clk_2x" TNM_NET = "cpu_clk_2x";
+#NET "cpu_clk_4x" TNM_NET = "cpu_clk_4x";
+#NET "ddr_in_clk" TNM_NET = "ddr_in_clk";
+#NET "ddr_in_clk_2x" TNM_NET = "ddr_in_clk_2x";
+
+## Create timing
+
+# Periode timing
+TIMESPEC "TS_cpu_clk" = PERIOD "cpu_clk_p" 10 ns HIGH 50 %;
+#TIMESPEC "TS_sdr_clk_fb_p" = PERIOD "sdr_clk_fb_p" 7.8 ns HIGH 50 %;
+
+# Clock domain crossing timing
+#TIMESPEC "TS_cpu1_to_cpu2" = FROM "cpu_clk" TO "cpu_clk_2x" 7.8 ns;
+#TIMESPEC "TS_cpu1_to_cpu4" = FROM "cpu_clk" TO "cpu_clk_4x" 3.9 ns;
+#TIMESPEC "TS_cpu1_to_ddr2" = FROM "cpu_clk" TO "ddr_in_clk" 7.8 ns;
+#TIMESPEC "TS_cpu1_to_ddr2_2x" = FROM "cpu_clk" TO "ddr_in_clk_2x" 3.9 ns;
+
+#TIMESPEC "TS_cpu2_to_cpu1" = FROM "cpu_clk_2x" TO "cpu_clk" 7.8 ns;
+#TIMESPEC "TS_cpu2_to_cpu4" = FROM "cpu_clk_2x" TO "cpu_clk_4x" 3.9 ns;
+#TIMESPEC "TS_cpu2_to_ddr2" = FROM "cpu_clk_2x" TO "ddr_in_clk" 7.8 ns;
+#TIMESPEC "TS_cpu2_to_ddr_2x" = FROM "cpu_clk_2x" TO "ddr_in_clk_2x" 3.9 ns;
+
+#TIMESPEC "TS_cpu4_to_cpu1" = FROM "cpu_clk_4x" TO "cpu_clk" 3.9 ns;
+#TIMESPEC "TS_cpu4_to_cpu2" = FROM "cpu_clk_4x" TO "cpu_clk_2x" 3.9 ns;
+#TIMESPEC "TS_cpu4_to_ddr2" = FROM "cpu_clk_4x" TO "ddr_in_clk" 3.9 ns;
+#TIMESPEC "TS_cpu4_to_ddr2_2x" = FROM "cpu_clk_4x" TO "ddr_in_clk_2x" 3.9 ns;
+
+#TIMESPEC "TS_ddr2_to_cpu1" = FROM "ddr_in_clk" TO "cpu_clk" 7.8 ns;
+#TIMESPEC "TS_ddr2_to_cpu2" = FROM "ddr_in_clk" TO "cpu_clk_2x" 7.8 ns;
+#TIMESPEC "TS_ddr2_to_cpu4" = FROM "ddr_in_clk" TO "cpu_clk_4x" 3.9 ns;
+#TIMESPEC "TS_ddr2_to_ddr2_2x" = FROM "ddr_in_clk" TO "ddr_in_clk_2x" 3.9 ns;
+
+#TIMESPEC "TS_ddr2_2x_to_cpu1" = FROM "ddr_in_clk_2x" TO "cpu_clk" 3.9 ns;
+#TIMESPEC "TS_ddr2_2x_to_cpu2" = FROM "ddr_in_clk_2x" TO "cpu_clk_2x" 3.9 ns;
+#TIMESPEC "TS_ddr2_2x_to_cpu4" = FROM "ddr_in_clk_2x" TO "cpu_clk_4x" 3.9 ns;
+#TIMESPEC "TS_ddr2_2x_to_ddr2" = FROM "ddr_in_clk_2x" TO "ddr_in_clk" 3.9 ns;
+
+
+
diff --git a/zpu/hdl/zpu4/src/ic300.vhd b/zpu/hdl/zpu4/src/ic300.vhd
new file mode 100644
index 0000000..a1b4f41
--- /dev/null
+++ b/zpu/hdl/zpu4/src/ic300.vhd
@@ -0,0 +1,144 @@
+--------------------------------------------------------------------------------
+-- Company: Zylin AS
+-- Engineer: Tore Ramsland
+--
+-- Create Date: 21:47:41 07/03/05
+-- Design Name: ic300
+-- Module Name: ic300 - behave
+-- Project Name: eCosBoard
+-- Target Device: XC3S400400-FG256
+-- Tool versions: 7.1i
+-- Description: Top level
+--
+-- Dependencies:
+--
+-- Revision:
+-- 2005-07-11 Updated to test FPGA
+--
+--------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library UNISIM;
+use UNISIM.VComponents.all;
+
+library zylin;
+use zylin.arm7.all;
+
+library zylin;
+use zylin.zpu_config.all;
+use zylin.zpupkg.all;
+
+library work;
+use work.phi_config.all;
+use work.ic300pkg.all;
+
+entity ic300 is
+ generic(
+ simulate_io_time : boolean := false);
+ port ( -- Clock inputs
+ cpu_clk_p : in std_logic;
+
+ -- CPU interface signals
+ cpu_a_p : in std_logic_vector(20 downto 0);
+ cpu_wr_n_p : in std_logic_vector(1 downto 0);
+ cpu_cs_n_p : in std_logic_vector(3 downto 1);
+ cpu_oe_n_p : in std_logic;
+ cpu_d_p : inout std_logic_vector(15 downto 0);
+ cpu_irq_p : out std_logic_vector(1 downto 0);
+ cpu_fiq_p : out std_logic;
+ cpu_wait_n_p : out std_logic;
+
+ -- DDR SDRAM Signals
+ sdr_clk_p : out std_logic; -- ddr_sdram_clock
+ sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
+ cke_q_p : out std_logic; -- clock enable
+ cs_qn_p : out std_logic; -- /chip select
+ ras_qn_p : inout std_logic; -- /ras
+ cas_qn_p : inout std_logic; -- /cas
+ we_qn_p : inout std_logic; -- /write enable
+ dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
+ dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
+ ba_q_p : out std_logic_vector(1 downto 0); -- bank select
+ sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
+ sdr_d_p : inout std_logic_vector(15 downto 0); -- bidir data bus
+ sdr_clk_fb_p : in std_logic -- DDR clock feedback
+ );
+end ic300;
+
+architecture behave of ic300 is
+
+signal cpu_we : std_logic_vector(1 downto 0); -- Write signal for lower(0) and upper(1) 8 data bits
+signal cpu_re : std_logic; -- Read enable signal for all 16 bits
+signal areset : std_logic; -- Asyncronous active high reset (for initialization)
+signal areset_dummy : std_logic;
+
+-- Clock module signals
+signal clk_status : std_logic_vector(2 downto 0); -- DLL lock status (from 3 DLL's)
+signal cpu_clk : std_logic; -- 64 MHz CPU clk
+signal cpu_clk_2x : std_logic; -- 128 MHz CPU clk (in phase with 64 MHz)
+signal cpu_clk_4x : std_logic; -- 256 MHz CPU clk (in phase with 64 MHz)
+signal ddr_in_clk : std_logic; -- 128 MHz clock from DDR SDRAM
+signal ddr_in_clk_2x : std_logic; -- 256 MHz clock from DDR SDRAM
+ -- NOTE! Phase relation to 64 MHz clock unknown
+
+-- Internal CPU interface signals
+signal cpu_din : std_logic_vector(15 downto 0); -- 16-bit data from CPU
+signal cpu_dout : std_logic_vector(15 downto 0); -- 16-bit data to CPU
+signal cpu_a : std_logic_vector(20 downto 0); -- 21-bit address from CPU
+
+begin
+
+-- areset <= '0';
+ areset_dummy <= '0';
+
+ global_init_reset:
+ rocbuf port map(I=>areset_dummy,O=>areset);
+
+ allclocks:
+ clocks port map(
+ areset => areset,
+ cpu_clk_p => cpu_clk_p,
+ cpu_clk => cpu_clk,
+ cpu_clk_2x => cpu_clk_2x,
+ cpu_clk_4x => cpu_clk_4x,
+ sdr_clk_fb_p => sdr_clk_fb_p,
+ ddr_in_clk => ddr_in_clk,
+ ddr_in_clk_2x => ddr_in_clk_2x,
+ locked => clk_status);
+
+ arm7cpu:
+ arm7wb generic map (simulate_io_time => simulate_io_time)
+ port map(
+ areset => areset,
+ cpu_clk => cpu_clk,
+ cpu_clk_2x => cpu_clk_2x,
+ cpu_a_p => cpu_a_p,
+ cpu_wr_n_p => cpu_wr_n_p,
+ cpu_cs_n_p => cpu_cs_n_p,
+ cpu_oe_n_p => cpu_oe_n_p,
+ cpu_d_p => cpu_d_p,
+ cpu_irq_p => cpu_irq_p,
+ cpu_fiq_p => cpu_fiq_p,
+ cpu_wait_n_p => cpu_wait_n_p,
+ cpu_din => cpu_din,
+ cpu_a => cpu_a,
+ cpu_we => cpu_we,
+ cpu_re => cpu_re,
+ cpu_dout => cpu_dout);
+
+
+ cpu_fpga_regs:
+ zpuio port map(
+ areset => areset,
+ cpu_clk => cpu_clk,
+ clk_status => clk_status,
+ cpu_din => cpu_din,
+ cpu_a => cpu_a,
+ cpu_we => cpu_we,
+ cpu_re => cpu_re,
+ cpu_dout => cpu_dout);
+
+
+end behave;
diff --git a/zpu/hdl/zpu4/src/ic300_config.vhd b/zpu/hdl/zpu4/src/ic300_config.vhd
new file mode 100644
index 0000000..b14ec79
--- /dev/null
+++ b/zpu/hdl/zpu4/src/ic300_config.vhd
@@ -0,0 +1,26 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+
+package phi_config is
+
+ constant Fpga_Global_Base : std_logic_vector(19 downto 17) := "000"; -- 0x0800....
+ constant Clock_Stat_Reg_Addr : std_logic_vector(5 downto 2) := "0000"; -- 0x....0000
+ constant Ctrl_Reg_Addr : std_logic_vector(5 downto 2) := "0001"; -- 0x....0004
+ constant output_enable : std_logic_vector(5 downto 2) := "0010"; -- 0x....0008
+ constant output_disable : std_logic_vector(5 downto 2) := "0011"; -- 0x....000C
+ constant data_status : std_logic_vector(5 downto 2) := "0100"; -- 0x....0010
+ constant set_output_data : std_logic_vector(5 downto 2) := "0101"; -- 0x....0014
+ constant clear_output_data : std_logic_vector(5 downto 2) := "0110"; -- 0x....0018
+ constant data_in_read : std_logic_vector(5 downto 2) := "0111"; -- 0x....001C
+ constant output_status : std_logic_vector(5 downto 2) := "1000"; -- 0x....0020
+ constant cpu_access_address : std_logic_vector(5 downto 2) := "1001"; -- 0x....0024
+
+ constant Fpga_Ethernet_Reg_Base : std_logic_vector(19 downto 17) := "110"; -- 0x080C0000
+
+ constant Fpga_DDR_Ctrl_Base : std_logic_vector(19 downto 17) := "111"; -- 0x080E....
+ constant DDR_Ctrl_Reg_Addr : std_logic_vector(3 downto 2) := "00"; -- 0x....0000
+ constant DDR_Mode_Reg_Addr : std_logic_vector(3 downto 2) := "01"; -- 0x....0004
+ constant DDR_Page_Select_Addr : std_logic_vector(3 downto 2) := "10"; -- 0x....0008
+
+
+end phi_config;
diff --git a/zpu/hdl/zpu4/src/ic300pkg.vhd b/zpu/hdl/zpu4/src/ic300pkg.vhd
new file mode 100644
index 0000000..13da306
--- /dev/null
+++ b/zpu/hdl/zpu4/src/ic300pkg.vhd
@@ -0,0 +1,88 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+
+package ic300pkg is
+
+ component ic300 is
+ port ( -- Clock inputs
+ cpu_clk_p : in std_logic;
+
+ -- CPU interface signals
+ cpu_a_p : in std_logic_vector(20 downto 0);
+ cpu_wr_n_p : in std_logic_vector(1 downto 0);
+ cpu_cs_n_p : in std_logic_vector(3 downto 1);
+ cpu_oe_n_p : in std_logic;
+ cpu_d_p : inout std_logic_vector(15 downto 0);
+ cpu_irq_p : out std_logic_vector(1 downto 0);
+ cpu_fiq_p : out std_logic;
+ cpu_wait_n_p : out std_logic;
+
+ -- DDR SDRAM Signals
+ sdr_clk_p : out std_logic; -- ddr_sdram_clock
+ sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
+ cke_q_p : out std_logic; -- clock enable
+ cs_qn_p : out std_logic; -- /chip select
+ ras_qn_p : inout std_logic; -- /ras
+ cas_qn_p : inout std_logic; -- /cas
+ we_qn_p : inout std_logic; -- /write enable
+ dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
+ dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
+ ba_q_p : out std_logic_vector(1 downto 0); -- bank select
+ sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
+ sdr_d_p : inout std_logic_vector(15 downto 0); -- bidir data bus
+ sdr_clk_fb_p : in std_logic -- DDR clock feedback
+ );
+ end component;
+
+ component clocks is
+ port ( areset : in std_logic;
+ cpu_clk_p : in std_logic;
+ sdr_clk_fb_p : in std_logic;
+ cpu_clk : out std_logic;
+ cpu_clk_2x : out std_logic;
+ cpu_clk_4x : out std_logic;
+ ddr_in_clk : out std_logic;
+ ddr_in_clk_2x : out std_logic;
+ locked : out std_logic_vector(2 downto 0));
+ end component;
+
+ component cpu_regs is
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ clk_status : in std_logic_vector(2 downto 0);
+ cpu_din : in std_logic_vector(15 downto 0);
+ cpu_a : in std_logic_vector(20 downto 0);
+ cpu_we : in std_logic_vector(1 downto 0);
+ cpu_re : in std_logic;
+ cpu_dout : inout std_logic_vector(15 downto 0));
+ end component;
+
+ component ddr_bridge is
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ cpu_clk_2x : in std_logic;
+ cpu_clk_4x : in std_logic;
+ ddr_in_clk : in std_logic;
+ ddr_in_clk_2x : in std_logic;
+
+ cpu_we : in std_logic_vector(1 downto 0);
+ cpu_re : in std_logic;
+ cpu_din : in std_logic_vector(15 downto 0);
+ cpu_a : in std_logic_vector(20 downto 0);
+ cpu_dout : inout std_logic_vector(15 downto 0);
+
+ sdr_clk_p : out std_logic; -- ddr_sdram_clock
+ sdr_clk_n_p : out std_logic; -- /ddr_sdram_clock
+ cke_q_p : out std_logic; -- clock enable
+ cs_qn_p : out std_logic; -- /chip select
+ ras_qn_p : inout std_logic; -- /ras
+ cas_qn_p : inout std_logic; -- /cas
+ we_qn_p : inout std_logic; -- /write enable
+ dm_q_p : out std_logic_vector(1 downto 0); -- data mask bits, set to "00"
+ dqs_q_p : out std_logic_vector(1 downto 0); -- data strobe, only for write
+ ba_q_p : out std_logic_vector(1 downto 0); -- bank select
+ sdr_a_p : out std_logic_vector(12 downto 0); -- address bus
+ sdr_d_p : inout std_logic_vector(15 downto 0)); -- bidir data bus
+ end component;
+
+end ic300pkg;
diff --git a/zpu/hdl/zpu4/src/io.vhd b/zpu/hdl/zpu4/src/io.vhd
new file mode 100644
index 0000000..b5465d1
--- /dev/null
+++ b/zpu/hdl/zpu4/src/io.vhd
@@ -0,0 +1,92 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+use std.textio.all;
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+use work.txt_util.all;
+
+entity zpu_io is
+ generic (
+ log_file: string := "log.txt"
+ );
+ port(
+ clk : in std_logic;
+ areset : in std_logic;
+ busy : out std_logic;
+ writeEnable : in std_logic;
+ readEnable : in std_logic;
+ write : in std_logic_vector(7 downto 0);
+ read : out std_logic_vector(7 downto 0);
+ addr : in std_logic_vector(maxAddrBit downto minAddrBit)
+ );
+end zpu_io;
+
+
+architecture behave of zpu_io is
+
+
+
+signal timer_read : std_logic_vector(7 downto 0);
+--signal timer_write : std_logic_vector(7 downto 0);
+signal timer_we : std_logic;
+
+signal serving : std_logic;
+
+file l_file : TEXT open write_mode is log_file;
+
+begin
+
+
+ timerinst: timer port map (
+ clk => clk,
+ areset => areset,
+ we => timer_we,
+ din => write,
+ adr => addr(4 downto 2),
+ dout => timer_read);
+
+ busy <= writeEnable or readEnable;
+ timer_we <= writeEnable and addr(12);
+
+ process(areset, clk)
+ begin
+ if (areset = '1') then
+-- timer_we <= '0';
+ elsif (clk'event and clk = '1') then
+-- timer_we <= '0';
+ if writeEnable = '1' then
+ -- external interface
+ if addr=x"1000" then
+ -- Write to UART
+ -- report "" & character'image(conv_integer(memBint)) severity note;
+ print(l_file, character'val(conv_integer(write)));
+ elsif addr(12)='1' then
+-- report "xxx" severity failure;
+-- timer_we <= '1';
+ else
+ report "Illegal IO write" severity failure;
+ end if;
+
+ end if;
+ read <= (others => 'U');
+ if (readEnable = '1') then
+ if addr=x"1001" then
+ read <= (0=>'1', others => '0'); -- recieve empty
+ elsif addr(12)='1' then
+ read <= timer_read;
+ elsif addr(11)='1' then
+ read <= ZPU_Frequency;
+ else
+ report "Illegal IO read" severity failure;
+ end if;
+ end if;
+ end if;
+ end process;
+
+
+end behave;
+
diff --git a/zpu/hdl/zpu4/src/log.txt b/zpu/hdl/zpu4/src/log.txt
new file mode 100644
index 0000000..af58c93
--- /dev/null
+++ b/zpu/hdl/zpu4/src/log.txt
@@ -0,0 +1,380 @@
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+1
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+2
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+1
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+2
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+1
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+2
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+1
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+2
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+1
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+2
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+1
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+2
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+1
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+2
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+1
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+2
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+1
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+2
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+1
+
+
+
+
+
+
+H
+e
+l
+l
+o
+
+w
+o
+r
+l
+d
+
+2
+
+
+
+
+
+
diff --git a/zpu/hdl/zpu4/src/niltrace.vhd b/zpu/hdl/zpu4/src/niltrace.vhd
new file mode 100644
index 0000000..40fc1ca
--- /dev/null
+++ b/zpu/hdl/zpu4/src/niltrace.vhd
@@ -0,0 +1,26 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+use std.textio.all;
+use work.zpu_config.all;
+
+
+entity trace is
+ port(
+ clk : in std_logic;
+ begin_inst : in std_logic;
+ pc : in std_logic_vector(maxAddrBit downto 0);
+ opcode : in std_logic_vector(7 downto 0);
+ sp : in std_logic_vector(maxAddrBit downto 2);
+ memA : in std_logic_vector(wordSize-1 downto 0);
+ busy : in std_logic);
+end trace;
+
+
+architecture behave of trace is
+
+begin
+
+end behave;
+
diff --git a/zpu/hdl/zpu4/src/sim_fpga_top.vhd b/zpu/hdl/zpu4/src/sim_fpga_top.vhd
new file mode 100644
index 0000000..2905505
--- /dev/null
+++ b/zpu/hdl/zpu4/src/sim_fpga_top.vhd
@@ -0,0 +1,190 @@
+--------------------------------------------------------------------------------
+-- Company:
+-- Engineer:
+--
+-- Create Date: 20:15:31 04/14/05
+-- Design Name:
+-- Module Name: fpga_top - behave
+-- Project Name:
+-- Target Device:
+-- Tool versions:
+-- Description:
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+--------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+library UNISIM;
+use UNISIM.VComponents.all;
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+
+entity fpga_top is
+end fpga_top;
+
+architecture behave of fpga_top is
+
+
+signal clk : std_logic;
+
+signal areset : std_logic;
+
+
+component zpu_io is
+ generic (
+ log_file: string := "log.txt"
+ );
+ port(
+ clk : in std_logic;
+ areset : in std_logic;
+ busy : out std_logic;
+ writeEnable : in std_logic;
+ readEnable : in std_logic;
+ write : in std_logic_vector(7 downto 0);
+ read : out std_logic_vector(7 downto 0);
+ addr : in std_logic_vector(maxAddrBit downto minAddrBit)
+ );
+end component;
+
+
+
+
+
+signal mem_busy : std_logic;
+signal mem_read : std_logic_vector(wordSize-1 downto 0);
+signal mem_write : std_logic_vector(wordSize-1 downto 0);
+signal mem_addr : std_logic_vector(maxAddrBitIncIO downto 0);
+signal mem_writeEnable : std_logic;
+signal mem_readEnable : std_logic;
+signal mem_writeMask: std_logic_vector(wordBytes-1 downto 0);
+
+signal enable : std_logic;
+
+signal dram_mem_busy : std_logic;
+signal dram_mem_read : std_logic_vector(wordSize-1 downto 0);
+signal dram_mem_write : std_logic_vector(wordSize-1 downto 0);
+signal dram_mem_writeEnable : std_logic;
+signal dram_mem_readEnable : std_logic;
+signal dram_mem_writeMask: std_logic_vector(wordBytes-1 downto 0);
+
+
+signal io_busy : std_logic;
+
+signal io_mem_read : std_logic_vector(7 downto 0);
+signal io_mem_writeEnable : std_logic;
+signal io_mem_readEnable : std_logic;
+
+
+signal dram_ready : std_logic;
+signal io_ready : std_logic;
+signal io_reading : std_logic;
+
+
+signal break : std_logic;
+
+begin
+ poweronreset: roc port map (O => areset);
+
+
+
+ zpu: zpu_core port map (
+ clk => clk ,
+ areset => areset,
+ enable => enable,
+ in_mem_busy => mem_busy,
+ mem_read => mem_read,
+ mem_write => mem_write,
+ out_mem_addr => mem_addr,
+ out_mem_writeEnable => mem_writeEnable,
+ out_mem_readEnable => mem_readEnable,
+ mem_writeMask => mem_writeMask,
+ interrupt => '0',
+ break => break);
+
+ dram_imp: dram port map (
+ clk => clk ,
+ areset => areset,
+ mem_busy => dram_mem_busy,
+ mem_read => dram_mem_read,
+ mem_write => mem_write,
+ mem_addr => mem_addr(maxAddrBit downto 0),
+ mem_writeEnable => dram_mem_writeEnable,
+ mem_readEnable => dram_mem_readEnable,
+ mem_writeMask => mem_writeMask);
+
+
+ ioMap: zpu_io port map (
+ clk => clk,
+ areset => areset,
+ busy => io_busy,
+ writeEnable => io_mem_writeEnable,
+ readEnable => io_mem_readEnable,
+ write => mem_write(7 downto 0),
+ read => io_mem_read,
+ addr => mem_addr(maxAddrBit downto minAddrBit)
+ );
+
+ dram_mem_writeEnable <= mem_writeEnable and not mem_addr(ioBit);
+ dram_mem_readEnable <= mem_readEnable and not mem_addr(ioBit);
+ io_mem_writeEnable <= mem_writeEnable and mem_addr(ioBit);
+ io_mem_readEnable <= mem_readEnable and mem_addr(ioBit);
+ mem_busy <= io_busy or dram_mem_busy or io_busy;
+
+
+
+ -- Memory reads either come from IO or DRAM. We need to pick the right one.
+ memorycontrol:
+ process(dram_mem_read, dram_ready, io_ready, io_mem_read)
+ begin
+ mem_read <= (others => 'U');
+ if dram_ready='1' then
+ mem_read <= dram_mem_read;
+ end if;
+
+ if io_ready='1' then
+ mem_read <= (others => '0');
+ mem_read(7 downto 0) <= io_mem_read;
+ end if;
+ end process;
+
+
+ io_ready <= (io_reading or io_mem_readEnable) and not io_busy;
+
+ memoryControlSync:
+ process(clk, areset)
+ begin
+ if areset = '1' then
+ enable <= '0';
+ io_reading <= '0';
+ dram_ready <= '0';
+ elsif (clk'event and clk = '1') then
+ enable <= '1';
+ io_reading <= io_busy or io_mem_readEnable;
+ dram_ready<=dram_mem_readEnable;
+
+ end if;
+ end process;
+
+ -- wiggle the clock @ 100MHz
+ clock : PROCESS
+ begin
+ clk <= '0';
+ wait for 5 ns;
+ clk <= '1';
+ wait for 5 ns;
+ end PROCESS clock;
+
+
+end behave;
diff --git a/zpu/hdl/zpu4/src/simzpu.do b/zpu/hdl/zpu4/src/simzpu.do
new file mode 100644
index 0000000..e6e3068
--- /dev/null
+++ b/zpu/hdl/zpu4/src/simzpu.do
@@ -0,0 +1,23 @@
+set BreakOnAssertion 1
+vlib work
+
+vcom -93 -explicit zpu_config.vhd
+vcom -93 -explicit zpupkg.vhd
+vcom -93 -explicit txt_util.vhd
+vcom -93 -explicit sim_fpga_top.vhd
+vcom -93 -explicit zpu_core.vhd
+vcom -93 -explicit dram.vhd
+vcom -93 -explicit timer.vhd
+vcom -93 -explicit io.vhd
+vcom -93 -explicit trace.vhd
+
+# run ZPU
+vsim fpga_top
+view wave
+add wave -recursive fpga_top/zpu/*
+#add wave -recursive fpga_top/*
+view structure
+#view signals
+
+# Enough to run tiny programs
+run 1000 ms
diff --git a/zpu/hdl/zpu4/src/simzpu_intstack.do b/zpu/hdl/zpu4/src/simzpu_intstack.do
new file mode 100644
index 0000000..cec4873
--- /dev/null
+++ b/zpu/hdl/zpu4/src/simzpu_intstack.do
@@ -0,0 +1,23 @@
+set BreakOnAssertion 1
+vlib work
+
+vcom -93 -explicit zpu_config_trace.vhd
+vcom -93 -explicit zpupkg.vhd
+vcom -93 -explicit txt_util.vhd
+vcom -93 -explicit sim_fpga_top.vhd
+vcom -93 -explicit zpu_core_intstack.vhd
+vcom -93 -explicit dram_hello.vhd
+vcom -93 -explicit timer.vhd
+vcom -93 -explicit io.vhd
+vcom -93 -explicit trace.vhd
+
+# run ZPU
+vsim fpga_top
+view wave
+add wave -recursive fpga_top/zpu/*
+#add wave -recursive fpga_top/*
+view structure
+#view signals
+
+# Enough to run tiny programs
+run 15 ms
diff --git a/zpu/hdl/zpu4/src/status.txt b/zpu/hdl/zpu4/src/status.txt
new file mode 100644
index 0000000..df01caf
--- /dev/null
+++ b/zpu/hdl/zpu4/src/status.txt
@@ -0,0 +1,109 @@
+- Before NEQBRANCH opt 4.684 DMIPS 8.0 cycles average, after
+- opcode pairs
+
+0x6060 0.1519223038446077 75961 9.048362120309708 LOADSP + LOADSP
+0x4040 0.13967027934055867 69835 11.08668042546436 STORESP + STORESP
+0x8038 0.10230620461240922 51153 10.251102204408818 IM + NEQBRANCH
+0x4060 0.09856219712439425 49281 9.822802471596571 STORESP + LOADSP
+0x6080 0.09734219468438937 48671 6.483415478886373 LOADSP + IM
+0x3860 0.08642217284434568 43211 12.616350364963504 NEQBRANCH + LOADSP
+0x8080 0.060966121932243864 30483 4.275915275634731 IM + IM
+0x8005 0.05317010634021268 26585 6.572311495673671 IM + ADD
+0x540 0.05215210430420861 26076 9.339541547277937 ADD + STORESP
+0x3d0d 0.050808101616203236 25404 12.398243045387995
+0xd04 0.0466000932001864 23300 20.0
+0x6040 0.04389608779217558 21948 9.460344827586207
+0x4080 0.043648087296174594 21824 7.630769230769231
+0xc80 0.03966807933615867 19834 11.438292964244521
+0x8010 0.0391500783001566 19575 6.1248435544430535
+0x480 0.038798077596155195 19399 10.941342357586013
+
+
+- zpu_core.vhd: 1500 LUTs. Xilinx ISE reports 83MHz maximum frequency after P&R
+ which matches what I've found w/my ic300.vhd testbench
+
+- zpu_core_instack.vhd
+ - problems w/simulation trace since storeb/loadb will run into undefined memory
+ during emulation. Solution: implement loadb+storeb.
+ - simulation needs to read cycles from ModelSim trace so as to m ake readcycles
+ not cause false positives. This has other interesting potentials w.r.t.
+ knowing which instructions take the longest.
+
+- Ca. 1700 LUT inc. all instructions. Removing all higher level instructions
+ => 1300.
+
+- Review memory interface
+ - When is mem_busy high? Will it be high on the next cycle after
+ I've send mem_read/writeEnable?
+ - Should I hold off posting a read/write until mem_busy = '0'?
+ - Write posting could increase performance somewhat. Should there be
+ a seperate write busy signal?
+ - Synchronous reset? The ARM7 will have to copy the program to DRAM and
+ then start the ZPU.
+
+- Current instruction set has
+ - 31 DMIPS single cycle performance Simulator.java
+ - 8 DMIPS w/single cycle RAM access in ModelSim
+
+112 0.06100380865858346 67215918
+56 0.04139603650830458 45611457
+129 0.0375812381475752 41408192
+5 0.03703417264799563 40805418
+113 0.03540341331682748 39008596
+128 0.0343154384313754 37809831
+83 0.03322159422742951 36604599
+114 0.03213492807203279 35407276
+132 0.03158580962697109 34802240
+12 0.03049709687915076 33602662
+8 0.029409690138646426 32404523
+115 0.026690690908727877 29408644
+46 0.025054316381406774 27605635
+82 0.023965804208719754 26406278
+84 0.023961360698074072 26401382
+116 0.023417718589457643 25802380
+81 0.02179306727026773 24012288
+117 0.021783900714401432 24002188
+4 0.01797685126990833 19807461
+6 0.016340292503890113 18004249
+85 0.016339001017850734 18002826
+255 0.016338918428089957 18002735
+86 0.016337281154151066 18000931
+11 0.011984767180825744 13205194
+51 0.0114390303780569 12603884
+38 0.010892246228211845 12001420
+118 0.010347263624247446 11400941
+131 0.009257503529350904 10200209
+7 0.008713386756504965 9600684
+22 0.008712946580307425 9600199
+
+
+64 0.16176824859336478 178241352
+96 0.23147927881894828 255051161
+128 0.2646966482624612 291651105
+
+
+- Alternate memory interface to allow more caching in memory subsystem?
+
+-- The memory interface allows a dual port memory to be used
+-- to increase performance.
+--
+-- Also it is possible to implement a zero cycle register file instead
+-- of memory, though obviously that will cause problems w.r.t. max
+-- frequency for the ZPU.
+--
+-- mem_writeEnable - set to '1' for a single cycle to send off a write request.
+-- mem_write is valid only while mem_writeEnable='1'.
+-- mem_readEnable - set to '1' for a single cycle to send off a read request.
+-- mem_read is a single cycle while mem_read_busy='0'.
+--
+-- mem_read/write_busy - It is illegal to send off a read/write request when mem_read/write_busy='1'.
+-- Set to '0' when mem_read is valid after a read request. Note that
+-- the definition allows zero wait state ram.
+-- mem_read/write_addr - address for read/write request
+-- mem_read - read data. Valid only on the cycle after mem_busy='0' after
+-- mem_readEnable='1' for a single cycle.
+-- mem_write - data to write
+-- mem_writeMask - set to '1' for those bits that are to be written to memory upon
+-- write request
+-- break - set to '1' when CPU hits break instruction
+-- interrupt - set to '1' until interrupts are cleared by CPU.
diff --git a/zpu/hdl/zpu4/src/testlut.vhd b/zpu/hdl/zpu4/src/testlut.vhd
new file mode 100644
index 0000000..668efcc
--- /dev/null
+++ b/zpu/hdl/zpu4/src/testlut.vhd
@@ -0,0 +1,114 @@
+-- Company: Zylin AS
+--
+-- Hooks up the ZPU to physical pads to ensure that it is not optimized to
+-- oblivion. This is purely to have something to measure LUT usage against.
+--
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+
+entity ic300 is
+ port ( -- Clock inputs
+ cpu_clk_p : in std_logic;
+
+ -- CPU interface signals
+ cpu_a_p : in std_logic_vector(20 downto 0);
+ cpu_wr_n_p : in std_logic_vector(1 downto 0);
+ cpu_cs_n_p : in std_logic_vector(3 downto 1);
+ cpu_oe_n_p : in std_logic;
+ cpu_d_p : out std_logic_vector(15 downto 0);
+ cpu_irq_p : out std_logic_vector(1 downto 0);
+ cpu_fiq_p : out std_logic;
+ cpu_wait_n_p : out std_logic;
+
+ sdr_clk_fb_p : in std_logic -- DDR clock feedback
+ );
+end ic300;
+
+architecture behave of ic300 is
+
+
+signal io_busy : std_logic;
+signal io_read : std_logic_vector(7 downto 0);
+signal io_write : std_logic_vector(7 downto 0);
+signal io_addr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal io_writeEnable : std_logic;
+signal io_readEnable : std_logic;
+
+
+signal cpu_we : std_logic_vector(1 downto 0);
+signal cpu_re : std_logic;
+signal areset : std_logic;
+
+-- Clock module signals
+signal clk_status : std_logic_vector(2 downto 0);
+signal cpu_clk : std_logic;
+signal cpu_clk_2x : std_logic;
+signal cpu_clk_4x : std_logic;
+signal ddr_in_clk : std_logic;
+
+
+-- Internal CPU interface signals
+signal cpu_din : std_logic_vector(15 downto 0);
+signal cpu_dout : std_logic_vector(15 downto 0);
+signal cpu_a : std_logic_vector(20 downto 0);
+
+signal dummy : std_logic_vector(maxAddrBit downto minAddrBit+5);
+
+signal dummy2 : std_logic_vector(wordSize-1 downto 0);
+signal dummy3 : std_logic_vector(wordSize-1 downto 0);
+signal dummy4 : std_logic_vector(wordSize-1 downto 0);
+begin
+
+ areset <= '0'; -- MUST BE CHANGED TO SOMETHING CORRECT
+
+-- cpu_d_p <= (others => '0');
+ cpu_irq_p <= (others => '0');
+ cpu_fiq_p <= '0';
+ cpu_wait_n_p <= '0';
+
+ cpu_d_p(15 downto 15) <= (others => '0');
+
+ -- delay signals going out/in w/1 clk so the
+ -- ZPU does not have to drive those pins.
+ --
+ -- these registers can be placed close to the ZPU and these
+ -- registers then have a full clock to drive the pins.
+ process(cpu_clk_p, areset)
+ begin
+ if (cpu_clk_p'event and cpu_clk_p = '1') then
+ cpu_d_p(0) <= io_writeEnable;
+ cpu_d_p(1) <= io_readEnable;
+ cpu_d_p(9 downto 2) <= io_write;
+ io_read <= cpu_a_p(7 downto 0);
+ -- 32 read/write registers is plenty realisitic for a minimal size
+ -- soft-CPU
+ cpu_d_p(14 downto 10) <= io_addr(minAddrBit+4 downto minAddrBit);
+ end if;
+ end process;
+
+
+ zpu: zpu_core port map (
+ clk => cpu_clk_p ,
+ areset => areset,
+ enable => '1',
+
+ in_mem_busy => '0',
+ out_mem_writeEnable => io_writeEnable,
+ out_mem_readEnable => io_readEnable,
+ mem_write(7 downto 0) => io_write,
+ mem_write(wordSize-1 downto 8) => dummy3(wordSize-1 downto 8),
+ mem_read(7 downto 0) => io_read,
+ mem_read(wordSize-1 downto 8) => dummy2(wordSize-1 downto 8),
+ out_mem_addr(maxAddrBitIncIO) => dummy4(maxAddrBitIncIO),
+ out_mem_addr(minAddrBit-1 downto 0) => dummy4(minAddrBit-1 downto 0) ,
+ out_mem_addr(maxAddrBit downto minAddrBit) => io_addr,
+ interrupt => '0'
+ );
+
+
+end behave;
diff --git a/zpu/hdl/zpu4/src/timer.vhd b/zpu/hdl/zpu4/src/timer.vhd
new file mode 100644
index 0000000..60c8fe2
--- /dev/null
+++ b/zpu/hdl/zpu4/src/timer.vhd
@@ -0,0 +1,61 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+entity timer is
+ port(
+ clk : in std_logic;
+ areset : in std_logic;
+ we : in std_logic;
+ din : in std_logic_vector(7 downto 0);
+ adr : in std_logic_vector(2 downto 0);
+ dout : out std_logic_vector(7 downto 0));
+end timer;
+
+
+architecture behave of timer is
+
+signal sample : std_logic;
+signal reset : std_logic;
+
+
+signal cnt : std_logic_vector(63 downto 0);
+signal cnt_smp : std_logic_vector(63 downto 0);
+
+begin
+
+ reset <= '1' when (we = '1' and din(0) = '1') else '0';
+ sample <= '1' when (we = '1' and din(1) = '1') else '0';
+
+ process(clk, areset) -- Carry generation
+ begin
+ if areset = '1' then
+ cnt <= (others => '0');
+ cnt_smp <= (others => '0');
+ elsif (clk'event and clk = '1') then
+ cnt <= cnt + 1;
+ if sample = '1' then
+-- report "sampling" severity failure;
+ cnt_smp <= cnt;
+ end if;
+ end if;
+ end process;
+
+
+ process(cnt_smp, adr)
+ begin
+ case adr is
+ when "000" => dout <= cnt_smp(7 downto 0);
+ when "001" => dout <= cnt_smp(15 downto 8);
+ when "010" => dout <= cnt_smp(23 downto 16);
+ when "011" => dout <= cnt_smp(31 downto 24);
+ when "100" => dout <= cnt_smp(39 downto 32);
+ when "101" => dout <= cnt_smp(47 downto 40);
+ when "110" => dout <= cnt_smp(55 downto 48);
+ when others => dout <= cnt_smp(63 downto 56);
+ end case;
+ end process;
+
+
+end behave;
+
diff --git a/zpu/hdl/zpu4/src/trace.vhd b/zpu/hdl/zpu4/src/trace.vhd
new file mode 100644
index 0000000..bc5279f
--- /dev/null
+++ b/zpu/hdl/zpu4/src/trace.vhd
@@ -0,0 +1,84 @@
+library ieee;
+use ieee.std_logic_1164.all;
+--use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+use std.textio.all;
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+use work.txt_util.all;
+
+
+entity trace is
+ generic (
+ log_file: string := "trace.txt"
+ );
+ port(
+ clk : in std_logic;
+ begin_inst : in std_logic;
+ pc : in std_logic_vector(maxAddrBitIncIO downto 0);
+ opcode : in std_logic_vector(7 downto 0);
+ sp : in std_logic_vector(maxAddrBitIncIO downto 2);
+ memA : in std_logic_vector(wordSize-1 downto 0);
+ memB : in std_logic_vector(wordSize-1 downto 0);
+ busy : in std_logic;
+ intSp : in std_logic_vector(stack_bits-1 downto 0)
+ );
+end trace;
+
+
+architecture behave of trace is
+
+
+file l_file : TEXT open write_mode is log_file;
+
+
+begin
+
+
+-- write data and control information to a file
+
+receive_data: process
+
+variable l: line;
+variable t : std_logic_vector(wordSize-1 downto 0);
+variable t2 : std_logic_vector(maxAddrBitIncIO downto 0);
+variable counter : std_logic_vector(63 downto 0);
+
+
+
+begin
+
+ t:= (others => '0');
+ t2:= (others => '0');
+
+counter := (others => '0');
+ -- print header for the logfile
+ print(l_file, "#pc,opcode,sp,top_of_stack ");
+ print(l_file, "#----------");
+ print(l_file, " ");
+
+ wait until clk = '1';
+ wait until clk = '0';
+
+ while true loop
+
+ counter := counter + 1;
+ if begin_inst = '1' then
+ t(maxAddrBitIncIO downto 2):=sp;
+ t2:=pc;
+ print(l_file, "0x" & hstr(t2) & " 0x" & hstr(opcode) & " 0x" & hstr(t) & " 0x" & hstr(memA) & " 0x" & hstr(memB) & " 0x" & hstr(intSp) & " 0x" & hstr(counter));
+ end if;
+
+ wait until clk = '0';
+
+ end loop;
+
+ end process receive_data;
+
+
+
+end behave;
+
diff --git a/zpu/hdl/zpu4/src/txt_util.vhd b/zpu/hdl/zpu4/src/txt_util.vhd
new file mode 100644
index 0000000..d3bf01a
--- /dev/null
+++ b/zpu/hdl/zpu4/src/txt_util.vhd
@@ -0,0 +1,587 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use std.textio.all;
+
+library work;
+
+package txt_util is
+
+ -- prints a message to the screen
+ procedure print(text: string);
+
+ -- prints the message when active
+ -- useful for debug switches
+ procedure print(active: boolean; text: string);
+
+ -- converts std_logic into a character
+ function chr(sl: std_logic) return character;
+
+ -- converts std_logic into a string (1 to 1)
+ function str(sl: std_logic) return string;
+
+ -- converts std_logic_vector into a string (binary base)
+ function str(slv: std_logic_vector) return string;
+
+ -- converts boolean into a string
+ function str(b: boolean) return string;
+
+ -- converts an integer into a single character
+ -- (can also be used for hex conversion and other bases)
+ function chr(int: integer) return character;
+
+ -- converts integer into string using specified base
+ function str(int: integer; base: integer) return string;
+
+ -- converts integer to string, using base 10
+ function str(int: integer) return string;
+
+ -- convert std_logic_vector into a string in hex format
+ function hstr(slv: std_logic_vector) return string;
+
+
+ -- functions to manipulate strings
+ -----------------------------------
+
+ -- convert a character to upper case
+ function to_upper(c: character) return character;
+
+ -- convert a character to lower case
+ function to_lower(c: character) return character;
+
+ -- convert a string to upper case
+ function to_upper(s: string) return string;
+
+ -- convert a string to lower case
+ function to_lower(s: string) return string;
+
+
+
+ -- functions to convert strings into other formats
+ --------------------------------------------------
+
+ -- converts a character into std_logic
+ function to_std_logic(c: character) return std_logic;
+
+ -- converts a string into std_logic_vector
+ function to_std_logic_vector(s: string) return std_logic_vector;
+
+
+
+ -- file I/O
+ -----------
+
+ -- read variable length string from input file
+ procedure str_read(file in_file: TEXT;
+ res_string: out string);
+
+ -- print string to a file and start new line
+ procedure print(file out_file: TEXT;
+ new_string: in string);
+
+ -- print character to a file and start new line
+ procedure print(file out_file: TEXT;
+ char: in character);
+
+end txt_util;
+
+
+
+
+package body txt_util is
+
+
+
+
+ -- prints text to the screen
+
+ procedure print(text: string) is
+ variable msg_line: line;
+ begin
+ write(msg_line, text);
+ writeline(output, msg_line);
+ end print;
+
+
+
+
+ -- prints text to the screen when active
+
+ procedure print(active: boolean; text: string) is
+ begin
+ if active then
+ print(text);
+ end if;
+ end print;
+
+
+ -- converts std_logic into a character
+
+ function chr(sl: std_logic) return character is
+ variable c: character;
+ begin
+ case sl is
+ when 'U' => c:= 'U';
+ when 'X' => c:= 'X';
+ when '0' => c:= '0';
+ when '1' => c:= '1';
+ when 'Z' => c:= 'Z';
+ when 'W' => c:= 'W';
+ when 'L' => c:= 'L';
+ when 'H' => c:= 'H';
+ when '-' => c:= '-';
+ end case;
+ return c;
+ end chr;
+
+
+
+ -- converts std_logic into a string (1 to 1)
+
+ function str(sl: std_logic) return string is
+ variable s: string(1 to 1);
+ begin
+ s(1) := chr(sl);
+ return s;
+ end str;
+
+
+
+ -- converts std_logic_vector into a string (binary base)
+ -- (this also takes care of the fact that the range of
+ -- a string is natural while a std_logic_vector may
+ -- have an integer range)
+
+ function str(slv: std_logic_vector) return string is
+ variable result : string (1 to slv'length);
+ variable r : integer;
+ begin
+ r := 1;
+ for i in slv'range loop
+ result(r) := chr(slv(i));
+ r := r + 1;
+ end loop;
+ return result;
+ end str;
+
+
+ function str(b: boolean) return string is
+
+ begin
+ if b then
+ return "true";
+ else
+ return "false";
+ end if;
+ end str;
+
+
+ -- converts an integer into a character
+ -- for 0 to 9 the obvious mapping is used, higher
+ -- values are mapped to the characters A-Z
+ -- (this is usefull for systems with base > 10)
+ -- (adapted from Steve Vogwell's posting in comp.lang.vhdl)
+
+ function chr(int: integer) return character is
+ variable c: character;
+ begin
+ case int is
+ when 0 => c := '0';
+ when 1 => c := '1';
+ when 2 => c := '2';
+ when 3 => c := '3';
+ when 4 => c := '4';
+ when 5 => c := '5';
+ when 6 => c := '6';
+ when 7 => c := '7';
+ when 8 => c := '8';
+ when 9 => c := '9';
+ when 10 => c := 'A';
+ when 11 => c := 'B';
+ when 12 => c := 'C';
+ when 13 => c := 'D';
+ when 14 => c := 'E';
+ when 15 => c := 'F';
+ when 16 => c := 'G';
+ when 17 => c := 'H';
+ when 18 => c := 'I';
+ when 19 => c := 'J';
+ when 20 => c := 'K';
+ when 21 => c := 'L';
+ when 22 => c := 'M';
+ when 23 => c := 'N';
+ when 24 => c := 'O';
+ when 25 => c := 'P';
+ when 26 => c := 'Q';
+ when 27 => c := 'R';
+ when 28 => c := 'S';
+ when 29 => c := 'T';
+ when 30 => c := 'U';
+ when 31 => c := 'V';
+ when 32 => c := 'W';
+ when 33 => c := 'X';
+ when 34 => c := 'Y';
+ when 35 => c := 'Z';
+ when others => c := '?';
+ end case;
+ return c;
+ end chr;
+
+
+
+ -- convert integer to string using specified base
+ -- (adapted from Steve Vogwell's posting in comp.lang.vhdl)
+
+ function str(int: integer; base: integer) return string is
+
+ variable temp: string(1 to 10);
+ variable num: integer;
+ variable abs_int: integer;
+ variable len: integer := 1;
+ variable power: integer := 1;
+
+ begin
+
+ -- bug fix for negative numbers
+ abs_int := abs(int);
+
+ num := abs_int;
+
+ while num >= base loop -- Determine how many
+ len := len + 1; -- characters required
+ num := num / base; -- to represent the
+ end loop ; -- number.
+
+ for i in len downto 1 loop -- Convert the number to
+ temp(i) := chr(abs_int/power mod base); -- a string starting
+ power := power * base; -- with the right hand
+ end loop ; -- side.
+
+ -- return result and add sign if required
+ if int < 0 then
+ return '-'& temp(1 to len);
+ else
+ return temp(1 to len);
+ end if;
+
+ end str;
+
+
+ -- convert integer to string, using base 10
+ function str(int: integer) return string is
+
+ begin
+
+ return str(int, 10) ;
+
+ end str;
+
+
+
+ -- converts a std_logic_vector into a hex string.
+ function hstr(slv: std_logic_vector) return string is
+ variable hexlen: integer;
+ variable longslv : std_logic_vector(67 downto 0) := (others => '0');
+ variable hex : string(1 to 16);
+ variable fourbit : std_logic_vector(3 downto 0);
+ begin
+ hexlen := (slv'left+1)/4;
+ if (slv'left+1) mod 4 /= 0 then
+ hexlen := hexlen + 1;
+ end if;
+ longslv(slv'left downto 0) := slv;
+ for i in (hexlen -1) downto 0 loop
+ fourbit := longslv(((i*4)+3) downto (i*4));
+ case fourbit is
+ when "0000" => hex(hexlen -I) := '0';
+ when "0001" => hex(hexlen -I) := '1';
+ when "0010" => hex(hexlen -I) := '2';
+ when "0011" => hex(hexlen -I) := '3';
+ when "0100" => hex(hexlen -I) := '4';
+ when "0101" => hex(hexlen -I) := '5';
+ when "0110" => hex(hexlen -I) := '6';
+ when "0111" => hex(hexlen -I) := '7';
+ when "1000" => hex(hexlen -I) := '8';
+ when "1001" => hex(hexlen -I) := '9';
+ when "1010" => hex(hexlen -I) := 'A';
+ when "1011" => hex(hexlen -I) := 'B';
+ when "1100" => hex(hexlen -I) := 'C';
+ when "1101" => hex(hexlen -I) := 'D';
+ when "1110" => hex(hexlen -I) := 'E';
+ when "1111" => hex(hexlen -I) := 'F';
+ when "ZZZZ" => hex(hexlen -I) := 'z';
+ when "UUUU" => hex(hexlen -I) := 'u';
+ when "XXXX" => hex(hexlen -I) := 'x';
+ when others => hex(hexlen -I) := '?';
+ end case;
+ end loop;
+ return hex(1 to hexlen);
+ end hstr;
+
+
+
+ -- functions to manipulate strings
+ -----------------------------------
+
+
+ -- convert a character to upper case
+
+ function to_upper(c: character) return character is
+
+ variable u: character;
+
+ begin
+
+ case c is
+ when 'a' => u := 'A';
+ when 'b' => u := 'B';
+ when 'c' => u := 'C';
+ when 'd' => u := 'D';
+ when 'e' => u := 'E';
+ when 'f' => u := 'F';
+ when 'g' => u := 'G';
+ when 'h' => u := 'H';
+ when 'i' => u := 'I';
+ when 'j' => u := 'J';
+ when 'k' => u := 'K';
+ when 'l' => u := 'L';
+ when 'm' => u := 'M';
+ when 'n' => u := 'N';
+ when 'o' => u := 'O';
+ when 'p' => u := 'P';
+ when 'q' => u := 'Q';
+ when 'r' => u := 'R';
+ when 's' => u := 'S';
+ when 't' => u := 'T';
+ when 'u' => u := 'U';
+ when 'v' => u := 'V';
+ when 'w' => u := 'W';
+ when 'x' => u := 'X';
+ when 'y' => u := 'Y';
+ when 'z' => u := 'Z';
+ when others => u := c;
+ end case;
+
+ return u;
+
+ end to_upper;
+
+
+ -- convert a character to lower case
+
+ function to_lower(c: character) return character is
+
+ variable l: character;
+
+ begin
+
+ case c is
+ when 'A' => l := 'a';
+ when 'B' => l := 'b';
+ when 'C' => l := 'c';
+ when 'D' => l := 'd';
+ when 'E' => l := 'e';
+ when 'F' => l := 'f';
+ when 'G' => l := 'g';
+ when 'H' => l := 'h';
+ when 'I' => l := 'i';
+ when 'J' => l := 'j';
+ when 'K' => l := 'k';
+ when 'L' => l := 'l';
+ when 'M' => l := 'm';
+ when 'N' => l := 'n';
+ when 'O' => l := 'o';
+ when 'P' => l := 'p';
+ when 'Q' => l := 'q';
+ when 'R' => l := 'r';
+ when 'S' => l := 's';
+ when 'T' => l := 't';
+ when 'U' => l := 'u';
+ when 'V' => l := 'v';
+ when 'W' => l := 'w';
+ when 'X' => l := 'x';
+ when 'Y' => l := 'y';
+ when 'Z' => l := 'z';
+ when others => l := c;
+ end case;
+
+ return l;
+
+ end to_lower;
+
+
+
+ -- convert a string to upper case
+
+ function to_upper(s: string) return string is
+
+ variable uppercase: string (s'range);
+
+ begin
+
+ for i in s'range loop
+ uppercase(i):= to_upper(s(i));
+ end loop;
+ return uppercase;
+
+ end to_upper;
+
+
+
+ -- convert a string to lower case
+
+ function to_lower(s: string) return string is
+
+ variable lowercase: string (s'range);
+
+ begin
+
+ for i in s'range loop
+ lowercase(i):= to_lower(s(i));
+ end loop;
+ return lowercase;
+
+ end to_lower;
+
+
+
+-- functions to convert strings into other types
+
+
+-- converts a character into a std_logic
+
+function to_std_logic(c: character) return std_logic is
+ variable sl: std_logic;
+ begin
+ case c is
+ when 'U' =>
+ sl := 'U';
+ when 'X' =>
+ sl := 'X';
+ when '0' =>
+ sl := '0';
+ when '1' =>
+ sl := '1';
+ when 'Z' =>
+ sl := 'Z';
+ when 'W' =>
+ sl := 'W';
+ when 'L' =>
+ sl := 'L';
+ when 'H' =>
+ sl := 'H';
+ when '-' =>
+ sl := '-';
+ when others =>
+ sl := 'X';
+ end case;
+ return sl;
+ end to_std_logic;
+
+
+-- converts a string into std_logic_vector
+
+function to_std_logic_vector(s: string) return std_logic_vector is
+ variable slv: std_logic_vector(s'high-s'low downto 0);
+ variable k: integer;
+begin
+ k := s'high-s'low;
+ for i in s'range loop
+ slv(k) := to_std_logic(s(i));
+ k := k - 1;
+ end loop;
+ return slv;
+end to_std_logic_vector;
+
+
+
+
+
+
+----------------
+-- file I/O --
+----------------
+
+
+
+-- read variable length string from input file
+
+procedure str_read(file in_file: TEXT;
+ res_string: out string) is
+
+ variable l: line;
+ variable c: character;
+ variable is_string: boolean;
+
+ begin
+
+ readline(in_file, l);
+ -- clear the contents of the result string
+ for i in res_string'range loop
+ res_string(i) := ' ';
+ end loop;
+ -- read all characters of the line, up to the length
+ -- of the results string
+ for i in res_string'range loop
+ read(l, c, is_string);
+ res_string(i) := c;
+ if not is_string then -- found end of line
+ exit;
+ end if;
+ end loop;
+
+end str_read;
+
+
+-- print string to a file
+procedure print(file out_file: TEXT;
+ new_string: in string) is
+
+ variable l: line;
+
+ begin
+
+ write(l, new_string);
+ writeline(out_file, l);
+
+end print;
+
+
+-- print character to a file and start new line
+procedure print(file out_file: TEXT;
+ char: in character) is
+
+ variable l: line;
+
+ begin
+
+ write(l, char);
+ writeline(out_file, l);
+
+end print;
+
+
+
+-- appends contents of a string to a file until line feed occurs
+-- (LF is considered to be the end of the string)
+
+procedure str_write(file out_file: TEXT;
+ new_string: in string) is
+ begin
+
+ for i in new_string'range loop
+ print(out_file, new_string(i));
+ if new_string(i) = LF then -- end of string
+ exit;
+ end if;
+ end loop;
+
+end str_write;
+
+
+
+
+end txt_util;
+
+
+
+
diff --git a/zpu/hdl/zpu4/src/xmake.filelist b/zpu/hdl/zpu4/src/xmake.filelist
new file mode 100644
index 0000000..91e623f
--- /dev/null
+++ b/zpu/hdl/zpu4/src/xmake.filelist
@@ -0,0 +1,12 @@
+vhdl work "ic300_config.vhd"
+vhdl work "ic300pkg.vhd"
+vhdl zylin "zpu_config.vhd"
+vhdl zylin "zpupkg.vhd"
+vhdl zylin "zpu_core.vhd"
+vhdl work "bram.vhd"
+vhdl zylin "zpuio.vhd"
+vhdl zylin "..\dummyfpgalib\arm7\src\arm7pkg.vhd"
+vhdl zylin "..\dummyfpgalib\arm7\src\arm7wb.vhd"
+vhdl work "clocks.vhd"
+vhdl work "timer.vhd"
+vhdl work "ic300.vhd" \ No newline at end of file
diff --git a/zpu/hdl/zpu4/src/xmake.filelist.bramsmall b/zpu/hdl/zpu4/src/xmake.filelist.bramsmall
new file mode 100644
index 0000000..141633e
--- /dev/null
+++ b/zpu/hdl/zpu4/src/xmake.filelist.bramsmall
@@ -0,0 +1,5 @@
+vhdl work "zpu_config.vhd"
+vhdl work "zpupkg.vhd"
+vhdl work "zpu_core_small.vhd"
+vhdl work "bram_dmips.vhd"
+vhdl work "testlut.vhd"
diff --git a/zpu/hdl/zpu4/src/xmake.xst b/zpu/hdl/zpu4/src/xmake.xst
new file mode 100644
index 0000000..bfdb23f
--- /dev/null
+++ b/zpu/hdl/zpu4/src/xmake.xst
@@ -0,0 +1,53 @@
+set -tmpdir ../tmp
+set -xsthdpdir ../xst
+run
+-ifn xmake.filelist
+-ifmt mixed
+-ofn ../syn/ic300
+-ofmt NGC
+-p xc3s400-4-ft256
+-top ic300
+-opt_mode Area
+-opt_level 2
+-iuc NO
+-lso ic300.lso
+-keep_hierarchy NO
+-glob_opt AllClockNets
+-rtlview Yes
+-read_cores YES
+-write_timing_constraints NO
+-cross_clock_analysis NO
+-hierarchy_separator /
+-bus_delimiter <>
+-case maintain
+-slice_utilization_ratio 100
+-verilog2001 YES
+-fsm_extract YES -fsm_encoding Auto
+-safe_implementation No
+-fsm_style lut
+-ram_extract Yes
+-ram_style Auto
+-rom_extract Yes
+-rom_style Auto
+-mux_extract YES
+-mux_style Auto
+-decoder_extract YES
+-priority_extract YES
+-shreg_extract YES
+-shift_extract YES
+-xor_collapse YES
+-resource_sharing YES
+-mult_style auto
+-iobuf YES
+-max_fanout 500
+-bufg 8
+-register_duplication YES
+-equivalent_register_removal NO
+-register_balancing No
+-slice_packing YES
+-optimize_primitives NO
+-use_clock_enable Yes
+-use_sync_set No
+-use_sync_reset No
+-iob true
+-slice_utilization_ratio_maxmargin 5
diff --git a/zpu/hdl/zpu4/src/zpu_config.vhd b/zpu/hdl/zpu4/src/zpu_config.vhd
new file mode 100644
index 0000000..a13c0bf
--- /dev/null
+++ b/zpu/hdl/zpu4/src/zpu_config.vhd
@@ -0,0 +1,16 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+package zpu_config is
+ -- generate trace output or not.
+ constant Generate_Trace : boolean := false;
+ constant wordPower : integer := 5;
+ -- during simulation, set this to '0' to get matching trace.txt
+ constant DontCareValue : std_logic := 'X';
+ -- Clock frequency in MHz.
+ constant ZPU_Frequency : std_logic_vector(7 downto 0) := x"64";
+ -- This is the msb address bit. bytes=2^(maxAddrBitIncIO+1)
+ constant maxAddrBitIncIO : integer := 15;
+
+end zpu_config;
diff --git a/zpu/hdl/zpu4/src/zpu_config_fastsim.vhd b/zpu/hdl/zpu4/src/zpu_config_fastsim.vhd
new file mode 100644
index 0000000..d39c9e9
--- /dev/null
+++ b/zpu/hdl/zpu4/src/zpu_config_fastsim.vhd
@@ -0,0 +1,15 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+package zpu_config is
+
+ constant Generate_Trace : boolean := false;
+ constant wordPower : integer := 5;
+ -- during simulation, set this to '0' to get matching trace.txt
+ constant DontCareValue : std_logic := '0';
+ -- Clock frequency in MHz.
+ constant ZPU_Frequency : std_logic_vector(7 downto 0) := x"50"; -- 80MHz
+ constant maxAddrBitIncIO : integer := 15;
+
+end zpu_config;
diff --git a/zpu/hdl/zpu4/src/zpu_config_trace.vhd b/zpu/hdl/zpu4/src/zpu_config_trace.vhd
new file mode 100644
index 0000000..d1bbbbb
--- /dev/null
+++ b/zpu/hdl/zpu4/src/zpu_config_trace.vhd
@@ -0,0 +1,15 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+
+package zpu_config is
+
+ constant Generate_Trace : boolean := true;
+ constant wordPower : integer := 5;
+ -- during simulation, set this to '0' to get matching trace.txt
+ constant DontCareValue : std_logic := '0';
+ -- Clock frequency in MHz.
+ constant ZPU_Frequency : std_logic_vector(7 downto 0) := x"64";
+ constant maxAddrBitIncIO : integer := 15;
+
+end zpu_config;
diff --git a/zpu/hdl/zpu4/src/zpu_core.vhd b/zpu/hdl/zpu4/src/zpu_core.vhd
new file mode 100644
index 0000000..c7093e2
--- /dev/null
+++ b/zpu/hdl/zpu4/src/zpu_core.vhd
@@ -0,0 +1,900 @@
+
+-- Company: ZPU4 generic memory interface CPU
+-- Engineer: Øyvind Harboe
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+use IEEE.STD_LOGIC_arith.ALL;
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+
+
+-- mem_writeEnable - set to '1' for a single cycle to send off a write request.
+-- mem_write is valid only while mem_writeEnable='1'.
+-- mem_readEnable - set to '1' for a single cycle to send off a read request.
+--
+-- mem_busy - It is illegal to send off a read/write request when mem_busy='1'.
+-- Set to '0' when mem_read is valid after a read request.
+-- If it goes to '1'(busy), it is on the cycle after mem_read/writeEnable
+-- is '1'.
+-- mem_addr - address for read/write request
+-- mem_read - read data. Valid only on the cycle after mem_busy='0' after
+-- mem_readEnable='1' for a single cycle.
+-- mem_write - data to write
+-- mem_writeMask - set to '1' for those bits that are to be written to memory upon
+-- write request
+-- break - set to '1' when CPU hits break instruction
+-- interrupt - set to '1' until interrupts are cleared by CPU.
+
+
+
+
+entity zpu_core is
+ Port ( clk : in std_logic;
+ areset : in std_logic;
+ enable : in std_logic;
+ in_mem_busy : in std_logic;
+ mem_read : in std_logic_vector(wordSize-1 downto 0);
+ mem_write : out std_logic_vector(wordSize-1 downto 0);
+ out_mem_addr : out std_logic_vector(maxAddrBitIncIO downto 0);
+ out_mem_writeEnable : out std_logic;
+ out_mem_readEnable : out std_logic;
+ mem_writeMask: out std_logic_vector(wordBytes-1 downto 0);
+ interrupt : in std_logic;
+ break : out std_logic);
+end zpu_core;
+
+architecture behave of zpu_core is
+
+type InsnType is
+(
+State_AddTop,
+State_Dup,
+State_DupStackB,
+State_Pop,
+State_Popdown,
+State_Add,
+State_Or,
+State_And,
+State_Store,
+State_AddSP,
+State_Shift,
+State_Nop,
+State_Im,
+State_LoadSP,
+State_StoreSP,
+State_Emulate,
+State_Load,
+State_PushPC,
+State_PushSP,
+State_PopPC,
+State_PopPCRel,
+State_Not,
+State_Flip,
+State_PopSP,
+State_Neqbranch,
+State_Eq,
+State_Loadb,
+State_Mult,
+State_Lessthan,
+State_Lessthanorequal,
+State_Ulessthanorequal,
+State_Ulessthan,
+State_Pushspadd,
+State_Call,
+State_Callpcrel,
+State_Sub,
+State_Break,
+State_Storeb,
+State_InsnFetch
+);
+
+type StateType is
+(
+State_Load2,
+State_Popped,
+State_LoadSP2,
+State_LoadSP3,
+State_AddSP2,
+State_Fetch,
+State_Execute,
+State_Decode,
+State_Decode2,
+State_Resync,
+
+State_StoreSP2,
+State_Resync2,
+State_Resync3,
+State_Loadb2,
+State_Storeb2,
+State_Mult2,
+State_Mult3,
+State_Mult5,
+State_Mult4,
+State_BinaryOpResult2,
+State_BinaryOpResult,
+State_Idle
+);
+
+
+signal pc : std_logic_vector(maxAddrBitIncIO downto 0);
+signal sp : std_logic_vector(maxAddrBitIncIO downto minAddrBit);
+signal incSp : std_logic_vector(maxAddrBitIncIO downto minAddrBit);
+signal incIncSp : std_logic_vector(maxAddrBitIncIO downto minAddrBit);
+signal decSp : std_logic_vector(maxAddrBitIncIO downto minAddrBit);
+signal stackA : std_logic_vector(wordSize-1 downto 0);
+signal binaryOpResult : std_logic_vector(wordSize-1 downto 0);
+signal binaryOpResult2 : std_logic_vector(wordSize-1 downto 0);
+signal multResult2 : std_logic_vector(wordSize-1 downto 0);
+signal multResult3 : std_logic_vector(wordSize-1 downto 0);
+signal multResult : std_logic_vector(wordSize-1 downto 0);
+signal multA : std_logic_vector(wordSize-1 downto 0);
+signal multB : std_logic_vector(wordSize-1 downto 0);
+signal stackB : std_logic_vector(wordSize-1 downto 0);
+signal idim_flag : std_logic;
+signal busy : std_logic;
+signal mem_writeEnable : std_logic;
+signal mem_readEnable : std_logic;
+signal mem_addr : std_logic_vector(maxAddrBitIncIO downto minAddrBit);
+signal mem_delayAddr : std_logic_vector(maxAddrBitIncIO downto minAddrBit);
+signal mem_delayReadEnable : std_logic;
+
+signal decodeWord : std_logic_vector(wordSize-1 downto 0);
+
+
+signal state : StateType;
+signal insn : InsnType;
+type InsnArray is array(0 to wordBytes-1) of InsnType;
+signal decodedOpcode : InsnArray;
+
+type OpcodeArray is array(0 to wordBytes-1) of std_logic_vector(7 downto 0);
+
+signal opcode : OpcodeArray;
+
+
+
+
+signal begin_inst : std_logic;
+signal trace_opcode : std_logic_vector(7 downto 0);
+signal trace_pc : std_logic_vector(maxAddrBitIncIO downto 0);
+signal trace_sp : std_logic_vector(maxAddrBitIncIO downto minAddrBit);
+signal trace_topOfStack : std_logic_vector(wordSize-1 downto 0);
+signal trace_topOfStackB : std_logic_vector(wordSize-1 downto 0);
+
+-- state machine.
+
+begin
+
+
+ traceFileGenerate:
+ if Generate_Trace generate
+ trace_file: trace port map (
+ clk => clk,
+ begin_inst => begin_inst,
+ pc => trace_pc,
+ opcode => trace_opcode,
+ sp => trace_sp,
+ memA => trace_topOfStack,
+ memB => trace_topOfStackB,
+ busy => busy,
+ intsp => (others => 'U')
+ );
+ end generate;
+
+
+ -- the memory subsystem will tell us one cycle later whether or
+ -- not it is busy
+ out_mem_writeEnable <= mem_writeEnable;
+ out_mem_readEnable <= mem_readEnable;
+ out_mem_addr(maxAddrBitIncIO downto minAddrBit) <= mem_addr;
+ out_mem_addr(minAddrBit-1 downto 0) <= (others => '0');
+
+ incSp <= sp + 1;
+ incIncSp <= sp + 2;
+ decSp <= sp - 1;
+
+
+ opcodeControl:
+ process(clk, areset)
+ variable tOpcode : std_logic_vector(OpCode_Size-1 downto 0);
+ variable spOffset : std_logic_vector(4 downto 0);
+ variable tSpOffset : std_logic_vector(4 downto 0);
+ variable nextPC : std_logic_vector(maxAddrBitIncIO downto 0);
+ variable tNextState : InsnType;
+ variable tDecodedOpcode : InsnArray;
+ variable tMultResult : std_logic_vector(wordSize*2-1 downto 0);
+ begin
+ if areset = '1' then
+ state <= State_Idle;
+ break <= '0';
+ -- point to top of RAM-8
+ sp <= (others => '0');
+ sp(maxAddrBit downto minAddrBit+1) <= (others => '1');
+
+ pc <= (others => '0');
+ idim_flag <= '0';
+ begin_inst <= '0';
+ mem_writeEnable <= '0';
+ mem_readEnable <= '0';
+ multA <= (others => '0');
+ multB <= (others => '0');
+ mem_writeMask <= (others => '1');
+ elsif (clk'event and clk = '1') then
+ -- we must multiply unconditionally to get pipelined multiplication
+ tMultResult := multA * multB;
+ multResult3 <= multResult2;
+ multResult2 <= multResult;
+ multResult <= tMultResult(wordSize-1 downto 0);
+
+
+ binaryOpResult2 <= binaryOpResult; -- pipeline a bit.
+
+
+ multA <= (others => DontCareValue);
+ multB <= (others => DontCareValue);
+
+
+ mem_addr <= (others => DontCareValue);
+ mem_readEnable <='0';
+ mem_writeEnable <='0';
+ mem_write <= (others => DontCareValue);
+
+ if (mem_writeEnable = '1') and (mem_readEnable = '1') then
+ report "read/write collision" severity failure;
+ end if;
+
+
+
+
+ spOffset(4):=not opcode(conv_integer(pc(byteBits-1 downto 0)))(4);
+ spOffset(3 downto 0):=opcode(conv_integer(pc(byteBits-1 downto 0)))(3 downto 0);
+ nextPC := pc + 1;
+
+ -- prepare trace snapshot
+ trace_opcode <= opcode(conv_integer(pc(byteBits-1 downto 0)));
+ trace_pc <= pc;
+ trace_sp <= sp;
+ trace_topOfStack <= stackA;
+ trace_topOfStackB <= stackB;
+ begin_inst <= '0';
+
+
+ case state is
+ when State_Idle =>
+ if enable='1' then
+ state <= State_Resync;
+ end if;
+ -- Initial state of ZPU, fetch top of stack + first instruction
+ when State_Resync =>
+ if in_mem_busy='0' then
+ mem_addr <= sp;
+ mem_readEnable <= '1';
+ state <= State_Resync2;
+ end if;
+ when State_Resync2 =>
+ if in_mem_busy='0' then
+ stackA <= mem_read;
+ mem_addr <= incSp;
+ mem_readEnable <= '1';
+ state <= State_Resync3;
+ end if;
+ when State_Resync3 =>
+ if in_mem_busy='0' then
+ stackB <= mem_read;
+ mem_addr <= pc(maxAddrBitIncIO downto minAddrBit);
+ mem_readEnable <= '1';
+ state <= State_Decode;
+ end if;
+ when State_Decode =>
+ if in_mem_busy='0' then
+ decodeWord <= mem_read;
+ state <= State_Decode2;
+ end if;
+ when State_Decode2 =>
+ -- decode 4 instructions in parallel
+ for i in 0 to wordBytes-1 loop
+ tOpcode := decodeWord((wordBytes-1-i+1)*8-1 downto (wordBytes-1-i)*8);
+
+ tSpOffset(4):=not tOpcode(4);
+ tSpOffset(3 downto 0):=tOpcode(3 downto 0);
+
+ opcode(i) <= tOpcode;
+ if (tOpcode(7 downto 7)=OpCode_Im) then
+ tNextState:=State_Im;
+ elsif (tOpcode(7 downto 5)=OpCode_StoreSP) then
+ if tSpOffset = 0 then
+ tNextState := State_Pop;
+ elsif tSpOffset=1 then
+ tNextState := State_PopDown;
+ else
+ tNextState :=State_StoreSP;
+ end if;
+ elsif (tOpcode(7 downto 5)=OpCode_LoadSP) then
+ if tSpOffset = 0 then
+ tNextState :=State_Dup;
+ elsif tSpOffset = 1 then
+ tNextState :=State_DupStackB;
+ else
+ tNextState :=State_LoadSP;
+ end if;
+ elsif (tOpcode(7 downto 5)=OpCode_Emulate) then
+ tNextState :=State_Emulate;
+ if tOpcode(5 downto 0)=OpCode_Neqbranch then
+ tNextState :=State_Neqbranch;
+ elsif tOpcode(5 downto 0)=OpCode_Eq then
+ tNextState :=State_Eq;
+ elsif tOpcode(5 downto 0)=OpCode_Lessthan then
+ tNextState :=State_Lessthan;
+ elsif tOpcode(5 downto 0)=OpCode_Lessthanorequal then
+ --tNextState :=State_Lessthanorequal;
+ elsif tOpcode(5 downto 0)=OpCode_Ulessthan then
+ tNextState :=State_Ulessthan;
+ elsif tOpcode(5 downto 0)=OpCode_Ulessthanorequal then
+ --tNextState :=State_Ulessthanorequal;
+ elsif tOpcode(5 downto 0)=OpCode_Loadb then
+ tNextState :=State_Loadb;
+ elsif tOpcode(5 downto 0)=OpCode_Mult then
+ tNextState :=State_Mult;
+ elsif tOpcode(5 downto 0)=OpCode_Storeb then
+ tNextState :=State_Storeb;
+ elsif tOpcode(5 downto 0)=OpCode_Pushspadd then
+ tNextState :=State_Pushspadd;
+ elsif tOpcode(5 downto 0)=OpCode_Callpcrel then
+ tNextState :=State_Callpcrel;
+ elsif tOpcode(5 downto 0)=OpCode_Call then
+ --tNextState :=State_Call;
+ elsif tOpcode(5 downto 0)=OpCode_Sub then
+ tNextState :=State_Sub;
+ elsif tOpcode(5 downto 0)=OpCode_PopPCRel then
+ --tNextState :=State_PopPCRel;
+ end if;
+ elsif (tOpcode(7 downto 4)=OpCode_AddSP) then
+ if tSpOffset = 0 then
+ tNextState := State_Shift;
+ elsif tSpOffset = 1 then
+ tNextState := State_AddTop;
+ else
+ tNextState :=State_AddSP;
+ end if;
+ else
+ case tOpcode(3 downto 0) is
+ when OpCode_Nop =>
+ tNextState :=State_Nop;
+ when OpCode_PushSP =>
+ tNextState :=State_PushSP;
+ when OpCode_PopPC =>
+ tNextState :=State_PopPC;
+ when OpCode_Add =>
+ tNextState :=State_Add;
+ when OpCode_Or =>
+ tNextState :=State_Or;
+ when OpCode_And =>
+ tNextState :=State_And;
+ when OpCode_Load =>
+ tNextState :=State_Load;
+ when OpCode_Not =>
+ tNextState :=State_Not;
+ when OpCode_Flip =>
+ tNextState :=State_Flip;
+ when OpCode_Store =>
+ tNextState :=State_Store;
+ when OpCode_PopSP =>
+ tNextState :=State_PopSP;
+ when others =>
+ tNextState := State_Break;
+
+ end case;
+ end if;
+ tDecodedOpcode(i) := tNextState;
+
+ end loop;
+
+ insn <= tDecodedOpcode(conv_integer(pc(byteBits-1 downto 0)));
+
+ -- once we wrap, we need to fetch
+ tDecodedOpcode(0) := State_InsnFetch;
+
+ decodedOpcode <= tDecodedOpcode;
+ state <= State_Execute;
+
+
+
+ -- Each instruction must:
+ --
+ -- 1. set idim_flag
+ -- 2. increase pc if applicable
+ -- 3. set next state if appliable
+ -- 4. do it's operation
+
+ when State_Execute =>
+ insn <= decodedOpcode(conv_integer(nextPC(byteBits-1 downto 0)));
+
+ case insn is
+ when State_InsnFetch =>
+ state <= State_Fetch;
+ when State_Im =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '1';
+ pc <= pc + 1;
+
+ if idim_flag='1' then
+ stackA(wordSize-1 downto 7) <= stackA(wordSize-8 downto 0);
+ stackA(6 downto 0) <= opcode(conv_integer(pc(byteBits-1 downto 0)))(6 downto 0);
+ else
+ mem_writeEnable <= '1';
+ mem_addr <= incSp;
+ mem_write <= stackB;
+ stackB <= stackA;
+ sp <= decSp;
+ for i in wordSize-1 downto 7 loop
+ stackA(i) <= opcode(conv_integer(pc(byteBits-1 downto 0)))(6);
+ end loop;
+ stackA(6 downto 0) <= opcode(conv_integer(pc(byteBits-1 downto 0)))(6 downto 0);
+ end if;
+ end if;
+ when State_StoreSP =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ state <= State_StoreSP2;
+
+ mem_writeEnable <= '1';
+ mem_addr <= sp+spOffset;
+ mem_write <= stackA;
+ stackA <= stackB;
+ sp <= incSp;
+ end if;
+
+
+ when State_LoadSP =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ state <= State_LoadSP2;
+
+ sp <= decSp;
+ mem_writeEnable <= '1';
+ mem_addr <= incSp;
+ mem_write <= stackB;
+ end if;
+ when State_Emulate =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ sp <= decSp;
+ mem_writeEnable <= '1';
+ mem_addr <= incSp;
+ mem_write <= stackB;
+ stackA <= (others => DontCareValue);
+ stackA(maxAddrBitIncIO downto 0) <= pc + 1;
+ stackB <= stackA;
+
+ -- The emulate address is:
+ -- 98 7654 3210
+ -- 0000 00aa aaa0 0000
+ pc <= (others => '0');
+ pc(9 downto 5) <= opcode(conv_integer(pc(byteBits-1 downto 0)))(4 downto 0);
+ state <= State_Fetch;
+ end if;
+ when State_Callpcrel =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ stackA <= (others => DontCareValue);
+ stackA(maxAddrBitIncIO downto 0) <= pc + 1;
+
+ pc <= pc + stackA(maxAddrBitIncIO downto 0);
+ state <= State_Fetch;
+ end if;
+ when State_Call =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ stackA <= (others => DontCareValue);
+ stackA(maxAddrBitIncIO downto 0) <= pc + 1;
+ pc <= stackA(maxAddrBitIncIO downto 0);
+ state <= State_Fetch;
+ end if;
+ when State_AddSP =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ state <= State_AddSP2;
+
+ mem_readEnable <= '1';
+ mem_addr <= sp+spOffset;
+ end if;
+ when State_PushSP =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= pc + 1;
+
+ sp <= decSp;
+ stackA <= (others => '0');
+ stackA(maxAddrBitIncIO downto minAddrBit) <= sp;
+ stackB <= stackA;
+ mem_writeEnable <= '1';
+ mem_addr <= incSp;
+ mem_write <= stackB;
+ end if;
+ when State_PopPC =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= stackA(maxAddrBitIncIO downto 0);
+ sp <= incSp;
+
+ mem_writeEnable <= '1';
+ mem_addr <= incSp;
+ mem_write <= stackB;
+ state <= State_Resync;
+ end if;
+ when State_PopPCRel =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= stackA(maxAddrBitIncIO downto 0) + pc;
+ sp <= incSp;
+
+ mem_writeEnable <= '1';
+ mem_addr <= incSp;
+ mem_write <= stackB;
+ state <= State_Resync;
+ end if;
+ when State_Add =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ stackA <= stackA + stackB;
+
+ mem_readEnable <= '1';
+ mem_addr <= incIncSp;
+ sp <= incSp;
+ state <= State_Popped;
+ end if;
+ when State_Sub =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ binaryOpResult <= stackB - stackA;
+ state <= State_BinaryOpResult;
+ end if;
+ when State_Pop =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ mem_addr <= incIncSp;
+ mem_readEnable <= '1';
+ sp <= incSp;
+ stackA <= stackB;
+ state <= State_Popped;
+ end if;
+ when State_PopDown =>
+ if in_mem_busy='0' then
+ -- PopDown leaves top of stack unchanged
+ begin_inst <= '1';
+ idim_flag <= '0';
+ mem_addr <= incIncSp;
+ mem_readEnable <= '1';
+ sp <= incSp;
+ state <= State_Popped;
+ end if;
+ when State_Or =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ stackA <= stackA or stackB;
+ mem_readEnable <= '1';
+ mem_addr <= incIncSp;
+ sp <= incSp;
+ state <= State_Popped;
+ end if;
+ when State_And =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+
+ stackA <= stackA and stackB;
+ mem_readEnable <= '1';
+ mem_addr <= incIncSp;
+ sp <= incSp;
+ state <= State_Popped;
+ end if;
+ when State_Eq =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+
+ binaryOpResult <= (others => '0');
+ if (stackA=stackB) then
+ binaryOpResult(0) <= '1';
+ end if;
+ state <= State_BinaryOpResult;
+ end if;
+ when State_Ulessthan =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+
+ binaryOpResult <= (others => '0');
+ if (stackA<stackB) then
+ binaryOpResult(0) <= '1';
+ end if;
+ state <= State_BinaryOpResult;
+ end if;
+ when State_Ulessthanorequal =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+
+ binaryOpResult <= (others => '0');
+ if (stackA<=stackB) then
+ binaryOpResult(0) <= '1';
+ end if;
+ state <= State_BinaryOpResult;
+ end if;
+ when State_Lessthan =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+
+ binaryOpResult <= (others => '0');
+ if (signed(stackA)<signed(stackB)) then
+ binaryOpResult(0) <= '1';
+ end if;
+ state <= State_BinaryOpResult;
+ end if;
+ when State_Lessthanorequal =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+
+ binaryOpResult <= (others => '0');
+ if (signed(stackA)<=signed(stackB)) then
+ binaryOpResult(0) <= '1';
+ end if;
+ state <= State_BinaryOpResult;
+ end if;
+ when State_Load =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ state <= State_Load2;
+
+ mem_addr <= stackA(maxAddrBitIncIO downto minAddrBit);
+ mem_readEnable <= '1';
+ end if;
+
+ when State_Dup =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= pc + 1;
+
+ sp <= decSp;
+ stackB <= stackA;
+ mem_write <= stackB;
+ mem_addr <= incSp;
+ mem_writeEnable <= '1';
+ end if;
+ when State_DupStackB =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= pc + 1;
+
+ sp <= decSp;
+ stackA <= stackB;
+ stackB <= stackA;
+ mem_write <= stackB;
+ mem_addr <= incSp;
+ mem_writeEnable <= '1';
+ end if;
+ when State_Store =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= pc + 1;
+ mem_addr <= stackA(maxAddrBitIncIO downto minAddrBit);
+ mem_write <= stackB;
+ mem_writeEnable <= '1';
+ sp <= incIncSp;
+ state <= State_Resync;
+ end if;
+ when State_PopSP =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= pc + 1;
+
+ mem_write <= stackB;
+ mem_addr <= incSp;
+ mem_writeEnable <= '1';
+ sp <= stackA(maxAddrBitIncIO downto minAddrBit);
+ state <= State_Resync;
+ end if;
+ when State_Nop =>
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= pc + 1;
+ when State_Not =>
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= pc + 1;
+
+ stackA <= not stackA;
+ when State_Flip =>
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= pc + 1;
+
+ for i in 0 to wordSize-1 loop
+ stackA(i) <= stackA(wordSize-1-i);
+ end loop;
+ when State_AddTop =>
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= pc + 1;
+
+ stackA <= stackA + stackB;
+ when State_Shift =>
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= pc + 1;
+
+ stackA(wordSize-1 downto 1) <= stackA(wordSize-2 downto 0);
+ stackA(0) <= '0';
+ when State_Pushspadd =>
+ begin_inst <= '1';
+ idim_flag <= '0';
+ pc <= pc + 1;
+
+ stackA <= (others => '0');
+ stackA(maxAddrBitIncIO downto minAddrBit) <= stackA(maxAddrBitIncIO-minAddrBit downto 0)+sp;
+ when State_Neqbranch =>
+ -- branches are almost always taken as they form loops
+ begin_inst <= '1';
+ idim_flag <= '0';
+ sp <= incIncSp;
+ if (stackB/=0) then
+ pc <= stackA(maxAddrBitIncIO downto 0) + pc;
+ else
+ pc <= pc + 1;
+ end if;
+ -- need to fetch stack again.
+ state <= State_Resync;
+ when State_Mult =>
+ begin_inst <= '1';
+ idim_flag <= '0';
+
+ multA <= stackA;
+ multB <= stackB;
+ state <= State_Mult2;
+ when State_Break =>
+ report "Break instruction encountered" severity failure;
+ break <= '1';
+
+ when State_Loadb =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ state <= State_Loadb2;
+
+ mem_addr <= stackA(maxAddrBitIncIO downto minAddrBit);
+ mem_readEnable <= '1';
+ end if;
+ when State_Storeb =>
+ if in_mem_busy='0' then
+ begin_inst <= '1';
+ idim_flag <= '0';
+ state <= State_Storeb2;
+
+ mem_addr <= stackA(maxAddrBitIncIO downto minAddrBit);
+ mem_readEnable <= '1';
+ end if;
+
+ when others =>
+ sp <= (others => DontCareValue);
+ report "Illegal instruction" severity failure;
+ break <= '1';
+ end case;
+
+
+ when State_StoreSP2 =>
+ if in_mem_busy='0' then
+ mem_addr <= incSp;
+ mem_readEnable <= '1';
+ state <= State_Popped;
+ end if;
+ when State_LoadSP2 =>
+ if in_mem_busy='0' then
+ state <= State_LoadSP3;
+ mem_readEnable <= '1';
+ mem_addr <= sp+spOffset+1;
+ end if;
+ when State_LoadSP3 =>
+ if in_mem_busy='0' then
+ pc <= pc + 1;
+ state <= State_Execute;
+ stackB <= stackA;
+ stackA <= mem_read;
+ end if;
+ when State_AddSP2 =>
+ if in_mem_busy='0' then
+ pc <= pc + 1;
+ state <= State_Execute;
+ stackA <= stackA + mem_read;
+ end if;
+ when State_Load2 =>
+ if in_mem_busy='0' then
+ stackA <= mem_read;
+ pc <= pc + 1;
+ state <= State_Execute;
+ end if;
+ when State_Loadb2 =>
+ if in_mem_busy='0' then
+ stackA <= (others => '0');
+ stackA(7 downto 0) <= mem_read(((wordBytes-1-conv_integer(stackA(byteBits-1 downto 0)))*8+7) downto (wordBytes-1-conv_integer(stackA(byteBits-1 downto 0)))*8);
+ pc <= pc + 1;
+ state <= State_Execute;
+ end if;
+ when State_Storeb2 =>
+ if in_mem_busy='0' then
+ mem_addr <= stackA(maxAddrBitIncIO downto minAddrBit);
+ mem_write <= mem_read;
+ mem_write(((wordBytes-1-conv_integer(stackA(byteBits-1 downto 0)))*8+7) downto (wordBytes-1-conv_integer(stackA(byteBits-1 downto 0)))*8) <= stackB(7 downto 0) ;
+ mem_writeEnable <= '1';
+ pc <= pc + 1;
+ sp <= incIncSp;
+ state <= State_Resync;
+ end if;
+ when State_Fetch =>
+ if in_mem_busy='0' then
+ mem_addr <= pc(maxAddrBitIncIO downto minAddrBit);
+ mem_readEnable <= '1';
+ state <= State_Decode;
+ end if;
+ when State_Mult2 =>
+ state <= State_Mult3;
+ when State_Mult3 =>
+ state <= State_Mult4;
+ when State_Mult4 =>
+ state <= State_Mult5;
+ when State_Mult5 =>
+ if in_mem_busy='0' then
+ stackA <= multResult3;
+ mem_readEnable <= '1';
+ mem_addr <= incIncSp;
+ sp <= incSp;
+ state <= State_Popped;
+ end if;
+ when State_BinaryOpResult =>
+ state <= State_BinaryOpResult2;
+ when State_BinaryOpResult2 =>
+ mem_readEnable <= '1';
+ mem_addr <= incIncSp;
+ sp <= incSp;
+ stackA <= binaryOpResult2;
+ state <= State_Popped;
+ when State_Popped =>
+ if in_mem_busy='0' then
+ pc <= pc + 1;
+ stackB <= mem_read;
+ state <= State_Execute;
+ end if;
+ when others =>
+ sp <= (others => DontCareValue);
+ report "Illegal state" severity failure;
+ break <= '1';
+ end case;
+ end if;
+ end process;
+
+
+
+end behave;
diff --git a/zpu/hdl/zpu4/src/zpu_core_small.vhd b/zpu/hdl/zpu4/src/zpu_core_small.vhd
new file mode 100644
index 0000000..4d73f88
--- /dev/null
+++ b/zpu/hdl/zpu4/src/zpu_core_small.vhd
@@ -0,0 +1,433 @@
+-- Company: ZPU3
+-- Engineer: Øyvind Harboe
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+
+
+entity zpu_core is
+ Port ( clk : in std_logic;
+ areset : in std_logic;
+ enable : in std_logic;
+ in_mem_busy : in std_logic;
+ mem_read : in std_logic_vector(wordSize-1 downto 0);
+ mem_write : out std_logic_vector(wordSize-1 downto 0);
+ out_mem_addr : out std_logic_vector(maxAddrBitIncIO downto 0);
+ out_mem_writeEnable : out std_logic;
+ out_mem_readEnable : out std_logic;
+ mem_writeMask: out std_logic_vector(wordBytes-1 downto 0);
+ interrupt : in std_logic;
+ break : out std_logic);
+end zpu_core;
+
+architecture behave of zpu_core is
+
+signal readIO : std_logic;
+
+
+
+signal memAWriteEnable : std_logic;
+signal memAAddr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal memAWrite : std_logic_vector(wordSize-1 downto 0);
+signal memARead : std_logic_vector(wordSize-1 downto 0);
+signal memBWriteEnable : std_logic;
+signal memBAddr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal memBWrite : std_logic_vector(wordSize-1 downto 0);
+signal memBRead : std_logic_vector(wordSize-1 downto 0);
+
+
+
+signal pc : std_logic_vector(maxAddrBit downto 0);
+signal sp : std_logic_vector(maxAddrBit downto minAddrBit);
+
+signal idim_flag : std_logic;
+
+--signal storeToStack : std_logic;
+--signal fetchNextInstruction : std_logic;
+--signal extraCycle : std_logic;
+signal busy : std_logic;
+--signal fetching : std_logic;
+
+signal begin_inst : std_logic;
+
+
+
+signal trace_opcode : std_logic_vector(7 downto 0);
+signal trace_pc : std_logic_vector(maxAddrBitIncIO downto 0);
+signal trace_sp : std_logic_vector(maxAddrBitIncIO downto minAddrBit);
+signal trace_topOfStack : std_logic_vector(wordSize-1 downto 0);
+signal trace_topOfStackB : std_logic_vector(wordSize-1 downto 0);
+
+-- state machine.
+type State_Type is
+(
+State_Fetch,
+State_WriteIODone,
+State_Execute,
+State_StoreToStack,
+State_Add,
+State_Or,
+State_And,
+State_Store,
+State_ReadIO,
+State_WriteIO,
+State_Load,
+State_FetchNext,
+State_AddSP,
+State_ReadIODone,
+State_Decode,
+State_Resync
+);
+
+type DecodedOpcodeType is
+(
+Decoded_Nop,
+Decoded_Im,
+Decoded_ImShift,
+Decoded_LoadSP,
+Decoded_StoreSP ,
+Decoded_AddSP,
+Decoded_Emulate,
+Decoded_Break,
+Decoded_PushSP,
+Decoded_PopPC,
+Decoded_Add,
+Decoded_Or,
+Decoded_And,
+Decoded_Load,
+Decoded_Not,
+Decoded_Flip,
+Decoded_Store,
+Decoded_PopSP
+);
+
+
+
+signal sampledOpcode : std_logic_vector(OpCode_Size-1 downto 0);
+signal opcode : std_logic_vector(OpCode_Size-1 downto 0);
+
+signal decodedOpcode : DecodedOpcodeType;
+signal sampledDecodedOpcode : DecodedOpcodeType;
+
+
+signal state : State_Type;
+
+begin
+ traceFileGenerate:
+ if Generate_Trace generate
+ trace_file: trace port map (
+ clk => clk,
+ begin_inst => begin_inst,
+ pc => trace_pc,
+ opcode => trace_opcode,
+ sp => trace_sp,
+ memA => trace_topOfStack,
+ memB => trace_topOfStackB,
+ busy => busy,
+ intsp => (others => 'U')
+ );
+ end generate;
+
+
+ memory: dualport_ram port map (
+ clk => clk,
+ memAWriteEnable => memAWriteEnable,
+ memAAddr => memAAddr(maxAddrBitBRAM downto minAddrBit),
+ memAWrite => memAWrite,
+ memARead => memARead,
+ memBWriteEnable => memBWriteEnable,
+ memBAddr => memBAddr(maxAddrBitBRAM downto minAddrBit),
+ memBWrite => memBWrite,
+ memBRead => memBRead
+ );
+
+
+
+ decodeControl:
+ process(memBRead, pc)
+ variable tOpcode : std_logic_vector(OpCode_Size-1 downto 0);
+ begin
+ tOpcode := memBRead((wordBytes-1-conv_integer(pc(minAddrBit-1 downto 0))+1)*8-1 downto (wordBytes-1-conv_integer(pc(minAddrBit-1 downto 0)))*8);
+
+ sampledOpcode <= tOpcode;
+
+ if (tOpcode(7 downto 7)=OpCode_Im) then
+ sampledDecodedOpcode<=Decoded_Im;
+ elsif (tOpcode(7 downto 5)=OpCode_StoreSP) then
+ sampledDecodedOpcode<=Decoded_StoreSP;
+ elsif (tOpcode(7 downto 5)=OpCode_LoadSP) then
+ sampledDecodedOpcode<=Decoded_LoadSP;
+ elsif (tOpcode(7 downto 5)=OpCode_Emulate) then
+ sampledDecodedOpcode<=Decoded_Emulate;
+ elsif (tOpcode(7 downto 4)=OpCode_AddSP) then
+ sampledDecodedOpcode<=Decoded_AddSP;
+ else
+ case tOpcode(3 downto 0) is
+ when OpCode_Break =>
+ sampledDecodedOpcode<=Decoded_Break;
+ when OpCode_PushSP =>
+ sampledDecodedOpcode<=Decoded_PushSP;
+ when OpCode_PopPC =>
+ sampledDecodedOpcode<=Decoded_PopPC;
+ when OpCode_Add =>
+ sampledDecodedOpcode<=Decoded_Add;
+ when OpCode_Or =>
+ sampledDecodedOpcode<=Decoded_Or;
+ when OpCode_And =>
+ sampledDecodedOpcode<=Decoded_And;
+ when OpCode_Load =>
+ sampledDecodedOpcode<=Decoded_Load;
+ when OpCode_Not =>
+ sampledDecodedOpcode<=Decoded_Not;
+ when OpCode_Flip =>
+ sampledDecodedOpcode<=Decoded_Flip;
+ when OpCode_Store =>
+ sampledDecodedOpcode<=Decoded_Store;
+ when OpCode_PopSP =>
+ sampledDecodedOpcode<=Decoded_PopSP;
+ when others =>
+ sampledDecodedOpcode<=Decoded_Nop;
+ end case;
+ end if;
+ end process;
+
+
+ opcodeControl:
+ process(clk, areset)
+ variable spOffset : std_logic_vector(4 downto 0);
+ begin
+ if areset = '1' then
+ state <= State_Resync;
+ break <= '0';
+ sp <= spStart(maxAddrBit downto minAddrBit);
+ pc <= (others => '0');
+ idim_flag <= '0';
+ begin_inst <= '0';
+ memAAddr <= (others => '0');
+ memBAddr <= (others => '0');
+ memAWriteEnable <= '0';
+ memBWriteEnable <= '0';
+ out_mem_writeEnable <= '0';
+ out_mem_readEnable <= '0';
+ memAWrite <= (others => '0');
+ memBWrite <= (others => '0');
+ mem_writeMask <= (others => '1');
+ elsif (clk'event and clk = '1') then
+ memAWriteEnable <= '0';
+ memBWriteEnable <= '0';
+ -- This saves ca. 100 LUT's, by explicitly declaring that the
+ -- memAWrite can be left at whatever value if memAWriteEnable is
+ -- not set.
+ memAWrite <= (others => DontCareValue);
+ memBWrite <= (others => DontCareValue);
+-- out_mem_addr <= (others => DontCareValue);
+-- mem_write <= (others => DontCareValue);
+ spOffset := (others => DontCareValue);
+ memAAddr <= (others => DontCareValue);
+ memBAddr <= (others => DontCareValue);
+
+ out_mem_writeEnable <= '0';
+ out_mem_readEnable <= '0';
+ begin_inst <= '0';
+ out_mem_addr <= memARead(maxAddrBitIncIO downto 0);
+ mem_write <= memBRead;
+
+ decodedOpcode <= sampledDecodedOpcode;
+ opcode <= sampledOpcode;
+
+ case state is
+ when State_Execute =>
+ state <= State_Fetch;
+ -- at this point:
+ -- memBRead contains opcode word
+ -- memARead contains top of stack
+ pc <= pc + 1;
+
+ -- trace
+ begin_inst <= '1';
+ trace_pc <= (others => '0');
+ trace_pc(maxAddrBit downto 0) <= pc;
+ trace_opcode <= opcode;
+ trace_sp <= (others => '0');
+ trace_sp(maxAddrBit downto minAddrBit) <= sp;
+ trace_topOfStack <= memARead;
+ trace_topOfStackB <= memBRead;
+
+ -- during the next cycle we'll be reading the next opcode
+ spOffset(4):=not opcode(4);
+ spOffset(3 downto 0):=opcode(3 downto 0);
+
+ idim_flag <= '0';
+ case decodedOpcode is
+ when Decoded_Im =>
+ idim_flag <= '1';
+ memAWriteEnable <= '1';
+ if (idim_flag='0') then
+ sp <= sp - 1;
+ memAAddr <= sp-1;
+ for i in wordSize-1 downto 7 loop
+ memAWrite(i) <= opcode(6);
+ end loop;
+ memAWrite(6 downto 0) <= opcode(6 downto 0);
+ else
+ memAAddr <= sp;
+ memAWrite(wordSize-1 downto 7) <= memARead(wordSize-8 downto 0);
+ memAWrite(6 downto 0) <= opcode(6 downto 0);
+ end if;
+ when Decoded_StoreSP =>
+ memBWriteEnable <= '1';
+ memBAddr <= sp+spOffset;
+ memBWrite <= memARead;
+ sp <= sp + 1;
+ state <= State_Resync;
+ when Decoded_LoadSP =>
+ sp <= sp - 1;
+ memAAddr <= sp+spOffset;
+ when Decoded_Emulate =>
+ sp <= sp - 1;
+ memAWriteEnable <= '1';
+ memAAddr <= sp - 1;
+ memAWrite <= (others => DontCareValue);
+ memAWrite(maxAddrBit downto 0) <= pc + 1;
+ -- The emulate address is:
+ -- 98 7654 3210
+ -- 0000 00aa aaa0 0000
+ pc <= (others => '0');
+ pc(9 downto 5) <= opcode(4 downto 0);
+ when Decoded_AddSP =>
+ memAAddr <= sp;
+ memBAddr <= sp+spOffset;
+ state <= State_AddSP;
+ when Decoded_Break =>
+ report "Break instruction encountered" severity failure;
+ break <= '1';
+ when Decoded_PushSP =>
+ memAWriteEnable <= '1';
+ memAAddr <= sp - 1;
+ sp <= sp - 1;
+ memAWrite <= (others => DontCareValue);
+ memAWrite(maxAddrBit downto minAddrBit) <= sp;
+ when Decoded_PopPC =>
+ pc <= memARead(maxAddrBit downto 0);
+ sp <= sp + 1;
+ state <= State_Resync;
+ when Decoded_Add =>
+ sp <= sp + 1;
+ state <= State_Add;
+ when Decoded_Or =>
+ sp <= sp + 1;
+ state <= State_Or;
+ when Decoded_And =>
+ sp <= sp + 1;
+ state <= State_And;
+ when Decoded_Load =>
+ if (memARead(ioBit)='1') then
+ out_mem_addr <= memARead(maxAddrBitIncIO downto 0);
+ out_mem_readEnable <= '1';
+ state <= State_ReadIO;
+ else
+ memAAddr <= memARead(maxAddrBit downto minAddrBit);
+ end if;
+ when Decoded_Not =>
+ memAAddr <= sp(maxAddrBit downto minAddrBit);
+ memAWriteEnable <= '1';
+ memAWrite <= not memARead;
+ when Decoded_Flip =>
+ memAAddr <= sp(maxAddrBit downto minAddrBit);
+ memAWriteEnable <= '1';
+ for i in 0 to wordSize-1 loop
+ memAWrite(i) <= memARead(wordSize-1-i);
+ end loop;
+ when Decoded_Store =>
+ memBAddr <= sp + 1;
+ sp <= sp + 1;
+ if (memARead(ioBit)='1') then
+ state <= State_WriteIO;
+ else
+ state <= State_Store;
+ end if;
+ when Decoded_PopSP =>
+ sp <= memARead(maxAddrBit downto minAddrBit);
+ state <= State_Resync;
+ when Decoded_Nop =>
+ memAAddr <= sp;
+ when others =>
+ null;
+ end case;
+ when State_ReadIO =>
+ if (in_mem_busy = '0') then
+ state <= State_Fetch;
+ memAWriteEnable <= '1';
+ memAWrite <= mem_read;
+ end if;
+ when State_WriteIO =>
+ sp <= sp + 1;
+ out_mem_writeEnable <= '1';
+ out_mem_addr <= memARead(maxAddrBitIncIO downto 0);
+ mem_write <= memBRead;
+ state <= State_WriteIODone;
+ when State_WriteIODone =>
+ if (in_mem_busy = '0') then
+ state <= State_Resync;
+ end if;
+ when State_Fetch =>
+ -- We need to resync. During the *next* cycle
+ -- we'll fetch the opcode @ pc and thus it will
+ -- be available for State_Execute the cycle after
+ -- next
+ memBAddr <= pc(maxAddrBit downto minAddrBit);
+ state <= State_FetchNext;
+ when State_FetchNext =>
+ -- at this point memARead contains the value that is either
+ -- from the top of stack or should be copied to the top of the stack
+ memAWriteEnable <= '1';
+ memAWrite <= memARead;
+ memAAddr <= sp;
+ memBAddr <= sp + 1;
+ state <= State_Decode;
+ when State_Decode =>
+ -- during the State_Execute cycle we'll be fetching SP+1
+ memAAddr <= sp;
+ memBAddr <= sp + 1;
+ state <= State_Execute;
+ when State_Store =>
+ sp <= sp + 1;
+ memAWriteEnable <= '1';
+ memAAddr <= memARead(maxAddrBit downto minAddrBit);
+ memAWrite <= memBRead;
+ state <= State_Resync;
+ when State_AddSP =>
+ state <= State_Add;
+ when State_Add =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite <= memARead + memBRead;
+ state <= State_Fetch;
+ when State_Or =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite <= memARead or memBRead;
+ state <= State_Fetch;
+ when State_Resync =>
+ memAAddr <= sp;
+ state <= State_Fetch;
+ when State_And =>
+ memAAddr <= sp;
+ memAWriteEnable <= '1';
+ memAWrite <= memARead and memBRead;
+ state <= State_Fetch;
+ when others =>
+ null;
+ end case;
+
+ end if;
+ end process;
+
+
+
+end behave;
diff --git a/zpu/hdl/zpu4/src/zpuio.vhd b/zpu/hdl/zpu4/src/zpuio.vhd
new file mode 100644
index 0000000..d14629e
--- /dev/null
+++ b/zpu/hdl/zpu4/src/zpuio.vhd
@@ -0,0 +1,256 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+
+entity zpuio is
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ clk_status : in std_logic_vector(2 downto 0);
+ cpu_din : in std_logic_vector(15 downto 0);
+ cpu_a : in std_logic_vector(20 downto 0);
+ cpu_we : in std_logic_vector(1 downto 0);
+ cpu_re : in std_logic;
+ cpu_dout : inout std_logic_vector(15 downto 0));
+end zpuio;
+
+architecture behave of zpuio is
+
+signal timer_read : std_logic_vector(7 downto 0);
+--signal timer_write : std_logic_vector(7 downto 0);
+signal timer_we : std_logic;
+
+
+signal io_busy : std_logic;
+signal io_read : std_logic_vector(7 downto 0);
+--signal io_write : std_logic_vector(7 downto 0);
+signal io_addr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal io_writeEnable : std_logic;
+signal Enable : std_logic;
+
+signal din : std_logic_vector(7 downto 0);
+signal dout : std_logic_vector(7 downto 0);
+signal adr : std_logic_vector(15 downto 0);
+signal break : std_logic;
+signal we : std_logic;
+signal re : std_logic;
+
+
+-- uart forwarding...
+
+signal uartTXPending : std_logic;
+signal uartTXCleared : std_logic;
+signal uartData : std_logic_vector(7 downto 0);
+
+signal readingTimer : std_logic;
+
+
+
+
+signal mem_busy : std_logic;
+signal mem_read : std_logic_vector(wordSize-1 downto 0);
+signal mem_write : std_logic_vector(wordSize-1 downto 0);
+signal mem_addr : std_logic_vector(maxAddrBitIncIO downto 0);
+signal mem_writeEnable : std_logic;
+signal mem_readEnable : std_logic;
+signal mem_writeMask: std_logic_vector(wordBytes-1 downto 0);
+
+signal dram_mem_busy : std_logic;
+signal dram_mem_read : std_logic_vector(wordSize-1 downto 0);
+signal dram_mem_write : std_logic_vector(wordSize-1 downto 0);
+signal dram_mem_writeEnable : std_logic;
+signal dram_mem_readEnable : std_logic;
+signal dram_mem_writeMask: std_logic_vector(wordBytes-1 downto 0);
+
+
+
+--signal io_mem_read : std_logic_vector(7 downto 0);
+--signal io_mem_writeEnable : std_logic;
+--signal io_mem_readEnable : std_logic;
+signal io_readEnable : std_logic;
+
+
+signal dram_read : std_logic;
+
+
+
+begin
+
+ io_addr <= mem_addr(maxAddrBit downto minAddrBit);
+
+ timerinst: timer port map (
+ clk => cpu_clk,
+ areset => areset,
+ we => timer_we,
+ din => mem_write(7 downto 0),
+ adr => io_addr(4 downto 2),
+ dout => timer_read);
+
+ zpu: zpu_core port map (
+ clk => cpu_clk ,
+ areset => areset,
+ in_mem_busy => mem_busy,
+ mem_read => mem_read,
+ mem_write => mem_write,
+ out_mem_addr => mem_addr,
+ out_mem_writeEnable => mem_writeEnable,
+ out_mem_readEnable => mem_readEnable,
+ mem_writeMask => mem_writeMask,
+ interrupt => '0',
+ break => break);
+
+
+ram_imp: dram port map (
+ clk => cpu_clk ,
+ areset => areset,
+ mem_busy => dram_mem_busy,
+ mem_read => dram_mem_read,
+ mem_write => mem_write,
+ mem_addr => mem_addr(maxAddrBit downto 0),
+ mem_writeEnable => dram_mem_writeEnable,
+ mem_readEnable => dram_mem_readEnable,
+ mem_writeMask => mem_writeMask);
+
+
+ -- Read/write are on different addresses
+ -- The registers are 8 bits and mapped to bit[7:0]
+ --
+ -- 0xC000 Write: Writes to UART TX FIFO (4 byte FIFO)
+ -- Read : Reads from UART RX FIFO (4 byte FIFO)
+ -- 0xC004 Read : UART status register
+ -- Bit 0 = RX FIFO empty
+ -- Bit 1 = TX FIFO full
+ -- 0xA000 Skrive: LED's (8 stk.)
+
+ -- 0x9000 Write: bit 0: 1= reset counter
+ -- 0= counter running
+ -- bit 1: 1= sample counter (when set to 1)
+ -- 0=not used
+ -- Read : counter bit[7:0]
+ -- 0x9004 Read: counter bit [15:8]
+ -- 0x9008 Read: counter bit [23:16]
+ -- 0x900C Read: counter bit [31:24]
+ -- 0x9010 Read: counter bit [39:32]
+ -- 0x9014 Read: counter bit [47:40]
+ -- 0x9018 Read: counter bit [55:48]
+ -- 0x901C Read: counter bit [63:56]
+ --
+ -- 0x8800 Read: unsigned 8-bit integer with FPGA frequency (in MHz)
+
+ fauxUart:
+ process(cpu_clk, areset)
+ begin
+ if areset = '1' then
+ io_busy <= '0';
+ uartTXPending <= '0';
+ timer_we <= '0';
+ io_busy <= '0';
+ uartData <= x"58"; -- 'X'
+ readingTimer <= '0';
+ elsif (cpu_clk'event and cpu_clk = '1') then
+ timer_we <= '0';
+ io_busy <= '0';
+ if uartTXCleared = '1' then
+ uartTXPending <= '0';
+ end if;
+
+ if io_writeEnable = '1' then
+ if io_addr=x"1000" then
+ -- Write to UART
+ uartData <= mem_write(7 downto 0);
+ uartTXPending <= '1';
+ io_busy <= '1';
+ elsif io_addr(12)='1' then
+ timer_we <= '1';
+ io_busy <= '1';
+ else
+ report "Illegal IO write" severity failure;
+ end if;
+ end if;
+ if (io_readEnable = '1') then
+ if io_addr=x"1001" then
+ io_read <= (0=>'1', -- recieve empty
+ 1 => uartTXPending, -- tx full
+ others => '0');
+ io_busy <= '1';
+ elsif io_addr(12)='1' then
+ readingTimer <= '1';
+ io_busy <= '1';
+ elsif io_addr(11)='1' then
+ io_read <= ZPU_Frequency;
+ io_busy <= '1';
+ else
+ report "Illegal IO read" severity failure;
+ end if;
+
+ else
+ if (readingTimer = '1') then
+ readingTimer <= '0';
+ io_read <= timer_read;
+ io_busy <= '0';
+ else
+ io_read <= (others => '1');
+ end if;
+ end if;
+ end if;
+ end process;
+
+
+ forwardUARTOutputToARM:
+ process(cpu_clk, areset)
+ begin
+ if areset = '1' then
+ uartTXCleared <= '0';
+ elsif (cpu_clk = '1' and cpu_clk'event) then
+ if cpu_we(0) = '1' and cpu_a(3 downto 1) = "000" then
+ uartTXCleared <= cpu_din(0);
+ else
+ uartTXCleared <= uartTXCleared;
+ end if;
+ end if;
+ end process;
+
+ cpu_dout(7 downto 0) <= uartData when (cpu_re = '1' and cpu_a(3 downto 1) = "001") else (others => 'Z');
+ cpu_dout <= (0 => uartTXPending, others => '0') when (cpu_re = '1' and cpu_a(3 downto 1) = "000") else (others => 'Z');
+
+ dram_mem_writeEnable <= mem_writeEnable and not mem_addr(ioBit);
+ dram_mem_readEnable <= mem_readEnable and not mem_addr(ioBit);
+ io_writeEnable <= mem_writeEnable and mem_addr(ioBit);
+-- io_readEnable <= mem_readEnable and mem_addr(ioBit);
+ mem_busy <= io_busy or dram_mem_busy or dram_read or io_readEnable;
+
+ -- Memory reads either come from IO or DRAM. We need to pick the right one.
+ memorycontrol:
+ process(cpu_clk, areset)
+ begin
+ if areset = '1' then
+ dram_read <= '0';
+ io_readEnable <= '0';
+
+
+ elsif (cpu_clk'event and cpu_clk = '1') then
+ mem_read <= (others => '0');
+ if mem_addr(ioBit)='0' and mem_readEnable='1' then
+ dram_read <= '1';
+ end if;
+ if dram_read='1' and dram_mem_busy='0' then
+ dram_read <= '0';
+ mem_read <= dram_mem_read;
+ end if;
+
+ if mem_addr(ioBit)='1' and mem_readEnable='1' then
+ io_readEnable <= '1';
+ end if;
+ if io_readEnable='1' and io_busy='0' then
+ io_readEnable <= '0';
+ mem_read(7 downto 0) <= io_read;
+ end if;
+
+ end if;
+ end process;
+
+
+end behave;
diff --git a/zpu/hdl/zpu4/src/zpuio_bram.vhd b/zpu/hdl/zpu4/src/zpuio_bram.vhd
new file mode 100644
index 0000000..5d3f409
--- /dev/null
+++ b/zpu/hdl/zpu4/src/zpuio_bram.vhd
@@ -0,0 +1,229 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library work;
+use work.zpu_config.all;
+use work.zpupkg.all;
+
+entity zpuio is
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ clk_status : in std_logic_vector(2 downto 0);
+ cpu_din : in std_logic_vector(15 downto 0);
+ cpu_a : in std_logic_vector(20 downto 0);
+ cpu_we : in std_logic_vector(1 downto 0);
+ cpu_re : in std_logic;
+ cpu_dout : inout std_logic_vector(15 downto 0));
+end zpuio;
+
+architecture behave of zpuio is
+
+signal timer_read : std_logic_vector(7 downto 0);
+--signal timer_write : std_logic_vector(7 downto 0);
+signal timer_we : std_logic;
+
+
+signal io_busy : std_logic;
+signal io_read : std_logic_vector(7 downto 0);
+--signal io_write : std_logic_vector(7 downto 0);
+signal io_addr : std_logic_vector(maxAddrBit downto minAddrBit);
+signal io_writeEnable : std_logic;
+signal Enable : std_logic;
+
+signal din : std_logic_vector(7 downto 0);
+signal dout : std_logic_vector(7 downto 0);
+signal adr : std_logic_vector(15 downto 0);
+signal break : std_logic;
+signal we : std_logic;
+signal re : std_logic;
+
+
+-- uart forwarding...
+
+signal uartTXPending : std_logic;
+signal uartTXCleared : std_logic;
+signal uartData : std_logic_vector(7 downto 0);
+
+signal readingTimer : std_logic;
+
+
+
+
+signal mem_busy : std_logic;
+signal mem_read : std_logic_vector(wordSize-1 downto 0);
+signal mem_write : std_logic_vector(wordSize-1 downto 0);
+signal mem_addr : std_logic_vector(maxAddrBitIncIO downto 0);
+signal mem_writeEnable : std_logic;
+signal mem_readEnable : std_logic;
+signal mem_writeMask: std_logic_vector(wordBytes-1 downto 0);
+
+
+
+
+--signal io_mem_read : std_logic_vector(7 downto 0);
+--signal io_mem_writeEnable : std_logic;
+--signal io_mem_readEnable : std_logic;
+signal io_readEnable : std_logic;
+
+
+
+
+
+begin
+
+ io_addr <= mem_addr(maxAddrBit downto minAddrBit);
+
+ timerinst: timer port map (
+ clk => cpu_clk,
+ areset => areset,
+ we => timer_we,
+ din => mem_write(7 downto 0),
+ adr => io_addr(4 downto 2),
+ dout => timer_read);
+
+ zpu: zpu_core port map (
+ clk => cpu_clk ,
+ areset => areset,
+ in_mem_busy => mem_busy,
+ mem_read => mem_read,
+ mem_write => mem_write,
+ out_mem_addr => mem_addr,
+ out_mem_writeEnable => mem_writeEnable,
+ out_mem_readEnable => mem_readEnable,
+ mem_writeMask => mem_writeMask,
+ interrupt => '0',
+ break => break);
+
+
+
+
+ -- Read/write are on different addresses
+ -- The registers are 8 bits and mapped to bit[7:0]
+ --
+ -- 0xC000 Write: Writes to UART TX FIFO (4 byte FIFO)
+ -- Read : Reads from UART RX FIFO (4 byte FIFO)
+ -- 0xC004 Read : UART status register
+ -- Bit 0 = RX FIFO empty
+ -- Bit 1 = TX FIFO full
+ -- 0xA000 Skrive: LED's (8 stk.)
+
+ -- 0x9000 Write: bit 0: 1= reset counter
+ -- 0= counter running
+ -- bit 1: 1= sample counter (when set to 1)
+ -- 0=not used
+ -- Read : counter bit[7:0]
+ -- 0x9004 Read: counter bit [15:8]
+ -- 0x9008 Read: counter bit [23:16]
+ -- 0x900C Read: counter bit [31:24]
+ -- 0x9010 Read: counter bit [39:32]
+ -- 0x9014 Read: counter bit [47:40]
+ -- 0x9018 Read: counter bit [55:48]
+ -- 0x901C Read: counter bit [63:56]
+ --
+ -- 0x8800 Read: unsigned 8-bit integer with FPGA frequency (in MHz)
+
+ fauxUart:
+ process(cpu_clk, areset)
+ begin
+ if areset = '1' then
+ io_busy <= '0';
+ uartTXPending <= '0';
+ timer_we <= '0';
+ io_busy <= '0';
+ uartData <= x"58"; -- 'X'
+ readingTimer <= '0';
+ elsif (cpu_clk'event and cpu_clk = '1') then
+ timer_we <= '0';
+ io_busy <= '0';
+ if uartTXCleared = '1' then
+ uartTXPending <= '0';
+ end if;
+
+ if io_writeEnable = '1' then
+ if io_addr=x"1000" then
+ -- Write to UART
+ uartData <= mem_write(7 downto 0);
+ uartTXPending <= '1';
+ io_busy <= '1';
+ elsif io_addr(12)='1' then
+ timer_we <= '1';
+ io_busy <= '1';
+ else
+ report "Illegal IO write" severity failure;
+ end if;
+ end if;
+ if (io_readEnable = '1') then
+ if io_addr=x"1001" then
+ io_read <= (0=>'1', -- recieve empty
+ 1 => uartTXPending, -- tx full
+ others => '0');
+ io_busy <= '1';
+ elsif io_addr(12)='1' then
+ readingTimer <= '1';
+ io_busy <= '1';
+ elsif io_addr(11)='1' then
+ io_read <= ZPU_Frequency;
+ io_busy <= '1';
+ else
+ report "Illegal IO read" severity failure;
+ end if;
+
+ else
+ if (readingTimer = '1') then
+ readingTimer <= '0';
+ io_read <= timer_read;
+ io_busy <= '0';
+ else
+ io_read <= (others => '1');
+ end if;
+ end if;
+ end if;
+ end process;
+
+
+ forwardUARTOutputToARM:
+ process(cpu_clk, areset)
+ begin
+ if areset = '1' then
+ uartTXCleared <= '0';
+ elsif (cpu_clk = '1' and cpu_clk'event) then
+ if cpu_we(0) = '1' and cpu_a(3 downto 1) = "000" then
+ uartTXCleared <= cpu_din(0);
+ else
+ uartTXCleared <= uartTXCleared;
+ end if;
+ end if;
+ end process;
+
+ cpu_dout(7 downto 0) <= uartData when (cpu_re = '1' and cpu_a(3 downto 1) = "001") else (others => 'Z');
+ cpu_dout <= (0 => uartTXPending, others => '0') when (cpu_re = '1' and cpu_a(3 downto 1) = "000") else (others => 'Z');
+
+ io_writeEnable <= mem_writeEnable and mem_addr(ioBit);
+-- io_readEnable <= mem_readEnable and mem_addr(ioBit);
+ mem_busy <= io_busy or io_readEnable;
+
+ -- Memory reads either come from IO or DRAM. We need to pick the right one.
+ memorycontrol:
+ process(cpu_clk, areset)
+ begin
+ if areset = '1' then
+ io_readEnable <= '0';
+
+
+ elsif (cpu_clk'event and cpu_clk = '1') then
+ mem_read <= (others => '0');
+
+ if mem_addr(ioBit)='1' and mem_readEnable='1' then
+ io_readEnable <= '1';
+ end if;
+ if io_readEnable='1' and io_busy='0' then
+ io_readEnable <= '0';
+ mem_read(7 downto 0) <= io_read;
+ end if;
+
+ end if;
+ end process;
+
+
+end behave;
diff --git a/zpu/hdl/zpu4/src/zpupkg.vhd b/zpu/hdl/zpu4/src/zpupkg.vhd
new file mode 100644
index 0000000..30c3e46
--- /dev/null
+++ b/zpu/hdl/zpu4/src/zpupkg.vhd
@@ -0,0 +1,168 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_ARITH.all;
+
+library work;
+use work.zpu_config.all;
+
+package zpupkg is
+
+ -- This bit is set for read/writes to IO
+ -- FIX!!! eventually this should be set to wordSize-1 so as to
+ -- to make the address of IO independent of amount of memory
+ -- reserved for CPU. Requires trivial tweaks in toolchain/runtime
+ -- libraries.
+
+ constant byteBits : integer := wordPower-3; -- # of bits in a word that addresses bytes
+ constant maxAddrBit : integer := maxAddrBitIncIO-1;
+ constant ioBit : integer := maxAddrBit+1;
+ constant wordSize : integer := 2**wordPower;
+ constant wordBytes : integer := wordSize/8;
+ constant minAddrBit : integer := byteBits;
+ -- configurable internal stack size. Probably going to be 16 after toolchain is done
+ constant stack_bits : integer := 5;
+ constant stack_size : integer := 2**stack_bits;
+
+ component dualport_ram is
+ port (clk : in std_logic;
+ memAWriteEnable : in std_logic;
+ memAAddr : in std_logic_vector(maxAddrBitBRAM downto minAddrBit);
+ memAWrite : in std_logic_vector(wordSize-1 downto 0);
+ memARead : out std_logic_vector(wordSize-1 downto 0);
+ memBWriteEnable : in std_logic;
+ memBAddr : in std_logic_vector(maxAddrBitBRAM downto minAddrBit);
+ memBWrite : in std_logic_vector(wordSize-1 downto 0);
+ memBRead : out std_logic_vector(wordSize-1 downto 0));
+ end component;
+
+ component dram is
+ port (clk : in std_logic;
+ areset : in std_logic;
+ mem_writeEnable : in std_logic;
+ mem_readEnable : in std_logic;
+ mem_addr : in std_logic_vector(maxAddrBit downto 0);
+ mem_write : in std_logic_vector(wordSize-1 downto 0);
+ mem_read : out std_logic_vector(wordSize-1 downto 0);
+ mem_busy : out std_logic;
+ mem_writeMask : in std_logic_vector(wordBytes-1 downto 0));
+ end component;
+
+
+ component trace is
+ port(
+ clk : in std_logic;
+ begin_inst : in std_logic;
+ pc : in std_logic_vector(maxAddrBitIncIO downto 0);
+ opcode : in std_logic_vector(7 downto 0);
+ sp : in std_logic_vector(maxAddrBitIncIO downto minAddrBit);
+ memA : in std_logic_vector(wordSize-1 downto 0);
+ memB : in std_logic_vector(wordSize-1 downto 0);
+ busy : in std_logic;
+ intSp : in std_logic_vector(stack_bits-1 downto 0)
+ );
+ end component;
+
+ component zpu_core is
+ port ( clk : in std_logic;
+ areset : in std_logic;
+ enable : in std_logic;
+ in_mem_busy : in std_logic;
+ mem_read : in std_logic_vector(wordSize-1 downto 0);
+ mem_write : out std_logic_vector(wordSize-1 downto 0);
+ out_mem_addr : out std_logic_vector(maxAddrBitIncIO downto 0);
+ out_mem_writeEnable : out std_logic;
+ out_mem_readEnable : out std_logic;
+ mem_writeMask: out std_logic_vector(wordBytes-1 downto 0);
+ interrupt : in std_logic;
+ break : out std_logic);
+ end component;
+
+
+
+ component timer is
+ port(
+ clk : in std_logic;
+ areset : in std_logic;
+ we : in std_logic;
+ din : in std_logic_vector(7 downto 0);
+ adr : in std_logic_vector(2 downto 0);
+ dout : out std_logic_vector(7 downto 0));
+ end component;
+
+ component zpuio is
+ port ( areset : in std_logic;
+ cpu_clk : in std_logic;
+ clk_status : in std_logic_vector(2 downto 0);
+ cpu_din : in std_logic_vector(15 downto 0);
+ cpu_a : in std_logic_vector(20 downto 0);
+ cpu_we : in std_logic_vector(1 downto 0);
+ cpu_re : in std_logic;
+ cpu_dout : inout std_logic_vector(15 downto 0));
+ end component;
+
+
+
+
+ -- opcode decode constants
+ constant OpCode_Im : std_logic_vector(7 downto 7) := "1";
+ constant OpCode_StoreSP : std_logic_vector(7 downto 5) := "010";
+ constant OpCode_LoadSP : std_logic_vector(7 downto 5) := "011";
+ constant OpCode_Emulate : std_logic_vector(7 downto 5) := "001";
+ constant OpCode_AddSP : std_logic_vector(7 downto 4) := "0001";
+ constant OpCode_Short : std_logic_vector(7 downto 4) := "0000";
+
+ constant OpCode_Break : std_logic_vector(3 downto 0) := "0000";
+ constant OpCode_Shiftleft: std_logic_vector(3 downto 0) := "0001";
+ constant OpCode_PushSP : std_logic_vector(3 downto 0) := "0010";
+ constant OpCode_PushInt : std_logic_vector(3 downto 0) := "0011";
+
+ constant OpCode_PopPC : std_logic_vector(3 downto 0) := "0100";
+ constant OpCode_Add : std_logic_vector(3 downto 0) := "0101";
+ constant OpCode_And : std_logic_vector(3 downto 0) := "0110";
+ constant OpCode_Or : std_logic_vector(3 downto 0) := "0111";
+
+ constant OpCode_Load : std_logic_vector(3 downto 0) := "1000";
+ constant OpCode_Not : std_logic_vector(3 downto 0) := "1001";
+ constant OpCode_Flip : std_logic_vector(3 downto 0) := "1010";
+ constant OpCode_Nop : std_logic_vector(3 downto 0) := "1011";
+
+ constant OpCode_Store : std_logic_vector(3 downto 0) := "1100";
+ constant OpCode_PopSP : std_logic_vector(3 downto 0) := "1101";
+ constant OpCode_Compare : std_logic_vector(3 downto 0) := "1110";
+ constant OpCode_PopInt : std_logic_vector(3 downto 0) := "1111";
+
+ constant OpCode_Lessthan : std_logic_vector(5 downto 0) := conv_std_logic_vector(36, 6);
+ constant OpCode_Lessthanorequal : std_logic_vector(5 downto 0) := conv_std_logic_vector(37, 6);
+ constant OpCode_Ulessthan : std_logic_vector(5 downto 0) := conv_std_logic_vector(38, 6);
+ constant OpCode_Ulessthanorequal : std_logic_vector(5 downto 0) := conv_std_logic_vector(39, 6);
+
+ constant OpCode_Swap : std_logic_vector(5 downto 0) := conv_std_logic_vector(40, 6);
+ constant OpCode_Mult : std_logic_vector(5 downto 0) := conv_std_logic_vector(41, 6);
+
+ constant OpCode_Lshiftright : std_logic_vector(5 downto 0) := conv_std_logic_vector(42, 6);
+ constant OpCode_Ashiftleft : std_logic_vector(5 downto 0) := conv_std_logic_vector(43, 6);
+ constant OpCode_Ashiftright : std_logic_vector(5 downto 0) := conv_std_logic_vector(44, 6);
+ constant OpCode_Call : std_logic_vector(5 downto 0) := conv_std_logic_vector(45, 6);
+
+ constant OpCode_Eq : std_logic_vector(5 downto 0) := conv_std_logic_vector(46, 6);
+ constant OpCode_Neq : std_logic_vector(5 downto 0) := conv_std_logic_vector(47, 6);
+
+ constant OpCode_Sub : std_logic_vector(5 downto 0) := conv_std_logic_vector(49, 6);
+ constant OpCode_Loadb : std_logic_vector(5 downto 0) := conv_std_logic_vector(51, 6);
+ constant OpCode_Storeb : std_logic_vector(5 downto 0) := conv_std_logic_vector(52, 6);
+
+ constant OpCode_Eqbranch : std_logic_vector(5 downto 0) := conv_std_logic_vector(55, 6);
+ constant OpCode_Neqbranch : std_logic_vector(5 downto 0) := conv_std_logic_vector(56, 6);
+ constant OpCode_Poppcrel : std_logic_vector(5 downto 0) := conv_std_logic_vector(57, 6);
+
+ constant OpCode_Pushspadd : std_logic_vector(5 downto 0) := conv_std_logic_vector(61, 6);
+ constant OpCode_Mult16x16 : std_logic_vector(5 downto 0) := conv_std_logic_vector(62, 6);
+ constant OpCode_Callpcrel : std_logic_vector(5 downto 0) := conv_std_logic_vector(63, 6);
+
+
+
+ constant OpCode_Size : integer := 8;
+
+
+
+end zpupkg;
diff --git a/zpu/hdl/zpu4/test/dmips/build.sh b/zpu/hdl/zpu4/test/dmips/build.sh
new file mode 100644
index 0000000..51ff3de
--- /dev/null
+++ b/zpu/hdl/zpu4/test/dmips/build.sh
@@ -0,0 +1,3 @@
+zpu-elf-gcc -DTIME $ZPUDIR/dhrystone/dhry_*.c -O3 -Wl,--gc-sections -Wl,--relax -abel -o dmips.elf
+zpu-elf-objdump --disassemble-all >dmips.dis dmips.elf
+zpu-elf-objcopy -O binary dmips.elf dmips.bin
diff --git a/zpu/hdl/zpu4/test/dmips/dmips.bin b/zpu/hdl/zpu4/test/dmips/dmips.bin
new file mode 100644
index 0000000..1330fe3
--- /dev/null
+++ b/zpu/hdl/zpu4/test/dmips/dmips.bin
Binary files differ
diff --git a/zpu/hdl/zpu4/test/dmips/dmips.elf b/zpu/hdl/zpu4/test/dmips/dmips.elf
new file mode 100644
index 0000000..7254a5d
--- /dev/null
+++ b/zpu/hdl/zpu4/test/dmips/dmips.elf
Binary files differ
diff --git a/zpu/hdl/zpu4/test/dmips/dmips.ram b/zpu/hdl/zpu4/test/dmips/dmips.ram
new file mode 100644
index 0000000..27b991d
--- /dev/null
+++ b/zpu/hdl/zpu4/test/dmips/dmips.ram
@@ -0,0 +1,3507 @@
+0 => x"0b0b0b0b",
+1 => x"80700b0b",
+2 => x"80dde00c",
+3 => x"3a0b0b0b",
+4 => x"b9990400",
+5 => x"00000000",
+6 => x"00000000",
+7 => x"00000000",
+8 => x"80088408",
+9 => x"88080b0b",
+10 => x"0bb9e02d",
+11 => x"880c840c",
+12 => x"800c0400",
+13 => x"00000000",
+14 => x"00000000",
+15 => x"00000000",
+16 => x"71fd0608",
+17 => x"72830609",
+18 => x"81058205",
+19 => x"832b2a83",
+20 => x"ffff0652",
+21 => x"04000000",
+22 => x"00000000",
+23 => x"00000000",
+24 => x"71fd0608",
+25 => x"83ffff73",
+26 => x"83060981",
+27 => x"05820583",
+28 => x"2b2b0906",
+29 => x"7383ffff",
+30 => x"0b0b0b0b",
+31 => x"83a70400",
+32 => x"72098105",
+33 => x"72057373",
+34 => x"09060906",
+35 => x"73097306",
+36 => x"070a8106",
+37 => x"53510400",
+38 => x"00000000",
+39 => x"00000000",
+40 => x"72722473",
+41 => x"732e0753",
+42 => x"51040000",
+43 => x"00000000",
+44 => x"00000000",
+45 => x"00000000",
+46 => x"00000000",
+47 => x"00000000",
+48 => x"71737109",
+49 => x"71068106",
+50 => x"30720a10",
+51 => x"0a720a10",
+52 => x"0a31050a",
+53 => x"81065151",
+54 => x"53510400",
+55 => x"00000000",
+56 => x"72722673",
+57 => x"732e0753",
+58 => x"51040000",
+59 => x"00000000",
+60 => x"00000000",
+61 => x"00000000",
+62 => x"00000000",
+63 => x"00000000",
+64 => x"00000000",
+65 => x"00000000",
+66 => x"00000000",
+67 => x"00000000",
+68 => x"00000000",
+69 => x"00000000",
+70 => x"00000000",
+71 => x"00000000",
+72 => x"0b0b0b88",
+73 => x"c4040000",
+74 => x"00000000",
+75 => x"00000000",
+76 => x"00000000",
+77 => x"00000000",
+78 => x"00000000",
+79 => x"00000000",
+80 => x"720a722b",
+81 => x"0a535104",
+82 => x"00000000",
+83 => x"00000000",
+84 => x"00000000",
+85 => x"00000000",
+86 => x"00000000",
+87 => x"00000000",
+88 => x"72729f06",
+89 => x"0981050b",
+90 => x"0b0b88a7",
+91 => x"05040000",
+92 => x"00000000",
+93 => x"00000000",
+94 => x"00000000",
+95 => x"00000000",
+96 => x"72722aff",
+97 => x"739f062a",
+98 => x"0974090a",
+99 => x"8106ff05",
+100 => x"06075351",
+101 => x"04000000",
+102 => x"00000000",
+103 => x"00000000",
+104 => x"71715351",
+105 => x"020d0406",
+106 => x"73830609",
+107 => x"81058205",
+108 => x"832b0b2b",
+109 => x"0772fc06",
+110 => x"0c515104",
+111 => x"00000000",
+112 => x"72098105",
+113 => x"72050970",
+114 => x"81050906",
+115 => x"0a810653",
+116 => x"51040000",
+117 => x"00000000",
+118 => x"00000000",
+119 => x"00000000",
+120 => x"72098105",
+121 => x"72050970",
+122 => x"81050906",
+123 => x"0a098106",
+124 => x"53510400",
+125 => x"00000000",
+126 => x"00000000",
+127 => x"00000000",
+128 => x"71098105",
+129 => x"52040000",
+130 => x"00000000",
+131 => x"00000000",
+132 => x"00000000",
+133 => x"00000000",
+134 => x"00000000",
+135 => x"00000000",
+136 => x"72720981",
+137 => x"05055351",
+138 => x"04000000",
+139 => x"00000000",
+140 => x"00000000",
+141 => x"00000000",
+142 => x"00000000",
+143 => x"00000000",
+144 => x"72097206",
+145 => x"73730906",
+146 => x"07535104",
+147 => x"00000000",
+148 => x"00000000",
+149 => x"00000000",
+150 => x"00000000",
+151 => x"00000000",
+152 => x"71fc0608",
+153 => x"72830609",
+154 => x"81058305",
+155 => x"1010102a",
+156 => x"81ff0652",
+157 => x"04000000",
+158 => x"00000000",
+159 => x"00000000",
+160 => x"71fc0608",
+161 => x"0b0b80dd",
+162 => x"cc738306",
+163 => x"10100508",
+164 => x"060b0b0b",
+165 => x"88aa0400",
+166 => x"00000000",
+167 => x"00000000",
+168 => x"80088408",
+169 => x"88087575",
+170 => x"0b0b0ba1",
+171 => x"c92d5050",
+172 => x"80085688",
+173 => x"0c840c80",
+174 => x"0c510400",
+175 => x"00000000",
+176 => x"80088408",
+177 => x"88087575",
+178 => x"0b0b0ba2",
+179 => x"8d2d5050",
+180 => x"80085688",
+181 => x"0c840c80",
+182 => x"0c510400",
+183 => x"00000000",
+184 => x"72097081",
+185 => x"0509060a",
+186 => x"8106ff05",
+187 => x"70547106",
+188 => x"73097274",
+189 => x"05ff0506",
+190 => x"07515151",
+191 => x"04000000",
+192 => x"72097081",
+193 => x"0509060a",
+194 => x"098106ff",
+195 => x"05705471",
+196 => x"06730972",
+197 => x"7405ff05",
+198 => x"06075151",
+199 => x"51040000",
+200 => x"05ff0504",
+201 => x"00000000",
+202 => x"00000000",
+203 => x"00000000",
+204 => x"00000000",
+205 => x"00000000",
+206 => x"00000000",
+207 => x"00000000",
+208 => x"810b0b0b",
+209 => x"80dddc0c",
+210 => x"51040000",
+211 => x"00000000",
+212 => x"00000000",
+213 => x"00000000",
+214 => x"00000000",
+215 => x"00000000",
+216 => x"71810552",
+217 => x"04000000",
+218 => x"00000000",
+219 => x"00000000",
+220 => x"00000000",
+221 => x"00000000",
+222 => x"00000000",
+223 => x"00000000",
+224 => x"00000000",
+225 => x"00000000",
+226 => x"00000000",
+227 => x"00000000",
+228 => x"00000000",
+229 => x"00000000",
+230 => x"00000000",
+231 => x"00000000",
+232 => x"02840572",
+233 => x"10100552",
+234 => x"04000000",
+235 => x"00000000",
+236 => x"00000000",
+237 => x"00000000",
+238 => x"00000000",
+239 => x"00000000",
+240 => x"00000000",
+241 => x"00000000",
+242 => x"00000000",
+243 => x"00000000",
+244 => x"00000000",
+245 => x"00000000",
+246 => x"00000000",
+247 => x"00000000",
+248 => x"717105ff",
+249 => x"05715351",
+250 => x"020d0400",
+251 => x"00000000",
+252 => x"00000000",
+253 => x"00000000",
+254 => x"00000000",
+255 => x"00000000",
+256 => x"83d93f80",
+257 => x"c78e3f04",
+258 => x"10101010",
+259 => x"10101010",
+260 => x"10101010",
+261 => x"10101010",
+262 => x"10101010",
+263 => x"10101010",
+264 => x"10101010",
+265 => x"10101053",
+266 => x"51047381",
+267 => x"ff067383",
+268 => x"06098105",
+269 => x"83051010",
+270 => x"102b0772",
+271 => x"fc060c51",
+272 => x"51043c04",
+273 => x"72728072",
+274 => x"8106ff05",
+275 => x"09720605",
+276 => x"71105272",
+277 => x"0a100a53",
+278 => x"72ed3851",
+279 => x"51535104",
+280 => x"ff3d0d0b",
+281 => x"0b80edd0",
+282 => x"08528412",
+283 => x"08708106",
+284 => x"515170f6",
+285 => x"38710881",
+286 => x"ff06800c",
+287 => x"833d0d04",
+288 => x"ff3d0d0b",
+289 => x"0b80edd0",
+290 => x"08528412",
+291 => x"08700a10",
+292 => x"0a708106",
+293 => x"51515170",
+294 => x"f1387372",
+295 => x"0c833d0d",
+296 => x"0480dddc",
+297 => x"08802ea8",
+298 => x"38838080",
+299 => x"0b0b0b80",
+300 => x"edd00c82",
+301 => x"a0800b0b",
+302 => x"0b80edd4",
+303 => x"0c829080",
+304 => x"0b80ede4",
+305 => x"0c0b0b80",
+306 => x"edd80b80",
+307 => x"ede80c04",
+308 => x"f8808080",
+309 => x"a40b0b0b",
+310 => x"80edd00c",
+311 => x"f8808082",
+312 => x"800b0b0b",
+313 => x"80edd40c",
+314 => x"f8808084",
+315 => x"800b80ed",
+316 => x"e40cf880",
+317 => x"8080940b",
+318 => x"80ede80c",
+319 => x"f8808080",
+320 => x"9c0b80ed",
+321 => x"e00cf880",
+322 => x"8080a00b",
+323 => x"80edec0c",
+324 => x"04f23d0d",
+325 => x"600b0b80",
+326 => x"edd40856",
+327 => x"5d82750c",
+328 => x"8059805a",
+329 => x"800b8f3d",
+330 => x"71101017",
+331 => x"70085957",
+332 => x"5d5b8076",
+333 => x"81ff067c",
+334 => x"832b5658",
+335 => x"5276537b",
+336 => x"5196bc3f",
+337 => x"7d7f7a72",
+338 => x"077c7207",
+339 => x"71716081",
+340 => x"05415f5d",
+341 => x"5b595755",
+342 => x"7a8724bb",
+343 => x"380b0b80",
+344 => x"edd4087b",
+345 => x"10101170",
+346 => x"08585155",
+347 => x"807681ff",
+348 => x"067c832b",
+349 => x"56585276",
+350 => x"537b5196",
+351 => x"823f7d7f",
+352 => x"7a72077c",
+353 => x"72077171",
+354 => x"60810541",
+355 => x"5f5d5b59",
+356 => x"5755877b",
+357 => x"25c73876",
+358 => x"7d0c7784",
+359 => x"1e0c7c80",
+360 => x"0c903d0d",
+361 => x"04ff3d0d",
+362 => x"80eddc33",
+363 => x"5170a738",
+364 => x"80dde808",
+365 => x"70085252",
+366 => x"70802e94",
+367 => x"38841280",
+368 => x"dde80c70",
+369 => x"2d80dde8",
+370 => x"08700852",
+371 => x"5270ee38",
+372 => x"810b80ed",
+373 => x"dc34833d",
+374 => x"0d040480",
+375 => x"3d0d0b0b",
+376 => x"80edcc08",
+377 => x"802e8e38",
+378 => x"0b0b0b0b",
+379 => x"800b802e",
+380 => x"09810685",
+381 => x"38823d0d",
+382 => x"040b0b80",
+383 => x"edcc510b",
+384 => x"0b0bf3fc",
+385 => x"3f823d0d",
+386 => x"0404ff3d",
+387 => x"0d028f05",
+388 => x"3352718a",
+389 => x"2e8a3871",
+390 => x"51fce53f",
+391 => x"833d0d04",
+392 => x"8d51fcdc",
+393 => x"3f7151fc",
+394 => x"d73f833d",
+395 => x"0d04ce3d",
+396 => x"0db53d70",
+397 => x"70840552",
+398 => x"088c8a5c",
+399 => x"56a53d5e",
+400 => x"5c807570",
+401 => x"81055733",
+402 => x"765b5558",
+403 => x"73782e80",
+404 => x"c1388e3d",
+405 => x"5b73a52e",
+406 => x"09810680",
+407 => x"c5387870",
+408 => x"81055a33",
+409 => x"547380e4",
+410 => x"2e81b638",
+411 => x"7380e424",
+412 => x"80c63873",
+413 => x"80e32ea1",
+414 => x"388052a5",
+415 => x"51792d80",
+416 => x"52735179",
+417 => x"2d821858",
+418 => x"78708105",
+419 => x"5a335473",
+420 => x"c4387780",
+421 => x"0cb43d0d",
+422 => x"047b841d",
+423 => x"83123356",
+424 => x"5d578052",
+425 => x"7351792d",
+426 => x"81187970",
+427 => x"81055b33",
+428 => x"555873ff",
+429 => x"a038db39",
+430 => x"7380f32e",
+431 => x"098106ff",
+432 => x"b8387b84",
+433 => x"1d710859",
+434 => x"5d568077",
+435 => x"33555673",
+436 => x"762e8d38",
+437 => x"81167018",
+438 => x"70335755",
+439 => x"5674f538",
+440 => x"ff165580",
+441 => x"7625ffa0",
+442 => x"38767081",
+443 => x"05583354",
+444 => x"80527351",
+445 => x"792d8118",
+446 => x"75ff1757",
+447 => x"57588076",
+448 => x"25ff8538",
+449 => x"76708105",
+450 => x"58335480",
+451 => x"52735179",
+452 => x"2d811875",
+453 => x"ff175757",
+454 => x"58758024",
+455 => x"cc38fee8",
+456 => x"397b841d",
+457 => x"71087071",
+458 => x"9f2c5953",
+459 => x"595d5680",
+460 => x"75248195",
+461 => x"38757d7c",
+462 => x"58565480",
+463 => x"5773772e",
+464 => x"098106b6",
+465 => x"38b07b34",
+466 => x"02b50556",
+467 => x"7a762e97",
+468 => x"38ff1656",
+469 => x"75337570",
+470 => x"81055734",
+471 => x"8117577a",
+472 => x"762e0981",
+473 => x"06eb3880",
+474 => x"7534767d",
+475 => x"ff125758",
+476 => x"56758024",
+477 => x"fef338fe",
+478 => x"8f398a52",
+479 => x"7351938d",
+480 => x"3f80080b",
+481 => x"0b80cfc0",
+482 => x"05337670",
+483 => x"81055834",
+484 => x"8a527351",
+485 => x"92b33f80",
+486 => x"08548008",
+487 => x"802effac",
+488 => x"388a5273",
+489 => x"5192e63f",
+490 => x"80080b0b",
+491 => x"80cfc005",
+492 => x"33767081",
+493 => x"0558348a",
+494 => x"52735192",
+495 => x"8c3f8008",
+496 => x"548008ff",
+497 => x"b538ff84",
+498 => x"39745276",
+499 => x"53b43dff",
+500 => x"b8055190",
+501 => x"ff3fa33d",
+502 => x"0856fed9",
+503 => x"39803d0d",
+504 => x"80c10b81",
+505 => x"bc9c3480",
+506 => x"0b81bdf4",
+507 => x"0c70800c",
+508 => x"823d0d04",
+509 => x"ff3d0d80",
+510 => x"0b81bc9c",
+511 => x"33525270",
+512 => x"80c12e99",
+513 => x"387181bd",
+514 => x"f4080781",
+515 => x"bdf40c80",
+516 => x"c20b81bc",
+517 => x"a0347080",
+518 => x"0c833d0d",
+519 => x"04810b81",
+520 => x"bdf40807",
+521 => x"81bdf40c",
+522 => x"80c20b81",
+523 => x"bca03470",
+524 => x"800c833d",
+525 => x"0d04fd3d",
+526 => x"0d757008",
+527 => x"8a055353",
+528 => x"81bc9c33",
+529 => x"517080c1",
+530 => x"2e8b3873",
+531 => x"f3387080",
+532 => x"0c853d0d",
+533 => x"04ff1270",
+534 => x"81bc9808",
+535 => x"31740c80",
+536 => x"0c853d0d",
+537 => x"04fc3d0d",
+538 => x"81bca408",
+539 => x"5574802e",
+540 => x"8c387675",
+541 => x"08710c81",
+542 => x"bca40856",
+543 => x"548c1553",
+544 => x"81bc9808",
+545 => x"528a518d",
+546 => x"b83f7380",
+547 => x"0c863d0d",
+548 => x"04fb3d0d",
+549 => x"77700856",
+550 => x"56b05381",
+551 => x"bca40852",
+552 => x"74519ed1",
+553 => x"3f850b8c",
+554 => x"170c850b",
+555 => x"8c160c75",
+556 => x"08750c81",
+557 => x"bca40854",
+558 => x"73802e8a",
+559 => x"38730875",
+560 => x"0c81bca4",
+561 => x"08548c14",
+562 => x"5381bc98",
+563 => x"08528a51",
+564 => x"8cef3f84",
+565 => x"1508ad38",
+566 => x"860b8c16",
+567 => x"0c881552",
+568 => x"88160851",
+569 => x"8bfb3f81",
+570 => x"bca40870",
+571 => x"08760c54",
+572 => x"8c157054",
+573 => x"548a5273",
+574 => x"08518cc5",
+575 => x"3f73800c",
+576 => x"873d0d04",
+577 => x"750854b0",
+578 => x"53735275",
+579 => x"519de63f",
+580 => x"73800c87",
+581 => x"3d0d04e1",
+582 => x"3d0db051",
+583 => x"91883f80",
+584 => x"0881bc94",
+585 => x"0cb05190",
+586 => x"fd3f8008",
+587 => x"81bca40c",
+588 => x"81bc9408",
+589 => x"80080c80",
+590 => x"0b800884",
+591 => x"050c820b",
+592 => x"80088805",
+593 => x"0ca80b80",
+594 => x"088c050c",
+595 => x"9f530b0b",
+596 => x"80cfcc52",
+597 => x"80089005",
+598 => x"519d9a3f",
+599 => x"993d5c9f",
+600 => x"530b0b80",
+601 => x"cfec527b",
+602 => x"519d8a3f",
+603 => x"8a0b80fa",
+604 => x"dc0c0b0b",
+605 => x"80da9051",
+606 => x"f9b43f0b",
+607 => x"0b80d08c",
+608 => x"51f9ab3f",
+609 => x"0b0b80da",
+610 => x"9051f9a2",
+611 => x"3f80ddf0",
+612 => x"08802e89",
+613 => x"aa380b0b",
+614 => x"80d0bc51",
+615 => x"f9903f0b",
+616 => x"0b80da90",
+617 => x"51f9873f",
+618 => x"80ddec08",
+619 => x"520b0b80",
+620 => x"d0e851f8",
+621 => x"f93f8051",
+622 => x"aecb3f80",
+623 => x"0880edfc",
+624 => x"0c810b92",
+625 => x"3d5c5880",
+626 => x"0b80ddec",
+627 => x"082582d5",
+628 => x"388e3d5d",
+629 => x"80c10b81",
+630 => x"bc9c3481",
+631 => x"0b81bdf4",
+632 => x"0c80c20b",
+633 => x"81bca034",
+634 => x"825e835a",
+635 => x"9f530b0b",
+636 => x"80d19852",
+637 => x"7a519bfd",
+638 => x"3f815f80",
+639 => x"7b537c52",
+640 => x"558be23f",
+641 => x"8008752e",
+642 => x"09810683",
+643 => x"38815574",
+644 => x"81bdf40c",
+645 => x"7d705755",
+646 => x"748325a1",
+647 => x"38741010",
+648 => x"15fd0540",
+649 => x"a13dffbc",
+650 => x"05538352",
+651 => x"75518a91",
+652 => x"3f811e70",
+653 => x"5f705755",
+654 => x"837524e1",
+655 => x"387f5474",
+656 => x"5380ee80",
+657 => x"5281bcac",
+658 => x"518a863f",
+659 => x"81bca408",
+660 => x"70085757",
+661 => x"b0537652",
+662 => x"75519b99",
+663 => x"3f850b8c",
+664 => x"180c850b",
+665 => x"8c170c76",
+666 => x"08760c81",
+667 => x"bca40855",
+668 => x"74802e8a",
+669 => x"38740876",
+670 => x"0c81bca4",
+671 => x"08558c15",
+672 => x"5381bc98",
+673 => x"08528a51",
+674 => x"89b73f84",
+675 => x"160887b8",
+676 => x"38860b8c",
+677 => x"170c8816",
+678 => x"52881708",
+679 => x"5188c23f",
+680 => x"81bca408",
+681 => x"7008770c",
+682 => x"578c1670",
+683 => x"54558a52",
+684 => x"74085189",
+685 => x"8c3f80c1",
+686 => x"0b81bca0",
+687 => x"33565675",
+688 => x"7526a238",
+689 => x"80c35275",
+690 => x"5189f03f",
+691 => x"80087f2e",
+692 => x"87b13881",
+693 => x"167081ff",
+694 => x"0681bca0",
+695 => x"33525755",
+696 => x"747627e0",
+697 => x"38797e29",
+698 => x"60705471",
+699 => x"5358558b",
+700 => x"d83f8008",
+701 => x"5e747731",
+702 => x"70872980",
+703 => x"08318008",
+704 => x"8a0581bc",
+705 => x"9c3381bc",
+706 => x"98085a5a",
+707 => x"525b5576",
+708 => x"80c12e87",
+709 => x"9d3878f7",
+710 => x"38811858",
+711 => x"80ddec08",
+712 => x"7825fdb0",
+713 => x"388051ab",
+714 => x"dc3f8008",
+715 => x"81bc900c",
+716 => x"0b0b80d1",
+717 => x"b851f5f6",
+718 => x"3f0b0b80",
+719 => x"da9051f5",
+720 => x"ed3f0b0b",
+721 => x"80d1c851",
+722 => x"f5e43f0b",
+723 => x"0b80da90",
+724 => x"51f5db3f",
+725 => x"81bc9808",
+726 => x"520b0b80",
+727 => x"d28051f5",
+728 => x"cd3f8552",
+729 => x"0b0b80d2",
+730 => x"9c51f5c2",
+731 => x"3f81bdf4",
+732 => x"08520b0b",
+733 => x"80d2b851",
+734 => x"f5b43f81",
+735 => x"520b0b80",
+736 => x"d29c51f5",
+737 => x"a93f81bc",
+738 => x"9c33520b",
+739 => x"0b80d2d4",
+740 => x"51f59b3f",
+741 => x"80c1520b",
+742 => x"0b80d2f0",
+743 => x"51f58f3f",
+744 => x"81bca033",
+745 => x"520b0b80",
+746 => x"d38c51f5",
+747 => x"813f80c2",
+748 => x"520b0b80",
+749 => x"d2f051f4",
+750 => x"f53f81bc",
+751 => x"cc08520b",
+752 => x"0b80d3a8",
+753 => x"51f4e73f",
+754 => x"87520b0b",
+755 => x"80d29c51",
+756 => x"f4dc3f80",
+757 => x"fadc0852",
+758 => x"0b0b80d3",
+759 => x"c451f4ce",
+760 => x"3f0b0b80",
+761 => x"d3e051f4",
+762 => x"c53f0b0b",
+763 => x"80d48c51",
+764 => x"f4bc3f81",
+765 => x"bca40870",
+766 => x"0853560b",
+767 => x"0b80d498",
+768 => x"51f4ab3f",
+769 => x"0b0b80d4",
+770 => x"b451f4a2",
+771 => x"3f81bca4",
+772 => x"08841108",
+773 => x"535d0b0b",
+774 => x"80d4e851",
+775 => x"f4903f80",
+776 => x"520b0b80",
+777 => x"d29c51f4",
+778 => x"853f81bc",
+779 => x"a4088811",
+780 => x"0853580b",
+781 => x"0b80d584",
+782 => x"51f3f33f",
+783 => x"82520b0b",
+784 => x"80d29c51",
+785 => x"f3e83f81",
+786 => x"bca4088c",
+787 => x"11085359",
+788 => x"0b0b80d5",
+789 => x"a051f3d6",
+790 => x"3f91520b",
+791 => x"0b80d29c",
+792 => x"51f3cb3f",
+793 => x"81bca408",
+794 => x"9005520b",
+795 => x"0b80d5bc",
+796 => x"51f3bb3f",
+797 => x"0b0b80d5",
+798 => x"d851f3b2",
+799 => x"3f0b0b80",
+800 => x"d69051f3",
+801 => x"a93f81bc",
+802 => x"94087008",
+803 => x"53570b0b",
+804 => x"80d49851",
+805 => x"f3983f0b",
+806 => x"0b80d6a4",
+807 => x"51f38f3f",
+808 => x"81bc9408",
+809 => x"84110853",
+810 => x"550b0b80",
+811 => x"d4e851f2",
+812 => x"fd3f8052",
+813 => x"0b0b80d2",
+814 => x"9c51f2f2",
+815 => x"3f81bc94",
+816 => x"08881108",
+817 => x"53560b0b",
+818 => x"80d58451",
+819 => x"f2e03f81",
+820 => x"520b0b80",
+821 => x"d29c51f2",
+822 => x"d53f81bc",
+823 => x"94088c11",
+824 => x"08535d0b",
+825 => x"0b80d5a0",
+826 => x"51f2c33f",
+827 => x"92520b0b",
+828 => x"80d29c51",
+829 => x"f2b83f81",
+830 => x"bc940890",
+831 => x"05520b0b",
+832 => x"80d5bc51",
+833 => x"f2a83f0b",
+834 => x"0b80d5d8",
+835 => x"51f29f3f",
+836 => x"7d520b0b",
+837 => x"80d6e451",
+838 => x"f2943f85",
+839 => x"520b0b80",
+840 => x"d29c51f2",
+841 => x"893f7952",
+842 => x"0b0b80d7",
+843 => x"8051f1fe",
+844 => x"3f8d520b",
+845 => x"0b80d29c",
+846 => x"51f1f33f",
+847 => x"7f520b0b",
+848 => x"80d79c51",
+849 => x"f1e83f87",
+850 => x"520b0b80",
+851 => x"d29c51f1",
+852 => x"dd3f7e52",
+853 => x"0b0b80d7",
+854 => x"b851f1d2",
+855 => x"3f81520b",
+856 => x"0b80d29c",
+857 => x"51f1c73f",
+858 => x"7b520b0b",
+859 => x"80d7d451",
+860 => x"f1bc3f0b",
+861 => x"0b80d7f0",
+862 => x"51f1b33f",
+863 => x"7a520b0b",
+864 => x"80d8a851",
+865 => x"f1a83f0b",
+866 => x"0b80d8c4",
+867 => x"51f19f3f",
+868 => x"0b0b80da",
+869 => x"9051f196",
+870 => x"3f81bc90",
+871 => x"0880edfc",
+872 => x"08317080",
+873 => x"edf80c52",
+874 => x"0b0b80d8",
+875 => x"fc51f0fe",
+876 => x"3f80edf8",
+877 => x"08568176",
+878 => x"2581a538",
+879 => x"80ddec08",
+880 => x"705376bd",
+881 => x"84c02952",
+882 => x"5b85fe3f",
+883 => x"800880ed",
+884 => x"f00c7552",
+885 => x"7a5185f1",
+886 => x"3f800880",
+887 => x"edf40c75",
+888 => x"8ddd2952",
+889 => x"7a87e829",
+890 => x"5185de3f",
+891 => x"800881bc",
+892 => x"a80c0b0b",
+893 => x"80d98c51",
+894 => x"f0b43f80",
+895 => x"edf00852",
+896 => x"0b0b80d9",
+897 => x"bc51f0a6",
+898 => x"3f0b0b80",
+899 => x"d9c451f0",
+900 => x"9d3f80ed",
+901 => x"f408520b",
+902 => x"0b80d9bc",
+903 => x"51f08f3f",
+904 => x"81bca808",
+905 => x"520b0b80",
+906 => x"d9f451f0",
+907 => x"813f0b0b",
+908 => x"80da9051",
+909 => x"eff83f80",
+910 => x"0b800ca1",
+911 => x"3d0d040b",
+912 => x"0b80da94",
+913 => x"51f6d539",
+914 => x"760856b0",
+915 => x"53755276",
+916 => x"5193a23f",
+917 => x"80c10b81",
+918 => x"bca03356",
+919 => x"56f8e039",
+920 => x"0b0b80da",
+921 => x"c451efc6",
+922 => x"3f0b0b80",
+923 => x"dafc51ef",
+924 => x"bd3f0b0b",
+925 => x"80da9051",
+926 => x"efb43f80",
+927 => x"0b800ca1",
+928 => x"3d0d04a1",
+929 => x"3dffb805",
+930 => x"52805180",
+931 => x"d43f9f53",
+932 => x"0b0b80db",
+933 => x"9c527a51",
+934 => x"92db3f77",
+935 => x"7881bc98",
+936 => x"0c811770",
+937 => x"81ff0681",
+938 => x"bca03352",
+939 => x"58565af8",
+940 => x"af39ff15",
+941 => x"7077317e",
+942 => x"0c59800b",
+943 => x"81195959",
+944 => x"80ddec08",
+945 => x"7825f68c",
+946 => x"38f8da39",
+947 => x"ff3d0d73",
+948 => x"82327030",
+949 => x"70720780",
+950 => x"25800c52",
+951 => x"52833d0d",
+952 => x"04fe3d0d",
+953 => x"74767153",
+954 => x"54527182",
+955 => x"2e833883",
+956 => x"5171812e",
+957 => x"9a388172",
+958 => x"269f3871",
+959 => x"822eb838",
+960 => x"71842ea9",
+961 => x"3870730c",
+962 => x"70800c84",
+963 => x"3d0d0480",
+964 => x"e40b81bc",
+965 => x"9808258b",
+966 => x"3880730c",
+967 => x"70800c84",
+968 => x"3d0d0483",
+969 => x"730c7080",
+970 => x"0c843d0d",
+971 => x"0482730c",
+972 => x"70800c84",
+973 => x"3d0d0481",
+974 => x"730c7080",
+975 => x"0c843d0d",
+976 => x"04803d0d",
+977 => x"74741482",
+978 => x"05710c80",
+979 => x"0c823d0d",
+980 => x"04f73d0d",
+981 => x"7b7d7f61",
+982 => x"85127082",
+983 => x"2b751170",
+984 => x"74717084",
+985 => x"05530c5a",
+986 => x"5a5d5b76",
+987 => x"0c7980f8",
+988 => x"180c7986",
+989 => x"12525758",
+990 => x"5a5a7676",
+991 => x"24993876",
+992 => x"b329822b",
+993 => x"79115153",
+994 => x"76737084",
+995 => x"05550c81",
+996 => x"14547574",
+997 => x"25f23876",
+998 => x"81cc2919",
+999 => x"fc110881",
+1000 => x"05fc120c",
+1001 => x"7a197008",
+1002 => x"9fa0130c",
+1003 => x"5856850b",
+1004 => x"81bc980c",
+1005 => x"75800c8b",
+1006 => x"3d0d04fe",
+1007 => x"3d0d0293",
+1008 => x"05335180",
+1009 => x"02840597",
+1010 => x"05335452",
+1011 => x"70732e88",
+1012 => x"3871800c",
+1013 => x"843d0d04",
+1014 => x"7081bc9c",
+1015 => x"34810b80",
+1016 => x"0c843d0d",
+1017 => x"04f83d0d",
+1018 => x"7a7c5956",
+1019 => x"820b8319",
+1020 => x"55557416",
+1021 => x"70337533",
+1022 => x"5b515372",
+1023 => x"792e80c6",
+1024 => x"3880c10b",
+1025 => x"81168116",
+1026 => x"56565782",
+1027 => x"7525e338",
+1028 => x"ffa91770",
+1029 => x"81ff0655",
+1030 => x"59738226",
+1031 => x"83388755",
+1032 => x"81537680",
+1033 => x"d22e9838",
+1034 => x"77527551",
+1035 => x"91993f80",
+1036 => x"53728008",
+1037 => x"25893887",
+1038 => x"1581bc98",
+1039 => x"0c815372",
+1040 => x"800c8a3d",
+1041 => x"0d047281",
+1042 => x"bc9c3482",
+1043 => x"7525ffa2",
+1044 => x"38ffbd39",
+1045 => x"f93d0d79",
+1046 => x"7b7d5458",
+1047 => x"72597730",
+1048 => x"79703070",
+1049 => x"72079f2a",
+1050 => x"7371315a",
+1051 => x"52597779",
+1052 => x"56730c53",
+1053 => x"7384130c",
+1054 => x"54800c89",
+1055 => x"3d0d04f9",
+1056 => x"3d0d797b",
+1057 => x"7d7f5654",
+1058 => x"52547280",
+1059 => x"2ea03870",
+1060 => x"577158a0",
+1061 => x"73315280",
+1062 => x"7225a138",
+1063 => x"7770742b",
+1064 => x"5770732a",
+1065 => x"78752b07",
+1066 => x"56517476",
+1067 => x"53517074",
+1068 => x"0c718415",
+1069 => x"0c73800c",
+1070 => x"893d0d04",
+1071 => x"80567772",
+1072 => x"302b5574",
+1073 => x"765351e6",
+1074 => x"39fb3d0d",
+1075 => x"77795555",
+1076 => x"80567575",
+1077 => x"24ab3880",
+1078 => x"74249d38",
+1079 => x"80537352",
+1080 => x"745180e1",
+1081 => x"3f800854",
+1082 => x"75802e85",
+1083 => x"38800830",
+1084 => x"5473800c",
+1085 => x"873d0d04",
+1086 => x"73307681",
+1087 => x"325754dc",
+1088 => x"39743055",
+1089 => x"81567380",
+1090 => x"25d238ec",
+1091 => x"39fa3d0d",
+1092 => x"787a5755",
+1093 => x"80577675",
+1094 => x"24a43875",
+1095 => x"9f2c5481",
+1096 => x"53757432",
+1097 => x"74315274",
+1098 => x"519b3f80",
+1099 => x"08547680",
+1100 => x"2e853880",
+1101 => x"08305473",
+1102 => x"800c883d",
+1103 => x"0d047430",
+1104 => x"558157d7",
+1105 => x"39fc3d0d",
+1106 => x"76785354",
+1107 => x"81538074",
+1108 => x"73265255",
+1109 => x"72802e98",
+1110 => x"3870802e",
+1111 => x"ab388072",
+1112 => x"24a63871",
+1113 => x"10731075",
+1114 => x"72265354",
+1115 => x"5272ea38",
+1116 => x"73517883",
+1117 => x"38745170",
+1118 => x"800c863d",
+1119 => x"0d04720a",
+1120 => x"100a720a",
+1121 => x"100a5353",
+1122 => x"72802ee4",
+1123 => x"38717426",
+1124 => x"ed387372",
+1125 => x"31757407",
+1126 => x"740a100a",
+1127 => x"740a100a",
+1128 => x"55555654",
+1129 => x"e339ff3d",
+1130 => x"0d735280",
+1131 => x"e6b80851",
+1132 => x"963f833d",
+1133 => x"0d04ff3d",
+1134 => x"0d735280",
+1135 => x"e6b80851",
+1136 => x"90cc3f83",
+1137 => x"3d0d04f4",
+1138 => x"3d0d7e60",
+1139 => x"8b1170f8",
+1140 => x"065b5555",
+1141 => x"5d729626",
+1142 => x"83389058",
+1143 => x"80782474",
+1144 => x"79260755",
+1145 => x"80547474",
+1146 => x"2e098106",
+1147 => x"80ca387c",
+1148 => x"518d9e3f",
+1149 => x"7783f726",
+1150 => x"80c53877",
+1151 => x"832a7010",
+1152 => x"101080de",
+1153 => x"b0058c11",
+1154 => x"08585854",
+1155 => x"75772e81",
+1156 => x"f0388416",
+1157 => x"08fc068c",
+1158 => x"17088818",
+1159 => x"08718c12",
+1160 => x"0c88120c",
+1161 => x"5b760584",
+1162 => x"11088107",
+1163 => x"84120c53",
+1164 => x"7c518cde",
+1165 => x"3f881654",
+1166 => x"73800c8e",
+1167 => x"3d0d0477",
+1168 => x"892a7883",
+1169 => x"2a585473",
+1170 => x"802ebf38",
+1171 => x"77862ab8",
+1172 => x"05578474",
+1173 => x"27b43880",
+1174 => x"db145794",
+1175 => x"7427ab38",
+1176 => x"778c2a80",
+1177 => x"ee055780",
+1178 => x"d474279e",
+1179 => x"38778f2a",
+1180 => x"80f70557",
+1181 => x"82d47427",
+1182 => x"91387792",
+1183 => x"2a80fc05",
+1184 => x"578ad474",
+1185 => x"27843880",
+1186 => x"fe577610",
+1187 => x"101080de",
+1188 => x"b0058c11",
+1189 => x"08565374",
+1190 => x"732ea338",
+1191 => x"841508fc",
+1192 => x"06707931",
+1193 => x"5556738f",
+1194 => x"2488e438",
+1195 => x"73802588",
+1196 => x"e6388c15",
+1197 => x"08557473",
+1198 => x"2e098106",
+1199 => x"df388117",
+1200 => x"5980dec0",
+1201 => x"08567580",
+1202 => x"deb82e82",
+1203 => x"cc388416",
+1204 => x"08fc0670",
+1205 => x"79315555",
+1206 => x"738f24bb",
+1207 => x"3880deb8",
+1208 => x"0b80dec4",
+1209 => x"0c80deb8",
+1210 => x"0b80dec0",
+1211 => x"0c807424",
+1212 => x"80db3874",
+1213 => x"16841108",
+1214 => x"81078412",
+1215 => x"0c53feb0",
+1216 => x"3988168c",
+1217 => x"11085759",
+1218 => x"75792e09",
+1219 => x"8106fe82",
+1220 => x"38821459",
+1221 => x"ffab3977",
+1222 => x"16788107",
+1223 => x"84180c70",
+1224 => x"80dec40c",
+1225 => x"7080dec0",
+1226 => x"0c80deb8",
+1227 => x"0b8c120c",
+1228 => x"8c110888",
+1229 => x"120c7481",
+1230 => x"0784120c",
+1231 => x"74057471",
+1232 => x"0c5b7c51",
+1233 => x"8acc3f88",
+1234 => x"1654fdec",
+1235 => x"3983ff75",
+1236 => x"27839138",
+1237 => x"74892a75",
+1238 => x"832a5454",
+1239 => x"73802ebf",
+1240 => x"3874862a",
+1241 => x"b8055384",
+1242 => x"7427b438",
+1243 => x"80db1453",
+1244 => x"947427ab",
+1245 => x"38748c2a",
+1246 => x"80ee0553",
+1247 => x"80d47427",
+1248 => x"9e38748f",
+1249 => x"2a80f705",
+1250 => x"5382d474",
+1251 => x"27913874",
+1252 => x"922a80fc",
+1253 => x"05538ad4",
+1254 => x"74278438",
+1255 => x"80fe5372",
+1256 => x"10101080",
+1257 => x"deb00588",
+1258 => x"11085557",
+1259 => x"73772e86",
+1260 => x"8b388414",
+1261 => x"08fc065b",
+1262 => x"747b278d",
+1263 => x"38881408",
+1264 => x"5473772e",
+1265 => x"098106ea",
+1266 => x"388c1408",
+1267 => x"80deb00b",
+1268 => x"84050871",
+1269 => x"8c190c75",
+1270 => x"88190c77",
+1271 => x"88130c5c",
+1272 => x"57758c15",
+1273 => x"0c785380",
+1274 => x"79248398",
+1275 => x"3872822c",
+1276 => x"81712b56",
+1277 => x"56747b26",
+1278 => x"80ca387a",
+1279 => x"75065776",
+1280 => x"82a33878",
+1281 => x"fc068405",
+1282 => x"59741070",
+1283 => x"7c065555",
+1284 => x"73829238",
+1285 => x"841959f1",
+1286 => x"3980deb0",
+1287 => x"0b840508",
+1288 => x"79545b78",
+1289 => x"8025c638",
+1290 => x"82da3974",
+1291 => x"097b0670",
+1292 => x"80deb00b",
+1293 => x"84050c5b",
+1294 => x"74105574",
+1295 => x"7b268538",
+1296 => x"7485bc38",
+1297 => x"80deb00b",
+1298 => x"88050870",
+1299 => x"841208fc",
+1300 => x"06707b31",
+1301 => x"7b72268f",
+1302 => x"7225075d",
+1303 => x"575c5c55",
+1304 => x"78802e80",
+1305 => x"d9387915",
+1306 => x"80dea808",
+1307 => x"19901159",
+1308 => x"545680de",
+1309 => x"a408ff2e",
+1310 => x"8838a08f",
+1311 => x"13e08006",
+1312 => x"5776527c",
+1313 => x"51888c3f",
+1314 => x"80085480",
+1315 => x"08ff2e90",
+1316 => x"38800876",
+1317 => x"2782a738",
+1318 => x"7480deb0",
+1319 => x"2e829f38",
+1320 => x"80deb00b",
+1321 => x"88050855",
+1322 => x"841508fc",
+1323 => x"06707931",
+1324 => x"7972268f",
+1325 => x"7225075d",
+1326 => x"555a7a83",
+1327 => x"f2387781",
+1328 => x"0784160c",
+1329 => x"77157080",
+1330 => x"deb00b88",
+1331 => x"050c7481",
+1332 => x"0784120c",
+1333 => x"567c5187",
+1334 => x"b93f8815",
+1335 => x"5473800c",
+1336 => x"8e3d0d04",
+1337 => x"74832a70",
+1338 => x"54548074",
+1339 => x"24819b38",
+1340 => x"72822c81",
+1341 => x"712b80de",
+1342 => x"b4080770",
+1343 => x"80deb00b",
+1344 => x"84050c75",
+1345 => x"10101080",
+1346 => x"deb00588",
+1347 => x"1108718c",
+1348 => x"1b0c7088",
+1349 => x"1b0c7988",
+1350 => x"130c5755",
+1351 => x"5c55758c",
+1352 => x"150cfdc1",
+1353 => x"39787910",
+1354 => x"101080de",
+1355 => x"b0057056",
+1356 => x"5b5c8c14",
+1357 => x"08567574",
+1358 => x"2ea33884",
+1359 => x"1608fc06",
+1360 => x"70793158",
+1361 => x"53768f24",
+1362 => x"83f13876",
+1363 => x"802584af",
+1364 => x"388c1608",
+1365 => x"5675742e",
+1366 => x"098106df",
+1367 => x"38881481",
+1368 => x"1a708306",
+1369 => x"555a5472",
+1370 => x"c9387b83",
+1371 => x"06567580",
+1372 => x"2efdb838",
+1373 => x"ff1cf81b",
+1374 => x"5b5c881a",
+1375 => x"087a2eea",
+1376 => x"38fdb539",
+1377 => x"831953fc",
+1378 => x"e4398314",
+1379 => x"70822c81",
+1380 => x"712b80de",
+1381 => x"b4080770",
+1382 => x"80deb00b",
+1383 => x"84050c76",
+1384 => x"10101080",
+1385 => x"deb00588",
+1386 => x"1108718c",
+1387 => x"1c0c7088",
+1388 => x"1c0c7a88",
+1389 => x"130c5853",
+1390 => x"5d5653fe",
+1391 => x"e13980dd",
+1392 => x"f4081759",
+1393 => x"8008762e",
+1394 => x"818b3880",
+1395 => x"dea408ff",
+1396 => x"2e848e38",
+1397 => x"73763119",
+1398 => x"80ddf40c",
+1399 => x"73870670",
+1400 => x"56537280",
+1401 => x"2e883888",
+1402 => x"73317015",
+1403 => x"55557614",
+1404 => x"9fff06a0",
+1405 => x"80713116",
+1406 => x"70547e53",
+1407 => x"51538593",
+1408 => x"3f800856",
+1409 => x"8008ff2e",
+1410 => x"819e3880",
+1411 => x"ddf40813",
+1412 => x"7080ddf4",
+1413 => x"0c747580",
+1414 => x"deb00b88",
+1415 => x"050c7776",
+1416 => x"31158107",
+1417 => x"5556597a",
+1418 => x"80deb02e",
+1419 => x"83c03879",
+1420 => x"8f2682ef",
+1421 => x"38810b84",
+1422 => x"150c8415",
+1423 => x"08fc0670",
+1424 => x"79317972",
+1425 => x"268f7225",
+1426 => x"075d555a",
+1427 => x"7a802efc",
+1428 => x"ed3880db",
+1429 => x"3980089f",
+1430 => x"ff065574",
+1431 => x"feed3878",
+1432 => x"80ddf40c",
+1433 => x"80deb00b",
+1434 => x"8805087a",
+1435 => x"18810784",
+1436 => x"120c5580",
+1437 => x"dea00879",
+1438 => x"27863878",
+1439 => x"80dea00c",
+1440 => x"80de9c08",
+1441 => x"7927fca0",
+1442 => x"387880de",
+1443 => x"9c0c8415",
+1444 => x"08fc0670",
+1445 => x"79317972",
+1446 => x"268f7225",
+1447 => x"075d555a",
+1448 => x"7a802efc",
+1449 => x"99388839",
+1450 => x"80745753",
+1451 => x"fedd397c",
+1452 => x"5183df3f",
+1453 => x"800b800c",
+1454 => x"8e3d0d04",
+1455 => x"807324a5",
+1456 => x"3872822c",
+1457 => x"81712b80",
+1458 => x"deb40807",
+1459 => x"7080deb0",
+1460 => x"0b84050c",
+1461 => x"5c5a768c",
+1462 => x"170c7388",
+1463 => x"170c7588",
+1464 => x"180cf9fd",
+1465 => x"39831370",
+1466 => x"822c8171",
+1467 => x"2b80deb4",
+1468 => x"08077080",
+1469 => x"deb00b84",
+1470 => x"050c5d5b",
+1471 => x"53d8397a",
+1472 => x"75065c7b",
+1473 => x"fc9f3884",
+1474 => x"19751056",
+1475 => x"59f139ff",
+1476 => x"17810559",
+1477 => x"f7ab398c",
+1478 => x"15088816",
+1479 => x"08718c12",
+1480 => x"0c88120c",
+1481 => x"59751584",
+1482 => x"11088107",
+1483 => x"84120c58",
+1484 => x"7c5182de",
+1485 => x"3f881554",
+1486 => x"fba33977",
+1487 => x"16788107",
+1488 => x"84180c8c",
+1489 => x"17088818",
+1490 => x"08718c12",
+1491 => x"0c88120c",
+1492 => x"5c7080de",
+1493 => x"c40c7080",
+1494 => x"dec00c80",
+1495 => x"deb80b8c",
+1496 => x"120c8c11",
+1497 => x"0888120c",
+1498 => x"77810784",
+1499 => x"120c7705",
+1500 => x"77710c55",
+1501 => x"7c51829a",
+1502 => x"3f881654",
+1503 => x"f5ba3972",
+1504 => x"16841108",
+1505 => x"81078412",
+1506 => x"0c588c16",
+1507 => x"08881708",
+1508 => x"718c120c",
+1509 => x"88120c57",
+1510 => x"7c5181f6",
+1511 => x"3f881654",
+1512 => x"f5963972",
+1513 => x"84150cf4",
+1514 => x"1af80670",
+1515 => x"841d0881",
+1516 => x"0607841d",
+1517 => x"0c701c55",
+1518 => x"56850b84",
+1519 => x"150c850b",
+1520 => x"88150c8f",
+1521 => x"7627fdab",
+1522 => x"38881b52",
+1523 => x"7c5184be",
+1524 => x"3f80deb0",
+1525 => x"0b880508",
+1526 => x"80ddf408",
+1527 => x"5a55fd93",
+1528 => x"397880dd",
+1529 => x"f40c7380",
+1530 => x"dea40cfb",
+1531 => x"ef397284",
+1532 => x"150cfcff",
+1533 => x"39fb3d0d",
+1534 => x"77707a7c",
+1535 => x"58555356",
+1536 => x"8f752780",
+1537 => x"e6387276",
+1538 => x"07830651",
+1539 => x"7080dc38",
+1540 => x"75735254",
+1541 => x"70708405",
+1542 => x"52087470",
+1543 => x"8405560c",
+1544 => x"73717084",
+1545 => x"05530871",
+1546 => x"70840553",
+1547 => x"0c717084",
+1548 => x"05530871",
+1549 => x"70840553",
+1550 => x"0c717084",
+1551 => x"05530871",
+1552 => x"70840553",
+1553 => x"0cf01656",
+1554 => x"54748f26",
+1555 => x"c7388375",
+1556 => x"27953870",
+1557 => x"70840552",
+1558 => x"08747084",
+1559 => x"05560cfc",
+1560 => x"15557483",
+1561 => x"26ed3873",
+1562 => x"715452ff",
+1563 => x"155170ff",
+1564 => x"2e983872",
+1565 => x"70810554",
+1566 => x"33727081",
+1567 => x"055434ff",
+1568 => x"115170ff",
+1569 => x"2e098106",
+1570 => x"ea387580",
+1571 => x"0c873d0d",
+1572 => x"040404fd",
+1573 => x"3d0d800b",
+1574 => x"81bdf80c",
+1575 => x"765187ca",
+1576 => x"3f800853",
+1577 => x"8008ff2e",
+1578 => x"88387280",
+1579 => x"0c853d0d",
+1580 => x"0481bdf8",
+1581 => x"08547380",
+1582 => x"2ef03875",
+1583 => x"74710c52",
+1584 => x"72800c85",
+1585 => x"3d0d04fb",
+1586 => x"3d0d7779",
+1587 => x"70720783",
+1588 => x"06535452",
+1589 => x"70933871",
+1590 => x"73730854",
+1591 => x"56547173",
+1592 => x"082e80c4",
+1593 => x"38737554",
+1594 => x"52713370",
+1595 => x"81ff0652",
+1596 => x"5470802e",
+1597 => x"9d387233",
+1598 => x"5570752e",
+1599 => x"09810695",
+1600 => x"38811281",
+1601 => x"14713370",
+1602 => x"81ff0654",
+1603 => x"56545270",
+1604 => x"e5387233",
+1605 => x"557381ff",
+1606 => x"067581ff",
+1607 => x"06717131",
+1608 => x"800c5552",
+1609 => x"873d0d04",
+1610 => x"7109f7fb",
+1611 => x"fdff1306",
+1612 => x"f8848281",
+1613 => x"80065271",
+1614 => x"97388414",
+1615 => x"84167108",
+1616 => x"54565471",
+1617 => x"75082ee0",
+1618 => x"38737554",
+1619 => x"52ff9a39",
+1620 => x"800b800c",
+1621 => x"873d0d04",
+1622 => x"fb3d0d77",
+1623 => x"705256fe",
+1624 => x"b03f80de",
+1625 => x"b00b8805",
+1626 => x"08841108",
+1627 => x"fc06707b",
+1628 => x"319fef05",
+1629 => x"e08006e0",
+1630 => x"80055255",
+1631 => x"55a08075",
+1632 => x"24943880",
+1633 => x"527551fe",
+1634 => x"8a3f80de",
+1635 => x"b8081453",
+1636 => x"7280082e",
+1637 => x"8f387551",
+1638 => x"fdf83f80",
+1639 => x"5372800c",
+1640 => x"873d0d04",
+1641 => x"74305275",
+1642 => x"51fde83f",
+1643 => x"8008ff2e",
+1644 => x"a83880de",
+1645 => x"b00b8805",
+1646 => x"08747631",
+1647 => x"81078412",
+1648 => x"0c5380dd",
+1649 => x"f4087531",
+1650 => x"80ddf40c",
+1651 => x"7551fdc2",
+1652 => x"3f810b80",
+1653 => x"0c873d0d",
+1654 => x"04805275",
+1655 => x"51fdb43f",
+1656 => x"80deb00b",
+1657 => x"88050880",
+1658 => x"08713154",
+1659 => x"548f7325",
+1660 => x"ffa43880",
+1661 => x"0880dea4",
+1662 => x"083180dd",
+1663 => x"f40c7281",
+1664 => x"0784150c",
+1665 => x"7551fd8a",
+1666 => x"3f8053ff",
+1667 => x"9039f73d",
+1668 => x"0d7b7d54",
+1669 => x"5a72802e",
+1670 => x"82833879",
+1671 => x"51fcf23f",
+1672 => x"f8138411",
+1673 => x"0870fe06",
+1674 => x"70138411",
+1675 => x"08fc065c",
+1676 => x"57585457",
+1677 => x"80deb808",
+1678 => x"742e82de",
+1679 => x"38778415",
+1680 => x"0c807381",
+1681 => x"06565974",
+1682 => x"792e81d5",
+1683 => x"38771484",
+1684 => x"11088106",
+1685 => x"565374a0",
+1686 => x"38771656",
+1687 => x"7881e638",
+1688 => x"88140855",
+1689 => x"7480deb8",
+1690 => x"2e82f938",
+1691 => x"8c140870",
+1692 => x"8c170c75",
+1693 => x"88120c58",
+1694 => x"75810784",
+1695 => x"180c7517",
+1696 => x"76710c54",
+1697 => x"78819138",
+1698 => x"83ff7627",
+1699 => x"81c83875",
+1700 => x"892a7683",
+1701 => x"2a545473",
+1702 => x"802ebf38",
+1703 => x"75862ab8",
+1704 => x"05538474",
+1705 => x"27b43880",
+1706 => x"db145394",
+1707 => x"7427ab38",
+1708 => x"758c2a80",
+1709 => x"ee055380",
+1710 => x"d474279e",
+1711 => x"38758f2a",
+1712 => x"80f70553",
+1713 => x"82d47427",
+1714 => x"91387592",
+1715 => x"2a80fc05",
+1716 => x"538ad474",
+1717 => x"27843880",
+1718 => x"fe537210",
+1719 => x"101080de",
+1720 => x"b0058811",
+1721 => x"08555573",
+1722 => x"752e82bf",
+1723 => x"38841408",
+1724 => x"fc065975",
+1725 => x"79278d38",
+1726 => x"88140854",
+1727 => x"73752e09",
+1728 => x"8106ea38",
+1729 => x"8c140870",
+1730 => x"8c190c74",
+1731 => x"88190c77",
+1732 => x"88120c55",
+1733 => x"768c150c",
+1734 => x"7951faf6",
+1735 => x"3f8b3d0d",
+1736 => x"04760877",
+1737 => x"71315876",
+1738 => x"05881808",
+1739 => x"56567480",
+1740 => x"deb82e80",
+1741 => x"e0388c17",
+1742 => x"08708c17",
+1743 => x"0c758812",
+1744 => x"0c53fe89",
+1745 => x"39881408",
+1746 => x"8c150870",
+1747 => x"8c130c59",
+1748 => x"88190cfe",
+1749 => x"a3397583",
+1750 => x"2a705454",
+1751 => x"80742481",
+1752 => x"98387282",
+1753 => x"2c81712b",
+1754 => x"80deb408",
+1755 => x"0780deb0",
+1756 => x"0b84050c",
+1757 => x"74101010",
+1758 => x"80deb005",
+1759 => x"88110871",
+1760 => x"8c1b0c70",
+1761 => x"881b0c79",
+1762 => x"88130c56",
+1763 => x"5a55768c",
+1764 => x"150cff84",
+1765 => x"398159fd",
+1766 => x"b4397716",
+1767 => x"73810654",
+1768 => x"55729838",
+1769 => x"76087771",
+1770 => x"31587505",
+1771 => x"8c180888",
+1772 => x"1908718c",
+1773 => x"120c8812",
+1774 => x"0c555574",
+1775 => x"81078418",
+1776 => x"0c7680de",
+1777 => x"b00b8805",
+1778 => x"0c80deac",
+1779 => x"087526fe",
+1780 => x"c73880de",
+1781 => x"a8085279",
+1782 => x"51fafd3f",
+1783 => x"7951f9b2",
+1784 => x"3ffeba39",
+1785 => x"81778c17",
+1786 => x"0c778817",
+1787 => x"0c758c19",
+1788 => x"0c758819",
+1789 => x"0c59fd80",
+1790 => x"39831470",
+1791 => x"822c8171",
+1792 => x"2b80deb4",
+1793 => x"080780de",
+1794 => x"b00b8405",
+1795 => x"0c751010",
+1796 => x"1080deb0",
+1797 => x"05881108",
+1798 => x"718c1c0c",
+1799 => x"70881c0c",
+1800 => x"7a88130c",
+1801 => x"575b5653",
+1802 => x"fee43980",
+1803 => x"7324a338",
+1804 => x"72822c81",
+1805 => x"712b80de",
+1806 => x"b4080780",
+1807 => x"deb00b84",
+1808 => x"050c5874",
+1809 => x"8c180c73",
+1810 => x"88180c76",
+1811 => x"88160cfd",
+1812 => x"c3398313",
+1813 => x"70822c81",
+1814 => x"712b80de",
+1815 => x"b4080780",
+1816 => x"deb00b84",
+1817 => x"050c5953",
+1818 => x"da39fe3d",
+1819 => x"0d81bdfc",
+1820 => x"0851708a",
+1821 => x"3881be84",
+1822 => x"7081bdfc",
+1823 => x"0c517411",
+1824 => x"52ff5371",
+1825 => x"87fb8080",
+1826 => x"26883871",
+1827 => x"81bdfc0c",
+1828 => x"70537280",
+1829 => x"0c843d0d",
+1830 => x"04fd3d0d",
+1831 => x"800b80dd",
+1832 => x"e0085454",
+1833 => x"72812e9b",
+1834 => x"387381be",
+1835 => x"800ccff1",
+1836 => x"3fcecd3f",
+1837 => x"80edb852",
+1838 => x"8151d8db",
+1839 => x"3f800851",
+1840 => x"899d3f72",
+1841 => x"81be800c",
+1842 => x"cfd73fce",
+1843 => x"b33f80ed",
+1844 => x"b8528151",
+1845 => x"d8c13f80",
+1846 => x"08518983",
+1847 => x"3f00ff39",
+1848 => x"00ff39f5",
+1849 => x"3d0d7e60",
+1850 => x"81be8008",
+1851 => x"705b585b",
+1852 => x"5b7580c2",
+1853 => x"38777a25",
+1854 => x"a138771b",
+1855 => x"70337081",
+1856 => x"ff065858",
+1857 => x"59758a2e",
+1858 => x"98387681",
+1859 => x"ff0651ce",
+1860 => x"ef3f8118",
+1861 => x"58797824",
+1862 => x"e1387980",
+1863 => x"0c8d3d0d",
+1864 => x"048d51ce",
+1865 => x"db3f7833",
+1866 => x"7081ff06",
+1867 => x"5257ced0",
+1868 => x"3f811858",
+1869 => x"e0397955",
+1870 => x"7a547d53",
+1871 => x"85528d3d",
+1872 => x"fc0551cd",
+1873 => x"fd3f8008",
+1874 => x"56888d3f",
+1875 => x"7b80080c",
+1876 => x"75800c8d",
+1877 => x"3d0d04f6",
+1878 => x"3d0d7d7f",
+1879 => x"81be8008",
+1880 => x"705a585a",
+1881 => x"5a7580c3",
+1882 => x"38767925",
+1883 => x"b138761a",
+1884 => x"58cded3f",
+1885 => x"80087834",
+1886 => x"800b8008",
+1887 => x"81ff0657",
+1888 => x"58758a2e",
+1889 => x"a238758d",
+1890 => x"32703070",
+1891 => x"80257a07",
+1892 => x"51515675",
+1893 => x"b7388117",
+1894 => x"57787724",
+1895 => x"d1387656",
+1896 => x"75800c8c",
+1897 => x"3d0d0481",
+1898 => x"58dc3978",
+1899 => x"5579547c",
+1900 => x"5384528c",
+1901 => x"3dfc0551",
+1902 => x"cd883f80",
+1903 => x"08568798",
+1904 => x"3f7a8008",
+1905 => x"0c75800c",
+1906 => x"8c3d0d04",
+1907 => x"811756d0",
+1908 => x"39f93d0d",
+1909 => x"795781be",
+1910 => x"8008802e",
+1911 => x"ac387651",
+1912 => x"89ab3f7b",
+1913 => x"567a5580",
+1914 => x"08810554",
+1915 => x"76538252",
+1916 => x"893dfc05",
+1917 => x"51cccb3f",
+1918 => x"80085786",
+1919 => x"db3f7780",
+1920 => x"080c7680",
+1921 => x"0c893d0d",
+1922 => x"0486cd3f",
+1923 => x"850b8008",
+1924 => x"0cff0b80",
+1925 => x"0c893d0d",
+1926 => x"04fb3d0d",
+1927 => x"81be8008",
+1928 => x"70565473",
+1929 => x"88387480",
+1930 => x"0c873d0d",
+1931 => x"04775383",
+1932 => x"52873dfc",
+1933 => x"0551cc8a",
+1934 => x"3f800854",
+1935 => x"869a3f75",
+1936 => x"80080c73",
+1937 => x"800c873d",
+1938 => x"0d04ff0b",
+1939 => x"800c04fb",
+1940 => x"3d0d7755",
+1941 => x"81be8008",
+1942 => x"802ea838",
+1943 => x"745188ad",
+1944 => x"3f800881",
+1945 => x"05547453",
+1946 => x"8752873d",
+1947 => x"fc0551cb",
+1948 => x"d13f8008",
+1949 => x"5585e13f",
+1950 => x"7580080c",
+1951 => x"74800c87",
+1952 => x"3d0d0485",
+1953 => x"d33f850b",
+1954 => x"80080cff",
+1955 => x"0b800c87",
+1956 => x"3d0d04fa",
+1957 => x"3d0d81be",
+1958 => x"8008802e",
+1959 => x"a2387a55",
+1960 => x"79547853",
+1961 => x"8652883d",
+1962 => x"fc0551cb",
+1963 => x"953f8008",
+1964 => x"5685a53f",
+1965 => x"7680080c",
+1966 => x"75800c88",
+1967 => x"3d0d0485",
+1968 => x"973f9d0b",
+1969 => x"80080cff",
+1970 => x"0b800c88",
+1971 => x"3d0d04f7",
+1972 => x"3d0d7b7d",
+1973 => x"5b59bc53",
+1974 => x"80527951",
+1975 => x"86a53f80",
+1976 => x"70565798",
+1977 => x"56741970",
+1978 => x"3370782b",
+1979 => x"79078118",
+1980 => x"f81a5a58",
+1981 => x"59555884",
+1982 => x"7524ea38",
+1983 => x"767a2384",
+1984 => x"19588070",
+1985 => x"56579856",
+1986 => x"74187033",
+1987 => x"70782b79",
+1988 => x"078118f8",
+1989 => x"1a5a5859",
+1990 => x"51548475",
+1991 => x"24ea3876",
+1992 => x"821b2388",
+1993 => x"19588070",
+1994 => x"56579856",
+1995 => x"74187033",
+1996 => x"70782b79",
+1997 => x"078118f8",
+1998 => x"1a5a5859",
+1999 => x"51548475",
+2000 => x"24ea3876",
+2001 => x"841b0c8c",
+2002 => x"19588070",
+2003 => x"56579856",
+2004 => x"74187033",
+2005 => x"70782b79",
+2006 => x"078118f8",
+2007 => x"1a5a5859",
+2008 => x"51548475",
+2009 => x"24ea3876",
+2010 => x"881b2390",
+2011 => x"19588070",
+2012 => x"56579856",
+2013 => x"74187033",
+2014 => x"70782b79",
+2015 => x"078118f8",
+2016 => x"1a5a5859",
+2017 => x"51548475",
+2018 => x"24ea3876",
+2019 => x"8a1b2394",
+2020 => x"19588070",
+2021 => x"56579856",
+2022 => x"74187033",
+2023 => x"70782b79",
+2024 => x"078118f8",
+2025 => x"1a5a5859",
+2026 => x"51548475",
+2027 => x"24ea3876",
+2028 => x"8c1b2398",
+2029 => x"19588070",
+2030 => x"56579856",
+2031 => x"74187033",
+2032 => x"70782b79",
+2033 => x"078118f8",
+2034 => x"1a5a5859",
+2035 => x"51548475",
+2036 => x"24ea3876",
+2037 => x"8e1b239c",
+2038 => x"19588070",
+2039 => x"5657b856",
+2040 => x"74187033",
+2041 => x"70782b79",
+2042 => x"078118f8",
+2043 => x"1a5a5859",
+2044 => x"5a548875",
+2045 => x"24ea3876",
+2046 => x"901b0c8b",
+2047 => x"3d0d04e9",
+2048 => x"3d0d6a81",
+2049 => x"be800857",
+2050 => x"57759338",
+2051 => x"80c0800b",
+2052 => x"84180c75",
+2053 => x"ac180c75",
+2054 => x"800c993d",
+2055 => x"0d04893d",
+2056 => x"70556a54",
+2057 => x"558a5299",
+2058 => x"3dffbc05",
+2059 => x"51c8933f",
+2060 => x"80087753",
+2061 => x"755256fd",
+2062 => x"963f829c",
+2063 => x"3f778008",
+2064 => x"0c75800c",
+2065 => x"993d0d04",
+2066 => x"e93d0d69",
+2067 => x"5781be80",
+2068 => x"08802eb5",
+2069 => x"38765184",
+2070 => x"b43f893d",
+2071 => x"70568008",
+2072 => x"81055577",
+2073 => x"54568f52",
+2074 => x"993dffbc",
+2075 => x"0551c7d2",
+2076 => x"3f80086b",
+2077 => x"53765257",
+2078 => x"fcd53f81",
+2079 => x"db3f7780",
+2080 => x"080c7680",
+2081 => x"0c993d0d",
+2082 => x"0481cd3f",
+2083 => x"850b8008",
+2084 => x"0cff0b80",
+2085 => x"0c993d0d",
+2086 => x"04fc3d0d",
+2087 => x"815481be",
+2088 => x"80088838",
+2089 => x"73800c86",
+2090 => x"3d0d0476",
+2091 => x"5397b952",
+2092 => x"863dfc05",
+2093 => x"51c78b3f",
+2094 => x"80085481",
+2095 => x"9b3f7480",
+2096 => x"080c7380",
+2097 => x"0c863d0d",
+2098 => x"04f43d0d",
+2099 => x"7e80ede4",
+2100 => x"08700881",
+2101 => x"ff06913d",
+2102 => x"f8055451",
+2103 => x"5959c8b1",
+2104 => x"3f775780",
+2105 => x"5476557b",
+2106 => x"7d585276",
+2107 => x"538e3df0",
+2108 => x"055183f4",
+2109 => x"3f797b58",
+2110 => x"790c7684",
+2111 => x"1a0c7880",
+2112 => x"0c8e3d0d",
+2113 => x"04f43d0d",
+2114 => x"7e80ede4",
+2115 => x"08700870",
+2116 => x"81ff0692",
+2117 => x"3df80555",
+2118 => x"515a5759",
+2119 => x"c7f33f77",
+2120 => x"57800b8b",
+2121 => x"3d595476",
+2122 => x"557b7d58",
+2123 => x"52765377",
+2124 => x"5183b53f",
+2125 => x"8056bd84",
+2126 => x"c0765555",
+2127 => x"797b5852",
+2128 => x"76537751",
+2129 => x"83a23f7a",
+2130 => x"5778802e",
+2131 => x"84387679",
+2132 => x"0c76800c",
+2133 => x"8e3d0d04",
+2134 => x"80e6b808",
+2135 => x"800c04f7",
+2136 => x"3d0d7b80",
+2137 => x"e6b80882",
+2138 => x"c811085a",
+2139 => x"545a7780",
+2140 => x"2e80da38",
+2141 => x"81881884",
+2142 => x"1908ff05",
+2143 => x"81712b59",
+2144 => x"55598074",
+2145 => x"2480ea38",
+2146 => x"807424b5",
+2147 => x"3873822b",
+2148 => x"78118805",
+2149 => x"56568180",
+2150 => x"19087706",
+2151 => x"5372802e",
+2152 => x"b6387816",
+2153 => x"70085353",
+2154 => x"79517408",
+2155 => x"53722dff",
+2156 => x"14fc17fc",
+2157 => x"1779812c",
+2158 => x"5a575754",
+2159 => x"738025d6",
+2160 => x"38770858",
+2161 => x"77ffad38",
+2162 => x"80e6b808",
+2163 => x"53bc1308",
+2164 => x"a5387951",
+2165 => x"f6873f74",
+2166 => x"0853722d",
+2167 => x"ff14fc17",
+2168 => x"fc177981",
+2169 => x"2c5a5757",
+2170 => x"54738025",
+2171 => x"ffa838d1",
+2172 => x"398057ff",
+2173 => x"93397251",
+2174 => x"bc130854",
+2175 => x"732d7951",
+2176 => x"f5db3ffb",
+2177 => x"3d0d777a",
+2178 => x"71028c05",
+2179 => x"a3053358",
+2180 => x"54545683",
+2181 => x"732780d4",
+2182 => x"38758306",
+2183 => x"517080cc",
+2184 => x"3874882b",
+2185 => x"75077071",
+2186 => x"902b0755",
+2187 => x"518f7327",
+2188 => x"a7387372",
+2189 => x"70840554",
+2190 => x"0c717471",
+2191 => x"70840553",
+2192 => x"0c747170",
+2193 => x"8405530c",
+2194 => x"74717084",
+2195 => x"05530cf0",
+2196 => x"14545272",
+2197 => x"8f26db38",
+2198 => x"83732790",
+2199 => x"38737270",
+2200 => x"8405540c",
+2201 => x"fc135372",
+2202 => x"8326f238",
+2203 => x"ff135170",
+2204 => x"ff2e9338",
+2205 => x"74727081",
+2206 => x"055434ff",
+2207 => x"115170ff",
+2208 => x"2e098106",
+2209 => x"ef387580",
+2210 => x"0c873d0d",
+2211 => x"04fd3d0d",
+2212 => x"75707183",
+2213 => x"06535552",
+2214 => x"70b43871",
+2215 => x"70087009",
+2216 => x"f7fbfdff",
+2217 => x"1206f884",
+2218 => x"82818006",
+2219 => x"54525371",
+2220 => x"9b388413",
+2221 => x"70087009",
+2222 => x"f7fbfdff",
+2223 => x"1206f884",
+2224 => x"82818006",
+2225 => x"54525371",
+2226 => x"802ee738",
+2227 => x"72527133",
+2228 => x"5372802e",
+2229 => x"8a388112",
+2230 => x"70335452",
+2231 => x"72f83871",
+2232 => x"7431800c",
+2233 => x"853d0d04",
+2234 => x"e43d0d6e",
+2235 => x"a13d08a3",
+2236 => x"3d085957",
+2237 => x"5f80764d",
+2238 => x"774ea33d",
+2239 => x"08a53d08",
+2240 => x"574b754c",
+2241 => x"5e7d6c24",
+2242 => x"86fb3880",
+2243 => x"6a24878f",
+2244 => x"38696b58",
+2245 => x"566b6d5d",
+2246 => x"467b4775",
+2247 => x"44764564",
+2248 => x"6468685c",
+2249 => x"5c565674",
+2250 => x"81e73878",
+2251 => x"762782c7",
+2252 => x"387581ff",
+2253 => x"26832b55",
+2254 => x"83ffff76",
+2255 => x"278c3890",
+2256 => x"55fe800a",
+2257 => x"76278338",
+2258 => x"98557575",
+2259 => x"2a80dbcc",
+2260 => x"057033a0",
+2261 => x"77317131",
+2262 => x"57555774",
+2263 => x"802e9538",
+2264 => x"75752ba0",
+2265 => x"76317a77",
+2266 => x"2b7c722a",
+2267 => x"077c782b",
+2268 => x"5d5b5956",
+2269 => x"75902a76",
+2270 => x"83ffff06",
+2271 => x"71547a53",
+2272 => x"59578880",
+2273 => x"3f80085b",
+2274 => x"87ea3f80",
+2275 => x"08800879",
+2276 => x"297c902b",
+2277 => x"7c902a07",
+2278 => x"56565973",
+2279 => x"75279438",
+2280 => x"8008ff05",
+2281 => x"76155559",
+2282 => x"75742687",
+2283 => x"38747426",
+2284 => x"87b93876",
+2285 => x"52737531",
+2286 => x"5187c93f",
+2287 => x"80085587",
+2288 => x"b33f8008",
+2289 => x"80087929",
+2290 => x"7b83ffff",
+2291 => x"0677902b",
+2292 => x"07565957",
+2293 => x"73782796",
+2294 => x"388008ff",
+2295 => x"05761555",
+2296 => x"57757426",
+2297 => x"89387774",
+2298 => x"26777131",
+2299 => x"58567890",
+2300 => x"2b770758",
+2301 => x"805b7a40",
+2302 => x"77417f61",
+2303 => x"56547d80",
+2304 => x"d938737f",
+2305 => x"0c747f84",
+2306 => x"050c7e80",
+2307 => x"0c9e3d0d",
+2308 => x"0480705c",
+2309 => x"58747926",
+2310 => x"dd387481",
+2311 => x"ff26832b",
+2312 => x"577483ff",
+2313 => x"ff2682a5",
+2314 => x"3874772a",
+2315 => x"80dbcc05",
+2316 => x"7033a079",
+2317 => x"31713159",
+2318 => x"5c5d7682",
+2319 => x"b3387654",
+2320 => x"74792783",
+2321 => x"38815479",
+2322 => x"76277407",
+2323 => x"59815878",
+2324 => x"ffa23876",
+2325 => x"58805bff",
+2326 => x"9d397352",
+2327 => x"74539e3d",
+2328 => x"e80551d7",
+2329 => x"ef3f6769",
+2330 => x"567f0c74",
+2331 => x"7f84050c",
+2332 => x"7e800c9e",
+2333 => x"3d0d0475",
+2334 => x"802e81c4",
+2335 => x"387581ff",
+2336 => x"26832b55",
+2337 => x"83ffff76",
+2338 => x"278c3890",
+2339 => x"55fe800a",
+2340 => x"76278338",
+2341 => x"98557575",
+2342 => x"2a80dbcc",
+2343 => x"057033a0",
+2344 => x"77317131",
+2345 => x"575e5474",
+2346 => x"84913878",
+2347 => x"76315481",
+2348 => x"76902a77",
+2349 => x"83ffff06",
+2350 => x"5f5d5b7b",
+2351 => x"52735185",
+2352 => x"c33f8008",
+2353 => x"5785ad3f",
+2354 => x"80088008",
+2355 => x"7e297890",
+2356 => x"2b7c902a",
+2357 => x"07565659",
+2358 => x"73752794",
+2359 => x"388008ff",
+2360 => x"05761555",
+2361 => x"59757426",
+2362 => x"87387474",
+2363 => x"2684f338",
+2364 => x"7b527375",
+2365 => x"3151858c",
+2366 => x"3f800855",
+2367 => x"84f63f80",
+2368 => x"0880087e",
+2369 => x"297b83ff",
+2370 => x"ff067790",
+2371 => x"2b075659",
+2372 => x"57737827",
+2373 => x"96388008",
+2374 => x"ff057615",
+2375 => x"55577574",
+2376 => x"26893877",
+2377 => x"74267771",
+2378 => x"31585a78",
+2379 => x"902b7707",
+2380 => x"7b41417f",
+2381 => x"6156547d",
+2382 => x"802efdc6",
+2383 => x"38fe9b39",
+2384 => x"75528151",
+2385 => x"84ae3f80",
+2386 => x"0856feb1",
+2387 => x"399057fe",
+2388 => x"800a7527",
+2389 => x"fdd33898",
+2390 => x"75712a80",
+2391 => x"dbcc0570",
+2392 => x"33a07331",
+2393 => x"7131535d",
+2394 => x"5e577680",
+2395 => x"2efdcf38",
+2396 => x"a0773175",
+2397 => x"782b7772",
+2398 => x"2a077779",
+2399 => x"2b7b7a2b",
+2400 => x"7d742a07",
+2401 => x"7d7b2b73",
+2402 => x"902a7483",
+2403 => x"ffff0671",
+2404 => x"597f772a",
+2405 => x"585e5c41",
+2406 => x"5f585c54",
+2407 => x"83e63f80",
+2408 => x"085483d0",
+2409 => x"3f800880",
+2410 => x"08792975",
+2411 => x"902b7e90",
+2412 => x"2a075656",
+2413 => x"59737527",
+2414 => x"99388008",
+2415 => x"ff057b15",
+2416 => x"55597a74",
+2417 => x"268c3873",
+2418 => x"75278738",
+2419 => x"ff197b15",
+2420 => x"55597652",
+2421 => x"73753151",
+2422 => x"83aa3f80",
+2423 => x"08558394",
+2424 => x"3f800880",
+2425 => x"0879297d",
+2426 => x"83ffff06",
+2427 => x"77902b07",
+2428 => x"56595773",
+2429 => x"78279938",
+2430 => x"8008ff05",
+2431 => x"7b155557",
+2432 => x"7a74268c",
+2433 => x"38737827",
+2434 => x"8738ff17",
+2435 => x"7b155557",
+2436 => x"73783179",
+2437 => x"902b7807",
+2438 => x"7083ffff",
+2439 => x"0671902a",
+2440 => x"7983ffff",
+2441 => x"067a902a",
+2442 => x"73722973",
+2443 => x"73297473",
+2444 => x"29767429",
+2445 => x"73902a05",
+2446 => x"72055755",
+2447 => x"435f5b58",
+2448 => x"5a57595a",
+2449 => x"747c2786",
+2450 => x"38848080",
+2451 => x"17577490",
+2452 => x"2a177983",
+2453 => x"ffff0676",
+2454 => x"84808029",
+2455 => x"05575776",
+2456 => x"7a269a38",
+2457 => x"767a3270",
+2458 => x"30707207",
+2459 => x"8025565a",
+2460 => x"5b7c7627",
+2461 => x"fafe3873",
+2462 => x"802efaf8",
+2463 => x"38ff1858",
+2464 => x"805bfaf2",
+2465 => x"39ff7653",
+2466 => x"77549f3d",
+2467 => x"e805525e",
+2468 => x"d3c23f67",
+2469 => x"69574c75",
+2470 => x"4d698025",
+2471 => x"f8f3387d",
+2472 => x"096a6c5c",
+2473 => x"537a549f",
+2474 => x"3de80552",
+2475 => x"5ed3a53f",
+2476 => x"6769714c",
+2477 => x"704d5856",
+2478 => x"f8db39a0",
+2479 => x"75317676",
+2480 => x"2b7a772b",
+2481 => x"7c732a07",
+2482 => x"7c782b72",
+2483 => x"902a7383",
+2484 => x"ffff0671",
+2485 => x"587e762a",
+2486 => x"5742405d",
+2487 => x"5d575881",
+2488 => x"a33f8008",
+2489 => x"57818d3f",
+2490 => x"80088008",
+2491 => x"7e297890",
+2492 => x"2b7d902a",
+2493 => x"07565659",
+2494 => x"73752799",
+2495 => x"388008ff",
+2496 => x"05761555",
+2497 => x"59757426",
+2498 => x"8c387375",
+2499 => x"278738ff",
+2500 => x"19761555",
+2501 => x"597b5273",
+2502 => x"75315180",
+2503 => x"e73f8008",
+2504 => x"5580d13f",
+2505 => x"80088008",
+2506 => x"7e297c83",
+2507 => x"ffff0670",
+2508 => x"78902b07",
+2509 => x"51565858",
+2510 => x"73772799",
+2511 => x"388008ff",
+2512 => x"05761555",
+2513 => x"58757426",
+2514 => x"8c387377",
+2515 => x"278738ff",
+2516 => x"18761555",
+2517 => x"5878902b",
+2518 => x"78077478",
+2519 => x"31555bfa",
+2520 => x"da39ff19",
+2521 => x"76155559",
+2522 => x"fb8639ff",
+2523 => x"19761555",
+2524 => x"59f8c039",
+2525 => x"fe3d0d80",
+2526 => x"53755274",
+2527 => x"51d3c63f",
+2528 => x"843d0d04",
+2529 => x"fe3d0d81",
+2530 => x"53755274",
+2531 => x"51d3b63f",
+2532 => x"843d0d04",
+2533 => x"ff3d0d80",
+2534 => x"edc00bfc",
+2535 => x"05700852",
+2536 => x"5270ff2e",
+2537 => x"9138702d",
+2538 => x"fc127008",
+2539 => x"525270ff",
+2540 => x"2e098106",
+2541 => x"f138833d",
+2542 => x"0d0404ff",
+2543 => x"bbe73f04",
+2544 => x"30313233",
+2545 => x"34353637",
+2546 => x"38390000",
+2547 => x"44485259",
+2548 => x"53544f4e",
+2549 => x"45205052",
+2550 => x"4f475241",
+2551 => x"4d2c2053",
+2552 => x"4f4d4520",
+2553 => x"53545249",
+2554 => x"4e470000",
+2555 => x"44485259",
+2556 => x"53544f4e",
+2557 => x"45205052",
+2558 => x"4f475241",
+2559 => x"4d2c2031",
+2560 => x"27535420",
+2561 => x"53545249",
+2562 => x"4e470000",
+2563 => x"44687279",
+2564 => x"73746f6e",
+2565 => x"65204265",
+2566 => x"6e63686d",
+2567 => x"61726b2c",
+2568 => x"20566572",
+2569 => x"73696f6e",
+2570 => x"20322e31",
+2571 => x"20284c61",
+2572 => x"6e677561",
+2573 => x"67653a20",
+2574 => x"43290a00",
+2575 => x"50726f67",
+2576 => x"72616d20",
+2577 => x"636f6d70",
+2578 => x"696c6564",
+2579 => x"20776974",
+2580 => x"68202772",
+2581 => x"65676973",
+2582 => x"74657227",
+2583 => x"20617474",
+2584 => x"72696275",
+2585 => x"74650a00",
+2586 => x"45786563",
+2587 => x"7574696f",
+2588 => x"6e207374",
+2589 => x"61727473",
+2590 => x"2c202564",
+2591 => x"2072756e",
+2592 => x"73207468",
+2593 => x"726f7567",
+2594 => x"68204468",
+2595 => x"72797374",
+2596 => x"6f6e650a",
+2597 => x"00000000",
+2598 => x"44485259",
+2599 => x"53544f4e",
+2600 => x"45205052",
+2601 => x"4f475241",
+2602 => x"4d2c2032",
+2603 => x"274e4420",
+2604 => x"53545249",
+2605 => x"4e470000",
+2606 => x"45786563",
+2607 => x"7574696f",
+2608 => x"6e20656e",
+2609 => x"64730a00",
+2610 => x"46696e61",
+2611 => x"6c207661",
+2612 => x"6c756573",
+2613 => x"206f6620",
+2614 => x"74686520",
+2615 => x"76617269",
+2616 => x"61626c65",
+2617 => x"73207573",
+2618 => x"65642069",
+2619 => x"6e207468",
+2620 => x"65206265",
+2621 => x"6e63686d",
+2622 => x"61726b3a",
+2623 => x"0a000000",
+2624 => x"496e745f",
+2625 => x"476c6f62",
+2626 => x"3a202020",
+2627 => x"20202020",
+2628 => x"20202020",
+2629 => x"2025640a",
+2630 => x"00000000",
+2631 => x"20202020",
+2632 => x"20202020",
+2633 => x"73686f75",
+2634 => x"6c642062",
+2635 => x"653a2020",
+2636 => x"2025640a",
+2637 => x"00000000",
+2638 => x"426f6f6c",
+2639 => x"5f476c6f",
+2640 => x"623a2020",
+2641 => x"20202020",
+2642 => x"20202020",
+2643 => x"2025640a",
+2644 => x"00000000",
+2645 => x"43685f31",
+2646 => x"5f476c6f",
+2647 => x"623a2020",
+2648 => x"20202020",
+2649 => x"20202020",
+2650 => x"2025630a",
+2651 => x"00000000",
+2652 => x"20202020",
+2653 => x"20202020",
+2654 => x"73686f75",
+2655 => x"6c642062",
+2656 => x"653a2020",
+2657 => x"2025630a",
+2658 => x"00000000",
+2659 => x"43685f32",
+2660 => x"5f476c6f",
+2661 => x"623a2020",
+2662 => x"20202020",
+2663 => x"20202020",
+2664 => x"2025630a",
+2665 => x"00000000",
+2666 => x"4172725f",
+2667 => x"315f476c",
+2668 => x"6f625b38",
+2669 => x"5d3a2020",
+2670 => x"20202020",
+2671 => x"2025640a",
+2672 => x"00000000",
+2673 => x"4172725f",
+2674 => x"325f476c",
+2675 => x"6f625b38",
+2676 => x"5d5b375d",
+2677 => x"3a202020",
+2678 => x"2025640a",
+2679 => x"00000000",
+2680 => x"20202020",
+2681 => x"20202020",
+2682 => x"73686f75",
+2683 => x"6c642062",
+2684 => x"653a2020",
+2685 => x"204e756d",
+2686 => x"6265725f",
+2687 => x"4f665f52",
+2688 => x"756e7320",
+2689 => x"2b203130",
+2690 => x"0a000000",
+2691 => x"5074725f",
+2692 => x"476c6f62",
+2693 => x"2d3e0a00",
+2694 => x"20205074",
+2695 => x"725f436f",
+2696 => x"6d703a20",
+2697 => x"20202020",
+2698 => x"20202020",
+2699 => x"2025640a",
+2700 => x"00000000",
+2701 => x"20202020",
+2702 => x"20202020",
+2703 => x"73686f75",
+2704 => x"6c642062",
+2705 => x"653a2020",
+2706 => x"2028696d",
+2707 => x"706c656d",
+2708 => x"656e7461",
+2709 => x"74696f6e",
+2710 => x"2d646570",
+2711 => x"656e6465",
+2712 => x"6e74290a",
+2713 => x"00000000",
+2714 => x"20204469",
+2715 => x"7363723a",
+2716 => x"20202020",
+2717 => x"20202020",
+2718 => x"20202020",
+2719 => x"2025640a",
+2720 => x"00000000",
+2721 => x"2020456e",
+2722 => x"756d5f43",
+2723 => x"6f6d703a",
+2724 => x"20202020",
+2725 => x"20202020",
+2726 => x"2025640a",
+2727 => x"00000000",
+2728 => x"2020496e",
+2729 => x"745f436f",
+2730 => x"6d703a20",
+2731 => x"20202020",
+2732 => x"20202020",
+2733 => x"2025640a",
+2734 => x"00000000",
+2735 => x"20205374",
+2736 => x"725f436f",
+2737 => x"6d703a20",
+2738 => x"20202020",
+2739 => x"20202020",
+2740 => x"2025730a",
+2741 => x"00000000",
+2742 => x"20202020",
+2743 => x"20202020",
+2744 => x"73686f75",
+2745 => x"6c642062",
+2746 => x"653a2020",
+2747 => x"20444852",
+2748 => x"5953544f",
+2749 => x"4e452050",
+2750 => x"524f4752",
+2751 => x"414d2c20",
+2752 => x"534f4d45",
+2753 => x"20535452",
+2754 => x"494e470a",
+2755 => x"00000000",
+2756 => x"4e657874",
+2757 => x"5f507472",
+2758 => x"5f476c6f",
+2759 => x"622d3e0a",
+2760 => x"00000000",
+2761 => x"20202020",
+2762 => x"20202020",
+2763 => x"73686f75",
+2764 => x"6c642062",
+2765 => x"653a2020",
+2766 => x"2028696d",
+2767 => x"706c656d",
+2768 => x"656e7461",
+2769 => x"74696f6e",
+2770 => x"2d646570",
+2771 => x"656e6465",
+2772 => x"6e74292c",
+2773 => x"2073616d",
+2774 => x"65206173",
+2775 => x"2061626f",
+2776 => x"76650a00",
+2777 => x"496e745f",
+2778 => x"315f4c6f",
+2779 => x"633a2020",
+2780 => x"20202020",
+2781 => x"20202020",
+2782 => x"2025640a",
+2783 => x"00000000",
+2784 => x"496e745f",
+2785 => x"325f4c6f",
+2786 => x"633a2020",
+2787 => x"20202020",
+2788 => x"20202020",
+2789 => x"2025640a",
+2790 => x"00000000",
+2791 => x"496e745f",
+2792 => x"335f4c6f",
+2793 => x"633a2020",
+2794 => x"20202020",
+2795 => x"20202020",
+2796 => x"2025640a",
+2797 => x"00000000",
+2798 => x"456e756d",
+2799 => x"5f4c6f63",
+2800 => x"3a202020",
+2801 => x"20202020",
+2802 => x"20202020",
+2803 => x"2025640a",
+2804 => x"00000000",
+2805 => x"5374725f",
+2806 => x"315f4c6f",
+2807 => x"633a2020",
+2808 => x"20202020",
+2809 => x"20202020",
+2810 => x"2025730a",
+2811 => x"00000000",
+2812 => x"20202020",
+2813 => x"20202020",
+2814 => x"73686f75",
+2815 => x"6c642062",
+2816 => x"653a2020",
+2817 => x"20444852",
+2818 => x"5953544f",
+2819 => x"4e452050",
+2820 => x"524f4752",
+2821 => x"414d2c20",
+2822 => x"31275354",
+2823 => x"20535452",
+2824 => x"494e470a",
+2825 => x"00000000",
+2826 => x"5374725f",
+2827 => x"325f4c6f",
+2828 => x"633a2020",
+2829 => x"20202020",
+2830 => x"20202020",
+2831 => x"2025730a",
+2832 => x"00000000",
+2833 => x"20202020",
+2834 => x"20202020",
+2835 => x"73686f75",
+2836 => x"6c642062",
+2837 => x"653a2020",
+2838 => x"20444852",
+2839 => x"5953544f",
+2840 => x"4e452050",
+2841 => x"524f4752",
+2842 => x"414d2c20",
+2843 => x"32274e44",
+2844 => x"20535452",
+2845 => x"494e470a",
+2846 => x"00000000",
+2847 => x"55736572",
+2848 => x"2074696d",
+2849 => x"653a2025",
+2850 => x"640a0000",
+2851 => x"4d696372",
+2852 => x"6f736563",
+2853 => x"6f6e6473",
+2854 => x"20666f72",
+2855 => x"206f6e65",
+2856 => x"2072756e",
+2857 => x"20746872",
+2858 => x"6f756768",
+2859 => x"20446872",
+2860 => x"7973746f",
+2861 => x"6e653a20",
+2862 => x"00000000",
+2863 => x"2564200a",
+2864 => x"00000000",
+2865 => x"44687279",
+2866 => x"73746f6e",
+2867 => x"65732070",
+2868 => x"65722053",
+2869 => x"65636f6e",
+2870 => x"643a2020",
+2871 => x"20202020",
+2872 => x"20202020",
+2873 => x"20202020",
+2874 => x"20202020",
+2875 => x"20202020",
+2876 => x"00000000",
+2877 => x"56415820",
+2878 => x"4d495053",
+2879 => x"20726174",
+2880 => x"696e6720",
+2881 => x"2a203130",
+2882 => x"3030203d",
+2883 => x"20256420",
+2884 => x"0a000000",
+2885 => x"50726f67",
+2886 => x"72616d20",
+2887 => x"636f6d70",
+2888 => x"696c6564",
+2889 => x"20776974",
+2890 => x"686f7574",
+2891 => x"20277265",
+2892 => x"67697374",
+2893 => x"65722720",
+2894 => x"61747472",
+2895 => x"69627574",
+2896 => x"650a0000",
+2897 => x"4d656173",
+2898 => x"75726564",
+2899 => x"2074696d",
+2900 => x"6520746f",
+2901 => x"6f20736d",
+2902 => x"616c6c20",
+2903 => x"746f206f",
+2904 => x"62746169",
+2905 => x"6e206d65",
+2906 => x"616e696e",
+2907 => x"6766756c",
+2908 => x"20726573",
+2909 => x"756c7473",
+2910 => x"0a000000",
+2911 => x"506c6561",
+2912 => x"73652069",
+2913 => x"6e637265",
+2914 => x"61736520",
+2915 => x"6e756d62",
+2916 => x"6572206f",
+2917 => x"66207275",
+2918 => x"6e730a00",
+2919 => x"44485259",
+2920 => x"53544f4e",
+2921 => x"45205052",
+2922 => x"4f475241",
+2923 => x"4d2c2033",
+2924 => x"27524420",
+2925 => x"53545249",
+2926 => x"4e470000",
+2927 => x"43000000",
+2928 => x"64756d6d",
+2929 => x"792e6578",
+2930 => x"65000000",
+2931 => x"00010202",
+2932 => x"03030303",
+2933 => x"04040404",
+2934 => x"04040404",
+2935 => x"05050505",
+2936 => x"05050505",
+2937 => x"05050505",
+2938 => x"05050505",
+2939 => x"06060606",
+2940 => x"06060606",
+2941 => x"06060606",
+2942 => x"06060606",
+2943 => x"06060606",
+2944 => x"06060606",
+2945 => x"06060606",
+2946 => x"06060606",
+2947 => x"07070707",
+2948 => x"07070707",
+2949 => x"07070707",
+2950 => x"07070707",
+2951 => x"07070707",
+2952 => x"07070707",
+2953 => x"07070707",
+2954 => x"07070707",
+2955 => x"07070707",
+2956 => x"07070707",
+2957 => x"07070707",
+2958 => x"07070707",
+2959 => x"07070707",
+2960 => x"07070707",
+2961 => x"07070707",
+2962 => x"07070707",
+2963 => x"08080808",
+2964 => x"08080808",
+2965 => x"08080808",
+2966 => x"08080808",
+2967 => x"08080808",
+2968 => x"08080808",
+2969 => x"08080808",
+2970 => x"08080808",
+2971 => x"08080808",
+2972 => x"08080808",
+2973 => x"08080808",
+2974 => x"08080808",
+2975 => x"08080808",
+2976 => x"08080808",
+2977 => x"08080808",
+2978 => x"08080808",
+2979 => x"08080808",
+2980 => x"08080808",
+2981 => x"08080808",
+2982 => x"08080808",
+2983 => x"08080808",
+2984 => x"08080808",
+2985 => x"08080808",
+2986 => x"08080808",
+2987 => x"08080808",
+2988 => x"08080808",
+2989 => x"08080808",
+2990 => x"08080808",
+2991 => x"08080808",
+2992 => x"08080808",
+2993 => x"08080808",
+2994 => x"08080808",
+2995 => x"00ffffff",
+2996 => x"ff00ffff",
+2997 => x"ffff00ff",
+2998 => x"ffffff00",
+2999 => x"00000000",
+3000 => x"00000000",
+3001 => x"00000000",
+3002 => x"000036c8",
+3003 => x"000927c0",
+3004 => x"00000000",
+3005 => x"00000000",
+3006 => x"00000000",
+3007 => x"00000000",
+3008 => x"00000000",
+3009 => x"00000000",
+3010 => x"00000000",
+3011 => x"00000000",
+3012 => x"00000000",
+3013 => x"00000000",
+3014 => x"00000000",
+3015 => x"00000000",
+3016 => x"00000000",
+3017 => x"ffffffff",
+3018 => x"00000000",
+3019 => x"00020000",
+3020 => x"00000000",
+3021 => x"00000000",
+3022 => x"00002f30",
+3023 => x"00002f30",
+3024 => x"00002f38",
+3025 => x"00002f38",
+3026 => x"00002f40",
+3027 => x"00002f40",
+3028 => x"00002f48",
+3029 => x"00002f48",
+3030 => x"00002f50",
+3031 => x"00002f50",
+3032 => x"00002f58",
+3033 => x"00002f58",
+3034 => x"00002f60",
+3035 => x"00002f60",
+3036 => x"00002f68",
+3037 => x"00002f68",
+3038 => x"00002f70",
+3039 => x"00002f70",
+3040 => x"00002f78",
+3041 => x"00002f78",
+3042 => x"00002f80",
+3043 => x"00002f80",
+3044 => x"00002f88",
+3045 => x"00002f88",
+3046 => x"00002f90",
+3047 => x"00002f90",
+3048 => x"00002f98",
+3049 => x"00002f98",
+3050 => x"00002fa0",
+3051 => x"00002fa0",
+3052 => x"00002fa8",
+3053 => x"00002fa8",
+3054 => x"00002fb0",
+3055 => x"00002fb0",
+3056 => x"00002fb8",
+3057 => x"00002fb8",
+3058 => x"00002fc0",
+3059 => x"00002fc0",
+3060 => x"00002fc8",
+3061 => x"00002fc8",
+3062 => x"00002fd0",
+3063 => x"00002fd0",
+3064 => x"00002fd8",
+3065 => x"00002fd8",
+3066 => x"00002fe0",
+3067 => x"00002fe0",
+3068 => x"00002fe8",
+3069 => x"00002fe8",
+3070 => x"00002ff0",
+3071 => x"00002ff0",
+3072 => x"00002ff8",
+3073 => x"00002ff8",
+3074 => x"00003000",
+3075 => x"00003000",
+3076 => x"00003008",
+3077 => x"00003008",
+3078 => x"00003010",
+3079 => x"00003010",
+3080 => x"00003018",
+3081 => x"00003018",
+3082 => x"00003020",
+3083 => x"00003020",
+3084 => x"00003028",
+3085 => x"00003028",
+3086 => x"00003030",
+3087 => x"00003030",
+3088 => x"00003038",
+3089 => x"00003038",
+3090 => x"00003040",
+3091 => x"00003040",
+3092 => x"00003048",
+3093 => x"00003048",
+3094 => x"00003050",
+3095 => x"00003050",
+3096 => x"00003058",
+3097 => x"00003058",
+3098 => x"00003060",
+3099 => x"00003060",
+3100 => x"00003068",
+3101 => x"00003068",
+3102 => x"00003070",
+3103 => x"00003070",
+3104 => x"00003078",
+3105 => x"00003078",
+3106 => x"00003080",
+3107 => x"00003080",
+3108 => x"00003088",
+3109 => x"00003088",
+3110 => x"00003090",
+3111 => x"00003090",
+3112 => x"00003098",
+3113 => x"00003098",
+3114 => x"000030a0",
+3115 => x"000030a0",
+3116 => x"000030a8",
+3117 => x"000030a8",
+3118 => x"000030b0",
+3119 => x"000030b0",
+3120 => x"000030b8",
+3121 => x"000030b8",
+3122 => x"000030c0",
+3123 => x"000030c0",
+3124 => x"000030c8",
+3125 => x"000030c8",
+3126 => x"000030d0",
+3127 => x"000030d0",
+3128 => x"000030d8",
+3129 => x"000030d8",
+3130 => x"000030e0",
+3131 => x"000030e0",
+3132 => x"000030e8",
+3133 => x"000030e8",
+3134 => x"000030f0",
+3135 => x"000030f0",
+3136 => x"000030f8",
+3137 => x"000030f8",
+3138 => x"00003100",
+3139 => x"00003100",
+3140 => x"00003108",
+3141 => x"00003108",
+3142 => x"00003110",
+3143 => x"00003110",
+3144 => x"00003118",
+3145 => x"00003118",
+3146 => x"00003120",
+3147 => x"00003120",
+3148 => x"00003128",
+3149 => x"00003128",
+3150 => x"00003130",
+3151 => x"00003130",
+3152 => x"00003138",
+3153 => x"00003138",
+3154 => x"00003140",
+3155 => x"00003140",
+3156 => x"00003148",
+3157 => x"00003148",
+3158 => x"00003150",
+3159 => x"00003150",
+3160 => x"00003158",
+3161 => x"00003158",
+3162 => x"00003160",
+3163 => x"00003160",
+3164 => x"00003168",
+3165 => x"00003168",
+3166 => x"00003170",
+3167 => x"00003170",
+3168 => x"00003178",
+3169 => x"00003178",
+3170 => x"00003180",
+3171 => x"00003180",
+3172 => x"00003188",
+3173 => x"00003188",
+3174 => x"00003190",
+3175 => x"00003190",
+3176 => x"00003198",
+3177 => x"00003198",
+3178 => x"000031a0",
+3179 => x"000031a0",
+3180 => x"000031a8",
+3181 => x"000031a8",
+3182 => x"000031b0",
+3183 => x"000031b0",
+3184 => x"000031b8",
+3185 => x"000031b8",
+3186 => x"000031c0",
+3187 => x"000031c0",
+3188 => x"000031c8",
+3189 => x"000031c8",
+3190 => x"000031d0",
+3191 => x"000031d0",
+3192 => x"000031d8",
+3193 => x"000031d8",
+3194 => x"000031e0",
+3195 => x"000031e0",
+3196 => x"000031e8",
+3197 => x"000031e8",
+3198 => x"000031f0",
+3199 => x"000031f0",
+3200 => x"000031f8",
+3201 => x"000031f8",
+3202 => x"00003200",
+3203 => x"00003200",
+3204 => x"00003208",
+3205 => x"00003208",
+3206 => x"00003210",
+3207 => x"00003210",
+3208 => x"00003218",
+3209 => x"00003218",
+3210 => x"00003220",
+3211 => x"00003220",
+3212 => x"00003228",
+3213 => x"00003228",
+3214 => x"00003230",
+3215 => x"00003230",
+3216 => x"00003238",
+3217 => x"00003238",
+3218 => x"00003240",
+3219 => x"00003240",
+3220 => x"00003248",
+3221 => x"00003248",
+3222 => x"00003250",
+3223 => x"00003250",
+3224 => x"00003258",
+3225 => x"00003258",
+3226 => x"00003260",
+3227 => x"00003260",
+3228 => x"00003268",
+3229 => x"00003268",
+3230 => x"00003270",
+3231 => x"00003270",
+3232 => x"00003278",
+3233 => x"00003278",
+3234 => x"00003280",
+3235 => x"00003280",
+3236 => x"00003288",
+3237 => x"00003288",
+3238 => x"00003290",
+3239 => x"00003290",
+3240 => x"00003298",
+3241 => x"00003298",
+3242 => x"000032a0",
+3243 => x"000032a0",
+3244 => x"000032a8",
+3245 => x"000032a8",
+3246 => x"000032b0",
+3247 => x"000032b0",
+3248 => x"000032b8",
+3249 => x"000032b8",
+3250 => x"000032c0",
+3251 => x"000032c0",
+3252 => x"000032c8",
+3253 => x"000032c8",
+3254 => x"000032d0",
+3255 => x"000032d0",
+3256 => x"000032d8",
+3257 => x"000032d8",
+3258 => x"000032e0",
+3259 => x"000032e0",
+3260 => x"000032e8",
+3261 => x"000032e8",
+3262 => x"000032f0",
+3263 => x"000032f0",
+3264 => x"000032f8",
+3265 => x"000032f8",
+3266 => x"00003300",
+3267 => x"00003300",
+3268 => x"00003308",
+3269 => x"00003308",
+3270 => x"00003310",
+3271 => x"00003310",
+3272 => x"00003318",
+3273 => x"00003318",
+3274 => x"00003320",
+3275 => x"00003320",
+3276 => x"00003328",
+3277 => x"00003328",
+3278 => x"0000333c",
+3279 => x"00000000",
+3280 => x"000035a4",
+3281 => x"00003600",
+3282 => x"0000365c",
+3283 => x"00000000",
+3284 => x"00000000",
+3285 => x"00000000",
+3286 => x"00000000",
+3287 => x"00000000",
+3288 => x"00000000",
+3289 => x"00000000",
+3290 => x"00000000",
+3291 => x"00000000",
+3292 => x"00002dbc",
+3293 => x"00000000",
+3294 => x"00000000",
+3295 => x"00000000",
+3296 => x"00000000",
+3297 => x"00000000",
+3298 => x"00000000",
+3299 => x"00000000",
+3300 => x"00000000",
+3301 => x"00000000",
+3302 => x"00000000",
+3303 => x"00000000",
+3304 => x"00000000",
+3305 => x"00000000",
+3306 => x"00000000",
+3307 => x"00000000",
+3308 => x"00000000",
+3309 => x"00000000",
+3310 => x"00000000",
+3311 => x"00000000",
+3312 => x"00000000",
+3313 => x"00000000",
+3314 => x"00000000",
+3315 => x"00000000",
+3316 => x"00000000",
+3317 => x"00000000",
+3318 => x"00000000",
+3319 => x"00000000",
+3320 => x"00000000",
+3321 => x"00000001",
+3322 => x"330eabcd",
+3323 => x"1234e66d",
+3324 => x"deec0005",
+3325 => x"000b0000",
+3326 => x"00000000",
+3327 => x"00000000",
+3328 => x"00000000",
+3329 => x"00000000",
+3330 => x"00000000",
+3331 => x"00000000",
+3332 => x"00000000",
+3333 => x"00000000",
+3334 => x"00000000",
+3335 => x"00000000",
+3336 => x"00000000",
+3337 => x"00000000",
+3338 => x"00000000",
+3339 => x"00000000",
+3340 => x"00000000",
+3341 => x"00000000",
+3342 => x"00000000",
+3343 => x"00000000",
+3344 => x"00000000",
+3345 => x"00000000",
+3346 => x"00000000",
+3347 => x"00000000",
+3348 => x"00000000",
+3349 => x"00000000",
+3350 => x"00000000",
+3351 => x"00000000",
+3352 => x"00000000",
+3353 => x"00000000",
+3354 => x"00000000",
+3355 => x"00000000",
+3356 => x"00000000",
+3357 => x"00000000",
+3358 => x"00000000",
+3359 => x"00000000",
+3360 => x"00000000",
+3361 => x"00000000",
+3362 => x"00000000",
+3363 => x"00000000",
+3364 => x"00000000",
+3365 => x"00000000",
+3366 => x"00000000",
+3367 => x"00000000",
+3368 => x"00000000",
+3369 => x"00000000",
+3370 => x"00000000",
+3371 => x"00000000",
+3372 => x"00000000",
+3373 => x"00000000",
+3374 => x"00000000",
+3375 => x"00000000",
+3376 => x"00000000",
+3377 => x"00000000",
+3378 => x"00000000",
+3379 => x"00000000",
+3380 => x"00000000",
+3381 => x"00000000",
+3382 => x"00000000",
+3383 => x"00000000",
+3384 => x"00000000",
+3385 => x"00000000",
+3386 => x"00000000",
+3387 => x"00000000",
+3388 => x"00000000",
+3389 => x"00000000",
+3390 => x"00000000",
+3391 => x"00000000",
+3392 => x"00000000",
+3393 => x"00000000",
+3394 => x"00000000",
+3395 => x"00000000",
+3396 => x"00000000",
+3397 => x"00000000",
+3398 => x"00000000",
+3399 => x"00000000",
+3400 => x"00000000",
+3401 => x"00000000",
+3402 => x"00000000",
+3403 => x"00000000",
+3404 => x"00000000",
+3405 => x"00000000",
+3406 => x"00000000",
+3407 => x"00000000",
+3408 => x"00000000",
+3409 => x"00000000",
+3410 => x"00000000",
+3411 => x"00000000",
+3412 => x"00000000",
+3413 => x"00000000",
+3414 => x"00000000",
+3415 => x"00000000",
+3416 => x"00000000",
+3417 => x"00000000",
+3418 => x"00000000",
+3419 => x"00000000",
+3420 => x"00000000",
+3421 => x"00000000",
+3422 => x"00000000",
+3423 => x"00000000",
+3424 => x"00000000",
+3425 => x"00000000",
+3426 => x"00000000",
+3427 => x"00000000",
+3428 => x"00000000",
+3429 => x"00000000",
+3430 => x"00000000",
+3431 => x"00000000",
+3432 => x"00000000",
+3433 => x"00000000",
+3434 => x"00000000",
+3435 => x"00000000",
+3436 => x"00000000",
+3437 => x"00000000",
+3438 => x"00000000",
+3439 => x"00000000",
+3440 => x"00000000",
+3441 => x"00000000",
+3442 => x"00000000",
+3443 => x"00000000",
+3444 => x"00000000",
+3445 => x"00000000",
+3446 => x"00000000",
+3447 => x"00000000",
+3448 => x"00000000",
+3449 => x"00000000",
+3450 => x"00000000",
+3451 => x"00000000",
+3452 => x"00000000",
+3453 => x"00000000",
+3454 => x"00000000",
+3455 => x"00000000",
+3456 => x"00000000",
+3457 => x"00000000",
+3458 => x"00000000",
+3459 => x"00000000",
+3460 => x"00000000",
+3461 => x"00000000",
+3462 => x"00000000",
+3463 => x"00000000",
+3464 => x"00000000",
+3465 => x"00000000",
+3466 => x"00000000",
+3467 => x"00000000",
+3468 => x"00000000",
+3469 => x"00000000",
+3470 => x"00000000",
+3471 => x"00000000",
+3472 => x"00000000",
+3473 => x"00000000",
+3474 => x"00000000",
+3475 => x"00000000",
+3476 => x"00000000",
+3477 => x"00000000",
+3478 => x"00000000",
+3479 => x"00000000",
+3480 => x"00000000",
+3481 => x"00000000",
+3482 => x"00000000",
+3483 => x"00000000",
+3484 => x"00000000",
+3485 => x"00000000",
+3486 => x"00000000",
+3487 => x"00000000",
+3488 => x"00000000",
+3489 => x"00000000",
+3490 => x"00000000",
+3491 => x"00000000",
+3492 => x"00000000",
+3493 => x"00000000",
+3494 => x"00000000",
+3495 => x"00000000",
+3496 => x"00000000",
+3497 => x"00000000",
+3498 => x"00000000",
+3499 => x"00000000",
+3500 => x"00000000",
+3501 => x"00000000",
+3502 => x"00002dc0",
+3503 => x"ffffffff",
+3504 => x"00000000",
+3505 => x"ffffffff",
+3506 => x"00000000",
diff --git a/zpu/hdl/zpu4/test/hello/build.sh b/zpu/hdl/zpu4/test/hello/build.sh
new file mode 100644
index 0000000..0d81138
--- /dev/null
+++ b/zpu/hdl/zpu4/test/hello/build.sh
@@ -0,0 +1,3 @@
+zpu-elf-gcc -O3 -abel `pwd`/hello.c -o hello.elf -Wl,--relax -Wl,--gc-sections -g
+zpu-elf-objdump --disassemble-all >hello.dis hello.elf
+zpu-elf-objcopy -O binary hello.elf hello.bin
diff --git a/zpu/hdl/zpu4/test/hello/hello.bin b/zpu/hdl/zpu4/test/hello/hello.bin
new file mode 100644
index 0000000..fe17308
--- /dev/null
+++ b/zpu/hdl/zpu4/test/hello/hello.bin
Binary files differ
diff --git a/zpu/hdl/zpu4/test/hello/hello.c b/zpu/hdl/zpu4/test/hello/hello.c
new file mode 100644
index 0000000..ea3dbb8
--- /dev/null
+++ b/zpu/hdl/zpu4/test/hello/hello.c
@@ -0,0 +1,51 @@
+/*
+
+zpu-elf-gcc -abel `pwd`/hello.c -o hello.elf -Wl,--relax -Wl,--gc-sections -g
+zpu-elf-objdump --disassemble-all >hello.dis hello.elf
+zpu-elf-objcopy -O binary hello.elf hello.bin
+
+ * */
+#include <stdio.h>
+
+int j;
+int k;
+
+int main(int argc, char **argv)
+{
+ int i;
+ for (i=0; i< 10; i++)
+ {
+ puts("Hello world 1\n");
+ puts("Hello world 2\n");
+ j=-4;
+ if ((j>>1)!=-2)
+ {
+ abort();
+ }
+
+ k=10;
+ if (k*j!=-40)
+ {
+ abort();
+ }
+
+ j=10;
+ k=10000000;
+ if (k*j!=100000000)
+ {
+ abort();
+ }
+
+ j=0x80000000;
+ k=0xffffffff;
+ if (j>k)
+ {
+ abort();
+ }
+ }
+ if (i!=10)
+ {
+ abort();
+ }
+
+}
diff --git a/zpu/hdl/zpu4/test/hello/hello.elf b/zpu/hdl/zpu4/test/hello/hello.elf
new file mode 100644
index 0000000..999b9a3
--- /dev/null
+++ b/zpu/hdl/zpu4/test/hello/hello.elf
Binary files differ
diff --git a/zpu/hdl/zpu4/test/hello/hello.ram b/zpu/hdl/zpu4/test/hello/hello.ram
new file mode 100644
index 0000000..f310151
--- /dev/null
+++ b/zpu/hdl/zpu4/test/hello/hello.ram
@@ -0,0 +1,3165 @@
+0 => x"0b0b0b0b",
+1 => x"80700b0b",
+2 => x"80d3900c",
+3 => x"3a0b0b80",
+4 => x"c8b20400",
+5 => x"00000000",
+6 => x"00000000",
+7 => x"00000000",
+8 => x"80088408",
+9 => x"88080b0b",
+10 => x"80c8fb2d",
+11 => x"880c840c",
+12 => x"800c0400",
+13 => x"00000000",
+14 => x"00000000",
+15 => x"00000000",
+16 => x"71fd0608",
+17 => x"72830609",
+18 => x"81058205",
+19 => x"832b2a83",
+20 => x"ffff0652",
+21 => x"04000000",
+22 => x"00000000",
+23 => x"00000000",
+24 => x"71fd0608",
+25 => x"83ffff73",
+26 => x"83060981",
+27 => x"05820583",
+28 => x"2b2b0906",
+29 => x"7383ffff",
+30 => x"0b0b0b0b",
+31 => x"83a70400",
+32 => x"72098105",
+33 => x"72057373",
+34 => x"09060906",
+35 => x"73097306",
+36 => x"070a8106",
+37 => x"53510400",
+38 => x"00000000",
+39 => x"00000000",
+40 => x"72722473",
+41 => x"732e0753",
+42 => x"51040000",
+43 => x"00000000",
+44 => x"00000000",
+45 => x"00000000",
+46 => x"00000000",
+47 => x"00000000",
+48 => x"71737109",
+49 => x"71068106",
+50 => x"30720a10",
+51 => x"0a720a10",
+52 => x"0a31050a",
+53 => x"81065151",
+54 => x"53510400",
+55 => x"00000000",
+56 => x"72722673",
+57 => x"732e0753",
+58 => x"51040000",
+59 => x"00000000",
+60 => x"00000000",
+61 => x"00000000",
+62 => x"00000000",
+63 => x"00000000",
+64 => x"00000000",
+65 => x"00000000",
+66 => x"00000000",
+67 => x"00000000",
+68 => x"00000000",
+69 => x"00000000",
+70 => x"00000000",
+71 => x"00000000",
+72 => x"0b0b0b88",
+73 => x"c4040000",
+74 => x"00000000",
+75 => x"00000000",
+76 => x"00000000",
+77 => x"00000000",
+78 => x"00000000",
+79 => x"00000000",
+80 => x"720a722b",
+81 => x"0a535104",
+82 => x"00000000",
+83 => x"00000000",
+84 => x"00000000",
+85 => x"00000000",
+86 => x"00000000",
+87 => x"00000000",
+88 => x"72729f06",
+89 => x"0981050b",
+90 => x"0b0b88a7",
+91 => x"05040000",
+92 => x"00000000",
+93 => x"00000000",
+94 => x"00000000",
+95 => x"00000000",
+96 => x"72722aff",
+97 => x"739f062a",
+98 => x"0974090a",
+99 => x"8106ff05",
+100 => x"06075351",
+101 => x"04000000",
+102 => x"00000000",
+103 => x"00000000",
+104 => x"71715351",
+105 => x"020d0406",
+106 => x"73830609",
+107 => x"81058205",
+108 => x"832b0b2b",
+109 => x"0772fc06",
+110 => x"0c515104",
+111 => x"00000000",
+112 => x"72098105",
+113 => x"72050970",
+114 => x"81050906",
+115 => x"0a810653",
+116 => x"51040000",
+117 => x"00000000",
+118 => x"00000000",
+119 => x"00000000",
+120 => x"72098105",
+121 => x"72050970",
+122 => x"81050906",
+123 => x"0a098106",
+124 => x"53510400",
+125 => x"00000000",
+126 => x"00000000",
+127 => x"00000000",
+128 => x"71098105",
+129 => x"52040000",
+130 => x"00000000",
+131 => x"00000000",
+132 => x"00000000",
+133 => x"00000000",
+134 => x"00000000",
+135 => x"00000000",
+136 => x"72720981",
+137 => x"05055351",
+138 => x"04000000",
+139 => x"00000000",
+140 => x"00000000",
+141 => x"00000000",
+142 => x"00000000",
+143 => x"00000000",
+144 => x"72097206",
+145 => x"73730906",
+146 => x"07535104",
+147 => x"00000000",
+148 => x"00000000",
+149 => x"00000000",
+150 => x"00000000",
+151 => x"00000000",
+152 => x"71fc0608",
+153 => x"72830609",
+154 => x"81058305",
+155 => x"1010102a",
+156 => x"81ff0652",
+157 => x"04000000",
+158 => x"00000000",
+159 => x"00000000",
+160 => x"71fc0608",
+161 => x"0b0b80d2",
+162 => x"fc738306",
+163 => x"10100508",
+164 => x"060b0b0b",
+165 => x"88aa0400",
+166 => x"00000000",
+167 => x"00000000",
+168 => x"80088408",
+169 => x"88087575",
+170 => x"0b0b0b8d",
+171 => x"872d5050",
+172 => x"80085688",
+173 => x"0c840c80",
+174 => x"0c510400",
+175 => x"00000000",
+176 => x"80088408",
+177 => x"88087575",
+178 => x"0b0b0b8d",
+179 => x"cb2d5050",
+180 => x"80085688",
+181 => x"0c840c80",
+182 => x"0c510400",
+183 => x"00000000",
+184 => x"72097081",
+185 => x"0509060a",
+186 => x"8106ff05",
+187 => x"70547106",
+188 => x"73097274",
+189 => x"05ff0506",
+190 => x"07515151",
+191 => x"04000000",
+192 => x"72097081",
+193 => x"0509060a",
+194 => x"098106ff",
+195 => x"05705471",
+196 => x"06730972",
+197 => x"7405ff05",
+198 => x"06075151",
+199 => x"51040000",
+200 => x"05ff0504",
+201 => x"00000000",
+202 => x"00000000",
+203 => x"00000000",
+204 => x"00000000",
+205 => x"00000000",
+206 => x"00000000",
+207 => x"00000000",
+208 => x"810b0b0b",
+209 => x"80d38c0c",
+210 => x"51040000",
+211 => x"00000000",
+212 => x"00000000",
+213 => x"00000000",
+214 => x"00000000",
+215 => x"00000000",
+216 => x"71810552",
+217 => x"04000000",
+218 => x"00000000",
+219 => x"00000000",
+220 => x"00000000",
+221 => x"00000000",
+222 => x"00000000",
+223 => x"00000000",
+224 => x"00000000",
+225 => x"00000000",
+226 => x"00000000",
+227 => x"00000000",
+228 => x"00000000",
+229 => x"00000000",
+230 => x"00000000",
+231 => x"00000000",
+232 => x"02840572",
+233 => x"10100552",
+234 => x"04000000",
+235 => x"00000000",
+236 => x"00000000",
+237 => x"00000000",
+238 => x"00000000",
+239 => x"00000000",
+240 => x"00000000",
+241 => x"00000000",
+242 => x"00000000",
+243 => x"00000000",
+244 => x"00000000",
+245 => x"00000000",
+246 => x"00000000",
+247 => x"00000000",
+248 => x"717105ff",
+249 => x"05715351",
+250 => x"020d0400",
+251 => x"00000000",
+252 => x"00000000",
+253 => x"00000000",
+254 => x"00000000",
+255 => x"00000000",
+256 => x"83d93f80",
+257 => x"ca953f04",
+258 => x"10101010",
+259 => x"10101010",
+260 => x"10101010",
+261 => x"10101010",
+262 => x"10101010",
+263 => x"10101010",
+264 => x"10101010",
+265 => x"10101053",
+266 => x"51047381",
+267 => x"ff067383",
+268 => x"06098105",
+269 => x"83051010",
+270 => x"102b0772",
+271 => x"fc060c51",
+272 => x"51043c04",
+273 => x"72728072",
+274 => x"8106ff05",
+275 => x"09720605",
+276 => x"71105272",
+277 => x"0a100a53",
+278 => x"72ed3851",
+279 => x"51535104",
+280 => x"ff3d0d0b",
+281 => x"0b80e2f8",
+282 => x"08528412",
+283 => x"08708106",
+284 => x"515170f6",
+285 => x"38710881",
+286 => x"ff06800c",
+287 => x"833d0d04",
+288 => x"ff3d0d0b",
+289 => x"0b80e2f8",
+290 => x"08528412",
+291 => x"08700a10",
+292 => x"0a708106",
+293 => x"51515170",
+294 => x"f1387372",
+295 => x"0c833d0d",
+296 => x"0480d38c",
+297 => x"08802ea8",
+298 => x"38838080",
+299 => x"0b0b0b80",
+300 => x"e2f80c82",
+301 => x"a0800b0b",
+302 => x"0b80e2fc",
+303 => x"0c829080",
+304 => x"0b80e38c",
+305 => x"0c0b0b80",
+306 => x"e3800b80",
+307 => x"e3900c04",
+308 => x"f8808080",
+309 => x"a40b0b0b",
+310 => x"80e2f80c",
+311 => x"f8808082",
+312 => x"800b0b0b",
+313 => x"80e2fc0c",
+314 => x"f8808084",
+315 => x"800b80e3",
+316 => x"8c0cf880",
+317 => x"8080940b",
+318 => x"80e3900c",
+319 => x"f8808080",
+320 => x"9c0b80e3",
+321 => x"880cf880",
+322 => x"8080a00b",
+323 => x"80e3940c",
+324 => x"04f23d0d",
+325 => x"600b0b80",
+326 => x"e2fc0856",
+327 => x"5d82750c",
+328 => x"8059805a",
+329 => x"800b8f3d",
+330 => x"71101017",
+331 => x"70085957",
+332 => x"5d5b8076",
+333 => x"81ff067c",
+334 => x"832b5658",
+335 => x"5276537b",
+336 => x"5181fa3f",
+337 => x"7d7f7a72",
+338 => x"077c7207",
+339 => x"71716081",
+340 => x"05415f5d",
+341 => x"5b595755",
+342 => x"7a8724bb",
+343 => x"380b0b80",
+344 => x"e2fc087b",
+345 => x"10101170",
+346 => x"08585155",
+347 => x"807681ff",
+348 => x"067c832b",
+349 => x"56585276",
+350 => x"537b5181",
+351 => x"c03f7d7f",
+352 => x"7a72077c",
+353 => x"72077171",
+354 => x"60810541",
+355 => x"5f5d5b59",
+356 => x"5755877b",
+357 => x"25c73876",
+358 => x"7d0c7784",
+359 => x"1e0c7c80",
+360 => x"0c903d0d",
+361 => x"04ff3d0d",
+362 => x"80e38433",
+363 => x"5170a738",
+364 => x"80d39808",
+365 => x"70085252",
+366 => x"70802e94",
+367 => x"38841280",
+368 => x"d3980c70",
+369 => x"2d80d398",
+370 => x"08700852",
+371 => x"5270ee38",
+372 => x"810b80e3",
+373 => x"8434833d",
+374 => x"0d040480",
+375 => x"3d0d0b0b",
+376 => x"80e2f408",
+377 => x"802e8e38",
+378 => x"0b0b0b0b",
+379 => x"800b802e",
+380 => x"09810685",
+381 => x"38823d0d",
+382 => x"040b0b80",
+383 => x"e2f4510b",
+384 => x"0b0bf3fc",
+385 => x"3f823d0d",
+386 => x"0404fe3d",
+387 => x"0d89530b",
+388 => x"0b80d2c8",
+389 => x"51838d3f",
+390 => x"0b0b80d2",
+391 => x"d8518384",
+392 => x"3f810a0b",
+393 => x"80e3980c",
+394 => x"ff0b80e3",
+395 => x"9c0cff13",
+396 => x"53728025",
+397 => x"da387280",
+398 => x"0c843d0d",
+399 => x"04f93d0d",
+400 => x"797b7d7f",
+401 => x"56545254",
+402 => x"72802ea0",
+403 => x"38705771",
+404 => x"58a07331",
+405 => x"52807225",
+406 => x"a1387770",
+407 => x"742b5770",
+408 => x"732a7875",
+409 => x"2b075651",
+410 => x"74765351",
+411 => x"70740c71",
+412 => x"84150c73",
+413 => x"800c893d",
+414 => x"0d048056",
+415 => x"7772302b",
+416 => x"55747653",
+417 => x"51e639fb",
+418 => x"3d0d7779",
+419 => x"55558056",
+420 => x"757524ab",
+421 => x"38807424",
+422 => x"9d388053",
+423 => x"73527451",
+424 => x"80e13f80",
+425 => x"08547580",
+426 => x"2e853880",
+427 => x"08305473",
+428 => x"800c873d",
+429 => x"0d047330",
+430 => x"76813257",
+431 => x"54dc3974",
+432 => x"30558156",
+433 => x"738025d2",
+434 => x"38ec39fa",
+435 => x"3d0d787a",
+436 => x"57558057",
+437 => x"767524a4",
+438 => x"38759f2c",
+439 => x"54815375",
+440 => x"74327431",
+441 => x"5274519b",
+442 => x"3f800854",
+443 => x"76802e85",
+444 => x"38800830",
+445 => x"5473800c",
+446 => x"883d0d04",
+447 => x"74305581",
+448 => x"57d739fc",
+449 => x"3d0d7678",
+450 => x"53548153",
+451 => x"80747326",
+452 => x"52557280",
+453 => x"2e983870",
+454 => x"802eab38",
+455 => x"807224a6",
+456 => x"38711073",
+457 => x"10757226",
+458 => x"53545272",
+459 => x"ea387351",
+460 => x"78833874",
+461 => x"5170800c",
+462 => x"863d0d04",
+463 => x"720a100a",
+464 => x"720a100a",
+465 => x"53537280",
+466 => x"2ee43871",
+467 => x"7426ed38",
+468 => x"73723175",
+469 => x"7407740a",
+470 => x"100a740a",
+471 => x"100a5555",
+472 => x"5654e339",
+473 => x"f73d0d7c",
+474 => x"70525380",
+475 => x"f93f7254",
+476 => x"80085580",
+477 => x"d2e85681",
+478 => x"57800881",
+479 => x"055a8b3d",
+480 => x"e4115953",
+481 => x"8259f413",
+482 => x"527b8811",
+483 => x"08525381",
+484 => x"b03f8008",
+485 => x"30708008",
+486 => x"079f2c8a",
+487 => x"07800c53",
+488 => x"8b3d0d04",
+489 => x"f63d0d7c",
+490 => x"80d39c08",
+491 => x"71535553",
+492 => x"b53f7255",
+493 => x"80085680",
+494 => x"d2e85781",
+495 => x"58800881",
+496 => x"055b8c3d",
+497 => x"e4115a53",
+498 => x"825af413",
+499 => x"52881408",
+500 => x"5180ee3f",
+501 => x"80083070",
+502 => x"8008079f",
+503 => x"2c8a0780",
+504 => x"0c548c3d",
+505 => x"0d04fd3d",
+506 => x"0d757071",
+507 => x"83065355",
+508 => x"5270b438",
+509 => x"71700870",
+510 => x"09f7fbfd",
+511 => x"ff1206f8",
+512 => x"84828180",
+513 => x"06545253",
+514 => x"719b3884",
+515 => x"13700870",
+516 => x"09f7fbfd",
+517 => x"ff1206f8",
+518 => x"84828180",
+519 => x"06545253",
+520 => x"71802ee7",
+521 => x"38725271",
+522 => x"33537280",
+523 => x"2e8a3881",
+524 => x"12703354",
+525 => x"5272f838",
+526 => x"71743180",
+527 => x"0c853d0d",
+528 => x"04f23d0d",
+529 => x"60628811",
+530 => x"08705856",
+531 => x"5f5a7380",
+532 => x"2e818c38",
+533 => x"8c1a2270",
+534 => x"832a8132",
+535 => x"81065658",
+536 => x"74863890",
+537 => x"1a089138",
+538 => x"795190b7",
+539 => x"3fff5580",
+540 => x"0880ec38",
+541 => x"8c1a2258",
+542 => x"7d085580",
+543 => x"7883ffff",
+544 => x"06700a10",
+545 => x"0a810641",
+546 => x"5c577e77",
+547 => x"2e80d738",
+548 => x"76903874",
+549 => x"08841608",
+550 => x"88175758",
+551 => x"5676802e",
+552 => x"f2387654",
+553 => x"88807727",
+554 => x"84388880",
+555 => x"54735375",
+556 => x"529c1a08",
+557 => x"51a41a08",
+558 => x"58772d80",
+559 => x"0b800825",
+560 => x"82e03880",
+561 => x"08167780",
+562 => x"08317f88",
+563 => x"05088008",
+564 => x"31706188",
+565 => x"050c5b58",
+566 => x"5678ffb4",
+567 => x"38805574",
+568 => x"800c903d",
+569 => x"0d047a81",
+570 => x"32810677",
+571 => x"40567580",
+572 => x"2e81bd38",
+573 => x"76903874",
+574 => x"08841608",
+575 => x"88175758",
+576 => x"5976802e",
+577 => x"f238881a",
+578 => x"087883ff",
+579 => x"ff067089",
+580 => x"2a810656",
+581 => x"59567380",
+582 => x"2e82f838",
+583 => x"7577278b",
+584 => x"3877872a",
+585 => x"81065c7b",
+586 => x"82b53876",
+587 => x"76278338",
+588 => x"76567553",
+589 => x"78527908",
+590 => x"5185833f",
+591 => x"881a0876",
+592 => x"31881b0c",
+593 => x"7908167a",
+594 => x"0c765675",
+595 => x"19777731",
+596 => x"7f880508",
+597 => x"78317061",
+598 => x"88050c41",
+599 => x"58597e80",
+600 => x"2efefa38",
+601 => x"8c1a2258",
+602 => x"ff8a3978",
+603 => x"79547c53",
+604 => x"7b525684",
+605 => x"c93f881a",
+606 => x"08793188",
+607 => x"1b0c7908",
+608 => x"197a0c7c",
+609 => x"76315d7c",
+610 => x"8e387951",
+611 => x"8ff23f80",
+612 => x"08818f38",
+613 => x"80085f75",
+614 => x"1c777731",
+615 => x"7f880508",
+616 => x"78317061",
+617 => x"88050c5d",
+618 => x"585c7a80",
+619 => x"2efeae38",
+620 => x"76818338",
+621 => x"74088416",
+622 => x"08881757",
+623 => x"585c7680",
+624 => x"2ef23876",
+625 => x"538a527b",
+626 => x"5182d33f",
+627 => x"80087c31",
+628 => x"81055d80",
+629 => x"08843881",
+630 => x"175d815f",
+631 => x"7c59767d",
+632 => x"27833876",
+633 => x"59941a08",
+634 => x"881b0811",
+635 => x"5758807a",
+636 => x"085c5490",
+637 => x"1a087b27",
+638 => x"83388154",
+639 => x"75792584",
+640 => x"3873ba38",
+641 => x"777924fe",
+642 => x"e2387753",
+643 => x"7b529c1a",
+644 => x"0851a41a",
+645 => x"0859782d",
+646 => x"80085680",
+647 => x"088024fe",
+648 => x"e2388c1a",
+649 => x"2280c007",
+650 => x"5e7d8c1b",
+651 => x"23ff5574",
+652 => x"800c903d",
+653 => x"0d047eff",
+654 => x"a338ff87",
+655 => x"3975537b",
+656 => x"527a5182",
+657 => x"f93f7908",
+658 => x"167a0c79",
+659 => x"518eb13f",
+660 => x"8008cf38",
+661 => x"7c76315d",
+662 => x"7cfebc38",
+663 => x"feac3990",
+664 => x"1a087a08",
+665 => x"71317811",
+666 => x"70565a57",
+667 => x"5280d39c",
+668 => x"08518494",
+669 => x"3f800880",
+670 => x"2effa738",
+671 => x"8008901b",
+672 => x"0c800816",
+673 => x"7a0c7794",
+674 => x"1b0c7688",
+675 => x"1b0c7656",
+676 => x"fd993979",
+677 => x"0858901a",
+678 => x"08782783",
+679 => x"38815475",
+680 => x"77278438",
+681 => x"73b33894",
+682 => x"1a085473",
+683 => x"772680d3",
+684 => x"38735378",
+685 => x"529c1a08",
+686 => x"51a41a08",
+687 => x"58772d80",
+688 => x"08568008",
+689 => x"8024fd83",
+690 => x"388c1a22",
+691 => x"80c0075e",
+692 => x"7d8c1b23",
+693 => x"ff55fed7",
+694 => x"39755378",
+695 => x"52775181",
+696 => x"dd3f7908",
+697 => x"167a0c79",
+698 => x"518d953f",
+699 => x"8008802e",
+700 => x"fcd9388c",
+701 => x"1a2280c0",
+702 => x"075e7d8c",
+703 => x"1b23ff55",
+704 => x"fead3976",
+705 => x"77547953",
+706 => x"78525681",
+707 => x"b13f881a",
+708 => x"08773188",
+709 => x"1b0c7908",
+710 => x"177a0cfc",
+711 => x"ae39fa3d",
+712 => x"0d7a7902",
+713 => x"8805a705",
+714 => x"33555354",
+715 => x"83742780",
+716 => x"df387183",
+717 => x"06517080",
+718 => x"d7387171",
+719 => x"57558351",
+720 => x"75828029",
+721 => x"13ff1252",
+722 => x"56708025",
+723 => x"f3388374",
+724 => x"27bc3874",
+725 => x"08763270",
+726 => x"09f7fbfd",
+727 => x"ff1206f8",
+728 => x"84828180",
+729 => x"06515170",
+730 => x"802e9838",
+731 => x"74518052",
+732 => x"70335772",
+733 => x"772eb938",
+734 => x"81118113",
+735 => x"53518372",
+736 => x"27ee38fc",
+737 => x"14841656",
+738 => x"54738326",
+739 => x"c6387452",
+740 => x"ff145170",
+741 => x"ff2e9738",
+742 => x"71335472",
+743 => x"742e9838",
+744 => x"8112ff12",
+745 => x"525270ff",
+746 => x"2e098106",
+747 => x"eb388051",
+748 => x"70800c88",
+749 => x"3d0d0471",
+750 => x"800c883d",
+751 => x"0d04fa3d",
+752 => x"0d787a7c",
+753 => x"72727259",
+754 => x"57555856",
+755 => x"57747727",
+756 => x"b2387515",
+757 => x"51767127",
+758 => x"aa387076",
+759 => x"18ff1853",
+760 => x"535370ff",
+761 => x"2e9638ff",
+762 => x"12ff1454",
+763 => x"52723372",
+764 => x"34ff1151",
+765 => x"70ff2e09",
+766 => x"8106ec38",
+767 => x"76800c88",
+768 => x"3d0d048f",
+769 => x"762780e6",
+770 => x"38747707",
+771 => x"83065170",
+772 => x"80dc3876",
+773 => x"75525370",
+774 => x"70840552",
+775 => x"08737084",
+776 => x"05550c72",
+777 => x"71708405",
+778 => x"53087170",
+779 => x"8405530c",
+780 => x"71708405",
+781 => x"53087170",
+782 => x"8405530c",
+783 => x"71708405",
+784 => x"53087170",
+785 => x"8405530c",
+786 => x"f0155553",
+787 => x"738f26c7",
+788 => x"38837427",
+789 => x"95387070",
+790 => x"84055208",
+791 => x"73708405",
+792 => x"550cfc14",
+793 => x"54738326",
+794 => x"ed387271",
+795 => x"5452ff14",
+796 => x"5170ff2e",
+797 => x"ff863872",
+798 => x"70810554",
+799 => x"33727081",
+800 => x"055434ff",
+801 => x"1151ea39",
+802 => x"ef3d0d63",
+803 => x"6567405d",
+804 => x"427b802e",
+805 => x"85823861",
+806 => x"51a9eb3f",
+807 => x"f81c7084",
+808 => x"120870fc",
+809 => x"0670628b",
+810 => x"0570f806",
+811 => x"4159455c",
+812 => x"5f415796",
+813 => x"742782c5",
+814 => x"38807b24",
+815 => x"7e7c2607",
+816 => x"58805477",
+817 => x"742e0981",
+818 => x"0682ab38",
+819 => x"787b2581",
+820 => x"fe387817",
+821 => x"80dad80b",
+822 => x"8805085b",
+823 => x"5679762e",
+824 => x"84c53884",
+825 => x"160870fe",
+826 => x"06178411",
+827 => x"08810641",
+828 => x"55557e82",
+829 => x"8d3874fc",
+830 => x"06587976",
+831 => x"2e84e338",
+832 => x"78185f7e",
+833 => x"7b2581ff",
+834 => x"387c8106",
+835 => x"547382c1",
+836 => x"38767708",
+837 => x"31841108",
+838 => x"fc065657",
+839 => x"75802e91",
+840 => x"3879762e",
+841 => x"84f03874",
+842 => x"18195877",
+843 => x"7b258491",
+844 => x"3876802e",
+845 => x"829b3878",
+846 => x"15567a76",
+847 => x"24829238",
+848 => x"8c170888",
+849 => x"1808718c",
+850 => x"120c8812",
+851 => x"0c5e7559",
+852 => x"881761fc",
+853 => x"055b5679",
+854 => x"a42685ff",
+855 => x"387b7659",
+856 => x"55937a27",
+857 => x"80c9387b",
+858 => x"7084055d",
+859 => x"087c5676",
+860 => x"0c747084",
+861 => x"0556088c",
+862 => x"180c9017",
+863 => x"589b7a27",
+864 => x"ae387470",
+865 => x"84055608",
+866 => x"780c7470",
+867 => x"84055608",
+868 => x"94180c98",
+869 => x"1758a37a",
+870 => x"27953874",
+871 => x"70840556",
+872 => x"08780c74",
+873 => x"70840556",
+874 => x"089c180c",
+875 => x"a0175874",
+876 => x"70840556",
+877 => x"08755f78",
+878 => x"7084055a",
+879 => x"0c777e70",
+880 => x"84054008",
+881 => x"71708405",
+882 => x"530c7e08",
+883 => x"710c5d78",
+884 => x"7b315675",
+885 => x"8f2680c9",
+886 => x"38841708",
+887 => x"81067907",
+888 => x"84180c78",
+889 => x"17841108",
+890 => x"81078412",
+891 => x"0c5b6151",
+892 => x"a7953f88",
+893 => x"17547380",
+894 => x"0c933d0d",
+895 => x"04905bfd",
+896 => x"b8397756",
+897 => x"fe83398c",
+898 => x"16088817",
+899 => x"08718c12",
+900 => x"0c88120c",
+901 => x"587e707c",
+902 => x"3157598f",
+903 => x"7627ffb9",
+904 => x"387a1784",
+905 => x"18088106",
+906 => x"7c078419",
+907 => x"0c768107",
+908 => x"84120c76",
+909 => x"11841108",
+910 => x"81078412",
+911 => x"0c5b8805",
+912 => x"5261518f",
+913 => x"de3f6151",
+914 => x"a6bd3f88",
+915 => x"1754ffa6",
+916 => x"397d5261",
+917 => x"5197db3f",
+918 => x"80085a80",
+919 => x"08802e81",
+920 => x"ab388008",
+921 => x"f8056084",
+922 => x"0508fe06",
+923 => x"61055855",
+924 => x"74772e83",
+925 => x"f238fc19",
+926 => x"5877a426",
+927 => x"81b0387b",
+928 => x"80085657",
+929 => x"93782780",
+930 => x"dc387b70",
+931 => x"70840552",
+932 => x"08800870",
+933 => x"8405800c",
+934 => x"0c800871",
+935 => x"70840553",
+936 => x"085d567b",
+937 => x"76708405",
+938 => x"580c579b",
+939 => x"7827b638",
+940 => x"76708405",
+941 => x"58087570",
+942 => x"8405570c",
+943 => x"76708405",
+944 => x"58087570",
+945 => x"8405570c",
+946 => x"a3782799",
+947 => x"38767084",
+948 => x"05580875",
+949 => x"70840557",
+950 => x"0c767084",
+951 => x"05580875",
+952 => x"70840557",
+953 => x"0c767084",
+954 => x"05580877",
+955 => x"5e757084",
+956 => x"05570c74",
+957 => x"7d708405",
+958 => x"5f087170",
+959 => x"8405530c",
+960 => x"7d08710c",
+961 => x"5f7b5261",
+962 => x"518e983f",
+963 => x"6151a4f7",
+964 => x"3f79800c",
+965 => x"933d0d04",
+966 => x"7d526151",
+967 => x"96943f80",
+968 => x"08800c93",
+969 => x"3d0d0484",
+970 => x"160855fb",
+971 => x"c9397753",
+972 => x"7b528008",
+973 => x"51a2a93f",
+974 => x"7b526151",
+975 => x"8de53fcc",
+976 => x"398c1608",
+977 => x"88170871",
+978 => x"8c120c88",
+979 => x"120c5d8c",
+980 => x"17088818",
+981 => x"08718c12",
+982 => x"0c88120c",
+983 => x"597759fb",
+984 => x"ef397818",
+985 => x"901c4055",
+986 => x"7e7524fb",
+987 => x"9c387a17",
+988 => x"7080dad8",
+989 => x"0b88050c",
+990 => x"757c3181",
+991 => x"0784120c",
+992 => x"56841708",
+993 => x"81067b07",
+994 => x"84180c61",
+995 => x"51a3f83f",
+996 => x"881754fc",
+997 => x"e1397418",
+998 => x"19901c5e",
+999 => x"5a7c7a24",
+1000 => x"fb8f388c",
+1001 => x"17088818",
+1002 => x"08718c12",
+1003 => x"0c88120c",
+1004 => x"5e881761",
+1005 => x"fc055759",
+1006 => x"75a42681",
+1007 => x"b6387b79",
+1008 => x"59559376",
+1009 => x"2780c938",
+1010 => x"7b708405",
+1011 => x"5d087c56",
+1012 => x"790c7470",
+1013 => x"84055608",
+1014 => x"8c180c90",
+1015 => x"17589b76",
+1016 => x"27ae3874",
+1017 => x"70840556",
+1018 => x"08780c74",
+1019 => x"70840556",
+1020 => x"0894180c",
+1021 => x"981758a3",
+1022 => x"76279538",
+1023 => x"74708405",
+1024 => x"5608780c",
+1025 => x"74708405",
+1026 => x"56089c18",
+1027 => x"0ca01758",
+1028 => x"74708405",
+1029 => x"56087541",
+1030 => x"78708405",
+1031 => x"5a0c7760",
+1032 => x"70840542",
+1033 => x"08717084",
+1034 => x"05530c60",
+1035 => x"08710c5e",
+1036 => x"7a177080",
+1037 => x"dad80b88",
+1038 => x"050c7a7c",
+1039 => x"31810784",
+1040 => x"120c5884",
+1041 => x"17088106",
+1042 => x"7b078418",
+1043 => x"0c6151a2",
+1044 => x"b63f7854",
+1045 => x"73800c93",
+1046 => x"3d0d0479",
+1047 => x"537b5275",
+1048 => x"519ffd3f",
+1049 => x"fae93984",
+1050 => x"1508fc06",
+1051 => x"19605859",
+1052 => x"fadd3975",
+1053 => x"537b5278",
+1054 => x"519fe53f",
+1055 => x"7a177080",
+1056 => x"dad80b88",
+1057 => x"050c7a7c",
+1058 => x"31810784",
+1059 => x"120c5884",
+1060 => x"17088106",
+1061 => x"7b078418",
+1062 => x"0c6151a1",
+1063 => x"ea3f7854",
+1064 => x"ffb239fa",
+1065 => x"3d0d7880",
+1066 => x"d39c0854",
+1067 => x"55b81308",
+1068 => x"802e81af",
+1069 => x"388c1522",
+1070 => x"7083ffff",
+1071 => x"0670832a",
+1072 => x"81328106",
+1073 => x"55555672",
+1074 => x"802e80da",
+1075 => x"3873842a",
+1076 => x"81328106",
+1077 => x"57ff5376",
+1078 => x"80f23873",
+1079 => x"822a8106",
+1080 => x"5473802e",
+1081 => x"b938b015",
+1082 => x"08547380",
+1083 => x"2e9c3880",
+1084 => x"c0155373",
+1085 => x"732e8f38",
+1086 => x"735280d3",
+1087 => x"9c08518a",
+1088 => x"a23f8c15",
+1089 => x"225676b0",
+1090 => x"160c75db",
+1091 => x"0657768c",
+1092 => x"1623800b",
+1093 => x"84160c90",
+1094 => x"1508750c",
+1095 => x"76567588",
+1096 => x"0754738c",
+1097 => x"16239015",
+1098 => x"08802ebf",
+1099 => x"388c1522",
+1100 => x"70810655",
+1101 => x"53739c38",
+1102 => x"720a100a",
+1103 => x"81065675",
+1104 => x"85389415",
+1105 => x"08547388",
+1106 => x"160c8053",
+1107 => x"72800c88",
+1108 => x"3d0d0480",
+1109 => x"0b88160c",
+1110 => x"94150830",
+1111 => x"98160c80",
+1112 => x"53ea3972",
+1113 => x"5182a63f",
+1114 => x"fecb3974",
+1115 => x"518fc03f",
+1116 => x"8c152270",
+1117 => x"81065553",
+1118 => x"73802eff",
+1119 => x"bb38d439",
+1120 => x"f83d0d7a",
+1121 => x"5776802e",
+1122 => x"81973880",
+1123 => x"d39c0854",
+1124 => x"b8140880",
+1125 => x"2e80eb38",
+1126 => x"8c172270",
+1127 => x"902b7090",
+1128 => x"2c70832a",
+1129 => x"81328106",
+1130 => x"5b5b5755",
+1131 => x"7780cb38",
+1132 => x"90170856",
+1133 => x"75802e80",
+1134 => x"c1387608",
+1135 => x"76317678",
+1136 => x"0c798306",
+1137 => x"55557385",
+1138 => x"38941708",
+1139 => x"58778818",
+1140 => x"0c807525",
+1141 => x"a5387453",
+1142 => x"75529c17",
+1143 => x"0851a417",
+1144 => x"0854732d",
+1145 => x"800b8008",
+1146 => x"2580c938",
+1147 => x"80081675",
+1148 => x"80083156",
+1149 => x"56748024",
+1150 => x"dd38800b",
+1151 => x"800c8a3d",
+1152 => x"0d047351",
+1153 => x"81873f8c",
+1154 => x"17227090",
+1155 => x"2b70902c",
+1156 => x"70832a81",
+1157 => x"3281065b",
+1158 => x"5b575577",
+1159 => x"dd38ff90",
+1160 => x"39a38052",
+1161 => x"80d39c08",
+1162 => x"518cd43f",
+1163 => x"8008800c",
+1164 => x"8a3d0d04",
+1165 => x"8c172280",
+1166 => x"c0075877",
+1167 => x"8c1823ff",
+1168 => x"0b800c8a",
+1169 => x"3d0d04fa",
+1170 => x"3d0d7970",
+1171 => x"80dc298c",
+1172 => x"11547a53",
+1173 => x"56578fda",
+1174 => x"3f800880",
+1175 => x"08555680",
+1176 => x"08802ea2",
+1177 => x"3880088c",
+1178 => x"0554800b",
+1179 => x"80080c76",
+1180 => x"80088405",
+1181 => x"0c738008",
+1182 => x"88050c74",
+1183 => x"53805273",
+1184 => x"519cf93f",
+1185 => x"75547380",
+1186 => x"0c883d0d",
+1187 => x"04fe3d0d",
+1188 => x"74aacc0b",
+1189 => x"bc120c53",
+1190 => x"810bb814",
+1191 => x"0c800b84",
+1192 => x"dc140c83",
+1193 => x"0b84e014",
+1194 => x"0c84e813",
+1195 => x"84e4140c",
+1196 => x"84130851",
+1197 => x"8070720c",
+1198 => x"7084130c",
+1199 => x"7088130c",
+1200 => x"52840b8c",
+1201 => x"1223718e",
+1202 => x"12237190",
+1203 => x"120c7194",
+1204 => x"120c7198",
+1205 => x"120c709c",
+1206 => x"120c80c3",
+1207 => x"bc0ba012",
+1208 => x"0c80c488",
+1209 => x"0ba4120c",
+1210 => x"80c5840b",
+1211 => x"a8120c80",
+1212 => x"c5d50bac",
+1213 => x"120c8813",
+1214 => x"0872710c",
+1215 => x"7284120c",
+1216 => x"7288120c",
+1217 => x"51890b8c",
+1218 => x"1223810b",
+1219 => x"8e122371",
+1220 => x"90120c71",
+1221 => x"94120c71",
+1222 => x"98120c70",
+1223 => x"9c120c80",
+1224 => x"c3bc0ba0",
+1225 => x"120c80c4",
+1226 => x"880ba412",
+1227 => x"0c80c584",
+1228 => x"0ba8120c",
+1229 => x"80c5d50b",
+1230 => x"ac120c8c",
+1231 => x"13087271",
+1232 => x"0c728412",
+1233 => x"0c728812",
+1234 => x"0c518a0b",
+1235 => x"8c122382",
+1236 => x"0b8e1223",
+1237 => x"7190120c",
+1238 => x"7194120c",
+1239 => x"7198120c",
+1240 => x"709c120c",
+1241 => x"80c3bc0b",
+1242 => x"a0120c80",
+1243 => x"c4880ba4",
+1244 => x"120c80c5",
+1245 => x"840ba812",
+1246 => x"0c80c5d5",
+1247 => x"0bac120c",
+1248 => x"843d0d04",
+1249 => x"f83d0d7a",
+1250 => x"80d39c08",
+1251 => x"b8110857",
+1252 => x"57587481",
+1253 => x"ec38aacc",
+1254 => x"0bbc170c",
+1255 => x"810bb817",
+1256 => x"0c7484dc",
+1257 => x"170c830b",
+1258 => x"84e0170c",
+1259 => x"84e81684",
+1260 => x"e4170c84",
+1261 => x"16087571",
+1262 => x"0c758412",
+1263 => x"0c758812",
+1264 => x"0c59840b",
+1265 => x"8c1a2374",
+1266 => x"8e1a2374",
+1267 => x"901a0c74",
+1268 => x"941a0c74",
+1269 => x"981a0c78",
+1270 => x"9c1a0c80",
+1271 => x"c3bc0ba0",
+1272 => x"1a0c80c4",
+1273 => x"880ba41a",
+1274 => x"0c80c584",
+1275 => x"0ba81a0c",
+1276 => x"80c5d50b",
+1277 => x"ac1a0c88",
+1278 => x"16087571",
+1279 => x"0c758412",
+1280 => x"0c758812",
+1281 => x"0c57890b",
+1282 => x"8c182381",
+1283 => x"0b8e1823",
+1284 => x"7490180c",
+1285 => x"7494180c",
+1286 => x"7498180c",
+1287 => x"769c180c",
+1288 => x"80c3bc0b",
+1289 => x"a0180c80",
+1290 => x"c4880ba4",
+1291 => x"180c80c5",
+1292 => x"840ba818",
+1293 => x"0c80c5d5",
+1294 => x"0bac180c",
+1295 => x"8c160875",
+1296 => x"710c7584",
+1297 => x"120c7588",
+1298 => x"120c548a",
+1299 => x"0b8c1523",
+1300 => x"820b8e15",
+1301 => x"23749015",
+1302 => x"0c749415",
+1303 => x"0c749815",
+1304 => x"0c739c15",
+1305 => x"0c80c3bc",
+1306 => x"0ba0150c",
+1307 => x"80c4880b",
+1308 => x"a4150c80",
+1309 => x"c5840ba8",
+1310 => x"150c80c5",
+1311 => x"d50bac15",
+1312 => x"0c84dc16",
+1313 => x"88110884",
+1314 => x"1208ff05",
+1315 => x"57575780",
+1316 => x"75249f38",
+1317 => x"8c162270",
+1318 => x"902b7090",
+1319 => x"2c515559",
+1320 => x"73802e80",
+1321 => x"ed3880dc",
+1322 => x"16ff1656",
+1323 => x"56748025",
+1324 => x"e3387608",
+1325 => x"5574802e",
+1326 => x"8f387488",
+1327 => x"11088412",
+1328 => x"08ff0557",
+1329 => x"5757c839",
+1330 => x"82fc5277",
+1331 => x"518ae33f",
+1332 => x"80088008",
+1333 => x"55568008",
+1334 => x"802ea338",
+1335 => x"80088c05",
+1336 => x"7580080c",
+1337 => x"54840b80",
+1338 => x"0884050c",
+1339 => x"73800888",
+1340 => x"050c82f0",
+1341 => x"53745273",
+1342 => x"5198813f",
+1343 => x"75547374",
+1344 => x"780c5573",
+1345 => x"ffb4388c",
+1346 => x"780c800b",
+1347 => x"800c8a3d",
+1348 => x"0d04810b",
+1349 => x"8c172373",
+1350 => x"760c7388",
+1351 => x"170c7384",
+1352 => x"170c7390",
+1353 => x"170c7394",
+1354 => x"170c7398",
+1355 => x"170cff0b",
+1356 => x"8e172373",
+1357 => x"b0170c73",
+1358 => x"b4170c73",
+1359 => x"80c4170c",
+1360 => x"7380c817",
+1361 => x"0c75800c",
+1362 => x"8a3d0d04",
+1363 => x"ff3d0da3",
+1364 => x"80527351",
+1365 => x"86a93f83",
+1366 => x"3d0d04ff",
+1367 => x"3d0da380",
+1368 => x"5280d39c",
+1369 => x"08518697",
+1370 => x"3f833d0d",
+1371 => x"04fb3d0d",
+1372 => x"77705256",
+1373 => x"98903f80",
+1374 => x"dad80b88",
+1375 => x"05088411",
+1376 => x"08fc0670",
+1377 => x"7b319fef",
+1378 => x"05e08006",
+1379 => x"e0800552",
+1380 => x"5555a080",
+1381 => x"75249438",
+1382 => x"80527551",
+1383 => x"97ea3f80",
+1384 => x"dae00814",
+1385 => x"53728008",
+1386 => x"2e8f3875",
+1387 => x"5197d83f",
+1388 => x"80537280",
+1389 => x"0c873d0d",
+1390 => x"04743052",
+1391 => x"755197c8",
+1392 => x"3f8008ff",
+1393 => x"2ea83880",
+1394 => x"dad80b88",
+1395 => x"05087476",
+1396 => x"31810784",
+1397 => x"120c5380",
+1398 => x"da9c0875",
+1399 => x"3180da9c",
+1400 => x"0c755197",
+1401 => x"a23f810b",
+1402 => x"800c873d",
+1403 => x"0d048052",
+1404 => x"75519794",
+1405 => x"3f80dad8",
+1406 => x"0b880508",
+1407 => x"80087131",
+1408 => x"54548f73",
+1409 => x"25ffa438",
+1410 => x"800880da",
+1411 => x"cc083180",
+1412 => x"da9c0c72",
+1413 => x"81078415",
+1414 => x"0c755196",
+1415 => x"ea3f8053",
+1416 => x"ff9039f7",
+1417 => x"3d0d7b7d",
+1418 => x"545a7280",
+1419 => x"2e828338",
+1420 => x"795196d2",
+1421 => x"3ff81384",
+1422 => x"110870fe",
+1423 => x"06701384",
+1424 => x"1108fc06",
+1425 => x"5c575854",
+1426 => x"5780dae0",
+1427 => x"08742e82",
+1428 => x"de387784",
+1429 => x"150c8073",
+1430 => x"81065659",
+1431 => x"74792e81",
+1432 => x"d5387714",
+1433 => x"84110881",
+1434 => x"06565374",
+1435 => x"a0387716",
+1436 => x"567881e6",
+1437 => x"38881408",
+1438 => x"557480da",
+1439 => x"e02e82f9",
+1440 => x"388c1408",
+1441 => x"708c170c",
+1442 => x"7588120c",
+1443 => x"58758107",
+1444 => x"84180c75",
+1445 => x"1776710c",
+1446 => x"54788191",
+1447 => x"3883ff76",
+1448 => x"2781c838",
+1449 => x"75892a76",
+1450 => x"832a5454",
+1451 => x"73802ebf",
+1452 => x"3875862a",
+1453 => x"b8055384",
+1454 => x"7427b438",
+1455 => x"80db1453",
+1456 => x"947427ab",
+1457 => x"38758c2a",
+1458 => x"80ee0553",
+1459 => x"80d47427",
+1460 => x"9e38758f",
+1461 => x"2a80f705",
+1462 => x"5382d474",
+1463 => x"27913875",
+1464 => x"922a80fc",
+1465 => x"05538ad4",
+1466 => x"74278438",
+1467 => x"80fe5372",
+1468 => x"10101080",
+1469 => x"dad80588",
+1470 => x"11085555",
+1471 => x"73752e82",
+1472 => x"bf388414",
+1473 => x"08fc0659",
+1474 => x"7579278d",
+1475 => x"38881408",
+1476 => x"5473752e",
+1477 => x"098106ea",
+1478 => x"388c1408",
+1479 => x"708c190c",
+1480 => x"7488190c",
+1481 => x"7788120c",
+1482 => x"55768c15",
+1483 => x"0c795194",
+1484 => x"d63f8b3d",
+1485 => x"0d047608",
+1486 => x"77713158",
+1487 => x"76058818",
+1488 => x"08565674",
+1489 => x"80dae02e",
+1490 => x"80e0388c",
+1491 => x"1708708c",
+1492 => x"170c7588",
+1493 => x"120c53fe",
+1494 => x"89398814",
+1495 => x"088c1508",
+1496 => x"708c130c",
+1497 => x"5988190c",
+1498 => x"fea33975",
+1499 => x"832a7054",
+1500 => x"54807424",
+1501 => x"81983872",
+1502 => x"822c8171",
+1503 => x"2b80dadc",
+1504 => x"080780da",
+1505 => x"d80b8405",
+1506 => x"0c741010",
+1507 => x"1080dad8",
+1508 => x"05881108",
+1509 => x"718c1b0c",
+1510 => x"70881b0c",
+1511 => x"7988130c",
+1512 => x"565a5576",
+1513 => x"8c150cff",
+1514 => x"84398159",
+1515 => x"fdb43977",
+1516 => x"16738106",
+1517 => x"54557298",
+1518 => x"38760877",
+1519 => x"71315875",
+1520 => x"058c1808",
+1521 => x"88190871",
+1522 => x"8c120c88",
+1523 => x"120c5555",
+1524 => x"74810784",
+1525 => x"180c7680",
+1526 => x"dad80b88",
+1527 => x"050c80da",
+1528 => x"d4087526",
+1529 => x"fec73880",
+1530 => x"dad00852",
+1531 => x"7951fafd",
+1532 => x"3f795193",
+1533 => x"923ffeba",
+1534 => x"3981778c",
+1535 => x"170c7788",
+1536 => x"170c758c",
+1537 => x"190c7588",
+1538 => x"190c59fd",
+1539 => x"80398314",
+1540 => x"70822c81",
+1541 => x"712b80da",
+1542 => x"dc080780",
+1543 => x"dad80b84",
+1544 => x"050c7510",
+1545 => x"101080da",
+1546 => x"d8058811",
+1547 => x"08718c1c",
+1548 => x"0c70881c",
+1549 => x"0c7a8813",
+1550 => x"0c575b56",
+1551 => x"53fee439",
+1552 => x"807324a3",
+1553 => x"3872822c",
+1554 => x"81712b80",
+1555 => x"dadc0807",
+1556 => x"80dad80b",
+1557 => x"84050c58",
+1558 => x"748c180c",
+1559 => x"7388180c",
+1560 => x"7688160c",
+1561 => x"fdc33983",
+1562 => x"1370822c",
+1563 => x"81712b80",
+1564 => x"dadc0807",
+1565 => x"80dad80b",
+1566 => x"84050c59",
+1567 => x"53da39f9",
+1568 => x"3d0d797b",
+1569 => x"5853800b",
+1570 => x"80d39c08",
+1571 => x"53567272",
+1572 => x"2ebc3884",
+1573 => x"dc135574",
+1574 => x"762eb338",
+1575 => x"88150884",
+1576 => x"1608ff05",
+1577 => x"54548073",
+1578 => x"2499388c",
+1579 => x"14227090",
+1580 => x"2b535871",
+1581 => x"80d43880",
+1582 => x"dc14ff14",
+1583 => x"54547280",
+1584 => x"25e93874",
+1585 => x"085574d4",
+1586 => x"3880d39c",
+1587 => x"085284dc",
+1588 => x"12557480",
+1589 => x"2ead3888",
+1590 => x"15088416",
+1591 => x"08ff0554",
+1592 => x"54807324",
+1593 => x"98388c14",
+1594 => x"2270902b",
+1595 => x"535871ad",
+1596 => x"3880dc14",
+1597 => x"ff145454",
+1598 => x"728025ea",
+1599 => x"38740855",
+1600 => x"74d53875",
+1601 => x"800c893d",
+1602 => x"0d047351",
+1603 => x"762d7580",
+1604 => x"080780dc",
+1605 => x"15ff1555",
+1606 => x"5556ffa2",
+1607 => x"39735176",
+1608 => x"2d758008",
+1609 => x"0780dc15",
+1610 => x"ff155555",
+1611 => x"56ca39ea",
+1612 => x"3d0d688c",
+1613 => x"1122700a",
+1614 => x"100a8106",
+1615 => x"57585674",
+1616 => x"80e4388e",
+1617 => x"16227090",
+1618 => x"2b70902c",
+1619 => x"51555880",
+1620 => x"7424b138",
+1621 => x"983dc405",
+1622 => x"53735280",
+1623 => x"d39c0851",
+1624 => x"93fb3f80",
+1625 => x"0b800824",
+1626 => x"97387983",
+1627 => x"e0800654",
+1628 => x"7380c080",
+1629 => x"2e818f38",
+1630 => x"73828080",
+1631 => x"2e819138",
+1632 => x"8c162257",
+1633 => x"76908007",
+1634 => x"54738c17",
+1635 => x"23888052",
+1636 => x"80d39c08",
+1637 => x"51819b3f",
+1638 => x"80089d38",
+1639 => x"8c162282",
+1640 => x"0755748c",
+1641 => x"172380c3",
+1642 => x"1670770c",
+1643 => x"90170c81",
+1644 => x"0b94170c",
+1645 => x"983d0d04",
+1646 => x"80d39c08",
+1647 => x"aacc0bbc",
+1648 => x"120c588c",
+1649 => x"16228180",
+1650 => x"0754738c",
+1651 => x"17238008",
+1652 => x"760c8008",
+1653 => x"90170c88",
+1654 => x"800b9417",
+1655 => x"0c74802e",
+1656 => x"d3388e16",
+1657 => x"2270902b",
+1658 => x"70902c53",
+1659 => x"56549cd0",
+1660 => x"3f800880",
+1661 => x"2effbd38",
+1662 => x"8c162281",
+1663 => x"0757768c",
+1664 => x"1723983d",
+1665 => x"0d04810b",
+1666 => x"8c172258",
+1667 => x"55fef539",
+1668 => x"a8160880",
+1669 => x"c5842e09",
+1670 => x"8106fee4",
+1671 => x"388c1622",
+1672 => x"88800754",
+1673 => x"738c1723",
+1674 => x"88800b80",
+1675 => x"cc170cfe",
+1676 => x"dc39f43d",
+1677 => x"0d7e608b",
+1678 => x"1170f806",
+1679 => x"5b55555d",
+1680 => x"72962683",
+1681 => x"38905880",
+1682 => x"78247479",
+1683 => x"26075580",
+1684 => x"5474742e",
+1685 => x"09810680",
+1686 => x"ca387c51",
+1687 => x"8ea83f77",
+1688 => x"83f72680",
+1689 => x"c5387783",
+1690 => x"2a701010",
+1691 => x"1080dad8",
+1692 => x"058c1108",
+1693 => x"58585475",
+1694 => x"772e81f0",
+1695 => x"38841608",
+1696 => x"fc068c17",
+1697 => x"08881808",
+1698 => x"718c120c",
+1699 => x"88120c5b",
+1700 => x"76058411",
+1701 => x"08810784",
+1702 => x"120c537c",
+1703 => x"518de83f",
+1704 => x"88165473",
+1705 => x"800c8e3d",
+1706 => x"0d047789",
+1707 => x"2a78832a",
+1708 => x"58547380",
+1709 => x"2ebf3877",
+1710 => x"862ab805",
+1711 => x"57847427",
+1712 => x"b43880db",
+1713 => x"14579474",
+1714 => x"27ab3877",
+1715 => x"8c2a80ee",
+1716 => x"055780d4",
+1717 => x"74279e38",
+1718 => x"778f2a80",
+1719 => x"f7055782",
+1720 => x"d4742791",
+1721 => x"3877922a",
+1722 => x"80fc0557",
+1723 => x"8ad47427",
+1724 => x"843880fe",
+1725 => x"57761010",
+1726 => x"1080dad8",
+1727 => x"058c1108",
+1728 => x"56537473",
+1729 => x"2ea33884",
+1730 => x"1508fc06",
+1731 => x"70793155",
+1732 => x"56738f24",
+1733 => x"88e43873",
+1734 => x"802588e6",
+1735 => x"388c1508",
+1736 => x"5574732e",
+1737 => x"098106df",
+1738 => x"38811759",
+1739 => x"80dae808",
+1740 => x"567580da",
+1741 => x"e02e82cc",
+1742 => x"38841608",
+1743 => x"fc067079",
+1744 => x"31555573",
+1745 => x"8f24bb38",
+1746 => x"80dae00b",
+1747 => x"80daec0c",
+1748 => x"80dae00b",
+1749 => x"80dae80c",
+1750 => x"80742480",
+1751 => x"db387416",
+1752 => x"84110881",
+1753 => x"0784120c",
+1754 => x"53feb039",
+1755 => x"88168c11",
+1756 => x"08575975",
+1757 => x"792e0981",
+1758 => x"06fe8238",
+1759 => x"821459ff",
+1760 => x"ab397716",
+1761 => x"78810784",
+1762 => x"180c7080",
+1763 => x"daec0c70",
+1764 => x"80dae80c",
+1765 => x"80dae00b",
+1766 => x"8c120c8c",
+1767 => x"11088812",
+1768 => x"0c748107",
+1769 => x"84120c74",
+1770 => x"0574710c",
+1771 => x"5b7c518b",
+1772 => x"d63f8816",
+1773 => x"54fdec39",
+1774 => x"83ff7527",
+1775 => x"83913874",
+1776 => x"892a7583",
+1777 => x"2a545473",
+1778 => x"802ebf38",
+1779 => x"74862ab8",
+1780 => x"05538474",
+1781 => x"27b43880",
+1782 => x"db145394",
+1783 => x"7427ab38",
+1784 => x"748c2a80",
+1785 => x"ee055380",
+1786 => x"d474279e",
+1787 => x"38748f2a",
+1788 => x"80f70553",
+1789 => x"82d47427",
+1790 => x"91387492",
+1791 => x"2a80fc05",
+1792 => x"538ad474",
+1793 => x"27843880",
+1794 => x"fe537210",
+1795 => x"101080da",
+1796 => x"d8058811",
+1797 => x"08555773",
+1798 => x"772e868b",
+1799 => x"38841408",
+1800 => x"fc065b74",
+1801 => x"7b278d38",
+1802 => x"88140854",
+1803 => x"73772e09",
+1804 => x"8106ea38",
+1805 => x"8c140880",
+1806 => x"dad80b84",
+1807 => x"0508718c",
+1808 => x"190c7588",
+1809 => x"190c7788",
+1810 => x"130c5c57",
+1811 => x"758c150c",
+1812 => x"78538079",
+1813 => x"24839838",
+1814 => x"72822c81",
+1815 => x"712b5656",
+1816 => x"747b2680",
+1817 => x"ca387a75",
+1818 => x"06577682",
+1819 => x"a33878fc",
+1820 => x"06840559",
+1821 => x"7410707c",
+1822 => x"06555573",
+1823 => x"82923884",
+1824 => x"1959f139",
+1825 => x"80dad80b",
+1826 => x"84050879",
+1827 => x"545b7880",
+1828 => x"25c63882",
+1829 => x"da397409",
+1830 => x"7b067080",
+1831 => x"dad80b84",
+1832 => x"050c5b74",
+1833 => x"1055747b",
+1834 => x"26853874",
+1835 => x"85bc3880",
+1836 => x"dad80b88",
+1837 => x"05087084",
+1838 => x"1208fc06",
+1839 => x"707b317b",
+1840 => x"72268f72",
+1841 => x"25075d57",
+1842 => x"5c5c5578",
+1843 => x"802e80d9",
+1844 => x"38791580",
+1845 => x"dad00819",
+1846 => x"90115954",
+1847 => x"5680dacc",
+1848 => x"08ff2e88",
+1849 => x"38a08f13",
+1850 => x"e0800657",
+1851 => x"76527c51",
+1852 => x"89963f80",
+1853 => x"08548008",
+1854 => x"ff2e9038",
+1855 => x"80087627",
+1856 => x"82a73874",
+1857 => x"80dad82e",
+1858 => x"829f3880",
+1859 => x"dad80b88",
+1860 => x"05085584",
+1861 => x"1508fc06",
+1862 => x"70793179",
+1863 => x"72268f72",
+1864 => x"25075d55",
+1865 => x"5a7a83f2",
+1866 => x"38778107",
+1867 => x"84160c77",
+1868 => x"157080da",
+1869 => x"d80b8805",
+1870 => x"0c748107",
+1871 => x"84120c56",
+1872 => x"7c5188c3",
+1873 => x"3f881554",
+1874 => x"73800c8e",
+1875 => x"3d0d0474",
+1876 => x"832a7054",
+1877 => x"54807424",
+1878 => x"819b3872",
+1879 => x"822c8171",
+1880 => x"2b80dadc",
+1881 => x"08077080",
+1882 => x"dad80b84",
+1883 => x"050c7510",
+1884 => x"101080da",
+1885 => x"d8058811",
+1886 => x"08718c1b",
+1887 => x"0c70881b",
+1888 => x"0c798813",
+1889 => x"0c57555c",
+1890 => x"55758c15",
+1891 => x"0cfdc139",
+1892 => x"78791010",
+1893 => x"1080dad8",
+1894 => x"0570565b",
+1895 => x"5c8c1408",
+1896 => x"5675742e",
+1897 => x"a3388416",
+1898 => x"08fc0670",
+1899 => x"79315853",
+1900 => x"768f2483",
+1901 => x"f1387680",
+1902 => x"2584af38",
+1903 => x"8c160856",
+1904 => x"75742e09",
+1905 => x"8106df38",
+1906 => x"8814811a",
+1907 => x"70830655",
+1908 => x"5a5472c9",
+1909 => x"387b8306",
+1910 => x"5675802e",
+1911 => x"fdb838ff",
+1912 => x"1cf81b5b",
+1913 => x"5c881a08",
+1914 => x"7a2eea38",
+1915 => x"fdb53983",
+1916 => x"1953fce4",
+1917 => x"39831470",
+1918 => x"822c8171",
+1919 => x"2b80dadc",
+1920 => x"08077080",
+1921 => x"dad80b84",
+1922 => x"050c7610",
+1923 => x"101080da",
+1924 => x"d8058811",
+1925 => x"08718c1c",
+1926 => x"0c70881c",
+1927 => x"0c7a8813",
+1928 => x"0c58535d",
+1929 => x"5653fee1",
+1930 => x"3980da9c",
+1931 => x"08175980",
+1932 => x"08762e81",
+1933 => x"8b3880da",
+1934 => x"cc08ff2e",
+1935 => x"848e3873",
+1936 => x"76311980",
+1937 => x"da9c0c73",
+1938 => x"87067056",
+1939 => x"5372802e",
+1940 => x"88388873",
+1941 => x"31701555",
+1942 => x"5576149f",
+1943 => x"ff06a080",
+1944 => x"71311670",
+1945 => x"547e5351",
+1946 => x"53869d3f",
+1947 => x"80085680",
+1948 => x"08ff2e81",
+1949 => x"9e3880da",
+1950 => x"9c081370",
+1951 => x"80da9c0c",
+1952 => x"747580da",
+1953 => x"d80b8805",
+1954 => x"0c777631",
+1955 => x"15810755",
+1956 => x"56597a80",
+1957 => x"dad82e83",
+1958 => x"c038798f",
+1959 => x"2682ef38",
+1960 => x"810b8415",
+1961 => x"0c841508",
+1962 => x"fc067079",
+1963 => x"31797226",
+1964 => x"8f722507",
+1965 => x"5d555a7a",
+1966 => x"802efced",
+1967 => x"3880db39",
+1968 => x"80089fff",
+1969 => x"065574fe",
+1970 => x"ed387880",
+1971 => x"da9c0c80",
+1972 => x"dad80b88",
+1973 => x"05087a18",
+1974 => x"81078412",
+1975 => x"0c5580da",
+1976 => x"c8087927",
+1977 => x"86387880",
+1978 => x"dac80c80",
+1979 => x"dac40879",
+1980 => x"27fca038",
+1981 => x"7880dac4",
+1982 => x"0c841508",
+1983 => x"fc067079",
+1984 => x"31797226",
+1985 => x"8f722507",
+1986 => x"5d555a7a",
+1987 => x"802efc99",
+1988 => x"38883980",
+1989 => x"745753fe",
+1990 => x"dd397c51",
+1991 => x"84e93f80",
+1992 => x"0b800c8e",
+1993 => x"3d0d0480",
+1994 => x"7324a538",
+1995 => x"72822c81",
+1996 => x"712b80da",
+1997 => x"dc080770",
+1998 => x"80dad80b",
+1999 => x"84050c5c",
+2000 => x"5a768c17",
+2001 => x"0c738817",
+2002 => x"0c758818",
+2003 => x"0cf9fd39",
+2004 => x"83137082",
+2005 => x"2c81712b",
+2006 => x"80dadc08",
+2007 => x"077080da",
+2008 => x"d80b8405",
+2009 => x"0c5d5b53",
+2010 => x"d8397a75",
+2011 => x"065c7bfc",
+2012 => x"9f388419",
+2013 => x"75105659",
+2014 => x"f139ff17",
+2015 => x"810559f7",
+2016 => x"ab398c15",
+2017 => x"08881608",
+2018 => x"718c120c",
+2019 => x"88120c59",
+2020 => x"75158411",
+2021 => x"08810784",
+2022 => x"120c587c",
+2023 => x"5183e83f",
+2024 => x"881554fb",
+2025 => x"a3397716",
+2026 => x"78810784",
+2027 => x"180c8c17",
+2028 => x"08881808",
+2029 => x"718c120c",
+2030 => x"88120c5c",
+2031 => x"7080daec",
+2032 => x"0c7080da",
+2033 => x"e80c80da",
+2034 => x"e00b8c12",
+2035 => x"0c8c1108",
+2036 => x"88120c77",
+2037 => x"81078412",
+2038 => x"0c770577",
+2039 => x"710c557c",
+2040 => x"5183a43f",
+2041 => x"881654f5",
+2042 => x"ba397216",
+2043 => x"84110881",
+2044 => x"0784120c",
+2045 => x"588c1608",
+2046 => x"88170871",
+2047 => x"8c120c88",
+2048 => x"120c577c",
+2049 => x"5183803f",
+2050 => x"881654f5",
+2051 => x"96397284",
+2052 => x"150cf41a",
+2053 => x"f8067084",
+2054 => x"1d088106",
+2055 => x"07841d0c",
+2056 => x"701c5556",
+2057 => x"850b8415",
+2058 => x"0c850b88",
+2059 => x"150c8f76",
+2060 => x"27fdab38",
+2061 => x"881b527c",
+2062 => x"51ebe83f",
+2063 => x"80dad80b",
+2064 => x"88050880",
+2065 => x"da9c085a",
+2066 => x"55fd9339",
+2067 => x"7880da9c",
+2068 => x"0c7380da",
+2069 => x"cc0cfbef",
+2070 => x"39728415",
+2071 => x"0cfcff39",
+2072 => x"fb3d0d77",
+2073 => x"707a7c58",
+2074 => x"5553568f",
+2075 => x"752780e6",
+2076 => x"38727607",
+2077 => x"83065170",
+2078 => x"80dc3875",
+2079 => x"73525470",
+2080 => x"70840552",
+2081 => x"08747084",
+2082 => x"05560c73",
+2083 => x"71708405",
+2084 => x"53087170",
+2085 => x"8405530c",
+2086 => x"71708405",
+2087 => x"53087170",
+2088 => x"8405530c",
+2089 => x"71708405",
+2090 => x"53087170",
+2091 => x"8405530c",
+2092 => x"f0165654",
+2093 => x"748f26c7",
+2094 => x"38837527",
+2095 => x"95387070",
+2096 => x"84055208",
+2097 => x"74708405",
+2098 => x"560cfc15",
+2099 => x"55748326",
+2100 => x"ed387371",
+2101 => x"5452ff15",
+2102 => x"5170ff2e",
+2103 => x"98387270",
+2104 => x"81055433",
+2105 => x"72708105",
+2106 => x"5434ff11",
+2107 => x"5170ff2e",
+2108 => x"098106ea",
+2109 => x"3875800c",
+2110 => x"873d0d04",
+2111 => x"fb3d0d77",
+2112 => x"7a71028c",
+2113 => x"05a30533",
+2114 => x"58545456",
+2115 => x"83732780",
+2116 => x"d4387583",
+2117 => x"06517080",
+2118 => x"cc387488",
+2119 => x"2b750770",
+2120 => x"71902b07",
+2121 => x"55518f73",
+2122 => x"27a73873",
+2123 => x"72708405",
+2124 => x"540c7174",
+2125 => x"71708405",
+2126 => x"530c7471",
+2127 => x"70840553",
+2128 => x"0c747170",
+2129 => x"8405530c",
+2130 => x"f0145452",
+2131 => x"728f26db",
+2132 => x"38837327",
+2133 => x"90387372",
+2134 => x"70840554",
+2135 => x"0cfc1353",
+2136 => x"728326f2",
+2137 => x"38ff1351",
+2138 => x"70ff2e93",
+2139 => x"38747270",
+2140 => x"81055434",
+2141 => x"ff115170",
+2142 => x"ff2e0981",
+2143 => x"06ef3875",
+2144 => x"800c873d",
+2145 => x"0d040404",
+2146 => x"fd3d0d80",
+2147 => x"0b80e3a0",
+2148 => x"0c765184",
+2149 => x"ee3f8008",
+2150 => x"538008ff",
+2151 => x"2e883872",
+2152 => x"800c853d",
+2153 => x"0d0480e3",
+2154 => x"a0085473",
+2155 => x"802ef038",
+2156 => x"7574710c",
+2157 => x"5272800c",
+2158 => x"853d0d04",
+2159 => x"f93d0d79",
+2160 => x"7c557b54",
+2161 => x"8e112270",
+2162 => x"902b7090",
+2163 => x"2c555780",
+2164 => x"d39c0853",
+2165 => x"585683f3",
+2166 => x"3f800857",
+2167 => x"800b8008",
+2168 => x"24933880",
+2169 => x"d0160880",
+2170 => x"080580d0",
+2171 => x"170c7680",
+2172 => x"0c893d0d",
+2173 => x"048c1622",
+2174 => x"83dfff06",
+2175 => x"55748c17",
+2176 => x"2376800c",
+2177 => x"893d0d04",
+2178 => x"fa3d0d78",
+2179 => x"8c112270",
+2180 => x"882a7081",
+2181 => x"06515758",
+2182 => x"5674a938",
+2183 => x"8c162283",
+2184 => x"dfff0655",
+2185 => x"748c1723",
+2186 => x"7a547953",
+2187 => x"8e162270",
+2188 => x"902b7090",
+2189 => x"2c545680",
+2190 => x"d39c0852",
+2191 => x"5681b23f",
+2192 => x"883d0d04",
+2193 => x"82548053",
+2194 => x"8e162270",
+2195 => x"902b7090",
+2196 => x"2c545680",
+2197 => x"d39c0852",
+2198 => x"5782b83f",
+2199 => x"8c162283",
+2200 => x"dfff0655",
+2201 => x"748c1723",
+2202 => x"7a547953",
+2203 => x"8e162270",
+2204 => x"902b7090",
+2205 => x"2c545680",
+2206 => x"d39c0852",
+2207 => x"5680f23f",
+2208 => x"883d0d04",
+2209 => x"f93d0d79",
+2210 => x"7c557b54",
+2211 => x"8e112270",
+2212 => x"902b7090",
+2213 => x"2c555780",
+2214 => x"d39c0853",
+2215 => x"585681f3",
+2216 => x"3f800857",
+2217 => x"8008ff2e",
+2218 => x"99388c16",
+2219 => x"22a08007",
+2220 => x"55748c17",
+2221 => x"23800880",
+2222 => x"d0170c76",
+2223 => x"800c893d",
+2224 => x"0d048c16",
+2225 => x"2283dfff",
+2226 => x"0655748c",
+2227 => x"17237680",
+2228 => x"0c893d0d",
+2229 => x"04fe3d0d",
+2230 => x"748e1122",
+2231 => x"70902b70",
+2232 => x"902c5551",
+2233 => x"515380d3",
+2234 => x"9c0851bd",
+2235 => x"3f843d0d",
+2236 => x"04fb3d0d",
+2237 => x"800b80e3",
+2238 => x"a00c7a53",
+2239 => x"79527851",
+2240 => x"82fc3f80",
+2241 => x"08558008",
+2242 => x"ff2e8838",
+2243 => x"74800c87",
+2244 => x"3d0d0480",
+2245 => x"e3a00856",
+2246 => x"75802ef0",
+2247 => x"38777671",
+2248 => x"0c547480",
+2249 => x"0c873d0d",
+2250 => x"04fd3d0d",
+2251 => x"800b80e3",
+2252 => x"a00c7651",
+2253 => x"85853f80",
+2254 => x"08538008",
+2255 => x"ff2e8838",
+2256 => x"72800c85",
+2257 => x"3d0d0480",
+2258 => x"e3a00854",
+2259 => x"73802ef0",
+2260 => x"38757471",
+2261 => x"0c527280",
+2262 => x"0c853d0d",
+2263 => x"04fc3d0d",
+2264 => x"800b80e3",
+2265 => x"a00c7852",
+2266 => x"775188b8",
+2267 => x"3f800854",
+2268 => x"8008ff2e",
+2269 => x"88387380",
+2270 => x"0c863d0d",
+2271 => x"0480e3a0",
+2272 => x"08557480",
+2273 => x"2ef03876",
+2274 => x"75710c53",
+2275 => x"73800c86",
+2276 => x"3d0d04fb",
+2277 => x"3d0d800b",
+2278 => x"80e3a00c",
+2279 => x"7a537952",
+2280 => x"78518593",
+2281 => x"3f800855",
+2282 => x"8008ff2e",
+2283 => x"88387480",
+2284 => x"0c873d0d",
+2285 => x"0480e3a0",
+2286 => x"08567580",
+2287 => x"2ef03877",
+2288 => x"76710c54",
+2289 => x"74800c87",
+2290 => x"3d0d04fb",
+2291 => x"3d0d800b",
+2292 => x"80e3a00c",
+2293 => x"7a537952",
+2294 => x"7851829a",
+2295 => x"3f800855",
+2296 => x"8008ff2e",
+2297 => x"88387480",
+2298 => x"0c873d0d",
+2299 => x"0480e3a0",
+2300 => x"08567580",
+2301 => x"2ef03877",
+2302 => x"76710c54",
+2303 => x"74800c87",
+2304 => x"3d0d04fe",
+2305 => x"3d0d80e3",
+2306 => x"a4085170",
+2307 => x"8a3880e3",
+2308 => x"ac7080e3",
+2309 => x"a40c5174",
+2310 => x"1152ff53",
+2311 => x"7187fb80",
+2312 => x"80268838",
+2313 => x"7180e3a4",
+2314 => x"0c705372",
+2315 => x"800c843d",
+2316 => x"0d04fd3d",
+2317 => x"0d800b80",
+2318 => x"d3900854",
+2319 => x"5472812e",
+2320 => x"9c387380",
+2321 => x"e3a80cc0",
+2322 => x"d83fffbf",
+2323 => x"b33f80e2",
+2324 => x"e0528151",
+2325 => x"c3b43f80",
+2326 => x"0851889b",
+2327 => x"3f7280e3",
+2328 => x"a80cc0bd",
+2329 => x"3fffbf98",
+2330 => x"3f80e2e0",
+2331 => x"528151c3",
+2332 => x"993f8008",
+2333 => x"5188803f",
+2334 => x"00ff3900",
+2335 => x"ff39f53d",
+2336 => x"0d7e6080",
+2337 => x"e3a80870",
+2338 => x"5b585b5b",
+2339 => x"7580c538",
+2340 => x"777a25a2",
+2341 => x"38771b70",
+2342 => x"337081ff",
+2343 => x"06585859",
+2344 => x"758a2e99",
+2345 => x"387681ff",
+2346 => x"0651ffbf",
+2347 => x"d33f8118",
+2348 => x"58797824",
+2349 => x"e0387980",
+2350 => x"0c8d3d0d",
+2351 => x"048d51ff",
+2352 => x"bfbe3f78",
+2353 => x"337081ff",
+2354 => x"065257ff",
+2355 => x"bfb23f81",
+2356 => x"1858de39",
+2357 => x"79557a54",
+2358 => x"7d538552",
+2359 => x"8d3dfc05",
+2360 => x"51ffbede",
+2361 => x"3f800856",
+2362 => x"87863f7b",
+2363 => x"80080c75",
+2364 => x"800c8d3d",
+2365 => x"0d04f63d",
+2366 => x"0d7d7f80",
+2367 => x"e3a80870",
+2368 => x"5a585a5a",
+2369 => x"7580c438",
+2370 => x"767925b2",
+2371 => x"38761a58",
+2372 => x"ffbecd3f",
+2373 => x"80087834",
+2374 => x"800b8008",
+2375 => x"81ff0657",
+2376 => x"58758a2e",
+2377 => x"a238758d",
+2378 => x"32703070",
+2379 => x"80257a07",
+2380 => x"51515675",
+2381 => x"b8388117",
+2382 => x"57787724",
+2383 => x"d0387656",
+2384 => x"75800c8c",
+2385 => x"3d0d0481",
+2386 => x"58dc3978",
+2387 => x"5579547c",
+2388 => x"5384528c",
+2389 => x"3dfc0551",
+2390 => x"ffbde73f",
+2391 => x"80085686",
+2392 => x"8f3f7a80",
+2393 => x"080c7580",
+2394 => x"0c8c3d0d",
+2395 => x"04811756",
+2396 => x"cf39f93d",
+2397 => x"0d795780",
+2398 => x"e3a80880",
+2399 => x"2ead3876",
+2400 => x"51c4e33f",
+2401 => x"7b567a55",
+2402 => x"80088105",
+2403 => x"54765382",
+2404 => x"52893dfc",
+2405 => x"0551ffbd",
+2406 => x"a93f8008",
+2407 => x"5785d13f",
+2408 => x"7780080c",
+2409 => x"76800c89",
+2410 => x"3d0d0485",
+2411 => x"c33f850b",
+2412 => x"80080cff",
+2413 => x"0b800c89",
+2414 => x"3d0d04fb",
+2415 => x"3d0d80e3",
+2416 => x"a8087056",
+2417 => x"54738838",
+2418 => x"74800c87",
+2419 => x"3d0d0477",
+2420 => x"53835287",
+2421 => x"3dfc0551",
+2422 => x"ffbce73f",
+2423 => x"80085485",
+2424 => x"8f3f7580",
+2425 => x"080c7380",
+2426 => x"0c873d0d",
+2427 => x"04ff0b80",
+2428 => x"0c04fb3d",
+2429 => x"0d775580",
+2430 => x"e3a80880",
+2431 => x"2ea93874",
+2432 => x"51c3e33f",
+2433 => x"80088105",
+2434 => x"54745387",
+2435 => x"52873dfc",
+2436 => x"0551ffbc",
+2437 => x"ad3f8008",
+2438 => x"5584d53f",
+2439 => x"7580080c",
+2440 => x"74800c87",
+2441 => x"3d0d0484",
+2442 => x"c73f850b",
+2443 => x"80080cff",
+2444 => x"0b800c87",
+2445 => x"3d0d04fa",
+2446 => x"3d0d80e3",
+2447 => x"a808802e",
+2448 => x"a3387a55",
+2449 => x"79547853",
+2450 => x"8652883d",
+2451 => x"fc0551ff",
+2452 => x"bbf03f80",
+2453 => x"08568498",
+2454 => x"3f768008",
+2455 => x"0c75800c",
+2456 => x"883d0d04",
+2457 => x"848a3f9d",
+2458 => x"0b80080c",
+2459 => x"ff0b800c",
+2460 => x"883d0d04",
+2461 => x"f73d0d7b",
+2462 => x"7d5b59bc",
+2463 => x"53805279",
+2464 => x"51f4f93f",
+2465 => x"80705657",
+2466 => x"98567419",
+2467 => x"70337078",
+2468 => x"2b790781",
+2469 => x"18f81a5a",
+2470 => x"58595558",
+2471 => x"847524ea",
+2472 => x"38767a23",
+2473 => x"84195880",
+2474 => x"70565798",
+2475 => x"56741870",
+2476 => x"3370782b",
+2477 => x"79078118",
+2478 => x"f81a5a58",
+2479 => x"59515484",
+2480 => x"7524ea38",
+2481 => x"76821b23",
+2482 => x"88195880",
+2483 => x"70565798",
+2484 => x"56741870",
+2485 => x"3370782b",
+2486 => x"79078118",
+2487 => x"f81a5a58",
+2488 => x"59515484",
+2489 => x"7524ea38",
+2490 => x"76841b0c",
+2491 => x"8c195880",
+2492 => x"70565798",
+2493 => x"56741870",
+2494 => x"3370782b",
+2495 => x"79078118",
+2496 => x"f81a5a58",
+2497 => x"59515484",
+2498 => x"7524ea38",
+2499 => x"76881b23",
+2500 => x"90195880",
+2501 => x"70565798",
+2502 => x"56741870",
+2503 => x"3370782b",
+2504 => x"79078118",
+2505 => x"f81a5a58",
+2506 => x"59515484",
+2507 => x"7524ea38",
+2508 => x"768a1b23",
+2509 => x"94195880",
+2510 => x"70565798",
+2511 => x"56741870",
+2512 => x"3370782b",
+2513 => x"79078118",
+2514 => x"f81a5a58",
+2515 => x"59515484",
+2516 => x"7524ea38",
+2517 => x"768c1b23",
+2518 => x"98195880",
+2519 => x"70565798",
+2520 => x"56741870",
+2521 => x"3370782b",
+2522 => x"79078118",
+2523 => x"f81a5a58",
+2524 => x"59515484",
+2525 => x"7524ea38",
+2526 => x"768e1b23",
+2527 => x"9c195880",
+2528 => x"705657b8",
+2529 => x"56741870",
+2530 => x"3370782b",
+2531 => x"79078118",
+2532 => x"f81a5a58",
+2533 => x"595a5488",
+2534 => x"7524ea38",
+2535 => x"76901b0c",
+2536 => x"8b3d0d04",
+2537 => x"e93d0d6a",
+2538 => x"80e3a808",
+2539 => x"57577593",
+2540 => x"3880c080",
+2541 => x"0b84180c",
+2542 => x"75ac180c",
+2543 => x"75800c99",
+2544 => x"3d0d0489",
+2545 => x"3d70556a",
+2546 => x"54558a52",
+2547 => x"993dffbc",
+2548 => x"0551ffb8",
+2549 => x"ed3f8008",
+2550 => x"77537552",
+2551 => x"56fd953f",
+2552 => x"818e3f77",
+2553 => x"80080c75",
+2554 => x"800c993d",
+2555 => x"0d04e93d",
+2556 => x"0d695780",
+2557 => x"e3a80880",
+2558 => x"2eb73876",
+2559 => x"51ffbfe6",
+2560 => x"3f893d70",
+2561 => x"56800881",
+2562 => x"05557754",
+2563 => x"568f5299",
+2564 => x"3dffbc05",
+2565 => x"51ffb8aa",
+2566 => x"3f80086b",
+2567 => x"53765257",
+2568 => x"fcd23f80",
+2569 => x"cb3f7780",
+2570 => x"080c7680",
+2571 => x"0c993d0d",
+2572 => x"04be3f85",
+2573 => x"0b80080c",
+2574 => x"ff0b800c",
+2575 => x"993d0d04",
+2576 => x"fc3d0d81",
+2577 => x"5480e3a8",
+2578 => x"08883873",
+2579 => x"800c863d",
+2580 => x"0d047653",
+2581 => x"97b95286",
+2582 => x"3dfc0551",
+2583 => x"ffb7e33f",
+2584 => x"8008548c",
+2585 => x"3f748008",
+2586 => x"0c73800c",
+2587 => x"863d0d04",
+2588 => x"80d39c08",
+2589 => x"800c04f7",
+2590 => x"3d0d7b80",
+2591 => x"d39c0882",
+2592 => x"c811085a",
+2593 => x"545a7780",
+2594 => x"2e80da38",
+2595 => x"81881884",
+2596 => x"1908ff05",
+2597 => x"81712b59",
+2598 => x"55598074",
+2599 => x"2480ea38",
+2600 => x"807424b5",
+2601 => x"3873822b",
+2602 => x"78118805",
+2603 => x"56568180",
+2604 => x"19087706",
+2605 => x"5372802e",
+2606 => x"b6387816",
+2607 => x"70085353",
+2608 => x"79517408",
+2609 => x"53722dff",
+2610 => x"14fc17fc",
+2611 => x"1779812c",
+2612 => x"5a575754",
+2613 => x"738025d6",
+2614 => x"38770858",
+2615 => x"77ffad38",
+2616 => x"80d39c08",
+2617 => x"53bc1308",
+2618 => x"a5387951",
+2619 => x"f78a3f74",
+2620 => x"0853722d",
+2621 => x"ff14fc17",
+2622 => x"fc177981",
+2623 => x"2c5a5757",
+2624 => x"54738025",
+2625 => x"ffa838d1",
+2626 => x"398057ff",
+2627 => x"93397251",
+2628 => x"bc130854",
+2629 => x"732d7951",
+2630 => x"f6de3fff",
+2631 => x"3d0d80e2",
+2632 => x"e80bfc05",
+2633 => x"70085252",
+2634 => x"70ff2e91",
+2635 => x"38702dfc",
+2636 => x"12700852",
+2637 => x"5270ff2e",
+2638 => x"098106f1",
+2639 => x"38833d0d",
+2640 => x"0404ffb8",
+2641 => x"e03f0400",
+2642 => x"48656c6c",
+2643 => x"6f20776f",
+2644 => x"726c6420",
+2645 => x"310a0000",
+2646 => x"48656c6c",
+2647 => x"6f20776f",
+2648 => x"726c6420",
+2649 => x"320a0000",
+2650 => x"0a000000",
+2651 => x"43000000",
+2652 => x"64756d6d",
+2653 => x"792e6578",
+2654 => x"65000000",
+2655 => x"00ffffff",
+2656 => x"ff00ffff",
+2657 => x"ffff00ff",
+2658 => x"ffffff00",
+2659 => x"00000000",
+2660 => x"00000000",
+2661 => x"00000000",
+2662 => x"00003170",
+2663 => x"000029a0",
+2664 => x"00000000",
+2665 => x"00002c08",
+2666 => x"00002c64",
+2667 => x"00002cc0",
+2668 => x"00000000",
+2669 => x"00000000",
+2670 => x"00000000",
+2671 => x"00000000",
+2672 => x"00000000",
+2673 => x"00000000",
+2674 => x"00000000",
+2675 => x"00000000",
+2676 => x"00000000",
+2677 => x"0000296c",
+2678 => x"00000000",
+2679 => x"00000000",
+2680 => x"00000000",
+2681 => x"00000000",
+2682 => x"00000000",
+2683 => x"00000000",
+2684 => x"00000000",
+2685 => x"00000000",
+2686 => x"00000000",
+2687 => x"00000000",
+2688 => x"00000000",
+2689 => x"00000000",
+2690 => x"00000000",
+2691 => x"00000000",
+2692 => x"00000000",
+2693 => x"00000000",
+2694 => x"00000000",
+2695 => x"00000000",
+2696 => x"00000000",
+2697 => x"00000000",
+2698 => x"00000000",
+2699 => x"00000000",
+2700 => x"00000000",
+2701 => x"00000000",
+2702 => x"00000000",
+2703 => x"00000000",
+2704 => x"00000000",
+2705 => x"00000000",
+2706 => x"00000001",
+2707 => x"330eabcd",
+2708 => x"1234e66d",
+2709 => x"deec0005",
+2710 => x"000b0000",
+2711 => x"00000000",
+2712 => x"00000000",
+2713 => x"00000000",
+2714 => x"00000000",
+2715 => x"00000000",
+2716 => x"00000000",
+2717 => x"00000000",
+2718 => x"00000000",
+2719 => x"00000000",
+2720 => x"00000000",
+2721 => x"00000000",
+2722 => x"00000000",
+2723 => x"00000000",
+2724 => x"00000000",
+2725 => x"00000000",
+2726 => x"00000000",
+2727 => x"00000000",
+2728 => x"00000000",
+2729 => x"00000000",
+2730 => x"00000000",
+2731 => x"00000000",
+2732 => x"00000000",
+2733 => x"00000000",
+2734 => x"00000000",
+2735 => x"00000000",
+2736 => x"00000000",
+2737 => x"00000000",
+2738 => x"00000000",
+2739 => x"00000000",
+2740 => x"00000000",
+2741 => x"00000000",
+2742 => x"00000000",
+2743 => x"00000000",
+2744 => x"00000000",
+2745 => x"00000000",
+2746 => x"00000000",
+2747 => x"00000000",
+2748 => x"00000000",
+2749 => x"00000000",
+2750 => x"00000000",
+2751 => x"00000000",
+2752 => x"00000000",
+2753 => x"00000000",
+2754 => x"00000000",
+2755 => x"00000000",
+2756 => x"00000000",
+2757 => x"00000000",
+2758 => x"00000000",
+2759 => x"00000000",
+2760 => x"00000000",
+2761 => x"00000000",
+2762 => x"00000000",
+2763 => x"00000000",
+2764 => x"00000000",
+2765 => x"00000000",
+2766 => x"00000000",
+2767 => x"00000000",
+2768 => x"00000000",
+2769 => x"00000000",
+2770 => x"00000000",
+2771 => x"00000000",
+2772 => x"00000000",
+2773 => x"00000000",
+2774 => x"00000000",
+2775 => x"00000000",
+2776 => x"00000000",
+2777 => x"00000000",
+2778 => x"00000000",
+2779 => x"00000000",
+2780 => x"00000000",
+2781 => x"00000000",
+2782 => x"00000000",
+2783 => x"00000000",
+2784 => x"00000000",
+2785 => x"00000000",
+2786 => x"00000000",
+2787 => x"00000000",
+2788 => x"00000000",
+2789 => x"00000000",
+2790 => x"00000000",
+2791 => x"00000000",
+2792 => x"00000000",
+2793 => x"00000000",
+2794 => x"00000000",
+2795 => x"00000000",
+2796 => x"00000000",
+2797 => x"00000000",
+2798 => x"00000000",
+2799 => x"00000000",
+2800 => x"00000000",
+2801 => x"00000000",
+2802 => x"00000000",
+2803 => x"00000000",
+2804 => x"00000000",
+2805 => x"00000000",
+2806 => x"00000000",
+2807 => x"00000000",
+2808 => x"00000000",
+2809 => x"00000000",
+2810 => x"00000000",
+2811 => x"00000000",
+2812 => x"00000000",
+2813 => x"00000000",
+2814 => x"00000000",
+2815 => x"00000000",
+2816 => x"00000000",
+2817 => x"00000000",
+2818 => x"00000000",
+2819 => x"00000000",
+2820 => x"00000000",
+2821 => x"00000000",
+2822 => x"00000000",
+2823 => x"00000000",
+2824 => x"00000000",
+2825 => x"00000000",
+2826 => x"00000000",
+2827 => x"00000000",
+2828 => x"00000000",
+2829 => x"00000000",
+2830 => x"00000000",
+2831 => x"00000000",
+2832 => x"00000000",
+2833 => x"00000000",
+2834 => x"00000000",
+2835 => x"00000000",
+2836 => x"00000000",
+2837 => x"00000000",
+2838 => x"00000000",
+2839 => x"00000000",
+2840 => x"00000000",
+2841 => x"00000000",
+2842 => x"00000000",
+2843 => x"00000000",
+2844 => x"00000000",
+2845 => x"00000000",
+2846 => x"00000000",
+2847 => x"00000000",
+2848 => x"00000000",
+2849 => x"00000000",
+2850 => x"00000000",
+2851 => x"00000000",
+2852 => x"00000000",
+2853 => x"00000000",
+2854 => x"00000000",
+2855 => x"00000000",
+2856 => x"00000000",
+2857 => x"00000000",
+2858 => x"00000000",
+2859 => x"00000000",
+2860 => x"00000000",
+2861 => x"00000000",
+2862 => x"00000000",
+2863 => x"00000000",
+2864 => x"00000000",
+2865 => x"00000000",
+2866 => x"00000000",
+2867 => x"00000000",
+2868 => x"00000000",
+2869 => x"00000000",
+2870 => x"00000000",
+2871 => x"00000000",
+2872 => x"00000000",
+2873 => x"00000000",
+2874 => x"00000000",
+2875 => x"00000000",
+2876 => x"00000000",
+2877 => x"00000000",
+2878 => x"00000000",
+2879 => x"00000000",
+2880 => x"00000000",
+2881 => x"00000000",
+2882 => x"00000000",
+2883 => x"00000000",
+2884 => x"00000000",
+2885 => x"00000000",
+2886 => x"00000000",
+2887 => x"00000000",
+2888 => x"00000000",
+2889 => x"00000000",
+2890 => x"00000000",
+2891 => x"00000000",
+2892 => x"00000000",
+2893 => x"00000000",
+2894 => x"00000000",
+2895 => x"00000000",
+2896 => x"00000000",
+2897 => x"00000000",
+2898 => x"00000000",
+2899 => x"ffffffff",
+2900 => x"00000000",
+2901 => x"00020000",
+2902 => x"00000000",
+2903 => x"00000000",
+2904 => x"00002d58",
+2905 => x"00002d58",
+2906 => x"00002d60",
+2907 => x"00002d60",
+2908 => x"00002d68",
+2909 => x"00002d68",
+2910 => x"00002d70",
+2911 => x"00002d70",
+2912 => x"00002d78",
+2913 => x"00002d78",
+2914 => x"00002d80",
+2915 => x"00002d80",
+2916 => x"00002d88",
+2917 => x"00002d88",
+2918 => x"00002d90",
+2919 => x"00002d90",
+2920 => x"00002d98",
+2921 => x"00002d98",
+2922 => x"00002da0",
+2923 => x"00002da0",
+2924 => x"00002da8",
+2925 => x"00002da8",
+2926 => x"00002db0",
+2927 => x"00002db0",
+2928 => x"00002db8",
+2929 => x"00002db8",
+2930 => x"00002dc0",
+2931 => x"00002dc0",
+2932 => x"00002dc8",
+2933 => x"00002dc8",
+2934 => x"00002dd0",
+2935 => x"00002dd0",
+2936 => x"00002dd8",
+2937 => x"00002dd8",
+2938 => x"00002de0",
+2939 => x"00002de0",
+2940 => x"00002de8",
+2941 => x"00002de8",
+2942 => x"00002df0",
+2943 => x"00002df0",
+2944 => x"00002df8",
+2945 => x"00002df8",
+2946 => x"00002e00",
+2947 => x"00002e00",
+2948 => x"00002e08",
+2949 => x"00002e08",
+2950 => x"00002e10",
+2951 => x"00002e10",
+2952 => x"00002e18",
+2953 => x"00002e18",
+2954 => x"00002e20",
+2955 => x"00002e20",
+2956 => x"00002e28",
+2957 => x"00002e28",
+2958 => x"00002e30",
+2959 => x"00002e30",
+2960 => x"00002e38",
+2961 => x"00002e38",
+2962 => x"00002e40",
+2963 => x"00002e40",
+2964 => x"00002e48",
+2965 => x"00002e48",
+2966 => x"00002e50",
+2967 => x"00002e50",
+2968 => x"00002e58",
+2969 => x"00002e58",
+2970 => x"00002e60",
+2971 => x"00002e60",
+2972 => x"00002e68",
+2973 => x"00002e68",
+2974 => x"00002e70",
+2975 => x"00002e70",
+2976 => x"00002e78",
+2977 => x"00002e78",
+2978 => x"00002e80",
+2979 => x"00002e80",
+2980 => x"00002e88",
+2981 => x"00002e88",
+2982 => x"00002e90",
+2983 => x"00002e90",
+2984 => x"00002e98",
+2985 => x"00002e98",
+2986 => x"00002ea0",
+2987 => x"00002ea0",
+2988 => x"00002ea8",
+2989 => x"00002ea8",
+2990 => x"00002eb0",
+2991 => x"00002eb0",
+2992 => x"00002eb8",
+2993 => x"00002eb8",
+2994 => x"00002ec0",
+2995 => x"00002ec0",
+2996 => x"00002ec8",
+2997 => x"00002ec8",
+2998 => x"00002ed0",
+2999 => x"00002ed0",
+3000 => x"00002ed8",
+3001 => x"00002ed8",
+3002 => x"00002ee0",
+3003 => x"00002ee0",
+3004 => x"00002ee8",
+3005 => x"00002ee8",
+3006 => x"00002ef0",
+3007 => x"00002ef0",
+3008 => x"00002ef8",
+3009 => x"00002ef8",
+3010 => x"00002f00",
+3011 => x"00002f00",
+3012 => x"00002f08",
+3013 => x"00002f08",
+3014 => x"00002f10",
+3015 => x"00002f10",
+3016 => x"00002f18",
+3017 => x"00002f18",
+3018 => x"00002f20",
+3019 => x"00002f20",
+3020 => x"00002f28",
+3021 => x"00002f28",
+3022 => x"00002f30",
+3023 => x"00002f30",
+3024 => x"00002f38",
+3025 => x"00002f38",
+3026 => x"00002f40",
+3027 => x"00002f40",
+3028 => x"00002f48",
+3029 => x"00002f48",
+3030 => x"00002f50",
+3031 => x"00002f50",
+3032 => x"00002f58",
+3033 => x"00002f58",
+3034 => x"00002f60",
+3035 => x"00002f60",
+3036 => x"00002f68",
+3037 => x"00002f68",
+3038 => x"00002f70",
+3039 => x"00002f70",
+3040 => x"00002f78",
+3041 => x"00002f78",
+3042 => x"00002f80",
+3043 => x"00002f80",
+3044 => x"00002f88",
+3045 => x"00002f88",
+3046 => x"00002f90",
+3047 => x"00002f90",
+3048 => x"00002f98",
+3049 => x"00002f98",
+3050 => x"00002fa0",
+3051 => x"00002fa0",
+3052 => x"00002fa8",
+3053 => x"00002fa8",
+3054 => x"00002fb0",
+3055 => x"00002fb0",
+3056 => x"00002fb8",
+3057 => x"00002fb8",
+3058 => x"00002fc0",
+3059 => x"00002fc0",
+3060 => x"00002fc8",
+3061 => x"00002fc8",
+3062 => x"00002fd0",
+3063 => x"00002fd0",
+3064 => x"00002fd8",
+3065 => x"00002fd8",
+3066 => x"00002fe0",
+3067 => x"00002fe0",
+3068 => x"00002fe8",
+3069 => x"00002fe8",
+3070 => x"00002ff0",
+3071 => x"00002ff0",
+3072 => x"00002ff8",
+3073 => x"00002ff8",
+3074 => x"00003000",
+3075 => x"00003000",
+3076 => x"00003008",
+3077 => x"00003008",
+3078 => x"00003010",
+3079 => x"00003010",
+3080 => x"00003018",
+3081 => x"00003018",
+3082 => x"00003020",
+3083 => x"00003020",
+3084 => x"00003028",
+3085 => x"00003028",
+3086 => x"00003030",
+3087 => x"00003030",
+3088 => x"00003038",
+3089 => x"00003038",
+3090 => x"00003040",
+3091 => x"00003040",
+3092 => x"00003048",
+3093 => x"00003048",
+3094 => x"00003050",
+3095 => x"00003050",
+3096 => x"00003058",
+3097 => x"00003058",
+3098 => x"00003060",
+3099 => x"00003060",
+3100 => x"00003068",
+3101 => x"00003068",
+3102 => x"00003070",
+3103 => x"00003070",
+3104 => x"00003078",
+3105 => x"00003078",
+3106 => x"00003080",
+3107 => x"00003080",
+3108 => x"00003088",
+3109 => x"00003088",
+3110 => x"00003090",
+3111 => x"00003090",
+3112 => x"00003098",
+3113 => x"00003098",
+3114 => x"000030a0",
+3115 => x"000030a0",
+3116 => x"000030a8",
+3117 => x"000030a8",
+3118 => x"000030b0",
+3119 => x"000030b0",
+3120 => x"000030b8",
+3121 => x"000030b8",
+3122 => x"000030c0",
+3123 => x"000030c0",
+3124 => x"000030c8",
+3125 => x"000030c8",
+3126 => x"000030d0",
+3127 => x"000030d0",
+3128 => x"000030d8",
+3129 => x"000030d8",
+3130 => x"000030e0",
+3131 => x"000030e0",
+3132 => x"000030e8",
+3133 => x"000030e8",
+3134 => x"000030f0",
+3135 => x"000030f0",
+3136 => x"000030f8",
+3137 => x"000030f8",
+3138 => x"00003100",
+3139 => x"00003100",
+3140 => x"00003108",
+3141 => x"00003108",
+3142 => x"00003110",
+3143 => x"00003110",
+3144 => x"00003118",
+3145 => x"00003118",
+3146 => x"00003120",
+3147 => x"00003120",
+3148 => x"00003128",
+3149 => x"00003128",
+3150 => x"00003130",
+3151 => x"00003130",
+3152 => x"00003138",
+3153 => x"00003138",
+3154 => x"00003140",
+3155 => x"00003140",
+3156 => x"00003148",
+3157 => x"00003148",
+3158 => x"00003150",
+3159 => x"00003150",
+3160 => x"00002970",
+3161 => x"ffffffff",
+3162 => x"00000000",
+3163 => x"ffffffff",
+3164 => x"00000000",
OpenPOWER on IntegriCloud