From 849c25d3e50d0cde8e789c2fefa2d0d6778e91f5 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 16 Jul 2021 20:02:55 -0400 Subject: [PATCH] v0.9.4: implemented liquid metal and added a sprite for arcane resin --- .../assets/messages/items/items.properties | 7 + core/src/main/assets/sprites/items.png | Bin 19617 -> 19763 bytes .../items/LiquidMetal.java | 192 ++++++++++++++++++ .../shatteredpixeldungeon/items/Recipe.java | 15 +- .../items/bags/PotionBandolier.java | 3 +- .../items/weapon/missiles/MissileWeapon.java | 8 + .../sprites/ItemSpriteSheet.java | 4 + 7 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/LiquidMetal.java diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index f94f33855..f72898e54 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -1695,6 +1695,13 @@ items.kingscrown.upgraded=The crown glows brightly and then disintegrates as you items.kingscrown.ratgraded=Rat King's paws glow brightly as your armor transforms! items.kingscrown.desc=The crown of the last dwarven king, it glows with tremendous magical energy.\n\nWhen worn, the crown's magic will flow into the armor you're currently wearing, transforming it into a _unique epic armor with special abilities._ The new armor will keep all the properties of the original armor. +items.liquidmetal.name=liquid metal +items.liquidmetal.ac_apply=APPLY +items.liquidmetal.prompt=Select a thrown weapon +items.liquidmetal.already_fixed=That thrown weapon is already in perfect condition! +items.liquidmetal.apply=You use %d liquid metal to repair your thrown weapon. +items.liquidmetal.desc=When poured over a thrown weapon, this magical liquid will fill into the cracks and tears from use, restoring the thrown weapon to perfect condition!\n\nA tier 1 weapon requires 10 liquid metal to be fully repaired, a tier 5 weapon requires 30. Each upgrade also doubles the amount of metal needed.\n\nLiquid metal cannot be used to repair the tips on tipped darts. + items.merchantsbeacon.name=merchant's beacon items.merchantsbeacon.ac_use=USE items.merchantsbeacon.desc=This odd piece of dwarven technology allows you to communicate from great distances.\n\nAfter being activated, this beacon will let you sell items to Pixel Mart from anywhere in the dungeon.\n\nHowever, the magic within the beacon will only last for one session, so use it wisely. diff --git a/core/src/main/assets/sprites/items.png b/core/src/main/assets/sprites/items.png index c818aa6e888f045771defa1b982f681ec370e5f8..97c02f68c7004140179374843185e9174317e302 100644 GIT binary patch literal 19763 zcmbTd2UJtd*DpLL^d=}GC?%jGA_^!-heYua6(uMtDkUl+BGRNoNCG0*!3H8FSP-9w zF1;lI6qFVfrASF4B`76<07*zlzWDs#_ug-o^#vP z#YstilRN-G>F}WgCjfxNBn-$(i<7|T@Av>5T{(PU-^plb=DE!EUAtu^If+bRdnSDL z$eYn`k)2lbnPYCSbGoxj)IAvg)5CE##sT%ArPyoF4x(|A)MS30Wl5FjU9R%t*SPuV zJ4x>?wl0MW=2tiZ+?G&Sn*kZ>id|iQaw{+_veEVo4oj8SK+0$#O7!qT-Gtz%}==n=iuu zvBrA=QnFnR6zy;<2A8aomp!eY3MyfFzG@M-e&Ibr|=O*9we(eQGE$iA_>O^wY z8oZVyvKQ8tity7k+IC1<77uzK6EcWeAh6*vueJ|e5FHfVP$iES06b?1D^->$h;Io6 zi{!(9_wHnRfM^pcHvrWA>Nk&SrM7t0=a)(Mx2wAokj-3p&5LmJpzWfQcF47q3X zZ~rjW(Wo{eRwwQ5k8gW0A|7##!nd1~=$Ra;G%ZHX2hOuW*N4{kw(&fZ@tJCGl#K2m zY!x4Ed|h^Y&yY_w$N0R>fT`i`&e1(dzOtPmnB=hrQFr0gsU_m?*-}w&uWgyged(Wh zM6cNhi4#9!|GAN4AzWaNuZ3+l2lvl!`Kl;%-M(J$$+yu>^;HZu;xa$=i_oHm*fejm zU#{9iePee_-E$|Mm~n%@oV|Q!yY7w#hxckzR*cexb1Omuzr6pRGO^h$8$&THLrz9B;qE&s(-0dIb@npkjnp2uQ{Cr=%g!O5-Pgt zrFW$S@(f5mrQVIcrBK?W8ITq2LN~O~9_hYaPe-f<7%BGYKBJ5=i2S*RC_?;lo%)z_ zhVfp-CKhgVW;CEA^W7_l%EYA?)qip2?04zqZ5Dj0|3@~V?uo2@90)hr)gD!1)m(qM zle+zotiy`J$nvMG2u zU3yx@9DK_KpS|&BVBJyHFJd$GUFDK!*bmXBQr6jXHt5Wp|Ejwu`(QG@X)OE383dC> z4QW-<*j8&SxU!@sGeYp?O9sOmL02 z76yp`g)e7c+nEosIdb9j{6Mi1#~~o^vDNYT|rqv?mi@!&ZVKY7f5F0aNN7$725eSXiTEWY8_zkk=9%`{t*%gxLz z-@(wWzBl<6rH;mwH~GxJS^gwZ^Ky6KGj!FxR1WPg)#Zi1?#|c`1v>fsFeP2xIPG5Q z`XP> z>!>S3vXxwq#mT;AVi>mgA3fO^=)Qle;2&SiPCj21RPCbr#%=0N=AG(1gJYoJdyuPL z9~yN2`Y#@>@s<~cH<)-I{kJD)C6UKpnD5;yH4qpZdoIv`fVpk~j91A-{74C6UZqN# zQ|~pY2<)&UfLt$MW}Uy3YQL`Rbj-fwv(5a!$hF_jpbd{dl0IBQ{i;1n5R=*C?7m(i?-g_mJri6DXaGSUW1Of)4 zG&}|zP}W_4#Qa=rB4rex4SW4hY~`XPp$W2 zp$Fct1$uQ{r;mdQ_}$8FR{iwY*!k473U%P4b1$?+Lfp{KX@cAF)aY*SAUIQT`F^vO zXd#2-nO&j?_EJRtUL{c8Bo9&Cxfgu16BR_%N#mb0M3u&=K=$};>G4y>C520hi94K| zq(MT8b3qt{q+Q7ASpp7=FO=2phY7xho|B;U8ePt0aHV}bGXlU){x`ssYBl%+{Iff zqd?OBO+c%|%F_r~eG9cx1#2>-@vRdOE#xe)va^F!upae?yg2q0; zvW4lICqnp$5h$%rx{RzXuXOTmgKKG01K$1l^ouuVs5fKvhou_7dZsS@XH~5%X@dB8 zEa5A_ZM3qsH(A=k(o~t74W?Ti@vdQEw-)fjuKhl;JZ@vQ;ul;~ZxX%GRHzsv|JhJg zRoc=HAA9PZ%g-==Kw$aC)u!8LbG^fKyW5$5@jop$g~s1l21SH(Nj%?tnTZ% z*yel#3trtawvye>+k@K5|H9Q#@1zPcBbFHkoqWPX04Gg6K4cu=cW7&k&je3;24XIqAi!q>m z1vKfapi&L?7kBs0te)>?U{exuhj^-7VXw{5vHC~P?>=etKCRD4fNAWAZAlHyjFbY? zzBUC(8wljE9~;4$47gictt}W>d6iy_==!xI1jnUQcf(Mh8P5w+U$G=2r`ilFelGfo z7R)3QlgUM(%mepJRKG|$?-Dkw4c6VeivGi2GS@h(q<3Y=_ilF(&R0(o!=i*gis`a} z9p!#cEgGqe1S*lm1k8M|7lhYoek(;z8Etq%K#^-D@o?;>-ZQ5MC7wl>3Uv>$ab0|1d+nT$llfxk7t?=9PucR%Yb0U_i|n#%}cq^t_J zbX~MdoWyy@#1XMlunmrV*xAV$9Fd1y*NAS^43PPq`Ni`O z!1+ST3nOutaGp-7k9*n?uCl;z>!K_yfvO400!d>(>-Ey^eD?9Am8yd)t9lH7Ac1#P zKQ<8DINx?Q*Ma^tdE&YdJt(2uC~rC~M@)vM3t?cgjzmT)AamJ1A45@ql?``%(3%^M zXA6G?qz}kY*;>-bA(q=G<^s^=noHnmy)%Z~I4~=TeAyWbW2?b>djl>n0n_eHl)ZSj z(W<712jB1d@&NdZZXEZjrt=FnVusMfAq_>u>Ms=Jkg^F3s^F(RC5NY_P`gV??P12H z^^azf2uIB6%q5FFPeE9)ghXCSA3_3m_n+F|l=GiscF6!5M+)Tid*JnJBF9^cq8oFS)AlIBE_8}d0s}x zP8|z5r3^SL&h}1V>aS}$SsGu9{ORk-YhfYZoB1Z9g=1S5H7-7%uGs)v2d0+U>uJK^ z?6<+&#RDW?u8u8^YBqt=L|XWEJIV4laqLMRSOm-1*lt7Q_5~0nb28XIj#WJ zE^cX-CrOe;LMGz$b12Og+xcc%29E_-@?@@uRV@VWv|0a;EEF1mmfl47v0Q(LGyso` z?gi7Q{J%{*UCnys@aS6Wy4*FDXeO?x{GZhRq9qoB>X64!<_3O$|0a3f;k$vKeR1ku z;gaxqc@cFsz#@;48m2xLjrg5&IGgsp&|R}Ab?@b+S(4~D)0G_jQ_`|HYHMgBvw=yB z+wDoj)a~-BKN-+o>OD&8CozS&qoPc=ZHnISF3Ba&t^D1I2$JG7iVAAx#^%S~k^*L* z#53c}+AbvFIcEGJ=6*(0Vug2`5xqPs{aLYKBH;kujCo-UwENmgo&WnFkLi+Ws;6ZonO_Hwr{6I}|s)=> z`=;mFU49M~SKRIMNR!VE`7PfIt?sG3&2Q^}@TiJq)E_kGEp z70@IW9!?7-mcmb&zwjm{bf3Qrd&?v;GEB#-l#9TzK} zXtwQVcl1g$gm_xkgb@u$;A3pk;zVC2{6LuuV29@gfkVom^&Es>{V?mN3?_f!w*b>{ z8K7&hXmh}-%;5=iW@ZhDDEFn=#oKwCvRg`*RI*J_6$=2mI{>O% zd7SEeaB8n?Sy7L$=IPZIv@N(21+qil7cyobt)&-gnJccFr}SC9pS()hdmy~RWp8fP zpH~?PMq_VMSB2AiLAxPYs~>nmK%EvPh5WD=|3myOBe6&acV$2)ucR^Mi};%#{0NiB z-}Nn1&3#xHH4KHIC6nBa$m59K`;qh%uP7iG3f}1VTVD)kqlIcUkalY3d++RZ zvkE~!zY>vM6{@(EOHaWC5%?{8`+jPsO=-GV4fO3C8c7~MhANAw`W#6l3L~cbHnvTd zD2K)#T6Rjb&3O=N_W+U+I5oz-`z}_}T31yR7ifgcU!Axv{rN-9r0WwM=OFTuze7*n za!L!X!?0lBop0wECayVNZoSiM{KKHc*4*;38b>mE6 zsJ8AlbwT^w<$}fl{$|17OFp_ZjtoeWaJrG#%{rdJjIIr46_h8U#hS9=+^`*a>W1YF z(dS)REy^4Z2vJ0v4$p!yA<^s&9vH8=@V;?IO17J?luq~B^N3D&6~{(8J#8S9)7 zw!Kx6B#mUxvMj-vA&m8Wm!eEj3rPirFWaCj8T%rf56R;))af;0lSJUB-d zdS-%gkf1GanDz#OGn3S9h@$9OJCy-_Pgz!&NJ1m}5Is1+_6#E!v>}IiE23rg2H-^E zqSgW{s?1b=(DdfK7L#JAzzL3R7aCY8C}I0}n)olLcO>8(o^F*qa^E*l3g1$y6VDyt z6M6zF>HV`D3ovgj+OR+Go2MVElqx6UGDYU=Sy47?xMo8Lm2La|f4PwSWE0jY`>eC2 zrAoh+;u`XzOG(~#hyDUx^cPC_Hdcy&l>v%aDF;!8(^fa{=p4YDijs^x$zRHikckM< zj}RCm*_;r`#BEPw6iKRcrR_311ysebc)0DCZ9fIll<5*a{hQHDR={#q&mBgE!>(^s zsi`IVMn)K=!o<7&aBr!aL3B-4&^rd3%Qk8@8s+w%TKcrTeclpFm2+34p$rEf={q;3 zK18s_@qFQTlNzSi(w+v+f_`Mbe#)j?_+)Hgys{^qQJF*@(2=MYdPR*$8G%m{h=Mv% z7Mb*6XtXa3H1f!Mt2-;ud)?zteD){GyzAM{jK)1ur~85E8oC={W&QM|rwncN{1yR~ z_%q*&t6X7gY&Q^O%>n$rvwVNqXd0@irBu&!8>^t6RqEByXO*fOO)HqF%OW#vu)hir zzRLW^)S>EkYi(vf`h~_!E=dYL)hV5VT=62c<<&y(AnLCc949|zFh^bcT1{?L-bnN^ zwmNc&xV&V>vDiNXga;Tjlymi-GjWj55O_jXmcVzKkhIdzzur@J$mF~OoqD06)gn>k zv7nKulGY!#;#6&(OixT8AXNn0SONWR{f?c=TvD8G%@TEBi8L#an0-^hu_TMW_j2Bu zU=}|3o;MhfKr~#p=0#<@g50;gl5XP2cq2_bQ7s}(LJf@a27Re@Io@Bwl%<=>4UZoG~o}oqc8Or z505y+x0F;6XKx0+ua2cLY^=Fx-p_8OR?At^m1h#VU*fNTb;V*GkMyZ~mDSZp3eWr@ zhg*k|70jhNnMs;+X)hE3%=A20tx`*%h`(PfG-+79!sAJ)V|!ME9qJ3b!oCJsM06QP zeptxa2!14Tq=d?imp!%!_%i~($d5r;KU8FpiNXAzE`3btJVmVVq=w$x-dReu@GXv( z*_Stg0@`Gs?DTY8ia{$SO3$n-TtJ{`hh@z)?r;wT4M%&A=VtD#Z|uu474 zD~963Xvi&WdvOg@nHGXyK{M1zaWV>cS}a!tH5-) zzFC7m+@tu~EYj~&r8^dd$#y_q&s3JHIz0ZeHz(&t;K)sx2otV$*?cw*F2Q9@jBF4+ zQl7b@PK=7P<#FXQom5Tp#$*unH`YtenwIdA@_|b|k{V z_R$?ZS`uMNF@e~EVxJ6|f+6)>L8CigO?Wy^_j(!aG`w_qEE_(8trXxziJV4qPYi=S zQ?w;F;Kzz8_D84}@&ll`7znK3PgdwkkcmK^?8#^f*@iT1q1ZZUlr~BU9<1VqwxI=C zZ7Nd}T>Ay3td~7uqovL6FvJIyG@#K2PfAk>q5d9g>=Sb&W2TGZm3ARYmd6s|J-jco zPGZUI52vGZa^0>AQEpYG3U41Jli!jlK6pJEq}#i)?{=h)o4hESAp$sRAa=xbmmckR z)eMOPf7vts98c=s65%+qYSO}_o?XM$wpUSXl3U{%N)WLL(GR`i7J?$bf4Qr~5KJu- z@>#86Zw2*uk-X__5jhKXCo<960 z=@Ya)*;5aoUQCOcwPzcn*x9&K8?ZaVyw01GWXG=n4VXqXK#I+Z`5nKi3rCg|TyN{J zP>=MVlY2)`C$R3eA3t2g7Jv^mo{kb&3AaoS*-BTSVv7N~b-C!GBQ7#3FE-r~-9fQ@ zQggp_#LySJIj8M$9r1843MVvm69I*rdXX|y-mYV&G4?FQ_lyA_bDd(_qHDf#9c$o8 z$Bi4=W+s7Q4WUm-tpor2`BjJ5Q=sU_O4MvelZZ^bJ^4-Ujv)I3th?;gc9g+q6Q#U!7v?;I^_L*Lmml8Y? zt2pq?PDLd)0m09VN1{|4(_y;Jc3yAy^xXy;C@H}Swz@}Pn)H^kRnjPgYbhZP_^ z<2<;e1(_1%xgN3!l4IXqc;M6FJ;LoZh$7K@^ zvR*xP=l=4hn-~YI!P!DUHQLVmi#|b0!~5oDNt!pk^vZtz#Ul%c@FR5RUj1ZYKzo0txLa<^lOwD>ZrU?q;!VDT&Wzr%DQTN#YYr z9{}0=Fu`2#@LoIt+VeS@1vrvLFz zJy4zV<~eDNh@>@L>3(~1`YKQ3NN;cNg7B2+t^d=kS&6~RHWkL>N)4Yr9ex#7b@F%i z!Z}CTCv}8heqP0B5|M$E>1p)$t)UC_Xrj0fHMHLt{P4tb)Ps@YwWhiK4CA5B7G2$kXzEJPS z(EOC*pj?%m^_wMs-yxmo4*a+TJF!jjqP-62JeX^E$DCEu_3P zl|14R{;O)IM|F_~cw4Lpp6^4l{QIimur=IMMWJNnn0nDCDbkqW!No$fj=T_jon>wj zoNO8Eosh{FF@FvO9Ou&e=oy=E;7Kwlkvjyqh`epaUT{{}IT}R@9OY_5G}(kZ0Wi5B z7~3HCjFO!>`#&rj|fR!o)dw3 z_)RTLl4{4 z2dO=~FGK$j=WDf|DO^l0|+@yS(x3%xh?tmha2k>tGjjtYtOn z$h2Kf!78oH(Y8u;mn$Sx!DNCYG-zKstN`J{QM^5 zuo@LbcFhEAOUUV5nu#s;m^c~Y=XQ6f3T`S)UY?M17%k}eq$-#`co5?tntp#Go|_Vd z`1YKPsCK(>j0SId&O6F&UsJw~Wn#sS34n<69{nE zPd7#PUg(MIOif+6-}s*LcO2Jo#EwqsRuvBaZ<4OY6nOe?jHNbJay()+-Q7Fpu!!4X zWHPlyvlPu16WrqMiVvN(ymN)F%K!MVc!0C)Nw#-naU z#D3c^8_wTj?jUUHKuc|Eq8-xI$@X#H&@?27(C|?a(PR*16P+2F2ff=nH4M&io}-J) z%uu$&rY%?*>|8b|e@|B9`icSJl%&+p_P+415a76X;g}Pr2}9(L*Pla?Rkz zFWc&e4Mnsj^=i6tDg(~nX3MxWQq&vhAgW-N?B>#Kao0$^?%TYIix#yrMyer#I~F9kw*HycF_V(HlaHti^63XWW~11z)Jowg^13mw4~^jgqfv zdMO=J=ZRWtHodzJMSm>!tTvHR*40C4$LkP(mC9JR*66kS8iy^nN94#S;ZtCvFi-hUZxSq1*fcofC71)w?snI_w^6EOtGzz%2p!QLgC* zq2|;EKr^|)^x6Uajdlhh65)3$5DK8C9c0T2zpA!_&|x@Dj-Bwk*2 zPL`~WJSq&&i$4(3@)GrW@+=Up*VTsu+q?n_ai!xr^nU#xni@H9yAAfX<0-vuC#6#d zgIiCwn^nMXTkP?@d1u|T{RQBW320F^*f&mZkHO`@xGm~L*9b|KY*#flYS}`vu&8VqRTl)(T>#1mOKp%N_!aD3H z6FK!4^0w6HMOl1>!^o5@FcHvY^E3-UbUB3p%NEiLANSvP6lS~O-xbP}sWrc4b%h-` zN$gX+Jf7y44g0+F#yKYdghsEZ12@!mqV~WiFHl>4aeB5TOgTra>X5>)TV29RdE{@Hq%5`>Y`+5u38+YG8(MGe&8rdE#%TC4KO+T(XU&1^X z{62JfLZb0v_nrn?Im&l+bu5fx8hb6L2BXWqm#>*ejw{PL1hw z$Yep^jB+$3Ldw-|*$Erk4LgseIO+Jerk0C4Fewt&DEP?P&F8F4sR!s{R`$9`Qcst7 zW=id*Axh5lTyx_(b`Qc?TWtT5Cu`RiYrq+)$NC2G31+5wn%={avlz{lVBAnE{3_XR zVx2|<lJ767i_cCM^{mq+?j z8Nn{rwM&=Y1K~$MS~O%zn!Oz7as1kSKBI;7Qc85cm=WS*EO7V4yvW()atSUb<;giwWdra=fW5#9$)s zuW9R|EAqHCc47~XiGl?73DQOA#f;5JAuUr8%S*U&U-#9!fwC;rV5@K^cccq#iDE^0 zzI!b*QQ<;Ek0gpdZ4jU=l1M2jtGtwMyBVr)hF6g~j)W6>by{Xz#wH@z3!Pa#f~G`V zpn~vwF{3Q@T{9&UK2*}&rOe&U<^XKBpy?)w-i2cMVODw{s|l%G z4PygbmdZPJ62kINW)~NI%|1mvj6KW?V~g8$v$GMFlrS;mK+paQJp?Cj66AY2j7l+t zKQKUirCk3PRpdYHt_fPsVP0fj=81Uu2YDASxl{-mGw&~qk*Y3Fi&%f%Ux-uh+m7Si zuCd_rGwz#rP#rA#wx>p!|7PR^)-Th*-X8>#G-)!|G(hj~G0Pvi;yy2IR2%;)dg&7Ac6xi~pvMt4k7?*n9e$zh9vc zlq#E3%Dbim#vzC7EE#S{kPfZ2E+&!iKWV%&WAeWqVjU!{ER|Vwo0!|06di)Uh+pXO zCI9{aB}NRCV3s-_s-3lKI^%Q1xaw1&Y0W;q?Z21_ZqeL$Z)oM;4DH~~tbR_g7>ODh zhA&*Ah~d-!sxQqyH%F*F()v>A-`gT-ye;H+y?@8V!h(JDy>qdh+EI!TA#}{z4BL@O z&+&TtP`IWyk%y)7?GmUljGX%=XJHB0*-5kFj&g$o1JufiJ99Z&Ko3d|`(g zA46Ht!3rhKb56o?$kgi<8+W6)NgXWG3PP>=@bStF6t=bV3{0DDz@q1k(3bbuN0WO3 zD`cM;s*`1??}{(*>KM6kZ)Q#vp0>X+9m;P&lTP_UDv=vNy1!lDV`bwSKe)&{uC7sd z!y-rXCgF04u|Tv!5~|NS(>Av#WzZ)BHMVdH_wsRb<8{^`C@rSN(%k&y!~&L4<+4!F zbh+Yz@MGmM+MUJ}s&zj2jb}QOTa^h*Z|+0(wBQV~f0#usYdg7>GT}1k3Uk$^fiT{} zgfe~4{m$*sh64pKRv90rftg-h_F>E7^M5J;^hHBl@zadDY&W1IT%#YdHevEiE-y4k zhTwCIrM@or-o|Lho)p%bsDUl1c3-8J#JZPVEu#}n4k6qII+^wjIdIHUfX$|uVZWDx z4ohZlk7{)Acqrit)VT7!ROi+7da@>mM^2I|<82#?FyE6SPi|#8pMNQisigY$tW=sn zxJ_gj`CW|>D2;>~BdEoJJwYC@_B8*NKmBr1~rED~rgz6|`_2YJT@n^jmY;Or2Y`qIa2AUa#N4aQH z`-R3*1Sh!Fg=?*27niZ%kDNLQe7PC+{Po@I$X)PV_@phM)HU}PJ*J{&H%?oJ|J(^@ zrRXFt1~u(%QhKY3ZfWE+%}M&>8f`Ui@~I4+V1Pj2hVoxxFRsjeM7c1$rYYMMEMYd?0ylcBc& z0$q6*g?*OX^>Itb3o8F)*ysEMK_d0cSJtwJUZzq=05o{Vv*MK1>s$NKv zH0pRp+H_4Ylie+j#@aTctGYaS!*C~nw~Lf4J5O@g2*W6mGw^0~#`Ot9^6!ESggMsh zf`(jx3#5Y8NNt7HiqEyiLrUOD;59OL! z(LZRo{8Y?+MhZiC)RmQ$tM;Mf3MsUy3(_TD6P;MDWHA)vF9&lqDTk*qL&Mr%g& z3@KYcBLBNd^@2i8d&J=wa_Sa9COl-`fL&SMtgCj#9q3@{Z)pp|(oxn*_(BKh5Pyje z(-ka^FxID^0NKCJg1P$04K!6O8pIGJyHW^Og~rH5EuG1kPc;ME2@LUO?#8x*={8#7 zWIop#KQ|B{c>5kcWIlGoCri=PcFaoNIt#Od(IQ6eVB4FOErrH-1WcD(W(zyRph}&G z?0Dl6$El(7UTxRHxbbqe%Bw{UQIIU9r8>t`hczaE`^?(WbEtdtTt2;$1h~@<3!8_h zrrz>7Q(g||z?nA{3c8MRXu<7a11b+L6=aMCCPZ%V(>YJjO)EHYIc{K=)2LHwPxiEV z>e&2@r0>P%TvaU4s z$h4&TJ};2gFj|Ob1tJYE)fQ0n9tFPq=#JxeUms!mTL!-hLIT?eXndx9Hp0XC1U@4> z>`7?dr}zyfR_{w>#p=a}_eA+U)lu7Ka@RqV6%5II|d)X$+*2^Wz_)_Ug>j3#0R}_2IHhM`_a~$+j55yM-BgP4Z;7^|3&IQ;ms3%j7lI(@{Gv{2P`Rb)j2;D zKI|Sd!QV#pguE*%O{2g2nr!UP5eYNeo(NK%x@mEU?~%4qynwFy6QIVVVHmq&`RZv~ zJonO5cOq_KT1S|F_s8=izuKSqD zOFJ#k;)?D1`Nc!Vt$W&v7^z2jp?gHaVFt7P%{23@PR}Qw27_SHq&&!FsbXyCvbrF; z1;z5$fsVd`>DC^LLZ%}v@Zl~*yUXJvE>(mbV@IoDwCYyzd7$SA9QtQnj17Y1QjHdWY)1ulusq6m zI0iv4@FF%8fct(({AVR#QRxN}tuiUiaZAkhpTB-C2YABPV7mlbubiN=6u23}Df;UM zBwM?dV**w?JsO$lvs_d zo3Y4S=-}*gcu5qkJrhI@9=+}>oi$Wi0Be zh=KIKc=-9FuP?;S6@+zRj2{9X+vq-@M(i-6B4P|@>ZeO0Kkt({wTVM-J1v%!PtF(m ziq2a2^<-BEVlp0d)+*0wcJ|iAObUO$Y$_kVv|6>`$^4{n*=M6qAKU4Tz$z1mn`3i) zdY3pmmHo!cN45;1&k>}MAz5?yoe9^#uWU?A*T;sOkcIW2CMpcC87wMdP-a~WuHj77 z$RsK;KYsB>TuplbrD#c+jN$G6J^t$;@A@_a%F@O0h!Iax=l2eFU2ko6RZ#gree~}pDuM1Lb!9Db3dpk(ZY|6;>Q9sCOoC2gfOW3U_hd6p&m{8mJiE| z1IV70I&b`tB<=be52?>GJe_L@L-IyoSc-v<=a+R`44t{NDt*$M=kU>S2i|^p;MLdK zRKD)bKa=Gx&)SxC?V_1qPm%dtD<8G;uUmKBt^c@n#r9mYN6bWlt2awoQBh;o^0l~4 zXzn_}Xrq@{1k6!#SkW&-(pvF~BP^Uqxo>GVpwn40aLX8FM0m(pPBGw62_iw}Y}-mc zaI(<3uOyrDkKMa)?_8hY1*~m2pIN|WhhvF65@IBWgb?wZhokFkRoH`IC8yoi9%a@a zz8cb4U-VBkgxA8cMm}I1je(6QK{d%87NCiFK?PcF|$3Ki^zw) zEuU{)=}}gW^jYngrlNmJ|NY}iI9}XG)Pnbp1UaoMVtFjJ)4zG^-=hDw@9IRzAMv7a z9&FrU#aScJH_*QHN?pr;V)}_Yk-|Rv&lyHNz2vTZ6g8e>#`-UdB-frZ97ZA69up6U z9ifoce_MP2EXwO7?ePWG`NL$f2s3y)PZd>o3>Whe$wmy-HG;%hQk@>C5X~cop2{GV$R15@R5YPp|7h^PrTegF}#M zQhA{i*#x{+J> zZwqVNV`kj$5{wmf@I*zJ?t%%1EH_>)0gJWr;H!yG@7O}8;|QM=5z9MOWOn0++S z+BWL}N$=VsD%}ehxtGkGg_1T&fw-H8pablOuv?Q`q*S_{ZG%Bdn z{5vPRZFg#V_Ym;$7Y;u%uOjYq7CS?h-hKKbX#I`jq{m&s`ppwV;yD%Xl_Hltq>LF- zR*_f(W{RB%FN0l!?9PaVXQ#=pPTfCo7VZ|!<9`&a$zKlgihH@+O}~x5BD+3Lg*hJk zQ^5P*6?jI*`2Vv3FOL+1j!xvto;0H3*1yGHw*wd+IHJozNWOT*J0vF_`gP)=*B1}{ z5%JJJ`7`th;-QC$hhFmKzZJ^Yv10yibKkMr<|dZc4!0Ax{`Aqvq@At&4ZPU>S_-}d4E-@_*vTe+HEaI#+voQ#MMKZSu;CqEN zezE2?H}88Dwm|i+`#P1~`1DCyh8=gbTxp8Tap_jYFu&O~{~w9*#)#89O`g)>CXsa6 z0x`M~-j#pg>C&OPJkS3xLL90K8^3-cw=8A%gOFHAW%-wZ;(rRn5j!O(<94<$m&)1c zWNa`Y$8V7ev%YSvkK)cZ!^Q9Uq>9C`Qnq9~UPy{x`u$ytZX=a9NcbE#wtR*t*%Wm` zd<#4G-_*a^|HEyo$p?ChfvcqOiUSO14o^TlPbI^xs-%7De0C zvgL3Lo_HmsYgpD`0$Q1Z(0l(aauA0T>(;t-NQ7f#$p5~Hu-p7nP}1WC5FZ}?O(5IO zKA}4^dV6-GY(v=f+%j9SJ^KHRxacikCPQ%Pwq*q{w7FI6HG&^8GT7Nh2~y-}0@{{I zF3pLeiNV5uJ=Shc(U0dk#!Tq{4|)1;;x%oUBaTuEf8a)fi}=*jOolixiJK+OS@x|4 z7jnY9zmiDHXpZKzu;x2|x5+OmnqTT+-PKu=u%C@-A{e5&EGW);?^dr&SboHWedSoonpIC!VAJ`lI~Dg>JR0Kx@U&f^v%AttjSBuax$+eAGEFt#< zG(fSm;C>LTO25)GZm$-lXT%TEmPwY4cSJ&yf#pJP7VkB>Ai1^+Gbzkkn*Qp#Q0k0c z`6?vEPX`C{^GSqG%{gJGLCBC(fo9|6*Zz%4q1MYX*J4Mjq=PFi?!9l7@ru{kvr`c} zH7%m5WccuAYpA0%M`imb2eUhknfWm8goLK1U`RdEY}3!{i;ORb(7ywhZg*bm)5ftM zF)^_DKCWf8TW7f-@Was?IJcR7TY4rA5qUz7Y$Bm5eyG9!eVrCnM8WxssMS@a!ThES z#rXy4I?;;bRH=4N@#;)tPM7VH3g$6_)KXnPc9=OX;Jq-7p1B)7^obW(J=jLG6vsY& zQBN|4m*d9Y+*cB|6DT`vWB9=wgZ6<)rhVIGblG^SaHnSugXn(LlB@oqL|a=zmR~}} zIX_S*w=ch|CRvm|e#JYMTw*#S@~Bzn6f>`Bb~b8t^W*!ocuO`4o>Aj{(un1G?T!Z} z**yQdJ(kgT^Ev4`PZ&NJ!IqoNmLjPcdMcyl$5o>n%2qURhSk3_!M1edBaIXvu28$Y zOxVo_Sq^-q$j^z0sv9z*N*m_8ezl=Zf|KQ8gI{2`XGouTKe;1Cv(sygZLJZrPcoK8 zyD~;SBCn1z8!9`a=uc_RqYe4HL<5oOd<$Bk!}avQgxxYuY$@y zY^Y`u`SQZ9cv^*D@Ff(L{cdI!5tgETZFGqGFxzkL(M6*hOry)`Ipzr=qzR(O_3K2d z>wW?JM-rVb9bqH}kuBn^{z2PXj}KUtmxz3_93xu+ok>! z2jA@xDR>?|Iw371qZIVcdtjpB1u|u~Sv@BHDpsuI4l>3&NjrOIb23HAo>4AB__f^o zRQF2^rx|2cQ)FbMaLCC0N5qyb;-~@lEcm2P)4c?djo~*4J>J2nBjg08IHbJ>!@M$@ zz#Pe+Rq=$zpI9mAT2f#idm3P}ZtJic@Fod1Dln|gBLl%`*N1U>K|}qR>hc7MEu~_( z#ggsl`NnM_DF=LwF`c9cLtN%nup5A<0ZPm*B*%{K2bD>_*(}(Jf4?q-)d0&YTo?{@ zZd2CZrVezdrMNG&GyU>;iijEK^UawQ4>hu6&Vs(Fjg3v{XfsnUscu)pZhq^=52`!l zb*-85d8dgl#Xq}mpr@_}&bkrO(oaTDNr4PnsTT;56PBoh5lHwNmS;;QoCM)A+=dgN z1oK-*>Q9ey#2%iVz{dJdzZRct2hY;P&f#aanh$iKXxW%d)6)|pYqGq6CpuUj-(w7H zYQR*GI`Y;Ap!G=%chbdhXR8?Q7`nqG2`+=TcB^DE+hO=utX4JNcELl8BDPkc0^!N| z>re|*0sml9j%WgG(hayo@Mb&!`jUxwl-ea&Jq=EV&@#OEUg9H)W`uI3hU;9)QUmO* zF+4+NiU_k3&!u@XNGbvBy)ar>R(d z%l=q_)D|L`k{YGUdq=75Ym! z=#ZLJ+Uq;8Lnr=%w*LJRtP{hH*MJ`;s*l-#49b;C%St8iotvyMUAX!3yN^7fZ|O$( zAJ?T^(Ip_(q+6#Ojd`*dh>X{CwM7xP9(J_}&f}?sstbh&DSEGKWkd)^_d9i=38j37 z5f?YlZtrU7K}>#NE1O4uIxN$C#v9H<;-Y4@@#)IAE52j(!wYBGRAH8N!;&RtjWNGe zIVb2;56`v_!#QwcnppBxUgPG(Fzja-%8*GAj2jG2U%+B8!#Y^*g)yIRyMnPyU-=tM z8seuc|3gOUhbia0J<4a)b?VjWANH6SFfx~xMYTyYEp88zhdPCO=G^?G4OoSw`J~mK zH*u{~&iD@88Z{aMJF#}OvAB;4aS3%3XV9>xX9N6;wqJYg3vNzS1@xcm`JyRG{|C0E zF}x=>O?;SnB#Ih1F%%tNgqK6uPvmiEVLSPg`TdcS_~o*wdaX`X;S*R$MWEAEN68P! zj;qxv>`@TS$ZzLcM`q*G`hY)ba_9f)X`T5l=V?)wec!hvGQIR{a(7M{|%hD6*W5@`PE>QBWB$u(f3XF`+D zyB*n8$2s)R)x}>yG`GI*+DrY79Eu}uHdaEh*gEvn!^rZ5D#YS2jXVE1ISgoK55R`x zc@MZYnNKG{S?H!5!yWeF{vulI`;KpGbLK_?y$gCtIIabmf|GOqL9SXQG9cLCKa9jx%Y!p_W01> z$2-;l6FYQ{N?xdHXtyUBzqqMGbrMDL+ zXMI-}VK^SyW0}6^MpJqZLk3jk(hf5HLwPH}c)r6&LzH2`>Q8y#9y}l*DjY+GMm8=h ztQQ{Dmk%rZ6K3z??@L0D`$JYK5}IXVQf2qS2Ew|74K^pXjIxf9Ft%r`DHlba@}-RO zCE2x`^6+wD=X@n&@+6e1xJr3lhM*kVuDxKwFdNXa7F;=V16ze66VMf%xm_hAt1FgH zkpa_J=|ve=R73(~_1gUtlGj5g*yXYOUT!R3*Y9Eb7NMJtzo^*hlI!ubOJZ38j`uw3 zkv8f>i|Po9PEz*rvGa|6UWLJBVyRf~1T~#Nfj&YT(SQXM0Js+5E)sHbJm)TyOzmnf z!FY>Woj)3ApHK`jF-NCv2!82v1wG6b49D$kUOU$xa{}i7{1Ny%S6aB{H4PDIlT}&= z+vvq@s;q^$k!5-d!|GlQ;%A(b7dkmlb;F8&zJ&Sn{ zg+F2&H_Pu#+b%qdAz#`6S7H+5bBmUsERDJ_DW1b9)t!sW;>_cHTr^v}h#EZk8x5@z zL?A?oI`wB<%iT#u!xFn+z$~dFf|)QyN{L8oVdD5!zq5w)l$G8prhS`l>_* zc;})@+Z=e!kXXMC%-@Wsf3dW)dc)}b)w?lEIBkB_e%~7(V_Ndt_?GlI zQGqOGSwUQGXb<&KhDn~!nUGa`MT3Om>VjroK~5(w_v6JEMNm$`?-_4&^uty@Sx0r@ ze|F;p{cwrb`{}aT#Q|=fgnf)^U`0b`Z`7);(npG%5AiYunw%0$L}Tc!JYL&F~!@L8yu8}@>{EJLM6{* z(MH-IRK-T)#~lK;9D<4kT3;|@uX znnHyhX27-7{;d-u6L9zQGp}5NnGCriph8rg!=0~wU+uSDm2jxOJMr%aExi&r0BVaw zwGDCQq5YNMU!bt1howIyZ_$0Jb*`ltGq|-!Ks`|=eOtU(a|wt4ijAZOfr=wc;xC4W zY69d^Thc28oKS!Qv@1jsxW25tHOU4da;n?8OlOC-R-jGTs1IR}j&}Eo*W~F%8ZzmS z%IjU)nx4+(U3o|Sp;cMCtC6-^dxEOQgkcZQj|N%cKaBnDapfgy?4bw)2lM^L3XL{ zeN?XJoLIjqp^OOEAhljV<6AgDbi$s+t^|GOUI7XJcg;5Xu|)Uw@`Sg)S}a7L5cbNe~MxZ@K^$R=y)wOO*i zDms?XL8MOHcnn%o7UsV*iv%uzXZ<@7i}aI~kr1_@l{PhqrAyep>IcS@CjofjtsERY zFeNfTjJMmne-72)s(B8pg`@wx85_w)1UO_Te&qaRrwC5EvY6%@7bNA0Hf}TEJT-Kjk1O*b1{J zL6oTSRS&IjbabxP1_AM0d+$*zeEs}BXAo$d`uO#=d#0J|wY31V8}7DpWIWuGy|HZ7!=0tik>5jY zMam!7*YB}pY@P3P^hAO8z&n<%$9XN*rJA@lBZIhWD|UsT9~kOXBO6VfAgd%z!AiNu zv?XN!6KmND@)*Wuyf*^%G4Md|#BIN!Rxnexit>Yd6_UbP9XQfwUkzSwlmFISZtRp@ z6lDmfy50C3p+C>yTK)d=YzUST>9<(Q>w~X`m1MywuNfCxw^5Em6(f}Vch0C3*#%*hj%qakxo#eyvlN?Rs04)c%AwJ4osUG%W} zIYRvN%(uObEiHp8H&`%JBl~}@%NjB|@8wQ}dg+>XqeDx1jx%f|oTyyiZEdY)dC9gF zhQiqL<@Ve|@^8xmaYux(Vm4OI;hyY!N_D!FbfM51jG~Fe+(&vXkr4^vg|aFiWtm9X zzgJ#iEj`8yh*LwByw3Ccj>MSV2nrNMI$+FmiqGppEp@>E$;;tAJ}o9(C$NNA0ap22{P z@gvv7Pl0?LU;_b{jqn)H{Xf2#qzPpULB;>r2DuNe!RAcZc6)-&rnKz#j?V9zs_~8nH)G#sM=?%gT3P zv=-1p8U}}idM2xRIv{T|_Mr(Fg_yEqG{JqxZPf{Mg>137bv((;Mgxc!CV(Cewr%z& zFMhc~4tpgC$R+@$N4nSNfm*6O zfvWqo&$=K<297`wyuhkdoG;{hYs9Out5Y(M4*FF>$0K$)_*812_j1^VYLnJ7^lSS2 z#GxT_plzgU@m)_dpG&)Pu9Kh6pOkFgmsc&_QR_=5un3>y-l3@G3>$K?F{Tf7m+pz- z*H>{8e=^m=;zH`-&AGz~pyt)&X$x&%-T>1|L8AX_A-oskaNUN zKKqn1_4#ra8N*wKwdj}He;TjADIH(G>$}+(&aSl+BtaFQ8Q_&$CQp z|0V?q?<3t&hAU-vOi{*aZYG)u{}Sf26f34LiwkFydbO#wVKGnSHMv>uKh=KmaXa0y zbGB{)J~6&IYi*-@*bRbY!Rpri6Qz<0FQ@QJ;*`Zpl0A;&@O{OOh)=yXCT6K@`)X zSrBv%{Bg$~1km%$X`N)E&vZY(AH&^ciF|L0u`V0=u>p7b46{U<$MG~u@R6*Ly2aDy zgXSy*fD6AECq=TumR6Bi64L)r|bw=p7!FVOC69i67$z zsjVx-I)`{&Py<-EX4DZt%LoT4C^6(VXhb8U6k*HC87tbx9bKx5879zkgYF1v%0iqQ zVKa3pPQt{Uz#^Ac)U>0OAxHaEY$3nq%tQl1>CCJQ_Sv(Y2ODiqx$%!SF(8Gd1gPJO zZuE{aC6VoA0pYoemtdy(lF|^-#AmDNP)qCyyYN|pVss^J>cb}uT9p{uai99S(N)~> zI9>N#i@$>0_-p&VoItWX&zU7-na#XLnB!T9zKVc_dPk>J&YUlt-+|c7a$iGBKxW0e4t8c=a-zqcB8IcFFn)$48+_?wE&}j1Sk&5&NcCq0jn5}AeweeF&H-&(7|~*Py&E?^1eKub0$&Ak zrWN#u*A(#Vt#`dk;6p7N<*%}?x%WSJHC85`Cwdr-?lLf?VW;D zmwZ_>UK}DrG!t$zB%2DonapeK`j4cbHiC`F&qE)-9#H8>TJ;`s;t$~Z#S2FZF&*PK z4tOOD9__a+aZikyW-yA%5Bx`hZbn81h}@y7+M8+EeN1Zya8#=>^vF`R89L`;!~3ap zK?qa{RXh+g72d$wRhT(s!AHeImJ`n;Zk!24wZU!5_aT2crUxZa}=3cc9|4E%q`tbj|99>2q9^Chu(?u7O$eObVO zRJ$ggK4;4uRJF6j+Bx7d3uqNag=wHn7Q35!>n3x7FYG35#SEQ?LFPf1mohU+qcXCCrk!s-ADM+EZ7&h`E@N0z>y2*oIH^II* zQ2nzFVbSdlG9nD7YUI{?wfW-4aS((4#%#KIXa%5cf3hs4te=tf2vT;vZEN;&7{x8> zYsV`{Vb>y}v}zXgOtJ9&LlM9)oNGHfe;j-?<`u0*%7J!8KcxFqG|G*vxv%2ABLqns zYnr?aq)SWDgLdm-f1y-^iaFHFCedk6)h>5Cp? z4XBMbXH$k=fY6%fnRvarNY7cq%;1c2pK=v%YA5jM-T?(uXDz|VFPC)i`BRlFqXe*7HO&(TkEEcaiRYlKS`$bwln3UT{T7tXf2GWnKzL^w<8otDZJdL3TUGsIO`< zD>3ZFz$?jUi_}OarQu|AcuW)kat}M4*u-Fcl ziIRwZog-`I!tz;*A_hU5PJmc){1xsr@bIs(RD?#d5C^CI25-sRDs^o8sMg_fVW0w0 zp$PPZm52NmP?rf~zGhP$GZOq5dcN4KytU3B+@xSv-e5#m-VPi5TGmy zV1=^SUly84u-@mBm(7GUwSP^M zzwuR^5}p)3xE%~+!R%Y=j(~xU7ip!4&dE!m#LXI_CR5n$X=!iOi!rgeo~11hqS@`r z=nUjONr))+n zt*{crHF8${+b|#>>4vBtsnvsEHBL}ONH?vz$LIADEEurJa0BKusR0|yD?tvhCyp##L(x8bd4kaDDD}-D_Eeq=GKun*xEK-4D}bDpyP6J>1{UhM zWpGr3X=O(K#>GHoGah^vBJVC^Fe}j@E7YGQ0y@iyNyM#KwPmmNm~$Ys6Q@J>?1;nO ztL8a%MFWL*oW> zuIqA3UP)kzvmkwKh-EJi@bSln>KHjo61&TA`^x91LV!601wF;*up(JP7bIK8klSIf zEfzSPOc&$Z^o9C+I>NsJV96Ir13>5kw_R?27Dp=rXGmyqY!m)X(PfbR3Q9Vl2qLF} zL0@LI``blKV7*P8q>yHhG~gv2byERzOU-$>63Gv7&{L8D{lhvb8ukZV7!)<=ejtu0 za>AR66*@0&RW{H35Sy0tp0E|%It_aCL_q!)aEpFc1nkzTx}B058n1{fNEka?6W+xO zy&(rE8&bmuz{;6Gjoj=XC2cV1L<(??WHvCHj8b~M{`Ou#xro0JSOVS>%NWKyMV~P4 zgB0$pY$D8FU={;wj4Vmub|@}nk&h}MyJ=)A04n#!V5)g!pviU0ywf6D6e}*jaz#fY zH@3zAJiY}c?m+HinNJ)wD}a%o zLfDuX+&w5@3UQkj5ke&H8B!9UeOSn^L;ycMMUWk);nQ_F4Jnfa8Pa4xZuyIYP!dcG z(9&yMS56dK!Rq1Ds!B3ZE^;J|t^1`t_8SR56$Pl>cdk;rQByO#4SjJ)HB+lmMX(zD zWdu>@h>&IkS4q!N4s1dSD>c5c-%SoVeeAfh71|zw-m%XqA9AN-a;AVFMA!XT;jVKl zF2T{vhp@gocRMY#@O>;NXw|PC;p-;HUwCkIgxCykP6+vZC(8|g)53bhfk9FAkNu1; zj(c@so#CbY*Hp!<-kHwNU+*YOm4p-*&CFsp>qmE|qaF+8xrA8%1_bx|4W0ApX=&HH z^NinBuFtH_u1~*c=>0K^Xn12wOH72E?^@MzOgOWvip#^58l|@4p79pFwU&m%$D7`! zV^>nZU%Y4WnTAFI`IRH9>`i*l`9zO0TPO?5U$A06;W z9(Wy#B;K07J&YbPDAIsl*+z`7!fFFRJJFT>OLEvg~$XBi=hD2mG%Wz~Uo zH6&(}$toov#)=FG7KH*AtPuZnr$-DonqPv$Gv(yunvV-VTvg#U$y;{_VVO^~AY z^Tyng*73>NRt?ZOhMZZo%ECiP|I&S+#|)e=76zkmbMzYUkQI}LVBZ=8P?LtYPZ64R zlfXXd5(GC@(ym1zIPK07=4`AC@soRVNNH6QK`_}!?r{X8S&02egzNMYJ1Xtg1hNRl2Hz z9-k$UA=zo*LN~+-3hs>=i6GmIvF`-4XfN z7`Z|W@WLsU;wrpb^^y=7L?99B5zBoT`rJJgn+A)#!1qQr2Z?$o$G&SQ&4NJU=QiL% zQ%1<+!ocjcEJn4##=oqC*geGKE8qH`vH5>O^#9Y#`vp6@g-3AAdFx&zz^`i-3y=XxmpUVh8-Aug)NRQV?^jV9<2&eA)dNTf(wr96$jEkF?03R{oXUd#hT!n5o z3iHpnv^{V3`N~ZHg@dG1HGsUVn!0dA8ZL5CRnB$?_gN855M#1R^@5=uD~-!EYFxf6 zE4dlfo8Zq}4a>;mS^r^k~mg{Cf9DbmDgj#lB(tH7oU;FHa4C( zA>L`n5(-MEio1z&vqMUV<{@zY%>h;HsG{7@Ut^BDxXrK_Wh^`*A0nSlIv>FHvOB&5 ztq$0@=25WnTAZZaucTI{!po5dDM!rZ|K$9b7uyG3+mGR@CK0l6LOs3AWyHc3r~#gJ zOO$lQiZQSa9aw?bYgiJ!Ae~r!ZeW?YyeVc7TGWVI9{0$vhx~yoc2W2th#*L4QzXF( zc+|=DNVyH2L5dLlWvYianX03hB*R{s??1f3sZdst{fSiMgYwc!(8COfLU58y!#q#Snd!T|V|O1&aYRP>M`7IU^;THE<}UGp=o_%rWxpIgXqm7ADj&l*+a z8%Cy9)6e2T9MfcMEjFIi#OpHXT`w2XJL`(SNu2r|f{Q=dP=4L_#({y1RnONvePl6V z>`_(l{wUYQmJ)(uMR2jA?sY>o%#NyZ4`Ob|OtM|tIAOg(;k{xb%;LVlG0q145rW5% z%rGPAlQjW|-L`H=G;yegDjLso!EtDvq{wyc-`P{qiv7i3Y=xyC0gX^Z7Mn*W5!V{U zs?>nkT*JxAfj?edGeRdQQvro*(=$e+c@qb@(qPtWySlo!TWACE6wUR%;?44-{rx~deS8A!1ck31i zqwc@N^NlfUCDbnZnWBCOYk@ts)AKbPK zKq^V(_pVU%5rXq=4c;luB)L}bW#pRIxwirVP<}2y@=@C_qvxYPL-WzJ+EdLq?>Y_X z#(So>N|jNVHY!?=MvKpxCgCbsPk4GWOy|*e1XqR4f39zc4_<4OPB}v zqZEIZhL}Kj5(h}v8x6M5oVivlSGGV@)n@w{6EqBi& zCR|okIfH-W-BJvsw9vB9g+@O}k}m`I{Wc4cE;t<#Oz$FsM2*=*C>aOfrZN@(F2S!S;cQ7I8`$bdVWqVJ4dF@wYkiO5UApUqSL(+!92PyuP+^$}pl$O@U0+$awin)NM!j!fZqOC3%u zDlLVMIWC+M@&42;dmq!$*SDZ-u&pKy8Ey=CX;qNjy_>oLB6rkp`-ibHU&UBoQF(41 z)uD5VMePfS-9+5`7Ebl)yW}Fm)r!;Z@r$Pt58@&Q(h@GM7ZGCOwpV{f^)pg*Ss3&> z=Ts`lli~m6NWIVXFXNfVUIo&G^{lY2dl;=K#BBvZDh74&Rb3AfzWxsGqJxG$vihQNWO+}f%)dHcgzd)fG zh_#l*Z0?lzkXGL-)w9&x2J_y{O2Oj|-)I3R6a?L;aI+?MQEcb7>S=jvswg-KLf!U* zYPnem!u)OaO~t~)pzQAIFyez4vb94|e>5FKH1lRwtR9etEI5jwJB|8LsPmM~D`sw1 zfE4{+SY!F4GXv7|AS{)zQ2EM0`1Mxw5j8&vv?bU^sd(Q~3{H_|kxcMMG)DY-BhJCS z*|tg&Q>Q1ya~1-7nbq|JB6yKMt~I8@G^H_kz@$*V6yZ}tKd`G3@}ds7QrnoduAbL% z=*E@D>P8Mb?dpf{{*yyum`y=us~pkge1)15X3TXxEl#=uMc!rC0$wZ>nM|06&}Kwg zUDWChEFSWsKbBNV5dH&)UXj3_UD#dYdW1V4rc5y*>GS37(ueW&ua!dQtG4)y_pLQ7 zJg#ZrQCdIPa$-Z)S|4@%_3CH_H8StKWwEj|o0wpEffnsv+xH9-v>6wgb2%7y(k$|6 zJ4T})W8B}d1D8xLp7Pq4arf>S*GC%{dk@j;#byrn{*|yZU_eGzRx-cD`=-}-ZIPXJ z6T|X7w*GzZuITYiLT66tewOx?Nz5RM6|qb!FuR}Nh&O*Yh-`*F8v=67+CSY|UU}^oRWLs7^FSt_}5ilTC zmf|t@Q2xz+-q|BC%XiB1TXz;JMhi_ZSiUnvFhlucL+Wqe@!K9hK z!pM52SB_VYQ$P41n!N+Py0K?LYr8Ywf;E=MSDE0x5*4fl-ss7Irzeoi8~y$AP&U)PSunVFwryKs=N;_D-s9xXke7MC5`jF zU&UT+GJX#Pd}lU)Y9{#qEkx3Q9@EASb+ax#4O`@4@g0)9%Yc+Zl?Q3^`;4{aX=*Ib zIh^w>K6wc^&?sWWcSVD%|cn{>lX@fTFwG#19c@J+?JQ7-ojAQ>Pvf34-8q&bZF1|%MLqFj-LO#a;TZ6YX&6UVmRJBXcQ4ta~A z%`F29dYJF9M?NIm9kC#iH8^j}z{5by&O&IREK4FN_*~!(V+C5yiOZ1tc2*?V zwV_5woaN@Jczv$%ku*-#Dp(pTIyOa)Wt@c~M}kj__v{CfW2mL~{#hDlX^ehb3unaK zV`U_p=|T|pOBLpR%45DLIdWtLd?4N{fFKnA>;oAxZ+8mc0$=uWGl8ELcQyU&CS;p5 zQ`KU?;he2Dx1{gL5fSWXNslxlPxRX;=TkaX5|koYo5YplhXMl~q0$i2&>KbG2IQ=} z1g#Fj8{J}AICmDCM(tCS{Bgz(Qs5R09HpJsyi;fCz!&Cg;Y-A7=h9;SEAr5{y?RGEW&Nvn;`L@4hjh>+{S}#iI^23M{8NGP=)UqQSOY_+ej8p zP355)%gV}1W>p_;$F01SRx#~`!rMqP^UXSNuUFoat)PPle z%yRwcta>cx&Odd9RaxT7szhM);^&W}v-P8sAq|wc`eN4CfD&SZM=m8UA%s$E5!etN z4-woISLNQJ`16jkK)=2=^}2tQ$+Pthj^~q_BsqMhVu5OBHHk=1@qa_u zTs0iAA#}XrJ>rhP*lHoK($T|WxxL~`9*+HGMkG_|B1+ct%;s1Z=J|=3EpzP z=3Ynk(OSk|FshD~dPBO0h_)YM4OemJy>&dM)>n7J%iL2ql=<9 zeEPFCA(JE$mYMLPeBooS&7*famo`pOBj)F`x`jpCjPG% z@Z0k{d&VVI!uH96?_*`F_rC~oe68_;>ar?G3-^e3vttA|vweYM5aUc^azAYLZ)gfu zA@->!Rvw$1Xi1VV>oP!!lTue_s83o{6T-$5G5Zg4oixT)UFNu9S6aDm=vaA-Bg=FpsvtuX0LQ2551G? zgai9jB!w+({wQ*X9h3kT-=l0SnON{79ngG0nKIJTtg;9Miemb1-rB;&Bj~?>#3q;{ zGdOyX(6LnI%oVWptTg1( zC+Wn2{tjPY9{Hr_q!G+U1gu?z6e|9H20AC-k?~$=7@vGzM8{zgY#+X1m^k??Lb!$d zI)M245GiW-X8JR+`v~E}W5PY-m~(R25ljL2681y`eC8O~uH0Zrm{s<6L9xC(?Y(=2 zTjDX84apR|@U4U3LmUWPozBw$Hr#SCJGwkp8@eh_yS>?65>NfJRCP%Bwwn@&r9RX^ zj^$t!xEfFmAWT&OyNyTvRJ+s!>n-P&B7c%iTL9D z;fofUop`mB6W8yTu0A|*&*RMYz>Kjo$L_Zr+VNLL&=&R969GT&mvnvNi2&a2$XXbIIZ=&B-ZadQ{+)2+5KSl^ZqjrcmJRMbfTk<;PEeJLz4e` zLLde+q$3uo@Mzm(EHSbP>5rQDeE9O+?lxNt+dG*Z<=-Fpz7dXa85p!Ry%-?InzPCr z+`>s{30p39Bor7PIuwQs<`wjg1|f(vr;aYTc|+MCr+!ZW$2RBCSK9E_O3EkyzWp6~ z4<79BK@FJd!f2C(VZo=C&6*NA;?T0;Y1?WjSh=8>n(#aO?Gq!-LSLS}jANG&Hza2; zm~7^2qK^u`A_cT)#MsrD6B))Pq%&5oA)Gnx&LQ;DiOdILTp<}2U0P0#{Pw=w%DJqB z9u3oRJI?naj1d9L4@w+a&TsOWGk6=OLF2Dg5xpUoyK{FO!oqwSbeUuqQ^Jn~d9)wd zZ2hCby!DiJ|D0Sjd0oWLbIl6Js&-bXK|V9p5f5=FT}SC$dZk+r3!d?%NPX|cIAdmoi$V?+M$<)VoRV@@s9njBKm zbyS$D5jR(U;5LLW@l~j^KNWE~Zxe#}pzsn5KO0(lu!T2p{fW%>V?sioze?r4&kM2O zC&QvyW0zSauF&QxkMm>(`<@p{jNetmr2fMGBYTf=%r=ta)Ix|Y-1MCiH;+A*p(U1t zis8V}tg*^gjktl2H+lhPGX4UK&2nQ;PHrZgzn#N>YHI^0Z`@kyb98I^BVV4((E*ad)C4MSzDl3M&cWQcdFe*KGWS$VC;o{xtG9tW*&ZW?Sndu` z=RJ{OWf^HSFFj@YHrgwrxgQK@RuU5va%L-bVwhDrf}2k)&n2)`Rjrt|)y+Ip)@CQ_ zpe?h?{liPCNyEKNfCVN)_YeA$#v?pp5S4GW^uPTT9O zXS9;KrS^0G`heA%Tl34$m(;?<&@zlC@ z_FmSl?2Be{%;^k9olyM7M*8Xf^jummhx|TIjJ5LkTA5&r^}>$ryWA}lAG`Qg+wq_4 z%{L8btgT$d$(NGz?Abv;ym4T8X@3k>jy?r3&&w5Kh58iGd<8Q8rGqtS%{BksnJ)+F z7CfTb!u@wkh41TM7)*e|=Z{-B#)P`1OSBfRfNMLlJZo^v?YeNb%#@KIhW^CSU2?K{ zZ#HK9Gp}2hP`9mmOUKmYX1=3)jD%!qY28wNe%AlpTl!RmUP(P^b>zm6mj-{|x!4&| z^mM7FBwl&p#Y5R@dO@O+exCBpn!bqcQ|}G&Vn;NVSJyegbO~d0mZ0onNq!ao4^E@VQ_JQH9KE9Ho>IBsr(`Js5)Sv1%BSIKKxjtJA?Dethu(BFY_Ny%S*k^N!x(;>Nj+>jF zjN#qRASGV}>#ef>Y3aMz+*e=pu&X|SPg?bbGItv~D)NY%1pe~`i37WaLw5wbrymTf zZLi=*6m@k%LS3gMs3a1yb8@pg;QSIkc1Toj^ZS|E#s_ujRO44bjn#I#zgZ4nL;Z{u z_?mMxd&7S9)qSL9@}xuXMW~%74J;>$X+*1GdReM_NJ)NIfJP(=ERPFJB zNy^UcsDMeTYxjO2hq<%W>13gCrZ3ucs*&!rh09LS_7c?~v*p*~aAxd@M;Gi6t8Z;{ z*0pe^*Q&exfSe6}w38e+JLIeqGwkz`>&0R8cPd1OOx(<^6k+yPHAG~;zXUi7YYi8r zJepT4{cc=$R>Y=Lvq*j-c4@E805lobtk>vCyq6}UjzsRa@7sTFmxL$W+iW!C}A>2kM3ESZ!dy8y8?MUMr41b z`(*+jUNq#TIwU%E>AW2IX+sXXBa})(tX6ytt%cG`$mPKhz(epK(dU%m=AJLqA=|8u z4QvKdXCn8onlIM6=w>yJE$z{sYo&izj=a?NAKp z-iqBE!%RX$c`sy+ZeKlq-HXmE?*#+O;GVE}jTmMv*dAiu;s;^MCyYe&=h(8wB8z~x zP&~h>5CL`S5Rs=56J|_nr`EeG?3M8zeWN0N2Zw5h*ig;*+Vch1hk`bIwqxS3Oe1`A zQX0jXmys-q&CAo~(#iYhTv`<)(GT+0<@YvIR_ovZ!6{P0ip5p&F-jyjPR~srdn$b! z7BMYO%Qvw(;s|)A_`Tft#gHIHa3cL8;GH6MZ^I^ICLO81c*KnlW7e8W##kjfC%6(f zd=JD#-;leXYi8AjsouALvV(aoufj*kmW=VN9j;3+llFktjgTqmE%L!4n82Kxr5eON z0Agyjur+aYZQ0`iph37!0+Hoa1d0nVw8aOiQq9&*;ZlIvTn$qqZLU)pQiWW1%sCF! zI)ykdE00kwjMzD$1jcSSg4QGbaTA?scXk=$cH}XyNf(8R+ICWF)6I?&%f=q{F1v35 zS~F;k3QQz~wN;a*vEjhf+MbSZhaLbZXoEOtNGJYdbQqT8_C5F4c4>CcMh*HT@11j6 z%i6OI`7ozg3UOuK4f_)cOr6$nt#k>@&523}wGUUqG^~K|x(n*Y1U=-hj)zNFm=(Yx zw5S{ryX8~J{XN2FP;=>1a(v^CqC8Pjxh?pC-fR$@EJ@(Uq`uk)d}EccwIw+stQ4v; zlBW$>9!vLckh*_MRxZnj%szESpPU0@YSUwck`{cs8x*kF z>939K+)CR5;LB56kP_%>UKC__3usIq*+R<3C}Ty+!X~wX63DOCcT}v7t?!|kuNX!$ zpz;Om3npw+S}PmT@-C*yq{!1E@1d0h;MK)*PgM&J!LBn7-dkz_W#@gBk!hD2SPH}o z4YQbS$50KxJ#LZW{6sv1f#f-^YpTI;|JX2-stsnjfFADK(x?scwOPGn|9%hs2AYtv6%unjY z1w!mrj@mJq94K>7k0cT*ix2x*P*+Mcbq36&mL;omr$`+!BX!A@zazXPnUo^6@3)@R zb^OTJft=aZv!ZGfa_T*Y1z!_-OObp3 z_@ZxHNtNn{ho!TyL{|awYlOLKX!-~V);lb?zyV@Cg4ts_zhT#Fw@-Zm=L}5wI5m-s zSV=5#bIz8%6{|J0>uEsb_n*VU; zHHo+OT`jL*eK6Yn;f9T{+SHx+TW{6cDK$xjyNUphi-3HSKYFBk#<$#XdFMg+nGMZ* z6&Q8F`5{&qqgD(1{X=v_HBGY_A|ZsuPv zR7)|ZY}V~Q^K3*ck!h4M>m+Qv2XI`KmmltCSMkM(7-dbKXJPg5op60h*FSu(<5=lB zd;U*x;D7ONt~=M`9o^Zoi@gd=T!v|&4@TigaPrVvq1oZK3M}nKRhY&H7PhfGZEPbc(0%NGtM&GHmm1ZJkg_QKdS%3U!b&#no zot~r0{e8pf{U_eLn38o)lv|>A##J0FXKC}gIe)H|(fV|j;h@po?p3QD!rzbt{~X9s zu>uOEKs;v1;BLIhH%T5W2BOcJP4oq%=^Zfa?3B z*c!uqd3XZKLw58Yfl5CPu;i#&aqOOyR)|-Pf=G5T_$F|k5VHiXd;L|ALR^q`QU$}d za!R05y+t2f<}7lylDm7^?0Z4PgT~N(CDEt{ah zD3TPn)f?x^sn~y&UY>q4o-N zoV9l;3;Ed5{lC!uk7tET?NYoPL*HL{#^Hi!G1O)92?JlZt&)n4Ghvd1UbF;Nmp^fA zz${(LJ{t72EBoM!8>)lvCl3i0wq^Mix}b&t|E1Uw(T_65tri@OI-YsZ#|(YFef<%e zTLB}&W(h>ym}9!Qc?~M>hqE3?a)}bVE^!@dO`quSau{W#m|X(HqpOhj#LaLGM3qV2 z=gs=d0E1a?SzBCZ{89@!_F@U488*pzlb1d_aV{s%lyYYaCMtH*+;I=N)n=SA7oQJ( z^Ptr{y%pj(#IJToY}7r58jO)ap>T*B2t}AVfq}^FwNSgRR>nC~6M+$#eAuiLh={)M zAVGG1*%5!Z#=l_wV!-B}e})vvd#M%mC9D;X;1(Ixc?x1qKFdKJh4`SY{z)NYvK&SH zSq{b4LXlG&YmRnz1 zCS$nYBKhCN+f!*&ZYzvv&lI(tXY2dw3w4%yt^5%wr>BL=-|%gby!}y?ILK} z1OH$BiwIppV2$jJ&J|PEe*>5&aC-rN7hU&5cY%F1pT|LA9nCke^{h_Z{6Fvl(h?!i z8igG%LhLTk1Liv_ci^Q3_;oXv?07xDUfX;}h5 z-rV#+&5l8ts^pN9|2Eb`oqq1aW>KaGq2dy%2Kxx{_^DZCQWQllRsCnJ2v+-`YoJ$| zV(n2G&xuF=xp?A}M*h;*`P?*v*Hc*s4oGX%#NFMQ@s@p!mfyd^{C>f5yZy4N`%yop zl5J_QN>lbz3`e6`)V9FeAmyMjzxFG(QR?rp*E=)Xh6u+-Xb*nR{(FaEWzKbGn^^FV z!zl-kAiUeRCHrMdZn?Qkn&}aBTFy9d-Zd&=PbMDI=X+M9LbIwVoZT zwvr+>Gv>}|-dI}?&RS>2RdvL%>W3!HxTEt+8fZpjj2tnlRsgwb-A0=kBl?W7|Ap-V zs#v6qV(sMg23!XFu@YAS%nh@9;CM$YXPd{@zZLc7<(@ruY-nBf;_sq~QbdR9)2SlX z9|f!9*yutEBH-I99}qT!$Y09(4meL=Fji-TH5m`h6cvG*BVrVASK z|Gyf(c;mAK;|7Y@mvEu!4&=t69^ogFNRdM5eT$F6OMFZD<2o>%#Fz0eg&!_G*lOKw zbyoBLwc%O}{0Wj<{8%tjT#U8kOvbtq@C}Fn#v_Pt<*KuyEhSJ$fmyb&HKI_7L}uHi_7i;Kc1!Y&n*rF-5BjfKdswQ1{3eVcq~>PcjOaXc1gyc3ngA5b<9GuE*kpp*04 z9(3r$G~wiUp%YEb^<-I=E68c0C+mcWVWWvCV+M(k7e#aI{_k$R z#`HZ2EX$bxX;S|q3H6dT%!oO|=l#NLhLmuq4vg`-ml(`Ek!RGu8B)A{)BOjLxQ61Z z&ho1II0xa=R1}BcV%$k|6H47+`y=cN3QBXbESlD&+HvIggjf8A*wT2(x(9)qb&p*~ zr}w;%k6K<;`~gYh9DuWfvfO{SM;*iyxYTtrKVh>3C6-oQw}!@RT!IXQ^dDh;;*WOt z-R_vLS^h@<}QjdSXaQa`QLJ-No=rv|L?yHq(FQwVpj+ZY^qlcH{c;iPoU zQX7j_J1ci~$GA6jG&kUkjx~B%)*j-15I%xvvOq{cJ-ycHM4soH-h}^E9 zA0Aclm0Hz8T+|ZkE)f0NW*e05(Q6ork7Rg{u5mK&LB1qV7{onQaIAe)`D>zC@vEUp zifVOx89(IL0M)3zN|5VhSerL6esmK0uF_iMg8iAjzCqsJMGfM|ZZxKfhJ0LU{P1Y0 z4p(9Bygi;n_Y}iepdVd0dN7(%zn&(7`MR}wJuO0-mt1r-NjHSA)4N{T*1P^eh>q@* zeY$=y3+Eeh;HVL+=GxE)1<8G%`FrVi6r##rhnT*Zo8Z3erOfeF;R$7P6LmvTH?kNc z-Nr2S`f{_-8Kq3lQJRZ+?CYS=k^Fz?8?B0KPwre3>`~RAj}PV>I15RLa9H))aKs$j zJLKCa&%WwcyU%8K+{5KgH;2G$Ov|qV?PzPxRSid-v*}ib4fj872*iJQv^>D5VT6Qk z=Bo+FkQzp2SG+b=YK@jAJ8{Rlpq+efJdDE`{##MEJ#zg;eCCR`y%@P5nm?vJjw`RJaxDFxKqhjPrim}Tkr748Fc zlR{*=r{U-L7=N_jOwnmU=tw-!JDs1yPjij3;o*WZ@0wn|P8SP;c3{TCGl;8;Qhd%?FQ$d;Kd+=~6B_I6AG4LVtLTwi1 z(MrJeh#c!G2<!p{kioY{EdAPvrxTfJbmjUDX`9<5IsgiTO|vn5p(A} z1TN7<+9Sz^y>+{a%HLBR%s6q+;0~KkUg+t?6l=)KsRYR7b}LD+5U_>kCwS^5Uk~K8 zx-O`e#`Hn49n7c~fTqOMRtCdR-UJlu(n$Ray1g`hE9IPED7X9zm=)m9gsDIaJqpi( zhsA=F$6Duf=#UnW+sWUXQC>IXSs{g;o%Ml`*dj=};4x!@uuMe$8rvGO``?I0dmAZb zKP1UkJLJo;+nwtu2uXsO?qm+(`3XwTUxSDxm6Ppr3@LDLN}byvh=~LtiI_@)Kv5y3dNagw0lKZ;KmhVlWdEoB+MF%atQE* ztz{S~BwkoL^sYS))I#6nMTyuMGo(oLq{@e!)-d)-KQiqPdt=FN(#O` z5uW-&CZ?`}8aAtj_;a2)->(@ADeCCzka3NsOtJYfN*c*YZGIB)fIES+>iUhlC$!{G&3eY zJ&;?$rG-@BH|KmEj_P;l;T?JN)XqTyvEPe1NKD}NDus71M^9R5tGez~rky73J3v>u zkC`iv;4NhlJKg1$wY0R>z9`skXT0!_S&oA%D96k3FIo-ab&=f3G1Z&tr9pX0X#U5bRt@!v7b129W7RL_+?$Vo(+IE(C>@Ysk@ykZLY zQc>{(PmrboGBV1kGDoEg%j#lR{X2|f$HV_p+&=ayygylul+GaX(YmPC4lR+nu_A4y z6^;0N-qePbv`o;WvF3oO>QLZ4hWZ^Div81mZyx;9%V+ixBSjvsZa3AG zg=4?&u%Bx)EE?$by-jDh z$aMN3X^$PaCCRN*Z@GAGg+dPrBI8Z^{;x{TKAh>cjpNsTHW}^~ksiVdNi=H8yR8(V zno!(@Rop4bl)Kx?Y(L$Vo+EjWu;}ecQK?kOY%`+r+RJTrdud82i>27c&vyU%=Q)n& z&*%K>`s4cNI*#kO&hL4CKj&3?$Vg~aRvb@r36R#cyr*dTL-S#Z>G@6Dz8@mmK1~4P9C*MW0ZLv&1p#I8+@95a$cTkrI+X zYyvQ?r+n9dyCpSg^9EE8`QgD*)u(dC;Vv%uIp6Z>gE?=0otL`kb;<0BFD=s0|;12NOEV2Yvrq){M7k^DM;o9FiWJIq@qUf>T13$INBovdB#n-kxLZ z;c4#+k}HXX)LIO?sa9Y5k&zFzEO(iU?LzWB&RWR^vG2Ro?H+Qsx#YWmWWV9CXyRg< z?XU+1J5bLm3HOF3dPgG*u3lJ65Oc$JC88GLj$;sk$jE9gOf=zbzZAXCM z67d5@jI0mGI`y6Xwb^k3?EV+8 z>=~KzTomv`(A8TxlPFfGGPee&jo8PyrjASsXX~}gto?I}1YI`%!7(F~9RJ+rER`d|Ss8PcEBwfgPL-vKsP= z0_xgK-CTJI5l_*(we+s_NM3@bO*EEsq(X2V9ZF+17Hp zs(N%!am|HBLA+#L?NsJi+e#C)4?Ve4e?nOP5$ytofj_I2OW#N>d2#UlsotaLT)u;u zB%p6{qMq@@a_~`aRY>t|DZ#N`vV`slTnh0Nv~vq!TLfFyVnD@#w&!^~t#m^q-QCs# zb7nGft+;gl3+vAc)}mX+KOWn|*^uS~S&O>|;&m=@jMA@J4QH>Ls|LRtIpr7?eZx}* zD!?I_ws^JzC+~mZqy15>3J*T+0E)ZA*1&-@cO9v1Q`a&g14qeETrC}H9UE{TKd4!U z@X_?jF~@ClGElGU9drO3uSZTqTO>mJ#}Cn2y*xeXL%#`olkLG1K?^7?Ujx}bE3jwE z{GeSs%#jS54Of?`?1;k8{J1ynTzJyF{}zyPA*qa}JYnRt^QYtZ$%jK=OD1?_^0#(Q zI3X>}4)m5O7?bUN&!w&UudLFzhG5KSh-L?%P6!}1=`PiP8TlAUQO?OoC`$4^qSld$ zRIS^yp=?N|C!~)KF-}-opj^bVp{IiH>L-qi*qN82ny2J~wCG{fmL-%Ipb0c)0fz^| zp+O6_tI8a>Utd7zF|{>7*i=Qs z1~mL=7#m&|%NAOios7wSqDJ~|0@i(!E+m;I057m*4fQU@!EWd}wj(!actDGiY(9!7)Esy{|SYQ$Ku-*6gP+7Lz#Q z;So#YZB$OvLk4;FRg>)&j#YPua(BFHp@=~4GgLQLF37;i2a;&pR+||KE0a0vYOv5% z#SRiC3{dzAkKH7=y!2FspDy)H`{eKt3U;Wf2S1R1lb4XaBR8{eR2d`6l+XCdjhLJH zRM&(;(bckkWe(R+NB)hxX)#hiF?VtY9$NrYaH|>#iu2YT>ifVGaR3C$HASYncI4L* z2w8_D#-V$Jl~w#WpHa)mdMuF+*~yb6^(KMTHwM)6#zH&tU})ze_3dbI0}C{NS#ojm zW4hV9Ad2cGEzv!w9!r|EXW>*%4ijGsx$b*k!|K#5A(G6*IHLa= z`qwNWs`#3+Bxdqi2*z)W!%O+knC`F``@u$<3GPQcep#5BlQ{}y--Jyn@2+~)ZHuZ^ zkgdhe_>9YDTX$c4n-R?7*@RznK!bO?aAzlfe0)d0^AFZRL`o1j@P z$WL_#HkW`bP$fdGRq+G?LA?-7XbCVx4%6vSY&_t z4C^?)c_^z82+Kph-^Z>%&l-H*l{S$C)ol?O!sGpZcy@U1O_EU?vo=ff)?%3+`l}ew kpQ@X*#E>I7 actions( Hero hero ) { + ArrayList actions = super.actions( hero ); + actions.add( AC_APPLY ); + return actions; + } + + @Override + public void execute( Hero hero, String action ) { + + super.execute( hero, action ); + + if (action.equals(AC_APPLY)) { + + curUser = hero; + GameScene.selectItem( itemSelector ); + + } + } + + @Override + protected void onThrow( int cell ) { + if (Dungeon.level.map[cell] == Terrain.WELL || Dungeon.level.pit[cell]) { + + super.onThrow( cell ); + + } else { + + Dungeon.level.pressCell( cell ); + if (Dungeon.level.heroFOV[cell]) { + GLog.i( Messages.get(Potion.class, "shatter") ); + Sample.INSTANCE.play( Assets.Sounds.SHATTER ); + Splash.at( cell, 0xBFBFBF, 5 ); + } + + } + } + + @Override + public boolean isUpgradable() { + return false; + } + + @Override + public boolean isIdentified() { + return true; + } + + @Override + public int value() { + return Math.max(1, quantity/2); + } + + private final WndBag.ItemSelector itemSelector = new WndBag.ItemSelector() { + + @Override + public String textPrompt() { + return Messages.get(LiquidMetal.class, "prompt"); + } + + @Override + public Class preferredBag(){ + return MagicalHolster.class; + } + + @Override + public boolean itemSelectable(Item item) { + return item instanceof MissileWeapon && !(item instanceof TippedDart); + } + + @Override + public void onSelect( Item item ) { + if (item != null && item instanceof MissileWeapon) { + MissileWeapon m = (MissileWeapon)item; + + int maxToUse = 5*(m.tier+1); + maxToUse *= Math.pow(2, m.level()); + + float durabilityPerUse = 100 / (float)maxToUse; + + //we remove a tiny amount here to account for rounding errors + float percentDurabilityLeft = 0.999f - (m.durabilityLeft()/100f); + maxToUse = (int)Math.ceil(maxToUse*percentDurabilityLeft); + if (maxToUse == 0){ + GLog.w(Messages.get(LiquidMetal.class, "already_fixed")); + return; + } else if (maxToUse < quantity()) { + m.repair(maxToUse*durabilityPerUse); + quantity(quantity()-maxToUse); + GLog.i(Messages.get(LiquidMetal.class, "apply", maxToUse)); + + } else { + m.repair(quantity()*durabilityPerUse); + GLog.i(Messages.get(LiquidMetal.class, "apply", quantity())); + detachAll(Dungeon.hero.belongings.backpack); + } + + curUser.sprite.operate(curUser.pos); + Sample.INSTANCE.play(Assets.Sounds.DRINK); + curUser.sprite.emitter().start(Speck.factory(Speck.LIGHT), 0.1f, 10); + } + } + }; + + public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe { + + @Override + public boolean testIngredients(ArrayList ingredients) { + for (Item i : ingredients){ + if (!(i instanceof MissileWeapon)){ + return false; + } + } + + return !ingredients.isEmpty(); + } + + @Override + public int cost(ArrayList ingredients) { + int cost = 1; + for (Item i : ingredients){ + cost += i.quantity(); + } + return cost; + } + + @Override + public Item brew(ArrayList ingredients) { + Item result = sampleOutput(ingredients); + + for (Item i : ingredients){ + i.quantity(0); + } + + return result; + } + + @Override + public Item sampleOutput(ArrayList ingredients) { + int metalQuantity = 0; + + for (Item i : ingredients){ + MissileWeapon m = (MissileWeapon) i; + float quantity = m.quantity()-1; + quantity += 0.25f + 0.0075f*m.durabilityLeft(); + quantity *= Math.pow(2, m.level()); + metalQuantity += Math.round((5*(m.tier+1))*quantity); + } + + return new LiquidMetal().quantity(metalQuantity); + } + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java index 1d339be8e..603455a03 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java @@ -56,6 +56,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap; import com.shatteredpixel.shatteredpixeldungeon.items.spells.Recycle; import com.shatteredpixel.shatteredpixeldungeon.items.spells.WildEnergy; import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.watabou.utils.Reflection; import java.util.ArrayList; @@ -163,6 +164,10 @@ public abstract class Recipe { //******* // Static members //******* + + private static Recipe[] variableRecipes = new Recipe[]{ + new LiquidMetal.Recipe() + }; private static Recipe[] oneIngredientRecipes = new Recipe[]{ new AlchemistsToolkit.upgradeKit(), @@ -209,7 +214,13 @@ public abstract class Recipe { }; public static Recipe findRecipe(ArrayList ingredients){ - + + for (Recipe recipe : variableRecipes){ + if (recipe.testIngredients(ingredients)){ + return recipe; + } + } + if (ingredients.size() == 1){ for (Recipe recipe : oneIngredientRecipes){ if (recipe.testIngredients(ingredients)){ @@ -237,7 +248,7 @@ public abstract class Recipe { public static boolean usableInRecipe(Item item){ return !item.cursed - && (!(item instanceof EquipableItem) || (item instanceof AlchemistsToolkit && item.isIdentified())) + && (!(item instanceof EquipableItem) || (item instanceof AlchemistsToolkit && item.isIdentified()) || item instanceof MissileWeapon) && !(item instanceof Wand); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bags/PotionBandolier.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bags/PotionBandolier.java index 7ea6c86b2..0effb0e61 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bags/PotionBandolier.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bags/PotionBandolier.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.bags; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.LiquidMetal; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -33,7 +34,7 @@ public class PotionBandolier extends Bag { @Override public boolean canHold( Item item ) { - if (item instanceof Potion){ + if (item instanceof Potion || item instanceof LiquidMetal){ return super.canHold(item); } else { return false; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java index fcf172ffd..e1ca64740 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java @@ -257,6 +257,14 @@ abstract public class MissileWeapon extends Weapon { parent = null; super.onThrow(cell); } + + public float durabilityLeft(){ + return durability; + } + + public void repair( float amount ){ + durability += amount; + } protected float durabilityPerUse(){ float usages = baseUses * (float)(Math.pow(3, level())); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java index 1273262b1..9c7d5f301 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -466,10 +466,12 @@ public class ItemSpriteSheet { public static final int SCROLL_TIWAZ = SCROLLS+11; public static final int SCROLL_CATALYST = SCROLLS+13; + public static final int ARCANE_RESIN = SCROLLS+14; static { for (int i = SCROLLS; i < SCROLLS+16; i++) assignItemRect(i, 15, 14); assignItemRect(SCROLL_CATALYST, 12, 11); + assignItemRect(ARCANE_RESIN , 12, 11); } private static final int EXOTIC_SCROLLS = xy(1, 20); //16 slots @@ -522,10 +524,12 @@ public class ItemSpriteSheet { public static final int POTION_SILVER = POTIONS+10; public static final int POTION_IVORY = POTIONS+11; public static final int POTION_CATALYST = POTIONS+13; + public static final int LIQUID_METAL = POTIONS+14; static { for (int i = POTIONS; i < POTIONS+16; i++) assignItemRect(i, 12, 14); assignItemRect(POTION_CATALYST, 6, 15); + assignItemRect(LIQUID_METAL, 8, 15); } private static final int EXOTIC_POTIONS = xy(1, 23); //16 slots