From a4c1e6a2d554549b5795b41992fa17a176f9482f Mon Sep 17 00:00:00 2001 From: Iridar Date: Fri, 17 Apr 2020 15:27:07 +0300 Subject: [PATCH] Fixes issue #40 * Dual Wield specs can become complementary to a primary Dual Wield spec even if they have bCantBeComplementary = true. Dual Wield specs can become Secondary specs if the non-Dual Wield primary spec uses the same inventory slots/weapons. * Added mutually exclusive specs logic. * Fixes for the Random Classes and Weapon Restrictions SWOs, added some weapon category icons. --- XCOM2RPGOverhaul/Config/XComRPG.ini | 9 +- XCOM2RPGOverhaul/Content/UILibrary_RPG.upk | Bin 1036450 -> 1082598 bytes .../Classes/X2SecondWaveConfigOptions.uc | 79 +++++++++--------- .../Classes/X2SoldierClassTemplatePlugin.uc | 55 ++++++------ .../Classes/X2TemplateHelper_RPGOverhaul.uc | 23 ++++- .../Classes/X2UniversalSoldierClassInfo.uc | 16 ++-- 6 files changed, 92 insertions(+), 90 deletions(-) diff --git a/XCOM2RPGOverhaul/Config/XComRPG.ini b/XCOM2RPGOverhaul/Config/XComRPG.ini index 8fd2555..31373e8 100644 --- a/XCOM2RPGOverhaul/Config/XComRPG.ini +++ b/XCOM2RPGOverhaul/Config/XComRPG.ini @@ -451,11 +451,4 @@ SpecializationMetaInfo = (bUseForRandomClasses=true, AllowedWeaponCategories=(gr SpecializationMetaInfo = (bUseForRandomClasses=true, AllowedWeaponCategories=(gremlin), InventorySlots=(eInvSlot_SecondaryWeapon), bGremlin=true) [Valkyrie X2UniversalSoldierClassInfo] -SpecializationMetaInfo = (bUseForRandomClasses=true, bUniversal=true) - -; Iridar's Akimbo -[DP_GunFu X2UniversalSoldierClassInfo] -SpecializationMetaInfo = (bUseForRandomClasses=true, AllowedWeaponCategories=(pistol), InventorySlots=(eInvSlot_PrimaryWeapon), bDualWield=true, bCantBeComplementary=true, bShoot=true, iWeightPrimary=1) - -[DP_Scrapper X2UniversalSoldierClassInfo] -SpecializationMetaInfo = (bUseForRandomClasses=true, AllowedWeaponCategories=(pistol), InventorySlots=(eInvSlot_PrimaryWeapon), bDualWield=true, bCantBeComplementary=true, bShoot=true, iWeightPrimary=1) +SpecializationMetaInfo = (bUseForRandomClasses=true, bUniversal=true) \ No newline at end of file diff --git a/XCOM2RPGOverhaul/Content/UILibrary_RPG.upk b/XCOM2RPGOverhaul/Content/UILibrary_RPG.upk index 7e066b23657cb102017268c169c407cbbd64d716..6b6857ebcd3a1a1731db86f6fcf08784e40b8200 100644 GIT binary patch delta 80165 zcmcee2|QI@+wk|<=Wxspj(L{3%tNIzHJRrrL&!YK6ctB`A`&OIlCh!^l2DN$Nht{# zGp150ks?EU>zwVbp8LCh&-;Dv?|I+zv+ecYYprWt*R`&__FDVweF_V--X-dinvTon z8e=0N+S4#Z13{2UP@o5dfglk!@b4HnFbg(@4G=XmMht>j+#qPs6C7Osd^rF^H-k@Y z*L(59wDQf)+aLRzv7joo9z_PFeh;Yk=VvJ<_BhHFq%N5JgocgI%{9;`G|VG}d;`Zv z3m`Bkker0&XYlq22=fjJIs|eWY4{K$Lztd?8vB|g0qXk)xw;31hdKMW1qC|$g!nkS z`-BDug}NT__i*-i4G(nl_6VUiLxAuQFya5M5ESAb=o;wu55-0Qsdz|`o1aG*MK%pp zIQbwgUu6uglb0zVD8eVuE6g>-%Oi|D!$%|s2?=0=E0cvu8hN9< zFf9QP?P>DO4MOC@V&X6tnyeRNB44mzr^7=`AYYPlP?pTHfd^JblNKOJyhS~l36h+B zAgK$>|D+xf66eAGkie2FHpq|_{s71?Ig4^2;8T1M#9V~(Exa zQN9kC9fR?mjevY>Pm~h?#{(`1LAed^EMQ3z$}Flxd^uq5WRxuc^8kO_YVyi1@9b{d;vN9{`*V>d&>HTm<+Eus^;N<&S_jgM8Uhl;zcl_~lqdW`f`e`{_g;_X3w1um510IPxgL}8R40WJkxFM~3} z79xHhU_VuqO#pl2A?Tqd%ISdnfPI_xpxg`C9P|g)5@o)vM7%%9w{k#vKj26puh9$T zLckk!ycz#WSyPXlHK zyo6(<`d4`;5g!EngD0RI0aylbgdocI0C$1*@?=q71*`?^JE(@T?k*z!F5sJ*C?^13 z2JEAUavR`m(4M;m$}GEycp|W8%?V`-zzHC}Iebyh1iTyMpAP}Ndk021wif?E(E*+ykMn;@;ktk9x&5KS=Nw<9|i3hTA~~XSP*zg)*0nnfJ1@2z5XcA1AYL? z--|$5!w5t);G=OU#{hm0$_Jc5`2pawfUVD?OlwTUdjQwHy@av>V2UdZZlZh!@N-Z; zv<~Giz?AEvPAke>Cg2hb%HQcg*&Z-uTsl64axP$RP(STG%C7AU}!&<*$I-fxk?JQC2r2;;({y0U4AJ19k)aP!;8Rz!IRm zls3w+IT3#xu#rB>djOXLeLF0u%wPKtp=Sc*9d$;57CF3`8lmznHpz5}ld`s#Q% zwJh>jnwh{ziQPj$Kua8Yu=g7adJqG&*nS3;`rsd=K9+)@9SAj_EM`f>ivuAv4Jdm8 zZUem_(}wbO!0tfaTo=mIfZv0OlkE`7%2q_Y1t_oe4dn>H43u73LHQow3!r{BEeqA_ ztAO)ZAxMpYvaU5c4|pkzasuE-OD6`mrUIX%AZImql4}<)EeUvi+ zQ|zy@LU|Cd5ooX431uN$A|6MnAAs@!z{87FI_&QjnEgeF6-jPUq63D-tNG3RG z(prK!_(n2F%5!7?h&)QDegZ4En5$^57$+j$0o3xni}C}&I$-+T@&IMp{X|-6kWc%H zEV5q{e*q{Y{|3!EvmXo#fFFNCxeG95m?VEknai1oR|Zw*)+j7Xc5vpvYXFv@Cr}-j z3-X!3Y3a<4@@v49iJG4f%91W%;sgxLmnM*##AV5TE*$uupuOg;Xnq;UzYe%jm&zC> za-K6c*4L0q{LGZQ1AlxdhL3^L(^hCc%Rl5}L3loQLi1VwA)gZNo&IQR1ai3xH?}x} zLV`4u!itqsE|pkv;|3OTuo!J+u6xiIOawA626K@`&Jakr9s0X;tRe?L4>%h+SPL}H zez`)!zLUq3@!$z_ZSHUe4kwx92AyMyW*f|0p0$1;n@+#HGML$a)OEYUS{xKWEqXV||&cq{a{^R#%kc?q``V z)s6LSV#-~)+CeuJl{M5!G4E?!_aw9iZ@DNW@l*RKQ^pa-7hIDSQBNgP*+Orr2G%qs zaS|%!7~GcA7AMBWLJlOnd_<8bA4o~e;Y)KGMz4(KfUlpTB&c_r13!0CH*T##sfBWc8-p!ThG@aRpl+NZ{K%f`@j%lU3YAxe=5i8*u4p39;2U_Di3*uj)m1d@5lBA zS(vAPA#nz8(GC4#_NFaZ9T=rw%H?OSywQSeNhHa6xCx}zo6`SO=?oV-aXC0>X z@&EXywb!J`zuG#b;p0issWF-c>7dXK=w1Sg{i}O-HMZY+chH80z!5Fn7xZkUII&@F zx|rwre8}o+&hq5qu+6hr;X2)sssGDxb6;jMvgRlaoh zDw%vIain+dIgR0&qut+sJksjsF^U%0x`Gv4$_+mh!I(eiKYGvf&8vxa)y@2h-B|nUJmF@4-p0VSBV}UlqxHGLN7%L>ER6mP9SSqH zwbfEP`B5p{;e6I@xskm;wvdKsy#qF@Xa;Uj?)o0z^1#{OT$g3bQoFvd-_+vU*Kb=E zqV};c#ddZoJGs)(Mk0UtZ7CF%Vlr>LwxevbQH+YwLCOzk9VEk^Itp^4T3Y*(g#m^#*L z=;ohvUQ-yG=))tqBn%HL0fJq2K5XDFvct%!Rc=LQeK5otW-Ckq9p(+!%vQL_ZaYnVZ zK~=W;=hi^$4aS{cODswx9ew%I6GQ}(8OJk=?tWvSH*0J80rT9vFZ{gzQ9`FK?9?-7 zkohU}%+cq|b;y?;<#HHIJxwcn(}E+?Sc2h1o|j&WVf`p-4)_Yh4Z#=NdR7maU=)laxOj`5F*_3@7c6l)V zP-z^_98EVdCDB>>U?AaFm0`t|uN2n@tcr^6IAx zMqJW+V4wNJV;2~b6C9xfmkKdIj=G#}Dlq38^=azuJpFV>$}5$W(MjidO;)eVY2@t0 zg2-(S>Q|l|!RRH$PqjW07!ndFxT$!0!CvF8%Iz0V3k%QvI2v>LEuUzV6MM!sCM%mv zv-=%&V_QkDXP*VXt|@o>QkV4fL(_P$yx~6m^tdO6ByZJdGBs{2U*$;kS|VXzNKGm7Gj0jH!%$ff+^Lo`EPTMPfuYfKKiwnOeX|ks z)9N8b^AGxD1+ScNk7nR}1RF4I-G1(#=EM88vVjXkVbb=-rMl&QVv7Tu@== z-a6{fc-V0ZX>XP68Rzp>v|6Zt_nj6E_^u8_sWav=K>No|aUKYPho9C9&)IcyOVW zY+}lpv|^2Wnqw)ON8TQ-WKQ)u?84H1FL>)1Jp9w~+x}jeBLCJyFNqIs}_0 znT1}AM5XYSBd1Q$Im)v#hnHpsTb0|Gcnq$L87PcQ@^B+#Wdc;fpW~ySrbW zJ*g!mr6$3vpH7E^ZyjJ`+i1CE`$=(0Urbg`PRn3#%QefYun1>|dxXJ;zK5N{TJogT zIcF0$AK$lgt0bM<_ROuh+u%m6{YS_ehK%yaUdGU)w8999AvR9b-yPVzgs@GwMv+@??%EN4=i2{eiHg9{%sQcB`d{wCR%JqL?eXiT0NyH>wDNlk-xC0IuahRtD_Kh1hU)uVsMy>%G-N zBQeWjU+P}9kuGs^S_c!IPtBoI5kMI4kuzYZf zq)*knnb{0oXIgxo{4A1ej;Bqo(>3M;ob-if9$c-SR3dpK}cd0nVb-FNU_QGL!C zvw)o{3AY3y&L>p>2YWuQP4x;^2oINg-!~<#>aL`^y)EHfcu0AE-6pL&Mb+mM9%ZW8 zYHWI9a7$l}kHjg|L7e4N8;rER>0y2GP)*hCGs+VYdmc$e`jg(;a#_>vXdE1AZ!ql( z{kc@U<;$a~0}EfirN|hW+&dq3Z;^DC0F76z-j^>mFFAO3*ju&YtK)tXF3axyfzcX` zHx8-yf4q>hY!V)Cd$wqogCj(Ma1ciOj~&ucf}y2e38?>=>Mwm2o=~?pMU?kfp;xam zN6au6<{%<+3S7OmtY5tbpPF)j#rW80SW!;ICZ3HVBD4ox573Dx5%pqm!VYR_4^!kF ze+b{Pw0#tx5YMZvWo2U*48)GT%VT5;a_lG-K7IobxZzvW_ zinnk7GW6k)aIvvGUVE?5Nt!4joHq394=Ihpup>94Ftnsa`kC8nEV>0r{$nPF*a6QKZ|cFpa1b4wI(PB%I!RM3Beq&LWQl`#WO+-3i10#m^ilzP7+<5qC9_!diEohbN zQOxMOm2AA8_%nq%HR#%7_$&kS-BD8))7!V59)3dZu8?wYr8W_d>5ZQ5>vCv3z^=ML zH+;J;wmYOID^O|2XnJi+*GH8Fk&&0jpMB46n~RI@a(O3oRw7}<`0{-8PVx&?=BB)- z{Bmb6ni(cJdHa{`4s9O4(eZI=VJySz#8z9o_o~LC{#*w?%i-e0>0i~O`-H8~e%<=w-t{t@%w{BgKV4gm!_`QPP zW`q{H(=!Y0NZny)XQ$fbbWG*E{hNy}`0KI*9P~7|1a$1wyC!`f>p4Z#3K~!IJ!{8X zbTG&FHJ(p6cm4XO3Ym7_!995jvV)1wU-bn~ue`mjKmVeMBunJ3o$>sET~+7mZ9OND z(K$TFo>cgHDW&$5N4FgCz4+uQ zZ`YpQ-A3{@F+8t~4sGig_ zD!QHYdH43}#Ve__0^SAU%os%U9!8KUwk}c2&)coud0&$O^`ybrAOv@Cx(NQ7?D<=Q zl_IIe??eBR3%}cNFLSfuuyVpq^+%DGV(w>{X(gp4aV@6Ovz&RSg%vSz?&-%wlHB*a z5lue-SiEf~VFTv)b|Nl??HF{>-Ko~Lwz`j1Fd&H0Dat?W)uPnq4_ha5L#Ka!U)x@a zd;HDSyt8#T^e-b*Cn&Q=6 z{6$G#tFJcS0M4&!Kh`=i8zip(uytWC=k1)QrT$u(TB-cZ)q&VxQb$tcbXdFG@^Y*1 z&r{oWWqJ&`2A7xJD5`4jER_tlg}%`WLcHgTmX{QrzifT4a_yB)N*}+Tp5oF{+1eq& zSji)d8qostk8CbvXV*T$$;$3`u`n0n^^w7_UI~lbY^+_eGavU^@@d-{TE9zQ`58jG zH7@D+=zccYU3++{=2IzY+iO3E(sm{TefRfgnS6a0Tx(u^5o*l*$Z2%(>|~zkp)^|t zsgNJ#7B(_LX9ZX1AGB}^Y!6wPHfp>WSa?;0d%KhWxsZkDr=?jHdBXg!?H}35QE*Dt zWjs!qHru#!O`ZMd;%-4aiy$Li_rXsim1`qVGVh$UZ`Hk>-S-xXAG(mFWLkzs^jAV> zm0v}Cdiy45a@kXE=7o#Om-@M(p9>h_prIbW(*>uD#vXS_J;0mDG;$c$yr1$mOh54{ za~tdNW1${)^@o3%~WT~jZecy!MCDMeK_WpBQ98Fu}F?y)~vvI$_vAC3ka_C{U zFA5IqaDLOEo=zt`IC!zs1GX>Ctdwei^YbLt-M9NaRD8bw2cxz*26iOf4KeNv^a;3f z$6fa^A9L@XJ>1V)--hh%IQF>B!%#*p_ZgF+>kl!{KK#*oAKnkwWO4%SG@t6a?)`Ao zl0{fkC>k%e^JLc6Z$G83imS=j;4>~Wt*tM&~O>%V^xyWI2ake!7`>78jUm8(-2pJ=R>+qY3Rf ze&*hwY*)7hr={}V?X%j=F1w;)rMh70*!I(gxvx+D%#J!dVx-(I`O&xJ@iVjf75*UW zJv-+GMsNqLe4V{#BgOh4=OG&z-db$J-Z$r7ybIm~?gfY1Gk8=M%|^zk$CKPb>exhW zI3k*OWF$YyKaU{gDsC!K74J)xg_>Nh|W#qzH|_AKSnH|E70=2*BazQK(##IB)8?9=sQ z5Tx!u)PB9Ky;G1zqomJcUr{}2q;2z&m^a@yZ%i9jzSVjpYDlQ%in$*rvQ_SimtSM4 z_%^>S-NngoGp;b|vZ}_Jr0hK--|Fl4(FrRSBQuRcub#R<@s@ORrKLic}+ z<|D8qw4|E`K5vHXlDI?1A2dW`we#PH&5l$aFT(S~!aT9w?6Y`!>P$o6Z!?bAdg(Rn zv!-%4hGuJZbhME|hLAI03sX4&}UnAp`c zLIite;@~@;-uxbEiA^DI4j3+N*raRMuC=sLIZ;Rdia-YGT!>hO^pO3Hq1$pn8>{aQ zD@auh40j8k4jp|p{Cs$iFKkd1^aX7%Ld1t z!zvkB_Y!MJXJ-@X4RUs0Tzkh;*3M4~4j5@1xi@@tTGLSEERU#`7P2#?qoSoMt*mT+ zS&CBw{j+mYJ6V&8@AP9_>O7L>37_l9%oggrRlxaul`(NZ1wr*!@=gF zs*}x|AM}>{ZDzdl`X|;)fBZHZX69o7SImcLw{fT5CC)da?P)cvyXKfvPnBFk@dzR2muFcGi>{w+ZK`hlZo_@sW6$&Cixpxm%tgK6i{j;U;g}I%r9Y2mXEe_z{Yzf}- z>EeQbA#eV|t-kaIKDs^p2wndCK%ZTeFAXI4c^DU0@CHhhRqVU$!#6MxaZ4~l=%@>c zIY?-P^c2dlE}!{)=yNZdC*PKw_{jPg;n?H&Y@Zzm`A#-JI>`|`+M$IG7=ymY^K zy>vkT1^30?skM@3LgQoa*tE`<9sIQ$9igM7aj^nFH;BmjZuUp-$>1IKhYT6J1(%hL zcYY7AwRWy?*zxlv%ay4M_OBmX2nI;Ky!CqJ@~CMfU!7Z^_j`?}1`Kx&dC;%E;MsTn zbU(+!QO>;=v@TbcoOD;Q-?=I!UGoqrh{6al<3yagv_c0@SU(pE%|n+6r$aH1USg&Z z3q5!P7Ch{SRQSUj$Z0*889NmMAx*A;I`m;$X0PzTP=D~?8+gtxCKhP|#o--i5i@<5 zFB4>Arwi7r3h2Yk@XAd}2|ltPh92&0q?8hY=Q^p!kYs(B9&Q;$5Pet-%lhee8*H%Q zGV&T6h4G9CtpUjOFcEP#fcarvW#pIvECI)8BjX<6V7U>@ zOcum4!r4YhfhjmpYYa0p90>RK4-OB8`b`lwBUqI2uSX9d9UBB=2us7w_DF#_DD7tm zvoQaD01y3&675=a1Dt|xsh(1$ENc!bp7BUIP0E?dab$|yRPNTR{ls*_d&>7?pT_dk!sE=zv zFtjfd!8iivW}Cpwh^8@23;SRARhb!a5~O9oLRE!Gm@%vbGZ+1GBPVQe^%tQw!fdc-4`OZ&3y~S|oN!+cMHLxXua{C?2>ECVv%q(IkqTQ_ zh(X6E#62V^7?SNn#LPh8X7^DdMTku&#BKdiR?D#PK!~XyEw1Yt8s-xe2u1f(R3aiH zRxkrnYX)L_x}VaD5LtkZ5q2J+mL~6@qk|^~kYkiqHO*lr*lLjCULxWGA{K5LM4BvM zVR9}V1FZgv(ySa@4E7WwrpfgT z0uK#Sj?2KtBdE4Jg8~9v1KpwekzdU+Fi{Trgoe6?KnkO1V~&=fvHVd~&lF3bC)*fu zY(FeSzcVPpBP0xp8~a@!8MA~L;JGoX1_&dtA9f$7I+lEufd%dvr}~fljDZ#2^P1`s z=3TCoLC2o*uyPH02)S7z-vd0)3=Mu*AN|T)VFtQA{^6nCkl{y)uEO*|Az?nA;J!Q+ zC1JTKRGTx*%y8}$s=;3GpwO^G)F+W4)=y~nnAw5uiTy-%EOOKicySg5Wm!Oos_U#ymhX zu>>ZpA~f+Au)tQ|*9C+G1?~(F33CNwcguH*9#XLSJn9Dn*MI=fR`EPy?g&mYodwhd zxsEU^d~0Dnb{s+MZ1_QS0oj+089w&|jg=HOdYEPrb<+(tMmS>ew;|+qHU@YS901{n zuy;K&4a8u$r%fV`2N9@bb!`;C7;=(mz(v@Jh&W>{c_Y6STVI}@A&()+=6 zadqX-cGwxKZ!ji;bA*7M0a;+iB93*Xp(cdMW}Gx|7Y%YO5EN0c2czw#128>y zCoPPKnu9izIGNzvw7;{-H#q6B5_lNtq~t#3WP>yDzjKjSl*)KIR3#?Mpm2X<5AYfQ z6iN3-A$d1Y=mRJu;s9iraWP}<>HoAE;R04a1&63sBV4T5?F{RM>pfSRuwg zYNd0tz^RPCTVb+t_4Bau_6da`CR7q~)*WWW9t1?u9cgff*|4tx{ptW@#vQoG5}cfr zoo?Os+m5pD5dmLdf~gM}4rLV3mZE$>OBWQVt{?{p(!-336ggt>QAJAY8{p51)I3Ig zFdW(X`1?cql_+AQ;SMEg29u#jpl^6sXgH*;{M*rNaEJ;u8!7VzgUEymwQ1HrUsQpt zRM8TvloBnfsJ_9jZhiq^P6A9&S3{Kiz?oC5_S;T8xkZQ_mf1=zO#TQ0@&cMhp7?>_ zVbp*Ta|6(EAN^o{Y{U*~U~wS){xBz&R`<7hc*NKrT-^@oQk}qR;Tr7YPMH=tD?`af z>pht14|*`n9J%Qai^6ZssVySY{-Bi_jpzx{%wF{6P0Wcm8vZPu^78Id} z$1Kslv2=}a4Ge?KttdkI=|kPX`$NzJt3RY6&jWy7D%KRe1jtDujPPY^wAX|JL9cPz zP(y-o{dFFwYTqBOp}yDyOWITFN?{TE-*Lu;Wp!A$>SG|VD%Jt*eBmI_`N)1skSZzB zIm6WFq8?KJgXfmOp7Q+CUrYo;Xv{;VJ6HoBrOv}R#+yy1tFN?L}=PT zK?p3AX!sE`QydP{L3S16!E8m?OmW=2-IPr5d5P|z_VxV>w2?S~GzZ9SpD`Y`8jT9JRQ^bhZ+&u`VvS4SjK^!>XToK`JT0%`-EPR<2 zOLv2MOtj|2S@;_k7P(n-_#DiIfwxp3=^3yMe6|Alm;o+8cPbF}Ot2rTKr}L84TLC8 zL-@~H8G^v7e^`m(#q%PM5unSumGj8otmFqzmQuC{mFrgOWWjXI*x5#^MLx(`O&lE} zynvmd{3F!dFM=<#VCg%lxk|{$D{N#9b2aRb#ftWTcnQMsA{lq#6?kheLcRwqPwPdd z?g5Lz5`v=^?8keNZMFX+mWS5Cj(=D#T1v}<%+$f$e_1Yk|8JHvg8rp!Q~gxSC2IWc z!wbwz0>|0?RE{kQ-yb^6M)IZX8(L zwSsJ-?3Y#$tMPwpIXyM9LFD}z(QJQ@=teZqd)6blcYXgm&`m6`aR}c8%>0Kp4z_}5 zH=Xz$?T0}6U!px4yro3hcCM|*!Gj6dmkaxn6HAG9G!AO=m*6|B|0ZhxLl($IVdFRg zJluWUP^X%ZY0kAPhgE541(k3!t6WHMzjT$y# ztSsSwUUw$}CJ98bh{YDkyNIPFhESJt|76C3;x99#*jR?lHp5p;k{J48ZgXYd`EwYm z2TzDnwrQhvivpCeC9K#+M{382)@;|o()};k1)?hTkAR}~1Z?@s1VqmAZ#|Jtgdobc z7`U!?q$QR_#O58R>g`(N;EjF!zY|Nzf7g2?>bKtXhySMc4e+QkW$VdU*W2na_B;Wb zQS`@&Kp6|i5Gew<0GKCZAG7?=hZS)DaZZoGFrPpV|9^_6zKg$1k_uwrQegR7WpwG? zqNz)>sQsVOvD6{D7^f{3s6~`&z-0=I)4t1C z^a?dHid})@R*<1FaHC^z1yLQxO2Y6@#F4U>{fV3y$Nsx(^M7cRd;A)k_J<>=XH?9@ zZ%164_?sizz_>=)!q?Uv@ofTI!wy@rBW4abU+R^*1_b869ijibz4m)p6PCx(vAcqM z2mcg?C+Tp1jm=V1Z68xkl)u%D-+g~pRwPgH&oDd=W*n3)MjS^OrX^}t>2N_{4yydy z6iRQRlMW>18caYg>S7g1FF}=Yo5vDuCl@c_W!ll&eq(~#=U3$ zHv`pwH!_@?8N(3{GaT`cSgz=%6F`j2ep!VaGQ<7rbvh4xBS6`9`mdYvzzmnn0MAF% zfUe{sz$_=xJ_R!@x|%{i+z=L)JY56&6wInMlaZ`o(4U#f$V@Qk$NFT1=OEa>OGdO0 z{%`c>!Bkcb1PQ^J|6%fM2u=Z=l}P=|yh;$fcu(1Isq2Ow55+NXz-onPpNVMU?jYJr zur`vL53VN6^Gr7}lmMrxsZPXU|0nvZ2EiHstKPhbWESx2`U=4+>u+6k7+fwWo5<~T z3-YpXUIe)8;Xhe`01JN9gp^Ru%SSJ3MDF6aaM+Q49P*5gnHRCR4^GGV0mQ5xbf3u} zajucs+@-(a){ha;gva9S=(^|En$eaE;Cc&Yg({{F2AoQ|f~J z|8HIH{P$JNujR`6@dw$^e{x zoczj)a*C>QN}ENL6g5=THI$Sg-gU8PY)eh09nZyShwW{svPvIys(1#GLeVGNvKo(_K5*wcr6M%lP`a zov+lTIG;>BRHB3ISWI8#77}hBV&O{~T@ed>@;uh={Fd5a%aA9zg1pN#t0SuK6mJUP zhe$Zh_zA^_tqCnZenisre|~;2Rbs5MzOJLUs7-m*U-e~bvPqVY(C$|`Wlsu3{fg@= zzg!r8Cy?#exC#rK-!QsZA))2r97D=2RMdMvp~cD6d^1!gSz5}n-qx}^Y-od_wmecF zwv^qRVZzP0odI(aW0%>inyO2T&#$;r^L8w4LZi%V=G-URbS#Z^&!g$~ZJ5%U zBfei)9Zo*Tq)96BtK4cjdw77=HqS1KbC%7ahPy~;X#d$IgV+YvmRr-MlZ!L6MT2k|o#@r2k_3`y%?&A`s_vG2| z3Zv&rw%jfisS@9~<8Thbop(}+_EF1&%ED8K_~~5_uExxra^0^2-fi>@wcGNL!;@5g z`bo~apN5kgITaLAnNkX+lO9Bl=Y9*r#q5uJS6$ElsP?$roCySJ*BsQ&z9_ztaC)Vg zu-kmi1lnEDx^YlU+njE8@#yIF3z;FQ)40@VM@Of8BdZF5{YJB}E+l||;Z;3U;`jbX z>Fc;^t5J{M!$+keR}X|n9Wy9^?F8saHwSpK%R;sLg1fJFzEmZRzS?~G$o1l;qTX%X zpI8#cySJ}aGS$_PUfLaMH`{m3XKRm#>gcV3$!h-aZ5TR8LULDN)wZnJ*^_4y&x$nU z$6pwv!I*G*?F!)|FGrl_$37ua0BeF5Nx9QN`y1%-u|q ze+=gn;-+(5C$5EVt}ne_Z|zxOlC@(;f`f`kwDE0&^W?K1LMlQv@}DJ;4{i-xTIK(E zy8Z2>{Lm&3p59s2)=R?<3k#|@PA`x73_*{099sQ1e9rMKeP=QCVQJ6trPY}%p90@R z2m1GlS$y}7BqS^QTzzJVRbiTXd5HP8RS#)s^;*4ox%&CNDJI2F>tD3IEX8dRc=k}( zcChDG^wyw`s7B@(pfWYQOZz>nC6MvRrUg{Y2mJ?hg_eIEZxUc#$;D zB;oke@WWO1-C>2*CJT%wm1?ro%>tzwBM;3KjVQjTkH}CBD5~CZpY?E=dYE;IT8+Ur zCQ{L1yN5$2vF+15-7l+ij14o2cEr5Up=m`1o#ss{8)CnlB*d9NyzKvn{Q=$s<{aITua<`;eUmy%|NBHBqjy zXR)$vkbb(jK0AlQnFDmz*49-^6fVX={qZ#FWmvCLf0=*)EyhC>jo>wJGpc5kS~tOgwG~P;l!h1Mn-I3A;I6&P zAsSx9jGdP7um89RU)C_OEcuY6CU3%f85iwXM9CGWM49{&guhem5nx=5mjGV1miQ?E ze(MYTBF$Mq*3^Nhl1WJ%VJ6FNN z7K+^>#hV}lf@;i`5&@ki6cNQTP^7i>8k9w*hy*@`s3I!`VMzZh<&X#{+5;Sr3+Yme zys#9d3#kD{G~*CO1}q&C_zHYCIVAS`Jh;khPW7Ed@{EHHza=6>!)`W~9)cSo zx~q%v&vdo58^~2ud3eh*74UU_VCfEVDJ>NqR6* zjI>^XAaPCLHokd9!Fc_qZzp&JyLz?cu;<76k(X-e@GVrwsM9&;<4J1@k zYAnVV%TQ_rK#|lMH!W*OcWL%ukkNbeMC><7s)Kb%^T2s4iD!8zW`eL(TckKMh6co? zud=mu4YUU7ud)Em7UK<+t>wVk4;jN!E^**IZI!Wgw6j}=o@5Z7q`m2nzC=)yP@^ae zX@4XG1D{eQ8o7*TRzeiRY1k3cJ(yjGNty;~ z!+`So>`czZag^@9MmhDxgRs*5(Uk7@(_Y1h61IUui}9^8^wHMVg^&wXZ+_B+3ew0?KNCTL&P>?BCWwWN<5jvcVhC$$!o3SzIgw_L|!76ODSoF~e5% z(%feJZ?A(6{8#HBC5nT=2gK5Uu@3tE_~w7L6jI)*p{n#Z7f2nsJEeC$@7&&F`&60~ zpMMX2NNpDVw*_3dDBH=s>q{ZJwe_V?7WG~5*1XV>zWFJ}A4$yWEDyQmB^|Nj=|%dM z>=psWUo!3)?9=kk88j%74d{~ZDjO}je%&UZ>w0uQSCz$}{`p>cr!G$ngZsJ51$SMr zlCe#+&szHXe|)WB`N+66CM0Yawj7V|=2t5&xtxEusO|3NG`)@- z))Tdt7!w<#)f&y+Z}{Cfq%~OAGd$AuX5@gmld!_lNHf^uF0xxw*&xVDAsvPx05R&5!;p-4Jv%_}jCo6ED6c@Qq0;_o}JgS*THu z+V;`Upp9Wul&?hULG_L4+QFWhitM~|sk=;4Q}&uVUpy6aaIXV0`7M3dYw$yO$IC7c zS-!Nl9*+z*^f-9mtFqJ%k)or$zbC^^f0CB;+{h?wAw^(nnm@)XCu+eUtYX-z@8wub z-QCX0;)3eS&wQVBOGhSm`J@>c$vs@zkX8}OU1UPrI%%@oGZPy+H|zR{=Wfo{a|R=C zWUJJzB0mT4rR3+G*~GlLC-e59?T+_LUU zE}10Je9cNS#8joxb#qTZ$)PVn0rS%(*Fp|69Zt!&nH5N*V?NU^$HaW{_~g&-pG~uO zEyvH>iD=~A3FwrS2$Gen=v{0RWVKnoSSn;&Q1bYKmm=@&INc`KHi*Y9nb5X{MHIrR zbiQ?0&M@w?4!X`Gn7W_NSb@n=tIX!ot;t<7q~p`>SF&pk=lTbJz1{cYV&G~0V%Nsl zNx}o3f{NMrD-AI-14oXH>m7&{djPlx+Se_Ql2nePNaS@nR1rN(Q`D)9g$xlefK+ z%{`=H#L4>k>ZivY-QHpL88h>FwW~MNjZBAM#u}4M47;mo7u-sXM|P-Ln;_=p;EP(| zH5|n5>hHZpxo>#$ki^xDd)SWZ9dT^2wYT%V_d2|tOB?9-mY0%?zT&Op`pWS@soX-p z!}aLr>gBKA)r;|oK8iJOi*+nr;?gU9_b~CrgQKz;4xG67k6v0wKlOQ%O;QNjA=c+K zw`=s14!xOBX=rezC1%all^^x`@};^aQ!R^`@7N@vkckI|Xu*YPY)f*i-lx`v!(Z+u zzBt;@nIFDSZs|cZt8Fj$z_)vdbAPyts}k=8ruIBRzFZASIs*qua(3-K|Ee!HVxo@t zwM=Ah-gj}g`u)xWUHhdjRBUUP%x&%WebQGVz(5L($<4Qrjuc>MWpBQuLYBhsNfq99 zaP{*`U-ethAsw^+`sD}Hn-{8VHN4m4tnc*(kd$0Yz z8@c(Sg8qrlS3@H;Z3B#!Y0rh$TBQ!Jka+XzqJ*M-wD0!SFE1-hM}dLd4c8f;@vQdC z!it!NurLf=9k#gDm!)u3cigV7R$*pZFSvT@-WfQQ$BDzDQ18QA(<+0e=&AF)EV|Mh zI2wfXlPIF=D#x;gOUgO<4qJzqXY?=0pZo>Ok*DQLO!CP~xTl8}>% zZFQ~MUtYl=OXH>NtHx;f;qSc0%dUwf0*9C6h|YY@69He(=41 zXotA|IRo|r$xFR5N$K7S${C#7o>@m}H2wItT539Cv{L0UHIk^=IYE+Ay}u=Rv)e2k z=KWj`m$?|xP20b;621bD3)gkczW&hkghiXKCrBm&7P-tuT$$_eU;A)i6K6m`NX?Hn zhEfI=(xr>Lq_5m`Wy;NF%6UI4JoS-zsOo+Ap<|hQIzqJ$f6gwiHMl{mFZSu9@K%-$ zy1ZDIMjjaF*LmG4Bunp{K9bH~aHQrz-)YU+Yip+6X;+$pa`%p<>XL z(VK*c)swF6Qc$@wbkw7=FL#1JvB96AHpQWD?CulNi`nUd)O&}q_{|32G_Zw?i7)zp zTol$Z{%mh{5DaR%bQ6m3VVQwWX8w-v!2)}>r}hho86Wo0W#aXZJW;La%~!tPry*B1Lvw(K=3do={odZ1}cB1UcwnucXCtfFp&A;)|S=+kyO-AR+i!FkZw#w&? ziFRKD;tUG9K3HAwb*`9rHjwy2%87e*^~00#oeK`%m`AZ&SV{tD4tIoX=j@qMvnd|_ zdhFJiX(Sm%C1!+`m6O8WztNs~f4ATo zDc;NN5(M47cuwR*QG3z$AW5>}+YpQE&-{WM?CsCzo_Ek(2#?HOX}grDWMR=30)FSL zv@O@bV}sr#9*s8V`9Q22>HrY0JdG6mQYhO`&s zFA=P(;QT3kF<5-+Y2Ar_Ly!ZD&nYkyuZT$(*Emxw8XIG6Z35|aQI<%Q)vgsX>j)O? z!8>SaNvka7mgv2NS&E*L8=-;t-C)fV4SxkKAmICs#dvUUp$7|nracJW8^zJ_C7jmi zVH~^q6@uwzzcqse#~Yppk+!xxkTInNmpE{vz}D9K?H?0Mh_Y;;-cd^o)O_kAmoRR8DP z+cM4j_kZ8_|I5#39&^tE==Q+=Lp65L0T+RFza18Rn^@I}t4TIRL{jlL(Scpq} zP~!lsc&L`kaQP~nsh2=`7{o3eMm+Xk_l53})|cbKW=r4wWb_B3RbA`bC!0nBkD|i; z{UBPiW=?z}L^qykD)RNr3oI!jnjl|e7mdns4*Eo1RX#R!Pt?2}HNwPEPtV~!5xv+c zJf`V^D4{`6fR9h1P@1S8pQs5wx`_kS7v3bWlMM|%V-pSU1-fZe5WM36M_>*B(6Vs` zzT?4ehh*DXS|i+Xas!zhXP_%#5(t4 z91ehr429yGfH01O!D?oR2>36;gyt5(PQ%tqvVd+uvX7*x@3DEF^TgPxlCM!@F>`}@6u`YBGDvkpXo znn)HY<3CEi5YDNoHV2}BfziFDei7sZzBWh@6wjq?!-J*LLTFI#5CJe)3bB+W7OmJZ7Vy-_HF*a`5jcy1=dPND-}3*O7Efqw|}$j2aG#TSWq z5@C?Q#abvqAF1N2`)N4qG2t+d^*n=9IltPpIg>o$Cn6&t)COH!2#=lE z4`mK#83+l%%fNxCAvE6%95XdWpXSSTT^f!M5o>V+;@yM$4#N%DM}EZRgRRe^s59_$ z5jjUeB(Y#CVP*g!Q_QG{k_}kwLI?5@p^5M_lL+^|F8!8r!7~LJ#7BfyL4}?4fMW!)cN1?Zu->`Rc0%pnRP@pGgRh*uwc>|RS^<8S4T97qIQH< z4>B$!;a>xs_F{`@+>EWOSQ^r?xckxGn^Nyo@>I}Wxd$X|d(N?1#T~meU0J8_CW?L$F_^`Lgl%~e-QiTV) z=`+RZ4ixGC7i7`$rnGv9X}|^+k)FC#mW`|ehs;9Mq%s;NV@wB6h>*)JU|4vFC{#@K zKBtDrOUQan5@j)hhJRjdXh(}w6Ebm137X$XEJv53tB^Epkg(NnRAh@jYchf-Jt#{O zsIm#3G(=#EyH_EFoo9(6Nvi3?zk+HWk3kv!c~IA;h~x1-e7U*?e)F89zm1Mt zx3jTRi;i0iNGSZ|n33bWqMMUN2SPhjmCJ@;hhVx1r>iEtJnHV&mw-5?zJv=_?1> zjKMcLTGt&hP2VtmR^qkz$LlOKW0nYq2JG_oYZ=fZVEGT@@y||o?s9**ru}jolM`f2 zgCuWP+N4=*Tb-QX*c9Uj1@A{jC>~5-yx{GcH&ZorH)tNo?j7m(VEV_cpJu+gKbn|* zJjhyKF6Q2p74Pu&qlWQ-X#OoWQ1)72bKi!4PS~x!29n!4vf;mrnDlNYzPxhwwSQ!i-5i}(1&h-g{ z6l2GZ_1{1J(~|b4T8GVt4czU=?oi$;@X=f_D{An;c}r4D54=C1yx4(`i92gxC_ge&Kz? z79OuszusN*e2+5LzlZg$b7$aO?>NVX@>lK`i4KD!wgrx?^V0X!kP$)RX32vbCViOv z^4z}F?v|P-g9rAApE&u$?Q>(A=q#Np*P3|eOKJYr;SY{>JU7fiEHeqR@7SsT_^8f? z`?r0IT4Ke9$pV!VZ|#5A_T!9x3x?+ppX)zeo4C3X4hcV;=^!Aa$`RsCuUmC{sth_Y zcOnFIz6B^VmS&EYjJeY2`>*shy3|I3nB#0bgg*W3Vrp5$phkPApK@NAvu9XVr^^e8 zzVml2BVRRj&8@q!?)@=?21P1A`X3u3*CqB_o&0vo^+AW1-H%+eqi*ldsvkkv6uVxW zHFrw7?_5on?OnVw7u=j0CQv@jnP2eJ<*HmuXu8h-_0PLgjzM?7(~G0yWJX?NNR#lQ znGOeT20R#ER8KE@MSSKO7uN*s;|02g9c?CsjT+iAaB_!nQ|#NnpL%!o@|O3v9+)|* zjZ^N;l-&6m@BE57mrRO8!`<_8*X>Im(BIQT_rm7O^1+=VZK5)!b{hrVH(AvT4^G-M&n2{MI2U(gRaRb-i~J{S0&*|Mu;h!tGn%84kM~KV{>n zh>Y#uU(_%8**d^;$(roKlDWI%pMJP2-Ceq9(Y@)nCfUD`C4X@fdCfPxw||bgXxQnm zA7`B$DPA%|8GI|GU3>jSbMETIzh<_di%|_4_iRIA-Eu{|R<+ z##t69E^5RGanSa2vYyM_Ee9FiR_?j8b;^q3R&N3x?lHe}^T4apCE_(fBL*oy{n}Kx zK7VUbZ)MwVd(UXPSW}m@*1bRQOp@Jx`rYq7!>{;tK5FMM=*WPG*^`vYTDfHZ_*{l<5W`n$uHlZMalEqZnt-e zi!Nv`$h_?1vghKyjjQJ)7gvMawYxi?N_&#t_s+x>{beS~m-dGfSKT=d>z4bgc;qij+>1o%zN(QfP@^SB~>nEELTHd{Sb*Q&zdv12~oRf?xb8r8) z?4h5!_l)jx?O?&lFD*K^a9dnFeN2^tsnRbe$ui-w!3(D;6`pQbDZ9IQy6)(L2G$d5 zlVXOQHAmc6gfsMa89v7$B=;oYgA`-zdnRLF)6AW0x^&ocP2{qlwC7TuHC?&e+8y3^ z;at=~$a|?USV^5rG=$fIs2EK>_*WjD19K2|pTG-)_fp1Pf_({ar!4a!Zcw%X$BuCM zeHR71m+x}t%F4|eT@~OqmT%+BRrSl2c*Pz*Z*G7yGs@B`zkiYYzOp>C<`>G$;Isqy zAh?YtgN@+}b|zdj1jh{^oq#AMo>4vE-5_>@=HPX>?7o8!F9E9NI47W-a)x>wZc;=; z1I6x5c>u8{7=S;~2WJF9L=INseSMWar4>DJJ1ULqfwFG!ZP+x68vyU&<>1v4Nh!a$ zzyRZzf*<@G>Z29E z@b8(eIARcsAFQJ+&o48=H%4{l|3JB-+?4wO{2=~9#UE&h{~%xf1%@1PaygXGS`x%` zoMZvtPtL{BAlv}1e02*S_8@-vmSP5(B^KRld45l8_1USG{(O^gX2rH`*7mpGS* zJ=Qi6#&E8cLXlmOrI8mpg!YB9F42ecXfeKgC`01UTKsw39LS1f&C?Z~0AWoUeQ74%h@%nFDtSR<;|6#T#t4)kg4*p(bV;1l1W9ljTn$2jMJ|&h+la8Cehp&Q7GOLzwqZFKf)juC)vHlX)j4; zRx&6<&JeJdOS;RaAd-SZ*8`Pa<&beT&4j;ZD+cZYdS6!5!Asx!heF)tKhp|9%-f}vL zBr3|pbH411gC|g*ae*tFK3=uh7?(%CA!Adpq@XBcVguZ`0ud!#&I@%jh=KB+3dy-0 z#Rp&Zfk0VIO)}F8Fd>`=DbR_QlnWoq@iY?S7!0(=mRQh^%jF`&_`e>v1md&sV{Zo& zBqwLMU$7jGA+%TGzc#~Br}zdY&mZw-F?cJ@x{2LC3FdQ{;dqaHhA63kW}n>Sn4 z;GZUe4KP3-P0*~zVDP(C82l@yd-;6VJ9DMD^yAU#-=$xD{GCskHk0;rXtz+XyUyid zLjpf+yqkV=VOIPKi^;b3?weP18gW>E-ss|r-Zz?s-)l0y`Pd=LHl@Cb>=6FA zOe6Bu0@E`sR#Q(#25y;}b>+oDS0YDqZlTY>z*C0~NBUcJTa}*J+&#uD-a|NyCZgq2 z1`hmQ+*bK$)HWv8baDSC&eKMp$T)BH;&9`r@Kb}DYY_rta!Qnm!rQ^r)Y(SQz0sB+a~^?m?&Hqt9FGyAE_T{Pu%dAE-2b|Ft+KYK4L2g_3|ZH_HU$ zE?BwG+Pr^z=VQ}Oof!URRJ_H8mbNaBn>Ea}9O$0roh-gDa8o#hZF{tI>BS^7CNA!l zb`M3osrTF&$9An;IYg=TJ#WTmmxBIhT%3v6h0~85Z@l16!pg8dfxeHzpS*b3>BD++mnwl!n zA8z?-^Oeqfu7ui#FMnceYCLoN)Hm-N%O_r5(OL7&+GWIG<&^whkyg9!`6yOBnJxKI z@NRRb(6Za(QzwovCKZ|op4>0KFm6ie`eQv@$M^0Ty-8G*w)OJ&fi?x@Z(hqB?DyxF z?LAn^_PZ;KOEbP)c(tkN+4CMLZI#N1Z+rValpifCdb2vTrDR3=u6n}Qv>Y$};&5@7 zi#D(5)F!l{OUjgh7Wd|Omff1#J*>}?lKP`YwMh&q{5tRCj;^}TvVNS3p|xh&xVjna zKxd@GPse`RERf58Ci@kwZD$yt5gbdOO<1*1+(IiceYCf`wnvKv^>y7$y-y9Z@6lU1 zveC%&BlVqKgFmc{sefyy)%_WLzQk;M?o`jFP2sQOar3*rT7RW}-;e`Y!{e4O57E|0 zimrce=g-A!LPkyb)$qIT^4{7FFZ9*ade~{o%Pu=Fywep~L`>2Md_VqB=P{w9GjG~6 zy*KtWH=Ro_vs^@&_8rjajpOI!J)2hDzFHWtA@fWl<;>5kve&Fi2wK@X{{H)dxj*eq zMRc@{Zp#r)Zf$x>OG}SkIeIK;VClI&pIS7(IPFK%D;={G3r1;ZYQeK?j^s~Y+^LQA z>v1bQ4tcn4biXB-p4p<$ZM&rB?^-x#-pN_OOl-5d6tdxVFZ(Vz@nQFwMyq$&J<1Fi z+^GGO%LV}v)6$kGI~JFOD)ML8r5j9}ToR?R{llQ%TM|>k`lOu6phDYh_}uf`{z3DW zu)iMHEqS|Ua=`eTi|WUGALn0G5V1+rzX_?SmACp=*2HTkvX;GR{OdsDpesFEDL-w` z7&<@A+f3X1veV-1le0DDmRaT7PoG}d)^qG9qtA<&X9q{cXD3Dp8#N77G zSKGeNtcZAG;hwYSdwyju^i1jClB4|U(_1GpyYR>1gR<)vcb9#+@W}A)jcHp;au(j# z2}oG#`-NROvW`vc7OjMI@B1HG52fSiPJ?^w^&eL6or&M-k7t_<3=FhgU7{TCmb32O zqq4w3y@qyY&uG)#E|MdY@|(-j&T47RdU7@NQOgE#v|0Ry$q&XZACqG=bzf1QZ0`s^ zrGJ~a6$LLZ_dhh{+L8I@#YIWU7be1y)~^OQjocvapml%Ex;+QKMvj@DI(re@FIsx* z()#eMf;}hiOuh4@!_SW;ubeffoKNXJrf5fC;^FH$u}-n-+k?-d^BV8o6^oV^Twr)Z>%}8MFVf2 zOZO&keHY$mXX_2W9-ca7c&5HU>-Y$V31{^DK0kkR^TFN$(f*wd-;Q{FGX2Wo@(-_X z%xCsyo5dTB%j>a#Jh?feEXzc9zT+o-L2Sx_<1Z&#Exz02%;o%uZwIU_HUtOuO>%pg zYVy?Up$Tc2nf>^Oe@WuY`Xi4@?q@Z2*4^{|+=~}um^Ce}&JDKf-2PO0v*uCd-AmZ0 z>(hppH)@^pt>g5VOIdLyl%HYwz8`JGm17`H0Owo8D*5jx3HJ`;Y^&r#Twg3B4nSG~e4Z?}=hq*L=bF&ipDX$9 z41NVX9WVt&4F=Qa*Y|i6+`{RL9U`*9(JU#!wfvq9yv+8~9h@sL=dle;eHHb+52Jr)z$8uIRSmg@7T%}qLZ+d4g+|9{BPX-EYl)nfqO@Sre zj{uuhr5YmD9|2HhYUOuoW#(52?yDpr?gjWfQ(6C)MydA-|9R(_pIdM%qrqdrJ{|F^ zBomhtz(?ks>hhAqgb>PM*awb=XRALTddHacNHgmjU_$%(;7l7pk;`!`N$AO&^Ljr7 z(&PXqXA36BC;5k%i2fBqo`qx{eZt2l2=Y=smje*r2yje+ z@JCBDZ5oP4+o6$q4_@uorL=U2SJ{U49edL!dY+* zL4SbLY?ZJ0&NU$+)gYFJm`8I(RU>(>mZ+9XKrDVx1o@bd!-zYn>Fn%G?B)0sV^$HM zLazHs8yw+EXkSbS6Y999a^gTa;FiEYDq#vQ9K2QSgHo&rdR$0#iq>oNtuKbqHy>F8#Fawf0}B)LAPb_qe~n5of}~XAKJ_?5l}#Gw=#f zD2yuP9FJ8TuOW$9XnnD$Q6H@eiK>hw{UA0aJcpLxOe`z-AZ%;8Dv%}uGUyzQWJPfh zArB%nhZN6E)69t`7IY-s_u#Ad(3N?W`mvx&ZOwTExoW9dcC)I_?<4i91=lTD7i{MNbpdl{k$yBkqQlwk8-6j;46wh2aXjc+)_<#S1+WdeB-X+6|1f%oI|ov3FWC7i0h3+w0C5 zu%(%Qh^$xey$9k$QSUEbzWAl<;a&GWl3g_7zJDJz^5gx2wFTKDKd$Ic)R}kkNw}lZ zkbkduE3ZFidK5M7=;>U29X&TlQPVGR>-0W(##l(H@*Jw`>XO+kL)UR+f`iTUn|a%Y z_ZgwFB2am)|GkGF#}{oCP>tvB+f=9V=e)f)y0;z|5g8CR`B1~3rgzqFbsuVX-D<8~ z`obB*pVMPp!d5@ayY5!}sr5=_=b8Kb`cBfC7FO7ORei%Oi&fnnoE}_qo4DuEl;TZC z_MP?Lc69d(`Ot;^#Vd^-`R;ifRJ7$d{Fr2fXN!xekxz$p%}-7r^XkN#0sXYQw+>7= z96V%4*vH}BGjF^Zy}e*b@ReNDGWGN1vLC@y8+dCj&v|^IwCSYKzF z(~fpKsUKrznX8|cqe*DBYQMut&n@}s5REVGwr??iJAYQ3af^&Y&-R|bp0QLzFZzKK zm@~(X$E0naa(Ve&oAk3YV0~ieuop9F5a_WH5syGD1G(lmwQSpVo+PB9(sqLe%Joc?ZZtyk$7BK*@y?1 zue9(hK9idxb4Xj~t?SSuI?g%eO`8R&G0jb0TSRy9k$uZp6J9WGLdbZ- zCm*ofS}FSx6hkOiPt2Rs_OT!`n$BtSK5<*lM3*JeXPWG@$=&g4(d%h0CPM}9i2K4?N%=Am*(4I&-F&#*~ZN?@3;}h7czb> zId%9DX=>_ebuqwxb?D?EoX*tHN zEHcWi#&ojnGG_h~y8+#9Cr!-k<6yWW`*nvq^)nMg7JK&Iy*$kP-P(Iwwe*L^g&!Va zYx->P)4tM^sC=fidDUuvMZsBfwjo&9Rw z-BK+r-yL`MW^MabShQyRjad2FJHB5}1iEO3-;g{S`|Ihup`VsNTV%Pj)tW5JR+od; z9R7T?J2kP3u+V6MX4=H>iW4S1^#yU4Z?&H(CL9Oen^G9Cdc(_0di~niDo^|OKXu0_ z!0%qb)a^H+T{8}lnbA2Np8@c)9 zhmVtH{P>dS@XohmzvlDP0#o!_&j~p+B>KkNqqkRlZ{&Dv>!I`~?K90yj{e%b_we*b zueZA!tt`y)ZIN~(e{$HPSsB~Q3Pe-)7b|z9Oh#$V`X2a|Te806pk3`VTisr*h`c?> zdZfo&Ga|azA}jQM(GHl&_XnR_+VtgJ=9SeQTTg|%wC&o`ThkABYtgM^O3E;b{IT!Q zvAzm-o2JWSL;dYaZrt+y)O`Qo38j+3)(?!!YY<9g>=wJaqhV>eU&m zN5?Xo4Y}}LZ*#BW&W&p-BEIzN7Z?Br^$kuR3F95clijeHRI&7^jOT2bR3YSuf-RG; zR}S(0RbVUOh&kj&;-!zLW@E6E1!X^2o5P}2uvxnUCcd>WLq@zTik zFQCT3xw2G5K^}Rj$lW#{ZeVvtF%TY>PV|YH%6$O-AmlZ}{A$_>d&;K z!0_y4O#A|4t+Rk%d&AZ$Ui0|7@;V|cG1omwX@(a~I>Qgb;!_ZD5HDB4pA_UP%En`O zn$fUY1$H+vyL>(_KYor^h~dJojKSse?eGdSI241+C4{j%H0S_$X_yC4Z%o)EP}pK3 zNRg-*?h+SI~70ImnT*j|M=&*Jr{O(amq_$AYrlwBZa-- z1PJp|(yrxC+A_gKusrxS!$_DRuq@^FZREbU}Hx9OKFeroBk4Vq}ZM8h6u zfj?Hs0w?eJ;^6>`fM7MIQZ|~L%bc&Fp;1b?r-eaFv2z4#d|1-=@MREGD3^-jp=&Dy z7rLO#ZZQ|{z@LwV`=xakgN=d(Z=MPEHp)oP82o*_i@^`P<1%Wzsbe(dh?Ct1g@-G{ zHxpnu1H7f+!hzwaa3w-k;qq%s7y1{JVU?LPlkwIT%-A0Un*faC`WdWRMKM7b_kg7` z{0E42oGrc%dkJ^u!ZI^>2@tCZzuj%XL2UFB-q-FOB%)86!8r?ihmA1t@)dw_I!btr zbF_H#y8w=_#!G(OYG?3t=m@;2zgPf67*v21%5-x)q`6K04MkA4gmMPIT54bSF&?1` z#aL%&!euqbHelx$X!l&AoWp4w;6gh<`5h6x9M|K-^k^ubAT&4NGY29gMwo;IsxJA- z0>s2VPGNN+^ujpjjLhT8WSnmVRxpZa3t}Jl>pj6a>jXCv3DZ>k>wN>BYo6up@1gKB zqX>7~;Hj(3cJ_nl60x1n-d+F|EvXny5OmnA13u0QVg;YQy%%Z>4KX_jqNnXEOK|h5 z_VWki-pqOU_)X7aJywQo7&ZY!quL;E^yf1ccW)IfRmml-OvBVb<1(s}fzh%Ik!C$r z8+tCtDkfMx$2K(kC_^-XB3BH-gW;)=b=WI%l?fXE`PNq*E{8O8M0HhgaQT+*Io0`= z<8ss>yn)e&>E0wB!l4||O#yj(GC#fH)qYKqEj%a6r3FTR9!QO26*N$vJdsQV4V*7$ zTF1Vfjk=$MGV;_=83R)=)r;p*eajPRP-M@ADyZPZLwuI{N-O*^sxQBq7;l0}l*qcx!fMp=cu`F!}S4V9@BG z*Qdpkbta4&5jtEA3~_OJ9<@+3d{MQ5YlssqU%R6i!=KFlu* zcCbL~%8>7}F{~IN3x^(WlnG4#D~RUchi0jcp-NrQpz=V&BaOs0)j)5MG)&E|^U@}1 zEN(}U@%gy*pa#q>#GnS6{Q1@o)K}SpqLE@JRy`h-Qw5#us`!D1*{Q*ZCLw4DboCVv zW2c=s3?AYBmY1!~pbAJ9wr%Fo0<%AlrD`h!y4PJSuc-u#5F9dD^$dl!a9u+yOTje4 zv;m&e1E~}2>>lE85-LY1Q9s9vZK)7Xk_pWJi)i#F@{d~k>sT>GV~2<<_nlbyP7Cu3 zxLLpJy0u?t#mfd=R2?i=Vfwrlzf`0g0!Hr!v$TM>Rm!LiR?yIFAuD{qulo zZW)5Op;-0l23S|u#Zfo)13%HK6g7O2z${FXUe)+srih0LsiZ!C#Rq5d0={N{9$%H! z01xzI)OTtCJbbjU_jYm98iNb`5&~0Ra5a{_+r{rC)T>cySd1y;RYFSGw+F=!WCF`S z52$iJimoY!7{~fEYB+kqDitQP8PzzbvtmavH9JNPM-Ih;sQ@ax`Jaa{{?T6t5k6Jc zQ7yEK20m63vihL$Fr8Ue4JiGwSV&V}Q`G=P3t7*P;yH|<#h(XMEo2MCe-Sd6lQ463 z|5Rhn8JJ8l+3)1AaF0G_bxXv1DXQ*X6)>B@4;8cTL=vG?(2~QF(prL_-t(oEq#?>{ zC2>SKZ6(H4XMUZ8r}oq*D<0eP?;mnfT36z$B3fV=)I$?AB?c9SfklvioM_yP>pf;) zyZ*3wz@9I;*omq5HxwpTOm$CTNapNEO^Fvt#-3rFbtD!-fz>}~J^!?!f8T5{3s$Q% z8y?StJKe@WQgdWK0!JHD)+N4$OARC!MdaoiY_Jh-VXHsb!Wm|g^(rkqK8rR*JYRU225p zSi_-$73Z06gX_`9{liljncNzidE#unvlU^=7JvocN8*i)*74qsvF zvS;lib0~rJ@1dw1o}c0<5&r$tsDcI32$bO{(N^i}F9N9vdg&;sG}DpXNv-K#Fmqv= z@_}!(sQN2j|;e92+oQRA)>3)#Z&65{3& z$Hm5ui&3x_(}>Laj>dMCv=P|UBCbWQl36N{;OQPF$kDADQlOg}q+P%XOy`SvNL$?` zt4VV4FSbVy2^<}tPS9+yheS_69TU)KYHx{xsz=i3T5pLt)d?<&@x=(ZF!7W)2yFj3 z64hrc{U1*ayOu=Y@@ zF7T2#QHMstx{782Fg9H94s4mw}T0A}UFbW_t%q^n_G~0nH8{jv=0CK%=M;0I@+snmFIW z&_y%ABASQTr6G+0I6{}8;G^iI$51aFVk4~0+ql7OWVP1bg_dGE?asB9O;47bCaEkBnjN|OlMr584C@QeBU}RtaUonpcaj^Rpfw;@ zAT#jD$p72s{Qt@oc%LaMs5!Q@URTW)Ke(>JmN*b6OebNr2W9{^ZJi{7q6YiZY=e!M zFYW$dW4S?aWUKlhXsm4u8{ONqbNEZdwqb@^>rQHn+bEj-a28|f zIg>`B^MEA{E(V>4S@Zl%nuxSPy$fkm@mIKpWK(ViJ$)V^b*x25@C-Tw)I1U<80U+U z1~qYEH^wDQqoy141h|8#-Yg#4w~La?LP{1}0qxZ_46Vt0nthm$p|xK?qoSJtZ7E!M z-U4Wc7XUP84jT0gZmzinMqZ~{gv8C6m5@YB+e;bbd`F`CJRr^n8hxj7^3+Euchqd4 zO@I)SU@?#K@f}H$kUEsap|oMsA4=fabJtU7cF|Le@-3p#re_j`xXW^yxJ9F&^Ac0> zXt<7a;CYw?*RTrC@o>a*;9=)l1l+oT6l^OGTDN{^#H67i_`%X@>1-U}vo9(E*SDbN zewRB9cJiEeG(tOk+ga`0N+s2IfD`hGWAi+ zCrLwr^FQy1e`wx69#UoA4^$OsE18-6ubOiH7c~{M0N9SHXcG@V|BGY_sGy7r_*dF6 zBDAhZ#;}P+l01sqz5_JUPfjE41ie!N@Eh%-iJ!9*+}Oq04fy%ZZ5N&L3#+DGVDIOF zz3=i1WWeR0L;qWQA09_%j-rEQjd-K~RB4U5;#w$egnpG)D_*lQHPj3s#+0y!M?J1g z@|_}g>}Nwrx}K0ceTa<~)8K$UJdBo0XkW6;5%gI?TabZAkUkCXu}6?IO}7zr`8}rp z*c5~*JFb4$abaPjCQb}if9M`Jfm%R>3SPODO32do2HYPF$`{w^b2FZa@}l(^W^68R^h9 zXTrNM0x>N(!!u;G4t<8Are2_ti;l#ERn({9q11_2*j^1WTeeWjG1>*@y4V}a85z9(F>gd03S9p=wtqP6@akBFSKSj`YD}v-o#0g)qOucm zF_Ib4m5VUQ+6cIni(HIo9WwO>4|BQ^Jy1k8zQf)&!*bW=0sFZb2I%<^(aiy1`a=}d z9OUitLllSKiyop~%|Y(m{yCn%9ZOeQ&~sII#Tmp?TGG0e(Wi|q)p%tCe8QypgcqmJ zE$K!SrFhQq%9ORWrXhwC_L^;KkD<(cgE~9VzVZieXrj2j@xDpB1R9*0AVqIcwgYV; zwt7nwd-w9(60`wsb*n{m;j5jhyNHbO9jYDm%+2VGzkfPkaR(zzR6;l_vbfWXfK?SIOXJF&L0yM5OAbn5( z^W{O*a=+Y^6cwWE&cMp=q>u^Yg4L%+69ok57P!!r0XmD% zr!5~_T)ogGyUe=IlErS#RP{zTU^1pgMSNHMa-r=gGP0Ppal_KOq?C1c$1L7lhJt$n z%t11o{KtCx-u!!R6wZWwJ(5j|2?Sxcn*NcJr2$Cuc2K)^*2U`{b{Yr0s7ou zO@ueY%!bKJ1A{eZTlc4zfzhfhWls;H!Tag?XIs2Vg(G;L(sFDE&+oAPi*tQps9L)l zfUIF^tBkqcO(xMoE4u;aI(ReT>uxB6$qicEwBy=#Q zIVQYB4GW_`Qshc=H0!Cf2?D#RE*m=@W-Woof2GwQC#$#G6g7*io_%^pa)W^L(+;-a z# zkXqMH$_|XhjrIJ4jm4%HDqTR=`Ku&5IJL9+OAf-og=&&)1vzk-&N%ZuoxYH6ARy^3 zSU9?JlLogw!@4e}H^M=`zlZX#EiZ`nC#bZV(}=N4tL8h4oDSzFKe%zjBRQ>mVNk~g zM{-r{#M98-m>TuqTm5S(4Tm*<_mHxCmSZJZ*IUY-PsK{IX?{My;#XkLl~wxWmBoj!9d= zgVhkcL=m(Xc+>ayQ2%4zjL)JMsPKmK%*^&xxh=>8u4{zEdH_yL z2S)K&(LUNiNa>E1vR4k`Vc+i$HWsoAfKU38p$2YKh7XOHG-}+~zdY@nbG)`@S0S*t z|KRg@smJU-Df7ofY*rRr&Q%#uF98Uqju05b6R}|qeM3mKohoI&=3+2De-ex(1`{kB zfEJvm>(%6e3A%8;%09Aq+~lypcEClq^^U!7KA-7*Llr?on2s?GQu0%B#|yNCq87$T z+3uGy0>$qU{Oe&d?~$|{T6Lqw-~ev~&kj#+sLc*{piP*D#o?Z{U|sX*QxxgFkehwk zR=2?gp++T0S+o0iSj2^u410|1_#-uBQ$aCda$UyvxY=WRI4QiAA|+5$f5w>I z{uGP~>di_iyYVH)CP)PYuV{s=f2x%D72aUufEjyGa30f$ngul-UIVtRPyU zuNYt5EmCy80C+cYiJU~(w0C~&q4smLe=%_JirBo0MP%R1N?{nKIn!x zgKncH4DUK_?4$|fLe)|(IhTJ#QI!(6SmXt~-0KT;g-Gc}vwnwH5>yQ)vbd z{y`DFfTDKokg{WbV(@48NZHwC82sbCQnacZz&mD1iPGV+96BU6iuay_vXUD}EyQt9 zk(Vm%NgL;^k5c@_P>24eylEaVhfN4{HqtasV)(76E`i9D%~> zNLB4PkVr$cu8y=S7ImSHwB{6K2Usw*J;{P@aTAg=&+tb5y39Iaw0&+JDLYz6`kW$D zF0fwpF|r*OQHVYu6JJ6(`cey7t4mVi-sNV8S~fd`1fHN}d@mtQ18EzNK=BY8$1H*+a>O=J!&SMzq{$Ut?5Kv)@f3OFI&b#GH2 zsfFC~xsT zwra?pgDhei|B@eHUbfO}LUPnQwnOg>2(iQvY{mAsnN>j>BaYY`iloU){oR5dvT<~SoQn|3y~|4Ux;yH08_H^Zcd z$*+I~@Bbi4Y8SB=T`0vW=Gcna`Vs7(Qv02`(}DH5z>EZ8iC^dLp< z)8O&(G1C#!y6l(!(q$AJGtIDZgD}V!+6-D32p~J^FvQOYom|a5<^mq%a2*C24+fBn zpz7vLo~6Nq0c3D(gS;1{4$?@=0o?p{wtvaSZy&72Sw|R{m^SP2$ma!1&4g5e0mJSX zE`_;V)|g>WkHT1+7%}MKXuvw%h#^YCx11XB%!1^xZh)%5F;a8t0$gxT^V%^0bVw}% ztqhmypi7}r)%X_YenQN&YCdckrUo$!1|_EDunBAoW6nl~N!OEPkQrvKE$a~uqAZvK z$N9oalItX?P(USEGN@OCR6)Ili&=RZ=9Ff023?2%fR1p%0hCV$fJ18$pjM=GPEAQQ zLPsN|l?!C(1zgwgG;w|-ChwL!=WM1(yHjLNYhGs8je;?`XF48}x9u2qsS>mBvps_{ zqooRI4+n-QfG2y0BCman5f$#hpcb=0R+q#5d-r%*4V?uDht(p&@i9_w6@-4~G;3E^3kmRpVA-lu%VUckWsVC`Z&H%6+S({na^Z zn_7)6FjWoPbr_DA&O=-c4@vOwvPp7RKYmE2uEk6|>&LLOH(-2^{TZ}sBQVjiKSTTq z(BGuns~OM4p#BVMxJhbG#`QC#Rr&^Rmgcsfkx6;|q}bTw#| zOY;KEjZmr10o>t^W(SPmY{;N@Ub|wcV~K4)j$w-qVXXba8C2&8 zNNi>}LwssT8t)9+F@TrY8&I|Q2uN%RRHdcySg#xbtfOiXYt>34az9qXy}~9RQXZ?; zyPM&(05DBoF&akgfW2kO3n3S`CboC4{gSKS6 z49RQ3Gm|)XZ`SpDjgZ8`ve)UOZ5c3-N6`9Hq zKW@@pyy3;`o3(J~-8)_~C%y)jh1DWt=~~7S?Rq2ase-#Qx*@9TVE?}?x%PakhI<^y zD5m{ucsWgZD;+2lI&EP1OgC2VlN6$j-kTX#UVuT5+QJ~SLI8anE@l)0=r>y!;^4%^ zR1Cb(7av(8(N>07wv5O8q7X2Ttwqd(3?WX$?GPATB-K{|J`3*atZgVQ@E?7^QH>9;)$yQ>T%)yQJd*>b6Z9G;bI#8}7|WiiCn-R@m9 z;l(kR+?U18naS~tp`l=wS6lEczNv6u2wZ_+wO++$~O|+k9-VBnl5Rz{X zu^YtF>t}#RCgBrnf_XIx}57uEs6e&KtS4NE}+l# z0N3IRs7HOqg4}-rg~Pk};RS|x^oWr2(Vr7IVTEY`|3cPz#~H z1|&}yW0-zi;#qaufN3Wr2V7@$8)HZlZn7;+F{JsokZTiw^z;@=ZNgZ{nA;3-H^cZq zOXCAvB$2Yc&G1`M#AX0&LM;O07Ad058P$o7k%w*tr$YZtO3j>mOGfz~x}b3wTTYo;nFmu;=a z(5@h#m|DEx&D2LOG6}0~!!)DFnAdpLutn<}>I&J1J(&*zc5oY}KtQg1k8(VjB-kLy z%pv!DK-*mzQ?%HLv6nL+8KN{KXy35qR*AfFvHghNJAo_@fEqYKn#&+=-HvG}m{g1S zA;4daUtZT*ZSkhE7o>GHnz%=q}EALgz5M`sGH$GSP#>8S|xN0Ni}q8HElcVR!kYk-@~}3i-Z@VD-ba4#YD5viYQEceQRXgD$|dzl0wL$=w+( ziu_ns-2+%E9#fQCX2V6NfsDC0v#yNDJBTigsteCYft%dcy3GTD zosqQ&t}^Rl0BSLaQBAmj98es@96yL@TH`UpLtv96ra~TOxG2LHW8lJKGKl2VT157FEg(A>$*AU2 zbJOb=xK|l8Fr1i%a&* zh^YY`RIm|x5mPk*BaPW=(8~cfrm1Z!p!c86yd%kl?U0R)tO+|RmZ5}#>3^`piiQiTm5AFywH8N%0>QM~S%wnbAuT3xArlJu)2_1p2@K?v%=mp{|Fv7l#Sa%H z*O=V@vOVNuvRVt@Lh2r-0X=1CcU#y$*e->+DIonls>I2ejabg?rO0qE{#Nf)rhtm` zmZ7ezVXQoci&d)`b2;4?#Oe^O?FKL2p0S2IaLxpmiy>SC5*1a8Xu%_lQDFrry2jcz zkbP^@&fzag;oe#`(93}(n7aE^u%+obW)4Lb_*H@SVj=N;14YRKWbEn9SUWTsBts9k z!1$Ry2!PJh%u4OqOu+%AHb7P2R?zkrpsF(FwstEZhLFhb_PPFR{#K^#HsZ~=UW4$& z9X@uX%EZlCG5s>DY`LbQf%_O_#B=xY{mdkI|h+y~rdN6CoGr{(>0;l+2tBd8kJ6&B|A?gQYE zL-jl0|FQDmQdT|K8lDzb9*}%(ZQahHjrtO02CK&YUZ6uT)eDue*H|Wiq$0-3SnET0 zL`MI<;s2Ura1>iyJ&$oi#|#@6IaZBTTo%ob>?%dybil2S(o~iRq!-mVG90*pDI&T; zvnwt#-X!@khS%&DE`!RU#Ph(0ypBOOj+3D~H$WaI!-Y*AOweoKqCdVk4HvKx&p{CL zdr<$e1Oj8t(baq=Ttx$MXYY);$y9BEO1Q~|E!N*;bf{nRE41tVo8TQ$^%u$5>$kDE z&HjU}guUfRrGYR+Owo>qRSj%9`);dt(k4H8?QGawGB4r6JXMKn3)&G==cN@4F?s}+ zIXORt*N~shW!mi2r=TwcbAFHDUk@10Ex~7-EFGgQSNBRd)2QrKwG>&tR+FMit2Q~c z!m6G08e6rpG|=H6@GxnTE@K~l!4lMdvkVn|1qoUT7oG($Dh_X!5l81#>|TbOYYIS! z=Kdbse=J0>LAxSrwfnakAr@}ZR>HkX8*npR*D&9of-b$mbue0YG$sjJ*^ags;SmsMAZy+ZlnFSnV zhJxXpx^hFtXTfbSk{Jr(YY`RXQ#qo?#xm7hF>bVbnpC5jYNCcJ1Nt1(i~NdyKV>3I zp~ww)con6|!a_!Zx$GH59)7?^SYl{59->9fWxnzjk7UG8-`CM|W;#yiV^IAbA&nL? z3-NTQ*|dqD8~d~Xob&%V&VQI*tFnu|2kJhUtfOwlX<5mz)9zv=tLd~?=F;XqsbC`{ z(@NM(D;b!skuO;Afq;!m-mvZt80+S@D7X!aqfPm32Iz<*Y|5(+F~P7hK|dU2mB}2av6C8m{lFZ+H2*`z3^dwF)|Di` zed5^5UT-f0&9?COZU5I}3rD*Ryh6rJ3=bJMA!4GPT2PD=$Pkw*fowXn^+#di^tRpi zAI={fT_-6#S0z4N88R*ZRw0`ZGi^Lb4t{S{jy$8mCntLWuNKuJ-qvH_lqX{kSqBxiR4%|&rJ8K>kkyRtdjm@_=?l>D z=W;!?%UQ0){_v1>B*`cWdH0o@qFu`+TI}dPfR0L*$XTy`GMI3;({dEzBU4Z!sT}3_ z$joI{QaSPLhJHPvem&kmRX`2wHFbcaIsOY0x%9A(2D;)aQ_Zvisf5!Md}UQLubH13 z{K}a(0W1s*|LPsU3bXHJAr-4BXI%nhVAL)7gYAb^K_$8yTw{*<63i(KlOeL-WUJRx zY3!UKvgxoBvZ0(MN8-jN{JydOdI&*c8n;2BBbpm3Q_Z~NEJ zD~=`^XDLU`BV^_zvP53{p8AnhC@q$aw>%OoYtjAK>eQ)M zbuQM}ab65yG3{)j0(eQJ>;*|4X{7@A;4}<4&sNSZnTY|vx09pIN*GA4_HtCNl$pyz z?d8O^tdpNRz>D|AmqAsZXc$RJwFtKQ^quGwnFwtQ`s>00=jb(zsnU_CTZ|f;V*oLx zJ#AD_C&kFdl4K93D%9S{c!boLO`a>8O;JG|Qp@s8--AjMp1OKrFUp>1)k7%e*Y(w&iOc;Qq^jU37MIj ztcPlKoxPuwvAw)BRHwOIXgsDqy;K0SMzUQL*|bj;fM@|bJ5@G^6eRy1#=llIUm zG#h4TY%}d%r=|jLLhCTuD^yyjyIyvJA{+PTTljOM46-5G43e{7wqPmq43r~j21r>t zTm)x;lwACV#7#~B;P@f&`Npk{XljIWe`j_4m+hv0)$9=6g0g>S2==kZ}H8@6%7 zi#y@-$~IYDJynK$04pC;J7f|pw_pvn%kDxh-3U2bv|9%LZ@k1&v(fI+a#KntRE{pQfDip1-+w%MxTEi)57w9`xG}>Xtdc(T2(D|4 znYMrqQ?Icq3~g~p)D#8Xkbg;0QgtWZBDLiBLvT9aKeU9Qt@KpyyA@%6&EdMyI#c1Soc4@T?u$iNBhq`bFIxOjkXud9m=Y4`*ZE=!D>#JO{H5KLX#YbFkCh!Eif0 zJXKZ>R7sy+ z`KA%=T#EU}zY02w?bCT~XS1w}`Ln)#aoD_BUXN{az-CW187?C|c4Z~*4_&l~1U(4( zVU%xXV?sJI6jNe{pduR~+4XjII^tmpxR z#IIiHqJ!iQ%*^c-%K27bo_Bn*@P3Awzf3x>%g z+rr*;#Zl6YEo`kT4wAgLvLg6IEw(C&p)V`%hW!k15Yl031r!aN&c1QSUK)PNr2kiU zY?<^26}gVM8{xCJ)wZMCk9Qk5qn_68W`o*<{3lPNy51gmoKf=6=f`CXOKVFVNI+TR z7ZnoN_zGBirb4iwAq|^_JhsnxyaKizteQinE2Panm4h-_uI`0vOVXG7)d4}7EGK#6 zTgZ@VpUrbS5lj>3XnQ^tS1H%DSwlF~6RO`HYv!**y$yO@NE%$(x6W~=`Qx=lY3wl` zQcYOe=O=kYkg&AXr&vr)u(U^~SWZo_w3?^c1^7grPeY0n40mR$*8)ph_UzQ2F;4>Z z%-0aK)}fOdHfv-k$*`e)v~fuOzl7dE^hj>6;$c6#)-Pr;XWg4DwlQs@mdOV^j9)l$3Klt`H1V8_q?09ofYr;)dFAN9auWw?fvpY?<-+(`L#dP;gHX#f* zHmrDo)RaSdP}D7qz1ALU4`-^8u_d;yaVNCY8Et=XGa(mlD`YviT8t$1yr=Rk^u-}O zwhhil(#QwmtLm&%JA6x;QNr4U1I-I1Y*9GSbbpAQ9;Uc;iG)9erb`HXW2v{`9096a z`2zWRw8t$ps)W3&G8+NRA-RNN89r=bd!60Jg3StXex$M6pW5Rt2u+ZP^+}BSd~qkd z5h3P6)LTSjxL7S~Hv7YypT5q7OB4s_`bKkePCrkQoR z0o_&h>6SV5f)gvPMGe0&wlxxK4;d?y(A)5x$g;%+f4?Z5x^o~t37PJ}vU-z1J}?TW z8Bru9+|&z0LXu`5_H)P5(t{U}kaW=KOR>tLzNJ=K(pLxbzo082gS=Fj?PBmIgxdHL zQO@XH1MeJ*3nbLbpD-wD6vM{G!Ox>B6IORHsA+#?;&f-xz#0|eU+tl)=@$I7ZZN2+ zQWavI4cr(EYFcfdZ`svkUBqwNU;4*o4mf!c+N4>7$4*{c8>;IM@kXtXr~tJ;LWkjx z5V~K3@Qovc+Sb^op;z0pj}y}?c8eJ@pxdCh(Yk#}*l4N77A9irmi_ib9o`QCtB^W% zRJsvqc_v06t!PdrAgb5 z`h4b5pqa{L30x$tP>l$~u}^vD2@`St~JgTp4%G##(p|2X`O)mhj*Xxl73wS!I<(l18k z*7{rA2%)_GgnyVRxE&irc=9H}?Rp$xYd3>myfv6G!*@6k#Y3aEXrw>`DgcEV*4d|0 zW_N(+3}$MmDZ}Zj*`?GXp>0ELCa6rv&Y>!`)NDM~h@wXl{_-|qQ|s-6)!Wpw#^qgj zfd--_f43%hwexilO>l@?$o#P?#4-8!p%LYLO!%0+qW6m?54lngsnUXz29mQ zVI>D46vs^>PW#yzW!h&~W>q8}#;F>f$`rU|VQHcsTd3pN z05}RcGDYQ?RfwxNBcGWNl-~CY;l^Va3aw^25OL|QM#3qq+q192)}JahqvO!FF{51& zOog?z8ioMer zwm+WHq#j(t?`XOjUK#Xd!!E;Y#+*bhx~zk{he8oh5ZA9nSF7*A{(Kp4r0BvL@X}t! zI99cVFzZ-!`Q|&x<$(=+=NqOvb z4-zD;&13zB*&i$bEGR_)G>#|Hw(osVVtjLE|#>9GOt0N}1 zns^7|l#m=KJSOtv1(-BP$iINFm;2KI{wF0+WIl8+zfoQQ@3@b-dI9iN`&hIW3Bm{W z5vSdoKI~Hg{*;g`-Py<1djW+__9>LvRZdnULu^UaV~9GN^Me0 zuZ8oqOSK>e>)6bJU?pVy*-|g+8BE4IyHvVNoF3g^E!)5?Sh$zcnYXJ?Hc3t4gzH`0viqqF#JKn|jW`QOFZV#3ugx*!H=|(HkSdxa_ z=b(^X2426s94@htaN=jkb|8V)5oE9}fk1XLf_PY*pd>=q{SUy)g$(*z_4Ib_$rXgg zN-}TIiNMgE<3O+$``3;V8p{uQ)o^4>cFx?0`O(3Lawmt()^_(?z$|2#8_RN*gLubo zkDbJJdlNe3^!XV+t`t~j@2{o&?u79_| zo6SP*l@mAv`LW(4-PO3)S9W4w*OLR-XX{)|>`_(f!nX_{XOQu{Km0N`lvY@s8AlB0 zer1_$984n7J5^-nIRpwsje|x*(MW|xuOTGVu;m5v``6Dt6~L5S@Kc|C$_bLy7p>H1 zpNfKI^RrJ^>&WV}Ppw{&)n}jLUXiWOJ|)AK@a&T>8!!(1WUGB%*65{9L7x9@UU2m8 z?BIt)TZ2#M?cS{Rc%3rOfqx5`UsokNW;{6{q3Izq-}y*5x$^|lPcm#%aI?ZBB9fDx zNu(0X_!1t}Oidz2Ha&^>vC~Q9g*}d(IEiRqGg2N${(TY=k0XmWd;=T$6~C0SyVa7y zxS=PUjD=bsdKLUf$ebpEju(G_G6_cLP&1j&m_|aK4S5b!z{t;OH|9ErXxHsDzRw22 zPd3S+rEuQSRsw7g-#CZlAhfBi;_v}{ZZd&XZ~HSKF5^(QJcV?#jQ|yy7gPFMStfXk z>45KtiII>EFyR&+lFUf95hcGP^A3wegx&EBnE$Pr$KL`o-?ognYY=PATv;aeUQTSc zH%h?7g-nW45yvbiS0(gCPnkn(g=NPjX{1;(?6i;jxx;F&bTU8#(Gpf&*stlty1Zt} zAYxM@AcK^bK8{wQ^~xY!UD4fGnP+VvFpZOk$b8>-1g3F8LuGb>L*)Df8cnkyV5UJM zMl=pVV@5VaPNIhSY)ibK~2dOo)AHzZeQG54VFg&dDpNq(10E=%a* zNVBQuZ4;)R??CK)7m3!WLs$%cyuxE_z7F?Mz%1kl%&~=~XXTR}63Q7bi-bCh2mY6g zL7+gpeg52L^8!jWCQekbDy14x*koDkf`q8G8d21zGB0;jSX2CTSuNDK2O3JD#_P~f z3N==oA+w@lu%_MinU#6G0!Qw`Ivyk1yCtex9(yb%&tF%ht7tSt@_QQorUK0(mM^ziCu*3ORjqHDJ^12eOyYO~}PFTp)l zkn8&eIWNA=TYlpu)atAOoX&*^8|89LzG0kn{;=4Rl@ zGvo{jO=(Gai`k-^iyR19nV4rL%TJt`<1ciO{UB5d8TXbMa*r=$H-y$iD18l6mQ5)# zOj(ZD2d>K&G%M(k!gOIfZoyNDsS9Nf+wQa-ZvI-RgH;TWgv55HJYbRh6GEN3Qn5f4 zz=M~{aHu)9JN&RhhP2?59+Wj*DMzAX&`4e>2co~Bks}&GJ*g=C6lyqXAAXs$0M9h} zD-Acr8TY1@I^*p$9kvUz~nUgl@Xu@Y)CNU@hL2L8@w`KV<0!9IHX_HsE}{#etKmdzHzK7;Cv zmYAHGBa6B0&K$Ws@{2czvyvP+9ii(ZDPOxyhRLi;BIP@G3hSsmma-prfpsK8BP1V; zVhJ>QipCyjB;|v39D8Q4PhaMQ)tT~)jWR-MzI5Wsel3u-6+}y?=XH0>mg#xTTE*4& zE}0k;p8LbJEwe`*l?pVA(XQ_6=N6;$_5 zr)+XDP^~(HvQx#tFdQ1_2WX6dMx7sk>T&y2%j^h>RjocIYmY0~nQ6Hk*O^rk__~l$ zv&!|RY{GP_n6s2@NFI%_3$Dh}s8%H2Og8cj? z<;%{?GYA^Bobp$%i~gUPMtR$tqW_n#rmXiZ=>NZ0=Z52gNNf)9|l)>3Y`BL|ucC!g^D`QH2={o6c4*<6Tsp}Nh5 z8f@JVYTnQBW`!M6GVN@#4a<`Qx@mWKF#O#&G%lwpus40sCk|&J|Eru0FU~o{64z zmM(tJ7gwY~Cc|k5_BXFd2Wr5>C8tWPbuDU1u~~dAYMX^x#_W@)%`rH)7KJg} z(3I8N!lu;T>aCJ@)^4VN6mwiO|GF7uLNmHSLc{-1hO-z0pA|+6B*QreVuie|3rlHD zwa2d2u=&`r&U>wOme2#z2qFFMnNx{2ZRndu>F@*AJdf_;Z->+V$Z+0);EzSZD%HIX zR3Gy-d%xZ+s-q5e9f{6djJ7z6Rzc`>*`ywKSo59$deJ`6=N_OeM^9RKkM1{WctZTZ$DRm< zEEBfHqN(*D%He2TADh4|guGtCq)t^U^`#{UMf;dIoJ4_vYpkD%HyA`=;QHL(#M;Nv zNc@Yx$?318`)wCxZH!VE)@WrD`#z2aq9)L2Y$&1QFb z;kotIHi2pn&{z@*XLd4yTJBt>Br4ISTq1p^1;0AaruLiHXmg zEOheAYbLgQ3XMc9nwr>OQ$Pa)p;2urG(Lw$`>8b4@RNNCW!8c+o7_K*K5;f#^HZJC z-GP~bka@40U1jvA^n!#Ihnd98J>0;T&Z1`|!_N)`4heYw$DLXU_N;X%p}N6_sJ#q_c@9ETXV24L75nx}^4R-B#S6SC$Uv z)eMkX{pD0!-vvCvmvvvR5KvSxb-7Lzs{p)^KcdX4C|XXFC1ZL|llhg1X{#vg-CecM z;JLjPPNZ~T+taC+rl(6?_wRJ8>#`adIM_0yOH2#@Ep3kqwS~%|5F#J2GVRU087r)!t8lkuK2l zu_EJ5a&;^Zz@R5&MZ7tXPR^y-2u&Vk5<4{D9>3bh{oLBncYICB8~3?$Ztkh~rbfUG0B)Nt67eBw`{pa<$BlA6T%JZG)nP=*mb8k%T1@mjB>>2JeCxq?K zbd5ud4Z|?a;$kBi4a2z0@ZV54@Hd12Pex75@L-sGT^MFg1RTuz*P zy5skjuM_jARA;zUy^h?2Tz?L(H~;s3Na}Ek*QT6C#xXYbx^CgIv2n5MSF<)6;{zM} z^(}2O3vwZGeWPM~v^M$_^Vfu~?^5ibM$^hz$|DK>pY8Elv)j1Z)5YfFmoH!TLCj4! zp7jiS92{V9G~V;H!wmxrvJn+`DpbMz`4HDKwu~M8?HXtFEnXWXkUvHBpW$BFC!RLW zE$+e&i$lh>Wl9@w6?bJPX2rcrxU%tS$hfDok1@K03)^QKJ!cghAA6I=UqZaK$g0-{ zc)7Bb%d^JJE9t)yIYuH7Coc* zDc~yw7-p<&qduo%X(#TIBf~^`Qrs7CS4a;Epm;0b(S;ahUK5Hx1OCgEVM=wUxVDcI zci9Q@JB8wrfd2%1%}DVPz~|w9e=McgP{xU?3F!lNQrr@70;F#~O>r9Fx6TaX^MK$Q z+%k~e^9xNYTGmN72hKg}W?WOo$JiC%6}VMY1r;s^*byYHTi>|5Y>=+F3kcmsO)2-2 zlkN`OXJ0=RCICDNk61EIg_{7jf$I{MtMEO*bRc-}PZbU;=cJ2+)Na>QcmQA#xc2m0 z6*epH#P#DD=9z(0bJMxF6Xzi_Om`QGr$TxoiD5<+r}#YJL2&-5aw>MKnr)0(e~Hz$ zgX^1Crso&(b>h~E470Ef#hn2E2KNhVM)3l`DSC#v@-xNv0EYo?--BYG3Qn8@+;2@1 z#j$`3!u|H9QoIiEbCBoCSc=~OUJL0*jT8q~bmI023^QmB#X|s}23&I~#d`rah5OsD zqgYo7&+p6gYJT4WJQc2AZBMbczZ16z_y-rExEJ8ckbcjH;#Ghz!u3T0D1HgJF{Hn) zNpV1clkQKzHJcbi1A@5wkQLgtG-+pm6W1OteH>0Ps_ex1LwdbvitAT)(yatMFxl9p zauD}3L`$a9q!VyzPmWfPHl&^MB+#PTm5Y6Q<#TkHCLVEAh6h8%=3fC9BMsdYJC(Z!(pZS2|zJN2~ z{3Wj_-U=8)dVfYxbNMsi%7AV46xXii#0A0m^$Suw67UYdBT7(w1n_e>KiHRILv<%^ z89cv24T@U=J_YArZa{Gw;4^?TT2Xu%a1dNSxHH8?YdCQ+aQ(Juin{{t0_T_NOYvgB zb>aNcLn(d)m;oy|Hi6=DK~CHXxc=BIiW2}IhU@z;qIeVF48Xx_DSi+5CE&-~DGsXX z#I=R{Up++eFu=Vazx~cpd;stZz;muqEY<>_2Io(DKyfp`3*mm6*A!0$tcUbPjHu@C z`C3l8!jQgBHa@Qv#I=T`6D~BVQ?L_v4Mg`WLGc2>#9*276yFPW(gg!<95}Uh5LX6b z_{r=b+@1-u1t z@39o?>N;^B0DDcNxG~`0;d$n%}3ownq~-b;!eQ1 z<#}1n=azs;75T}5;xxcV;o2lOiZ25u&ZuT7iiwLuRx_fUKua6dSI z=n0AowRGY%aR0ZLD82{yP)UY)cT2@?XTQ-zC;`{+5%na0-Oha@{Rrgu-2!U5=Dabb zwF|qtC_VeaH_m`nD}89s+o- zEyKL%K=EF{qyaEFnqplWC*6Ix-_ZU>_clRX7~HDoP?|Kc4JZz7wR0TBrvYDu^l8&6 zb`GN%)n}gGSRt$i*AyO;u#Be7fix|-b~DAd0AGN|?A=4LcUxM6%siqu2Dh!j^?@|q zIhwW#(wyMhepe}e3HT{w@VI*v2efnIX2badUQ#>|@F~E~A1K}lxFcMDk2R3&F7&8ifjMk#Fc{d zz1|d$1Uw6*c~qX_BY=+r9#MtjmYt|uY#vN;8sLg>{puzZUj`fq_-1R0i*|P6WH2zd zP84?qOqyjSdr`c&vy-kkujK0951L4E0^kvZ3Z{4y;2V&h zG0zsdb~QK_3~uZ)nidpJjdj9iiiZKNX@G9RURz^@;zjhNhg=2%`Ku#GjJ1jz{(lea zFL#f7rW|drna?X7dugsZE2SrD4xH6I#Lv5;;%H6;F3=5mu&d)4d@}(#;-=k@J*qtf z+eM&4QdDgB@Ytk;0gPrMe%cKc!gIPI9a=XRFNSN-?p5S0H)C%NkEZV=C%7Z!Bso?b zjk$_nbcG9=M$$rZvutLLPWxPaB?P7I(y<-O*2Ie`ocm(M~I%w&6MVD1f*KY~L5IebgNl zMW3SRS%cxME3tS!+{ZXqt4D465DChn;fdt0r`)eccyeq~@5m&kX1|*0}zL(%}# z5g|S?Dm*5h+4d{m(-W0MCsI@oOV`4+q9&qfikPH;xL`ISLg(8z$rcgAf%F z8J-Zs>@pI0%Aq-!$moMo=Fwa^rIS$Gh2;Jod}6=2ga}4nP9?9(=~2KMdRAvnLK+1> z?~97!Q@xO$ZM#*??;`k9FUaCUTd`duFUV-qE|Q0(P|4k@IQlw~u}P5$A>oOM%#7WpCppyV z86FkeG^$6>q*xf^VuU@ElTi`u(ZD@;Q4I1!kN1#=10~T8b=*to`HB)czSndk9KDD) zuuRattj7_#lA`)XCNit{5mCL7`+g!(QGK1bn3$-<#P9@W%6|H=v^dB=^rsnvkD`nc z|0D)n)L2yF(49ZkYmL<;5w$s>J_4_bLlQc0z?8$rL6QMgK4_B3I8U-gOAk_s>W0Vm zh)ift#uW=5$~qJon;6+DCN4UX8GA^jh{wkxJM`fYecDg5h*A!#8aIZ>di4A-QE^dY zyj%c9oI5$AhsRB1aiL9uo@LsfprRhvi|FVHl3`wK^^+Q0 zb1*8x*YBO2*ppd#k_uNpE+HwZ`v9issVoddze!XQGwBq4-tURec_KcP2$J_P zJ7Q>%5Izvhq<&OFBy%g1>cKq;^w8=w1x*Ope_GX?(6Da9xZZJ${~7v#*-7w##b#!+6L}MlT_?FDh<)X2+v$mq@$}I(x|^kkQxPfa+bgI3R2Nm`#_>Zq(mi zMkTM9#FQE(#Kk5?N5wKTuF!mI93B%BnZO8tioa&p%dO}|6!C&WoYy1O(U z3-Nw;b50VClbj6b!Cm^?W8jF<&-c_b^`Xfz@xk4aqT*tiBlpyFxkYkRx9Hl*39(GI z`_v&c83Ybt#eK8;bt(YmuE+zEV8%`bY|%us19(|$8OVHjKyTVIG9s~CLS$qt6aP?s zvY};UVpQ*_$k=X?%*}^tVJ(hYKB76*Dm*?Ol)ojj`~}5ujSBNvlN^%1TKzxLPcv8m)tufGNDH#bNPwsYN=IxLKLYk zm?lqE?cxtZpy+OYYL*MpE|3d9Ju}ONXct>F=NYwz$u4?i`U782W~PPIinV`dM+L^ z96ah?S-m@6JRFKZB|W|UQE2&~<$9bs2DypQ!ik6+5XlraP!ZinKweG&Far6qpA87N z=nkUVjzS#nKLReE%1);6klZ)UeMxnC(%!G$I?iHz-)oRpZ% zEO5bgBas(6>q--%;p~B=a;{g9N{}__77oUl#B3@^&uZQ`GJ%}Qlq{s?jy@FRj0sO9 zwmPGbdJcX*5|ksjnHU#DQn$Mvm;$3T9e#OaLVe=pL649y=hZC#h!6 z2jJGDq21r0vMPWv-CaV@Dyw%iZgm$?mnu{XP_vQpky(Y(Y!%)$E-4&JW$mhJx>4`J zd9AOC80axFtt0yGyQzDQG3+^T^nKXBp>4B=S#xM^@ zq^qXptZ|Ts9`&oHYE5dD6y7@;&U2}0$}i5ScsQWZH7U)iV?pWfY7+bNVf)m|qC0Uc z*!--z0@?K?SB)Q@(u8#>cp@w9WY*t9S$~h>A?|_~uC>IbEnYJoIoKQ~ z2{^cy))7zsOKXQ8jYoExWBBHJt&8_N&A)3~4mw_YW@d+>@f97qXA49wSpa=x64LtM z;4jEa`DFr{WMG@7A{_jOE?fysM;mNW#ANLLFY;7Mtw66>G-#SqbPaOWplQ=_z*-cB z{+^B}u7x7yl!iBvztz+5wY4Y^`+2if@`|qWdgNzL(!B^T;@;~)3`!EuT953U&6&A@ z(U4Gd24!}4J>vCj$Rd?lAME=J8;a*;pn2GR9&%Np_M&tH8@UmT<6m}}vNjX-X3^j+ zO0jc<>GZ9*@_AtTWGkL@9vBwbh86O+#x{KYd>%7(xrjQNGX-@Dc-lqelC91oI|?^y z^65-dWu1NX(JkC(o0FD6l_WHPUKCNM;SzeQXS*N$CTR?$pDPIu(F$nMTv0&9&RUdq z9Rue=xa9}*5v{s`Lq7s<-A%moBk(PE6Q3e~!*1fYA9LkxZprp1h_%7LY)jro4g3^6 z%4BB!H5s^VDqj%aP}nHE^E1+0<%q3Ag(`vml>>c!nSxnYX4!$;7b`m$470-|%)PBZ zmP~SHec#jEQ0h9fn{9Kk(*KP^<}`MgZA@fDRJU^R;3O>zsU9mOS;s7`mP{V~)54TXi6wQm10LaAje|L#z5A`E?+6kKP8*|j1EUP zWhE^jsVYvedZCYjVDICY9 zII$mku+)Ek8O|QccM}``l|qJ1&k-N5oNlFq6|fA4gbD+*WPUrHooUCu7^}*hKEA#AEShD;{Nm0|`E}vv|DN%oem`d#yC*K|H(? zdn9)X|6T3tcbOe*E-h3?dVKz}Ds78(ysLK`m%n;m*in1L^ckA#=bRUq+sr2z>nGv2 zU0HHBy}~|{*tDb8a;r5Hb!r*up^ew0KF&%D2W?jkcJE}-rWov}1*MJg#*kVO`_4sLCA_xw2FuR((NgvO zQeXQKZ7G90G|+}2`?7d_1FbizS{7d+f5XdSwxKqE^=HwF)ZxR8wDMQ#eBVgT5z>^z zUX8Vut*mX}%t=^Qj^;>wW9?E~)IZ2PM~E*`I(F1P(C6Yt{yS~1y(A=KC0grbE-@5D z89#%AM2DSpuDEb-D;>^-u7w&x70}^Y5w+|<6x2)U)K9y@7WIlYQ&;U#L|wz;veXqc z4%9U(9#UtTEr;P_S73zbxlfSk5;5*~U(Ug&dWCA{=<(?~s16p3A%wDM7owxewuwENtF6{30T6fyoDQQut z27(VKVGuObNujE#@in_dQ$oZg9($lv!nar)(aR?Uqo+8O3-!4nd;YyZ+(vOT~u3<*uiR0FVe zysBN#BJV#{whAa@o|gPyOQRIJue~VbQeyr$?;SdX_8}wevu4M>(H64Bn_p_}soq?? z2gr-oE!ZB@Ani)|)2k}}e#X3B<6&x+gvbk&S=oQIuQ@dIdJeNtR=N9G8zE~7)tA7-+LW(m3ZUlhr$Twe1~2CMd1DKx(s_R8^$Cf&cDlV_8*=0vjV?u|ctqvYE+h zf|WfEHr=#}p^wcWDPPU%#$cP7Rz<-Px(5{l%<{cOXFFGXWQdi}!(e)zgb^h$2<@df zrP#!2G==aBZ<{)%vXP3E`=e|Q@%c(3JMSayv!-vqQ8pa#fT=cytg?aUPPMWk7#U|s zXkUf0c{J7L144tUDVd=*UDZ;43ejdkk=Zt{@|R9_QIEG$j03*BB!@!UQX4zXE^NQl z#u04`p+YxVYU9ZxZ5S1rjF_xZhHkWR&0iCW87r!m-vgK5Yhy9G6@Opnh!fqQfmd=eA9uN;=6;_mko#^!sldyx*z`we>u?K!@of-T z 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 diff --git a/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2SecondWaveConfigOptions.uc b/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2SecondWaveConfigOptions.uc index d0f1b0b..7c40afc 100644 --- a/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2SecondWaveConfigOptions.uc +++ b/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2SecondWaveConfigOptions.uc @@ -195,59 +195,58 @@ static function array GetSpecIndices_ForRandomClass(XComGameState_Unit Unit } } } - SpecTemplate = ValidSpecTemplates[`SYNC_RAND_STATIC(ValidSpecTemplates.Length)]; - - SelectedSpecTemplates.AddItem(SpecTemplate); - ReturnArray.AddItem(class'X2SoldierClassTemplatePlugin'.static.GetSpecializationIndex(UnitState, SpecTemplate.Name)); - Count--; + if (ValidSpecTemplates.Length > 0) + { + SpecTemplate = ValidSpecTemplates[`SYNC_RAND_STATIC(ValidSpecTemplates.Length)]; - // Record specialization index as a unit value so it can be looked at in class'X2TemplateHelper_RPGOverhaul'.static.CanAddItemToInventory - UnitState.SetUnitFloatValue('PrimarySpecialization_Value', class'X2SoldierClassTemplatePlugin'.static.GetSpecializationIndex(UnitState, SpecTemplate.Name), eCleanup_Never); - `LOG("SELECTED Primary specialization: " @ SpecTemplate.Name,, 'RPG'); + SelectedSpecTemplates.AddItem(SpecTemplate); + ReturnArray.AddItem(class'X2SoldierClassTemplatePlugin'.static.GetSpecializationIndex(UnitState, SpecTemplate.Name)); + Count--; - // Add complementary specializations, if necessary - AddComplementarySpecializations(UnitState, SpecTemplate, ReturnArray, SelectedSpecTemplates, Count); + // Record specialization index as a unit value so it can be looked at in class'X2TemplateHelper_RPGOverhaul'.static.CanAddItemToInventory + UnitState.SetUnitFloatValue('PrimarySpecialization_Value', class'X2SoldierClassTemplatePlugin'.static.GetSpecializationIndex(UnitState, SpecTemplate.Name), eCleanup_Never); + `LOG("SELECTED Primary specialization: " @ SpecTemplate.Name,, 'RPG'); - // Exit function early if necessary - if (Count <= 0) return ReturnArray; + // Add complementary specializations, if necessary + AddComplementarySpecializations(UnitState, SpecTemplate, ReturnArray, SelectedSpecTemplates, Count); + // Exit function early if necessary + if (Count <= 0) return ReturnArray; + } + else `LOG("There were no valid primary specs to choose from.",, 'RPG'); // ######################################################## // Select random specialization for secondary weapon - if (SelectedSpecTemplates[0].SpecializationMetaInfo.bDualWield) - { - `LOG("## Primary spec is Dual Wield, skipping Secondary Spec.",, 'RPG'); - } - else - { - `LOG("## Selecting secondary specialization: " @ Count,, 'RPG'); - ValidSpecTemplates.Length = 0; - foreach AllSpecTemplates(SpecTemplate) - { - // Skip specialization if it was already selected - if (ReturnArray.Find(class'X2SoldierClassTemplatePlugin'.static.GetSpecializationIndex(UnitState, SpecTemplate.Name)) != INDEX_NONE) continue; + `LOG("## Selecting secondary specialization: " @ Count,, 'RPG'); + ValidSpecTemplates.Length = 0; + foreach AllSpecTemplates(SpecTemplate) + { + // Skip specialization if it was already selected + if (ReturnArray.Find(class'X2SoldierClassTemplatePlugin'.static.GetSpecializationIndex(UnitState, SpecTemplate.Name)) != INDEX_NONE) continue; - // Skip specialization if it's mutually exclusive with one of the selected ones. - bSkipSpec = false; - for (i = 0; i < SelectedSpecTemplates.Length; i++) + // Skip specialization if it's mutually exclusive with one of the selected ones. + bSkipSpec = false; + for (i = 0; i < SelectedSpecTemplates.Length; i++) + { + if (SelectedSpecTemplates[i].SpecializationMetaInfo.MutuallyExclusiveSpecs.Find(SpecTemplate.Name) != INDEX_NONE) { - if (SelectedSpecTemplates[i].SpecializationMetaInfo.MutuallyExclusiveSpecs.Find(SpecTemplate.Name) != INDEX_NONE) - { - bSkipSpec = true; - break; - } + bSkipSpec = true; + break; } - if (bSkipSpec) continue; + } + if (bSkipSpec) continue; - if (SpecTemplate.IsSecondaryWeaponSpecialization()) + if (class'X2SoldierClassTemplatePlugin'.static.IsSpecializationValidToBeSecondary(SelectedSpecTemplates, SpecTemplate)) + { + for (i = 0; i < SpecTemplate.SpecializationMetaInfo.iWeightSecondary; i++) { - for (i = 0; i < SpecTemplate.SpecializationMetaInfo.iWeightSecondary; i++) - { - `LOG("Valid spec: " @ SpecTemplate.Name,, 'RPG'); - ValidSpecTemplates.AddItem(SpecTemplate); - } + `LOG("Valid spec: " @ SpecTemplate.Name,, 'RPG'); + ValidSpecTemplates.AddItem(SpecTemplate); } } + } + if (ValidSpecTemplates.Length > 0) + { SpecTemplate = ValidSpecTemplates[`SYNC_RAND_STATIC(ValidSpecTemplates.Length)]; SelectedSpecTemplates.AddItem(SpecTemplate); @@ -263,6 +262,8 @@ static function array GetSpecIndices_ForRandomClass(XComGameState_Unit Unit // Exit function early if necessary if (Count <= 0) return ReturnArray; } + else `LOG("There were no valid secondary specs to choose from.",, 'RPG'); + // ######################################################## // Select several additional specializations that either complement already selected specializations, or are weapon agnostic. `LOG("## Selecting additional specializations: " @ Count,, 'RPG'); diff --git a/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2SoldierClassTemplatePlugin.uc b/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2SoldierClassTemplatePlugin.uc index 688bc58..2e85222 100644 --- a/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2SoldierClassTemplatePlugin.uc +++ b/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2SoldierClassTemplatePlugin.uc @@ -163,42 +163,39 @@ static function bool IsSpecializationValidToBeComplementary(array SelectedSpecTemplates, X2UniversalSoldierClassInfo SpecTemplate) { - local X2UniversalSoldierClassInfo CycleSpecTemplate; - - // Specialization cannot be used if it's missing meta information - // Or if it is explicitly forbidden from being complementary - if (!SpecTemplate.SpecializationMetaInfo.bUseForRandomClasses || SpecTemplate.SpecializationMetaInfo.bCantBeComplementary) return false; - - // If the Spec Template is Universal, then it can Complement any other specialization just fine. - if (SpecTemplate.SpecializationMetaInfo.bUniversal) return true; - - // If both the Primary Specailization and this Specialization are Dual Wielding, then just compare their weapon categories. - if (SelectedSpecTemplates[0] != none && - SelectedSpecTemplates[0].SpecializationMetaInfo.bDualWield && - SpecTemplate.SpecializationMetaInfo.bDualWield) - { - return DoSpecializationsUseTheSameWeapons(SelectedSpecTemplates[0], SpecTemplate); - } - - // Otherwise, cycle through Specs that have already been selected. - foreach SelectedSpecTemplates(CycleSpecTemplate) + // Allow only specs with configured meta info. + if (SpecTemplate.SpecializationMetaInfo.bUseForRandomClasses) { - // At least one of the selected specializations roughly does the same thing as this specialization, then this specialization can complement that one. - if (DoSpecializationsUseTheSameSlots(CycleSpecTemplate, SpecTemplate) && - (DoSpecializationsUseTheSameWeapons(CycleSpecTemplate, SpecTemplate) || - SpecTemplate.SpecializationMetaInfo.bShoot && CycleSpecTemplate.SpecializationMetaInfo.bShoot || - SpecTemplate.SpecializationMetaInfo.bGremlin && CycleSpecTemplate.SpecializationMetaInfo.bGremlin || - SpecTemplate.SpecializationMetaInfo.bPsionic && CycleSpecTemplate.SpecializationMetaInfo.bPsionic || - SpecTemplate.SpecializationMetaInfo.bMelee && CycleSpecTemplate.SpecializationMetaInfo.bMelee)) + if (SelectedSpecTemplates.Length > 0) { - return true; + // Primary specs marked as Dual Wield do not get secondary specs. + if (SelectedSpecTemplates[0].SpecializationMetaInfo.bDualWield) + { + //`LOG(SpecTemplate.Name @ "is not valid, because primary spec is dual wield.",, 'RPG'); + return false; + } + + // If this spec is marked as Dual Wield spec, and it uses the same weapons as the primary spec, + if (SpecTemplate.SpecializationMetaInfo.bDualWield && DoSpecializationsUseTheSameWeapons(SelectedSpecTemplates[0], SpecTemplate)) + { + // then this spec can become a secondary spec for it + // Looking up Secondary Weight allows to restrict specific specs from becoming secondary to dual wield specs. + + if (SpecTemplate.SpecializationMetaInfo.iWeightSecondary <= 0) `LOG(SpecTemplate.Name @ "is not valid, because iWeightSecondary is zero or lower.",, 'RPG'); + return SpecTemplate.SpecializationMetaInfo.iWeightSecondary > 0; + } } + // If this spec is not a dual wield spec, then we only check if the spec itself is valid to be a secondary on its own. + //if (!SpecTemplate.IsSecondaryWeaponSpecialization()) + //{ + // `LOG(SpecTemplate.Name @ "is not valid, because it's not a secondary spec.",, 'RPG'); + //} + return SpecTemplate.IsSecondaryWeaponSpecialization(); } return false; } -*/ static function bool DoSpecializationsUseTheSameSlots(X2UniversalSoldierClassInfo SpecTemplateA, X2UniversalSoldierClassInfo SpecTemplateB) { diff --git a/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2TemplateHelper_RPGOverhaul.uc b/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2TemplateHelper_RPGOverhaul.uc index 7d73714..269f384 100644 --- a/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2TemplateHelper_RPGOverhaul.uc +++ b/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2TemplateHelper_RPGOverhaul.uc @@ -1180,37 +1180,51 @@ static function bool CanAddItemToInventory_WeaponRestrictions(out int bCanAddIte // Perform the check ONLY if the item has not been forbidden by another mod already, if the soldier is an RPGO soldier, and only if we're looking at a weapon if (DisabledReason == "" && UnitState.GetSoldierClassTemplateName() == 'UniversalSoldier' && WeaponTemplate != none && (Slot == eInvSlot_PrimaryWeapon || Slot == eInvSlot_SecondaryWeapon)) { + //`LOG("Begin check for unit:" @ UnitState.GetFullName() @ "slot:" @ Slot @ "weapon:" @ WeaponTemplate.DataName,, 'IRITEST'); + + // Check if the soldier's primary specs allow using this weapon in this slot. PrimarySpecs = class'X2SoldierClassTemplatePlugin'.static.GetTrainedPrimaryWeaponSpecializations(UnitState); foreach PrimarySpecs(PrimarySpec) { PrimarySpecTemplate = class'X2SoldierClassTemplatePlugin'.static.GetSpecializationTemplate(PrimarySpec); - // If soldier's primary specialization is a Dual Wield one, then look only at primary specialization for both Primary and Secondary weapons. - if (PrimarySpecTemplate.SpecializationMetaInfo.bDualWield || Slot == eInvSlot_PrimaryWeapon) + if (PrimarySpecTemplate != none) { - bAllowed = PrimarySpecTemplate != none && PrimarySpecTemplate.IsWeaponAllowed(WeaponTemplate.InventorySlot, WeaponTemplate.WeaponCat); + //`LOG("Checking primary spec:" @ PrimarySpec.TemplateName,, 'IRITEST'); + + // Primary Spec allows using primary weapon based on their category, or both primary and secondary, if it's marked as Dual Wield spec. + bAllowed = PrimarySpecTemplate.IsWeaponAllowed(WeaponTemplate.WeaponCat) && (Slot == eInvSlot_PrimaryWeapon || PrimarySpecTemplate.SpecializationMetaInfo.bDualWield); if (bAllowed) { + //`LOG("It allows this weapon.",, 'IRITEST'); break; } } + else `LOG("Weapon Restrictions: ERROR, could not get Spec Template for spec:" @ PrimarySpec.TemplateName,, 'RPG'); } + // Check if the weapon is not allowed yet, check if the secondary specs allow it. if (!bAllowed) { SecondarySpecs = class'X2SoldierClassTemplatePlugin'.static.GetTrainedSecondaryWeaponSpecializations(UnitState); foreach SecondarySpecs(SecondarySpec) { + //`LOG("Checking secondary spec:" @ SecondarySpec.TemplateName,, 'IRITEST'); SecondarySpecTemplate = class'X2SoldierClassTemplatePlugin'.static.GetSpecializationTemplate(SecondarySpec); - bAllowed = SecondarySpecTemplate != none && SecondarySpecTemplate.IsWeaponAllowed(WeaponTemplate.InventorySlot, WeaponTemplate.WeaponCat); + + // Secondary Spec can allow only secondary weapons. + bAllowed = SecondarySpecTemplate != none && SecondarySpecTemplate.IsWeaponAllowed(WeaponTemplate.WeaponCat) && Slot == eInvSlot_SecondaryWeapon; if (bAllowed) { + //`LOG("It allows this weapon.",, 'IRITEST'); break; } } } + if (bAllowed) { + //`LOG("Weapon allowed.",, 'IRITEST'); // Weapon allowed DisabledReason = ""; bCanAddItem = 1; @@ -1220,6 +1234,7 @@ static function bool CanAddItemToInventory_WeaponRestrictions(out int bCanAddIte } else { + //`LOG("Weapon NOT allowed.",, 'IRITEST'); // Weapon NOT Allowed LocTag = XGParamTag(`XEXPANDCONTEXT.FindTag("XGParam")); LocTag.StrValue0 = UnitState.GetSoldierClassTemplate().DisplayName; diff --git a/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2UniversalSoldierClassInfo.uc b/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2UniversalSoldierClassInfo.uc index cd6118d..b790a8a 100644 --- a/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2UniversalSoldierClassInfo.uc +++ b/XCOM2RPGOverhaul/Src/XCOM2RPGOverhaul/Classes/X2UniversalSoldierClassInfo.uc @@ -16,13 +16,9 @@ var localized string ClassSpecializationTitle; var config SpecializationMetaInfoStruct SpecializationMetaInfo; -function bool IsWeaponAllowed(EInventorySlot Slot, name WeaponCat) +function bool IsWeaponAllowed(name WeaponCat) { - if (SpecializationMetaInfo.bDualWield) - { - return SpecializationMetaInfo.AllowedWeaponCategories.Find(WeaponCat) != INDEX_NONE; - } - else return SpecializationMetaInfo.InventorySlots.Find(Slot) != INDEX_NONE && SpecializationMetaInfo.AllowedWeaponCategories.Find(WeaponCat) != INDEX_NONE; + return SpecializationMetaInfo.AllowedWeaponCategories.Find(WeaponCat) != INDEX_NONE; } function string GetClassSpecializationTitleWithMetaData() @@ -106,18 +102,18 @@ function array GetLocalizedWeaponCategories() function bool IsPrimaryWeaponSpecialization() { // Specialization is valid to be soldier's Primary specialization only if has meta information set up, if it is valid for Primry Weapon slot, and only if it specifies some weapon categories it can unlock. - return SpecializationMetaInfo.AllowedWeaponCategories.Length > 0 && SpecializationMetaInfo.InventorySlots.Find(eInvSlot_PrimaryWeapon) != INDEX_NONE; + return SpecializationMetaInfo.iWeightPrimary > 0 && SpecializationMetaInfo.AllowedWeaponCategories.Length > 0 && SpecializationMetaInfo.InventorySlots.Find(eInvSlot_PrimaryWeapon) != INDEX_NONE; } function bool IsSecondaryWeaponSpecialization() { - // Spec is valid to be secondary if it allows using specific weapons in the secondary slot OR if it's a valid primary spec that is also a Dual Wield spec - return SpecializationMetaInfo.AllowedWeaponCategories.Length > 0 && (SpecializationMetaInfo.InventorySlots.Find(eInvSlot_SecondaryWeapon) != INDEX_NONE || SpecializationMetaInfo.bDualWield && IsPrimaryWeaponSpecialization()); + // Spec is valid to be secondary if it allows using specific weapons in the secondary slot + return SpecializationMetaInfo.iWeightSecondary > 0 && SpecializationMetaInfo.AllowedWeaponCategories.Length > 0 && SpecializationMetaInfo.InventorySlots.Find(eInvSlot_SecondaryWeapon) != INDEX_NONE; } function bool IsComplemtarySpecialization() { - return (!SpecializationMetaInfo.bCantBeComplementary && SpecializationMetaInfo.bUniversal); + return SpecializationMetaInfo.iWeightComplementary > 0 && !SpecializationMetaInfo.bCantBeComplementary && SpecializationMetaInfo.bUniversal; } /* {