diff options
author | Matt Ettus <matt@ettus.com> | 2009-09-10 21:52:06 -0700 |
---|---|---|
committer | Matt Ettus <matt@ettus.com> | 2009-09-10 21:52:06 -0700 |
commit | 2f3e0eefe01b61f8e5e12d2ceef6990abb8a1ff3 (patch) | |
tree | 38845a43e869454ed88fc68d26c56b7aa3b49e97 | |
parent | 38e0c588af094e7f809ad73981a3ba002d2c936d (diff) | |
download | uhd-2f3e0eefe01b61f8e5e12d2ceef6990abb8a1ff3.tar.gz uhd-2f3e0eefe01b61f8e5e12d2ceef6990abb8a1ff3.tar.bz2 uhd-2f3e0eefe01b61f8e5e12d2ceef6990abb8a1ff3.zip |
More xilinx fifos, more clean up of our fifos
-rw-r--r-- | control_lib/cascadefifo2.v | 56 | ||||
-rw-r--r-- | control_lib/newfifo/fifo18_to_ll8.v | 58 | ||||
-rw-r--r-- | control_lib/newfifo/fifo_2clock.v | 42 | ||||
-rw-r--r-- | coregen/fifo_xlnx_16x19_2clk.ngc | 3 | ||||
-rw-r--r-- | coregen/fifo_xlnx_16x19_2clk.v | 169 | ||||
-rw-r--r-- | coregen/fifo_xlnx_16x19_2clk.veo | 53 | ||||
-rw-r--r-- | coregen/fifo_xlnx_16x19_2clk.xco | 82 | ||||
-rw-r--r-- | coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.lso | 3 | ||||
-rw-r--r-- | coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt | 103 | ||||
-rw-r--r-- | coregen/fifo_xlnx_16x19_2clk_flist.txt | 8 | ||||
-rw-r--r-- | coregen/fifo_xlnx_16x19_2clk_readme.txt | 39 | ||||
-rw-r--r-- | coregen/fifo_xlnx_16x19_2clk_xmdf.tcl | 68 |
12 files changed, 555 insertions, 129 deletions
diff --git a/control_lib/cascadefifo2.v b/control_lib/cascadefifo2.v deleted file mode 100644 index 984cc46e6..000000000 --- a/control_lib/cascadefifo2.v +++ /dev/null @@ -1,56 +0,0 @@ - - -// This FIFO exists to provide an intermediate point for the data on its -// long trek from one RAM (in the buffer pool) to another (in the longfifo) -// The shortfifo is more flexible in its placement since it is based on -// distributed RAM - -// This one has the shortfifo on both the in and out sides. -module cascadefifo2 - #(parameter WIDTH=32, SIZE=9) - (input clk, input rst, - input [WIDTH-1:0] datain, - output [WIDTH-1:0] dataout, - input read, - input write, - input clear, - output full, - output empty, - output [15:0] space, - output [15:0] occupied); - - wire [WIDTH-1:0] data_int, data_int2; - wire empty_int, full_int, transfer; - wire empty_int2, full_int2, transfer2; - wire [4:0] s1_space, s1_occupied, s2_space, s2_occupied; - wire [15:0] l_space, l_occupied; - - shortfifo #(.WIDTH(WIDTH)) shortfifo - (.clk(clk),.rst(rst),.clear(clear), - .datain(datain), .write(write), .full(full), - .dataout(data_int), .read(transfer), .empty(empty_int), - .space(s1_space),.occupied(s1_occupied) ); - - longfifo #(.WIDTH(WIDTH),.SIZE(SIZE)) longfifo - (.clk(clk),.rst(rst),.clear(clear), - .datain(data_int), .write(transfer), .full(full_int), - .dataout(data_int2), .read(transfer2), .empty(empty_int2), - .space(l_space),.occupied(l_occupied) ); - - shortfifo #(.WIDTH(WIDTH)) shortfifo2 - (.clk(clk),.rst(rst),.clear(clear), - .datain(data_int2), .write(transfer2), .full(full_int2), - .dataout(dataout), .read(read), .empty(empty), - .space(s2_space),.occupied(s2_occupied) ); - - assign transfer = ~empty_int & ~full_int; - assign transfer2 = ~empty_int2 & ~full_int2; - - assign space = {11'b0,s1_space} + {11'b0,s2_space} + l_space; - assign occupied = {11'b0,s1_occupied} + {11'b0,s2_occupied} + l_occupied; - -endmodule // cascadefifo2 - - - - diff --git a/control_lib/newfifo/fifo18_to_ll8.v b/control_lib/newfifo/fifo18_to_ll8.v deleted file mode 100644 index 4653244ef..000000000 --- a/control_lib/newfifo/fifo18_to_ll8.v +++ /dev/null @@ -1,58 +0,0 @@ - -module fifo18_to_ll8 - (input clk, input reset, input clear, - input [35:0] f18_data, - input f18_src_rdy_i, - output f18_dst_rdy_o, - - output reg [7:0] ll_data, - output ll_sof_n, - output ll_eof_n, - output ll_src_rdy_n, - input ll_dst_rdy_n); - - wire ll_sof, ll_eof, ll_src_rdy; - assign ll_sof_n = ~ll_sof; - assign ll_eof_n = ~ll_eof; - assign ll_src_rdy_n = ~ll_src_rdy; - wire ll_dst_rdy = ~ll_dst_rdy_n; - - wire f18_sof = f18_data[32]; - wire f18_eof = f18_data[33]; - wire f18_occ = f18_data[35:34]; - wire advance, end_early; - reg [1:0] state; - assign debug = {29'b0,state}; - - always @(posedge clk) - if(reset) - state <= 0; - else - if(advance) - if(ll_eof) - state <= 0; - else - state <= state + 1; - - always @* - case(state) - 0 : ll_data = f18_data[31:24]; - 1 : ll_data = f18_data[23:16]; - 2 : ll_data = f18_data[15:8]; - 3 : ll_data = f18_data[7:0]; - default : ll_data = f18_data[31:24]; - endcase // case (state) - - assign ll_sof = (state==0) & f18_sof; - assign ll_eof = f18_eof & (((state==0)&(f18_occ==1)) | - ((state==1)&(f18_occ==2)) | - ((state==2)&(f18_occ==3)) | - (state==3)); - - assign ll_src_rdy = f18_src_rdy_i; - - assign advance = ll_src_rdy & ll_dst_rdy; - assign f18_dst_rdy_o = advance & ((state==3)|ll_eof); - assign debug = state; - -endmodule // ll8_to_fifo36 diff --git a/control_lib/newfifo/fifo_2clock.v b/control_lib/newfifo/fifo_2clock.v index 2ada39fb0..07ae090f2 100644 --- a/control_lib/newfifo/fifo_2clock.v +++ b/control_lib/newfifo/fifo_2clock.v @@ -16,21 +16,33 @@ module fifo_2clock assign read = src_rdy_o & dst_rdy_i; generate - if(SIZE==9) - fifo_xlnx_512x36_2clk mac_tx_fifo_2clk - (.rst(rst), - .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), - .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); - else if(SIZE==11) - fifo_xlnx_2Kx36_2clk mac_tx_fifo_2clk - (.rst(rst), - .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), - .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); - else if(SIZE==6) - fifo_xlnx_64x36_2clk mac_tx_fifo_2clk - (.rst(rst), - .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), - .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); + if(WIDTH==36) + if(SIZE==9) + fifo_xlnx_512x36_2clk fifo_xlnx_512x36_2clk + (.rst(rst), + .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), + .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); + else if(SIZE==11) + fifo_xlnx_2Kx36_2clk fifo_xlnx_2Kx36_2clk + (.rst(rst), + .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), + .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); + else if(SIZE==6) + fifo_xlnx_64x36_2clk fifo_xlnx_64x36_2clk + (.rst(rst), + .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), + .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); + else + fifo_xlnx_512x36_2clk fifo_xlnx_512x36_2clk + (.rst(rst), + .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), + .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); + else if((WIDTH==19)|(WIDTH==18)) + if(SIZE==4) + fifo_xlnx_16x19_2clk fifo_xlnx_16x19_2clk + (.rst(rst), + .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), + .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); endgenerate assign occupied = {{(16-SIZE-1){1'b0}},level_rclk}; diff --git a/coregen/fifo_xlnx_16x19_2clk.ngc b/coregen/fifo_xlnx_16x19_2clk.ngc new file mode 100644 index 000000000..b12d34d7c --- /dev/null +++ b/coregen/fifo_xlnx_16x19_2clk.ngc @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.4e +$3f24g<,[o}e~g`n;"2*413&;$>"9 > %10?*nhel%fmyz cnpfc`h(|dz$Sni fhdl[}jipV;=t<7P2bnh*kah92:?7=>=0593477339:=<95?8122?45<9'::>6?6:HLSQQ<cag6:47>11592=?IR\Y__6iazt=3;>5863;80>=:432006>5?l29x>=>?ff662(363=;n794FNQWW>uthoVof|ywPtipfwm:4294996:5IORVP?vugnUna}zv_ujqavnXizyn~y2<:1<11>2=AGZ^X7~}of]fiur~W}byi~fPndebp`:4294:h6:5IORVP?vugnUmyabPtipfwm:4294986:5IORVP?vugnUmyabPtipfwmYf{zoyx1=50?07?1<NFY__6}|`g^dvhiYs`{oxdR`jg`vf86<76=1?NI<>8:79KPRW]]0omyoPcnwmp92=87;i784@UURVP?tcWmkmRm`uov?0?699k1>6B[[PTV9swYci}kTob{at=694;2<=H3==68;;72:41=11<K?7;766595=D753?K?7;ONA395A7=0L=13>9?;;9CFB1=?MJL:74:491230>?780805;:497230>?1>0>054864:;EB<4<I980M<<4A308E62<I<<256O\YOA\V@A33K;9;>5MU3:8FPUXAGLD=6M;;BC;E7=DM880OEKLK^NJG@HTMV^R\H=4CMP:?FIJE@^_II?;;BMQAZABFLXJXDAA_HLEK2=DZLK_II?4D59GF3@33MHI>>5KPN78@UTF8<1O\_O>5:FSVD423MZYM>:4F9:;6>@C;2LOO95IDBG7?CBDX=1MHIH<;GFS0>@CXL>0JK6?5:Dbhvc63N90KCJ>;H08M54<A880E?<4I2;8MKOS[]K_I>5FNW18MJD53EE=7AANDDF4?II@AJKG86BZT348HPR5WE>0@XZ<4:NVP10<D\^?SI84LTV7[I3<EZMDBn5BakmqR`ttafdh7@gaosTfvvohf:1E==:4N0237>H69:1E=?=4N010?K73;2D:9>5A1718J4143G;3?6@>929M655<F;;87C<=3:L176=I:=90B?8<;O0;7>H4::1E?>=4N270?K50;2D85>5A4018J1243G>>?6@;629M0<5<F<:87C;=3:L606=I=<80B;=4N760?K02;2D=:>5A6618J3>43G<2>6@83:L446=I?890B:<<;O507>H0<:1E;8=4N640?K10;2D<4>5A7808J=5<F1:87C6>3:L;66=I0:90B5:<;O::6>H>;2D2<>5A9018J<443G38?6@6629M=25<F0287C76f:LA[GSTX@DT\_A_S69MAQQHZB;0C?5@K09S0>VFZ]k0\D@PBTQJ@]d<X@DTNX]AALG0?UTB92[37_OB17Z2@3=TG\XHI>5\PN68P\VB;:1^<"i}f/pe+be&jf`t"Cwos]q`Zvi|{UiecQwos2345YUmzgx<=<;T2,cw`)zo%lou lljz,I}iuW{nT|cz}_ckm[}iu89::S_k|umv276=R8&myj#|i/fa{*fjlp&GscQ}d^rmpwYeagUsc>?03]Qavsk|8997X> gsd-vc)`kq$h`fv Mymq[wbXxg~ySjmPxnp3456XZly~`y?<2:W3+bta&{l$knv!cmi{+H~hzVxoS}`{r^e`[}iu89::S_k|umv277=R8&myj#|i/fa{*fjlp&GscQ}d^rmpwY`kVrd~=>?2^Pfwpjs9:90Y=!hrg,qb*adp'iggu!Bxnp\swYwf}xTnd`Pxnp3456XZly~`y?<3:W3+bta&{l$knv!cmi{+H~hzV}yS}`{r^`jjZ~hz9:;=R\jstnw565<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXj`dTtb|?010\V`urd};8>6[?/fpe*w`(ojr%oaew/LzlvZquWyd~Ril_ymq4567W[oxyaz>339V4*aun'xm#jmw.bnh|*Kg{U|~R~ats]dgZ~hz9:;=R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXojUsc>?03]Qavsk|88:7X> gsd-vc)`kq$h`fv re]sjqtXj`d7<3<>;T2,cw`)zo%lou lljz,vaYwf}xTnd`31?02?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl?6;463\:$kh!rg-dg}(ddbr$~iQnup\flh;;78;7X> gsd-vc)`kq$h`fv re]sjqtXj`dT<?>4U1-dvc(un&mht#mcky-q`Zvi|{UiecQ>219V4*aun'xm#jmw.bnh|*tcWyd~Rlfn^014>S7'nxm"h gbz-gim'{nT|cz}_ckm[6413\:$kh!rg-dg}(ddbr$~iQnup\flhXpfx;<=>=6:W3+bta&{l$knv!cmi{+wbXxg~ySoga_ymq4566:?1^<"i}f/pe+be&jf`t"|k_qlwvZdnfVrd~=>?2328Q5)`zo$yj"ilx/aoo})ulVzexQhc=2=65=R8&myj#|i/fa{*fjlp&xoS}`{r^e`848582_;#j|i.sd,cf~)keas#jPpovq[be;:78;7X> gsd-vc)`kq$h`fv re]sjqtXoj682<h4U1-dvc(un&mht#mcky-q`Zvi|{UloR>>f:W3+bta&{l$knv!cmi{+wbXxg~ySjmP10d8Q5)`zo$yj"ilx/aoo})ulVzexQhc^02b>S7'nxm"h gbz-gim'{nT|cz}_fa\770<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlm7<3<9;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd8485>2_;#j|i.sd,cf~)keas#jPpovq[beXizxnk1<1279V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqab:46;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP0378Q5)`zo$yj"ilx/aoo})ulVzexQhc^cpv`aX9;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP2378Q5)`zo$yj"ilx/aoo})ulVzexQhc^cpv`aX;;30Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0>3:7?<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<2>>3;8Q5)`zo$yj"ilx/aoo})ulVzexQhc^cpv`aXl8692?74U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\`4:46;20Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0]36==R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnUo=R?=8:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb6W;837X> gsd-vc)`kq$h`fv re]sjqtXojUjkh_e3\773<]9%l~k }f.e`|+ekcq%yhR~ats]dgZ~hz9:;<?;4U1-dvc(un&mht#mcky-q`Zvi|{UloRv`r123573<]9%l~k }f.e`|+ekcq%yhR~ats]dgZ~hz9:;>??4U1-dvc(un&mht#mcky-tvZvi|{Uiec2?>338Q5)`zo$yj"ilx/aoo})pzVzexQmio>2:77<]9%l~k }f.e`|+ekcq%|~R~ats]amk:56;;0Y=!hrg,qb*adp'iggu!xr^rmpwYeag682?>4U1-dvc(un&mht#mcky-tvZvi|{UiecQ?219V4*aun'xm#jmw.bnh|*quWyd~Rlfn^314>S7'nxm"h gbz-gim'~xT|cz}_ckm[7473\:$kh!rg-dg}(ddbr${Qnup\flhX;;<0Y=!hrg,qb*adp'iggu!xr^rmpwYeagUsc>?0105?P6(o{l%~k!hcy,`hn~({U{by|Pbhl\|jt789;9:6[?/fpe*w`(ojr%oaew/vp\tkruWkceSua}012165=R8&myj#|i/fa{*fjlp&}yS}`{r^e`858582_;#j|i.sd,cf~)keas#z|Ppovq[be;978;7X> gsd-vc)`kq$h`fv ws]sjqtXoj692?>4U1-dvc(un&mht#mcky-tvZvi|{Ulo1=11g9V4*aun'xm#jmw.bnh|*quWyd~Ril_13e?P6(o{l%~k!hcy,`hn~({U{by|Pgb]25c=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[77a3\:$kh!rg-dg}(ddbr${Qnup\cfY4:?1^<"i}f/pe+be&jf`t"y}_qlwvZadWhyyij2?>348Q5)`zo$yj"ilx/aoo})pzVzexQhc^cpv`a;978=7X> gsd-vc)`kq$h`fv ws]sjqtXojUjkh<3<12>S7'nxm"h gbz-gim'~xT|cz}_fa\evtbo595>85Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]360=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnU:>85Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]160=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnU8>45Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5969:01^<"i}f/pe+be&jf`t"y}_qlwvZadWhyyijQk1=3=6<=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=1<1289V4*aun'xm#jmw.bnh|*quWyd~Ril_`qqabYc9595>55Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5Z6502_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkRj>_00;?P6(o{l%~k!hcy,`hn~({U{by|Pgb]bwwc`Wm;T>?64U1-dvc(un&mht#mcky-tvZvi|{UloRo|rde\`4Y4:<1^<"i}f/pe+be&jf`t"y}_qlwvZadWqey<=>?249V4*aun'xm#jmw.bnh|*quWyd~Ril_ymq4566:<1^<"i}f/pe+be&jf`t"y}_qlwvZadWqey<=>=369V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.Ob`aYulVnhSdQndeqvf5678=9h7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$Aljk_sf\`fYnWhnoxl?012\g|:66:90Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%FxlPdhde[rtXzmUa}:<4:W3+bta&{l$ka>!re-dv4(`zmi9"jl/LqvfZbnnoU|~R|k_uos04543\:$kh!rg-dh5(ul&my=#i}db0-vae(EziSigif^uq[wbX|dz=?95Z0.eqb+ta'nf;"j gs3-cwbd:'xoo"C|uc]gmc`X{UyhRzbp630<>S7'nxm"h gm2-va)`z8$l~im=.sf`+HurjVnbjkQxr^pg[qkwWjs7=3=n;T2,cw`)zo%l`= }d.eq5+aulj8%~im Mrwa[aoanV}ySjPtlr\g|:668;8n6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@}zb^fjbcYpzVxoSyc_ymq84869:h0Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%FxlPdhde[rtXzmUa}Qwos>0:47502_;#j|i.sd,ci6)zm%l~< hrea1*wbd'{nThnQf_10;?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcT=?64U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lY5:11^<"i}f/pe+bj7&{n$k?!gsf`6+tck&xoSimPi^11<>S7'nxm"h gm2-va)`z8$l~im=.sf`+wbXljUbS9=>;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoXe|r;<=<30?16?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?4;YT_89:7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\ip~78987=3=<;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoXe|r;<=<31?3277=R8&myj#|i/fn3*wb(o{;%kjl2/pgg*tcWmiTeRczx1236979::;0Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;692><4U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?2=>012?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?7;553\:$kh!rg-dh5(ul&my=#i}db0-vae(zmUooRgPmtz3454;;7;8:6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#jPdb]j[hs89:90>0>_RU374=R8&myj#|i/fn3*wb(o{;%kjl2/pgg*tcWmiTeRczx1236929;;1^<"i}f/pe+bj7&{n$k?!gsf`6+tck&xoSimPi^ov|567:5>5=>84U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?2;>0]PS54f3\:$kh!rg-dh5(ul&my=#|iwgv,VDKXZMUNBRHXFU31=>S7'nxm"h gm2-va)`z8$yjzh{/SCN[WC@G\^TIC?=b:W3+bta&{l$ka>!re-dv4(un~l#_OB_WCOMAYA_O^:=>=4U1-dvc(un&mg<#|k/fp2*w`pn}%hy|Pfvdw[vrf|lUM_@QIFe302>S7'nxm"h gm2-va)`z8$yjzh{/bwqvZ`pn}Uxxlzj_GQN[C@c9$Ce?55Z0.eqb+ta'nf;"j gs3-vcqa|&i~~Qiwgv\wqgsmVLXARHId0/Jj474;2_;#j|i.sd,ci6)zm%l~< }fvdw+fsuzVl|jyQ|t`vf[CUJWOLo>>84U1-dvc(un&mg<#|k/fp2*w`pn}%hy|Pfvdw[vrf|lUM_@QIFe0.Mk5?3\:$kh!rg-dh5(ul&my=#|iwgv,gptuWo}mxR}{aug\BVKXNOn9!D`>13:8Q5)`zo$yj"ic0/pg+bt6&{l|jy!jmqvz[cqa|Vli>:5Z0.eqb+ta'nf;"j gs3-vcqa|&of|ywPfvdw[l4b3\:$kh!rg-dh5(ul&my=#|iwgv,ahvsqVl|jyQf_np34565n2_;#j|i.sd,ci6)zm%l~< }fvdw+`kw|pUm{kzPi^mq45679;?0Y=!hrg,qb*ak8'xo#j|>.sdtbq)r{lxTzlbfd3;8Q5)`zo$yj"ic0/pg+btf{'xxx~!}al]fiur~WohTe>>4U1-dvc(un&mg<#|k/fpbw+tt|z%ym`Qjmqvz[cdXaVey<=>?369V4*aun'xm#jb?.sf,cwgt&{y"|nm^gntqXnkUbSb|?012240YT_9987X> gsd-vc)`d9$yh"i}ar,qwqu(zhgTi`~{y^da[lYhz9:;<<?:369V4*aun'xm#jb?.sf,cwgt&{y"|nm^gntqXnkUbSb|?012250YT_9997X> gsd-vc)`d9$yh"i}ar,qwqu(zhgTi`~{y^da[lYhz9:;<?9<2:W3+bta&{l$ka>!re-dvdu)zz~x#ob_dosp|YajVcTc>?01:;5c=R8&myj#|i/fn3*wb(zhgTzlbfd^dtbq443\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|d>95Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu110>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|?8?7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{9208Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXpfx7<3?>_HLU[54d3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSua}<0<257e<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~Ttb|32?326f=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}Usc2<>032b>S7'nxm"h gm2-va)uxg~y#naznu>3:4`<]9%l~k }f.eo4+tc'{zex!lotlw8486n2_;#j|i.sd,ci6)zm%y|cz}/bmvjq:568l0Y=!hrg,qb*ak8'xo#~ats-`kphs4:4:i6[?/fpe*w`(oe:%~i!}povq+firf}U;=h5Z0.eqb+ta'nf;"j rqlwv*eh}g~T=<k4U1-dvc(un&mg<#|k/srmpw)dg|dS??j;T2,cw`)zo%l`= }d.psjqt(kfexR==2:W3+bta&{l$ka>!re-qtkru'je~byQk1=2=67=R8&myj#|i/fn3*wb(zyd~"m`uov\`4:66;80Y=!hrg,qb*ak8'xo#~ats-`kphsWm;7>3<=;T2,cw`)zo%l`= }d.psjqt(kfexRj><2<15>S7'nxm"h gm2-va)uxg~y#naznu]g5Z65;2_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V:T=??4U1-dvc(un&mg<#|k/srmpw)dg|dSi?P1318Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\5Z7592_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V89?6[?/fpe*w`(oe:%~i!}povq+firf}Uo=R<P1338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\775<]9%l~k }f.eo4+tc'{zex!lotlw[a7X;V;986[?/fpe*w`(oe:%~i!}povq+firf}Uecy>?000;?P6(o{l%~k!hl1,tv*apiz$|y} r`o\bpjkWohTe?;4U1-dvc(un&mg<#y}/fubw+qt|z%ym`Qiumn\m7e<]9%l~k }f.eo4+qu'n}j#y|tr-qehYa}efTeRa}01236c=R8&myj#|i/fn3*rt(o~kx"z}{s.pbiZ`rdeUbSb|?01225=543\:$kh!rg-dh5(pz&m|m~ xsuq,vdkXn|fgSdQ`r123447?WZ];>k5Z0.eqb+ta'nf;"z| gvcp*rus{&xjaRhzlm]j[jt789::8<<j;T2,cw`)zo%l`= xr.etev(p{}y$~lcPftno[lYhz9:;<?8=e:W3+bta&{l$ka>!ws-dsdu)z~x#ob_gwohZoXg{:;<=;<2d9V4*aun'xm#jb?.vp,crgt&~y"|nm^dvhiYnWfx;<=>63528Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.Ob`aYpzVnjxlQlotlw[lYflm:;<=Qly=3=05=R8&myj#|i/fn3*rt(o~nh=#ykcdzw+HgclV}ySio{a^alqkrXaVkoh=>?0^az8683:2_;#j|i.sd,ci6){%l{im>.vf`a}r(EhnoSz|Pd`vb[firf}UbSljk0123[f;;7;:8;5Z0.eqb+ta'nf;"z| gvf`5+qcklr#@okd^uq[agsiVidyczPi^cg`5678Vir0>0>1^QT415<]9%l~k }f.eo4+qu'n}oo< xdbg{p*KflmU|~Rjnt`]`kphsW`Ujhi>?01]{kw:668;??6[?/fpe*w`(oe:%{!hwea2*rbdmq~$Aljk_vp\`drfWje~byQf_`fg4567Wqey0?0>1518Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.Ob`aYpzVnjxlQlotlw[lYflm:;<=Qwos>0:473?2_;#j|i.sd,ci6){%l{im>.vf`a}r(EhnoSz|Pd`vb[firf}UbSljk0123[}iu4:4:=R]X1558Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.Ob`aYpzVnjxlQlotlw[lYflm:;<=Qwos>0:47X[^88>6[?/fpe*w`(oe:%{!hwea2*rbdmq~$A~{m_ekebZquW{nTx`~9329V4*aun'xm#jb?.vp,crbd9'}oohv{/LqvfZbnnoU|~R|k_uos34503\:$kh!rg-dh5(pz&m|hn?!weaf|q)J{|hThdhi_vp\vaYseyUhu1?1389V4*aun'xm#jb?.vp,crbd9'}oohv{/LqvfZbnnoU|~R|k_uos[f;97;:?l5Z0.eqb+ta'nf;"z| gvf`5+qcklr#@}zb^fjbcYpzVxoSyc_ymq85869:k0Y=!hrg,qb*ak8'}y#jykc0,t`fc|&GxyoQkigd\swYulV~f|Rv`r=3=544a3\:$kh!rg-dh5(pz&m|hn?!weaf|q)caolT{Q}d^vnt969:o1^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'~xThlzn_bmvjqYnW98m7X> gsd-vc)`d9$|~"ixdb3-saebp}%|~Rjnt`]`kphsW`U:>k5Z0.eqb+ta'nf;"z| gvf`5+qcklr#z|Pd`vb[firf}UbS?<i;T2,cw`)zo%l`= xr.et`f7)minty!xr^fbpdYdg|dSdQ<2g9V4*aun'xm#jb?.vp,crbd9'}oohv{/vp\`drfWje~byQf_51;?P6(o{l%~k!hl1,tv*aplj;%{imjxu-tvZbf|hUhcx`{_h]b`a67896:2>64U1-dvc(un&mg<#y}/fugg4(pljosx"y}_ecweZeh}g~TeRokd1234949;11^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'~xThlzn_bmvjqYnWhno<=>?<2<2`>S7'nxm"h gm2-sw)uidU|~Rka_h317>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|;>0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|Vidycz<259V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjq05<2_;#j|i.sd,ci6){%||cz}/LalqkrXkfex4==;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[}iu494:=RGAV^21g>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vrd~1?1100`?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWqey0?0>13a8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXpfx7?3?>1g9V4*aun'xm#jb?.vp,suhsz&idycz30?3e?P6(o{l%~k!hl1,tv*qwf}x$ob{at=3=5c=R8&myj#|i/fn3*rt(yd~"m`uov?6;7a3\:$kh!rg-dh5(pz&}{by| cnwmp9599l1^<"i}f/pe+bj7&~x${}`{r.alqkrX88o0Y=!hrg,qb*ak8'}y#z~ats-`kphsW8;n7X> gsd-vc)`d9$|~"ynup,gjsi|V8:i6[?/fpe*w`(oe:%{!xpovq+firf}U8>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<2?>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3?5;453\:$kh!rg-dh5(pz&}{by| cnwmpZb64;49>6[?/fpe*w`(oe:%{!xpovq+firf}Uo=1=1209V4*aun'xm#jb?.vp,suhsz&idyczPd0]364=R8&myj#|i/fn3*rt(yd~"m`uov\`4Y6:81^<"i}f/pe+bj7&~x${}`{r.alqkrXl8U9><5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<Q<239V4*aun'xm#jb?.vp,suhsz&idyczPd3>3:74<]9%l~k }f.eo4+qu'~zex!lotlw[a4;97897X> gsd-vc)`d9$|~"ynup,gjsi|Vn90?0=2:W3+bta&{l$ka>!ws-ttkru'je~byQk2=1=64=R8&myj#|i/fn3*rt(yd~"m`uov\`7Y7::1^<"i}f/pe+bj7&~x${}`{r.alqkrXl;U;S<<>;T2,cw`)zo%l`= xr.usjqt(kfexRj=_000?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f1[4Y6:81^<"i}f/pe+bj7&~x${}`{r.alqkrXl;U9><5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th?Q<229V4*aun'xm#jb?.vp,suhsz&idyczPd3]0[4433\:$kh!rg-dh5(pz&}{by| cnwmpZhh|9:;=<84U1-dvc(un&gna"j`uu]j[5713\:$kh!rg-nah)cg|~TeR?>7:W3+bta&{l$ahc dnww[lY688=0Y=!hrg,qb*kbe&ndyyQf_0323>S7'nxm"h mdo,`jssW`U:><94U1-dvc(un&gna"j`uu]j[456?2_;#j|i.sd,i`k(lfSdQ>4058Q5)`zo$yj"cjm.flqqYnW8?:;6[?/fpe*w`(elg$hb{{_h]2241<]9%l~k }f.ofi*bh}}UbS<9>7:W3+bta&{l$ahc dnww[lY608<0Y=!hrg,qb*kbe&ndyyQf_335?P6(o{l%~k!bel-gkprXaV9::6[?/fpe*w`(elg$hb{{_h]753=R8&myj#|i/lgn+air|VcT9<84U1-dvc(un&gna"j`uu]j[3713\:$kh!rg-nah)cg|~TeR9>6:W3+bta&{l$ahc dnww[lY?9?1^<"i}f/pe+hcj'me~xRgP90g8Q5)`zo$yj"cjm.egi+bj'DxjaR\NM03e?P6(o{l%~k!bel-d`h(ce&Gym`Q]AL335c=R8&myj#|i/lgn+bbj&mg$Aob_SCN547a3\:$kh!rg-nah)`ld$oa"C}al]QEH759o1^<"i}f/pe+hcj'nnf"ic Mscn[WGJ9:;m7X> gsd-vc)jmd%lh` km.OqehYUID;?=k5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF=8?i;T2,cw`)zo%fi`!hdl,gi*KuidUYM@?91g9V4*aun'xm#`kb/ffn*ak(E{kfS_OB163e?P6(o{l%~k!bel-d`h(ce&Gym`Q]AL3;5c=R8&myj#|i/lgn+bbj&mg$Aob_SCN5<7b3\:$kh!rg-nah)`ld$oa"C}al]QEH46m2_;#j|i.sd,i`k(omg%h`!Br`o\VDK49l1^<"i}f/pe+hcj'nnf"ic Mscn[WGJ<8o0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE<;n7X> gsd-vc)jmd%lh` km.OqehYUID<:i6[?/fpe*w`(elg$kic!dl-NvdkXZHG<=h5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF4<k4U1-dvc(un&gna"ikm/fn+HtfeVXJA4<:;T2,cw`)zo%fi`!hdl,gi*Yqi{cehhv?012?4;413\:$kh!rg-nah)`ld$oa"Qyaskm``~789:7==0=6:W3+bta&{l$ahc geo-`h)X~hxbbikw01238479:?1^<"i}f/pe+hcj'nnf"ic _wcqmkbbp9:;<1?=>348Q5)`zo$yj"cjm.egi+bj'V|j~d`key2345:6;78=7X> gsd-vc)jmd%lh` km.]uewoillr;<=>315<12>S7'nxm"h mdo,cak)ld%Tzl|fneg{456748?5>;5Z0.eqb+ta'dof#jjb.eo,[sguagnnt=>?0=35:70<]9%l~k }f.ofi*ace'nf#Rxnrhlga}67896:;3<9;T2,cw`)zo%fi`!hdl,gi*Yqi{cehhv?012?5=85=2_;#j|i.sd,i`k(omg%h`!Pv`pjjac89:;0<0=5:W3+bta&{l$ahc geo-`h)X~hxbbikw01238785=2_;#j|i.sd,i`k(omg%h`!Pv`pjjac89:;0>0=5:W3+bta&{l$ahc geo-`h)X~hxbbikw01238185=2_;#j|i.sd,i`k(omg%h`!Pv`pjjac89:;080=5:W3+bta&{l$ahc geo-`h)X~hxbbikw01238385=2_;#j|i.sd,i`k(omg%h`!Pv`pjjac89:;0:0=5:W3+bta&{l$ahc geo-`h)X~hxbbikw01238=85=2_;#j|i.sd,i`k(omg%h`!Pv`pjjac89:;040>e:W3+bta&{l$ahc geo-`h)cg|~Te1>11g9V4*aun'xm#`kb/ffn*ak(lfSd2>0?3e?P6(o{l%~k!bel-d`h(ce&ndyyQf<03=5c=R8&myj#|i/lgn+bbj&mg$hb{{_h>26;7a3\:$kh!rg-nah)`ld$oa"j`uu]j84599o1^<"i}f/pe+hcj'nnf"ic dnww[l:6<7;m7X> gsd-vc)jmd%lh` km.flqqYn48?5=k5Z0.eqb+ta'dof#jjb.eo,`jssW`6::3?i;T2,cw`)zo%fi`!hdl,gi*bh}}Ub0<911g9V4*aun'xm#`kb/ffn*ak(lfSd2>8?3f?P6(o{l%~k!bel-d`h(ce&ndyyQf<0<2a>S7'nxm"h mdo,cak)ld%ocxzPi=0=5`=R8&myj#|i/lgn+bbj&mg$hb{{_h>0:4c<]9%l~k }f.ofi*ace'nf#iazt^k?0;7b3\:$kh!rg-nah)`ld$oa"j`uu]j8086m2_;#j|i.sd,i`k(omg%h`!kotv\m9099l1^<"i}f/pe+hcj'nnf"ic dnww[l:068o0Y=!hrg,qb*kbe&moa#jb/emvpZo;07;n7X> gsd-vc)jmd%lh` km.flqqYn404:h6[?/fpe*w`(elg$kic!dl-gkprXaV::h6[?/fpe*w`(elg$kic!dl-gkprXaV;:i6[?/fpe*w`(elg$kic!dl-gkprXaV;;=h5Z0.eqb+ta'dof#jjb.eo,`jssW`U:=<k4U1-dvc(un&gna"ikm/fn+air|VcT=??j;T2,cw`)zo%fi`!hdl,gi*bh}}UbS<=>e:W3+bta&{l$ahc geo-`h)cg|~TeR?;1d9V4*aun'xm#`kb/ffn*ak(lfSdQ>50g8Q5)`zo$yj"cjm.egi+bj'me~xRgP173f?P6(o{l%~k!bel-d`h(ce&ndyyQf_052a>S7'nxm"h mdo,cak)ld%ocxzPi^3;5a=R8&myj#|i/lgn+bbj&mg$hb{{_h]15a=R8&myj#|i/lgn+bbj&mg$hb{{_h]05a=R8&myj#|i/lgn+bbj&mg$hb{{_h]75a=R8&myj#|i/lgn+bbj&mg$hb{{_h]65a=R8&myj#|i/lgn+bbj&mg$hb{{_h]55a=R8&myj#|i/lgn+bbj&mg$hb{{_h]45a=R8&myj#|i/lgn+bbj&mg$hb{{_h];5a=R8&myj#|i/lgn+bbj&mg$hb{{_h]:52=R8&myj#|i/scn[wc`g|~Tic?k;T2,cw`)zo%yylck.pg[wusWhyyij<?;T2,cw`)zo%yylck.pg[wusWhyyijQk1328Q5)`zo$yj"||tcnh+wbXzz~Tm~|jg^f15f=R8&myj#|i/sqwfim(zmUyyQlol`2`>S7'nxm"h rrvahn)ulVxxxRm`mc32a>S7'nxm"h rrvahn)ulVxxxR|jg=2=5`=R8&myj#|i/sqwfim(zmUyyQ}ef>2:4c<]9%l~k }f.pppgjl'{nT~~zPrde?6;7c3\:$kh!rg-qwqdkc&xoS}{_sgd[57c3\:$kh!rg-qwqdkc&xoS}{_sgd[47c3\:$kh!rg-qwqdkc&xoS}{_sgd[77c3\:$kh!rg-qwqdkc&}yS}{_`qqab473\:$kh!rg-qwqdkc&}yS}{_`qqabYc9;:0Y=!hrg,qb*tt|kf`#z|Prrv\evtboVn9=n5Z0.eqb+ta'{ynae ws]qwqYdgdh:h6[?/fpe*w`(zz~i`f!xr^pppZehek;:i6[?/fpe*w`(zz~i`f!xr^pppZtbo5:5=h5Z0.eqb+ta'{ynae ws]qwqYumn6:2<j4U1-dvc(un&xxxobd/vp\vvrXzlmT<<j4U1-dvc(un&xxxobd/vp\vvrXzlmT=l5ZSDP\EIOF[j1^_H\PVHQJFIC43_IH56XFEV]W]UC33^IGG?5XE0f8\LJNFQ'SHO.?.0"PPPD'8';+M^MFI79[WQJNJ>1S_YQHNE`8\ZEHZLUBBKA9;Yfa[Lba3QncS]|fmWgqwlii991Sh`QBakmqR`ttafd:<6Vkm^OjjjtQm{ybccm4amolwqYbey~rn6ocmnqw[cskd?1imnezpe9aefmrxVgj~fk}3:aooa=ci}kTob{at)2*`>bf|hUhcx`{(0+g?agsiVidycz'2(f8`drfWje~by&<)e9geqgXkfex%:&d:fbpdYdg|d0=0i;ecweZeh}g~787>17:famqcuz?1oec&?)79gmk.6!>1oec&>0(58`lh/98#<7iga(00*3>bnf!;8%:5kio*20,1<l`d#=8'8;ekm,40.?2nbb%?8)69gmk.60 <0hd`'2(48`lh/; <0hd`'4(48`lh/= <0hd`'6(48`lh/? <0hd`'8(48`lh/1 <0hd`30?58`lh;994<7iga<03=3>bnf5;92:5kio>27;1<l`d7=908;ekm8439?2nbb1?9>69gmk:6?730hd`31983:2=cag6:4384dhl?5;0<l`d7>384dhl?7;0<l`d78384dhl?1;0<l`d7:384dhl?3;0<l`d74384dhl?=;1<lf$='8;emvp-7.02ndyy&>0(:8`jss 8;"46j`uu*26,><lf$<=&8:flqq.6< 20hb{{(07*<>bh}}"::$64dnww,41.02ndyy&>8(58`jss ;#<7iazt)1*3>bh}}"?%:5kotv+1,1<lf$;'8;emvp-1.?2ndyy&7)69gkpr/1 =0hb{{<1<;?air|5;;255kotv?548?3me~x1?=>99gkpr;9:437iazt=37:==cg|~7=807;emvp971611ocxz316<b?air|5;36=07;emvp97?6>1ocxz31?58`jss4;4<7iazt=1=3>bh}}6?2:5kotv?1;1<lf0;08;emvp919?2ndyy27>69gkpr;1720iigi2oeg1>cjx}s8>6hffn]dakcui}eyS{:P3-"[mioip)ID^H.Heogqeqiu(8:%=#><159emciXpedsS<8w18]1gim4:2lbjbQwloz\53~61V8h`f"iigm\c`hbzh~d~Rx;_2.MKKC+FFDN?oj4fhdl[}jipV;=t<7P2bnh(coagVmnbh|ntnp\r1Y4$riTdl}Piov\gim:8%iTdl}Pssqw95*dW{nTjk~=0.`[mgtW{nThlzn_bmvjq;6$jUoecQxievk94?+kVbjRy}_ecweZeh}g~6=!mPftno[cjfozUyyQyam?2(fYneyfnah`{aukljZr~xl79 nQzsd]figccllnT~hi20-a\swYazl{6=!mPurg\`jssW{y1<"l_tlgaw`kg~Ugcz3?,b]kevYh~lxm`by20-a\twckghnT`lzjnb{>4)eXlfSzgkti?2=)eXezmdbRxnl<3/gZtcWmo{xe3>6-a\lduX}gnn~kb`w<2/gZnf{Vkgab}{_gwoh86+kVbjR||t<3/gZbf|hUhcx`{_vkgpm;2$jUcm~Qxr^c`o86+kVxiRklc<2/gZehedeeSnb`cj?3(fYpzVkhgRb`w<2/gZtcWyd~Ryfduj>0)eX}zoTjzh{_ecweZeh}g~6=!mPh`q\eikh{}Una}zv=1.`[wbXlh~jSnaznu]tmaro5<&hSbxjrgnlsZjh4:'oRy}_qlwvZqnl}b68!mPpsmd[`kw|pUu}k20-a\swYci}kTob{at^uj`qn:=%iT|kco`f\v`at58&hSiazt^pppZpfd4:'oRfns^fbpdYdg|d1="l_qplcZ`rdeUdk|h^lfcdrbWkg1<:#c^uq[acw|a7::!mPpsmd[`kw|pUdk|h^lfcdrbWkg18"l_qplcZcjx}sTxe|jsi]bwvcu|V|j`0:#c^jbwZpfd`n6<!mPpsmd[cskdV~c~h}g_`qpawrX~hf6=8"lolrlj`hsWgkfi0hffn]{hk~X9?r:5R<llj.`[sgkamUgcz3?,b]svlkXn`ldSywe<726}51$jU{~biPftno[qwm4:'oRcjmnpz[qwm48'q?k4fhdl[}jipV;=t<7P2bnh[coagVmnbh|ntnp\r1Y4WqyS<:4ftno3>oi|Vigg55agb`vmib?3f|n~kb`w`9svjaXmdzu<:4psmd[`kw|pUdk|h)2*51=wzfmTi`~{y^vkv`uo 8#:86~}of]fiur~W}byi~f'2(37?uthoVof|ywPtipfwm.4!8<0|ah_dosp|Ys`{oxd1=50?3a?uthoVof|ywPtipfwmYf{zoyx%>&1c9svjaXmdzuRzgrdqk[dutm{~#=$?m;qplcZcjx}sTxe|jsi]bwvcu|!8"=o5rne\ahvsqV~c~h}g_`qpawr/; ;o7}|`g^gntqX|axneQnsrgqp95=87;i7}|`g^gntqX|axneQaefcwa-6.9k1{~biPelrw}ZrozlycSckhaug+5,7e3yxdkRkbpu{\pmtb{aUeijo{e)0*5g=wzfmTi`~{y^vkv`uoWgolmyk'3(3g?uthoVof|ywPtipfwmYimnki1=50?;8twi`Wog`<=4psmd[cskdV~c~h}g(1+27>vugnUmyabPtipfwm.6!890|ah_gwohZrozlyc$?'>3:rqkbYa}efTxe|jsi*0-43<x{elSk{cl^vkv`uo4:0;2<o4psmd[cskdV~c~h}g_`qpawr/8 ;j7}|`g^dvhiYs`{oxdRo|sdpw,4/6i2zycjQiumn\pmtb{aUj~k}t)0*5d=wzfmTjxbc_ujqavnXizyn~y&<)0a8twi`Wog`Rzgrdqk[dutm{~7?7>11`9svjaXn|fgSyf}erj\j`af|l";%<o4psmd[cskdV~c~h}g_ogdeqc/9 ;j7}|`g^dvhiYs`{oxdR`jg`vf,7/6i2zycjQiumn\pmtb{aUeijo{e)1*5f=wzfmTjxbc_ujqavnXflmjxh2<:1<5?wbXkea:<6|k_ecweZeh}g~#<$??;sf\`drfWje~by&>)028vaYci}kTob{at)0*55=ulVnjxlQlotlw,6/682xoSio{a^alqkr/< ;;7jPd`vb[firf}6;2<>4re]geqgXkfex1?1119q`Zbf|hUhcx`{<3<24>tcWmkmRm`uov?7;753{nThlzn_bmvjq:3294:<6|k_ecweZeh}g~783;4re]fj3=ulVxxx>5}su58wgosm{x?7~||t59wvpc>3|doihcov78rdjnl?1|~Rolk79tvZekc8:0{Qkauc\gjsi|!:"==5xr^fbpdYdg|d$<'>0:uq[agsiVidycz'2(33?rtXlh~jSnaznu*0-46<{UomyoPcnwmp-2.991|~Rjnt`]`kphs494:<6y}_ecweZeh}g~7=3??;vp\`drfWje~by2=>028swYci}kTob{at=1=57=pzVnjxlQlotlw81<768:0{Qkauc\gjsi|5>596y}_dl5?rtXzz~vLM~8d`9CD}7=N3>1=v];0;0;7?>=9:82<<h5a81gk45>3;0b?<8:59'672=:;:0q^=j:3:0>=<6;;3;=k4n92f8W0c=:1i1<7?<2822b?g>;l1X?h4=8b83>45519;m6l7<f:f1<3<7280:w^:?:3:0>=<6;;3;=k4n92f8rQd1290:6<4jezQ74?4?;321=><600d9e<5c3-8:h7;i;W011?4|}?=1=6{98;28y!d72o1i>5850;14>6<4?rB9=o5U39874g=900j644r$c:96=0<,;886?6:;h0ae?6=3f8h47>5$c096fb<fk;1<65`2b594?"e:38hh6`m1;38?j4d>3:1(o<52bf8jg7=:21d>n;50;&a6?4dl2di=7=4;n0`0?6=,k81>nj4nc390>=h:k91<7*m2;0a<>he93:07b<m2;29 g4=:k20bo?51:9l6g7=83.i>7<m8:la5?4<3f8i<7>5$c096g><fk;1?65`2`d94?"e:38i46`m1;68?l4dn3:17b<7a;29?j4?<3:17d<l3;29?l4ek3:17b<96;29 g4=:>20bo?50:9l633=83.i>7<88:la5?7<3f8=87>5$c0962><fk;1>65`27194?"e:38<46`m1;18?j41:3:1(o<526:8jg7=<21d>;?50;&a6?4002di=7;4;n054?6=,k81>:64nc392>=h:<l1<7*m2;04<>he93=07b<:e;29 g4=:>20bo?58:9l63c=83.i>7<88:la5??<3f8=h7>5$c0962><fk;1m65`27a94?"e:38<46`m1;`8?j41j3:1(o<526:8jg7=k21d>;o50;&a6?4002di=7j4;n05=?6=,k81>:64nc39a>=h:?21<7*m2;04<>he93l07b<97;29 g4=:>20bo?51198k73c290/n?4=799mf4<6921d>8m50;&a6?4002di=7?=;:k17c<72-h96?;>;o`2>5=<a;9n6=4+b38114=ij80:76g=3e83>!d52;?:7cl>:398m75d290/n?4=509mf4<432c9?o4?:%`1>7363gh:6954i31b>5<#j;099<5ab086?>o5;00;6)l=:372?kd62?10e?=7:18'f7<5=81en<48;:k172<72-h96?;>;o`2>==<a;><6=4+b38114=ij80276g=4783>!d52;?:7cl>:`98m722290/n?4=509mf4<e32c9894?:%`1>7363gh:6n54i360>5<#j;099<5ab08g?>o5<;0;6)l=:372?kd62l10e?:>:18'f7<5=81en<4i;:k105<72-h96?;>;o`2>46<3`88:7>5$c09607<fk;1=<54i316>5<#j;099<5ab0826>=n:ho1<75m20a94?7=83:pD??m;%`;>77d3fkm6=44}c77>5<6290;wE<>b:&a<?333f?86=44}c14>5<1=3n86hktH33a?_5?28<p=?4>a;3:>40=910:87o5108:>43=9:0:47?n:`82=?75200::7?::06956<693w/n54=889'1f<2:2.8o7<77:&0b?4?02.jn7oj;h0af?6=3f82i7>5;h0aa?6=3f8947>5;n0`5?6=3`89n7>5;h0:3?6=,k81>464nc394>=n:0<1<7*m2;0:<>he93;07d<65;29 g4=:020bo?52:9j6<2=83.i>7<68:la5?5<3`8im7>5;n0;`?6=3f8h47>5$c096fb<fk;1<65`2b594?"e:38hh6`m1;38?j4d>3:1(o<52bf8jg7=:21d>n;50;&a6?4dl2di=7=4;n0`0?6=,k81>nj4nc390>=h:k91<7*m2;0a<>he93:07b<m2;29 g4=:k20bo?51:9l6g7=83.i>7<m8:la5?4<3f8i<7>5$c096g><fk;1?65`2`d94?"e:38i46`m1;68?l4fk3:1(o<52`f8jg7=821b>ll50;&a6?4fl2di=7?4;h0be?6=,k81>lj4nc396>=n:h31<7*m2;0b`>he93907d<lf;29?j4493:1(o<52218jg7=821d>>>50;&a6?44;2di=7?4;n01b?6=,k81>>=4nc396>=h:;o1<7*m2;007>he93907b<=d;29 g4=::90bo?54:9l6=g=831d>5:50;9j6d4=83.i>7<n3:la5?6<3`8j=7>5$c096d5<fk;1=65f2`294?"e:38j?6`m1;08?l4>n3:1(o<52`18jg7=;21b>n=50;9j6=d=831b>?m50;9j6a6=831d>oj50;9l6f4=831d>?750;9l6f6=831b>om50;9l630=83.i>7<88:la5?6<3f8=97>5$c0962><fk;1=65`27694?"e:38<46`m1;08?j41;3:1(o<526:8jg7=;21d>;<50;&a6?4002di=7:4;n055?6=,k81>:64nc391>=h:?:1<7*m2;04<>he93<07b<:f;29 g4=:>20bo?57:9l60c=83.i>7<88:la5?><3f8=i7>5$c0962><fk;1565`27f94?"e:38<46`m1;c8?j41k3:1(o<526:8jg7=j21d>;l50;&a6?4002di=7m4;n05e?6=,k81>:64nc39`>=h:?31<7*m2;04<>he93o07b<98;29 g4=:>20bo?5f:9l631=83.i>7<88:la5?7732e99i4?:%`1>71?3gh:6<?4;n06g?6=,k81>:64nc3957=<a;396=4+b381=6=ij80;76g=9083>!d52;387cl>:098m7?7290/n?4=929mf4<532c94k4?:%`1>7?43gh:6>54i31e>5<#j;099<5ab083?>o5;l0;6)l=:372?kd62810e?=k:18'f7<5=81en<4=;:k17f<72-h96?;>;o`2>6=<a;9i6=4+b38114=ij80?76g=3`83>!d52;?:7cl>:498m75>290/n?4=509mf4<132c9?54?:%`1>7363gh:6:54i314>5<#j;099<5ab08;?>o5<>0;6)l=:372?kd62010e?:9:18'f7<5=81en<4n;:k100<72-h96?;>;o`2>g=<a;>?6=4+b38114=ij80h76g=4283>!d52;?:7cl>:e98m725290/n?4=509mf4<b32c98<4?:%`1>7363gh:6k54i363>5<#j;099<5ab0824>=n::<1<7*m2;065>he93;:76g=3483>!d52;?:7cl>:008?l45i3:17d<n7;29 g4=:h20bo?50:9j6d0=83.i>7<n8:la5?7<3`8j97>5$c096d><fk;1>65f2`694?"e:38j46`m1;18?l4>k3:1(o<528f8jg7=821b>4l50;&a6?4>l2di=7?4;h0:e?6=,k81>4j4nc396>=n:031<7*m2;0:`>he93907b<7e;29?j44<3:17d<ne;29?g45:3:1=7>50z&a<?333A89=6F=1c9l16<722wi>=650;194?6|,k218l5G2338L77e3A9>7)89:3`e?!3f2;1b?44?::k75?6=3fh?6=44}c027?6=;3:1<v*m8;6b?M4592B9=o5G349'23<5jo1/9l4=;h1:>5<<a=;1<75`b583>>{e:9=1<7=50;2x g>=<h1C>??4H33a?M523-<=6?li;%7b>7=n;00;66g;1;29?jd32900qo<>1;291?6=8r.i47;?;I015>N59k1C?85+6781fc=#=h097d=6:188m6d=831b8<4?::ka7?6=3fh?6=44}c026?6=;3:1<v*m8;6b?M4592B9=o5G349'23<5jo1/9l4=;h1:>5<<a=;1<75`b583>>{e:9<1<7;50;2x g>==91C>??4H33a?M523-<=6?li;%7b>7=n;00;66g<b;29?l262900eo=50;9lf1<722wi><>50;694?6|,k218k5G2338L77e3-?j6?5f3883>>o393:17dl<:188kg2=831vn?>i:187>5<7s-h369h4H302?M46j2.>m7<4i2;94?=n<80;66gm3;29?jd32900qo<?e;290?6=8r.i47:i;I015>N59k1/9l4=;h1:>5<<a=;1<75fb283>>ie<3:17pl=1883>1<729q/n54;f:J164=O:8h0(8o52:k0=?6=3`>:6=44ic194?=hj=0;66sm20:94?2=83:p(o654g9K677<@;;i7);n:39j7<<722c?=7>5;h`0>5<<gk>1<75rb01a>5<3290;w)l7:5d8L7463A8:n6*:a;58m6?=831b8<4?::ka7?6=3fh?6=44}c32f?6==3:1<v*m8;6g?M4592B9=o5+5`81?l5>2900e>j50;9j04<722ci?7>5;n`7>5<<uk;:o7>55;294~"e03>o7E<=1:J15g=#=h097d=6:188m6b=831b8<4?::ka7?6=3fh?6=44}c32`?6==3:1<v*m8;6g?M4592B9=o5+5`81?l5>2900e>j50;9j04<722ci?7>5;n`7>5<<uk;:i7>55;294~"e03>o7E<=1:J15g=#=h097d=6:188m6b=831b8<4?::ka7?6=3fh?6=44}c32b?6==3:1<v*m8;6g?M4592B9=o5+5`81?l5>2900e>j50;9j04<722ci?7>5;n`7>5<<uk;>;7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c36=?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;>n7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c36`?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;==7>54;294~"e03>m7E<=1:J15g=#=h097d=6:188m17=831bn>4?::ma0?6=3th::=4?:583>5}#j10?j6F=209K64d<,<k1>6g<9;29?l262900eo=50;9lf1<722wi=4k50;794?6|,k218n5G2338L77e3-?j6?5f3883>>o4j3:17d=k:188m17=831dn94?::a5d6=83?1<7>t$c:90f=O:;;0D??m;%7b>7=n;00;66g<b;29?l5c2900e9?50;9lf1<722wi=l<50;794?6|,k218n5G2338L77e3-?j6?5f3883>>o4j3:17d=k:188m17=831dn94?::a5d5=83?1<7>t$c:90f=O:;;0D??m;%7b>7=n;00;66g<b;29?l5c2900e9?50;9lf1<722wi=4750;794?6|,k218n5G2338L77e3-?j6?5f3883>>o4j3:17d=k:188m17=831dn94?::a5<>=83?1<7>t$c:90f=O:;;0D??m;%7b>7=n;00;66g<b;29?l5c2900e9?50;9lf1<722wi=4950;794?6|,k218n5G2338L77e3-?j6?5f3883>>o4j3:17d=k:188m17=831dn94?::a5<0=83?1<7>t$c:915=O:;;0D??m;%7b>2=n;00;66g<b;29?l262900eo=50;9lf1<722wi=:750;694?6|,k218o5G2338L77e3-?j6?5f3883>>o4l3:17d:>:188kg2=831vn<9n:187>5<7s-h369l4H302?M46j2.>m7<4i2;94?=n;m0;66g;1;29?jd32900qo?8b;290?6=8r.i47:m;I015>N59k1/9l4=;h1:>5<<a:n1<75f4083>>ie<3:17pl>7b83>1<729q/n54;b:J164=O:8h0(8o52:k0=?6=3`9o6=44i5394?=hj=0;66sm16f94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rb0:f>5<2290;w)l7:5a8L7463A8:n6*:a;08m6?=831b?o4?::k0`?6=3`>:6=44oc694?=zj82m6=4::183!d?2<:0D?<>;I02f>"2i3=0e>750;9j7g<722c?=7>5;h`0>5<<gk>1<75rb0;3>5<2290;w)l7:5a8L7463A8:n6*:a;08m6?=831b?o4?::k0`?6=3`>:6=44oc694?=zj83:6=4::183!d?2=i0D?<>;I02f>"2i380e>750;9j7g<722c8h7>5;h62>5<<gk>1<75rb06e>5<2290;w)l7:428L7463A8:n6*:a;58m6?=831b?o4?::k75?6=3`h86=44oc694?=zj8?96=4::183!d?2=i0D?<>;I02f>"2i380e>750;9j7g<722c8h7>5;h62>5<<gk>1<75rb073>5<2290;w)l7:5a8L7463A8:n6*:a;08m6?=831b?o4?::k0`?6=3`>:6=44oc694?=zj8?:6=4::183!d?2=i0D?<>;I02f>"2i380e>750;9j7g<722c8h7>5;h62>5<<gk>1<75rbba94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbb`94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbbc94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbb;94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbg094?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbg394?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbg294?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbdd94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rb02g>5<3290;w)l7:5`8L7463A8:n6*:a;08m6?=831b?i4?::k75?6=3fh?6=44}c33g?6=<3:1<v*m8;6a?M4592B9=o5+5`81?l5>2900e>j50;9j04<722ei87>5;|`24g<72=0;6=u+b987f>N5:81C><l4$4c96>o413:17d=k:188m17=831dn94?::a55g=83>1<7>t$c:90g=O:;;0D??m;%7b>7=n;00;66g<d;29?l262900co:50;9~f`1=83>1<7>t$c:90g=O:;;0D??m;%7b>7=n;00;66g<d;29?l262900co:50;9~f`0=83>1<7>t$c:90g=O:;;0D??m;%7b>7=n;00;66g<d;29?l262900co:50;9~f`3=83>1<7>t$c:90g=O:;;0D??m;%7b>7=n;00;66g<d;29?l262900co:50;9~f`2=83>1<7>t$c:90g=O:;;0D??m;%7b>7=n;00;66g<d;29?l262900co:50;9~f462290?6=4?{%`;>1d<@;8:7E<>b:J01>"1>38ij6*:a;08m6?=831b?i4?::k75?6=3fh?6=44}c330?6=<3:1<v*m8;6a?M4592B9=o5G349'23<5jo1/9l4=;h1:>5<<a:n1<75f4083>>ie<3:17pl>0283>1<729q/n54;b:J164=O:8h0D>;4$7496g`<,<k1>6g<9;29?l5c2900e9?50;9lf1<722wi==<50;694?6|,k218o5G2338L77e3A9>7)89:3`e?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjml1<7:50;2x g>=<k1C>??4H33a?M523-<=6?li;%7b>7=n;00;66g<d;29?l262900co:50;9~fac=83>1<7>t$c:90g=O:;;0D??m;I16?!012;hm7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbef94?2=83:p(o654c9K677<@;;i7E=:;%45>7da3-?j6?5f3883>>o4l3:17d:>:188kg2=831vnim50;694?6|,k218o5G2338L77e3A9>7)89:3`e?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjm=1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjm<1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjm?1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjm>1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjon1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjoi1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjoh1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjok1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zj8986=4;:183!d?2=h0D?<>;I02f>"2i380e>750;9j7a<722c?=7>5;n`7>5<<uk;8<7>54;294~"e03>i7E<=1:J15g=#=h097d=6:188m6b=831b8<4?::ma0?6=3th:?l4?:583>5}#j10?n6F=209K64d<,<k1>6g<9;29?l5c2900e9?50;9lf1<722wi=>950;694?6|,k218k5G2338L77e3-?j6:5f3883>>o393:17dl<:188kg2=831vn<=9:187>5<7s-h369h4H302?M46j2.>m794i2;94?=n<80;66gm3;29?jd32900qo?i2;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7a;3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?id;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7am3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?if;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg4783:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo<?1;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg47:3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo<?3;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg47<3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?i4;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7a=3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?i6;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7a?3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?i8;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7a13:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?ia;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7aj3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?ic;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7d=3:1h7>50z&a<?d23A89=6F=1c9j75<722c8=7>5;h11>5<<a:91<75f4083>>o3=3:17d:9:188m11=831b854?::k15`<722c9=k4?::ma3?6=3f>?6=44}c3a=?6=l3:1<v*m8;`6?M4592B9=o5f3183>>o493:17d==:188m65=831b8<4?::k71?6=3`>=6=44i5594?=n<10;66g=1d83>>o59o0;66am7;29?j232900qo?l4;29`?6=8r.i47l:;I015>N59k1b?=4?::k05?6=3`996=44i2194?=n<80;66g;5;29?l212900e9950;9j0=<722c9=h4?::k15c<722ei;7>5;n67>5<<uk;h:7>5d;294~"e03h>7E<=1:J15g=n;90;66g<1;29?l552900e>=50;9j04<722c?97>5;h65>5<<a==1<75f4983>>o59l0;66g=1g83>>ie?3:17b:;:188yg7d?3:1h7>50z&a<?d23A89=6F=1c9j75<722c8=7>5;h11>5<<a:91<75f4083>>o3=3:17d:9:188m11=831b854?::k15`<722c9=k4?::ma3?6=3f>?6=44}c3`e?6=l3:1<v*m8;`6?M4592B9=o5f3183>>o493:17d==:188m65=831b8<4?::k71?6=3`>=6=44i5594?=n<10;66g=1d83>>o59o0;66am7;29?j232900qo?l8;29`?6=8r.i47l:;I015>N59k1b?=4?::k05?6=3`996=44i2194?=n<80;66g;5;29?l212900e9950;9j0=<722c9=h4?::k15c<722ei;7>5;n67>5<<uk;h57>5d;294~"e03h>7E<=1:J15g=n;90;66g<1;29?l552900e>=50;9j04<722c?97>5;h65>5<<a==1<75f4983>>o59l0;66g=1g83>>ie?3:17b:;:188yg7dj3:1h7>50z&a<?d23A89=6F=1c9j75<722c8=7>5;h11>5<<a:91<75f4083>>o3=3:17d:9:188m11=831b854?::k15`<722c9=k4?::ma3?6=3f>?6=44}c3ae?6=l3:1<v*m8;`6?M4592B9=o5f3183>>o493:17d==:188m65=831b8<4?::k71?6=3`>=6=44i5594?=n<10;66g=1d83>>o59o0;66am7;29?j232900qo?md;29`?6=8r.i47l:;I015>N59k1b?=4?::k05?6=3`996=44i2194?=n<80;66g;5;29?l212900e9950;9j0=<722c9=h4?::k15c<722ei;7>5;n67>5<<uk;in7>5d;294~"e03h>7E<=1:J15g=n;90;66g<1;29?l552900e>=50;9j04<722c?97>5;h65>5<<a==1<75f4983>>o59l0;66g=1g83>>ie?3:17b:;:188yg7ek3:1h7>50z&a<?d23A89=6F=1c9j75<722c8=7>5;h11>5<<a:91<75f4083>>o3=3:17d:9:188m11=831b854?::k15`<722c9=k4?::ma3?6=3f>?6=44}c3aa?6=l3:1<v*m8;`6?M4592B9=o5f3183>>o493:17d==:188m65=831b8<4?::k71?6=3`>=6=44i5594?=n<10;66g=1d83>>o59o0;66am7;29?j232900qo?mf;29`?6=8r.i47l:;I015>N59k1b?=4?::k05?6=3`996=44i2194?=n<80;66g;5;29?l212900e9950;9j0=<722c9=h4?::k15c<722ei;7>5;n67>5<<uk;h<7>5d;294~"e03h>7E<=1:J15g=n;90;66g<1;29?l552900e>=50;9j04<722c?97>5;h65>5<<a==1<75f4983>>o59l0;66g=1g83>>ie?3:17b:;:188yg7d93:1h7>50z&a<?d23A89=6F=1c9j75<722c8=7>5;h11>5<<a:91<75f4083>>o3=3:17d:9:188m11=831b854?::k15`<722c9=k4?::ma3?6=3f>?6=44}c3`6?6=l3:1<v*m8;`6?M4592B9=o5f3183>>o493:17d==:188m65=831b8<4?::k71?6=3`>=6=44i5594?=n<10;66g=1d83>>o59o0;66am7;29?j232900qo?l3;29`?6=8r.i47l:;I015>N59k1b?=4?::k05?6=3`996=44i2194?=n<80;66g;5;29?l212900e9950;9j0=<722c9=h4?::k15c<722ei;7>5;n67>5<<uk;i<7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3bb?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;ji7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3b`?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;jo7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3bf?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;jm7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3b=?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;j47>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3a<?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;i;7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3a2?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;i97>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3a0?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;i?7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3a6?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;i=7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3b3?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;j:7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c021?6=;3:1<v*m8;43?M4592B9=o5+5`824>o2>3:17d;8:188kdb=831vn?>n:180>5<7s-h36;>4H302?M46j2.>m7??;h75>5<<a<=1<75`ae83>>{e91=1<7=50;2x g>=>91C>??4H33a?!3f28i0e8850;9j12<722ejh7>5;|`233<72:0;6=u+b9854>N5:81C><l4$4c95f=n=?0;66g:7;29?jgc2900qo?;8;297?6=8r.i478?;I015>N59k1/9l4>c:k62?6=3`?<6=44o`f94?=zjj>1<7=50;2x g>=>91C>??4H33a?!3f28i0e8850;9j12<722ejh7>5;|``7?6=;3:1<v*m8;43?M4592B9=o5+5`82g>o2>3:17d;8:188kdb=831vnn<50;194?6|,k21:=5G2338L77e3-?j6<m4i4494?=n=>0;66and;29?xdem3:1?7>50z&a<?073A89=6F=1c9'1d<6k2c>:7>5;h74>5<<ghn1<75rbcf94?5=83:p(o65619K677<@;;i7);n:0a8m00=831b9:4?::mb`?6=3thio7>53;294~"e03<;7E<=1:J15g=#=h0:o6g:6;29?l302900clj50;9~f455290?6=4?{%`;>34<@;8:7E<>b:&6e?443`?=6=44i4594?=n=10;66and;29?xd6010;694?:1y'f=<1:2B9><5G20`8 0g=:81b9;4?::k63?6=3`?36=44o`f94?=zj8>26=4;:183!d?2?80D?<>;I02f>"2i38:7d;9:188m01=831b954?::mb`?6=3th:?44?:483>5}#j10=?6F=209K64d<,<k1?l5f5783>>o2?3:17d;7:188m0?=831dmi4?::a5=?=83?1<7>t$c:926=O:;;0D??m;%7b>74<a<<1<75f5683>>o203:17d;6:188kdb=831vn<:n:186>5<7s-h36;=4H302?M46j2.>m7<=;h75>5<<a<=1<75f5983>>o213:17bok:188yg74=3:197>50z&a<?043A89=6F=1c9'1d<582c>:7>5;h74>5<<a<21<75f5883>>ifl3:17pl>2d83>1<729q/n5492:J164=O:8h0(8o5e:k62?6=3`?<6=44i4:94?=him0;66sm16594?3=83:p(o65629K677<@;;i7);n:0`8m00=831b9:4?::k6<?6=3`?26=44o`f94?=zj82:6=4<:183!d?2?:0D?<>;I02f>"2i3h0e8850;9j12<722ejh7>5;|`26a<72<0;6=u+b9857>N5:81C><l4$4c9`>o2>3:17d;8:188m0>=831b944?::mb`?6=3th:>k4?:283>5}#j10=<6F=209K64d<,<k1=n5f5783>>o2?3:17bok:188yg70;3:1?7>50z&a<?073A89=6F=1c9'1d<502c>:7>5;h74>5<<ghn1<75rb037>5<4290;w)l7:728L7463A8:n6*:a;0;?l312900e8950;9lea<722wink4?:283>5}#j10=<6F=209K64d<,<k1=n5f5783>>o2?3:17bok:188ygd>29086=4?{%`;>36<@;8:7E<>b:&6e?7d3`?=6=44i4594?=him0;66sm10c94?3=83:p(o65629K677<@;;i7);n:058m00=831b9:4?::k6<?6=3`?26=44o`f94?=zj8>;6=4::183!d?2?90D?<>;I02f>"2i38>7d;9:188m01=831b954?::k6=?6=3fko6=44}c375?6==3:1<v*m8;40?M4592B9=o5+5`81e>o2>3:17d;8:188m0>=831b944?::mb`?6=3th::;4?:483>5}#j10=?6F=209K64d<,<k1>l5f5783>>o2?3:17d;7:188m0?=831dmi4?::a531=83?1<7>t$c:926=O:;;0D??m;%7b>7g<a<<1<75f5683>>o203:17d;6:188kdb=831vn<87:186>5<7s-h36;=4H302?M46j2.>m7<n;h75>5<<a<=1<75f5983>>o213:17bok:188yg71=3:197>50z&a<?043A89=6F=1c9'1d<312c>:7>5;h74>5<<a<21<75f5883>>ifl3:17pl>3e83>0<729q/n5493:J164=O:8h0(8o52`9j13<722c>;7>5;h7;>5<<a<31<75`ae83>>{e9?o1<7;50;2x g>=>:1C>??4H33a?!3f2;n0e8850;9j12<722c>47>5;h7:>5<<ghn1<75rb007>5<2290;w)l7:718L7463A8:n6*:a;18m00=831b9:4?::k6<?6=3`?26=44o`f94?=zjj:1<7:50;2x g>=>;1C>??4H33a?!3f2;h0e8850;9j12<722c>47>5;ncg>5<<ukhj6=4;:183!d?2?80D?<>;I02f>"2i38i7d;9:188m01=831b954?::mb`?6=3th:>;4?:483>5}#j10=?6F=209K64d<,<k1>n5f5783>>o2?3:17d;7:188m0?=831dmi4?::a57e=83?1<7>t$c:926=O:;;0D??m;%7b>1c<a<<1<75f5683>>o203:17d;6:188kdb=831vn<<m:186>5<7s-h36;=4H302?M46j2.>m784i4494?=n=>0;66g:8;29?l3>2900clj50;9~f40d290>6=4?{%`;>35<@;8:7E<>b:&6e?253`?=6=44i4594?=n=10;66g:9;29?jgc2900qo?9b;297?6=8r.i478?;I015>N59k1/9l4m;h75>5<<a<=1<75`ae83>>{e9;91<7;50;2x g>=>:1C>??4H33a?!3f2<1b9;4?::k63?6=3`?36=44i4;94?=him0;66sm16294?3=83:p(o65629K677<@;;i7);n:0g8m00=831b9:4?::k6<?6=3`?26=44o`f94?=zj8=:6=4::183!d?2?90D?<>;I02f>"2i39?7d;9:188m01=831b954?::k6=?6=3fko6=44}c35b?6==3:1<v*m8;40?M4592B9=o5+5`802>o2>3:17d;8:188m0>=831b944?::mb`?6=3th::94?:583>5}#j10=>6F=209K64d<,<k1>95f5783>>o2?3:17d;7:188kdb=831vn<=j:186>5<7s-h36;=4H302?M46j2.>m7;>;h75>5<<a<=1<75f5983>>o213:17bok:188yg7513:197>50z&a<?043A89=6F=1c9'1d<3;2c>:7>5;h74>5<<a<21<75f5883>>ifl3:17pl>2983>0<729q/n5493:J164=O:8h0(8o51e9j13<722c>;7>5;h7;>5<<a<31<75`ae83>>{e9?n1<7;50;2x g>=>:1C>??4H33a?!3f2;o0e8850;9j12<722c>47>5;h7:>5<<ghn1<75rbb394?3=83:p(o65629K677<@;;i7);n:0d8m00=831b9:4?::k6<?6=3`?26=44o`f94?=zjkh1<7;50;2x g>=>:1C>??4H33a?!3f28l0e8850;9j12<722c>47>5;h7:>5<<ghn1<75rb003>5<3290;w)l7:708L7463A8:n6*:a;a8m00=831b9:4?::k6<?6=3fko6=44}c3b0?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;>o7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3:b?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;j=7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c36a?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;>47>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c36e?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;3:7>52;294~"e03?i7E<=1:J15g=n=<0;66and;29?xd6<>0;6?4?:1y'f=<2j2B9><5G20`8m03=831dmi4?::a54?=83<1<7>t$c:921=O:;;0D??m;%7b>4d<a<<1<75f5683>>o203:17d;6:188k0b=831dmi4?::a540=8391<7>t$c:924=O:;;0D??m;%7b>7><a<<1<75f5683>>i2l3:17pl>7483>3<729q/n5494:J164=O:8h0(8o5269j13<722c>;7>5;h7;>5<<a<31<75`5e83>>ifl3:17pl>1983>3<729q/n5494:J164=O:8h0(8o5279j13<722c>;7>5;h7;>5<<a<31<75`5e83>>ifl3:17pl>6283>0<729q/n5495:J164=O:8h0(8o54:k62?6=3`?<6=44i4:94?=n=00;66a:d;29?xd6;o0;684?:1y'f=<1=2B9><5G20`8 0g=:01b9;4?::k63?6=3`?36=44i4;94?=h=m0;66sm13394?3=83:p(o65649K677<@;;i7);n:3d8m00=831b9:4?::k6<?6=3`?26=44o4f94?=z{;hj6=49{_0ae>;6;;0>463>3886=>;6;<0>563>2d862>;6:m0>:6s|22094?7dsW8886P=289]6f4<V;i;7S<=8:\1fa=Y:1n0R?m>;_0;a>X51l1U>>?4^313?[45n2T9>h5Q23f897452<901??>:53897612=;01???:538976a2=;01?>j:538977>2=;01??7:538947e2k901<?l:c18947c2k901<?j:c18947a2k90q~<mc;297~X5jj16><?5b29>650=j:1v?6;:181[4?<27:?:4m4:p6f`=839pR?mi;<3;5?3134;=87;9;|q1e`<72<>pR?oj;<03<?5>348;;7=6;<032?5>348:<7=6;<03b?5>348;i7=6;<30f?5>34;:n7=6;<32g?5>34;:h7=6;<32a?5>34;:j7=6;<363?5>34;>57=6;<36f?5>34;>h7=6;<37b?5>34;>>7=6;<364?5>34;>=7=6;<d1>6?<5o;1?452f180=>;bn39270??d;1:?877k39270??b;1:?877i39270??5;1:?877<39270??3;1:?877:39270j8:2;89a0=;016h84<9:?g0?5>34;8?7=6;<304?5>34;8m7=6;<303?5>34;8:7=6;<3e6?5>34;m?7=6;<3e`?5>34;mi7=6;<3eb?5>348;<7=6;<035?5>348;>7=6;<037?5>348;87=6;<3e0?5>34;m97=6;<3e2?5>34;m;7=6;<3e<?5>34;m57=6;<3ee?5>34;mn7=6;<3eg?5>34;i<7=6;<3bb?5>34;ji7=6;<3b`?5>34;jo7=6;<3bf?5>34;jm7=6;<3b=?5>34;j47=6;<3a<?5>34;i;7=6;<3a2?5>34;i97=6;<3a0?5>34;i?7=6;<3a6?5>34;i=7=6;<3b3?5>34;j:7=6;<36g?5>34;>i7=6;<36<?5>34;>m7=6;|q1<d<72;qU>5o4=042>g2<uz8h?7>53gy]6f5<5;;86>74=332>6?<5;;96>74=33:>6?<5;;36>74=042>6?<58<;6>74=0;f>6?<58k;6>74=0c1>6?<58k86>74=0;:>6?<58336>74=0;4>6?<583=6>74=05:>6?<58=j6>74=05a>6?<58=h6>74=05g>6?<582n6>74=0:e>6?<583;6>74=0;2>6?<5ji1?452cc80=>;di39270m6:2;89`1=;016i;4<9:?f1?5>34o?6>74=ed97<=:ll08563kd;1:?8bd2:301kj5389>bf<4127mn7=6;<db>6?<58i>6??j;<3a=?46m27:o94=1d9>5f0=:8o01<m8:33f?87di38:i63>c9815`=:9j31><k4=0aa>77b34;im7<>e:?2fa<59l16=ol520g894dd2;;n70?me;02a>;6jo09=h521b2964c<58i:6??j;<3`6?46m27:o>4=1d9>5d2=;016=4h5389>5d7=;01v?mj:181[4d027:;i4m4:p6fe=838pR?m8;<34g?d33ty9oo4?:3y]6f0<58=i6o:4}r0`e?6=:rT9o85216c9f1=z{;i26=4={_0`0>;6?00i86s|26;94?4|V;<=70?m0;`7?xu5?>0;6?uQ277894ga2k>0q~<86;296~X5>=16=lk5b59~w7122909wS<93:?2ea<e<2wx>::50;0xZ70534;jo7l;;|q136<72;qU>;?4=0ca>g2<uz8<>7>52z\125=:9hk1n95rs352>5<5sW8>j63>a88a0>{t:>:1<7<t^37f?87f03h?7p}=8383>7}Y:?o01<l7:c68yv4?93:1>vP=6e9>5g1=j=1v?6?:181[41k27:n;4m4:p62`=838pR?8m;<3a1?d33ty9;h4?:3y]63g<58h?6o:4}r04`?6=:rT9:4521c19f1=z{;=h6=4={_05<>;6j;0i86s|26`94?4|V;<<70?m1;`7?xu5?h0;6?uQ24f894g02k>0q~<9f;296~X5=j16=l85b59~w7d>2909wS<m3:?25c<e<2wx>o950;0xZ7d534;:i7l;;|q1f3<72;qU>o?4=03g>g2<uz8i97>52z\1f5=:98i1n95rs3`7>5<5sW8jj63>1c8a0>{t:<81<7<t^31e?87d;3>:7p}=5183>7}Y::o01<m=:538yv43n3:1>vP=3e9>5f7=<81v?:j:181[44k27:o=4;1:p61b=838pR?=m;<3ab?263ty98n4?:3y]66g<58hn69?4}r07f?6=:rT9?4521cf904=z{;>j6=4={_00<>;6jj0?=6s|25;94?4|V;9<70?mb;62?xu5=k0;6?uQ255894df2=;0q~<:a;296~X5<?16=nl5409~w73>2909wS<;5:?2gd<392wx>8650;0xZ72334;h57:>;|q112<72;qU>9=4=0a;>17<uz8>:7>52z\107=:9j=18<5rs376>5<5sW8?=63>c7875>{t:<>1<7<t^363?87d=3>:7p}=5283>7}Y::<01<m;:538yv4303:1>vP=349>5g?=<81v?>8:18084703>:70<?7;`7?847>39i7p}=0983>7}::921n95221c913=z{;;96=4<{<027?26348:=7=m;<026?d33ty9=>4?:3y>645=j=16><;5579~w7612908w0<?7;62?847>3h?70<?a;74?xu5980;6>u22039f1=::8818<52207912=z{;:26=4;{<024?d4348;j7l<;<03a?d4348;m7ok;|q14a<728ip1???:c68945e2k901<?m:2f8947d2:n01<?k:2f8947b2:n01<?i:2f894302:n01<;6:2f8943e2:n01<;k:2f8942a2k901<;=:2f894372:n01<;>:2f894542:n01<=?:2f8945f2:n01<=8:c1894512k901<<;:458944d2<=01<<<:4;894472<=01<;l:2f8943b2:n01<;7:2f8943f2:n0q~<?c;2954}::9l1n952f380`>;a939o70h?:2f89``=;m16==j53e9>55e=;m16==l53e9>55g=;m16==;53e9>552=;m16===53e9>554=;m16h:4<d:?g2?5c34n>6>j4=e697a=z{;:i6=4=7z?14`<e<27:j?4<d:?2b6<4l27:ji4<d:?2b`<4l27:jk4<d:?145<4l279<<4<d:?147<4l279<>4<d:?141<4l27:j94<d:?2b0<4l27:j;4<d:?2b2<4l27:j54<d:?2b<<4l27:jl4<d:?2bg<4l27:jn4<d:?2f5<4l27:mk4<d:?2e`<4l27:mi4<d:?2ef<4l27:mo4<d:?2ed<4l27:m44<d:?2e=<4l27:n54<d:?2f2<4l27:n;4<d:?2f0<4l27:n94<d:?2f6<4l27:n?4<d:?2f4<4l27:m:4<d:?2e3<4l2wx><:50;1x977>2k901??7:c1897722hn0q~<>7;2952}::831n9521739f6=:9?:1n>5218g97a=:9h:1?i521`097a=:9h91?i5218;97a=:9021?i5218597a=:90<1n>5216;97a=:9>k1?i5216`97a=:9>i1?i5216f97a=:91o1?i5219d9f6=:90:1?i5218397a=:9h>1?i5218d97a=:9h;1?i5rs335>5<69r79=54m4:?`g?5c34ii6>j4=bc97a=:k008h63j7;1g?8c12:n01h;53e9>a1<4l27oj7=k;<ff>6b<5mn1?i52db80`>;al39o70hl:2f89cd=;m16jl4<d:p56e=838p1<=m:538945b2hn0q~?<b;297~;6;k0i863>34862>;6:m0>;6s|13294?4|58;i69?4=003>db<uz;9>7>52z?25f<3927:>94nd:p573=838p1<?k:53894412hn0q~?=7;296~;69l0?=63>298b`>{t9;k1<7<t=03e>17<588i6lj4}r36b?6=:8q6=8953c9>50?=;k16=8l53c9>50b=;k16=9h53c9>504=;k16=8>53c9>507=;k16=k<53c9>5c5=;k16=kj53c9>5cc=;k16=kh53c9>656=;k16>=?53c9>654=;k16>==53c9>652=;k16=k:53c9>5c3=;k16=k853c9>5c1=;k16=k653c9>5c?=;k16=ko53c9>5cd=;k16=km53c9>57b=im16=>k5599>50e=;k16=8k53c9>50>=;k16=8o53c9~w42e2903w0?:7;62?873n3h?70?;8;74?87313?370?;a;7;?87393?=70?:8;62?873?3?>7p}>5283>40|58?<6o:4=0a6>13<58h269;4=0a7>13<58i=69;4=0a4>13<58ij69;4=0a;>13<58i269;4=0aa>13<58hj69;4=0`g>13<58hi69;4=0``>13<58hn69;4=0`e>13<58i;69;4=0a2>13<58i969;4=0a0>13<5ko19:5213391<=z{8>h6=48{<36=?2634;><7l;;<37<?3134;?57;8;<37e?3034;8h7;7;<36e?263ty:994?:04x943>2k>01<m::54894d>2=<01<m;:54894e12=<01<m8:54894ef2=<01<m7:54894e>2=<01<mm:54894df2=<01<lk:54894de2=<01<ll:54894db2=<01<li:54894e72=<01<m>:54894e52=<01<m<:5489gc==?16ni4:7:p51b=83<p1<;m:53894362k>01<:6:448942f2<301<=k:448943d2=;0q~?:5;295=}:9<h1n9521b7902=:9k318:521b6902=:9j<18:521b5902=:9jk18:521b:902=:9j318:521b`902=:9kk18:521cf902=:9kh18:521ca902=:9ko18:521cd902=:9j:18:521b3902=:9j818:521b1902=:jm0>:63mc;74?876i3?<70?=9;74?xu6<l0;68u214f904=:9<81n95215c913=:9=;1955214g904=z{8?=6=4>8z?21a<e<27o;7:>;<3`1?2?34;i57:7;<3`0?2?34;h:7:7;<3`3?2?34;hm7:7;<3`<?2?34;h57:7;<3`f?2?34;im7:7;<3a`?2?34;in7:7;<3ag?2?34;ii7:7;<3ab?2?34;h<7:7;<3`5?2?34;h>7:7;<3`7?2?34hh6884=00;>01<589m6894}r356?6=;r7::<4;1:?225<3927::84nd:p536=839p1<8?:c6894>62<=01<8<:458yv7f=3:1>>u218g97g=:9h:1?o521`097g=:9h91?o5218;97g=:9021?o5218597g=:90<1?o5219g97g=:91l1?o5218297g=:90;1?o521b7964`<58h26??i;<3`0?46n27:o;4=1g9>5f1=:8l01<mn:33e?87d038:j63>c8815c=:9jh1><h4=0`b>77a34;ih7<>f:?2fg<59o16=om520d894db2;;m70?mf;02b>;6k909=k521b3964`<58i96??i;<3`7?46n27:4<4nd:?2e1<4j27:5k4<b:?2e4<4j2wx=4<50;6x94?b2=;01<79:c6894012<201<7i:538yv7>i3:1=5u218g9f1=:9j?1?=521c;975=:9j>1?=521b4975=:9j=1?=521bc975=:9j21?=521b;975=:9jh1?=521cc975=:9kn1?=521c`975=:9ki1?=521cg975=:9kl1?=521b2975=:9j;1?=521b0975=:9j91?=52164913=:k=0>;63>7686=>;6>m0>56s|18194?2|58k;69?4=0;4>g2<58<=6884=0c2>17<uz;2n7>519y>5d6=j=16=n;5309>5g?=;816=n:5309>5f0=;816=n95309>5fg=;816=n65309>5f?=;816=nl5309>5gg=;816=oj5309>5gd=;816=om5309>5gc=;816=oh5309>5f6=;816=n?5309>5f4=;816=n=5309>g1<2>27h?7;8;<343?3?34;=h7;8;|q2=1<72:q6=l<5409>5<>=j=16=;95599~w4?d290:mv3>a38a0>;6k<08>63>b8806>;6k=08>63>c7806>;6k>08>63>c`806>;6k108>63>c8806>;6kk08>63>b`806>;6jm08>63>bc806>;6jj08>63>bd806>;6jo08>63>c1806>;6k808>63>c3806>;6k:08>63l3;75?8e52<=01<8j:458940d2<=01<9?:4;894162<30q~?65;290~;6i:0?=63>988a0>;6>>0>:63>a5875>{t90n1<7?7{<3b7?d334lo69?4=0a6>65<58h26>=4=0a7>65<58i=6>=4=0a4>65<58ij6>=4=0a;>65<58i26>=4=0aa>65<58hj6>=4=0`g>65<58hi6>=4=0``>65<58hn6>=4=0`e>65<58i;6>=4=0a2>65<58i96>=4=0a0>65<5j819;5216291==:9>;1955rs0:g>5<3s4;257:>;<3:5?d334;357;9;<35<?313ty:4n4?:4y>5<>=<816=4>5b59>5=>==?16=575599>535==?1v<6m:18587>?3>:70?7f;`7?87??3?=70?78;74?87?13?270?98;7;?xu60h0;6:u2184904=:91o1n952195912=:9121955219;912=:9?>19:52194910=z{8=36=4={<34=?2634;<:7ok;|q23`<72;q6=:o5409>53b=im1v<9i:181870j3>:70?9e;cg?xu6090;6?u216a904=:9?l1mi5rs04b>5<5s4;<h7:>;<35f?gc3ty:4?4?:3y>5=c=<816=585ae9~w4>42909w0?7f;62?87??3ko7p}>8583>7}:90:18<5219:9ea=z{82>6=4={<3:5?2634;357ok;|q206<72;q6=9h5409>511=im1v<:9:181872:3>:70?;a;cg?xu6<=0;6?u2142904=:9=21mi5rs066>5<5s4;>=7:>;<37=?gc3tyn?7>55z?`g?2634o<6o:4=c;912=:jh0>;63mb;74?xud03:1:v3lc;`7?870;3?<70?97;74?87103?<70?80;75?87093?=7p}ld;296~;dj3>:70l6:`f8yve0290<w0mm:c6894002<301<8j:448940d2<<01<9?:45894162<=01<8<:4:8yveb2909w0mn:5389gg=im1vn850;4x9fg=j=16=:95579>530==>16=;65589>53b==?16=:;5599~wf`=838p1n75409>fg<fl2wxo84?:6y>g<<e<27:;;4:7:?232<2?27::;4:9:?221<2027::i4:8:?230<212wx==750;7x9c4=<816==j5b59>fc<2?27h<7;8;<a2>01<uzon6=4:{<d1>g2<58>:6874=00;>00<58;=6894=01e>00<uzl86=4={<d2>17<5kl1mi5rsdf94?3|5o;1n952106912=:98k19;5212f912=:9;319;5rsg694?4|5o:18<52c18b`>{tmj0;68u2f18a0>;6<90>463>3e86=>;6900>463>19862>{tn<0;6?u2eg875>;d93ko7p}jb;292~;bn3h?70?;0;7:?87393?<70?>9;7:?87603?<70?=1;7;?xu6880;6?u211f904=:99?1n95rs023>5<5s4;;o7:>;<330?d33ty:<54?:5y>55e=j=16nk4:6:?`4?3134i:6884}rde>5<5s4;;n7:>;<337?d33ty:<:4?:2y>55d=j=16o=4:8:?`5?3?3tymi7>52z?24d<3927:<?4m4:p550=838p1<>n:c689f7==01vil50;0x9`1=<816hk4m4:p`d<72;q6i;4;1:?ga?d33tyn>7>54z?f2?d334h26884=cc913=:jk0>:6s|d883>7}:m<0?=63kd;`7?xub93:1?v3j5;`7?8df2<201ol5599~wa>=838p1h:5409>`f<e<2wxi=4?:3y>a1<e<27in7;6;|qe=?6=:r7:<84;1:?e`?d33tym47>52z?241<3927mo7l;;|qe3?6=:r7:<>4;1:?ef?d33tym:7>52z?247<3927mm7l;;|qg7?6=:r7oj7:>;<f4>g2<uzn96=4={<ff>17<5m<1n95rse394?4|5mn18<52d48a0>{tl90;6?u2db875>;c<3h?7p}j8;296~;c>3>:70ll:`f8yvc>2909w0j::5389gb=im1vho50;0x9a2=<816nh4nd:p55c=838p1km5409>g7<fl2wx==h50;0x9cd=<816o>4nd:p546=838p1ko5409>g1<fl2wx=>:50;0x94542=;01<=::`f8yv74;3:15v3>328a0>;6;;0>;63>3886<>;6;<0>463>2d86<>;6:m0>563>2g863>;6::0>;63>20863>{t9:;1<7=t=013>17<589j69?4=011>db<uz;8<7>59z?275<e<27:??4:6:?27<<2?27:?84:7:?26`<2?27:>i4:8:?26c<2>27:>>4:6:?264<2>2wx=>o50;7x945f2k>01<<;:448944d2<<01<<<:4:894472<<0q~?<8;297~;6;>0?=63>37875>;6;00jh6s|12494?4|589=6o:4=01:>00<uz;ho7>52z?2b7<3927:n44;4:p5a`=838p1<h=:c6894g12=;0q~?k6;296~;6n:0?=63>c5870>{t9l31<7<t=0d0>g2<58k<69?4}r3g3?6=:r7:ji4;1:?2g0<3<2wx=ho50;0x94`c2k>01<l>:538yv7c03:1>v3>fd875>;6k?0?86s|1d`94?4|58ln6o:4=0`1>17<uz;o57>52z?2bc<3927:o:4;4:p5`e=838p1<hi:c6894d42=;0q~?ka;296~;5890?=63>c9870>{t9ln1<7<t=323>g2<58h?69?4}r3gf?6=:r79<<4;1:?2g<<3<2wx=hk50;0x97662k>01<l::538yv7ck3:1>v3=03875>;6kh0?86s|1dd94?4|5;:96o:4=0`5>17<uz;oh7>52z?146<3927:oo4;4:p5c6=838p1?><:c6894d02=;0q~?ke;296~;58=0?=63>b`870>{t9o;1<7<t=327>g2<58h369?4}r3``?6=:r7:j94;1:?2fg<3<2wx=h>50;0x94`32k>01<o7:538yv7dm3:1>v3>f4875>;6jj0?86s|1d394?4|58l>6o:4=0c:>17<uz;hj7>52z?2b3<3927:ni4;4:p5`4=838p1<h9:c6894gf2=;0q~?k0;296~;6n>0?=63>bd870>{t9l91<7<t=0d4>g2<58ki69?4}r3g5?6=:r7:j54;1:?2fc<3<2wx=h:50;0x94`?2k>01<ol:538yv7c:3:1>v3>f8875>;6k90?86s|1d794?4|58l26o:4=0cg>17<uz;o?7>52z?2bd<3927:o<4;4:p5`0=838p1<hn:c6894gb2=;0q~?k4;296~;6nk0?=63>c3870>{t9l=1<7<t=0da>g2<58km69?4}r3g1?6=:r7:jn4;1:?2g6<3<2wx=h650;0x94`d2k>01<l?:538yv47=3:1=9u21c297g=:9hl1?o521`g97g=:9hn1?o521`a97g=:9hh1?o521`c97g=:9h31?o521`:97g=:9k21?o521c597g=:9k<1?o521c797g=:9k>1?o521c197g=:9k81?o521c397g=:9h=1?o521`497g=:9;o1mi5rs04:>5<3s4;<;7ok;<35a?3>34;=n7;9;<35b?3>3ty:8?4?:2y>57`=im16=?:5599>57d==?1v<o;:181870;3?=70?n4;`7?xu6?;0;6?u21619ea=:9?i1955rs07`>5<5s4;:87;9;<36g?d33ty:=>4?:5y>542=im16=?85579>57e==116=>h5599~w4722909w0?>a;7;?876>3?o7p}>1683>1}:98k1945213491==:9;31955210:9ea=z{8;:6=4={<32e?gc34;9n7;6;|q21=<72=q6=9>5579>50>=j=16=<75569>54>==11v<;n:18787383?<70?:a;`7?87613?=70?>8;7:?xu6<90;6?u21529ea=:9:l1945rs062>5<5s4;?=7ok;<30a?303ty::;4?:3y>530=im16=;;5579~w4002909w0?97;cg?871=3?<7p}>6983>7}:9?21mi5217791==z{8<86=4={<351?3>34;=?7;k;|q4<?6=:r7:?i4nd:?27`<2>2wx=::50;1x940b2<201<8i:44894122hn0q~?>2;290~;6:=0>563>27863>;6:k0>;63>188b`>{t>00;6>u213491<=:9;91mi5213:91==z{191<7<t=00`>0?<58;368j4}r5:>5<5s4;9o7ok;<31f?3?3ty3>7>52z?22f<2127:;84:d:p3d<72;q6=;m5ae9>53d==>1v:l50;0x94172hn01<8i:4:8yv1d2909w0?81;cg?871n3?<7p}8d;296~;6>=0jh63>6286=>{t?l0;6?u212g91<=:9:l19i5rs9394?4|58826874=03:>0b<uz=m6=4={<31=?gc34;947;6;|q;4?6=:r7:>=4:8:?264<2l2wx=4h50;0x94?a2k>01<9::448yv7f93:1>v3>a08a0>;6?<0>;6s|14g94?4|58?n6o:4=035>00<uty99?4?:3y]66`<5:=1>>h4$33b>=?<uz8><7>52z\17`=:;>09?h5+20c9=5=z{;>m6=4={_00`>;4?388h6*=1`8:f>{t:=o1<7<t^31`?8502;9h7)<>a;c1?xu5<m0;6?uQ22`8961=::h0(??n:7;8yv43k3:1>vP=3`9>72<5;h1/><o56c9~w72e2909wS<<9:?03?4412.9=l49c:p61g=838pR?=7;<14>75?3-8:m78k;|q10<<72;qU>>94=259661<,;;j6;k4}r06f?6=:rT98:52368102=#:8k1:k5rs37b>5<5sW8?:63<7;072>"59h0<<6s|24;94?4|V;>>70=8:366?!46i3=:7p}=5983>7}Y:=>01>952568 77f2>80q~<:7;296~X5<:16?:4=429'64g=?:1v?;9:181[43:278;7<;2:&15d<0<2wx>8;50;0xZ726349<6?:>;%02e?123ty9994?:3y]616<5:=1>9>4$33b>20<uz8>?7>52z\173=:;>09?;5+20c932=z{;>36=4={_001>;4?38896*=1`84<>{t:ho1<7<t^3cf?8502;kn7)<>a;:7?xu5jh0;6?uQ2cc8961=:kk0(??n:978yv4ek3:1>vP=bb9>72<5jj1/><o5879~w7e42909wS<l3:?03?4d;2.9=l477:p6f`=838pR?mi;<14>7ea3-8:m767;|q13<<72;qU>;84=259630<,;;j65o4}r043?6=:rT9:852368120=#:8k14o5rs355>5<5sW8=863<7;050>"59h03o6s|26794?4|V;<870=8:340?!46i32o7p}=7583>7}Y:?801>952708 77f21o0q~<83;296~X5>816?:4=609'64g=0o1v?9=:181[418278;7<90:&15d<>92wx>:?50;0xZ73a349<6?;i;%02e??53ty9;=4?:3y]60c<5:=1>8k4$33b><5<uz83>7>52z\12`=:;>09:h5+20c9=1=z{;2:6=4={_05`>;4?38=h6*=1`8:1>{t:1:1<7<t^34`?8502;<h7)<>a;;5?xu5?o0;6?uQ27`8961=:?h0(??n:858yv40m3:1>vP=6`9>72<5>h1/><o5999~w71c2909wS<99:?03?4112.9=l469:p62e=838pR?87;<14>70?3-8:m77n;|q13g<72;qU>;94=259631<,;;j64m4}r04e?6=:rT99i5236811a=#:8k15i5rs34e>5<5sW8>o63<7;06g>"59h02i6s|29694?4|V;2?70=8:3:7?!46i33m7p}=8`83>7}Y:1k01>9529c8 77f2h:0q~<m9;296~X5j:16?:4=b29'64g=i81v?l8:181[4e:278;7<m2:&15d<f;2wx>o850;0xZ7d6349<6?l>;%02e?g33ty9n84?:3y]6g6<5:=1>o>4$33b>d3<uz8i87>52z\1ec=:;>09mk5+20c9e3=z{;in6=4={_0`<>;4?38h46*=1`8b3>{t:ji1<7<t^3a4?8502;i<7)<>a;c;?xu5kk0;6?uQ2b48961=:j<0(??n:`;8yv4di3:1>vP=c49>72<5k<1/><o5a`9~w7e>2909wS<l4:?03?4d<2.9=l49a:~j3d22909wE<>b:m2g0=838pD??m;|l5f2<72;qC><l4}o4a<?6=:rB9=o5rn7`:>5<5sA8:n6sa6cc94?4|@;;i7p`9bc83>7}O:8h0qc8mc;296~N59k1vb;lk:181M46j2we:ok50;0xL77e3td=nk4?:3yK64d<ug<h<7>52zJ15g=zf?i:6=4={I02f>{i>j81<7<tH33a?xh1k:0;6?uG20`8yk0d<3:1>vF=1c9~j3e22909wE<>b:m2f0=838pD??m;|l5g2<72;qC><l4}o4`<?6=:rB9=o5rn7a:>5<5sA8:n6sa6bc94?4|@;;i7p`9cc83>7}O:8h0qc8lc;296~N59k1vb;mk:181M46j2we:nk50;0xL77e3td=ok4?:3yK64d<ug<o<7>52zJ15g=zf?n:6=4={I02f>{i>m81<7<tH33a?xh1l:0;6?uG20`8yk0c<3:1>vF=1c9~j3b22909wE<>b:m2a0=838pD??m;|l5`2<72;qC><l4}o4g<?6=:rB9=o5rn7f:>5<5sA8:n6sa6ec94?4|@;;i7p`9dc83>7}O:8h0qc8kc;296~N59k1vb;jk:181M46j2we:ik50;0xL77e3td=hk4?:3yK64d<ug<n<7>52zJ15g=zf?o:6=4={I02f>{i>l81<7<tH33a?xh1m:0;6?uG20`8yk0b<3:1>vF=1c9~j3c22909wE<>b:m2`0=838pD??m;|l5a2<72;qC><l4}o4f<?6=:rB9=o5rn7g:>5<5sA8:n6sa6dc94?4|@;;i7p`9ec83>7}O:8h0qc;l8;295~N59k1vb8hi:182M46j2we:=>50;3xL77e3td=<<4?:0yK64d<ug<;>7>51zJ15g=zf?:86=4>{I02f>{i>9>1<7?tH33a?xh18<0;6<uG20`8yk07>3:1=vF=1c9~j360290:wE<>b:m25>=83;pD??m;|l54<<728qC><l4}o43e?6=9rB9=o5rn72a>5<6sA8:n6sa61a94?7|@;;i7p`90e83>4}O:8h0qc8?e;295~N59k1vb;>i:182M46j2we:<>50;3xL77e3td==<4?:0yK64d<ug<:>7>51zJ15g=zf?;86=4>{I02f>{i>8>1<7?tH33a?xh19<0;6<uG20`8yk06>3:1=vF=1c9~j370290:wE<>b:m24>=83;pD??m;|l55<<728qC><l4}o42e?6=9rB9=o5rn73a>5<6sA8:n6sa60a94?7|@;;i7p`91e83>4}O:8h0qc8>e;295~N59k1vb;?i:182M46j2we:?>50;3xL77e3td=><4?:0yK64d<ug<9>7>51zJ15g=zf?886=4>{I02f>{i>;>1<7?tH33a?xh1:<0;6<uG20`8yk05>3:1=vF=1c9~j340290:wE<>b:m27>=83;pD??m;|l56<<728qC><l4}o41e?6=9rB9=o5rn70a>5<6sA8:n6sa63a94?7|@;;i7p`92e83>4}O:8h0qc8=e;295~N59k1vb;<i:182M46j2we:>>50;3xL77e3td=?<4?:0yK64d<ug<8>7>51zJ15g=zf?986=4>{I02f>{i>:>1<7?tH33a?xh1;<0;6<uG20`8yk04>3:1=vF=1c9~j350290:wE<>b:m26>=83;pD??m;|l57<<728qC><l4}o40e?6=9rB9=o5rn71a>5<6sA8:n6sa62a94?7|@;;i7p`93e83>4}O:8h0qc8<e;295~N59k1vb;=i:182M46j2we:9>50;3xL77e3td=8<4?:0yK64d<ug<?>7>51zJ15g=zf?>86=4>{I02f>{i>=>1<7?tH33a?xh1<<0;6<uG20`8yk03>3:1=vF=1c9~j320290:wE<>b:m21>=83;pD??m;|l50<<728qC><l4}o47e?6=9rB9=o5rn76a>5<6sA8:n6sa65a94?7|@;;i7p`94e83>4}O:8h0qc8;e;295~N59k1vb;:i:182M46j2we:8>50;3xL77e3td=9<4?:0yK64d<ug<>>7>51zJ15g=zf??86=4>{I02f>{i><>1<7?tH33a?xh1=<0;6<uG20`8yk02>3:1=vF=1c9~j330290:wE<>b:m20>=83;pD??m;|l51<<728qC><l4}o46e?6=9rB9=o5rn77a>5<6sA8:n6sa64a94?7|@;;i7p`95e83>4}O:8h0qc8:e;295~N59k1vb;;i:182M46j2we:;>50;3xL77e3td=:<4?:0yK64d<ug<=>7>51zJ15g=zf?<86=4>{I02f>{i>?>1<7?tH33a?xh1><0;6<uG20`8yk01>3:1=vF=1c9~j300290:wE<>b:m23>=83;pD??m;|l52<<728qC><l4}o45e?6=9rB9=o5rn74a>5<6sA8:n6sa67a94?7|@;;i7p`96e83>4}O:8h0qc89e;295~N59k1vb;8i:182M46j2we::>50;3xL77e3td=;<4?:0yK64d<ug<<>7>51zJ15g=zf?=86=4>{I02f>{i>>>1<7?tH33a?xh1?<0;6<uG20`8yk00>3:1=vF=1c9~j310290:wE<>b:m22>=83;pD??m;|l53<<728qC><l4}o44e?6=9rB9=o5rn75a>5<6sA8:n6sa66a94?7|@;;i7p`97e83>4}O:8h0qc88e;295~N59k1vb;9i:182M46j2we:5>50;3xL77e3td=4<4?:0yK64d<ug<3>7>51zJ15g=zf?286=4>{I02f>{i>1>1<7?tH33a?xh10<0;6<uG20`8yk0?>3:1=vF=1c9~j3>0290:wE<>b:m2=>=83;pD??m;|l5<<<728qC><l4}o4;e?6=9rB9=o5rn7:a>5<6sA8:n6sa69a94?7|@;;i7p`98e83>4}O:8h0qc87e;295~N59k1vb;6i:182M46j2we:4>50;3xL77e3td=5<4?:0yK64d<ug<2>7>51zJ15g=zf?386=4>{I02f>{i>0>1<7?tH33a?xh11<0;6<uG20`8yk0>>3:1=vF=1c9~j3?0290:wE<>b:m2<>=83;pD??m;|l5=<<728qC><l4}o4:e?6=9rB9=o5rn7;a>5<6sA8:n6sa68a94?7|@;;i7p`99e83>4}O:8h0qc86e;295~N59k1vb;7i:182M46j2we:l>50;3xL77e3td=m<4?:0yK64d<ug<j>7>51zJ15g=zf?k86=4>{I02f>{i>h>1<7?tH33a?xh1i<0;6<uG20`8yk0f>3:1=vF=1c9~j3g0290:wE<>b:m2d>=83;pD??m;|l5e<<728qC><l4}o4be?6=9rB9=o5rn7ca>5<6sA8:n6sa6`a94?7|@;;i7p`9ae83>4}O:8h0qc8ne;295~N59k1vb;oi:182M46j2we:o>50;3xL77e3td=n<4?:0yK64d<ug<i>7>51zJ15g=zf?h86=4>{I02f>{i>k>1<7?tH33a?x{zuIJHw:jn:6ffgc05=tJKNv>r@ARxyEF
\ No newline at end of file diff --git a/coregen/fifo_xlnx_16x19_2clk.v b/coregen/fifo_xlnx_16x19_2clk.v new file mode 100644 index 000000000..1d633384b --- /dev/null +++ b/coregen/fifo_xlnx_16x19_2clk.v @@ -0,0 +1,169 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used * +* solely for design, simulation, implementation and creation of * +* design files limited to Xilinx devices or technologies. Use * +* with non-Xilinx devices or technologies is expressly prohibited * +* and immediately terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" * +* SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR * +* XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION * +* AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION * +* OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS * +* IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, * +* AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE * +* FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY * +* WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * +* FOR A PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support * +* appliances, devices, or systems. Use in such applications are * +* expressly prohibited. * +* * +* (c) Copyright 1995-2007 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ +// The synthesis directives "translate_off/translate_on" specified below are +// supported by Xilinx, Mentor Graphics and Synplicity synthesis +// tools. Ensure they are correct for your synthesis tool(s). + +// You must compile the wrapper file fifo_xlnx_16x19_2clk.v when simulating +// the core, fifo_xlnx_16x19_2clk. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + +`timescale 1ns/1ps + +module fifo_xlnx_16x19_2clk( + din, + rd_clk, + rd_en, + rst, + wr_clk, + wr_en, + dout, + empty, + full, + rd_data_count, + wr_data_count); + + +input [18 : 0] din; +input rd_clk; +input rd_en; +input rst; +input wr_clk; +input wr_en; +output [18 : 0] dout; +output empty; +output full; +output [4 : 0] rd_data_count; +output [4 : 0] wr_data_count; + +// synthesis translate_off + + FIFO_GENERATOR_V4_3 #( + .C_COMMON_CLOCK(0), + .C_COUNT_TYPE(0), + .C_DATA_COUNT_WIDTH(5), + .C_DEFAULT_VALUE("BlankString"), + .C_DIN_WIDTH(19), + .C_DOUT_RST_VAL("0"), + .C_DOUT_WIDTH(19), + .C_ENABLE_RLOCS(0), + .C_FAMILY("spartan3"), + .C_FULL_FLAGS_RST_VAL(1), + .C_HAS_ALMOST_EMPTY(0), + .C_HAS_ALMOST_FULL(0), + .C_HAS_BACKUP(0), + .C_HAS_DATA_COUNT(0), + .C_HAS_INT_CLK(0), + .C_HAS_MEMINIT_FILE(0), + .C_HAS_OVERFLOW(0), + .C_HAS_RD_DATA_COUNT(1), + .C_HAS_RD_RST(0), + .C_HAS_RST(1), + .C_HAS_SRST(0), + .C_HAS_UNDERFLOW(0), + .C_HAS_VALID(0), + .C_HAS_WR_ACK(0), + .C_HAS_WR_DATA_COUNT(1), + .C_HAS_WR_RST(0), + .C_IMPLEMENTATION_TYPE(2), + .C_INIT_WR_PNTR_VAL(0), + .C_MEMORY_TYPE(2), + .C_MIF_FILE_NAME("BlankString"), + .C_MSGON_VAL(1), + .C_OPTIMIZATION_MODE(0), + .C_OVERFLOW_LOW(0), + .C_PRELOAD_LATENCY(0), + .C_PRELOAD_REGS(1), + .C_PRIM_FIFO_TYPE("512x36"), + .C_PROG_EMPTY_THRESH_ASSERT_VAL(4), + .C_PROG_EMPTY_THRESH_NEGATE_VAL(5), + .C_PROG_EMPTY_TYPE(0), + .C_PROG_FULL_THRESH_ASSERT_VAL(15), + .C_PROG_FULL_THRESH_NEGATE_VAL(14), + .C_PROG_FULL_TYPE(0), + .C_RD_DATA_COUNT_WIDTH(5), + .C_RD_DEPTH(16), + .C_RD_FREQ(1), + .C_RD_PNTR_WIDTH(4), + .C_UNDERFLOW_LOW(0), + .C_USE_DOUT_RST(1), + .C_USE_ECC(0), + .C_USE_EMBEDDED_REG(0), + .C_USE_FIFO16_FLAGS(0), + .C_USE_FWFT_DATA_COUNT(1), + .C_VALID_LOW(0), + .C_WR_ACK_LOW(0), + .C_WR_DATA_COUNT_WIDTH(5), + .C_WR_DEPTH(16), + .C_WR_FREQ(1), + .C_WR_PNTR_WIDTH(4), + .C_WR_RESPONSE_LATENCY(1)) + inst ( + .DIN(din), + .RD_CLK(rd_clk), + .RD_EN(rd_en), + .RST(rst), + .WR_CLK(wr_clk), + .WR_EN(wr_en), + .DOUT(dout), + .EMPTY(empty), + .FULL(full), + .RD_DATA_COUNT(rd_data_count), + .WR_DATA_COUNT(wr_data_count), + .CLK(), + .INT_CLK(), + .BACKUP(), + .BACKUP_MARKER(), + .PROG_EMPTY_THRESH(), + .PROG_EMPTY_THRESH_ASSERT(), + .PROG_EMPTY_THRESH_NEGATE(), + .PROG_FULL_THRESH(), + .PROG_FULL_THRESH_ASSERT(), + .PROG_FULL_THRESH_NEGATE(), + .RD_RST(), + .SRST(), + .WR_RST(), + .ALMOST_EMPTY(), + .ALMOST_FULL(), + .DATA_COUNT(), + .OVERFLOW(), + .PROG_EMPTY(), + .PROG_FULL(), + .VALID(), + .UNDERFLOW(), + .WR_ACK(), + .SBITERR(), + .DBITERR()); + + +// synthesis translate_on + +endmodule + diff --git a/coregen/fifo_xlnx_16x19_2clk.veo b/coregen/fifo_xlnx_16x19_2clk.veo new file mode 100644 index 000000000..2e9af1efa --- /dev/null +++ b/coregen/fifo_xlnx_16x19_2clk.veo @@ -0,0 +1,53 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used * +* solely for design, simulation, implementation and creation of * +* design files limited to Xilinx devices or technologies. Use * +* with non-Xilinx devices or technologies is expressly prohibited * +* and immediately terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" * +* SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR * +* XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION * +* AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION * +* OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS * +* IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, * +* AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE * +* FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY * +* WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * +* FOR A PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support * +* appliances, devices, or systems. Use in such applications are * +* expressly prohibited. * +* * +* (c) Copyright 1995-2007 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +fifo_xlnx_16x19_2clk YourInstanceName ( + .din(din), // Bus [18 : 0] + .rd_clk(rd_clk), + .rd_en(rd_en), + .rst(rst), + .wr_clk(wr_clk), + .wr_en(wr_en), + .dout(dout), // Bus [18 : 0] + .empty(empty), + .full(full), + .rd_data_count(rd_data_count), // Bus [4 : 0] + .wr_data_count(wr_data_count)); // Bus [4 : 0] + +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file fifo_xlnx_16x19_2clk.v when simulating +// the core, fifo_xlnx_16x19_2clk. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + diff --git a/coregen/fifo_xlnx_16x19_2clk.xco b/coregen/fifo_xlnx_16x19_2clk.xco new file mode 100644 index 000000000..d0f638026 --- /dev/null +++ b/coregen/fifo_xlnx_16x19_2clk.xco @@ -0,0 +1,82 @@ +############################################################## +# +# Xilinx Core Generator version K.39 +# Date: Fri Sep 11 04:33:27 2009 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# BEGIN Project Options +SET addpads = False +SET asysymbol = False +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = False +SET designentry = Verilog +SET device = xc3s2000 +SET devicefamily = spartan3 +SET flowvendor = Other +SET formalverification = False +SET foundationsym = False +SET implementationfiletype = Ngc +SET package = fg456 +SET removerpms = False +SET simulationfiles = Behavioral +SET speedgrade = -5 +SET verilogsim = True +SET vhdlsim = False +# END Project Options +# BEGIN Select +SELECT Fifo_Generator family Xilinx,_Inc. 4.3 +# END Select +# BEGIN Parameters +CSET almost_empty_flag=false +CSET almost_full_flag=false +CSET component_name=fifo_xlnx_16x19_2clk +CSET data_count=false +CSET data_count_width=5 +CSET disable_timing_violations=false +CSET dout_reset_value=0 +CSET empty_threshold_assert_value=4 +CSET empty_threshold_negate_value=5 +CSET enable_ecc=false +CSET enable_int_clk=false +CSET fifo_implementation=Independent_Clocks_Distributed_RAM +CSET full_flags_reset_value=1 +CSET full_threshold_assert_value=15 +CSET full_threshold_negate_value=14 +CSET input_data_width=19 +CSET input_depth=16 +CSET output_data_width=19 +CSET output_depth=16 +CSET overflow_flag=false +CSET overflow_sense=Active_High +CSET performance_options=First_Word_Fall_Through +CSET programmable_empty_type=No_Programmable_Empty_Threshold +CSET programmable_full_type=No_Programmable_Full_Threshold +CSET read_clock_frequency=1 +CSET read_data_count=true +CSET read_data_count_width=5 +CSET reset_pin=true +CSET reset_type=Asynchronous_Reset +CSET underflow_flag=false +CSET underflow_sense=Active_High +CSET use_dout_reset=true +CSET use_embedded_registers=false +CSET use_extra_logic=true +CSET valid_flag=false +CSET valid_sense=Active_High +CSET write_acknowledge_flag=false +CSET write_acknowledge_sense=Active_High +CSET write_clock_frequency=1 +CSET write_data_count=true +CSET write_data_count_width=5 +# END Parameters +GENERATE +# CRC: 60b85dda + diff --git a/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.lso b/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.lso new file mode 100644 index 000000000..f1a6f7899 --- /dev/null +++ b/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.lso @@ -0,0 +1,3 @@ +blkmemdp_v6_2 +blk_mem_gen_v2_6 +fifo_generator_v4_3 diff --git a/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt b/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt new file mode 100644 index 000000000..ef33fff67 --- /dev/null +++ b/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<document OS="lin64" product="ISE" version="10.1.03"> + + <!--The data in this file is primarily intended for consumption by Xilinx tools. + The structure and the elements are likely to change over the next few releases. + This means code written to parse this file will need to be revisited each subsequent release.--> + + <application stringID="Xst" timeStamp="Thu Sep 10 21:33:06 2009"> + <section stringID="XST_HDL_SYNTHESIS_REPORT"> + <item dataType="int" stringID="XST_RAMS" value="1"></item> + <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4"></item> + <item dataType="int" stringID="XST_COUNTERS" value="2"> + <item dataType="int" stringID="XST_4BIT_UP_COUNTER" value="2"/> + </item> + <item dataType="int" stringID="XST_REGISTERS" value="32"> + <item dataType="int" stringID="XST_1BIT_REGISTER" value="15"/> + <item dataType="int" stringID="XST_2BIT_REGISTER" value="1"/> + <item dataType="int" stringID="XST_3BIT_REGISTER" value="1"/> + <item dataType="int" stringID="XST_4BIT_REGISTER" value="11"/> + <item dataType="int" stringID="XST_5BIT_REGISTER" value="2"/> + </item> + <item dataType="int" stringID="XST_XORS" value="28"> + <item dataType="int" stringID="XST_1BIT_XOR2" value="28"/> + </item> + </section> + <section stringID="XST_ADVANCED_HDL_SYNTHESIS_REPORT"> + <item dataType="int" stringID="XST_FSMS" value="1"/> + <item dataType="int" stringID="XST_RAMS" value="1"></item> + <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4"></item> + <item dataType="int" stringID="XST_COUNTERS" value="2"> + <item dataType="int" stringID="XST_4BIT_UP_COUNTER" value="2"/> + </item> + <item dataType="int" stringID="XST_REGISTERS" value="107"> + <item dataType="int" stringID="XST_FLIPFLOPS" value="107"/> + </item> + <item dataType="int" stringID="XST_XORS" value="28"> + <item dataType="int" stringID="XST_1BIT_XOR2" value="28"/> + </item> + </section> + <section stringID="XST_FINAL_REGISTER_REPORT"> + <item dataType="int" stringID="XST_REGISTERS" value="126"> + <item dataType="int" stringID="XST_FLIPFLOPS" value="126"/> + </item> + </section> + <section stringID="XST_PARTITION_REPORT"> + <section stringID="XST_PARTITION_IMPLEMENTATION_STATUS"> + <section stringID="XST_NO_PARTITIONS_WERE_FOUND_IN_THIS_DESIGN"/> + </section> + </section> + <section stringID="XST_FINAL_REPORT"> + <section stringID="XST_FINAL_RESULTS"> + <item stringID="XST_TOP_LEVEL_OUTPUT_FILE_NAME" value="/home/matt/coregen/tmp/_cg/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc"/> + <item stringID="XST_OUTPUT_FORMAT" value="NGC"/> + <item stringID="XST_OPTIMIZATION_GOAL" value="SPEED"/> + <item stringID="XST_KEEP_HIERARCHY" value="no"/> + </section> + <section stringID="XST_DESIGN_STATISTICS"> + <item stringID="XST_IOS" value="101"/> + </section> + <section stringID="XST_CELL_USAGE"> + <item dataType="int" stringID="XST_BELS" value="66"> + <item dataType="int" stringID="XST_GND" value="1"/> + <item dataType="int" stringID="XST_INV" value="2"/> + <item dataType="int" stringID="XST_LUT2" value="18"/> + <item dataType="int" stringID="XST_LUT2L" value="1"/> + <item dataType="int" stringID="XST_LUT3" value="8"/> + <item dataType="int" stringID="XST_LUT4" value="30"/> + <item dataType="int" stringID="XST_LUT4D" value="3"/> + <item dataType="int" stringID="XST_LUT4L" value="3"/> + </item> + <item dataType="int" stringID="XST_FLIPFLOPSLATCHES" value="126"> + <item dataType="int" stringID="XST_FD" value="4"/> + <item dataType="int" stringID="XST_FDC" value="40"/> + <item dataType="int" stringID="XST_FDCE" value="62"/> + <item dataType="int" stringID="XST_FDP" value="10"/> + <item dataType="int" stringID="XST_FDPE" value="5"/> + </item> + <item dataType="int" stringID="XST_RAMS" value="19"> + <item dataType="int" stringID="XST_RAM16X1D" value="19"/> + </item> + </section> + </section> + <section stringID="XST_DEVICE_UTILIZATION_SUMMARY"> + <item stringID="XST_SELECTED_DEVICE" value="3s2000fg456-5"/> + <item AVAILABLE="20480" dataType="int" stringID="XST_NUMBER_OF_SLICES" value="96"/> + <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_SLICE_FLIP_FLOPS" value="126"/> + <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_4_INPUT_LUTS" value="103"/> + <item dataType="int" stringID="XST_NUMBER_USED_AS_LOGIC" value="65"/> + <item dataType="int" stringID="XST_NUMBER_USED_AS_RAMS" value="38"/> + <item dataType="int" stringID="XST_NUMBER_OF_IOS" value="101"/> + <item AVAILABLE="333" dataType="int" stringID="XST_NUMBER_OF_BONDED_IOBS" value="0"/> + </section> + <section stringID="XST_PARTITION_RESOURCE_SUMMARY"> + <section stringID="XST_NO_PARTITIONS_WERE_FOUND_IN_THIS_DESIGN"/> + </section> + <section stringID="XST_ERRORS_STATISTICS"> + <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_ERRORS" value="0"/> + <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_WARNINGS" value="73"/> + <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_INFOS" value="10"/> + </section> + </application> + +</document> diff --git a/coregen/fifo_xlnx_16x19_2clk_flist.txt b/coregen/fifo_xlnx_16x19_2clk_flist.txt new file mode 100644 index 000000000..5e1a6ed35 --- /dev/null +++ b/coregen/fifo_xlnx_16x19_2clk_flist.txt @@ -0,0 +1,8 @@ +# Output products list for <fifo_xlnx_16x19_2clk> +fifo_xlnx_16x19_2clk.ngc +fifo_xlnx_16x19_2clk.v +fifo_xlnx_16x19_2clk.veo +fifo_xlnx_16x19_2clk.xco +fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt +fifo_xlnx_16x19_2clk_flist.txt +fifo_xlnx_16x19_2clk_xmdf.tcl diff --git a/coregen/fifo_xlnx_16x19_2clk_readme.txt b/coregen/fifo_xlnx_16x19_2clk_readme.txt new file mode 100644 index 000000000..1b5976555 --- /dev/null +++ b/coregen/fifo_xlnx_16x19_2clk_readme.txt @@ -0,0 +1,39 @@ +The following files were generated for 'fifo_xlnx_16x19_2clk' in directory +/home/matt/gnuradio.git/usrp2/fpga/coregen/: + +fifo_xlnx_16x19_2clk.ngc: + Binary Xilinx implementation netlist file containing the information + required to implement the module in a Xilinx (R) FPGA. + +fifo_xlnx_16x19_2clk.v: + Verilog wrapper file provided to support functional simulation. + This file contains simulation model customization data that is + passed to a parameterized simulation model for the core. + +fifo_xlnx_16x19_2clk.veo: + VEO template file containing code that can be used as a model for + instantiating a CORE Generator module in a Verilog design. + +fifo_xlnx_16x19_2clk.xco: + CORE Generator input file containing the parameters used to + regenerate a core. + +fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt: + Please see the core data sheet. + +fifo_xlnx_16x19_2clk_flist.txt: + Text file listing all of the output files produced when a customized + core was generated in the CORE Generator. + +fifo_xlnx_16x19_2clk_readme.txt: + Text file indicating the files generated and how they are used. + +fifo_xlnx_16x19_2clk_xmdf.tcl: + ISE Project Navigator interface file. ISE uses this file to determine + how the files output by CORE Generator for the core can be integrated + into your ISE project. + + +Please see the Xilinx CORE Generator online help for further details on +generated files and how to use them. + diff --git a/coregen/fifo_xlnx_16x19_2clk_xmdf.tcl b/coregen/fifo_xlnx_16x19_2clk_xmdf.tcl new file mode 100644 index 000000000..8d633e9c2 --- /dev/null +++ b/coregen/fifo_xlnx_16x19_2clk_xmdf.tcl @@ -0,0 +1,68 @@ +# The package naming convention is <core_name>_xmdf +package provide fifo_xlnx_16x19_2clk_xmdf 1.0 + +# This includes some utilities that support common XMDF operations +package require utilities_xmdf + +# Define a namespace for this package. The name of the name space +# is <core_name>_xmdf +namespace eval ::fifo_xlnx_16x19_2clk_xmdf { +# Use this to define any statics +} + +# Function called by client to rebuild the params and port arrays +# Optional when the use context does not require the param or ports +# arrays to be available. +proc ::fifo_xlnx_16x19_2clk_xmdf::xmdfInit { instance } { +# Variable containg name of library into which module is compiled +# Recommendation: <module_name> +# Required +utilities_xmdf::xmdfSetData $instance Module Attributes Name fifo_xlnx_16x19_2clk +} +# ::fifo_xlnx_16x19_2clk_xmdf::xmdfInit + +# Function called by client to fill in all the xmdf* data variables +# based on the current settings of the parameters +proc ::fifo_xlnx_16x19_2clk_xmdf::xmdfApplyParams { instance } { + +set fcount 0 +# Array containing libraries that are assumed to exist +# Examples include unisim and xilinxcorelib +# Optional +# In this example, we assume that the unisim library will +# be magically +# available to the simulation and synthesis tool +utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library +utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk.ngc +utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk.v +utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk.veo +utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog_template +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk.xco +utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt +utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk_xmdf.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module fifo_xlnx_16x19_2clk +incr fcount + +} + +# ::gen_comp_name_xmdf::xmdfApplyParams |