From 9edf6a70afa1d517a0d590e6295c1ef100f51184 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sun, 21 Mar 2021 11:48:32 +0000 Subject: [PATCH] - added git-svn-id: http://moon:8086/svn/vhdl/trunk@1428 cc03376c-175c-47c8-b038-4cd826a8556b --- .../eval_asyn_fifo/project/eval_asyn_fifo.ise | Bin 0 -> 164759 bytes .../eval_asyn_fifo/project/eval_asyn_fifo.lso | 1 + .../eval_asyn_fifo/project/eval_asyn_fifo.prj | 8 ++ .../eval_asyn_fifo/project/eval_asyn_fifo.ucf | 6 + .../eval_asyn_fifo/project/eval_asyn_fifo.vhd | 109 ++++++++++++++++++ .../eval_asyn_fifo/project/eval_asyn_fifo.xst | 60 ++++++++++ .../project/eval_asyn_fifo_vhdl.prj | 8 ++ 7 files changed, 192 insertions(+) create mode 100644 projects/eval_asyn_fifo/project/eval_asyn_fifo.ise create mode 100644 projects/eval_asyn_fifo/project/eval_asyn_fifo.lso create mode 100644 projects/eval_asyn_fifo/project/eval_asyn_fifo.prj create mode 100644 projects/eval_asyn_fifo/project/eval_asyn_fifo.ucf create mode 100644 projects/eval_asyn_fifo/project/eval_asyn_fifo.vhd create mode 100644 projects/eval_asyn_fifo/project/eval_asyn_fifo.xst create mode 100644 projects/eval_asyn_fifo/project/eval_asyn_fifo_vhdl.prj diff --git a/projects/eval_asyn_fifo/project/eval_asyn_fifo.ise b/projects/eval_asyn_fifo/project/eval_asyn_fifo.ise new file mode 100644 index 0000000000000000000000000000000000000000..ae5d56c026227f3507c2727bd971bb9e6b7a7186 GIT binary patch literal 164759 zcmb5W1zeR+w>CU?Znm^^hp2Q(D9xt3L=lxnNkJtH5RgVfPyuNbOcW#p0b5bA#l}EP zFhIlrL_d6V?e{$Y@0|C%&+Tu^IILN7UDsN(=B}-)13}I}|J}ho-RbM=!m{^R=;ChW z>#O1VKbp$^)6_OJc#Z#>z>v^D{|L+AwV^9l{a;2a|38ejwRBw*6&4&A^AA7oT=}<7 zPLKcnnfD+0VS7Xf$A5o*{XM3=Anf;F)5q_h5&1dxz2g)6f6NmiRsGG#B*m5mm0!Q(ij#i{BrE>Ce9f z|G$YSTR{zW%hw}j&BB0)>A}Ab4#Y%SNFQkg$N5M2`mbHT%6CQRiYTNPd5er$7I9=KnwRe<%EB0{tW2>-wy; zoTr`t{+Ryfll*hm|BfElwAOX}c(LWZIf8ZKz6c@TCCU~9BKUCY}{@{n-ON4%ZbpKZ< z|IcfLE}!=G_i*{U=3n}tZ07Ieoj#~U^p>glr=6NbbuhL5)yBB)kh#!CVYmcS`;U#b zGskD{75a5|5OU1u2|I_w#CXAS@ zKkWcp@+{cYA0{t>wzJ(yS*FDwo1%Hx5R6q$q8BhN|J9Gpm?BDn`)YOUK44Q+W{`hl zhXz&X`4H3Fs`wSKaa%**fc}>o5HHi}&s;-KvC|MExzkt#_~8`6I03VF53v>etWhSe zGk-6s>0{#ny&Ui}4-#U4d6^;p8E`JTOq>8->xL*MXgF6H`w2Gcwy2C9i$f$g)8>!= zTx+uJZ`?6-3nhRJ9fi+=80oB_9)g}1FHi>1ZkfUz0FQw-MFIDtqWF5?VyTUmK(6|T z;TqsmPXQkWY@R#mH^32>AX#8j8c8((7u9Fv2+Z4Hid>*y>nT;m-5N1aCIf4MGYMM`emHdr zJ>c$l3-e<4n-YG&apiv8pN;uEaS!62aEE#d{UlC%Lz@|f9|8RKlZ=z#^H)9f1aMxs z#P9_CGhY)J#BqrT>IIzKv#12{N$g^{frbJ{NEwJlQ9Pasb6E=DY#nr32z`j1za*ss zYjd6k6#|;@x*|TN?VlWe>%@`u7bhlOhGsw<^IdRl@UPcNI6{n8G%}0|NYmY`k2{XVSs7XJEv4St~bC3hhF?cNaF;8La0c?}w=pO7- zyXK-|c24#YHy}?o4q<{|ljw&Uz=pU+KLReVoAC*#ON+N->JV$84YU{F;gCb|FqZy+ zGXR^03_S$;;LB;>ziss62%Zi5h?Nw!5HNFE5MH3$ibAph{7VgyrGMM#`(b(<><7*9 zH=xg=9cU7Ch>B+zz`P<0a23F>n@7)uepL~o3u3xnon8jm#@pyx;Ql6-NCG^Ok%S4% z734>518hi++zUQs?2#a><$gtC7I5?lCF)`9`c*_0=)Y`rXVvI+p!2g4_us2 z5i>x~B}2Ft^y|gb=8(6&*U5K)xm^tDfuBo3L=VinSq@Kz^<`m1&48So`xQ?D|Ey0` z8LT^bTT%}8m%?HEHq7hBi`@mEO3~zYz%P?S{RE$qiDVV%IaSW6hj>k`C$~Zzf3fhh zpo4P^*#mxNf5TRTJtsHy9Qw&NY#!vEfFK%X+Wn~m>pRdJ$l=`E^dj*8ok2)J?3VlE zVSw5ECAk3lcYMNSLAQCHj4yxZ#i&c9KiKSwBt1Z%$_3;S=&u|@DUkEjIGO-#oB^~8 za37B)cSD}Y3DTM{*UitwZP0d8A?*kDKdv*xf&0*DihT~i+l-=NF5(=W4RL?40&{?Q zxes9eFqTsd3uL#I2!6o4bPq!o`iEMG#SqgKPG}$aC#CQ{$XoZ9v;fqiF;PYgj2-z# zXn~%7Z*dCNmxc(j66OjG#_EBils~Fv`?tW10P{={h85@|bcaEK|3M{cDa4(3HN6^a z7zU^f#tJ4;#XgsASw=2|I$XUSmjo`H(iF|ky*C&F4685TA3)FP^ZyNydl9BI4tid0 zr0QVo7geSb#6`OYI|z8B1~F-fwM;jC1jatIWGFx#)2hJJpk`XGz=S}n1b+@#YnYHa z@e{abCJ?`X%N8vv0yN|+!#co5mJ3&ddZN1no6Xj$iZp?-J9Y60SYKwxs2z}pr`!nk zIqLEWQW3apdq?PkCe!DH-Vk?AL&inmj&gAvd}`>CNw7w~PB0MI56;6AK~L5o@qeyU zbUEt4kIWo88hFv398SM?OVNIITL4=EI5~|`9lL)4ZUwvy`l)5WYciOj4*o?4PyyIeT7(_MBFL1~0}V?s zyaHlv^MGE%<~U9~1pCCj#5aghRye)|w6fAAK1{Ere;u2@BQ4P3Y8mks?9+_V74Wb4 zjaFjk=Pm3SXr&-S?t^*JRzd>iUDksez+Czd(GcWqITy!I&|hr?J%L;j7$zY`Xs`^k zg?`>C;xp8`^u1&-To>#~AvK|YhcNyS^z>+=V?oa!dDK=|o3mb^XW&yXglvTUYpN5A zV#kP|o&|Y(Lxd;mj1}p_gQ1q16e1zu_)3rN1um~vcJFTU!y5qx*2%&uf$#f2IXQr3))r- z$rYgg9z%2(@DR^2W5B>aLFz)@mRMop5Ti^z2Ao%*K{fmo_;lWaQo#>(27Lw0hJqN2 z?K7Ly0-blLlj2Z|wr->PMZ7=q^hpNSB_5N^f+_X;q% zQ%D73eY+SLK>MsBz6b0bBspMj!UTP(Xvld!A^bV`_t=I{!d|wx0$m0!oYyc_XbZKV zJJ9ClAszv*l;=1n_|ddNr@@A&8z}>x-WAvluu-^4bVGXsqIe*eW-X(2pgw;UKo7wW z*BzW2>@}a#-Jsz>2fhI~T2vy6>F{SSKw@MCtP5#QycTTiQ}HzrFS8-M9(>vd5nq6N zdN;>D$Tt~z>MLj^wI3IP+}2u+`9h31wXnUg2Z@*9PT);PvAR%m+b=b$X}f3rzFk-jtjhz6X;(b zgDFD4+g`K|@{N8$&Vc;SyMliMpNpGO2iU9lQ;ML2#ucm->?LL~q=Dm5JNn3U{GH!<^4qXB~oC6dWoU6~-h4X-(^FA`5j-jD@OeW}{9!0MN{2YPAMaZQM zbLqE$N3ot-0X8$G=}S=eUbvyfkV^pvNGsq~VTD#fzcMf05BNP?@I%nHm!-c!>;|o{ zKFEJX0X!aTSfbb@;42TQ0hq?s3c<$jIkYmP| zDfYdW&yfWC{#6(ssSY+Jm+^GKZ@C{Of=@b_41~FAw^A(-qjObM0bo;@g9U?DoU`#3 z;OodBI6$i<1GpWu4V0-{u-2Q(Zx!eCz` zjLb&c0WYL^enCqI_Q7LW`R9VE@KRGgX%$&uuh-Y z6YRa)JDz?8_?0vnLZHJ?4;lbJf}hY@n3o~K@f3V2W)SS>KIu_a0e_SQ^#<-|Z z(@xw6?up_=JlI5hp_E{(2E~Yn9R9S0!w=#pq=}t@nk;u3-w0zZIIwQmBjk(me2A%4 z79|XPo21E?;Ge&eVn2(~$mS>l|B~w|4EW+diIbrDy1hg(aEyLI*Z`Nn{R|uMDYT9J z3}dxZsb|nn_%o`2%MXlT-;0Z@Lu#Ps&2~B;a6Z(gF2cDJj}^86YQoGFBnQl!V~v-C z4mNpAcm|EBuSKHZ^MxQi3G)sbGgKjG#1se(&@DiaEQI3w~wd9MqGI3MBivHvdnIeJv(ZNrc1t4Sh)Mf_YE3Go&Cc zLmjv!Xl1ybbObKt>&bOszb^>i1i8ohL=FH){wIw2po7SI@;%^eGewr5c^gf!*ZZZb z_;QCD|NW5NlpX`ZVaT(ulL)XK*3t5WvI1BIiTS6eltTV66I5Ivi{m z&zSJe1E#(ly9sm64Wyy~KVKiw2zy8D7Wxoyna4vN1kKN!CHSB=F7>CS0h>HQQc%0H zW2lvEpPl#|&`R$S_7?mr$K&@w2lrGW68b|wF#tarx{lX?jco(518k!Eu$SOdMUBXW z{#ALjJ7DH`L$UYVQ=9RHU~g2ya0hGx4yY93LY~8RKrV?k5zm23(o0$p>}PK$VgXNh zJ2nn=M)ew53pVH|wgPgPa~4(se#Bm4?3ye>lPQ1Wg1$b)OxbJa5~T`$l$TP~khiC^ z3HEzUNkZs4*bBB%pmQBn#s)zv~iGkr;L33*v zx(qlzxHBw9NH^SVY0xT_W>>f+_e$Ge&+7)gMEW_q`_%YDRaV~Kd?AK*-6oR&r8?ji(s~N9JeW**tXNaqSKLNv- zfPwon_5%7BT4?0{Ag z9MGQIg1Uh(mmn1cc|QD<$pyNphms_myJl1P4Tzm<7bORN)Kl>JfJgrfDGeA3-qJrI zmj?B5HfGmaEDvhC$SsV0T_8J2F9uD%y~fYLT+R{16!^@@#5o`q8et4h@IUkjH3ApD z2h<5Tf0)sZnLt1P6Ji(OT+5HM&jX$8$WGuQ+r-!lK7ZJfA#gshN1r|l@qKBB^FeNC zWsz^8zoP(s18mwKX&KP-(-G_!;8)Kj4WM1@jU(`*xq^~~_%<&jouGfW7rhVqpC(i6 z=hSD5=mDt1iXR!lkZ+%RsYu|?r%UC*`chngegL+>N%9Hwi><^;U@b_jMAmTL(sCAU zgE~WDXd&cSXd03Ln*n!xJK(gvNuL0m&rhQq_Sh)&9P}4b!Op^5v$iqx0E0*e3J3q1 zQxtoTQ<;kmgH|eacml+Zb&D*Au~<8?3^0T&!lWQqr7seeP!j^hu*DElPIHa}f7_Uh zGzx)v7o1>Nf}TQOFmu4nUqxO3UWeY&Q{ZQC0UZVyroR%x4?fj>DRx{)dAt~~+0-H~ zm@AeS;{lun^T@fdA8psbg&{^-UDO)LN&aP6D9p<#MNRz8D@;nBu^i(5Rfq5aeO6}S z?Dud?V`=t1QjTsU4Y514fxHKN=XfJ?=s%u@FNSqzv<_oGmr;66ssWcWW5Npd{Xj9o z6#4@%GTt_WC?n z8E7S5j=n&@@f0;1?A1o;7--WEh`E5%CmSgN$2%q*u*YG7%gIfD*9-c79TS0T_F_Ri z9C(>Kk?eQL3X;%S$PKP&(i8AhyJGBjy5{te^5Ca12jho!)gIyw&Wv7LkIFo zR0?kb4352wvk)UBMLvhI(yC+()VD{w=sD1@yb-?(KHY|p255WzF}@jUyTvW!3pwxV zO5FoLJxdApy`yFGIDWyrY9F!lz-1OE&3@LSe43#Gn8mWtDbSzC8=DI`VBba^1MXVC zFaj|6A0>!EE(#I zus3x9a*yX5Q3*C{cB5pNm*!5mZ;a5_60#38ukXj%?*Q0} zQ)v)KY8gEUamOB#JD^tld`?i{(;FlFVU4fck6FUJeCLoqXywq%SPPnujAI;N!(&V< z|IKGKGRXn^J|?5UkOBLlV^k7gpl&ke0yfnpq%Fj*JdtGA+uc7XHPA%;M#LG$8^{f^m1eq^v~PO5QF}qvs5c^A6`h*LJqIhqV|AKZe#wU~fjluvW>mwxlfM{)fQ>wg{{WlC6@)Ux z%U75V25cO43=cTJ5>Uh(0S|XPrVH(v1NaNT;PDz`pS!AkrniHhk8tuL=pbH!Nx~j6 zXALF~ewb5?S~kva*msDL>NPwR{Ft62b^^}TYp_JnP1t}u0dbW5Ohf^%&~Z`$>3xqdI9Zh{d&M8{0n+fmqV(Rf2 zH}K-&Ly8cWyTUlTE@_r=1VAi=R4GpIFL8}d0iXBUDY&PB(E^OOU{5yF>~~uFwvyLj zohl5YKA4wlH+~Rwu)9n5gU>g$Bn{WX*&S3C^q<&G%mK}PvKfm3&&)dfE99G(Jz55J zX0a+(0R7UDqy%WV)dkOleyeww55$yn9>rd>U0wK3(Ai4`^#EqUJM<>d{QhbV_B-mT zLQG!Zt{%uS3~dz~Bmmkzy@%WYTl88&9sK*T$f&>hj0Qc(MS!!Ki@XWC%@JXA0nT5I z1PS=Pi)r@#XQj1xGxR%}pm{KF&jiK``CPCYe+HU+kkonb&-oHrfPGs(u^O<2Wg(LN z{){f#!(QWV#022Xtj2nvJ$oLO17n5X;OzQos)e!NZQ~T9uR}~VcybD)F+tt;uxj_IXUwer49Zy3n>wp_iYzC z4mJX%> zCvg4c{)1*evv_in`T+L$Nk$-W8Cy=qL3_B9RA%cFhh~E2Zw2v3prMBZc@*L`HHjVo zHr^EKCUESn#>}9fzZp}2HcuZD-U-CiBQYoFXP!bfFjs3gJ_Y;8;x`NyU>4S+zk;@d zHk23W&~X;u34CqR(I{LOi_IdF0q56t>pNHsU?xz~)<255#c>FTs9Z9K4yd2W`ta(0rJyyMe*# z`f7$D_!JRC{h))O9DxJ(B}<6|(2iM*@j;$s=#%EqE|o)tz>5+i>me3$y2L`r)!<`@ zAL8{?kYc~9e6^Rd1YWha}-|zMNhEnY?FSjst7S;}T2c-#h z@5?HjeUIH-o$UJCkIA~w?C+5=b8sEtuJ2B<-y2sJWmtfJVPWb4#O_ihu@pFle8Axu z5XPB;4goLX3waynQmDs|g1u81V;#inQ#K|HdAOsF(1twsJ4#%Jda|JueTUd-Vwe(e zw~a)bU@m$I9t7A-f~X&m!%`T@1$yRL;5OjjU?!yiyfj@1_C2DwOXMuTQz(Pckk8z? z)Bjz}`aib~rvFcX6A-UG7tv#|5xC7*3YvfQBo6@w+1nVrAA&eFIP_ut@>=7@z-zuL z+67$5V009G@*AHE?C&<_iIOLQFB&7n zVcumKNCtc!5v68vu5%Nx|5?9JnB?5v|q87W$ipX!bj? z9BIf9`p;=&j{vhGC!q?t=X;3EfSl1bXIuiUP!3T97@{X|_PNl4DzXeP%Y+fqz-#$2 z{2sL3O(|)}jpo^C7GQW3L~Vv^RcZt)g4_@-LbpJFZYOFX)QaQpv35A`l1V0y{hb$0 z^>M&;C?=ywC&FA0^l2#=d!3K?2pm(dV{jdZI92d6(9I@~_JIBF+XbQo>VNbL>=TSt zHNo4U-*GOz4!ASKF;V!=W9(Pr4A`%eC#pfWwa@U~&~ImrjetHX6KFPQ@}Qfjfc`Z; z#AX;9^%yCD&BJ2qHgLQ(MU;cjHB4jzHYa(olc1+u4PgPX4&+C=U~}1)^n&SlK z!heFP4so9sgA?FK{TFQvdfxuY7y=uzffNFq`ERH=z;@Dxm<{v#q~N+>vtSO%zK4Se z;_UMT#}@h+`0p=8@1PEp?I6ZsEo8o+Zh-$g@#H*+#ST4&E98>EXL2#*N!4;P6gbv$ zGZp|xktLKmv{me|nNZUdeb6)W%s1;yYl=nu}S3J>NoN zAI!V0Z=#p_Hig?(hVC@BeJw{qf+5O;$_>JD(cN+25c)46*n_B)o`Wt2DM>f{l` z12&@CG`z=xCd6o0sE0r73HCd0(R}!Rh>P7d;s+M~Q}7PJI&+HsE)W-mgdv|_ucKIyKgUWL@QfG@Jz!WvO%rOyqrs)G6#M&kn%uMyjFrDlv%gn0ejj6h-<*?yv#-Hjjw5HlQzu9~hWMr|A%8)>;ZO0s zz}K#o+y!}y#WK!-CP;<|0-Zy0Xi4C8J&t6*+bOG#X+pjUY@~$1rYVighj>YPp+yjj zpl?VWu-!UOS_8HU3}b))QS>sg5%h_$A>M#ZS|T9?n3qYAJ`l&6=fo#i*I9>1_PLPU zBAorK-^~N>f*f$_r|TeRp1Lu#K@-vCxHb4Ou%k~wztVSf4mffx#o6yFFI1-Q0^irt zm=)OY71Qy+oo+)1VNWN1;p}(mEjDrN2c2bPF*z8^Z-a*bHq&DA8eo{U3o`(lnRe(H zv;|3w0d2n3lrLP5Ps)jMG`xp{ zF*z`Is4X+(i7JRo%sR5^FCO&Wj)r?dXwU_{1kAh!L=5C@cnl5q1JR%zJ_vq1gNa*E z12^5JEFg}@G?5YLaM~Gv4>iiun)nJF)4Oqd$WH@pjQ#z6**2;TwBq)n*!M2D90?}a zFBxKl!ukBjTxt^5os`3CC;--}T`+nNd*3#Kp#k|UdIoi|b&ep@AV!0y z2p!PM?=r0odft*JJOM-S1jz)=^LYt1sC#~hp#(aJb5R>XLrQ{TpAQfzj1bW6(`T|3 z@JRAA&OyE*3696mR?MN|f$xd6cp+f04y0Cre|{q(2XtQ5kCp=WB^$_Uu)#dB!=SC? z4>}b1eyc@ZVDIOT4ZvDZ<|MzuIX|t#@cp~i(3eJ%7ck^XAUnvh<}qREyw>GJpL zg8jqq@U3ct2J8D>*2Q1MMvBcJ`YsVo5@ikUt2Uic^KSj7nnxF3IefJ*I+=Ij_-Bo& zO~-9gDwk#2Dejb5o1o|BmtbMCEL!>$>ubjom)p751(v;IMh)s%n?0&+EvF1xd?J-t z!XA-FtQ1;Gvo>%u!}|9#2P9Y@ivyRp?;nY| z6C{^fQ0-}#yi3V*tG5XDHov$hdKqRFxQo|UqB|y`())8!J)!Q>S)b%f;7)q@6SZoU zL?y?7G{IP7CwrT#MLkiXwwlgg4_!a=WyK=CkjF*#8JWX&wUru&59+76HTzw;_IeTN zxUWv$FIM@o@s9;O+6$_ZTm~|~cWmA?f9!qL%1*PdpKOa-s~(p6GQ7Q>wP^5a?zO#@ z5l4M-yzrC%CHEn>8M1bV+rqxDn)539#ft(@Sv_&fC&?;56$Q@raC4ozud{v)YiHek zy@r&Id|Mp-Fu7UcqEN{bYOohO8FAF1TIKYl)ruWgXRf;v?Xa+T`-vPeE-UxE@@sYe z3pkZn(izTr94y|Qw}&Dn2gd@;Y~P(t+F?6Vaid3g{mZafuDXJI=X#l?WjBlW^=#9w z3Z1ise&lCckUUkuy76nX!f4z%y)xXg=Gdl<{mZ+Q_{;OUzhB*9{;f=3r>1RCAi!bm z3S}n|vy1z#?YFt3$$3g!ZN-D)21mn`SF3gAYEYqp8G*~bzj6*Z@zZl4%vCLGADtBQ+B5pU*hx zVe=@vCQQ*bJW1iJV#}>I!s^%7Q08mJ^Mz5D8sg6;J6rbV=$)BCIq=T!qTRBkx*UUc zk5(^wUL>n;mfuE@1rGCf2RVf#IrPOmX=^V{e`-@w@a9wRif!LbzfY}-kIS&tIe6SJ z_xL8evzOIU_UYcSEZeT^lkmJ(tl?#`-d5e0P8R#GuH^a9|E?q=cc7>_#d>Yd__*Fk z&yJh3_C`0(>2_gamOHfJohvLwnr?tb)Kd9QiC ze4rmI-FdWv=H{Cp^mz3ATd_48J~^&wiWU1RFnFu~Ndl*ne1IimM^CoP!TXiFe?5)8 zo+HO9Y%WWGx+&cMLZ90u*9m2_@f|sb)aq892W~6+%tb&G++GvSja67m8&Ot zt(I(yF*ft(h*)Pcxky55k7IFNZq`o0vu~P5>cxD1)LPo_QrpzOJ5Pl{~)6CByH+y4Hcmlj3Ksnb`+FG+2J${v=4l`}*lycEQ`U z(TjN-lC#{etk}9((Y9lI!Z+Q@CtOGKL!6Tf7d!Gd70-_oP*!-n2s>c5S=%xCXmGvW zWXAT<(WsUOo+(!9nNv&kB!js;o!nwCf9Z6bk^V(`^nBKdfnTzHr*$ZoHTA=71HRF# zZ!=v7l9Sxc)@OH_o2XsS7WJ-PBg_|ME|nu>FFWG?Wx>y+B{o-Pn$df^-;Y(id#2SA z-graI*5+2~&?ZAU(N)K5R1PFmW;yRV!kNAz@J760+DPE2|CDV-S=`IbVdozfmhTh3 z=4H$>*}ZsqZSO3hO%V!r<9ohZUusG(J%4pv$ER-N=#$PO+pLD_*G9OWckqw-$tm)A zj*qIYyXw1Jp8vQk?0kdHE9VP4oK0ug=90X(b{*Hy+|4S&dp!2L>NK&ndgPhDydz%F_Qi9O*J)LX;jD6w zAM%cFgLeo|8Ee@(**BEU2FLj`GL;sDi8;75EcVennm0V)l>7ABHcj(IwHf_~zwS2m z^zmDI-|VRK(2;~&i_f`w8_9M*i*my4F6{9u*V2A`?!JS-eU4B$bBT)WzdBw9Y;Emb z$zR6%$-L!2=&z;PDZb@Pzs^&=9d0JxnZy$i{h|Dl>C^V3O|u*?9&yf&vWh$Kc$3&7 z<1`-Y)Edcn-FtWMI(o--Y_!_zn721$sMGVNd$sU|B{<)N%igYaYg_w#F21v^G9X{++M-q+l!W1>*psAOv*-9h1}N&=JDI=yk~dq z)Vw+ML%s9$Jvff_Iw@_we&76bQNU=m3Gar|jrNN=`oet*mwP4196lU#?i;H(dCrmB zmm2pq&vkv*zCX-Pe&wM=SjLBe)_;WqxUjnBKeLojkmj%_A3vY>BoDCG}6{pWyFJF$1|cHs?R>}LO3CeW&%ajhJ;k^%U(=Y^{$`!v-KX!)M+&WJ zJfzs=Z{5H5=Q7fkGGHSCO^7wad?_Lz>_=aw{T=u>f&Uvvo^w| zcTVzjmYP~>ZmjL{D6u z+ju#=TQl+jm;Mo!_KC&=^VXT`)VXsv)%whGm~mw4k#mquhWuFaqcjmN+t}1M!4qy> z23&WuoSx}zu;)3oBfs8e(y-d$BxmAc1>5fY#Xj|pDaC}z`=yz0Yb@;=7Gh^3lNruE zFE=jzHfCFtTA|9UmiU+`bVq1?S){dp)tRyHK}rKlv(pZzcJo<`=j@Pg-E3QI(WkPF z)mmeTCqH^+bk?=eo#0Zq&H2PGc)Qv8qYpA?8&*yV@J4H!jb;t3if8Euj7AkVDUv%~ znyS(YUnJ;>|FD01<*VN#vkP4wLz}M{4Q=?MtQMg%&KheuBX@88%&nsePS^70ZnQvo z;%7G{&XW}~n%d#k3kMMkM8TSZmgw3VRk7yU@T{f0W$Y2LhZ)q%5Sf$F36H5N&J zha4W(sq5{qTDr@{;reA=@kqz9YObbR+ZzV*%^Pi$^*oY(0$k2r}m#cYz=lw&2vdK4A&XtOO-eiVwG7r zs`IYofYQbFL&uJ+Q?sva^cKH0RM-FJj908}^a>}=oetL>7nOV|a#kK$y;j$1<6-{9 z#wuxdtRG*>a-3yY^i2b$aU) zfub`jjCPwhq!uV@v^6{LIBz-c?y#A)=0UEYXs5O-hgg~I`%H|TOiTAly{;SDA#yYH z?g-jqpOmK=!;-X&HfWCPt&Z!qoLf5S7gyE&jsIb{`3BaQ<>CAzj4N(qU&C}3OK(ju zcbHxCej`Q?vp5sptk51k=(wjj_*0zF%g1|ko$L;1DO=cY-JP>C!s*lNYno&4e>vE# zYOI!AAhk@qufQitN%fLrN5h8OS~qm}Y+3rjb4Jm)MPsT-?NVid;u(X&kvxkUYkDD~>c;#(KhP7(St#Gc2_$|suRRw}Ml zx;3wF9=MbGU|5PkkK;JdT#E(qt5qAv*ylTbt!AB zoMq&Jra|MjtERII9z5J^+H7&`;F5;Wx36f|Jj z-NjO_5-$xsvE`AKjRvn(PemHX&E>n^%)FQ7T>j*S%f5o4Q@Y~`o6J9MXil%=a!4z6 zNJ)s=vd~lJSpSjvXRSpVu1MZ~sQ%GFWK3zr*~@kkMb?Qr#;!Fe@2AH?*Sl6a)s&rh zWc|lYJ$#i5PUP4vDn2nhCY7XO5@t9!w{$K)HBYrT z{-DyuqW&v0?DT8J-gB?|SS!){?lY&74NIeT)zS;$Z<@!&l#F2b1Bse%m-u(YSU7Fn z*j#3p-@N~*^#tp2t<%%J-)^Ki7>m0VaozoVW|rNCR0E$m!e2XowMUM6g;`tH9iPO{ zb&6JAzxI~*&XsQVfVdM=QhuL+-;eiRr&P>y0F#l zp7)set!A64{kCUJ-}HT`E!kzFEiqv}vH#Jq{z=brG*GgC`OdHA4#~FyABnZ6b|fW~ zH!s;`{i*6_v%=4Mg-DZ$&0TkcY&*)GT_s|zyqCGXns;7G#3`YD^$p|nwI>D}GB$~? zYqTEP8RcWe-N>qpWYlMzbH68D6t^6^*Uzra*YyOLccp0 zr^QamE-Kw+lI-7}d(y{Bq|SgiSL}CwcpN0;vl;}z;heo}= zRzc<_FYnVtr>ncer>?GG?nG;{^n6{xL8k_5 z7&FI2@2IA9#B$|F%B)4n{BJnV?~QzUGC?X{HO`#TYS?l4Bx^|F$X9VCvujQs$(KI2 z=(vCGo4@Pez)M5Nu!^@jr6L0})-2=~-#GW0OHD?t`Od&APxCj{bPCq3aICLfW3+Eu zymvxq%W@B{Nt^hp;;rY?r1Dh02wXEZ-DRn_?}ESSVyEgNC1#q2akYJU$N4=ogpL)O z&uWcO(cfhsT=F>7;nM021twoqtD>wNh{Im?m*bP_CbGL`Ts2p-zjDxG=em!(7A;eE&0<^Acul2|=uXT7UdGN8RA&Yq< z!R~&Rt5#odc4=}#(|T&dW4nj>pW;1Zte#8O`HqTyylgF+ED%-7{E%-w=D)jLE88V5 zJBKrD%ZhM^!5-127xy|yHWqF&J0cd8`PFRR#?no8o3@`4Ugi5fm`5j{yO4P{;W6^Vkz13oP23i)|ha?Ya{pXX_z@jyt_QkhVf6 zLcAd1$lIr5DYmx4HJ3YIbQayG4VYiCq4!bh278IpKNCrtS?kDJcWV|^7imr}m=yNiU#&*nC^czH(K zmh;4ikeSI*&zESfpZ;#1l+D%cOD>9x%b8>9wyWpY@mL*f@YsB*O{3i)son0^u#ioE zmq+=4Yww<#n}v6r&djzH+WqD0<$D|Jw{r8%iW!SHi*9-FX3ZPUP|ubIhEJNFy-3O% zt7iRZD$Cjh`Fy)*)6r3&^kMJn(=Q$=OAU?tSl4ZDSvszC`r}o(gT&sQLM+CyHU<5n z`%`t#O#^6{iV+Z{{s^pp>K zeh7KiSRc+m9-8HN&@i<~gW*&wW}|lWHFx)^MJd9%=Zu!eb6Vah4;57YwDn|E$1*S0 zhk6^yrcE;@y6PHgsMGUInQ9K|O(u`*Z21?(b-sT0KvUG}Yu##y1xtA?7ND zy;;YP%QYAsDjQnf_}XbnC(pw;VP4-1eXRplG7|Q>B|DzQ)yJ$*8QIa)n|Ir4af5>3 z!|pS)Q#V&FRkVtA4k)TI?8T0F-Vb-67x7uwP;(xhE$d~C_7=!GACTCV7}C0=RoE(U($D_Ligm}fm$FSe2AgOT;(s7X_<7ZXmUWg9<7b#|Tk zzOLi@$@%LY+_o5H8Z?HPudjb$qpIp-5nKDd++Y3bZi7bCq*=FqnoD%iVJEL2d%I*} zz6Bj#ZyQsoT7KzLCa=4L0N=+pWTkvmdY!I_oOEv0xPbos7H7-Og3uqzqr4vsrmp|A zdu3U$TUGAWn@?+Ayibe#ZurJ_B+aYYGNZ0&y-+)Pe9h2myeVwXsV6$-!;x1bu9zKj zVU{(YTcR`nOVbg@itSq(EZ?MAcpaX@^_gFnk))D2WK*B&l8e9GX*E)svDWWurrEqh zA|<9=@AO^1zqd=iw%fwG%Bauv{-e~v$a|q@OEvACTIEa5Tb^uN(7}9n`>{RiL&nK% zS(Ut6!g)X6MKYz}t2yI|`O?N}DnG2;AwO$x&ao_6Yl#*|w^Bz8 zKNOJFocr^*gH*EJ><2?y@=`6UPi^3R=;D!P>3UiA!QA1EZUG;6?zgzIcWG8jRab|~ z=z&!dAJ>~5FI+ijr>M|>6UTc^@3zRZ_^B+B+FBtPE*Y{Hibx3&&bRtJMYXD zvdZ1ND&tbLVOY3byP4>hiCwAQ6xl@v*HI8^yd^D`ydFt{(w(Yl>7Yfjz! z#_{MSMTX%L?c&5H=R1Yj$7df^TfNwNQ)7yMfJ;QPPY&14N$Nz4(Tl})#TMdqZ?+{a zx9VDS;`0`ku7q{UA+dF-^N)S7-&NGH>HS;lfwZ~>!e!hId<)y9i?IUR&se=IrU_)DW@ zN$iMcQ!5KKSgR}(Zr57o>t_@;%gfGg=j6lkwe;;){pGQ~l=gjkUaf_702Mszrf`JONW2`Zg+!*VnuIwDO<(fQm}LNL!5@ zIKiKIWQIuIT>H+`A_7)7jtx1!IhGUi*1E5BQH6!g>=Q;?oSJGMzs$NNwEyW5dz%uw zC)P@0nKQ>TPu={b=4@DAw$Igi`{}ry)v~=IBX;rocYW)3)Y$B|;gYPyhG-UFrqP3r zegUsn?puo9CP|xRZhqla{LQdCyI<{*vRs%|{=U1N!=FWBJ9^0w@v&V`ewkEGiRW&820lRSJ?VK8uZ=8GQ3YbSfkZhzx`k#lwa#?pk10AYIw;mGb7CCYT@>l@{VVvlR>pk<0nQAblj{!3M`rN*ZXa33fezWsjo71 z-D8p!&(>bG8g5(DP$Hmu^i}U-vGZeR%*kWT%CA+6Cx=RYm@8O{*-U0DyD6yVSe{Hj z-Rhxl>J)nF+>{eX>{^SUP2MRhb)D}PyR3`;=o>X9*>Nr@MHe-Q7+<{AlL&&jqf<5(iR`I`*8Z zEUo_kC^ipwEF3Nj%Z|**p2?n(J>I>Ckr_hBj*N)1_uhN&&1-KVo6IsRBU@Qzmhbod z59d1Pxt??1W;UTx>RQHx2odON2+h6t!L>C1=Wc-cQ3=RoeciKlE<%sH@z&93&nN6` z(LBFxp`mIa{`trdWirGh@u33k`NqTb#42M!v1M#i8dc)I&HQwWTQHJ-VF_@!F1f+fSszUOk&<~b|1S#(CRjbC&PO|R5W_qQ@5%GWqTMo79imM4 zFk-PiW-Sxs_l^8U;;2n1;hIfe{EvpVE{$u?RfK}`0P>AvqgI*oH{PD)%f*i$A=wJ~ zi=?j~5=GosUkKTLj;{{o`2e<@Ri(o5q<)dP0CvQ1nUR_-w7Xdy@%boJK-kLIRJXLM zH->6eig)u9Fs+1=N>avUl^Kfet2;f;fYE}5sC1I_CmB(qQEKmuu*Cr+Mo}G!#uQQC z9Z!;!kYnlnR;3T)oJP!rD#G?rc%r7JjLdjmTa={r-}Pomux@~7o*^koXx9&0o4~6` zpj0~tWS;icPfO{9jyZn~*AQfsboiTRp7o)?*BehF$U;P>uN2XUg5bM)fOa7m28^ir zEclCZnfJl?dD{#R&b4CSzuM`C?@;(-{Osj*=Plq|YJ52cu+t8Jdm|qPP%_ z+Z<21x>bd#hNr)9uVbtP4#r^ipJ5Em20u|&e z>}USx@dJM>Lt6bi8{=ChME3-Di$N)tyghN?Fe3M>;xCuqk1ELj%a_$<=jne4cE4aL zMF;`{=3kd76sRb+NOaRe$07ppB@hGKIKaWXA~q(qGpz_%q?PQIqyH0es+!)~ND=&t z;+scwhca(l$Nq8C4>!U`+MgbUNfG_Zql*66-ToLW7J?l5;ooxKgNMlQbL)MOQTdWy z_7sKXe);IX-RE$WWYLs(CP{;gM6%$;doUx~nxOA+D7?UuK{Uj#W3y(1SFEq5y$;7F;CgwcIK(-YtCS z!g+#|C{E{)M?T6TR!y+Es4arDMXoJDX9OiwdNpR%d;B3JWxD7WEmsnX8>hpff9i3U zjjy1QKQA8~v7+V951LTAtwu7pi)T)jcbp`MC9WVBweKiiy6Q6xNyy#=QZVEEyUy1+ z^vd6(-r9aPTKoq~Pii+HdunS6xa(pwj-JJ7haFm#MpnSTsQzoXd}|9o3hnly{1~qh z&0(l8dbk0HCkVvG-{ffM)0YZe%5*~ax(O<&@po74Q`pA^a#?Vesjg-3Q|B^4b47c# z5tdlHJdw84v;0t=El<>M!2l2;$i?@WhuN!3pTJm!!aQg%LFCKe=7EK$QCTW^2nv1N z`qEfSaL!RYlqZ0nhYL4WoXbMP_7143M>@#**#J)6d2KPue=O@N>tbH?_&I8!(P%RM zDv*DArrj^jw*~X4i_t2O{b}9KTa>V#4IUhs%kqq>Lvgrgsdl>2^AeuXHdV;>&xOc? z>cFldPz6$*rju8G`j{#1R#(~FMF^16#dw;=TzX_ywcqlg#1dSTk*?ZwViz@}pn5iK zcn;ERxk0ptQ>+BTlh0ax(h=bDrzuQADJQMpNL78W@-X2^J5BFG`~LDcw}6(EfuM{i z`v>w0M{l>Ja|z#kY*7@EdbjE&(UCN#f3sZgp@2O>-y>q(KKA!7yna+p4uO4&_F61Q zzdDSGjH7BL*1&#Eto}tm$*@jusN`WkJOitYFW7ZD7r7sBX=!nEoPZ8b+3>Ta(-(Pl zmthckpA#%am}wk`HlNz<1vpMEX`sA<>P2ffi|>iSyw;yM-atA#V%U$8sYZ(&R>|m} zMF6aG7T#-D)r)ADi|@R9{Rj8K-)rQONQ!J+>iDg0Mlp&I+TcvFSiewlT`Y@AIl(v9 zKR;#37jVexIXh55%cFg|i-X;2)L!uD>xk{dd*j>dF8-!^bY4}w;bv%jIt84FRS|Kj zF^|$Du6iBhH3$9^tM;H!BHe-ie2^*dSu;4R`g0_omto~dB8Z(D5CpF${8WR!xr()a zdd~8v?;J1C7@%(ZU#k6BoqPvx8;Q0~(R=^VQz9qr(cZ!h2N|p-c-in@+Vv7&&WEb` zyb7Rjrlmx`iCE~<%?{N;uWM9Z=Ybd99r+aVgY31&v?(}A+U4w3d}yo7^Rkzu*=gV( z@ry>*R20qUo%UgjULN?Ql987dCc)}1^Uk*e&|~CS#q0Mkejvk_Xr5jO82o~hl_3_b zNJmMpJ`S0)au9U?gO^R4$(qMKL z6}IkkCsr&Vct=SZWgdcPR~6z9_e6ryKFj%hI}D3SsC!B7ZvfkEq^`%-e(!2I`)fCG zmI%try3%GdruLDl<7AFis)Rmmu|W-)1nYsh2SdDIfG{49@Bd3_wZc!I7$F zp5Gc~4bRMUWdZ1#B^p_*ny2^AHwR2lIxtoFsg$f=6Jdf1{rA7v{KUkT;9VjTRaJE$ z18+#-D%hcz9Kct7mWPIO$&i|RXF$I6eDltSC{jGF`iBK~QoKZ~Wa&3e*s=x_+FJS< z45?Z&=HnI!uLwN<7}+^{50{+hl=jAQZDjWg@!Ib`9T~5;-u1uiQX}?-={JuZ$ie}Gr2f0=I2_pC_6c^*Cv2HLR zl@|LY{)@H;@Lxua_`BL@e@!X2L8~vrfT_5)W_u2WLT#5!W~?YPUboU;5rwf87vz*3 zGi};K6qIM{MF&TWRB%2>6XKcQI)KxwC#H;Pvw>v zNo9rguj_eJ?cVaOLn~;Epn<%D}{F<5*YuvT^hwuA$|rSZ|1vZKJ)I)C-{A0^$OQa5&K+lx^+CbCYl%`A5pA%|>xS(py<_f{HE z93V$wH+>OU7VQ>6k9}9P{}&&VGelk_R3@Co4hl%=;nj|*+@5*xXwrP-3Nu>UUNWw2 z&eY;z6mimv#%zHPSUI`pNL9iuNHGt;Ao2CFU z|J)aKp&}LEe?4d6Qey#s;t>*1L2#sy&na5{X(sC6&5h7khj4UnP_C1G|7>tfclC*p z8noTb5*mp1S7ChJ;#hEVjSDErL7nm_e>dD;lc`pGhy2m*Y&SY=&xXEZLEI11#qA{Q zD>o1J20dtahr$}ZLhIMQ?HO8+bT7uXIf~7AgOtK4hCHC0-4CIBK#i_wh)6P;TqAzL zf(P{i4ew#jm}1Qs%ouTP$;EPaS9 z+%{E3e7LJcm|cxdx6*NqQe`EwiPqf`vuwf@b8I~14Fl2;m)?)jhnV&{Da@Tz^~ zsWEzUDY%YxD>SkP9^|u7_G>Trqp5@{mlkFbgY_>c$makKnp>w_Gd359+cb}75Y_$` z_Xz$brd4JjrY675lwKw(1v#@tt_25_gw{L#X83WZ^mO$!p*aA@T0yThKv6i~d6W|K z`w9;H7i@mMGFX#J?%+!TFc`x)OD_PL4?r5TETIyrU4P8_nQ9^!nu`q{bpR}YpfP}NAb(4_v5$qNb= zO(V`{%D+)Ybtj>}btZO9Q4oWVnL-e$7)Skt--eDQK|&HSa%A9)XgcqR>%LlaMYBnn zXEZ1?^R}oUzpzw?4Cd$-$$;I+%lnSeXWied- zWj4mDlT<{O0JxuD>4~^3HvA4}wf{xq7r1K)#?ok(b-nI%^~sNyOE|aOUZTC%Z@z6K z(g}MAPMA`PV*)W{dQ(#7t3INNH(2pz>#;gg8qTlZto3t>K!A>@JMPy#8OOyQpk{um zC~#+9G7nMwwB*9;KHmo?n>em;P6dn5KCxxF`MYj$xrmH5kWGZ(8s|p;sm@SoJ(@iY zAnfA%rZ|<~pjcm_6QbTYn@CsX9)-FG=RZCH{nxKXDcZZ=mpt#Mb#XoZg^6h=dJx&U zy8lavZrB8T1j~-xe8sNKlTRF1tTQx66# z2Ny;gpz0gu>}8}nd${};w>5g_Kr;il4aDQ^7x$lt$xqm)G!Uy9_ zf%=j0y4SbTTAkD1b`NL807+dp`NWW{rp^3+dzS7uV0>yn10SOC@hg^NYT|u&a7^j- zywnW;g4=b>-?{Is_>@NWF{_oP(DaLOf8R}6=)DR|-SfD%V155UF6-O@WOiQcsz_k( zsKS)-Rg|d%mMtZ~pu@fC6Xm7gT}fqeP`1Av?CIxru{4n->ERcxXv(1eS+iB_yatIs z>fE9V5m3`a28KjWDc%jDF=#3RKg~J~6525MMw!8;a_*A}ItwQ3+q&L}9JgdqFAY2f zKW@!jPSh{*7(Dm%|$+Bv0y1^SSdGbW}v6DqOFpg*#a`>kEwdon}-@_^NzTYD@ zNd9yfr?*y=8UH`@P=LNp?d!kZd5yLtcDq+-#dJZwKijxIAo9P7cBB1|XBCx<_ABq? zeVttRO40#T8AYL*eLkjkT$Gm3pm7D|PZRo1uJj+8{6NG}=D`*4rY!jOLDN#TAP_J0 z;ael7w$XmFUuvsfu_is>r^NL3}3 zsr_tefGfntI%-RT%}+p{8QgFA0tPk16#k02xSu0x{DqKrj5@#U(=3UX=|uv57dQOU z{!_MeJ)vDrBUFcUOp^=ul*9T+6vnHk`f@@CLVKw?I|g=ZTEgw5X;&e1xo}XW3T7#! zXxR~n`+=k;Fn4qB)AgsqY68~2jba6QJV~QsdRrf4a*bAgFTk%Aw#Vq{GbRcd5=Bkk z(ZZ`H2%dKYKZV_1et)e|Vggl65Gt;6tBlv=Fnr{77md@7hd&j&FsQqhVw+~!u|fZ7 z`4pdB`H^e!J^#0)rvo5NzEbsz2AxTPXWVBdKWFfc#XOozJ5-~8xjgUjgLWVd#bZa0 z9J%A%8MBD5g($!=d7GN_KLnl`yW5)gR@ow;t(pM3Jx8hc&ej~ICe|xA5SpbCv>R8IY6#OV{F2Bw|#R}^sd}~%hip;H@z8{a+ z+=Ku_h5XH>r+>0VMo7O_iG<|U-bc{qkWpA>L35tikl~yN@7UN`T3BpCz_83W8S-F|gtT69l^@Qn98bVB{Jn zFsyublV;+I8LQ2c72}weV5_Mk0ty%cJ(?ElJEc`cT~7Q+UPV0wE0qr$ED5crnnAfGKXPM#7$jh%e>9pq#;`2toF4uq1!p`$co`R*rNR$up5D zc^Y}coa|X3MfrxF{%d%X8(rp;grHeqdNk9HdQMiY{8cVQ+QJ?~6$ARF%vZd4?&tfG z(?gdc`L~RQU|v7RpH3X*VuLuklY$!sHz!F}&_VRi_TvS`*Tja%ca?Ih%3&xc>oeyJt0szip}lnw0m)lOYxo(DYci zjA(Bcc0Z9^`RE^zttZOucLu*^WtBA9Ou~H#GI*5U{*UKX51VR^_@**6v4z8;*`zQr zeseg4y^R6Q=ip*IeTLMot*7WD*r%g)9rFVnT) z3y1WTt)K=;XfHWm-70W$`3eoXMD2-$Srm~@%_)$OD%bq=zsG0-{dWVw5iOi)9PnKT z+fdNWxRfAoEe(v%U-@#==&O9#F!gF^kT^iEx|Q%nu9&0sh78uGrw_e}NfQ4SCBF6c z4bk{>OLzEaY??9c+cXu3!r#Jr{5?=g>M$=6{+yD*`&_gTn-0~f^apAEaJU=|k`J=y z0^rosdn%^Fm--_=iP@=y#zGoHiy9nU?kt_%%rlUdaY7J;GiXn%LDt|Co7eBY{ECt25)GZSDKb(x1|ZUypw>f* zakG7$o6P%139wT$7^}8r!CXAg`w)1?6dlu(E%kX$?Sdytce zt@u!>C$@bQ<t}^&-W^AEX($`yj4h$|i3Sjb?3^Um|$SP!goX96pL zu6xvUEG}$;+VsVhPLT@;(iJ*zjx#7=!W8zgN-KyU;_+k+%tNdYjj2PLynWSV@ZOimmnu?UsxT(e0EI`ExcdUxj>| zCJ!bk@H+XO9EI|I-iE!cG7sXJq@}kQ_x0NitwbBLe*nGI414&d;ZITB zJ&XA@76iQcQ=vaq41mcqtm-FH&nFTJ7>#4vFht@2=7oZ7di|jbJ{t;CMJLUlCu14QSYCT;TyVfSWC{M#kRyP zqA~f#eW{n9&=OT;juCkE*}m|4_YL$kXtl=ILT0fe?7VJr`)hC#8q?h~Mfpy1&2)c_ z=52EhL^kh3dmGmb#?_=@&hF9*>{pzmcSql>W`UeX+(X?{Bs82K zfUlg}=eIKIDEhimIKd+bJS?Uw@$Qr9FH<}b9NJ)+(rU~TnkglTx#T*n3OJe^C7 zeE65%pogpJH-|$QRe+l)bY#-#=gaSKU=afSHcU0z_$zFrf9>jT(=iV8Ee|wBl*S&5 zBJC5QU#F2A8CKLp$vqI{#q*y#1}f_mXcQv%4_ zkEHb0hjhql!^}RxJP{sJR{`k|3lp-mAJ44(pp7kvIYhEtcF6sR;AMF$HG+nxO*K#_ zFg?j(eoI2joruy1bG=kBGc5a{O_l@a%fhJTrPL^AxDZS$kQJ=Gad6t|NwIN^4+#-PtKCxlurFtlr3He)dJ{k0A2bQtB!}GvR0{tp3jv4tw+zZ)v`^xFC z1J9Il%0}N6todx>`IBv(MpRacCybt-T#Yk-C7Bmn1-{hbMc<%w(|e6%3mMOs7R*sfUE@M4D5T5v?I#k;6l8Qj-E8`ikY-K3i8MaqDUK@d zdZ*_OwCS#u6Stt$Ym8pQ;Orx;?p~iQeWAM16{w+|U5;>ItlQOBm(RM93#4c(zu9hk zx$=(H{GAcSG;TTG@3F=wyM0;;UQwN@X<$spRKK9?!@#ze-=?#rKsf5uM{A@KRO7aX zgWKx%Txk9V->b2dUfFG-cOUd3`j8*m_mbna7k~HhF!iSbK+h3LhSb(tBbhWt#OYZl2-@`|-NDxUa zQJrAUiZ>JJ2|-@E7kD1}@!F*CZ(KEIJbDk<0`sixvs2`r%S;xz_n4r!40cbzPG~z^ zTfF}4E582T3?)xsqoFIc7IopI1K832#EIAV?`{d>IX-wzceWo*0YYkMIxRGdK5Yd2 zeN565i?5zp9BX z0CwjCn@ESGLI^#bd9D|cfT3_zzyk}$aEFUe3duA@n8~)9vG2Wqw&QujB&*pg0YA#( zGOAe8xC$J8IJ87kAl^jPnco<&1nH-l3^maGAkL?MkK#^8fnrG9JxXDtZ<` zlndHKt3=~I(NjH!MYvDm=sVtS1uzaXx1$zoP68P)BqgxM?YV!;j^{=H6|1ReRO$of zoEL%)r+Qgdrt{=@jm*IRj7^l%(VMs%uc2`K$9UqmLh`p`Lgv5)AjTJM+hy&Gn(H6c zkZ;9qG#df)W2eQ1S3A3HjC+S_BI@BL{%Y@YCj9?0&UU^^htMM9i^Zgm?oGUuG10#F z`Hc`TqS8$QXFj&&c5<9&wekZ)Rvn^HptyM+@>pxoE3p+0DJb*A*txfmtu!2XJN7|< z>5~6kGS7{3O{zHr@Ew?j{FcMWJHuT+ec#@FVkLsQDB3%)U(PST8Hz<*_6_4?bB#I= z&#CA9S!yT^IeceMvS%LIj$}`` zINcQD8qA+Y?YDD;_N@`$?C#9EM9mhww^Gg{=4TP#+@az!gFh>iEVne!9(nBJdvYzlN9cBAJG}Y2$?~~ z-ycwEEF~;60p$qLNf8b8|1cdQZ{0pIz-_js@Dco9pIM}$ zBy+(ZSZ6*Dy+Pl1PR~x=*DMXbz?GIS;9pv3J^cmfub-yN*as!E1H2lKiu))IMCXmh zVXzX(=;s8#=kJv^xYI&Ufl}!Kh~Gc(n%%dh)dFZdxTk8$+zQ(b{+WNV&1}YvZYcTf zM!!tFgjtapJ}k3F*N3%!l9QKbLpk2Kv52tX@tNs)4nnmb?)f@eDaf#*Iuq`4R`!Al zvs98fNL};s9$oyU*u+2q%OBVO@V?Q=`O3GCm%a7@(nCSN}pLqMz)(XTg!UfdIC(4I}21T4|h9`Z3ZE~ zKP#_?N`&g6ZULzL7Y!kdj|?1Whxs5a8@PaM?c;J2AulYc^BUap7`GE%?lhN4v6jsl zr^6Z_3M`G6v9diL_j!^=aVeG_03|BS(QJ!nzgAd?^ZqK@isp@y4h9_r;@aypl_J`G zae4{DT`O#L3v=&?|CPPbfd~a^8wRL9RM79}zC=*?!On8ro|dF=3AiON9LfF5gB=nS zj6Owv9Q2Z84vG;HLEJA|b+nP4qb(0?N7ujVh9os_cQp!FKjP|-vuSu3j#1B4nIMUy z*@ zzKF@Tg{%MhGvt+pZwod7RTuI!Cd-7(Kj80$&jlrTt$f*+v=8|9e$WSpc^D_5{rEiq{3zy_fRMVT5anLcUVn(f%|s^EPkyTPsf=16V?4G;!ozq=iJTR^zu~h< zvL6&ZZl!Rzj#S04eCK(bSFfHn)$W`Ur@Z{a(2Fv%z%E*ic zWG~is>h8q;@LevQ`RHO|hgfu$jur-X}&p80s3XNZ>j=u0HRqfzo_L6nN{dCBDG zn=)pwPr)GPK+nrBmr7l?>LdnGyY6zY>th9YYp#0g?ED3#mTw7c z>T|nGbf@0kup5Mpj;)m|5sww7KJ>Ha4d22y7jM+0;V}wgFLGnfomcR;(IW{}bn-1f z1qb!3+C>4}B}>HWlly|rJiL!b0}yE9wuw*DqC6|PB2R(cpIi~;Ar73;6l(c=srwwd zd!NDdvH2Uh&(Ao!nqP8iHV}X(F@AKTB39sn9WegYO)XwOihPS1MfK~tXQtt1z!p^1 z_^@8f^rMv$mex-b zI8UeQ`VPV;lktDUgr2Ijx8tUSBa#-jTp(WcR{@o)8dCJ9{|OZDbn&(R@iL*cKI7`T zqv;Mq^6jxLBNgin z&fnf8mJn3`@^;=~AEBGA6W-@p6R};Y%X0#%!7;a+#cpzqj{8S)gUCA?@a`obMf(pD zk8-20*nFW*!TXPKH{epk*y;VNQr75j9HRDgQYKt<2Rp5 zu+_jE$}wAL@?miB;*o*2)TWv^AgTp|xbjr$d&>Z*=v(H7Rz%Xp;30| zbdV`rq<+{`txgu7-HZvTb4RH8XX*splpUh%%Glcv59`|^k_I0lyjJj$iFN(8^Xbz2 z{XRhMekkTJQ|(ba+SzzC;#b~ptx_;w<@xqM=7Oc)&f8^0@LsS)yca8z{cGKTQOT+} z8yf^Hfh0Y)CcfXkocOQExBvW*((%UtHiy{9^d?g^bhn`WmRjvl)&@2BLxCJECQ}$u z=(6oZACwdIVTL4R={{Pqk@b6DM2itN)i4eCs0d$|>*j?@rr9Kw>@%xB4975(4yw4L zX0M$Fb;{zm`SGw&y06NVY(^bkDv_#pQgDs6&}@AO(L7DytoMU2HUIsS&5qj)r}@`= zqCYW2h=QJEe}4Uj5#cRxlilX0&<~F2%qhx6trbu)C@DYx=>vR^?yj(Z2!eRN80K=NhT={Ay}SiJPc)BIH0K0MX2N}o zWm=upW4W_NdI}b?V#x2oCR_RB&;OBkO|Hmcli}J4?*oSTUd;v(9Wz3|SwSa@QkAc` z97-+i`;OZLDv5m(OYs-nCcodlKAc5t3egO7>~>0zqx{QejoI3t z!F`C2ohsJ3u`A&mecfa&2^7fpP6gU&&^{>|nrE)ygpTL@E>(Qj9Ql%V8EO+uxwVgYowCMKYD3Vj!N+$@@?U^4^uhkT7ah9ppw*SY<%UCfYv`>TN0^Mz{e6cleB@aUpxO8GItvG zf*f-nv$22boYXjGN&1vxPp!-#=2;1`G5v!eTT01EER8>HSV3nh%I;!R>KhLZYJ5(BEDY z;>X}z5Z5*f|6J?u-=&uBn3A#eLu?Y#E=B)Ll8;XgRGtUFfT`vzyR>%V@1_p!ErBk) zQG$^MvS~rrO>J-w0I;hTp;NY~`shPbwLXj2!i==zfA`b!lS*!_9{CgZ#nX{$ETpUc zM_++h{z(5NyQwV^(ko^4r&U%sYtJ5RWsG`%A4P7P{FjbJHxiR=`cFZYOb!k!^7#BfD$ZKB0#i(T#naS6n z-lc!ob#PWc`xAl7Gi17f8&-M5u!$>vOqomh*Ze00e#w)fK4EIaXe=7Xniu7=>lOAu!hK+p0J?*ahYWJ1u+GivE%hNV9Y;SAp$2l^` zbw$2b^Ow+Ecte)J1GISK!xyA-0I7~BcwSE8*vQ8@$(lz2KezP{0GZkC2-gS!<)k<-MOPp6M(`E1LL+AwGL?}0LiGyCo6E@2do^Nt$VK2}k*$R;hm}d4 zg}i{4nD}r%-2J~FYb^K6s8hGZ@;Q0HS1+Va=4-j9&zKe(ely&mub9TN`uC6TXW6N| zXt4X3wcUy4En;PV!xfJisHY}qNrWO_l}h;AB$3}NHfJx|!`wl$9eE#9axV&;e}@_1 zJT8&vW%K^6Ez&zj^KD5>&W8}qqTz2hW0aQ-j9vxO=p(3V&^Aqf-qOWy!vPEKrC!`_ zvW!x(Iulm(-oReJiVu{mEU!34y<@g5VYxHJp#jb3=XDF1zAIYtrAh-%`VW*JCr)ky zS(`Z$U4!)VltNM}%XCtFIk08FmjkRp)+ocY!xJkzQ@I|=;+^<6C1B=)d>YL(FC)Lg zab~;dXVAXD5(ZYXDQeNQ9xLTWbr^lNW_A&u1<98f5}59elPNzF;DkdeaDh4XVNABSnFPAFxhRe)g!SBEmk{(N@D zG>$Ys`}NXebBT)A!gN*h>JY<7ozAfR6gvCSD6WSPCiG!hB_{i48RafCo4 z=}TP4AL3q%n?f)6Ik+p3N|~VaOegN{wuP2!6nvujLW}tR`a!wC$2($TnwaEDajENN zh)Zps$oa-$ChD}yd4B#&KAPI5?nQ^mD(ab^^>5?5rInSfPo1-Y;nf~&X}m@i2miJ(Z(sGTd4HxfGYpr=;mY9S)bV-XUM@dZB5FMpK`p2g`K%6*qua7o z1LVsM5gbYsDL1ZIoqVoT3hoVi$FrH_jQr!+`K)6C0pE#69Km7*E5EVGg=esiVLd~% zmQ{-4U2SS&g@t)Xz-8SGusn-51I8q6cR*Z%$fX9K&p$aGR0D$II9FESNVXoOhQs7w z>cOMKi8=!v)S};^k6(X5`5bxU|dgMsHOrN^ZzJs+tmwtV?)mGJQKMyK+}#xuJ^} z$Vm8=B|F(V!6s5RY>__?H|x}t%S#YMQw5JGED1|uJ%i@_+W~uuiNWKJ)cyCN=Y^&4 zf|Br0+7vFb8M}6v?`6)9H`*aXWoTI78~cKsK5;_vwgmf($*|Ab{! zABMI~`FkGZERU~X*kr|@o+>-*k8C84tb2+kaqvW+7=#DzWjsLX5`^{?hhDu8cbZj$ z{vpF$q`rUeKx}H=AovG<;QJCg5dt)-Qj`Dw@14M7P_Q7PH(tv(Vb01R*Pl)TY_JrMg_&E#Q+DNA?`*F2$Nl2$&KV1x`Tbx)y`(8P+ zukW1n6a5SPOTx1|Bli#N2aWrb)X&tx)K#a?3mX9+)(+C`tBWqN6{|@EVL~=Gtin;?%R71irQ4j%&de1+ zEK))2Y+E6xELxKD#o8(eTv@dGYVCV3ZOA}@D`E}38DaPwRL)+O;K-;^{c!;IvF6a|M>g#g@|?5Xm;Ty4j9Y8D8`Y+s|STEf*fpK33^#7`8*oM z5jE~I+-7jSwl6Ie@1|_UkrtFhZarWAc6VoL?gs*Zo2wdga9+VEhaGdHN=hQRO54#cav_RWf40M%TQJq8#8`O82xDCO84_SNgY_Dkfh` zi^O=C=pYhIXn6Si$B|V3M_(T4&`N7;Mlsv(O8+2U#aNiUi%tk;tzz9p;rYyC@SNWF zCm!(_^Jtyo_nX=}VzE@?(=H0&;5Oe7OWSLkUn20oXO=ohp6qQ})|wx9T>J-O#ZUXN zxK4W=R#bN3cgj757}HX$e%3AK;`sqVQ5jaXK@EpGjDuE^q?d3Cf}8(m*{#^=S? zC*A3)KUZ!W1brEep!qcg5bM-YED{Wl1~ukKN|#!PTz`Aod4^u6!kvDpM$@_rN5Z{}mf!{6;K2`IKw>hf_P@J4t z1;peFTxV{F&Wf0f(_jR>kxJF=oTs0f4b`+oih?4jSBI&q>iKnW3vP014fP!pn zc}wGH^!@LQ2GZLQgifg|*Y2aLVZ+|lKS};8*uem(>9p2PYO8T_m>aDp030H*Ye<#1 z9tT~wNLhOipY7(@>75#hkN^0gnaxWPNK!{Msyt#8k3?1AkTHhfh=fyq$A5bo4Exre zVq%Tx-jW7^RE>B-g@E)Z8_f%NSuS^Zf>8^@wR9b4;}{x35_m7xEmd}*g|}5uVBZ;& z95%FH)p5n|;`@Byy({ z%!8)|sZ$p=z0v^9cWyqEw>@Soo6)tft1!n;cW`d0g6mOgWx#PZ-#6|?w}ru4jA_VnMR?zf{3 ze|rH@4V`9_^Vu6G^b`|La0}popRzL%Nd2YPTek0t*OTb=(5W{T>Q$1@@~G2K(nv6G zqMyKD4(6XXq3x8?nOMPqGJ43|Grr%d;y2ugvrpL5%9a8z|JQ_H(U<;am3&yq_?1RS z8QtH3e~-+06gP1%yU>TZ_e|ctatlRm&e7nGL()5mVEi$SfCX-Y5>oJ+q{k-GVvqdo zlHp3p5idYI{`Wz_&N2R&1a<_8*$v`zRKZ9_@zrE6B&YKPy+;t%ZHg}@Ve4~^W6R{s2Ktc#j*g~4J%)jtrm z-oG*bOEn?ycMp)Bz;y?hQvN}dmc}IfNDLpBnz|D)vCH*PHo7|+ppDjSM+z-Mm=*r$GVSjr*KGHQ0NX8zkN-my zi{@!qb{*(whE|8t-!FfhI9p$i&l$kyRRu!^&U%i2cw&`N>s!2Sqw`4C}P}LnbPxi{agI;pJuD|sc!_^d%!1@rA4ztMlnZ9ur zm`duW56+~A3T~uQzqdVHpqlxSBgVJA%kPxYj~mM6P*MRh3bn61pcI(`mlq{ZVD`bq zKN=t`rpI0lIh91qVBT^?UZjS6`I=5#`4?4vC~=^^ee#DfS2}0fbiRlu;FPYYJ2d=k?nl4jE1M#9o@ayEG!Ov@JsHoTsl@<{Wph4F9 zuvVZ`Qm2s)AZk)=5AR6?W-Rb^M<0f9K6A%$+IYXg|43)~!j}(Q0Q73$8vE)%E;V$s zl`eO&Gl6+N@vXv$@Z{9fp{0^jPX zKr3dHLc)0;l%t--O(12QgK<{2Rgq%Ok8!2B-**LC+5HmrRUYfVe}R;3*b)1=r>BSV z`*CSLQHd!};_6$-#Po^}t%bVnAs`e{3_D8;?G4rYV1fmV46htSU$`)0)^wsY_vKxD zGJGoN)dSu0h-yql`0F??d1Pg{aUmX9`ch*mBiFBp0S}JJY0EO^-b~(Z?n!1RKu!`F zpMDcowf{AsEz%-QjnK+n=i9vKbKEjCqOG5(L3uPQdRq*Pd=%aced7H62P7rCAC=Dq z+#mgfBJ(660L$AmUz&21kPYmOWlLeN;rvl^O+U^gsM!iy<1bL>Sl6On$lYzX-^Q6$ zq4Qs>5W|JMf!exGETVyS7uTl72=E_8FmV}%S871JUFxs_bLds zFH`zpWrwCT?D#N1rMLErLts0vGxKR3r&_!!E@2br*>vOL_XwLs=I}flZ zlC5EPlXFs3Km`;*f+9ghK$yg2W&}|bM3Sf|L2^)X&N=6tbIu5eAVCB(q6ioeMHEC) zkiWo{>)yL}cfW7Hzn-VxK3(C|sjAa8HPsVxcp=^kZItO1HbmU9=cJ1z4WgD}QB6}j zR?1wchY^pauPj@6NFj>fA0t#*RQVNGdN;@Sb!&TVOaxFo*|5AnX2pqgNXs!BaSD@^ z-G0mWav@5cl;}3YCiZ@z^DTqdss5zko_ojWrW`K4REuI=E&_2KP%vyF6a z`@a(XK(H9hYLuAbQKQ1Ew_g@_3iirF%6XC>~^Zufr9kH+{`1dsROU+ukL zvCWsZGZL$iMj1JB<@rS16%Udl%98BRd~e= z$y#HxbCy$@w{AjzJDw23oppooE?kX?bmvOa-CgHd6aC8xC-S|y&QE;1FYHizE|lJt zIvPijOL#uAd2&uZwGJDK$PRle^w^2J-XPe((WCn~@nd#uVu$IGdz0JhA3xyuf|B=R z<>F!5?Z|$4W@jk*Bf=)t=y|f2XN+d~xA@t*N2J7rix;|UvmCjOMe1Dc9wXn43Sw|$ zi^LxIockg3>Pb>k$jjU8clwe(eRyKcGD<~X3~g872vWU(el8X17w|zXtm);zo+CsW zT|4LLGl#g4AM)=TNzWk_dCPy#;yEo>71Yj4?Pys#^s%&qH%FyK zyl4+2;X{OUdqE@Sl_`zrQ{gTy^^npnZhP`2kDNXjILcm}j?~Vc$@TS9ds7C>FO^^Wnf^PjjG{u z(Vl)Sx8p4sdjGGDj{=`rVwCz+$0lA8E(B)WI;aq+`9R42qU=H!S-6ZLWB-coi|q4L zj|bQuBeY9P-Z?9BN(e63=X=y0Ms90Nbr`nnJzS)4_(mLQ8Sj@+oHqde)=&v$;qT2e zL3K(X5WbEd1(s2e`- zvD=onk2la`EZ^NSM99@2$&Qh`i91Rc9kh@5g!09|U8w9~;YZn^^H-t{{OLEYM?k z_;fDTye1*={j7R!LH@{thL6ppTV<)&RQK%`S-5u4huPnrY8t*{VXV}0bTmr8`zZ_f zJW+O1;J5Ry*cPrq6Q_^16VDeMc)u_OMecp4)1y^n!P4TBHl$g$rn;p3O{Q3!l!-?d%V%skwW6U#GBYOu2=IDs8 zJwJ|zD)EprdA<+6(Y;Q#t!Lh@@6|Ouzca;(W$PrVD~I*N`NmPAa{!&R%#s9IEnY*) zWko93c#DfKr+_O}u-cx_AIpO?-z&3kguel2(ZckZJ?Ju0mHjHTm!ysMbC2TeBERU6 zzMJ)Im&plKPf&npLu2#o$hHr!%LrANH+2`YZ@gx8l4a1HEKxS0T#nqs)S~24x9jtV z$@>Zf%9GGnv?r@&Mx(a8?yd=@p>#H;v*1rC>(C2<4-8u%$jp%!wuedYnT?!7Yt}_! zkVgUz7Es1_9_=u9bvm1$PFQFw*&UFD9$3*guFt&q9P!c9O)BT>0k9Uj5aGoRe&45+ ziD%Ea>&Gpno-TlmN=4Wsuv8 zXBjDFD>+|#e;Lb{T0MBGS?Jx)@Am`m+b1C@u_`>u*-<0i5&D*2UfPo%r#x}h?6>^# z$o3c|I;(@!RhQK*BkZF@|M}<#J=Q9xI>KS}kew4t;4fUdeqhQ7EDbaa|WL}}@26!<;7 z#*!J1OKii6GHrK8xahG4%|zY=cg4v(pZ1=&B9HNl6>+!y1iM{wV>R;A;R;GuSd@H2y_YeYP5ID=qWi4-h9^7^E;vsl?=vBl)CriGe%;*W zIdMt_dlf|`wz#W;PqlvyQTawMx=B#YwPDidEM93UNMSf#kMSw)OPph5=Np@L!|N}b zPDjk*zeOem1nKMuQ95gLxdrD&ZK^1J?)%>0l<0E?M{zz++_ffyM>P?*sE=zjZ?34T zs&$m>>Fa!FEqC+sI>_Z_i}w#MzkO!Qo2%Nyh4wCF2t_b0Fpgj8T>6npbk_bhG%hxs zILjl%lb*52a>xSTh;D1!UrVr_D0nU?s!^b@N=z^Lz)|ABDN*B4NMJonpcX~m(VaKC zKeKpEZl+-J16ev*C)m(f>DUQO(|6oKX536z_pJEmI~r=*)iLvh)}+Klt)AA_Pe{?C z&Vb#KFHzoUsy*6`-j#cV7Su~yHxrW*WOE-TI)Cy%?X}yO`5QSZ^>J%VL4%S=v9lzy zdjNeaIfzn3yXsRY+kfgEQiixG%5vp7WOmx(!X=FZZ%k47zNYW)Rc}*=P0vfl!Z(o9 z8E=!=wVzuL>$eNE>@2~srYZ8AymtMK@8_Q0CAJgfL%tPf0~oh3N->!E$qzW;4yLL* z^cPvF-w50yN7;f`H_W*;Bpch;GJ2)>SYcQbvM}%6=Fb_^Lv>|DVbz`vOliYy@weB8 z@-*o^r)blr5XIT_7NhOgG!;*nOe4yXD7gShnq5Z;>Jn1fpOKgEAXKwNnO9X_8i-Vh zns6VXLzG9g?hBYx!%CfH89Cl_k;)J|TJ&}0&77|5bGPA|XuM^{p5e>=5J$Pz z>L)b3s_|A~s8-+s^HofzpPlNHKDy@NB*luONhP?_7JG-|xso4tb?*A!!}DFOE}_6m z=+OKVb1jy}SFr~Xq{6xfZsDSjr5fcrtY#rZeMF3GDQyXO z3?C&cZJwbN6u+ytYLCINyW)Zo5&jyYJA=^!B^kYgT%Z&vJYF+f+;pLVCMB+`b}E%^4Z93bH!gPmBGO&<}V> z(~0Gew@{+*4rZKeuo)f4nWxRGt<)vI>kgx1X6ipi;x5aI+9G|p@92qUp+L+K`b&!W zPWo;BHxd@)Lnp-Fpt@RaVN*+Mx2M|lZF+I73@ub6mdIkOVb0VsXSnHG4s}mlIAgl$ zvFX=GnTgM;TFKpwY+22FdnZStMiuOGC)IXkNz{Dtyrg+_U;=#T-k*9uaQl>uw(!T9 zGn0opRjQ~=LD`?51*SO zx=I=GK6Ll#=A?)3J$iZAaL4eriLFmehI*rBct0|B8okFEwk{Wz+L>>0oZfuv_C?Fdhr;RK1|^n>Oy=BeST%`jl{ob4&~4AW zz@G_s40UOeV!x6GeU0@X&P|QWm%}MJ4?9WLUUZqrd&lQ$k3{K?-ig8P_jEs_r+j23 z;foPsN8CkhSh}6S!$qe1?{!qsnG!>&Rc{WSxJ_1caW)~Y6=e?yC5hfm8Z}R|PJii; zLw-I+yj@nqcQEW)blQ#bJ7OUwXpfq`b5eWv@dc@mwz^q+5f|cjrKCv?b{=-QgeN51 ztM}Erd>BJbvF_VibLn9?AL>B*MgLnW?}9k`S=AgBaLQT~nigE5k_G+zG-zDv5#aZJ454NA zYXMJF(+3@gg-EQWVZqufwKnw9tQkvTj5r}L=~sPwnL`zC84I-LzDA+5749;Ay{UNx z8y?R*;fywk78@}}a!e(wELYv_TgJqe6`bci%3*tso_R>-a68JV;@PF%t+=DJB1{p& z+}H8+Jjq`)-3#jf_1V;+5{f=_Tg=u{C5*)j(F`r zcBRavla5NHjJ)SxxhBqwZ>cZjI!xwj3RC^$%<_1aBAprT8nt)T+d1IW=R*x`DBbLf z6#)@FJCtXSCbc^`An0N>lnEBuaP#gXeI2b4*a@|jDh{0BbWZ^n-%NZ}7B3^b&8F4ae} zsj*>>$ziQZ)n9B1yuEVD{*)sl< z6PQOHi+PP3G#9$9l$Vz~vr3O>Z*u7*a^H+f5G&I85b2LEsyU%Pp}coKTLo8aSZwiI=f9Fa(vogfaj_05a9@O=6h)1KZp z<$z=K7E{$Q+V2;y^vZRLrIEy%)LWtN-lqE{HVk{s=H-6i5q(b%&|8z)?B zlW9a9k2KKcXYTS}yn z%SkjXU-Gfoht{j1E<@@jjYXlMPNTe7*Qf)5-lbRfP!m-JZTlY+4MIO5QE^&ReoCy@j;=&w za?%yV_*V)m%ftNG*l4LJOv3Sq-5;Z}HTH5?ekXHaqMGGfYn)=`+^vP}ou5srx4XM0 z_!P1EXuS6I;vavYeyhxte|Rx?6Vo<{W>nKxtWKG5slN_?aB+VJcY4Mc*(zco9gVGI zYJw%g-?F9PeCoUky|;+;)N-vHq)84zt!9;+<|uhN&Ad0f+(L??mK@b~#;@fN>-P@q zrw5Nt5nTcqB~F{emN?R3lcD@}jA|ny$Er^9q_O$kywl(d&(AA9D>C-&wU4`zhp_Jp zCSLL>`HTsnk=uQDP-Qov98>AOH6)2s+vrjRBRigQT>WX8j}9TqL3MEVL)&dz11ZzF zgqznUUWj?j;-cw--r^U$wtIgvGmdt+c>eP@;uK!6u=PEUp-Z|9ELo*xlRepn72hE2NorRW;t^2yqBt=vqDv9ma$-1e<6mP;`x+i;z0^j;g{Sa1+ghk? z<4LY>MqHnt??&GhKMhxrW}4t$VBfe ztU5wISAWXq+1_{W7G4W+wOP1hEaKyDi!Hf82^~PrcJP{#< z-I48}>GQ6P^aVJ0ZUo+#cD78o>#xG%hb=HD$gFlX<)T-9$>KIRF$qruUcO9b0X9mz08k%$7Ed8 zXEUDWHzwBk?__1bYpS*BCYD31p-UeLtbVW%eRpQGmDh2 zyY3XYCvxJQ(nA|uLRU1eas`SzvhU{Qp|AOh@VyLICdhGF za^2N4L>89KFmjNYk6(NH`Ri47ZUmg06;Wf4lalqUomT4JK}}7xt{|U@*wk}+lrPXW z8F8a#Xit2ugU-y9bkBFU=jv=hTRlq8BMz|yWe;;bm{WUGx^LMsGbYBj>_IPgWF6*y zVB3P|7p><*IRUqmFKVKNQ{UUO%6#Ed+0|vy=@MH3-~RO#<(yDG+B!o=~p*8AeOOU*|Sk225~-@*g3 z#1wwVJSOg3u}Ky?F3Zo`kl&5L0OyFS)J(F{|Cw zV%gqFd--vK6Oo}IOJcg~{RIg|VTsBUh1ibFSF;u;+(-FeYQ7)ONGT-N^p=se-Y9$X>?kW@0)=)=gCv| zPb#3?qp}7y!`^U&hu`t*r_Dn|c_?kR8rbF64%_MC1z(cXXEs*Vk*H)Oi zzcTyEY2&%aob~o^ip(1bys?ZF^=phs(j`IqxyE2xV`tUT(`GdcDogzE}8yB zY&v?m?&LUZbxq%ZfcCn$a;!C+IatV{L_$-VZ5+{DqIEIZI_MFGa^El3PVA(~ zInj`J9ay28*p~W{64HK_a;?aRE#EErF~;$lSB597ZTGi**YO{4Mzj^2(t6j;9BAs* z&tiStpZd%rR)p(`7WVR6cf-4Bc|`9r*=stK>FXBz*^K(=Bf*#Ji+rSnhiX#C%sq2*)7$D92WFj{69x^33$=|ZOfFo5Tgdy~+#W;@H-%ZVQ-LA%xBJ3pC$vSfT zAb;pp(hy-T>0EeaEUa<;i+fMqmj&WtspA>uwikvL{$dPu3^s%V;T#`@q-C`EcF192 znn7%SS+`=%0jE9a>ot;>N*8duif^Ktc}_~}rdrerdyfYme0`ZRTd*X zgM+0cW}ka1zuKdD{;EEewR9j>^t|6h^uAQqVAC%sv1ln&sjF+4o%VyU^w2)k&bAwe z6dqk6n-tNCRc^aQU5Lbqa2RLYaJt0${B`JpI$eAu6DHlp@MO*#GlaA_UN~oO%xHQC zXVGw$aLDxm^&^3YMn8V5s~nASmw0DgqRx<}>S))60?(f{YL?|wuv1B2?b6>roOm<3 zKXJ&5fEOzJB>Lpp&S;x%ar;m7fw=UHsu_Pj)stgcUaiL#1u*i#JBz%}J`=U9t(J~G z@D#UD$$L%i744$P9bvThMFd`~i7ZmqZ-oVb4mnN@c3FwJZ8?svwgKkDK{@rH>jZaIBL8AaExJT~Q(A(7(uH0j^I z*msM#&3;yV3wFHJh|x5}_X_iV{KQ#Syt@(ukZ4~4if3!T06;nq|FG3u1cu^5@cdg1pD zWnBl==G(;YArO6r$qDZRL>n>0fzaZwJ)DfCEc4E^F2p?uWse;dBe8rr;>O9s8RA;x zrj!8lE?(*4FPonW}{cQOSIJsL6~swCBV7zRkq`v=*kW0WaeL8eOEEc%d%TCvVM10EFvQh!4%-M$bi&x@skXFz3B7YL7g>Mp8AILfz~oRSl;~ zQ5lWdvMG;cI}V?>PjIq^@cprL#D4!BvISi77kFfh(7Qd|v4+B9+^cU(+zm(K)Vo_Z z(@9tAh&wM2+)N&>RwoxkBuBjXntGb~#wYV&3@$gO1C`NdN*-)tvbv(Pg>WcHJ$k?j z`mPp5D1I?IfO0N9b@eHsM$)hB{^rm~eQZGG@KR;bf!h1&nuPITGO;P+igBCV-OpNj z?{n_Q%Bw|HNrn(tr>`xZ*<~H3Xm2O5tVMdb7Q#r{{p4Bopzk*1jMSj88 z-TbYm>+CYVq`h<|Gej0CpHS*;a=)yDFYDY+$j;QQDs5#+w2M(JY1%SJY|I=$CvB}f zp*wjFx7jCz`qbBFwv`)~SHZ5}c0|^I;-1`@Mr}>G-eWKWG7%Yh)mO`m5}5u+q{3jC#21+d?CA@u9$_=D z6C=D|k2~_oZgLnazu>xc6=NQNZV)(kXgtV2SZ8O(8GLxaaqofhTi+s%B^C~spw-%o zTz0e<&(koPNBDnyJ%!jCi5B(^*)K}BJ56S4M=yE4Y44j38){)OFLVKm#}l^2Xhx=W z2JL-VTZWF0`GP!Apk)>MUgo^T2qUv%xj#<7<|a?KT+ekYH7$UZ2Hi#+FfT zqi{y|E>yjYSqXXLySbG+|H|$bK|}f!+^Ia*cy+(~P~`^jb(^{kMWq;T+_+3Sd&EY)LC!0 zpca}}+Rp8-@Do1!7Ff27n=NVIyx2D(iZ(8|^wiRCR?^V>Ez{KJO9+cXXkQL55?{o} zTBDPEfVAu(q1DU0eKiy-Wa+$h6ZvL1c56zc;Cs)OnZnwB6|8LzgB?ev@cz_ZS=SF@ zAIaF}I$_Ge{O_6uGB5L`KB+gASWd(-L^8-SEp<@sU`$+-;(o(1%)Imkks~8mQRL1_ z50{%K&mFn)OkmqckS5V6H;G|(Yziwhm?m-{5iCH$$|B*OXExl%HS=S8+>puHH%jC8 z;u~fk6{A`a2*g6`g4d-zL?1Ea%J+D?H$-BZR`Ph9Q#0X~9kptjf*lL$UF-|4ng>6& zK+=hELM*u-xMu2Dyu8Yf&wE?(f%rHrjdh6ko4fP8Ls8tvX9Q~1l%(YFOB0IpCDt=a zeaKA}WxIrxo?EQgj$XxfDI$F1&xRhDmwrIpG-6GcrHncq-niA`TaiZy+3{0yFf(a; z`lp-Qxq0UNN*?3xB7{laX$ku#h0XRx_gZ79Oh>S86{?le+!Z4iKfaa2 zFMLFmvlTC;jNZtZ z$@-rAtat7(?ovruJX6lcC+VgNER^7M%EPi%`8`vgAJw^B&u3yGP~1IEB!BnK=h%aY ze&Cr9fz~Z9;O0KNb@gPNyt&cc8Ipis!!X^_htQMHzU0_{=0+4mdp;L<(=w;AVE?)L znhk-=`|e9Zr+Z=PbFT&d<5#fvL)vUzj}XM9xOuD|`8>cmd7G*nDrRcWH8DQK2HUHN z`k8I5Q%cb#Ndi#^?IXK2DGPke&iTB1sL@Q_h7y|c&l@C-dZr&RG!X+oTQ zV*r`?6DgS#P}4)+<0I@d5&zuAm(3lmlo5KHMZ-=BI`ZPM*Xun*whHG>$&=-9Fo^h#3mmgu6^5`|cyf{9J+@3r;KM zO#-)&;3|_&p`6ub@Wamm3KJ4nPq)6Pf)utbh!f9OpO>L`0v~lj|+Urdaqk$7N~3Yd)=|wG}uBULrRgB6=J&B4Y%bkA3#YYIJFDdSal7ceO{x50A;E@w}J}-}|+gg)P^M;k7L&I%k^^6^d zs!u@ICl9W?{=%V&5i3#N!f^WbO&?9O3`Y@j%yjmgyNlOc22$`Xua)sEl9=8xJAcA3 zk7W|glO2k%jmjsZbMHjI$XK0}pv=a2Sl>vmqhr>sAUO=# z6B1Hh7-nBNj#jLlGd!MVg*%<_?G%S1Dbbm!qkYdNHpF3Hl?C@RTO}2(>?D-I{5(;f zTh$})xVPWyKmo=1Db>1Zx?keS$DyxG;$qJP;}KuOc@7^>#~+;9%gw;2aTsBi^z6wX zlVQ}5r;AzoW^L@n?52P_bj#I*^O+2_tEQ-cn2VXU`)`e=dIk&M3%jX4TzgDqNOWv$ zbCpuQKl2W3dP8%#)g1TcKCKXCItMw7qX+hO^5cVgyYqQ(t941BFQ*F@uk08*Id~!? zkoo8=u{C>}XC`_OeDk6G)F<vw$4@QDvu6*&KJ5AgInde5165fU-|+Uh-(qaET)S?qk{ zdfkGxjfgFk@53+98=h*FKH?@DW`+z3^RvZYYFohP($NNErYVELx_gpmauau}1)nw~ zcVc4e4kv!s^wrB+D9$aepdhctIfSaJ(xA}c!}JKfe3D#)z{AEqm7db8A=Oj{543!0 znw~l_vXt39NRWG%75PO>hUsg4H?@MP_zRv^5o$JBJjRuwxp#ug7w!j=H<3E)^xDe% z-fXLs;B&aLX%tuFF;rnX8=0F;C>pzUdI7aWh%|oGJggq9#;Bt;7D8Ta!fv zcME5@-yQ(J|HrUEvb`-;Msx|Q%ZtREYx%;}ejuQOo__KB1*>cL>&4eO*zKC`M?DCs zG3Pi%xe@F%3n@2LaE&F3&l1}Q5YGY?bMf^Wme~&*{Ki>n)Hs54-o9q! zxS)iPdhzM#R-8y!W_sA8hel8Obn2y=S}?}N6}R4oRAirItG)-foF`rNkTfXSlobDD z<*vcg`$Qa%k*k0mwBD_Xf}Ot%hPcyv1+yuV1mXplb~(~Sy(1>g1I zN-<78c1x_ys|F=w!84^?=~q0b(CP6X zr}hy)nOP4B#V@iPQ!CFFSFDtak`mhV{A_N-JqK%Lr={b(fuKp8XuESM^Q;}`+ZL}tElbUy>9?f(H0$RHJc^B zu%+CTQ;39$tvRsyiDvemWdqA|scp{a{!9hmot?w_bIUZm7LoOg5)Sux zcF@rvl=63@NVZp44l8iBy2-cUBWsv6L~aBk(E^r4_BtYhHlF|5^38j}!!h1^0`-h& zau%Oxr*_aTD1Yf|SgiwDtuQ@Qo;INN`pJD?T2I(*5)VfPfr?QB4Xa} z^EXPV@ZO=Og^b82&qskjz0!MGZm<&WnMCTPR;O`S6Vz;6sK@Hc$C?GuPYcE1(KBtI zu)51iVu4kNXDO_H)mj}Mz2?Yl=B^C+6f z_d`WE^Qh`am}_C>ZH8NWXDtpOl3J%f$!&XyF1zH^eeC?)P!$&&!Mq| z%nLZ~`|hX(Hdb?I!yRc(oLih{Sk2B z=_w5lcJ_&hkh+^s@@n|%x(jO!iAM0|66eZ=!0t%M(Z?rqyRP1SkGSBce{9mjKg?s- zBePd*NVIfKAM)XiPY;`FGTTg8Pa!U)-Z<;&dSKMUsP;~3C%>2G669Qp-g~Sp_X~tJ zh?HbKa=BV>dyR8ny8R&eRSw=jW~;#Q+yv?&wcyg8C=(!JB72kGK|=N)5Vgit<=%*&1oL$djQ7G>_JK7GL4*>M?) zCX^;Fp3}ZH97lS$)4wHiiTEyp%-yqPlR~^G_L!{(nfSSe-L_umdKP@vJX-b$8-Ct> zX8G1-=)&R~DuT{+smQ3AGX9%Z~n8j9= z!n-B{0Ore5oPqx+GU}87p(eHT-C3+C}wCnh}_;S|&@rd-&RxvCTJ|Y2B83 z#s#+T8poZ;tFJxSbS&N7XJ#9|bwa(eh}rMr_PQ{+6FZsJ)n0?|=SQAR{FqmlRZ~yxaIM;tK@G!}4?|DjO_y&`E24|#7!^Jrs*f;D;;Pfd ze@^0go0261KA);ra{9YJ>S6GlC*QTFJZEiHecaL*5#fze+j$rUcO6;Lew5Q(f?dhp zXQ-JGKXKM6ch^dI81hB32g6d@ei}DX&Acskn=!YOjWVcLBM-I9%(uygeL~*MpvGUQ zj=((6G!2D|VyLD`OU292zMXPyu|C+kq=(G)e8t}2hm+iONuMEY_@UZRUAOz8A&2JG zAj!eTyyukMB)^*SO|{D>WK;sA`IOWuE0et+h0brUqvH@>GWv$SlFC*J_dZwlZB09o zFEE9bkI84^u$NnOy(r_{IG~RnsN-@yWX_(V$ss{2iI!8xN5*)GlvT1$&d3gFo|d4{ zg+{R^_iJa?6$fIam96jv>i(Th z1=997yO&z;&#NlC>Mika!Qs@S^kdof@(CMH^!u2mFA{H+waTojc^>apGkeIsc!Vli zNK0AV+F-48QB&}S-#BHpBHk#xtbT;hoMWVPmH`3a=b-JjN%;y}MJ2Ok&%aW)NkyPyyd%Hqk^}>^xqwmq%bEXt0k4U7%)ltd*DIZB% zv4TN&M>?5QA?O&1mW~Db8N5f*+au**Xze%vBK7sDDB^J~s-~L0zVtC`%S$H4wiH8q z(+h^Sme$hx`ZnNXa!%jUXf44;Umt>KXx5I^-@=++wsqw&;M&0qF+hwE6F9R#tRRgY z;($Pr^#g)vAx47*c?aK#GtOqzoMex>X?rgoIEK z8p1$o5EjBgc!&TIAreG})FBF}e=Wce6@ut~$l}1-HJjILXM>JG8jvP*9MXbLKqnz> z=oEAs(t&iLGmsv17Se|dAVbIqGKS7UCeV540(22Fg)TvtAv4GvvH(4>)@sWiimyOc zKoAG&AkcU{Kz^VA0u4O_$OjZaprP7;n?bb@D5?v%4O9n#Zeal24~&9l*npW3=uQnl4q!Y4I{6eJ*fs^+1I&a#XI=&r2c|-xL(c&UgXTb> z+f4z*KrF@PtbSilod9H15y4|p6( z0MvvM0X3i`Kq)90P!dW3lz>tJ#i2C7y-+%!7?c4h3S|QBfwBORP&Oa}$^le`asgGK zJU{}J4~T~f0C7+uAQmbDRD+5E(NGB>3MvIuhROhsKvw{N2?QV;fTR4kdl7;vHl)f8 zscJ*2-jHfGq}mOsZbPcykQ&w{8mJL!0`)ZicGUv4f~&TTTaPw0stN55{c{`T%`|=0P0`>p2-fZ+?On zq0i74XbHrAU5{mfzCp{-3iKVMuEG!u!!$50xI^jIQ@Pi)!}NcyA7)t3yWTS}o)Q4tOWX zEBHUiE3{Fk@P@Q&L)yJA{jgJHBX-Y*B)Trq!(#AWs1Fv0B|tOE!9fSCkc8-9DTp54 z2Qk3=L7V~bO9)H=1Atl3b3pKS?|>=L1Yi<$3os2D1k8bM1Li?>fZ@Ri0;2&rVPQZE zs2b28x(?{Q-XAcG0Wue?28aS94nYnu7LX3c0V+Y2fNt>G3&>Ge2+$UI6IeySdjPG# zT?K(Dycy5~UYplcp(#Ljm!6JZ{p>{wo&=U|84DSYXfvNy~!F&Wkp1{Ar z#0oqKO#Lu3pds*c2r_|5fN0>85OftL10Do(0t6=DJAehyFkm4x0$2py1uTZ{0hU6K z0L!7rfR)fFU={QNkOXxAlA%sOb*KxF0^IIFOjymjrx<}08+ zEDC50?*hCCs{V0%5H*&BiKeJ!%~w4%Ymsh54tJwHLo10X_~2twqxVu>6eu zi!#1$(di8ee3m71B{A|P83p)r^Tw761K6VAAh0{~Z(8*7pAj8-D+nJ^o+snE%=x|ElFT z>Hk;GKQ--dd&)oSf&aT|{;=Erw2A-w#6PU-FK4%Z)>D62=btv=e_rBmHQ^7{{;iUK zYVH50#J^?O|Hupfu>EV1^kA9e1nmchG&l}`Lk1k{@!(zNesD;G;{Z6;wjX{A|Mlkn z)BgBdt@@u&b3cvRIR97cHgfzFemM7^%&Y%%YyPwc{xtD#bzowVSj4%|32|&GdIqE+1`zuKZXBYiJzr6&VQ-qf8WUePbD`@|0(?6HeqdL zw!WJDZ-UFrk{JF>*_%Y47&l+!0xcezo|5} zFu;GHx`Tib(%yiVE?r^@XlyGAF%SrT91P}9D;

k^m1_wg`e*oQ)cPjKk4PBa&ocZu`j3tJ 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 HZ0P?0=iL9% literal 0 HcmV?d00001 diff --git a/projects/eval_asyn_fifo/project/eval_asyn_fifo.lso b/projects/eval_asyn_fifo/project/eval_asyn_fifo.lso new file mode 100644 index 0000000..22de730 --- /dev/null +++ b/projects/eval_asyn_fifo/project/eval_asyn_fifo.lso @@ -0,0 +1 @@ +work diff --git a/projects/eval_asyn_fifo/project/eval_asyn_fifo.prj b/projects/eval_asyn_fifo/project/eval_asyn_fifo.prj new file mode 100644 index 0000000..5f7b809 --- /dev/null +++ b/projects/eval_asyn_fifo/project/eval_asyn_fifo.prj @@ -0,0 +1,8 @@ +vhdl work "../../lib/FIFO/src/fifo_ctrl_pkg.vhd" +vhdl work "../../lib/FIFO/src/gray_counter.vhd" +vhdl work "../../lib/FIFO/src/fifo_sync_ctrl.vhd" +vhdl work "../../lib/FIFO/src/fifo_async_ctrl.vhd" +vhdl work "../../lib/FIFO/src/dpram_1w1r.vhd" +vhdl work "../../lib/FIFO/src/fifo_sync.vhd" +vhdl work "../../lib/FIFO/src/fifo_async.vhd" +vhdl work "eval_asyn_fifo.vhd" diff --git a/projects/eval_asyn_fifo/project/eval_asyn_fifo.ucf b/projects/eval_asyn_fifo/project/eval_asyn_fifo.ucf new file mode 100644 index 0000000..a997614 --- /dev/null +++ b/projects/eval_asyn_fifo/project/eval_asyn_fifo.ucf @@ -0,0 +1,6 @@ +# Bus clock nets +NET "clk_w" TNM_NET = "write_clk"; +TIMESPEC "TS_write_clk" = PERIOD "write_clk" 4.0 ns HIGH 50 %; + +NET "clk_r" TNM_NET = "read_clk"; +TIMESPEC "TS_read_clk" = PERIOD "read_clk" 4.0 ns HIGH 50 %; diff --git a/projects/eval_asyn_fifo/project/eval_asyn_fifo.vhd b/projects/eval_asyn_fifo/project/eval_asyn_fifo.vhd new file mode 100644 index 0000000..0cacce9 --- /dev/null +++ b/projects/eval_asyn_fifo/project/eval_asyn_fifo.vhd @@ -0,0 +1,109 @@ +---------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 10:29:16 02/12/2010 +-- Design Name: +-- Module Name: eval_asyn_fifo - Behavioral +-- Project Name: +-- Target Devices: +-- Tool versions: +-- Description: +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +---------------------------------------------------------------------------------- +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.NUMERIC_STD.ALL; + +---- Uncomment the following library declaration if instantiating +---- any Xilinx primitives in this code. +--library UNISIM; +--use UNISIM.VComponents.all; + +entity eval_asyn_fifo is + Port ( + din : in unsigned (31 downto 0); + dout : out unsigned (31 downto 0); + rst : in STD_LOGIC; + clk_w : in STD_LOGIC; + clk_r : in STD_LOGIC; + full : out STD_LOGIC; + empty : out STD_LOGIC; + read : in STD_LOGIC; + write : in STD_LOGIC); +end eval_asyn_fifo; + +architecture Behavioral of eval_asyn_fifo is + + signal read0 : std_logic; + signal empty0 : std_logic; + signal write1 : std_logic; + signal full1 : std_logic; + signal dout0 : unsigned (31 downto 0); + +begin + + read0 <= not full1; + write1 <= not empty0; + + uut0: entity work.fifo_async + GENERIC MAP + ( + addr_width => 4, + data_width => 32, + almost_full_thresh => 6, + almost_empty_thresh => 2, + allow_full_writes => false, + allow_empty_reads => false, + do_last_read_update => true + ) + PORT MAP + ( + rst => rst, + clk_w => clk_w, + clk_r => clk_r, + we => write, + re => read0, + data_w => din, + data_r => dout0, + fifo_full => full, + fifo_empty => empty0, + fifo_afull => open, + fifo_aempty => open + + ); + + uut1: entity work.fifo_sync + GENERIC MAP + ( + addr_width => 10, + data_width => 32, + almost_full_thresh => 6, + almost_empty_thresh => 2, + allow_full_writes => false, + allow_empty_reads => false, + do_last_read_update => true + ) + PORT MAP + ( + rst => rst, + clk => clk_r, + we => write1, + re => read, + data_w => dout0, + data_r => dout, + fifo_full => full1, + fifo_empty => empty, + fifo_afull => open, + fifo_aempty => open + + ); + +end Behavioral; + diff --git a/projects/eval_asyn_fifo/project/eval_asyn_fifo.xst b/projects/eval_asyn_fifo/project/eval_asyn_fifo.xst new file mode 100644 index 0000000..4a97fc5 --- /dev/null +++ b/projects/eval_asyn_fifo/project/eval_asyn_fifo.xst @@ -0,0 +1,60 @@ +set -tmpdir "W:/vhdl/projects/eval_asyn_fifo/xst/projnav.tmp" +set -xsthdpdir "W:/vhdl/projects/eval_asyn_fifo/xst" +run +-ifn eval_asyn_fifo.prj +-ifmt mixed +-ofn eval_asyn_fifo +-ofmt NGC +-p xc4vsx35-10-ff668 +-top eval_asyn_fifo +-opt_mode Speed +-opt_level 1 +-power NO +-iuc NO +-lso eval_asyn_fifo.lso +-keep_hierarchy NO +-netlist_hierarchy as_optimized +-rtlview Yes +-glob_opt AllClockNets +-read_cores YES +-write_timing_constraints NO +-cross_clock_analysis NO +-hierarchy_separator / +-bus_delimiter <> +-case maintain +-slice_utilization_ratio 100 +-bram_utilization_ratio 100 +-dsp_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 +-mux_style Auto +-decoder_extract YES +-priority_extract YES +-shreg_extract YES +-shift_extract YES +-xor_collapse YES +-rom_style Auto +-auto_bram_packing NO +-mux_extract YES +-resource_sharing YES +-async_to_sync NO +-use_dsp48 auto +-iobuf YES +-max_fanout 500 +-bufg 32 +-bufr 24 +-register_duplication YES +-register_balancing No +-slice_packing YES +-optimize_primitives NO +-use_clock_enable Auto +-use_sync_set Auto +-use_sync_reset Auto +-iob auto +-equivalent_register_removal YES +-slice_utilization_ratio_maxmargin 5 diff --git a/projects/eval_asyn_fifo/project/eval_asyn_fifo_vhdl.prj b/projects/eval_asyn_fifo/project/eval_asyn_fifo_vhdl.prj new file mode 100644 index 0000000..a6b6f56 --- /dev/null +++ b/projects/eval_asyn_fifo/project/eval_asyn_fifo_vhdl.prj @@ -0,0 +1,8 @@ +vhdl work "W:\vhdl\lib\FIFO\src\fifo_ctrl_pkg.vhd" +vhdl work "W:\vhdl\lib\FIFO\src\gray_counter.vhd" +vhdl work "W:\vhdl\lib\FIFO\src\fifo_sync_ctrl.vhd" +vhdl work "W:\vhdl\lib\FIFO\src\fifo_async_ctrl.vhd" +vhdl work "W:\vhdl\lib\FIFO\src\dpram_1w1r.vhd" +vhdl work "W:\vhdl\lib\FIFO\src\fifo_sync.vhd" +vhdl work "W:\vhdl\lib\FIFO\src\fifo_async.vhd" +vhdl work "W:\vhdl\projects\eval_asyn_fifo\eval_asyn_fifo.vhd"