diff --git a/cores/KypSpectrum/ipcore_dir/loram.ngc b/cores/KypSpectrum/ipcore_dir/loram.ngc new file mode 100644 index 0000000..ba51061 --- /dev/null +++ b/cores/KypSpectrum/ipcore_dir/loram.ngc @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.6e +$0ga44<,[o}e~g`n;"2*73>(-80!<74012345678=:0<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;=95>4;KMTPR=IMNYM1?<:1<20>732@D[YY4NDEPA845=87;?7<:5IORVP?gcl{k7=>4?>0685127?69991:6D@_UU8tad:7294:<6?5IORVP?qbj5:1<3?=;209MKVR\3NBM1=>:1<26>552@D[YY4KIC>05?699:18>7AZTQWW>AIF4:;1<3?<;209KPRW]]0OCO2<1;2=54=32@D[YY4KIQC?7?69981?6D@_UU8GMUD;;3:5==5;:HLSQQ0:69MKVR\3]NN1=50?31?10>586:2>1CXZ_UU8GKUD;;3:5h68|ly;wub73<$8:=665IORVP?bnfh6<6=0>1::9MKVR\3nbbo28:1<27>>=G\^[YY4kotvb82<7689047AZTQWW>air|k6<6=07;@FGVD:7601JHI\N<02==>GCL[K7=<06;@FGVD:6:7h0MIJ]A=30>58>3HNO^L2>3?:8EABUI5;546OKDSC?6;>GCL[K7:364AEFQE91902KOH_O38?:8EABUI53546OKDS@?4;?89B@ATE48;556OKDS@?578e3HNO^O2>3;2==>GCL[H7=>07;@FGVG:6611JHI\M<3<;?DBCZK68255NDEPA818?3HNO^O2:>99B@ATE4?437LJKRC>4:==FLMXI0507;@FGVG:>6:1J@A64BTQ\MK@H:2IN=?5LHDAH[IODMGYNSYW_E59@HN613JF@=5>9;BNH62623JF@>U64CMI1\4>7=2IGG4>;;BNHE0=DDBK:;6MCK@3G62=DDBK:H994CMIB5A>33JF@N85LLJ@21>EKCJ;>7NBDD078GIMC^j1H@FJY_EKUMAC23JF@JU64CMIE\4>712IDA@G[TDF20>EHZLULICK]AUKLJZOINF=0O_KNTDF`?AGSIV]BHYFPAb9GEQGX_@N_DRL9;EKB85803MCJ0<>17:FJE9766>1OEL2>2?58@LG;9:4<7IGN<06=3>BNI5;>2:5KI@>22;19?2NBM1?6>79GMD:66>1OEL2=0?58@LG;:84<7IGN<30=3>BNI5882:5KI@>10;1808;EKB8709?2NBM1<8>69GMD:507=0HDO328<5?AOF4;4<7IGN<22==>BNI59:6=08;EKB8679>2NBM1=16:FJE929>2NBM1;16:FJE909>2NBM1916:FJE9>9>2NBM1716:FJF969?2NBN1??>69GMG:697=0HDL313<4?AOE4895;6JFB=37:2=CAK6:9394DH@?53803MCI0<917:FJF97?6>1OEO2>9?48@LD;97=0HDL321<4?AOE4;;5;6JFB=01:2=CAK69?394DH@?61803MCI0?;17:FJF9416>1OEO2=7?58@LD;:14<7IGM<3;=2>BNJ585;6JFB=13:<=CAK68=7>17:FJF9566?1OEO2<>79GMG:36?1OEO2:>79GMG:16?1OEO28>79GMG:?6?1OEO26>69GMUG;87=0HD^N<0<4?AOWI58556JFP@>0>5803MC[M1=17:FJTG:76>1OE]L31?58@LVE4;427IG_B=194;109;EMB85803MEJ0<>17:FLE9766>1OCL2>2?58@JG;9:4<7IAN<06=3>BHI5;>2:5KO@>22;19?2NDM1?6>79GKD:66>1OCL2=0?58@JG;:84<7IAN<30=3>BHI5882:5KO@>10;1808;EMB8709?2NDM1<8>69GKD:507=0HBO328<5?AIF4;4<7IAN<22==>BHI59:6=08;EMB8679>2NDM1=16:FLE929>2NDM1;16:FLE909>2NDM1916:FLE9>9>2NDM1717:FLEZTBO?1OCO2?>69GKG:687=0HBL310<4?AIE4885;6J@B=30:2=CGK6:8394DN@?50803MEI0<817:FLF9706>1OCO2>8?58@JD;904=7IAM<0<4?AIE4;:5;6J@B=02:2=CGK69>394DN@?66803MEI0?:17:FLF9426>1OCO2=6?58@JD;:>4<7IAM<3:=3>BHJ5822;5KOC>1:2=CGK68<374DN@?74<76>1OCO2<1?48@JD;;7<0HBL34?48@JD;=7<0HBL36?48@JD;?7<0HBL38?48@JD;17=0HBLPRDE4?AIWI5:5;6J@P@>2:2=CGYK7>374DNRB86<76>1OC]O33?58@JVE494<7IA_B=3=3>BHXK69245KOQ@?7?69?2ND\O2<>29FJD5OIA]ZT<=64IOKWTZ6602CEEY^P03:8MKOSXV:846GAIUR\41>:8:KMMQVX8?20ECG[P^243>OIA]U;<:5FNHV\441M7:KMMQY7K>1BBDZP0E58MKOSW9O<7D@FT^2E3>OIA]U:<:5FNHV\541469JJLRX9<=0ECG[_044?LHN\V;<;6GAIU]2<2=NF@^T=494IOKW[4G03@DBXR?M7:KMMQY6K>1BBDZP1E58MKOSW8O<7D@FT^3E3>OIA]U9<:5FNHV\641494IOKW[7G03@DBXR1BBDZP2E58MKOSW;O<7D@FT^0E3>OIA]U8<:5FNHV\741<8;HLJPZ54?2CEEYQ<469JJLRX;<=0ECG[_244?LHN\V9<;6GAIU]0<2=NF@^T?494IOKW[6G03@DBXR=M7:KMMQY4K>1BBDZP3E58MKOSW:O<7D@FT^1E2>OIA]UJ:6GAIU]A=>OIA]UMEAK9;MMB@@B13EEHGHJ8;MMDMFGKk2Gjfb|YesqjkkeH7:2D:;6@JTVMQO1=IGGO:;6A_THOJ^@YWZ@GBXDXJS^LDG4=Wk2Z%>=?<1130[I2;RJQABYBP]XJOYQAGBg8WMTBOVGBBR]FZD30?VOJWJEG@D]FOO]@L@ELi2YBARJJVHAF2>UH][IN46]_ASVBJ31<[[\J@RO8;RPUEIYE>2Y_MY[\4:QZJF2<\PZN;<5Z0.zppZdkcVgnaRijndpbpjt(ogke{kmmf,meqoqmVhggRcjm^efj*pfd`n%o~z}/scnhjiwS9W%~lc!r.q5[lhn|'xja"Z]UD]GT+VUAD;3"ob709V4*~t|VhggRcjm^efj`tf|fx$kco{iwgaib(ii}c}iRlck^ofiZabf&|j`dj!crvq+wgjdfe{WQBJ5:5:6YJB=3=2>QBJ58546YJB=194;0<_LH7?3l4WSKWAZ@NZZ^h7Z\FTD]NKACXIj1\^DZJ_LMGAZD6l2RB@D@W-YFA$5(6(Z^^N->!1!CPGLO13QY_@DL8;YQW[BHC?2RXXRXLCc9[[FIUMVCEJB84Xe`\Ma`5Wsu18]`u?3hno~l2?>89b`atf48:556okdsc?548>3hno~l2>2?`8eabui5;86=06;`fgvd:6;720mij}a=3=<>gcl{k7>364aefqe95902koho34?:8eabui5?546okdsc?2;>gcl{h7<374aefqf977601jhi|m<03==>gcl{h7=?0m;`fgvg:6;3:556okds`?568?3hno~o2>>99b`ate4;437ljkrc>0:==flmxi0907;`fgvg:2611jhi|m<7<;?dbczk6<255ndepa8=8?3hno~o26>79amkbbk820naePmdo\c`hXoldn~dmPcrvqb>dkcVgnaRijn^ov|4>199ahnYjmdUlicQrho\slbs`V8:46lck^ofiZabfVzye`Qxievk[67?3kf`S`kb_fgm[utneV}bhyfP40:8fimXelgTkh`Ppskn[roc|aU>=55mlj]nahY`mgU{~dcPwhfwlZ0602hggRcjm^efjZvuadU|eizg_63;?gjlWdofSjka_qpjiZqnl}bT4?<4bmi\i`kXoldT|gb_vpbtucuWz?5mlj]nahY`mgU{~dcPwscst`tX{?UbbdzP4308fimXelgTkh`Ppskn[rtfxyoyS~8Piokw[0453kf`S`kb_fgm[utneV}ym}~jr^q5[lhn|V<9>6lck^ofiZabfVzye`Qxr`rsawYt>VceeyQ8239ahnYjmdUlicQrho\swgwxlxT;Qfnhv\U8 -Vflhl{$FIUM)Mnbh|ntnp#51(09=1i`fQbel]dakYq?V9Tt~z>3:`ooZkbeVce|xzPbmm`o4269gmkg;97=0hd`n<3<4?aoii595;6jfn`>7:2=cagk79394dhlb838>3mcem1950?58`lhf4>4<7igab=2=3>bnfk6:2:5kio`?6;108;ekmf929?2nbbo2:>69gmkd;>730hd`m<683:2=cagh7;364dnwwe96902ndyyo31?:8`jssi58546j`uuc?7;>bh}}k7;7>18:flqqg;?720hb{{b=2=<>bh}}h7=364dnwwf94902ndyyl33?:8`jssj5>546j`uu`?1;>4)eX`hyTecdjcugqv86+kVbjRcjm^mvpussW{olRo20-a\lduXelgTcxzuu]qabuXj4:'oRfns^ov|Zir|ySkhs^c>4)eX`hyTaxvPotvsqqYumnyTn0>#c^jbwZtbojoj1="l_icp[wc`klh6!mPmtz\tlvbd`dnS~zngdq>4)eXx{cfSywe<3/gZtbimUoi}zg_`?226>3$jUyiljPddrwlZd:9?938!mPrdcg[roc|aUj15"l_sgb`Zqnl}bTn06#c^pppZvuafxbxtQn=BG/gZtt|Vzyeb|ftx]a9FC+kVxxxRzvpd?P]KE+kVxxxob_`?3(fYu{}xjaRl20-a\wlkXkffge~g`n^akafm:IEF'oR{|e^`qehYedfi`1="l_tqf[gsmV}nm0>#c^wpaZd~|lU|io3?,b]vw`Ycmok~`yQkauc>5)eX}zoTinm20-a\qvcX{flinm20-a\s`gX`nd0?#c^uffZqnl}b6=!mPwskwaZbbx}bTm0?9396/gZqua}oThh~{h^`>535?<%iT{g{e^ol``Yf5^XBXHQIISQW(fYpz`~nS`ake^`>SWOSMVLB^^Z#c^uqmqcX`ndRo28-a\swosmV}bhyfPb<:/gZ~cmchikobim{>wugu|hd=q<74lnpbi)dkcVgnaRijn^t4[6*|u11eknlzimf1?ki?3~oj0=4?>79tad:7611|io2?:1<5?rce494vLM~9bc9CD}7b:3L187?tS4295=5=9=k1=>=8a67967ec>rd:4<4>;o3;6?0<,8=m6<9n;|Q7a?7?;3;?m7?<36c41?45l9o0_<=i:0g6>5<6;:=j;84=2e32?V2b28o>6=4>325b30<5:m;?7i?j2;295?7|[<:1=5=515c95650i>?1>?j?c:tW50d=83;1=7:={R73>4>428>j6<=<7`56>74c8j1/=;m51538R4>72;q~=9<51:w206<73t.:8o4>4:`2a7<72=:1m7:={I35e>"6>80:i?5U398;=<128?1579517823?7?2t.:;h4>b99'7d<6m=1/8k4>e29'50>=92.:9:4>859j5`>=83.:8i4>e69m51e=821b=5o50;&20a<6001e=9m50:9j5=>=83.:8i4>889m51e=921b=5950;&20a<6001e=9m52:9j5=0=83.:8i4>889m51e=;21b=4=50;&20a<6001e=9m54:9j5<4=83.:8i4>889m51e==21b=4?50;&20a<6001e=9m56:9j5<6=83.:8i4>889m51e=?21b=5h50;&20a<6001e=9m58:9j5=c=83.:8i4>889m51e=121b=5j50;&20a<6001e=9m5a:9j5=e=83.:8i4>889m51e=j21b=5l50;&20a<6001e=9m5c:9j5=3=83.:8i4>889m51e=l21b=n850;&20a<6k<1e=9m50:9j5f2=83.:8i4>c49m51e=921b=n=50;&20a<6k<1e=9m52:9j5f4=83.:8i4>c49m51e=;21b=n?50;&20a<6k<1e=9m54:9j5f6=83.:8i4>c49m51e==21b=oh50;&20a<6k<1e=9m56:9j5gc=83.:8i4>c49m51e=?21b=ho50;&20a<6m01e=9m50:9j5999m51e=821b=4950;&20a<6111e=9m51:9j5<0=83.:8i4>999m51e=:21b=4;50;&20a<6111e=9m53:9j5d4=83.:8i4>999m51e=<21b=l?50;&20a<6111e=9m55:9j5d6=83.:8i4>999m51e=>21b=4h50;&20a<6111e=9m57:9j5999m51e=021b=4j50;&20a<6111e=9m59:9j5999m51e=i21b=4l50;&20a<6111e=9m5b:9j5999m51e=k21b=4:50;&20a<6111e=9m5d:9j5f`=83.:8i4>cd9m51e=821b=nj50;&20a<6kl1e=9m51:9j5fe=83.:8i4>cd9m51e=:21b=nl50;&20a<6kl1e=9m53:9j5fg=83.:8i4>cd9m51e=<21b=n750;&20a<6kl1e=9m55:9j5f>=83.:8i4>cd9m51e=>21b=n950;&20a<6kl1e=9m57:9j5ge=831b=oj50;9l5a>=83.:8i4>d69m51e=821d=i850;&20a<6l>1e=9m51:9l5a3=83.:8i4>d69m51e=:21d=i:50;&20a<6l>1e=9m53:9l5a5=83.:8i4>d69m51e=<21d=i<50;&20a<6l>1e=9m55:9l5a7=83.:8i4>d69m51e=>21d=i>50;&20a<6l>1e=9m57:9l5`7=83.:8i4>e19m51e=821d=ih50;&20a<6m91e=9m51:9l5ac=83.:8i4>e19m51e=:21d=ij50;&20a<6m91e=9m53:9l5ae=83.:8i4>e19m51e=<21d=il50;&20a<6m91e=9m55:9l5ag=83.:8i4>e19m51e=>21d=i750;&20a<6m91e=9m57:9a52b=83;1<7>t$042>40e3A;6`9l51?=831vn<9l:182>5<7s-;==7h<;I34f>N6>h1dj?4?::a53?=83hh6=4?{%355?73n2B:;o5G17c8^6>=kr>197k5138e>45=990h6o4k:039e?{#9=21=h84n4395>h2:3;0bn>50:lf6?6<,ll1j<5+f18e5>"a<390(k;53:&e2?5<,o=1?6*i8;18 c?=;2.mm7=4$g`97>"ak390(kj53:&ea?5<,ol1?6*>0180?!779390(<>=:29'555=;2.:<94<;%331?5<,8:=6>5+11597>"681087)??9;18 46f2:1/==l53:&24f<43-;;h7=4$02f>6=#99l1?6*>1180?!769390(5+10597>"691087)?>9;18 47f2:1/=6=#98l1?6*>2180?!759390(<<=:29'575=;2.:>94<;%311?5<,88=6>5+13597>"6:1087)?=9;18 44f2:1/=?l53:&26f<43-;9h7=4$00f>6=#9;l1?6*>3180?!749390(<==:29'565=;2.:?94<;%301?5<,89=6>5+12597>"6;1087)?<9;18 45f2:1/=>l53:&27f<53-;8h7<4$01f>4203-;>87?90:&210<412.:9;4<9:&21<<4?2.:9l4>5b9'50b=:2.:9h4=;%34769j506=831b8<4?::kfa?6=3`;>?7>5;h65>5<5<!73l3337c?;c;28?l?0290/=9j5999m51e=921b5;4?:%37`???3g;?o7<4;h;6>5<#9=n1555a15a97>=n9>;1<7*>4e8235=i9=i1<65f17d94?"6=n9?o1<7*>4e8235=i9=i1>65f17f94?"6=hj10;6)?;d;`4?k73k3:07bl9:18'51b=j>1e=9m51:9lf1<72-;?h7l8;o37g?4<3fh86=4+15f9f2=i9=i1?65`b383>!73l3h<7c?;c;68?jd6290/=9j5b69m51e==21dn=4?:%37`?d03g;?o784;nce>5<#9=n1n:5a15a93>=hil0;6)?;d;`4?k73k3207bok:18'51b=j>1e=9m59:9lef<72-;?h7l8;o37g?g<3fki6=4+15f9f2=i9=i1n65`a883>!73l3h<7c?;c;a8?jg?290/=9j5b69m51e=l21dm:4?:%37`?d03g;?o7k4;nc5>5<#9=n1n:5a15a9b>=hi<0;6)?;d;`4?k73k3;;76an4;29 42c2k=0b<:l:038?jg4290/=9j5b69m51e=9;10cl<50;&20a3:9le4<72-;?h7l8;o37g?7332ej<7>5$06g>g1h6<;4;n`e>5<#9=n1n:5a15a953=4e8a3>h6!73l3h<7c?;c;3;?>iek3:1(<:k:c58j42d28307blm:18'51b=j>1e=9m51`98kgg=83.:8i4m7:l20f<6j21dn44?:%37`?d03g;?o7?l;:ma1?6=,8>o6o94n06`>4b<3fkj6=4+15f9f2=i9=i1=h54o8d94?"64b82b>=n9l0;6)?;d;3g?k73k3:07d?l:18'51b=9m1e=9m51:9j5g<72-;?h7?k;o37g?4<3`;j6=4+15f95a=i9=i1?65f2683>!73l3;o7c?;c;68?l41290/=9j51e9m51e==21b>84?:%37`?7c3g;?o784;h07>5<#9=n1=i5a15a93>=n::0;6)?;d;3g?k73k3207d<=:18'51b=9m1e=9m59:9j64<72-;?h7?k;o37g?g<3`8;6=4+15f95a=i9=i1n65f1g83>!73l3;o7c?;c;a8?l7>290/=9j51e9m51e=l21b>i4?:%37`?4d3g;?o7>4;h0a>5<#9=n1>n5a15a95>=n:h0;6)?;d;0`?k73k3807d<6:18'51b=:j1e=9m53:9j73<72-;?h76=4+15f96f=i9=i1965f3583>!73l38h7c?;c;48?l54290/=9j52b9m51e=?21b??4?:%37`?4d3g;?o764;h12>5<#9=n1>n5a15a9=>=n;90;6)?;d;0`?k73k3k07d!73l32h7c?;c;28?l>e290/=9j58b9m51e=921b444?:%37`?>d3g;?o7<4;h:;>5<#9=n14n5a15a97>=n0>0;6)?;d;:`?k73k3>07d69:18'51b=0j1e=9m55:9j<0<72-;?h76l;o37g?0<3`2?6=4+15f9!73l32h7c?;c;:8?l>5290/=9j58b9m51e=121b4<4?:%37`?>d3g;?o7o4;h:3>5<#9=n14n5a15a9f>=n?l0;6)?;d;:`?k73k3i07d9k:18'51b=0j1e=9m5d:9j3f<72-;?h76l;o37g?c<3`=i6=4+15f9!73l32h7c?;c;33?>o013:1(<:k:9a8j42d28;07d97:18'51b=0j1e=9m51398m21=83.:8i47c:l20f<6;21b;;4?:%37`?>d3g;?o7?;;:k41?6=,8>o65m4n06`>43<3`3?6=4+15f94b823>=n1;0;6)?;d;:`?k73k3;376g61;29 42c21i0b<:l:0;8?l?7290/=9j58b9m51e=9h10e5h50;&20ab:9j<`<72-;?h76l;o37g?7d32c3m7>5$06g>=eh65<#9=n14n5a15a95`=>1<7*>4e8;g>h6!73l3o=7c?;c;28?jc2290/=9j5e79m51e=921di94?:%37`?c13g;?o7<4;ng0>5<#9=n1i;5a15a97>=n1l0;6)?;d;;g?k73k3:07d7l:18'51b=1m1e=9m51:9j=g<72-;?h77k;o37g?4<3`3j6=4+15f9=a=i9=i1?65`eb83>!73l3oi7c?;c;28?jcf290/=9j5ec9m51e=921di44?:%37`?ce3g;?o7<4;ng;>5<#9=n1io5a15a97>=hlh0;6)?;d;f:?k73k3:07bj7:18'51b=l01e=9m51:9l`3<72-;?h7j6;o37g?4<3fn>6=4+15f9`<=i9=i1?65`d583>!73l3n27c?;c;68?jb4290/=9j5d89m51e==21dh?4?:%37`?b>3g;?o784;nf2>5<#9=n1h45a15a93>=hl90;6)?;d;f:?k73k3207bmi:18'51b=l01e=9m59:9lg`<72-;?h7j6;o37g?g<3fio6=4+15f9`<=i9=i1n65`cc83>!73l3n27c?;c;a8?jef290/=9j5d89m51e=l21do44?:%37`?b>3g;?o7k4;na;>5<#9=n1h45a15a9b>=hk>0;6)?;d;f:?k73k3;;76al6;29 42c2m30b<:l:038?je2290/=9j5d89m51e=9;10cn:50;&20a3:9lg6<72-;?h7j6;o37g?7332eh>7>5$06g>a?h6<;4;ng2>5<#9=n1h45a15a953=4e8g=>h6!73l3n27c?;c;3;?>icm3:1(<:k:e;8j42d28307bjk:18'51b=l01e=9m51`98kae=83.:8i4k9:l20f<6j21dho4?:%37`?b>3g;?o7?l;:mg3?6=,8>o6i74n06`>4b<3fih6=4+15f9`<=i9=i1=h54ob394?"64b82b>=n9><1<7*>4e8230=i9=i1<65f16694?"6=n9>91<7*>4e8230=i9=i1>65f16094?"6=n>j0;6)?;d;4a?k73k3:07d8n:18'51b=>k1e=9m51:9j2=<72-;?h78m;o37g?4<3`<<6=4+15f92g=i9=i1?65f6783>!73l35<#9=n1:o5a15a93>=n>;0;6)?;d;4a?k73k3207d8>:18'51b=>k1e=9m59:9j25<72-;?h78m;o37g?g<3`?m6=4+15f92g=i9=i1n65f5e83>!73l35<#9=n1:o5a15a9b>=n=00;6)?;d;4a?k73k3;;76g:8;29 42c2?h0b<:l:038?l30290/=9j56c9m51e=9;10e8850;&20a<1j2d:8n4>3:9j10<72-;?h78m;o37g?7332c>87>5$06g>3dh6<;4;h50>5<#9=n1:o5a15a953=81<7*>4e85f>h6!73l3o083:1(<:k:7`8j42d28307d8i:18'51b=>k1e=9m51`98m3c=83.:8i49b:l20f<6j21b:i4?:%37`?0e3g;?o7?l;:k5=?6=,8>o6;l4n06`>4b<3`?n6=4+15f92g=i9=i1=h54i4194?"64b82b>=zj8<36=4mc;294~"6>80:8k5G16`8L40f3S936nu;:48f>44=n3;86<>5c;`9`?762h0v(<:7:0g5?k36281e9?4>;oa3>5=im;0;7)ki:g38 c6=n81/j94<;%d6>6=#n?087)h8:29'b=<43-l26>5+f`80?!`e2:1/jn4<;%dg>6=#nl087)hi:29'556=;2.:<<4<;%336?5<,8:86>5+11697>"68<087)??6;18 4602:1/==653:&24<<43-;;m7=4$02a>6=#99i1?6*>0e80?!77m390(<>i:29'546=;2.:=<4<;%326?5<,8;86>5+10697>"69<087)?>6;18 4702:1/=<653:&25<<43-;:m7=4$03a>6=#98i1?6*>1e80?!76m390(<4<;%316?5<,8886>5+13697>"6:<087)?=6;18 4402:1/=?653:&26<<43-;9m7=4$00a>6=#9;i1?6*>2e80?!75m390(<5+12697>"6;<087)?<6;18 4502:1/=>653:&27<<43-;8m7=4$01a>6=#9:i1>6*>3e81?!74m3;?;6*>558225=#9"6?10:;:5+16;95215283>>o3>3:17d?:1;29?l72:3:17dkk:188m5$06g><>h6<54i8494?"64b81?>o>=3:1(<:k:8:8j42d2:10e<9>:18'51b=9>:0b<:l:198m40a290/=9j51628j42d2810e<8j:18'51b=9>:0b<:l:398m40c290/=9j51628j42d2:10co650;&20ao6o94n06`>4=1<7*>4e8a3>h65$06g>g1h6854oc294?"64b85?>ifn3:1(<:k:c58j42d2>10clk50;&20ao6o94n06`><=4e8a3>h65$06g>g1h6i54o`594?"64b8f?>if>3:1(<:k:c58j42d2o10cl;50;&20a0:9le1<72-;?h7l8;o37g?7632ej?7>5$06g>g1h6<<4;nc1>5<#9=n1n:5a15a956=4e8a3>h6!73l3h<7c?;c;36?>ien3:1(<:k:c58j42d28<07blj:18'51b=j>1e=9m51698kgb=83.:8i4m7:l20f<6021dnn4?:%37`?d03g;?o7?6;:maf?6=,8>o6o94n06`>4g<3fhj6=4+15f9f2=i9=i1=o54oc;94?"64b82g>=hj<0;6)?;d;`4?k73k3;o76ana;29 42c2k=0b<:l:0g8?j?a290/=9j5b69m51e=9o10eo64=4e82`>h6a;29 42c28n0b<:l:298m71=83.:8i4>d:l20f<332c9:7>5$06g>4bh6854i3794?"64b85?>o5<3:1(<:k:0f8j42d2>10e?=50;&20a<6l2d:8n47;:k16?6=,8>o6<=4e82`>h6d:l20f5$06g>4bh6i54i3f94?"64b83?>o5j3:1(<:k:3a8j42d2810e?o50;&20a<5k2d:8n4=;:k1=?6=,8>o6?m4n06`>6=4e81g>h65$06g>7eh6:54i2094?"64b8;?>o493:1(<:k:3a8j42d2010e>>50;&20a<5k2d:8n4n;:k1b?6=,8>o6?m4n06`>g=4e81g>h65$06g>=eh6<54i9;94?"64b81?>o?03:1(<:k:9a8j42d2:10e5950;&20ao65m4n06`>0=4e8;g>h67>5$06g>=eh6454i9394?"64b8b?>o?83:1(<:k:9a8j42d2k10e:k50;&20ao65m4n06`>a=i1<7*>4e8;g>h6d3g;?o7?>;:k4o65m4n06`>44<3`=<6=4+15f954i6494?"64b820>=n?<0;6)?;d;:`?k73k3;>76g64;29 42c21i0b<:l:048?l?4290/=9j58b9m51e=9>10e4<50;&20a8:9j=4<72-;?h76l;o37g?7>32c2<7>5$06g>=eh65<#9=n14n5a15a95g=4e8;g>h6!73l32h7c?;c;3g?>o0n3:1(<:k:9a8j42d28o07d9;:18'51b=0j1e=9m51g98k`1=83.:8i4j6:l20f<732en97>5$06g>`0h6<54od694?"64b81?>ib;3:1(<:k:d48j42d2:10e4k50;&20a<>l2d:8n4?;:k:g?6=,8>o64j4n06`>4=4e8:`>h65$06g>`dh6<54od;94?"64b81?>ib03:1(<:k:d`8j42d2:10cio50;&20ao6i74n06`>4=4e8g=>h65$06g>a?h6854oe094?"64b85?>ic93:1(<:k:e;8j42d2>10ci>50;&20ao6i74n06`><=4e8g=>h65$06g>a?h6i54ob;94?"64b8f?>id03:1(<:k:e;8j42d2o10cn950;&20a0:9lg3<72-;?h7j6;o37g?7632eh97>5$06g>a?h6<<4;na7>5<#9=n1h45a15a956=4e8g=>h6!73l3n27c?;c;36?>ib93:1(<:k:e;8j42d28<07bk?:18'51b=l01e=9m51698ka`=83.:8i4k9:l20f<6021dhh4?:%37`?b>3g;?o7?6;:mg`?6=,8>o6i74n06`>4g<3fnh6=4+15f9`<=i9=i1=o54oe`94?"64b82g>=hl>0;6)?;d;f:?k73k3;o76alc;29 42c2m30b<:l:0g8?je6290/=9j5d89m51e=9o10e<99:18'51b=9>?0b<:l:198m413290/=9j51678j42d2810e<9<:18'51b=9>?0b<:l:398m415290/=9j51678j42d2:10e;m50;&20a<1j2d:8n4?;:k5e?6=,8>o6;l4n06`>4=4e85f>h65$06g>3dh6854i7694?"64b85?>o1;3:1(<:k:7`8j42d2>10e;<50;&20a<1j2d:8n47;:k55?6=,8>o6;l4n06`><=4e85f>h6o7>5$06g>3dh6i54i4`94?"64b8f?>o2i3:1(<:k:7`8j42d2o10e8750;&20a<1j2d:8n4>0:9j1=<72-;?h78m;o37g?7632c>;7>5$06g>3dh6<<4;h75>5<#9=n1:o5a15a956=4e85f>h6!73l3o0;3:1(<:k:7`8j42d28<07d9=:18'51b=>k1e=9m51698m27=83.:8i49b:l20f<6021b;=4?:%37`?0e3g;?o7?6;:k5b?6=,8>o6;l4n06`>4g<3`4b82g>=n>00;6)?;d;4a?k73k3;o76g:e;29 42c2?h0b<:l:0g8?l34290/=9j56c9m51e=9o10qo?97;29ff<729q/=;?515d8L41e3A;=m6T<8;ax0?3=m3;96k4>3;33>f2d>=7?4n4095>hd83:0bh<50:&fb?`63-l;6k?4$g697>"a=390(k853:&e3?5<,o21?6*i9;18 cg=;2.mn7=4$ga97>"al390(kk53:&eb?5<,8:;6>5+11397>"68;087)??3;18 4632:1/==;53:&243<43-;;;7=4$02;>6=#9931?6*>0`80?!77j390(<>l:29'55b=;2.:5+10397>"69;087)?>3;18 4732:1/=<;53:&253<43-;:;7=4$03;>6=#9831?6*>1`80?!76j390(5+13397>"6:;087)?=3;18 4432:1/=?;53:&263<43-;9;7=4$00;>6=#9;31?6*>2`80?!75j390(<h4<;%31b?5<,89;6>5+12397>"6;;087)?<3;18 4532:1/=>;53:&273<43-;8;7=4$01;>6=#9:31?6*>3`80?!74j390(<=l:39'56b=:2.:?h4>469'502=9?:0(<;::2;8 4312:30(<;6:258 43f28?h7)?:d;08 43b2;1/=:651658 41>28=<7d?:0;29?l262900ehk50;9j505=831b8;4?::k214<722c:9?4?::kf`?6=3`326=4+15f9===i9=i1<65f9683>!73l3337c?;c;38?l?1290/=9j5999m51e=:21b584?:%37`???3g;?o7=4;h345?6=,8>o6<9?;o37g?6<3`;=j7>5$06g>4173g;?o7?4;h35a?6=,8>o6<9?;o37g?4<3`;=h7>5$06g>4173g;?o7=4;n`;>5<#9=n1n:5a15a94>=hj?0;6)?;d;`4?k73k3;07bl;:18'51b=j>1e=9m52:9lf6<72-;?h7l8;o37g?5<3fh96=4+15f9f2=i9=i1865`b083>!73l3h<7c?;c;78?jd7290/=9j5b69m51e=>21dmk4?:%37`?d03g;?o794;ncf>5<#9=n1n:5a15a9<>=him0;6)?;d;`4?k73k3307bol:18'51b=j>1e=9m5a:9leg<72-;?h7l8;o37g?d<3fk26=4+15f9f2=i9=i1o65`a983>!73l3h<7c?;c;f8?jg0290/=9j5b69m51e=m21dm;4?:%37`?d03g;?o7h4;nc6>5<#9=n1n:5a15a955=1<7*>4e8a3>h6!73l3h<7c?;c;31?>if:3:1(<:k:c58j42d28907bo>:18'51b=j>1e=9m51598kd6=83.:8i4m7:l20f<6=21dnk4?:%37`?d03g;?o7?9;:maa?6=,8>o6o94n06`>41<3fho6=4+15f9f2=i9=i1=554oca94?"64b82=>=hjk0;6)?;d;`4?k73k3;j76ama;29 42c2k=0b<:l:0`8?jd>290/=9j5b69m51e=9j10co;50;&20ad:9led<72-;?h7l8;o37g?7b32e2j7>5$06g>g1h65<#9=n1=i5a15a94>=n9j0;6)?;d;3g?k73k3;07d?m:18'51b=9m1e=9m52:9j5d<72-;?h7?k;o37g?5<3`8<6=4+15f95a=i9=i1865f2783>!73l3;o7c?;c;78?l42290/=9j51e9m51e=>21b>94?:%37`?7c3g;?o794;h00>5<#9=n1=i5a15a9<>=n:;0;6)?;d;3g?k73k3307d<>:18'51b=9m1e=9m5a:9j65<72-;?h7?k;o37g?d<3`;m6=4+15f95a=i9=i1o65f1883>!73l3;o7c?;c;f8?l4c290/=9j52b9m51e=821b>o4?:%37`?4d3g;?o7?4;h0b>5<#9=n1>n5a15a96>=n:00;6)?;d;0`?k73k3907d=9:18'51b=:j1e=9m54:9j70<72-;?h7!73l38h7c?;c;58?l55290/=9j52b9m51e=021b?<4?:%37`?4d3g;?o774;h13>5<#9=n1>n5a15a9e>=n:o0;6)?;d;0`?k73k3h07d!73l32h7c?;c;38?l>>290/=9j58b9m51e=:21b454?:%37`?>d3g;?o7=4;h:4>5<#9=n14n5a15a90>=n0?0;6)?;d;:`?k73k3?07d6::18'51b=0j1e=9m56:9j<1<72-;?h76l;o37g?1<3`286=4+15f9!73l32h7c?;c;;8?l>6290/=9j58b9m51e=i21b4=4?:%37`?>d3g;?o7l4;h5f>5<#9=n14n5a15a9g>=n?m0;6)?;d;:`?k73k3n07d9l:18'51b=0j1e=9m5e:9j3g<72-;?h76l;o37g?`<3`=j6=4+15f94b825>=n?10;6)?;d;:`?k73k3;976g87;29 42c21i0b<:l:018?l11290/=9j58b9m51e=9=10e:;50;&20a5:9j=1<72-;?h76l;o37g?7132c2?7>5$06g>=eh6<94;h;1>5<#9=n14n5a15a95==4e8;g>h6!73l32h7c?;c;3b?>o?n3:1(<:k:9a8j42d28h07d6j:18'51b=0j1e=9m51b98m=g=83.:8i47c:l20f<6l21b;k4?:%37`?>d3g;?o7?j;:k40?6=,8>o65m4n06`>4`<3fo<6=4+15f9a3=i9=i1<65`e483>!73l3o=7c?;c;38?jc3290/=9j5e79m51e=:21di>4?:%37`?c13g;?o7=4;h;f>5<#9=n15i5a15a94>=n1j0;6)?;d;;g?k73k3;07d7m:18'51b=1m1e=9m52:9j=d<72-;?h77k;o37g?5<3foh6=4+15f9ag=i9=i1<65`e`83>!73l3oi7c?;c;38?jc>290/=9j5ec9m51e=:21di54?:%37`?ce3g;?o7=4;nfb>5<#9=n1h45a15a94>=hl10;6)?;d;f:?k73k3;07bj9:18'51b=l01e=9m52:9l`0<72-;?h7j6;o37g?5<3fn?6=4+15f9`<=i9=i1865`d283>!73l3n27c?;c;78?jb5290/=9j5d89m51e=>21dh<4?:%37`?b>3g;?o794;nf3>5<#9=n1h45a15a9<>=hko0;6)?;d;f:?k73k3307bmj:18'51b=l01e=9m5a:9lga<72-;?h7j6;o37g?d<3fii6=4+15f9`<=i9=i1o65`c`83>!73l3n27c?;c;f8?je>290/=9j5d89m51e=m21do54?:%37`?b>3g;?o7h4;na4>5<#9=n1h45a15a955=4e8g=>h6!73l3n27c?;c;31?>id<3:1(<:k:e;8j42d28907bm<:18'51b=l01e=9m51598kf4=83.:8i4k9:l20f<6=21di<4?:%37`?b>3g;?o7?9;:mf4?6=,8>o6i74n06`>41<3fnm6=4+15f9`<=i9=i1=554oeg94?"64b82=>=hlm0;6)?;d;f:?k73k3;j76akc;29 42c2m30b<:l:0`8?jbe290/=9j5d89m51e=9j10ci950;&20ad:9lgf<72-;?h7j6;o37g?7b32eh=7>5$06g>a?h6o6<9:;o37g?6<3`;<87>5$06g>4123g;?o7?4;h347?6=,8>o6<9:;o37g?4<3`;<>7>5$06g>4123g;?o7=4;h4`>5<#9=n1:o5a15a94>=n>h0;6)?;d;4a?k73k3;07d87:18'51b=>k1e=9m52:9j22<72-;?h78m;o37g?5<3`<=6=4+15f92g=i9=i1865f6483>!73l321b:>4?:%37`?0e3g;?o794;h41>5<#9=n1:o5a15a9<>=n>80;6)?;d;4a?k73k3307d8?:18'51b=>k1e=9m5a:9j1c<72-;?h78m;o37g?d<3`?o6=4+15f92g=i9=i1o65f5b83>!73l35<#9=n1:o5a15a955=4e85f>h6!73l3o2>3:1(<:k:7`8j42d28907d;::18'51b=>k1e=9m51598m02=83.:8i49b:l20f<6=21b;>4?:%37`?0e3g;?o7?9;:k46?6=,8>o6;l4n06`>41<3`=:6=4+15f92g=i9=i1=554i6294?"64b82=>=n>o0;6)?;d;4a?k73k3;j76g9e;29 42c2?h0b<:l:0`8?l0c290/=9j56c9m51e=9j10e;750;&20a<1j2d:8n4>d:9j1`<72-;?h78m;o37g?7b32c>?7>5$06g>3dh6t$042>42a3A;6`9Y7=6h4>2;d956<683i1n7j5108b>x"6<10:i;5a5082?k35281eo=4?;og1>5=#mo0m=6*i0;d2?!`32:1/j84<;%d5>6=#n>087)h7:29'b<<43-lj6>5+fc80?!`d2:1/ji4<;%df>6=#no087)??0;18 4662:1/==<53:&246<43-;;87=4$026>6=#99<1?6*>0680?!770390(<>6:29'55g=;2.:5+11g97>"68o087)?>0;18 4762:1/=<<53:&256<43-;:87=4$036>6=#98<1?6*>1680?!760390(5+10g97>"69o087)?=0;18 4462:1/=?<53:&266<43-;987=4$006>6=#9;<1?6*>2680?!750390(<<6:29'57g=;2.:>o4<;%31g?5<,88o6>5+13g97>"6:o087)?<0;18 4562:1/=><53:&276<43-;887=4$016>6=#9:<1?6*>3680?!740390(<=6:29'56g=;2.:?o4<;%30g?4<,89o6?5+12g9511<,8??6<8?;%361?5>3-;>:7=6;%36=?503-;>m7?:c:&21a<53-;>i7<4$05;>4103-;<57?87:k215<722c?=7>5;hgf>5<5$06g><>h6?54i8794?"64b80?>o6?80;6)?;d;344>h66g83>!73l3;<<6`>4b82?>o6>l0;6)?;d;344>h66e83>!73l3;<<6`>4b80?>ie03:1(<:k:c58j42d2910co850;&20a;:ma0?6=,8>o6o94n06`>7=4e8a3>h65$06g>g1h6;54o`d94?"64b84?>ifm3:1(<:k:c58j42d2110clj50;&20ao6o94n06`>d=4e8a3>h6=83.:8i4m7:l20f5$06g>g1h6h54o`494?"64b8e?>if=3:1(<:k:c58j42d28:07bo;:18'51b=j>1e=9m51098kd5=83.:8i4m7:l20f<6:21dm?4?:%37`?d03g;?o7?<;:mb5?6=,8>o6o94n06`>42<3fk;6=4+15f9f2=i9=i1=854ocd94?"64b822>=hjl0;6)?;d;`4?k73k3;<76amd;29 42c2k=0b<:l:0:8?jdd290/=9j5b69m51e=9010col50;&20aa:9lfd<72-;?h7l8;o37g?7e32ei57>5$06g>g1h65<#9=n1n:5a15a95a=4e8a3>h6!73l3h<7c?;c;3e?>o6m3:1(<:k:0f8j42d2910e;:k2f?6=,8>o67=4e82`>h6d:l20f<232c997>5$06g>4bh6;54i3694?"64b84?>o5;3:1(<:k:0f8j42d2110e?<50;&20a<6l2d:8n46;:k15?6=,8>o6d=4e82`>h6f;29 42c28n0b<:l:b98m4?=83.:8i4>d:l20f5$06g>7eh6=54i3`94?"64b82?>o5i3:1(<:k:3a8j42d2;10e?750;&20a<5k2d:8n4<;:k02?6=,8>o6?m4n06`>1=4e81g>h676g<4;29 42c2;i0b<:l:798m65=83.:8i4=c:l20f<032c8>7>5$06g>7eh6554i2394?"64b8:?>o483:1(<:k:3a8j42d2h10e?h50;&20a<5k2d:8n4m;:k1a?6=,8>o6?m4n06`>f=4e81g>h65$06g>=eh6?54i9:94?"64b80?>o??3:1(<:k:9a8j42d2=10e5850;&20ao65m4n06`>3=1<7*>4e8;g>h632c3=7>5$06g>=eh6l54i9294?"64b8a?>o0m3:1(<:k:9a8j42d2j10e:j50;&20ao65m4n06`>`=h1<7*>4e8;g>h6290/=9j58b9m51e=9810e:650;&20a2:9j32<72-;?h76l;o37g?7432c<:7>5$06g>=eh6<:4;h56>5<#9=n14n5a15a950=1<7*>4e8;g>h6!73l32h7c?;c;34?>o>:3:1(<:k:9a8j42d28207d7>:18'51b=0j1e=9m51898m<6=83.:8i47c:l20f<6i21b4k4?:%37`?>d3g;?o7?m;:k;a?6=,8>o65m4n06`>4e<3`2j6=4+15f94b82a>=n?=0;6)?;d;:`?k73k3;m76aj7;29 42c2l<0b<:l:198k`3=83.:8i4j6:l20f<632en87>5$06g>`0h6?54od194?"64b80?>o>m3:1(<:k:8f8j42d2910e4m50;&20a<>l2d:8n4>;:k:f?6=,8>o64j4n06`>7=4e8:`>h65$06g>`dh6?54od:94?"64b80?>ici3:1(<:k:e;8j42d2910ci650;&20a;:mg2?6=,8>o6i74n06`>7=4e8g=>h67>5$06g>a?h6;54oe394?"64b84?>ic83:1(<:k:e;8j42d2110cnh50;&20ao6i74n06`>d=4e8g=>h65$06g>a?h6h54ob:94?"64b8e?>id?3:1(<:k:e;8j42d28:07bm9:18'51b=l01e=9m51098kf3=83.:8i4k9:l20f<6:21do94?:%37`?b>3g;?o7?<;:m`7?6=,8>o6i74n06`>42<3fi96=4+15f9`<=i9=i1=854od394?"64b822>=hm90;6)?;d;f:?k73k3;<76akf;29 42c2m30b<:l:0:8?jbb290/=9j5d89m51e=9010cij50;&20aa:9l`f<72-;?h7j6;o37g?7e32eon7>5$06g>a?h65<#9=n1h45a15a95a=4e8g=>h6!73l3n27c?;c;3e?>o6??0;6)?;d;341>h67583>!73l3;<96`>4b82?>o6?:0;6)?;d;341>h67383>!73l3;<96`>4b80?>o1k3:1(<:k:7`8j42d2910e;o50;&20a<1j2d:8n4>;:k5o6;l4n06`>7=4e85f>h65$06g>3dh6;54i7194?"64b84?>o1:3:1(<:k:7`8j42d2110e;?50;&20a<1j2d:8n46;:k54?6=,8>o6;l4n06`>d=4e85f>h6n7>5$06g>3dh6h54i4c94?"64b8e?>o213:1(<:k:7`8j42d28:07d;7:18'51b=>k1e=9m51098m01=83.:8i49b:l20f<6:21b9;4?:%37`?0e3g;?o7?<;:k61?6=,8>o6;l4n06`>42<3`??6=4+15f92g=i9=i1=854i6194?"64b822>=n?;0;6)?;d;4a?k73k3;<76g81;29 42c2?h0b<:l:0:8?l17290/=9j56c9m51e=9010e;h50;&20a<1j2d:8n4>a:9j2`<72-;?h78m;o37g?7e32c=h7>5$06g>3dh65<#9=n1:o5a15a95a=4e85f>h6!73l3{e9??1<7ll:183!7193;?j6F>7c9K53g47=i3w/=9651d48j07=92d>>7?4nb294>hb:3:0(hh5f09'b5"a>390(k953:&e"am390(kh53:&245<43-;;=7=4$021>6=#9991?6*>0580?!77=390(<>9:29'551=;2.:<54<;%33=?5<,8:j6>5+11`97>"68j087)??d;18 46b2:1/==h53:&255<43-;:=7=4$031>6=#9891?6*>1580?!76=390(5+10`97>"69j087)?>d;18 47b2:1/=6=#9;91?6*>2580?!75=390(<<9:29'571=;2.:>54<;%31=?5<,88j6>5+13`97>"6:j087)?=d;18 44b2:1/=?h53:&275<43-;8=7=4$011>6=#9:91?6*>3580?!74=390(<=9:29'561=;2.:?54<;%30=?5<,89j6>5+12`97>"6;j097)?<7)?:4;354>"6=<0856*>5780=>"6=008;6*>5`821f=#96*>5d81?!7003;<;6*>788232=n9<:1<75f4083>>obm3:17d?:3;29?l212900e<;>:188m4352900ehj50;9j=<<72-;?h777;o37g?6<3`3<6=4+15f9===i9=i1=65f9783>!73l3337c?;c;08?l?2290/=9j5999m51e=;21b=:?50;&20a<6?91e=9m50:9j53`=83.:8i4>719m51e=921b=;k50;&20a<6?91e=9m52:9j53b=83.:8i4>719m51e=;21dn54?:%37`?d03g;?o7>4;n`5>5<#9=n1n:5a15a95>=hj=0;6)?;d;`4?k73k3807bl<:18'51b=j>1e=9m53:9lf7<72-;?h7l8;o37g?2<3fh:6=4+15f9f2=i9=i1965`b183>!73l3h<7c?;c;48?jga290/=9j5b69m51e=?21dmh4?:%37`?d03g;?o764;ncg>5<#9=n1n:5a15a9=>=hij0;6)?;d;`4?k73k3k07bom:18'51b=j>1e=9m5b:9le<<72-;?h7l8;o37g?e<3fk36=4+15f9f2=i9=i1h65`a683>!73l3h<7c?;c;g8?jg1290/=9j5b69m51e=n21dm84?:%37`?d03g;?o7??;:mb0?6=,8>o6o94n06`>47<3fk86=4+15f9f2=i9=i1=?54o`094?"64b827>=hi80;6)?;d;`4?k73k3;?76an0;29 42c2k=0b<:l:078?jda290/=9j5b69m51e=9?10cok50;&20a7:9lfa<72-;?h7l8;o37g?7?32eio7>5$06g>g1h6<74;n`a>5<#9=n1n:5a15a95d=4e8a3>h6!73l3h<7c?;c;3`?>ie=3:1(<:k:c58j42d28n07bon:18'51b=j>1e=9m51d98k<`=83.:8i4m7:l20f<6n21b=h4?:%37`?7c3g;?o7>4;h3`>5<#9=n1=i5a15a95>=n9k0;6)?;d;3g?k73k3807d?n:18'51b=9m1e=9m53:9j62<72-;?h7?k;o37g?2<3`8=6=4+15f95a=i9=i1965f2483>!73l3;o7c?;c;48?l43290/=9j51e9m51e=?21b>>4?:%37`?7c3g;?o764;h01>5<#9=n1=i5a15a9=>=n:80;6)?;d;3g?k73k3k07d!73l38h7c?;c;28?l4e290/=9j52b9m51e=921b>l4?:%37`?4d3g;?o7<4;h0:>5<#9=n1>n5a15a97>=n;?0;6)?;d;0`?k73k3>07d=::18'51b=:j1e=9m55:9j71<72-;?h7!73l38h7c?;c;:8?l56290/=9j52b9m51e=121b?=4?:%37`?4d3g;?o7o4;h0e>5<#9=n1>n5a15a9f>=n:l0;6)?;d;0`?k73k3i07d<7:18'51b=:j1e=9m5d:9j!73l32h7c?;c;08?l>?290/=9j58b9m51e=;21b4:4?:%37`?>d3g;?o7:4;h:5>5<#9=n14n5a15a91>=n0<0;6)?;d;:`?k73k3<07d6;:18'51b=0j1e=9m57:9j<6<72-;?h76l;o37g?><3`296=4+15f9!73l32h7c?;c;c8?l>7290/=9j58b9m51e=j21b;h4?:%37`?>d3g;?o7m4;h5g>5<#9=n14n5a15a9`>=n?j0;6)?;d;:`?k73k3o07d9m:18'51b=0j1e=9m5f:9j3d<72-;?h76l;o37g?7732c<57>5$06g>=eh65<#9=n14n5a15a957==1<7*>4e8;g>h6!73l32h7c?;c;37?>o0=3:1(<:k:9a8j42d28?07d7;:18'51b=0j1e=9m51798m<5=83.:8i47c:l20f<6?21b5?4?:%37`?>d3g;?o7?7;:k:5?6=,8>o65m4n06`>4?<3`3;6=4+15f94b82f>=n0l0;6)?;d;:`?k73k3;h76g7a;29 42c21i0b<:l:0f8?l1a290/=9j58b9m51e=9l10e::50;&20af:9la2<72-;?h7k9;o37g?6<3fo>6=4+15f9a3=i9=i1=65`e583>!73l3o=7c?;c;08?jc4290/=9j5e79m51e=;21b5h4?:%37`??c3g;?o7>4;h;`>5<#9=n15i5a15a95>=n1k0;6)?;d;;g?k73k3807d7n:18'51b=1m1e=9m53:9laf<72-;?h7km;o37g?6<3foj6=4+15f9ag=i9=i1=65`e883>!73l3oi7c?;c;08?jc?290/=9j5ec9m51e=;21dhl4?:%37`?b>3g;?o7>4;nf;>5<#9=n1h45a15a95>=hl?0;6)?;d;f:?k73k3807bj::18'51b=l01e=9m53:9l`1<72-;?h7j6;o37g?2<3fn86=4+15f9`<=i9=i1965`d383>!73l3n27c?;c;48?jb6290/=9j5d89m51e=?21dh=4?:%37`?b>3g;?o764;nae>5<#9=n1h45a15a9=>=hkl0;6)?;d;f:?k73k3k07bmk:18'51b=l01e=9m5b:9lgg<72-;?h7j6;o37g?e<3fij6=4+15f9`<=i9=i1h65`c883>!73l3n27c?;c;g8?je?290/=9j5d89m51e=n21do:4?:%37`?b>3g;?o7??;:m`2?6=,8>o6i74n06`>47<3fi>6=4+15f9`<=i9=i1=?54ob694?"64b827>=hk:0;6)?;d;f:?k73k3;?76al2;29 42c2m30b<:l:078?jc6290/=9j5d89m51e=9?10ch>50;&20a7:9l`c<72-;?h7j6;o37g?7?32eoi7>5$06g>a?h6<74;nfg>5<#9=n1h45a15a95d=4e8g=>h6!73l3n27c?;c;3`?>ic?3:1(<:k:e;8j42d28n07bml:18'51b=l01e=9m51d98kf7=83.:8i4k9:l20f<6n21b=:850;&20a<6?<1e=9m50:9j522=83.:8i4>749m51e=921b=:=50;&20a<6?<1e=9m52:9j524=83.:8i4>749m51e=;21b:n4?:%37`?0e3g;?o7>4;h4b>5<#9=n1:o5a15a95>=n>10;6)?;d;4a?k73k3807d88:18'51b=>k1e=9m53:9j23<72-;?h78m;o37g?2<3`<>6=4+15f92g=i9=i1965f6583>!73l35<#9=n1:o5a15a9=>=n>90;6)?;d;4a?k73k3k07d;i:18'51b=>k1e=9m5b:9j1a<72-;?h78m;o37g?e<3`?h6=4+15f92g=i9=i1h65f5c83>!73l3o6;l4n06`>47<3`?<6=4+15f92g=i9=i1=?54i4494?"64b827>=n=<0;6)?;d;4a?k73k3;?76g:4;29 42c2?h0b<:l:078?l14290/=9j56c9m51e=9?10e:<50;&20a<1j2d:8n4>7:9j34<72-;?h78m;o37g?7?32c<<7>5$06g>3dh6<74;h4e>5<#9=n1:o5a15a95d=4e85f>h6!73l3o113:1(<:k:7`8j42d28n07d;j:18'51b=>k1e=9m51d98m05=83.:8i49b:l20f<6n21vn<8;:18ag?6=8r.::<4>4g9K52d<@804c13g?:6<5a5382?ke7291ei?4?;%ge>c7<,o:1j<5+f580?!`22:1/j;4<;%d4>6=#n1087)h6:29'bd<43-li6>5+fb80?!`c2:1/jh4<;%de>6=#99:1?6*>0080?!77:390(<><:29'552=;2.:<84<;%332?5<,8:<6>5+11:97>"680087)??a;18 46e2:1/==m53:&24a<43-;;i7=4$02e>6=#98:1?6*>1080?!76:390(5+10:97>"690087)?>a;18 47e2:1/=6=#9;:1?6*>2080?!75:390(<<<:29'572=;2.:>84<;%312?5<,88<6>5+13:97>"6:0087)?=a;18 44e2:1/=?m53:&26a<43-;9i7=4$00e>6=#9::1?6*>3080?!74:390(<=<:29'562=;2.:?84<;%302?5<,89<6>5+12:97>"6;0087)?m52:&27a<53-;8i7?;7:&211<6>91/=8;5389'500=;01/=875369'50g=9769'52?=9>=0e<;?:188m17=831bih4?::k216<722c?:7>5;h365?6=3`;>>7>5;hgg>5<4e8:<>h65$06g><>h6>54i052>5<#9=n1=:>4n06`>5=h6<54i04f>5<#9=n1=:>4n06`>7=h6>54oc:94?"64b83?>ie>3:1(<:k:c58j42d2810co:50;&20ao6o94n06`>6=4e8a3>h65$06g>g1h6:54o`g94?"64b8;?>ifl3:1(<:k:c58j42d2010clm50;&20ao6o94n06`>g=4e8a3>h65$06g>g1h6k54o`794?"64b824>=hi=0;6)?;d;`4?k73k3;:76an3;29 42c2k=0b<:l:008?jg5290/=9j5b69m51e=9:10cl?50;&20a4:9le5<72-;?h7l8;o37g?7232eij7>5$06g>g1h6<84;n`f>5<#9=n1n:5a15a952=4e8a3>h6!73l3h<7c?;c;3:?>iej3:1(<:k:c58j42d28k07bln:18'51b=j>1e=9m51c98kg?=83.:8i4m7:l20f<6k21dn84?:%37`?d03g;?o7?k;:mbe?6=,8>o6o94n06`>4c<3f3m6=4+15f9f2=i9=i1=k54i0g94?"64b83?>o6k3:1(<:k:0f8j42d2810eo66=4e82`>h6d:l20f<132c987>5$06g>4bh6:54i3194?"64b8;?>o5:3:1(<:k:0f8j42d2010e??50;&20a<6l2d:8n4n;:k14?6=,8>o6g=4e82`>h69;29 42c28n0b<:l:e98m7b=83.:8i4=c:l20f<732c9n7>5$06g>7eh6<54i3c94?"64b81?>o513:1(<:k:3a8j42d2:10e>850;&20a<5k2d:8n4;;:k01?6=,8>o6?m4n06`>0=1<7*>4e81g>h65$06g>7eh6454i2294?"64b8b?>o5n3:1(<:k:3a8j42d2k10e?k50;&20a<5k2d:8n4l;:k1o6?m4n06`>a=4e8;g>h65$06g>=eh6>54i9594?"64b87?>o?>3:1(<:k:9a8j42d2<10e5;50;&20ao65m4n06`>2=4e8;g>h65$06g>=eh6o54i6g94?"64b8`?>o0l3:1(<:k:9a8j42d2m10e:m50;&20ao65m4n06`>c=k1<7*>4e8;g>h6!73l32h7c?;c;32?>o003:1(<:k:9a8j42d28807d98:18'51b=0j1e=9m51298m20=83.:8i47c:l20f<6<21b;84?:%37`?>d3g;?o7?:;:k:0?6=,8>o65m4n06`>40<3`386=4+15f94b82<>=n180;6)?;d;:`?k73k3;276g60;29 42c21i0b<:l:0c8?l>a290/=9j58b9m51e=9k10e5k50;&20ac:9j5$06g>=eh65<#9=n14n5a15a95c=4e8f2>h65$06g>`0h6>54i8g94?"64b83?>o>k3:1(<:k:8f8j42d2810e4l50;&20a<>l2d:8n4=;:k:e?6=,8>o64j4n06`>6=4e8ff>h65$06g>`dh6>54oec94?"64b83?>ic03:1(<:k:e;8j42d2810ci850;&20ao6i74n06`>6=1<7*>4e8g=>h65$06g>a?h6:54oe294?"64b8;?>idn3:1(<:k:e;8j42d2010cnk50;&20ao6i74n06`>g=4e8g=>h65$06g>a?h6k54ob594?"64b824>=hk?0;6)?;d;f:?k73k3;:76al5;29 42c2m30b<:l:008?je3290/=9j5d89m51e=9:10cn=50;&20a4:9lg7<72-;?h7j6;o37g?7232en=7>5$06g>a?h6<84;ng3>5<#9=n1h45a15a952=4e8g=>h6!73l3n27c?;c;3:?>icl3:1(<:k:e;8j42d28k07bjl:18'51b=l01e=9m51c98kad=83.:8i4k9:l20f<6k21dh:4?:%37`?b>3g;?o7?k;:m`g?6=,8>o6i74n06`>4c<3fi:6=4+15f9`<=i9=i1=k54i055>5<#9=n1=:;4n06`>5=h6<54i050>5<#9=n1=:;4n06`>7=h6>54i7a94?"64b83?>o1i3:1(<:k:7`8j42d2810e;650;&20a<1j2d:8n4=;:k53?6=,8>o6;l4n06`>6=4e85f>h65$06g>3dh6:54i7094?"64b8;?>o193:1(<:k:7`8j42d2010e;>50;&20a<1j2d:8n4n;:k6b?6=,8>o6;l4n06`>g=4e85f>h6m7>5$06g>3dh6k54i4;94?"64b824>=n=10;6)?;d;4a?k73k3;:76g:7;29 42c2?h0b<:l:008?l31290/=9j56c9m51e=9:10e8;50;&20a<1j2d:8n4>4:9j11<72-;?h78m;o37g?7232c5$06g>3dh6<84;h51>5<#9=n1:o5a15a952=;1<7*>4e85f>h6!73l3o1n3:1(<:k:7`8j42d28k07d8j:18'51b=>k1e=9m51c98m3b=83.:8i49b:l20f<6k21b:44?:%37`?0e3g;?o7?k;:k6a?6=,8>o6;l4n06`>4c<3`?86=4+15f92g=i9=i1=k54}c357?6=jj0;6=u+173951`<@8=i7E?9a:X01;c9y!7303;n:6`:1;38j04=92dh<7>4nd094>"bn3l:7)h?:g38 c2=;2.m97=4$g497>"a?390(k653:&e=?5<,ok1?6*ib;18 ce=;2.mh7=4$gg97>"an390(<>?:29'557=;2.:5+11797>"68?087)??7;18 46?2:1/==753:&24d<43-;;n7=4$02`>6=#99n1?6*>0d80?!77n390(5+10797>"69?087)?>7;18 47?2:1/=<753:&25d<43-;:n7=4$03`>6=#98n1?6*>1d80?!76n390(<?4<;%317?5<,88?6>5+13797>"6:?087)?=7;18 44?2:1/=?753:&26d<43-;9n7=4$00`>6=#9;n1?6*>2d80?!75n390(<=?:29'567=;2.:??4<;%307?5<,89?6>5+12797>"6;?087)?<7;18 45?2:1/=>753:&27d<43-;8n7=4$01`>7=#9:n1>6*>3d8202=#9<>1=;>4$076>6?<,8?=6>74$07:>61<,8?j6<;l;%36`?4<,8?n6?5+16:9521<,8=26<98;h364?6=3`>:6=44idg94?=n9<91<75f4783>>o6=80;66g>5383>>obl3:17d76:18'51b=111e=9m50:9j=2<72-;?h777;o37g?7<3`3=6=4+15f9===i9=i1>65f9483>!73l3337c?;c;18?l7093:1(<:k:053?k73k3:07d?9f;29 42c28=;7c?;c;38?l71m3:1(<:k:053?k73k3807d?9d;29 42c28=;7c?;c;18?jd?290/=9j5b69m51e=821dn;4?:%37`?d03g;?o7?4;n`7>5<#9=n1n:5a15a96>=hj:0;6)?;d;`4?k73k3907bl=:18'51b=j>1e=9m54:9lf4<72-;?h7l8;o37g?3<3fh;6=4+15f9f2=i9=i1:65`ag83>!73l3h<7c?;c;58?jgb290/=9j5b69m51e=021dmi4?:%37`?d03g;?o774;nc`>5<#9=n1n:5a15a9e>=hik0;6)?;d;`4?k73k3h07bo6:18'51b=j>1e=9m5c:9le=<72-;?h7l8;o37g?b<3fk<6=4+15f9f2=i9=i1i65`a783>!73l3h<7c?;c;d8?jg2290/=9j5b69m51e=9910cl:50;&20a1:9le6<72-;?h7l8;o37g?7532ej>7>5$06g>g1h6<=4;nc2>5<#9=n1n:5a15a951=4e8a3>h6!73l3h<7c?;c;35?>iem3:1(<:k:c58j42d28=07blk:18'51b=j>1e=9m51998kge=83.:8i4m7:l20f<6121dno4?:%37`?d03g;?o7?n;:mae?6=,8>o6o94n06`>4d<3fh26=4+15f9f2=i9=i1=n54oc794?"64b82`>=hih0;6)?;d;`4?k73k3;n76a6f;29 42c2k=0b<:l:0d8?l7b290/=9j51e9m51e=821b=n4?:%37`?7c3g;?o7?4;h3a>5<#9=n1=i5a15a96>=n9h0;6)?;d;3g?k73k3907d<8:18'51b=9m1e=9m54:9j63<72-;?h7?k;o37g?3<3`8>6=4+15f95a=i9=i1:65f2583>!73l3;o7c?;c;58?l44290/=9j51e9m51e=021b>?4?:%37`?7c3g;?o774;h02>5<#9=n1=i5a15a9e>=n:90;6)?;d;3g?k73k3h07d?i:18'51b=9m1e=9m5c:9j5<<72-;?h7?k;o37g?b<3`8o6=4+15f96f=i9=i1<65f2c83>!73l38h7c?;c;38?l4f290/=9j52b9m51e=:21b>44?:%37`?4d3g;?o7=4;h15>5<#9=n1>n5a15a90>=n;<0;6)?;d;0`?k73k3?07d=;:18'51b=:j1e=9m56:9j76<72-;?h7!73l38h7c?;c;;8?l57290/=9j52b9m51e=i21b>k4?:%37`?4d3g;?o7l4;h0f>5<#9=n1>n5a15a9g>=n:10;6)?;d;0`?k73k3n07d6k:18'51b=0j1e=9m50:9j65f8983>!73l32h7c?;c;18?l>0290/=9j58b9m51e=<21b4;4?:%37`?>d3g;?o7;4;h:6>5<#9=n14n5a15a92>=n0=0;6)?;d;:`?k73k3=07d6<:18'51b=0j1e=9m58:9j<7<72-;?h76l;o37g??<3`2:6=4+15f9!73l32h7c?;c;`8?l1b290/=9j58b9m51e=k21b;i4?:%37`?>d3g;?o7j4;h5`>5<#9=n14n5a15a9a>=n?k0;6)?;d;:`?k73k3l07d9n:18'51b=0j1e=9m51198m2?=83.:8i47c:l20f<6921b;54?:%37`?>d3g;?o7?=;:k43?6=,8>o65m4n06`>45<3`==6=4+15f94b821>=n1=0;6)?;d;:`?k73k3;=76g63;29 42c21i0b<:l:058?l?5290/=9j58b9m51e=9110e4?50;&20a9:9j=5<72-;?h76l;o37g?7f32c3j7>5$06g>=eh65<#9=n14n5a15a95f=4e8;g>h6!73l32h7c?;c;3f?>o0<3:1(<:k:9a8j42d28l07bk8:18'51b=m?1e=9m50:9la0<72-;?h7k9;o37g?7<3fo?6=4+15f9a3=i9=i1>65`e283>!73l3o=7c?;c;18?l?b290/=9j59e9m51e=821b5n4?:%37`??c3g;?o7?4;h;a>5<#9=n15i5a15a96>=n1h0;6)?;d;;g?k73k3907bkl:18'51b=mk1e=9m50:9lad<72-;?h7km;o37g?7<3fo26=4+15f9ag=i9=i1>65`e983>!73l3oi7c?;c;18?jbf290/=9j5d89m51e=821dh54?:%37`?b>3g;?o7?4;nf5>5<#9=n1h45a15a96>=hl<0;6)?;d;f:?k73k3907bj;:18'51b=l01e=9m54:9l`6<72-;?h7j6;o37g?3<3fn96=4+15f9`<=i9=i1:65`d083>!73l3n27c?;c;58?jb7290/=9j5d89m51e=021dok4?:%37`?b>3g;?o774;naf>5<#9=n1h45a15a9e>=hkm0;6)?;d;f:?k73k3h07bmm:18'51b=l01e=9m5c:9lgd<72-;?h7j6;o37g?b<3fi26=4+15f9`<=i9=i1i65`c983>!73l3n27c?;c;d8?je0290/=9j5d89m51e=9910cn850;&20a1:9lg0<72-;?h7j6;o37g?7532eh87>5$06g>a?h6<=4;na0>5<#9=n1h45a15a951=4e8g=>h6!73l3n27c?;c;35?>ib83:1(<:k:e;8j42d28=07bji:18'51b=l01e=9m51998kac=83.:8i4k9:l20f<6121dhi4?:%37`?b>3g;?o7?n;:mgg?6=,8>o6i74n06`>4d<3fni6=4+15f9`<=i9=i1=n54oe594?"64b82`>=hkj0;6)?;d;f:?k73k3;n76al1;29 42c2m30b<:l:0d8?l70>3:1(<:k:056?k73k3:07d?84;29 42c28=>7c?;c;38?l70;3:1(<:k:056?k73k3807d?82;29 42c28=>7c?;c;18?l0d290/=9j56c9m51e=821b:l4?:%37`?0e3g;?o7?4;h4;>5<#9=n1:o5a15a96>=n>>0;6)?;d;4a?k73k3907d89:18'51b=>k1e=9m54:9j20<72-;?h78m;o37g?3<3`!73l35<#9=n1:o5a15a9e>=n=o0;6)?;d;4a?k73k3h07d;k:18'51b=>k1e=9m5c:9j1f<72-;?h78m;o37g?b<3`?i6=4+15f92g=i9=i1i65f5`83>!73l3290/=9j56c9m51e=9910e8650;&20a<1j2d:8n4>1:9j12<72-;?h78m;o37g?7532c>:7>5$06g>3dh6<=4;h76>5<#9=n1:o5a15a951=1<7*>4e85f>h6!73l3o0:3:1(<:k:7`8j42d28=07d9>:18'51b=>k1e=9m51998m26=83.:8i49b:l20f<6121b:k4?:%37`?0e3g;?o7?n;:k5a?6=,8>o6;l4n06`>4d<3`4b82`>=n=l0;6)?;d;4a?k73k3;n76g:3;29 42c2?h0b<:l:0d8?xd6>;0;6om50;2x 40628>m7E?8b:J22d=];10hw94::d826?`=9:0:<7m5b;f954e79m14<63g?96<5ac183?kc5291/ik4i1:&e4?`63-l?6>5+f480?!`12:1/j:4<;%d;>6=#n0087)hn:29'bg<43-lh6>5+fe80?!`b2:1/jk4<;%334?5<,8::6>5+11097>"68:087)??4;18 4622:1/==853:&242<43-;;47=4$02:>6=#99k1?6*>0c80?!77k390(<>k:29'55c=;2.:5+10097>"69:087)?>4;18 4722:1/=<853:&252<43-;:47=4$03:>6=#98k1?6*>1c80?!76k390(5+13097>"6::087)?=4;18 4422:1/=?853:&262<43-;947=4$00:>6=#9;k1?6*>2c80?!75k390(<k4<;%304?5<,89:6>5+12097>"6;:087)?<4;18 4522:1/=>853:&272<43-;847=4$01:>6=#9:k1?6*>3c80?!74k380(<=k:39'56c=9==0(<;;:043?!72=3927)?:6;1:?!72139<7)?:a;36g>"6=m097)?:e;08 41?28=<7)?89;343>o6=90;66g;1;29?lcb2900e<;<:188m10=831b=8?50;9j504=831bii4?::k:=?6=,8>o6464n06`>5=4e8:<>h65$06g>g1h6=54oc494?"64b82?>ie<3:1(<:k:c58j42d2;10co=50;&20ao6o94n06`>1=4e8a3>h676am0;29 42c2k=0b<:l:798kd`=83.:8i4m7:l20f<032eji7>5$06g>g1h6554o`f94?"64b8:?>ifk3:1(<:k:c58j42d2h10cll50;&20ao6o94n06`>f=4e8a3>h65$06g>g1h6<>4;nc7>5<#9=n1n:5a15a954=4e8a3>h665`a383>!73l3h<7c?;c;30?>if93:1(<:k:c58j42d28>07bo?:18'51b=j>1e=9m51498kg`=83.:8i4m7:l20f<6>21dnh4?:%37`?d03g;?o7?8;:ma`?6=,8>o6o94n06`>4><3fhh6=4+15f9f2=i9=i1=454oc`94?"64b82e>=hjh0;6)?;d;`4?k73k3;i76am9;29 42c2k=0b<:l:0a8?jd2290/=9j5b69m51e=9m10clo50;&20ae:9l=c<72-;?h7l8;o37g?7a32c:i7>5$06g>4bh6=54i0a94?"64b82?>o6j3:1(<:k:0f8j42d2;10eo61=4e82`>h676g=5;29 42c28n0b<:l:798m72=83.:8i4>d:l20f<032c9?7>5$06g>4bh6554i3094?"64b8:?>o593:1(<:k:0f8j42d2h10e?>50;&20a<6l2d:8n4m;:k2b?6=,8>o6f=4e82`>h65$06g>7eh6?54i3;94?"64b80?>o4>3:1(<:k:3a8j42d2=10e>;50;&20a<5k2d:8n4:;:k00?6=,8>o6?m4n06`>3=4e81g>h632c8<7>5$06g>7eh6l54i3d94?"64b8a?>o5m3:1(<:k:3a8j42d2j10e?650;&20a<5k2d:8n4k;:k;`?6=,8>o65m4n06`>5=4e8;g>h6=83.:8i47c:l20f<432c3;7>5$06g>=eh6954i9494?"64b86?>o?=3:1(<:k:9a8j42d2?10e5:50;&20ao65m4n06`>==4e8;g>h65$06g>=eh6n54i6f94?"64b8g?>o0k3:1(<:k:9a8j42d2l10e:l50;&20ao65m4n06`>46<3`=26=4+15f94b826>=n?>0;6)?;d;:`?k73k3;876g86;29 42c21i0b<:l:068?l12290/=9j58b9m51e=9<10e4:50;&20a6:9j=6<72-;?h76l;o37g?7032c2>7>5$06g>=eh6<64;h;2>5<#9=n14n5a15a95<=4e8;g>h6!73l32h7c?;c;3a?>o?m3:1(<:k:9a8j42d28i07d6n:18'51b=0j1e=9m51e98m2`=83.:8i47c:l20f<6m21b;94?:%37`?>d3g;?o7?i;:mf3?6=,8>o6h84n06`>5=4e8f2>h65$06g>h6=54i8a94?"64b82?>o>j3:1(<:k:8f8j42d2;10e4o50;&20a<>l2d:8n4<;:mfg?6=,8>o6hl4n06`>5=4e8ff>h6=83.:8i4jb:l20f<432eom7>5$06g>a?h6=54oe:94?"64b82?>ic>3:1(<:k:e;8j42d2;10ci;50;&20ao6i74n06`>1=4e8g=>h676ak2;29 42c2m30b<:l:798ka7=83.:8i4k9:l20f<032eo<7>5$06g>a?h6554obd94?"64b8:?>idm3:1(<:k:e;8j42d2h10cnj50;&20ao6i74n06`>f=4e8g=>h6=83.:8i4k9:l20f5$06g>a?h6<>4;na5>5<#9=n1h45a15a954=4e8g=>h665`c583>!73l3n27c?;c;30?>id;3:1(<:k:e;8j42d28>07bm=:18'51b=l01e=9m51498k`7=83.:8i4k9:l20f<6>21di=4?:%37`?b>3g;?o7?8;:mgb?6=,8>o6i74n06`>4><3fnn6=4+15f9`<=i9=i1=454oef94?"64b82e>=hlj0;6)?;d;f:?k73k3;i76akb;29 42c2m30b<:l:0a8?jb0290/=9j5d89m51e=9m10cnm50;&20ae:9lg4<72-;?h7j6;o37g?7a32c:;;4?:%37`?70=2d:8n4?;:k231<72-;?h7?85:l20f<632c:;>4?:%37`?70=2d:8n4=;:k237<72-;?h7?85:l20f<432c=o7>5$06g>3dh6=54i7c94?"64b82?>o103:1(<:k:7`8j42d2;10e;950;&20a<1j2d:8n4<;:k52?6=,8>o6;l4n06`>1=4e85f>h676g94;29 42c2?h0b<:l:798m35=83.:8i49b:l20f<032c=>7>5$06g>3dh6554i7394?"64b8:?>o183:1(<:k:7`8j42d2h10e8h50;&20a<1j2d:8n4m;:k6`?6=,8>o6;l4n06`>f=4e85f>h657>5$06g>3dh6<>4;h7;>5<#9=n1:o5a15a954=4e85f>h665f5783>!73l3o2=3:1(<:k:7`8j42d28>07d;;:18'51b=>k1e=9m51498m25=83.:8i49b:l20f<6>21b;?4?:%37`?0e3g;?o7?8;:k45?6=,8>o6;l4n06`>4><3`=;6=4+15f92g=i9=i1=454i7d94?"64b82e>=n>l0;6)?;d;4a?k73k3;i76g9d;29 42c2?h0b<:l:0a8?l0>290/=9j56c9m51e=9m10e8k50;&20a<1j2d:8n4>e:9j16<72-;?h78m;o37g?7a32wx=9:50;32870l3;?563>638f`>;6>;0ni63>628f`>;6>:0ni63>658f`>;6>=0ni63>648f`>;6><0ni63>678f`>;6>?0ni63>668f`>;6>>0ni63>698f`>;6>10ni63>688f`>;6>00ni6s|15794?429r7:;n4i2:?227<1k27::?49a:?227<1027::?497:?227<1>27::?495:?227<1<27::?493:?227<1:27::?491:?227<1827::?4:f:?227<2l27::?4:c:?227<2j27::?4:a:?227<2127::?4:8:?227<2?27::?4:6:?227<2=27::?4:4:?227<0;27::?482:?227<0927::?480:?227<1n27::?49e:?227<1l27::?499:?227<2m27::?47d:?22727::?475:?227;27::?462:?227<>927::?460:?227127::?467:?227<>>27::?465:?227<>m27::?46c:?227<>j27::?46a:?227<6=916=;<51438940528?970?92;367>;6>:0=o63>6285e>;6>:0=463>62853>;6>:0=:63>62851>;6>:0=863>62857>;6>:0=>63>62855>;6>:0=<63>6286b>;6>:0>h63>6286g>;6>:0>n63>6286e>;6>:0>563>6286<>;6>:0>;63>62862>;6>:0>963>62860>;6>:062846>;6>:0<=63>62844>;6>:0=j63>6285a>;6>:0=h63>6285=>;6>:0>i63>628;`>;6>:03n63>628;=>;6>:03463>628;3>;6>:03:63>628;1>;6>:03863>628;7>;6>:03>63>628;5>;6>:03<63>6284a>;6>:06284g>;6>:06284e>;6>:0<563>6284<>;6>:0<;63>62842>;6>:0<963>628:0>;6>:02?63>628:6>;6>:02=63>628:4>;6>:03j63>628;a>;6>:03m63>6284b>;6>:02563>628:3>;6>:02:63>628:1>;6>:02i63>628:g>;6>:02n63>628:e>;6>:0:9=521719507<58<86<;=;<357?72;27::949c:?221<1i27::9498:?221<1?27::9496:?221<1=27::9494:?221<1;27::9492:?221<1927::9490:?221<2n27::94:d:?221<2k27::94:b:?221<2i27::94:9:?221<2027::94:7:?221<2>27::94:5:?221<2<27::9483:?221<0:27::9481:?221<0827::949f:?221<1m27::949d:?221<1127::94:e:?22127::9485:?221<><27::9463:?221<>:27::9461:?221<>827::947f:?221?27::9466:?221<>=27::946e:?221<>k27::946b:?221<>i27::94>519>532=9<;01<8;:071?871<3;>?63>6485g>;6><0=m63>6485<>;6><0=;63>64852>;6><0=963>64850>;6><0=?63>64856>;6><0==63>64854>;6><0>j63>6486`>;6><0>o63>6486f>;6><0>m63>6486=>;6><0>463>64863>;6><0>:63>64861>;6><0>863>64847>;6><0<>63>64845>;6><0<<63>6485b>;6><0=i63>6485`>;6><0=563>6486a>;6><03h63>648;f>;6><03563>648;<>;6><03;63>648;2>;6><03963>648;0>;6><03?63>648;6>;6><03=63>648;4>;6><06484`>;6><06484f>;6><06484=>;6><0<463>64843>;6><0<:63>64841>;6><02863>648:7>;6><02>63>648:5>;6><02<63>648;b>;6><03i63>648;e>;6><0648:=>;6><02;63>648:2>;6><02963>648:a>;6><02o63>648:f>;6><02m63>648215=:9??1=8?4=046>43534;=97?:3:?223<1k27::;49a:?223<1027::;497:?223<1>27::;495:?223<1<27::;493:?223<1:27::;491:?223<1827::;4:f:?223<2l27::;4:c:?223<2j27::;4:a:?223<2127::;4:8:?223<2?27::;4:6:?223<2=27::;4:4:?223<0;27::;482:?223<0927::;480:?223<1n27::;49e:?223<1l27::;499:?223<2m27::;47d:?22327::;475:?223;27::;462:?223<>927::;460:?223127::;467:?223<>>27::;465:?223<>m27::;46c:?223<>j27::;46a:?223<6=916=;851438940128?970?96;367>;6>>0=o63>6685e>;6>>0=463>66853>;6>>0=:63>66851>;6>>0=863>66857>;6>>0=>63>66855>;6>>0=<63>6686b>;6>>0>h63>6686g>;6>>0>n63>6686e>;6>>0>563>6686<>;6>>0>;63>66862>;6>>0>963>66860>;6>>066846>;6>>0<=63>66844>;6>>0=j63>6685a>;6>>0=h63>6685=>;6>>0>i63>668;`>;6>>03n63>668;=>;6>>03463>668;3>;6>>03:63>668;1>;6>>03863>668;7>;6>>03>63>668;5>;6>>03<63>6684a>;6>>06684g>;6>>06684e>;6>>0<563>6684<>;6>>0<;63>66842>;6>>0<963>668:0>;6>>02?63>668:6>;6>>02=63>668:4>;6>>03j63>668;a>;6>>03m63>6684b>;6>>02563>668:3>;6>>02:63>668:1>;6>>02i63>668:g>;6>>02n63>668:e>;6>>0:9=521759507<58<<6<;=;<353?72;27::549c:?22=<1i27::5498:?22=<1?27::5496:?22=<1=27::5494:?22=<1;27::5492:?22=<1927::5490:?22=<2n27::54:d:?22=<2k27::54:b:?22=<2i27::54:9:?22=<2027::54:7:?22=<2>27::54:5:?22=<2<27::5483:?22=<0:27::5481:?22=<0827::549f:?22=<1m27::549d:?22=<1127::54:e:?22=27::5485:?22=<><27::5463:?22=<>:27::5461:?22=<>827::547f:?22=?27::5466:?22=<>=27::546e:?22=<>k27::546b:?22=<>i27::54>519>53>=9<;01<87:071?87103;>?63>6885g>;6>00=m63>6885<>;6>00=;63>68852>;6>00=963>68850>;6>00=?63>68856>;6>00==63>68854>;6>00>j63>6886`>;6>00>o63>6886f>;6>00>m63>6886=>;6>00>463>68863>;6>00>:63>68861>;6>00>863>68847>;6>00<>63>68845>;6>00<<63>6885b>;6>00=i63>6885`>;6>00=563>6886a>;6>003h63>688;f>;6>003563>688;<>;6>003;63>688;2>;6>003963>688;0>;6>003?63>688;6>;6>003=63>688;4>;6>006884`>;6>006884f>;6>006884=>;6>00<463>68843>;6>00<:63>68841>;6>002863>688:7>;6>002>63>688:5>;6>002<63>688;b>;6>003i63>688;e>;6>00688:=>;6>002;63>688:2>;6>002963>688:a>;6>002o63>688:f>;6>002m63>688215=:9?31=8?4=04:>43534;=57?:3:p5a?=838pR;6><0h=6s|1ef94?4|V8no70?96;a2?xu6ll0;6?uQ1eg894002j;0q~?kf;296~X6lo16=;65c09~w4c62909wS?j1:?22<50;0xZ4b734;=>77i;|q2`4<72;qU=i?4=040><`7>52z\2`7=:9?>15k5rs0f0>5<5sW;o?63>648:b>{t9m>1<733m7p}>d483>7}Y9m?01<88:8d8yv7c>3:1>vP>d79>53>=1o1v17<58<869?4=047>17<58<>69?4=045>17<58<<69?4=04;>17<58<269?4}r3`3?6=:rT:o:52170931=z{8i36=4={_3`<>;6>:0<86s|1b;94?4|V8i270?94;57?xu6kh0;6?uQ1bc894022>>0q~?lb;296~X6kk16=;85759~w4ed2909wS?lc:?222<0<2wx=nj50;0xZ4ec34;=479;;|q2gc<72;qU=nh4=04:>2259z\2=1=:9?81>55217196==:9?>1>55217796==:9?<1>55217596==:9?21>55217;96==z{83j6=46{_3:e>;6>;09i63>6281a>;6>=09i63>6481a>;6>?09i63>6681a>;6>109i63>6881a>{t90h1<77t^0;a?871:38m70?93;0e?871<38m70?95;0e?871>38m70?97;0e?871038m70?99;0e?xu61j0;64uQ18a894052::01<8<:22894032::01<8::22894012::01<88:228940?2::01<86:228yv7>l3:15vP>9e9>534=;816=;=5309>532=;816=;;5309>530=;816=;95309>53>=;816=;75309~w4?b2902wS?6e:?227<4:27::>4<2:?221<4:27::84<2:?223<4:27:::4<2:?22=<4:27::44<2:p5<`=833pR<7i;<356?5434;=?7=<;<350?5434;=97=<;<352?5434;=;7=<;<354=041>62<58<86>:4=047>62<58<>6>:4=045>62<58<<6>:4=04;>62<58<26>:4}r3b5?6=1rT:m<52170970=:9?91?852176970=:9??1?852174970=:9?=1?85217:970=:9?31?85rs0c1>5<>sW;j>63>63802>;6>:08:63>65802>;6><08:63>67802>;6>>08:63>69802>;6>008:6s|18794??|V83>70?92;0:?871;38270?94;0:?871=38270?96;0:?871?38270?98;0:?87113827p}>9783><}Y90<01<8=:3c894042;k01<8;:3c894022;k01<89:3c894002;k01<87:3c8940>2;k0q~?67;29=~X61>16=;<52c9>535=:k16=;:52c9>533=:k16=;852c9>531=:k16=;652c9>53?=:k1v<76:18:[7>127::?4=d:?226<5l27::94=d:?220<5l27::;4=d:?222<5l27::54=d:?22<<5l2wx=ho50;02[7bi27::?4>779>534=9>>01<8=:050?871:3;<>63>628233=:9?91=::4=040>41434;=?7?82:?221<6??16=;:51668940328=870?94;346>;6><0:;;521779522<58<>6<9<;<351?70:27::;4>779>530=9>>01<89:050?871>3;<>63>668233=:9?=1=::4=044>41434;=;7?82:?22=<6??16=;651668940?28=870?98;346>;6>00:;;5217;9522<58<26<9<;<35=?70:2wx=ok50;0xZ4db34;=>7;<;|q2fc<72;qU=oh4=040>0552z\2g5=:9?>19>5rs0a2>5<5sW;h=63>64867>{t9j81<73?87p}>c283>7}Y9j901<88:418yv7d<3:1>vP>c59>53>==:1v27::44:3:p5=3=833pR<6:;<356?7>34;=?7?6;<350?7>34;=97?6;<352?7>34;=;7?6;<3534;=57?6;|q24`<58<864`<58<>64`<58<<64`<58<26=52176965=:9??1>=52174965=:9?=1>=5217:965=:9?31>=5rs0:g>5<>sW;3h63>63815>;6>:09=63>65815>;6><09=63>67815>;6>>09=63>69815>;6>009=6s|19g94??|V82n70?92;01?871;38970?94;01?871=38970?96;01?871?38970?98;01?87113897p}>8g83><}Y91l01<8=:31894042;901<8;:31894022;901<89:31894002;901<87:318940>2;90q~?60;29=~X61916=;<5259>535=:=16=;:5259>533=:=16=;85259>531=:=16=;65259>53?=:=1v<7>:18:[7>927::?4=5:?226<5=27::94=5:?220<5=27::;4=5:?222<5=27::54=5:?22<<5=2wx=4<50;;xZ4?534;=>7<9;<357?4134;=87<9;<351?4134;=:7<9;<353?4134;=47<9;<35=?413ty:5>4?:8y]5<5<58<96?94=040>71<5871<58<=6?94=044>71<58<36?94=04:>7159z\2<3=:9?81=l5217195d=:9?>1=l5217795d=:9?<1=l5217595d=:9?21=l5217;95d=z{82<6=46{_3;3>;6>;0:n63>6282f>;6>=0:n63>6482f>;6>?0:n63>6682f>;6>10:n63>6882f>{t9121<77t^0:;?871:3;h70?93;3`?871<3;h70?95;3`?871>3;h70?97;3`?87103;h70?99;3`?xu60h0;64uQ19c8940528o01<8<:0g8940328o01<8::0g8940128o01<88:0g8940?28o01<86:0g8yv7b03:1>;6>;0::h52170953b<58<86<9>;<357?71n27::>4>6d9>535=9?n01<8;:052?871<3;=j63>65822`=:9?>1=;j4=046>41634;=97?9f:?220<6>l16=;;517f8940128=:70?96;35b>;6>?0::h52174953b<58<<6<9>;<353?71n27:::4>6d9>531=9?n01<87:052?87103;=j63>69822`=:9?21=;j4=04:>41634;=57?9f:?22<<6>l16=;7517f8yxh1;>0;66`9~j35>290:wE?9a:m26g=83;pD<8n;|l57g<728qC=;o4}o40g?6=9rB::l5rn71g>5<6sA;=m6sa62g94?7|@84}O9?k0qc8;0;295~N6>h1vb;:>:182M71i2we:9<50;3xL40f3td=8>4?:0yK53g51zJ22d=zf?>>6=4>{I35e>{i>=<1<7?tH04b?xh1<>0;66`9~j32>290:wE?9a:m21g=83;pD<8n;|l50g<728qC=;o4}o47g?6=9rB::l5rn76g>5<6sA;=m6sa65g94?7|@84}O9?k0qc8:0;295~N6>h1vb;;>:182M71i2we:8<50;3xL40f3td=9>4?:0yK53g87>51zJ22d=zf??>6=4>{I35e>{i><<1<7?tH04b?xh1=>0;66`9~j33>290:wE?9a:m20g=83;pD<8n;|l51g<728qC=;o4}o46g?6=9rB::l5rn77g>5<6sA;=m6sa64g94?7|@84}O9?k0qc890;295~N6>h1vb;8>:182M71i2we:;<50;3xL40f3td=:>4?:0yK53g51zJ22d=zf?<>6=4>{I35e>{i>?<1<7?tH04b?xh1>>0;66`9~j30>290:wE?9a:m23g=83;pD<8n;|l52g<728qC=;o4}o45g?6=9rB::l5rn74g>5<6sA;=m6sa67g94?7|@84}O9?k0qc880;295~N6>h1vb;9>:182M71i2we::<50;3xL40f3td=;>4?:0yK53g51zJ22d=zf?=>6=4>{I35e>{i>><1<7?tH04b?xh1?>0;66`9~yx{GHJq=no4614ff203zHIHp(-80!<74012345678=:0<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;8=5?0123456789:;<=>?01:7456789:;<=>?0123456789:;<=><0723456689:;;H>;0:2345678;235;:=59362665=9>M9K890B260ACCKH8;ON99C863?56789:;45>?AB32@031:?>99K2G4EB16<89:;==>?41214577898;<=>7012BA@1709:345>L87326735;=?I?;M?05:;76D4<91;<=??23G@5566=L8=?:68F6G6<4CA0:L;:?<6;0E;@544389I?<6>?05632GB18H:9?LL?62F7A0?1>LK?=LO696D6E1?ENJH;:89N9611@7>BJ18:;H:?;12045G?L883JL;>71014B53>M>2257898;>97?052;556?1;>:>9>70837456789:9D;88;;O8L333705=781;9J9>7CB46445491?99>?M056;4546L089JJ>;7=>LC724=<75

>=M?81735746?883=5>704:35=E40H8923;=3D41LN999>401F:<=14?KHI89M;1502447?K?=8N=M>BED42F2>1;8=J:6IF53B4D@0ION8?=6N41934CBA;K3I4IK:B64F=2@?L:8MC1KHI:5KN3836B345=O38>NONFEC74>6689:?:;>95606<667:92=<<>701260F6A:MO3?:?NC1234D?78:O;>96;0B5@4=2739;394;959232<>2988GF=G55;L9>OH9<89F47F0B?H?;H=JJ661:G25FK=:0<H6M0626G=3??M>M;I=9C940<<1EL:;;>LO962@;5=0123<56709:?<=>;0121452789:?<=>=01236567:9:;4=?;0:21454?892;<=;=4@210D2F:1>99?:;6363457789;;==:=01231141=J=N<;>?0163?54589:;<=>?012345>78=:;<9>=3@F7=3?>?KHMJ598B9:5A@@6>OIM>?7IA1;2F16<8;834L6?4731E7G7I8:9M9?7CCFEFD32<=3299?961D;5721<9;:<<>>271207>><91;>9:=802501>2:=K=>9O;A3676043:<89<;>>09224024K9:;89O>04610562M9:?<6>=7053G0BEKJ8I:LJ82C:F0FED1=NJM<=6D9@B21C4;1>8?::=6D5E622DK12J?::?;10@57D6::=3?88KE3A66526KH=J??>L50G3@2EF1O?O9:;874F63CB0=MNMHK9:F52847C?89;J9=JKDCC00=1EJ?KN4=>819J41F50=?382:8MI>?24D3@06>N?9988?I7CF03600KO:IH4L89973E2B?8H>;7==L10071@C49L93I;JJF33;6D3374100::940523456789:;?01030367:=:;<=>?4193056509:;<=>?01234061:>>98=>?01274>6381:;>=<;00274=>5<92;<=5MM?==8K;0131A@048J9I>NJM2B30E22739>9><8J0335G=3E00;9>8>M7074@0?2=HNH<;MM697AFC609K>345:>080741758=>?8?>61103<14398:?>=:>09:10473<?>48?=33:034>6:31F4EC?2<8;>98J=62@;GD>1I1LMLN5KMMD2F@6D2>>>L?5?MKD4C;BCDC11?6L0263?503::M?BG;:54D??9H244M:92134=?FI=I3<;;NB0@25455:89NI=HK822;516<8?KIO8574AAA30K?NMIO>9NMJ<;=017FG2E6>JH?<6>9E4CG2F>?:12954>N41F1=6@BL9LB305GAG7;::O;O?79C170125MJ9>I>:?;14E2375L>=;<5>681C74A4>;OOH<;7I17AA6403KH:8?N;<9G4:F610<8KNJNK>DC0G05=7?K=3H>6?00DF22C2>JIN?47KE24G3ABEL?32H8MIC4@5@2G6<;;HI=8IE52GF3C382:

>795341679J>>5><9202@G@67K?KM;=9M85674F56;K;;N5M;D01A6F0B8?>;7=6=C9;2G20F<1>><48<05C3@=37:92;O?:8N:=N<6C@:04F54?=32>9>409;;4547>1:9846727;2E3E7<1295?=>0C6056EB0>LMOI;<28C50G170JKH48=<4193=675LHIN:?>957GBB72C=>I;4KHM15F1<<06;MI8>=6<811A<1BD>=;>JI;JDB274>6>;L;:::==57@053?D9;83846?E80B4626<8O;;5<:06:34C>689:;5N:?3B24<32739K;=KJL7GG1GG@7;1K==IKN5GAF6F77K1L89KLI81A31DDAN=H=5>;=86@260C?L=:0J=<5>?1123553389>9<=4:08?I4<;28A3=4B6>>2;:N??053BB64CLL;8M;86982712B711IH>KK;0:2AF524<=:;49<=335A56?4K=985;O630@;G=E??;86222=7>99:O98;826E46B4>=N35@00D7C<91;I:6:23@B6=75K8>>8L;?2DF2E0?DJM==M==;744E1202LO=>98H:7456B2@2?OL?<6>IF93EBC1ANKLMHKHIBGDEA4@A892=J>?;1@CA256208:J<8O>587B<<5A1M2>55:?;023A5G0:8;88?JI03;6<521003NIOK9E5;26:97181EB6B0NOKIM5>?0528557DK9:98L8L33231FEE;83;45:=203541B?J:8===?>19@60G7?0JH?H8>=F4D305=68;H?<=K7016@05GC>L>==9:9622;EGE09??JM89?61C0E251I823MOL<01034D7382;;8>6>35G05F4?89:?<=L>8501GD07NJ>9O4M?3G252601MJHIN=??B12A452?8>>;7833064DF<;9M;JO?9>E91F4364<8KN9K6?>93?9>4103E<66A11?:=5:>001440>?I9L8898A;B@@FILLN;;7K419267>C18I89?7>5507456789KJ<=67F71216G?IM2:N4::C95;=C66K1<>85J>2BG74>75L>?;8E:25775M0K884MM20;30<27389;I=?84E6EF12E:J:O;L7?7621E22?L9HJ9=H7F@7772GDL:H88>M<511:B12C9=:0=>??B12B0?4B460@620;:?<=>>1115116699;945C7130A<>H?>O9>8863G:672C?9L2M8M<75@7@4EFJ1NM9?9>4:37>LHW]]0JHI\N<0194;7338>1EC^ZT;CG@WD;9:0;2<:4158JJUSS2hno~l2>3;2=05=6:;K>N<:6C4;;E346N1:H>9J=140:574?0=>N;K=8=6977D545@319LJM87M49:@3;7<8=0E3B25G>88:29I?=A1;47G?2M;:3?5>?121356>>=89==488855G07?790;;M9>417;;4=678;:;<9>>01234565N133:H=8646G@C@?0L8;4;><83F@4=?C4MLB263<30C98?70I82?=>;7327715B3J;EB274A1AI9H>=NJ;812;542738=J>9J=C715AA43?1H>MH?L98F74206J8O85@624>489>9<9<97723676F8?;J<=:792G2@36>99MH;;0:3;<391;3O<=79E72FAGD==3:4<7?2435116<90H?O?MJ674317E7>8398;M;B3071AC7:K>;<4>?0521457B99?:8<>705035@?5<91:5O7;67G5@2D2:>?=94<;256A65E2LH89N;>K20@5466C10<;:47J1003=3?>>9>?<6?N2876724C=8:JO?89A4671421M;=;<=>=0B114CGB99>55274D77:9:OO;:?;0C61D37K:938O;;9C47G6>61;::8=J;01:341658K;:5I:735A2450389:;<;>?15285D?3I;>38<:LE113476A:9=IJ=:?A14B7A@>1:NNM>6=3500B162:0>J9?>>444605=6IH;H>96K281255EE1<;?88?>7E;A2DG289L=9=87B9A@15>EL9::49H7513A446382;I5NK=D@1574?1LJ8;<=9IF4760CE1;883:IM817@30=5?98402M?>;704AEGF@FJ>8>H;77FC2;41B7@B505KH6:4@7:FACBMH:M954;FFG5191;:=57:CC@BGFDDL<;9N8H?4192GN0ON9:;J2@0A=4B2><3MO<=>CD174>7C:OIJ4IMM42A6700EIL<84867C221<3>DM8;==NOLAEDFB20>>O2H?LO72DA22C2738N<;9>>A1A3GF@2LLON9;?I7G5F2=EEM>8N85K:71@302E0?;IIMNM<36704=6B;=:0=H?JDC@@340C<=N95<?8=5>EDC0265BNLK39;J?5CC:2=E6J:I879:G@<3C9?H3J4?;DEFEG6CB=J<259;;0:03645>099O?=>?B3G365?CJ0;;=<8?99;B1<71;1;;<9<7CEG4@7G0;92O630675<65:8:8HKH86654216<:9I<:I8<63;21431I><<=>=>CD4635760?8N94:J47C5@1;O9H;:?D645<3?4<919=;8K73F@172??9I?>?LMFGF7<5>F?9;=N=67DD1345D?=:2;<>=9C9G:=3>D90K?<6<>74A4F=?D<1IHO4?9D54E=672LONNOOK;3D7E46B0L;=M5:K?9D6445GF>0>>9?:?;33B05??:J:?:I<=C022032?<:>>OLH8BB:13;HLM752864B>LJ>=:?7MB255A<1A:J=IJ5MLMHHJ569B3@A@@17:O=:N>6NEB4:05=5:<;J:=9=512;EDG7=??2=N:?01@A0=E7JJ82N5><4@200567:>H38:86B403@<73828?O4<>BC1077BD>?N2O<9?6C4@1<649;3=?4O;7?;?8141476F8;>2<4>?08066527:=3:<56?6@114C61BG67>LIHO9>427DBB@5EM::OJLH8B8G4E0@AM==2;>?;D@C2G4351JNIJKK6D86FF47F1O<3H9JI41913716K;2?>=K;7C:GAF13?:2MO>KKF8DA@16BK93MO:L;D2C2023EM=98;=;IB4D74>40;9K9:>JMCBCBE=>09;8?>O=ME5;BE054003;>?7M38321=E0:?HH;HL;EBA066273;=2>47<8C:F55348;?;4:9N48;;@5BA89:?48<>24A14FG?L=8<556>E5314=D6<=:0>4=N122@=56AJH>NM:>K2CC11G53;J?I?;;=8=701621<2181:2>I7LB83:606689K8;IJN383:E425?O<=<48;0:0B5<7B89?84KM7A4230551I0?2MNL8A540@75B<83NM=8M7563435?==?>M:?=5163?7E7=LL>8L=L0G5E1C66?L:8J86?0254GF@1M=38O5:J8G75017?;8:3;>9?A1:7<16<:MK=9N<;73@;61@680HH94:L252265?D88K;I87731236F14J:3=O;>>5C:6E404<919I9=96567<@@A902<>;:7DCC@A@BE??O9:9=6BBAFB7BAJO<=887;B16EFDC0:H2?<6?0@:72467=9:N49KN1920F=D7?K32I>>>>5::?;3GA4G530J:I:?=<761:F4DD?:;2>>7=580@<1C4?K=JO<:>CGG51@C0>M28OO>735286C5>0;I6AE6B777>>1:<:96N25;6EA@>0ON9N<;J616A17@6:OHIO5?>C87005=480;2<=8?4134=653<;9>597>FCCA26@40=H;5H8?5@13E503829:>96924;1G5EC8O:;0101;7>?:51041402=O<;<:>J6C0@15071:<2:6099;O9>4304757E319:M:98N37404706LH:2?=;?65E6B34GF=?29N?7M13906?OIX\^1HDO33083:44<;;0BB][[:EKA867=87;87><5OTVSQQ112906?IR\Y__6IAM<2394;273:8NI9MLCDA@21@0M?899KM69DA50F5E>MN9EBFG556>M=:0?967492555G>9H2>=H6;FG2;3=5A08KNM8?N;K8A6:55D63I>;9MLH=9DDA@6?4?;=M=K=IC3CA5@0DN<=:889;0:17EGCE1MLJM96:3833G44:8093@E1738;O3I;;;79503C14JK<95LOJ2D63?63601=>;LM:A50GAG379OO;==;7636:EF7BI?:O<5H;275G6=24??9HJN7>91A3116<;<8HH8=92A@1FEA9JK:?47;EE0:@62F<918958>A12B2475I8>3=LH>A42B2563I9?95<8=7304BC6?:;3I4:=79D2;54?F:1K?<6=:987F7DBA1L:I:8?62C2G7GB8>NM98;?0610?8:O;6931;6E25A?KO<89K9HIN48JEG3505=4>L:>85J95GD:573F???MKLI=5:7L15GA6=B3829;8L:H4K67@:E72>>08KINK6K7C4A302>K:>;7>99E432641B89H=>9O;6CC1A1ED99H<>4M<27D455@54394AE52BN0=J?K6:50FB@87N02G@BC3FJ1;I=N=>DGFBA46689??8K6L4190=GEBN?HM8I<<520:1222=O;H4=?>540752?C=0I?O9;<4ED46<0>18;?:NK=44274>5FJ8L2<=9M8@5E6<51L8<9?9H6BG;A2GGEL=2MOH9;055@5@140J?I?==J807AE2273:KH45:M1D4:5576;?23665C4701>HOO7LD320G426<98J9LJ=92A0FDDF1=:0?LK925A:0<551;=2>9J=0107GA040H::O58=010074?1>;N3:817560DD;8=52:5LNC96204E>8H3H>6B@10@BEJ=N9::K>1656B@BC>H8MIO=;0:1A=D@79==IHO9831@7A47C1M;:O9;<7689C@@AD6?K>O4<672D63?6D>LMLN8K6?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?01234567<918O?;>313EF7EF<?::31:;<07498;2=<;L640A61?4:<888=I:=:3G;03=06<3I?9:?;2A423C1;MH=85?LB2;AG=E1019:O:<;6212<3ED9KKN5I8?8@7GAC6AN;;2O?6L15287A5DN8HN4N6;DE@34531=12;M:99E4A3A456>?O?5K:810;B0FG6;8;HJ49M977F05=4LH;85=>2OH47KAG@44AC6I83M?KL8DC1A<@@5>:9;<:894B@2=:<;??557361038J>;7>JKBG6;A6?A9HO2JN>N7BC@6G229<23>598D96G043D?H:;H4?J86D63@?2J?:NJ9>43G3AB221NKLMO>;641974G0D91:;<;6?092260E0==::MHM;4D:@44G?L=:O=9?=B37B4<@0>9:I26D067F3E3>;>J>O>?374GJ8LBG;@F=273=8;<=>?0503456789:;<=>?01234=6789:;<=>?0123456789:;<=>?01204563<=:08?>?432345239J>??N>L3B230=6791LH?59L7B23456789=N=5>?39134567:9>38=5;2170=G20>L9;9O6=01G73A@FIL2O9I?K0607@FE4NM=9O9H7DD77274F9MN:NL9;0:675D6DK9<3M=6=3G:52=G78?8:N:96DD16B@E78=:><986F26;23GBM><=;9=K8B63?134NMI9><7L237F077E;;:;48O7FCDG4F259:?I=;:;8ED@670B80H88>6N752@716<H5?<;2127A5GB0<;3I=>>D007E20509;;=<;K22A04105NJ:;M=?;A002763?<91?:5=715457CD>993=5I?K623B=04E;1;I;K8<5@10BA5?L3:ML78B662=<3F;K924>IM=08F54@?2LKI;5;J6A1345D75L:?LBMJ88=5JMF2A7347??8H8NN>;05G@0042:H>39?=;A74005=3?K8JJK;M86CB63GANMN8=:JJDBDA@C@B9H:HMI=M59:43AB5N?>388LK5C077AGBL;H9857M301B70E28;?9MKJ?FG@42CCA;=88?8HIF011BA?5NO>;797>5B:7@3E57=9937GD>FHN?=2@7E4463;:;;;9>448;G3GB?>?;2IH;:75AG62E?8M92J:?J641E@F@6J:<=;>9=32AAF<>C9L=I?>>I4197=C57<;743C26G429?:O:I761D4@6IOH?O;:;01776427I:>9K85A25>2=AGZ^X7JFP@>0>58692>1EC^ZT;FJTG:4294:<6:5IORVP?QBI591<3??;58JJUSS2^OI0>4?>0080?IR\Y__6IA_A=194;753=0DYY^ZT;FLTG:4294?<6:N3D73LJJ;K;<25;0667>09:;==:?;5@455E>LJ3?4K>9002GB57C01:H89:;BD:;1161:M;;HI7:M;C5280G15K923;KN?9:>9363B6E79>:N<=?K6BG41C63?M5O6000A=GB>?8?8MO><8DD55=1382>I559N79CF5G@?89:>IK=80B247<509L:O?H;LF0G02214;;9<;79M<82:504C><9<9?LJI29A@E42EKJ:<==:L100AGF?7;;I?4H7=54;7GG>?>H<;89>44B1@01;9=>JL902:=F73?=>2<<8=0167G=65LH>:84894197GD40::?9;?>MCE;34D0C?0HMH4J?587FG5B7<=KIO5ML29G:E@?3>L9O>=>?A5G74>2B1:LO?N?=39DEECDC?ONM9;9IA9DFB543N:9JJI=NACA5F462MH2;>:4?8<2=ON;I=M4CA62F4>I=:08HJ;AD0A5337L;;NMKK?1D53=JI??:82G276>2N1<>8=5;EG;B@=10:>I?5NHJ7B7GA<25J>8JO:H9D85GA4>>:9=<;KJKED;FF476:;K?I<6;0:716=4?:1:;<=;=4@310D2F?L>J9?9J4@332577>9=H?5>?3B21116?NL8?<=>?0163?040KJN?=4;=5@F1=DD0L:=9O=L:6@C3E502N1HOO4>:35473=621LI3>5>>9325<16<=;3<588:805251BB=>5:;A45E3<3?0>9MO9L=54A;E@331KNO=L68407G157?<91>?:B==92?O?J30G42761:<=<:49K56G;0324<9>9=>>882243>70=:3<=<67B126=43<;99:I>?8E3E6636I13MJI9L1528107>902H487?01230575IOL?JO>90224G<4EJ>99>==MFEDFBC@ANONMJK68FBDE05=2=K?>9N<=79334567I;>3<9J8D8:FF<>18;=8?5?7A003=1@7J??:9=<=CC63454382?=>;78876B4@E17E:;8?O56K8575G4BEN;:OO?>N676:322DJ8;I:47<3365A<141J3249>457;:2<431?9>5O6J66C4A22C1H:MO8>;C965135?KO=?M46641962C?ALOO7D:02G?0?1:?<=M803517CG?M>I30:MJ19D2<2G6LL>OMLLJA85:26C4I>K2:O6M7B@@4<3EMK=HI98=75F:EC273<=<998609;E41E1::O:5>?8B5:5B334K8I9>NO943AG2=3D99ON8:KKD74@=:09:971D;23=>7<=8:?H>6121:<=0A;:=O<;?=C@472FB30OI>4HK87DFG3@EBK=<=8=5:873:52?61:>?M9875BA3=<6?>;K:=><;780F337E>M>:O=HLC1:08:=L<;0:7:7<@D<>I2?>K>B1CFB44FK1>?99MN46@34D0EMJ??:=<;5563?0?1KM2I8O;98@6GB@@4LKL344:1552EN1N=N8J70C@0=16<=0HHIKHMB7:B2C@2:0H8N=J62853446EJK5OJ8F9FF=CDA:>K=9IK:257AAGE0LHK;M:>KB6074G6C9:<::4J87E47=D5>MK>?<6;6F95;BF@2>13MOKKI35@E@04AI;>9>L;9A2A256271O=3=>>?7G:G2G3A09LN5I:?;4CGBD@1?;<849965@5513D0=:N9?;7M9D@61<3EIH=9>=?=DG:GGCDA97BE6A@F>?;1L2H?9M540105=2JN=39N=K?676F56GB;4D;32D6382?IJH;LE942E76A?8O3<><617C4KJ??:8?7473667C3M8>255JK55@@4@27J?>;78K>396@=6?58H;=O4L997046AC0I;3?4OK7AGG;56779=45D0A5D5B9?2=5H?K36@@A<61J18M8=?LBE653370LK9?H4K?C92A1@0B99:=?HM;4196B?665A14560NO?<99HL623B=2B3N0924;M<0BD106?3>;?=95JJ9@574>3ANL=;38:5G177;09>>>8M6D4F54D><9OM8;O7FB25A3>0:H<2>4J:0EAGF2273?:>5H=<2B125046M??9>4>>840G0=2E<;9J556>6B;A63G70J39?;6J9G:31043==:0:=;K52C6G<32L?:49>FE3;3125I?:MN=:;56:63GCDK:;98=59095E49=I5C61GDBC1=?>MILK33:@564618;;HH?;0:43E74>J02>8I=K<00@B@3G>>1:9N89>9352@03C=L38JHK:327FB16<>:<91=?4=?3@G6720A>?>H;<<:620@5<238JOHH89;0B54<1?C1:=?;?L=0374=<03N?:?<68I8MFC0A<23><:92>4MJC35F7CB0?=;95?O;A4CE4717;JL?I>:?;71EG<5BL08HM9JL60@3535>;82248M78G222=6B;9=H8?=>1B2261178K83NK7M452820@1:>K:9H??56CGA@1E1L8<=?<91A4A=@09<2==5?;E16G05=1>;LM9IH6CC333GD5;H92IK9M94G4724589>?4ILKC0:E=F6CM9OM?:7MF5;7<50382<=94?N34CG@70E>K=N?>MN57G:E1121LLJ;H87F8:BA2EB1<:<;8;L75A7754?>H>;7;8LB710F650>MI=>8JN8@2;13E31992>O989D3AE16?0LNI8L8LDC;A@10CKJ:I>9>46666=C7F0J998=HJ4D4B6=10230AB6:;8:>?674195<4G78HL3H58;D9@A2A4F80;=O5O6B373E20E0H3<;K6=E9DGBGC10O2N0F085KJD9476C449=:0:OOK13DGBG35?LL?J59I4@00AF74KKI;>;C0110522J0LH8=59C72349H2=NJ;0:4@EC@5>;8I4I;>8G40G3648=8?=56ID27434>>?9N99L=?CE2474C2;;NI>>>?2E63?3ECML=?:5871E4@74C310;HM>9<6D;BGG12;8OH:I6MBBF7161608::IL<:D6;1316<>L>8:H8;4BD5G=B?>O;98IO=6BG:F30B:O>=NO:96D0@A50?>?;I8O>:F10E3A67<91=IH:7A0AB21570?:OI;?<141550EFN=I3H<7>016@A>N?<68I6EDEB7?DJ>:MJI<:A4;GBC@BL>H8J:K7B5AF2C@A;LL2OHM9B@G63DDANOINI;j46rn{=qw`9=>&>9>471234567;9:3>=>;A05;45>50O:2L30:@A447888:;?<76234=744<8K9M<<741945404=0>HIN;762D3B001:=?LA@G74>16IH9>MK68D@G6=CGEJM=OILH7705E6G15N=83J8K<7D7G2@749<=I54MMD3F47G?D?=:0;8L84G@:EC1D9H>2>4;=F6GFED6B?JL2JOKKD1DA02CBNMIH?:=;B935B632K0;88=5862A41CG6LK;;;O695D7A:63GE32?EM9:;598;0:557AB0IHLNII=I4@F7AD1318KOI;H>4D4GFDBC8O:2?9:F163?20?892;?012127201:;;<5?>F51AG672I?:;8=;=6630=7D3?OOI;K;KC82F216>;=<:K6C2;67>EKJ<2?KL>2BG@GFB54;>99566EF@D18:I=?:>426567D1<91<;;L;2@7EA=6EJO6M5BF@09=8E662<6C6:=:;OO:?;6:07=57K>H9O:OIB9C;@764K:;9?=8KA1G46326NOH2?I96B4G@41@39K:M85283=>?>>8OO476B6272D06M?:3==O8426715C4L:9N?>>I333B5=C?I88;H9K8;?>:7C7:GC?>8H<;>=L774A32@1D=:HOJ4O61G:E40>382=IN<8KDC;5F2>3=:=:O>>M54FA=3E?N?OI8O::3361BC0F?I?>;7:LMD6D4=C@B8HH3JN=<74:G5F76<1BD5=C@ALO<9IIJ=37D@2D64=1LJ>9>47B556@46LK8?40EA@35DD:93?<5>?4194GD?0>OO?45J>07;G2=1F>O;O:5O80G14GDGF;?=J;9MMB61G7D0ANK>I=H6K4C574>1DJKII>NL<85@G4A?5MM;;9I>916:62@>7<=;:>9L<1EG6D89;=<:HJE74;<<273>N8:=J?H:;;M803;G6E49K;2:N<91EC;1D3B9=:0;I6L4B7:7<0189NH0>?;=97?010AEA5?888N>=8=0E762D448K;<8=58D9AGG5749J>?8:77F163@F669?O9O9=<6C2223771H;>H9L9:O;=M65A026BDM>;J4;?L151;6@408OI;>597C663?2BF=O>J49;7A8665672J?2:MIO6AC2G26460MLI;:J<341@77>4?L3>8;>;B8F:<16KO:N=NJ;3CC4ECE09?3;BE@:@A6AKJ=NOH??6200<160<91?LL?2866GDD6N8=H=9<=8923<51489>?<69JE3;5A=??>L=;>::8;8B@;0ACE?M=2?:H675D37=B?;18<8K:?;6DA5@05>>?M;N=I5LM<>621:2@5E6M<=::IH?9BDFAF65:M2;<8<6E0C;05=0NJ2>?HICE@3A5?EL;23>56M06:A0DB5:9H=JL7<4BD55=1382=MJ?7L982@=@01:>9HO:6?403:6A6481;HO;K<:59305D1?J1>;75>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<9>48123456789:;?0123456589:;<=>?0123456789:;<=>?0123456789:;<=>?419;456789:?>9K;26G00543:8298>:8C0A74>>78=:;>=9J4@2;5=47<9>;J8?:=4@31132731:;895<=:9<9>?25C26146:=8;8=:;01:741470=8;M9O;2507E443:=:04=>7016307218=8?8=N4@07072F9;?J8=5701:765278=8;89<O8O:KOM;0::33@1B99:;9?9?19030527?L>J=?;=13614=6?<9:38=:=09614D2F<;>98L?=5@63?=77:92;<9<;46A706E7K:I??4GA2<6>00>2?<9>8A12442E7:=28177003A8KKII?==D3CB456?9=88O=LLCD3F214D<913=H>723:0<7B2<98=:<8B;BE23018=M58M843::<4G5>==?<66>F2353=73>1=HNI873D77@122=0B2164G3<1N;O4:?;907=423IK?9OHJ64323E547:H239<>?85F:7=G48H9?9<I2528<6019;9JM5>6AC13F11>?>?<=N;K711:3D?4K>88==8K0@0@60209=9>5IM8C8G205=?<>8?M?:>234GF1>71J3J=<>?DD4B26??=L<925C3=147<0;<24C@G<0>J;OJI<>N155;@=01NH<=DB4G4C>7??>;75;=86:5424>K>=I:N87C@GB7554I?O38I8825;A1<2D<9=I?4M98C6@5F?0NMOMO9>4873E:=7;6E;1@4E7K>L;8;O=44@6<1?DJ>?:JK?:B85EGA37JJ=I48<;419;234D1>HH>H6K3GDGF70C::O3;OHK96G570G1=?:HJI7>1M1KNO=M>=:I5D@E@D06:OKAB4345?588=9==7>1@43<4BDK=3<5?:;136;50>?<=:045?<30GG3DE3MON84IHNCE@A660019:;9:?6ADC1BDCDKO:O=?8N31C13005K?;I8=5780@04=770=?N:I?7630FG?31;;2D2A8?>?:=?=27234D4A8;:H8==;0::;7=5?>=3N=9:=A2C2B26DI0:28L;ND5C66A31K<=K9?=>61463?=>2;>K3=>?3HNL>?A@;B067>=?K8OH886@;G3G37L1>M?KHIFGA7ED@0<9135L:K42:5361>IK23CI=H8M4>93@2A776A>?;L7E@D:GGD>K>N95?6?5626E<55>1?I:L=>1030345>8K8?N0@C0A24?0O>I<586F@7F355C9HO:;N>JC355F7GAJ>>L8FEGF3G?DK>9>JNMJ92G0EF7FIHK=5=?2C4337E1;M>;75M9AB;61D>F>8>;8??:72G756EA=H2;ML?;37F;F1E49H8JN?8K2@42G@>4<;>3N9>48BC0G@?A:=HNJL7J2C@:@=?E<;9H??9L8D264473<9;J:?HKCE0311C6>?I;<=;I419;G@DDJ82>K0HO8H;NE467@@G0M0:O=58M9G101C55::2<;LOK55374>>DN8>J>56JAD1AB@67NK8ON9;?81F7E06D=18=?L=M38:G@07FJ0II98:JC@C4F72731NH:L>9917311E?K:8@;51<6>JH>>:=>?443006529=:04HJ97G44ED01J9<<8NJ=41624C06;>:;N5JIE6D;<61A01LM88<8JK;:417F056EIMLN9OHIFGDE456789:;<:?=>N6E@342?5NOH:>KKI252034@>N83;JO>?7C63?<43K8:NJLH<;9?9:L60CGA3@6=HH=;K=<5@71145AK1?JJLKJE963416<1=9?ONO<4BA:E4EE9OKJON;917:334CFK8;8J8<95E7E2D22I933H;>;A90315>D<9128;9KA7A7<5C1L83HIHO7443@ACG?0ON<=M4:HN821EFA73?L3?<67:54CEFGB4ILHMOLLIBCGG3D3D=OO2NI>J6@;2G3C0>8:;8?865DGA4=B?01;I=I:?;87G66G7M83:IOM=126A<65C=:N8;H:=B1735=4?1H;;?=>N19:F743DM02=8=H:4528=0BB?9=<;5L>7B003<>3?H88MH8M8C@35C51N:L?8L6>63752A?AJ8?OI:ML82D405=>>=?;N::J94C;25@A;L>88N8:F0136C;20C6DM1=;O<==3264E1C3823=:>D>>93>8?718;41AD?9=<;::=?1D2@4710J?>;74863D1FBC>AJO;MOHKIBBD4GC?EI?I8;;:?DED4BCC191=I=4OLF1::@1E7;1L=:9>497;5<107KH9845O?3DAA00@5K=H<>374FG624=?;IOK6<345E<=44>>;85>L=79A74>?0;OOO>H7MEE@B022E?9H:>?4464<725<=>;8=:?06G741>70H>;<8:;82:4A020K=:0549>6C:@FDC>=:N;::?=66477A6105;8987773B4=37>93?=;>;0:;B6<46MM:B71@<L?IA1064531;;K;ON>70523@7>7<912OIMNDBD:4@1EL12:>8LLE625FC0C8=KJNKM>C122535CK?OMJ:HK33137557;9:?<67KD871F7?78:N<;;9MA4:2E3>EK=;H>O?9AE4FF01A9M:?4NJ;E5475<6C:8;C>A;:OMO>8>A528=@4CJJHM:?:68@55==>4L>8:4576257@@4>FM=3M<<:9505767CB<>?O9?>?28GG05=>N9;9<<>783;165D5;9L?88;?820@5545=::HO<=L4B13@=42?A0;75703823MI?J>F3570642;M?38==:76A;44GB::9<=K>?282B52C6K=K?;7L>LC56@G<2B:?>2>979FF<53C11OH49>4A1F;A60F0=N>O;?=8431<=22:8?M4K6720A04=C4>183?I6J2C61==?D8=K3N8?<419B5473>?I284=N2@5@E747<8:98<:LC6;;FC6BMJ8258O;8066<5DC8>?3986:EE;74>G6JJO8?LJ=D9@F05G3MLJ5D36=C@CLLH9JOKLAD@;3GDDK=8741621AG0N5I<>3BCF7753J::3I<7909CB7=4281>?8=5N2D7B21D5<8>;?85;;4@63?D37<92??49:;8467E16?;2J:57KA0CF3=D1J=>HI9H;A5GB1D45<91J9I=>B94B47>?L;3HI?KNAGD;2D0F1O9;<=>723;0A3DE==L;:;77EBAA5?:O?<6O706A0E4768;;:MKMN2@376C6EI083=88K1501152408>8H>=6E5G142?A:02?5>:?;@:AGAE5>?<>9<6:CB6645>E;0OMH6>8;?J4=J1D5B6D40K>8H;>:6F528EKL9JINH8BD04G56789:J4LLN94065G571H<;N4JKC0;FG6C418>>4NLM52AB05=FI9KJM?28=8H7C0A5B@E3NLNIHK<=CC030=4382KJ4LON33C1G6>79;HMIO:6235;GA40><;MH4?MDD666@CA8<9N;7LONC5:36G1390:MN=>8C1A365060?KMO4A@CG2G0FN:<:58JN625@2@@F;L9=I5HJ96DB47CD:?OI8;?68@F;@DB?K8;9:=OI419BF3GF;1?<4OJ:5BG@=DG50929O?6:B9A365768=284LJ:03C@536D9:I<<;GC=>?:NI:=9C6E24560=8<9;>LE2;G0<4>19::?KJ=133;5503M;LMJ=>6FC;:3G>19:CG@WG;99427LJKR@>25;?c9B@ATF4891<374AEFQE974611JHI\N<0<;?DBCZH69255NDEPB868?3HNO^L2;>99B@ATF4<437LJKR@>5:==FLMXJ0:07;@FGVD:?611JHI\N<8<;?DBCZK6;245NDEPA846912KOH_L310<:?DBCZK6:>3l4AEFQF97429427LJKRC>27;>GCL[H78364AEFQF93902KOH_L36?:8EABUJ5=546OKDS@?<;>II;LN8B01E5>30999>8O?847BFGDD=;2I=IJ>23@661G?L:9H=?>614174>GBK=28;N986NDE21B0273HL<>K89DB452G5>I?N=:KJ659GG=GE1L>?3H8KL25FEAGG1<1=:H;L76E14@C7CN=:0MKK:9D;2FC76<0228=O?956:=3B3?LO3H:K>=9MM10:74@630;2384M9201:65269?9H<=6?8E446753:;L;<58M:DG4E4@?F1OLMNH?9D2DEF@>5K8O;<8?I1D254A3382H84K;;EC;3=4GB;:8;>=?JE2;6EA0419894?O?30AF7@>0KJ3;>4;;A@721A3C>K>;7O:M14GA<<22><;A1H=9N9>4B4F7=@G>L>:8:L::A@;F<26E0L2;=;9=0B5@7465IL399?8=4803<13?<0>9H?>6419A251B>;>?54=?0D6GB3B>=JH=>K8=FC56055B<9:NJOMD1=>>39IMK63C@4305K1I;<8JKE66:0F?DI89JMH==35@A4@C6J>:3M?=N2G6;EF273K<62535G260=2:=:87325:G=25:8:9H=>>BC62BG>5<1:=;>>>E0236F04>=:0N:;:D0AAB5BDN?LO8=LJEB35ADD3I?N::5=6C8:@F@?CJK>9JN86FC53=C>B?0328=5MA50;5622;OL?IIL90B4AB=BE>L8=;OM:6B@5=GDDM?9=ONMM3C0A0G77;JI?:I;;0:@B24779:;:<<67555:=0D681HI>IOJ77D7E6G7L02388H625:A@CG3=L;;OL:?3@63?GEDN83NIK<69672G<7>K0I:?N8IB8GG347FK=NJ;I7;7BA4=@?E>:88IK8LE705716F>0K?O5>>001:0=D1<91III<J>=:4>867876@20EN9IH<=6723576AG3=K23?57>92FBB5?3:=??<6LIF17EFA0FL1IJ:?M9CCG77GBENM32I4KM6EF461B5;08H89:LHL34@F@G0291>;8;8;01F7F6E7N1=?<6M?BDF6BGB4?0L2<9O;1CCEF3DB8K>E>J;=M?:?;B30A2E1<9L8:9;?9331E@?DK8>95;K<0EGB7530J:?H:9?863AG45B38MKIO?9;7528G42C=:45@101E5J>IM;C4;0=F2D:MNIH==<=2D31FDDD1K3?8:A@;;4D478;295L>:290B6DG382I:59K<58:025GAJ99:M<860G6560DE>;28:>L;C82B056B;H:?HLO80EC3GF50??>;7N?IFG@00=119>HN>9HK78735AC7=O;J?9?M88G@<7@C=>:9949ID94526?D8MO;49>4C30;E7628==;5?;J28C01A>C8?8?>:?=CE06G<439133>=:K84C455?3?J2;>=?<419@66G?L8=;OHJ680::5731I;I:H4L<1B2E41658;;;?4>?E7551<11813ON5JJ17G74>E5;K3O=>>LA5;;5=?6;M9J>N?IBG52G0D7K>=??>8I911@221C1><:44J68BC262273J>H<56M1@;A61DBJ9;<4N:K6B3;G6E2N>8I<:O=8140211DK==9==<9D9A454>1<=:0O8K;=79FB445>>M:3<=M?054740E7>O>=:IJ>8B6G@202=JN?8=5L54;611?FK?><4:688G7@A42D>?>HJ4KM0BFBBCDFJLL:I5=<59145G?BL0N<=33A:20E>:J;35=44??3363?F02;H:>==O>B12@73GD01:>4NOL134F51C611NMN=9J80A0AF7299HI<5H7F972G16;?;5K<554;256E88K2?=6=C71G@514IL>:4<6;456:G5>C0M?=N=JLC9:2607D<91H;9:ID12F5D1A1L3MNKK;765E@06FJM;:J=K:7GD7<5>?8;83>?>?89:B65GF01:?<6M8C45E4=268?LI?O6M1D64035D8923H05D17F7?8;89M=ON23C16=>5I;:9M=:?;B5F5G459LK:O:L4G1:65661H9>MH5:6975FGAF4C;9ONIIO88G7E6D7CML<=0:H?9JO;>40F51476M?I3HL>NDC4@AF078J374A65BDKM>;7NOJ31@:B@0FI;3MJK8I73FB36BAM=LLLMN9>4CC1F14>><1;;8=:=F96E5=27<9;;=5:?6954@=67I9:;<=H:1306=267=MK?8>9D0@0@27:18:5N=7C321G<5?9K:68A1A1B3L?:I::>LE2574>EE??LJN<96E842=GE0M>O2O4HK813@B=1CJH;NM979E90:@1C1:1<:I8?87753=2310=>M5OJ73@6G5@0JH2;J01FBAF5789;28L;=B92@2505>;:2>I6;A033617789:;<<:?01334547892;8=5LC9244761J18?9LM=41214235MKI9NHH<89>I><8BA;36529H8:N?=638C:5<>88A;016C<9IO8=:92563?FB5M8KM=9M<04666<1F18HNH>OJADDE>K?M8KM70CA5F4G5=<3?5?K618:F07=DM=:0OH<>FGG3@7450<8==?M8A95FKK253402440=KM8=5LE5@5116>L?L;;4J808C62F5?LJ9IOHH?757:E171MK>N4K=K72A@342A<:98MKK;0:AF24>BMMIMN>7<72:23=E3??I8:NL91G52751A>1:8J;98567426BE:M2H?N=3=:;LL10@0<160?35I;I275BB@6?>J2MII;KE53GB@@A8;=OJIHI7GDABG@C<91HJ<==HI8KBG1BNMO;;J1EF4FC5EM:8I84M<9600626D>9>I=5:K1863B4D5I9>?94LJB1:;230><:HI?5?=;BJFGNYKAJOE_HQ[YQG7?FJL8?1H@F?7079@HN408<1H@FEKCM\h7NBDDW]GMSOCM<1H@FHW8:AOOC^60930OBCBIUVF@42L8L1CG4254>:<2<;:KI235B1D2;=522:=K;:4:61657A304N=2?<6J>94F40=?78J82HK9I3931<5G>?:2HHN=MF4@AB<50L:K?H47LE3C@GA?0KLL9O::?;E0E<252>==8=86<9DD5B3>4K?><;>HL72650A3AM:??5>8K51:17D3CILHNNILLC528@3D>?J2=HK9K9CGGBG?>M:HK9=8E414L<;HN891076AF?B09L3OHK958D2=FE2==H9O;9L32GGGAG1;KKO597E8:459?AD;@6G@40J>;7I9K76GE1@4D>M=9>=LJ65@0G3C>MO89MKJICB:340E5NOLMM>OM9@F2EA@D8HLN;9>4D851234D8M9:I>:J62@05F@D>LH?N>;N68@53A>2<13N:?KN98::=D?3N?2;O931@B5=628?9>HH9KCC30FL:HI;K?8EA72656I:?9J:?9E2A`?AGSIV]BHYFPAb9GEQGX_@N_DRL;0:FA03>71M;>H<6:F9:3=74>J8?;H=;L81:2522DI?;;3;<8M90563?AEE<;O3I:9=13C6<=258<;J<:6?0633=D6C0;:::;L780276367:1>?<>?;316;616?14:31G74IJ:95=>?1DD;6374?L>NN588C90;@<10?OLM8:L991134=BC<91OH;K931A21716M=2HM5>>99:511@E=9;O9>7<380FA202K8OH58M>E5F;2C7?I03>8E5AF2D049>L:?;EFAF2D58>OMM<9?99G333>309;IH9;924C02GD1:;8;9=8J163;=4?1L2M<:LID23G15018K;NNC7246G@F?038548NB6FG6C5BM=:;55:;CB;G2F@>M<28MHM;8@71B7?13MCJ0=08;EKB8469?2NBM1?>>69GMD:6:7=0HDO312<4?AOF48>5;6JFA=36:2=CAH6::394DHC?52803MCJ0<617:FJE97>6?1OEL2>>69GMD:587=0HDO320<4?AOF4;85;6JFA=00:2=CAH698394DHC?60803MCJ0?817:FJE9406>1OEL2=8?58@LG;:04=7IGN<3<4?AOF4::556JFA=12>5803MCJ0>?16:FJE959>2NBM1:16:FJE939>2NBM1816:FJE919>2NBM1616:FJE9?9>2NBN1>17:FJF9776>1OEO2>1?58@LD;9;4<7IGM<01=3>BNJ5;?2:5KIC>21;169GMG:617<0HDL31?58@LD;:94<7IGM<33=3>BNJ5892:5KIC>17;1908;EKA8739?2NBN1<9>69GMG:5?7=0HDL329<4?AOE4;35:6JFB=0=3>BNJ59;245KIC>05?69?2NBN1=>>79GMG:46?1OEO2;>79GMG:26?1OEO29>79GMG:06?1OEO27>79GMG:>6>1OE]O30?58@LVF484<7IG_A=0==>BNXH686=08;EKSE959?2NB\O2?>69GMUD;97=0HD^M<3<:?AOWJ591<394DHRA86813MEJ0=08;EMB8469?2NDM1?>>69GKD:6:7=0HBO312<4?AIF48>5;6J@A=36:2=CGH6::394DNC?52803MEJ0<617:FLE97>6?1OCL2>>69GKD:587=0HBO320<4?AIF4;85;6J@A=00:2=CGH698394DNC?60803MEJ0?817:FLE9406>1OCL2=8?58@JG;:04=7IAN<3<4?AIF4::556J@A=12>5803MEJ0>?16:FLE959>2NDM1:16:FLE939>2NDM1816:FLE919>2NDM1616:FLE9?9?2NDMR\JG79GKG:76>1OCO2>0?58@JD;984<7IAM<00=3>BHJ5;82:5KOC>20;169GKG:607=0HBL318<5?AIE484<7IAM<32=3>BHJ58:2:5KOC>16;1>08;EMA8729?2NDN1<:>69GKG:5>7=0HBL326<4?AIE4;25;6J@B=0::3=CGK692:5KOC>04;?69GKG:497<0HBL33?48@JD;<7<0HBL35?48@JD;>7<0HBL37?48@JD;07<0HBL39?58@JDXZLM<7IA_A=2=3>BHXH6:2:5KOQC?6;?4?>69GKUG;;7=0HB^M<1<4?AIWJ5;5;6J@PC>1:<=CGYH7?7>17:FLTG:46=:0I=7;8934G1?1M0NN4HO>F9:E271E?=<;==8990A@0041LJHHOKN8=5J11D;F=E68999?:HI96@117C5KK>M>:LN083EFA678;N:M;?;0:G26330:><>>N6I0B616GG?K;2J6M9:?<>JKD9:77G4C0LH2>4J?D963?@4>?A9=::8L6B@G25139OI:;58;3@:66A2F:H:=>:M989F:40D?0;?98H?61D5:14CF<91N?>MM56:GAG@FNHOOJI;<0EG;BD7>1;:<>K=>B035212E91I<>K7I45322F1>IML?<6K7IB515G0DE?08=H:HIF11FB2>0NO?=?N=IEG5;3<7>I193?I:?;D72@162KHL<KC@A;642E:H>90B7:7765K1H::9M7D528A34>JML2?I9I5C7AEC?5NKKI8:9J9C121AD2I:;;OKOLC663I<>?N?O?M>940B@465<8;;<<9;FD2701C1?9=O4=O?99F;1=3382O<:?D0=;O:9L836275C@101;8N<:6A53674G7I?;9JO?;AD0F1G2>L=>;7H7?C9G0B8==3MI6M39:E=1>>9J3=;>O:0CA0611?M928<::956G;A5CF=:HNI9>4E8;5=115I1;I4>?>306717>A0:;JM;M<233F561D9L3H::>J27:3><9;84?6K419FE1E>9;?=4=>89;;4535JOCE10<88?;L943@454>0O8=M56;C2CFB5BEN<92H=:J875FF3@E1<=N4<9L222GB@273LI9M=6>56105F0DK9O8<56;256:53G7LL8=H9J=25774<7519>;8L:62135<=1B:=:0IHM79174=@?2L2?>?>4LLJ7BC02@@1?H=;J;O774:A@D62:M?I8=5JF22057G0;:9>K8K73F;@4?C=?NO;;9;0:GE7425J039;OKNF8;AGCD7>?9:5K;MDG0FBCD69?2=:=9N72@F=FD?=JL=IN;=D163?@@C=03>:>:?51F7GCCD9?4>>;092G=AB7I;O2596:92:0416;N:K?LC9D4BF2A9L>3;88M0EAG<@B1L9I87H@N3:GMFg=BFVXXX_OB_@`8AKYU[]XJARL;0:D34557IONI;K<=E7:@FDG3L0HN;;=9:=2@0B0133JHIJ9L6KC863?C6F80I?;K<OME7353@3AL:J>8;K00;2G3>2<91M=L6LCGA3G2G6=KN2I:M=545@F56EN;?38H?9A@F27A1BLK?99L6:ACD:4F66;?N?<6H=5D35G=1D=M:8<5KJC40@44729=HIO<=NF@336=?588A6:07DC3;=<24?=85528B16E09:MNL?:9C4GFG4>><<9OO8=21GEF@?>L;=<:LK:545E402382L=?;7:73A0FG>FI8338L6K13D433C5:=OHIHL=1G;4BFB1K9IM=:O?45G@6GDA8<>;7K895876F1C5K?9OMN>?79466A779;:2<=<68G5FA6>7808?8?OID523F@E3;J:;?9>4F62;54C6?M2H;>H>D8@FB2@0M18NJLK9C3F1@G46:?:;8I6>C@44@DED;=>M:9;7419E3A5D>JI3O:6;1@@7=FE2;1O3M:@0N;8O>KK>51;A@C>7M?NO;O9>74@45F02;8I8M58ME8D2@2G1ION>JKL8A25B25273O=M;KJKFGGGBC0AN>LMIHHIEGGEG1C29LI;456749G2B763>:>D=<>>;><;E80G7AGB18N<>4OL77@AEA2D>LOHM::KAC7FA28O;;:97I2012=46>:9284:8;1003F6059;>3<>H;0:DB0C?618?H:LM6D9744F4>:O;;496>88;32440JJHN<;HIE80GECD3IHLI>9>K8978BDJTM=:0JOL6EC6340?7L>L2?4HI5@53E7??9>NH>NM=9C44=G4C?8>=NI<>D55FB50A?M?N8=5IBGDFBC64NOO;JKHMF@DF4C@?8>2:;?KHMFGDEFC@AJOL;JKM;0:DG1FD7?KE6:3=C7>??N;HI=914A2@71C:ML>5;LIE663?CBCNOLMJKHIFGDEBC1ANKLMJOHKC1C5@GC1N1IMJOL8FD5B75>M?C103BCCB8?<>95;60D:;6A3E<91MJ9JJBG@GAG50>ML=4I;JEE@6AG2C=HH>N>7844F42FB?IMI>5NL<0B:BE65B9KK6E:@BG@60>;IH46JE6472725>?>NN?K<39@G45??;1<8;<:?;GD4@FEBN=::5;M739351=B?0=:;8>L>18@;2D21:===:86>0D01466788>:=9L=B2250D>3J==?>I:74071BG0698;89ID5D;AA35=>N;I4L701512G03>J2J4H;?13D42A@382LMHKHI6GDEFA@ALOLM9:HI7G5EF2@EJMLIHKHKBGD4O>;7KHKFGDG30@6<<8?;K>4FGDEBC@ANOLMJKHIFGD4FC@ANOLMJKHIFGDEBC@ANOLMJKHICG;EBC@AMOLMJ5?I419EBC@ANOLMJKHIFGDEBC@ANOLMJKHIFGDEBC@D:<::5N<;41;441?D:K8OO5J63B674>@ANOLMJKHIFGDEBC@ANOLMJKHIFGDEBC@ANOI?9==;43A7B<7480884HMM240337273OLMJKHIFGDEBC@ANOLMJKHIFGDEBC@ANOLMJI>>0E02=0??:188>?8KEE2B@CEE0=:0JKHIFGDEBC@ANOLMJKHIFGDEBC@ANOLMJKHID9;7@7?E1M9JONLN3G04@;0:DEBC@ANOLMJKHIFGDEBC@ANOLMJKHIFGDEBCC?0=:H?=8@CB716=032002>A9?:M8?H6A142B@23<91MJKHIFGDEBC@ANOLMJKHIFGDEBC@ANOLMJKHIFGDEBC@ANOLMJKHIFGDEBC@ANOL:7J=4GOF;?LHN\YU;<55FNHVS[57?3@DBX]Q?299JJLRWW9937D@FTQ]30==NF@^[S=;7;HLJPUY7>11BBDZ__154?LHN\V:;;6GAIU]352=NF@^T;7:KMMQY7=>1BBDZP0758MKOSW9=<7D@FT^2;3>OIA]U;5:5FNHV\4D11BBDZP1758MKOSW8=<7D@FT^3;3>OIA]U:5:5FNHV\5D1D69JJLRX9L=0ECG[_0D4?LHN\V8;;6GAIU]152=NF@^T>?94IOKW[7503@DBXR<;7:KMMQY5=>1BBDZP2758MKOSW;=<7D@FT^0;3>OIA]U95:5FNHV\6D11BBDZP3758MKOSW:=<7D@FT^1;3>OIA]U85:5FNHV\7D1L8;HLJPZ5D?2CEEYQHHFL;<7B^[ILKYAZVUADC_E[K\_OE@5>Vd3Y$9<<=>001\H1=WI[^j7]GA_CWPMA^e3YCESO[\N@OF2>VTLFDNm6\NMC35FRCU>2XNKNKN6:PFCFCE<2XXXL:4RRVA3>TT\]S[Ih5]SU]SVLIUA]STMh5]SU]SVLIUA]STNVceey }al-PT+UNEYFNS]\FM0:-vdk0;2_;#u}{_cnh[hcjWnoeio{os-djdrn~lhfk#`nthtf[gjlWdofSjka/wcoma(d{}x$~lcconrX6X(uid$y#~8Piokw*wgj'ZZ%_DC_LD]SVLK60'xja:=4U1-{wqYedbUfi`Qheogqeqiu'ndjxdxjble-jdrn~lUi`fQbel]dak)qieco"n}{r.pbiiihxR9V"ob.s-p2Zoia}$ym`!\P/QJIUJBWYXBA<6!r`o47>S7'qySobd_lgn[bcim{kc!hn`vjr`djo'djxdxj_cnh[hcjWnoe#{ocie,`wqt(zhggcb~T4\,qeh(u'z90Y=!wsu]ahnYjmdUlick}aumq+bhf|`|nn`i!n`vjr`YedbUfi`Qheo-ueioc&jy~"|nmmmlt^3Z&{kf"!|6^kmmq(uid%X\#]FMQNF[UTNE82%~lc83:W3+}usWkf`S`kb_fgmawgsg{%lblzfvd`nc+hf|`|nSobd_lgn[bci'kgei lsup,vdkkgfzP:P }al,q+v0Xagc"ob/RR-WLKWDLU[^DC>8/pbi25<]9%syQmlj]nahY`mgoymya}/flbplpbjdm%blzfvd]ahnYjmdUlic!yamkg*fusz&xjaaa`pZ5^*wgj&{%x:Rgaiu,qeh)TX'YBA]BJ_QPJI4>)zhgh7X]JR^TJWLDKM:1]ON74VHGT[Q_WM?1\IL2?>79TAD:66?1\IL2=>99TAD:4294=7ZKN<2<5?RCE494=7ZKM<0<5?RCE4;437ZKM<283:3=PMK682o5XRHVF[COU[]i0[_G[E^OL@@YFk2]YEYKPMNFF[G7c3QCGECV"XE@#4+7'[]_I,= > @Q@ML019:cg`wg;99427ljkr`>25;?c9b`atf4891<374aefqe974611jhi|n<0<;?dbczh69255ndepb868?3hno~l2;>99b`atf4<437ljkr`>5:==flmxj0:07;`fgvd:?611jhi|n<8<5?goilli:46lck^ofiZabfVmnbh|fc^appw`<64bmi\i`kXoldT|gb_vkgpmY4911i`fQbel]dakYwz`gT{dj{h^62<>dkcVgnaRijn^rqmhYpam~cS8?7;cnh[hcjWnoeS}|fm^uj`qnX>820naePmdo\c`hXx{cfSzgkti]45==edbUfi`Qheo]svlkX`ndR6=2:`ooZkbeVmnbR~}il]tvdvwm{Ux:Rgaiu]267=edbUfi`Qheo]svlkX{k{|h|Ps7]jjlrX:;80naePmdo\c`hXx{cfSz|npqgq[v0XagcS><=;cnh[hcjWnoeS}|fm^uqeuvbzVy=Sd`ft^616>dkcVgnaRijn^rqmhYpzhz{iQ|6^kmmqY2:;1i`fQbel]dakYwz`gT{opdp\w3Ynf`~T:?<4bmi\i`kXoldT|gb_vpbtucuWza3kf`S`kb_fgm[qiw991i`fQbel]dakYq?V99o6lck^ofiZabfV|"/Xhnjj}&DG[O+Kh`jr`vlv%73&>;?7obd_lgn[bciW=T?Rv|t018fimXelgTec~zt^`okfm6<2hggRcjm^mvpussWkfdof:4cmib<>bh}}k7<364dnwwe97902ndyyo32?:8`jssi59546j`uuc?0;>7k0hb{{a=594;>@Z)uajkyhb!_rn{fgqit'ozlm"twpq20+lvdg{oThd| tlr,[fa($jUnbllce^11flrXimnyi~}20-a\bdkndp7x|l|{ao4/gZnf{VkseRgk=1.`[mgtWldj1="l_icp[`he59&hSeo|_hliafrbz{7; nQgar]nahYh}}z~xR|jgr]b95*dWakxS`kb_nwwtprXzlmxSo3?,b]kevYj}qUdyy~zt^pfcvYf59&hSeo|_lw{[jssx|~T~hi|_c?3(fYoizUyijmja<2/gZnf{Vxnknkm=1.`[mgtW{ym0>#c^jbwZtt|k7; nQgar]pkcrbkjUbb}{{_sgdwZg:8%iTdl}PsndwafeXg|~{yyQ}efq\f86+kVceeyQiimg>FigicZ~yeci#c^kmmqYaaeoTblcj=smn*hoa$jUbbdzn_wco95*dW`dbxoQyam?3(fYnf}oyjlmj_u{sa86+kVfdmiQfnhv\bljb58&hS`kb_u{sa85+kVg~tR~fpdnjj`Yt|hmn0>#c^rqmhYsqyo6=!mPrdcg[acw|aUj1<8<85.`[wcflVnn|yfPb<357=2+kVxnmiQxievk[d;?$jUyiljPwhfwlZd:0%iT~~zPpsklvlr~Wh7HI!mPrrv\twohz`~rSo3LE-a\vvrX|pzn1^WAC-a\vvruidUj1="l_sqwvdkXj4:'oR}fm^alhiotafdToeklk"t}|BCt3273IJs?4?5F;695~U6l0089o4<2382761f?<09>o:={o16=?7k<97<=b6`8W6702:2m6=4>325b30<5:k=m7^?k7;1;b?6=9:9b4180;6<4>{R3g=?52j399>7?<36c41?45j>30zY=<3;295?7=90qX=i7534`9774=9:9"4<=08=45Y34:96~s49h0:7x=>b;28y!55;3l=7o=61;2952:=;%10=?5>92P:5o4={559564=u-9>:7=71:&2g6<41:1/=i653808 657281/??h534a8m605290/??;53738j6432910e>8?:18'773=;?;0b><;:098m63a290/??;53738j6432;10e>;j:18'773=;?;0b><;:298m60e290/??;53738j6432=10e>8n:18'773=;?;0b><;:498m60>290/??;53738j6432?10e>87:18'773=;?;0b><;:698m600290/??;53738j6432110e>89:18'773=;?;0b><;:898m602290/??;53738j6432h10e>8;:18'773=;?;0b><;:c98m604290/??;53738j6432j10e>;k:18'773=;?;0b><;:e98m6>22900c>6j:18'773=;1n0b><;:198k6>d290/??;539f8j6432810c>6m:18'773=;1n0b><;:398k6>f290/??;539f8j6432:10c>66:18'773=;1n0b><;:598k6>?290/??;539f8j6432<10c>68:18'773=;1n0b><;:798k6>1290/??;539f8j6432>10n>;::182>5<7s-9857=;3:J016=O;=80c><>:188yg52<3:1=7>50z&07<<5kk1C?8=4H261?j4di3:17pl<4083>ge=83:p(>=6:204?M52;2B88?5U18`9g~222=<1mk4m3;`3>g2=j8053828j4c3281e=h;51:l11g<73g84$3c3>7d43-8j=76=#:jl1?6*=d180?!4c9390(?j=:29'6a5=;2.9h94>3b9'6a3=::1/>i8512`8 7b02ho0(?j7:00g?!4c13;>m6*=d`82=6=#:mh1=?:4$3f`>gd<,;no69l4$3ff>00<,;nm6>94$3g3>4473-8n=7;?;%0f6?143-8n?7=m;%0f0?523-8n97=l;%0f2?343-8n;794$3g;>42<,;o26hj52e9'6`c=j2.9ik4>b29'6c6=n:1/>k?5609'6c4=9hh0(?h<:024?!4a<3oj7)"5n?0<56*=f682=c=#:o21n:5+2g;921=#:ok1=l74$3da>0?<,;lh646d3-8mi7l6;%0eb?><,::;6869'755=9;k0(>>;:030?!57=3n97)=?6;78 66028ko7)=?8;af?!5713lh7)=?a;0:?!57j3;h7)=?c;0`2>"48m09o45+31g96f?<,::m6?m6;%124?4d12.8=<4<;%126?76?2.8=>465:&051<53-9:97<4$235>67a3-99o7=<8:&06a<6jk1/??k51c`8 656282i7)=<2;100>"4;<097)=<6;08 6372:>m7)=:1;17b>o4:10;66g>c`83>>o51o0;66g<2c83>>o6ko0;66g<2883>>o4:h0;66g=9d83>>o5;=0;6)==5;007>h4:=0;76g=3383>!55=388?6`<2582?>o5;80;6)==5;007>h4:=0976g=3183>!55=388?6`<2580?>o4<00;6)==5;17<>h4:=0;76g<4683>!55=39?46`<2582?>o4h4:=0976g<4483>!55=39?46`<2580?>i5=:0;6)==5;066>h4:=0;76a=5083>!55=38>>6`<2582?>i5h4:=0976a=4d83>!55=38>>6`<2580?>i5h4:=0?76a=4b83>!55=38>>6`<2586?>i5h4:=0=76a=4`83>!55=38>>6`<2584?>i5<00;6)==5;066>h4:=0376a=4983>!55=38>>6`<258:?>i5<>0;6)==5;066>h4:=0j76a=4783>!55=38>>6`<258a?>i5<=0;6)==5;066>h4:=0h76a=4283>!55=38>>6`<258g?>i5<;0;6)==5;066>h4:=0n76a=4083>!55=38>>6`<258e?>i5<90;6)==5;066>h4:=0:<65`22d94?"4:<099?5a336954=6?;=;o110?7432e9?n4?:%111?42:2d8>94>4:9l66d=83.8>84=539m772=9<10c?;n:18'773=:<80b><;:048?j4213:1(><::371?k55<3;<76a=5983>!55=38>>6`<2582<>=h:<=1<7*<248117=i;;>1=454o375>5<#;;?1>8<4n207>4g<3f8>97>5$206>7353g9987?m;:m111<72-9997<:2:l061<6k21d>8>50;&060<5=;1e??:51e98k722290/??;52408j64328o07b<o6>l0;6)==5;35`>h4:=0;76g>6b83>!55=3;=h6`<2582?>o6>k0;6)==5;35`>h4:=0976g>6`83>!55=3;=h6`<2580?>o6?>0;6)==5;35`>h4:=0?76g>7783>!55=3;=h6`<2586?>o6?<0;6)==5;35`>h4:=0=76g>7583>!55=3;=h6`<2584?>o6?:0;6)==5;35`>h4:=0376g>7383>!55=3;=h6`<258:?>o6?80;6)==5;35`>h4:=0j76g>7183>!55=3;=h6`<258a?>o6>o0;6)==5;35`>h4:=0h76g>6883>!55=3;=h6`<258g?>o6?m0;6)==5;34g>h4:=0;76g>7c83>!55=3;o6?h0;6)==5;34g>h4:=0976g>7883>!55=3;o60?0;6)==5;34g>h4:=0?76g>8483>!55=3;o60=0;6)==5;34g>h4:=0=76g>8283>!55=3;o60;0;6)==5;34g>h4:=0376g>8083>!55=3;o6090;6)==5;34g>h4:=0j76g>7g83>!55=3;o6?l0;6)==5;34g>h4:=0h76g>7983>!55=3;o5:10;6)==5;013>h4:=0;76g=2783>!55=389;6`<2582?>o5:=0;6)==5;013>h4:=0976g=2283>!55=389;6`<2580?>o5:;0;6)==5;013>h4:=0?76g=2083>!55=389;6`<2586?>o5:90;6)==5;013>h4:=0=76g=1g83>!55=389;6`<2584?>o59l0;6)==5;013>h4:=0376g=1e83>!55=389;6`<258:?>o59j0;6)==5;013>h4:=0j76g=1c83>!55=389;6`<258a?>o5900;6)==5;013>h4:=0h76g=1983>!55=389;6`<258g?>o59>0;6)==5;013>h4:=0n76g=1783>!55=389;6`<258e?>o59<0;6)==5;013>h4:=0:<65f20694?"4:<09>:5a336954=6?<8;o110?7432c9=<4?:%111?45?2d8>94>4:9j646=83.8>84=269m772=9<10e?<;:048?l45m3:1(><::304?k55<3;<76g=2e83>!55=389;6`<2582<>=n:;i1<7*<248162=i;;>1=454i30a>5<#;;?1>?94n207>4g<3`89m7>5$206>7403g9987?m;:k16<<72-9997<=7:l061<6k21b>?;50;&060<5:>1e??:51e98m77f290/??;52358j64328o07di50;0;6)==5;0;5>h4:=0;76a=8183>!55=383=6`<2582?>i5?o0;6)==5;0;5>h4:=0976a=7d83>!55=383=6`<2580?>o5;00;6)==5;00<>h4:=0;76g=3683>!55=38846`<2582?>o5;?0;6)==5;00<>h4:=0976g=3483>!55=38846`<2580?>i50>0;6)==5;0;2>h4:=0;76a=8483>!55=383:6`<2582?>i50=0;6)==5;0;2>h4:=0976a=8283>!55=383:6`<2580?>i5?<0;6)==5;040>h4:=0;76a=7283>!55=38<86`<2582?>i5?80;6)==5;040>h4:=0976a=7183>!55=38<86`<2580?>i5>o0;6)==5;040>h4:=0?76a=6d83>!55=38<86`<2586?>i5>m0;6)==5;040>h4:=0=76a=6b83>!55=38<86`<2584?>i5>k0;6)==5;040>h4:=0376a=6`83>!55=38<86`<258:?>i5>00;6)==5;040>h4:=0j76a=6983>!55=38<86`<258a?>i5>?0;6)==5;040>h4:=0h76a=6483>!55=38<86`<258g?>i5>=0;6)==5;040>h4:=0n76a=6283>!55=38<86`<258e?>i5>;0;6)==5;040>h4:=0:<65`27394?"4:<09;95a336954=6?9;;o110?7432e99h4?:%111?40<2d8>94>4:9l60b=83.8>84=759m772=9<10c?9l:18'773=:>>0b><;:048?j40j3:1(><::357?k55<3;<76a=7`83>!55=38<86`<2582<>=h:>31<7*<248131=i;;>1=454o35;>5<#;;?1>::4n207>4g<3f8<;7>5$206>7133g9987?m;:m133<72-9997<84:l061<6k21d>:<50;&060<5?=1e??:51e98k700290/??;52668j64328o07b<:c;29 6422;=?7c==4;3e?>o4h4:=0;76g<4b83>!55=39?h6`<2582?>o4h4:=0976g<4`83>!55=39?h6`<2580?>o58>0;6)==5;032>h4:=0;76g=0483>!55=38;:6`<2582?>o58:0;6)==5;032>h4:=0976g=0383>!55=38;:6`<2580?>o5880;6)==5;032>h4:=0?76g=0183>!55=38;:6`<2586?>o6no0;6)==5;032>h4:=0=76g>fd83>!55=38;:6`<2584?>o6nm0;6)==5;032>h4:=0376g>fb83>!55=38;:6`<258:?>o6nk0;6)==5;032>h4:=0j76g>f`83>!55=38;:6`<258a?>o6n10;6)==5;032>h4:=0h76g>f683>!55=38;:6`<258g?>o6n?0;6)==5;032>h4:=0n76g>f483>!55=38;:6`<258e?>o6n=0;6)==5;032>h4:=0:<65f1g194?"4:<09<;5a336954=6?>9;o110?7432c:j=4?:%111?47>2d8>94>4:9j5``=83.8>84=079m772=9<10e?>j:18'773=:9<0b><;:048?l47l3:1(><::325?k55<3;<76g=0b83>!55=38;:6`<2582<>=n:9h1<7*<248143=i;;>1=454i32b>5<#;;?1>=84n207>4g<3`8;57>5$206>7613g9987?m;:k14=<72-9997=:50;&060<58?1e??:51e98m4`>290/??;52148j64328o07d?je;29 6422;:=7c==4;3e?>{e;=:1<7ll:183!541399;6F<529K714d`=j:0i<7l;:c393`<0l3=m6o<57b8~ 6472:3;7c?j4;38j4c2281e>8l50:l13a<73-8j<7nm53:&1ga<43-8hi7=4$3ae>6=#:m:1?6*=d080?!4c:390(?j<:29'6a2=:k=0(?j::3a3?!4c>3;2=6*=d682f4=#:m21nl5+2e;95<4<,;nj6<:;;%0gf?4e3-8oo7089'6a`=101/>h>51038 7c62<;0(?k=:02b?!4b;3?i7)4$3gb>4?23-8nn7?=b:&1af<6jl1/>hj5889'6`c=:81/>hh5b49'6c6=?=1/>k?59`9'6c4=:0n0(?h<:8:8 7`32?30(?h::3`b?!4a>3o=7)ae<,;lh6?1/?=>51`78 66628hm7)=?2;54?!57;383h6*<058257=#;9?1h85+31492>"48>0:mn5+31:9gc=#;931i55+31c96d=#;9h1=<5+31a96f3<,::o6?m6;%13a?4d12.8?>:0d8 67528;h7)=>3;c2?!56<380(>?::39'740=;8l0(>6533-9897<4$215>7=#;<:1?9h4$272>62a3`9947>5;h3`e?6=3`82j7>5;h11f?6=3`;hj7>5;h11=?6=3`99m7>5;h0:a?6=3`8887>5$206>7543g9987>4;h006?6=,:8>6?=<;o110?7<3`88=7>5$206>7543g9987<4;h004?6=,:8>6?=<;o110?5<3`9?57>5$206>62?3g9987>4;h173?6=,:8>6>:7;o110?7<3`9?:7>5$206>62?3g9987<4;h171?6=,:8>6>:7;o110?5<3f8>?7>5$206>7353g9987>4;n065?6=,:8>6?;=;o110?7<3f8?j7>5$206>7353g9987<4;n07a?6=,:8>6?;=;o110?5<3f8?h7>5$206>7353g9987:4;n07g?6=,:8>6?;=;o110?3<3f8?n7>5$206>7353g998784;n07e?6=,:8>6?;=;o110?1<3f8?57>5$206>7353g998764;n076?;=;o110??<3f8?;7>5$206>7353g9987o4;n072?6=,:8>6?;=;o110?d<3f8?87>5$206>7353g9987m4;n077?6=,:8>6?;=;o110?b<3f8?>7>5$206>7353g9987k4;n075?6=,:8>6?;=;o110?`<3f8?<7>5$206>7353g9987??;:m17c<72-9997<:2:l061<6921d>>k50;&060<5=;1e??:51398k75c290/??;52408j64328907b<i5;k0;6)==5;066>h4:=0:965`24c94?"4:<099?5a336953=6?;=;o110?7?32e99:4?:%111?42:2d8>94>9:9l600=83.8>84=539m772=9h10c?;::18'773=:<80b><;:0`8?j42<3:1(><::371?k55<3;h76a=5183>!55=38>>6`<2582`>=h:=?1<7*<248117=i;;>1=h54o31b>5<#;;?1>8<4n207>4`<3`;=i7>5$206>40c3g9987>4;h35g?6=,:8>6<8k;o110?7<3`;=n7>5$206>40c3g9987<4;h35e?6=,:8>6<8k;o110?5<3`;<;7>5$206>40c3g9987:4;h342?6=,:8>6<8k;o110?3<3`;<97>5$206>40c3g998784;h340?6=,:8>6<8k;o110?1<3`;5$206>40c3g998764;h346?6=,:8>6<8k;o110??<3`;<=7>5$206>40c3g9987o4;h344?6=,:8>6<8k;o110?d<3`;=j7>5$206>40c3g9987m4;h35=?6=,:8>6<8k;o110?b<3`;5$206>41d3g9987>4;h34f?6=,:8>6<9l;o110?7<3`;5$206>41d3g9987<4;h34=?6=,:8>6<9l;o110?5<3`;3:7>5$206>41d3g9987:4;h3;1?6=,:8>6<9l;o110?3<3`;387>5$206>41d3g998784;h3;7?6=,:8>6<9l;o110?1<3`;3>7>5$206>41d3g998764;h3;5?6=,:8>6<9l;o110??<3`;3<7>5$206>41d3g9987o4;h34b?6=,:8>6<9l;o110?d<3`;5$206>41d3g9987m4;h346<9l;o110?b<3`8947>5$206>7403g9987>4;h012?6=,:8>6?<8;o110?7<3`8987>5$206>7403g9987<4;h017?6=,:8>6?<8;o110?5<3`89>7>5$206>7403g9987:4;h015?6=,:8>6?<8;o110?3<3`89<7>5$206>7403g998784;h02b?6=,:8>6?<8;o110?1<3`8:i7>5$206>7403g998764;h02`?6=,:8>6?<8;o110??<3`8:o7>5$206>7403g9987o4;h02f?6=,:8>6?<8;o110?d<3`8:57>5$206>7403g9987m4;h026?<8;o110?b<3`8:;7>5$206>7403g9987k4;h022?6=,:8>6?<8;o110?`<3`8:97>5$206>7403g9987??;:k151<72-9997<=7:l061<6921b><=50;&060<5:>1e??:51398m775290/??;52358j64328907d<>1;29 6422;8<7c==4;37?>o5990;6)==5;013>h4:=0:965f23d94?"4:<09>:5a336953=6?<8;o110?7?32c9>n4?:%111?45?2d8>94>9:9j67d=83.8>84=269m772=9h10e?<;:0`8?l4513:1(><::304?k55<3;h76g=2483>!55=389;6`<2582`>=n:8k1<7*<248162=i;;>1=h54i32e>5<#;;?1>?94n207>4`<3f83>7>5$206>7>63g9987>4;n0;4?6=,:8>6?6>;o110?7<3f85$206>7>63g9987<4;n04a?6=,:8>6?6>;o110?5<3`8857>5$206>75?3g9987>4;h003?6=,:8>6?=7;o110?7<3`88:7>5$206>75?3g9987<4;h001?6=,:8>6?=7;o110?5<3f83;7>5$206>7>13g9987>4;n0;1?6=,:8>6?69;o110?7<3f8387>5$206>7>13g9987<4;n0;7?6=,:8>6?69;o110?5<3f8<97>5$206>7133g9987>4;n047?6=,:8>6?9;;o110?7<3f8<=7>5$206>7133g9987<4;n044?6=,:8>6?9;;o110?5<3f8=j7>5$206>7133g9987:4;n05a?6=,:8>6?9;;o110?3<3f8=h7>5$206>7133g998784;n05g?6=,:8>6?9;;o110?1<3f8=n7>5$206>7133g998764;n05e?6=,:8>6?9;;o110??<3f8=57>5$206>7133g9987o4;n056?9;;o110?d<3f8=:7>5$206>7133g9987m4;n051?6=,:8>6?9;;o110?b<3f8=87>5$206>7133g9987k4;n057?6=,:8>6?9;;o110?`<3f8=>7>5$206>7133g9987??;:m124<72-9997<84:l061<6921d>;>50;&060<5?=1e??:51398k73a290/??;52668j64328907b<:e;29 6422;=?7c==4;37?>i5=m0;6)==5;040>h4:=0:965`26a94?"4:<09;95a336953=6?9;;o110?7?32e9;44?:%111?40<2d8>94>9:9l62>=83.8>84=759m772=9h10c?98:18'773=:>>0b><;:0`8?j40>3:1(><::357?k55<3;h76a=7383>!55=38<86`<2582`>=h:?=1<7*<248131=i;;>1=h54o37`>5<#;;?1>::4n207>4`<3`9?i7>5$206>62c3g9987>4;h17g?6=,:8>6>:k;o110?7<3`9?n7>5$206>62c3g9987<4;h17e?6=,:8>6>:k;o110?5<3`8;;7>5$206>7613g9987>4;h031?6=,:8>6?>9;o110?7<3`8;?7>5$206>7613g9987<4;h036?6=,:8>6?>9;o110?5<3`8;=7>5$206>7613g9987:4;h034?6=,:8>6?>9;o110?3<3`;mj7>5$206>7613g998784;h3ea?6=,:8>6?>9;o110?1<3`;mh7>5$206>7613g998764;h3eg?6=,:8>6?>9;o110??<3`;mn7>5$206>7613g9987o4;h3ee?6=,:8>6?>9;o110?d<3`;m47>5$206>7613g9987m4;h3e3?6=,:8>6?>9;o110?b<3`;m:7>5$206>7613g9987k4;h3e1?6=,:8>6?>9;o110?`<3`;m87>5$206>7613g9987??;:k2b6<72-9997o6mo0;6)==5;032>h4:=0:965f21g94?"4:<09<;5a336953=6?>9;o110?7?32c92d8>94>9:9j65g=83.8>84=079m772=9h10e?>6:18'773=:9<0b><;:0`8?l4703:1(><::325?k55<3;h76g=0583>!55=38;:6`<2582`>=n9o31<7*<248143=i;;>1=h54i0gf>5<#;;?1>=84n207>4`<3th8?k4?:ca94?6|,:926><8;I167>N4<;1Q=4l5cz66>10=io0i?7l?:c69f4<0m3=o6:h5b384g?{#;;:1?4>4n0g7>4=i9l?1=6`=5c83?k40l3:0(?o?:3`0?!4f938i?6*=cb80?!4dl390(?mj:29'6f`=;2.9h=4<;%0g5?5<,;n96>5+2e197>"5l=0::6*=d487?!4c>3;?j6*=d681=7=#:m21=l94$3f:>4>f3-8om7<=;%0gf?7>82.9hn4=ac9'6ab=9mh0(?jj:0:`?!4cn3oi7)"5m80j7)"5m00h;6*=e`81e==#:lh1985+2da97`=#:ln1=o84$3gf>3g<,;om69j4$3d3>a><,;l:6?o9;%0e6?3a3-8m?7<79:&1b1<6m?1/>k;5bd9'6c0=9:o0(?h8:b78 7`?2880(?h6:0;:?!4ai3n0(?hm:041?!4ak32;7)"5nl0:>55+2gd96d?<,::;6n>4$222>43?3-9;>7<78:&046<4>2.8<94>3e9'753=:0?0(>>9:3`e?!57?3;j7)=?8;d2?!5713;oh6*<0`8g7>"48k0o;6*<0b81g1=#;9n1>n74$22f>7e>3-9;j7?<:06:?!56<380(>?::39'740=;8l0(>6533-9897<4$215>7=#;<:1?9h4$272>62a3`9947>5;h3`e?6=3`82j7>5;h11f?6=3`;hj7>5;h11=?6=3`99m7>5;h0:a?6=3`8887>5$206>7543g9987>4;h006?6=,:8>6?=<;o110?7<3`88=7>5$206>7543g9987<4;h004?6=,:8>6?=<;o110?5<3`9?57>5$206>62?3g9987>4;h173?6=,:8>6>:7;o110?7<3`9?:7>5$206>62?3g9987<4;h171?6=,:8>6>:7;o110?5<3f8>?7>5$206>7353g9987>4;n065?6=,:8>6?;=;o110?7<3f8?j7>5$206>7353g9987<4;n07a?6=,:8>6?;=;o110?5<3f8?h7>5$206>7353g9987:4;n07g?6=,:8>6?;=;o110?3<3f8?n7>5$206>7353g998784;n07e?6=,:8>6?;=;o110?1<3f8?57>5$206>7353g998764;n076?;=;o110??<3f8?;7>5$206>7353g9987o4;n072?6=,:8>6?;=;o110?d<3f8?87>5$206>7353g9987m4;n077?6=,:8>6?;=;o110?b<3f8?>7>5$206>7353g9987k4;n075?6=,:8>6?;=;o110?`<3f8?<7>5$206>7353g9987??;:m17c<72-9997<:2:l061<6921d>>k50;&060<5=;1e??:51398k75c290/??;52408j64328907b<i5;k0;6)==5;066>h4:=0:965`24c94?"4:<099?5a336953=6?;=;o110?7?32e99:4?:%111?42:2d8>94>9:9l600=83.8>84=539m772=9h10c?;::18'773=:<80b><;:0`8?j42<3:1(><::371?k55<3;h76a=5183>!55=38>>6`<2582`>=h:=?1<7*<248117=i;;>1=h54o31b>5<#;;?1>8<4n207>4`<3`;=i7>5$206>40c3g9987>4;h35g?6=,:8>6<8k;o110?7<3`;=n7>5$206>40c3g9987<4;h35e?6=,:8>6<8k;o110?5<3`;<;7>5$206>40c3g9987:4;h342?6=,:8>6<8k;o110?3<3`;<97>5$206>40c3g998784;h340?6=,:8>6<8k;o110?1<3`;5$206>40c3g998764;h346?6=,:8>6<8k;o110??<3`;<=7>5$206>40c3g9987o4;h344?6=,:8>6<8k;o110?d<3`;=j7>5$206>40c3g9987m4;h35=?6=,:8>6<8k;o110?b<3`;5$206>41d3g9987>4;h34f?6=,:8>6<9l;o110?7<3`;5$206>41d3g9987<4;h34=?6=,:8>6<9l;o110?5<3`;3:7>5$206>41d3g9987:4;h3;1?6=,:8>6<9l;o110?3<3`;387>5$206>41d3g998784;h3;7?6=,:8>6<9l;o110?1<3`;3>7>5$206>41d3g998764;h3;5?6=,:8>6<9l;o110??<3`;3<7>5$206>41d3g9987o4;h34b?6=,:8>6<9l;o110?d<3`;5$206>41d3g9987m4;h346<9l;o110?b<3`8947>5$206>7403g9987>4;h012?6=,:8>6?<8;o110?7<3`8987>5$206>7403g9987<4;h017?6=,:8>6?<8;o110?5<3`89>7>5$206>7403g9987:4;h015?6=,:8>6?<8;o110?3<3`89<7>5$206>7403g998784;h02b?6=,:8>6?<8;o110?1<3`8:i7>5$206>7403g998764;h02`?6=,:8>6?<8;o110??<3`8:o7>5$206>7403g9987o4;h02f?6=,:8>6?<8;o110?d<3`8:57>5$206>7403g9987m4;h026?<8;o110?b<3`8:;7>5$206>7403g9987k4;h022?6=,:8>6?<8;o110?`<3`8:97>5$206>7403g9987??;:k151<72-9997<=7:l061<6921b><=50;&060<5:>1e??:51398m775290/??;52358j64328907d<>1;29 6422;8<7c==4;37?>o5990;6)==5;013>h4:=0:965f23d94?"4:<09>:5a336953=6?<8;o110?7?32c9>n4?:%111?45?2d8>94>9:9j67d=83.8>84=269m772=9h10e?<;:0`8?l4513:1(><::304?k55<3;h76g=2483>!55=389;6`<2582`>=n:8k1<7*<248162=i;;>1=h54i32e>5<#;;?1>?94n207>4`<3f83>7>5$206>7>63g9987>4;n0;4?6=,:8>6?6>;o110?7<3f85$206>7>63g9987<4;n04a?6=,:8>6?6>;o110?5<3`8857>5$206>75?3g9987>4;h003?6=,:8>6?=7;o110?7<3`88:7>5$206>75?3g9987<4;h001?6=,:8>6?=7;o110?5<3f83;7>5$206>7>13g9987>4;n0;1?6=,:8>6?69;o110?7<3f8387>5$206>7>13g9987<4;n0;7?6=,:8>6?69;o110?5<3f8<97>5$206>7133g9987>4;n047?6=,:8>6?9;;o110?7<3f8<=7>5$206>7133g9987<4;n044?6=,:8>6?9;;o110?5<3f8=j7>5$206>7133g9987:4;n05a?6=,:8>6?9;;o110?3<3f8=h7>5$206>7133g998784;n05g?6=,:8>6?9;;o110?1<3f8=n7>5$206>7133g998764;n05e?6=,:8>6?9;;o110??<3f8=57>5$206>7133g9987o4;n056?9;;o110?d<3f8=:7>5$206>7133g9987m4;n051?6=,:8>6?9;;o110?b<3f8=87>5$206>7133g9987k4;n057?6=,:8>6?9;;o110?`<3f8=>7>5$206>7133g9987??;:m124<72-9997<84:l061<6921d>;>50;&060<5?=1e??:51398k73a290/??;52668j64328907b<:e;29 6422;=?7c==4;37?>i5=m0;6)==5;040>h4:=0:965`26a94?"4:<09;95a336953=6?9;;o110?7?32e9;44?:%111?40<2d8>94>9:9l62>=83.8>84=759m772=9h10c?98:18'773=:>>0b><;:0`8?j40>3:1(><::357?k55<3;h76a=7383>!55=38<86`<2582`>=h:?=1<7*<248131=i;;>1=h54o37`>5<#;;?1>::4n207>4`<3`9?i7>5$206>62c3g9987>4;h17g?6=,:8>6>:k;o110?7<3`9?n7>5$206>62c3g9987<4;h17e?6=,:8>6>:k;o110?5<3`8;;7>5$206>7613g9987>4;h031?6=,:8>6?>9;o110?7<3`8;?7>5$206>7613g9987<4;h036?6=,:8>6?>9;o110?5<3`8;=7>5$206>7613g9987:4;h034?6=,:8>6?>9;o110?3<3`;mj7>5$206>7613g998784;h3ea?6=,:8>6?>9;o110?1<3`;mh7>5$206>7613g998764;h3eg?6=,:8>6?>9;o110??<3`;mn7>5$206>7613g9987o4;h3ee?6=,:8>6?>9;o110?d<3`;m47>5$206>7613g9987m4;h3e3?6=,:8>6?>9;o110?b<3`;m:7>5$206>7613g9987k4;h3e1?6=,:8>6?>9;o110?`<3`;m87>5$206>7613g9987??;:k2b6<72-9997o6mo0;6)==5;032>h4:=0:965f21g94?"4:<09<;5a336953=6?>9;o110?7?32c92d8>94>9:9j65g=83.8>84=079m772=9h10e?>6:18'773=:9<0b><;:0`8?l4703:1(><::325?k55<3;h76g=0583>!55=38;:6`<2582`>=n9o31<7*<248143=i;;>1=h54i0gf>5<#;;?1>=84n207>4`<3th8?h4?:ca94?6|,:926><8;I167>N4<;1Q=4l5cz66>10=io0i?7l?:c69f4<0m3=o6:h5b384g?{#;;:1?4>4n0g7>4=i9l?1=6`=5c83?k40l3:0(?o?:3`0?!4f938i?6*=cb80?!4dl390(?mj:29'6f`=;2.9h=4<;%0g5?5<,;n96>5+2e197>"5l=08j6*=d481=2=#:m<1=984$3f4>3><,;n36<7j;%0g=?75?2.9hl4=929'6ad=im5a99'6ab=kh1/>ik5809'6a`=

h>51218 7c628>:7)"5m:0:n=5+2d695d7<,;o>6<;?;%0f2??43-8n;7?na:&1a=<3;2.9i44>5c9'6`g=9"5n;0:<>5+2g19<3=#:o>1n;5+2g79`<=#:o<15h5+2g59b2=#:o21?<5+2g;9574<,;lj6<88;%0ef?273-8mo7?;b:&1ba76;;%137?4?j2.8<94>389'753=99?0(>>9:3``?!57?3937)=?8;0a5>"4800h?6*<0`8b0>"48k0o<6*<0b81g6=#;9n1>n74$22f>7e>3-9;j7?<:07`?!56<380(>?::39'740=;8l0(>6533-9897<4$215>7=#;<:1?9h4$272>62a3`9947>5;h3`e?6=3`82j7>5;h11f?6=3`;hj7>5;h11=?6=3`99m7>5;h0:a?6=3`8887>5$206>7543g9987>4;h006?6=,:8>6?=<;o110?7<3`88=7>5$206>7543g9987<4;h004?6=,:8>6?=<;o110?5<3`9?57>5$206>62?3g9987>4;h173?6=,:8>6>:7;o110?7<3`9?:7>5$206>62?3g9987<4;h171?6=,:8>6>:7;o110?5<3f8>?7>5$206>7353g9987>4;n065?6=,:8>6?;=;o110?7<3f8?j7>5$206>7353g9987<4;n07a?6=,:8>6?;=;o110?5<3f8?h7>5$206>7353g9987:4;n07g?6=,:8>6?;=;o110?3<3f8?n7>5$206>7353g998784;n07e?6=,:8>6?;=;o110?1<3f8?57>5$206>7353g998764;n076?;=;o110??<3f8?;7>5$206>7353g9987o4;n072?6=,:8>6?;=;o110?d<3f8?87>5$206>7353g9987m4;n077?6=,:8>6?;=;o110?b<3f8?>7>5$206>7353g9987k4;n075?6=,:8>6?;=;o110?`<3f8?<7>5$206>7353g9987??;:m17c<72-9997<:2:l061<6921d>>k50;&060<5=;1e??:51398k75c290/??;52408j64328907b<i5;k0;6)==5;066>h4:=0:965`24c94?"4:<099?5a336953=6?;=;o110?7?32e99:4?:%111?42:2d8>94>9:9l600=83.8>84=539m772=9h10c?;::18'773=:<80b><;:0`8?j42<3:1(><::371?k55<3;h76a=5183>!55=38>>6`<2582`>=h:=?1<7*<248117=i;;>1=h54o31b>5<#;;?1>8<4n207>4`<3`;=i7>5$206>40c3g9987>4;h35g?6=,:8>6<8k;o110?7<3`;=n7>5$206>40c3g9987<4;h35e?6=,:8>6<8k;o110?5<3`;<;7>5$206>40c3g9987:4;h342?6=,:8>6<8k;o110?3<3`;<97>5$206>40c3g998784;h340?6=,:8>6<8k;o110?1<3`;5$206>40c3g998764;h346?6=,:8>6<8k;o110??<3`;<=7>5$206>40c3g9987o4;h344?6=,:8>6<8k;o110?d<3`;=j7>5$206>40c3g9987m4;h35=?6=,:8>6<8k;o110?b<3`;5$206>41d3g9987>4;h34f?6=,:8>6<9l;o110?7<3`;5$206>41d3g9987<4;h34=?6=,:8>6<9l;o110?5<3`;3:7>5$206>41d3g9987:4;h3;1?6=,:8>6<9l;o110?3<3`;387>5$206>41d3g998784;h3;7?6=,:8>6<9l;o110?1<3`;3>7>5$206>41d3g998764;h3;5?6=,:8>6<9l;o110??<3`;3<7>5$206>41d3g9987o4;h34b?6=,:8>6<9l;o110?d<3`;5$206>41d3g9987m4;h346<9l;o110?b<3`8947>5$206>7403g9987>4;h012?6=,:8>6?<8;o110?7<3`8987>5$206>7403g9987<4;h017?6=,:8>6?<8;o110?5<3`89>7>5$206>7403g9987:4;h015?6=,:8>6?<8;o110?3<3`89<7>5$206>7403g998784;h02b?6=,:8>6?<8;o110?1<3`8:i7>5$206>7403g998764;h02`?6=,:8>6?<8;o110??<3`8:o7>5$206>7403g9987o4;h02f?6=,:8>6?<8;o110?d<3`8:57>5$206>7403g9987m4;h026?<8;o110?b<3`8:;7>5$206>7403g9987k4;h022?6=,:8>6?<8;o110?`<3`8:97>5$206>7403g9987??;:k151<72-9997<=7:l061<6921b><=50;&060<5:>1e??:51398m775290/??;52358j64328907d<>1;29 6422;8<7c==4;37?>o5990;6)==5;013>h4:=0:965f23d94?"4:<09>:5a336953=6?<8;o110?7?32c9>n4?:%111?45?2d8>94>9:9j67d=83.8>84=269m772=9h10e?<;:0`8?l4513:1(><::304?k55<3;h76g=2483>!55=389;6`<2582`>=n:8k1<7*<248162=i;;>1=h54i32e>5<#;;?1>?94n207>4`<3f83>7>5$206>7>63g9987>4;n0;4?6=,:8>6?6>;o110?7<3f85$206>7>63g9987<4;n04a?6=,:8>6?6>;o110?5<3`8857>5$206>75?3g9987>4;h003?6=,:8>6?=7;o110?7<3`88:7>5$206>75?3g9987<4;h001?6=,:8>6?=7;o110?5<3f83;7>5$206>7>13g9987>4;n0;1?6=,:8>6?69;o110?7<3f8387>5$206>7>13g9987<4;n0;7?6=,:8>6?69;o110?5<3f8<97>5$206>7133g9987>4;n047?6=,:8>6?9;;o110?7<3f8<=7>5$206>7133g9987<4;n044?6=,:8>6?9;;o110?5<3f8=j7>5$206>7133g9987:4;n05a?6=,:8>6?9;;o110?3<3f8=h7>5$206>7133g998784;n05g?6=,:8>6?9;;o110?1<3f8=n7>5$206>7133g998764;n05e?6=,:8>6?9;;o110??<3f8=57>5$206>7133g9987o4;n056?9;;o110?d<3f8=:7>5$206>7133g9987m4;n051?6=,:8>6?9;;o110?b<3f8=87>5$206>7133g9987k4;n057?6=,:8>6?9;;o110?`<3f8=>7>5$206>7133g9987??;:m124<72-9997<84:l061<6921d>;>50;&060<5?=1e??:51398k73a290/??;52668j64328907b<:e;29 6422;=?7c==4;37?>i5=m0;6)==5;040>h4:=0:965`26a94?"4:<09;95a336953=6?9;;o110?7?32e9;44?:%111?40<2d8>94>9:9l62>=83.8>84=759m772=9h10c?98:18'773=:>>0b><;:0`8?j40>3:1(><::357?k55<3;h76a=7383>!55=38<86`<2582`>=h:?=1<7*<248131=i;;>1=h54o37`>5<#;;?1>::4n207>4`<3`9?i7>5$206>62c3g9987>4;h17g?6=,:8>6>:k;o110?7<3`9?n7>5$206>62c3g9987<4;h17e?6=,:8>6>:k;o110?5<3`8;;7>5$206>7613g9987>4;h031?6=,:8>6?>9;o110?7<3`8;?7>5$206>7613g9987<4;h036?6=,:8>6?>9;o110?5<3`8;=7>5$206>7613g9987:4;h034?6=,:8>6?>9;o110?3<3`;mj7>5$206>7613g998784;h3ea?6=,:8>6?>9;o110?1<3`;mh7>5$206>7613g998764;h3eg?6=,:8>6?>9;o110??<3`;mn7>5$206>7613g9987o4;h3ee?6=,:8>6?>9;o110?d<3`;m47>5$206>7613g9987m4;h3e3?6=,:8>6?>9;o110?b<3`;m:7>5$206>7613g9987k4;h3e1?6=,:8>6?>9;o110?`<3`;m87>5$206>7613g9987??;:k2b6<72-9997o6mo0;6)==5;032>h4:=0:965f21g94?"4:<09<;5a336953=6?>9;o110?7?32c92d8>94>9:9j65g=83.8>84=079m772=9h10e?>6:18'773=:9<0b><;:0`8?l4703:1(><::325?k55<3;h76g=0583>!55=38;:6`<2582`>=n9o31<7*<248143=i;;>1=h54i0gf>5<#;;?1>=84n207>4`<3th8?i4?:ca94?6|,:926><8;I167>N4<;1Q=4l5cz66>10=io0i?7l?:c69f4<0m3=o6:h5b384g?{#;;:1?4>4n0g7>4=i9l?1=6`=5c83?k40l3:0(?o?:3`0?!4f938i?6*=cb80?!4dl390(?mj:29'6f`=;2.9h=4<;%0g5?5<,;n96>5+2e197>"5l=0:n55+2e79g>"5l?0:4i5+2e595d4<,;n36l74$3f:>0b<,;nj6?l6;%0gf?403-8oo7?j1:&1`a<6m11/>ik55b9'6a`=9j;0(?k?:3c0?!4b93297)"5m:09n;5+2d69a0=#:l?1=ho4$3g5>a2<,;o<6;84$3g;>4d>3-8n57?;e:&1ad<3:2.9io4>359'6`e=:ho0(?kk:02;?!4bm3oh7)"5n90:445+2g396g2<,;l96<6i;%0e7?77>2.9j949b:&1b0<6=01/>k85649'6c1=nl1/>k6512c8 7`>28:?7)"5nk0j>6*=fb81=d=#:on1>5k4$3df>7?13-8mj77l;%134?7512.8<<4j2:&047<5=2.8<>4>bb9'752=0>1/?=;513d8 66128"48109mn5+31;9556<,::j6o64$22a>47a3-9;o70;0`=>"4980h=6*<13825<=#;891=8j4$237>7=#;8?1>6*<17805c=#;;i1?>64$20g>4de3-99i7?mb:&074<60k1/?><53268 6522;1/?>852:&015<4<6:188m64f2900e?7j:188m753290/??;52218j6432910e?==:18'773=::90b><;:098m756290/??;52218j6432;10e?=?:18'773=::90b><;:298m62>290/??;535:8j6432910e>:8:18'773=;=20b><;:098m621290/??;535:8j6432;10e>:::18'773=;=20b><;:298k734290/??;52408j6432910c?;>:18'773=:<80b><;:098k72a290/??;52408j6432;10c?:j:18'773=:<80b><;:298k72c290/??;52408j6432=10c?:l:18'773=:<80b><;:498k72e290/??;52408j6432?10c?:n:18'773=:<80b><;:698k72>290/??;52408j6432110c?:7:18'773=:<80b><;:898k720290/??;52408j6432h10c?:9:18'773=:<80b><;:c98k723290/??;52408j6432j10c?:<:18'773=:<80b><;:e98k725290/??;52408j6432l10c?:>:18'773=:<80b><;:g98k727290/??;52408j64328:07b<i5;l0;6)==5;066>h4:=0:>65`22f94?"4:<099?5a336956=6?;=;o110?7232e99l4?:%111?42:2d8>94>6:9l60?=83.8>84=539m772=9>10c?;7:18'773=:<80b><;:0:8?j42?3:1(><::371?k55<3;276a=5783>!55=38>>6`<2582e>=h:1=o54o377>5<#;;?1>8<4n207>4e<3f8><7>5$206>7353g9987?k;:m100<72-9997<:2:l061<6m21d>>o50;&060<5=;1e??:51g98m40b290/??;517f8j6432910e<8l:18'773=9?n0b><;:098m40e290/??;517f8j6432;10e<8n:18'773=9?n0b><;:298m410290/??;517f8j6432=10e<99:18'773=9?n0b><;:498m412290/??;517f8j6432?10e<9;:18'773=9?n0b><;:698m414290/??;517f8j6432110e<9=:18'773=9?n0b><;:898m416290/??;517f8j6432h10e<9?:18'773=9?n0b><;:c98m40a290/??;517f8j6432j10e<86:18'773=9?n0b><;:e98m41c290/??;516a8j6432910e<9m:18'773=9>i0b><;:098m41f290/??;516a8j6432;10e<96:18'773=9>i0b><;:298m4>1290/??;516a8j6432=10e<6::18'773=9>i0b><;:498m4>3290/??;516a8j6432?10e<6<:18'773=9>i0b><;:698m4>5290/??;516a8j6432110e<6>:18'773=9>i0b><;:898m4>7290/??;516a8j6432h10e<9i:18'773=9>i0b><;:c98m41b290/??;516a8j6432j10e<97:18'773=9>i0b><;:e98m74?290/??;52358j6432910e?<9:18'773=:;=0b><;:098m743290/??;52358j6432;10e?<<:18'773=:;=0b><;:298m745290/??;52358j6432=10e?<>:18'773=:;=0b><;:498m747290/??;52358j6432?10e??i:18'773=:;=0b><;:698m77b290/??;52358j6432110e??k:18'773=:;=0b><;:898m77d290/??;52358j6432h10e??m:18'773=:;=0b><;:c98m77>290/??;52358j6432j10e??7:18'773=:;=0b><;:e98m770290/??;52358j6432l10e??9:18'773=:;=0b><;:g98m772290/??;52358j64328:07d<>4;29 6422;8<7c==4;32?>o59:0;6)==5;013>h4:=0:>65f20094?"4:<09>:5a336956=6?<8;o110?7232c9>k4?:%111?45?2d8>94>6:9j67c=83.8>84=269m772=9>10e?<;:0:8?l45k3:1(><::304?k55<3;276g=2c83>!55=389;6`<2582e>=n:;k1<7*<248162=i;;>1=o54i30:>5<#;;?1>?94n207>4e<3`8997>5$206>7403g9987?k;:k15d<72-9997<=7:l061<6m21b>=h50;&060<5:>1e??:51g98k7>5290/??;52938j6432910c?6?:18'773=:1;0b><;:098k71a290/??;52938j6432;10c?9j:18'773=:1;0b><;:298m75>290/??;522:8j6432910e?=8:18'773=::20b><;:098m751290/??;522:8j6432;10e?=::18'773=::20b><;:298k7>0290/??;52948j6432910c?6::18'773=:1<0b><;:098k7>3290/??;52948j6432;10c?6<:18'773=:1<0b><;:298k712290/??;52668j6432910c?9<:18'773=:>>0b><;:098k716290/??;52668j6432;10c?9?:18'773=:>>0b><;:298k70a290/??;52668j6432=10c?8j:18'773=:>>0b><;:498k70c290/??;52668j6432?10c?8l:18'773=:>>0b><;:698k70e290/??;52668j6432110c?8n:18'773=:>>0b><;:898k70>290/??;52668j6432h10c?87:18'773=:>>0b><;:c98k701290/??;52668j6432j10c?8::18'773=:>>0b><;:e98k703290/??;52668j6432l10c?8<:18'773=:>>0b><;:g98k705290/??;52668j64328:07b<91;29 6422;=?7c==4;32?>i5>90;6)==5;040>h4:=0:>65`24d94?"4:<09;95a336956=6?9;;o110?7232e9;n4?:%111?40<2d8>94>6:9l62d=83.8>84=759m772=9>10c?9n:18'773=:>>0b><;:0:8?j4013:1(><::357?k55<3;276a=7983>!55=38<86`<2582e>=h:>=1<7*<248131=i;;>1=o54o355>5<#;;?1>::4n207>4e<3f8<>7>5$206>7133g9987?k;:m122<72-9997<84:l061<6m21d>8m50;&060<5?=1e??:51g98m62b290/??;535f8j6432910e>:l:18'773=;=n0b><;:098m62e290/??;535f8j6432;10e>:n:18'773=;=n0b><;:298m760290/??;52148j6432910e?>::18'773=:9<0b><;:098m764290/??;52148j6432;10e?>=:18'773=:9<0b><;:298m766290/??;52148j6432=10e?>?:18'773=:9<0b><;:498m4`a290/??;52148j6432?10e<;:698m4`c290/??;52148j6432110e<;:898m4`e290/??;52148j6432h10e<;:c98m4`?290/??;52148j6432j10e<;:e98m4`1290/??;52148j6432l10e<;:g98m4`3290/??;52148j64328:07d?i3;29 6422;:=7c==4;32?>o6n;0;6)==5;032>h4:=0:>65f1g394?"4:<09<;5a336956=6?>9;o110?7232c92d8>94>6:9j65b=83.8>84=079m772=9>10e?>l:18'773=:9<0b><;:0:8?l47j3:1(><::325?k55<3;276g=0`83>!55=38;:6`<2582e>=n:931<7*<248143=i;;>1=o54i32;>5<#;;?1>=84n207>4e<3`8;87>5$206>7613g9987?k;:k2b<<72-9997;<;I176>\61k0hw9;5478bb?d42k:1n94m1;5f>2b=?o0i>79l:|&065<4191e=h:51:l2a0<63g8>n7>4n35g>5=#:h:1>o=4$3c2>7d43-8ho7=4$3ag>6=#:jo1?6*=cg80?!4c8390(?j>:29'6a4=;2.9h>4<;%0g0?7292.9h84i9:&1`3<5ih1/>i9529d8 7b?2190(?j6:3`3?!4ci3;n<6*=dc820==#:mi1:n5+2ef93==#:mo1oo5+2ed9<0=#:l:1>l<4$3g2>4bd3-8n>70e9'6`3=>o1/>h85959'6`1=90>0(?k7:e48 7c>20:0(?kn:268 7ce28>h7)"5mm0=?6*=ed8;b>"5mo0:56*=f1870>"5n80:>;%0e0?2d3-8m97?kf:&1b3<682.9j:4n3:&1b=<6m:1/>k7514d8 7`f28o97)"5nj0:8>5+2gf955d<,;ln6:o4$3de>4023-9;<7<61:&044<6;11/?=<51e9'755=n91/?=:5709'753=i<1/?=85c99'751=i?1/?=65ee9'75?=91o0(>>n:678 66e28?<7)=?c;0`5>"48m09o45+31g96f?<,::m6?m6;%124?4d12.8=<4<3:&057<69k1/?<=510g8 6732;1/?<;52:&053<49o1/??m532:8 64c28hi7)==e;3af>"4;80:4o5+3209762<,:9>6?5+32496>"4=9088k5+343971`5<5<5<5<5<#;;?1>>=4n207>4=5<#;;?1>>=4n207>6=26=4+337971>5<#;;?1?964n207>4==6=4+337971>5<#;;?1?964n207>6=5<#;;?1>8<4n207>4=m6=4+33796045<#;;?1>8<4n207>6=o6=4+33796045<#;;?1>8<4n207>0=i6=4+33796045<#;;?1>8<4n207>2=26=4+33796045<#;;?1>8<4n207><=<6=4+33796045<#;;?1>8<4n207>g=?6=4+33796045<#;;?1>8<4n207>a=96=4+33796045<#;;?1>8<4n207>c=;6=4+33796044;n00b?6=,:8>6?;=;o110?7632e9?h4?:%111?42:2d8>94>2:9l66b=83.8>84=539m772=9:10c?=l:18'773=:<80b><;:068?j44j3:1(><::371?k55<3;>76a=5`83>!55=38>>6`<25822>=h:<31<7*<248117=i;;>1=:54o37;>5<#;;?1>8<4n207>4><3f8>;7>5$206>7353g9987?6;:m113<72-9997<:2:l061<6i21d>8;50;&060<5=;1e??:51c98k733290/??;52408j64328i07b<:0;29 6422;?97c==4;3g?>i5<<0;6)==5;066>h4:=0:i65`22c94?"4:<099?5a33695c=5<#;;?1=;j4n207>4=5<#;;?1=;j4n207>6=5<#;;?1=;j4n207>0=6=4+337953b5<#;;?1=;j4n207>2=5<#;;?1=;j4n207><=5<#;;?1=;j4n207>g=5<#;;?1=;j4n207>a=5<#;;?1=:m4n207>4=5<#;;?1=:m4n207>6=5<#;;?1=:m4n207>0=5<#;;?1=:m4n207>2=5<#;;?1=:m4n207><=5<#;;?1=:m4n207>g=5<#;;?1=:m4n207>a=5<#;;?1>?94n207>4=5<#;;?1>?94n207>6=5<#;;?1>?94n207>0=5<#;;?1>?94n207>2=5<#;;?1>?94n207><=5<#;;?1>?94n207>g=5<#;;?1>?94n207>a=5<#;;?1>?94n207>c=6=4+33796714;h020?6=,:8>6?<8;o110?7632c9=>4?:%111?45?2d8>94>2:9j644=83.8>84=269m772=9:10e??>:18'773=:;=0b><;:068?l4683:1(><::304?k55<3;>76g=2g83>!55=389;6`<25822>=n:;o1<7*<248162=i;;>1=:54i30g>5<#;;?1>?94n207>4><3`89o7>5$206>7403g9987?6;:k16g<72-9997<=7:l061<6i21b>?o50;&060<5:>1e??:51c98m74>290/??;52358j64328i07d<=5;29 6422;8<7c==4;3g?>o59h0;6)==5;013>h4:=0:i65f21d94?"4:<09>:5a33695c=5<#;;?1>5?4n207>4=5<#;;?1>5?4n207>6=5<#;;?1>>64n207>4=5<#;;?1>>64n207>6=5<#;;?1>584n207>4=5<#;;?1>584n207>6=6=4+33796225<#;;?1>::4n207>4=5<#;;?1>::4n207>6=5<#;;?1>::4n207>0=5<#;;?1>::4n207>2=5<#;;?1>::4n207><=5<#;;?1>::4n207>g=5<#;;?1>::4n207>a=5<#;;?1>::4n207>c=4;n055?6=,:8>6?9;;o110?7632e9:=4?:%111?40<2d8>94>2:9l60`=83.8>84=759m772=9:10c?;j:18'773=:>>0b><;:068?j42l3:1(><::357?k55<3;>76a=7b83>!55=38<86`<25822>=h:>h1<7*<248131=i;;>1=:54o35b>5<#;;?1>::4n207>4><3f8<57>5$206>7133g9987?6;:m13=<72-9997<84:l061<6i21d>:950;&060<5?=1e??:51c98k711290/??;52668j64328i07b<82;29 6422;=?7c==4;3g?>i5>>0;6)==5;040>h4:=0:i65`24a94?"4:<09;95a33695c=n6=4+337971b5<#;;?1?9j4n207>4=i6=4+337971b5<#;;?1?9j4n207>6=5<#;;?1>=84n207>4=5<#;;?1>=84n207>6=5<#;;?1>=84n207>0=5<#;;?1>=84n207>2=5<#;;?1>=84n207><=5<#;;?1>=84n207>g=5<#;;?1>=84n207>a=5<#;;?1>=84n207>c=4;h3e7?6=,:8>6?>9;o110?7632c:j?4?:%111?47>2d8>94>2:9j5c7=83.8>84=079m772=9:10e<;:068?l7bn3:1(><::325?k55<3;>76g=0d83>!55=38;:6`<25822>=n:9n1<7*<248143=i;;>1=:54i32`>5<#;;?1>=84n207>4><3`8;n7>5$206>7613g9987?6;:k14d<72-9997=750;&060<58?1e??:51c98m76?290/??;52148j64328i07do6n00;6)==5;032>h4:=0:i65f1dg94?"4:<09<;5a33695c=5bb83>5}#;:31??94H270?M53:2P:5o4l{579035b58a5?1b2>n1;k4m2;5`>x"4:9085=5a1d695>h6m<0:7c<:b;28j71c291/>l>52c18 7g62;h87)nk53:&1gc<43-8o<7=4$3f2>6=#:m81?6*=d280?!4c<3;=46*=d48270=#:m<1j?5+2e590<=#:m21=hl4$3f:>7d53-8om7ll;%0gf?73l2.9hn4=8:&1`a<>92.9hh4>229'6a`=0l1/>h>51408 7c62;3?7)"5m:0=>6*=e58255=#:l?1>;5+2d49a`=#:l=1j55+2d:917=#:l31:h5+2dc9`d=#:lh14n5+2da96k?58`9'6c4=:l1/>k=5899'6c2=m=1/>k;5499'6c0=>>1/>k95f59'6c>=9<90(?h6:0;g?!4ai3i27)"5nl0::=5+2gd9543<,::;6n<4$222>17<,::96<=4$220>24<,::?6>o4$226>01<,::=6<8<;%133?`<,::36h>4$22:>f0<,::j6<;9;%13f?7592.8>j:3a:?!57n38h56*<1181g<=#;8;1>=5+300954><,:;86l>4$237>7=#;8?1>6*<17805c=#;;i1?>64$20g>4de3-99i7?mb:&074<60k1/?><53268 6522;1/?>852:&015<4<6:188m64f2900e?7j:188m753290/??;52218j6432910e?==:18'773=::90b><;:098m756290/??;52218j6432;10e?=?:18'773=::90b><;:298m62>290/??;535:8j6432910e>:8:18'773=;=20b><;:098m621290/??;535:8j6432;10e>:::18'773=;=20b><;:298k734290/??;52408j6432910c?;>:18'773=:<80b><;:098k72a290/??;52408j6432;10c?:j:18'773=:<80b><;:298k72c290/??;52408j6432=10c?:l:18'773=:<80b><;:498k72e290/??;52408j6432?10c?:n:18'773=:<80b><;:698k72>290/??;52408j6432110c?:7:18'773=:<80b><;:898k720290/??;52408j6432h10c?:9:18'773=:<80b><;:c98k723290/??;52408j6432j10c?:<:18'773=:<80b><;:e98k725290/??;52408j6432l10c?:>:18'773=:<80b><;:g98k727290/??;52408j64328:07b<i5;l0;6)==5;066>h4:=0:>65`22f94?"4:<099?5a336956=6?;=;o110?7232e99l4?:%111?42:2d8>94>6:9l60?=83.8>84=539m772=9>10c?;7:18'773=:<80b><;:0:8?j42?3:1(><::371?k55<3;276a=5783>!55=38>>6`<2582e>=h:1=o54o377>5<#;;?1>8<4n207>4e<3f8><7>5$206>7353g9987?k;:m100<72-9997<:2:l061<6m21d>>o50;&060<5=;1e??:51g98m40b290/??;517f8j6432910e<8l:18'773=9?n0b><;:098m40e290/??;517f8j6432;10e<8n:18'773=9?n0b><;:298m410290/??;517f8j6432=10e<99:18'773=9?n0b><;:498m412290/??;517f8j6432?10e<9;:18'773=9?n0b><;:698m414290/??;517f8j6432110e<9=:18'773=9?n0b><;:898m416290/??;517f8j6432h10e<9?:18'773=9?n0b><;:c98m40a290/??;517f8j6432j10e<86:18'773=9?n0b><;:e98m41c290/??;516a8j6432910e<9m:18'773=9>i0b><;:098m41f290/??;516a8j6432;10e<96:18'773=9>i0b><;:298m4>1290/??;516a8j6432=10e<6::18'773=9>i0b><;:498m4>3290/??;516a8j6432?10e<6<:18'773=9>i0b><;:698m4>5290/??;516a8j6432110e<6>:18'773=9>i0b><;:898m4>7290/??;516a8j6432h10e<9i:18'773=9>i0b><;:c98m41b290/??;516a8j6432j10e<97:18'773=9>i0b><;:e98m74?290/??;52358j6432910e?<9:18'773=:;=0b><;:098m743290/??;52358j6432;10e?<<:18'773=:;=0b><;:298m745290/??;52358j6432=10e?<>:18'773=:;=0b><;:498m747290/??;52358j6432?10e??i:18'773=:;=0b><;:698m77b290/??;52358j6432110e??k:18'773=:;=0b><;:898m77d290/??;52358j6432h10e??m:18'773=:;=0b><;:c98m77>290/??;52358j6432j10e??7:18'773=:;=0b><;:e98m770290/??;52358j6432l10e??9:18'773=:;=0b><;:g98m772290/??;52358j64328:07d<>4;29 6422;8<7c==4;32?>o59:0;6)==5;013>h4:=0:>65f20094?"4:<09>:5a336956=6?<8;o110?7232c9>k4?:%111?45?2d8>94>6:9j67c=83.8>84=269m772=9>10e?<;:0:8?l45k3:1(><::304?k55<3;276g=2c83>!55=389;6`<2582e>=n:;k1<7*<248162=i;;>1=o54i30:>5<#;;?1>?94n207>4e<3`8997>5$206>7403g9987?k;:k15d<72-9997<=7:l061<6m21b>=h50;&060<5:>1e??:51g98k7>5290/??;52938j6432910c?6?:18'773=:1;0b><;:098k71a290/??;52938j6432;10c?9j:18'773=:1;0b><;:298m75>290/??;522:8j6432910e?=8:18'773=::20b><;:098m751290/??;522:8j6432;10e?=::18'773=::20b><;:298k7>0290/??;52948j6432910c?6::18'773=:1<0b><;:098k7>3290/??;52948j6432;10c?6<:18'773=:1<0b><;:298k712290/??;52668j6432910c?9<:18'773=:>>0b><;:098k716290/??;52668j6432;10c?9?:18'773=:>>0b><;:298k70a290/??;52668j6432=10c?8j:18'773=:>>0b><;:498k70c290/??;52668j6432?10c?8l:18'773=:>>0b><;:698k70e290/??;52668j6432110c?8n:18'773=:>>0b><;:898k70>290/??;52668j6432h10c?87:18'773=:>>0b><;:c98k701290/??;52668j6432j10c?8::18'773=:>>0b><;:e98k703290/??;52668j6432l10c?8<:18'773=:>>0b><;:g98k705290/??;52668j64328:07b<91;29 6422;=?7c==4;32?>i5>90;6)==5;040>h4:=0:>65`24d94?"4:<09;95a336956=6?9;;o110?7232e9;n4?:%111?40<2d8>94>6:9l62d=83.8>84=759m772=9>10c?9n:18'773=:>>0b><;:0:8?j4013:1(><::357?k55<3;276a=7983>!55=38<86`<2582e>=h:>=1<7*<248131=i;;>1=o54o355>5<#;;?1>::4n207>4e<3f8<>7>5$206>7133g9987?k;:m122<72-9997<84:l061<6m21d>8m50;&060<5?=1e??:51g98m62b290/??;535f8j6432910e>:l:18'773=;=n0b><;:098m62e290/??;535f8j6432;10e>:n:18'773=;=n0b><;:298m760290/??;52148j6432910e?>::18'773=:9<0b><;:098m764290/??;52148j6432;10e?>=:18'773=:9<0b><;:298m766290/??;52148j6432=10e?>?:18'773=:9<0b><;:498m4`a290/??;52148j6432?10e<;:698m4`c290/??;52148j6432110e<;:898m4`e290/??;52148j6432h10e<;:c98m4`?290/??;52148j6432j10e<;:e98m4`1290/??;52148j6432l10e<;:g98m4`3290/??;52148j64328:07d?i3;29 6422;:=7c==4;32?>o6n;0;6)==5;032>h4:=0:>65f1g394?"4:<09<;5a336956=6?>9;o110?7232c92d8>94>6:9j65b=83.8>84=079m772=9>10e?>l:18'773=:9<0b><;:0:8?l47j3:1(><::325?k55<3;276g=0`83>!55=38;:6`<2582e>=n:931<7*<248143=i;;>1=o54i32;>5<#;;?1>=84n207>4e<3`8;87>5$206>7613g9987?k;:k2b<<72-9997;<;I176>\61k0hw9;5478bb?d42k:1n94m1;5f>2b=?o0i>79l:|&065<4191e=h:51:l2a0<63g8>n7>4n35g>5=#:h:1>o=4$3c2>7d43-8ho7=4$3ag>6=#:jo1?6*=cg80?!4c8390(?j>:29'6a4=;2.9h>4<;%0g0?ge3-8o97m;;%0g2?7b12.9h:4;f:&1`=<6111/>i75dc9'6ag=90<0(?jm:0fb?!4ck3o:7)"5ll0:4503-8n>7?67:&1a6h8515c8 7c02;k<7)"5m00:nl5+2dc9bg=#:lh1=?k4$3g`>`?<,;oo6nm4$3gf>64<,;om6ih4$3d3>4dc3-8m=7<;;%0e6?7bl2.9j>490:&1b1<6<;1/>k;528:8 7`12ll0(?h8:005?!4a03;i96*=f88f3>"5nh027)"4890:m55+31395g4<,::96?7l;%137?4>82.8<946d:&040"48m09o45+31g96f?<,::m6?m6;%124?4d12.8=<4<;%126?76>2.8=>465:&051<53-9:97<4$235>67a3-99o7=<8:&06a<6jk1/??k51c`8 656282i7)=<2;100>"4;<097)=<6;08 6372:>m7)=:1;17b>o4:10;66g>c`83>>o51o0;66g<2c83>>o6ko0;66g<2883>>o4:h0;66g=9d83>>o5;=0;6)==5;007>h4:=0;76g=3383>!55=388?6`<2582?>o5;80;6)==5;007>h4:=0976g=3183>!55=388?6`<2580?>o4<00;6)==5;17<>h4:=0;76g<4683>!55=39?46`<2582?>o4h4:=0976g<4483>!55=39?46`<2580?>i5=:0;6)==5;066>h4:=0;76a=5083>!55=38>>6`<2582?>i5h4:=0976a=4d83>!55=38>>6`<2580?>i5h4:=0?76a=4b83>!55=38>>6`<2586?>i5h4:=0=76a=4`83>!55=38>>6`<2584?>i5<00;6)==5;066>h4:=0376a=4983>!55=38>>6`<258:?>i5<>0;6)==5;066>h4:=0j76a=4783>!55=38>>6`<258a?>i5<=0;6)==5;066>h4:=0h76a=4283>!55=38>>6`<258g?>i5<;0;6)==5;066>h4:=0n76a=4083>!55=38>>6`<258e?>i5<90;6)==5;066>h4:=0:<65`22d94?"4:<099?5a336954=6?;=;o110?7432e9?n4?:%111?42:2d8>94>4:9l66d=83.8>84=539m772=9<10c?;n:18'773=:<80b><;:048?j4213:1(><::371?k55<3;<76a=5983>!55=38>>6`<2582<>=h:<=1<7*<248117=i;;>1=454o375>5<#;;?1>8<4n207>4g<3f8>97>5$206>7353g9987?m;:m111<72-9997<:2:l061<6k21d>8>50;&060<5=;1e??:51e98k722290/??;52408j64328o07b<o6>l0;6)==5;35`>h4:=0;76g>6b83>!55=3;=h6`<2582?>o6>k0;6)==5;35`>h4:=0976g>6`83>!55=3;=h6`<2580?>o6?>0;6)==5;35`>h4:=0?76g>7783>!55=3;=h6`<2586?>o6?<0;6)==5;35`>h4:=0=76g>7583>!55=3;=h6`<2584?>o6?:0;6)==5;35`>h4:=0376g>7383>!55=3;=h6`<258:?>o6?80;6)==5;35`>h4:=0j76g>7183>!55=3;=h6`<258a?>o6>o0;6)==5;35`>h4:=0h76g>6883>!55=3;=h6`<258g?>o6?m0;6)==5;34g>h4:=0;76g>7c83>!55=3;o6?h0;6)==5;34g>h4:=0976g>7883>!55=3;o60?0;6)==5;34g>h4:=0?76g>8483>!55=3;o60=0;6)==5;34g>h4:=0=76g>8283>!55=3;o60;0;6)==5;34g>h4:=0376g>8083>!55=3;o6090;6)==5;34g>h4:=0j76g>7g83>!55=3;o6?l0;6)==5;34g>h4:=0h76g>7983>!55=3;o5:10;6)==5;013>h4:=0;76g=2783>!55=389;6`<2582?>o5:=0;6)==5;013>h4:=0976g=2283>!55=389;6`<2580?>o5:;0;6)==5;013>h4:=0?76g=2083>!55=389;6`<2586?>o5:90;6)==5;013>h4:=0=76g=1g83>!55=389;6`<2584?>o59l0;6)==5;013>h4:=0376g=1e83>!55=389;6`<258:?>o59j0;6)==5;013>h4:=0j76g=1c83>!55=389;6`<258a?>o5900;6)==5;013>h4:=0h76g=1983>!55=389;6`<258g?>o59>0;6)==5;013>h4:=0n76g=1783>!55=389;6`<258e?>o59<0;6)==5;013>h4:=0:<65f20694?"4:<09>:5a336954=6?<8;o110?7432c9=<4?:%111?45?2d8>94>4:9j646=83.8>84=269m772=9<10e?<;:048?l45m3:1(><::304?k55<3;<76g=2e83>!55=389;6`<2582<>=n:;i1<7*<248162=i;;>1=454i30a>5<#;;?1>?94n207>4g<3`89m7>5$206>7403g9987?m;:k16<<72-9997<=7:l061<6k21b>?;50;&060<5:>1e??:51e98m77f290/??;52358j64328o07di50;0;6)==5;0;5>h4:=0;76a=8183>!55=383=6`<2582?>i5?o0;6)==5;0;5>h4:=0976a=7d83>!55=383=6`<2580?>o5;00;6)==5;00<>h4:=0;76g=3683>!55=38846`<2582?>o5;?0;6)==5;00<>h4:=0976g=3483>!55=38846`<2580?>i50>0;6)==5;0;2>h4:=0;76a=8483>!55=383:6`<2582?>i50=0;6)==5;0;2>h4:=0976a=8283>!55=383:6`<2580?>i5?<0;6)==5;040>h4:=0;76a=7283>!55=38<86`<2582?>i5?80;6)==5;040>h4:=0976a=7183>!55=38<86`<2580?>i5>o0;6)==5;040>h4:=0?76a=6d83>!55=38<86`<2586?>i5>m0;6)==5;040>h4:=0=76a=6b83>!55=38<86`<2584?>i5>k0;6)==5;040>h4:=0376a=6`83>!55=38<86`<258:?>i5>00;6)==5;040>h4:=0j76a=6983>!55=38<86`<258a?>i5>?0;6)==5;040>h4:=0h76a=6483>!55=38<86`<258g?>i5>=0;6)==5;040>h4:=0n76a=6283>!55=38<86`<258e?>i5>;0;6)==5;040>h4:=0:<65`27394?"4:<09;95a336954=6?9;;o110?7432e99h4?:%111?40<2d8>94>4:9l60b=83.8>84=759m772=9<10c?9l:18'773=:>>0b><;:048?j40j3:1(><::357?k55<3;<76a=7`83>!55=38<86`<2582<>=h:>31<7*<248131=i;;>1=454o35;>5<#;;?1>::4n207>4g<3f8<;7>5$206>7133g9987?m;:m133<72-9997<84:l061<6k21d>:<50;&060<5?=1e??:51e98k700290/??;52668j64328o07b<:c;29 6422;=?7c==4;3e?>o4h4:=0;76g<4b83>!55=39?h6`<2582?>o4h4:=0976g<4`83>!55=39?h6`<2580?>o58>0;6)==5;032>h4:=0;76g=0483>!55=38;:6`<2582?>o58:0;6)==5;032>h4:=0976g=0383>!55=38;:6`<2580?>o5880;6)==5;032>h4:=0?76g=0183>!55=38;:6`<2586?>o6no0;6)==5;032>h4:=0=76g>fd83>!55=38;:6`<2584?>o6nm0;6)==5;032>h4:=0376g>fb83>!55=38;:6`<258:?>o6nk0;6)==5;032>h4:=0j76g>f`83>!55=38;:6`<258a?>o6n10;6)==5;032>h4:=0h76g>f683>!55=38;:6`<258g?>o6n?0;6)==5;032>h4:=0n76g>f483>!55=38;:6`<258e?>o6n=0;6)==5;032>h4:=0:<65f1g194?"4:<09<;5a336954=6?>9;o110?7432c:j=4?:%111?47>2d8>94>4:9j5``=83.8>84=079m772=9<10e?>j:18'773=:9<0b><;:048?l47l3:1(><::325?k55<3;<76g=0b83>!55=38;:6`<2582<>=n:9h1<7*<248143=i;;>1=454i32b>5<#;;?1>=84n207>4g<3`8;57>5$206>7613g9987?m;:k14=<72-9997=:50;&060<58?1e??:51e98m4`>290/??;52148j64328o07d?je;29 6422;:=7c==4;3e?>{t;8i1<77t=276>6463498m7<6e:?07g<51l16?>m528g8965c2;3n70=;4;o095h5235296:6?7j;|q05a<72:8:w0=:4;0`e>;4;h0:;i5232c952d<5:9j6<9n;<10e?701278?l4>879>76g=91?01>=n:0:7?854i3;3?63<3`82<7=:;:k1=5?4=21b>4>73498m7?8f:?07d<6?l16?>o516:8965f2;:<70=;4;h09<>5232c9654<5:9j6?>>;<10e?478278?l4>fg9>76g=9oo01>=n:0dg?854i3;mo63<3`82bg=:;:k1=ko4=21b>4`?3498m7?i7:?07d<6n?16?>o51g78965f28l?70=;4;h0:j?5232c95c7<5:9j676g=:9n01>=n:32`?854i38;n63<3`814d=:;:k1>=74=21b>76?3498m7o51dg8965f2;8370=;4;h09>95232c9675<5:9j6?<=;<10e?459278?l4=219>76g=:8l01>=n:33f?854i38:h63<3`815f=:;:k1>77>3498m7<>8:?07d<59>16?>o52048965f2;;>70=;4;h09=>5232c9644<5:9j6??>;<10e?468278?l4=2g9>76g=:;o01>=n:30g?854i389o63<3`816g=:;:k1>?o4=21b>74>3498m7<=5:?07d<59h16?>o521d8965f2;9?70=;4;h09?<5232c9666<5:9j6?=6;<10e?44?278?l4=379>76g=::?01>=n:26:?854i39?;63<3`8003=:;:k1?9;4=21b>62b3498m7=;c:?07d<4o535c8965f28im70=;4;h08>55232c977?<5:9j6>7e9>76d=9>h01>=m:05b?854j3;<563<3c82<3=:;:h1=5;4=21a>4>33498n7?73:?07g<60;16?>l51938965e282;70=;4;k0:;h5232`952><5:9i6?>8;<10f?47=278?o4=029>76d=:9801>=m:322?854j38;<63<3c82bc=:;:h1=kk4=21a>4`c3498n7?ic:?07g<6nk16?>l51gc8965e28l370=;4;k0:j;5232`95c3<5:9i6f39>76d=9o;01>=m:0d3?854j3;nj63<3c814`=:;:h1>=j4=21a>76d3498n7l521;8965e2;:370=;4;k0:j45232`95`c<5:9i6?<7;<10f?45>278?o4=259>76d=:;901>=m:301?854j389=63<3c8165=:;:h1>77b3498n7<>d:?07g<59j16?>l520`8965e2;;270=;4;k09=:5232`9640<5:9i6??:;<10f?46<278?o4=129>76d=:8801>=m:332?854j38:<63<3c816c=:;:h1>?k4=21a>74c3498n7<=c:?07g<5:k16?>l523c8965e2;8270=;4;k09=l5232`965`<5:9i6?=;;<10f?44:278?o4=309>76d=:::01>=m:31:?854j388;63<3c8173=:;:h1>>;4=21a>62>3498n7=;7:?07g<4l53578965e2:>n70=;4;k088o5232`971g<5:9i6n278?o4<299>76d=;;301>=m:20b?854j399n63<3b823a=:;:i1=:l4=21`>41f3498o7?89:?07f<60?16?>m51978965d282?70=;4;j0:4?5232a95=7<5:9h6<6?;<10g?70n278?n4>7d9>76e=9>201>=l:324?854k38;963<3b8146=:;:i1>=<4=21`>7663498o7m51gg8965d28lo70=;4;j0:jo5232a95cg<5:9h6f79>76e=9o?01>=l:0d7?854k3;m?63<3b82b7=:;:i1=k?4=21`>4`73498o7?jf:?07f<58l16?>m521f8965d2;:h70=;4;j097;<10g?47<278?n4>f89>76e=9lo01>=l:30;?854k389:63<3b8161=:;:i1>?=4=21`>7453498o7<=1:?07f<5:916?>m520d8965d2;;n70=;4;j09=n5232a964d<5:9h6??6;<10g?460278?n4=169>76e=:8<01>=l:336?854k38:863<3b8156=:;:i1><<4=21`>7763498o7<>0:?07f<5:o16?>m523g8965d2;8o70=;4;j09>o5232a967g<5:9h6?<6;<10g?45=278?n4=1`9>76e=:9l01>=l:317?854k388>63<3b8174=:;:i1>>>4=21`>75>3498o7<<7:?07f<5;?16?>m52278965d2:>270=;4;j088;5232a9713<5:9h6>:j;<10g?53k278?n4<4c9>76e=;=k01>=l:0ae?854k382j63<3b806==:;:i1??74=21`>64f3498o7==b:?07a<6?m16?>j516`8965c28=j70=;4;m0:4;5232f95=3<5:9o6<6;;<10`?7?;278?i4>839>76b=91;01>=k:0:3?854l3;7603498h7j52108965c2;::70=;4;m0:jk5232f95cc<5:9o6fc9>76b=9ok01>=k:0d;?854l3;m;63<3e82b3=:;:n1=k;4=21g>4`33498h7?i3:?07a<6n;16?>j51g38965c28l;70=;4;m09l;<10`?47j278?i4=0`9>76b=:9301>=k:32;?854l38;863<3e82b<=:;:n1=hk4=21g>74?3498h7<=6:?07a<5:=16?>j52318965c2;8970=;4;m09>=5232f964`<5:9o6??j;<10`?46l278?i4=1b9>76b=:8h01>=k:33:?854l38:463<3e8152=:;:n1><84=21g>7723498h7<>4:?07a<59:16?>j52008965c2;;:70=;4;m09>k5232f967c<5:9o6?76b=:;k01>=k:30:?854l389963<3e815d=:;:n1>=h4=21g>7533498h7<<2:?07a<5;816?>j52228965c2;9270=;4;m09?;5232f9663<5:9o6>:6;<10`?53?278?i4<479>76b=;=?01>=k:26f?854l39?o63<3e800g=:;:n1?9o4=21g>4ea3498h7<6f:?07a<4:116?>j533;8965c2:8j70=;4;l0:;i5232g952d<5:9n6<9n;<10a?701278?h4>879>76c=91?01>=j:0:7?854m3;3?63<3d82<7=:;:o1=5?4=21f>4>73498i7?8f:?07`<6?l16?>k516:8965b2;:<70=;4;l09<>5232g9654<5:9n6?>>;<10a?478278?h4>fg9>76c=9oo01>=j:0dg?854m3;mo63<3d82bg=:;:o1=ko4=21f>4`?3498i7?i7:?07`<6n?16?>k51g78965b28l?70=;4;l0:j?5232g95c7<5:9n676c=:9n01>=j:32`?854m38;n63<3d814d=:;:o1>=74=21f>76?3498i7k51dg8965b2;8370=;4;l09>95232g9675<5:9n6?<=;<10a?459278?h4=219>76c=:8l01>=j:33f?854m38:h63<3d815f=:;:o1>77>3498i7<>8:?07`<59>16?>k52048965b2;;>70=;4;l09=>5232g9644<5:9n6??>;<10a?468278?h4=2g9>76c=:;o01>=j:30g?854m389o63<3d816g=:;:o1>?o4=21f>74>3498i7<=5:?07`<59h16?>k521d8965b2;9?70=;4;l09?<5232g9666<5:9n6?=6;<10a?44?278?h4=379>76c=::?01>=j:26:?854m39?;63<3d8003=:;:o1?9;4=21f>62b3498i7=;c:?07`<4k535c8965b28im70=;4;l08>55232g977?<5:9n6>7e9>76`=9>h01>=i:05b?854n3;<563<3g82<3=:;:l1=5;4=21e>4>33498j7?73:?07c<60;16?>h51938965a282;70=;4;o0:;h5232d952><5:9m6?>8;<10b?47=278?k4=029>76`=:9801>=i:322?854n38;<63<3g82bc=:;:l1=kk4=21e>4`c3498j7?ic:?07c<6nk16?>h51gc8965a28l370=;4;o0:j;5232d95c3<5:9m6f39>76`=9o;01>=i:0d3?854n3;nj63<3g814`=:;:l1>=j4=21e>76d3498j7h521;8965a2;:370=;4;o0:j45232d95`c<5:9m6?<7;<10b?45>278?k4=259>76`=:;901>=i:301?854n389=63<3g8165=:;:l1>77b3498j7<>d:?07c<59j16?>h520`8965a2;;270=;4;o09=:5232d9640<5:9m6??:;<10b?46<278?k4=129>76`=:8801>=i:332?854n38:<63<3g816c=:;:l1>?k4=21e>74c3498j7<=c:?07c<5:k16?>h523c8965a2;8270=;4;o09=l5232d965`<5:9m6?=;;<10b?44:278?k4=309>76`=:::01>=i:31:?854n388;63<3g8173=:;:l1>>;4=21e>62>3498j7=;7:?07c<4h53578965a2:>n70=;4;o088o5232d971g<5:9m6n278?k4<299>76`=;;301>=i:20b?854n399n63<41823a=:;=:1=:l4=263>41f349?<7?89:?005<60?16?9>519789627282?70=;0;3;7>;4<90:4?5235295=7<5:>;6<6?;<174?70n2788=4>7d9>716=9>201>:?:324?853838;963<418146=:;=:1>=<4=263>766349?<751gg8962728lo70=;0;3eg>;4<90:jo5235295cg<5:>;6f79>716=9o?01>:?:0d7?85383;m?63<4182b7=:;=:1=k?4=263>4`7349?<7?jf:?005<58l16?9>521f896272;:h70=;0;03f>;4<909;6?>7;<174?47<2788=4>f89>716=9lo01>:?:30;?8538389:63<418161=:;=:1>?=4=263>745349?<7<=1:?005<5:916?9>520d896272;;n70=;0;02`>;4<909=n52352964d<5:>;6??6;<174?4602788=4=169>716=:8<01>:?:336?853838:863<418156=:;=:1><<4=263>776349?<7<>0:?005<5:o16?9>523g896272;8o70=;0;01g>;4<909>o52352967g<5:>;6?<6;<174?45=2788=4=1`9>716=:9l01>:?:317?8538388>63<418174=:;=:1>>>4=263>75>349?<7<<7:?005<5;?16?9>5227896272:>270=;0;173>;4<9088;523529713<5:>;6>:j;<174?53k2788=4<4c9>716=;=k01>:?:0ae?8538382j63<41806==:;=:1??74=263>64f349?<7==b:?004<6?m16?9?516`8962628=j70=;1;34=>;4<80:4;5235395=3<5:>:6<6;;<175?7?;2788<4>839>717=91;01>:>:0:3?85393;760349?=7;4<80:jk5235395cc<5:>:6fc9>717=9ok01>:>:0d;?85393;m;63<4082b3=:;=;1=k;4=262>4`3349?=7?i3:?004<6n;16?9?51g38962628l;70=;1;3fb>;4<809:6?>l;<175?47j2788<4=0`9>717=:9301>:>:32;?853938;863<4082b<=:;=;1=hk4=262>74?349?=7<=6:?004<5:=16?9?5231896262;8970=;1;015>;4<809>=52353964`<5:>:6??j;<175?46l2788<4=1b9>717=:8h01>:>:33:?853938:463<408152=:;=;1><84=262>772349?=7<>4:?004<59:16?9?5200896262;;:70=;1;024>;4<809>k52353967c<5:>:6?717=:;k01>:>:30:?8539389963<40815d=:;=;1>=h4=262>753349?=7<<2:?004<5;816?9?5222896262;9270=;1;003>;4<809?;523539663<5:>:6>:6;<175?53?2788<4<479>717=;=?01>:>:26f?853939?o63<40800g=:;=;1?9o4=262>4ea349?=7<6f:?004<4:116?9?533;896262:8j70=;1;11f>{t;1<1<7{t;121<7{t;1k1<7{t;1i1<7{t;1?1<77t^2:6?854i3;hm63<3c82gd=:;:i1=no4=21g>4ef3498i7?la:?07c<6kh16?9>51bc8962628ij7p}<5e83><}Y;=n:04:?854j3;=563<3b822<=:;:n1=;74=21f>40>3498j7?99:?005<6>016?9?517;8yv51;3:15vP<629>76g=9?l01>=m:04e?854k3;=j63<3e822c=:;:o1=;h4=21e>40a349?<7?9f:?004<6>o1v>8;:18:[51<278?l4>719>76d=9>:01>=l:053?854l3;<<63<3d8235=:;:l1=:>4=263>417349?=7?80:p733=833pR>8:;<10e?709278?o4>709>76e=9>;01>=k:052?854m3;<=63<3g8234=:;=:1=:?4=262>4163ty8:;4?:8y]730<5:9j6<9=;<10f?70:278?n4>739>76b=9>801>=j:051?854n3;<>63<418237=:;=;1=:<4}r153?6=1rT8::5232c9525<5:9i6<9<;<10g?70;278?i4>729>76c=9>901>=i:050?85383;;4;h0:;95232`9522<5:9h6<9;;<10`?70<278?h4>759>76`=9>>01>:?:057?85393;<86s|37;94??|V:<270=;4;k0:;85232a9523<5:9o6<9:;<10a?70=278?k4>749>716=9>?01>:>:056?xu4>h0;64uQ37c8965f28==70=;4;j0:;;5232f9520<5:9n6<99;<10b?70>2788=4>779>717=9><0q~=9b;29=~X4>k16?>o51658965e28=<70=;4;m0:;:5232g9521<5:9m6<98;<174?70?2788<4>769~w63b2902wS=:e:?07d<6>h16?>l517c8965d28;4;l0::l5232d953g<5:>;6<8n;<175?71i2wx?8h50;;xZ63a3498m7?9b:?07g<6>k16?>m517`8965c28;4;o0::o52352953d<5:>:6<8m;|q025<720qU?;>4=21b>40d3498n7?9c:?07f<6>j16?>j517a8965b28;4<90::n52353953e7>59z\027=:;:k1=;k4=21a>40b3498o7?9e:?07a<6>l16?>k517g8965a28;4<80::h5r}o43a?6=9rB88?5rn72e>5<6sA9?>6sa60294?7|@:>97p`91083>4}O;=80qc8>2;295~N4<;1vb;?<:182M53:2we:<:50;3xL6253td==84?:0yK71451zJ007=zf?;<6=4>{I176>{i>821<7?tH261?xh1900;6:=;|l55a<728qC?9<4}o42a?6=9rB88?5rn73e>5<6sA9?>6sa63294?7|@:>97p`92083>4}O;=80qc8=2;295~N4<;1vb;<<:182M53:2we:?:50;3xL6253td=>84?:0yK71451zJ007=zutwKLNu94184a6gf:9>vLMLt0|BCT~{GH \ No newline at end of file diff --git a/cores/KypSpectrum/loram.ngc b/cores/KypSpectrum/loram.ngc deleted file mode 100644 index 2645242..0000000 --- a/cores/KypSpectrum/loram.ngc +++ /dev/null @@ -1,3 +0,0 @@ -XILINX-XDB 0.1 STUB 0.1 ASCII -XILINX-XDM V1.6e -$3`f44<,[o}e~g`n;"2*73>(-80!<74012345678=:0<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;8=5?0123456789:;<=>?0123456789:;4=>?0122456789::<=>?0122456789:9<=>;0:23456789:;<=>?0103456?89934=:?01235=7009:;=HK?011@B0D789:;<=>?0163?56789:;<=O?092;4=6789:;=;>?0123416789:;<9>?0123416789:;<9>?0123416<89:;<=>?102F4567?9::4=>?290E6FC7898M5;H?7G@F=3G7;OKH9=<73E476=67<91;<=>?0124BC@ANOOMJKHIFGD4BC@00:O?012346>6:9:;?A12345678=:H==>?75;;5567JL:3=N6?EB2;51>1N183=9:?;123456609;3I<=?410;454?<9:MI:L7010;4CD?0:938KL7827BGCDC09;MJKJ?15284567898H4=6?48:347>789I;<2;=4KIF0AG05=789:;<9M?4143546?9=:;>N><1GD135278OL3;=>I2D@;BFE0;OLOJ=M?8GDEB=6382:;<=>;0143536789::<<>700237@B?K9:;9>7?8B5EAD70:99M4=>9055EB54781>;7=>?0963477689:;:3821G<64:0=;89>?8942414B0H2:O9>40127656789:?>=>?01230=6789:;<=>?013;456789:;<=>?0123456789:;<=>?4193476789:H<;M?8165445789;;<>871E2@40@6?1:7I8:I5L>N81:74>67:9:;<<>?1G53454?>9:;?1G215567JJ:N=96LB90;552739:9<=>?152E<5678829<=>?0@24251C8=:8O4?M02DBA5368>LH8=6>06;E47>50=:0<=78323456D8:?J<=>?06A2242780838=M:0GA3A4>78O29<<>;0:23656?88<9=N>?0523046788:;=;88D1630C74199MI56<111EF=6B;9HOM5??1B63?565892;?=6IFG:34=>189:;<9>?EG7G5360K8;2O>HN6352G6@E<9O88>HMC320116<898;<5><41DEB=>7:19;<5>=211EF6B5998N=>M?3GFE50G3NOLO<:??BGD26567<91;<:6=856345E?89I;70:I:4;>?35637406:9:?<6>?FB6;5572J1:AE23656709:;<=:>012305E7898>5N=7412:65229;:2<=:?;133456?09?3::?9051E<4C?8;:M;KL7C11;4CD7J;9JO;L;F22FACDDM92152844678923486:E0C2<6078L2;?K<1C:@55@AN>2H<=HIFG3305=799:9<5>?59F55@63;O2:I5>=0G5EB5EF:MNMJ5OM2GF4F1G49LLMJIH?86DEA47382::HNL?0BC71F6AK1<>9N;?3B@3<56799>==5>?11274547=92;<4?8FB230D46<1>;7=?KE1434D60K8LO8?JMD120GD6789:9<=8?012145D78;O9<=>?086345G481:;89>400G@6=6?8=;H4=?72C11057DN9HMJKJ<832;4557<=:;<98?832;F51?L0I;J;789:?<=>?202375E4:O2H<=>>63@74>66NJ:3<=7:78:;5FG5;OH;8=6?1123456F89:=<=6619;33F5?>929H9696C650=2739;MOL6=0D6045@D8;>IO8>?0@2345378=:;5I6?01234G078=:0?012;4=>6N98;8O>M?=HKFGAF44@ANO;;8=5?212347E781:=45>?292351679>HMH=>>1CDE316C8>LM?5M:BGDEB=E71OLMJN>;0:214567<1:;<;>>00200565K99:JK>80B23BC>089;9IO6IC502BCBA09:3JKHI9163?54789:?4=??9G33455?899H<=>I7GD;456C1OL;4?01DAF2>789LM4:>?23DE=>?04:355C699;;>5>?21334C@FN1:;>5>IB9:17=6AJ9I8=LMI34F35C@AN0;?<6>=0123<=6>0L;:><><81DA<5460=ABDA@C66NOLM=<:?;103456>0923M=<=410@450?<;:MI>L7811;4CG70:838;L?C25FGCD2K9;MJKH>152847678933=HIFC:@<6>7NK:6L6C2;74CBNKN3<=HIFD2205=7:9:9<56?59C25767:?:;I=>90GDEF=EF;1:MN==<3@A5E5B49LIMNIM?8GDEB47382:9IN?0100457E09I9<59;7B034465:1>;7=899?8125456?89:?<=>?01360F1B<1:H49>4022345>?8<29=>:;43D;5@67:9LMJL69A2:3BG>3;:KNIO?770DFBG3D81=MJH=>41937565812;95;813337367M1:964?J8;?5;<85235FC7:;:;:=>?0103450789:9<=>8092BFF1?>9?66:5452739>;<5>70363456780;;=5>?03:0B=E58=:8?I8=8726E415<;:<448=473FGD>5K=:0<9>=017;446B98::?006245@4ML2;7NH:I??392FF=>5;1:MN=M=4@GE74>0;OOM?5=;0:273F6B;=88H5?IDB027267<9K9<=>?212:4567:923<==?BB13056789::?L=;0163?52EK92:44><45:2G77D98:=<=?>02D3G5C789=;O=?>C82546EA81:344HIFGD6<16<8L0@23714389;;MI9700234107<91;9IM?82:;62B788:9J87:02AAGG@2NH9?><>?0123@56789:;><6ND6A@4177:FB2075G79=2;=N<74@2365G689;M<=>I01234=6F898><9??00:;4563:9:><9:?;14E@527?C@73456389:;<=>=0523454581<;4<>=9N052843@CI1:3=?J786A@G51FK99;<;6?0133056?89;;4<>?013@5507:=LH59>>2C;305=7?9:9>FGDEBC>6NOLMJK6<=5>?01A34542899;<<>6FB3@0567:=>;7=9KD123<9:;8?7?8420GCG?8=:;<9:>0121456789>9<5>?8GCE<56>:1:;49>406DG4173I>:H4=>;22330547:92;<=>?0623456789:;?96?1162536789:O;5>74193<767098H<<>?012F455789>;<>K?A06;42@7M8>97I8:38N6?80274>6FI923<=:?212;45D79::;<=>?3D6355>7?O;;=9>?D5255567K12N=5:?E93;5F2738:;<=>?0123456781:8==6?05200A768=:>J4=>09256474<9:94=6=851F<7>5<=:0==>?0123453D89:;;==>0123GC@08OI;>=0123456489:;<=>?832345658;H;I<>N02CG246388O2:>M7026:27>78>:J4?M;0:334567899;<;>?016;746?89>;?;6?E1633CB5I99MIL7?315EE567919OJ=<71963?46789:;>=>?0123416699:;<=><51434361NM>;O5>;E042GF6409O;89:I8323416<99:;<9>?11234565>J9;<=>=DE@G5AE7898N58>?4135324?<18H=<>?42536567<91:<=>70121456789:3<>??01274715I;:;<>H6232346C>8::?4:ML62:35C6F082?<6??01:34547?J:;<=>?102345>ANOK:O=K?7G32<=DAJ?;8<5=IAB234=1EM98;==:?;02145678;:;<=>?032245>781:8?=>?0120E<06K;:<>8>?092A05078=>M?0528554789:;8=H781231=0781:9:==<06F3A550L8I;?K7N10:3BCD388;;?OL?292@05=68;:;<=?72123<5670=:;<=?LDCG2=A>?8>H:4<:?0DC3G6E68O:;M<:74G:344>382;;>=>?00A3B=6?8;H3>=>?01:103>4N92;;H=8951EG76699HMNL6J1BDGA=4791>;7<>=0123656789:;8?>>11234564>9:9<5>8F043416E11:949>J83C2410A0;2;49>411034565:9:;<=>?213245678?LH48M?015E7543:9:<<;??41@:<=638?O2>=>?41924767899;<=>?0122=?612744C>:82;981:74>77:9:;4=7;::;<=:?3G:54567?O;?<=:?F1:44F2?<1:N=N>;E9C3452738:9<=6?2324G5678?:?<=>?81DEA57C89:4C@F4766<=:0==012245519>N34=:I90:37CCB88:?JKL60D237A@6:9:?8=5>2323454789:;4=:=013345678:<;8<>705D:04>18L2;<<>?08:3A56?>;0:3165678;8;J5>?01:;056789:2?;>:C1637F?0099MJ>>>095EBA6B:19OJ>O?1537?42=AGZ^X7OKDSC?56<768>0=94FNQWW>DBCZK6:?7>115920?OIX\^1mij}a=30>586<2;?6D@_UU8b`ate4891<3??;08JJUSS2~oj0=4?>0285?OIX\^1{hl30;2=05=588K2>3828;;5<;C5717=5AM98?>KM72B31<567<98<<=>?4520<56?K9:;<=;:FBA34122I=>;7?>L0121G=6?I?33<==?012@457ANMB9534C6AN1=H88>IFGD;GC>ANO;H49>421AB117D88224<6702:344E688=M>96?10@AJ?419155678JI9>N??9@2352>6N=8==:HID1615A70LJ?:4I989BA0EC10L1O3O:HIE0274>45?183>9?N3@:36F65;O>;?=>?0923416609:8<9>?8BA4FF5D;9:;9N>N666461273;8<4L6J400G<71BK9>=05234567<9;;4=>>453;456>K92=9>=913@44>6N8::<>>?01A344@ENO2;<=76EG2;66BCNO:M?9?8;<=;JFG17BC338:L?=N>9KC53B@21C:=I:IKH6CD63?66AIM8:O=??013;<51?<9;H=5<5IORVP?BNJ59:6=0>3:11>JSSX\^1HBO33083:45<;;0DYY^ZT;FLF956294?<6=841243146?9:3<7B82F4C60N08;<5:?;2:3@577K;:3<9670313457189:?:JL4C0G32B?K03MJ:7785287=1ALO;H8<6?01:;<7>788<;OHIFGA305=40J>;<<>>C422<4658KO:<9>71020B5>719:;:=M?90:A42E40?:HH:>761C@A1E38293JKJI1B22454601:=48>>40:2BC@C0::;496I8900@A@A8HH:NKHI4C20BC@EK?>;7>7L49220GBD=8=OO;792420G25?8?:9<=;>012145?78:>;4=>?0@0E<7278?3:49>43C670377JJ<>=KH?22235547:8:;>=<70G23454780:;><788:H==>?A8A4<16799:3<=6>01274>5EN=8;?==K392EB5>4J9>;?N?>8123454081:;<=><011145E7883;<=>>04G:45273:IH8=>?0C@705@D0L;9>I>=083;47678==:<=>:093346C28K:?=8>N876B456><=:0?NM;02337=1D8OL3>5H;111@6467>9:?<:>?012;4<67:H:;<=>?B12755BB<9338=5;JI>N1GG2436?99:9<=>?1123456?99:9M>M<05273898;8<>;0:1@G16B9J3OO8>711064=77<9I><=I1;?<;?90563?6EB<;2;44J=41D@4<37;=:8<9?70322451709:;85>>8567416<;M>?I5?L1EA74=4?808>9==?00234577>8:3=L72@44<767<918H;>=0D27@7350;:>==?K032755678=>;=56?05632=>6L>43636=37:8:?<6=KC52741D?>J:MO=811234566819I<=M?003G1166:9;8M9:?;2F@05>68:2=<=6>C@A5G464KK;IJ:H771324565K93;<=35287AB381:;NL;L01230C5D>9;HN4LI5GC0446789:;<<>?0323<777I9=HO=>?00F405=4LO>J4?:<51224147992;<=>=1123G56389289:M>26:15<23829OJN<7293GG56?9J:>I=??41224=7A1=::4=><85:7=F27>99HJH>>B96E3CC0;J>;7>KI4323<6?1<9=HO;7?4520G6??8?::<==>8122453789H>43G6365679M9;45?052555>78>:;=5>>5EA243618K2;<=?>23274>5AK928JN>?212340>AN:>MJ<6?3D:46=5ANO;>?=6?0B347527=1:N?<>8E90345273:LN<==86@20656791LM?=HI1D20A51A0:LOJ<;78CDAA<178:LM45K>56FE4D>48=:0?KK?025F656789::4KH>4GD:055D8O:H;KJI140305719>:?<=97272206@?:1:?8=5;0123456589:;8=M=012745E789:;<<>?0123466489:;;0:63456789>;<=>?0163456?89>;=5>?01633G>789>;:<>?0163451589><<=??6163?16789:;O?>L07;;477389;?<=?IFE73447C9>N?<NJO5>IFGD;416<<9:;<9>?213@4567;99:<=>?41044DE7>99M5=K;7G@B=5>7?OLH=;>?3GD36=47<91?<=>7090@410789>?<<=?017346C79J:9<:9>3824BA77?9:8JK7?E120@C7588>?<6:?01:7455699:;<=J700234527;O:3>=4:?:;;K6<26:0BC@B:>2MJH>926:EBC@B:>2MJK=J26DEBC>?:>LMJKHIE528051D;193<9=7011@61BA89?;<=>7213361678;;;O=>78C@@7FD78:>3>1GD215268<;<0B0011E4IO=:<=>?4B07G5C6J98:;=>84112BC@C8=O;H<9KC033G242KJ;IJ:9K8B:33C@A89>;79??0127G=2?8?;2<=?9011@4660NOL;8=?IFGD@426BJK938KLIFED;G=>ANOL3<9>4402345>78>2JI5?8LMJK6L81DE<267J:OI5OML1CDEBCBD09=MJH?>41975567812;;56NJ88>HL6B5FEFC@AN1I34:HIE0274>2689:;456981G2E567?1;MO?=>FGDE41B7NOLMO=H=EGDAG114N>LM=C32;457?8;;3<=>L0134FA3788;O?:;L023G72BD?016;<5>6M9:;2H<=HI862366CE8O>3<73B235F679OHOJ=>>0GD;356A8OL3;9:81GDGB=271OLMJ5>;0:60BF478=O;H9O?050321E?;J?;4=>?43634=67:9;A5234531N1>;>9:?8B63?11AK92;O9J;C122G76B99:?<5:?82D:435788=;<5:>EB7546EE9189<;HIF8D4G47<<3CE\XZ5DHRB86<768;087GAPTV9@LVE4:0;2<>44;KMTPR=_LK7?7>11197>LHW]]0\IO2<:1<26>2=G\^[YY4KOQC?7?699;1?6B[[PTV9@JVE4:0;29>451234567:9>H<=>?41024=67L99=4>J?214EF4?7JOON9<>?3G;24347;KL;>==?4196456789:=<:6?01214567898J8O=61G2F46C>;L:8JK>900:74>3789:?4723456>;8:;<4M?3D:2@=27=K3:NNLIB7;4711AN18N>9=IF1036=273<:;<5>?0123456789:9==6?09@4B=3A8H:8I4;>01202<17K1:?C10E4764<=:09=>?8121452B89:;==<>012:55518>N3:=;I96:;FC@F8>:3;K7?0@277G@7:1:H8=5:2123456589:;<=>?842345658:;3J?38707A34463>O894<:;0:7;GA229J8;4=>?8100<566M9I;;KHI4032A372K9;:H<9KC53B@21>0J;:JK9KCD63?36A:08:O=??F73;<51?99;?<=>IFGF;456?81L34<=KDGD3E64ANOLHI?=IFG1GE16<>;:;<=>L01:504>68:2;<799=M4:>?23DE<227;:LMHKM;08DEBC?7<91=>:MN03A37052365>4N0:9>5>?7@2@04EDNL:8OO:?61:2B2@B?OI?<68<051:3FE7;88;9:j46rn{=qw`9=>&>9>474A3431B<0>;<=>?9GD04C@5=9=NMN?LBGFE4=7789K?IH48K?7B:0BC@>9028JL:?7120B<>7K8=8NN>?80274>1?KM::?82A;<56489::I=>>7GDG<577N::<<=J>FGDEG137NOLM4I;>EGD:GD273>2MJIH>C133456?01=3<=?90B3EBCB798:O55H?802EB=17K:8IJKHLC3@FBC1C8=:0;4:;01272A5?81;;8<=I9173<46?;O2;<>>?0323G56?119H?5H?00:;4@@00?:38=58BG2332CF8;;;<=?:FG;3BC750:O;5K:8FBD:7D2ANL8:;?>9;0:5AB14?999O?N>?054:7F27;JO2NKJIC2:24=6789:8<=>;11604=DFN1I;49OKC263?2BF9;INO<:;8==L10:35525:::3<=>;00:3426789:H=OH70127=G27<91B?L><9>KL00A65=668=:;;=6?07275=66JL:;<=>6A1654547:::?<69I790;7=0CL?:3?N:2819M5=>>012455E38JN>:==JB2:@@15ANOO<;N:?;6DE0D65<>N94?6?03D2EF66KM;2J4HL1133<5658;;3<=<<0913G660K1:;<4>835283C@ANOLN;KHIFGDF3C@ANOLN;KHIFGDF5C@ANOL3<16:;4=45<::;<=>=03@7GA4F8:O88I68FG@:2<>ENJI2=?M?01635C1?8;?;?=>?05476C5D;9H;?H?;196322B3812;;97809A13=G?;?>;75>?01234176NO23<;>M01235D47?:I9<:>481234566<9:;<=>>A9024565<1828H?611@5247>:<;:9>799:;<=>?7B274573;9:;<=>746AFA507:L;NI5?IECF7E51AJ?;>>9LKF903652731:?0433<467KO:90923<5658=>;<=<90B22<46AK>2M<=?N45G53D030=:04=HL023@=5CD81;HM=<:9167<46789:H?<1K;=L>716232F659>LMJ=:J06D;3F70;LH2NNMI2GDGB=E?0OLMJ<>;0::24547012>4I>>E162B=7A899:J:HI8D23BC>08898JKHMCE1ABC@AL123;KHJ0063?=4789:?O5>79D33455?899?<=?I35D3456AN1=;789:;=:>?043;1129;>JSSX\^1hb{{a=594;74310DYY^ZT;flqqd;?3:58=56012345679>I;<=;;:7901F3A1>189I=J=70::;<=:>01DE=2>798HI4:>731DE<2E7;:LMJKML38DEB4B><91J4KHKF0A;5565812;:5??1D3;4C@AL19:<5>6F1:04C@??928?OHIF5A3FC@ANM>37LJKR@>3:<=FLMXJ0<>19:CG@WG;98427LJKR@>26;d720MIJ]A=5=<>GCL[K74364AEFQE9?902KOH_L30?;8EABUJ5;;245NDEPA847912KOH_L31319:CG@WD;9:437LJKRC>2:==FLMXI0?07;@FGVG:4611JHI\M<5<;?DBCZK6>255NDEPA838?3HNO^O28>99B@ATE41437LJKRC>::6=FDE>;7O>>A902G57788;;8=87012@054A:>O;<==74D@;<75?8O8;5>?NEG@7@47AMO9259>4B1DB=77D88:;<<>;06:744E30;LMJH><02A7AG>?::2;J>6730CFBG3??:LNJO67419A<2E709:=H?>680A35F768>:3==6D>K=:;<5?63B2;4546;O;;8=M>091E<56689:=<=:>19263F5?>9>;MN697GF50=273KI?8=L>4C@FG5@C8;::M<>;493346@5K93;<=>?C1@34634K::?<<9NC10;4=2F<=:0NNLK891;=3163<47?;O2;<4>?0623<47?09<;?NHJC12;7@@AMO>38=5MFG:0BCB>NJ:8JKJN7B20BCBENOLMJKJMFGDEBCBENOLN<:JMFGD;457?89:;<=?;0:@EBC@ANMHMJKHIFE@F3C@B?MHN<=>?7EDF4567?ONN<=>?7CA@4567;KLM4=>>FG:8FPUXAGLD8=5L0123456798:;<=>?C023452D09=;O?:902GA27258>L:8?:9806:37619>:JO=O;0:A345678KI;<=>?02A345678:I;<I;<=>?02A345678:L;<=>?0G63?F6789:;NN>?01237F7?89;3?N?71G;;7@7?89;3;N?7013;7F5?89;H?K>?0123B16>113@4564KJ9;<=>?4GDA4?7ED;6F43<91H?01324C@A098:?0165<6@41J>I<>K61D60B@16;K:IJK:L72:AB26F888?<6M>01230F>309<2M=6?71250556NOLM<;M?FGDEG0D7>KLION=MFGDE?NOLM==:?;B33456?01?3:=?N092445038:;788>;<=HMDG2354DA0>:;9=9I86A7B6@ALO2O<4HIFG2305=D:9:;<9M7092F<=678=:;=9>?1G@E@5669KLM;9><0G@A3F2EIOLOJ5M?9GDEB=6382I9==>;0122BC@D099?N=>?01D34C5>K9=;?H?>E15E@2?409HMJH?80BDEB=4789>;7N:?0126<57?M9;;8==?013;056A>;K3<==70G@;<75?8OH3O>;NEG@;@55ANOL2=?5LE008GMCDCVFBOH@\E^VZT@2EKC;=;96MCK3Z;?FJL:Q;3<85LLJ;30>EKCH?0OAEN169@HNG6L;=0OAEN1E64?FJLI8N386MCKC78GIME9<1H@FM>5:AOOA723JF@H[m4CMIGRZBN^@NN96MCKGZ;?FJLNQ;3<45LOLOJPQCC9=1HC_KPGDLFVDRNGGUBBKA8;BPFEQCC<91O<=>?4125456789:88:>?01614757J;>H<>8>11:143D699:3<>69GMD:6:7=0HDO312<4?AOF48>5;6JFA=36:2=CAH6::394DHC?52803MCJ0<617:FJE97>6?1OEL2>>69GMD:587=0HDO320<4?AOF4;85;6JFA=00:2=CAH698394DHC?60803MCJ0?817:FJE9406>1OEL2=8?58@LG;:04=7IGN<3<4?AOF4::556JFA=12>5803MCJ0>?16:FJE959>2NBM1:16:FJE939>2NBM1816:FJE919>2NBM1616:FJE9?9>2NBN1>17:FJF9776>1OEO2>1?58@LD;9;4<7IGM<01=3>BNJ5;?2:5KIC>21;169GMG:617<0HDL31?58@LD;:94<7IGM<33=3>BNJ5892:5KIC>17;1908;EKA8739?2NBN1<9>69GMG:5?7=0HDL329<4?AOE4;35:6JFB=0=3>BNJ59;245KIC>05?69?2NBN1=>>79GMG:46?1OEO2;>79GMG:26?1OEO29>79GMG:06?1OEO27>79GMG:>6>1OE]O30?58@LVF484<7IG_A=0==>BNXH686=08;EKSE959?2NB\O2?>69GMUD;97=0HD^M<3<:?AOWJ591<394DHRA86813MEJ0=08;EMB8469?2NDM1?>>69GKD:6:7=0HBO312<4?AIF48>5;6J@A=36:2=CGH6::394DNC?52803MEJ0<617:FLE97>6?1OCL2>>69GKD:587=0HBO320<4?AIF4;85;6J@A=00:2=CGH698394DNC?60803MEJ0?817:FLE9406>1OCL2=8?58@JG;:04=7IAN<3<4?AIF4::556J@A=12>5803MEJ0>?16:FLE959>2NDM1:16:FLE939>2NDM1816:FLE919>2NDM1616:FLE9?9?2NDMR\JG79GKG:76>1OCO2>0?58@JD;984<7IAM<00=3>BHJ5;82:5KOC>20;169GKG:607=0HBL318<5?AIE484<7IAM<32=3>BHJ58:2:5KOC>16;1>08;EMA8729?2NDN1<:>69GKG:5>7=0HBL326<4?AIE4;25;6J@B=0::3=CGK692:5KOC>04;?69GKG:497<0HBL33?48@JD;<7<0HBL35?48@JD;>7<0HBL37?48@JD;07<0HBL39?58@JDXZLM<7IA_A=2=3>BHXH6:2:5KOQC?6;?4?>69GKUG;;7=0HB^M<1<4?AIWJ5;5;6J@PC>1:<=CGYH7?7>17:FLTG:46=:0I=HND13@<4>AN823<>6?00A3441AHIFG:@4G@AN:N;8=5J410;64E791O:==>?392351778O9JH5>?092FE=>4;1:MN56M1@GEF1?E;OOM?4:;0:G705779J::488214567K9::JKMI0133FG>A01:8JK6I0B10BC@AKJ3IJKH<9B63?@>D=<>:O=?7192;<54?89;N<=?IFBF3447AJ1=;<8>IF95@<25ANOL?O8LIFG1@06=BFH90ICLm;DL\VVRUIDUJn6KA_SQWVDKXJ=:0J5MID43@44>78923<>6?00G3G41ANO>:=<8=0G2355@ANO>;=?JIFGA@@BK=:;0103452689:98=M809237F5?<9:9==M=E22541273OLM4>HIFGD@46>4NOLH<:>?015EG26789=MO=>?0120G56789:88=5IFGDEBC@?89:;<=??0123456?898;JK?702A2BCBF8>I:JKJM06:2BCBEM>28JKJ;0:DEBC@ANOLMJKHIFGDEBC@ANOL;<=>IFGA3457ANOLM4=?IFGDE<57ANOLMN5=IFG63?C@ANOLMJKHIFGDEBC@ANOLMJKHIDGDEBC@D;OLMJKH73GDEBC@??OLMJKHMFGDEB4=@;2MEH55FNHVS[56?3@DBX]Q?199JJLRWW9837D@FTQ]37==NF@^[S=:7;HLJPUY7=11BBDZ__14;?LHN\YU;;:5FNHV\451N7:KMMQY7J>1BBDZP0B58MKOSW9N<7D@FT^2F3>OIA]U;J:5FNHV\551369JJLRX9==0ECG[_074?LHN\V;=;6GAIU]232=NF@^T=594IOKW[4?03@DBXR?N7:KMMQY6J>1BBDZP1B58MKOSW8N<7D@FT^3F3>OIA]U:J:5FNHV\651594IOKW[7?03@DBXR1BBDZP2B58MKOSW;N<7D@FT^0F3>OIA]U9J:5FNHV\751?8;HLJPZ55?2CEEYQ<369JJLRX;==0ECG[_274?LHN\V9=;6GAIU]032=NF@^T?594IOKW[6?03@DBXR=N7:KMMQY4J>1BBDZP3B58MKOSW:N<7D@FT^1F3>OIA]U8J;5FNHV\E3=NF@^TN45FNHV\BLJB>2FDMIKK6:NLGNCC?2FDKDMNLb9Neoiu^lxxeb`l;LkmkwPbzzcdb?5A039M52=IM]]D^F:4NNLF52=HX]CFEWKPPSKNMQOQMZUEKN?4Pb9S*766;8::?RB;;QCQPd=WAGUIY^GKXc9SMKYE]ZDJAH84PRFLJ@g;0Y=!wsu]ahnYjmdUlick}aumq+bhf|`|nn`i!n`vjr`YedbUfi`Qheo-ueioc&jy~"|nmmmlt^7Z&{kf"!|6^kmmq(uid%_^XKPDQ,SVLK60'xja:?4U1-{wqYedbUfi`Qheogqeqiu'ndjxdxjble-jdrn~lUi`fQbel]dak)qieco"n}{r.pbiiihxR8V"ob.s-p2Zoia}$ym`![RTG\@U(WZ@G:4#|nm638Q5){}Ui`fQbel]dakcui}ey#j`nthtffha)fh~bzhQmlj]nahY`mg%}magk.bqwv*tfeeed|V=R.scn*w)t>Vceey }al-WVPCXLY$[^DC>8/pbi27<]9%syQmlj]nahY`mgoymya}/flbplpbjdm%blzfvd]ahnYjmdUlic!yamkg*fusz&xjaaa`pZ6^*wgj&{%x:Rgaiu,qeh)SZ\OTH] _RHO2<+tfe>;0Y=!wsu]ahnYjmdUlick}aumq+bhf|`|nn`i!n`vjr`YedbUfi`Qheo-ueioc&jy~"|nmmmlt^3Z&{kf"!|6^kmmq(uid%_^XKPDQ,SVLK60'xja:?4U1-{wqYedbUfi`Qheogqeqiu'ndjxdxjble-jdrn~lUi`fQbel]dak)qieco"n}{r.pbiiihxRVceey }al-WVPCXLY$[^DC>8/pbif=R[LXTZD]FBMG0?SED12\BIZQ[YQG5?RCF494=7ZKN<0<5?RCF4;437ZKN<283:3=PMH682;5XEC>3:3=PMK6:2;5XEC>1:==PMK686=09;VGA868e3^XBXHQIISQWg>QUA]OTABJJ_@a8SWOSMVGDHHQM1e9[MIOIP$RON->!1!QWQG&7&8*J_NGF6:ZPPIOE?2RXXRIAD69[WQYQKJh0TRM@RD]JJCI13QniSDji;Yfk[Utne_oydaa119[`hYJiceyZh||inl24>^ceVGbbb|Yesqjkk527?6912koho312<;?dbczh6:255ndepb878?3hno~l2<>99b`atf4=437ljkr`>6:==flmxj0;07;`fgvd:0611jhi|n<9<;?dbczh62255ndepa858>3hno~o2>0?;8eabuj5;:245ndepa8449j2kohl31283:<=flmxi0<=18:cg`wd;9720mij}b=0=<>gcl{h7?364aefqf92902kohl35?:8eabuj5<546okds`?3;>8:`ooZkbeVmnbR~}il]tmaroW=;37obd_lgn[bciWyxbaRyfduj\14>6lck^ofiZabfVzye`Qxr`rsawYt>VceeyQ=239ahnYjmdUlicQrho\swgwxlxT;Qfnhv\7740:`ooZkbeVmnbRx8_20`?gjlWdofSjka_w5\7)&_aecet-M@RD"Dakcui}ey,<:!7068fimXelgTkh`Pv6]0[}us9:1i`fQbel]jjussWkfdof?;;cnh[hcjWf|xzPbmm`o1=ddbk?7nbdb69gmkg;87=0hd`n<0<4?aoii585;6jfn`>0:2=cagk78394dhlb80803mcem1819:fjjd:0294<7igaa=5=3>bnfk6;2:5kio`?5;169gmkd;=7=0hd`m<7<:?aoij5=1<394dhla828?3me~xl2?>99gkprf48437iazt`>1:==cg|~j0>07;emvpd:3611ocxzn<4<;?air|h6=2l5kotvb82<7611ocxzn<6<;?air|k6;255kotva848?3me~xo2=>99gkpre4:437iaztc>7:==cg|~i0807;emvpg:16h1ocxzm<683:==cg|~i0:0:;mmqeh2b;2fd~lc#bmi\i`kXoldTz:Q<,za\eabuiV}bhyf215.`[dbczkU|eizg=06/gZgkofxbxec21-a\e}oXamU|eizg=5.`[d~nWzfjzhQ{yqg>4)eXiqcTxt~j=0.`[gsmVybvh36,b]`khkhfVigg0>#c^ffbdsk|Vnjxl3?,b]gmvgedlU|m`Pbit\gjjk59&hSig|acnf[rgufVhczR|nnfg>4)eXmekico{inl\`lt:LV%yeno}dn-Svjbk}ex#k~ha.x{tu65'`zhckPdhp,phv(Wjm$ nQjn``oaZ55j`~Tmij}erq>4)eXnhgb`t3|p`pwek0+kVbjRowi^kg95*dWakxSh`n=1.`[mgtWldi1="l_icp[lhmmj~n~3?,b]kevYjmdUdyy~zt^pfcvYf59&hSeo|_lgn[jssx|~T~hi|_c?3(fYoizUfyuQ`uurvpZtbozUj1="l_icp[hsWf|xzPrdep[g;7$jUcm~Q}efafe86+kVbjR|jgbga95*dWakxS}{a<2/gZnf{Vxxxo3?,b]kevYtgo~nonQfnqww[wc`{Vk6,b]nahYsqyo6>!mPmtz\tlvbd`dnS~zngdq>4)eXx{cfSywe<3/gZtbimUoi}zg_`?226>3$jUyiljPddrwlZd:9?938!mPrdcg[roc|aUj15"l_sgb`Zqnl}bTn06#c^pppZvuafxbxtQn=BG/gZtt|Vzyeb|ftx]a9FC+kVxxxRzvpd?P]KE+kVxxxob_`?3(fYu{}xjaRl20-a\wlkXkffge~g`n^akafm:IEF'oR{|e^`qehYedfi`1="l_tqf[gsmV}nm0>#c^wpaZd~|lU|io3?,b]vw`Ycmok~`yQkauc>5)eX}zoTinm20-a\qvcX{flinm20-a\s`gX`nd0?#c^uffZqnl}b6=!mPwskwaZbbx}bTm0?9396/gZqua}oThh~{h^`>535?<%iT{g{e^ol``Yf5^XBXHQIISQW(fYpz`~nS`ake^`>SWOSMVLB^^Z#c^uqmqcX`ndRo28-a\swosmV}bhyfPb<:/gZ~cmchikobim{>wugu|hd=q<74lnpbi)dkcVgnaRijn^t4[6*|u11eknlzimf1?ki?3~oj0=4?>79tad:7611|io2?:1<5?rce494vLM~9bc9CD}4e=3L187?tS034>7312;;o6<=<7`07>71?::qe>8:51:l110<13-8>>7<;d:P543=:<<1>28?6]=1381f=<72898;l<;:35;72=T98?1>o650;3072g5<38<4>o4d3`6>5<628qX=<95244964b=9:9pS:;o1<7?51;61V76?38>:7<>d;3072g5<38<4>>4$31e>7733_8>?74=r:8<1<6s+20g9ed=e:k?1<7:?:`876~N5;m1/>>:52c78^c2=0r?j6865c586f?3>2j?1o;4l7;'607=:1h0(<>>:3`4?!76>38i:6*=2c82?!45i38>;6g=bc83>!45838im6`=1g83?>o5=m0;6)<=0;06g>h59o0;76g=5c83>!45838>o6`=1g82?>o5=h0;6)<=0;06g>h59o0976g=5883>!45838>o6`=1g80?>o5>?0;6)<=0;06g>h59o0?76g=6483>!45838>o6`=1g86?>o5>=0;6)<=0;06g>h59o0=76g=6283>!45838>o6`=1g84?>o5>;0;6)<=0;06g>h59o0376g=6083>!45838>o6`=1g8:?>o5>90;6)<=0;06g>h59o0j76g=5g83>!45838>o6`=1g8a?>o5=l0;6)<=0;06g>h59o0h76g=5983>!45838>o6`=1g8g?>o5100;6)<=0;0:<>h59o0;76g=9683>!45838246`=1g82?>o51?0;6)<=0;0:<>h59o0976g=9483>!45838246`=1g80?>o51=0;6)<=0;0:<>h59o0?76g=9283>!45838246`=1g86?>o51;0;6)<=0;0:<>h59o0=76g=9083>!45838246`=1g84?>o5jm0;6)<=0;0ag>h59o0;76g=6b83>!45838=n6`=1g83?>o5>h0;6)<=0;05f>h59o0:76g=6883>!45838=n6`=1g81?>o5>10;6)<=0;05f>h59o0876g=7483>!45838=n6`=1g87?>o5?=0;6)<=0;05f>h59o0>76g=7283>!45838=n6`=1g85?>o5?;0;6)<=0;05f>h59o0<76g=7083>!45838=n6`=1g8;?>o5?90;6)<=0;05f>h59o0276g=6g83>!45838=n6`=1g8b?>o5>l0;6)<=0;05f>h59o0i76g=6e83>!45838=n6`=1g8`?>o5>>0;6)<=0;05f>h59o0o76g=a383>!45838j=6`=1g83?>o5i90;6)<=0;0b5>h59o0:76g=9g83>!45838j=6`=1g81?>o51l0;6)<=0;0b5>h59o0876g=9e83>!45838j=6`=1g87?>o51j0;6)<=0;0b5>h59o0>76g=9c83>!45838j=6`=1g85?>o51h0;6)<=0;0b5>h59o0<76g=8g83>>o5190;66a=ac83>!45838jm6`=1g83?>i5i00;6)<=0;0be>h59o0:76a=a983>!45838jm6`=1g81?>i5i>0;6)<=0;0be>h59o0876a=a783>!45838jm6`=1g87?>i5i<0;6)<=0;0be>h59o0>76a=a583>!45838jm6`=1g85?>i5i:0;6)<=0;0be>h59o0<76a=b583>!45838i?6`=1g83?>i5j;0;6)<=0;0a7>h59o0:76a=b083>!45838i?6`=1g81?>i5j90;6)<=0;0a7>h59o0876a=ag83>!45838i?6`=1g87?>i5il0;6)<=0;0a7>h59o0>76a=ae83>!45838i?6`=1g85?>i5ij0;6)<=0;0a7>h59o0<76l=5183>4<729q/>>:522g8L72b3A88h6a=1b83>>{e:=l1<7?50;2x 75328i=7E<;e:J17a=h9j?1<75rb31`>5f}2>3?<64759e8:e??b20h1:4498;4b>>0v(??m:3`:?k7613;0b=82d:ml4?;%3af?7em2.:nn4>bd9'5f1=;2.:o54<;%3`=?5<,8ij6>5+1b`97>"6kj087)?ld;18 4eb2:1/=nh52g9'5a6=:k1/=i?52`9'5a4=i2.:h>4if:&2`1<4<2.:h84jc:&2`34;c:&2a1<3l2.:i846;%3f2?713-;n;7=4$0g;>6=#9l31?6*>e`80?!7bj390(5+1g397>"6n;087)?i3;18 4`32:1/=k;53:&2b3<43-;m;7=4$0d;>6=#9o31?6*>f`80?!7aj390(5+21397>"58;087)=;53:&143<43-8;;7=4$32;>6=#:931?6*=0`80?!47j390(?>l:29'65b=;2.944>019'67e=mk1/>?j523d8 7572;1/>>?52:&10g<5

9m525c8m7442900e<>7:188m4df2900e?<9:188m46c2900e?<;:188m7422900e?>51728j77a2910e<;i:18'676=9?:0b??i:098m43b290/>?>51728j77a2;10e<;k:18'676=9?:0b??i:298m723290/>?>52518j77a2910e?:=:18'676=:=90b??i:098m726290/>?>52518j77a2;10e?:?:18'676=:=90b??i:298k4>7290/>?>516d8j77a2910c<9j:18'676=9>l0b??i:098k41d290/>?>516d8j77a2;10c<9m:18'676=9>l0b??i:298k41f290/>?>516d8j77a2=10c<96:18'676=9>l0b??i:498k41?290/>?>516d8j77a2?10c<98:18'676=9>l0b??i:698k411290/>?>516d8j77a2110c<9::18'676=9>l0b??i:898k413290/>?>516d8j77a2h10c<9<:18'676=9>l0b??i:c98k416290/>?>516d8j77a2j10c<9?:18'676=9>l0b??i:e98k40a290/>?>516d8j77a2l10c<8j:18'676=9>l0b??i:g98k40c290/>?>516d8j77a28:07b?9c;29 74728=m7c<>f;32?>i6>k0;6)<=0;34b>h59o0:>65`17c94?"5:90:;k5a20d956=6:9l5=0=83.9>=4>7g9m64`=9>10c<6::18'676=9>l0b??i:0:8?j7?<3:1(?8283>!4583;=h9181<7*=21823c=i:8l1=o54o0:2>5<#:;:1=:h4n33e>4e<3f;5$303>41a3g8:j7?k;:m237<72-89<7?8f:l15c<6m21d=;950;&165<6?o1e>=4k1:l15c<732co<7>5$303>a7odm3:1(?0=h59o0=76gk8;29 7472m;0b??i:698ma1=83.9>=4k1:l15c5$303>a7oc<3:1(?a=h59o0;76gkf;29 7472l:0b??i:098mac=83.9>=4j0:l15c<532coh7>5$303>`654idc94?"5:90n<6`=1g87?>ob13:1(?4n33e>2=h59o0376gj5;29 7472l:0b??i:898m`2=83.9>=4j0:l15c5$303>`6ock3:1(?0b??i:198m434290/>?>51468j77a2810e<;>:18'676=9<>0b??i:398m437290/>?>51468j77a2:10e<:i:18'676=9<>0b??i:598m42b290/>?>51468j77a2<10e<:k:18'676=9<>0b??i:798m42d290/>?>51468j77a2>10e<:m:18'676=9<>0b??i:998m42f290/>?>51468j77a2010e<:6:18'676=9<>0b??i:`98m42?290/>?>51468j77a2k10e<:9:18'676=9<>0b??i:b98m422290/>?>51468j77a2m10e<:;:18'676=9<>0b??i:d98m424290/>?>51468j77a2o10e<:=:18'676=9<>0b??i:028?l7393:1(?4183>!4583;>86`=1g826>=n9:l1<7*=218211=i:8l1=>54i01f>5<#:;:1=8:4n33e>42<3`;8h7>5$303>4333g8:j7?:;:k21f<72-89<7?:4:l15c<6>21b=8l50;&165<6==1e>?>51468j77a28207d?:9;29 74728??7c<>f;3:?>o6=10;6)<=0;360>h59o0:m65f14594?"5:90:995a20d95g=e:9j56e=83.9>=4>559m64`=9o10c?>51`g8j77a2810c?>51`g8j77a2:10e<89:18'676=9??0b??i:198m403290/>?>51778j77a2810e<8<:18'676=9??0b??i:398m405290/>?>51778j77a2:10c?>51c18j77a2810c:18'676=9k90b??i:398k4d7290/>?>51c18j77a2:10c?>51`38j77a2810c<7j:18'676=9h;0b??i:398k4?c290/>?>51`38j77a2:10c<7l:18'676=9h;0b??i:598k4?e290/>?>51`38j77a2<10c<7n:18'676=9h;0b??i:798k4?>290/>?>51`38j77a2>10c<77:18'676=9h;0b??i:998k4?0290/>?>51`38j77a2010c<79:18'676=9h;0b??i:`98k4?2290/>?>51`38j77a2k10c<7<:18'676=9h;0b??i:b98k4?5290/>?>51`38j77a2m10c<7>:18'676=9h;0b??i:d98k4?7290/>?>51`38j77a2o10c<6i:18'676=9h;0b??i:028?j7?m3:1(?8e83>!4583;j=6`=1g826>=h91i1<7*=2182e4=i:8l1=>54o0:a>5<#:;:1=l?4n33e>42<3f;3m7>5$303>4g63g8:j7?:;:m2e<<72-89<7?n1:l15c<6>21d=l650;&165<6i81e>?>51`38j77a28207b?n6;29 74728k:7c<>f;3:?>i6i<0;6)<=0;3b5>h59o0:m65`1`694?"5:90:m<5a20d95g=;o02b?7c32e:594?:%014?7f92d9=k4>e:9l5=?=83.9>=4>a09m64`=9o10e?:6:18'676=:=20b??i:198m720290/>?>525:8j77a2810e?:9:18'676=:=20b??i:398m722290/>?>525:8j77a2:10e<=;:18'676=9:90b??i:198m455290/>?>51218j77a2810e<=?:18'676=9:90b??i:398m44a290/>?>51218j77a2:10e<?>51218j77a2<10e<?>51218j77a2>10e<290/>?>51218j77a2010e<<7:18'676=9:90b??i:`98m440290/>?>51218j77a2k10e<<::18'676=9:90b??i:b98m443290/>?>51218j77a2m10e<<<:18'676=9:90b??i:d98m445290/>?>51218j77a2o10e<<>:18'676=9:90b??i:028?l7583:1(?1g83>!4583;8?6`=1g826>=n98o1<7*=218276=i:8l1=>54i03g>5<#:;:1=>=4n33e>42<3`;:o7>5$303>4543g8:j7?:;:k27g<72-89<7?<3:l15c<6>21b=>o50;&165<6;:1e>290/>?>51218j77a28207d?<8;29 74728987c<>f;3:?>o6;>0;6)<=0;307>h59o0:m65f12494?"5:90:?>5a20d95g=6=4+2329565;4?:%014?74;2d9=k4>e:9j54d=83.9>=4>329m64`=9o10qo<>:52308L72b3A88h6Ti4;ax13<2?33264j59`8:a??e2?31:549a;;`>31=u-8:n75=i9hk1<6*>bc82f`=#9ki1=ok4$0a4>6=#9j21?6*>c880?!7di390(7e<,8n:6?74$0f1>7><,8n86>=4$0f7>4d13-;o97;l;%3g2?013-;o;7h>;%3g;%3gg?7b3-;oh79?;%3ga?5?3-;oj7ol;%3f4?263-;n=7??;%3f6?333-;n?7;=;%3f0?733-;n97?=;%3f2?763-;n;7l8;%3fd3-;n5764$0gb>6=#9lh1?6*>eb80?!7bl390(5+1g197>"6n=087)?i5;18 4`12:1/=k953:&2b=<43-;m57=4$0db>6=#9oh1?6*>fb80?!7al390(5+21197>"58=087)=953:&14=<43-8;57=4$32b>6=#:9h1?6*=0b80?!47l390(?>j:29'65`=:2.9==4=;%025?46i2.9>:4=329'67>=99:0(?<6:023?!45k3oi7)<=d;01b>"5;9097)<<1;08 72e2;>j7)<;c;07e>o5::0;66g>0983>>o6jh0;66g=2783>>o68m0;66g=2583>>o5:<0;66g>b883>>o6>80;6)<=0;354>h59o0;76g>5g83>!4583;=<6`=1g82?>o6=l0;6)<=0;354>h59o0976g>5e83>!4583;=<6`=1g80?>o5<=0;6)<=0;077>h59o0;76g=4383>!45838??6`=1g82?>o5<80;6)<=0;077>h59o0976g=4183>!45838??6`=1g80?>i6090;6)<=0;34b>h59o0;76a>7d83>!4583;i6?j0;6)<=0;34b>h59o0976a>7c83>!4583;i6?h0;6)<=0;34b>h59o0?76a>7883>!4583;i6?10;6)<=0;34b>h59o0=76a>7683>!4583;i6??0;6)<=0;34b>h59o0376a>7483>!4583;i6?=0;6)<=0;34b>h59o0j76a>7283>!4583;i6?80;6)<=0;34b>h59o0h76a>7183>!4583;i6>o0;6)<=0;34b>h59o0n76a>6d83>!4583;i6>m0;6)<=0;34b>h59o0:<65`17a94?"5:90:;k5a20d954=4:9l53>=83.9>=4>7g9m64`=9<10c<68:18'676=9>l0b??i:048?j7?>3:1(?8483>!4583;=h91>1<7*=21823c=i:8l1=454o0:0>5<#:;:1=:h4n33e>4g<3f;3>7>5$303>41a3g8:j7?m;:m2<4<72-89<7?8f:l15c<6k21d=:j50;&165<6?o1e>?>516d8j77a28o07b?97;29 74728=m7c<>f;3e?>oc:3:1(?50;&165;:k`b?6=,;8;6i?4n33e>7=h59o0876gkb;29 7472m;0b??i:598mag=83.9>=4k1:l15c<232co57>5$303>a7oc?3:1(?d=1<7*=218g5>h59o0i76gk3;29 7472m;0b??i:b98mfb=83.9>=4k1:l15c5$303>`6ocm3:1(?4n33e>1=h59o0>76gj8;29 7472l:0b??i:798m`1=83.9>=4j0:l15c<032cn:7>5$303>`6ob<3:1(?4n33e>f=h59o0o76g>5483>!4583;>86`=1g83?>o6=:0;6)<=0;360>h59o0:76g>5083>!4583;>86`=1g81?>o6=90;6)<=0;360>h59o0876g>4g83>!4583;>86`=1g87?>o6h59o0>76g>4e83>!4583;>86`=1g85?>o6h59o0<76g>4c83>!4583;>86`=1g8;?>o6h59o0276g>4883>!4583;>86`=1g8b?>o6<10;6)<=0;360>h59o0i76g>4783>!4583;>86`=1g8`?>o6<<0;6)<=0;360>h59o0o76g>4583>!4583;>86`=1g8f?>o6<:0;6)<=0;360>h59o0m76g>4383>!4583;>86`=1g824>=n9=;1<7*=218211=i:8l1=<54i063>5<#:;:1=8:4n33e>44<3`;8j7>5$303>4333g8:j7?<;:k27`<72-89<7?:4:l15c<6<21b=>j50;&165<6==1e>?>51468j77a28<07d?:b;29 74728??7c<>f;34?>o6=h0;6)<=0;360>h59o0:465f14;94?"5:90:995a20d95<=c:9j504=83.9>=4>559m64`=9m10e<:8:18'676=9<>0b??i:0g8?l74k3:1(?ag83>!4583;ji6`=1g83?>i6im0;6)<=0;3ba>h59o0:76a>ab83>!4583;ji6`=1g81?>i6ik0;6)<=0;3ba>h59o0876g>6783>!4583;=96`=1g83?>o6>=0;6)<=0;351>h59o0:76g>6283>!4583;=96`=1g81?>o6>;0;6)<=0;351>h59o0876a>b583>!4583;i?6`=1g83?>i6j;0;6)<=0;3a7>h59o0:76a>b083>!4583;i?6`=1g81?>i6j90;6)<=0;3a7>h59o0876a>a383>!4583;j=6`=1g83?>i6i90;6)<=0;3b5>h59o0:76a>9d83>!4583;j=6`=1g81?>i61m0;6)<=0;3b5>h59o0876a>9b83>!4583;j=6`=1g87?>i61k0;6)<=0;3b5>h59o0>76a>9`83>!4583;j=6`=1g85?>i6100;6)<=0;3b5>h59o0<76a>9983>!4583;j=6`=1g8;?>i61>0;6)<=0;3b5>h59o0276a>9783>!4583;j=6`=1g8b?>i61<0;6)<=0;3b5>h59o0i76a>9283>!4583;j=6`=1g8`?>i61;0;6)<=0;3b5>h59o0o76a>9083>!4583;j=6`=1g8f?>i6190;6)<=0;3b5>h59o0m76a>8g83>!4583;j=6`=1g824>=h91o1<7*=2182e4=i:8l1=<54o0:g>5<#:;:1=l?4n33e>44<3f;3o7>5$303>4g63g8:j7?<;:m2290/>?>51`38j77a28<07b?n8;29 74728k:7c<>f;34?>i6i>0;6)<=0;3b5>h59o0:465`1`494?"5:90:m<5a20d95<=6=4+23295d7;o02b?7e32e:m>4?:%014?7f92d9=k4>c:9l5<`=83.9>=4>a09m64`=9m10c<7;:18'676=9h;0b??i:0g8?j7?13:1(?!45838?46`=1g83?>o5<>0;6)<=0;07<>h59o0:76g=4783>!45838?46`=1g81?>o5<<0;6)<=0;07<>h59o0876g>3583>!4583;8?6`=1g83?>o6;;0;6)<=0;307>h59o0:76g>3183>!4583;8?6`=1g81?>o6:o0;6)<=0;307>h59o0876g>2d83>!4583;8?6`=1g87?>o6:m0;6)<=0;307>h59o0>76g>2b83>!4583;8?6`=1g85?>o6:k0;6)<=0;307>h59o0<76g>2`83>!4583;8?6`=1g8;?>o6:00;6)<=0;307>h59o0276g>2983>!4583;8?6`=1g8b?>o6:>0;6)<=0;307>h59o0i76g>2483>!4583;8?6`=1g8`?>o6:=0;6)<=0;307>h59o0o76g>2283>!4583;8?6`=1g8f?>o6:;0;6)<=0;307>h59o0m76g>2083>!4583;8?6`=1g824>=n9;:1<7*=218276=i:8l1=<54i03e>5<#:;:1=>=4n33e>44<3`;:i7>5$303>4543g8:j7?<;:k25a<72-89<7?<3:l15c<6<21b=?>51218j77a28<07d?f;34?>o6;00;6)<=0;307>h59o0:465f12:94?"5:90:?>5a20d95<=c:9j567=83.9>=4>329m64`=9m10e<<9:18'676=9:90b??i:0g8?l76j3:1(?N5>j4Zg69g~312<=15446d;;b>281e=4$0`a>4db3-;io7?me:&2g2<43-;h47=4$0a:>6=#9jk1?6*>cc80?!7dk390(c:&2`5<482.:h<4=3:&2`7<5>2.:h>4mc:&2`1<1;2.:h84n6:&2`3<1n2.:h:4l3:&2`=2.:ho44;f:&2a1<2=2.:i84:0:&2a3<6?2.:i:4i6:&2a=<6k91/=h751b18 4cf2:1/=hl53:&2af<43-;nh7=4$0gf>6=#9ll1?6*>f180?!7a9390(5+1g597>"6n1087)?i9;18 4`f2:1/=kl53:&2bf<43-;mh7=4$0df>6=#9ol1?6*=0180?!479390(?>=:29'655=;2.9<94<;%031?5<,;:=6>5+21597>"581087)=l53:&14f<43-8;h7=4$32f>6=#:9l1>6*=1181?!46938:m6*=268176=#:;21==>4$30:>4673-89o7km;%01`?45n2.9?=4=;%005?4<,;>i6?:n;%07g?43i2c9>>4?::k24=<722c:nl4?::k163<722c:84?::k2f<<722c::<4?:%014?7182d9=k4?;:k21c<72-89<7?90:l15c<632c:9h4?:%014?7182d9=k4=;:k21a<72-89<7?90:l15c<432c9894?:%014?43;2d9=k4?;:k107<72-89<7<;3:l15c<632c98<4?:%014?43;2d9=k4=;:k105<72-89<7<;3:l15c<432e:4=4?:%014?70n2d9=k4?;:m23`<72-89<7?8f:l15c<632e:;n4?:%014?70n2d9=k4=;:m23g<72-89<7?8f:l15c<432e:;l4?:%014?70n2d9=k4;;:m23<<72-89<7?8f:l15c<232e:;54?:%014?70n2d9=k49;:m232<72-89<7?8f:l15c<032e:;;4?:%014?70n2d9=k47;:m230<72-89<7?8f:l15c<>32e:;94?:%014?70n2d9=k4n;:m236<72-89<7?8f:l15c0:9l53e=83.9>=4>7g9m64`=9810c<8m:18'676=9>l0b??i:008?j71i3:1(?6883>!4583;=h9?21<7*=21823c=i:8l1=854o0:4>5<#:;:1=:h4n33e>40<3f;3:7>5$303>41a3g8:j7?8;:m2<0<72-89<7?8f:l15c<6021d=5:50;&165<6?o1e>4290/>?>516d8j77a28k07b?72;29 74728=m7c<>f;3a?>i6080;6)<=0;34b>h59o0:o65`16f94?"5:90:;k5a20d95a=7>5$303>a7odn3:1(?1=h59o0>76gk9;29 7472m;0b??i:798ma>=83.9>=4k1:l15c<032co;7>5$303>a7oc=3:1(?f=h59o0o76gj1;29 7472l:0b??i:198ma`=83.9>=4j0:l15c<632coi7>5$303>`6obi3:1(?4n33e>3=h59o0<76gj6;29 7472l:0b??i:998m`3=83.9>=4j0:l15c<>32cn87>5$303>`6ob:3:1(?4?:%014?72<2d9=k4>;:k214<72-89<7?:4:l15c<532c:9=4?:%014?72<2d9=k4<;:k20c<72-89<7?:4:l15c<332c:8h4?:%014?72<2d9=k4:;:k20a<72-89<7?:4:l15c<132c:8n4?:%014?72<2d9=k48;:k20g<72-89<7?:4:l15c4?:%014?72<2d9=k4i;:k207<72-89<7?:4:l15c<6821b=9?50;&165<6==1e>?>51468j77a28807d?f;30?>o6;l0;6)<=0;360>h59o0:865f12f94?"5:90:995a20d950=8:9j50?=83.9>=4>559m64`=9010e<;7:18'676=9<>0b??i:0c8?l72?3:1(?5783>!4583;>86`=1g82g>=n9<81<7*=218211=i:8l1=i54i064>5<#:;:1=8:4n33e>4c<3`;8o7>5$303>4333g8:j7?i;:m2ec<72-89<7?ne:l15c<732e:mi4?:%014?7fm2d9=k4>;:m2ef<72-89<7?ne:l15c<532e:mo4?:%014?7fm2d9=k4<;:k223<72-89<7?95:l15c<732c::94?:%014?71=2d9=k4>;:k226<72-89<7?95:l15c<532c::?4?:%014?71=2d9=k4<;:m2f1<72-89<7?m3:l15c<732e:n?4?:%014?7e;2d9=k4>;:m2f4<72-89<7?m3:l15c<532e:n=4?:%014?7e;2d9=k4<;:m2e7<72-89<7?n1:l15c<732e:m=4?:%014?7f92d9=k4>;:m2=`<72-89<7?n1:l15c<532e:5i4?:%014?7f92d9=k4<;:m2=f<72-89<7?n1:l15c<332e:5o4?:%014?7f92d9=k4:;:m2=d<72-89<7?n1:l15c<132e:544?:%014?7f92d9=k48;:m2==<72-89<7?n1:l15cc290/>?>51`38j77a28807b?7c;29 74728k:7c<>f;30?>i60k0;6)<=0;3b5>h59o0:865`19c94?"5:90:m<5a20d950=;o02b?7032e:m:4?:%014?7f92d9=k4>8:9l5d0=83.9>=4>a09m64`=9010ca283>!4583;j=6`=1g82g>=h90l1<7*=2182e4=i:8l1=i54o0;7>5<#:;:1=l?4n33e>4c<3f;357>5$303>4g63g8:j7?i;:k10<<72-89<7<;8:l15c<732c98:4?:%014?4302d9=k4>;:k103<72-89<7<;8:l15c<532c9884?:%014?4302d9=k4<;:k271<72-89<7?<3:l15c<732c:??4?:%014?74;2d9=k4>;:k275<72-89<7?<3:l15c<532c:>k4?:%014?74;2d9=k4<;:k26`<72-89<7?<3:l15c<332c:>i4?:%014?74;2d9=k4:;:k26f<72-89<7?<3:l15c<132c:>o4?:%014?74;2d9=k48;:k26d<72-89<7?<3:l15c44?:%014?74;2d9=k46;:k26=<72-89<7?<3:l15c:4?:%014?74;2d9=k4m;:k260<72-89<7?<3:l15c94?:%014?74;2d9=k4k;:k266<72-89<7?<3:l15c?4?:%014?74;2d9=k4i;:k264<72-89<7?<3:l15c<6821b=?>50;&165<6;:1e>?>51218j77a28807d?>e;29 74728987c<>f;30?>o69m0;6)<=0;307>h59o0:865f10a94?"5:90:?>5a20d950=8:9j56>=83.9>=4>329m64`=9010e<=8:18'676=9:90b??i:0c8?l74>3:1(?3483>!4583;8?6`=1g82g>=n9:;1<7*=218276=i:8l1=i54i005>5<#:;:1=>=4n33e>4c<3`;:n7>5$303>4543g8:j7?i;:a66?=83hh6=4?{%000?45:2B98h5G22f8^c2=kr?=6895988:`??f20o15o499;4;>3g=1j0=;7s+20`96g?h6010;7c?na;28 4de28hn7)?mc;3aa>"6k>087)?l8;18 4e>2:1/=no53:&2gg<43-;ho7=4$0ag>6=#9jo1?6*>cg8`5>"6l90:n6*>d08:1>"6l;0h>6*>d28`e>"6l=0:n:5+1e795g3<,8n=6nm4$0f4>`c<,8n36ok4$0f:>4da3-;om7?6;%3gf?133-;oo7?k;%3g`?>73-;oi7?i;%3gb?033-;n<7;>;%3f5?g43-;n>7:9;%3f7?2>3-;n87:n;%3f1?2e3-;n:7m6;%3f3?`03-;n47?l1:&2a<<6k=1/=ho53:&2ag<43-;no7=4$0gg>6=#9lo1?6*>eg80?!7a8390(:29'5c4=;2.:j>4<;%3e0?5<,8l>6>5+1g497>"6n>087)?i8;18 4`>2:1/=ko53:&2bg<43-;mo7=4$0dg>6=#9oo1?6*>fg80?!478390(?>>:29'654=;2.9<>4<;%030?5<,;:>6>5+21497>"58>087)2:1/>=o53:&14g<43-8;o7=4$32g>6=#:9o1?6*=0g81?!468380(??>:33b?!45?388?6*=298245=#:;31==>4$30`>`d<,;8o6?h6?:n;h017?6=3`;;47>5;h3ae?6=3`89:7>5;h33`?6=3`8987>5;h011?6=3`;i57>5;h355?6=,;8;6<8?;o02b?6<3`;>j7>5$303>4073g8:j7?4;h36a?6=,;8;6<8?;o02b?4<3`;>h7>5$303>4073g8:j7=4;h070?6=,;8;6?:<;o02b?6<3`8?>7>5$303>7243g8:j7?4;h075?6=,;8;6?:<;o02b?4<3`8?<7>5$303>7243g8:j7=4;n3;4?6=,;8;6<9i;o02b?6<3f;5$303>41a3g8:j7?4;n34g?6=,;8;6<9i;o02b?4<3f;5$303>41a3g8:j7=4;n34e?6=,;8;6<9i;o02b?2<3f;<57>5$303>41a3g8:j7;4;n345$303>41a3g8:j794;n342?6=,;8;6<9i;o02b?><3f;<97>5$303>41a3g8:j774;n340?6=,;8;6<9i;o02b?g<3f;5$303>41a3g8:j7l4;n345?6=,;8;6<9i;o02b?e<3f;<<7>5$303>41a3g8:j7j4;n35b?6=,;8;6<9i;o02b?c<3f;=i7>5$303>41a3g8:j7h4;n35`?6=,;8;6<9i;o02b?7732e::n4?:%014?70n2d9=k4>1:9l53d=83.9>=4>7g9m64`=9;10c<8n:18'676=9>l0b??i:018?j7113:1(?6983>!4583;=h91=1<7*=21823c=i:8l1=;54o0:5>5<#:;:1=:h4n33e>41<3f;397>5$303>41a3g8:j7?7;:m2<1<72-89<7?8f:l15c<6121d=5=50;&165<6?o1e>5290/>?>516d8j77a28h07b?71;29 74728=m7c<>f;3`?>i6?m0;6)<=0;34b>h59o0:h65`16094?"5:90:;k5a20d95`=5<#:;:1h<5a20d94>=nl90;6)<=0;f2?k46n3;07dmi:18'676=l81e>;o02b?5<3`ni6=4+2329`4=i:8l1865fd`83>!4583n:7c<>f;78?lb>290/>?>5d09m64`=>21bh54?:%014?b63g8:j794;hf4>5<#:;:1h<5a20d9<>=nl?0;6)<=0;f2?k46n3307dj::18'676=l81e>;o02b?d<3`n86=4+2329`4=i:8l1o65fce83>!4583n:7c<>f;f8?lc6290/>?>5e19m64`=821bhk4?:%014?c73g8:j7?4;hff>5<#:;:1i=5a20d96>=nlm0;6)<=0;g3?k46n3907dkn:18'676=m91e>!4583o;7c<>f;58?lc1290/>?>5e19m64`=021bi84?:%014?c73g8:j774;hg7>5<#:;:1i=5a20d9e>=nm:0;6)<=0;g3?k46n3h07dk=:18'676=m91e>97>5$303>4333g8:j7>4;h367?6=,;8;6<;;;o02b?7<3`;>=7>5$303>4333g8:j7<4;h364?6=,;8;6<;;;o02b?5<3`;?j7>5$303>4333g8:j7:4;h37a?6=,;8;6<;;;o02b?3<3`;?h7>5$303>4333g8:j784;h37g?6=,;8;6<;;;o02b?1<3`;?n7>5$303>4333g8:j764;h37e?6=,;8;6<;;;o02b??<3`;?57>5$303>4333g8:j7o4;h375$303>4333g8:j7m4;h371?6=,;8;6<;;;o02b?b<3`;?87>5$303>4333g8:j7k4;h377?6=,;8;6<;;;o02b?`<3`;?>7>5$303>4333g8:j7??;:k204<72-89<7?:4:l15c<6921b=9>50;&165<6==1e>?>51468j77a28907d?f;37?>o6;m0;6)<=0;360>h59o0:965f14a94?"5:90:995a20d953=9:9j50>=83.9>=4>559m64`=9h10e<;8:18'676=9<>0b??i:0`8?l72>3:1(?5383>!4583;>86`=1g82`>=n9==1<7*=218211=i:8l1=h54i01`>5<#:;:1=8:4n33e>4`<3f;jj7>5$303>4gb3g8:j7>4;n3b`?6=,;8;65$303>4gb3g8:j7<4;n3bf?6=,;8;65$303>4023g8:j7>4;h350?6=,;8;6<8:;o02b?7<3`;=?7>5$303>4023g8:j7<4;h356?6=,;8;6<8:;o02b?5<3f;i87>5$303>4d43g8:j7>4;n3a6?6=,;8;65$303>4d43g8:j7<4;n3a4?6=,;8;67>5$303>4g63g8:j7>4;n3b4?6=,;8;6;o02b?7<3f;2i7>5$303>4g63g8:j7<4;n3:`?6=,;8;6;o02b?5<3f;2o7>5$303>4g63g8:j7:4;n3:f?6=,;8;6;o02b?3<3f;2m7>5$303>4g63g8:j784;n3:=?6=,;8;6;o02b?1<3f;247>5$303>4g63g8:j764;n3:3?6=,;8;6;o02b??<3f;2:7>5$303>4g63g8:j7o4;n3:1?6=,;8;6;o02b?d<3f;2?7>5$303>4g63g8:j7m4;n3:6?6=,;8;6;o02b?b<3f;2=7>5$303>4g63g8:j7k4;n3:4?6=,;8;6;o02b?`<3f;3j7>5$303>4g63g8:j7??;:m2<`<72-89<7?n1:l15c<6921d=5j50;&165<6i81e>d290/>?>51`38j77a28907b?7b;29 74728k:7c<>f;37?>i60h0;6)<=0;3b5>h59o0:965`1`;94?"5:90:m<5a20d953=;o02b?7?32e:m;4?:%014?7f92d9=k4>9:9l5d3=83.9>=4>a09m64`=9h10c9g83>!4583;j=6`=1g82`>=h90>1<7*=2182e4=i:8l1=h54o0::>5<#:;:1=l?4n33e>4`<3`8?57>5$303>72?3g8:j7>4;h073?6=,;8;6?:7;o02b?7<3`8?:7>5$303>72?3g8:j7<4;h071?6=,;8;6?:7;o02b?5<3`;887>5$303>4543g8:j7>4;h306?6=,;8;6<=<;o02b?7<3`;8<7>5$303>4543g8:j7<4;h31b?6=,;8;6<=<;o02b?5<3`;9i7>5$303>4543g8:j7:4;h31`?6=,;8;6<=<;o02b?3<3`;9o7>5$303>4543g8:j784;h31f?6=,;8;6<=<;o02b?1<3`;9m7>5$303>4543g8:j764;h31=?6=,;8;6<=<;o02b??<3`;947>5$303>4543g8:j7o4;h313?6=,;8;6<=<;o02b?d<3`;997>5$303>4543g8:j7m4;h310?6=,;8;6<=<;o02b?b<3`;9?7>5$303>4543g8:j7k4;h316?6=,;8;6<=<;o02b?`<3`;9=7>5$303>4543g8:j7??;:k265<72-89<7?<3:l15c<6921b=?>51218j77a28907d?>d;29 74728987c<>f;37?>o69j0;6)<=0;307>h59o0:965f12`94?"5:90:?>5a20d953=9:9j561=83.9>=4>329m64`=9h10e<=9:18'676=9:90b??i:0`8?l74=3:1(?3083>!4583;8?6`=1g82`>=n9;<1<7*=218276=i:8l1=h54i03a>5<#:;:1=>=4n33e>4`<3th9?54?:ca94?6|,;9?6?<=;I07a>N5;m1Qj94l{44912<>133o64o59d8:f?0>2?21:l46c;44>x"59k09n45a10;95>h69h0:7c?78;28j4gf291/=ol51cg8 4dd28hn7)?l7;18 4e?2:1/=n753:&2gd<43-;hn7=4$0a`>6=#9jn1?6*>cd80?!7dn33:7)?k0;da?!7c938>7)?k2;04?!7c;3k<7)?k4;aa?!7c=3?m7)?k6;cf?!7c?3337)?k8;ce?!7c139:7)?ka;51?!7cj39o7)?kc;50?!7cl38o7)?ke;`2?!7cn3287)?j0;c2?!7b93>97)?j2;;e?!7b;3k97)?j4;c3?!7b=3k?7)?j6;d:?!7b?3l87)?j8;d1?!7b13;h>6*>e`80?!7bj390(5+1g397>"6n;087)?i3;18 4`32:1/=k;53:&2b3<43-;m;7=4$0d;>6=#9o31?6*>f`80?!7aj390(5+21397>"58;087)=;53:&143<43-8;;7=4$32;>6=#:931?6*=0`80?!47j390(?>l:29'65b=;2.944>019'67e=mk1/>?j523d8 7572;1/>>?52:&10g<5

9m525c8m7442900e<>7:188m4df2900e?<9:188m46c2900e?<;:188m7422900e?>51728j77a2910e<;i:18'676=9?:0b??i:098m43b290/>?>51728j77a2;10e<;k:18'676=9?:0b??i:298m723290/>?>52518j77a2910e?:=:18'676=:=90b??i:098m726290/>?>52518j77a2;10e?:?:18'676=:=90b??i:298k4>7290/>?>516d8j77a2910c<9j:18'676=9>l0b??i:098k41d290/>?>516d8j77a2;10c<9m:18'676=9>l0b??i:298k41f290/>?>516d8j77a2=10c<96:18'676=9>l0b??i:498k41?290/>?>516d8j77a2?10c<98:18'676=9>l0b??i:698k411290/>?>516d8j77a2110c<9::18'676=9>l0b??i:898k413290/>?>516d8j77a2h10c<9<:18'676=9>l0b??i:c98k416290/>?>516d8j77a2j10c<9?:18'676=9>l0b??i:e98k40a290/>?>516d8j77a2l10c<8j:18'676=9>l0b??i:g98k40c290/>?>516d8j77a28:07b?9c;29 74728=m7c<>f;32?>i6>k0;6)<=0;34b>h59o0:>65`17c94?"5:90:;k5a20d956=6:9l5=0=83.9>=4>7g9m64`=9>10c<6::18'676=9>l0b??i:0:8?j7?<3:1(?8283>!4583;=h9181<7*=21823c=i:8l1=o54o0:2>5<#:;:1=:h4n33e>4e<3f;5$303>41a3g8:j7?k;:m237<72-89<7?8f:l15c<6m21d=;950;&165<6?o1e>=4k1:l15c<732co<7>5$303>a7odm3:1(?0=h59o0=76gk8;29 7472m;0b??i:698ma1=83.9>=4k1:l15c5$303>a7oc<3:1(?a=h59o0;76gkf;29 7472l:0b??i:098mac=83.9>=4j0:l15c<532coh7>5$303>`654idc94?"5:90n<6`=1g87?>ob13:1(?4n33e>2=h59o0376gj5;29 7472l:0b??i:898m`2=83.9>=4j0:l15c5$303>`6ock3:1(?0b??i:198m434290/>?>51468j77a2810e<;>:18'676=9<>0b??i:398m437290/>?>51468j77a2:10e<:i:18'676=9<>0b??i:598m42b290/>?>51468j77a2<10e<:k:18'676=9<>0b??i:798m42d290/>?>51468j77a2>10e<:m:18'676=9<>0b??i:998m42f290/>?>51468j77a2010e<:6:18'676=9<>0b??i:`98m42?290/>?>51468j77a2k10e<:9:18'676=9<>0b??i:b98m422290/>?>51468j77a2m10e<:;:18'676=9<>0b??i:d98m424290/>?>51468j77a2o10e<:=:18'676=9<>0b??i:028?l7393:1(?4183>!4583;>86`=1g826>=n9:l1<7*=218211=i:8l1=>54i01f>5<#:;:1=8:4n33e>42<3`;8h7>5$303>4333g8:j7?:;:k21f<72-89<7?:4:l15c<6>21b=8l50;&165<6==1e>?>51468j77a28207d?:9;29 74728??7c<>f;3:?>o6=10;6)<=0;360>h59o0:m65f14594?"5:90:995a20d95g=e:9j56e=83.9>=4>559m64`=9o10c?>51`g8j77a2810c?>51`g8j77a2:10e<89:18'676=9??0b??i:198m403290/>?>51778j77a2810e<8<:18'676=9??0b??i:398m405290/>?>51778j77a2:10c?>51c18j77a2810c:18'676=9k90b??i:398k4d7290/>?>51c18j77a2:10c?>51`38j77a2810c<7j:18'676=9h;0b??i:398k4?c290/>?>51`38j77a2:10c<7l:18'676=9h;0b??i:598k4?e290/>?>51`38j77a2<10c<7n:18'676=9h;0b??i:798k4?>290/>?>51`38j77a2>10c<77:18'676=9h;0b??i:998k4?0290/>?>51`38j77a2010c<79:18'676=9h;0b??i:`98k4?2290/>?>51`38j77a2k10c<7<:18'676=9h;0b??i:b98k4?5290/>?>51`38j77a2m10c<7>:18'676=9h;0b??i:d98k4?7290/>?>51`38j77a2o10c<6i:18'676=9h;0b??i:028?j7?m3:1(?8e83>!4583;j=6`=1g826>=h91i1<7*=2182e4=i:8l1=>54o0:a>5<#:;:1=l?4n33e>42<3f;3m7>5$303>4g63g8:j7?:;:m2e<<72-89<7?n1:l15c<6>21d=l650;&165<6i81e>?>51`38j77a28207b?n6;29 74728k:7c<>f;3:?>i6i<0;6)<=0;3b5>h59o0:m65`1`694?"5:90:m<5a20d95g=;o02b?7c32e:594?:%014?7f92d9=k4>e:9l5=?=83.9>=4>a09m64`=9o10e?:6:18'676=:=20b??i:198m720290/>?>525:8j77a2810e?:9:18'676=:=20b??i:398m722290/>?>525:8j77a2:10e<=;:18'676=9:90b??i:198m455290/>?>51218j77a2810e<=?:18'676=9:90b??i:398m44a290/>?>51218j77a2:10e<?>51218j77a2<10e<?>51218j77a2>10e<290/>?>51218j77a2010e<<7:18'676=9:90b??i:`98m440290/>?>51218j77a2k10e<<::18'676=9:90b??i:b98m443290/>?>51218j77a2m10e<<<:18'676=9:90b??i:d98m445290/>?>51218j77a2o10e<<>:18'676=9:90b??i:028?l7583:1(?1g83>!4583;8?6`=1g826>=n98o1<7*=218276=i:8l1=>54i03g>5<#:;:1=>=4n33e>42<3`;:o7>5$303>4543g8:j7?:;:k27g<72-89<7?<3:l15c<6>21b=>o50;&165<6;:1e>290/>?>51218j77a28207d?<8;29 74728987c<>f;3:?>o6;>0;6)<=0;307>h59o0:m65f12494?"5:90:?>5a20d95g=6=4+2329565;4?:%014?74;2d9=k4>e:9j54d=83.9>=4>329m64`=9o10qo<<7;29ff<729q/>>:52308L72b3A88h6Ti4;ax13<2?33264j59`8:a??e2?31:549a;;`>31=u-8:n75=i9hk1<6*>bc82f`=#9ki1=ok4$0a4>6=#9j21?6*>c880?!7di390(f6<,8n:6n5+1e09=3=#9m91jn5+1e691`=#9m?1=o64$0f5>3b<,8n<6o;4$0f;>=b<,8n26:74$0fb>6d<,8ni6:64$0f`>74<,8no6:k4$0ff>76<,8nm65:4$0g3>`=#9l;1885+1d090==#9l918>5+1d6901=#9l?1n55+1d49f<=#9l=1?n5+1d:91>"6m0087)?ja;18 4ce2:1/=hm53:&2aa<43-;ni7=4$0ge>6=#9o:1?6*>f080?!7a:390(5+1g:97>"6n0087)?ia;18 4`e2:1/=km53:&2ba<43-;mi7=4$0de>6=#:9:1?6*=0080?!47:390(?><:29'652=;2.9<84<;%032?5<,;:<6>5+21:97>"580087)=m53:&14a<43-8;i7=4$32e>7=#:8:1>6*=10815d=#:;=1>>=4$30;>4673-8957??0:&16fi4=2g9'666=:2.9?<4=;%07f?43i2.98n4=4`9j675=831b==650;9j5gg=831b>?850;9j55b=831b>?:50;9j673=831b=o750;9j537=83.9>=4>619m64`=821b=8h50;&165<6>91e>=4>619m64`=:21b=8j50;&165<6>91e>=4=429m64`=821b>9<50;&165<5<:1e>=4=429m64`=:21b>9>50;&165<5<:1e>=4>7g9m64`=821d=:k50;&165<6?o1e>=4>7g9m64`=:21d=:l50;&165<6?o1e>=4>7g9m64`=<21d=:750;&165<6?o1e>=83.9>=4>7g9m64`=>21d=:950;&165<6?o1e>=4>7g9m64`=021d=:;50;&165<6?o1e>=4>7g9m64`=i21d=:=50;&165<6?o1e>=4>7g9m64`=k21d=:>50;&165<6?o1e>=4>7g9m64`=m21d=;k50;&165<6?o1e>=4>7g9m64`=9910c<8l:18'676=9>l0b??i:038?j71j3:1(?6`83>!4583;=h9?31<7*=21823c=i:8l1=954o04;>5<#:;:1=:h4n33e>43<3f;3;7>5$303>41a3g8:j7?9;:m2<3<72-89<7?8f:l15c<6?21d=5;50;&165<6?o1e>3290/>?>516d8j77a28307b?73;29 74728=m7c<>f;3b?>i60;0;6)<=0;34b>h59o0:n65`19394?"5:90:;k5a20d95f=f:9j`7<72-89<7j>;o02b?6<3`n;6=4+2329`4=i:8l1=65fcg83>!4583n:7c<>f;08?leb290/>?>5d09m64`=;21bho4?:%014?b63g8:j7:4;hfb>5<#:;:1h<5a20d91>=nl00;6)<=0;f2?k46n3<07dj7:18'676=l81e>;o02b?><3`n=6=4+2329`4=i:8l1565fd483>!4583n:7c<>f;c8?lb3290/>?>5d09m64`=j21bh>4?:%014?b63g8:j7m4;hag>5<#:;:1h<5a20d9`>=nm80;6)<=0;g3?k46n3:07dji:18'676=m91e>!4583o;7c<>f;68?lc>290/>?>5e19m64`==21bi54?:%014?c73g8:j784;hg4>5<#:;:1i=5a20d93>=nm?0;6)<=0;g3?k46n3207dk::18'676=m91e>!4583o;7c<>f;a8?lbd290/>?>5e19m64`=l21b=8;50;&165<6==1e>=4>559m64`=921b=8?50;&165<6==1e>=4>559m64`=;21b=9h50;&165<6==1e>=4>559m64`==21b=9j50;&165<6==1e>=4>559m64`=?21b=9l50;&165<6==1e>=4>559m64`=121b=9750;&165<6==1e>=83.9>=4>559m64`=j21b=9850;&165<6==1e>=4>559m64`=l21b=9:50;&165<6==1e>=4>559m64`=n21b=9<50;&165<6==1e>?>51468j77a28;07d?;0;29 74728??7c<>f;31?>o6;o0;6)<=0;360>h59o0:?65f12g94?"5:90:995a20d951=7:9j50g=83.9>=4>559m64`=9110e<;6:18'676=9<>0b??i:0;8?l7203:1(?5683>!4583;>86`=1g82f>=n9<<1<7*=218211=i:8l1=n54i071>5<#:;:1=8:4n33e>4b<3`;?;7>5$303>4333g8:j7?j;:k27f<72-89<7?:4:l15c<6n21d=lh50;&165<6il1e>=4>ad9m64`=921d=lm50;&165<6il1e>=4>ad9m64`=;21b=;850;&165<6><1e>=4>649m64`=921b=;=50;&165<6><1e>=4>649m64`=;21d=o:50;&165<6j:1e>=4>b29m64`=921d=o?50;&165<6j:1e>=4>b29m64`=;21d=l<50;&165<6i81e>=4>a09m64`=921d=4k50;&165<6i81e>=4>a09m64`=;21d=4m50;&165<6i81e>=4>a09m64`==21d=4o50;&165<6i81e>=4>a09m64`=?21d=4650;&165<6i81e>=4>a09m64`=121d=4850;&165<6i81e>=4>a09m64`=j21d=4=50;&165<6i81e>=4>a09m64`=l21d=4?50;&165<6i81e>=4>a09m64`=n21d=5h50;&165<6i81e>b290/>?>51`38j77a28;07b?7d;29 74728k:7c<>f;31?>i60j0;6)<=0;3b5>h59o0:?65`19`94?"5:90:m<5a20d951=;o02b?7132e:m54?:%014?7f92d9=k4>7:9l5d1=83.9>=4>a09m64`=9110ca583>!4583;j=6`=1g82f>=h9h91<7*=2182e4=i:8l1=n54o0;e>5<#:;:1=l?4n33e>4b<3f;287>5$303>4g63g8:j7?j;:m2<<<72-89<7?n1:l15c<6n21b>9750;&165<5<11e>=4=499m64`=921b>9850;&165<5<11e>=4=499m64`=;21b=>:50;&165<6;:1e>=4>329m64`=921b=>>50;&165<6;:1e>=4>329m64`=;21b=?k50;&165<6;:1e>=4>329m64`==21b=?m50;&165<6;:1e>=4>329m64`=?21b=?o50;&165<6;:1e>=4>329m64`=121b=?650;&165<6;:1e>=4>329m64`=j21b=?;50;&165<6;:1e>=4>329m64`=l21b=?=50;&165<6;:1e>=4>329m64`=n21b=??50;&165<6;:1e>?>51218j77a28;07d?>f;29 74728987c<>f;31?>o69l0;6)<=0;307>h59o0:?65f10f94?"5:90:?>5a20d951=7:9j56?=83.9>=4>329m64`=9110e<=7:18'676=9:90b??i:0;8?l74?3:1(?3783>!4583;8?6`=1g82f>=n9:?1<7*=218276=i:8l1=n54i012>5<#:;:1=>=4n33e>4b<3`;9:7>5$303>4543g8:j7?j;:k25g<72-89<7?<3:l15c<6n21vn?=9:18ag?6=8r.9?94=239K61c<@;9o7Wh;:by62?3020315i46a;;f>00=478n:8a922h6ih0;7)?mb;3aa>"6jj0:nh5+1b597>"6k1087)?l9;18 4ef2:1/=nl53:&2gf<43-;hh7=4$0af>6=#9jl15>5+1e29bd=#9m;15=5+1e09ba=#9m91>95+1e69f>"6l<0jh6*>d782fa=#9m=1m55+1e:9<4=#9m31=55+1ec9<7=#9mh1>h5+1ea9f1=#9mn15:5+1eg9f3=#9ml1485+1d29`>"6m803n6*>e38;=>"6m:0?;6*>e58`<>"6m<0:=55+1d49b`=#9l=1?n5+1d:9b>"6m00?7)?ja;18 4ce2:1/=hm53:&2aa<43-;ni7=4$0ge>6=#9o:1?6*>f080?!7a:390(5+1g:97>"6n0087)?ia;18 4`e2:1/=km53:&2ba<43-;mi7=4$0de>6=#:9:1?6*=0080?!47:390(?><:29'652=;2.9<84<;%032?5<,;:<6>5+21:97>"580087)=m53:&14a<43-8;i7=4$32e>7=#:8:1>6*=10815d=#:;=1>>=4$30;>4673-8957??0:&16fi4=2g9'666=:2.9?<4=;%07f?43i2.98n4=4`9j675=831b==650;9j5gg=831b>?850;9j55b=831b>?:50;9j673=831b=o750;9j537=83.9>=4>619m64`=821b=8h50;&165<6>91e>=4>619m64`=:21b=8j50;&165<6>91e>=4=429m64`=821b>9<50;&165<5<:1e>=4=429m64`=:21b>9>50;&165<5<:1e>=4>7g9m64`=821d=:k50;&165<6?o1e>=4>7g9m64`=:21d=:l50;&165<6?o1e>=4>7g9m64`=<21d=:750;&165<6?o1e>=83.9>=4>7g9m64`=>21d=:950;&165<6?o1e>=4>7g9m64`=021d=:;50;&165<6?o1e>=4>7g9m64`=i21d=:=50;&165<6?o1e>=4>7g9m64`=k21d=:>50;&165<6?o1e>=4>7g9m64`=m21d=;k50;&165<6?o1e>=4>7g9m64`=9910c<8l:18'676=9>l0b??i:038?j71j3:1(?6`83>!4583;=h9?31<7*=21823c=i:8l1=954o04;>5<#:;:1=:h4n33e>43<3f;3;7>5$303>41a3g8:j7?9;:m2<3<72-89<7?8f:l15c<6?21d=5;50;&165<6?o1e>3290/>?>516d8j77a28307b?73;29 74728=m7c<>f;3b?>i60;0;6)<=0;34b>h59o0:n65`19394?"5:90:;k5a20d95f=f:9j`7<72-89<7j>;o02b?6<3`n;6=4+2329`4=i:8l1=65fcg83>!4583n:7c<>f;08?leb290/>?>5d09m64`=;21bho4?:%014?b63g8:j7:4;hfb>5<#:;:1h<5a20d91>=nl00;6)<=0;f2?k46n3<07dj7:18'676=l81e>;o02b?><3`n=6=4+2329`4=i:8l1565fd483>!4583n:7c<>f;c8?lb3290/>?>5d09m64`=j21bh>4?:%014?b63g8:j7m4;hag>5<#:;:1h<5a20d9`>=nm80;6)<=0;g3?k46n3:07dji:18'676=m91e>!4583o;7c<>f;68?lc>290/>?>5e19m64`==21bi54?:%014?c73g8:j784;hg4>5<#:;:1i=5a20d93>=nm?0;6)<=0;g3?k46n3207dk::18'676=m91e>!4583o;7c<>f;a8?lbd290/>?>5e19m64`=l21b=8;50;&165<6==1e>=4>559m64`=921b=8?50;&165<6==1e>=4>559m64`=;21b=9h50;&165<6==1e>=4>559m64`==21b=9j50;&165<6==1e>=4>559m64`=?21b=9l50;&165<6==1e>=4>559m64`=121b=9750;&165<6==1e>=83.9>=4>559m64`=j21b=9850;&165<6==1e>=4>559m64`=l21b=9:50;&165<6==1e>=4>559m64`=n21b=9<50;&165<6==1e>?>51468j77a28;07d?;0;29 74728??7c<>f;31?>o6;o0;6)<=0;360>h59o0:?65f12g94?"5:90:995a20d951=7:9j50g=83.9>=4>559m64`=9110e<;6:18'676=9<>0b??i:0;8?l7203:1(?5683>!4583;>86`=1g82f>=n9<<1<7*=218211=i:8l1=n54i071>5<#:;:1=8:4n33e>4b<3`;?;7>5$303>4333g8:j7?j;:k27f<72-89<7?:4:l15c<6n21d=lh50;&165<6il1e>=4>ad9m64`=921d=lm50;&165<6il1e>=4>ad9m64`=;21b=;850;&165<6><1e>=4>649m64`=921b=;=50;&165<6><1e>=4>649m64`=;21d=o:50;&165<6j:1e>=4>b29m64`=921d=o?50;&165<6j:1e>=4>b29m64`=;21d=l<50;&165<6i81e>=4>a09m64`=921d=4k50;&165<6i81e>=4>a09m64`=;21d=4m50;&165<6i81e>=4>a09m64`==21d=4o50;&165<6i81e>=4>a09m64`=?21d=4650;&165<6i81e>=4>a09m64`=121d=4850;&165<6i81e>=4>a09m64`=j21d=4=50;&165<6i81e>=4>a09m64`=l21d=4?50;&165<6i81e>=4>a09m64`=n21d=5h50;&165<6i81e>b290/>?>51`38j77a28;07b?7d;29 74728k:7c<>f;31?>i60j0;6)<=0;3b5>h59o0:?65`19`94?"5:90:m<5a20d951=;o02b?7132e:m54?:%014?7f92d9=k4>7:9l5d1=83.9>=4>a09m64`=9110ca583>!4583;j=6`=1g82f>=h9h91<7*=2182e4=i:8l1=n54o0;e>5<#:;:1=l?4n33e>4b<3f;287>5$303>4g63g8:j7?j;:m2<<<72-89<7?n1:l15c<6n21b>9750;&165<5<11e>=4=499m64`=921b>9850;&165<5<11e>=4=499m64`=;21b=>:50;&165<6;:1e>=4>329m64`=921b=>>50;&165<6;:1e>=4>329m64`=;21b=?k50;&165<6;:1e>=4>329m64`==21b=?m50;&165<6;:1e>=4>329m64`=?21b=?o50;&165<6;:1e>=4>329m64`=121b=?650;&165<6;:1e>=4>329m64`=j21b=?;50;&165<6;:1e>=4>329m64`=l21b=?=50;&165<6;:1e>=4>329m64`=n21b=??50;&165<6;:1e>?>51218j77a28;07d?>f;29 74728987c<>f;31?>o69l0;6)<=0;307>h59o0:?65f10f94?"5:90:?>5a20d951=7:9j56?=83.9>=4>329m64`=9110e<=7:18'676=9:90b??i:0;8?l74?3:1(?3783>!4583;8?6`=1g82f>=n9:?1<7*=218276=i:8l1=n54i012>5<#:;:1=>=4n33e>4b<3`;9:7>5$303>4543g8:j7?j;:k25g<72-89<7?<3:l15c<6n21vn?=::18ag?6=8r.9?94=239K61c<@;9o7Wh;:by62?3020315i46a;;f>00=478n:8a922h6ih0;7)?mb;3aa>"6jj0:nh5+1b597>"6k1087)?l9;18 4ef2:1/=nl53:&2gf<43-;hh7=4$0af>6=#9jl1:=5+1e295+1eg9e<=#9ml1n=5+1d2977=#9l;1;6*>e38af>"6m:0m46*>e58e1>"6m<0ih6*>e78ae>"6m>03:6*>e98;3>"6m00=7)?ja;18 4ce2:1/=hm53:&2aa<43-;ni7=4$0ge>6=#9o:1?6*>f080?!7a:390(5+1g:97>"6n0087)?ia;18 4`e2:1/=km53:&2ba<43-;mi7=4$0de>6=#:9:1?6*=0080?!47:390(?><:29'652=;2.9<84<;%032?5<,;:<6>5+21:97>"580087)=m53:&14a<43-8;i7=4$32e>7=#:8:1>6*=10815d=#:;=1>>=4$30;>4673-8957??0:&16fi4=2g9'666=:2.9?<4=;%07f?43i2.98n4=4`9j675=831b==650;9j5gg=831b>?850;9j55b=831b>?:50;9j673=831b=o750;9j537=83.9>=4>619m64`=821b=8h50;&165<6>91e>=4>619m64`=:21b=8j50;&165<6>91e>=4=429m64`=821b>9<50;&165<5<:1e>=4=429m64`=:21b>9>50;&165<5<:1e>=4>7g9m64`=821d=:k50;&165<6?o1e>=4>7g9m64`=:21d=:l50;&165<6?o1e>=4>7g9m64`=<21d=:750;&165<6?o1e>=83.9>=4>7g9m64`=>21d=:950;&165<6?o1e>=4>7g9m64`=021d=:;50;&165<6?o1e>=4>7g9m64`=i21d=:=50;&165<6?o1e>=4>7g9m64`=k21d=:>50;&165<6?o1e>=4>7g9m64`=m21d=;k50;&165<6?o1e>=4>7g9m64`=9910c<8l:18'676=9>l0b??i:038?j71j3:1(?6`83>!4583;=h9?31<7*=21823c=i:8l1=954o04;>5<#:;:1=:h4n33e>43<3f;3;7>5$303>41a3g8:j7?9;:m2<3<72-89<7?8f:l15c<6?21d=5;50;&165<6?o1e>3290/>?>516d8j77a28307b?73;29 74728=m7c<>f;3b?>i60;0;6)<=0;34b>h59o0:n65`19394?"5:90:;k5a20d95f=f:9j`7<72-89<7j>;o02b?6<3`n;6=4+2329`4=i:8l1=65fcg83>!4583n:7c<>f;08?leb290/>?>5d09m64`=;21bho4?:%014?b63g8:j7:4;hfb>5<#:;:1h<5a20d91>=nl00;6)<=0;f2?k46n3<07dj7:18'676=l81e>;o02b?><3`n=6=4+2329`4=i:8l1565fd483>!4583n:7c<>f;c8?lb3290/>?>5d09m64`=j21bh>4?:%014?b63g8:j7m4;hag>5<#:;:1h<5a20d9`>=nm80;6)<=0;g3?k46n3:07dji:18'676=m91e>!4583o;7c<>f;68?lc>290/>?>5e19m64`==21bi54?:%014?c73g8:j784;hg4>5<#:;:1i=5a20d93>=nm?0;6)<=0;g3?k46n3207dk::18'676=m91e>!4583o;7c<>f;a8?lbd290/>?>5e19m64`=l21b=8;50;&165<6==1e>=4>559m64`=921b=8?50;&165<6==1e>=4>559m64`=;21b=9h50;&165<6==1e>=4>559m64`==21b=9j50;&165<6==1e>=4>559m64`=?21b=9l50;&165<6==1e>=4>559m64`=121b=9750;&165<6==1e>=83.9>=4>559m64`=j21b=9850;&165<6==1e>=4>559m64`=l21b=9:50;&165<6==1e>=4>559m64`=n21b=9<50;&165<6==1e>?>51468j77a28;07d?;0;29 74728??7c<>f;31?>o6;o0;6)<=0;360>h59o0:?65f12g94?"5:90:995a20d951=7:9j50g=83.9>=4>559m64`=9110e<;6:18'676=9<>0b??i:0;8?l7203:1(?5683>!4583;>86`=1g82f>=n9<<1<7*=218211=i:8l1=n54i071>5<#:;:1=8:4n33e>4b<3`;?;7>5$303>4333g8:j7?j;:k27f<72-89<7?:4:l15c<6n21d=lh50;&165<6il1e>=4>ad9m64`=921d=lm50;&165<6il1e>=4>ad9m64`=;21b=;850;&165<6><1e>=4>649m64`=921b=;=50;&165<6><1e>=4>649m64`=;21d=o:50;&165<6j:1e>=4>b29m64`=921d=o?50;&165<6j:1e>=4>b29m64`=;21d=l<50;&165<6i81e>=4>a09m64`=921d=4k50;&165<6i81e>=4>a09m64`=;21d=4m50;&165<6i81e>=4>a09m64`==21d=4o50;&165<6i81e>=4>a09m64`=?21d=4650;&165<6i81e>=4>a09m64`=121d=4850;&165<6i81e>=4>a09m64`=j21d=4=50;&165<6i81e>=4>a09m64`=l21d=4?50;&165<6i81e>=4>a09m64`=n21d=5h50;&165<6i81e>b290/>?>51`38j77a28;07b?7d;29 74728k:7c<>f;31?>i60j0;6)<=0;3b5>h59o0:?65`19`94?"5:90:m<5a20d951=;o02b?7132e:m54?:%014?7f92d9=k4>7:9l5d1=83.9>=4>a09m64`=9110ca583>!4583;j=6`=1g82f>=h9h91<7*=2182e4=i:8l1=n54o0;e>5<#:;:1=l?4n33e>4b<3f;287>5$303>4g63g8:j7?j;:m2<<<72-89<7?n1:l15c<6n21b>9750;&165<5<11e>=4=499m64`=921b>9850;&165<5<11e>=4=499m64`=;21b=>:50;&165<6;:1e>=4>329m64`=921b=>>50;&165<6;:1e>=4>329m64`=;21b=?k50;&165<6;:1e>=4>329m64`==21b=?m50;&165<6;:1e>=4>329m64`=?21b=?o50;&165<6;:1e>=4>329m64`=121b=?650;&165<6;:1e>=4>329m64`=j21b=?;50;&165<6;:1e>=4>329m64`=l21b=?=50;&165<6;:1e>=4>329m64`=n21b=??50;&165<6;:1e>?>51218j77a28;07d?>f;29 74728987c<>f;31?>o69l0;6)<=0;307>h59o0:?65f10f94?"5:90:?>5a20d951=7:9j56?=83.9>=4>329m64`=9110e<=7:18'676=9:90b??i:0;8?l74?3:1(?3783>!4583;8?6`=1g82f>=n9:?1<7*=218276=i:8l1=n54i012>5<#:;:1=>=4n33e>4b<3`;9:7>5$303>4543g8:j7?j;:k25g<72-89<7?<3:l15c<6n21v??8:1825~;5=909=n5222795g?<5;9>6b`9>661=9k301?=8:0`b?84403;i563=3982fd=:::31=o74=31:>4df3488m7?m9:?17d<6jh16>>l51c;8975e28hj70<;5;j0:nl5rs33;>5<5=8q6>9h51b789752289?70<<5;306>;5;<0:?=52227957`<5;9>6<2b9>663=9;h01?=::00b?844=3;9563=34826==:::?1=?94=316>442348897?=4:?170<6::16>>;513089752288:70<<5;314>;5;<0:=k52227954c<5;9>63c9>663=9:k01?=::01:?844=3;8463=348272=:::?1=>84=316>452348897?<1:?170<6:?16>>;51478975228?870<<5;365>;5;<0:9=52227951`<5;9>6<:j;<001?73l279?84>4b9>663=9=h01?=::06b?844=3;?563=34820==:::?1=984=316>422348897?;4:?170<6<:16>>;51508975228>:70<<5;374>;5;<0:?k52227956c<5;9>6<=k;<001?72k279?84>5c9>663=9463=348212=:::?1=884=316>435348897?;7:?170<6>816>>;514d8975228?n70<<5;36`>;5;<0::;522279532<5;9>6<8<;<001?71:279?84=229>663=:;>01?=::306?844=389:63=378271=:::<1=><4=315>4573488:7?=f:?173<6:l16>>8513f89751288h70<<6;31f>;5;?0:>l52224957?<5;9=6<<7;<002?75?279?;4>249>660=9;>01?=9:000?844>3;9>63=378264=:::<1=?>4=315>47a3488:7?>e:?173<69m16>>8510a89751289i70<<6;30e>;5;?0:?452224956><5;9=6<=8;<002?74>279?;4>349>660=9:;01?=9:005?844>3;>963=378216=:::<1=8?4=315>4373488:7?;f:?173<6>8515f8975128>h70<<6;37f>;5;?0:8l52224951?<5;9=6<:7;<002?73>279?;4>449>660=9=>01?=9:060?844>3;?>63=378204=:::<1=9>4=315>45a3488:7?>8514a8975128?i70<<6;36e>;5;?0:9452224950><5;9=6<;8;<002?72>279?;4>539>660=9==01?=9:042?844>3;>j63=37821`=:::<1=8j4=315>4013488:7?94:?173<6>:16>>85170897512;8870<<6;010>;5;?09>8522249670<5;9<6<=;;<003?74:279?:4>319>661=9;l01?=8:00f?844?3;9h63=36826f=:::=1=?l4=314>44f3488;7?=9:?172<6:116>>9513589750288>70<<7;310>;5;>0:>>522259574<5;9<6<<>;<003?758279?:4>1g9>661=98o01?=8:03g?844?3;:o63=36827g=:::=1=>o4=314>45>3488;7?<8:?172<6;>16>>9512489750289>70<<7;305>;5;>0:>;522259503<5;9<6<;<;<003?729279?:4>519>661=9=l01?=8:06f?844?3;?h63=36820f=:::=1=9l4=314>42f3488;7?;9:?172<6<116>>951548975028>>70<<7;370>;5;>0:8>522259514<5;9<6<:>;<003?738279?:4>3g9>661=9:o01?=8:01g?844?3;>o63=36821g=:::=1=8o4=314>43>3488;7?:8:?172<6=>16>>951448975028?970<<7;373>;5;>0::<52225950`<5;9<6<;j;<003?72l279?:4>679>661=9?>01?=8:040?844?3;=>63=368166=:::=1>?:4=314>7423488;7<=6:?17=<6;=16>>651208975?289;70<<8;31b>;5;10:>h5222:957b<5;936<2`9>66>=9;301?=7:00;?84403;9;63=398260=:::21=?:4=31;>444348847?=2:?17=<6:816>>651328975?28;m70<<8;32a>;5;10:=i5222:954e<5;936<=m;<00389>66>=9:201?=7:014?84403;8:63=398270=:::21=>?4=31;>441348847?:5:?17=<6=:16>>651438975?28?;70<<8;37b>;5;10:8h5222:951b<5;936<:l;<004`9>66>=9=301?=7:06;?84403;?:63=398200=:::21=9:4=31;>424348847?;2:?17=<6<816>>651528975?289m70<<8;30a>;5;10:?i5222:950e<5;936<;m;<00589>66>=9<201?=7:074?84403;>:63=398217=:::21=994=31;>406348847?:f:?17=<6=l16>>6514f8975?28<=70<<8;350>;5;10::>5222:9534<5;936?<<;<0066>=:;<01?=6:017?84413;8>63=388275=:::31=?h4=31:>44b348857?=d:?17<<6:j16>>7513`8975>288j70<<9;31=>;5;00:>55222;9571<5;926<<:;<00=?75<279?44>229>66?=9;801?=6:002?84413;9<63=38825c=:::31=47c348857?>c:?17<<6;k16>>7512c8975>289270<<9;30<>;5;00:?:5222;9560<5;926<=:;<00=?749279?44>279>66?=9=63=388215=:::31=9h4=31:>42b348857?;d:?17<<6>7515`8975>28>j70<<9;37=>;5;00:855222;9510<5;926<::;<00=?73<279?44>429>66?=9=801?=6:062?84413;?<63=38827c=:::31=>k4=31:>45c348857?:c:?17<<6=k16>>7514c8975>28?270<<9;36<>;5;00:9:5222;9500<5;926<;=;<00=?73?279?44>609>66?=9h63=388223=:::31=;:4=31:>404348857?92:?17<<5::16>>752368975>2;8>70<<9;012>;5;h0:?95222c9564<5;9j6<=?;<00e?75n279?l4>2d9>66g=9;n01?=n:00`?844i3;9n63=3`826d=:::k1=?74=31b>44?3488m7?=7:?17d<6:<16>>o51368975f288870<;5;h0:><5222c9576<5;9j61e9>66g=98i01?=n:01a?844i3;8m63=3`827<=:::k1=>64=31b>4503488m7?<6:?17d<6;<16>>o51238975f288=70<;5;h0:9>5222c9507<5;9j6<;?;<00e?73n279?l4>4d9>66g=9=n01?=n:06`?844i3;?n63=3`820d=:::k1=974=31b>42?3488m7?;6:?17d<6<<16>>o51568975f28>870<;5;h0:8<5222c9516<5;9j6<=i;<00e?74m279?l4>3e9>66g=9m63=3`821<=:::k1=864=31b>4303488m7?:6:?17d<6=;16>>o51558975f28<:70<;5;h0:9h5222c950b<5;9j6<89;<00e?71<279?l4>629>66g=9?801?=n:300?844i389863=3`8160=:::k1>?84=31a>4533488n7?<2:?17g<6;916>>l513d8975e288n70<;5;k0:>n5222`957d<5;9i6<299>66d=9;=01?=m:006?844j3;9863=3c8266=:::h1=?<4=31a>4463488n7?=0:?17g<69o16>>l510g8975e28;o70<;5;k0:?o5222`956g<5;9i6<=6;<00f?740279?o4>369>66d=9:<01?=m:016?844j3;8=63=3c8263=:::h1=8;4=31a>4343488n7?:1:?17g<6=916>>l515d8975e28>n70<;5;k0:8n5222`951d<5;9i6<:n;<00f?731279?o4>499>66d=9=<01?=m:066?844j3;?863=3c8206=:::h1=9<4=31a>4263488n7?;0:?17g<6;o16>>l512g8975e289o70<;5;k0:9o5222`950g<5;9i6<;6;<00f?720279?o4>569>66d=9<<01?=m:071?844j3;?;63=3c8224=:::h1=8h4=31a>43b3488n7?:d:?17g<6>?16>>l51768975e28<870<;5;k09>>5222`9672<5;9i6?<:;<00f?45>279?n4>359>66e=9:801?=l:013?844k3;9j63=3b826`=:::i1=?j4=31`>44d3488o7?=b:?17f<6:h16>>m513;8975d288370<;5;j0:>85222a9572<5;9h6<<<;<00g?75:279?n4>209>66e=9;:01?=l:03e?844k3;:i63=3b825a=:::i1=45e3488o7?>m512:8975d289<70<;5;j0:?85222a9567<5;9h6<<9;<00g?72=279?n4>529>66e=9<;01?=l:073?844k3;?j63=3b820`=:::i1=9j4=31`>42d3488o7?;b:?17f<6>m515;8975d28>370<;5;j0:885222a9512<5;9h6<:<;<00g?73:279?n4>409>66e=9=:01?=l:01e?844k3;8i63=3b827a=:::i1=8m4=31`>43e3488o7?:a:?17f<6=016>>m514:8975d28?<70<;5;j0:9?5222a9511<5;9h6<8>;<00g?72n279?n4>5d9>66e=97443488o7<=4:?17f<5:<16>>m52348yv4fk3:1>vP=ab9>663=9130q~>8519;8yv4fm3:1>vP=ad9>661=9130q~>6519;8yv4e83:1>vP=b19>66?=9130q~>o519;8yv4e:3:1>vP=b39>66d=9130q~>m519;8yv4f;3:1>vP=a29>663=9?=0q~>851758yv4f=3:1>vP=a49>661=9?=0q~>651758yv4f?3:1>vP=a69>66?=9?=0q~>o51758yv4f13:1>vP=a89>66d=9?=0q~>m51758yv4>83:15vP=919>663=99n01?=9:02g?844?3;;h63=39824a=:::31==j4=31b>46c3488n7??d:?17f<68m1v?6i:18:[4?n279?84>099>660=99201?=8:02;?84403;;463=38824==:::k1==64=31a>46?3488o7??8:p64l50;0xZ7?e3488:7?4j50;0xZ7?c348847?4h50;0xZ7?a3488m7?l<50;0xZ7g53488o7?;j4=316>`4<5;9=6h<4=314>`4<5;936h<4=31:>`4<5;9j6h<4=31a>`4<5;9h6h<4}r05a?6=1rT9:h522279a6=:::<1i>522259a6=:::21i>5222;9a6=:::k1i>5222`9a6=:::i1i>5rs34e>5<>sW8=j63=348f0>;5;?0n863=368f0>;5;10n863=388f0>;5;h0n863=3c8f0>;5;j0n86s|26294??|V;=;70<<5;g6?844>3o>70<<7;g6?84403o>70<<9;g6?844i3o>70<7p}=7083><}Y:>;01?=::d4897512l<01?=8:d48975?2l<01?=6:d48975f2l<01?=m:d48975d2l<0q~<82;29=~X5?;16>>;5e69>660=m>16>>95e69>66>=m>16>>75e69>66g=m>16>>l5e69>66e=m>1v?9<:18:[40;279?84j8:?173::50;;xZ713348897k6;<002?c>3488;7k6;<00348857k6;<00e?c>3488n7k6;<00g?c>3ty9;84?:8y]623<5;9>6ho4=315>`g<5;9<6ho4=31;>`g<5;926ho4=31b>`g<5;9i6ho4=31`>`g59z\12==:::?1hi522249`a=:::=1hi5222:9`a=:::31hi5222c9`a=:::h1hi5222a9`a=z{;<26=46{_05=>;5;<0oi63=378ga>;5;>0oi63=398ga>;5;00oi63=3`8ga>;5;k0oi63=3b8ga>{t:?k1<77t^34b?844=3nm70<<6;fe?844?3nm70<<8;fe?84413nm70<j0;64uQ27a897522l;01?=9:d3897502l;01?=7:d38975>2l;01?=n:d38975e2l;01?=l:d38yv4el3:1>270<<5;073>;5;<098;522279613<5;9=6?:6;<002?43?279?;4=479>660=:=?01?=8:36:?844?38?;63=368103=:::=1>9;4=31;>72>348847<;7:?17=<5>652578975>2;>270<<9;073>;5;0098;5222;9613<5;9j6?:6;<00e?43?279?l4=479>66g=:=?01?=m:36:?844j38?;63=3c8103=:::h1>9;4=31`>72>3488o7<;7:?17f<5>m52578yv4>93:1>vP=909>663=98h0q~<62;296~X51;16>>8510`8yv4>;3:1>vP=929>661=98h0q~<64;296~X51=16>>6510`8yv4>=3:1>vP=949>66?=98h0q~<66;296~X51?16>>o510`8yv4>?3:1>vP=969>66d=98h0q~<69;296~X51016>>m510`8yv4203:15vP=599>663=km16>>85ce9>661=km16>>65ce9>66?=km16>>o5ce9>66d=km16>>m5ce9~w73b2902wS<:e:?170;>4=316>a3<5;9=6i;4=314>a3<5;936i;4=31:>a3<5;9j6i;4=31a>a3<5;9h6i;4}r055?6=1rT9:<522279`3=:::<1h;522259`3=:::21h;5222;9`3=:::k1h;5222`9`3=:::i1h;5rs341>5<>sW8=>63=348g3>;5;?0o;63=368g3>;5;10o;63=388g3>;5;h0o;63=3c8g3>;5;j0o;6s|27194??|V;<870<<5;f;?844>3n370<<7;f;?84403n370<<9;f;?844i3n370<<}Y:?>01?=::e;897512m301?=8:e;8975?2m301?=6:e;8975f2m301?=m:e;8975d2m30q~<95;29=~X5><16>>;5d`9>660=lh16>>95d`9>66>=lh16>>75d`9>66g=lh16>>l5d`9>66e=lh1v?89:18:[41>279?84kb:?1738750;;xZ73>348897mj;<002?eb3488;7mj;<006nh4=315>f`<5;9<6nh4=31;>f`<5;926nh4=31b>f`<5;9i6nh4=31`>f`n7>59z\11g=:::?1h=522249`5=:::=1h=5222:9`5=:::31h=5222c9`5=:::h1h=5222a9`5=z{;?o6=46{_06`>;5;<0o>63=378g6>;5;>0o>63=398g6>;5;00o>63=3`8g6>;5;k0o>63=3b8g6>{t:kh1<7<>{_0af>;5;<0989522279614<5;9>6?:>;<001?438279?;4=459>660=:=801?=9:362?844>38?<63=368101=:::=1>9<4=314>7263488;7<;0:?17=<5<=16>>652508975?2;>:70<<8;074>;5;009895222;9614<5;926?:>;<00=?438279?l4=459>66g=:=801?=n:362?844i38?<63=3c8101=:::h1>9<4=31a>7263488n7<;0:?17f<5<=16>>m52508975d2;>:70<{zf?9<6=4>{I00`>{i>:21<7?tH31g?xh1;00;6>j4}o40a?6=9rB9?i5rn71e>5<6sA88h6sa65294?7|@;9o7p`94083>4}O::n0qc8;2;295~N5;m1vb;:<:182M44l2we:9:50;3xL75c3td=884?:0yK66b51zJ17a=zf?><6=4>{I00`>{i>=21<7?tH31g?xh1<00;6>j4}o47a?6=9rB9?i5rn76e>5<6sA88h6sa64294?7|@;9o7p`95083>4}O::n0qc8:2;295~N5;m1vb;;<:182M44l2we:8:50;3xL75c3td=984?:0yK66b:7>51zJ17a=zf??<6=4>{I00`>{i><21<7?tH31g?xh1=00;6>j4}o46a?6=9rB9?i5rn77e>5<6sA88h6sa67294?7|@;9o7p`96083>4}O::n0qc892;295~N5;m1vb;8<:182M44l2we:;:50;3xL75c3td=:84?:0yK66b51zJ17a=zf?<<6=4>{I00`>{i>?21<7?tH31g?xh1>00;6>j4}o45a?6=9rB9?i5rn74e>5<6sA88h6sa66294?7|@;9o7p`97083>4}O::n0qc882;295~N5;m1vb;9<:182M44l2we:::50;3xL75c3td=;84?:0yK66b51zJ17a=zf?=<6=4>{I00`>{i>>21<7?tH31g?x{zuIJHw;lm:644bd4bltJKNv>r@ARxyEF \ No newline at end of file diff --git a/cores/KypSpectrum/papilio_zxuno_Pa.ucf b/cores/KypSpectrum/papilio_zxuno_Pa.ucf index 4110706..8f919be 100644 --- a/cores/KypSpectrum/papilio_zxuno_Pa.ucf +++ b/cores/KypSpectrum/papilio_zxuno_Pa.ucf @@ -26,18 +26,21 @@ CONFIG PROHIBIT=P144; CONFIG PROHIBIT=P69; CONFIG PROHIBIT=P60; -NET netCLK LOC="P94" | IOSTANDARD=LVTTL | PERIOD=31.25ns; # CLK -NET netHS LOC="P117" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C3 -NET netVS LOC="P116" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C2 -NET netR(0) LOC="P118" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C4 -NET netR(1) LOC="P119" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C5 -NET netR(2) LOC="P120" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C6 -NET netR(3) LOC="P121" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C7 -NET netG(0) LOC="P84" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B4 -NET netG(1) LOC="P82" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B5 -NET netG(2) LOC="P80" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B6 -NET netG(3) LOC="P78" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B7 -NET netB(0) LOC="P99" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B0 -NET netB(1) LOC="P97" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B1 -NET netB(2) LOC="P92" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B2 -NET netB(3) LOC="P87" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B3 +NET netRST LOC="P85" | IOSTANDARD=LVTTL | PULLDOWN; # A11 +NET netNMI LOC="P59" | IOSTANDARD=LVTTL | PULLDOWN; # B11 +NET netCLK LOC="P94" | IOSTANDARD=LVTTL | PERIOD=31.25ns; # CLK + +NET videoV LOC="P116" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C2 +NET videoH LOC="P117" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C3 +NET videoR(0) LOC="P118" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C4 +NET videoR(1) LOC="P119" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C5 +NET videoR(2) LOC="P120" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C6 +NET videoR(3) LOC="P121" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # C7 +NET videoG(0) LOC="P84" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B4 +NET videoG(1) LOC="P82" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B5 +NET videoG(2) LOC="P80" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B6 +NET videoG(3) LOC="P78" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B7 +NET videoB(0) LOC="P99" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B0 +NET videoB(1) LOC="P97" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B1 +NET videoB(2) LOC="P92" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B2 +NET videoB(3) LOC="P87" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST; # B3 diff --git a/cores/KypSpectrum/tv80_alu.v b/cores/KypSpectrum/tv80_alu.v new file mode 100644 index 0000000..cc8729a --- /dev/null +++ b/cores/KypSpectrum/tv80_alu.v @@ -0,0 +1,442 @@ +// +// TV80 8-Bit Microprocessor Core +// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) +// +// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +module tv80_alu (/*AUTOARG*/ + // Outputs + Q, F_Out, + // Inputs + Arith16, Z16, ALU_Op, IR, ISet, BusA, BusB, F_In + ); + + parameter Mode = 0; + parameter Flag_C = 0; + parameter Flag_N = 1; + parameter Flag_P = 2; + parameter Flag_X = 3; + parameter Flag_H = 4; + parameter Flag_Y = 5; + parameter Flag_Z = 6; + parameter Flag_S = 7; + + input Arith16; + input Z16; + input [3:0] ALU_Op ; + input [5:0] IR; + input [1:0] ISet; + input [7:0] BusA; + input [7:0] BusB; + input [7:0] F_In; + output [7:0] Q; + output [7:0] F_Out; + reg [7:0] Q; + reg [7:0] F_Out; + + function [4:0] AddSub4; + input [3:0] A; + input [3:0] B; + input Sub; + input Carry_In; + begin + AddSub4 = { 1'b0, A } + { 1'b0, (Sub)?~B:B } + {4'h0,Carry_In}; + end + endfunction // AddSub4 + + function [3:0] AddSub3; + input [2:0] A; + input [2:0] B; + input Sub; + input Carry_In; + begin + AddSub3 = { 1'b0, A } + { 1'b0, (Sub)?~B:B } + {3'h0,Carry_In}; + end + endfunction // AddSub4 + + function [1:0] AddSub1; + input A; + input B; + input Sub; + input Carry_In; + begin + AddSub1 = { 1'b0, A } + { 1'b0, (Sub)?~B:B } + {1'h0,Carry_In}; + end + endfunction // AddSub4 + + // AddSub variables (temporary signals) + reg UseCarry; + reg Carry7_v; + reg OverFlow_v; + reg HalfCarry_v; + reg Carry_v; + reg [7:0] Q_v; + + reg [7:0] BitMask; + + + always @(/*AUTOSENSE*/ALU_Op or BusA or BusB or F_In or IR) + begin + case (IR[5:3]) + 3'b000 : BitMask = 8'b00000001; + 3'b001 : BitMask = 8'b00000010; + 3'b010 : BitMask = 8'b00000100; + 3'b011 : BitMask = 8'b00001000; + 3'b100 : BitMask = 8'b00010000; + 3'b101 : BitMask = 8'b00100000; + 3'b110 : BitMask = 8'b01000000; + default: BitMask = 8'b10000000; + endcase // case(IR[5:3]) + + UseCarry = ~ ALU_Op[2] && ALU_Op[0]; + { HalfCarry_v, Q_v[3:0] } = AddSub4(BusA[3:0], BusB[3:0], ALU_Op[1], ALU_Op[1] ^ (UseCarry && F_In[Flag_C]) ); + { Carry7_v, Q_v[6:4] } = AddSub3(BusA[6:4], BusB[6:4], ALU_Op[1], HalfCarry_v); + { Carry_v, Q_v[7] } = AddSub1(BusA[7], BusB[7], ALU_Op[1], Carry7_v); + OverFlow_v = Carry_v ^ Carry7_v; + end // always @ * + + reg [7:0] Q_t; + reg [8:0] DAA_Q; + + always @ (/*AUTOSENSE*/ALU_Op or Arith16 or BitMask or BusA or BusB + or Carry_v or F_In or HalfCarry_v or IR or ISet + or OverFlow_v or Q_v or Z16) + begin + Q_t = 8'hxx; + DAA_Q = {9{1'bx}}; + + F_Out = F_In; + case (ALU_Op) + 4'b0000, 4'b0001, 4'b0010, 4'b0011, 4'b0100, 4'b0101, 4'b0110, 4'b0111 : + begin + F_Out[Flag_N] = 1'b0; + F_Out[Flag_C] = 1'b0; + + case (ALU_Op[2:0]) + + 3'b000, 3'b001 : // ADD, ADC + begin + Q_t = Q_v; + F_Out[Flag_C] = Carry_v; + F_Out[Flag_H] = HalfCarry_v; + F_Out[Flag_P] = OverFlow_v; + end + + 3'b010, 3'b011, 3'b111 : // SUB, SBC, CP + begin + Q_t = Q_v; + F_Out[Flag_N] = 1'b1; + F_Out[Flag_C] = ~ Carry_v; + F_Out[Flag_H] = ~ HalfCarry_v; + F_Out[Flag_P] = OverFlow_v; + end + + 3'b100 : // AND + begin + Q_t[7:0] = BusA & BusB; + F_Out[Flag_H] = 1'b1; + end + + 3'b101 : // XOR + begin + Q_t[7:0] = BusA ^ BusB; + F_Out[Flag_H] = 1'b0; + end + + default : // OR 3'b110 + begin + Q_t[7:0] = BusA | BusB; + F_Out[Flag_H] = 1'b0; + end + + endcase // case(ALU_OP[2:0]) + + if (ALU_Op[2:0] == 3'b111 ) + begin // CP + F_Out[Flag_X] = BusB[3]; + F_Out[Flag_Y] = BusB[5]; + end + else + begin + F_Out[Flag_X] = Q_t[3]; + F_Out[Flag_Y] = Q_t[5]; + end + + if (Q_t[7:0] == 8'b00000000 ) + begin + F_Out[Flag_Z] = 1'b1; + if (Z16 == 1'b1 ) + begin + F_Out[Flag_Z] = F_In[Flag_Z]; // 16 bit ADC,SBC + end + end + else + begin + F_Out[Flag_Z] = 1'b0; + end // else: !if(Q_t[7:0] == 8'b00000000 ) + + F_Out[Flag_S] = Q_t[7]; + case (ALU_Op[2:0]) + 3'b000, 3'b001, 3'b010, 3'b011, 3'b111 : // ADD, ADC, SUB, SBC, CP + ; + + default : + F_Out[Flag_P] = ~(^Q_t); + endcase // case(ALU_Op[2:0]) + + if (Arith16 == 1'b1 ) + begin + F_Out[Flag_S] = F_In[Flag_S]; + F_Out[Flag_Z] = F_In[Flag_Z]; + F_Out[Flag_P] = F_In[Flag_P]; + end + end // case: 4'b0000, 4'b0001, 4'b0010, 4'b0011, 4'b0100, 4'b0101, 4'b0110, 4'b0111 + + 4'b1100 : + begin + // DAA + F_Out[Flag_H] = F_In[Flag_H]; + F_Out[Flag_C] = F_In[Flag_C]; + DAA_Q[7:0] = BusA; + DAA_Q[8] = 1'b0; + if (F_In[Flag_N] == 1'b0 ) + begin + // After addition + // Alow > 9 || H == 1 + if (DAA_Q[3:0] > 9 || F_In[Flag_H] == 1'b1 ) + begin + if ((DAA_Q[3:0] > 9) ) + begin + F_Out[Flag_H] = 1'b1; + end + else + begin + F_Out[Flag_H] = 1'b0; + end + DAA_Q = DAA_Q + 6; + end // if (DAA_Q[3:0] > 9 || F_In[Flag_H] == 1'b1 ) + + // new Ahigh > 9 || C == 1 + if (DAA_Q[8:4] > 9 || F_In[Flag_C] == 1'b1 ) + begin + DAA_Q = DAA_Q + 9'd96; // 0x60 ***kyp*** DAA_Q = DAA_Q + 96; + end + end + else + begin + // After subtraction + if (DAA_Q[3:0] > 9 || F_In[Flag_H] == 1'b1 ) + begin + if (DAA_Q[3:0] > 5 ) + begin + F_Out[Flag_H] = 1'b0; + end + DAA_Q[7:0] = DAA_Q[7:0] - 8'd6; // ***kyp*** DAA_Q[7:0] = DAA_Q[7:0] - 6; + end + if (BusA > 153 || F_In[Flag_C] == 1'b1 ) + begin + DAA_Q = DAA_Q - 9'd352; // 0x160 ***kyp*** DAA_Q = DAA_Q - 352; + end + end // else: !if(F_In[Flag_N] == 1'b0 ) + + F_Out[Flag_X] = DAA_Q[3]; + F_Out[Flag_Y] = DAA_Q[5]; + F_Out[Flag_C] = F_In[Flag_C] || DAA_Q[8]; + Q_t = DAA_Q[7:0]; + + if (DAA_Q[7:0] == 8'b00000000 ) + begin + F_Out[Flag_Z] = 1'b1; + end + else + begin + F_Out[Flag_Z] = 1'b0; + end + + F_Out[Flag_S] = DAA_Q[7]; + F_Out[Flag_P] = ~ (^DAA_Q); + end // case: 4'b1100 + + 4'b1101, 4'b1110 : + begin + // RLD, RRD + Q_t[7:4] = BusA[7:4]; + if (ALU_Op[0] == 1'b1 ) + begin + Q_t[3:0] = BusB[7:4]; + end + else + begin + Q_t[3:0] = BusB[3:0]; + end + F_Out[Flag_H] = 1'b0; + F_Out[Flag_N] = 1'b0; + F_Out[Flag_X] = Q_t[3]; + F_Out[Flag_Y] = Q_t[5]; + if (Q_t[7:0] == 8'b00000000 ) + begin + F_Out[Flag_Z] = 1'b1; + end + else + begin + F_Out[Flag_Z] = 1'b0; + end + F_Out[Flag_S] = Q_t[7]; + F_Out[Flag_P] = ~(^Q_t); + end // case: when 4'b1101, 4'b1110 + + 4'b1001 : + begin + // BIT + Q_t[7:0] = BusB & BitMask; + F_Out[Flag_S] = Q_t[7]; + if (Q_t[7:0] == 8'b00000000 ) + begin + F_Out[Flag_Z] = 1'b1; + F_Out[Flag_P] = 1'b1; + end + else + begin + F_Out[Flag_Z] = 1'b0; + F_Out[Flag_P] = 1'b0; + end + F_Out[Flag_H] = 1'b1; + F_Out[Flag_N] = 1'b0; + F_Out[Flag_X] = 1'b0; + F_Out[Flag_Y] = 1'b0; + if (IR[2:0] != 3'b110 ) + begin + F_Out[Flag_X] = BusB[3]; + F_Out[Flag_Y] = BusB[5]; + end + end // case: when 4'b1001 + + 4'b1010 : + // SET + Q_t[7:0] = BusB | BitMask; + + 4'b1011 : + // RES + Q_t[7:0] = BusB & ~ BitMask; + + 4'b1000 : + begin + // ROT + case (IR[5:3]) + 3'b000 : // RLC + begin + Q_t[7:1] = BusA[6:0]; + Q_t[0] = BusA[7]; + F_Out[Flag_C] = BusA[7]; + end + + 3'b010 : // RL + begin + Q_t[7:1] = BusA[6:0]; + Q_t[0] = F_In[Flag_C]; + F_Out[Flag_C] = BusA[7]; + end + + 3'b001 : // RRC + begin + Q_t[6:0] = BusA[7:1]; + Q_t[7] = BusA[0]; + F_Out[Flag_C] = BusA[0]; + end + + 3'b011 : // RR + begin + Q_t[6:0] = BusA[7:1]; + Q_t[7] = F_In[Flag_C]; + F_Out[Flag_C] = BusA[0]; + end + + 3'b100 : // SLA + begin + Q_t[7:1] = BusA[6:0]; + Q_t[0] = 1'b0; + F_Out[Flag_C] = BusA[7]; + end + + 3'b110 : // SLL (Undocumented) / SWAP + begin + if (Mode == 3 ) + begin + Q_t[7:4] = BusA[3:0]; + Q_t[3:0] = BusA[7:4]; + F_Out[Flag_C] = 1'b0; + end + else + begin + Q_t[7:1] = BusA[6:0]; + Q_t[0] = 1'b1; + F_Out[Flag_C] = BusA[7]; + end // else: !if(Mode == 3 ) + end // case: 3'b110 + + 3'b101 : // SRA + begin + Q_t[6:0] = BusA[7:1]; + Q_t[7] = BusA[7]; + F_Out[Flag_C] = BusA[0]; + end + + default : // SRL + begin + Q_t[6:0] = BusA[7:1]; + Q_t[7] = 1'b0; + F_Out[Flag_C] = BusA[0]; + end + endcase // case(IR[5:3]) + + F_Out[Flag_H] = 1'b0; + F_Out[Flag_N] = 1'b0; + F_Out[Flag_X] = Q_t[3]; + F_Out[Flag_Y] = Q_t[5]; + F_Out[Flag_S] = Q_t[7]; + if (Q_t[7:0] == 8'b00000000 ) + begin + F_Out[Flag_Z] = 1'b1; + end + else + begin + F_Out[Flag_Z] = 1'b0; + end + F_Out[Flag_P] = ~(^Q_t); + + if (ISet == 2'b00 ) + begin + F_Out[Flag_P] = F_In[Flag_P]; + F_Out[Flag_S] = F_In[Flag_S]; + F_Out[Flag_Z] = F_In[Flag_Z]; + end + end // case: 4'b1000 + + + default : + ; + + endcase // case(ALU_Op) + + Q = Q_t; + end // always @ (Arith16, ALU_OP, F_In, BusA, BusB, IR, Q_v, Carry_v, HalfCarry_v, OverFlow_v, BitMask, ISet, Z16) + +endmodule // T80_ALU diff --git a/cores/KypSpectrum/tv80_core.v b/cores/KypSpectrum/tv80_core.v new file mode 100644 index 0000000..f4055d9 --- /dev/null +++ b/cores/KypSpectrum/tv80_core.v @@ -0,0 +1,1389 @@ +// +// TV80 8-Bit Microprocessor Core +// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) +// +// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +module tv80_core (/*AUTOARG*/ + // Outputs + m1_n, iorq, no_read, write, rfsh_n, halt_n, busak_n, A, dout, mc, + ts, intcycle_n, IntE, stop, + // Inputs + reset_n, clk, cen, wait_n, int_n, nmi_n, busrq_n, dinst, di + ); + // Beginning of automatic inputs (from unused autoinst inputs) + // End of automatics + + parameter Mode = 1; // 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB + parameter IOWait = 1; // 0 => Single cycle I/O, 1 => Std I/O cycle + parameter Flag_C = 0; + parameter Flag_N = 1; + parameter Flag_P = 2; + parameter Flag_X = 3; + parameter Flag_H = 4; + parameter Flag_Y = 5; + parameter Flag_Z = 6; + parameter Flag_S = 7; + + input reset_n; + input clk; + input cen; + input wait_n; + input int_n; + input nmi_n; + input busrq_n; + output m1_n; + output iorq; + output no_read; + output write; + output rfsh_n; + output halt_n; + output busak_n; + output [15:0] A; + input [7:0] dinst; + input [7:0] di; + output [7:0] dout; + output [6:0] mc; + output [6:0] ts; + output intcycle_n; + output IntE; + output stop; + + reg m1_n; + reg iorq; +`ifdef TV80_REFRESH + reg rfsh_n; +`endif + reg halt_n; + reg busak_n; + reg [15:0] A; + reg [7:0] dout; + reg [6:0] mc; + reg [6:0] ts; + reg intcycle_n; + reg IntE; + reg stop; + + parameter aNone = 3'b111; + parameter aBC = 3'b000; + parameter aDE = 3'b001; + parameter aXY = 3'b010; + parameter aIOA = 3'b100; + parameter aSP = 3'b101; + parameter aZI = 3'b110; + + // Registers + reg [7:0] ACC, F; + reg [7:0] Ap, Fp; + reg [7:0] I; +`ifdef TV80_REFRESH + reg [7:0] R; +`endif + reg [15:0] SP, PC; + reg [7:0] RegDIH; + reg [7:0] RegDIL; + wire [15:0] RegBusA; + wire [15:0] RegBusB; + wire [15:0] RegBusC; + reg [2:0] RegAddrA_r; + reg [2:0] RegAddrA; + reg [2:0] RegAddrB_r; + reg [2:0] RegAddrB; + reg [2:0] RegAddrC; + reg RegWEH; + reg RegWEL; + reg Alternate; + + // Help Registers + reg [15:0] TmpAddr; // Temporary address register + reg [7:0] IR; // Instruction register + reg [1:0] ISet; // Instruction set selector + reg [15:0] RegBusA_r; + + reg [15:0] ID16; + reg [7:0] Save_Mux; + + reg [6:0] tstate; + reg [6:0] mcycle; + reg last_mcycle, last_tstate; + reg IntE_FF1; + reg IntE_FF2; + reg Halt_FF; + reg BusReq_s; + reg BusAck; + reg ClkEn; + reg NMI_s; + reg INT_s; + reg [1:0] IStatus; + + reg [7:0] DI_Reg; + reg T_Res; + reg [1:0] XY_State; + reg [2:0] Pre_XY_F_M; + reg NextIs_XY_Fetch; + reg XY_Ind; + reg No_BTR; + reg BTR_r; + reg Auto_Wait; + reg Auto_Wait_t1; + reg Auto_Wait_t2; + reg IncDecZ; + + // ALU signals + reg [7:0] BusB; + reg [7:0] BusA; + wire [7:0] ALU_Q; + wire [7:0] F_Out; + + // Registered micro code outputs + reg [4:0] Read_To_Reg_r; + reg Arith16_r; + reg Z16_r; + reg [3:0] ALU_Op_r; + reg Save_ALU_r; + reg PreserveC_r; + reg [2:0] mcycles; + + // Micro code outputs + wire [2:0] mcycles_d; + wire [2:0] tstates; + reg IntCycle; + reg NMICycle; + wire Inc_PC; + wire Inc_WZ; + wire [3:0] IncDec_16; + wire [1:0] Prefix; + wire Read_To_Acc; + wire Read_To_Reg; + wire [3:0] Set_BusB_To; + wire [3:0] Set_BusA_To; + wire [3:0] ALU_Op; + wire Save_ALU; + wire PreserveC; + wire Arith16; + wire [2:0] Set_Addr_To; + wire Jump; + wire JumpE; + wire JumpXY; + wire Call; + wire RstP; + wire LDZ; + wire LDW; + wire LDSPHL; + wire iorq_i; + wire [2:0] Special_LD; + wire ExchangeDH; + wire ExchangeRp; + wire ExchangeAF; + wire ExchangeRS; + wire I_DJNZ; + wire I_CPL; + wire I_CCF; + wire I_SCF; + wire I_RETN; + wire I_BT; + wire I_BC; + wire I_BTR; + wire I_RLD; + wire I_RRD; + wire I_INRC; + wire SetDI; + wire SetEI; + wire [1:0] IMode; + wire Halt; + + reg [15:0] PC16; + reg [15:0] PC16_B; + reg [15:0] SP16, SP16_A, SP16_B; + reg [15:0] ID16_B; + reg Oldnmi_n; + + tv80_mcode #(Mode, Flag_C, Flag_N, Flag_P, Flag_X, Flag_H, Flag_Y, Flag_Z, Flag_S) i_mcode + ( + .IR (IR), + .ISet (ISet), + .MCycle (mcycle), + .F (F), + .NMICycle (NMICycle), + .IntCycle (IntCycle), + .MCycles (mcycles_d), + .TStates (tstates), + .Prefix (Prefix), + .Inc_PC (Inc_PC), + .Inc_WZ (Inc_WZ), + .IncDec_16 (IncDec_16), + .Read_To_Acc (Read_To_Acc), + .Read_To_Reg (Read_To_Reg), + .Set_BusB_To (Set_BusB_To), + .Set_BusA_To (Set_BusA_To), + .ALU_Op (ALU_Op), + .Save_ALU (Save_ALU), + .PreserveC (PreserveC), + .Arith16 (Arith16), + .Set_Addr_To (Set_Addr_To), + .IORQ (iorq_i), + .Jump (Jump), + .JumpE (JumpE), + .JumpXY (JumpXY), + .Call (Call), + .RstP (RstP), + .LDZ (LDZ), + .LDW (LDW), + .LDSPHL (LDSPHL), + .Special_LD (Special_LD), + .ExchangeDH (ExchangeDH), + .ExchangeRp (ExchangeRp), + .ExchangeAF (ExchangeAF), + .ExchangeRS (ExchangeRS), + .I_DJNZ (I_DJNZ), + .I_CPL (I_CPL), + .I_CCF (I_CCF), + .I_SCF (I_SCF), + .I_RETN (I_RETN), + .I_BT (I_BT), + .I_BC (I_BC), + .I_BTR (I_BTR), + .I_RLD (I_RLD), + .I_RRD (I_RRD), + .I_INRC (I_INRC), + .SetDI (SetDI), + .SetEI (SetEI), + .IMode (IMode), + .Halt (Halt), + .NoRead (no_read), + .Write (write) + ); + + tv80_alu #(Mode, Flag_C, Flag_N, Flag_P, Flag_X, Flag_H, Flag_Y, Flag_Z, Flag_S) i_alu + ( + .Arith16 (Arith16_r), + .Z16 (Z16_r), + .ALU_Op (ALU_Op_r), + .IR (IR[5:0]), + .ISet (ISet), + .BusA (BusA), + .BusB (BusB), + .F_In (F), + .Q (ALU_Q), + .F_Out (F_Out) + ); + + function [6:0] number_to_bitvec; + input [2:0] num; + begin + case (num) + 1 : number_to_bitvec = 7'b0000001; + 2 : number_to_bitvec = 7'b0000010; + 3 : number_to_bitvec = 7'b0000100; + 4 : number_to_bitvec = 7'b0001000; + 5 : number_to_bitvec = 7'b0010000; + 6 : number_to_bitvec = 7'b0100000; + 7 : number_to_bitvec = 7'b1000000; + default : number_to_bitvec = 7'bx; + endcase // case(num) + end + endfunction // number_to_bitvec + + function [2:0] mcyc_to_number; + input [6:0] mcyc; + begin + casez (mcyc) + 7'b1zzzzzz : mcyc_to_number = 3'h7; + 7'b01zzzzz : mcyc_to_number = 3'h6; + 7'b001zzzz : mcyc_to_number = 3'h5; + 7'b0001zzz : mcyc_to_number = 3'h4; + 7'b00001zz : mcyc_to_number = 3'h3; + 7'b000001z : mcyc_to_number = 3'h2; + 7'b0000001 : mcyc_to_number = 3'h1; + default : mcyc_to_number = 3'h1; + endcase + end + endfunction + + always @(/*AUTOSENSE*/mcycle or mcycles or tstate or tstates) + begin + case (mcycles) + 1 : last_mcycle = mcycle[0]; + 2 : last_mcycle = mcycle[1]; + 3 : last_mcycle = mcycle[2]; + 4 : last_mcycle = mcycle[3]; + 5 : last_mcycle = mcycle[4]; + 6 : last_mcycle = mcycle[5]; + 7 : last_mcycle = mcycle[6]; + default : last_mcycle = 1'bx; + endcase // case(mcycles) + + case (tstates) + 0 : last_tstate = tstate[0]; + 1 : last_tstate = tstate[1]; + 2 : last_tstate = tstate[2]; + 3 : last_tstate = tstate[3]; + 4 : last_tstate = tstate[4]; + 5 : last_tstate = tstate[5]; + 6 : last_tstate = tstate[6]; + default : last_tstate = 1'bx; + endcase + end // always @ (... + + + always @(/*AUTOSENSE*/ALU_Q or BusAck or BusB or DI_Reg + or ExchangeRp or IR or Save_ALU_r or Set_Addr_To or XY_Ind + or XY_State or cen or last_tstate or mcycle) + begin + ClkEn = cen && ~ BusAck; + + if (last_tstate) + T_Res = 1'b1; + else T_Res = 1'b0; + + if (XY_State != 2'b00 && XY_Ind == 1'b0 && + ((Set_Addr_To == aXY) || + (mcycle[0] && IR == 8'b11001011) || + (mcycle[0] && IR == 8'b00110110))) + NextIs_XY_Fetch = 1'b1; + else + NextIs_XY_Fetch = 1'b0; + + if (ExchangeRp) + Save_Mux = BusB; + else if (!Save_ALU_r) + Save_Mux = DI_Reg; + else + Save_Mux = ALU_Q; + end // always @ * + + always @ (posedge clk or negedge reset_n) + begin + if (reset_n == 1'b0 ) + begin + PC <= #1 0; // Program Counter + A <= #1 0; + TmpAddr <= #1 0; + IR <= #1 8'b00000000; + ISet <= #1 2'b00; + XY_State <= #1 2'b00; + IStatus <= #1 2'b00; + mcycles <= #1 3'b000; + dout <= #1 8'b00000000; + + ACC <= #1 8'hFF; + F <= #1 8'hFF; + Ap <= #1 8'hFF; + Fp <= #1 8'hFF; + I <= #1 0; + `ifdef TV80_REFRESH + R <= #1 0; + `endif + SP <= #1 16'hFFFF; + Alternate <= #1 1'b0; + + Read_To_Reg_r <= #1 5'b00000; + Arith16_r <= #1 1'b0; + BTR_r <= #1 1'b0; + Z16_r <= #1 1'b0; + ALU_Op_r <= #1 4'b0000; + Save_ALU_r <= #1 1'b0; + PreserveC_r <= #1 1'b0; + XY_Ind <= #1 1'b0; + end + else + begin + + if (ClkEn == 1'b1 ) + begin + + ALU_Op_r <= #1 4'b0000; + Save_ALU_r <= #1 1'b0; + Read_To_Reg_r <= #1 5'b00000; + + mcycles <= #1 mcycles_d; + + if (IMode != 2'b11 ) + begin + IStatus <= #1 IMode; + end + + Arith16_r <= #1 Arith16; + PreserveC_r <= #1 PreserveC; + if (ISet == 2'b10 && ALU_Op[2] == 1'b0 && ALU_Op[0] == 1'b1 && mcycle[2] ) + begin + Z16_r <= #1 1'b1; + end + else + begin + Z16_r <= #1 1'b0; + end + + if (mcycle[0] && (tstate[1] | tstate[2] | tstate[3] )) + begin + // mcycle == 1 && tstate == 1, 2, || 3 + if (tstate[2] && wait_n == 1'b1 ) + begin + `ifdef TV80_REFRESH + if (Mode < 2 ) + begin + A[7:0] <= #1 R; + A[15:8] <= #1 I; + R[6:0] <= #1 R[6:0] + 1; + end + `endif + if (Jump == 1'b0 && Call == 1'b0 && NMICycle == 1'b0 && IntCycle == 1'b0 && ~ (Halt_FF == 1'b1 || Halt == 1'b1) ) + begin + PC <= #1 PC16; + end + + if (IntCycle == 1'b1 && IStatus == 2'b01 ) + begin + IR <= #1 8'b11111111; + end + else if (Halt_FF == 1'b1 || (IntCycle == 1'b1 && IStatus == 2'b10) || NMICycle == 1'b1 ) + begin + IR <= #1 8'b00000000; + TmpAddr[7:0] <= #1 dinst; // Special M1 vector fetch + end + else + begin + IR <= #1 dinst; + end + + ISet <= #1 2'b00; + if (Prefix != 2'b00 ) + begin + if (Prefix == 2'b11 ) + begin + if (IR[5] == 1'b1 ) + begin + XY_State <= #1 2'b10; + end + else + begin + XY_State <= #1 2'b01; + end + end + else + begin + if (Prefix == 2'b10 ) + begin + XY_State <= #1 2'b00; + XY_Ind <= #1 1'b0; + end + ISet <= #1 Prefix; + end + end + else + begin + XY_State <= #1 2'b00; + XY_Ind <= #1 1'b0; + end + end // if (tstate == 2 && wait_n == 1'b1 ) + + + end + else + begin + // either (mcycle > 1) OR (mcycle == 1 AND tstate > 3) + + if (mcycle[5] ) + begin + XY_Ind <= #1 1'b1; + if (Prefix == 2'b01 ) + begin + ISet <= #1 2'b01; + end + end + + if (T_Res == 1'b1 ) + begin + BTR_r <= #1 (I_BT || I_BC || I_BTR) && ~ No_BTR; + if (Jump == 1'b1 ) + begin + A[15:8] <= #1 DI_Reg; + A[7:0] <= #1 TmpAddr[7:0]; + PC[15:8] <= #1 DI_Reg; + PC[7:0] <= #1 TmpAddr[7:0]; + end + else if (JumpXY == 1'b1 ) + begin + A <= #1 RegBusC; + PC <= #1 RegBusC; + end else if (Call == 1'b1 || RstP == 1'b1 ) + begin + A <= #1 TmpAddr; + PC <= #1 TmpAddr; + end + else if (last_mcycle && NMICycle == 1'b1 ) + begin + A <= #1 16'b0000000001100110; + PC <= #1 16'b0000000001100110; + end + else if (mcycle[2] && IntCycle == 1'b1 && IStatus == 2'b10 ) + begin + A[15:8] <= #1 I; + A[7:0] <= #1 TmpAddr[7:0]; + PC[15:8] <= #1 I; + PC[7:0] <= #1 TmpAddr[7:0]; + end + else + begin + case (Set_Addr_To) + aXY : + begin + if (XY_State == 2'b00 ) + begin + A <= #1 RegBusC; + end + else + begin + if (NextIs_XY_Fetch == 1'b1 ) + begin + A <= #1 PC; + end + else + begin + A <= #1 TmpAddr; + end + end // else: !if(XY_State == 2'b00 ) + end // case: aXY + + aIOA : + begin + if (Mode == 3 ) + begin + // Memory map I/O on GBZ80 + A[15:8] <= #1 8'hFF; + end + else if (Mode == 2 ) + begin + // Duplicate I/O address on 8080 + A[15:8] <= #1 DI_Reg; + end + else + begin + A[15:8] <= #1 ACC; + end + A[7:0] <= #1 DI_Reg; + end // case: aIOA + + + aSP : + begin + A <= #1 SP; + end + + aBC : + begin + if (Mode == 3 && iorq_i == 1'b1 ) + begin + // Memory map I/O on GBZ80 + A[15:8] <= #1 8'hFF; + A[7:0] <= #1 RegBusC[7:0]; + end + else + begin + A <= #1 RegBusC; + end + end // case: aBC + + aDE : + begin + A <= #1 RegBusC; + end + + aZI : + begin + if (Inc_WZ == 1'b1 ) + begin + A <= #1 TmpAddr + 16'd1; // ***kyp*** A <= #1 TmpAddr + 1; + end + else + begin + A[15:8] <= #1 DI_Reg; + A[7:0] <= #1 TmpAddr[7:0]; + end + end // case: aZI + + default : + begin + A <= #1 PC; + end + endcase // case(Set_Addr_To) + + end // else: !if(mcycle[2] && IntCycle == 1'b1 && IStatus == 2'b10 ) + + + Save_ALU_r <= #1 Save_ALU; + ALU_Op_r <= #1 ALU_Op; + + if (I_CPL == 1'b1 ) + begin + // CPL + ACC <= #1 ~ ACC; + F[Flag_Y] <= #1 ~ ACC[5]; + F[Flag_H] <= #1 1'b1; + F[Flag_X] <= #1 ~ ACC[3]; + F[Flag_N] <= #1 1'b1; + end + if (I_CCF == 1'b1 ) + begin + // CCF + F[Flag_C] <= #1 ~ F[Flag_C]; + F[Flag_Y] <= #1 ACC[5]; + F[Flag_H] <= #1 F[Flag_C]; + F[Flag_X] <= #1 ACC[3]; + F[Flag_N] <= #1 1'b0; + end + if (I_SCF == 1'b1 ) + begin + // SCF + F[Flag_C] <= #1 1'b1; + F[Flag_Y] <= #1 ACC[5]; + F[Flag_H] <= #1 1'b0; + F[Flag_X] <= #1 ACC[3]; + F[Flag_N] <= #1 1'b0; + end + end // if (T_Res == 1'b1 ) + + + if (tstate[2] && wait_n == 1'b1 ) + begin + if (ISet == 2'b01 && mcycle[6] ) + begin + IR <= #1 dinst; + end + if (JumpE == 1'b1 ) + begin + PC <= #1 PC16; + end + else if (Inc_PC == 1'b1 ) + begin + //PC <= #1 PC + 1; + PC <= #1 PC16; + end + if (BTR_r == 1'b1 ) + begin + //PC <= #1 PC - 2; + PC <= #1 PC16; + end + if (RstP == 1'b1 ) + begin + TmpAddr <= #1 { 10'h0, IR[5:3], 3'h0 }; + //TmpAddr <= #1 (others =>1'b0); + //TmpAddr[5:3] <= #1 IR[5:3]; + end + end + if (tstate[3] && mcycle[5] ) + begin + TmpAddr <= #1 SP16; + end + + if ((tstate[2] && wait_n == 1'b1) || (tstate[4] && mcycle[0]) ) + begin + if (IncDec_16[2:0] == 3'b111 ) + begin + SP <= #1 SP16; + end + end + + if (LDSPHL == 1'b1 ) + begin + SP <= #1 RegBusC; + end + if (ExchangeAF == 1'b1 ) + begin + Ap <= #1 ACC; + ACC <= #1 Ap; + Fp <= #1 F; + F <= #1 Fp; + end + if (ExchangeRS == 1'b1 ) + begin + Alternate <= #1 ~ Alternate; + end + end // else: !if(mcycle == 3'b001 && tstate(2) == 1'b0 ) + + + if (tstate[3] ) + begin + if (LDZ == 1'b1 ) + begin + TmpAddr[7:0] <= #1 DI_Reg; + end + if (LDW == 1'b1 ) + begin + TmpAddr[15:8] <= #1 DI_Reg; + end + + if (Special_LD[2] == 1'b1 ) + begin + case (Special_LD[1:0]) + 2'b00 : + begin + ACC <= #1 I; + F[Flag_P] <= #1 IntE_FF2; + F[Flag_Z] <= (I == 0); + F[Flag_S] <= I[7]; + F[Flag_H] <= 0; + F[Flag_N] <= 0; + end + + 2'b01 : + begin + `ifdef TV80_REFRESH + ACC <= #1 R; + `else + ACC <= #1 0; + `endif + F[Flag_P] <= #1 IntE_FF2; + F[Flag_Z] <= (I == 0); + F[Flag_S] <= I[7]; + F[Flag_H] <= 0; + F[Flag_N] <= 0; + end + + 2'b10 : + I <= #1 ACC; + + `ifdef TV80_REFRESH + default : + R <= #1 ACC; + `else + default : ; + `endif + endcase + end + end // if (tstate == 3 ) + + + if ((I_DJNZ == 1'b0 && Save_ALU_r == 1'b1) || ALU_Op_r == 4'b1001 ) + begin + if (Mode == 3 ) + begin + F[6] <= #1 F_Out[6]; + F[5] <= #1 F_Out[5]; + F[7] <= #1 F_Out[7]; + if (PreserveC_r == 1'b0 ) + begin + F[4] <= #1 F_Out[4]; + end + end + else + begin + F[7:1] <= #1 F_Out[7:1]; + if (PreserveC_r == 1'b0 ) + begin + F[Flag_C] <= #1 F_Out[0]; + end + end + end // if ((I_DJNZ == 1'b0 && Save_ALU_r == 1'b1) || ALU_Op_r == 4'b1001 ) + + if (T_Res == 1'b1 && I_INRC == 1'b1 ) + begin + F[Flag_H] <= #1 1'b0; + F[Flag_N] <= #1 1'b0; + if (DI_Reg[7:0] == 8'b00000000 ) + begin + F[Flag_Z] <= #1 1'b1; + end + else + begin + F[Flag_Z] <= #1 1'b0; + end + F[Flag_S] <= #1 DI_Reg[7]; + F[Flag_P] <= #1 ~ (^DI_Reg[7:0]); + end // if (T_Res == 1'b1 && I_INRC == 1'b1 ) + + + if (tstate[1] && Auto_Wait_t1 == 1'b0 ) + begin + dout <= #1 BusB; + if (I_RLD == 1'b1 ) + begin + dout[3:0] <= #1 BusA[3:0]; + dout[7:4] <= #1 BusB[3:0]; + end + if (I_RRD == 1'b1 ) + begin + dout[3:0] <= #1 BusB[7:4]; + dout[7:4] <= #1 BusA[3:0]; + end + end + + if (T_Res == 1'b1 ) + begin + Read_To_Reg_r[3:0] <= #1 Set_BusA_To; + Read_To_Reg_r[4] <= #1 Read_To_Reg; + if (Read_To_Acc == 1'b1 ) + begin + Read_To_Reg_r[3:0] <= #1 4'b0111; + Read_To_Reg_r[4] <= #1 1'b1; + end + end + + if (tstate[1] && I_BT == 1'b1 ) + begin + F[Flag_X] <= #1 ALU_Q[3]; + F[Flag_Y] <= #1 ALU_Q[1]; + F[Flag_H] <= #1 1'b0; + F[Flag_N] <= #1 1'b0; + end + if (I_BC == 1'b1 || I_BT == 1'b1 ) + begin + F[Flag_P] <= #1 IncDecZ; + end + + if ((tstate[1] && Save_ALU_r == 1'b0 && Auto_Wait_t1 == 1'b0) || + (Save_ALU_r == 1'b1 && ALU_Op_r != 4'b0111) ) + begin + case (Read_To_Reg_r) + 5'b10111 : + ACC <= #1 Save_Mux; + 5'b10110 : + dout <= #1 Save_Mux; + 5'b11000 : + SP[7:0] <= #1 Save_Mux; + 5'b11001 : + SP[15:8] <= #1 Save_Mux; + 5'b11011 : + F <= #1 Save_Mux; + default : ; + endcase + end // if ((tstate == 1 && Save_ALU_r == 1'b0 && Auto_Wait_t1 == 1'b0) ||... + end // if (ClkEn == 1'b1 ) + end // else: !if(reset_n == 1'b0 ) + end + + + //------------------------------------------------------------------------- + // + // BC('), DE('), HL('), IX && IY + // + //------------------------------------------------------------------------- + always @ (posedge clk) + begin + if (ClkEn == 1'b1 ) + begin + // Bus A / Write + RegAddrA_r <= #1 { Alternate, Set_BusA_To[2:1] }; + if (XY_Ind == 1'b0 && XY_State != 2'b00 && Set_BusA_To[2:1] == 2'b10 ) + begin + RegAddrA_r <= #1 { XY_State[1], 2'b11 }; + end + + // Bus B + RegAddrB_r <= #1 { Alternate, Set_BusB_To[2:1] }; + if (XY_Ind == 1'b0 && XY_State != 2'b00 && Set_BusB_To[2:1] == 2'b10 ) + begin + RegAddrB_r <= #1 { XY_State[1], 2'b11 }; + end + + // Address from register + RegAddrC <= #1 { Alternate, Set_Addr_To[1:0] }; + // Jump (HL), LD SP,HL + if ((JumpXY == 1'b1 || LDSPHL == 1'b1) ) + begin + RegAddrC <= #1 { Alternate, 2'b10 }; + end + if (((JumpXY == 1'b1 || LDSPHL == 1'b1) && XY_State != 2'b00) || (mcycle[5]) ) + begin + RegAddrC <= #1 { XY_State[1], 2'b11 }; + end + + if (I_DJNZ == 1'b1 && Save_ALU_r == 1'b1 && Mode < 2 ) + begin + IncDecZ <= #1 F_Out[Flag_Z]; + end + if ((tstate[2] || (tstate[3] && mcycle[0])) && IncDec_16[2:0] == 3'b100 ) + begin + if (ID16 == 0 ) + begin + IncDecZ <= #1 1'b0; + end + else + begin + IncDecZ <= #1 1'b1; + end + end + + RegBusA_r <= #1 RegBusA; + end + + end // always @ (posedge clk) + + + always @(/*AUTOSENSE*/Alternate or ExchangeDH or IncDec_16 + or RegAddrA_r or RegAddrB_r or XY_State or mcycle or tstate) + begin + if ((tstate[2] || (tstate[3] && mcycle[0] && IncDec_16[2] == 1'b1)) && XY_State == 2'b00) + RegAddrA = { Alternate, IncDec_16[1:0] }; + else if ((tstate[2] || (tstate[3] && mcycle[0] && IncDec_16[2] == 1'b1)) && IncDec_16[1:0] == 2'b10) + RegAddrA = { XY_State[1], 2'b11 }; + else if (ExchangeDH == 1'b1 && tstate[3]) + RegAddrA = { Alternate, 2'b10 }; + else if (ExchangeDH == 1'b1 && tstate[4]) + RegAddrA = { Alternate, 2'b01 }; + else + RegAddrA = RegAddrA_r; + + if (ExchangeDH == 1'b1 && tstate[3]) + RegAddrB = { Alternate, 2'b01 }; + else + RegAddrB = RegAddrB_r; + end // always @ * + + + always @(/*AUTOSENSE*/ALU_Op_r or Auto_Wait_t1 or ExchangeDH + or IncDec_16 or Read_To_Reg_r or Save_ALU_r or mcycle + or tstate or wait_n) + begin + RegWEH = 1'b0; + RegWEL = 1'b0; + if ((tstate[1] && ~Save_ALU_r && ~Auto_Wait_t1) || + (Save_ALU_r && (ALU_Op_r != 4'b0111)) ) + begin + case (Read_To_Reg_r) + 5'b10000 , 5'b10001 , 5'b10010 , 5'b10011 , 5'b10100 , 5'b10101 : + begin + RegWEH = ~ Read_To_Reg_r[0]; + RegWEL = Read_To_Reg_r[0]; + end // UNMATCHED !! + default : ; + endcase // case(Read_To_Reg_r) + + end // if ((tstate == 1 && Save_ALU_r == 1'b0 && Auto_Wait_t1 == 1'b0) ||... + + + if (ExchangeDH && (tstate[3] || tstate[4]) ) + begin + RegWEH = 1'b1; + RegWEL = 1'b1; + end + + if (IncDec_16[2] && ((tstate[2] && wait_n && ~mcycle[0]) || (tstate[3] && mcycle[0])) ) + begin + case (IncDec_16[1:0]) + 2'b00 , 2'b01 , 2'b10 : + begin + RegWEH = 1'b1; + RegWEL = 1'b1; + end // UNMATCHED !! + default : ; + endcase + end + end // always @ * + + + always @(/*AUTOSENSE*/ExchangeDH or ID16 or IncDec_16 or RegBusA_r + or RegBusB or Save_Mux or mcycle or tstate) + begin + RegDIH = Save_Mux; + RegDIL = Save_Mux; + + if (ExchangeDH == 1'b1 && tstate[3] ) + begin + RegDIH = RegBusB[15:8]; + RegDIL = RegBusB[7:0]; + end + else if (ExchangeDH == 1'b1 && tstate[4] ) + begin + RegDIH = RegBusA_r[15:8]; + RegDIL = RegBusA_r[7:0]; + end + else if (IncDec_16[2] == 1'b1 && ((tstate[2] && ~mcycle[0]) || (tstate[3] && mcycle[0])) ) + begin + RegDIH = ID16[15:8]; + RegDIL = ID16[7:0]; + end + end + + tv80_reg i_reg + ( + .clk (clk), + .CEN (ClkEn), + .WEH (RegWEH), + .WEL (RegWEL), + .AddrA (RegAddrA), + .AddrB (RegAddrB), + .AddrC (RegAddrC), + .DIH (RegDIH), + .DIL (RegDIL), + .DOAH (RegBusA[15:8]), + .DOAL (RegBusA[7:0]), + .DOBH (RegBusB[15:8]), + .DOBL (RegBusB[7:0]), + .DOCH (RegBusC[15:8]), + .DOCL (RegBusC[7:0]) + ); + + //------------------------------------------------------------------------- + // + // Buses + // + //------------------------------------------------------------------------- + + always @ (posedge clk) + begin + if (ClkEn == 1'b1 ) + begin + case (Set_BusB_To) + 4'b0111 : + BusB <= #1 ACC; + 4'b0000 , 4'b0001 , 4'b0010 , 4'b0011 , 4'b0100 , 4'b0101 : + begin + if (Set_BusB_To[0] == 1'b1 ) + begin + BusB <= #1 RegBusB[7:0]; + end + else + begin + BusB <= #1 RegBusB[15:8]; + end + end + 4'b0110 : + BusB <= #1 DI_Reg; + 4'b1000 : + BusB <= #1 SP[7:0]; + 4'b1001 : + BusB <= #1 SP[15:8]; + 4'b1010 : + BusB <= #1 8'b00000001; + 4'b1011 : + BusB <= #1 F; + 4'b1100 : + BusB <= #1 PC[7:0]; + 4'b1101 : + BusB <= #1 PC[15:8]; + 4'b1110 : + BusB <= #1 8'b00000000; + default : + BusB <= #1 8'h0; + endcase + + case (Set_BusA_To) + 4'b0111 : + BusA <= #1 ACC; + 4'b0000 , 4'b0001 , 4'b0010 , 4'b0011 , 4'b0100 , 4'b0101 : + begin + if (Set_BusA_To[0] == 1'b1 ) + begin + BusA <= #1 RegBusA[7:0]; + end + else + begin + BusA <= #1 RegBusA[15:8]; + end + end + 4'b0110 : + BusA <= #1 DI_Reg; + 4'b1000 : + BusA <= #1 SP[7:0]; + 4'b1001 : + BusA <= #1 SP[15:8]; + 4'b1010 : + BusA <= #1 8'b00000000; + default : + BusA <= #1 8'h0; + endcase + end + end + + //------------------------------------------------------------------------- + // + // Generate external control signals + // + //------------------------------------------------------------------------- +`ifdef TV80_REFRESH + always @ (posedge clk or negedge reset_n) + begin + if (reset_n == 1'b0 ) + begin + rfsh_n <= #1 1'b1; + end + else + begin + if (cen == 1'b1 ) + begin + if (mcycle[0] && ((tstate[2] && wait_n == 1'b1) || tstate[3]) ) + begin + rfsh_n <= #1 1'b0; + end + else + begin + rfsh_n <= #1 1'b1; + end + end + end + end // always @ (posedge clk or negedge reset_n) +`else // !`ifdef TV80_REFRESH + assign rfsh_n = 1'b1; +`endif + + always @(/*AUTOSENSE*/BusAck or Halt_FF or I_DJNZ or IntCycle + or IntE_FF1 or di or iorq_i or mcycle or tstate) + begin + mc = mcycle; + ts = tstate; + DI_Reg = di; + halt_n = ~ Halt_FF; + busak_n = ~ BusAck; + intcycle_n = ~ IntCycle; + IntE = IntE_FF1; + iorq = iorq_i; + stop = I_DJNZ; + end + + //----------------------------------------------------------------------- + // + // Syncronise inputs + // + //----------------------------------------------------------------------- + + always @ (posedge clk or negedge reset_n) + begin : sync_inputs + if (~reset_n) + begin + BusReq_s <= #1 1'b0; + INT_s <= #1 1'b0; + NMI_s <= #1 1'b0; + Oldnmi_n <= #1 1'b0; + end + else + begin + if (cen == 1'b1 ) + begin + BusReq_s <= #1 ~ busrq_n; + INT_s <= #1 ~ int_n; + if (NMICycle == 1'b1 ) + begin + NMI_s <= #1 1'b0; + end + else if (nmi_n == 1'b0 && Oldnmi_n == 1'b1 ) + begin + NMI_s <= #1 1'b1; + end + Oldnmi_n <= #1 nmi_n; + end + end + end + + //----------------------------------------------------------------------- + // + // Main state machine + // + //----------------------------------------------------------------------- + + always @ (posedge clk or negedge reset_n) + begin + if (reset_n == 1'b0 ) + begin + mcycle <= #1 7'b0000001; + tstate <= #1 7'b0000001; + Pre_XY_F_M <= #1 3'b000; + Halt_FF <= #1 1'b0; + BusAck <= #1 1'b0; + NMICycle <= #1 1'b0; + IntCycle <= #1 1'b0; + IntE_FF1 <= #1 1'b0; + IntE_FF2 <= #1 1'b0; + No_BTR <= #1 1'b0; + Auto_Wait_t1 <= #1 1'b0; + Auto_Wait_t2 <= #1 1'b0; + m1_n <= #1 1'b1; + end + else + begin + if (cen == 1'b1 ) + begin + if (T_Res == 1'b1 ) + begin + Auto_Wait_t1 <= #1 1'b0; + end + else + begin + Auto_Wait_t1 <= #1 Auto_Wait || (iorq_i & ~Auto_Wait_t2); + end + Auto_Wait_t2 <= #1 Auto_Wait_t1 & !T_Res; + No_BTR <= #1 (I_BT && (~ IR[4] || ~ F[Flag_P])) || + (I_BC && (~ IR[4] || F[Flag_Z] || ~ F[Flag_P])) || + (I_BTR && (~ IR[4] || F[Flag_Z])); + if (tstate[2] ) + begin + if (SetEI == 1'b1 ) + begin + if (!NMICycle) + IntE_FF1 <= #1 1'b1; + IntE_FF2 <= #1 1'b1; + end + if (I_RETN == 1'b1 ) + begin + IntE_FF1 <= #1 IntE_FF2; + end + end + if (tstate[3] ) + begin + if (SetDI == 1'b1 ) + begin + IntE_FF1 <= #1 1'b0; + IntE_FF2 <= #1 1'b0; + end + end + if (IntCycle == 1'b1 || NMICycle == 1'b1 ) + begin + Halt_FF <= #1 1'b0; + end + if (mcycle[0] && tstate[2] && wait_n == 1'b1 ) + begin + m1_n <= #1 1'b1; + end + if (BusReq_s == 1'b1 && BusAck == 1'b1 ) + begin + end + else + begin + BusAck <= #1 1'b0; + if (tstate[2] && wait_n == 1'b0 ) + begin + end + else if (T_Res == 1'b1 ) + begin + if (Halt == 1'b1 ) + begin + Halt_FF <= #1 1'b1; + end + if (BusReq_s == 1'b1 ) + begin + BusAck <= #1 1'b1; + end + else + begin + tstate <= #1 7'b0000010; + if (NextIs_XY_Fetch == 1'b1 ) + begin + mcycle <= #1 7'b0100000; + Pre_XY_F_M <= #1 mcyc_to_number(mcycle); + if (IR == 8'b00110110 && Mode == 0 ) + begin + Pre_XY_F_M <= #1 3'b010; + end + end + else if ((mcycle[6]) || (mcycle[5] && Mode == 1 && ISet != 2'b01) ) + begin + mcycle <= #1 number_to_bitvec(Pre_XY_F_M + 1); + end + else if ((last_mcycle) || + No_BTR == 1'b1 || + (mcycle[1] && I_DJNZ == 1'b1 && IncDecZ == 1'b1) ) + begin + m1_n <= #1 1'b0; + mcycle <= #1 7'b0000001; + IntCycle <= #1 1'b0; + NMICycle <= #1 1'b0; + if (NMI_s == 1'b1 && Prefix == 2'b00 ) + begin + NMICycle <= #1 1'b1; + IntE_FF1 <= #1 1'b0; + end + else if ((IntE_FF1 == 1'b1 && INT_s == 1'b1) && Prefix == 2'b00 && SetEI == 1'b0 ) + begin + IntCycle <= #1 1'b1; + IntE_FF1 <= #1 1'b0; + IntE_FF2 <= #1 1'b0; + end + end + else + begin + mcycle <= #1 { mcycle[5:0], mcycle[6] }; + end + end + end + else + begin // verilog has no "nor" operator + if ( ~(Auto_Wait == 1'b1 && Auto_Wait_t2 == 1'b0) && + ~(IOWait == 1 && iorq_i == 1'b1 && Auto_Wait_t1 == 1'b0) ) + begin + tstate <= #1 { tstate[5:0], tstate[6] }; + end + end + end + if (tstate[0]) + begin + m1_n <= #1 1'b0; + end + end + end + end + + always @(/*AUTOSENSE*/BTR_r or DI_Reg or IncDec_16 or JumpE or PC + or RegBusA or RegBusC or SP or tstate) + begin + if (JumpE == 1'b1 ) + begin + PC16_B = { {8{DI_Reg[7]}}, DI_Reg }; + end + else if (BTR_r == 1'b1 ) + begin + PC16_B = -2; + end + else + begin + PC16_B = 1; + end + + if (tstate[3]) + begin + SP16_A = RegBusC; + SP16_B = { {8{DI_Reg[7]}}, DI_Reg }; + end + else + begin + // suspect that ID16 and SP16 could be shared + SP16_A = SP; + + if (IncDec_16[3] == 1'b1) + SP16_B = -1; + else + SP16_B = 1; + end + + if (IncDec_16[3]) + ID16_B = -1; + else + ID16_B = 1; + + ID16 = RegBusA + ID16_B; + PC16 = PC + PC16_B; + SP16 = SP16_A + SP16_B; + end // always @ * + + + always @(/*AUTOSENSE*/IntCycle or NMICycle or mcycle) + begin + Auto_Wait = 1'b0; + if (IntCycle == 1'b1 || NMICycle == 1'b1 ) + begin + if (mcycle[0] ) + begin + Auto_Wait = 1'b1; + end + end + end // always @ * + +endmodule // T80 + diff --git a/cores/KypSpectrum/tv80_mcode.v b/cores/KypSpectrum/tv80_mcode.v new file mode 100644 index 0000000..40622d2 --- /dev/null +++ b/cores/KypSpectrum/tv80_mcode.v @@ -0,0 +1,2650 @@ +// +// TV80 8-Bit Microprocessor Core +// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) +// +// Copyright (c) 2004,2007 Guy Hutchison (ghutchis@opencores.org) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +module tv80_mcode + (/*AUTOARG*/ + // Outputs + MCycles, TStates, Prefix, Inc_PC, Inc_WZ, IncDec_16, Read_To_Reg, + Read_To_Acc, Set_BusA_To, Set_BusB_To, ALU_Op, Save_ALU, PreserveC, + Arith16, Set_Addr_To, IORQ, Jump, JumpE, JumpXY, Call, RstP, LDZ, + LDW, LDSPHL, Special_LD, ExchangeDH, ExchangeRp, ExchangeAF, + ExchangeRS, I_DJNZ, I_CPL, I_CCF, I_SCF, I_RETN, I_BT, I_BC, I_BTR, + I_RLD, I_RRD, I_INRC, SetDI, SetEI, IMode, Halt, NoRead, Write, + // Inputs + IR, ISet, MCycle, F, NMICycle, IntCycle + ); + + parameter Mode = 0; + parameter Flag_C = 0; + parameter Flag_N = 1; + parameter Flag_P = 2; + parameter Flag_X = 3; + parameter Flag_H = 4; + parameter Flag_Y = 5; + parameter Flag_Z = 6; + parameter Flag_S = 7; + + input [7:0] IR; + input [1:0] ISet ; + input [6:0] MCycle ; + input [7:0] F ; + input NMICycle ; + input IntCycle ; + output [2:0] MCycles ; + output [2:0] TStates ; + output [1:0] Prefix ; // None,BC,ED,DD/FD + output Inc_PC ; + output Inc_WZ ; + output [3:0] IncDec_16 ; // BC,DE,HL,SP 0 is inc + output Read_To_Reg ; + output Read_To_Acc ; + output [3:0] Set_BusA_To ; // B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F + output [3:0] Set_BusB_To ; // B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0 + output [3:0] ALU_Op ; + output Save_ALU ; + output PreserveC ; + output Arith16 ; + output [2:0] Set_Addr_To ; // aNone,aXY,aIOA,aSP,aBC,aDE,aZI + output IORQ ; + output Jump ; + output JumpE ; + output JumpXY ; + output Call ; + output RstP ; + output LDZ ; + output LDW ; + output LDSPHL ; + output [2:0] Special_LD ; // A,I;A,R;I,A;R,A;None + output ExchangeDH ; + output ExchangeRp ; + output ExchangeAF ; + output ExchangeRS ; + output I_DJNZ ; + output I_CPL ; + output I_CCF ; + output I_SCF ; + output I_RETN ; + output I_BT ; + output I_BC ; + output I_BTR ; + output I_RLD ; + output I_RRD ; + output I_INRC ; + output SetDI ; + output SetEI ; + output [1:0] IMode ; + output Halt ; + output NoRead ; + output Write ; + + // regs + reg [2:0] MCycles ; + reg [2:0] TStates ; + reg [1:0] Prefix ; // None,BC,ED,DD/FD + reg Inc_PC ; + reg Inc_WZ ; + reg [3:0] IncDec_16 ; // BC,DE,HL,SP 0 is inc + reg Read_To_Reg ; + reg Read_To_Acc ; + reg [3:0] Set_BusA_To ; // B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F + reg [3:0] Set_BusB_To ; // B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0 + reg [3:0] ALU_Op ; + reg Save_ALU ; + reg PreserveC ; + reg Arith16 ; + reg [2:0] Set_Addr_To ; // aNone,aXY,aIOA,aSP,aBC,aDE,aZI + reg IORQ ; + reg Jump ; + reg JumpE ; + reg JumpXY ; + reg Call ; + reg RstP ; + reg LDZ ; + reg LDW ; + reg LDSPHL ; + reg [2:0] Special_LD ; // A,I;A,R;I,A;R,A;None + reg ExchangeDH ; + reg ExchangeRp ; + reg ExchangeAF ; + reg ExchangeRS ; + reg I_DJNZ ; + reg I_CPL ; + reg I_CCF ; + reg I_SCF ; + reg I_RETN ; + reg I_BT ; + reg I_BC ; + reg I_BTR ; + reg I_RLD ; + reg I_RRD ; + reg I_INRC ; + reg SetDI ; + reg SetEI ; + reg [1:0] IMode ; + reg Halt ; + reg NoRead ; + reg Write ; + + parameter aNone = 3'b111; + parameter aBC = 3'b000; + parameter aDE = 3'b001; + parameter aXY = 3'b010; + parameter aIOA = 3'b100; + parameter aSP = 3'b101; + parameter aZI = 3'b110; + // constant aNone : std_logic_vector[2:0] = 3'b000; + // constant aXY : std_logic_vector[2:0] = 3'b001; + // constant aIOA : std_logic_vector[2:0] = 3'b010; + // constant aSP : std_logic_vector[2:0] = 3'b011; + // constant aBC : std_logic_vector[2:0] = 3'b100; + // constant aDE : std_logic_vector[2:0] = 3'b101; + // constant aZI : std_logic_vector[2:0] = 3'b110; + + function is_cc_true; + input [7:0] FF; + input [2:0] cc; + begin + if (Mode == 3 ) + begin + case (cc) + 3'b000 : is_cc_true = FF[7] == 1'b0; // NZ + 3'b001 : is_cc_true = FF[7] == 1'b1; // Z + 3'b010 : is_cc_true = FF[4] == 1'b0; // NC + 3'b011 : is_cc_true = FF[4] == 1'b1; // C + 3'b100 : is_cc_true = 0; + 3'b101 : is_cc_true = 0; + 3'b110 : is_cc_true = 0; + 3'b111 : is_cc_true = 0; + endcase + end + else + begin + case (cc) + 3'b000 : is_cc_true = FF[6] == 1'b0; // NZ + 3'b001 : is_cc_true = FF[6] == 1'b1; // Z + 3'b010 : is_cc_true = FF[0] == 1'b0; // NC + 3'b011 : is_cc_true = FF[0] == 1'b1; // C + 3'b100 : is_cc_true = FF[2] == 1'b0; // PO + 3'b101 : is_cc_true = FF[2] == 1'b1; // PE + 3'b110 : is_cc_true = FF[7] == 1'b0; // P + 3'b111 : is_cc_true = FF[7] == 1'b1; // M + endcase + end + end + endfunction // is_cc_true + + + reg [2:0] DDD; + reg [2:0] SSS; + reg [1:0] DPAIR; + + always @ (/*AUTOSENSE*/F or IR or ISet or IntCycle or MCycle + or NMICycle) + begin + DDD = IR[5:3]; + SSS = IR[2:0]; + DPAIR = IR[5:4]; + + MCycles = 3'b001; + if (MCycle[0] ) + begin + TStates = 3'b100; + end + else + begin + TStates = 3'b011; + end + Prefix = 2'b00; + Inc_PC = 1'b0; + Inc_WZ = 1'b0; + IncDec_16 = 4'b0000; + Read_To_Acc = 1'b0; + Read_To_Reg = 1'b0; + Set_BusB_To = 4'b0000; + Set_BusA_To = 4'b0000; + ALU_Op = { 1'b0, IR[5:3] }; + Save_ALU = 1'b0; + PreserveC = 1'b0; + Arith16 = 1'b0; + IORQ = 1'b0; + Set_Addr_To = aNone; + Jump = 1'b0; + JumpE = 1'b0; + JumpXY = 1'b0; + Call = 1'b0; + RstP = 1'b0; + LDZ = 1'b0; + LDW = 1'b0; + LDSPHL = 1'b0; + Special_LD = 3'b000; + ExchangeDH = 1'b0; + ExchangeRp = 1'b0; + ExchangeAF = 1'b0; + ExchangeRS = 1'b0; + I_DJNZ = 1'b0; + I_CPL = 1'b0; + I_CCF = 1'b0; + I_SCF = 1'b0; + I_RETN = 1'b0; + I_BT = 1'b0; + I_BC = 1'b0; + I_BTR = 1'b0; + I_RLD = 1'b0; + I_RRD = 1'b0; + I_INRC = 1'b0; + SetDI = 1'b0; + SetEI = 1'b0; + IMode = 2'b11; + Halt = 1'b0; + NoRead = 1'b0; + Write = 1'b0; + + case (ISet) + 2'b00 : + begin + + //---------------------------------------------------------------------------- + // + // Unprefixed instructions + // + //---------------------------------------------------------------------------- + + casez (IR) + // 8 BIT LOAD GROUP + 8'b01zzzzzz : + begin + if (IR[5:0] == 6'b110110) + Halt = 1'b1; + else if (IR[2:0] == 3'b110) + begin + // LD r,(HL) + MCycles = 3'b010; + if (MCycle[0]) + Set_Addr_To = aXY; + if (MCycle[1]) + begin + Set_BusA_To[2:0] = DDD; + Read_To_Reg = 1'b1; + end + end // if (IR[2:0] == 3'b110) + else if (IR[5:3] == 3'b110) + begin + // LD (HL),r + MCycles = 3'b010; + if (MCycle[0]) + begin + Set_Addr_To = aXY; + Set_BusB_To[2:0] = SSS; + Set_BusB_To[3] = 1'b0; + end + if (MCycle[1]) + Write = 1'b1; + end // if (IR[5:3] == 3'b110) + else + begin + Set_BusB_To[2:0] = SSS; + ExchangeRp = 1'b1; + Set_BusA_To[2:0] = DDD; + Read_To_Reg = 1'b1; + end // else: !if(IR[5:3] == 3'b110) + end // case: 8'b01zzzzzz + + 8'b00zzz110 : + begin + if (IR[5:3] == 3'b110) + begin + // LD (HL),n + MCycles = 3'b011; + if (MCycle[1]) + begin + Inc_PC = 1'b1; + Set_Addr_To = aXY; + Set_BusB_To[2:0] = SSS; + Set_BusB_To[3] = 1'b0; + end + if (MCycle[2]) + Write = 1'b1; + end // if (IR[5:3] == 3'b110) + else + begin + // LD r,n + MCycles = 3'b010; + if (MCycle[1]) + begin + Inc_PC = 1'b1; + Set_BusA_To[2:0] = DDD; + Read_To_Reg = 1'b1; + end + end + end + + 8'b00001010 : + begin + // LD A,(BC) + MCycles = 3'b010; + if (MCycle[0]) + Set_Addr_To = aBC; + if (MCycle[1]) + Read_To_Acc = 1'b1; + end // case: 8'b00001010 + + 8'b00011010 : + begin + // LD A,(DE) + MCycles = 3'b010; + if (MCycle[0]) + Set_Addr_To = aDE; + if (MCycle[1]) + Read_To_Acc = 1'b1; + end // case: 8'b00011010 + + 8'b00111010 : + begin + if (Mode == 3 ) + begin + // LDD A,(HL) + MCycles = 3'b010; + if (MCycle[0]) + Set_Addr_To = aXY; + if (MCycle[1]) + begin + Read_To_Acc = 1'b1; + IncDec_16 = 4'b1110; + end + end + else + begin + // LD A,(nn) + MCycles = 3'b100; + if (MCycle[1]) + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + if (MCycle[2]) + begin + Set_Addr_To = aZI; + Inc_PC = 1'b1; + end + if (MCycle[3]) + begin + Read_To_Acc = 1'b1; + end + end // else: !if(Mode == 3 ) + end // case: 8'b00111010 + + 8'b00000010 : + begin + // LD (BC),A + MCycles = 3'b010; + if (MCycle[0]) + begin + Set_Addr_To = aBC; + Set_BusB_To = 4'b0111; + end + if (MCycle[1]) + begin + Write = 1'b1; + end + end // case: 8'b00000010 + + 8'b00010010 : + begin + // LD (DE),A + MCycles = 3'b010; + case (1'b1) // MCycle + MCycle[0] : + begin + Set_Addr_To = aDE; + Set_BusB_To = 4'b0111; + end + MCycle[1] : + Write = 1'b1; + default :; + endcase // case(MCycle) + end // case: 8'b00010010 + + 8'b00110010 : + begin + if (Mode == 3 ) + begin + // LDD (HL),A + MCycles = 3'b010; + case (1'b1) // MCycle + MCycle[0] : + begin + Set_Addr_To = aXY; + Set_BusB_To = 4'b0111; + end + MCycle[1] : + begin + Write = 1'b1; + IncDec_16 = 4'b1110; + end + default :; + endcase // case(MCycle) + + end + else + begin + // LD (nn),A + MCycles = 3'b100; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + MCycle[2] : + begin + Set_Addr_To = aZI; + Inc_PC = 1'b1; + Set_BusB_To = 4'b0111; + end + MCycle[3] : + begin + Write = 1'b1; + end + default :; + endcase + end // else: !if(Mode == 3 ) + end // case: 8'b00110010 + + + // 16 BIT LOAD GROUP + 8'b00000001,8'b00010001,8'b00100001,8'b00110001 : + begin + // LD dd,nn + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + Read_To_Reg = 1'b1; + if (DPAIR == 2'b11 ) + begin + Set_BusA_To[3:0] = 4'b1000; + end + else + begin + Set_BusA_To[2:1] = DPAIR; + Set_BusA_To[0] = 1'b1; + end + end // case: 2 + + MCycle[2] : + begin + Inc_PC = 1'b1; + Read_To_Reg = 1'b1; + if (DPAIR == 2'b11 ) + begin + Set_BusA_To[3:0] = 4'b1001; + end + else + begin + Set_BusA_To[2:1] = DPAIR; + Set_BusA_To[0] = 1'b0; + end + end // case: 3 + + default :; + endcase // case(MCycle) + end // case: 8'b00000001,8'b00010001,8'b00100001,8'b00110001 + + 8'b00101010 : + begin + if (Mode == 3 ) + begin + // LDI A,(HL) + MCycles = 3'b010; + case (1'b1) // MCycle + MCycle[0] : + Set_Addr_To = aXY; + MCycle[1] : + begin + Read_To_Acc = 1'b1; + IncDec_16 = 4'b0110; + end + + default :; + endcase + end + else + begin + // LD HL,(nn) + MCycles = 3'b101; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + MCycle[2] : + begin + Set_Addr_To = aZI; + Inc_PC = 1'b1; + LDW = 1'b1; + end + MCycle[3] : + begin + Set_BusA_To[2:0] = 3'b101; // L + Read_To_Reg = 1'b1; + Inc_WZ = 1'b1; + Set_Addr_To = aZI; + end + MCycle[4] : + begin + Set_BusA_To[2:0] = 3'b100; // H + Read_To_Reg = 1'b1; + end + default :; + endcase + end // else: !if(Mode == 3 ) + end // case: 8'b00101010 + + 8'b00100010 : + begin + if (Mode == 3 ) + begin + // LDI (HL),A + MCycles = 3'b010; + case (1'b1) // MCycle + MCycle[0] : + begin + Set_Addr_To = aXY; + Set_BusB_To = 4'b0111; + end + MCycle[1] : + begin + Write = 1'b1; + IncDec_16 = 4'b0110; + end + default :; + endcase + end + else + begin + // LD (nn),HL + MCycles = 3'b101; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + + MCycle[2] : + begin + Set_Addr_To = aZI; + Inc_PC = 1'b1; + LDW = 1'b1; + Set_BusB_To = 4'b0101; // L + end + + MCycle[3] : + begin + Inc_WZ = 1'b1; + Set_Addr_To = aZI; + Write = 1'b1; + Set_BusB_To = 4'b0100; // H + end + MCycle[4] : + Write = 1'b1; + default :; + endcase + end // else: !if(Mode == 3 ) + end // case: 8'b00100010 + + 8'b11111001 : + begin + // LD SP,HL + TStates = 3'b110; + LDSPHL = 1'b1; + end + + 8'b11zz0101 : + begin + // PUSH qq + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0] : + begin + TStates = 3'b101; + IncDec_16 = 4'b1111; + Set_Addr_To = aSP; + if (DPAIR == 2'b11 ) + begin + Set_BusB_To = 4'b0111; + end + else + begin + Set_BusB_To[2:1] = DPAIR; + Set_BusB_To[0] = 1'b0; + Set_BusB_To[3] = 1'b0; + end + end // case: 1 + + MCycle[1] : + begin + IncDec_16 = 4'b1111; + Set_Addr_To = aSP; + if (DPAIR == 2'b11 ) + begin + Set_BusB_To = 4'b1011; + end + else + begin + Set_BusB_To[2:1] = DPAIR; + Set_BusB_To[0] = 1'b1; + Set_BusB_To[3] = 1'b0; + end + Write = 1'b1; + end // case: 2 + + MCycle[2] : + Write = 1'b1; + default :; + endcase // case(MCycle) + end // case: 8'b11000101,8'b11010101,8'b11100101,8'b11110101 + + 8'b11zz0001 : + begin + // POP qq + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0] : + Set_Addr_To = aSP; + MCycle[1] : + begin + IncDec_16 = 4'b0111; + Set_Addr_To = aSP; + Read_To_Reg = 1'b1; + if (DPAIR == 2'b11 ) + begin + Set_BusA_To[3:0] = 4'b1011; + end + else + begin + Set_BusA_To[2:1] = DPAIR; + Set_BusA_To[0] = 1'b1; + end + end // case: 2 + + MCycle[2] : + begin + IncDec_16 = 4'b0111; + Read_To_Reg = 1'b1; + if (DPAIR == 2'b11 ) + begin + Set_BusA_To[3:0] = 4'b0111; + end + else + begin + Set_BusA_To[2:1] = DPAIR; + Set_BusA_To[0] = 1'b0; + end + end // case: 3 + + default :; + endcase // case(MCycle) + end // case: 8'b11000001,8'b11010001,8'b11100001,8'b11110001 + + + // EXCHANGE, BLOCK TRANSFER AND SEARCH GROUP + 8'b11101011 : + begin + if (Mode != 3 ) + begin + // EX DE,HL + ExchangeDH = 1'b1; + end + end + + 8'b00001000 : + begin + if (Mode == 3 ) + begin + // LD (nn),SP + MCycles = 3'b101; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + + MCycle[2] : + begin + Set_Addr_To = aZI; + Inc_PC = 1'b1; + LDW = 1'b1; + Set_BusB_To = 4'b1000; + end + + MCycle[3] : + begin + Inc_WZ = 1'b1; + Set_Addr_To = aZI; + Write = 1'b1; + Set_BusB_To = 4'b1001; + end + + MCycle[4] : + Write = 1'b1; + default :; + endcase + end + else if (Mode < 2 ) + begin + // EX AF,AF' + ExchangeAF = 1'b1; + end + end // case: 8'b00001000 + + 8'b11011001 : + begin + if (Mode == 3 ) + begin + // RETI + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0] : + Set_Addr_To = aSP; + MCycle[1] : + begin + IncDec_16 = 4'b0111; + Set_Addr_To = aSP; + LDZ = 1'b1; + end + + MCycle[2] : + begin + Jump = 1'b1; + IncDec_16 = 4'b0111; + I_RETN = 1'b1; + SetEI = 1'b1; + end + default :; + endcase + end + else if (Mode < 2 ) + begin + // EXX + ExchangeRS = 1'b1; + end + end // case: 8'b11011001 + + 8'b11100011 : + begin + if (Mode != 3 ) + begin + // EX (SP),HL + MCycles = 3'b101; + case (1'b1) // MCycle + MCycle[0] : + Set_Addr_To = aSP; + MCycle[1] : + begin + Read_To_Reg = 1'b1; + Set_BusA_To = 4'b0101; + Set_BusB_To = 4'b0101; + Set_Addr_To = aSP; + end + MCycle[2] : + begin + IncDec_16 = 4'b0111; + Set_Addr_To = aSP; + TStates = 3'b100; + Write = 1'b1; + end + MCycle[3] : + begin + Read_To_Reg = 1'b1; + Set_BusA_To = 4'b0100; + Set_BusB_To = 4'b0100; + Set_Addr_To = aSP; + end + MCycle[4] : + begin + IncDec_16 = 4'b1111; + TStates = 3'b101; + Write = 1'b1; + end + + default :; + endcase + end // if (Mode != 3 ) + end // case: 8'b11100011 + + + // 8 BIT ARITHMETIC AND LOGICAL GROUP + 8'b10zzzzzz : + begin + if (IR[2:0] == 3'b110) + begin + // ADD A,(HL) + // ADC A,(HL) + // SUB A,(HL) + // SBC A,(HL) + // AND A,(HL) + // OR A,(HL) + // XOR A,(HL) + // CP A,(HL) + MCycles = 3'b010; + case (1'b1) // MCycle + MCycle[0] : + Set_Addr_To = aXY; + MCycle[1] : + begin + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + Set_BusB_To[2:0] = SSS; + Set_BusA_To[2:0] = 3'b111; + end + + default :; + endcase // case(MCycle) + end // if (IR[2:0] == 3'b110) + else + begin + // ADD A,r + // ADC A,r + // SUB A,r + // SBC A,r + // AND A,r + // OR A,r + // XOR A,r + // CP A,r + Set_BusB_To[2:0] = SSS; + Set_BusA_To[2:0] = 3'b111; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + end // else: !if(IR[2:0] == 3'b110) + end // case: 8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000111,... + + 8'b11zzz110 : + begin + // ADD A,n + // ADC A,n + // SUB A,n + // SBC A,n + // AND A,n + // OR A,n + // XOR A,n + // CP A,n + MCycles = 3'b010; + if (MCycle[1] ) + begin + Inc_PC = 1'b1; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + Set_BusB_To[2:0] = SSS; + Set_BusA_To[2:0] = 3'b111; + end + end + + 8'b00zzz100 : + begin + if (IR[5:3] == 3'b110) + begin + // INC (HL) + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0] : + Set_Addr_To = aXY; + MCycle[1] : + begin + TStates = 3'b100; + Set_Addr_To = aXY; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + PreserveC = 1'b1; + ALU_Op = 4'b0000; + Set_BusB_To = 4'b1010; + Set_BusA_To[2:0] = DDD; + end // case: 2 + + MCycle[2] : + Write = 1'b1; + default :; + endcase // case(MCycle) + end // case: 8'b00110100 + else + begin + // INC r + Set_BusB_To = 4'b1010; + Set_BusA_To[2:0] = DDD; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + PreserveC = 1'b1; + ALU_Op = 4'b0000; + end + end + + 8'b00zzz101 : + begin + if (IR[5:3] == 3'b110) + begin + // DEC (HL) + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0] : + Set_Addr_To = aXY; + MCycle[1] : + begin + TStates = 3'b100; + Set_Addr_To = aXY; + ALU_Op = 4'b0010; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + PreserveC = 1'b1; + Set_BusB_To = 4'b1010; + Set_BusA_To[2:0] = DDD; + end // case: 2 + + MCycle[2] : + Write = 1'b1; + default :; + endcase // case(MCycle) + end + else + begin + // DEC r + Set_BusB_To = 4'b1010; + Set_BusA_To[2:0] = DDD; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + PreserveC = 1'b1; + ALU_Op = 4'b0010; + end + end + + // GENERAL PURPOSE ARITHMETIC AND CPU CONTROL GROUPS + 8'b00100111 : + begin + // DAA + Set_BusA_To[2:0] = 3'b111; + Read_To_Reg = 1'b1; + ALU_Op = 4'b1100; + Save_ALU = 1'b1; + end + + 8'b00101111 : + // CPL + I_CPL = 1'b1; + + 8'b00111111 : + // CCF + I_CCF = 1'b1; + + 8'b00110111 : + // SCF + I_SCF = 1'b1; + + 8'b00000000 : + begin + if (NMICycle == 1'b1 ) + begin + // NMI + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0] : + begin + TStates = 3'b101; + IncDec_16 = 4'b1111; + Set_Addr_To = aSP; + Set_BusB_To = 4'b1101; + end + + MCycle[1] : + begin + TStates = 3'b100; + Write = 1'b1; + IncDec_16 = 4'b1111; + Set_Addr_To = aSP; + Set_BusB_To = 4'b1100; + end + + MCycle[2] : + begin + TStates = 3'b100; + Write = 1'b1; + end + + default :; + endcase // case(MCycle) + + end + else if (IntCycle == 1'b1 ) + begin + // INT (IM 2) + MCycles = 3'b101; + case (1'b1) // MCycle + MCycle[0] : + begin + LDZ = 1'b1; + TStates = 3'b101; + IncDec_16 = 4'b1111; + Set_Addr_To = aSP; + Set_BusB_To = 4'b1101; + end + + MCycle[1] : + begin + TStates = 3'b100; + Write = 1'b1; + IncDec_16 = 4'b1111; + Set_Addr_To = aSP; + Set_BusB_To = 4'b1100; + end + + MCycle[2] : + begin + TStates = 3'b100; + Write = 1'b1; + end + + MCycle[3] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + + MCycle[4] : + Jump = 1'b1; + default :; + endcase + end + end // case: 8'b00000000 + + 8'b11110011 : + // DI + SetDI = 1'b1; + + 8'b11111011 : + // EI + SetEI = 1'b1; + + // 16 BIT ARITHMETIC GROUP + 8'b00zz1001 : + begin + // ADD HL,ss + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[1] : + begin + NoRead = 1'b1; + ALU_Op = 4'b0000; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + Set_BusA_To[2:0] = 3'b101; + case (IR[5:4]) + 0,1,2 : + begin + Set_BusB_To[2:1] = IR[5:4]; + Set_BusB_To[0] = 1'b1; + end + + default : + Set_BusB_To = 4'b1000; + endcase // case(IR[5:4]) + + TStates = 3'b100; + Arith16 = 1'b1; + end // case: 2 + + MCycle[2] : + begin + NoRead = 1'b1; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + ALU_Op = 4'b0001; + Set_BusA_To[2:0] = 3'b100; + case (IR[5:4]) + 0,1,2 : + Set_BusB_To[2:1] = IR[5:4]; + default : + Set_BusB_To = 4'b1001; + endcase + Arith16 = 1'b1; + end // case: 3 + + default :; + endcase // case(MCycle) + end // case: 8'b00001001,8'b00011001,8'b00101001,8'b00111001 + + 8'b00zz0011 : + begin + // INC ss + TStates = 3'b110; + IncDec_16[3:2] = 2'b01; + IncDec_16[1:0] = DPAIR; + end + + 8'b00zz1011 : + begin + // DEC ss + TStates = 3'b110; + IncDec_16[3:2] = 2'b11; + IncDec_16[1:0] = DPAIR; + end + + // ROTATE AND SHIFT GROUP + 8'b00000111, + // RLCA + 8'b00010111, + // RLA + 8'b00001111, + // RRCA + 8'b00011111 : + // RRA + begin + Set_BusA_To[2:0] = 3'b111; + ALU_Op = 4'b1000; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + end // case: 8'b00000111,... + + + // JUMP GROUP + 8'b11000011 : + begin + // JP nn + MCycles = 3'b011; + if (MCycle[1]) + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + + if (MCycle[2]) + begin + Inc_PC = 1'b1; + Jump = 1'b1; + end + + end // case: 8'b11000011 + + 8'b11zzz010 : + begin + if (IR[5] == 1'b1 && Mode == 3 ) + begin + case (IR[4:3]) + 2'b00 : + begin + // LD ($FF00+C),A + MCycles = 3'b010; + case (1'b1) // MCycle + MCycle[0] : + begin + Set_Addr_To = aBC; + Set_BusB_To = 4'b0111; + end + MCycle[1] : + begin + Write = 1'b1; + IORQ = 1'b1; + end + + default :; + endcase // case(MCycle) + end // case: 2'b00 + + 2'b01 : + begin + // LD (nn),A + MCycles = 3'b100; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + + MCycle[2] : + begin + Set_Addr_To = aZI; + Inc_PC = 1'b1; + Set_BusB_To = 4'b0111; + end + + MCycle[3] : + Write = 1'b1; + default :; + endcase // case(MCycle) + end // case: default :... + + 2'b10 : + begin + // LD A,($FF00+C) + MCycles = 3'b010; + case (1'b1) // MCycle + MCycle[0] : + Set_Addr_To = aBC; + MCycle[1] : + begin + Read_To_Acc = 1'b1; + IORQ = 1'b1; + end + default :; + endcase // case(MCycle) + end // case: 2'b10 + + 2'b11 : + begin + // LD A,(nn) + MCycles = 3'b100; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + MCycle[2] : + begin + Set_Addr_To = aZI; + Inc_PC = 1'b1; + end + MCycle[3] : + Read_To_Acc = 1'b1; + default :; + endcase // case(MCycle) + end + endcase + end + else + begin + // JP cc,nn + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + MCycle[2] : + begin + Inc_PC = 1'b1; + if (is_cc_true(F, IR[5:3]) ) + begin + Jump = 1'b1; + end + end + + default :; + endcase + end // else: !if(DPAIR == 2'b11 ) + end // case: 8'b11000010,8'b11001010,8'b11010010,8'b11011010,8'b11100010,8'b11101010,8'b11110010,8'b11111010 + + 8'b00011000 : + begin + if (Mode != 2 ) + begin + // JR e + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[1] : + Inc_PC = 1'b1; + MCycle[2] : + begin + NoRead = 1'b1; + JumpE = 1'b1; + TStates = 3'b101; + end + default :; + endcase + end // if (Mode != 2 ) + end // case: 8'b00011000 + + // Conditional relative jumps (JR [C/NC/Z/NZ], e) + 8'b001zz000 : + begin + if (Mode != 2 ) + begin + MCycles = 3'd3; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + + case (IR[4:3]) + 0 : MCycles = (F[Flag_Z]) ? 3'd2 : 3'd3; + 1 : MCycles = (!F[Flag_Z]) ? 3'd2 : 3'd3; + 2 : MCycles = (F[Flag_C]) ? 3'd2 : 3'd3; + 3 : MCycles = (!F[Flag_C]) ? 3'd2 : 3'd3; + endcase + end + + MCycle[2] : + begin + NoRead = 1'b1; + JumpE = 1'b1; + TStates = 3'd5; + end + default :; + endcase + end // if (Mode != 2 ) + end // case: 8'b00111000 + + 8'b11101001 : + // JP (HL) + JumpXY = 1'b1; + + 8'b00010000 : + begin + if (Mode == 3 ) + begin + I_DJNZ = 1'b1; + end + else if (Mode < 2 ) + begin + // DJNZ,e + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0] : + begin + TStates = 3'b101; + I_DJNZ = 1'b1; + Set_BusB_To = 4'b1010; + Set_BusA_To[2:0] = 3'b000; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + ALU_Op = 4'b0010; + end + MCycle[1] : + begin + I_DJNZ = 1'b1; + Inc_PC = 1'b1; + end + MCycle[2] : + begin + NoRead = 1'b1; + JumpE = 1'b1; + TStates = 3'b101; + end + default :; + endcase + end // if (Mode < 2 ) + end // case: 8'b00010000 + + + // CALL AND RETURN GROUP + 8'b11001101 : + begin + // CALL nn + MCycles = 3'b101; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + MCycle[2] : + begin + IncDec_16 = 4'b1111; + Inc_PC = 1'b1; + TStates = 3'b100; + Set_Addr_To = aSP; + LDW = 1'b1; + Set_BusB_To = 4'b1101; + end + MCycle[3] : + begin + Write = 1'b1; + IncDec_16 = 4'b1111; + Set_Addr_To = aSP; + Set_BusB_To = 4'b1100; + end + MCycle[4] : + begin + Write = 1'b1; + Call = 1'b1; + end + default :; + endcase // case(MCycle) + end // case: 8'b11001101 + + 8'b11zzz100 : + begin + if (IR[5] == 1'b0 || Mode != 3 ) + begin + // CALL cc,nn + MCycles = 3'b101; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + MCycle[2] : + begin + Inc_PC = 1'b1; + LDW = 1'b1; + if (is_cc_true(F, IR[5:3]) ) + begin + IncDec_16 = 4'b1111; + Set_Addr_To = aSP; + TStates = 3'b100; + Set_BusB_To = 4'b1101; + end + else + begin + MCycles = 3'b011; + end // else: !if(is_cc_true(F, IR[5:3]) ) + end // case: 3 + + MCycle[3] : + begin + Write = 1'b1; + IncDec_16 = 4'b1111; + Set_Addr_To = aSP; + Set_BusB_To = 4'b1100; + end + + MCycle[4] : + begin + Write = 1'b1; + Call = 1'b1; + end + + default :; + endcase + end // if (IR[5] == 1'b0 || Mode != 3 ) + end // case: 8'b11000100,8'b11001100,8'b11010100,8'b11011100,8'b11100100,8'b11101100,8'b11110100,8'b11111100 + + 8'b11001001 : + begin + // RET + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0] : + begin + TStates = 3'b101; + Set_Addr_To = aSP; + end + + MCycle[1] : + begin + IncDec_16 = 4'b0111; + Set_Addr_To = aSP; + LDZ = 1'b1; + end + + MCycle[2] : + begin + Jump = 1'b1; + IncDec_16 = 4'b0111; + end + + default :; + endcase // case(MCycle) + end // case: 8'b11001001 + + 8'b11000000,8'b11001000,8'b11010000,8'b11011000,8'b11100000,8'b11101000,8'b11110000,8'b11111000 : + begin + if (IR[5] == 1'b1 && Mode == 3 ) + begin + case (IR[4:3]) + 2'b00 : + begin + // LD ($FF00+nn),A + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + Set_Addr_To = aIOA; + Set_BusB_To = 4'b0111; + end + + MCycle[2] : + Write = 1'b1; + default :; + endcase // case(MCycle) + end // case: 2'b00 + + 2'b01 : + begin + // ADD SP,n + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[1] : + begin + ALU_Op = 4'b0000; + Inc_PC = 1'b1; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + Set_BusA_To = 4'b1000; + Set_BusB_To = 4'b0110; + end + + MCycle[2] : + begin + NoRead = 1'b1; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + ALU_Op = 4'b0001; + Set_BusA_To = 4'b1001; + Set_BusB_To = 4'b1110; // Incorrect unsigned !!!!!!!!!!!!!!!!!!!!! + end + + default :; + endcase // case(MCycle) + end // case: 2'b01 + + 2'b10 : + begin + // LD A,($FF00+nn) + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + Set_Addr_To = aIOA; + end + + MCycle[2] : + Read_To_Acc = 1'b1; + default :; + endcase // case(MCycle) + end // case: 2'b10 + + 2'b11 : + begin + // LD HL,SP+n -- Not correct !!!!!!!!!!!!!!!!!!! + MCycles = 3'b101; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + + MCycle[2] : + begin + Set_Addr_To = aZI; + Inc_PC = 1'b1; + LDW = 1'b1; + end + + MCycle[3] : + begin + Set_BusA_To[2:0] = 3'b101; // L + Read_To_Reg = 1'b1; + Inc_WZ = 1'b1; + Set_Addr_To = aZI; + end + + MCycle[4] : + begin + Set_BusA_To[2:0] = 3'b100; // H + Read_To_Reg = 1'b1; + end + + default :; + endcase // case(MCycle) + end // case: 2'b11 + + endcase // case(IR[4:3]) + + end + else + begin + // RET cc + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0] : + begin + if (is_cc_true(F, IR[5:3]) ) + begin + Set_Addr_To = aSP; + end + else + begin + MCycles = 3'b001; + end + TStates = 3'b101; + end // case: 1 + + MCycle[1] : + begin + IncDec_16 = 4'b0111; + Set_Addr_To = aSP; + LDZ = 1'b1; + end + MCycle[2] : + begin + Jump = 1'b1; + IncDec_16 = 4'b0111; + end + default :; + endcase + end // else: !if(IR[5] == 1'b1 && Mode == 3 ) + end // case: 8'b11000000,8'b11001000,8'b11010000,8'b11011000,8'b11100000,8'b11101000,8'b11110000,8'b11111000 + + 8'b11000111,8'b11001111,8'b11010111,8'b11011111,8'b11100111,8'b11101111,8'b11110111,8'b11111111 : + begin + // RST p + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0] : + begin + TStates = 3'b101; + IncDec_16 = 4'b1111; + Set_Addr_To = aSP; + Set_BusB_To = 4'b1101; + end + + MCycle[1] : + begin + Write = 1'b1; + IncDec_16 = 4'b1111; + Set_Addr_To = aSP; + Set_BusB_To = 4'b1100; + end + + MCycle[2] : + begin + Write = 1'b1; + RstP = 1'b1; + end + + default :; + endcase // case(MCycle) + end // case: 8'b11000111,8'b11001111,8'b11010111,8'b11011111,8'b11100111,8'b11101111,8'b11110111,8'b11111111 + + // INPUT AND OUTPUT GROUP + 8'b11011011 : + begin + if (Mode != 3 ) + begin + // IN A,(n) + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + Set_Addr_To = aIOA; + end + + MCycle[2] : + begin + Read_To_Acc = 1'b1; + IORQ = 1'b1; + end + + default :; + endcase + end // if (Mode != 3 ) + end // case: 8'b11011011 + + 8'b11010011 : + begin + if (Mode != 3 ) + begin + // OUT (n),A + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + Set_Addr_To = aIOA; + Set_BusB_To = 4'b0111; + end + + MCycle[2] : + begin + Write = 1'b1; + IORQ = 1'b1; + end + + default :; + endcase + end // if (Mode != 3 ) + end // case: 8'b11010011 + + + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + // MULTIBYTE INSTRUCTIONS + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + + 8'b11001011 : + begin + if (Mode != 2 ) + begin + Prefix = 2'b01; + end + end + + 8'b11101101 : + begin + if (Mode < 2 ) + begin + Prefix = 2'b10; + end + end + + 8'b11011101,8'b11111101 : + begin + if (Mode < 2 ) + begin + Prefix = 2'b11; + end + end + + endcase // case(IR) + end // case: 2'b00 + + + 2'b01 : + begin + + + //---------------------------------------------------------------------------- + // + // CB prefixed instructions + // + //---------------------------------------------------------------------------- + + Set_BusA_To[2:0] = IR[2:0]; + Set_BusB_To[2:0] = IR[2:0]; + + casez (IR) + 8'b00000000,8'b00000001,8'b00000010,8'b00000011,8'b00000100,8'b00000101,8'b00000111, + 8'b00010000,8'b00010001,8'b00010010,8'b00010011,8'b00010100,8'b00010101,8'b00010111, + 8'b00001000,8'b00001001,8'b00001010,8'b00001011,8'b00001100,8'b00001101,8'b00001111, + 8'b00011000,8'b00011001,8'b00011010,8'b00011011,8'b00011100,8'b00011101,8'b00011111, + 8'b00100000,8'b00100001,8'b00100010,8'b00100011,8'b00100100,8'b00100101,8'b00100111, + 8'b00101000,8'b00101001,8'b00101010,8'b00101011,8'b00101100,8'b00101101,8'b00101111, + 8'b00110000,8'b00110001,8'b00110010,8'b00110011,8'b00110100,8'b00110101,8'b00110111, + 8'b00111000,8'b00111001,8'b00111010,8'b00111011,8'b00111100,8'b00111101,8'b00111111 : + begin + // RLC r + // RL r + // RRC r + // RR r + // SLA r + // SRA r + // SRL r + // SLL r (Undocumented) / SWAP r + if (MCycle[0] ) begin + ALU_Op = 4'b1000; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + end + end // case: 8'b00000000,8'b00000001,8'b00000010,8'b00000011,8'b00000100,8'b00000101,8'b00000111,... + + 8'b00zzz110 : + begin + // RLC (HL) + // RL (HL) + // RRC (HL) + // RR (HL) + // SRA (HL) + // SRL (HL) + // SLA (HL) + // SLL (HL) (Undocumented) / SWAP (HL) + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0], MCycle[6] : + Set_Addr_To = aXY; + MCycle[1] : + begin + ALU_Op = 4'b1000; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + Set_Addr_To = aXY; + TStates = 3'b100; + end + + MCycle[2] : + Write = 1'b1; + default :; + endcase // case(MCycle) + end // case: 8'b00000110,8'b00010110,8'b00001110,8'b00011110,8'b00101110,8'b00111110,8'b00100110,8'b00110110 + + 8'b01000000,8'b01000001,8'b01000010,8'b01000011,8'b01000100,8'b01000101,8'b01000111, + 8'b01001000,8'b01001001,8'b01001010,8'b01001011,8'b01001100,8'b01001101,8'b01001111, + 8'b01010000,8'b01010001,8'b01010010,8'b01010011,8'b01010100,8'b01010101,8'b01010111, + 8'b01011000,8'b01011001,8'b01011010,8'b01011011,8'b01011100,8'b01011101,8'b01011111, + 8'b01100000,8'b01100001,8'b01100010,8'b01100011,8'b01100100,8'b01100101,8'b01100111, + 8'b01101000,8'b01101001,8'b01101010,8'b01101011,8'b01101100,8'b01101101,8'b01101111, + 8'b01110000,8'b01110001,8'b01110010,8'b01110011,8'b01110100,8'b01110101,8'b01110111, + 8'b01111000,8'b01111001,8'b01111010,8'b01111011,8'b01111100,8'b01111101,8'b01111111 : + begin + // BIT b,r + if (MCycle[0] ) + begin + Set_BusB_To[2:0] = IR[2:0]; + ALU_Op = 4'b1001; + end + end // case: 8'b01000000,8'b01000001,8'b01000010,8'b01000011,8'b01000100,8'b01000101,8'b01000111,... + + 8'b01000110,8'b01001110,8'b01010110,8'b01011110,8'b01100110,8'b01101110,8'b01110110,8'b01111110 : + begin + // BIT b,(HL) + MCycles = 3'b010; + case (1'b1) // MCycle + MCycle[0], MCycle[6] : + Set_Addr_To = aXY; + MCycle[1] : + begin + ALU_Op = 4'b1001; + TStates = 3'b100; + end + + default :; + endcase // case(MCycle) + end // case: 8'b01000110,8'b01001110,8'b01010110,8'b01011110,8'b01100110,8'b01101110,8'b01110110,8'b01111110 + + 8'b11000000,8'b11000001,8'b11000010,8'b11000011,8'b11000100,8'b11000101,8'b11000111, + 8'b11001000,8'b11001001,8'b11001010,8'b11001011,8'b11001100,8'b11001101,8'b11001111, + 8'b11010000,8'b11010001,8'b11010010,8'b11010011,8'b11010100,8'b11010101,8'b11010111, + 8'b11011000,8'b11011001,8'b11011010,8'b11011011,8'b11011100,8'b11011101,8'b11011111, + 8'b11100000,8'b11100001,8'b11100010,8'b11100011,8'b11100100,8'b11100101,8'b11100111, + 8'b11101000,8'b11101001,8'b11101010,8'b11101011,8'b11101100,8'b11101101,8'b11101111, + 8'b11110000,8'b11110001,8'b11110010,8'b11110011,8'b11110100,8'b11110101,8'b11110111, + 8'b11111000,8'b11111001,8'b11111010,8'b11111011,8'b11111100,8'b11111101,8'b11111111 : + begin + // SET b,r + if (MCycle[0] ) + begin + ALU_Op = 4'b1010; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + end + end // case: 8'b11000000,8'b11000001,8'b11000010,8'b11000011,8'b11000100,8'b11000101,8'b11000111,... + + 8'b11000110,8'b11001110,8'b11010110,8'b11011110,8'b11100110,8'b11101110,8'b11110110,8'b11111110 : + begin + // SET b,(HL) + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0], MCycle[6] : + Set_Addr_To = aXY; + MCycle[1] : + begin + ALU_Op = 4'b1010; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + Set_Addr_To = aXY; + TStates = 3'b100; + end + MCycle[2] : + Write = 1'b1; + default :; + endcase // case(MCycle) + end // case: 8'b11000110,8'b11001110,8'b11010110,8'b11011110,8'b11100110,8'b11101110,8'b11110110,8'b11111110 + + 8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000111, + 8'b10001000,8'b10001001,8'b10001010,8'b10001011,8'b10001100,8'b10001101,8'b10001111, + 8'b10010000,8'b10010001,8'b10010010,8'b10010011,8'b10010100,8'b10010101,8'b10010111, + 8'b10011000,8'b10011001,8'b10011010,8'b10011011,8'b10011100,8'b10011101,8'b10011111, + 8'b10100000,8'b10100001,8'b10100010,8'b10100011,8'b10100100,8'b10100101,8'b10100111, + 8'b10101000,8'b10101001,8'b10101010,8'b10101011,8'b10101100,8'b10101101,8'b10101111, + 8'b10110000,8'b10110001,8'b10110010,8'b10110011,8'b10110100,8'b10110101,8'b10110111, + 8'b10111000,8'b10111001,8'b10111010,8'b10111011,8'b10111100,8'b10111101,8'b10111111 : + begin + // RES b,r + if (MCycle[0] ) + begin + ALU_Op = 4'b1011; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + end + end // case: 8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000111,... + + 8'b10000110,8'b10001110,8'b10010110,8'b10011110,8'b10100110,8'b10101110,8'b10110110,8'b10111110 : + begin + // RES b,(HL) + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0], MCycle[6] : + Set_Addr_To = aXY; + MCycle[1] : + begin + ALU_Op = 4'b1011; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + Set_Addr_To = aXY; + TStates = 3'b100; + end + + MCycle[2] : + Write = 1'b1; + default :; + endcase // case(MCycle) + end // case: 8'b10000110,8'b10001110,8'b10010110,8'b10011110,8'b10100110,8'b10101110,8'b10110110,8'b10111110 + + endcase // case(IR) + end // case: 2'b01 + + + default : + begin : default_ed_block + + //---------------------------------------------------------------------------- + // + // ED prefixed instructions + // + //---------------------------------------------------------------------------- + + casez (IR) + /* + * Undocumented NOP instructions commented out to reduce size of mcode + * + 8'b00000000,8'b00000001,8'b00000010,8'b00000011,8'b00000100,8'b00000101,8'b00000110,8'b00000111 + ,8'b00001000,8'b00001001,8'b00001010,8'b00001011,8'b00001100,8'b00001101,8'b00001110,8'b00001111 + ,8'b00010000,8'b00010001,8'b00010010,8'b00010011,8'b00010100,8'b00010101,8'b00010110,8'b00010111 + ,8'b00011000,8'b00011001,8'b00011010,8'b00011011,8'b00011100,8'b00011101,8'b00011110,8'b00011111 + ,8'b00100000,8'b00100001,8'b00100010,8'b00100011,8'b00100100,8'b00100101,8'b00100110,8'b00100111 + ,8'b00101000,8'b00101001,8'b00101010,8'b00101011,8'b00101100,8'b00101101,8'b00101110,8'b00101111 + ,8'b00110000,8'b00110001,8'b00110010,8'b00110011,8'b00110100,8'b00110101,8'b00110110,8'b00110111 + ,8'b00111000,8'b00111001,8'b00111010,8'b00111011,8'b00111100,8'b00111101,8'b00111110,8'b00111111 + + + ,8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000110,8'b10000111 + ,8'b10001000,8'b10001001,8'b10001010,8'b10001011,8'b10001100,8'b10001101,8'b10001110,8'b10001111 + ,8'b10010000,8'b10010001,8'b10010010,8'b10010011,8'b10010100,8'b10010101,8'b10010110,8'b10010111 + ,8'b10011000,8'b10011001,8'b10011010,8'b10011011,8'b10011100,8'b10011101,8'b10011110,8'b10011111 + , 8'b10100100,8'b10100101,8'b10100110,8'b10100111 + , 8'b10101100,8'b10101101,8'b10101110,8'b10101111 + , 8'b10110100,8'b10110101,8'b10110110,8'b10110111 + , 8'b10111100,8'b10111101,8'b10111110,8'b10111111 + ,8'b11000000,8'b11000001,8'b11000010,8'b11000011,8'b11000100,8'b11000101,8'b11000110,8'b11000111 + ,8'b11001000,8'b11001001,8'b11001010,8'b11001011,8'b11001100,8'b11001101,8'b11001110,8'b11001111 + ,8'b11010000,8'b11010001,8'b11010010,8'b11010011,8'b11010100,8'b11010101,8'b11010110,8'b11010111 + ,8'b11011000,8'b11011001,8'b11011010,8'b11011011,8'b11011100,8'b11011101,8'b11011110,8'b11011111 + ,8'b11100000,8'b11100001,8'b11100010,8'b11100011,8'b11100100,8'b11100101,8'b11100110,8'b11100111 + ,8'b11101000,8'b11101001,8'b11101010,8'b11101011,8'b11101100,8'b11101101,8'b11101110,8'b11101111 + ,8'b11110000,8'b11110001,8'b11110010,8'b11110011,8'b11110100,8'b11110101,8'b11110110,8'b11110111 + ,8'b11111000,8'b11111001,8'b11111010,8'b11111011,8'b11111100,8'b11111101,8'b11111110,8'b11111111 : + ; // NOP, undocumented + + 8'b01111110,8'b01111111 : + // NOP, undocumented + ; + */ + + // 8 BIT LOAD GROUP + 8'b01010111 : + begin + // LD A,I + Special_LD = 3'b100; + TStates = 3'b101; + end + + 8'b01011111 : + begin + // LD A,R + Special_LD = 3'b101; + TStates = 3'b101; + end + + 8'b01000111 : + begin + // LD I,A + Special_LD = 3'b110; + TStates = 3'b101; + end + + 8'b01001111 : + begin + // LD R,A + Special_LD = 3'b111; + TStates = 3'b101; + end + + // 16 BIT LOAD GROUP + 8'b01001011,8'b01011011,8'b01101011,8'b01111011 : + begin + // LD dd,(nn) + MCycles = 3'b101; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + + MCycle[2] : + begin + Set_Addr_To = aZI; + Inc_PC = 1'b1; + LDW = 1'b1; + end + + MCycle[3] : + begin + Read_To_Reg = 1'b1; + if (IR[5:4] == 2'b11 ) + begin + Set_BusA_To = 4'b1000; + end + else + begin + Set_BusA_To[2:1] = IR[5:4]; + Set_BusA_To[0] = 1'b1; + end + Inc_WZ = 1'b1; + Set_Addr_To = aZI; + end // case: 4 + + MCycle[4] : + begin + Read_To_Reg = 1'b1; + if (IR[5:4] == 2'b11 ) + begin + Set_BusA_To = 4'b1001; + end + else + begin + Set_BusA_To[2:1] = IR[5:4]; + Set_BusA_To[0] = 1'b0; + end + end // case: 5 + + default :; + endcase // case(MCycle) + end // case: 8'b01001011,8'b01011011,8'b01101011,8'b01111011 + + + 8'b01000011,8'b01010011,8'b01100011,8'b01110011 : + begin + // LD (nn),dd + MCycles = 3'b101; + case (1'b1) // MCycle + MCycle[1] : + begin + Inc_PC = 1'b1; + LDZ = 1'b1; + end + + MCycle[2] : + begin + Set_Addr_To = aZI; + Inc_PC = 1'b1; + LDW = 1'b1; + if (IR[5:4] == 2'b11 ) + begin + Set_BusB_To = 4'b1000; + end + else + begin + Set_BusB_To[2:1] = IR[5:4]; + Set_BusB_To[0] = 1'b1; + Set_BusB_To[3] = 1'b0; + end + end // case: 3 + + MCycle[3] : + begin + Inc_WZ = 1'b1; + Set_Addr_To = aZI; + Write = 1'b1; + if (IR[5:4] == 2'b11 ) + begin + Set_BusB_To = 4'b1001; + end + else + begin + Set_BusB_To[2:1] = IR[5:4]; + Set_BusB_To[0] = 1'b0; + Set_BusB_To[3] = 1'b0; + end + end // case: 4 + + MCycle[4] : + begin + Write = 1'b1; + end + + default :; + endcase // case(MCycle) + end // case: 8'b01000011,8'b01010011,8'b01100011,8'b01110011 + + 8'b10100000 , 8'b10101000 , 8'b10110000 , 8'b10111000 : + begin + // LDI, LDD, LDIR, LDDR + MCycles = 3'b100; + case (1'b1) // MCycle + MCycle[0] : + begin + Set_Addr_To = aXY; + IncDec_16 = 4'b1100; // BC + end + + MCycle[1] : + begin + Set_BusB_To = 4'b0110; + Set_BusA_To[2:0] = 3'b111; + ALU_Op = 4'b0000; + Set_Addr_To = aDE; + if (IR[3] == 1'b0 ) + begin + IncDec_16 = 4'b0110; // IX + end + else + begin + IncDec_16 = 4'b1110; + end + end // case: 2 + + MCycle[2] : + begin + I_BT = 1'b1; + TStates = 3'b101; + Write = 1'b1; + if (IR[3] == 1'b0 ) + begin + IncDec_16 = 4'b0101; // DE + end + else + begin + IncDec_16 = 4'b1101; + end + end // case: 3 + + MCycle[3] : + begin + NoRead = 1'b1; + TStates = 3'b101; + end + + default :; + endcase // case(MCycle) + end // case: 8'b10100000 , 8'b10101000 , 8'b10110000 , 8'b10111000 + + 8'b10100001 , 8'b10101001 , 8'b10110001 , 8'b10111001 : + begin + // CPI, CPD, CPIR, CPDR + MCycles = 3'b100; + case (1'b1) // MCycle + MCycle[0] : + begin + Set_Addr_To = aXY; + IncDec_16 = 4'b1100; // BC + end + + MCycle[1] : + begin + Set_BusB_To = 4'b0110; + Set_BusA_To[2:0] = 3'b111; + ALU_Op = 4'b0111; + Save_ALU = 1'b1; + PreserveC = 1'b1; + if (IR[3] == 1'b0 ) + begin + IncDec_16 = 4'b0110; + end + else + begin + IncDec_16 = 4'b1110; + end + end // case: 2 + + MCycle[2] : + begin + NoRead = 1'b1; + I_BC = 1'b1; + TStates = 3'b101; + end + + MCycle[3] : + begin + NoRead = 1'b1; + TStates = 3'b101; + end + + default :; + endcase // case(MCycle) + end // case: 8'b10100001 , 8'b10101001 , 8'b10110001 , 8'b10111001 + + 8'b01000100,8'b01001100,8'b01010100,8'b01011100,8'b01100100,8'b01101100,8'b01110100,8'b01111100 : + begin + // NEG + ALU_Op = 4'b0010; + Set_BusB_To = 4'b0111; + Set_BusA_To = 4'b1010; + Read_To_Acc = 1'b1; + Save_ALU = 1'b1; + end + + 8'b01000110,8'b01001110,8'b01100110,8'b01101110 : + begin + // IM 0 + IMode = 2'b00; + end + + 8'b01010110,8'b01110110 : + // IM 1 + IMode = 2'b01; + + 8'b01011110,8'b01110111 : + // IM 2 + IMode = 2'b10; + + // 16 bit arithmetic + 8'b01001010,8'b01011010,8'b01101010,8'b01111010 : + begin + // ADC HL,ss + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[1] : + begin + NoRead = 1'b1; + ALU_Op = 4'b0001; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + Set_BusA_To[2:0] = 3'b101; + case (IR[5:4]) + 0,1,2 : + begin + Set_BusB_To[2:1] = IR[5:4]; + Set_BusB_To[0] = 1'b1; + end + default : + Set_BusB_To = 4'b1000; + endcase + TStates = 3'b100; + end // case: 2 + + MCycle[2] : + begin + NoRead = 1'b1; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + ALU_Op = 4'b0001; + Set_BusA_To[2:0] = 3'b100; + case (IR[5:4]) + 0,1,2 : + begin + Set_BusB_To[2:1] = IR[5:4]; + Set_BusB_To[0] = 1'b0; + end + default : + Set_BusB_To = 4'b1001; + endcase // case(IR[5:4]) + end // case: 3 + + default :; + endcase // case(MCycle) + end // case: 8'b01001010,8'b01011010,8'b01101010,8'b01111010 + + 8'b01000010,8'b01010010,8'b01100010,8'b01110010 : + begin + // SBC HL,ss + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[1] : + begin + NoRead = 1'b1; + ALU_Op = 4'b0011; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + Set_BusA_To[2:0] = 3'b101; + case (IR[5:4]) + 0,1,2 : + begin + Set_BusB_To[2:1] = IR[5:4]; + Set_BusB_To[0] = 1'b1; + end + default : + Set_BusB_To = 4'b1000; + endcase + TStates = 3'b100; + end // case: 2 + + MCycle[2] : + begin + NoRead = 1'b1; + ALU_Op = 4'b0011; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + Set_BusA_To[2:0] = 3'b100; + case (IR[5:4]) + 0,1,2 : + Set_BusB_To[2:1] = IR[5:4]; + default : + Set_BusB_To = 4'b1001; + endcase + end // case: 3 + + default :; + + endcase // case(MCycle) + end // case: 8'b01000010,8'b01010010,8'b01100010,8'b01110010 + + 8'b01101111 : + begin + // RLD + MCycles = 3'b100; + case (1'b1) // MCycle + MCycle[1] : + begin + NoRead = 1'b1; + Set_Addr_To = aXY; + end + + MCycle[2] : + begin + Read_To_Reg = 1'b1; + Set_BusB_To[2:0] = 3'b110; + Set_BusA_To[2:0] = 3'b111; + ALU_Op = 4'b1101; + TStates = 3'b100; + Set_Addr_To = aXY; + Save_ALU = 1'b1; + end + + MCycle[3] : + begin + I_RLD = 1'b1; + Write = 1'b1; + end + + default :; + endcase // case(MCycle) + end // case: 8'b01101111 + + 8'b01100111 : + begin + // RRD + MCycles = 3'b100; + case (1'b1) // MCycle + MCycle[1] : + Set_Addr_To = aXY; + MCycle[2] : + begin + Read_To_Reg = 1'b1; + Set_BusB_To[2:0] = 3'b110; + Set_BusA_To[2:0] = 3'b111; + ALU_Op = 4'b1110; + TStates = 3'b100; + Set_Addr_To = aXY; + Save_ALU = 1'b1; + end + + MCycle[3] : + begin + I_RRD = 1'b1; + Write = 1'b1; + end + + default :; + endcase // case(MCycle) + end // case: 8'b01100111 + + 8'b01000101,8'b01001101,8'b01010101,8'b01011101,8'b01100101,8'b01101101,8'b01110101,8'b01111101 : + begin + // RETI, RETN + MCycles = 3'b011; + case (1'b1) // MCycle + MCycle[0] : + Set_Addr_To = aSP; + + MCycle[1] : + begin + IncDec_16 = 4'b0111; + Set_Addr_To = aSP; + LDZ = 1'b1; + end + + MCycle[2] : + begin + Jump = 1'b1; + IncDec_16 = 4'b0111; + I_RETN = 1'b1; + end + + default :; + endcase // case(MCycle) + end // case: 8'b01000101,8'b01001101,8'b01010101,8'b01011101,8'b01100101,8'b01101101,8'b01110101,8'b01111101 + + 8'b01000000,8'b01001000,8'b01010000,8'b01011000,8'b01100000,8'b01101000,8'b01110000,8'b01111000 : + begin + // IN r,(C) + MCycles = 3'b010; + case (1'b1) // MCycle + MCycle[0] : + Set_Addr_To = aBC; + + MCycle[1] : + begin + IORQ = 1'b1; + if (IR[5:3] != 3'b110 ) + begin + Read_To_Reg = 1'b1; + Set_BusA_To[2:0] = IR[5:3]; + end + I_INRC = 1'b1; + end + + default :; + endcase // case(MCycle) + end // case: 8'b01000000,8'b01001000,8'b01010000,8'b01011000,8'b01100000,8'b01101000,8'b01110000,8'b01111000 + + 8'b01000001,8'b01001001,8'b01010001,8'b01011001,8'b01100001,8'b01101001,8'b01110001,8'b01111001 : + begin + // OUT (C),r + // OUT (C),0 + MCycles = 3'b010; + case (1'b1) // MCycle + MCycle[0] : + begin + Set_Addr_To = aBC; + Set_BusB_To[2:0] = IR[5:3]; + if (IR[5:3] == 3'b110 ) + begin + Set_BusB_To[3] = 1'b1; + end + end + + MCycle[1] : + begin + Write = 1'b1; + IORQ = 1'b1; + end + + default :; + endcase // case(MCycle) + end // case: 8'b01000001,8'b01001001,8'b01010001,8'b01011001,8'b01100001,8'b01101001,8'b01110001,8'b01111001 + + 8'b10100010 , 8'b10101010 , 8'b10110010 , 8'b10111010 : + begin + // INI, IND, INIR, INDR + MCycles = 3'b100; + case (1'b1) // MCycle + MCycle[0] : + begin + Set_Addr_To = aBC; + Set_BusB_To = 4'b1010; + Set_BusA_To = 4'b0000; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + ALU_Op = 4'b0010; + end + + MCycle[1] : + begin + IORQ = 1'b1; + Set_BusB_To = 4'b0110; + Set_Addr_To = aXY; + end + + MCycle[2] : + begin + if (IR[3] == 1'b0 ) + begin + IncDec_16 = 4'b0110; + end + else + begin + IncDec_16 = 4'b1110; + end + TStates = 3'b100; + Write = 1'b1; + I_BTR = 1'b1; + end // case: 3 + + MCycle[3] : + begin + NoRead = 1'b1; + TStates = 3'b101; + end + + default :; + endcase // case(MCycle) + end // case: 8'b10100010 , 8'b10101010 , 8'b10110010 , 8'b10111010 + + 8'b10100011 , 8'b10101011 , 8'b10110011 , 8'b10111011 : + begin + // OUTI, OUTD, OTIR, OTDR + MCycles = 3'b100; + case (1'b1) // MCycle + MCycle[0] : + begin + TStates = 3'b101; + Set_Addr_To = aXY; + Set_BusB_To = 4'b1010; + Set_BusA_To = 4'b0000; + Read_To_Reg = 1'b1; + Save_ALU = 1'b1; + ALU_Op = 4'b0010; + end + + MCycle[1] : + begin + Set_BusB_To = 4'b0110; + Set_Addr_To = aBC; + if (IR[3] == 1'b0 ) + begin + IncDec_16 = 4'b0110; + end + else + begin + IncDec_16 = 4'b1110; + end + end + + MCycle[2] : + begin + if (IR[3] == 1'b0 ) + begin + IncDec_16 = 4'b0010; + end + else + begin + IncDec_16 = 4'b1010; + end + IORQ = 1'b1; + Write = 1'b1; + I_BTR = 1'b1; + end // case: 3 + + MCycle[3] : + begin + NoRead = 1'b1; + TStates = 3'b101; + end + + default :; + endcase // case(MCycle) + end // case: 8'b10100011 , 8'b10101011 , 8'b10110011 , 8'b10111011 + + default : ; + + endcase // case(IR) + end // block: default_ed_block + endcase // case(ISet) + + if (Mode == 1 ) + begin + if (MCycle[0] ) + begin + //TStates = 3'b100; + end + else + begin + TStates = 3'b011; + end + end + + if (Mode == 3 ) + begin + if (MCycle[0] ) + begin + //TStates = 3'b100; + end + else + begin + TStates = 3'b100; + end + end + + if (Mode < 2 ) + begin + if (MCycle[5] ) + begin + Inc_PC = 1'b1; + if (Mode == 1 ) + begin + Set_Addr_To = aXY; + TStates = 3'b100; + Set_BusB_To[2:0] = SSS; + Set_BusB_To[3] = 1'b0; + end + if (IR == 8'b00110110 || IR == 8'b11001011 ) + begin + Set_Addr_To = aNone; + end + end + if (MCycle[6] ) + begin + if (Mode == 0 ) + begin + TStates = 3'b101; + end + if (ISet != 2'b01 ) + begin + Set_Addr_To = aXY; + end + Set_BusB_To[2:0] = SSS; + Set_BusB_To[3] = 1'b0; + if (IR == 8'b00110110 || ISet == 2'b01 ) + begin + // LD (HL),n + Inc_PC = 1'b1; + end + else + begin + NoRead = 1'b1; + end + end + end // if (Mode < 2 ) + + end // always @ (IR, ISet, MCycle, F, NMICycle, IntCycle) +endmodule // T80_MCode diff --git a/cores/KypSpectrum/tv80_reg.v b/cores/KypSpectrum/tv80_reg.v new file mode 100644 index 0000000..889766c --- /dev/null +++ b/cores/KypSpectrum/tv80_reg.v @@ -0,0 +1,77 @@ +// +// TV80 8-Bit Microprocessor Core +// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) +// +// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +module tv80_reg (/*AUTOARG*/ + // Outputs + DOBH, DOAL, DOCL, DOBL, DOCH, DOAH, + // Inputs + AddrC, AddrA, AddrB, DIH, DIL, clk, CEN, WEH, WEL + ); + input [2:0] AddrC; + output [7:0] DOBH; + input [2:0] AddrA; + input [2:0] AddrB; + input [7:0] DIH; + output [7:0] DOAL; + output [7:0] DOCL; + input [7:0] DIL; + output [7:0] DOBL; + output [7:0] DOCH; + output [7:0] DOAH; + input clk, CEN, WEH, WEL; + + reg [7:0] RegsH [0:7]; + reg [7:0] RegsL [0:7]; + + always @(posedge clk) + begin + if (CEN) + begin + if (WEH) RegsH[AddrA] <= DIH; + if (WEL) RegsL[AddrA] <= DIL; + end + end + + assign DOAH = RegsH[AddrA]; + assign DOAL = RegsL[AddrA]; + assign DOBH = RegsH[AddrB]; + assign DOBL = RegsL[AddrB]; + assign DOCH = RegsH[AddrC]; + assign DOCL = RegsL[AddrC]; + + // break out ram bits for waveform debug +// synopsys translate_off + wire [7:0] B = RegsH[0]; + wire [7:0] C = RegsL[0]; + wire [7:0] D = RegsH[1]; + wire [7:0] E = RegsL[1]; + wire [7:0] H = RegsH[2]; + wire [7:0] L = RegsL[2]; + + wire [15:0] IX = { RegsH[3], RegsL[3] }; + wire [15:0] IY = { RegsH[7], RegsL[7] }; +// synopsys translate_on + +endmodule + diff --git a/cores/KypSpectrum/tv80n.v b/cores/KypSpectrum/tv80n.v new file mode 100644 index 0000000..d672608 --- /dev/null +++ b/cores/KypSpectrum/tv80n.v @@ -0,0 +1,182 @@ +// +// TV80 8-Bit Microprocessor Core +// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) +// +// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// Negative-edge based wrapper allows memory wait_n signal to work +// correctly without resorting to asynchronous logic. + +module tv80n (/*AUTOARG*/ + // Outputs + m1_n, mreq_n, iorq_n, rd_n, wr_n, rfsh_n, halt_n, busak_n, A, dout, + // Inputs + reset_n, clk, wait_n, int_n, nmi_n, busrq_n, di + ); + + parameter Mode = 0; // 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB + parameter T2Write = 0; // 0 => wr_n active in T3, /=0 => wr_n active in T2 + parameter IOWait = 1; // 0 => Single cycle I/O, 1 => Std I/O cycle + + + input reset_n; + input clk; + input wait_n; + input int_n; + input nmi_n; + input busrq_n; + output m1_n; + output mreq_n; + output iorq_n; + output rd_n; + output wr_n; + output rfsh_n; + output halt_n; + output busak_n; + output [15:0] A; + input [7:0] di; + output [7:0] dout; + + reg mreq_n; + reg iorq_n; + reg rd_n; + reg wr_n; + reg nxt_mreq_n; + reg nxt_iorq_n; + reg nxt_rd_n; + reg nxt_wr_n; + + wire cen; + wire intcycle_n; + wire no_read; + wire write; + wire iorq; + reg [7:0] di_reg; + wire [6:0] mcycle; + wire [6:0] tstate; + + assign cen = 1; + + tv80_core #(Mode, IOWait) i_tv80_core + ( + .cen (cen), + .m1_n (m1_n), + .iorq (iorq), + .no_read (no_read), + .write (write), + .rfsh_n (rfsh_n), + .halt_n (halt_n), + .wait_n (wait_n), + .int_n (int_n), + .nmi_n (nmi_n), + .reset_n (reset_n), + .busrq_n (busrq_n), + .busak_n (busak_n), + .clk (clk), + .IntE (), + .stop (), + .A (A), + .dinst (di), + .di (di_reg), + .dout (dout), + .mc (mcycle), + .ts (tstate), + .intcycle_n (intcycle_n) + ); + + always @* + begin + nxt_mreq_n = 1; + nxt_rd_n = 1; + nxt_iorq_n = 1; + nxt_wr_n = 1; + + if (mcycle[0]) + begin + if (tstate[1] || tstate[2]) + begin + nxt_rd_n = ~ intcycle_n; + nxt_mreq_n = ~ intcycle_n; + nxt_iorq_n = intcycle_n; + end + end // if (mcycle[0]) + else + begin + if ((tstate[1] || tstate[2]) && !no_read && !write) + begin + nxt_rd_n = 1'b0; + nxt_iorq_n = ~ iorq; + nxt_mreq_n = iorq; + end + if (T2Write == 0) + begin + if (tstate[2] && write) + begin + nxt_wr_n = 1'b0; + nxt_iorq_n = ~ iorq; + nxt_mreq_n = iorq; + end + end + else + begin + if ((tstate[1] || (tstate[2] && !wait_n)) && write) + begin + nxt_wr_n = 1'b0; + nxt_iorq_n = ~ iorq; + nxt_mreq_n = iorq; + end + end // else: !if(T2write == 0) + end // else: !if(mcycle[0]) + end // always @ * + + always @(negedge clk) + begin + if (!reset_n) + begin + rd_n <= #1 1'b1; + wr_n <= #1 1'b1; + iorq_n <= #1 1'b1; + mreq_n <= #1 1'b1; + end + else + begin + rd_n <= #1 nxt_rd_n; + wr_n <= #1 nxt_wr_n; + iorq_n <= #1 nxt_iorq_n; + mreq_n <= #1 nxt_mreq_n; + end // else: !if(!reset_n) + end // always @ (posedge clk or negedge reset_n) + + always @(posedge clk) + begin + if (!reset_n) + begin + di_reg <= #1 0; + end + else + begin + if (tstate[2] && wait_n == 1'b1) + di_reg <= #1 di; + end // else: !if(!reset_n) + end // always @ (posedge clk) + +endmodule // t80n + diff --git a/cores/KypSpectrum/ula.vhd b/cores/KypSpectrum/ula.vhd new file mode 100644 index 0000000..99d4861 --- /dev/null +++ b/cores/KypSpectrum/ula.vhd @@ -0,0 +1,52 @@ +library ieee; + use ieee.std_logic_1164.all; + +entity ula is + port + ( + clock25 : in std_logic; + clock14 : in std_logic; + clock4 : out std_logic; + iorq : in std_logic; + rd : in std_logic; + wr : in std_logic; + a0 : in std_logic; + di : in std_logic_vector( 7 downto 0); + do : out std_logic_vector( 7 downto 0); + int : out std_logic; + va : out std_logic_vector(12 downto 0); + vd : in std_logic_vector( 7 downto 0); + hs : out std_logic; + vs : out std_logic; + rgb : out std_logic_vector(11 downto 0) + ); +end; + +architecture behavioral of ula is + + signal clock : std_logic; + signal portFF : std_logic_vector(2 downto 0); + +begin + + Uvga: entity work.vga port map + ( + clock25 => clock25, + border => portFF(2 downto 0), + va => va, + vd => vd, + hs => hs, + vs => vs, + rgb => rgb + ); + Uvideo: entity work.video port map + ( + clock14 => clock14, + clock4 => clock, + int => int + ); + + clock4 <= clock; + portFF <= di(2 downto 0) when rising_edge(clock) and iorq = '0' and wr = '0' and a0 = '0'; + +end; diff --git a/cores/KypSpectrum/vga.vhd b/cores/KypSpectrum/vga.vhd index cb38ef2..119eac9 100644 --- a/cores/KypSpectrum/vga.vhd +++ b/cores/KypSpectrum/vga.vhd @@ -15,6 +15,7 @@ entity vga is port ( clock25 : in std_logic; + border : in std_logic_vector( 2 downto 0); va : out std_logic_vector(12 downto 0); vd : in std_logic_vector( 7 downto 0); hs : out std_logic; @@ -25,12 +26,12 @@ end; architecture behavioral of vga is - signal x : std_logic_vector( 9 downto 0); - signal y : std_logic_vector( 9 downto 0); - signal f : std_logic_vector( 5 downto 0); - signal xy : std_logic_vector(17 downto 0); - signal bmap : std_logic_vector( 7 downto 0); - signal attr : std_logic_vector( 7 downto 0); + signal xy : std_logic_vector(17 downto 0); + signal x : std_logic_vector( 9 downto 0) := std_logic_vector(to_unsigned(512-20, 10)); + signal y : std_logic_vector( 9 downto 0) := std_logic_vector(to_unsigned(383, 10)); + signal f : std_logic_vector( 5 downto 0); + signal bmap : std_logic_vector( 7 downto 0); + signal attr : std_logic_vector( 7 downto 0); type tpalette is array (0 to 15) of std_logic_vector(11 downto 0); constant palette : tpalette := ( x"000", x"007", x"700", x"707", x"070", x"077", x"770", x"777", x"000", x"00f", x"f00", x"f0f", x"0f0", x"0ff", x"ff0", x"fff" ); @@ -83,7 +84,7 @@ begin if attr(6) = '1' then c := c+8; end if; rgb <= palette(c); elsif x < 640 and y < 480 then - rgb <= x"700"; + rgb <= palette(to_integer(unsigned(border))); else rgb <= x"000"; end if; diff --git a/cores/KypSpectrum/video.vhd b/cores/KypSpectrum/video.vhd new file mode 100644 index 0000000..7fc5682 --- /dev/null +++ b/cores/KypSpectrum/video.vhd @@ -0,0 +1,33 @@ +library ieee; + use ieee.numeric_std.all; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + +entity video is + port + ( + clock14 : in std_logic; + clock4 : out std_logic; + int : out std_logic + ); +end; + +architecture behavioral of video is + + signal count4 : std_logic_vector(1 downto 0) := "00"; + +begin + + clock4 <= count4(1); + count4 <= count4+1 when rising_edge(clock14); + + process(count4(1)) + variable c : std_logic_vector(17 downto 0) := (others => '0'); + begin + if rising_edge(count4(1)) then + if c < 69887 then c := c+1; else c := (others => '0'); end if; + if c >= 16 and c < 48 then int <= '0'; else int <= '1'; end if; + end if; + end process; + +end; diff --git a/cores/KypSpectrum/zxpp.prj b/cores/KypSpectrum/zxpp.prj index 252cfe4..c8a0f08 100644 --- a/cores/KypSpectrum/zxpp.prj +++ b/cores/KypSpectrum/zxpp.prj @@ -1,3 +1,12 @@ +vhdl work "ipcore_dir/rom.vhd" +vhdl work "ipcore_dir/loram.vhd" +verilog work "tv80_reg.v" +verilog work "tv80_mcode.v" +verilog work "tv80_alu.v" +vhdl work "video.vhd" vhdl work "vga.vhd" +verilog work "tv80_core.v" +vhdl work "ula.vhd" +verilog work "tv80n.v" vhdl work "clock.vhd" vhdl work "zxpp.vhd" diff --git a/cores/KypSpectrum/zxpp.vhd b/cores/KypSpectrum/zxpp.vhd index cf76183..3d4a556 100644 --- a/cores/KypSpectrum/zxpp.vhd +++ b/cores/KypSpectrum/zxpp.vhd @@ -4,74 +4,102 @@ library ieee; entity zxpp is port ( - netCLK : in std_logic; - netVS : out std_logic; - netHS : out std_logic; - netR : out std_logic_vector(3 downto 0); - netG : out std_logic_vector(3 downto 0); - netB : out std_logic_vector(3 downto 0) + netRST : in std_logic; + netNMI : in std_logic; + netCLK : in std_logic; + -- + videoV : out std_logic; + videoH : out std_logic; + videoR : out std_logic_vector(3 downto 0); + videoG : out std_logic_vector(3 downto 0); + videoB : out std_logic_vector(3 downto 0) ); end; architecture structural of zxpp is - component clock is - port - ( - clock32 : in std_logic; - clock25 : out std_logic; - clock14 : out std_logic - ); - end component; - - component loram - port - ( - clka : in std_logic; - wea : in std_logic_vector( 0 downto 0); - addra : in std_logic_vector(13 downto 0); - dina : in std_logic_vector( 7 downto 0); - douta : out std_logic_vector( 7 downto 0); - clkb : in std_logic; - web : in std_logic_vector( 0 downto 0); - addrb : in std_logic_vector(13 downto 0); - dinb : in std_logic_vector( 7 downto 0); - doutb : out std_logic_vector( 7 downto 0) - ); - end component; - - component vga is - port - ( - clock25 : in std_logic; - va : out std_logic_vector(12 downto 0); - vd : in std_logic_vector( 7 downto 0); - hs : out std_logic; - vs : out std_logic; - rgb : out std_logic_vector(11 downto 0) - ); - end component; - - signal clock25 : std_logic; - signal clock14 : std_logic; - signal va : std_logic_vector(12 downto 0); - signal vd : std_logic_vector( 7 downto 0); + signal clock25 : std_logic; + signal clock14 : std_logic; + signal clock4 : std_logic; + signal reset : std_logic; + signal nmi : std_logic; + signal int : std_logic; + signal mreq : std_logic; + signal iorq : std_logic; + signal m1 : std_logic; + signal rd : std_logic; + signal wr : std_logic; + signal a : std_logic_vector(15 downto 0); + signal d : std_logic_vector( 7 downto 0); + signal va : std_logic_vector(12 downto 0); + signal vd : std_logic_vector( 7 downto 0); + signal dula : std_logic_vector( 7 downto 0); + signal dcpu : std_logic_vector( 7 downto 0); + signal drom : std_logic_vector( 7 downto 0); + signal dloram : std_logic_vector( 7 downto 0); + signal wloram : std_logic; begin - Uclock: clock port map + Uclock: entity work.clock port map ( - clock32 => netCLK, - clock25 => clock25, - clock14 => clock14 + clock32 => netCLK, + clock25 => clock25, + clock14 => clock14 ); - Uloram: loram port map + Uula: entity work.ula port map ( - clka => '0', - wea(0) => '0', - addra => (others => '0'), - dina => (others => '0'), - douta => open, + clock25 => clock25, + clock14 => clock14, + clock4 => clock4, + iorq => iorq, + rd => rd, + wr => wr, + a0 => a(0), + di => dcpu, + do => dula, + int => int, + va => va, + vd => vd, + hs => videoH, + vs => videoV, + rgb(11 downto 8) => videoR, + rgb( 7 downto 4) => videoG, + rgb( 3 downto 0) => videoB + ); + Ucpu: entity work.tv80n port map + ( + clk => clock4, + reset_n => reset, + nmi_n => nmi, + int_n => int, + wait_n => '1', + busrq_n => '1', + mreq_n => mreq, + iorq_n => iorq, + rd_n => rd, + wr_n => wr, + m1_n => m1, + rfsh_n => open, + halt_n => open, + busak_n => open, + a => a, + di => d, + dout => dcpu + ); + Urom: entity work.rom port map + ( + clka => clock4, + addra => a(13 downto 0), + douta => drom + ); + Uloram: entity work.loram port map + ( + clka => clock4, + wea(0) => wloram, + addra => a(13 downto 0), + dina => dcpu, + douta => dloram, clkb => clock25, web(0) => '0', addrb(13) => '0', @@ -79,16 +107,15 @@ begin dinb => (others => '0'), doutb => vd ); - Uvga: vga port map - ( - clock25 => clock25, - va => va, - vd => vd, - hs => netHS, - vs => netVS, - rgb(11 downto 8) => netR, - rgb( 7 downto 4) => netG, - rgb( 3 downto 0) => netB - ); + + reset <= not netRST; + nmi <= not netNMI; + + wloram <= '1' when mreq = '0' and wr = '0' and a(15 downto 14) = "01" else '0'; + + d <= dula when iorq = '0' and rd = '0' and a(0) = '0' + else drom when mreq = '0' and rd = '0' and a(15 downto 14) = "00" + else dloram when mreq = '0' and rd = '0' and a(15 downto 14) = "01" + else (others => '1'); end; diff --git a/cores/KypSpectrum/zxpp.xst b/cores/KypSpectrum/zxpp.xst index 01196d7..02f13a1 100644 --- a/cores/KypSpectrum/zxpp.xst +++ b/cores/KypSpectrum/zxpp.xst @@ -15,6 +15,7 @@ run -rtlview Yes -glob_opt AllClockNets -read_cores YES +-sd {"ipcore_dir" } -write_timing_constraints NO -cross_clock_analysis NO -hierarchy_separator /