From 25dde91a8a3ba220f7470221826ccc51a1d5090d Mon Sep 17 00:00:00 2001 From: xoxorwr Date: Fri, 24 Apr 2026 09:48:17 +0200 Subject: [PATCH] Port Port ParamCrypt to python and remove dotnet shit --- .../params/ParamCrypt/ParamCrypt.deps.json | 23 ---- .../base/params/ParamCrypt/ParamCrypt.dll | Bin 9216 -> 0 bytes .../base/params/ParamCrypt/ParamCrypt.exe | Bin 139264 -> 0 bytes .../base/params/ParamCrypt/ParamCrypt.pdb | Bin 12464 -> 0 bytes .../ParamCrypt/ParamCrypt.runtimeconfig.json | 13 -- .../base/params/ParamCrypt/__init__.py | 127 ++++++++++++++---- 6 files changed, 103 insertions(+), 60 deletions(-) delete mode 100644 src/soulstruct/base/params/ParamCrypt/ParamCrypt.deps.json delete mode 100644 src/soulstruct/base/params/ParamCrypt/ParamCrypt.dll delete mode 100644 src/soulstruct/base/params/ParamCrypt/ParamCrypt.exe delete mode 100644 src/soulstruct/base/params/ParamCrypt/ParamCrypt.pdb delete mode 100644 src/soulstruct/base/params/ParamCrypt/ParamCrypt.runtimeconfig.json diff --git a/src/soulstruct/base/params/ParamCrypt/ParamCrypt.deps.json b/src/soulstruct/base/params/ParamCrypt/ParamCrypt.deps.json deleted file mode 100644 index 3d15a18b..00000000 --- a/src/soulstruct/base/params/ParamCrypt/ParamCrypt.deps.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v8.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v8.0": { - "ParamCrypt/1.0.0": { - "runtime": { - "ParamCrypt.dll": {} - } - } - } - }, - "libraries": { - "ParamCrypt/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/src/soulstruct/base/params/ParamCrypt/ParamCrypt.dll b/src/soulstruct/base/params/ParamCrypt/ParamCrypt.dll deleted file mode 100644 index 20ac7fd4d4dd1153d089bd2c2716580340b4f618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9216 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 diff --git a/src/soulstruct/base/params/ParamCrypt/ParamCrypt.exe b/src/soulstruct/base/params/ParamCrypt/ParamCrypt.exe deleted file mode 100644 index 38ec703efbb39a57453a540a4df3b497682133f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139264 zcmeF4d3;pW+4yI&Kv?g9MB;*s8Z|bEk+=i{G6Na7BQp{z2r6hSnqozakO?4*z$C)- zI+phBV&B@kT1&LH-Z&~zD+Cwj_kGU2cQS#XynWw4fBAee zcRTl-=RD_mp7U(y-0*elT$wJHD~tbR(&eh>D1Scn`_(^fJRUfF<3QKreO@@T-W_`3 z%xQCPUFfY^aL2b7+;qEl&Q0^@-%;)T)-B!zk@?~n!1Xt8oikVJav(1cxLh~i(~HZOzwO-XaGmAqmoe}gu32uEYqxc`VhHCR zb?)QLI?r&q0bh`(JCxvg()d1)kfi@-wCW z$E@-pr~LC>+`_MIN9C&*Zv&omG4%*X?q>vg`Vk>$t9RuE7Uow)CYw z^MI;vG|v?ZLQ-FBR({S5p!Dj-)C%2rO^<%oyXI2e2FI}$Uq~1KCqPKK5wsdA?Y^kmrSNl|rqjY03fOM}h zuZJ2J-66FFsEs;GsLv<$QC9(Vc~f=eoKRh7OI?S*P<7=|m)EWl5W7l8!tjZMki zxfK@e2>tl3wsDc?;Nl|P=yO7i4VT95rLp1$n#!}#Fu_w9%an$$r=jGHT@6WN{5kEt zrW>0Wr|CDlUD}KWJ$`kL9_y#a^&D+bhFOYm*NrBt8tXmhmr(;1*^%#3qHeFQ1vWJ~ zkJK@3eB;@N=14t<^_bguU5_^Am zx{t!oCA57keoi|{-pO96TFLB&siWTi^jkf>|HfeTeg_YAMk^iD!oQ45Am(Qcug0jeAws+Mi=L4HJM?fC}_;|=+86I@^`mhx?fwf7!jjKKi3wW zs>fz;cuG@56Mo*Wd3s4T?LSqmLHjM5UfNt!q}Ovp{#NSIhVyh-?##nNvMqXDgI1eh z23Pl^ZEbo??@U~-8=X&`OmV%mQP;*F*5gy$dfm22cF@?I7^bf}tVElJJUfpP+C2xT zAn`l%g-+gx1s)QZ^w{#}L-7fW$g9%a@5jnGgrC<99>t|dpc!a2?fmdQz3z?ba@}au z3jw$@W5HQ^d_o2Vtb)JXG17m3O&!Ygt}~D{+?IT$b+@F&l~xIB<{Kwb7a@ z!Vj6>54&7iL3m%Kc1L5Swy-s)QrA{ALK>BRZAFV7pS};m@Fa6jneBG1QaTiFt*TlEu>9qgt%&jYGb|h z_%%6-Ffu}*YinSa8}ORVZ)rS@XNz2vLdJA09nM210Ouc>%yyb511I$~-=XSZG)R!(V z#{;h=FGYtHdHH};{8jQYZGL?n5UZt1gl8PFZ5*~xqQ@uam@@|QAfBD2y3m`m!JKKH z3G_mwajZ82SsOGd?i_M0Xm7|(~&_gV?YZh zG2Np*IbaiKYxN<%wTp8_+R{Ux2(BBO{4iJ?F-r@<<_3`x+MrAn0oquarw#YHg2{&Q zC1YF>Xk)i->@XjgB=}FS!Wl{Hn3B&2H@U0(Zu9_>Y5vQ4N6pIJi_84BDhi6a&tF%} z6Rf$R#}r~5dWpW@eg1m-4Z*WaXt#s$qvwYRW($2gYJR`Izr2&(dYiP;eSWavk7s|v zo1&7$+*VIS1vSq&rY9Xqzde&!0Cq(EIY}ilb*&8O)qG|IbC7}6BatPR2zeDPH)J#* zLaR^Fjhu~Q2dOy-R^D8oC(n7pR)d>_9vF=3{JiNi{MX2o@Dx)*gDU?zlR%*OAXRI% zOm(i%=!>*E_|x@N1<%bTpGc*hh{JEoJSGrmx^Zm*LNhWzk6&Aqfb55zz1r<6-m8Sy zvVS1FLb1r7w+1%2I6l8M&@9JYm1VKWK2G+_$-A5!*cvz_Pm)^$z0rf-&}va_Y3wCc zPiumD%3_Ohz;S;yk~9?7%+t|_H4n5o$)kCo%Ry7T>i*``{UZCm?_G{; zn>168U7@OOr)p$OQaaNsnfu?wtahKdf5^xV7KDwbHt^pIf`^Ten-cc5&-@ z`_^^VE#{fzcG5HHc`r{wM+u8jWFNcgT1>6c2hJk)W|RXzXbB z^O7PkB_H(IJew$#B@r|ZqrGSw-h&>(rH$1WR#sMO!)t+1kkw1u@JgAs0WyCP;`1hR zuf4|Ys%?n$(W6Zns05L}>c+hM5}T<}g{qZsKvS0n{}0-02aB~0)hE`TwgDY%ss}{1 zFL|FnEBd#4*@-|5mhP@TPxzrokKgI3T&Hd5ryH-DVah7S-|AAk^n$J^IaQJ_!qe)% z>BAGR{}RfcQ2p?G3Cc~;+G+X7Dfx+^Z-{{MiRMu*V-n)3++QzDZx*z{6B~G1*RWCi zX_cD3UE6?au(?Fx--kL#o#kqbJ8T3j76Pc!#RA7-DGAQ*&0k5g^1j#n<9=z|z7xMYqpkr>N8hC@}!Dw`IIg`0Vwu-)ex{*Dn19@4DdRj))+LNu&Z&4^NeHVp`Hj%iY`~ve1MoN2f zT7CgDn-+LUdlC%^Xhmsw5F}H*FI748C;dn6iPSf;lLxxm(2ZyE*HLTG=m=;}eq>{2 zjvo7C{z}!DAP3+B#YvgR9DdL?oTQ)%8866VH8KU}>xdNvlpep^4PbsP@T#!K+8Ief z!*+!R-LR_`va&(`-~$D+4*y#?QT(FlHM+!0m$UnQTP7K|XzZ_5_eJx=v^Y>MbIas{ zWbQxYES`N2EXhpdJJ>9?VTHiYT)SQ>w`kb5oo)N4N;|(gzXF7O_#y9ENH15D74sn4 zSdr3m7zk~~wokOXp)PxJuUsed`N}aFuE;?djv{mCIHX#oc6W8YSMUObCwp2_`IMQ&$79%e+v! zfL*RMLWDIUQN}lKx>#q?_Z9ce)Qxt%xk;%`(3vn#bj-DaUt_=>AG=-9U&y#*HfLZi zSh!U$ZCx}`j~?!=Lw@DKc-9%Z@roY5q)hJ_Z;RY6 zDa;H!W|9t9mM2byh6Nn2ns*1h_YqUi0ESaHI&|Zjyr;#(sv8qMx&i%G=g-t}BSjCp z7o3ip!>z}z@+jvH^TMT-vC}6?#aAVUVHMqU7mx_kih#0JlNZg$u0XGl*)N$pbBc6k zw{E)%ecNx{Hg*WUWNeH4H{LKCWu}M+46XXJ@h2wkbY?$AbJ83T%{f1-YggV(J<2rU=I9*bg}L#xfr8f?OM8 zU*!-o7Qzyf^Bi{UTy*i3@vO`A*aU8WB4i+gQ4H7Bz=h+2#vb!LAb|Ohu3UO39C&`vD#^j@dT-6a@QDtRAZ0v4)ZFh2pZF) z%R73D@1hm_><$z+_>GrC%-KF3?v^RG1aizTqN1Dg3*>><|5TDFP|(om%#^tJO zhzu54X}oAYQRs55cekG*@I{w;&ZoK6(n7%igM*R1MKxEO{~#6c>>m5F!Mgm3y1X}k zy}BH**nZk3mw+Sq0h|uGT>TWkG?9l3V22P^KY#uCax4BrRk?YZ0!*v>zTAX>M8M71 zrVT1%VB@|o)bx!8+nJ@U{*hCa)N`7$X_ZRVda2ZhN+ms8IzsB1COSNU1>A8cU0oxe zHtOPo5?@qzKh#cWW~X^6mf(7KA_M=Xaj!LIGXC5R#UIF*QN{N0V*6nK{Qbrz^S>{4 zEFKwu?A3Ysd5Q@1SjY-@_!#Bl4}@ry1cxbZrP!@`{`!Fm8@bm9fY~y$0oe=*0+?l*ek=IlF^_KL?ePIQ)EIuEB5gV}xf1^xe@P!Duzwl_I zoD0YP1iyqTQubeJ9z`7y4bb=) z71P7?*bQ}k7F>k2&_~b~yDcS*Y}DDZ_SZ51V}U}%(;Z3^_#U@X($*5QbnSOSZp;sH zyhO&1P<&3F`A??WkRiUa$(|s74WTLAvERUy!`+S(<7#V`!&bvMnUg2)HfQN)xvo&H zm8;e+aat2C!*a{gS}CmsjSqCoJGD+vHdL049x)O9O8n0cQ`G<5x%_IwSMm#BTF@Ah zkHOo2zFxY0p%-HeVuSmzTwn+|CzB5L*ZG;JXC!iDuzHWe@G2X9@%#ulRPW2Hr}Xe@ zS?ppx(Jx?NO7AdtUqpM!EjDPF+&F*J;43w?)wiP;N@u0h0vFXw_(9<(Yr#3RkR`y` zke#M)9OJss#uj^P$E8{VWH68mE$Rg8wp?4nGoa- zZlaDPbKm2B2vrlQ3LP-roWhM!4ei%5d{W7S0wwaP+*~`tEnHnLcR1dBip%BZIM*vB zm@4LpCALhIyh~ME9UEPDGpv?mkfy#Tw`pHF!e$8~s-;Atk2*b)RMnQ4FgN=Al>#7B z7ybdYM4&{2<#o@F(9xilJa8a>Nybdc5P zFlkiIRU`YMd(keX!QbGNN4uaW%X5_K(LpnhgU{bf=~&>e$RiXHnP(8g3~SKXn#>(g z#%$Tzm>9nD6LAr2?>Wn|yApCJ;yse2GgFEc)lfsv3zEkgMv#Ro0&63fIT zmWdvVbXLY9Ca4oH>wwL73QtWOCuj>cZx*u=1}aJBKE|!FJ9tB@J;HBY!-^bjLj#sY z@0Ddp)OhZ9d6No0U&-)p)m^UkeH2svNd3^?gWCAbVkC@i6Bs+n#A~pd($iIQ`>t?{ z@^eWtH{8|Ak9%w--)iMY(n;b<;V>v%_Z-L&1CMgz$Ff$+TVDP z9tT6lhYF8n;y)A9l~Jq^bXIbu6CGO%UhfCT4_Y@PYyGQ^L|3|2YIVPYBtr2Eepn^g z3gyo=zjH{)5VKAyD{ZR2Q?#QBMT)Snogjghq^HqhZVyqqMOEf-fxHKJJei`e>6&LU zPVErjii%>VBvi(VA^nxAz01?vLtv+AV?9R&uK+DO&4=G`q}Ic9yPj@0*xi0ukH^=6 z7W0*1BBbKeQ#Z2I+>oQsnVNO5EW^_)a)~`Z#iy?Y`45{{|0|iq3w%cUOS@3x2uGw| zs@~(&U#BS{I2|_mthaX0IjCD*eF;C@)fH{^lbB;YpijH!=R8Q}-Uco1WVC*)M(cbk zVzesZOhMsX!R}%@xY8Nyxef%MoDKxOQOKxi6tla1#!&!kby_yK@?^(Vg@JN09lp;w z=0c!C+o0}O#sYJ>{avd_mF5}nJ#`vi2`26G6wl$okJW>4o>cRnb~Qe#k^58w$;<-W z=;!?xT%d>zl3pn!4c+Bzj;qyQNezkMW~>dPBKc$_0d<^ z-hE}3oTiKWb4Sdfa@?l@?L9O;lDH!eSr>(vKp+@NY)3C8QSh_i+jc>5V)b5K6 zZ*p(4{(2B z_}SS9+M1w{6GGd^j3UBuW{8oiPqltZZtQZ-cvih7^r{j?G%CUVG}!obpE+!jMW{n4MkG_oRwbyT%Mkc9 zfLN`JSvF(9l72B68i{Hso45@Eq$gi|B{AiwQF-*dl#G;d-XsDA(cGX!^QAqDGcb0n zWY*RU1zdB`t6zbx1?TpNs^x^7K^4=OLR8`+rPa$Q!B7=ERCbR!5ds2_2|QjRu4Nkg z&4)@}pWR*lDgRuTz$Olh(p82ffJU+`zrzb|3?g1w?1CzPyO3?F?xiLAIpS-L_)L4GMZiF99iJm^% z>OUzxeUiBT?nifC>*&sOR6MVP70cyjf(-MKQ$)^IFCE-3Bk|uR&Qi$Qksho(a zgnoslG#~DG@R&;1er=^&ggZXjEB)xMq-mlk1=d=6QuzL3)uex?3nFXGI%(}_S{t-r z6drytmwKYJv#hb5!#J7~VQ8VVqpYP#Jaeq2wdSMe^w35x)rL6Wduqc{0dmiiHr_tj zYNNkxk%`9&rtc?h$T=gh)(lG<=^D-$#CkWXt-TU!BwY7_R=X4_>TvEqP&F^%@pxwmIRSV(2&xILH^LEcT~ZoU{b4ZWPhIwhkJ4Fc{w!kLc4eXaS6d;vie z>oj@Id<{=8e^4fB&X_H{0b^?rS9yFunAgpM5^-WMY&P`dag4$$Y8jisJ#Ed8mvQm%NiJ~iF9t(YZbd1jx`BabpNN!pJa_^an<8$}kQDuZ<^#`;P80lB4x0hoXmZIGiAv=CXIb~DHhoeoN>mx zdz>*oy(bAxmf?qhztfyagWU&7LcjJHGH9F!jaLXEn9qG6la5yREyP4(NHTYz15IuP z&{P188mK@EoZiZR8}a4Ml@p@NZovugFBvR}ZH8OSOS~4Aa54qj9L*x!B8tTVyh@@} z1X^vKBHUtROJ24!Pokh<{y90Dr981F$ur?#$#m!fT+S`U5NM2Wo0@fqxOOhW{h5Vc zNIWGzn^rAnO^Y~dPzqIyXTnKBHd$8`ACwSHT6{;qe-he4Ju#MdRVyLH84E5!z|82W zUM8|f)R5-(B|>ffW3Vv)<4fh9&Hpnvg`pDCA30Ze3eymCJ|He{6ZL0$i~lK6#=}Ol zxGGlQ8IN}Mii{))bgjcEg|Rr265V5Uzu z$E#zgs$&&(96jT7&Bfh#1v2?s+k4Z6()SUn(qmi@U=$gFKRF$v<_Xj~Pu2P=jvn2J zivvl#Sr4hp2l8Da(aD+>T}QHJ?ZBEjNz^qfVqp9KtMl=NF3ZnTsWDy^DgUX2za+zO zPI(q?yO)?3^;qqxbHxK~-7Sl+ma8)E-Yj?H+0R`gg(j@TcwA|&LS^FKS?WdZ8B5#r zx@7ej-I$`12hWviR0g!*8#yKZwL!Y!(Txn1CXmcMLhn@0rdkfZ>Dvz zNtM9uzr+0FW<_Lbu|>5=TGE4X`+5C0Sg}jNux{YlBWXTXm8ZuRd#xOW_}pLN|9cSp zYUfuW0@1nM3)k{~Sms^DGG(#lyO?GUkX(L= zxybNXUJvbBa#vHJ%=f!)x9U3 zQY#2FJswHb$l3Epz%+l>vVnO*s?pDTFB(FM{&2c=o^(s|T-vT?Jc+Kf^p*t!6ZLxQ zJzk9Whn%g9{~HN)SQ-BXQWLJq*IU#PBGPL2Qx{eoHfdWMDG{BCOJo^=@-3t-Bj~Ca z$k((95;C_%ejYTM6WOLA)x`pu0x!1wJmk7)>NKS?8Ez&yIN{Tijdo|P%&72iz4SG0 zbxf)%d@Weoidjz@XFAf6XF8%;GZzrH&^!_1H`99`!}_F~eyu>cvrq)e8_iTRC~|-_ z|KSh>TquhLmiJcD9%3Lx)gJKhF7w5|CX*uf&miDv=wm9Q%iOavB10*adMA9qPyS<| zU72_PCS?1*A&~ij4D!qllK%s#1#I#(roVekcgdUm+U~AamA=1Kh9G>Qh`9#NC4T%M z!_t*IyR^iw6)fxsl0=KlW0AnMV!D~1?2x4bVfjt}^Ih#XUJDs}L&j_VgN>w^AM{sc zRcAda!Rl=Xn=-2V`43L0%Baq=!`E0+9!Y)l)^5}4@NWo@)uI0|qv|=~%p6rZXiOjo z>#EKw-j+C-3!iA*WEl4ij-EVsVOB6Ud2ZNPNC5BZxkT@R#-$Pi+S3^lGK@-HlpP|e zW7%OuVzq#gE$@Fv$>=NNW3G~ir^&;UgE8LTCoSrGKGS0aD<+i3Jo3sYdF2AGXX@lnt)$vY;9tkMv>A(lHCpgIk)g3ilf8$l;ZrAwZXzF?zq zZ{lPwK%<96a%4S@z8W+V1qOX8NIW-WZL*7G6gPz8 zLkdErd$cumJP8BT$*NX0U=h_lMr?2OcP7U#o~oXlEu%$lo&~R7_#(iDVmZ=B27^O+ zEJwY^uolAl?ToM2ZIveqT5Qgm*STf_wn zA}GIfx~tJa);G7CC~Z* z#CXB{HH9Vao{2re!ZQr(7tMQmNt);oB+Gkb6=F?x zu>x2%t9qzZ98!c_VjarMVkHToQ0Qv{j4DK&rx)&0bg%9Q<3p|r6>d@zNb2GZ;d^)W z2)d@$^?|!7WEE{CtLQM65vQHQ7xC_4J1qFO1{taeGozEM+({Zp9}gJ=8IMFi;-mRY zNJ1dO9gNvLG3=_z9)>q&DwRzwDr+(?*mBhTfNV&gE_N2DR$f}SkuF`##4R|_lAO9N zEp?J2BZ0CVHrj-|?t4f`!}3|*InzqRdsbLQ@^i|Clq=Q+jfudo zW)pI;P=-Bqdsh_crO4UObuIjva*K=@7c#b(jahDx(@QVhe?GIqRX%-Av!2Mx@-&>j8`d4yH|L7Zm@QtvC z>RVo=Kh~ShmD9)nMgPbM@G8p%kbFhS-0P@c3AD=6mPj9Ktp&?)gq{^i(j7-cAWVhW z99#(nIdajWrmpqK*H&QTyc?v4$Qf3p`XTP4tfsfllK%H#HMQ`-wwiXR_S&C(79vtD zi+s#0BelS*lV^ZkLO$JewL;i3O;qO&7axQQ7X!f)%GzN;CK-6hs?SaDfNmu zu%B31fQssyeceWa^GsannxuLN|Kb&%a?kA8p?eqj1{jwC8;lQnOOezb_V~ z6cK`)3y^nGL6DS~aQv2>VC>@jVElIQ6yaVZkAH7CzPun9yDS`!6rp@^r-XlBFdos1 z8)ChJ@#P`NEEXu|f96vjdSi}zhTa>kkGjpDKPKEffqG|Ggk!f*-|gOTY&^pZB@uC1sue$S%|7+>1{&rOaO)Ip{z@y{6sxO?Km^bI-E8%lf{P z_7dDz05Zm^vTpPIC#0W9A*V=cy{PQ^fWpF}zCDCz^=9m7hX<55h8z}?_GUeL zS6=UsvArfUWT0q#6Upt*ll+u`5MhzXX4v@<(~!#i!wY!&U_CaKq*E*0?DY>t%6c`F#f@|9)*|J&oP)JI4j6XVNDh_EY2Qr8v)gU>3 z05VBn@agf32}3NCS&R(Kg{hSP(oj5Wus}i%tJz52j{;?pS}dbVTWj&yX#oF)2mr5H zsG{ex`9K;x3J*Z!pduX(!OH&_mP<|umS6T)L*&3B04aUW9;43$M-0=gXsLP1hC~rL zvAsRYWN(l4NGKHl%9#SrnHD%AArx2|$E}&RoKEKcK((d%FJtbpkPy$l zZUVOZ$GWJWubIOjYaDAbS#0FK&g$cyU2KmN?C){1_!$pUF1GtNh;_787L6?ysBm&E z<(5sy5KRgf4ib)r&sZX`j8w3=C3*O@;{bH_@c`KPI#o5h%-^VLq(9yGvFm-7%nBndX=5S@&GCuPahG32a9NIXD-hS) z0?TL9Z3z`jp2M|?snZu7lAr`o8p+c1u8!x?Ki9@QSQ z+Ck2*sZ)^S+@d{G+Ixrg?z7vwtE)YWzIK_X{SVqx>+8nbb&c$*tHOqT7g4XC@ROe3 zZY{MFOAxJQNtF<2{8pdHlmPE4#d82sALBa*SKXDQOo%lrmbfxIxi=Nn4sOrE(iN9W z=3a-@y*;t|b+Eb~zYUSSw8|W*0GyCV(x@^&9Q!{fCd&5Y$l&pRSE zm}R{%dB|KYJ0Hy_&YV6vGCsDbD8fo&Evsbjhm1*RQ`QX9v1ptOA>d?Pq>HdKnhBG! zyNl3b{PY|QK;im2*ko%~v4c&YfJqKrc(=9&V*~1ghQ*Oqq73VQGJ?j|Xj`u_y|mibxR?^Z827-zNLKM13184Q z2S)_sSDhCueNnrI3`X{WAe%~J1_Sl@OkBNxZ$qSaCI%;SXAm0SDR%5uDPgpRrBkm+ zzy5ScQf#*dQ51#$ zdQ!ZVLoo=u4{w@(ql~54dG=!F3f=e&J5p9@xNTW=(pX`~EQm?nak%jd7RksxeNI)D zp81g;n-B2wb7J#{G*8TPWA*9H6TK>ZAU2;E_Iz}n`6aRW9!rs}c~s#OMfT-~IYW`v zV>eL23P^Q+xo%v~^(KQs@u4V}7i zk}5x*-EjJG%ihXjh;kaZRV)ZDVx4oYL_Jqvv9HiwkwL6QjkcW>ZOMvF^qf6$2->-^ zHAINL!dgsp8wR#)q;Nyi!&&SW5FfUV?AOGQhch_+Ij6{_N93TDwW=m8ApZd7rG1IW zvpm^+1Dy<&d-G4^1-Ws}w)8=<^w9wkYzA}pf2BXM29EXSYFR33Ysk3Mqd%RBf*4H! zZNp(%!3&Q_uCkR7r%Zk0R(J^4ge=>v2*)egyGX6q^Xk#}#{@bvkz%DHqme!12(w^DqvTNmH*L7_WB94GmWFB6l}3v>lm(5~&kN{gb>7IPJX zR@kgYk1vMJ-fcr}bS84lTjjpd8O~(4fJ!u{8}byN?b4%P_QuFIaCW|Aj`EdE5*Mf(Pm`}o1vWH6PmYQ)rBl!9hf`4Qq z*h>^&5KKrp4Z)>Wyvi_T=c}$zl{UVeaE*-TqM0(54+o7S2`!mBXAnp-U%_py_Gq~Q zn_(Y7v(bsb9h(oPcbSiT3<80TtDUXthy9I6j8Z&^}>ky>y?=&CSPf z^Jf+}ccxK*?0_cROdhqv&8>;a=>@vDc|?lXI&5Nl><*$%szN zubM(~b11gL6OPM#z9J8X48_L`4raa@ieJnoi}3ihx&b=(nKP-Igc6nGv(vniD|+nk zydURGx)FjI)6VEuus zV0^mUzcuSZCzX2v?;KwYFQKW#S;<_t?1v>{cy6}}uj9(9%ofLLajHtESK_#9U}lLp zzU>him@R*@2S((J*O?-{UDIROI2;o5@gwl7ts&Blwjq2e>|)Q3x-b*m_0GRJ8?yMu z;h!(Qo_`*Z(pc>aMe&i?%DQ6*WrjSHLAe1{WZ&fY>2OdD>Nke-E_2ieO7`ZLD&E0! zf!b=#iz)u-$$l6iu7ZOog0f|m=&{O=11e_0sIJ`nTuK^a+qgmC0XypAFF_Uyy_V!HB;Uc0^gX?oB&5tu zWE8)#a!J0c`XuwNUr33?c?*#UzEp{cdff*Ezl}E&V`L8rs;@9hn9ETVlHwFc+Y=H3 z5j)H;elE?jCYU`-jUCC{25_OrhTZwR1=mb-j)F_J973+M#Q@~^1ybEkg|g;5%Wa6& zXX%}UFWGUVhMFw@7_%p8w{n|X8*4gl^D0zuwSQXDZ|sjfkT2R(VAR2~wU6gFa2hh+ zl9y18l{y|YLOHtlCkKiyt`z0Lw6RWHh@ekgV~=)h@sx3v#JZ(t~~ z7RpEf2!E>)x=0uMlqk5Q4hV|Nqb05tz0ffGNa$ReAXM?^zGR!S6_$G0Z-tiX9fhK99AYPrEaPb&r{TVx|t6{pQeuq;_xB=|Cx z78C3dIK{)1wP4`Wq6XT?Ni4&r!nwMAAqktZrdk=J%B?5HD4kS`s+U=ds&|=xVS(9k z05b6gcXh120GUomS2rG4J1Q8~V3cW3Izw@DenFu2U?elT1DGuoX1>_(T938wbaaXC zV#B89eofJ~p)tSbZ2yo*anQ)h7hGRygw9MKI4qWH`>26q74PP%E+_l-j@5B$amwmA zk5jCU5;>$>9VO-^zfZS1bn_Oh5Uh@?42yJivyBjf5U8>@2q+mD_Q(%93Yr}`0!_*z z{I8R!YP5y}nO$!f(gMw-DTYa!|adlKANrmQg4jZKikP^-XX zULItJ#)*3+AYt1mge=ab(NxTApdFXBy{xKkE5a#3Wktvoq0N-nD^*od*G;%|cW?Hj zm;IkBlmUT_3&CdYFs2eCtv*)`F1lD~v|nd<8~SaEw&g}!GVBpPpAJ-rUp!bYe3@-7 zfK;U+Dv2&Tg>43Z*kBd0t;zA^F5A}R6iyk}3OS^YtJj?UaQe6wneoTfxYoq1aV;`) zp6+flI+BH6R5`sMGtnUFMXzJo+ouAR3g1Dv2HOURjlHjzqQEX#tFuNmB+f%FoT55& znqIo2`egG#_~NJ@B{J5#ku?SEr+0gCGWLwx^F(+;RXsPEyNs&KjApe*03x?cE89de zq$-veTAZ}^4tPLqol<6459~HTeOW(bz3`J3*yr!JJNouef+c599TFL1ej8gr?HY*S zmOQF;&RYO|6iIhxtL};1u99uh4sNpS`3AB>6S)UBi9x@UbB5qeIiwFkk@@<6rw@V8 z>?^ZJJol3|))4s2x~I~H!13q5W^VmY2f%*jr51pADUQc>(-e&GKzeW&e(g?=<&aWe zk1I0zU|HWh$$S(hm za~;p_Q}0ZcBCkZAD5s>T(0O+L>%9DRB*0dQR%c`{c@Ric@@oZBTjf(ik&>hD>kZz; zS}I{SAgRn*^gih_S@b^DC5zsz)$Ut3w^zHjQ0uX)-G}fBODqPA$4}FWAFBOV6mwR) z>&;um48UuGe$`@@{YvKRu0`*ymr8SQ6WPNi{SWbbS`j)HuzxBsR-XjsSg;F(s3j7S zl{2DiEC5l9*wyY=yUe1$D-Cc=X<|Sa{z8{2Fu!0{6Hnz3(SGEPtbFlF9h@g~Kc!!i z8G^fk^$~z9N`W{_C5y8@gFeY}7;q*FPgsT`KZ|4J^0Vg0EA>HEF^b8$hPk15_BrI( zZM>QH@gb}u|DQ)T!qKLc!%0#-;(>L}{)T#TD@*mOSgJ3c;rMjr%G1p!SUo6h;1lKr z0awoB175fU{OT+o>PnRFmcb9Pe{G`YPwDecGZSSFnb5WIP}({Gw5YGG*smRrenCM*C0+)5Wu+Toc=0Z|sLfT&^|Q3%CJIo!_;;s?n5e z`kidO70EX5MFQCcgQ{TUEqiOcbLku!_hqWSQ`#sdNx|=?vvr2ZG9lI{YWbUuHC0uXr`p9CIcR>sUoa%G9 z-e2znGQ`?%RpTQiX^Jj`+f!wq5o0q(jChd8s%)xZM;=3PX8NCSTf^5%YJCR-XfkYU z1=t`K&wy{Kn%@6ha7R5OQ^LaT_8AapdbdZZ^3PD-LhdLKU?ca(z;-Nh-Mm0Mcj2fv z1F%eDfrcLnek1r_qeKh4r?3Vc$-+7z8&|DlqL|?7Qt@UXi7+f*`&$~WG{Kb^N^Dd3 zAZv6*w$zK+!wpD8?E)8WWgQsMl^NuAoTKcwe|J;252$9RIYSx%eS$_o;kww^`?383 zwI5WUip)rj6KC-OSB|2;uR#BgxkJYC-N9&*RWBqPE*IMXUada?=B`oAw%t$ayV}D= zZ726Am*W1fg1KSpg(Wbz&t`5}`l5D}Q|mEwW+Zk}jQQ}#>9~#FCz1yFZ*OS|Ch zT(4FH3cMe2YL*=j-cKOtE_k2dsvEq2mt-Nt7H z=2>&TS859xI}{rxb8BfZwXY4k32#m|gywX>wyY>%U7^TbrY#2M?k)#tsI)^{lK?J~ zuP;SwRzbwEPEP6h_>D=UC5X6*BIa+viSp&`~9d584DZgFA}ewkEea6T;FTrs%CiJ&wHPe=dg>Zqbdbb7pc9%7pT9tu#bN z*;B>mhoz<6sxggL?c48Ix7EldbN|LwqK_(LP$oL|mqX7XmVQ0RB?;kDWi~W8XjWy^hLs=rO73H1Sl1K$*llGWD1QhbLhES>H}- zI%toNdtI}F%<`ux|3rMi&qsjMd23Y>QNvPy%6^!xYc zsa*GoU%MltQj73~mwme{Sub)Ebs^CjbEwNhp_(`CiWc2M*%hg>wR@|lYEN$0o?+EW zyPk>ulQmgnNR`m{>?ZA*z51T_^vvDdzZ!VbA8k19TTGq7(uRfX8qFZi8;UibD_$9v;%GaLRE-fUJjqO=v zae>}U7Kvods2rU&IiQVy$+Viu# z(BdP9VPI8!WtF8_gChN9$SaW$40+RO4bc`iMd9>o3CTOfB_1Y;I#t-=AFX4g#SSl% z42o9e&n5v*GB++AEXJ7QfF38(Slu6qBuSZ?K2wuoe<80blA^E(>=DX(s~ z71PL-uQlP;eGH)HXZMi;$i6dKquxk-OJ)xO=-9mMdtNdYV!XBAKBXVeUkT-#`TH@*K|~QgS?PcQGGw!%&&cYMTKSq&Wpr`Is+US|!u2j6F-J1|8YtFdrzlt)>Jdo4X!$12?6 zvhXe>LM{D!C-DHW-s$|$W);=vy@T2$_AXpjeq>ezMe<72PuBcWCiN^f1|Ns2D?+N= z?DN#ic7ZT2(}-3}Y9@Tc+t%O`8O{ynX)o)V(@@v27)c*?+TJePnD}Q!a*{2$d3ov(h5=;9QvXkFa=TX5djGo1F0yFI{q&or4{a^EMayUzUa_nb(pJ%5rf)0LW+{Syh}SdtaSC+QB~ z9!WyB=S>+5y5%_{KOa{o+if{shaBe`FHx^u$ZL2H>mC9D$=qLYr5qB~XC3Q|$l?Wz^AAK1tH&p)VC$vA*QCk#>jgaA zD=)CvNyO(9uPbU%4nWx;=+El0BT7hMb zt+K;r>mrg^M5xip|KhYIGKYG*KNutD4By+zL>~jFXQQ~++z^4ng9x+(Vq( zt|O5YM~#+>gAbTc$Vd(RB$-s3&L4*??t*txWPvLP{hz9#qn|nYu=>787rskU_-0zQ zUD-@Bvp~9)0B7O5a;L&~em8u3%?tl#;d{~=CRdeO;5FZvBu?w$^aX8UUUx6jhuF ziu&QH9`(lmVpi|_o{(wvJ*in;O+RH^3&oTpl5jHJraO)%K3$MLA4$FibCAd&h~_>C zItkI#s;{A_PYaMghfEMsp<86l5rnId(xr)o74lJG*p9gz&Mw|--nU0C2ki3-v*y0T zK`DF93vbh&Y!G#CYgv|;?6B>Tcadi|po6MS%k%6~m#D0V`;n{ru2!JL6iNC%tLcpB-F*E>$ zu{o9ccGiM79Z_X8C4Q_I{!QQWInq60Sd+HUR-Q^n0T~`}^f8lj^^Np(6Nw2j-9^4B z(>X!ok4zx4zI@Or=sL}6v6)r{E3%KYcvLpN%T*~9Rb3n%cNTk$i+e5Bi%+bg@cYCZ zy#bNQsruNeTmV10bmpMD7-%lel#6GUaKWE~Po>PLPxMqVh}-H?oIh9PC>>4VK^n9_X@p?SLc&WD3cR3>=PXW&m(gLCoK|SB91h|FPn$S zomRc{O*RrJ{6v%e;rU)!GItS}VaeGU7Ruj@yyt(aKR6-YvxUB>s?3-AhzxXz7-C~# z`C1-{KcU!S(lmY6awoD%giSyZ^L967{Y2s|eyC`+p_?<%uX|tJYu{0>%IKKL`}oM5bD5xKu3t`rQXC4cG3D1cT=mPX1*rP%)lyDS^ku6Mxt-WE&UWaprD_Sx%k(r? zrl)>ITqMU20{NXqjR&@5Zq78lRe$O{xC$o{%|K7_w@APi~_3?S#M^J z+p2In#`$u_5T1eD`(=ffoD1In@UkHHs1|yu7D)B%sRbcz25z;q@aC58E%dTlsFW7u zTv`Z93-R0x*3-%5cZu~L(_pr0FuUglMXpi7nbP3AqZ-V%8qAgkb?q zBwS}XU(MgpEa%fNRO~f6P2C)N0=!U1=y<1j;BEmVe8_zD3T2Nk@9m1*twu30)YkIP z^Vcgd;<-OKMOYsw`s`6dNlX#w)E9cYZ!>o21lrG5?cYKBDEdR$XGlILe4czx_!v}X zEjXXujk7|IjfXHnSZC@R&vo75TId?<(qlvP%89WtKKpwrSr!WSo(c-(Tu}HU$PYdK z5Fsl~?fVFj%V|sKL49gTFI4;R$(jfCsilzfsilxn%<7)hrc6~7!dnjH1gXPV) zZ?fGc#cG`$%eQ1IMK_n^FZJ904cN_T-I_n~1E;<(gYUyju7c>p7?+X>iYX2dC_%FJ zT1e#^x^b6Bf6mEE)Jum$Dk?l{bYVCP`J24}OJ}68^HJgiFf4of1C$d3nyqR9S3+o27rL zIY8Y}`OH|S)%g{uBqQz+y1|EPt^2e-#bZWSC}QzB*eVK3EVZ2x0x@7C2$}GG$Og5k z*zcroV7h#AoE3qL`ApsTR1}5^96TQ7ha<-@Lcla@imb^Q#`=YcAzY|Kf~AKR$+89V zl#c`plSJ(jnXEXvDxMXv;`OhxrTkUq^yg?GemWWqTL>WzUopGfeamSfs;I`M#rU*d{BlkeuW;Sf5liTiv{ndfc6!L-=&^x<{Cc zLSj*|sD%82&q9TrtkcN}6?Oz0k7NfO!O%Ng`jJ*!Ma97+hz=6sYS9}H!)8Rf-s6KW zdf_Iu$YzqX9nb2E@f*TXhh`O>KC!O$o5bVVL;(Z*xh`qmB%v%;o&BKHAKa}}NC??|rWQdonXla?!%{52 zPW)HGKTH(U$-_XG%L^55Ym;ApOmAT{BhM=5%?@(`R*nh+bjz7l@n>i`drpmQwGfR`4pRxMVH97- zL{+zU$t3@wR++DYY(iT90)YDuwKcw%$wqLMjcpmk-YPS2YOXQQ(gPAgwoX3%RM1a8J(KGw zL{8BO&8~L}w;fuD)=H~57P0vm|7=N}*8{V$(SfxI)yRkYoP*p7V_ZywEbB1zqJATh{RxHE0 zjN`ogx%fLVrXKDu)`=_@`p#z5a5c4;p(aqmr?}iIw#qJ6WKNJ`{@5A**orKFtR{yy z{Mw+2(Aj)1|9sqXnXIS3nL04~_1<{@zetxSvhz*pA#Ke9k%=2E^)Pw2m8rq!O%|QX za!`nMqCyE&+*{S&{!7L5f77EoP%Zbf9ksC^NjKQh5zB2IQM+e|)C+d6UZ9SmL5%38 zCw@aVG1JD|`oeZ?&D*x{d5n25ffo6zSA=~};(fO2qhEj%yMcaXDJjCtD%HRLErGwu;tP4au6X^NasDBIon@?XJIwd|+bu3jVt8&My8^))L-en_bGS z^f&lwnZsA*EJm{UYH(vWzQVC6#dM3W&bNydnF&0=>)0MkID$<=<)CUOLMt*NwiF74 zsbtRR;;eVOR?dr(?hBQEs;#Lymb2u;L5ofe#rSNdEo`8&tbA?I1drmZpm9)-z6fW1 zDxCFc&zv>b=B&f>g;bOUb_{2I1X)@O!i6l`x;U#@IBU{gA+@LEeY_G1oY=yGt5S5P zzK8vT$9UXbFj$B{C@lqdOCd}av5_z-uv9nw-7!tx)=#(C?M4gs`%=|c_+eGYwr|ZTFviH^YjIBelounUkN|4zk?XJ z6=)H|=BJp4kz*?;KC3t_zd(IC*elEE@CTBIN?48vhQMw+B3YG4{99Hf+L;Qr7wfr^ zl#*|@dem8&L9+D@bLcbdGc|)9qGW%N%c*aj?eu%(FY4S5lXiEi7oC9H?Y>;M zS2j+53B*_qq>wQxWU%LIGh4Zm|6ba;@C*#lje;B;gDcG6?*k_ICP%Cb_It)rgBi+~ z7V$~V*v7^kk$?nA%1JO5y{>eZwtBX3W8p5n^aaFByNW@n02Cavl$G_Cy!|x@mmp{P z(?nWaiHTB4k*Wm6gGvUgN}5$Y)^_?5%Sx*UwMgjaI=h~trw3Dy3fT~}mVnJwh_3GO zn&^%!+37nN{ri{VM_`78PP;9*IT0$8?{Vxje{d_TEc=ZGq^h~9s%|lx@)ID~Hwg^m z_n;~}ysp@KsJgb6;ii4)T}I!0nypQkpXFEn9R5xDfee!KReIVtzhl!tK*pb}Ps3fB zQ9YO!lga0Vd9^89+xy|=HvCzotXI>ZuxduL&E+vv)602 zl1%T9UU8OIyG71eIc_9rsfE0~hQ#%%p?dSfHoGCYNjqn#cG_sC-dVpiyZ)GV%x%(6 zr`3+ku`H0ur=jtju6MJNyLu2A2D9NC)_s>A&?fyYaUDxbLq{(?NnZiO7a3ddc$uW~ zhe{8IS<_>>3B{`Qgu{ZR2N(8M)g=ZQ`?a4mCHfLykDnfp7Kj+^R?Hz2=5){wsh`lI zl}5U;(=4py1=fo3$&1~V^~FLcXZcMyt;*IDV7K|I%GO(uH-jyB`=JunHTbk2H5>ay z@P^gWm>*L@0*DO)tsOwLyfd>U{5>g&Uuy96fXBsIa`EhS*2M*K(P>}g$i;8uqU%rm z(<*Y$@_G{6KBoa;BV7E$S8~q9HjC&(P%HUqIdGw6U+i(1VGxAx@#A@0aCx^|*VPQ= zX17~6X{&!qrAObsD{*nRVnqv2I=aXOkvT`-8oj6-r6i;MS|OX-y%99fF5V~Uu80i3 zZg&=ExT;T9`NifrlIbG3ct2_Yp9M_>YvrI)3Q~K~3YKI)Y;ZIeUF7?>q$V-6@ORMV zL!)oT3&G#`j_R& z;)#OhWQ4~N!%G;_Jr9&NRz8uX1QckRo7?6Q_KGy-m${=8|@QiIJ zI^hQqruyhb9%w-J^4OP3Y>*GktTR_B#WTA6L02S;tgYErh4)OR)e>?N|x3PwrwDbQ-0bDZgCJ7<#c#kZ?v6w;;ix)Tto zr)`!&sH;$eQ0J#ITqSN1MOZ+o9axYKT5Y~OOhWsFsnwH^aT$AU3WI6U-aLdQ9KEx~ z9QA^rQ`V$vweKPMgH|e3^mEYpI@hAc=G*L6=JVO=OLf<4UH|SiTp0hW-VWU)y1=g^RPzg`I_1GIFA?LU}|9M zahzw;<12()od(OkoI3_jvyyYxLXXcP~j(RyPC-4D@NPF})8FOyyp z78HLy553F|T2fWf(~nSPno875yI=VZV7^Fh79gdS!&65AmgD z5nz{fO^M=t?8=+#IfcFe3&`AxE(ejh%;h*EP=#d=f{{G1#Y?$v{7oi~3du*F3#SnS zz^jFwgDjF%ZiRnas;`u>A@-@Q{uwoh(F~_D2+Uwk-Wo2|MK(KDng7YIV_g2$7eYf54St_b4kvsFQA##co+I>=p|=&cPcC z)T@pL#GtQ)igt(M5ybd%R4i>0XGSDF)F@GbtyC3!UPzX|yOneN6js{rMoVuM{NTgu zrJWyWX#YGO( zC5s@4n_x|+C{*n0`KRIrab4c~tdPZ#Yq=QGmW-LF~RQTg;9A)VPB^srNUXmzly{l}_<@Vn*wFG=s+%vA4wEl|?( zEdrS3lfAfG?}%_gAf2fWc1p}Zb@1DE2Y+vM@DI;O2Zvc5Y*P@$mUq&@*&vX*RR<6L zTwImdogzU;O9di9A0(3em|Id;{%wE71*-L*%%ny*;3$581rhj1=@5XFqT%CZuI_tU z`sAlp7J~61xd!YouPB@Yr6KIFmC^+(xw>m9GtQ7lW~r%cz%M?64MvBl1%vE&a#792 zI`h7VL&?gvyif{~iKz;P_yG6r$?-9MSt-|-&qomv z+g|y}A6U5NA;x~OKQWkU2op=bA@7(2&ju}V@s}(&rJ3ow%lKZiQs1KlGL07X`DXcU z66u|0`;7=+)~n|DMkUowGXg1M*n!ll!vPg!SfDO9|F6Kk@hkxsq?C44hpbN1rs_5D z0r$i_Syy_lngFbIrECbXqHA604l@LC2`ZP`%SvA~PyItO>67j2rklqI6A=Bi!sNRf zguwoFHOi>=B!m<05J|F`YiGq$k+s>0>~*g8IB|GWj+T9B(M=U}(|@`{H=W9h&H`UH z*16_YWJbscvvBZm#)1{#pdNVZ8J*qYSYhNgX&Z7Xqlafzm-2gI^(7R{T)=D>sCNoj z%S*?n-_kbdS?Z<#N87o;M^#*pKd&VlNVq|X2Jx|Is6lEQ#YbX5cOffxVOIk}#dmB3 zQL#qYg;)g=HW8M~+O$8ckJ_Kq+G?wqT=|KoZ6vm3EG?yEBO24eXXVXN&w}e^=RH%A3;uMA}xa_ zdQB)t9|tvDguV7Ds578n1~gz1Nu+wP!Kh*u5CBv!fO0KB|3i-Og#W#coLWPJOf`|4 zcssfOG|%Ty_n!t#xs1olN@tUck-FGx=tKRZ+@-&7oD)Pe+gKcqKe z1=ny+DaMbX+E~Hsgb!)Mm}ZU3m`~}$PZ<|Qied#hTY`5Cd14Zan_{=zuG_t6sDSYAowJ~&Unqw**MyE+TcD%Bkh zHc@lWOjY(o*tH8`mnjJiM@eOzwq@grT{J_B{l;73EE8^oYZ+lE>#TX%hNr5R_A2!rnna<7aD)rEG{)66;GGZS#SJ ze#;}EZKu!jx@M85XS*GHpiF#kZ?4x+`LS2o!$r7qCJ3juxG_P7@xV;Be0yMkN=tX z3ci8p_#^S&;V*B)*XgT0Cv%I8k}4J{G0SH2H0D3Ea5Xmgi=UO!1)|C=P=q9&n%q|> zkagfqsqFd81%4$FRQCe=+QeKsj!erD=KCYFY3FR(soX)fY0DOX8~RwdWwlvmD~2o~ z(Od~fhu0#DP_4fD*V57P^V>dCspLCMrMV3LR`bQFj7`3Gxe|J?X}&`?&F-E|sh!Bl ztilzA0I1-#;eFF`lM%g4>M0#fKxRhVPsSGW7KlCAU37C#o=9|MhWPGde3jca(WSD? z9cV~jU8;k0K3e}wB?X&KqMp|7fCVyvAf9z2EHoMi)2}*Z`aKlGa!l10zbOOmZG%IR zDl9h#?Xb0!ya_zCL^KcBA{tP$?@75{t;A%GhyN+lXLtu-9x#_S0Y+>hy}Rvv`wq$% z<+^e?m@w!6Tn1?-vTBegWsCxRPax2tc7)IUNrvc$Q)C-!%zReCNR>>3n%@eeUcu<` z3C#hY+q{ayXK)r-UFRDAtmY3F2B$Ad{HO@H&C zrnh~EYTl~A_UbZrfo#S9O1OTbQ2yi&`VzL#*WC%)BspN^-=_ZkHG*7*W9Srng=nx% zv=A#}f5dSRQiQ1ENWfvA=;EQ*<0&<*&aYK)Qp;M$TCVh;^%yF}WvBTR@Ys`uy)%ianz7 z47sS3u3}CSLb>NsH9ZLTV8d#wD^b@=**se=kCb%mvR~N~L!@WwRAyCC9XS=2OPrEm zT5VKlFa+A#3pwE!)^1%)a%zCA<<1qG?TvQOPuZP`Ecn-_hBm4})b5C2gR z=7`Bq8SMtgv0tR6A@*%hbrzXq&HsgLXPN^2^tm$foItFy_*V8#DydtU&Z}$}^H1)n=PJa9LW-B{CeP*#MhEHW%zct*-dlnF6Ln zMaDUUH{O-S`c4EE!q94s2DxGd&IiANEqI75umv-^S%Z$_V22g{DJjgH52k5Pup_Yj z6=}EP;+Ujyodm(R1X0nJ705?9bL{7H<<_rM9g6+{X*vX-dzwyGVL6zp5YD_p)ruE? zZ}GX~nH!4B9e=sabCe2`J64=_xDq^vOFA~;MB-m!`#fr;blLY6kBb_e^4Z}sd%$2> zCNjO!7!VzAj=>oN`;6c+Y&PVbi%!BKNlIFXY0}wpyH5&_`*cK=a>ZZLyLTKA&^Tb+ zW;Rj^F=B6G-c=zT35Kv-3Te59_e1ia(hSirRF}xWer|^SgsUTi<56#%{iKukD5l`Y z`8u;ZZrGS~1>)T;8^aQ|7;?z54;nsuH!KbduXi_l!Z*!=&tkFgg!4r4EO?_Vd+{%< zTiND`U(yhZ$jJQ^YEX8*4Ne@3tN|i>+(AS(JBbSO4>c7>ftFiMW0I^dv+=XW!WUkw z*e^m+?{;yYu)cQz{<1*%7%_U_ALJpttS`S`7E$@;zYdZf#(ZjnHUp#5%pC&S7vP;`7W0z{f zgZjmG^EUa+S#9L9Y;HR`4sqI%esRDd$Kr!;lMV`LJ!phomYt}*AjY9;f1Ij)@EFwt zC%r@Yp+Cq#Ny|>)8}hD%Pm`(GIaptE_`*$hvXtn?8Oo_|-mfKdDVas0gfFxUtuwT# z(cvWcR(Mj$8#Ut)=?qfO=~ zd|*&$LbwMZ%=X}k;V;vJ!+<*vxMudP;Q!C9f~HEu-bNzotca5&;$0$o=7$dqo_{@= zCacP9H@6eZ22Z$ob0-I>a1kAXu9JaB_`lvjocLQAw4a|NO@_v=vO1V?yPPOx=Rj9s z=TL~9g9~9}F?J625r92j_@6*NZTUxvK3wD$N?ZSabA~{4-08MQu5m4JIHCT+(msLn zZn%|3n@_R{=S;6qP}3Ny!nqRGRDAGw!U+|eA!315DISxqS)*u=NDfh1O-Ug>X`|jX z>$4~=R`A8Wj88Ay!>L}p2(rUVXx++^lXu-)RN!1rPUMs(Disujoqe{|aA|>M;IY6R zH}1F;DXYx_;HHbMpXfrR$Ox`tovS|}g)hKQj(3f1b|2>-Wp`dFE2Rvh5b8yv?fv-p z!yqyc(KY6vFpE}27>dxy2?9QWi z(VhE#2Z1`3irN^d-70#ysjLaGLIzy_XCFEP@|LtqGM1TH}a1T_n4Q|Q+W{+`Ny7qKAA-a$|Bl+W02p#&zL|k zXK;V6yDKT+ckZ_iHI zK}m;GZ`?hEFIPNeThgUBqoFO|E|r(VcCONMu;BNc9Y1zQMsFXxKO|{5nBIC8Pb6Yj z`#Ib5h5y}!O`Tj?`Z)3EpQye@aWIzbV0LQ485&CkfG7w?hX=qv^^$_Fhh(4LqUW}n zet}O1mvrAQJ!tvJJQC4?w7Un9zj+cVWNqw@!o``-oSoczB+qLUe`(*9@^DeUK&pSg zSIv0GlyVSt9Gj8GF1lO^SIS|0B>PeL-_jOLL_< z;V(0^WlGUOVK`)p0hS@hAt@Eyz#VDgv~>TaL61Cs$O&=y%S`x6i$Yq7tn;o5`oxjZ zon_@bMdj=PGZj@$0Cs0s--lR`6X#x`9KHTaSv2OKAZH&km}~Z{lZb||g?L&A$5KhD zuD$-)dwkTS(DYz2QKjrjol~9K^0F+lbEKsHEQ?o>hs(J-hpU&>AxT;xbU`#gMDNPB z|NK%-&+`3v&S0vh*u0{oZcnzCRmIxPE6$V(ie;YGaDv38>babtmwyf#K$L8w(cel6 zG+Z9RRX~r!JYF)x|JSIxL>8}ryr$}Yd~q}6-)E83fN_RMxapl5^D%f zjmsn;Vu$eJ6&78q5s5uqIXh8{DQFTJ*LjD~fG#K`>Q1tb?)5h1YYk#TVfSmLWT}#$ zxvb#N*iPJ(y?Cry)Y#qPpE5f087Z&Qd|e5x{=F)AFfx)e^@>}w5$qJIjb7j9mt{>aEPVSS-XM}L59isZ2GFsKgYbQt2 z%GZFh^N)$}R6;3kQbCI&q~8Py*qU=6F4unx5{MNrUNU`QuTxGFiY58C+4jyf+*sdzrZu(A_=2=*wrgbV-oQkrUr5pqm=;dDb^c1k- zbv+_bz><4W6LOeepT?Wq{mR}Rf245~v5lf%x=Dm?R*icK6obfiNpyu?e_DvJJthms zLDOw{wHll_3o;*Pg$GGS7F}yDl~TF$2n%A)^*ECgrhmIyyok6G3evy*yf$NGDyu)_|_d0?5@4IDKffNTW;dNKBnV3@sxs6+8P+{f& zijKm^9cv^PEsxZ>g3eZb_Z!1FllMfjrgNNKaz$&vn8F_9dFB3PyByx2e{zy9GCdz{ z2PM!w%oiR1Q}LXFcYr6G(R}HX9a|U13n7VUrWntgObce109IY6e%zwQqg+XHHi;*z zRF5YWnoWfJ6m+aj7NKTyQh4PIvPiT*L zG{T@ipAM64oiY)=+^57CX7NG+@j-Bi_N0(~;{`gBlO$z5j4II&>BR3(iu1MPJ`YZj z={Xhy?{gJjD>uaB;%J-sMhS9^V*De69oYH*%X}epFz5tGU*uRHx>49}(~EJxLw)Xx zXJ=XUERXFu|1@l)}Q^*Q|iLwy!fu=LM`ssaKEm~@?!pcDOA)FTtm$&#T(DDpDOnJzgAaWg3xHIX`U=a!0|l$ zHz@&pcKHy08uN;Z1Lf~(4LgL9vF{5Iv0+?>cm$2fmBu`9yO2+|rXoj$V1q5GsbZVs zet|8&^epoe=Y-2H4Gu$}1-C$Rbe!%;MCfCE?DP7L&tW`c!Ag$ClI)YXM1XF=+MJ91 z3I}6PBPZjW%VwqGmSTy`vfMcu9nK;uJ$K;}q+fU(Q=DFfe41L@oVbv0JPn_{6^ayVmY@biG1edFgx4m zxh1?Xo7;nx1A*?ebutz=$3Zs(x}z`XOhAK-&_cYLV`Cp^HanJy3<3O{S*%!&GmKTGi|bCj$* z{r$?|xCgdLa#o!rI}^FYT8=(XkBTZJ#&0zXXemaI4RdH>(yl~Fz4ES<8h(nZMpJ^>?t@k}--@Z% z2wFW>Z1L9XUrqAXa=%X({&yHBC&N;uKa(Guvj~$4dmVe41PocT zuX|huIq&Fhp3n%dci8q&^{GNcnJOZGBT*u2K~GV%WYx0r&e{{9;xF}uHK z_37_Z2Iy}l+QI$^FO-J;^LvNx>xT#KYi(I6We+&RZ#|YT+{a8i*rDaf!#sSUVhH2< zhr+{i{2Mp5)y6z-dCoT+e>~CVFTD8)S0x-1c#Tg*@*B@Od#=5MTBOXi z8gu$0`pBa!xkZr`4n<8n24I_cF5C#J(u2I(6WGsrPmOu@Zb}bUB<9C|JY=IIGGsp+ zEp~sg;Mo3C@Qp2C#f|8N$ePT-%%*FV?c!iZs>DRtYK}qX+RMOIm~IX8Hh}`CPwrGG z5L&|&n9VHa+=WT^n>DHt-xtYJINf`ZaN%K1ZiewIps7@AXCAv|` zlxUk(Ta1CYMhcn7qVM?)WMQIR;5W);LbJC)48<02yLs6)Ao=7-(W0IqBAB9U#@;Nw zBrWVPV`$UThJq(4QbimP#w+FhL-j68Kjut3B(>b0Mfi8`*mRYPabh3fVtE-7(Zf|mHPSV1*_GEw zU+R|X$)bOV5oezds@6YyMcNyeh?K?`M3Jq6w%@{^h)J25M~xZ(#GyBR0XDSD=n+x_ z79ULpk0UV)Sr|1!@bBnZ34bnnl?8V_qA1$Mg1e5DcI&*o(m3IJX7_??z2i2UcWsqH zktz2G7zse7y@g^0hlstD?o`T$q|SR}9S|v{ROu_AF!m!ESW2|iyHLma^)pgtfr=-+ zpxS#Bo$Qo8&UsQh&ZnhfLvKpQ9ty@}1>;d*q%_|6FH!4@2C2|h z07LI~3>v2$O!KuUoOa<3UX(FHUDCT9YVih@uiXeuR5$(yX`y{=B>a&Z^F?bUzS&KuJ4$4&L1K;(7mmbmbusS6 zr@FruA>W=lP`kQAL_cAssyfWvV&3zkIQGeUCL3yNBK8CE2p}Z?B=XxUAX-1N zw(+Ce^=qprJ?)2~eX`u)L7jP7VlKK-O`&;m_`#v52yfh+nYy)Q!mfFqrNi+?u@7I> zh+6ilJUG|YAR60IvBshtXP_*e1wY%teEi~iB~zR$hUV2|;ryBGh?crM0-_BO4s%_k zt2PLz3CRS6FB7$>f>8qHaSO`vdFaY($LF5X9#1;WTUHOQ$)>aW7=>x?PiH0&Q1Gcxyyew^K_4BPz#tGxX=w=gH}7EIkU|$zT9hyWr!GJL zix9&Ebp&vNEZ+JgRTBQCVC$pO*Lk(nc;|!bV?bWg&fzAc$ zVC$GNtdeT)#Zq$KCSgUi25m5M0d!v~IQGA6ZU!ZADWW1*bfBrKc6c7rm zfQLa5u$W*3kFpND&lOml8WQ8Q?t1RYjuRq#o9Z^F-6o0Hz$-SaHMl@f!P-U2K~3T? zr7{H-20W;_(frp@!u}7?r}>$-4*~r9i4OsPq&js!b^>j&kS}#f{Vuro>0-gX%PF@% z$0`i!5yD;?jx)IxhCV)HfTMB~LQ=w8d8&b?u zupLh>lLPj^_2xe?pOD?wYp@*Prq{+EX}{N{^xHv8V4AO#O&WgE^Y&g4S!*wDPVam~@B+ z+OMP5okVg$nYTBN_P7=I?kCboWPUty|0ZvtFlzf526{2zGB1YT5C;)YhbgUx%VI@n z7uav^L9voOlf#2rs8{6(FV0u29eE4p{Z2+QZ!r(El)4h$CE@R@aKUUgA4L6~hdDx; zvJBvn%Z?VI)AzIZW;mvBe+^S&ts3wbgq%bRet*BLocTW$>et1GkeA4x6A7#he+AYt zbyC#K{jiz&GKmO9^PGYve^FmVh9e&OW`04Lzm)EKnr)4Ec&;JK3hQK7f+kLtaAMDz zkm|C}X7RJe?d9s5{>~u$#>v0Ly78dmuh~TL4G6ClRa3=KGgXtk=j7X5^{t=f>K6HO zo}H_*-=6DV^6?ZtB6FjGyXEzGmA2rwzm?t#tc?|P*Gfo;hV11ER?3HH-mj2Ln0pZj zn>%FUL>9a8Tv)Lpq_2nKB`?0$MR1!tSkC4O^u|~)pA{8*U~~t>6(Pyxu#EKxz6PiE z2tS0_$g<&vYQ_p~C!x`)TnS2U_%D@ziRd15>#}`{7L1@mv4Tm|(vQ`mqJ$45X!qqF;FVg^Pbr87M+4)N*J0g&h* z?Ah`h^*UG8OHd{$fTYgLH}dTytInN#>QyMuw9SjkmwY={f9$zaK7MkGG_@f3n|PnB zms7+fx?Cb3qIvU>pO|f=HSd!NltdTLGkx&IpXu@$xkdf(ff6nfnh_ zRS#xFdXQBeG#xsgWkk0iQh&M;ETWTEs7~rrbj^2Y(OgyZi^IT6tXKky5x$={IXY-& zuA|~1>}~4NL0|q~43*@5Te*k@Zp*RzFq;cj=KFi}>TY(6<|*?rsV_Ty{Yl(9s$4;` zcrznU`jharn`O&X>{(X|mI}*NOsBFHFjxJUS%}C6+jRImwBZWow=$ZdU(8G1VqVO` zn@9sWW>2R~E1}AKi!*>JNHVb7#A|}m^E=VDkO6%ah%m`)VyOX!S&bho;ns^c68x|+ z{0+*TCgrZFrCglTmA`(ANt{>WR!LkmZ{~x9JCMN6){U&uvxLrLcO?|WkHJmU;Vp{A zrbM#RQ8D`CCkVsJPJd`jI!0Z=bCvT5kMYLxyxWOkIXcd0jkW$EmWi7IhxruR?dqg> zxnrSxZVv6zjl3HO#tQ0b2aXO;zl=9!023=Xn<%9$Gn;_zmg1y%+%y7g2k-WB490RM zs)6i)9@3~|6txl5*4g=8r*?jFm2qrz`+OF#(SKYZzcU1i=r#zQ%a;vc$v8|J_xr`Q z@@BE7&cXaXp6-**m^VYurUjK7`-WtW$JftkqY| z@oC$Ft34|-i<-yRX^np)4Zb#q7#qU7&S~iyWbE+7num0d6bp+`M|4?QaV$0=23x4z z`g78v)icavG;Dp;_J-ONwD1t`PEwurZK-{(_xUDXfqUT|J-WzlLV`zGsSXdoXj@pjMnV04= zfKkUh;o!opc!KB*nU*pM$biI%ov$TZis0p*8*@V0=DzdMmN`27g>&(ddNnt|=hgwB z=SX1zbKA|c1)xZSl(fmpOHF&V7RQAYj{m=#r2MBPJ>~BkqRM|?s*@<+$_p|T>(%Mt zP!7QV z3(PJxMQku7T3nUTuJZdNs_3sDA^$l>+ zEI7aJ4+k96Wyx`w8@?8bU9jLIX|qK9l`P;B-z}|pm-(fYWJMy$FC0)+a zk`9`F-R5x$?O8F6JJGK!PTS-u!QE_I-8pF?WP@LeKDAlmCx2v8F`I*+=8sM$8+UuO zo6ns`JPJXj((_3bGh3f6LGwWd^ym=up{e$K@Lb`B9p=u@X+ijVY&c@Uag>HC8B&~B zYhAf2_)T$DXg)br3La#aJBe~%l5zv8Tv2J`2nI1NvW!%3aeegZqK?>&tYGM0k^5zn z`@Se@Dov3}oTn;LT`V+V9mzl<_ujVjVBUJ+FoXcT#cJHQb&2`;6udy1Ib5oU&L~|o z5~gM)I>>q?Lyug{npbd(yiqsIzaIrV5Ue_GB8tw!vSJnz_PMx7t8uBpa`E;p%`3pg@TcKsa{nEYC zGCXX@hcnhDBg$%i#S{|T13J_%>$)1x&t#lA9mOKcaI>nsJ5Q1w^ZUcoITnf>^AnzK z@q?e5riC<3N|J3}OTF#B0wd-n7aOHssLm8Dv@~9}q&g+$voZk2&4oQ>oP*};vF&WH z*_&?;;uM|na_4j390mCCsYM5KaN)Gv5E$v4$HxjPq=M{^aZTL7z@|xCQKFX2J}_O&sUIllcSWVbTgJkeB_uSVWkzG#mmp>+leEuJ9H<; zu1!|Z=GbLzjStb$f=SW57EG_qH9~g6qaRmhSdc+{HYz-m#kKpwbCZTe^8Xqvw?R;zi0H^y{QfbPd_TwtU^lP~#pen9c|L z%JeO!*P&|8^pbuT+Gpbzrf3(H_8d`ROrjDmiI`;)m~?~!I+7wo@8V{;M2f`i`-t_0 zG8+4(E5Ure_UPfOp@PQwrG1n9vu~18k|gwM(TsA;u1QNPa|R2sOrg;Q=L(0wU4-xR zX%8|UroG$QItTvFDIKiXH+Aw|!5)>3TS=_olR0T=`#R^0Y@Tz1xcCvYv2Y+jX9&{_ zrtk2NZBcoBJNCy4TF7B7d~`z`Hq&o|ge%v_VsNQY-Dz^*oVGpCFJc0Ia)%DvI(TTSxhac&d!w+9RS3ANNc@QJ( zCE74w3GZ&+-Mm-wUdekE?^V9ccA{#0na#u^k$5jX^hDdFe9BAf$uoaWA>nG6Jc>0} zsuFc5F}Ha$*f~~A1Y^QD*OrPmuqoUq!Hv;eQap@Hqaz+y#8Yfe0ZJs(oGFhEsQeCQ^st*e_=3%Q=o9L^_HF>zs0VZ4L`m$Jnpe8!7x5cHNWGQ(Zj+7texa8pO39jaJ6c6%E)FJaBWmq)w#V=|PtMrWnplEG3y-@36-#vJ^r zqEg13&5-mq0?-D_O^xw_>T_P}XsnEl3;$`VYGQ@O>Nr<8ml|qQc}08_<(=Z zLr#)~xM5YlPsW_QnA>J=a_r)3x_R^o31Er5I{bM$R#m51H7SOi;}JCP7koAU=#kpd3(>s0<^68;9{d3%j1#HO?IHkY zH;PQhaU}`p*=u>ot2}vKz+;nR0>A010`$aF4w`BHOZ6k|DD)dG>jD=uPs<#QA03E= zYW3>8bp#l_kUTP{FP=u~nHzY%nc?v@_{9|!_It@9&hC)4ahxVigJ@wo=u7-ME zj|?yJmG1}^8dGxpMv-L<( z>9i6i@gzLqED}QtUuNHbk(*%wZBR7MLf}Tx30n$a4YE4K(sjFoVp1BQ`ly<$ zYEl<7+n8HNGIr)$VhSZaeDZ3HQ9wo;VWVXrIF(l1D3t-S6O>6kSxF(!AD75tPSbnwrlZsPf{JmW*A z#^-I|s)4zd4ZKCu0)_`x3{$@yCiKga$;PqWeSz124|&BCej9n{X3yTVEQ|+(*vYw_ zf$GYveVzWy9eQ=U|AZaB>eea7aJb+}`H)i{&b<}snHr{TPw)(P_4+g0{o^QR^CjKG z*o3jql>H@q&s?~e8upmAE+uy7H0mNMv?qXlEoOj7F1T>s_}m|bubBtB8{VvbDb3s$Otl^>-j{_8fTAgd&Xg`F?YX?w?v|AGC;WcC zA429A9z8JbRX^Nrp?_=#UNUyh_8Ui!maTN4eCL8A=6LGgO6v_of0fqDwMUyWB{tOS zH^@tQki3ogfLD7-kuQipm>*ewr}J^=yIH#rUb+IFtA5WlKbh_G)c5`*IC~xoHQq$V zZC35l?(+`mhaEjn5-9zY1NVhx7i5s5v&e_nerfw>f?- za_2f+r!{kpd$4#y)u4>D;HU{T@;J(|_Vce|;r*^f=&Z^FQd3C#ZOek;6^7%2!Rg!~ z*PdPxap(klvWYu~05;;>VC^+_c#W4m_~f`{wkPUgr>NaWt&BZXi270?s-vxcJ7>WV zfMft9lf1}BZyB);L`#e6Ur1wLBo8^PpS zv^m!EDm89%JWfa^Fe}_|2x{wh4_|;vS=UExj@y%;ZY3BwW|fs-q!u1aW(rF0&|BVe z=|eg&FLIIfXf3=~U>RQ5@vUdIYK}_!cFAKN3 z+8o8aGR^q#Jwi{Bs)K3|C0udBX6o}b6-<-2^39=BRRJ5$+JJ_(;dpO9e1G0Y{JKf^ zYUG$*1WElO543^|$7TZB`hOp}AXnGc_cA3MPZHzN*1vW5f+-15ZjZ6W12Jgn&L161 z%SuC#A937@fK0F7Tug82`*!FjOY`Xu9xyqtZi znpv)RB-^UI)8dh2oXcj}j6o`!Xj!Sqz14lXZh9hC@V09BU-koZobqS`!Ki{*vEP+1 zw6)A)y=B7+C(T!}fumbWlv=i^g3B(J^#zjSiWMv)TdXY{%eduHigSxcMyOPG;9Vir zTNPm-Vq9~XqYLE4w7WGt+QGH(Y}$op&D5h07rD`e6Ms{(5WH;n{9xcxn=E6?3uB%V zoHkJa!ea#bG`*g69S97}bKKOJ*H}TGYSpi0KIqZgJNd|1vl4Q@!;h?1jgPk~+NHj# zM9G$6u^u($gS1UxO28$EbDsb(8r$Wg?BVr@ns!nV73o=brONU+7+I`|U)z`9CN{!QI@=*rzDT`ZnhJL75>*MvzcAGzTCHdom@KX&` zY3Rb-@Kb^lGC($St2jr{3Fbkzh%13=^F+2RXat^#>dUJaT;CNs8V%a4&=JN3uIRF^ zFXsIle}W4O@F?uQ3z4sq)>^pyy6kyvetEJZZMes zi01iZqQ^#0q|~ij*QU3Myvj?Q#ali!oe>K=i_Cvh4uK5v)3Y)k)&dP72dL)=43YFv z#{~6E%G;vHOodkK(FqkidJYruFatX%R&c){Nx0RC$@%>56k(Z~Q`Y!Ik2%iDTi7q} z+(YCQ<^ul4AJJX@h#NwVA#Fr=UI1RzKs&-!?F^jW#W&Mj4c8@-wOIxZ7e$zSI6y&g zdWDLLLp?VQt+C{X1My51D@XXF(@^a?$|G#j>3`XE0PQkUU25^MXK!m(u!!^C!Qoxn z6z%T~r{u3pPn)=M)hRBXus0rK;#WJ($iysCI=RZk$nb?XWJM-AdCyOI&xIujL?>od zltRBkRea3|UR)8GlJ6}W9MpZ)hv}LBJVYt_SS~x6{*`CvdtT(tV~q@s%k}7VCmzcO zdtxo#^5^IG^bC(o&F|3^8~ehToljmRb&p^c9&5#EXrcSRkLMUG1p^R=$YdacohMdXVfsh1cE zDm_l#yg!3_p3n1Mz1n+)KjM7^rSKbge?WV}yOd{}5Ak%saJzh&Q=Ea!iB8g8P5f@3 zG0`n+6~+k@F*OO?!6f6BpC^6Lg2>Egea2xx!{aU8q{MUR`)+qR{$~W|1m{z-5zs`@ zWrJ9r)NkyfPFU5*6{h~^F@JjfK+KQ&fNa~6!#u)9hY@|yAwW7$#FL5-10|GXJ53U% zBE&Z)jAKOjr-+EHLW;D8kqkWq!TBxqN)-41tX{roWmW>Js#|25G`uKDxcW2)!lkIA z&q`MK-I5*sjmiAb(4D3Y(Pd=ByT!*Lf!5d!R|1kJ_-#Eh%v>OQ_VQV?77Q`Pq7-T6 ztR4|cM5f|rMj|4!W+g>Ueb1Q8GgRi zj>Ux9__<(J2q^k4t~7{#re5VWa?Hm$5hRMkF{T#FtH{MAeGQ>v=*D(o(3zJm-FQLC za^qG+kfHv5UuCVAKRLX)dc_QE(ondlFH_9i1sIfNg^;kgPL^p4FSp388y-&enuBNR z2v8V`VS45?D59^}Jc$Y1p3LaK}PT+i=gX_1cUk%ks{aO5Y=futX^gnn|@eO=`X>lJ0vpP?6UDk#f7c7;?%f8JCD>& z>1>Fj(LzgJB=&;J^W(=szw{J+TY<+u6dK#=#+PE?r}RVe>0Na|-W)s{f24Z!Li!Z- z5Eb3(*>tXx^?cAcu1nrxzWNegSC|>NQO?*j(Mdj;5O5TXlQ`f2ckQ)EI69Y9fQ~{n z1k}2hyn6VAzV?c`;mCtEZjy0}|EadVEv&4?haT-`!*ll-t8Zv0TqE3pFrbwdEBCCR zkWAiV_GaXBfD1Z@yD5`)%%XN~b~&9>*^4$?n9HO-UT~V;XRrQ-E<*uE@6B|E926OH zJS%$&OI3l+Z#hJJQ^D9 z)B(I5ROTts?rlyT#|uwLoR=JCA~}=8lWa3WY|s1lX^FsT*c=*ce#B=}bdT&0l%jA` zbaY{-5v+-yWy`lw_^Ni1(yPtn z507t63+5YHs2H1};{<-_#GWJ3(xR=N$Yh;6qPOHenjXm9=!tc3qqC9e!O!ionKVK5 ziqKzoQja(3g8DLir$e*Q9uQjrTn~A2ShZI=&&timo5~3R(D?9#Fj-@mOf~n6jTI~>gOPV5Q5-`29#rBS*Fb~gXT%Fxr%bJ4zl^N{X+g7S zISBp-DrI(!64~ev0D)K0;Al>3e(^bQ+Rb|bM_Y!rIX)vo>dy&aw&|qN_DQQ+6O6n) zZ<7~4TDj(HzzXN>;+?cM9q}6(-DII%1Dqd(UtsIo8NNxF{};7}he_wJ_Q4OI{_7WI z|MXKQ#@?CRk!OK-+7megZ;IQ!#zkybd%V!ld9ddB6-NFyq(+y4Jym8e(=&5}o{6)> z&iP{{J^B-eD8OS(W8WHk-do-}|94C?t>T}?hMo-LIqBDYwTbP!gH6RbYwe2@zLJ3P zF>U6=#BX$ui+Rdwok1;7UF$T@#rVb-9iH7Y2nC}GgN24J`Dr>9;^;FDGf(6*OQ2qj z@=IoW4=Q!r-K96-KlMVAl--;g$|<`!ON;u{Th=W(#-v<56HvW-CuP+IPxb5_lpp*) zE89c+7z_p$3N#C}C#W@)kV$Xct2LY`0kk8H_MR&8IfLA|7bs@lX$?w2OVS|ACC$*D za{!qhoZ=I&UQ*T1WRxYr`vd~j=d$nKW`0(LL_EA?II8zTmG!c-wTAm7U<~y|f8;br zh=N^YQ1@-bdCHa)1~p&x<%Q;XpAj9+&E%Zl*p5d)jucPxl`SsT8dghYDa9Z_+Tj95 zDrs(09n>LSSt$4x3hpVFJi%*7AG`|W7-sH8xq!y`s=0r~?nEIflRYa36=m)19JzVl z%dr-YZ4iOt<2Qpj!~nCPE2oQi9RaCJEOV4r^Vg#w26xKO|H#j6@)O~w$qdVHAG(vm z|H$E(@$tAR z=GbY{g6b=%ey2wr%&H?aPQ$mEBaWiUC5dc*PtErACy8vy46lu#o+;EOg!ZtlMMah+O429xiHT5Lm{!tWhf?cRMI9s&=ex$^MeUNB z?nXZpBG)0@`pXa&om8ECVzXeBndhjQo|hjGFAfbwYxw{ZymD2MNNIKBpDPeW17Ca` z>%tVch4bMBBjI_%5wW(K%RdsR_Y|#>Ea8n+{Va&$zK{}*7Hfq%*T26aT}p8L<_#W7 zLQ&&4{@M!+zww3N_?<$0(HxjjREx)T&N{JZTjMi6W^YnOH<+e|I6u5Z7kio`&1=yZ z4cFElK-o5n#x2pqA7%6$XI@}O2Zx(FL8G?Tbn|R;t2F|Wt*yF{^h_G~#H`P5i zm!xTp|4YzZr!+5XUGPowGkJed-i=u<^IjF0S}F}q_ZxGI&6hup#cUDyu}TD9m;!kb z$5#Ti;WmNtV+$(B_2bPS5%wFk?EeUWD6D>ZxT-YGoKT>c%L4IDH0lTmYYnH8yE}&; zKZsfD$N!;7vc+5K3AxGk)n&xnw~$auEx1HLJ}vIWvc@f+8s*FhyU$)>!~lgefNi$J zkT%ooq381h52CcwGDlm`>71i2X-2RWSW)h6)-bjK08XKN+LGSGLkR!rEsMq%a(yY4R8%)UKXAi1!o6b}qn0cf6(VAfcKVBS*d zpaZUb4==O!5Hc}o+EG za@8ega5Z|h)1SGEHp6cJ!#s^WH(QER^e~^YJhAO$TFQAg)gg(?tQrdb#Wt$?Rg_;< zG*4^1k{Qx7V`ZaELb+#?I9gf)@lU5v;9|YHGrU5g*x-BH z#npiljUhc_w`AVSeBqwUx&V8AIFARPKM=E}Ogge}B@A7;s;?|GfGiXiG%jTNwsdjX z*CEqkel{0)u2_pe_C?)U9)nwfrH~7YSO?~o2b#5I!yr>EckbXcbYA+f-q zO*L{$U@eRaGt68>Srx|bgl1P5e|u0;g=_QEf)~r_+{&{gQ>QsyYF0KYKUh(Jwvthd zuRmMKEKXCXs>C^fWUC=Q#7kM(q#XSFAndWat&$@p=1e0B6I4i0C%|^;UuG`MX?QUs zaBD7KR0gIyNtm*rn-@M<9FTmyTTONG@YZ*#*Ohx8)WU1&1jD-mr&xvU2Vyeg+bO?F z+9^}sotW}<9+~sIrIkv&&!m5a7ZGAnY@J=RwKC~HR8lT)Gv%+JIt(cO{g276oqOS&5v4Daw4TlP+@0o0^@rV2xM1pVJhzrrGpGZkrraRi>;! zIra*alez-=ko0-r6_N|pHziAvy$+ZRNG=@-tUxsedm?%f)3qwr;)}SQ%+0Fuz=PVd zxr&8=OJ(BB`6qo;zfthG&%`l%j|A-p+=H-jbd7sesV}|9xo+7-Sz3dv`Fiz@S>|K! z34v<&XKvFPUL_JnQq!v!Wtn&J0S0xDFsNIMPf9O>5tsFKZ+2a9Fly=f7QajSVdnLc z77nO-a+aRiE1df$b{yQim$-Jl{Nv!%vMbPuGTj3tmN-8tIjza}vq8rNFdlF?CYY!_ zF+6ST^Qc|Mnh_s<0BcZ~e`DIr) zN&K}L?{5;@{Vj3qNxpLzo+~w3n<3paWbYtn@MJyQmL=sL@JLrWq*Linx{{#k&+J3> zr(5=iy6hn;;YD47m+?J)s%%X9k~`z16AaYFQKf4Sh*|R<^RM}k)}s|m`%Fgyp|KV(7CfP%EHji3L#E-@q5kG77c$7;(2BAl!JNI>F0FA7Bg4LK zj@ED#p|V8`)|+auF67X1LUF4o6VFVU<7M_7FH4={!mj*5vRfRz)_9Kv)ulB&O6@2u zRLzl^3uax84m03IDvWlyv}Dz4t5gm&sxM@4zOktJU+w&`qI{bcy@E{e+kite(;Nbk z?>>nrX=+7>ZC?Vg<2DO!f8DlF%UNfKVl$zS=Iy`bCmUD3|0`vv&BXQ?y9r%B+ z&L`Y}SV1~Ku=X|-)e)BBO5h`FrCJt4NyufMDJrm?W*zI0y?t7ToT^eJr^=o}iqaZdq)mz9PWf)dS%-ieJ50;} zmWmyG06Ad&?PMv7;DE_E@w6AgX)J<1I@1&J6-iS?ogr~nXW2$a&w%|o$i94mU}Mzb znj%995wm+JZp>S#;u)l<<7=NJp%ay&gfNQsA8RMtbV`CRbm~s&LF03K7vriJb$?M8 zQT|a^!94Keu2{j2U{uvA{+sw;&HtVJ-(y~&7C5)ssh65w>&>MwOg9!)>XFBbOa=T3 zHwqMLw=malECuZ*>yoO5z+4H`8k1`y7P=dgO9{!`04L1GA<)bBWyQb{)_hw9ILLZM zts#{z4%>>=+%_xTlI6)1V7kBT>RG`NZ4Ig!On6K?RC>Kerlgx2V~A8cR`vwu-`OFF zu$P=18tl(lj6ut#8*4b4)fx&(C@Up1O!l|t29*|0R<^MvJ-47No>_!}<5XwGN)WOVMJXRNgMV42&uQxruDqnYeCe_w9Tpe+j$XxQ17s zb|?)mx9&mzYUg{I8>CnP5r-eTR5GGPg?g~k7dkkztZ$Mnnwudt`^JL$rj6TO`VI7? zIz3@mnmSqZl;wo3#A>iG%d<|{iO|sq&|RLf&2l`RucHa$EAteG2DN1hQcLP_Ds|}l z9>Yhvc5XIa?h=+xa{*QTDOcto901)u|-!yY$GaqB<%eleLi7>%(XwXM3JX|I_NdiXL^S?E*a8HWZ19pX5LxkE8ntzBU2>LO;x(RwUPV`_ z{O0SdrcKE_7E2)PK)WigLET9&1g+FBCx60x`O9zN0^wVKKu`{{VIF{LzD6&Jtd>_! zwY2;Ntiq2gsjgN`-B2}aC|V;htt?y2hsc0cihnFF6D1q9REq#KZo8jGNMaA1rEq8F zAd#%@XV5B81#ycV1e<#F*KGM6FWY!|8HRVs=EltxnzvoX+O4$p>Hrj-oZ*QKih8iP zNMCq_uX?kdIn=XGFj?eecRFDyP8WWs3X5?7y^#wthXwwhFU%iIZY$Ux@A?!cWWbnvu++QR`R|q}szKhMP>4wnSiW#R9REim^6!Dim z?JqVVuD~s`+LYFB6#P!v+qRko6xS3#<3ycO5X_Z&*3L?R(571*(#Xj&ZuiISEjv}a zO%A`!w_lZIrNd`*9L;JH9~+tN=3+Ji%;TY+*fuEza7+Kzlj(Uf zJ+`SF{lQf@OQt5Aw|G{B8>=85*UnkOht>2eJblv!oKu%>Azb ztonSmhMU5-q-Wvs&U`l+rB`2?o@M?+A~IVQ^}$O9qO>Jj>5_1{% z^cPCDoUt;{UZcf_E|TAP%@?_(Fc6vQf*9oYJ=+0eJWltiAK5H_7!FN_6!D&SJ+as=zp2jURYt|v zC++FfYl?k$|94p^S-UW@t6=Kq``TKB8R&LU8I_bF=<_G8zQUl?QSJEY1+l6pff(V3sH^f82y;cbGJKBYe7 zGa6zKo|wU{M&*c_{w(lCK>PrK0GD_vF})FjsNb`%Ns@^U;C?RDe?8 zgai&Nz8rO4X~Fri!1-Jx3w`1IF$K=$3Qm$&6h|h}JU2NxsoY*wbIIO-}G{L zf}{sFo8?C;`6tN%nRHXr9V%?q)UM`jae%SWBN?LD=wsCHcKS0m`epU|rTYCq{l2Mw zf3AMVG6!O#|E9uARjx5A#!xYrshIQCuSflkQ@^9t?~&@aMWxJC;m=ffxB9ip-J-%4 z{6|#y8kMqK{T8TS3(g2DUZwdO(}URPGgVBE`u!EZ$?n?ful9_Gef8sr0b66P;~wtS zo}7h6e{&&vzM|T6tWk-(h8J*>dqvFgkEnqo1Y+9#>=O)*7%Kk}BGU$N0=F>w78B)?l< zlJ6H{GtMFD9>n&a+>d}CB*zTsUk}MbwO`Ygi{a-S{^I^qCL61kb+x9a1u~!a#CEkd z!ABZXoZQ1cCAUI*V){^jBn=ZZ9KynTuc#c_%6Gnz;E5@N`8J1-6)W_?t=f}==R};X zO~zpIV(-QGK@rL4&f@zZ$rp#40#dS(bYcd1D^|EOlI1^vPY_i!xpU*C+6AiDC#JxZ zrLEANHfSq#t6jcbw0eDFVwQrA8mTc@r;@O(E1Z0i`qC?|MMr+3-7xr*iP{Y_GUR%r z9D++{r1!R-hx7s^QNMQXW?%VcZP_^x+VF&`r?KAFmc0cb^VRQ9V|duI5lAacTa>rg zaXJS`8Cv54R-oq&+>o*HH%o4qm(e8&=z8teRuCUKurIvpI3I3>d}BBJ#_kX;`gnr- zNMM80mQS#UD=}Vx9L)c87e5!f`T23xb6+pb;eVQopNri5TvEq_%qf26_1EP3vJbAzUjQLsX~!ySf4#61DU= zCL8zM?b;}4^ol3;wzPTG;53pETDmI74iV={#MvR@+=)0lL|j!O&JNw+A6zHE{5kUA zZH@IN58j%sH}#m8-u2vprD@OYU(`CMi5@t(zjo7KyQRN&OMmVDF8#IJ?yuc;f9WG*1~-K>esmkgON^D=r#PzT0nx8BCDh1eR1ou7)>l3?MD+Hn=)E1a38 z-7r0$pNn1m{8(f!Is8vUva$3cu5ej;WeM?9+>)$Pl2u8v8b0{klCDzHRY|%U@Kj)f zr}6+#t%s`7g4N(CRoT^R;b@lN=-fn~OZCAindl25G%HHCWKXPnjtxpE~fP!(qJHSn-FZ!NN zxBvXwBd?(K@{?9;;R;Kmj!UEGWXWn$<0wm(KXTE>6_JZRXQ{d9>xvZ@#afBk!^;;E zbD*_ffAR4X;=fcWfyX=dN?!Dp-$fdvBaV~EQk09VBAd70VbGI^;GdwFGDWRHTJXFes=M+iFsctzTk-gD0oL=b_h9bh|_IC zHuWK7(;PxJrCC~`NHPzhEj$!asYoHh(t>3DcT@k}Qvcmj|J_pm-FE$V+x6dFZ`FTy z{eM>fPgCl@cz3-160+(qA*=opvg*Hhx2nH9sJ}c?>z^Qs@%l3~*ZjqzhkllF=;2B1 zyR6Y1nC?wg0~pT_*-Gc%BgD=l#LiP9KSJ0%LfAY)*gSE<){mlX7=WS`J{Mng6*4MP z#vn9VZ)>cFP%Rl5>!HY1MUEm+V6P%jeL2kJc=eyZLcH)rKL7Z=E!n~0bDCDBpOrN% z^nLCw_r=x2jm*$-0olo0-*c_++;?tS)pW+-yjr?5FlWRNtsDrKh^S95uNdYG z`3Z98IRq&*fncEo3qwE9!!0f$IWItRjTr(A$YetDOoyVrioUMKNh*uAFDdvSMDpZC)4x<2oEcTJ!7S>09EyNIp2 zH||Z;cb2?YAc~UuC+dqFoedO2kQbg^asZ9aO4CIetJadz`lEiml0VDN&$}t_pCaUu z6uj&5{!a3Jg}nbG`Tn51Z%n>7K?A$rc`K2Bu6(~g`Q0hsS0~@w<$FW&y;$CZ_IpZu zYOVGR56`ZZ_EbUF?j)%>=983WF`iXK(*LgRsy(vTjK3FlcUbSLKL5aBq1`?g>AT^nL$F{9Q@0ZJYsJ)=Fi-ajbUPtYQ=tZqHKk8sv2T zvWdEfv!EgE;ax}K6Qgm;@ZezO!1+|pTAK8A>% z%YW>-LzdsCeFxVtUcVV567|!ie(w|}-re$kTJpO~-WwiC^uPKZOupC3_p6fcCGtMQ zeow)Ve)wK$mXIc;>tuKn^Luz4UZ3_DGnwjv8uN$}q3Oz-5ZB7onos;tJRjkq^DcZK zC4A%A@DzS*{IgwuBR>E0yVnwzQa@K>KDq>di_Ip!_pjff(np!URRg4_zh#KKE9~-9 z@)sw{D?WfKZ;k01IKS-ey0h&3z*`GE=1+ciugGemD{BP)JB01_*2(+uBkl1tEc&o9 z`Q0VoXM8^~-l~45osoF&lJ7;ycd`2F9&W#<)Zd+`zuT&RmDER3U8#xnNBuekUPZEe zsekur$#<8)FG{|v?^zEg+T)h*k4F;qlkbXt_mU>rAI05Wectu%4(q){%G2-RV0|X* z1e0yt=K4}cT3WNVy2WVWP$@dj~ufOm4EY0ffuf-No(^;=kTbIhvCIS9uH%eDZM&b z7>lh+ms07Hy2Z27g7c_WiBu~R;G4I&zEoK>(=py++$(2=IMO1v)}=H;kFsAziFzph z3e*=-VGI?Se_^J{ETR1_z5sNV)BInFjG#nyHfAzSZC)3(5-S#}Rjg_ym2y)lGf2v~ z0uXiXGYS#av0Q%5S$<B`NSt$JCetd7Q^ zdZ}7;7y;Fq99tPPR4B@wX5{bcbY_TUIq`qmdmH#Dt21x-%w!UV5W)}$B!GB>fDsK2 zA!1-b!)HT_IEE-`MKhC`Nivemj58Am*0#~wZfw;}U2Ex=8x$o#2wCd3w5#2;+jgl{ zH)U;?wzf@M>!z;Nw8fTw`uzXrBXiF%sNJXUzVG`yd**lD|8t#lo$qt5`0cn~tJZc$yTxU_aF&^VZLkDlf!_<=Fcld;N7h z_mKbLcjAwpVaze}e>Q-{48B_kV42h$Ox1DeTE08N^zfL&)G{(AJ$%H>BSZqL<8^28 z7}dpFEnGA{Q|VooPVX^ycKPh-jXnA2l<%nn zs(hz*Oq37d(Qx}24IA$D(v|7-?w$IbLFm7tk174B{!{x;belYMeCUDv`XL0P;^U`C zI#4nEHwg36%+n7Vq{lbL9(;g<;(`kp2!9lxV7HVXF*EvJDxIl6KSqE1VHz_K!TAo; z_zkkFyByp9KbPRG^M97vD*6&$SwJSAJb?d2O7|2nR{4FmuQ14m^B;vfx>{l48592A zse2LfXY(H9SL^=YHxKcRK$!b9?$&s-#%&r0HJTjv{85E_P-DNwFKRrc@gg!%8jagDwrEUg`Fk|~u*NTFd`jbwHJ;V@QXaO|VV>9cti~^E{Dj749sk=kuGY9z zW0}To9j{ySAJXBwG=?(`eeQDytpKviOID%I8xWO}KWKaAkFR zMC0Qc`*k@V)ck23?nRB`8XI)^p3=O@@3_vdQ^&JW%RQmxinRNDjY~CFYxHT1YW$E! z6aNF6->vg^T=NfUo*!klnX?AXk_}f2{~mmIK15<`Oz#i@>YZLH~esk;zv9x z9&5TnkH&HBE;Nsuvy9)Pu~uVTW1mJ7zrpe8DxD#nUSDx$K8)O3#l~A8`D6z!-WV>w z^*~J(&ctQ*d|cd1aGA@6#t(T}y&jiK>u?#Z$AuFNfdUAD+zWxM3xRwKF~Z9@FDNcV zctM50@Cz>%FT*o&8R5k$#l=^~OF1rnUaUE|jPl}{OO_Y!1-STm>E>lzvh!h!^D@lK z2rt%!bmPTi(Z-9l0GHu~xbR#z(dWgbyAGG(EwsG@mvLTvTX8`bz*mrX8Rlh#mvL#k zmL5J_#C0GGH+nJ5i}fyCdRc#cybSR&%*%K_s>#b&mC#P`;72&ng0Pj~fEp$73ohNf z^zt&!i+2|;abDiU^nX?LD>N2UXUj?K`dV)H=0L~_w718Cfm9?GMGnp*XZ=g=@crj; z_nyoxf8spuHD6cq=sYsNsKpHIc}ny73emr$Kf0L2r6}qK5EcT`u;?_bg9;F}3Mo&c z3&_5Ub*q>P!b}MF2#g$1ktVtqYx^`H`#%Q<-8m}o?v`{T&k;d?4vHxtjt0if-cDo> zCt4uNF92PvX&$f&bO-1P5c7E@i1D#Z@*e2ybc!>*ujCVeeZLkDLxe6fLZ3XZi zU^S3sy#m+@TnX$3UI}E~)BuyfRlpwLY9Q<4uYi9ITnoGtcr~yESPKjR*8#)8^}rNx z18_HRBd`;=33v-|Gq4@_HsBs$9q?A*7T|kws)CV}{?S`Ze=F zb5irn3(c73nJ1dFnrB)xo^BO>l43=L<`-zbR`aY&nnumDu4&pd-=cMY0Y!|(2Q$-sbYouPL*GdYZ^=Q?6Wj=nr9!SY1BN& zKTTZo93wQ{ny0>?>D4^@Dovl}+4pFMG|#?AGpu>`NtzMOvk%gYX}(ag;;iPW4`@8^ zSLH!Bl%`DcU7Gi5{x;3mX`W+;rcv|MF*I?_->z8Eqxk~O_i3Iwjb>Q$)JZfWnupqu zW?b{stJ2)1^4qOhkLKT_c}w#gb2MJfQJpl6%|qQuvrqHX z6*NPdrw*bysre5mR*Y(%I*evq^B+{KaDPCR=dU$irg`2cXuO(Vq*yG|l{|GRO`GNy zDpvGp{(YM7)BN3#YyPC>shem{Yksz3#hB))YiZmcROxemMq_C{p;+P7{9T&& zX`VWl#;^HgXD}E}CPg3=N&u~vKu4r~uN94@tYl|A9!sRcQso){NYv^~Lg^Wvf`Q$E zNPD2Uow_j4o(Km*d#zwB8Vv_^V7ez-J3GSBl+_+drmR#fX0^wnP*xM}vCfngYq3JH zjz9!TK+c0yo|s+9w?x{*Rw$edCL-}vOqG;!9msf~m8nB65!)4xTJcC+@j4%vOId;D ziP8vRch^})(c+0%E2|;HKM`(0k!3ApxhHw7yE4H<47C>u?~Vk+C}Y&EiOR{G zW$G*uzO^%wP%-Kdv4n+mW1R_vZthI(6(I-&QApJk;f{DpX^L=HIM|tDWm_$=L`NWH zg%b(Xg{+%!7b;h2EXm7iMh&AX$VUSmVO!P9jJI?~gPdt*w|H9&&D0r1V+PxF(@ObB z2#pwNiG-Qqj@WKfFOl~4aBHC5YTla)TS*i!91XGsQ1&=#HJ*qB;1P+jW26$Xb}JSS zC-fYb5l3*EP$JP8H$5g2-5qF;U@oltjZ9q1DfeVJEUOqXstV8ok)#!{CMpke4%IiT zWaKv4A)?{bo>*cR`q>_Nt1&!kUpA)Uvx^>$p@soy>Ga_) zTb~#U?#dV&6oI?Rl6~0N+*L%7L(HjIP*#;%3+V7N0~VT0^_>a%WD2d-G0~4yKR`Sf z;%%m9qMzwrsDd$Fo4?GTR6l|q$SA#}p(^PJL{+wv9KBHsH9nF59R8W%I4aO3C*+cQJDOwd zk)RwdR(p7NxSc%~qq|cpDXF;jBygKZ4~5iTt=BuFyP{~DiNRm?4Rt@Xvewys=W$o1 zQtMG^=f`@?vMyrpH}sVjig#xc3q$TXL7rbYj^B4NqOu&NyPS( zMC?yV#O{4L_^pX#s&n_AuDyCH zzMyn^@zkOzQwj?w)3}wHWH*TOt;e_Sk_Ge1XU{5~IisXx`t<1@k7pW8u`*MoL40ou zr?yMo(SU*K!`O}_!|RfpahIn* zfN1)3ys-Yd2W zWjV@5bid5fBb;Z3yMp0(`c^D6=(%6Xn{}|I`AIta6ojlHg^gK!o94~B zsVgh|U79!Ry521RzASzyiyzj!$?r+coBW*CylMZjtng<)t;%m&>x}ky8Hc}B{w996 z=1m_c(!5!Bdb0SLS@LCB{`0bUD~qqtylJ26EdR1Dl|Pf8nk@e{S^P*(rhKjTH{myC z@pYOv>*%dn{=O`}A&YO+ys4j^S^oYk|4^2HTb6%&mVZ2pPi664S>bQb;=8l>yR!J6 zEdHJ>zBh}1K=Y=)_GR&(%98KP;tyo;{hBx9?L-!TQuC&Nj%eQWmr>1|eUGzQ{_Y1< ze=z%KmgdbqOs(e4zLP)8zdOsnFUx;e^B3vyG^Tm}r$giZs7l|G9PTrkH~RuU&6|C< zF3p?p`!sL#Z@=bE{SRn9U&ntUOa7$hP5xfiywOKzHE-(Q{h-RP+4n5dyva|E=1u)I zYJRa!zgzRXC(-n0`HyJ+Qsphg$5eVIeoOO~_OH{t*|&*nzC!!=X@05ZM>KEtHODn? z^t0Hf(lh&@WtunoGh1I)WXacR-o)?Myy;(Enm6^cPxI!cnH_(&e#_QR+2cD~ANX{C zH~KBR|DVw5n|;%!rse=POHB2NrY6jug6+U~AQ=p_>uLm_OohN3ho+`fTZ97Ip{c1Q zkWAV6-Eu#~xFFv4gl3wW!hz<9iW%|liL|7emg|HJUzNqLnBe27#L8;q2P>#lA`;XK zo~9-&wAv%BQN6-5zATs(4V!IUfmL98I29Ia;eORs_^Q|riX1z&PRK2I=(sgB}v*b_vzhRdA!B|}GvQ8AsR%xua&JdUUsm?@HHj{r- zo$%K;G;EQ%fWKb?l z5q4%R(=Uuawqd#=DO>lqOCg?#&hv)JO~}2a%(2|()Z?4PpE2H3ZF0XVJ?!=V8OpbC zp@rzvd@$A&*b|7D{UW39)~ux#gU)P#Ua>Y#Y~JhY5!QODjScMq?4GB6E$nNnTZr9% zT_O?Ks{`sFb=ZgwB!X>wZGokPwIS9Kr)IXUZN3FV+}g@VDkjvD@CTx?=-!T4XVT)f zc#@mC3^=CmXB8h;_whE30sN~S5taB4JBjNa*rULph=~OLm#)Nr)e+GQTSEG`i{)@r zB#STJEPN7A21F5G8^Wp3Rj_$gU|e^}xTCnXixu+egk13|H?9>nw&hrNRsY&JW0vx=hX1b zlHz>|N3PX!+8+-#Nq;=$BoU7?WrR2Js}u7Io7ev|pH8%hDKs8QvZ+ zhd-U#(DRdc5~D?Qq0cYFGaBvq3DE$bu&`j~cu1h%C(yGk%xjXk?g3A1LFi8O_Ymeb z7UVh+6T`&dAChCM6?{axwjhQW#+`|y1u_xHhUIf17ThaATM!%b6MzrXj^gPP3;Eh6 zHX%%mV>ZH`lywuKwqA`oSqDmoroN5Kx(uRE7&-R5bnjUvT>3{!7QZ4!x1-s8J9^emZ53Hzh9AHNp|0M!F@(0q<|=I|_x&vW2+GFVJNwE|wPZboAkVxlmZP4}+u38> zj$Crwwj(dspuVH$YtKENx07ucMNKPRZM1Y$x)+Lf0y|MBoFTD2EZN(s ztEoX_xF%#DSNfECRrQK=j7pZRo7U&l+{$c~t(SnWg>tCb*J|51e(U4pa*3M_dp&;Fg0}1O znEL9F{f&2^%#z!6n$mr{WIgf@m8l_f)vvl=8STP*P+AwN`_`MMuf|{}YAPf{v(3_a z_S`mo^E6rX&1lhp)a-j?EAEn`+pG%G^9bJkGvzq;1oB|!66|@bxAdHXC8OSK0vS_} zexvUE9RHySjjgnnk;3z(vUhSe!*Wuqa7M!Zm#zPlUg|)-s5)(yJ)ZiM`i#1j8g3Wt z_8w(s3ri4+z0YXZrY!A>EgNa<8kP=AaKGXFWi8U-NJ`%sl{_^ewJduPXF$xk(W9JM zaefq&KCCa6DtGUot~EMN&9Lk-QHvOj?1lDR3{q0Oi?r*uR2ovbQ<}3gY6Z@X)ND>* ze6WVk9nXK+am-fUfjoC2b!wu$(ynHyTv?g1ldX#~wHxor>_@Ce_9EUr&aG$85Y?y% zB0cIbHGAEIFzRm0`LZ$QIVU|Yi^q~!Rq?@pn0;EP2WaMJ*ol)*`Iv{EHb`xY;fyK-bVTAk_eJn$BkwyqdeRCTc-!Cu80yzRl2K)MqpS9pH`Ro5T%LJnmzA z$}E|(^XEQKqej;9iIq9~E+@?jSBh$#pyGGySv#LekKxBLNgrwlB}*L;ly+(yJm-U! z;{28&8CMc>|5ZrMtggGXdlyy(ToI`JRKj1$XWobEao^d7df$Rs5${7=aA(RioQts^ zq_rsPjV?FJdc6rYdw-|SpnfyHnX%#jC(H$_kmqX52v=hDQiI&nWasNzv@Cn8F}eLK zP%f4eo8Q{xmJ<^riYu)oeya7GkXx=Z%_`zttw}ws+CypFC9(y$@=|6AS}i%j;r#`q zWM;e^JsafcW~wQv)vkbV5Ty@djIDy^527xXOP4FbdBIWN1!bwOK+RqWxghFlIa~se zSPqvJaJv$5@M=u<{!jM24VyR(cuLe4NVQe%K%m8l)xx~v8q~7gY(^?(^=!sldM?K` zu9}mnxm$YeZQ7gbbv4`Ej=r@Ou~V0;dq5)+;@yz?f3@uKymvOiX5S02=Z5oubMwQU zHqP%d!=?M2nj@uo#<&&jpzhS{yV)Vr<*@5IhV!Alxt3S6&h$M|jRE$2`{X%QNY;A~nutHtRM>;$5iB9?rR=eJ0s}ajW$DM%Xq(v#VO?Sl%Xm z)}icMQOiE~HK1*jQRO-}J?)KBrB|YK+m2K>Bm54;LXEpKOXB?bqV(I48|Jbe8a^{8 zb>bcHr|SmfoU`9eQX@5i+YWm@Qli-jjxz+#Gj}4k%-MekcM{G&%-S=lLt#HMLz2C~ zKF4Le$}k_yft}xq(P4NkhJ2o{{@;dLz83RCRo^U;z2q#(CWOr_z3P`S%mS4@O5df7 z*2!LfSE7tuLGzByJ>?+!5qn)L?3_y|?aS3;JL-yKRgD!hS4+<+7SKV}PEENg_jecW@}i+jNNSN)mgcq{q0x8`561aCc;=^EdR zI#N5cnYF{wmuqF7t5!{aVtHH%O0f zt}&?n)w-|^HgoS}u9xYVig})d^9QpkF(WR0Kfd^!|9#AT|6+OHU5v2GY)S5j?O9pv zQ*R@frycmds@f4Z_xdf!F;_x+rmIGb+GkZOPtGuCQ@P^2n7T}@ zC6zRHqtrhWYFC5*uVklkZaG-5rZ1Ygj0$PWWJ+vmPGM&GjYeh8?YkxC&Zrh6HMIkh z-FrEgQujHdM^t^8d}OA7y=*(PSMgRyD^pL`0o#JP$(-w-tC`r|_Vili9ibVaIbNB| z^xY!8Pj+rR_I~o#Q+}iRW`AfwK3JD*^~}8F$^mCNQT){2m#TBlV@>~LA7FXS{*tM6 z^?#k=()(|>atpEEM!@_F<9*8jb|RgMhqcCAC*#`QgdF6&UP z^ZnnW!l)2${C|&v;0P=9Yva4NBdw#;uK^E49YFB|fm*$^e-{(t7rI>5J&UQ%OTiFI|ugp1K=DeM4%z2`jZ`$i5-SXKw zgE=^NKCoTa7xxD%G2d0YH@xSu=c=bCSgUIP(A1am<^F_yJ#6}cD|ZDbL2ar`9c=VZ z-$U&4H`Zf%f8%^IjLB#{b0^A-CHw!NI^;|3GI36JE%MWXTyT_{aO@W$ag)yFpMQVl zz6^U?di|Z0rH{j%HNiWT8b7K(@Qy^A=?_VH*PlrKFWf$F)FLWP)BoP;eB#Z^%b3)h znE#rmOUgNV<|wq6{lC&LcVqW8+x+jBCwtwH(%O(?Q0??^wr^IeW`~FE&35LKLNuB8 zsdO$Yp%cvWPih>hxOm^Ow6rW=ab=Y^ToVYb@>X9N3awaGy>eyq zieQb}{Fkw2UM6X_){*J{m*ToT>V3rQ_&h1~Jffv>W2fRL{+a4r$5$Z#+sp&{eM7g- zN0CmsOy{pcqgP{%##)UOzwnjkT8VrCGa)ii=a3t5BvzQALIkg+Tjq>Kn~Ea zZg7a7g1!lQ5_AakQPAc_hqxNF9CQ(=6yyN?9AUl#`YPz*cRIu;LHB~*2f7s$1YHk$ z8)y}XrsPJ4CLp0DW?&Lp%Vw7xY2U`#_zb zU7!GH2k6F|9HIeq4QMmyYS0y+OF;`jvq2kfc8E2gD?rOY7lSNNIj96Q1@xCNC%>)w z?`e%a6{_El+WLpU|5WzW;uCow1hn$Ovi3AIMmk&{PC?o zyGVwe`53eLyHCDxJ_O>-l@F$4H+HT9VHy!HzD;Ns$*?mYahredo8*IW=E?`tu^T(r zk1(U~$F~seA{lnZdDiCd`Fiet!MIE;_V!@>c4Oy8FqZs?58qt0i)7g8(`EDTvDqoe zIE=BU%XqU5U0AOtZGL00GfvM_=gKquS;TKru*W}Si-U4jnUZqDZkMY$PrOXcXY=#h z?DqI*f1~*9x%MFsLx>08sARBn3|;wt`bnGrIP7m$2aJeuv+ii@`C)o?W9Rmv?rOi` z5co!kT_nTKI2&#LU9g`|_c0*j%+(%D$8PMLg)k@Kk8h&bMKbJ+bJXU47WQ2Fk8zn; z?DfF-vkhHX-!)IC{rs@MmHO^JPkmdqxa{dMg+80#kj+lHe%(K5x97VjOD>&Ld`l2z z70);XzKz0QISt#d3^K;lzIibMWh-u`?7t^&HJ6D6UoPvZx zXBcav%|8x%F1^FJOf2^F8NV@Qu;g{;bq~O84V=fmi7@~-egm7I!2SasCSQ!D?zi#R z=0SY0^J}1DywSY_v>WtA(CoeVb}i^XK!1Ik5RZXg0hPTQ->wDS06GJ5d{Kzw!$N%X zq!8adgQIGGjqln1Mu_kH31bT6!OVEE!y)#AHcZ00Wtv0$HE1@zUfnX=AyS}kfvht4 zfqoC#Q|=J=fL@$~I-BbdQ|CLx^A}_7wca5XUE>f}g6;$T18Dg+tU*9~K>IViC7ii z@+#gZM|o2CScHW#`0$a3ky4C*Jc!7A&4U8*)nj}?ytWB-k40zw_Kn-;zIIhlUDu88 z=nE{bdi_K9?`KPGT)i`}vx%SL+qryaawlF?i?jrSspQUB^DR5~M52{lE322)KOh*lb|fk`yPw{2+H%KX{(KFUyUNjc{YX)^Zyt z7l#`+E415Ix^=^?BJFlP-TE`*dl%h?GTgSvbWdct(Q!D-jR~L3bdz}*$#j!xoX&9D zD$~Ha)K=cDQf@56%_rr?Gu@=z*$lS^DJMGZ@ij;}?4`(WC@gCYxAAk6EHCzX#Pbf+ zRclKmgt2e!afo5m*s=uM20HJbp%>{ddA2(05^Gsmm&&by@o>%jGG12Ga`Lql?BR%e z(qVVU+EX3u0NjV^Vf(A_x7~JIsF@oz{omGkPNag1wyaync!x6F-X+U%!tU0f7#LF-*BfN~_a@1Ld8;Uz6e(Cva z$w!?YmH#TI&oR?2W`;lwlf+DvduEjMez%hMSerEJbdDV7ea5J)@i_Q z_;T!f6eOJ96zbKB^vlchMd6(VqbercqqO^i=`JxHak?8kB5t9wK|Llu8(%)hC8o3$ zh=Nm2FWYJqGWCeJ;%BgogPetIC4a#~qRRPMq-X0FY=@%nI7C}1E^|T7V%Dy+%8Bw# zEf7Wp!1wL7SFW_c!5x%DnvLG(qQiYO#JKVfPukkO)qzg^3YUK-cTgUtEY(aL}{Gmdl}JGyoSr~8DFu-kLztL-@GC*FH|h%HB1%r zP|kVvW#h9(XO5H%d*W&=EXp|+YQKx_iu5YBz;Yc(GE1q((_IMmFa#^^h2`HsGi5pV=dEUOd#iX|;FQdM=j!ea__wd%Fdav#6r;To zQqYy3Co!-3w@&BB^IY#L_-LMcVPUU(v9oAt@y925eqG!J>Tr4H7k@slWM1*Dc}0tg z-#Mk|4+UGCMXwZm+%@y3`33JO5Vgh3d#PKLra+-dq7>t(v}*b&>#_QKx}U6t#rbo2 z%1-(6sp6ux$>PG)TybG&4$54PGS3t<$4f>%K2_E@#6QF~-3!YHK`vQVpDbjrd)zgB zvhzJou?;F*I9BD0RWG!!nKe@Jpf3G!%;B z=UmVcQ{-VU)33$-L8r&VUnck*^7!_G_=Qd0&QHInP+U}9EH0|LaQuSNxg+Jnv*WY; zr9Rea4{q!gAHii1R9rlYzFARh1#oTg;JS>1vB7g4+THyRPUi)Ag)@srWE;6qjq8;j zeHuaK`27|v&UsF)>*EVJ&e4YXXv1#I0Qy0vAtLL~&KJ8xaSD11x)TqXiRB=-){Pmw zO|BO*Puk?{yklAc+G3KJhIFS@O^Ijgo7=yy^ZNl|sj3;{XueYh+)6pYKMzdj$Fl;$T_ryvo~TF|ENZ^Cs))1yx5Q2y+&6 zMutOggu6f)GTqS>Ho57u-C}mbbTPZyBW53;F*-f&@v~k1KR^>kaM=wia7(3H<(-Qg zg8O%3rmL->8f(ER`C`iYN#psWyn~>xU+5MWqW{hKN)g&)3hpC?V)SNAJ(|$p5e>_d z$)mj>FCZ@?>jR5X_zC!l zbNobx?DQ!GVoKGdQ8_#FIlb&_Pa}?sZ{hM|kgJeWsG+LfHcS}YVW;!GuB$NdET7{R zb56|~pE+7G;u$WEPxTkcu>D; zqwg>942hY};{|J-uA2*PcAY9b>~a)3Imhyq+w@WhL8M;lVA!jicE4^o`9C1t)%@)^ z=AT6_QFKbq1!Ue1z`N$}arr9f+aQ&<+SR>S?$+A!_6+=xH|`z$gR`(j_?#^T)18G6 zq4~@8yqEQK24XTlf24f7Q~DuY`gwkg|KKjb#R7RjE;nZU!dU?;qUM%FpR2+72ebxs zl`1R4)xkefk4pn6?nJ}Ff7ujarK*J$S|P0JDq%U6W!w+DA=>P~{qSyBdO>Rb;B!6W zbXKA(lvftvemV>H(^A||XNn6?P0UN=9BCLqZb3Q~Ux(#+P=UUmj=vlAqVB4NUw63{ zl zAd^l8Pd!zQ21OJzK*HRgY`kLz*E_|c@OXjGA@iSyFiufE8}sy2YIe;zrg#DMk0>f8 z!!iq`<|C@+x(nZq;j+{<--&#pEp`-$9U+gJ=VQEaZeC0G#goMBR5|p18P-fQ1=lo; zdncm%1mh0Fl9-5lNVdv&VMvs_oV#65h#^E?zQ8R?8cHyioi0j_%axIzar7ZrJ>xh8 z%MeKQ55N0m=gZ;_r;~o=iwni9h8bd3b%~gDf62IKw0IaRD;a(iLDn<;&tMs!2w&@Z z&FQ>^V`9}Lu_|?$nBrI>u*O5FQ13|BLez-&W2PKqrVL|dHu6%EF=ifz z_?;}%ld$|N!xoDm){C6>4!?`n?!rN5WxlJ-`H6zke5dSJdhX-@2=+liX6|F>9n&yx z#J!616j@%b5C2w(_kmn5>T!|5qr6!%Y8`>~1MV~PaG#l1H8Eb*{G`5M+%@X-$u%P8 znZ=l2^8Qu(QS3{CLOLBgUp^D-*!ql>gB({UAX`H{^;KA&10g%kXNZn&?wJ;R)hX_G zb_oa8;ghQ{v%uYR!Hfbi;|!i_#@s0%ZOfPQF9AJ|U>x_EJQNUQ1!P5*tX#KZjmf^^ zN3il`&{HAI_Z!Nfr)G-_f0-^f`*GWUU%I6k{B8-uuIz=;d<0sS@uYnmCq%5loit8d$c2oW&!o{+~LHZG|IA05jUL8#?~mYFC`8G2&E(OhY*&O62qzFuAe>#Md@1{{SImQ6 z$jr6UZ8bl0h=tG*73*N>02Ryo&N}CMjz9lyPe>0)hwBtw94@&??OW-C$C5)%@npVh ziMTb-wMcwA54Op!f;$D4G%pstmS5bNS2Q_K)E3QgF2Uw|nOx&wPF5P4fw^RfC{_AV z-T#nuJ<2Ebm_V)F@EZ)OTf4`Qpkm@r!GB=8I!r9~cfYPP%zT&}sWtu3tKYd?0i(u;+2k#4x z|3n;*I-QI2Mfno0spg9^?EMvun%x-H=9fY2VTQQ^mJJLe%QalZJG#SJ__Xs-f$P^8 zc%sHxehKyuLswuuRE_)M3fvdH!V_2Vq!2X0zQZy19xw&>VzQ$KS$WkIu^{9Z3#yyM z0!O2mxSQ#F>JY?_qrGH%e;!OxkJyrj>7=N1IWKXGd2CC$-_nM?hnsWu-7^UGW5)4E zSUfKqU8EaEHcwy4?c$0_=t!=6odtUfTB;+TuC2t}E2KfBbozNBMpHH-fBitY-4i(U6yG7szw%V)s{NU4yb#CpVMBP=M`%0F0uA7AHmRDlGtE~iWz9i?KS&G?Up56n? z--A5GBhU&e6?xT}S*LcuzT`~EY}~@@mz3M+yi@394yX7~!Tvn=&cb=_$=99&i z=WsDH_EqRz+kF28B;)@XF3u`BcFUkk${I@0*QblJ<7)qaW6Sf3)+gLAEeGRX>lEL1 zUXv%roaN|ch0rO5rwZbfT?6lCj)zUKYz3*gS$9Dl^!{V02dP7AphK7CY@6E|p7rnn zSiTHW`+mB*WkuYf)aE+pRlYEGfc(6~aXHTa{J!K|EndaQ%iqm~*}N|}Z*$%3-aDl* zRs6i?P(exE%*#CAnN)HoV4d4Ji2O)hfcYi%CyXvI_mPRc5Zvdd)lZ2_z9GGDGo5n~ ztmkJo05M16emd7YYhK0NeiJTRK~A~e^t*0xc3?!DvyamT5q}5eYB49lbFJ%mX?k9B!D_QuLl zH|5w5Dz7RXMHDLk=$>ldL+^Q%sDC)*e*+1n!5vWSrPW^$rH&J#0C{pu<$VhKGWF!Z z^8!P3lw$uR1^JK*`zUz`=M+q>9Dh(3JLbtUvHeCUySPX!ZiD_#O-KGb$lo;NuUM2H zFCA6&HXZfmLA^~AGmm@XlljccshM6=XTP}sYr^^HhNuJLM4quCm^>B#-QSt6-`_6A zuvmgMa*IO8q&zWcy;?iS@~3#OPVX11zBLW?UM!~F&s}=VQ=Kl6H%k;a{SL{SayuP) z!U=cfigL+)c@O5((=Z>w{(K@muXN1EelFbfUhc@u;ga}tzsFa8Dfau@rlF24Q9O>j z*ob?$AfE4cd2x0z{sU*5Km9g5=UnFyFSROsVY5TL1H5QcIr#}>v<~-`&%nITF+*V1 zHxU!-jdQYB*Qw_jmLeWL*FgTWz;}YDS-AmY1Z4aTZ~RsH@Sj5i)(q$e_VvPa>aT=z zqK&?L6`r@g8dEJDx6EI{>6SJgXTCe;7K*u{Sz>NOshErXh`GO1y0d&K^6prE&U}ddGmgNH zIsBhzrkHa)W8cZA=1~{t3|E10leu=sIOG48CQnD}@xKM_eAb%AF6YfVSI*?8 z|2+9Q`6l_{GtAlP4CKgNe{a`PGG>~z}SpgdhU(qRlIex18+P5y?? z6YeD3bF~Sdt;)_vkG}#;9~(W(nEZPXPcCEp8*}tY z%JbP+8hd{k)qPxg=nJ3Krm@R)&(xka;IpnYcDcSeHUU^YAijq{W0$jX#3!F8waKv_ z)1Xw?a%; z{Yi(gY;sHCRsp#aHo3RMZ5VQHn_N5GJj{zt?moDUL(XTH!#$%Ba{Fv<_ra|XZn?}u z%sb3|8h2~FS>ra1gBnd7J%3c;9@N;c@rxQyX?#iJpEMT#NrhXeu}0%IjV&5eTK*o* zKdkW!8lTemV~uAuzLcl>&hr|d)%azNpU~K>YH2%)1^7W#|lNtv!?$h{QjkjnVL>to#YdocKOk;tTo27Ay#+4d<8f7H7 zRAseeSr-40oE-`AltvS-UH-$5ou;{I7_2TMJwh^*s1u$#|RH+QzT^Ba@fa0URv56bY{@JKC#?+|}QnGKzZ1P%$;pP~{EW#?9= z^2xL-gX;KR%G(+a><*uk_RW;u6vY`#u_zB-x*>q`#Bm1t4jk{sTHJsGqr&0>*EKjv zDzY9&kT=A3;H2^mZGnVnWmu-ME`?$@cc#KgnS)pCb+itrXgM~@qr9>c-&kOxYKTq5 zFTR+U`Nb_E-m$5E+or86s?^8M_BpRnCy%d>q57}izNy~$3^}&9h1=UV$%EWcg6(yi zwwhp{bJmCBIHi8mZWI#r`zZKUoar7;NSE#MfOxq7Tx<*{&h-&plt*#pc`lH9Kly8M zR`WZ;ds*mu^0KnvAl7ZXVV!S_$=52;q(6#_quLT^U!>X;jq&slfI3Qwy}hX^5KN?+ zBC+Ns9v(055H09edxApTsccC+B`;d!Au}zaX-`X%heh*CZ!InDoyj&KCaKfkBC)1m ztfM0qZQ9+k2M5GQQ!PAmR-O!J^GimxXH!y4Ki7961z!$<>J9yCb%4)>@Hsm!GivZ!@LTAk6MU(Oufq0~{ zBU#BO(^2}$L}!#9mF>$bmsfgalV?fbc)LjK4gA}}fw(T9CvhH?~(ilo**BEIyY)f9ES$bOf0b(x*z$%LCi^vTyYqF zQq#7E6UJ?gtzLCFRO|z`dfmPiL%ohi%}-8Y29@S;f^TXM>Uf%Xu8i`KT82LC zLvb7fr<`XCq$gv=Sqd1Wq0TtoSwkEh%}v2ho_*A%!#9XPGt{U!B*!{VzrpkGO$>~~ zaM}b;drY6!)`XWxa4=hwJPna&FXA9brE-lAwVeDW`+UR!&8JRs!%VIz$dDK@qA3|} zYif~QsVUqQ7VGH($#}ep#TApOw{RF=61@m_PiP`8_)xrPOQaS3rfCoER!unY9#4{7 zk&!#;5l-Lv@UJtp7UI?=P$BICD^+;(>JEHATFTMh6vktSD!&&&7c%4c{x);j(t%p$ z8=7bxR3>tPc9U%dZja1VDe|hqthLpTIvq|mAB(MPMpkrlAc%*bSnINkN>uj))Ev`A zTQtd}9V%scGhj|y1v4y1o4A`N76s#bp`f!hq>9b1{<0-l*BSn1w)Q{xm#P8oA#jC< zf5oNATy<#2{{oo334`a0qUzxvR(|}_^ZCBH`!hFLr&^wS{q;^f%R$5RXjmpy7PoXa zEZyyfvUWb(|HCED&)*WTY7+1MTj$Jw@2i^e+UH+F zlO@U}uNQF{8OcZ2ZPDeFYubKpgt^kquAB3fSC)fk zLdvO^Y9)If&KIs}b0CQM8V~rM5YLqlyuck!)v9Tk5zHZXebWZaqB;9hCqo-iCZD?= zw#I^yj(AqgQaqRZ^=gTck=tq@Oc~=7PtlfLGit0KCW~e^fK)HU+S0IZs9+?W)NkDiJ&vE6X)T7Hp=t=ww>DU z2i^)|{QO_<3GF@toK>pc&+-Ge;14hlWPHH;L5!dOOa4aN`QO|%AiDd3CHU{J5%Lyr z9f;|61NomI^Fw@IyN?2=%vCacbtw*Feu$S`fcYNmUSK^)#zO>+zY_Zb55)IpiFpga!%n;abOLq@_+Aj}svEd{A-)#?cR%oRAlY`n*Fk6DE-p&H z2Wx-dmG8aY1KNnkn228iHNsA;S%kd7UJIOyKRLT#w}5k(3h_AYz)e^ajKJ;#z7NFm zb_0)A3Vf&o|9=BN?M1(Vy$|>U5M@Szw{1YZ!<{dQ{`*GkW_}Ouz*HUb1A8~nyf;bQ z2RZ;+8?a*vcj9bN9qbnHGa%XSzzebG$UIoU z6QD-O3T6$`0pkdhKz>kCY?jZ3SAigt5ygh(C{LmrsZ(uKjo%m5u1?Ve(eJ*W3b!b-Qqi4WqY8{;ZD2&RP+-Ez8jK$k830BCqeVzPJ9Mb z4f_ai+ij48-TwX+-^)4+x(n{aKY~65yZwEv8Sln38=wKW6Ym8L!_G&=UjcFKh}-eJ zCy0H|0^a)`^li!jH@pvR2YWa0m2Q0d2=;N{raSQ*;tR+R@Edoby_)gK&pywe&{5I$e?4!Wxf2;0&7O)v4@0&pLUJ>z^AkT{qiNAt<5$wd@ zfvRB_4+wG9N1=;gx4#?2cZOy>h`t1OVio8f$^d`!F|-TA?!!GA#CLp%cYYl82|KX| z@VbA*y&f`t;1{1nyTCpSykr>p!8;LN;0<3x zd13bh?>>p@gS{7c^eMbI2Kx|j(zCda@bv-U6aR`a4Er!J|68b2x&sHkhdu$j{apdR zGq4%Y`&Zy`eBw=@HL&}EFM@oq+n?{}djTK$0qz}eCw>gn13U54pnb6S0WbQYDz6v# z8Eqd1ZWz_N1vof{dV%~9@E5OOj)ceI`2hJPpyy!s0{8p^^$dGAFz`#X9Ue=M1NZz9 zx(oJh;4QDCePQP}v`QU}1G)uxBZzgr6ZkO@$M`k5%0CaBU99p@2J8bJfIIPJ62gjU4ly5e0`3*S z5Qy%?PlH&-KHzt?{dr)kN6EAS1-=>g#H$Jy!OpP6YqZ@5{E)Wa1AGL;IER4W)9&NI z$4XS#A>c5GGQ{s_`}4rYnW!_Q4){qB1GRGnME1zyPh5^VweDd-Qdj{!fw9DNPXpFaV7awYl??8CsvSD~$8C;no!>SJes zSFb@EeIIhb=dMD#L56tY)kq6*TEK@vvTkd!ZUo8t0j}ME`iIPO8!`9Yq}&^UJs_5a z_&0UvL#T&d;Cr?p50LK$y5Elei#izw-uDjVi!#94ttdOj3-N;>nJ)03w0#^n5R zc@J>9wp+jj+P)KbWEwI667>X7ew><4iy4+Fmp>VbU}_#&tmc25K97ZgWXi1)rr zm1_t%4C;Y9vF>K&9tU38r0jko=p^#Sk4UWq(aw+dObsYIzmM@UXzPz4(~Nrnh<1KJ z;yzH#k5Pso`WT2|Yk?^cW%__$)9!qk_}ALb_i9&yD9@MXey#0%*NN{hJ^!jgzQ;ou zBHz>Tpe#hbJF*6LBHu}Q9Q}dF_faTMd1AMo(_X1x8$^Hynwo8WvMnOF&%YU1RV@x19&w;W7)`5xx-UGD< zdkj%4wjGQg>^j(e zu;*a!!F>n&4)z}$I(XvX@WGP@M-HAoIC^mG;P}C_2SvZT-_w8k@YvzAhuufYj#M0} zIZ}6|@krZ|t|L81_8sXza^lFzBd3py9XWf%Jy14KF;Fv5H_$lHHqbTDGq7)pynlnCM1( zqaJ!5>wRqBV||bHKQ{E(xn(HpxB4skz5O-)wf%MdzW&C3e}7wlyuYizyT7Nuw|`%M zUw?o9Q2&Yk;r^5T`wsOT>OVAe=)|GnLnjZ7A3A$T9CjZ*d3faT>BE@+AMqTqj(CsM z9`POVABi97KGJ)n@5s=R;UgnQMvsgi5d)q9Yrs2DJK!7e55xz$2YLtk28ITP2Sx@) z2gV1)QO{B9sP|~?QQuMj(fHBsqrFG_jt(6iK00!A^yv6eG3Xhz2EBu|gT6ukV0^H9 zuy?R;aABHYxn#1`}fE9ckl1r z-?x8g|M32i{iFNG_lt)|`cLa7bkhdd7B9s=0+ z@X*629v*(U_K~_r8XxgL()LLFk*-I&AMJUx_tAZiLI7X1sR7jP?|=04qvElO$9#`< zp|wXIJNuZ0J{?Ct9zmbA(7N4d%hUayLp4~p{hw}JvVeHk0%&1Np$v$6>IO)o{MGw# z*tYD}&cg2AmcyNL59AwZthuFC>9+%LugI&0%MCbhvI$q7!o3}5UR{e*Xw?bnn_;JU z()H?}@HQQ6Dy+e)rLT(D_-H4wQA*z+0{BXWId_fcN|{s07RlT+z?WxnCMQm*;z^Op z47qxoOldpLaWZGqo*Pq0%6Rd#srprmX4vo!q?m%RJmHq-PBV?YC>PI<56kF%GH2vB zAojhGNlEvsWH^%!Pn1jI6gZ|&i3s9T`8!{DFP_`N%omb8S?mT-`UG7jupDPnc_#?_ zD|iABr|BS8o@A8(1`slx(_HD8bBq~Z1)j9Q-5X(BWk{Adj`A?atvD@k1RA1(S|vlYFutIo=xH9d5VUd0o3OklYg89orR7EVMc!>w-bN9k6y` zOQ1a&)`gOhT%IF0ChM1H6A{#h3Kp;z2pxoq1> zZArJl8-O}k0)K?SV>pW&hT0n8aTSsej|E^C6@V1d(Sc~t75x!#_-h}24?rSLi+J>ehXFiDo{kXZ4iOvR zbr-xwQYc^{g$kBYDIlFng{|S^D8Ss50zBZsfkzcQ`j}B52hw)7xIi_iBL#Rt-c|5G z&o$uL7%Fv)xYvUBr{KLIyr;tF+VCFz(cz&6|8%-^v@b`Fl^nlO% z5cIjky#c(RLp)c9&-)Y4O<^1Q8wn2zkiat)B*3#8u!d(Em)wgccYCTeR`< z2cRGPO#v?O48U~!w+B2^K^#1*0X96-z)X1V0hsU%@OBE`PQ~ff0HUW6Pbr|UDKr-t z4O=v5qamssp4Gt@^DJcx$p9LffG-iOEl5Qw-K;0eWYnFo)LG1&qP2(g9uH3HrQ z#fViNv)HmoAd<@nYW$YVlK_q+Ml2J-s}zLA$S^4oNPz^C%K0*Y3Gs&**Ht8xVL}<; zirf`V09zyjylAihi@`Mky|0cj-K6XigRfyzr(Doz(9aA6r~G$PcNk4y zr8|lz^eErEYQKm6r(eN6^lR7TPGD?*J+gR{t>OG0uYVo7x;nvU!yS*X#N)nAnx2eU zp;oA0>7C1Z$L7m=0jjHGk7-g&BJB~#5y@md{6ri!UxOjya-oa$2oj0-Qf(Gn!WOuq z{%Er#q6m0H=Sa0fDKu?8gCQeEm>WyZoIbuQwRmjCV!yAC9u3uNXxK7n8-2<2>K7mG zx&?ndrX~uTuMvRpF}4&_7hYa z9Qm|)R9xn#RKpKdc@L&eVdriM{+PNsO_M#YQaT#G)D5?$@Aoz}tGUJSuk$tYG4*C# zJM#3o&y^Z~pW3No%<5}>r^ks)N|ujL^$n2jeSfLNp}G0lu2I?C7tMdQRwS&h^&6FY zwqbi5b$e~43)SaGfbYkNK0ex-V|vz%@nQJY)cTGN-a5xCEGqhdt$BYyr!(DyTtyPh zSu8dUhW6u$gp;CS$LP*dDJBTx$2iMimZwVi5(pkD0+ZgDB}q*I-xk^M-O64A~2Z;99(Rn zNU}hw{g`2Y>gh03VlDFpBP7$M8Mtq?g?0^84)7 zb;IgBcdooMtkLOw0_#qm#(Rqz=JljH;q9#ee1;8JLokOqeq9!GFRoE zQJ0hqj&H0uutAc%I{2$eT8~DmUBK9jn(L!<%9^e%a-aL)dVK!YZ#Vl~_+>t6``afS^#=W2Y7OiVL(ipU$u`coUrIK*Rwkub| zvhIY}{Y?E*-*5KCvcpZ`UqYk-iRs4@3IeY6oUt%Pt15TWeM|pi7KiUdC$#i_fURct zt3KjvvTBUx8I$wg>(5!b*JOD;G1h$VIAGQ0qsQOW8cuCq^2{Q8?O%gyzAj6?o3!-a z?}=~bPca`dzlc^jvu3@ab6_gwzR6_z%PqHVE~Um5FCNAfapVFRjikdI7Y}oF3=PG@ zLTD%+7eYhvzz`ZrM265%JT!!cwvTOS=(u5y!y;uevDDGrT*6*RkKoB7ybhGH0_C1zxk4c*e3ZeeCkx3aagwWV9ykGFQ1z-C)pI#@c` zac%4-*l_G^E!oywdwAtcu(8K%Egjg_4%QsNXA2|b>9uo)k2YmeD+IrcX8mbMevVfJh;W`o&TvF&ZycJ{UwTuZw!dwWZ4f>K2#-qH%@ zPC_}K&ko~bz+H%6xL7z(h=HI0XIFRA0Czuk=RkK;7_QJUVXg(bxcUdUJF{5mr|n#e zx&8rjJz+zTdjM*&>(XN1r3Lcogd$j4{`rAr_Xw*$A*|;95n=ZC~ z9EnIO3YXDc10&fIF`dij!=%IFQ~!e~ozO0{1=bn+UCNuMYM7X^AGMPQ^Q3Y%--RvZ zap)-i6TpSHMrWbS>qDGV%ret|ymQ_a-dWnGRlR$lLRdmo&MPErOi_EK8zL}Ecj69>0M>_)pun3-1 zCW#?nKI}caKrR3#Cl1am^3L(tzNxy-EkE?CK*|wG_`EQJjH&gx5p~7?adzXaTwTVt ztyK$q-4t$v6Sq{x7IN7VE zAI7(Tg!GQBGWB$sVd1jl*3lDpliN-a^e*!7aOl|tanEwzNkqJS@1BYFZ)=>_EIuEb zzHb>u5W9-_#7rlJ;~?b7B@!6C2yEes!V9RU`rtyS?wmdTTOS;lD>>IZxErj(qPt8h zV0uaclNo)n6T(>Ms)~&8%Yyf@-2l7=0=W$N86oTJi?r`x9tA9aVmj~P);31**3t~Q z*0H>9piGg_6HVpt)lrDObN4|B(lh;JU}b}JkJI{9ZRM{`7OHoH4HRP>9-Ghm8zZeB zr5{;^zy%|w$;Xt>W>#G~T|eYOwv7@j5Q~J+CNN}Ue7dtxD3am9i8OE)mA@980^p2I zTNW>Iq0fPGtpVYqV~e`SyRl{Lt~^GV*5;r=>J>=)+pk#PH>F_gI_)3dZg$T@(dojU z+p7^qmUZaGu8$hNdvf|^YTWxaw|k6xH0%O&H;n5njS-TDGre|mIpXna_bX54hlif! zS2TN%9$k>wJ&!I9booKhU1U1-9Q|iIFVLI|g9pt3V|Lef4@U_e3ZfH-Whci9|H*7}tTFDf|*!+8;Mn6$yEfq-1jOWB2VzVFqx_Oty*r}XW; zDpvP8Sy65mzDDn^+ZskRxZHFfWhgO}W5J=eXb z`1%FE?@3bf*bzdJRL0}r?kkh9IWkhn#V?aekdO~o7U<2Lk;hC=sQ3_{pFE)(s2dh0 zk04Aow-8ac)S7M59 zF*AJfs%(L*8xCk?NMz4=F01JDlcDjYNQHYf-X;5&nz~hH*HiY%_@qm^DaA@*P#1A9 zDcR*Pr&)Q(7yB79ei)o{XYQ2GIh${wR@05-KpC5}APCxvd{xe{9^65eE;k5SWMgo^ zZTp4{14&9yN;lXbxW1e&;lbA!XW$2C2NaKp?psIrtU%fuJ=7VxxZ2Wd*JKBW;w*d9 z?iitkApzU8bn7Vu6O5a;;nU$<=XG75XB7h2_3o8S5qp)7aPZ-l@ zTDE7wtQA%L)_?LRxx*~AonvB!RU+!gBmEu2i!Z+RC^)@0VF>-^fKJ3+g2_4O7e#37 z5+84Fk)D3y8$T+?r0m)yIf;uAvIQ{WlWQ)8W+g53BqVINEVsHQzRW$RZvNFb6)wjK zkO#~e+0Y@Jr9w-h!bYsry?embq+{%gpv_CF^zz zR&+@?%XbTc7<@MRopJew$NCDZV?L78AG?Kgi7e_jUdAExG5?RFyoN>jq#v2-D8lq6HgTI;slf9NTk)gtOZNcHn^}^0Y zr`GGHt$uLHYpb?ve0X#w>5d&`x=CP8suKO|qR)IlV2ry?-f}pfSr{_a(MS>+(5<{K zZlsr!kG}x3%cD&n|FHEhp745t!)TY=-J++nWt>Q5;F@q}{U;>&%~K~{^T!;Q)l*AP zWM~F7wnM$))QSoyfv_Y8mw1GMsC#*+E$0qLzm!?xmz9k=*==JsdzNVdenoz(N!cK7&%EIb6 z1}k(5^gO$$l}OKLWl6Sfb6K9*4%5P#udEzMp#6BlD1vfJrO6`{#mcY#+k;me@0@pH z)X`JFbPQD~-4~G#NZKLNqUtViqJT-F(u>aAXhzvz=e6^x&;L;mY)ycQ=Rf)q3 zBuHl|WoE>|bkA+olXj$r=-I16rphr%j7pAexO+K{=|iQwsLY??ze)GyG3Jcv<^)F3 zaiSwVqZ036uw>?dOwh>%n@M zdu_A|p%<)X5Nt<})y+VwqW5)!da(Cs_!K|d=6aT9wyra^k5rjx>A%yhKttEh*ruPT zM+~#7iM6!%`-#^&K|0OC7w5eHh){+Zj&1v5-}c#jA%nG=+WRJD$#*@)%E~B(7 zRB@OLRRWQNqsgc}k=5Vte*noW*q^Tog)6}`n*I_1V zKnyM^c`|bCeDRm$E_$ojU;4I5eK$EBJ0R=XyaLNJFdYkX z<@4Itx+ey`!QZm)`|`%^ydYw1<;~6fl0W81M~D{&i%OFAMKkI3Lzbo?1vjMqeO(@C z<(eIxIJl>KDY=42ri1ceuDXacM9V0zbcAqP`$XMrN4#%hc;k!R^2@@G;sS|Yb5(7(? za5+tyui7Z#I+7sVxvJNv`0<{{GWuR@7BBNr)io!>cIZlSb)$>MSo@y#QC zIaE5+O>p=ND29Dbo=O1Pi|}+*7e`Z- zss$UG6K^6V4~o5(lY-eNt^xz`B?nu5lX&d2Gm>snv}N zotK%V`udL$^!H%t=M`41eg*X`w-*x@)^&w4Fd3VRmbeOA#f2H)0mf8N8d2_%#Ey17 zvhn$Li;(MN@}{D6m;9s6X4FA6sD~e)+#m|u(s2Bn}Who3r$P)>DD`%GBMm}HrzrS9uNp;!SqgsoSHl$>fz>sGxisraY2B43BG4`ZS@G9Zu#>Ck<>4BPMDljBNV+$<9enbpjIh ze<1UPKQd9&PhAOByf`nb5SOt1&F`}-HGTIN=tjH_9ZRmcNG^)OEjs6U20YRM%f0lM zIsNkSN}I*4$rygClI$(YY zGj+>bi!|Fr9h00^@SeHS-Gbs}_uzadVczfyu0$kO+DM_PDNUM=3Zq5qsA>i}y8f%~ ziw4O1JCOB9QetPY4?CJ2$dT~Gqzg5hnwFt=a`2eiZ(Kb`ul(GSp|x>g>i>@t1plrx zw};l&6x6A=muN-d1^qns&p&fxmDx*1SAKAZ1*~wBadl)->nRXN1AgAy7S6v{;B~MT zOS*lynw%!c{`iShUhR#{NBDBO-++`wzPnmI_MWxm*5AE#M@ zDSPMHRz{}ry@H@m+|W)aXm7k2sv5Aqwnp4Qol890`mL3}$*c5Oi3zjUwc!7RDi+#s z49TvZqmF%pOujf}8TID;JkR17pIHA-kE8yRi%QZLu+$aTV*Vb+f$|~-W5>~!aiQmT zZTU}pmtdr$!FY=LV)*J?%b;l?%!IPGtDa>S$=WPw@Q!8(5s+EoKp)0q6#efNFQ2Ku zM2mS~ZlTTwiDwz1gfh43Zh4~n==&)&0#0wjtrEofj7nBx(Fh=1-5Kl3XY&N4)rJH_ z|VUT7!w9c$zk`n zJ0}mZ7&-jmkjQU$T@&a0u3!2ouHiq`=<@De&AH!)9))@=GvK_>fgWmh*M@Hvln$y6FJo=JEbsVb(RxeK?-fQ zxVW=`;*?UU=3RI@;9+OUP-P*9CuWoV=F|g`p0MT1`QW{uaMaqz<$ zSG16Pd+UqVoku?ZufwSiM*f$)vTp0f#)*vho$V=W%0I313q(#szwn ze)q4qvOu(43B~75Me+zUX#yo49)XW_iQ(^t?_N2cD<9Kbhv;an=!oiAB5o)MgfSR^ z0NT-+&efZoj$W%s*yPu6i@>1LE?xObxx#NgELamDdpPLSOMDS_iXr@HSijhLtyR1U zyS{{6RCWX_21CFakLS|$AAVM5P5$m$v@iVQ#>-ipZsm2EbIV5V`h~PzF{Bu78sQmxI6BSTg6+u`yYJ{lOMf;lsJVUXAKUEM`FfD z%`2p4c)RY?Ga9QA&DqmMj6eLs#K%ibgfWKa{EJr#3uCWr<9c%a3ajUYY+rHCp$jsI zEnOg`qmMS>e9=Mzt-ta~Ig)E%C%Up`XMt00Pi}Z~AMTkypcTr-g@3~fMte(7-TgU- z#Yi}x<-NE(WcnXKUB>;Z@X#e>8+)v&{)T~;M^5FZt$X$+kuKbB8->c9YC| z?aSUY4W0AML^UEV2WObE}+nDI6&W%gk(K};%as7q`dnHbZZ(h&RIpRdt(p6;Q zC>H#7K_FvWTkuTylBfRok)grf6-WRbY?j`D0Z1ra6la)(caz1Npe!fy@+Z_VmXG5s>%;FTj z_|@+hlKx|svCICkEky}c6tYqr%;w9nAh}psS+1W>*^A^XlZ2cLKWM{<`Fb?! zna>{kz0HE0?v2<8)75#NWDC))bGodZv=6BsxsQ_RRbEl6Bn-J zM#dI;rM(mT-zyN4Ur!LBN|mxIM|%U#wtnf;(8t#9$CG>C$qF=krovXSzUr{xnf2g7 z6WTvoZ8GcMXU6xLYyao>V{NRURRz^ClT!G?$mhlQ;>2OH<(0CsW8OPoZ%>Kd@QwVS zh*S%4BX&&@BNlzv=O*&G{HynT-dhiLi#w!s$TBva^mQB};CBKse*A7iof>LB?b62? zB~Hf#tV2Uio}{X%2Z5x9%J*S(TW!r5ortaObnHyTHDA@AI$LH>z5k$MjMR_oU5u4NYg+&(VAGvq2UhoW!u zgowVIz3?f@$m!Rxw`LhGrSs}zhm9Ip8s7(&V+~ET41o?!vj@;Xdz^==$IyVGHr(^; zMbp$%wEd+XqXq2MH8lZn1bsC1sGvU;Zq)Ul!hOo>RJd_hp9V(}Z=0lS>x0@1x}n3{ zlyua%TpHYlt$}t-8>&lLHU#VwQ)4QNteAD5!l7no7u{_Sz- z1iOv)Zgb)?wY0(CRA{@nG;|iB6YS^=xMOojT#lAHFhYYg1Yt&?6J*vC3_z#;aAP(I zr0ME|;nc;t_>OrB7)_1Q0F$Y3>ph(YdVv5c=nZtyKp-nq5N9|TU|?LSmL{-AZv!OL pL1emc7$I4^wBa44;ezbj1@)uF!0{%TqTTx8nmzid(a>h_{{th6cWD3s diff --git a/src/soulstruct/base/params/ParamCrypt/ParamCrypt.runtimeconfig.json b/src/soulstruct/base/params/ParamCrypt/ParamCrypt.runtimeconfig.json deleted file mode 100644 index d7845156..00000000 --- a/src/soulstruct/base/params/ParamCrypt/ParamCrypt.runtimeconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net8.0", - "framework": { - "name": "Microsoft.NETCore.App", - "version": "8.0.0" - }, - "configProperties": { - "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false - } - } -} \ No newline at end of file diff --git a/src/soulstruct/base/params/ParamCrypt/__init__.py b/src/soulstruct/base/params/ParamCrypt/__init__.py index 4c393f8b..9d96832a 100644 --- a/src/soulstruct/base/params/ParamCrypt/__init__.py +++ b/src/soulstruct/base/params/ParamCrypt/__init__.py @@ -3,48 +3,127 @@ __all__ = ["ParamCrypt", "ParamCryptError"] import logging -import subprocess +import os from pathlib import Path +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives import padding from soulstruct.exceptions import SoulstructError _LOGGER = logging.getLogger(__name__) -PARAM_CRYPT_EXE = Path(__file__).parent / "ParamCrypt.exe" - - class ParamCryptError(SoulstructError): pass -# noinspection PyPep8Naming -def ParamCrypt(input_file_path: Path | str, mode="", game_type="", output_file_path: Path | str = ""): - """Run `ParamCrypt` executable to encrypt/decrypt DS3 or ER Param binder. +DS3_REGULATION_KEY = b"ds3#jn/8_7(rsY9pg55GFN7VFL#+3n/)" +ER_REGULATION_KEY = bytes([ + 0x99, 0xBF, 0xFC, 0x36, 0x6A, 0x6B, 0xC8, 0xC6, 0xF5, 0x82, 0x7D, 0x09, 0x36, 0x02, 0xD6, 0x76, + 0xC4, 0x28, 0x92, 0xA0, 0x1C, 0x20, 0x7F, 0xB0, 0x24, 0xD3, 0xAF, 0x4E, 0x49, 0x3F, 0xEF, 0x99 +]) + + +def decrypt_byte_array(key: bytes, data: bytes) -> bytes: + iv = data[:16] + encrypted_content = data[16:] + cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend()) + decryptor = cipher.decryptor() + # No padding for decryption in ParamCrypt + return decryptor.update(encrypted_content) + decryptor.finalize() - Does not touch DCX, open the Binder, etc. +def encrypt_byte_array(key: bytes, data: bytes) -> bytes: + # Use random IV + iv = os.urandom(16) + cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend()) + encryptor = cipher.encryptor() + + # PKCS7 padding for encryption in ParamCrypt + padder = padding.PKCS7(128).padder() + padded_data = padder.update(data) + padder.finalize() + + encrypted_content = encryptor.update(padded_data) + encryptor.finalize() + return iv + encrypted_content + + +def ParamCrypt(input_file_path: Path | str, mode="", game_type="", output_file_path: Path | str = ""): + """ Args: input_file_path: path of file to encrypt/decrypt. mode: 'encrypt' or 'decrypt' (auto-detected from input name if possible). game_type: 'ds3' or 'er' (auto-detected from input name if possible). output_file_path: path of file to write. Defaults to `input_file_path` with appropriate new extension. """ - args = [str(PARAM_CRYPT_EXE), str(input_file_path)] + input_file_path = Path(input_file_path) + if not input_file_path.exists(): + raise FileNotFoundError(f"Input file does not exist: {input_file_path}") + + do_encrypt = None + key = None + + if not mode or not game_type: + # Auto-detect + name = input_file_path.name + if name == "Data0.bdt": + do_encrypt = False + key = DS3_REGULATION_KEY + if not output_file_path: + output_file_path = input_file_path.with_suffix(".parambnd.dcx") + elif name == "Data0.parambnd.dcx": + do_encrypt = True + key = DS3_REGULATION_KEY + if not output_file_path: + output_file_path = input_file_path.with_suffix(".bdt") + elif name == "regulation.bin": + do_encrypt = False + key = ER_REGULATION_KEY + if not output_file_path: + output_file_path = input_file_path.with_suffix(".parambnd.dcx") + elif name == "regulation.parambnd.dcx": + do_encrypt = True + key = ER_REGULATION_KEY + if not output_file_path: + output_file_path = input_file_path.with_suffix(".bin") + else: + if not mode or not game_type: + raise ValueError(f"Cannot auto-determine mode or game from file name '{name}'.") + if mode: - if mode not in {"encrypt", "decrypt"}: - raise ValueError(f"`mode` must be 'encrypt' or 'decrypt' if given, not: {mode}") - args.append(mode) + if mode == "encrypt": + do_encrypt = True + elif mode == "decrypt": + do_encrypt = False + else: + raise ValueError(f"Invalid mode: {mode}") + if game_type: - if game_type.lower() not in {"ds3", "er"}: - raise ValueError(f"`game_type` must be 'ds3' or 'er' if given, not: {game_type}") - args.append(game_type.lower()) - if output_file_path: - args.append(str(output_file_path)) - - output = subprocess.run(args, text=True, capture_output=True) - if output.stdout: - _LOGGER.info(output.stdout) - - if output.returncode != 0: - raise ParamCryptError(f"`ParamCrypt` encountered an error: {output.stderr}") + if game_type.lower() == "ds3": + key = DS3_REGULATION_KEY + elif game_type.lower() == "er": + key = ER_REGULATION_KEY + else: + raise ValueError(f"Invalid game type: {game_type}") + + if not output_file_path: + ext = ".bin" if do_encrypt else ".parambnd.dcx" + output_file_path = input_file_path.with_suffix(ext) + else: + output_file_path = Path(output_file_path) + + data = input_file_path.read_bytes() + try: + if do_encrypt: + result = encrypt_byte_array(key, data) + else: + result = decrypt_byte_array(key, data) + except Exception as e: + raise ParamCryptError(f"Error during ParamCrypt {mode}: {e}") + + # Create backup if it doesn't already exist. + if output_file_path.exists() and not output_file_path.with_suffix(output_file_path.suffix + ".bak").exists(): + import shutil + shutil.copy2(output_file_path, str(output_file_path) + ".bak") + + output_file_path.write_bytes(result)